aboutsummaryrefslogtreecommitdiff
path: root/sandbox/testAppNevena/Front/node_modules/json-schema-traverse
diff options
context:
space:
mode:
Diffstat (limited to 'sandbox/testAppNevena/Front/node_modules/json-schema-traverse')
-rw-r--r--sandbox/testAppNevena/Front/node_modules/json-schema-traverse/.eslintrc.yml27
-rw-r--r--sandbox/testAppNevena/Front/node_modules/json-schema-traverse/.github/FUNDING.yml2
-rw-r--r--sandbox/testAppNevena/Front/node_modules/json-schema-traverse/.github/workflows/build.yml28
-rw-r--r--sandbox/testAppNevena/Front/node_modules/json-schema-traverse/.github/workflows/publish.yml27
-rw-r--r--sandbox/testAppNevena/Front/node_modules/json-schema-traverse/LICENSE21
-rw-r--r--sandbox/testAppNevena/Front/node_modules/json-schema-traverse/README.md95
-rw-r--r--sandbox/testAppNevena/Front/node_modules/json-schema-traverse/index.d.ts40
-rw-r--r--sandbox/testAppNevena/Front/node_modules/json-schema-traverse/index.js93
-rw-r--r--sandbox/testAppNevena/Front/node_modules/json-schema-traverse/package.json43
-rw-r--r--sandbox/testAppNevena/Front/node_modules/json-schema-traverse/spec/.eslintrc.yml6
-rw-r--r--sandbox/testAppNevena/Front/node_modules/json-schema-traverse/spec/fixtures/schema.js125
-rw-r--r--sandbox/testAppNevena/Front/node_modules/json-schema-traverse/spec/index.spec.js171
12 files changed, 678 insertions, 0 deletions
diff --git a/sandbox/testAppNevena/Front/node_modules/json-schema-traverse/.eslintrc.yml b/sandbox/testAppNevena/Front/node_modules/json-schema-traverse/.eslintrc.yml
new file mode 100644
index 00000000..618559ab
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/json-schema-traverse/.eslintrc.yml
@@ -0,0 +1,27 @@
+extends: eslint:recommended
+env:
+ node: true
+ browser: true
+rules:
+ block-scoped-var: 2
+ complexity: [2, 15]
+ curly: [2, multi-or-nest, consistent]
+ dot-location: [2, property]
+ dot-notation: 2
+ indent: [2, 2, SwitchCase: 1]
+ linebreak-style: [2, unix]
+ new-cap: 2
+ no-console: [2, allow: [warn, error]]
+ no-else-return: 2
+ no-eq-null: 2
+ no-fallthrough: 2
+ no-invalid-this: 2
+ no-return-assign: 2
+ no-shadow: 1
+ no-trailing-spaces: 2
+ no-use-before-define: [2, nofunc]
+ quotes: [2, single, avoid-escape]
+ semi: [2, always]
+ strict: [2, global]
+ valid-jsdoc: [2, requireReturn: false]
+ no-control-regex: 0
diff --git a/sandbox/testAppNevena/Front/node_modules/json-schema-traverse/.github/FUNDING.yml b/sandbox/testAppNevena/Front/node_modules/json-schema-traverse/.github/FUNDING.yml
new file mode 100644
index 00000000..44f80f41
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/json-schema-traverse/.github/FUNDING.yml
@@ -0,0 +1,2 @@
+github: epoberezkin
+tidelift: "npm/json-schema-traverse"
diff --git a/sandbox/testAppNevena/Front/node_modules/json-schema-traverse/.github/workflows/build.yml b/sandbox/testAppNevena/Front/node_modules/json-schema-traverse/.github/workflows/build.yml
new file mode 100644
index 00000000..f8ef5ba8
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/json-schema-traverse/.github/workflows/build.yml
@@ -0,0 +1,28 @@
+name: build
+
+on:
+ push:
+ branches: [master]
+ pull_request:
+ branches: ["*"]
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+
+ strategy:
+ matrix:
+ node-version: [10.x, 12.x, 14.x]
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: Use Node.js ${{ matrix.node-version }}
+ uses: actions/setup-node@v1
+ with:
+ node-version: ${{ matrix.node-version }}
+ - run: npm install
+ - run: npm test
+ - name: Coveralls
+ uses: coverallsapp/github-action@master
+ with:
+ github-token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/sandbox/testAppNevena/Front/node_modules/json-schema-traverse/.github/workflows/publish.yml b/sandbox/testAppNevena/Front/node_modules/json-schema-traverse/.github/workflows/publish.yml
new file mode 100644
index 00000000..924825b1
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/json-schema-traverse/.github/workflows/publish.yml
@@ -0,0 +1,27 @@
+name: publish
+
+on:
+ release:
+ types: [published]
+
+jobs:
+ publish-npm:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-node@v1
+ with:
+ node-version: 14
+ registry-url: https://registry.npmjs.org/
+ - run: npm install
+ - run: npm test
+ - name: Publish beta version to npm
+ if: "github.event.release.prerelease"
+ run: npm publish --tag beta
+ env:
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
+ - name: Publish to npm
+ if: "!github.event.release.prerelease"
+ run: npm publish
+ env:
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
diff --git a/sandbox/testAppNevena/Front/node_modules/json-schema-traverse/LICENSE b/sandbox/testAppNevena/Front/node_modules/json-schema-traverse/LICENSE
new file mode 100644
index 00000000..7f154356
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/json-schema-traverse/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2017 Evgeny Poberezkin
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/sandbox/testAppNevena/Front/node_modules/json-schema-traverse/README.md b/sandbox/testAppNevena/Front/node_modules/json-schema-traverse/README.md
new file mode 100644
index 00000000..f3e60073
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/json-schema-traverse/README.md
@@ -0,0 +1,95 @@
+# json-schema-traverse
+Traverse JSON Schema passing each schema object to callback
+
+[![build](https://github.com/epoberezkin/json-schema-traverse/workflows/build/badge.svg)](https://github.com/epoberezkin/json-schema-traverse/actions?query=workflow%3Abuild)
+[![npm](https://img.shields.io/npm/v/json-schema-traverse)](https://www.npmjs.com/package/json-schema-traverse)
+[![coverage](https://coveralls.io/repos/github/epoberezkin/json-schema-traverse/badge.svg?branch=master)](https://coveralls.io/github/epoberezkin/json-schema-traverse?branch=master)
+
+
+## Install
+
+```
+npm install json-schema-traverse
+```
+
+
+## Usage
+
+```javascript
+const traverse = require('json-schema-traverse');
+const schema = {
+ properties: {
+ foo: {type: 'string'},
+ bar: {type: 'integer'}
+ }
+};
+
+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 `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:
+
+- _schema_: the current schema object
+- _JSON pointer_: from the root schema to the current schema object
+- _root schema_: the schema passed to `traverse` object
+- _parent JSON pointer_: from the root schema to the parent schema object (see below)
+- _parent keyword_: the keyword inside which this schema appears (e.g. `properties`, `anyOf`, etc.)
+- _parent schema_: not necessarily parent object/array; in the example above the parent schema for `{type: 'string'}` is the root schema
+- _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'`
+
+
+## Traverse objects in all unknown keywords
+
+```javascript
+const traverse = require('json-schema-traverse');
+const schema = {
+ mySchema: {
+ minimum: 1,
+ maximum: 2
+ }
+};
+
+traverse(schema, {allKeys: true, cb});
+// cb is called 2 times with:
+// 1. root schema
+// 2. mySchema
+```
+
+Without option `allKeys: true` callback will be called only with root schema.
+
+
+## Enterprise support
+
+json-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.
+
+
+## Security contact
+
+To report a security vulnerability, please use the
+[Tidelift security contact](https://tidelift.com/security).
+Tidelift will coordinate the fix and disclosure. Please do NOT report security vulnerability via GitHub issues.
+
+
+## License
+
+[MIT](https://github.com/epoberezkin/json-schema-traverse/blob/master/LICENSE)
diff --git a/sandbox/testAppNevena/Front/node_modules/json-schema-traverse/index.d.ts b/sandbox/testAppNevena/Front/node_modules/json-schema-traverse/index.d.ts
new file mode 100644
index 00000000..0772daed
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/json-schema-traverse/index.d.ts
@@ -0,0 +1,40 @@
+declare function traverse(
+ schema: traverse.SchemaObject,
+ opts: traverse.Options,
+ cb?: traverse.Callback
+): void;
+
+declare function traverse(
+ schema: traverse.SchemaObject,
+ cb: traverse.Callback
+): void;
+
+declare namespace traverse {
+ interface SchemaObject {
+ $id?: string;
+ $schema?: string;
+ [x: string]: any;
+ }
+
+ type Callback = (
+ schema: SchemaObject,
+ jsonPtr: string,
+ rootSchema: SchemaObject,
+ parentJsonPtr?: string,
+ parentKeyword?: string,
+ parentSchema?: SchemaObject,
+ keyIndex?: string | number
+ ) => void;
+
+ interface Options {
+ allKeys?: boolean;
+ cb?:
+ | Callback
+ | {
+ pre?: Callback;
+ post?: Callback;
+ };
+ }
+}
+
+export = traverse;
diff --git a/sandbox/testAppNevena/Front/node_modules/json-schema-traverse/index.js b/sandbox/testAppNevena/Front/node_modules/json-schema-traverse/index.js
new file mode 100644
index 00000000..e521bfa8
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/json-schema-traverse/index.js
@@ -0,0 +1,93 @@
+'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 = {};
+ }
+
+ cb = opts.cb || cb;
+ var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};
+ var post = cb.post || function() {};
+
+ _traverse(opts, pre, post, schema, '', schema);
+};
+
+
+traverse.keywords = {
+ additionalItems: true,
+ items: true,
+ contains: true,
+ additionalProperties: true,
+ propertyNames: true,
+ not: true,
+ if: true,
+ then: true,
+ else: true
+};
+
+traverse.arrayKeywords = {
+ items: true,
+ allOf: true,
+ anyOf: true,
+ oneOf: true
+};
+
+traverse.propsKeywords = {
+ $defs: true,
+ definitions: true,
+ properties: true,
+ patternProperties: true,
+ dependencies: true
+};
+
+traverse.skipKeywords = {
+ default: true,
+ enum: true,
+ const: true,
+ required: true,
+ maximum: true,
+ minimum: true,
+ exclusiveMaximum: true,
+ exclusiveMinimum: true,
+ multipleOf: true,
+ maxLength: true,
+ minLength: true,
+ pattern: true,
+ format: true,
+ maxItems: true,
+ minItems: true,
+ uniqueItems: true,
+ maxProperties: true,
+ minProperties: true
+};
+
+
+function _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {
+ if (schema && typeof schema == 'object' && !Array.isArray(schema)) {
+ 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, 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, 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, pre, post, sch, jsonPtr + '/' + key, rootSchema, jsonPtr, key, schema);
+ }
+ }
+ post(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);
+ }
+}
+
+
+function escapeJsonPtr(str) {
+ return str.replace(/~/g, '~0').replace(/\//g, '~1');
+}
diff --git a/sandbox/testAppNevena/Front/node_modules/json-schema-traverse/package.json b/sandbox/testAppNevena/Front/node_modules/json-schema-traverse/package.json
new file mode 100644
index 00000000..e32dfbae
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/json-schema-traverse/package.json
@@ -0,0 +1,43 @@
+{
+ "name": "json-schema-traverse",
+ "version": "1.0.0",
+ "description": "Traverse JSON Schema passing each schema object to callback",
+ "main": "index.js",
+ "types": "index.d.ts",
+ "scripts": {
+ "eslint": "eslint index.js spec",
+ "test-spec": "mocha spec -R spec",
+ "test": "npm run eslint && nyc npm run test-spec"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/epoberezkin/json-schema-traverse.git"
+ },
+ "keywords": [
+ "JSON-Schema",
+ "traverse",
+ "iterate"
+ ],
+ "author": "Evgeny Poberezkin",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/epoberezkin/json-schema-traverse/issues"
+ },
+ "homepage": "https://github.com/epoberezkin/json-schema-traverse#readme",
+ "devDependencies": {
+ "eslint": "^7.3.1",
+ "mocha": "^8.0.1",
+ "nyc": "^15.0.0",
+ "pre-commit": "^1.2.2"
+ },
+ "nyc": {
+ "exclude": [
+ "**/spec/**",
+ "node_modules"
+ ],
+ "reporter": [
+ "lcov",
+ "text-summary"
+ ]
+ }
+}
diff --git a/sandbox/testAppNevena/Front/node_modules/json-schema-traverse/spec/.eslintrc.yml b/sandbox/testAppNevena/Front/node_modules/json-schema-traverse/spec/.eslintrc.yml
new file mode 100644
index 00000000..3344da7e
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/json-schema-traverse/spec/.eslintrc.yml
@@ -0,0 +1,6 @@
+parserOptions:
+ ecmaVersion: 6
+globals:
+ beforeEach: false
+ describe: false
+ it: false
diff --git a/sandbox/testAppNevena/Front/node_modules/json-schema-traverse/spec/fixtures/schema.js b/sandbox/testAppNevena/Front/node_modules/json-schema-traverse/spec/fixtures/schema.js
new file mode 100644
index 00000000..c51430cd
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/json-schema-traverse/spec/fixtures/schema.js
@@ -0,0 +1,125 @@
+'use strict';
+
+var schema = {
+ additionalItems: subschema('additionalItems'),
+ items: subschema('items'),
+ contains: subschema('contains'),
+ additionalProperties: subschema('additionalProperties'),
+ propertyNames: subschema('propertyNames'),
+ not: subschema('not'),
+ allOf: [
+ subschema('allOf_0'),
+ subschema('allOf_1'),
+ {
+ items: [
+ subschema('items_0'),
+ subschema('items_1'),
+ ]
+ }
+ ],
+ anyOf: [
+ subschema('anyOf_0'),
+ subschema('anyOf_1'),
+ ],
+ oneOf: [
+ subschema('oneOf_0'),
+ subschema('oneOf_1'),
+ ],
+ definitions: {
+ foo: subschema('definitions_foo'),
+ bar: subschema('definitions_bar'),
+ },
+ properties: {
+ foo: subschema('properties_foo'),
+ bar: subschema('properties_bar'),
+ },
+ patternProperties: {
+ foo: subschema('patternProperties_foo'),
+ bar: subschema('patternProperties_bar'),
+ },
+ dependencies: {
+ foo: subschema('dependencies_foo'),
+ bar: subschema('dependencies_bar'),
+ },
+ required: ['foo', 'bar']
+};
+
+
+function subschema(keyword) {
+ var sch = {
+ properties: {},
+ additionalProperties: false,
+ additionalItems: false,
+ anyOf: [
+ {format: 'email'},
+ {format: 'hostname'}
+ ]
+ };
+ sch.properties['foo_' + keyword] = {title: 'foo'};
+ sch.properties['bar_' + keyword] = {title: 'bar'};
+ return sch;
+}
+
+
+module.exports = {
+ schema: schema,
+
+ // schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex
+ expectedCalls: [[schema, '', schema, undefined, undefined, undefined, undefined]]
+ .concat(expectedCalls('additionalItems'))
+ .concat(expectedCalls('items'))
+ .concat(expectedCalls('contains'))
+ .concat(expectedCalls('additionalProperties'))
+ .concat(expectedCalls('propertyNames'))
+ .concat(expectedCalls('not'))
+ .concat(expectedCallsChild('allOf', 0))
+ .concat(expectedCallsChild('allOf', 1))
+ .concat([
+ [schema.allOf[2], '/allOf/2', schema, '', 'allOf', schema, 2],
+ [schema.allOf[2].items[0], '/allOf/2/items/0', schema, '/allOf/2', 'items', schema.allOf[2], 0],
+ [schema.allOf[2].items[0].properties.foo_items_0, '/allOf/2/items/0/properties/foo_items_0', schema, '/allOf/2/items/0', 'properties', schema.allOf[2].items[0], 'foo_items_0'],
+ [schema.allOf[2].items[0].properties.bar_items_0, '/allOf/2/items/0/properties/bar_items_0', schema, '/allOf/2/items/0', 'properties', schema.allOf[2].items[0], 'bar_items_0'],
+ [schema.allOf[2].items[0].anyOf[0], '/allOf/2/items/0/anyOf/0', schema, '/allOf/2/items/0', 'anyOf', schema.allOf[2].items[0], 0],
+ [schema.allOf[2].items[0].anyOf[1], '/allOf/2/items/0/anyOf/1', schema, '/allOf/2/items/0', 'anyOf', schema.allOf[2].items[0], 1],
+
+ [schema.allOf[2].items[1], '/allOf/2/items/1', schema, '/allOf/2', 'items', schema.allOf[2], 1],
+ [schema.allOf[2].items[1].properties.foo_items_1, '/allOf/2/items/1/properties/foo_items_1', schema, '/allOf/2/items/1', 'properties', schema.allOf[2].items[1], 'foo_items_1'],
+ [schema.allOf[2].items[1].properties.bar_items_1, '/allOf/2/items/1/properties/bar_items_1', schema, '/allOf/2/items/1', 'properties', schema.allOf[2].items[1], 'bar_items_1'],
+ [schema.allOf[2].items[1].anyOf[0], '/allOf/2/items/1/anyOf/0', schema, '/allOf/2/items/1', 'anyOf', schema.allOf[2].items[1], 0],
+ [schema.allOf[2].items[1].anyOf[1], '/allOf/2/items/1/anyOf/1', schema, '/allOf/2/items/1', 'anyOf', schema.allOf[2].items[1], 1]
+ ])
+ .concat(expectedCallsChild('anyOf', 0))
+ .concat(expectedCallsChild('anyOf', 1))
+ .concat(expectedCallsChild('oneOf', 0))
+ .concat(expectedCallsChild('oneOf', 1))
+ .concat(expectedCallsChild('definitions', 'foo'))
+ .concat(expectedCallsChild('definitions', 'bar'))
+ .concat(expectedCallsChild('properties', 'foo'))
+ .concat(expectedCallsChild('properties', 'bar'))
+ .concat(expectedCallsChild('patternProperties', 'foo'))
+ .concat(expectedCallsChild('patternProperties', 'bar'))
+ .concat(expectedCallsChild('dependencies', 'foo'))
+ .concat(expectedCallsChild('dependencies', 'bar'))
+};
+
+
+function expectedCalls(keyword) {
+ return [
+ [schema[keyword], `/${keyword}`, schema, '', keyword, schema, undefined],
+ [schema[keyword].properties[`foo_${keyword}`], `/${keyword}/properties/foo_${keyword}`, schema, `/${keyword}`, 'properties', schema[keyword], `foo_${keyword}`],
+ [schema[keyword].properties[`bar_${keyword}`], `/${keyword}/properties/bar_${keyword}`, schema, `/${keyword}`, 'properties', schema[keyword], `bar_${keyword}`],
+ [schema[keyword].anyOf[0], `/${keyword}/anyOf/0`, schema, `/${keyword}`, 'anyOf', schema[keyword], 0],
+ [schema[keyword].anyOf[1], `/${keyword}/anyOf/1`, schema, `/${keyword}`, 'anyOf', schema[keyword], 1]
+ ];
+}
+
+
+function expectedCallsChild(keyword, i) {
+ return [
+ [schema[keyword][i], `/${keyword}/${i}`, schema, '', keyword, schema, i],
+ [schema[keyword][i].properties[`foo_${keyword}_${i}`], `/${keyword}/${i}/properties/foo_${keyword}_${i}`, schema, `/${keyword}/${i}`, 'properties', schema[keyword][i], `foo_${keyword}_${i}`],
+ [schema[keyword][i].properties[`bar_${keyword}_${i}`], `/${keyword}/${i}/properties/bar_${keyword}_${i}`, schema, `/${keyword}/${i}`, 'properties', schema[keyword][i], `bar_${keyword}_${i}`],
+ [schema[keyword][i].anyOf[0], `/${keyword}/${i}/anyOf/0`, schema, `/${keyword}/${i}`, 'anyOf', schema[keyword][i], 0],
+ [schema[keyword][i].anyOf[1], `/${keyword}/${i}/anyOf/1`, schema, `/${keyword}/${i}`, 'anyOf', schema[keyword][i], 1]
+ ];
+}
diff --git a/sandbox/testAppNevena/Front/node_modules/json-schema-traverse/spec/index.spec.js b/sandbox/testAppNevena/Front/node_modules/json-schema-traverse/spec/index.spec.js
new file mode 100644
index 00000000..c76b64fc
--- /dev/null
+++ b/sandbox/testAppNevena/Front/node_modules/json-schema-traverse/spec/index.spec.js
@@ -0,0 +1,171 @@
+'use strict';
+
+var traverse = require('../index');
+var assert = require('assert');
+
+describe('json-schema-traverse', function() {
+ var calls;
+
+ beforeEach(function() {
+ calls = [];
+ });
+
+ it('should traverse all keywords containing schemas recursively', function() {
+ var schema = require('./fixtures/schema').schema;
+ var expectedCalls = require('./fixtures/schema').expectedCalls;
+
+ 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 = {
+ someObject: {
+ minimum: 1,
+ maximum: 2
+ }
+ };
+
+ it('should traverse objects with allKeys: true option', function() {
+ // schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex
+ var expectedCalls = [
+ [schema, '', schema, undefined, undefined, undefined, undefined],
+ [schema.someObject, '/someObject', schema, '', 'someObject', schema, undefined]
+ ];
+
+ traverse(schema, {allKeys: true, cb: callback});
+ assert.deepStrictEqual(calls, expectedCalls);
+ });
+
+
+ it('should NOT traverse objects with allKeys: false option', function() {
+ // schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex
+ var expectedCalls = [
+ [schema, '', schema, undefined, undefined, undefined, undefined]
+ ];
+
+ traverse(schema, {allKeys: false, cb: callback});
+ assert.deepStrictEqual(calls, expectedCalls);
+ });
+
+
+ it('should NOT traverse objects without allKeys option', function() {
+ // schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex
+ var expectedCalls = [
+ [schema, '', schema, undefined, undefined, undefined, undefined]
+ ];
+
+ traverse(schema, {cb: callback});
+ assert.deepStrictEqual(calls, expectedCalls);
+ });
+
+
+ it('should NOT travers objects in standard keywords which value is not a schema', function() {
+ var schema2 = {
+ const: {foo: 'bar'},
+ enum: ['a', 'b'],
+ required: ['foo'],
+ another: {
+
+ },
+ patternProperties: {}, // will not traverse - no properties
+ dependencies: true, // will not traverse - invalid
+ properties: {
+ smaller: {
+ type: 'number'
+ },
+ larger: {
+ type: 'number',
+ minimum: {$data: '1/smaller'}
+ }
+ }
+ };
+
+ // schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex
+ var expectedCalls = [
+ [schema2, '', schema2, undefined, undefined, undefined, undefined],
+ [schema2.another, '/another', schema2, '', 'another', schema2, undefined],
+ [schema2.properties.smaller, '/properties/smaller', schema2, '', 'properties', schema2, 'smaller'],
+ [schema2.properties.larger, '/properties/larger', schema2, '', 'properties', schema2, 'larger'],
+ ];
+
+ 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)));
+ }
+});