Name | Date | Size | #Lines | LOC | ||
---|---|---|---|---|---|---|
.. | 20-Sep-2020 | - | ||||
spec/ | H | 03-May-2022 | - | 7 | 6 | |
.eslintrc.yml | H A D | 26-Oct-1985 | 630 | 28 | 27 | |
.npmignore | H A D | 26-Oct-1985 | 894 | 61 | 43 | |
.travis.yml | H A D | 26-Oct-1985 | 108 | 9 | 8 | |
LICENSE | H A D | 26-Oct-1985 | 1 KiB | 22 | 17 | |
README.md | H A D | 26-Oct-1985 | 2.2 KiB | 70 | 50 | |
package.json | H A D | 20-Sep-2020 | 1.8 KiB | 70 | 69 |
README.md
1# json-schema-traverse 2Traverse JSON Schema passing each schema object to callback 3 4[![Build Status](https://travis-ci.org/epoberezkin/json-schema-traverse.svg?branch=master)](https://travis-ci.org/epoberezkin/json-schema-traverse) 5[![npm version](https://badge.fury.io/js/json-schema-traverse.svg)](https://www.npmjs.com/package/json-schema-traverse) 6[![Coverage Status](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## Install 10 11``` 12npm install json-schema-traverse 13``` 14 15 16## Usage 17 18```javascript 19const 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 schema 30// 2. {type: 'string'} 31// 3. {type: 'integer'} 32``` 33 34Callback function is called for each schema object (not including draft-06 boolean schemas), including the root schema. Schema references ($ref) are not resolved, they are passed as is. 35 36Callback is passed these parameters: 37 38- _schema_: the current schema object 39- _JSON pointer_: from the root schema to the current schema object 40- _root schema_: the schema passed to `traverse` object 41- _parent JSON pointer_: from the root schema to the parent schema object (see below) 42- _parent keyword_: the keyword inside which this schema appears (e.g. `properties`, `anyOf`, etc.) 43- _parent schema_: not necessarily parent object/array; in the example above the parent schema for `{type: 'string'}` is the root schema 44- _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'` 45 46 47## Traverse objects in all unknown keywords 48 49```javascript 50const traverse = require('json-schema-traverse'); 51const schema = { 52 mySchema: { 53 minimum: 1, 54 maximum: 2 55 } 56}; 57 58traverse(schema, {allKeys: true}, cb); 59// cb is called 2 times with: 60// 1. root schema 61// 2. mySchema 62``` 63 64Without option `allKeys: true` callback will be called only with root schema. 65 66 67## License 68 69[MIT](https://github.com/epoberezkin/json-schema-traverse/blob/master/LICENSE) 70