diff options
Diffstat (limited to 'node_modules/ajv-keywords/keywords/deepProperties.js')
| -rw-r--r-- | node_modules/ajv-keywords/keywords/deepProperties.js | 54 |
1 files changed, 0 insertions, 54 deletions
diff --git a/node_modules/ajv-keywords/keywords/deepProperties.js b/node_modules/ajv-keywords/keywords/deepProperties.js deleted file mode 100644 index e5aff605..00000000 --- a/node_modules/ajv-keywords/keywords/deepProperties.js +++ /dev/null @@ -1,54 +0,0 @@ -'use strict'; - -var util = require('./_util'); - -module.exports = function defFunc(ajv) { - defFunc.definition = { - type: 'object', - macro: function (schema) { - var schemas = []; - for (var pointer in schema) - schemas.push(getSchema(pointer, schema[pointer])); - return {'allOf': schemas}; - }, - metaSchema: { - type: 'object', - propertyNames: { - type: 'string', - format: 'json-pointer' - }, - additionalProperties: util.metaSchemaRef(ajv) - } - }; - - ajv.addKeyword('deepProperties', defFunc.definition); - return ajv; -}; - - -function getSchema(jsonPointer, schema) { - var segments = jsonPointer.split('/'); - var rootSchema = {}; - var pointerSchema = rootSchema; - for (var i=1; i<segments.length; i++) { - var segment = segments[i]; - var isLast = i == segments.length - 1; - segment = unescapeJsonPointer(segment); - var properties = pointerSchema.properties = {}; - var items = undefined; - if (/[0-9]+/.test(segment)) { - var count = +segment; - items = pointerSchema.items = []; - while (count--) items.push({}); - } - pointerSchema = isLast ? schema : {}; - properties[segment] = pointerSchema; - if (items) items.push(pointerSchema); - } - return rootSchema; -} - - -function unescapeJsonPointer(str) { - return str.replace(/~1/g, '/').replace(/~0/g, '~'); -} |
