@alexlit/lint-kit 117.3.1 → 117.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/package.json +1 -1
  2. package/packages/config-eslint/package.json +7 -11
  3. package/packages/config-eslint/plugins/no-await-in-promise.js +1 -1
  4. package/packages/config-eslint/utils/create-config.js +3 -3
  5. package/packages/config-hooks/package.json +2 -2
  6. package/scripts/.config.sh +1 -1
  7. package/packages/config-eslint/node_modules/@eslint/eslintrc/LICENSE +0 -19
  8. package/packages/config-eslint/node_modules/@eslint/eslintrc/README.md +0 -126
  9. package/packages/config-eslint/node_modules/@eslint/eslintrc/conf/config-schema.js +0 -79
  10. package/packages/config-eslint/node_modules/@eslint/eslintrc/conf/environments.js +0 -215
  11. package/packages/config-eslint/node_modules/@eslint/eslintrc/dist/eslintrc-universal.cjs +0 -1143
  12. package/packages/config-eslint/node_modules/@eslint/eslintrc/dist/eslintrc-universal.cjs.map +0 -1
  13. package/packages/config-eslint/node_modules/@eslint/eslintrc/dist/eslintrc.cjs +0 -4371
  14. package/packages/config-eslint/node_modules/@eslint/eslintrc/dist/eslintrc.cjs.map +0 -1
  15. package/packages/config-eslint/node_modules/@eslint/eslintrc/lib/cascading-config-array-factory.js +0 -532
  16. package/packages/config-eslint/node_modules/@eslint/eslintrc/lib/config-array/config-array.js +0 -510
  17. package/packages/config-eslint/node_modules/@eslint/eslintrc/lib/config-array/config-dependency.js +0 -124
  18. package/packages/config-eslint/node_modules/@eslint/eslintrc/lib/config-array/extracted-config.js +0 -145
  19. package/packages/config-eslint/node_modules/@eslint/eslintrc/lib/config-array/ignore-pattern.js +0 -238
  20. package/packages/config-eslint/node_modules/@eslint/eslintrc/lib/config-array/index.js +0 -19
  21. package/packages/config-eslint/node_modules/@eslint/eslintrc/lib/config-array/override-tester.js +0 -225
  22. package/packages/config-eslint/node_modules/@eslint/eslintrc/lib/config-array-factory.js +0 -1155
  23. package/packages/config-eslint/node_modules/@eslint/eslintrc/lib/flat-compat.js +0 -318
  24. package/packages/config-eslint/node_modules/@eslint/eslintrc/lib/index-universal.js +0 -29
  25. package/packages/config-eslint/node_modules/@eslint/eslintrc/lib/index.js +0 -58
  26. package/packages/config-eslint/node_modules/@eslint/eslintrc/lib/shared/ajv.js +0 -191
  27. package/packages/config-eslint/node_modules/@eslint/eslintrc/lib/shared/config-ops.js +0 -135
  28. package/packages/config-eslint/node_modules/@eslint/eslintrc/lib/shared/config-validator.js +0 -370
  29. package/packages/config-eslint/node_modules/@eslint/eslintrc/lib/shared/deprecation-warnings.js +0 -63
  30. package/packages/config-eslint/node_modules/@eslint/eslintrc/lib/shared/naming.js +0 -96
  31. package/packages/config-eslint/node_modules/@eslint/eslintrc/lib/shared/relative-module-resolver.js +0 -42
  32. package/packages/config-eslint/node_modules/@eslint/eslintrc/lib/shared/types.js +0 -149
  33. package/packages/config-eslint/node_modules/@eslint/eslintrc/package.json +0 -82
  34. package/packages/config-eslint/node_modules/@eslint/eslintrc/universal.js +0 -9
  35. package/packages/config-eslint/node_modules/ajv/.tonic_example.js +0 -20
  36. package/packages/config-eslint/node_modules/ajv/LICENSE +0 -22
  37. package/packages/config-eslint/node_modules/ajv/README.md +0 -1497
  38. package/packages/config-eslint/node_modules/ajv/dist/ajv.bundle.js +0 -7189
  39. package/packages/config-eslint/node_modules/ajv/dist/ajv.min.js +0 -3
  40. package/packages/config-eslint/node_modules/ajv/dist/ajv.min.js.map +0 -1
  41. package/packages/config-eslint/node_modules/ajv/lib/ajv.d.ts +0 -397
  42. package/packages/config-eslint/node_modules/ajv/lib/ajv.js +0 -506
  43. package/packages/config-eslint/node_modules/ajv/lib/cache.js +0 -26
  44. package/packages/config-eslint/node_modules/ajv/lib/compile/async.js +0 -90
  45. package/packages/config-eslint/node_modules/ajv/lib/compile/equal.js +0 -5
  46. package/packages/config-eslint/node_modules/ajv/lib/compile/error_classes.js +0 -34
  47. package/packages/config-eslint/node_modules/ajv/lib/compile/formats.js +0 -142
  48. package/packages/config-eslint/node_modules/ajv/lib/compile/index.js +0 -387
  49. package/packages/config-eslint/node_modules/ajv/lib/compile/resolve.js +0 -270
  50. package/packages/config-eslint/node_modules/ajv/lib/compile/rules.js +0 -66
  51. package/packages/config-eslint/node_modules/ajv/lib/compile/schema_obj.js +0 -9
  52. package/packages/config-eslint/node_modules/ajv/lib/compile/ucs2length.js +0 -20
  53. package/packages/config-eslint/node_modules/ajv/lib/compile/util.js +0 -239
  54. package/packages/config-eslint/node_modules/ajv/lib/data.js +0 -49
  55. package/packages/config-eslint/node_modules/ajv/lib/definition_schema.js +0 -37
  56. package/packages/config-eslint/node_modules/ajv/lib/dot/_limit.jst +0 -113
  57. package/packages/config-eslint/node_modules/ajv/lib/dot/_limitItems.jst +0 -12
  58. package/packages/config-eslint/node_modules/ajv/lib/dot/_limitLength.jst +0 -12
  59. package/packages/config-eslint/node_modules/ajv/lib/dot/_limitProperties.jst +0 -12
  60. package/packages/config-eslint/node_modules/ajv/lib/dot/allOf.jst +0 -32
  61. package/packages/config-eslint/node_modules/ajv/lib/dot/anyOf.jst +0 -46
  62. package/packages/config-eslint/node_modules/ajv/lib/dot/coerce.def +0 -51
  63. package/packages/config-eslint/node_modules/ajv/lib/dot/comment.jst +0 -9
  64. package/packages/config-eslint/node_modules/ajv/lib/dot/const.jst +0 -11
  65. package/packages/config-eslint/node_modules/ajv/lib/dot/contains.jst +0 -55
  66. package/packages/config-eslint/node_modules/ajv/lib/dot/custom.jst +0 -191
  67. package/packages/config-eslint/node_modules/ajv/lib/dot/defaults.def +0 -47
  68. package/packages/config-eslint/node_modules/ajv/lib/dot/definitions.def +0 -203
  69. package/packages/config-eslint/node_modules/ajv/lib/dot/dependencies.jst +0 -79
  70. package/packages/config-eslint/node_modules/ajv/lib/dot/enum.jst +0 -30
  71. package/packages/config-eslint/node_modules/ajv/lib/dot/errors.def +0 -194
  72. package/packages/config-eslint/node_modules/ajv/lib/dot/format.jst +0 -106
  73. package/packages/config-eslint/node_modules/ajv/lib/dot/if.jst +0 -73
  74. package/packages/config-eslint/node_modules/ajv/lib/dot/items.jst +0 -98
  75. package/packages/config-eslint/node_modules/ajv/lib/dot/missing.def +0 -39
  76. package/packages/config-eslint/node_modules/ajv/lib/dot/multipleOf.jst +0 -22
  77. package/packages/config-eslint/node_modules/ajv/lib/dot/not.jst +0 -43
  78. package/packages/config-eslint/node_modules/ajv/lib/dot/oneOf.jst +0 -54
  79. package/packages/config-eslint/node_modules/ajv/lib/dot/pattern.jst +0 -14
  80. package/packages/config-eslint/node_modules/ajv/lib/dot/properties.jst +0 -245
  81. package/packages/config-eslint/node_modules/ajv/lib/dot/propertyNames.jst +0 -52
  82. package/packages/config-eslint/node_modules/ajv/lib/dot/ref.jst +0 -85
  83. package/packages/config-eslint/node_modules/ajv/lib/dot/required.jst +0 -108
  84. package/packages/config-eslint/node_modules/ajv/lib/dot/uniqueItems.jst +0 -62
  85. package/packages/config-eslint/node_modules/ajv/lib/dot/validate.jst +0 -276
  86. package/packages/config-eslint/node_modules/ajv/lib/dotjs/README.md +0 -3
  87. package/packages/config-eslint/node_modules/ajv/lib/dotjs/_limit.js +0 -163
  88. package/packages/config-eslint/node_modules/ajv/lib/dotjs/_limitItems.js +0 -80
  89. package/packages/config-eslint/node_modules/ajv/lib/dotjs/_limitLength.js +0 -85
  90. package/packages/config-eslint/node_modules/ajv/lib/dotjs/_limitProperties.js +0 -80
  91. package/packages/config-eslint/node_modules/ajv/lib/dotjs/allOf.js +0 -42
  92. package/packages/config-eslint/node_modules/ajv/lib/dotjs/anyOf.js +0 -73
  93. package/packages/config-eslint/node_modules/ajv/lib/dotjs/comment.js +0 -14
  94. package/packages/config-eslint/node_modules/ajv/lib/dotjs/const.js +0 -56
  95. package/packages/config-eslint/node_modules/ajv/lib/dotjs/contains.js +0 -81
  96. package/packages/config-eslint/node_modules/ajv/lib/dotjs/custom.js +0 -228
  97. package/packages/config-eslint/node_modules/ajv/lib/dotjs/dependencies.js +0 -168
  98. package/packages/config-eslint/node_modules/ajv/lib/dotjs/enum.js +0 -66
  99. package/packages/config-eslint/node_modules/ajv/lib/dotjs/format.js +0 -150
  100. package/packages/config-eslint/node_modules/ajv/lib/dotjs/if.js +0 -103
  101. package/packages/config-eslint/node_modules/ajv/lib/dotjs/index.js +0 -33
  102. package/packages/config-eslint/node_modules/ajv/lib/dotjs/items.js +0 -140
  103. package/packages/config-eslint/node_modules/ajv/lib/dotjs/multipleOf.js +0 -80
  104. package/packages/config-eslint/node_modules/ajv/lib/dotjs/not.js +0 -84
  105. package/packages/config-eslint/node_modules/ajv/lib/dotjs/oneOf.js +0 -73
  106. package/packages/config-eslint/node_modules/ajv/lib/dotjs/pattern.js +0 -75
  107. package/packages/config-eslint/node_modules/ajv/lib/dotjs/properties.js +0 -335
  108. package/packages/config-eslint/node_modules/ajv/lib/dotjs/propertyNames.js +0 -81
  109. package/packages/config-eslint/node_modules/ajv/lib/dotjs/ref.js +0 -124
  110. package/packages/config-eslint/node_modules/ajv/lib/dotjs/required.js +0 -270
  111. package/packages/config-eslint/node_modules/ajv/lib/dotjs/uniqueItems.js +0 -86
  112. package/packages/config-eslint/node_modules/ajv/lib/dotjs/validate.js +0 -482
  113. package/packages/config-eslint/node_modules/ajv/lib/keyword.js +0 -146
  114. package/packages/config-eslint/node_modules/ajv/lib/refs/data.json +0 -17
  115. package/packages/config-eslint/node_modules/ajv/lib/refs/json-schema-draft-04.json +0 -149
  116. package/packages/config-eslint/node_modules/ajv/lib/refs/json-schema-draft-06.json +0 -154
  117. package/packages/config-eslint/node_modules/ajv/lib/refs/json-schema-draft-07.json +0 -168
  118. package/packages/config-eslint/node_modules/ajv/lib/refs/json-schema-secure.json +0 -94
  119. package/packages/config-eslint/node_modules/ajv/package.json +0 -106
  120. package/packages/config-eslint/node_modules/ajv/scripts/.eslintrc.yml +0 -3
  121. package/packages/config-eslint/node_modules/ajv/scripts/bundle.js +0 -61
  122. package/packages/config-eslint/node_modules/ajv/scripts/compile-dots.js +0 -73
  123. package/packages/config-eslint/node_modules/ajv/scripts/info +0 -10
  124. package/packages/config-eslint/node_modules/ajv/scripts/prepare-tests +0 -12
  125. package/packages/config-eslint/node_modules/ajv/scripts/publish-built-version +0 -32
  126. package/packages/config-eslint/node_modules/ajv/scripts/travis-gh-pages +0 -23
  127. package/packages/config-eslint/node_modules/eslint-visitor-keys/LICENSE +0 -201
  128. package/packages/config-eslint/node_modules/eslint-visitor-keys/README.md +0 -105
  129. package/packages/config-eslint/node_modules/eslint-visitor-keys/dist/eslint-visitor-keys.cjs +0 -384
  130. package/packages/config-eslint/node_modules/eslint-visitor-keys/dist/eslint-visitor-keys.d.cts +0 -27
  131. package/packages/config-eslint/node_modules/eslint-visitor-keys/dist/index.d.ts +0 -16
  132. package/packages/config-eslint/node_modules/eslint-visitor-keys/dist/visitor-keys.d.ts +0 -12
  133. package/packages/config-eslint/node_modules/eslint-visitor-keys/lib/index.js +0 -65
  134. package/packages/config-eslint/node_modules/eslint-visitor-keys/lib/visitor-keys.js +0 -315
  135. package/packages/config-eslint/node_modules/eslint-visitor-keys/package.json +0 -74
  136. package/packages/config-eslint/node_modules/espree/LICENSE +0 -25
  137. package/packages/config-eslint/node_modules/espree/README.md +0 -244
  138. package/packages/config-eslint/node_modules/espree/dist/espree.cjs +0 -883
  139. package/packages/config-eslint/node_modules/espree/espree.js +0 -177
  140. package/packages/config-eslint/node_modules/espree/lib/espree.js +0 -349
  141. package/packages/config-eslint/node_modules/espree/lib/features.js +0 -27
  142. package/packages/config-eslint/node_modules/espree/lib/options.js +0 -123
  143. package/packages/config-eslint/node_modules/espree/lib/token-translator.js +0 -263
  144. package/packages/config-eslint/node_modules/espree/lib/version.js +0 -3
  145. package/packages/config-eslint/node_modules/espree/package.json +0 -86
  146. package/packages/config-eslint/node_modules/globals/globals.json +0 -1998
  147. package/packages/config-eslint/node_modules/globals/index.d.ts +0 -2077
  148. package/packages/config-eslint/node_modules/globals/index.js +0 -2
  149. package/packages/config-eslint/node_modules/globals/license +0 -9
  150. package/packages/config-eslint/node_modules/globals/package.json +0 -58
  151. package/packages/config-eslint/node_modules/globals/readme.md +0 -44
  152. package/packages/config-eslint/node_modules/json-schema-traverse/.eslintrc.yml +0 -27
  153. package/packages/config-eslint/node_modules/json-schema-traverse/.travis.yml +0 -8
  154. package/packages/config-eslint/node_modules/json-schema-traverse/LICENSE +0 -21
  155. package/packages/config-eslint/node_modules/json-schema-traverse/README.md +0 -83
  156. package/packages/config-eslint/node_modules/json-schema-traverse/index.js +0 -89
  157. package/packages/config-eslint/node_modules/json-schema-traverse/package.json +0 -43
  158. package/packages/config-eslint/node_modules/json-schema-traverse/spec/.eslintrc.yml +0 -6
  159. package/packages/config-eslint/node_modules/json-schema-traverse/spec/fixtures/schema.js +0 -125
  160. package/packages/config-eslint/node_modules/json-schema-traverse/spec/index.spec.js +0 -171
