diff options
Diffstat (limited to 'node_modules/ajv/lib/compile')
| -rw-r--r-- | node_modules/ajv/lib/compile/_rules.js | 31 | ||||
| -rw-r--r-- | node_modules/ajv/lib/compile/formats.js | 36 | ||||
| -rw-r--r-- | node_modules/ajv/lib/compile/index.js | 9 | ||||
| -rw-r--r-- | node_modules/ajv/lib/compile/resolve.js | 21 | ||||
| -rw-r--r-- | node_modules/ajv/lib/compile/rules.js | 20 | 
5 files changed, 53 insertions, 64 deletions
diff --git a/node_modules/ajv/lib/compile/_rules.js b/node_modules/ajv/lib/compile/_rules.js deleted file mode 100644 index 3fe69973a..000000000 --- a/node_modules/ajv/lib/compile/_rules.js +++ /dev/null @@ -1,31 +0,0 @@ -'use strict'; - -//all requires must be explicit because browserify won't work with dynamic requires -module.exports = { -  '$ref': require('../dotjs/ref'), -  allOf: require('../dotjs/allOf'), -  anyOf: require('../dotjs/anyOf'), -  const: require('../dotjs/const'), -  contains: require('../dotjs/contains'), -  dependencies: require('../dotjs/dependencies'), -  'enum': require('../dotjs/enum'), -  format: require('../dotjs/format'), -  items: require('../dotjs/items'), -  maximum: require('../dotjs/_limit'), -  minimum: require('../dotjs/_limit'), -  maxItems: require('../dotjs/_limitItems'), -  minItems: require('../dotjs/_limitItems'), -  maxLength: require('../dotjs/_limitLength'), -  minLength: require('../dotjs/_limitLength'), -  maxProperties: require('../dotjs/_limitProperties'), -  minProperties: require('../dotjs/_limitProperties'), -  multipleOf: require('../dotjs/multipleOf'), -  not: require('../dotjs/not'), -  oneOf: require('../dotjs/oneOf'), -  pattern: require('../dotjs/pattern'), -  properties: require('../dotjs/properties'), -  propertyNames: require('../dotjs/propertyNames'), -  required: require('../dotjs/required'), -  uniqueItems: require('../dotjs/uniqueItems'), -  validate: require('../dotjs/validate') -}; diff --git a/node_modules/ajv/lib/compile/formats.js b/node_modules/ajv/lib/compile/formats.js index b3a1541a6..97aca1a15 100644 --- a/node_modules/ajv/lib/compile/formats.js +++ b/node_modules/ajv/lib/compile/formats.js @@ -2,8 +2,8 @@  var util = require('./util'); -var DATE = /^\d\d\d\d-(\d\d)-(\d\d)$/; -var DAYS = [0,31,29,31,30,31,30,31,31,30,31,30,31]; +var DATE = /^(\d\d\d\d)-(\d\d)-(\d\d)$/; +var DAYS = [0,31,28,31,30,31,30,31,31,30,31,30,31];  var TIME = /^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d:\d\d)?$/i;  var HOSTNAME = /^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*$/i;  var URI = /^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i; @@ -16,7 +16,8 @@ var URITEMPLATE = /^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|  // var URL = /^(?:(?:https?|ftp):\/\/)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)(?:\.(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu;  var URL = /^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i;  var UUID = /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i; -var JSON_POINTER = /^(?:\/(?:[^~/]|~0|~1)*)*$|^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i; +var JSON_POINTER = /^(?:\/(?:[^~/]|~0|~1)*)*$/; +var JSON_POINTER_URI_FRAGMENT = /^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i;  var RELATIVE_JSON_POINTER = /^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/; @@ -32,11 +33,11 @@ formats.fast = {    // date: http://tools.ietf.org/html/rfc3339#section-5.6    date: /^\d\d\d\d-[0-1]\d-[0-3]\d$/,    // date-time: http://tools.ietf.org/html/rfc3339#section-5.6 -  time: /^[0-2]\d:[0-5]\d:[0-5]\d(?:\.\d+)?(?:z|[+-]\d\d:\d\d)?$/i, -  'date-time': /^\d\d\d\d-[0-1]\d-[0-3]\d[t\s][0-2]\d:[0-5]\d:[0-5]\d(?:\.\d+)?(?:z|[+-]\d\d:\d\d)$/i, +  time: /^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d:\d\d)?$/i, +  'date-time': /^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d:\d\d)$/i,    // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js -  uri: /^(?:[a-z][a-z0-9+-.]*)(?::|\/)\/?[^\s]*$/i, -  'uri-reference': /^(?:(?:[a-z][a-z0-9+-.]*:)?\/\/)?[^\s]*$/i, +  uri: /^(?:[a-z][a-z0-9+-.]*:)(?:\/?\/)?[^\s]*$/i, +  'uri-reference': /^(?:(?:[a-z][a-z0-9+-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,    'uri-template': URITEMPLATE,    url: URL,    // email (sources from jsen validator): @@ -54,6 +55,7 @@ formats.fast = {    // JSON-pointer: https://tools.ietf.org/html/rfc6901    // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A    'json-pointer': JSON_POINTER, +  'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT,    // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00    'relative-json-pointer': RELATIVE_JSON_POINTER  }; @@ -74,18 +76,28 @@ formats.full = {    regex: regex,    uuid: UUID,    'json-pointer': JSON_POINTER, +  'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT,    'relative-json-pointer': RELATIVE_JSON_POINTER  }; +function isLeapYear(year) { +  // https://tools.ietf.org/html/rfc3339#appendix-C +  return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0); +} + +  function date(str) {    // full-date from http://tools.ietf.org/html/rfc3339#section-5.6    var matches = str.match(DATE);    if (!matches) return false; -  var month = +matches[1]; -  var day = +matches[2]; -  return month >= 1 && month <= 12 && day >= 1 && day <= DAYS[month]; +  var year = +matches[1]; +  var month = +matches[2]; +  var day = +matches[3]; + +  return month >= 1 && month <= 12 && day >= 1 && +          day <= (month == 2 && isLeapYear(year) ? 29 : DAYS[month]);  } @@ -97,7 +109,9 @@ function time(str, full) {    var minute = matches[2];    var second = matches[3];    var timeZone = matches[5]; -  return hour <= 23 && minute <= 59 && second <= 59 && (!full || timeZone); +  return ((hour <= 23 && minute <= 59 && second <= 59) || +          (hour == 23 && minute == 59 && second == 60)) && +         (!full || timeZone);  } diff --git a/node_modules/ajv/lib/compile/index.js b/node_modules/ajv/lib/compile/index.js index cf4f5b86b..8e369db3d 100644 --- a/node_modules/ajv/lib/compile/index.js +++ b/node_modules/ajv/lib/compile/index.js @@ -11,7 +11,6 @@ var validateGenerator = require('../dotjs/validate');   * Functions below are used inside compiled validations function   */ -var co = require('co');  var ucs2length = util.ucs2length;  var equal = require('fast-deep-equal'); @@ -70,9 +69,11 @@ function compile(schema, root, localRefs, baseId) {      endCompiling.call(this, schema, root, baseId);    } +  /* @this   {*} - custom context, see passContext option */    function callValidate() { +    /* jshint validthis: true */      var validate = compilation.validate; -    var result = validate.apply(null, arguments); +    var result = validate.apply(this, arguments);      callValidate.errors = validate.errors;      return result;    } @@ -124,7 +125,6 @@ function compile(schema, root, localRefs, baseId) {          'refVal',          'defaults',          'customRules', -        'co',          'equal',          'ucs2length',          'ValidationError', @@ -139,7 +139,6 @@ function compile(schema, root, localRefs, baseId) {          refVal,          defaults,          customRules, -        co,          equal,          ucs2length,          ValidationError @@ -224,7 +223,7 @@ function compile(schema, root, localRefs, baseId) {    function resolvedRef(refVal, code) {      return typeof refVal == 'object' || typeof refVal == 'boolean'              ? { code: code, schema: refVal, inline: true } -            : { code: code, $async: refVal && refVal.$async }; +            : { code: code, $async: refVal && !!refVal.$async };    }    function usePattern(regexStr) { diff --git a/node_modules/ajv/lib/compile/resolve.js b/node_modules/ajv/lib/compile/resolve.js index 7d06afab8..66f2aee9b 100644 --- a/node_modules/ajv/lib/compile/resolve.js +++ b/node_modules/ajv/lib/compile/resolve.js @@ -1,6 +1,6 @@  'use strict'; -var url = require('url') +var URI = require('uri-js')    , equal = require('fast-deep-equal')    , util = require('./util')    , SchemaObject = require('./schema_obj') @@ -67,10 +67,10 @@ function resolve(compile, root, ref) {   */  function resolveSchema(root, ref) {    /* jshint validthis: true */ -  var p = url.parse(ref, false, true) +  var p = URI.parse(ref)      , refPath = _getFullPath(p)      , baseId = getFullPath(this._getId(root.schema)); -  if (refPath !== baseId) { +  if (Object.keys(root.schema).length === 0 || refPath !== baseId) {      var id = normalizeId(refPath);      var refVal = this._refs[id];      if (typeof refVal == 'string') { @@ -115,9 +115,9 @@ var PREVENT_SCOPE_CHANGE = util.toHash(['properties', 'patternProperties', 'enum  /* @this Ajv */  function getJsonPointer(parsedRef, baseId, schema, root) {    /* jshint validthis: true */ -  parsedRef.hash = parsedRef.hash || ''; -  if (parsedRef.hash.slice(0,2) != '#/') return; -  var parts = parsedRef.hash.split('/'); +  parsedRef.fragment = parsedRef.fragment || ''; +  if (parsedRef.fragment.slice(0,1) != '/') return; +  var parts = parsedRef.fragment.split('/');    for (var i = 1; i < parts.length; i++) {      var part = parts[i]; @@ -206,14 +206,13 @@ function countKeys(schema) {  function getFullPath(id, normalize) {    if (normalize !== false) id = normalizeId(id); -  var p = url.parse(id, false, true); +  var p = URI.parse(id);    return _getFullPath(p);  }  function _getFullPath(p) { -  var protocolSeparator = p.protocol || p.href.slice(0,2) == '//' ? '//' : ''; -  return (p.protocol||'') + protocolSeparator + (p.host||'') + (p.path||'')  + '#'; +  return URI.serialize(p).split('#')[0] + '#';  } @@ -225,7 +224,7 @@ function normalizeId(id) {  function resolveUrl(baseId, id) {    id = normalizeId(id); -  return url.resolve(baseId, id); +  return URI.resolve(baseId, id);  } @@ -246,7 +245,7 @@ function resolveIds(schema) {        fullPath += '/' + (typeof keyIndex == 'number' ? keyIndex : util.escapeFragment(keyIndex));      if (typeof id == 'string') { -      id = baseId = normalizeId(baseId ? url.resolve(baseId, id) : id); +      id = baseId = normalizeId(baseId ? URI.resolve(baseId, id) : id);        var refVal = self._refs[id];        if (typeof refVal == 'string') refVal = self._refs[refVal]; diff --git a/node_modules/ajv/lib/compile/rules.js b/node_modules/ajv/lib/compile/rules.js index 44830ad72..66f196a93 100644 --- a/node_modules/ajv/lib/compile/rules.js +++ b/node_modules/ajv/lib/compile/rules.js @@ -1,6 +1,6 @@  'use strict'; -var ruleModules = require('./_rules') +var ruleModules = require('../dotjs')    , toHash = require('./util').toHash;  module.exports = function rules() { @@ -11,17 +11,20 @@ module.exports = function rules() {      { type: 'string',        rules: [ 'maxLength', 'minLength', 'pattern', 'format' ] },      { type: 'array', -      rules: [ 'maxItems', 'minItems', 'uniqueItems', 'contains', 'items' ] }, +      rules: [ 'maxItems', 'minItems', 'items', 'contains', 'uniqueItems' ] },      { type: 'object',        rules: [ 'maxProperties', 'minProperties', 'required', 'dependencies', 'propertyNames',                 { 'properties': ['additionalProperties', 'patternProperties'] } ] }, -    { rules: [ '$ref', 'const', 'enum', 'not', 'anyOf', 'oneOf', 'allOf' ] } +    { rules: [ '$ref', 'const', 'enum', 'not', 'anyOf', 'oneOf', 'allOf', 'if' ] }    ]; -  var ALL = [ 'type' ]; +  var ALL = [ 'type', '$comment' ];    var KEYWORDS = [ -    'additionalItems', '$schema', '$id', 'id', 'title', -    'description', 'default', 'definitions' +    '$schema', '$id', 'id', '$data', 'title', +    'description', 'default', 'definitions', +    'examples', 'readOnly', 'writeOnly', +    'contentMediaType', 'contentEncoding', +    'additionalItems', 'then', 'else'    ];    var TYPES = [ 'number', 'integer', 'string', 'array', 'object', 'boolean', 'null' ];    RULES.all = toHash(ALL); @@ -48,6 +51,11 @@ module.exports = function rules() {        return rule;      }); +    RULES.all.$comment = { +      keyword: '$comment', +      code: ruleModules.$comment +    }; +      if (group.type) RULES.types[group.type] = group;    });  | 
