aboutsummaryrefslogtreecommitdiff
path: root/node_modules/json-schema-traverse
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2018-09-20 02:56:13 +0200
committerFlorian Dold <florian.dold@gmail.com>2018-09-20 02:56:13 +0200
commitbbff7403fbf46f9ad92240ac213df8d30ef31b64 (patch)
treec58400ec5124da1c7d56b01aea83309f80a56c3b /node_modules/json-schema-traverse
parent003fb34971cf63466184351b4db5f7c67df4f444 (diff)
update packages
Diffstat (limited to 'node_modules/json-schema-traverse')
-rw-r--r--node_modules/json-schema-traverse/.npmignore60
-rw-r--r--node_modules/json-schema-traverse/README.md20
-rw-r--r--node_modules/json-schema-traverse/index.js20
-rw-r--r--node_modules/json-schema-traverse/package.json2
-rw-r--r--node_modules/json-schema-traverse/spec/index.spec.js79
5 files changed, 106 insertions, 75 deletions
diff --git a/node_modules/json-schema-traverse/.npmignore b/node_modules/json-schema-traverse/.npmignore
deleted file mode 100644
index d09355793..000000000
--- a/node_modules/json-schema-traverse/.npmignore
+++ /dev/null
@@ -1,60 +0,0 @@
-# Logs
-logs
-*.log
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-
-# Runtime data
-pids
-*.pid
-*.seed
-*.pid.lock
-
-# Directory for instrumented libs generated by jscoverage/JSCover
-lib-cov
-
-# Coverage directory used by tools like istanbul
-coverage
-
-# nyc test coverage
-.nyc_output
-
-# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
-.grunt
-
-# Bower dependency directory (https://bower.io/)
-bower_components
-
-# node-waf configuration
-.lock-wscript
-
-# Compiled binary addons (http://nodejs.org/api/addons.html)
-build/Release
-
-# Dependency directories
-node_modules/
-jspm_packages/
-
-# Typescript v1 declaration files
-typings/
-
-# Optional npm cache directory
-.npm
-
-# Optional eslint cache
-.eslintcache
-
-# Optional REPL history
-.node_repl_history
-
-# Output of 'npm pack'
-*.tgz
-
-# Yarn Integrity file
-.yarn-integrity
-
-# dotenv environment variables file
-.env
-
-.DS_Store
diff --git a/node_modules/json-schema-traverse/README.md b/node_modules/json-schema-traverse/README.md
index d4286a23b..d5ccaf450 100644
--- a/node_modules/json-schema-traverse/README.md
+++ b/node_modules/json-schema-traverse/README.md
@@ -24,14 +24,28 @@ const schema = {
}
};
-traverse(schema, cb);
+traverse(schema, {cb});
// cb is called 3 times with:
// 1. root schema
// 2. {type: 'string'}
// 3. {type: 'integer'}
+
+// Or:
+
+traverse(schema, {cb: {pre, post}});
+// pre is called 3 times with:
+// 1. root schema
+// 2. {type: 'string'}
+// 3. {type: 'integer'}
+//
+// post is called 3 times with:
+// 1. {type: 'string'}
+// 2. {type: 'integer'}
+// 3. root schema
+
```
-Callback 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.
+Callback 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.
Callback is passed these parameters:
@@ -55,7 +69,7 @@ const schema = {
}
};
-traverse(schema, {allKeys: true}, cb);
+traverse(schema, {allKeys: true, cb});
// cb is called 2 times with:
// 1. root schema
// 2. mySchema
diff --git a/node_modules/json-schema-traverse/index.js b/node_modules/json-schema-traverse/index.js
index 79eeb6a05..d4a18dfc7 100644
--- a/node_modules/json-schema-traverse/index.js
+++ b/node_modules/json-schema-traverse/index.js
@@ -1,11 +1,17 @@
'use strict';
var traverse = module.exports = function (schema, opts, cb) {
+ // Legacy support for v0.3.1 and earlier.
if (typeof opts == 'function') {
cb = opts;
opts = {};
}
- _traverse(opts, cb, schema, '', schema);
+
+ cb = opts.cb || cb;
+ var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};
+ var post = cb.post || function() {};
+
+ _traverse(opts, pre, post, schema, '', schema);
};
@@ -33,6 +39,7 @@ traverse.propsKeywords = {
};
traverse.skipKeywords = {
+ default: true,
enum: true,
const: true,
required: true,
@@ -53,25 +60,26 @@ traverse.skipKeywords = {
};
-function _traverse(opts, cb, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {
+function _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {
if (schema && typeof schema == 'object' && !Array.isArray(schema)) {
- cb(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);
+ pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);
for (var key in schema) {
var sch = schema[key];
if (Array.isArray(sch)) {
if (key in traverse.arrayKeywords) {
for (var i=0; i<sch.length; i++)
- _traverse(opts, cb, sch[i], jsonPtr + '/' + key + '/' + i, rootSchema, jsonPtr, key, schema, i);
+ _traverse(opts, pre, post, sch[i], jsonPtr + '/' + key + '/' + i, rootSchema, jsonPtr, key, schema, i);
}
} else if (key in traverse.propsKeywords) {
if (sch && typeof sch == 'object') {
for (var prop in sch)
- _traverse(opts, cb, sch[prop], jsonPtr + '/' + key + '/' + escapeJsonPtr(prop), rootSchema, jsonPtr, key, schema, prop);
+ _traverse(opts, pre, post, sch[prop], jsonPtr + '/' + key + '/' + escapeJsonPtr(prop), rootSchema, jsonPtr, key, schema, prop);
}
} else if (key in traverse.keywords || (opts.allKeys && !(key in traverse.skipKeywords))) {
- _traverse(opts, cb, sch, jsonPtr + '/' + key, rootSchema, jsonPtr, key, schema);
+ _traverse(opts, pre, post, sch, jsonPtr + '/' + key, rootSchema, jsonPtr, key, schema);
}
}
+ post(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);
}
}
diff --git a/node_modules/json-schema-traverse/package.json b/node_modules/json-schema-traverse/package.json
index 843a4ce32..156606327 100644
--- a/node_modules/json-schema-traverse/package.json
+++ b/node_modules/json-schema-traverse/package.json
@@ -1,6 +1,6 @@
{
"name": "json-schema-traverse",
- "version": "0.3.1",
+ "version": "0.4.1",
"description": "Traverse JSON Schema passing each schema object to callback",
"main": "index.js",
"scripts": {
diff --git a/node_modules/json-schema-traverse/spec/index.spec.js b/node_modules/json-schema-traverse/spec/index.spec.js
index 7e66143d3..c76b64fc8 100644
--- a/node_modules/json-schema-traverse/spec/index.spec.js
+++ b/node_modules/json-schema-traverse/spec/index.spec.js
@@ -14,10 +14,29 @@ describe('json-schema-traverse', function() {
var schema = require('./fixtures/schema').schema;
var expectedCalls = require('./fixtures/schema').expectedCalls;
- traverse(schema, callback);
+ traverse(schema, {cb: callback});
assert.deepStrictEqual(calls, expectedCalls);
});
+ describe('Legacy v0.3.1 API', function() {
+ it('should traverse all keywords containing schemas recursively', function() {
+ var schema = require('./fixtures/schema').schema;
+ var expectedCalls = require('./fixtures/schema').expectedCalls;
+
+ traverse(schema, callback);
+ assert.deepStrictEqual(calls, expectedCalls);
+ });
+
+ it('should work when an options object is provided', function() {
+ // schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex
+ var schema = require('./fixtures/schema').schema;
+ var expectedCalls = require('./fixtures/schema').expectedCalls;
+
+ traverse(schema, {}, callback);
+ assert.deepStrictEqual(calls, expectedCalls);
+ });
+ });
+
describe('allKeys option', function() {
var schema = {
@@ -34,7 +53,7 @@ describe('json-schema-traverse', function() {
[schema.someObject, '/someObject', schema, '', 'someObject', schema, undefined]
];
- traverse(schema, {allKeys: true}, callback);
+ traverse(schema, {allKeys: true, cb: callback});
assert.deepStrictEqual(calls, expectedCalls);
});
@@ -45,7 +64,7 @@ describe('json-schema-traverse', function() {
[schema, '', schema, undefined, undefined, undefined, undefined]
];
- traverse(schema, {allKeys: false}, callback);
+ traverse(schema, {allKeys: false, cb: callback});
assert.deepStrictEqual(calls, expectedCalls);
});
@@ -56,7 +75,7 @@ describe('json-schema-traverse', function() {
[schema, '', schema, undefined, undefined, undefined, undefined]
];
- traverse(schema, callback);
+ traverse(schema, {cb: callback});
assert.deepStrictEqual(calls, expectedCalls);
});
@@ -90,13 +109,63 @@ describe('json-schema-traverse', function() {
[schema2.properties.larger, '/properties/larger', schema2, '', 'properties', schema2, 'larger'],
];
- traverse(schema2, {allKeys: true}, callback);
+ traverse(schema2, {allKeys: true, cb: callback});
assert.deepStrictEqual(calls, expectedCalls);
});
});
+ describe('pre and post', function() {
+ var schema = {
+ type: 'object',
+ properties: {
+ name: {type: 'string'},
+ age: {type: 'number'}
+ }
+ };
+
+ it('should traverse schema in pre-order', function() {
+ traverse(schema, {cb: {pre}});
+ var expectedCalls = [
+ ['pre', schema, '', schema, undefined, undefined, undefined, undefined],
+ ['pre', schema.properties.name, '/properties/name', schema, '', 'properties', schema, 'name'],
+ ['pre', schema.properties.age, '/properties/age', schema, '', 'properties', schema, 'age'],
+ ];
+ assert.deepStrictEqual(calls, expectedCalls);
+ });
+
+ it('should traverse schema in post-order', function() {
+ traverse(schema, {cb: {post}});
+ var expectedCalls = [
+ ['post', schema.properties.name, '/properties/name', schema, '', 'properties', schema, 'name'],
+ ['post', schema.properties.age, '/properties/age', schema, '', 'properties', schema, 'age'],
+ ['post', schema, '', schema, undefined, undefined, undefined, undefined],
+ ];
+ assert.deepStrictEqual(calls, expectedCalls);
+ });
+
+ it('should traverse schema in pre- and post-order at the same time', function() {
+ traverse(schema, {cb: {pre, post}});
+ var expectedCalls = [
+ ['pre', schema, '', schema, undefined, undefined, undefined, undefined],
+ ['pre', schema.properties.name, '/properties/name', schema, '', 'properties', schema, 'name'],
+ ['post', schema.properties.name, '/properties/name', schema, '', 'properties', schema, 'name'],
+ ['pre', schema.properties.age, '/properties/age', schema, '', 'properties', schema, 'age'],
+ ['post', schema.properties.age, '/properties/age', schema, '', 'properties', schema, 'age'],
+ ['post', schema, '', schema, undefined, undefined, undefined, undefined],
+ ];
+ assert.deepStrictEqual(calls, expectedCalls);
+ });
+ });
function callback() {
calls.push(Array.prototype.slice.call(arguments));
}
+
+ function pre() {
+ calls.push(['pre'].concat(Array.prototype.slice.call(arguments)));
+ }
+
+ function post() {
+ calls.push(['post'].concat(Array.prototype.slice.call(arguments)));
+ }
});