CoolFace
Apppublic

strong-tie/inbound-calls

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
1# json-schema-traverse2Traverse JSON Schema passing each schema object to callback3 4[![build](https://github.com/epoberezkin/json-schema-traverse/workflows/build/badge.svg)](https://github.com/epoberezkin/json-schema-traverse/actions?query=workflow%3Abuild)5[![npm](https://img.shields.io/npm/v/json-schema-traverse)](https://www.npmjs.com/package/json-schema-traverse)6[![coverage](https://coveralls.io/repos/github/epoberezkin/json-schema-traverse/badge.svg?branch=master)](https://coveralls.io/github/epoberezkin/json-schema-traverse?branch=master)7 8 9## Install10 11```12npm install json-schema-traverse13```14 15 16## Usage17 18```javascript19const traverse = require('json-schema-traverse');20const schema = {21  properties: {22    foo: {type: 'string'},23    bar: {type: 'integer'}24  }25};26 27traverse(schema, {cb});28// cb is called 3 times with:29// 1. root schema30// 2. {type: 'string'}31// 3. {type: 'integer'}32 33// Or:34 35traverse(schema, {cb: {pre, post}});36// pre is called 3 times with:37// 1. root schema38// 2. {type: 'string'}39// 3. {type: 'integer'}40//41// post is called 3 times with:42// 1. {type: 'string'}43// 2. {type: 'integer'}44// 3. root schema45 46```47 48Callback function `cb` is called for each schema object (not including draft-06 boolean schemas), including the root schema, in pre-order traversal. Schema references ($ref) are not resolved, they are passed as is.  Alternatively, you can pass a `{pre, post}` object as `cb`, and then `pre` will be called before traversing child elements, and `post` will be called after all child elements have been traversed.49 50Callback is passed these parameters:51 52- _schema_: the current schema object53- _JSON pointer_: from the root schema to the current schema object54- _root schema_: the schema passed to `traverse` object55- _parent JSON pointer_: from the root schema to the parent schema object (see below)56- _parent keyword_: the keyword inside which this schema appears (e.g. `properties`, `anyOf`, etc.)57- _parent schema_: not necessarily parent object/array; in the example above the parent schema for `{type: 'string'}` is the root schema58- _index/property_: index or property name in the array/object containing multiple schemas; in the example above for `{type: 'string'}` the property name is `'foo'`59 60 61## Traverse objects in all unknown keywords62 63```javascript64const traverse = require('json-schema-traverse');65const schema = {66  mySchema: {67    minimum: 1,68    maximum: 269  }70};71 72traverse(schema, {allKeys: true, cb});73// cb is called 2 times with:74// 1. root schema75// 2. mySchema76```77 78Without option `allKeys: true` callback will be called only with root schema.79 80 81## Enterprise support82 83json-schema-traverse package is a part of [Tidelift enterprise subscription](https://tidelift.com/subscription/pkg/npm-json-schema-traverse?utm_source=npm-json-schema-traverse&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) - it provides a centralised commercial support to open-source software users, in addition to the support provided by software maintainers.84 85 86## Security contact87 88To report a security vulnerability, please use the89[Tidelift security contact](https://tidelift.com/security).90Tidelift will coordinate the fix and disclosure. Please do NOT report security vulnerability via GitHub issues.91 92 93## License94 95[MIT](https://github.com/epoberezkin/json-schema-traverse/blob/master/LICENSE)96