1 line
49 KiB
JSON
1 line
49 KiB
JSON
{"ast":null,"code":"'use strict';\n\nvar compileSchema = require('./compile'),\n resolve = require('./compile/resolve'),\n Cache = require('./cache'),\n SchemaObject = require('./compile/schema_obj'),\n stableStringify = require('fast-json-stable-stringify'),\n formats = require('./compile/formats'),\n rules = require('./compile/rules'),\n $dataMetaSchema = require('./data'),\n util = require('./compile/util');\n\nmodule.exports = Ajv;\nAjv.prototype.validate = validate;\nAjv.prototype.compile = compile;\nAjv.prototype.addSchema = addSchema;\nAjv.prototype.addMetaSchema = addMetaSchema;\nAjv.prototype.validateSchema = validateSchema;\nAjv.prototype.getSchema = getSchema;\nAjv.prototype.removeSchema = removeSchema;\nAjv.prototype.addFormat = addFormat;\nAjv.prototype.errorsText = errorsText;\nAjv.prototype._addSchema = _addSchema;\nAjv.prototype._compile = _compile;\nAjv.prototype.compileAsync = require('./compile/async');\n\nvar customKeyword = require('./keyword');\n\nAjv.prototype.addKeyword = customKeyword.add;\nAjv.prototype.getKeyword = customKeyword.get;\nAjv.prototype.removeKeyword = customKeyword.remove;\nAjv.prototype.validateKeyword = customKeyword.validate;\n\nvar errorClasses = require('./compile/error_classes');\n\nAjv.ValidationError = errorClasses.Validation;\nAjv.MissingRefError = errorClasses.MissingRef;\nAjv.$dataMetaSchema = $dataMetaSchema;\nvar META_SCHEMA_ID = 'http://json-schema.org/draft-07/schema';\nvar META_IGNORE_OPTIONS = ['removeAdditional', 'useDefaults', 'coerceTypes', 'strictDefaults'];\nvar META_SUPPORT_DATA = ['/properties'];\n/**\n * Creates validator instance.\n * Usage: `Ajv(opts)`\n * @param {Object} opts optional options\n * @return {Object} ajv instance\n */\n\nfunction Ajv(opts) {\n if (!(this instanceof Ajv)) return new Ajv(opts);\n opts = this._opts = util.copy(opts) || {};\n setLogger(this);\n this._schemas = {};\n this._refs = {};\n this._fragments = {};\n this._formats = formats(opts.format);\n this._cache = opts.cache || new Cache();\n this._loadingSchemas = {};\n this._compilations = [];\n this.RULES = rules();\n this._getId = chooseGetId(opts);\n opts.loopRequired = opts.loopRequired || Infinity;\n if (opts.errorDataPath == 'property') opts._errorDataPathProperty = true;\n if (opts.serialize === undefined) opts.serialize = stableStringify;\n this._metaOpts = getMetaSchemaOptions(this);\n if (opts.formats) addInitialFormats(this);\n if (opts.keywords) addInitialKeywords(this);\n addDefaultMetaSchema(this);\n if (typeof opts.meta == 'object') this.addMetaSchema(opts.meta);\n if (opts.nullable) this.addKeyword('nullable', {\n metaSchema: {\n type: 'boolean'\n }\n });\n addInitialSchemas(this);\n}\n/**\n * Validate data using schema\n * Schema will be compiled and cached (using serialized JSON as key. [fast-json-stable-stringify](https://github.com/epoberezkin/fast-json-stable-stringify) is used to serialize.\n * @this Ajv\n * @param {String|Object} schemaKeyRef key, ref or schema object\n * @param {Any} data to be validated\n * @return {Boolean} validation result. Errors from the last validation will be available in `ajv.errors` (and also in compiled schema: `schema.errors`).\n */\n\n\nfunction validate(schemaKeyRef, data) {\n var v;\n\n if (typeof schemaKeyRef == 'string') {\n v = this.getSchema(schemaKeyRef);\n if (!v) throw new Error('no schema with key or ref \"' + schemaKeyRef + '\"');\n } else {\n var schemaObj = this._addSchema(schemaKeyRef);\n\n v = schemaObj.validate || this._compile(schemaObj);\n }\n\n var valid = v(data);\n if (v.$async !== true) this.errors = v.errors;\n return valid;\n}\n/**\n * Create validating function for passed schema.\n * @this Ajv\n * @param {Object} schema schema object\n * @param {Boolean} _meta true if schema is a meta-schema. Used internally to compile meta schemas of custom keywords.\n * @return {Function} validating function\n */\n\n\nfunction compile(schema, _meta) {\n var schemaObj = this._addSchema(schema, undefined, _meta);\n\n return schemaObj.validate || this._compile(schemaObj);\n}\n/**\n * Adds schema to the instance.\n * @this Ajv\n * @param {Object|Array} schema schema or array of schemas. If array is passed, `key` and other parameters will be ignored.\n * @param {String} key Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.\n * @param {Boolean} _skipValidation true to skip schema validation. Used internally, option validateSchema should be used instead.\n * @param {Boolean} _meta true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.\n * @return {Ajv} this for method chaining\n */\n\n\nfunction addSchema(schema, key, _skipValidation, _meta) {\n if (Array.isArray(schema)) {\n for (var i = 0; i < schema.length; i++) this.addSchema(schema[i], undefined, _skipValidation, _meta);\n\n return this;\n }\n\n var id = this._getId(schema);\n\n if (id !== undefined && typeof id != 'string') throw new Error('schema id must be string');\n key = resolve.normalizeId(key || id);\n checkUnique(this, key);\n this._schemas[key] = this._addSchema(schema, _skipValidation, _meta, true);\n return this;\n}\n/**\n * Add schema that will be used to validate other schemas\n * options in META_IGNORE_OPTIONS are alway set to false\n * @this Ajv\n * @param {Object} schema schema object\n * @param {String} key optional schema key\n * @param {Boolean} skipValidation true to skip schema validation, can be used to override validateSchema option for meta-schema\n * @return {Ajv} this for method chaining\n */\n\n\nfunction addMetaSchema(schema, key, skipValidation) {\n this.addSchema(schema, key, skipValidation, true);\n return this;\n}\n/**\n * Validate schema\n * @this Ajv\n * @param {Object} schema schema to validate\n * @param {Boolean} throwOrLogError pass true to throw (or log) an error if invalid\n * @return {Boolean} true if schema is valid\n */\n\n\nfunction validateSchema(schema, throwOrLogError) {\n var $schema = schema.$schema;\n if ($schema !== undefined && typeof $schema != 'string') throw new Error('$schema must be a string');\n $schema = $schema || this._opts.defaultMeta || defaultMeta(this);\n\n if (!$schema) {\n this.logger.warn('meta-schema not available');\n this.errors = null;\n return true;\n }\n\n var valid = this.validate($schema, schema);\n\n if (!valid && throwOrLogError) {\n var message = 'schema is invalid: ' + this.errorsText();\n if (this._opts.validateSchema == 'log') this.logger.error(message);else throw new Error(message);\n }\n\n return valid;\n}\n\nfunction defaultMeta(self) {\n var meta = self._opts.meta;\n self._opts.defaultMeta = typeof meta == 'object' ? self._getId(meta) || meta : self.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : undefined;\n return self._opts.defaultMeta;\n}\n/**\n * Get compiled schema from the instance by `key` or `ref`.\n * @this Ajv\n * @param {String} keyRef `key` that was passed to `addSchema` or full schema reference (`schema.id` or resolved id).\n * @return {Function} schema validating function (with property `schema`).\n */\n\n\nfunction getSchema(keyRef) {\n var schemaObj = _getSchemaObj(this, keyRef);\n\n switch (typeof schemaObj) {\n case 'object':\n return schemaObj.validate || this._compile(schemaObj);\n\n case 'string':\n return this.getSchema(schemaObj);\n\n case 'undefined':\n return _getSchemaFragment(this, keyRef);\n }\n}\n\nfunction _getSchemaFragment(self, ref) {\n var res = resolve.schema.call(self, {\n schema: {}\n }, ref);\n\n if (res) {\n var schema = res.schema,\n root = res.root,\n baseId = res.baseId;\n var v = compileSchema.call(self, schema, root, undefined, baseId);\n self._fragments[ref] = new SchemaObject({\n ref: ref,\n fragment: true,\n schema: schema,\n root: root,\n baseId: baseId,\n validate: v\n });\n return v;\n }\n}\n\nfunction _getSchemaObj(self, keyRef) {\n keyRef = resolve.normalizeId(keyRef);\n return self._schemas[keyRef] || self._refs[keyRef] || self._fragments[keyRef];\n}\n/**\n * Remove cached schema(s).\n * If no parameter is passed all schemas but meta-schemas are removed.\n * If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed.\n * Even if schema is referenced by other schemas it still can be removed as other schemas have local references.\n * @this Ajv\n * @param {String|Object|RegExp} schemaKeyRef key, ref, pattern to match key/ref or schema object\n * @return {Ajv} this for method chaining\n */\n\n\nfunction removeSchema(schemaKeyRef) {\n if (schemaKeyRef instanceof RegExp) {\n _removeAllSchemas(this, this._schemas, schemaKeyRef);\n\n _removeAllSchemas(this, this._refs, schemaKeyRef);\n\n return this;\n }\n\n switch (typeof schemaKeyRef) {\n case 'undefined':\n _removeAllSchemas(this, this._schemas);\n\n _removeAllSchemas(this, this._refs);\n\n this._cache.clear();\n\n return this;\n\n case 'string':\n var schemaObj = _getSchemaObj(this, schemaKeyRef);\n\n if (schemaObj) this._cache.del(schemaObj.cacheKey);\n delete this._schemas[schemaKeyRef];\n delete this._refs[schemaKeyRef];\n return this;\n\n case 'object':\n var serialize = this._opts.serialize;\n var cacheKey = serialize ? serialize(schemaKeyRef) : schemaKeyRef;\n\n this._cache.del(cacheKey);\n\n var id = this._getId(schemaKeyRef);\n\n if (id) {\n id = resolve.normalizeId(id);\n delete this._schemas[id];\n delete this._refs[id];\n }\n\n }\n\n return this;\n}\n\nfunction _removeAllSchemas(self, schemas, regex) {\n for (var keyRef in schemas) {\n var schemaObj = schemas[keyRef];\n\n if (!schemaObj.meta && (!regex || regex.test(keyRef))) {\n self._cache.del(schemaObj.cacheKey);\n\n delete schemas[keyRef];\n }\n }\n}\n/* @this Ajv */\n\n\nfunction _addSchema(schema, skipValidation, meta, shouldAddSchema) {\n if (typeof schema != 'object' && typeof schema != 'boolean') throw new Error('schema should be object or boolean');\n var serialize = this._opts.serialize;\n var cacheKey = serialize ? serialize(schema) : schema;\n\n var cached = this._cache.get(cacheKey);\n\n if (cached) return cached;\n shouldAddSchema = shouldAddSchema || this._opts.addUsedSchema !== false;\n var id = resolve.normalizeId(this._getId(schema));\n if (id && shouldAddSchema) checkUnique(this, id);\n var willValidate = this._opts.validateSchema !== false && !skipValidation;\n var recursiveMeta;\n if (willValidate && !(recursiveMeta = id && id == resolve.normalizeId(schema.$schema))) this.validateSchema(schema, true);\n var localRefs = resolve.ids.call(this, schema);\n var schemaObj = new SchemaObject({\n id: id,\n schema: schema,\n localRefs: localRefs,\n cacheKey: cacheKey,\n meta: meta\n });\n if (id[0] != '#' && shouldAddSchema) this._refs[id] = schemaObj;\n\n this._cache.put(cacheKey, schemaObj);\n\n if (willValidate && recursiveMeta) this.validateSchema(schema, true);\n return schemaObj;\n}\n/* @this Ajv */\n\n\nfunction _compile(schemaObj, root) {\n if (schemaObj.compiling) {\n schemaObj.validate = callValidate;\n callValidate.schema = schemaObj.schema;\n callValidate.errors = null;\n callValidate.root = root ? root : callValidate;\n if (schemaObj.schema.$async === true) callValidate.$async = true;\n return callValidate;\n }\n\n schemaObj.compiling = true;\n var currentOpts;\n\n if (schemaObj.meta) {\n currentOpts = this._opts;\n this._opts = this._metaOpts;\n }\n\n var v;\n\n try {\n v = compileSchema.call(this, schemaObj.schema, root, schemaObj.localRefs);\n } catch (e) {\n delete schemaObj.validate;\n throw e;\n } finally {\n schemaObj.compiling = false;\n if (schemaObj.meta) this._opts = currentOpts;\n }\n\n schemaObj.validate = v;\n schemaObj.refs = v.refs;\n schemaObj.refVal = v.refVal;\n schemaObj.root = v.root;\n return v;\n /* @this {*} - custom context, see passContext option */\n\n function callValidate() {\n /* jshint validthis: true */\n var _validate = schemaObj.validate;\n\n var result = _validate.apply(this, arguments);\n\n callValidate.errors = _validate.errors;\n return result;\n }\n}\n\nfunction chooseGetId(opts) {\n switch (opts.schemaId) {\n case 'auto':\n return _get$IdOrId;\n\n case 'id':\n return _getId;\n\n default:\n return _get$Id;\n }\n}\n/* @this Ajv */\n\n\nfunction _getId(schema) {\n if (schema.$id) this.logger.warn('schema $id ignored', schema.$id);\n return schema.id;\n}\n/* @this Ajv */\n\n\nfunction _get$Id(schema) {\n if (schema.id) this.logger.warn('schema id ignored', schema.id);\n return schema.$id;\n}\n\nfunction _get$IdOrId(schema) {\n if (schema.$id && schema.id && schema.$id != schema.id) throw new Error('schema $id is different from id');\n return schema.$id || schema.id;\n}\n/**\n * Convert array of error message objects to string\n * @this Ajv\n * @param {Array<Object>} errors optional array of validation errors, if not passed errors from the instance are used.\n * @param {Object} options optional options with properties `separator` and `dataVar`.\n * @return {String} human readable string with all errors descriptions\n */\n\n\nfunction errorsText(errors, options) {\n errors = errors || this.errors;\n if (!errors) return 'No errors';\n options = options || {};\n var separator = options.separator === undefined ? ', ' : options.separator;\n var dataVar = options.dataVar === undefined ? 'data' : options.dataVar;\n var text = '';\n\n for (var i = 0; i < errors.length; i++) {\n var e = errors[i];\n if (e) text += dataVar + e.dataPath + ' ' + e.message + separator;\n }\n\n return text.slice(0, -separator.length);\n}\n/**\n * Add custom format\n * @this Ajv\n * @param {String} name format name\n * @param {String|RegExp|Function} format string is converted to RegExp; function should return boolean (true when valid)\n * @return {Ajv} this for method chaining\n */\n\n\nfunction addFormat(name, format) {\n if (typeof format == 'string') format = new RegExp(format);\n this._formats[name] = format;\n return this;\n}\n\nfunction addDefaultMetaSchema(self) {\n var $dataSchema;\n\n if (self._opts.$data) {\n $dataSchema = require('./refs/data.json');\n self.addMetaSchema($dataSchema, $dataSchema.$id, true);\n }\n\n if (self._opts.meta === false) return;\n\n var metaSchema = require('./refs/json-schema-draft-07.json');\n\n if (self._opts.$data) metaSchema = $dataMetaSchema(metaSchema, META_SUPPORT_DATA);\n self.addMetaSchema(metaSchema, META_SCHEMA_ID, true);\n self._refs['http://json-schema.org/schema'] = META_SCHEMA_ID;\n}\n\nfunction addInitialSchemas(self) {\n var optsSchemas = self._opts.schemas;\n if (!optsSchemas) return;\n if (Array.isArray(optsSchemas)) self.addSchema(optsSchemas);else for (var key in optsSchemas) self.addSchema(optsSchemas[key], key);\n}\n\nfunction addInitialFormats(self) {\n for (var name in self._opts.formats) {\n var format = self._opts.formats[name];\n self.addFormat(name, format);\n }\n}\n\nfunction addInitialKeywords(self) {\n for (var name in self._opts.keywords) {\n var keyword = self._opts.keywords[name];\n self.addKeyword(name, keyword);\n }\n}\n\nfunction checkUnique(self, id) {\n if (self._schemas[id] || self._refs[id]) throw new Error('schema with key or id \"' + id + '\" already exists');\n}\n\nfunction getMetaSchemaOptions(self) {\n var metaOpts = util.copy(self._opts);\n\n for (var i = 0; i < META_IGNORE_OPTIONS.length; i++) delete metaOpts[META_IGNORE_OPTIONS[i]];\n\n return metaOpts;\n}\n\nfunction setLogger(self) {\n var logger = self._opts.logger;\n\n if (logger === false) {\n self.logger = {\n log: noop,\n warn: noop,\n error: noop\n };\n } else {\n if (logger === undefined) logger = console;\n if (!(typeof logger == 'object' && logger.log && logger.warn && logger.error)) throw new Error('logger must implement log, warn and error methods');\n self.logger = logger;\n }\n}\n\nfunction noop() {}","map":{"version":3,"sources":["/Users/tylerkoenig/Code/personal/react-scss2/node_modules/ajv/lib/ajv.js"],"names":["compileSchema","require","resolve","Cache","SchemaObject","stableStringify","formats","rules","$dataMetaSchema","util","module","exports","Ajv","prototype","validate","compile","addSchema","addMetaSchema","validateSchema","getSchema","removeSchema","addFormat","errorsText","_addSchema","_compile","compileAsync","customKeyword","addKeyword","add","getKeyword","get","removeKeyword","remove","validateKeyword","errorClasses","ValidationError","Validation","MissingRefError","MissingRef","META_SCHEMA_ID","META_IGNORE_OPTIONS","META_SUPPORT_DATA","opts","_opts","copy","setLogger","_schemas","_refs","_fragments","_formats","format","_cache","cache","_loadingSchemas","_compilations","RULES","_getId","chooseGetId","loopRequired","Infinity","errorDataPath","_errorDataPathProperty","serialize","undefined","_metaOpts","getMetaSchemaOptions","addInitialFormats","keywords","addInitialKeywords","addDefaultMetaSchema","meta","nullable","metaSchema","type","addInitialSchemas","schemaKeyRef","data","v","Error","schemaObj","valid","$async","errors","schema","_meta","key","_skipValidation","Array","isArray","i","length","id","normalizeId","checkUnique","skipValidation","throwOrLogError","$schema","defaultMeta","logger","warn","message","error","self","keyRef","_getSchemaObj","_getSchemaFragment","ref","res","call","root","baseId","fragment","RegExp","_removeAllSchemas","clear","del","cacheKey","schemas","regex","test","shouldAddSchema","cached","addUsedSchema","willValidate","recursiveMeta","localRefs","ids","put","compiling","callValidate","currentOpts","e","refs","refVal","_validate","result","apply","arguments","schemaId","_get$IdOrId","_get$Id","$id","options","separator","dataVar","text","dataPath","slice","name","$dataSchema","$data","optsSchemas","keyword","metaOpts","log","noop","console"],"mappings":"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","sourcesContent":["'use strict';\n\nvar compileSchema = require('./compile')\n , resolve = require('./compile/resolve')\n , Cache = require('./cache')\n , SchemaObject = require('./compile/schema_obj')\n , stableStringify = require('fast-json-stable-stringify')\n , formats = require('./compile/formats')\n , rules = require('./compile/rules')\n , $dataMetaSchema = require('./data')\n , util = require('./compile/util');\n\nmodule.exports = Ajv;\n\nAjv.prototype.validate = validate;\nAjv.prototype.compile = compile;\nAjv.prototype.addSchema = addSchema;\nAjv.prototype.addMetaSchema = addMetaSchema;\nAjv.prototype.validateSchema = validateSchema;\nAjv.prototype.getSchema = getSchema;\nAjv.prototype.removeSchema = removeSchema;\nAjv.prototype.addFormat = addFormat;\nAjv.prototype.errorsText = errorsText;\n\nAjv.prototype._addSchema = _addSchema;\nAjv.prototype._compile = _compile;\n\nAjv.prototype.compileAsync = require('./compile/async');\nvar customKeyword = require('./keyword');\nAjv.prototype.addKeyword = customKeyword.add;\nAjv.prototype.getKeyword = customKeyword.get;\nAjv.prototype.removeKeyword = customKeyword.remove;\nAjv.prototype.validateKeyword = customKeyword.validate;\n\nvar errorClasses = require('./compile/error_classes');\nAjv.ValidationError = errorClasses.Validation;\nAjv.MissingRefError = errorClasses.MissingRef;\nAjv.$dataMetaSchema = $dataMetaSchema;\n\nvar META_SCHEMA_ID = 'http://json-schema.org/draft-07/schema';\n\nvar META_IGNORE_OPTIONS = [ 'removeAdditional', 'useDefaults', 'coerceTypes', 'strictDefaults' ];\nvar META_SUPPORT_DATA = ['/properties'];\n\n/**\n * Creates validator instance.\n * Usage: `Ajv(opts)`\n * @param {Object} opts optional options\n * @return {Object} ajv instance\n */\nfunction Ajv(opts) {\n if (!(this instanceof Ajv)) return new Ajv(opts);\n opts = this._opts = util.copy(opts) || {};\n setLogger(this);\n this._schemas = {};\n this._refs = {};\n this._fragments = {};\n this._formats = formats(opts.format);\n\n this._cache = opts.cache || new Cache;\n this._loadingSchemas = {};\n this._compilations = [];\n this.RULES = rules();\n this._getId = chooseGetId(opts);\n\n opts.loopRequired = opts.loopRequired || Infinity;\n if (opts.errorDataPath == 'property') opts._errorDataPathProperty = true;\n if (opts.serialize === undefined) opts.serialize = stableStringify;\n this._metaOpts = getMetaSchemaOptions(this);\n\n if (opts.formats) addInitialFormats(this);\n if (opts.keywords) addInitialKeywords(this);\n addDefaultMetaSchema(this);\n if (typeof opts.meta == 'object') this.addMetaSchema(opts.meta);\n if (opts.nullable) this.addKeyword('nullable', {metaSchema: {type: 'boolean'}});\n addInitialSchemas(this);\n}\n\n\n\n/**\n * Validate data using schema\n * Schema will be compiled and cached (using serialized JSON as key. [fast-json-stable-stringify](https://github.com/epoberezkin/fast-json-stable-stringify) is used to serialize.\n * @this Ajv\n * @param {String|Object} schemaKeyRef key, ref or schema object\n * @param {Any} data to be validated\n * @return {Boolean} validation result. Errors from the last validation will be available in `ajv.errors` (and also in compiled schema: `schema.errors`).\n */\nfunction validate(schemaKeyRef, data) {\n var v;\n if (typeof schemaKeyRef == 'string') {\n v = this.getSchema(schemaKeyRef);\n if (!v) throw new Error('no schema with key or ref \"' + schemaKeyRef + '\"');\n } else {\n var schemaObj = this._addSchema(schemaKeyRef);\n v = schemaObj.validate || this._compile(schemaObj);\n }\n\n var valid = v(data);\n if (v.$async !== true) this.errors = v.errors;\n return valid;\n}\n\n\n/**\n * Create validating function for passed schema.\n * @this Ajv\n * @param {Object} schema schema object\n * @param {Boolean} _meta true if schema is a meta-schema. Used internally to compile meta schemas of custom keywords.\n * @return {Function} validating function\n */\nfunction compile(schema, _meta) {\n var schemaObj = this._addSchema(schema, undefined, _meta);\n return schemaObj.validate || this._compile(schemaObj);\n}\n\n\n/**\n * Adds schema to the instance.\n * @this Ajv\n * @param {Object|Array} schema schema or array of schemas. If array is passed, `key` and other parameters will be ignored.\n * @param {String} key Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.\n * @param {Boolean} _skipValidation true to skip schema validation. Used internally, option validateSchema should be used instead.\n * @param {Boolean} _meta true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.\n * @return {Ajv} this for method chaining\n */\nfunction addSchema(schema, key, _skipValidation, _meta) {\n if (Array.isArray(schema)){\n for (var i=0; i<schema.length; i++) this.addSchema(schema[i], undefined, _skipValidation, _meta);\n return this;\n }\n var id = this._getId(schema);\n if (id !== undefined && typeof id != 'string')\n throw new Error('schema id must be string');\n key = resolve.normalizeId(key || id);\n checkUnique(this, key);\n this._schemas[key] = this._addSchema(schema, _skipValidation, _meta, true);\n return this;\n}\n\n\n/**\n * Add schema that will be used to validate other schemas\n * options in META_IGNORE_OPTIONS are alway set to false\n * @this Ajv\n * @param {Object} schema schema object\n * @param {String} key optional schema key\n * @param {Boolean} skipValidation true to skip schema validation, can be used to override validateSchema option for meta-schema\n * @return {Ajv} this for method chaining\n */\nfunction addMetaSchema(schema, key, skipValidation) {\n this.addSchema(schema, key, skipValidation, true);\n return this;\n}\n\n\n/**\n * Validate schema\n * @this Ajv\n * @param {Object} schema schema to validate\n * @param {Boolean} throwOrLogError pass true to throw (or log) an error if invalid\n * @return {Boolean} true if schema is valid\n */\nfunction validateSchema(schema, throwOrLogError) {\n var $schema = schema.$schema;\n if ($schema !== undefined && typeof $schema != 'string')\n throw new Error('$schema must be a string');\n $schema = $schema || this._opts.defaultMeta || defaultMeta(this);\n if (!$schema) {\n this.logger.warn('meta-schema not available');\n this.errors = null;\n return true;\n }\n var valid = this.validate($schema, schema);\n if (!valid && throwOrLogError) {\n var message = 'schema is invalid: ' + this.errorsText();\n if (this._opts.validateSchema == 'log') this.logger.error(message);\n else throw new Error(message);\n }\n return valid;\n}\n\n\nfunction defaultMeta(self) {\n var meta = self._opts.meta;\n self._opts.defaultMeta = typeof meta == 'object'\n ? self._getId(meta) || meta\n : self.getSchema(META_SCHEMA_ID)\n ? META_SCHEMA_ID\n : undefined;\n return self._opts.defaultMeta;\n}\n\n\n/**\n * Get compiled schema from the instance by `key` or `ref`.\n * @this Ajv\n * @param {String} keyRef `key` that was passed to `addSchema` or full schema reference (`schema.id` or resolved id).\n * @return {Function} schema validating function (with property `schema`).\n */\nfunction getSchema(keyRef) {\n var schemaObj = _getSchemaObj(this, keyRef);\n switch (typeof schemaObj) {\n case 'object': return schemaObj.validate || this._compile(schemaObj);\n case 'string': return this.getSchema(schemaObj);\n case 'undefined': return _getSchemaFragment(this, keyRef);\n }\n}\n\n\nfunction _getSchemaFragment(self, ref) {\n var res = resolve.schema.call(self, { schema: {} }, ref);\n if (res) {\n var schema = res.schema\n , root = res.root\n , baseId = res.baseId;\n var v = compileSchema.call(self, schema, root, undefined, baseId);\n self._fragments[ref] = new SchemaObject({\n ref: ref,\n fragment: true,\n schema: schema,\n root: root,\n baseId: baseId,\n validate: v\n });\n return v;\n }\n}\n\n\nfunction _getSchemaObj(self, keyRef) {\n keyRef = resolve.normalizeId(keyRef);\n return self._schemas[keyRef] || self._refs[keyRef] || self._fragments[keyRef];\n}\n\n\n/**\n * Remove cached schema(s).\n * If no parameter is passed all schemas but meta-schemas are removed.\n * If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed.\n * Even if schema is referenced by other schemas it still can be removed as other schemas have local references.\n * @this Ajv\n * @param {String|Object|RegExp} schemaKeyRef key, ref, pattern to match key/ref or schema object\n * @return {Ajv} this for method chaining\n */\nfunction removeSchema(schemaKeyRef) {\n if (schemaKeyRef instanceof RegExp) {\n _removeAllSchemas(this, this._schemas, schemaKeyRef);\n _removeAllSchemas(this, this._refs, schemaKeyRef);\n return this;\n }\n switch (typeof schemaKeyRef) {\n case 'undefined':\n _removeAllSchemas(this, this._schemas);\n _removeAllSchemas(this, this._refs);\n this._cache.clear();\n return this;\n case 'string':\n var schemaObj = _getSchemaObj(this, schemaKeyRef);\n if (schemaObj) this._cache.del(schemaObj.cacheKey);\n delete this._schemas[schemaKeyRef];\n delete this._refs[schemaKeyRef];\n return this;\n case 'object':\n var serialize = this._opts.serialize;\n var cacheKey = serialize ? serialize(schemaKeyRef) : schemaKeyRef;\n this._cache.del(cacheKey);\n var id = this._getId(schemaKeyRef);\n if (id) {\n id = resolve.normalizeId(id);\n delete this._schemas[id];\n delete this._refs[id];\n }\n }\n return this;\n}\n\n\nfunction _removeAllSchemas(self, schemas, regex) {\n for (var keyRef in schemas) {\n var schemaObj = schemas[keyRef];\n if (!schemaObj.meta && (!regex || regex.test(keyRef))) {\n self._cache.del(schemaObj.cacheKey);\n delete schemas[keyRef];\n }\n }\n}\n\n\n/* @this Ajv */\nfunction _addSchema(schema, skipValidation, meta, shouldAddSchema) {\n if (typeof schema != 'object' && typeof schema != 'boolean')\n throw new Error('schema should be object or boolean');\n var serialize = this._opts.serialize;\n var cacheKey = serialize ? serialize(schema) : schema;\n var cached = this._cache.get(cacheKey);\n if (cached) return cached;\n\n shouldAddSchema = shouldAddSchema || this._opts.addUsedSchema !== false;\n\n var id = resolve.normalizeId(this._getId(schema));\n if (id && shouldAddSchema) checkUnique(this, id);\n\n var willValidate = this._opts.validateSchema !== false && !skipValidation;\n var recursiveMeta;\n if (willValidate && !(recursiveMeta = id && id == resolve.normalizeId(schema.$schema)))\n this.validateSchema(schema, true);\n\n var localRefs = resolve.ids.call(this, schema);\n\n var schemaObj = new SchemaObject({\n id: id,\n schema: schema,\n localRefs: localRefs,\n cacheKey: cacheKey,\n meta: meta\n });\n\n if (id[0] != '#' && shouldAddSchema) this._refs[id] = schemaObj;\n this._cache.put(cacheKey, schemaObj);\n\n if (willValidate && recursiveMeta) this.validateSchema(schema, true);\n\n return schemaObj;\n}\n\n\n/* @this Ajv */\nfunction _compile(schemaObj, root) {\n if (schemaObj.compiling) {\n schemaObj.validate = callValidate;\n callValidate.schema = schemaObj.schema;\n callValidate.errors = null;\n callValidate.root = root ? root : callValidate;\n if (schemaObj.schema.$async === true)\n callValidate.$async = true;\n return callValidate;\n }\n schemaObj.compiling = true;\n\n var currentOpts;\n if (schemaObj.meta) {\n currentOpts = this._opts;\n this._opts = this._metaOpts;\n }\n\n var v;\n try { v = compileSchema.call(this, schemaObj.schema, root, schemaObj.localRefs); }\n catch(e) {\n delete schemaObj.validate;\n throw e;\n }\n finally {\n schemaObj.compiling = false;\n if (schemaObj.meta) this._opts = currentOpts;\n }\n\n schemaObj.validate = v;\n schemaObj.refs = v.refs;\n schemaObj.refVal = v.refVal;\n schemaObj.root = v.root;\n return v;\n\n\n /* @this {*} - custom context, see passContext option */\n function callValidate() {\n /* jshint validthis: true */\n var _validate = schemaObj.validate;\n var result = _validate.apply(this, arguments);\n callValidate.errors = _validate.errors;\n return result;\n }\n}\n\n\nfunction chooseGetId(opts) {\n switch (opts.schemaId) {\n case 'auto': return _get$IdOrId;\n case 'id': return _getId;\n default: return _get$Id;\n }\n}\n\n/* @this Ajv */\nfunction _getId(schema) {\n if (schema.$id) this.logger.warn('schema $id ignored', schema.$id);\n return schema.id;\n}\n\n/* @this Ajv */\nfunction _get$Id(schema) {\n if (schema.id) this.logger.warn('schema id ignored', schema.id);\n return schema.$id;\n}\n\n\nfunction _get$IdOrId(schema) {\n if (schema.$id && schema.id && schema.$id != schema.id)\n throw new Error('schema $id is different from id');\n return schema.$id || schema.id;\n}\n\n\n/**\n * Convert array of error message objects to string\n * @this Ajv\n * @param {Array<Object>} errors optional array of validation errors, if not passed errors from the instance are used.\n * @param {Object} options optional options with properties `separator` and `dataVar`.\n * @return {String} human readable string with all errors descriptions\n */\nfunction errorsText(errors, options) {\n errors = errors || this.errors;\n if (!errors) return 'No errors';\n options = options || {};\n var separator = options.separator === undefined ? ', ' : options.separator;\n var dataVar = options.dataVar === undefined ? 'data' : options.dataVar;\n\n var text = '';\n for (var i=0; i<errors.length; i++) {\n var e = errors[i];\n if (e) text += dataVar + e.dataPath + ' ' + e.message + separator;\n }\n return text.slice(0, -separator.length);\n}\n\n\n/**\n * Add custom format\n * @this Ajv\n * @param {String} name format name\n * @param {String|RegExp|Function} format string is converted to RegExp; function should return boolean (true when valid)\n * @return {Ajv} this for method chaining\n */\nfunction addFormat(name, format) {\n if (typeof format == 'string') format = new RegExp(format);\n this._formats[name] = format;\n return this;\n}\n\n\nfunction addDefaultMetaSchema(self) {\n var $dataSchema;\n if (self._opts.$data) {\n $dataSchema = require('./refs/data.json');\n self.addMetaSchema($dataSchema, $dataSchema.$id, true);\n }\n if (self._opts.meta === false) return;\n var metaSchema = require('./refs/json-schema-draft-07.json');\n if (self._opts.$data) metaSchema = $dataMetaSchema(metaSchema, META_SUPPORT_DATA);\n self.addMetaSchema(metaSchema, META_SCHEMA_ID, true);\n self._refs['http://json-schema.org/schema'] = META_SCHEMA_ID;\n}\n\n\nfunction addInitialSchemas(self) {\n var optsSchemas = self._opts.schemas;\n if (!optsSchemas) return;\n if (Array.isArray(optsSchemas)) self.addSchema(optsSchemas);\n else for (var key in optsSchemas) self.addSchema(optsSchemas[key], key);\n}\n\n\nfunction addInitialFormats(self) {\n for (var name in self._opts.formats) {\n var format = self._opts.formats[name];\n self.addFormat(name, format);\n }\n}\n\n\nfunction addInitialKeywords(self) {\n for (var name in self._opts.keywords) {\n var keyword = self._opts.keywords[name];\n self.addKeyword(name, keyword);\n }\n}\n\n\nfunction checkUnique(self, id) {\n if (self._schemas[id] || self._refs[id])\n throw new Error('schema with key or id \"' + id + '\" already exists');\n}\n\n\nfunction getMetaSchemaOptions(self) {\n var metaOpts = util.copy(self._opts);\n for (var i=0; i<META_IGNORE_OPTIONS.length; i++)\n delete metaOpts[META_IGNORE_OPTIONS[i]];\n return metaOpts;\n}\n\n\nfunction setLogger(self) {\n var logger = self._opts.logger;\n if (logger === false) {\n self.logger = {log: noop, warn: noop, error: noop};\n } else {\n if (logger === undefined) logger = console;\n if (!(typeof logger == 'object' && logger.log && logger.warn && logger.error))\n throw new Error('logger must implement log, warn and error methods');\n self.logger = logger;\n }\n}\n\n\nfunction noop() {}\n"]},"metadata":{},"sourceType":"script"} |