@@ -1,142 +0,0 @@
1
- 'use strict';
2
-
3
- var util = require('./util');
4
-
5
- var DATE = /^(\d\d\d\d)-(\d\d)-(\d\d)$/;
6
- var DAYS = [0,31,28,31,30,31,30,31,31,30,31,30,31];
7
- var TIME = /^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d(?::?\d\d)?)?$/i;
8
- var HOSTNAME = /^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i;
9
- 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;
10
- var URIREF = /^(?:[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;
11
- // uri-template: https://tools.ietf.org/html/rfc6570
12
- var URITEMPLATE = /^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i;
13
- // For the source: https://gist.github.com/dperini/729294
14
- // For test cases: https://mathiasbynens.be/demo/url-regex
15
- // @todo Delete current URL in favour of the commented out URL rule when this issue is fixed https://github.com/eslint/eslint/issues/7983.
16
- // 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;
17
- 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-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[a-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;
18
- var UUID = /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i;
19
- var JSON_POINTER = /^(?:\/(?:[^~/]|~0|~1)*)*$/;
20
- var JSON_POINTER_URI_FRAGMENT = /^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i;
21
- var RELATIVE_JSON_POINTER = /^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;
22
-
23
-
24
- module.exports = formats;
25
-
26
- function formats(mode) {
27
- mode = mode == 'full' ? 'full' : 'fast';
28
- return util.copy(formats[mode]);
29
- }
30
-
31
-
32
- formats.fast = {
33
- // date: http://tools.ietf.org/html/rfc3339#section-5.6
34
- date: /^\d\d\d\d-[0-1]\d-[0-3]\d$/,
35
- // date-time: http://tools.ietf.org/html/rfc3339#section-5.6
36
- time: /^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,
37
- '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,
38
- // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js
39
- uri: /^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i,
40
- 'uri-reference': /^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,
41
- 'uri-template': URITEMPLATE,
42
- url: URL,
43
- // email (sources from jsen validator):
44
- // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363
45
- // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'willful violation')
46
- email: /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,
47
- hostname: HOSTNAME,
48
- // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html
49
- ipv4: /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,
50
- // optimized http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses
51
- ipv6: /^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,
52
- regex: regex,
53
- // uuid: http://tools.ietf.org/html/rfc4122
54
- uuid: UUID,
55
- // JSON-pointer: https://tools.ietf.org/html/rfc6901
56
- // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A
57
- 'json-pointer': JSON_POINTER,
58
- 'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT,
59
- // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00
60
- 'relative-json-pointer': RELATIVE_JSON_POINTER
61
- };
62
-
63
-
64
- formats.full = {
65
- date: date,
66
- time: time,
67
- 'date-time': date_time,
68
- uri: uri,
69
- 'uri-reference': URIREF,
70
- 'uri-template': URITEMPLATE,
71
- url: URL,
72
- email: /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,
73
- hostname: HOSTNAME,
74
- ipv4: /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,
75
- ipv6: /^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,
76
- regex: regex,
77
- uuid: UUID,
78
- 'json-pointer': JSON_POINTER,
79
- 'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT,
80
- 'relative-json-pointer': RELATIVE_JSON_POINTER
81
- };
82
-
83
-
84
- function isLeapYear(year) {
85
- // https://tools.ietf.org/html/rfc3339#appendix-C
86
- return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);
87
- }
88
-
89
-
90
- function date(str) {
91
- // full-date from http://tools.ietf.org/html/rfc3339#section-5.6
92
- var matches = str.match(DATE);
93
- if (!matches) return false;
94
-
95
- var year = +matches[1];
96
- var month = +matches[2];
97
- var day = +matches[3];
98
-
99
- return month >= 1 && month <= 12 && day >= 1 &&
100
- day <= (month == 2 && isLeapYear(year) ? 29 : DAYS[month]);
101
- }
102
-
103
-
104
- function time(str, full) {
105
- var matches = str.match(TIME);
106
- if (!matches) return false;
107
-
108
- var hour = matches[1];
109
- var minute = matches[2];
110
- var second = matches[3];
111
- var timeZone = matches[5];
112
- return ((hour <= 23 && minute <= 59 && second <= 59) ||
113
- (hour == 23 && minute == 59 && second == 60)) &&
114
- (!full || timeZone);
115
- }
116
-
117
-
118
- var DATE_TIME_SEPARATOR = /t|\s/i;
119
- function date_time(str) {
120
- // http://tools.ietf.org/html/rfc3339#section-5.6
121
- var dateTime = str.split(DATE_TIME_SEPARATOR);
122
- return dateTime.length == 2 && date(dateTime[0]) && time(dateTime[1], true);
123
- }
124
-
125
-
126
- var NOT_URI_FRAGMENT = /\/|:/;
127
- function uri(str) {
128
- // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required "."
129
- return NOT_URI_FRAGMENT.test(str) && URI.test(str);
130
- }
131
-
132
-
133
- var Z_ANCHOR = /[^\\]\\Z/;
134
- function regex(str) {
135
- if (Z_ANCHOR.test(str)) return false;
136
- try {
137
- new RegExp(str);
138
- return true;
139
- } catch(e) {
140
- return false;
141
- }
142
- }
@@ -1,387 +0,0 @@
1
- 'use strict';
2
-
3
- var resolve = require('./resolve')
4
- , util = require('./util')
5
- , errorClasses = require('./error_classes')
6
- , stableStringify = require('fast-json-stable-stringify');
7
-
8
- var validateGenerator = require('../dotjs/validate');
9
-
10
- /**
11
- * Functions below are used inside compiled validations function
12
- */
13
-
14
- var ucs2length = util.ucs2length;
15
- var equal = require('fast-deep-equal');
16
-
17
- // this error is thrown by async schemas to return validation errors via exception
18
- var ValidationError = errorClasses.Validation;
19
-
20
- module.exports = compile;
21
-
22
-
23
- /**
24
- * Compiles schema to validation function
25
- * @this Ajv
26
- * @param {Object} schema schema object
27
- * @param {Object} root object with information about the root schema for this schema
28
- * @param {Object} localRefs the hash of local references inside the schema (created by resolve.id), used for inline resolution
29
- * @param {String} baseId base ID for IDs in the schema
30
- * @return {Function} validation function
31
- */
32
- function compile(schema, root, localRefs, baseId) {
33
- /* jshint validthis: true, evil: true */
34
- /* eslint no-shadow: 0 */
35
- var self = this
36
- , opts = this._opts
37
- , refVal = [ undefined ]
38
- , refs = {}
39
- , patterns = []
40
- , patternsHash = {}
41
- , defaults = []
42
- , defaultsHash = {}
43
- , customRules = [];
44
-
45
- root = root || { schema: schema, refVal: refVal, refs: refs };
46
-
47
- var c = checkCompiling.call(this, schema, root, baseId);
48
- var compilation = this._compilations[c.index];
49
- if (c.compiling) return (compilation.callValidate = callValidate);
50
-
51
- var formats = this._formats;
52
- var RULES = this.RULES;
53
-
54
- try {
55
- var v = localCompile(schema, root, localRefs, baseId);
56
- compilation.validate = v;
57
- var cv = compilation.callValidate;
58
- if (cv) {
59
- cv.schema = v.schema;
60
- cv.errors = null;
61
- cv.refs = v.refs;
62
- cv.refVal = v.refVal;
63
- cv.root = v.root;
64
- cv.$async = v.$async;
65
- if (opts.sourceCode) cv.source = v.source;
66
- }
67
- return v;
68
- } finally {
69
- endCompiling.call(this, schema, root, baseId);
70
- }
71
-
72
- /* @this {*} - custom context, see passContext option */
73
- function callValidate() {
74
- /* jshint validthis: true */
75
- var validate = compilation.validate;
76
- var result = validate.apply(this, arguments);
77
- callValidate.errors = validate.errors;
78
- return result;
79
- }
80
-
81
- function localCompile(_schema, _root, localRefs, baseId) {
82
- var isRoot = !_root || (_root && _root.schema == _schema);
83
- if (_root.schema != root.schema)
84
- return compile.call(self, _schema, _root, localRefs, baseId);
85
-
86
- var $async = _schema.$async === true;
87
-
88
- var sourceCode = validateGenerator({
89
- isTop: true,
90
- schema: _schema,
91
- isRoot: isRoot,
92
- baseId: baseId,
93
- root: _root,
94
- schemaPath: '',
95
- errSchemaPath: '#',
96
- errorPath: '""',
97
- MissingRefError: errorClasses.MissingRef,
98
- RULES: RULES,
99
- validate: validateGenerator,
100
- util: util,
101
- resolve: resolve,
102
- resolveRef: resolveRef,
103
- usePattern: usePattern,
104
- useDefault: useDefault,
105
- useCustomRule: useCustomRule,
106
- opts: opts,
107
- formats: formats,
108
- logger: self.logger,
109
- self: self
110
- });
111
-
112
- sourceCode = vars(refVal, refValCode) + vars(patterns, patternCode)
113
- + vars(defaults, defaultCode) + vars(customRules, customRuleCode)
114
- + sourceCode;
115
-
116
- if (opts.processCode) sourceCode = opts.processCode(sourceCode, _schema);
117
- // console.log('\n\n\n *** \n', JSON.stringify(sourceCode));
118
- var validate;
119
- try {
120
- var makeValidate = new Function(
121
- 'self',
122
- 'RULES',
123
- 'formats',
124
- 'root',
125
- 'refVal',
126
- 'defaults',
127
- 'customRules',
128
- 'equal',
129
- 'ucs2length',
130
- 'ValidationError',
131
- sourceCode
132
- );
133
-
134
- validate = makeValidate(
135
- self,
136
- RULES,
137
- formats,
138
- root,
139
- refVal,
140
- defaults,
141
- customRules,
142
- equal,
143
- ucs2length,
144
- ValidationError
145
- );
146
-
147
- refVal[0] = validate;
148
- } catch(e) {
149
- self.logger.error('Error compiling schema, function code:', sourceCode);
150
- throw e;
151
- }
152
-
153
- validate.schema = _schema;
154
- validate.errors = null;
155
- validate.refs = refs;
156
- validate.refVal = refVal;
157
- validate.root = isRoot ? validate : _root;
158
- if ($async) validate.$async = true;
159
- if (opts.sourceCode === true) {
160
- validate.source = {
161
- code: sourceCode,
162
- patterns: patterns,
163
- defaults: defaults
164
- };
165
- }
166
-
167
- return validate;
168
- }
169
-
170
- function resolveRef(baseId, ref, isRoot) {
171
- ref = resolve.url(baseId, ref);
172
- var refIndex = refs[ref];
173
- var _refVal, refCode;
174
- if (refIndex !== undefined) {
175
- _refVal = refVal[refIndex];
176
- refCode = 'refVal[' + refIndex + ']';
177
- return resolvedRef(_refVal, refCode);
178
- }
179
- if (!isRoot && root.refs) {
180
- var rootRefId = root.refs[ref];
181
- if (rootRefId !== undefined) {
182
- _refVal = root.refVal[rootRefId];
183
- refCode = addLocalRef(ref, _refVal);
184
- return resolvedRef(_refVal, refCode);
185
- }
186
- }
187
-
188
- refCode = addLocalRef(ref);
189
- var v = resolve.call(self, localCompile, root, ref);
190
- if (v === undefined) {
191
- var localSchema = localRefs && localRefs[ref];
192
- if (localSchema) {
193
- v = resolve.inlineRef(localSchema, opts.inlineRefs)
194
- ? localSchema
195
- : compile.call(self, localSchema, root, localRefs, baseId);
196
- }
197
- }
198
-
199
- if (v === undefined) {
200
- removeLocalRef(ref);
201
- } else {
202
- replaceLocalRef(ref, v);
203
- return resolvedRef(v, refCode);
204
- }
205
- }
206
-
207
- function addLocalRef(ref, v) {
208
- var refId = refVal.length;
209
- refVal[refId] = v;
210
- refs[ref] = refId;
211
- return 'refVal' + refId;
212
- }
213
-
214
- function removeLocalRef(ref) {
215
- delete refs[ref];
216
- }
217
-
218
- function replaceLocalRef(ref, v) {
219
- var refId = refs[ref];
220
- refVal[refId] = v;
221
- }
222
-
223
- function resolvedRef(refVal, code) {
224
- return typeof refVal == 'object' || typeof refVal == 'boolean'
225
- ? { code: code, schema: refVal, inline: true }
226
- : { code: code, $async: refVal && !!refVal.$async };
227
- }
228
-
229
- function usePattern(regexStr) {
230
- var index = patternsHash[regexStr];
231
- if (index === undefined) {
232
- index = patternsHash[regexStr] = patterns.length;
233
- patterns[index] = regexStr;
234
- }
235
- return 'pattern' + index;
236
- }
237
-
238
- function useDefault(value) {
239
- switch (typeof value) {
240
- case 'boolean':
241
- case 'number':
242
- return '' + value;
243
- case 'string':
244
- return util.toQuotedString(value);
245
- case 'object':
246
- if (value === null) return 'null';
247
- var valueStr = stableStringify(value);
248
- var index = defaultsHash[valueStr];
249
- if (index === undefined) {
250
- index = defaultsHash[valueStr] = defaults.length;
251
- defaults[index] = value;
252
- }
253
- return 'default' + index;
254
- }
255
- }
256
-
257
- function useCustomRule(rule, schema, parentSchema, it) {
258
- if (self._opts.validateSchema !== false) {
259
- var deps = rule.definition.dependencies;
260
- if (deps && !deps.every(function(keyword) {
261
- return Object.prototype.hasOwnProperty.call(parentSchema, keyword);
262
- }))
263
- throw new Error('parent schema must have all required keywords: ' + deps.join(','));
264
-
265
- var validateSchema = rule.definition.validateSchema;
266
- if (validateSchema) {
267
- var valid = validateSchema(schema);
268
- if (!valid) {
269
- var message = 'keyword schema is invalid: ' + self.errorsText(validateSchema.errors);
270
- if (self._opts.validateSchema == 'log') self.logger.error(message);
271
- else throw new Error(message);
272
- }
273
- }
274
- }
275
-
276
- var compile = rule.definition.compile
277
- , inline = rule.definition.inline
278
- , macro = rule.definition.macro;
279
-
280
- var validate;
281
- if (compile) {
282
- validate = compile.call(self, schema, parentSchema, it);
283
- } else if (macro) {
284
- validate = macro.call(self, schema, parentSchema, it);
285
- if (opts.validateSchema !== false) self.validateSchema(validate, true);
286
- } else if (inline) {
287
- validate = inline.call(self, it, rule.keyword, schema, parentSchema);
288
- } else {
289
- validate = rule.definition.validate;
290
- if (!validate) return;
291
- }
292
-
293
- if (validate === undefined)
294
- throw new Error('custom keyword "' + rule.keyword + '"failed to compile');
295
-
296
- var index = customRules.length;
297
- customRules[index] = validate;
298
-
299
- return {
300
- code: 'customRule' + index,
301
- validate: validate
302
- };
303
- }
304
- }
305
-
306
-
307
- /**
308
- * Checks if the schema is currently compiled
309
- * @this Ajv
310
- * @param {Object} schema schema to compile
311
- * @param {Object} root root object
312
- * @param {String} baseId base schema ID
313
- * @return {Object} object with properties "index" (compilation index) and "compiling" (boolean)
314
- */
315
- function checkCompiling(schema, root, baseId) {
316
- /* jshint validthis: true */
317
- var index = compIndex.call(this, schema, root, baseId);
318
- if (index >= 0) return { index: index, compiling: true };
319
- index = this._compilations.length;
320
- this._compilations[index] = {
321
- schema: schema,
322
- root: root,
323
- baseId: baseId
324
- };
325
- return { index: index, compiling: false };
326
- }
327
-
328
-
329
- /**
330
- * Removes the schema from the currently compiled list
331
- * @this Ajv
332
- * @param {Object} schema schema to compile
333
- * @param {Object} root root object
334
- * @param {String} baseId base schema ID
335
- */
336
- function endCompiling(schema, root, baseId) {
337
- /* jshint validthis: true */
338
- var i = compIndex.call(this, schema, root, baseId);
339
- if (i >= 0) this._compilations.splice(i, 1);
340
- }
341
-
342
-
343
- /**
344
- * Index of schema compilation in the currently compiled list
345
- * @this Ajv
346
- * @param {Object} schema schema to compile
347
- * @param {Object} root root object
348
- * @param {String} baseId base schema ID
349
- * @return {Integer} compilation index
350
- */
351
- function compIndex(schema, root, baseId) {
352
- /* jshint validthis: true */
353
- for (var i=0; i<this._compilations.length; i++) {
354
- var c = this._compilations[i];
355
- if (c.schema == schema && c.root == root && c.baseId == baseId) return i;
356
- }
357
- return -1;
358
- }
359
-
360
-
361
- function patternCode(i, patterns) {
362
- return 'var pattern' + i + ' = new RegExp(' + util.toQuotedString(patterns[i]) + ');';
363
- }
364
-
365
-
366
- function defaultCode(i) {
367
- return 'var default' + i + ' = defaults[' + i + '];';
368
- }
369
-
370
-
371
- function refValCode(i, refVal) {
372
- return refVal[i] === undefined ? '' : 'var refVal' + i + ' = refVal[' + i + '];';
373
- }
374
-
375
-
376
- function customRuleCode(i) {
377
- return 'var customRule' + i + ' = customRules[' + i + '];';
378
- }
379
-
380
-
381
- function vars(arr, statement) {
382
- if (!arr.length) return '';
383
- var code = '';
384
- for (var i=0; i<arr.length; i++)
385
- code += statement(i, arr);
386
- return code;
387
- }