@nikovirtala/projen-constructs 0.2.0 → 0.2.2

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 (631) hide show
  1. package/.jsii +1406 -66
  2. package/docs/api/.nojekyll +1 -0
  3. package/docs/api/assets/hierarchy.js +1 -0
  4. package/docs/api/assets/highlight.css +99 -0
  5. package/docs/api/assets/icons.js +18 -0
  6. package/docs/api/assets/icons.svg +1 -0
  7. package/docs/api/assets/main.js +60 -0
  8. package/docs/api/assets/navigation.js +1 -0
  9. package/docs/api/assets/search.js +1 -0
  10. package/docs/api/assets/style.css +1633 -0
  11. package/docs/api/classes/AwsCdkConstructLibraryProject.html +308 -0
  12. package/docs/api/classes/AwsCdkTypeScriptAppProject.html +306 -0
  13. package/docs/api/classes/JsiiProject.html +294 -0
  14. package/docs/api/classes/ProjectGenerator.html +38 -0
  15. package/docs/api/classes/TypeDoc.html +37 -0
  16. package/docs/api/classes/TypeScriptProject.html +294 -0
  17. package/docs/api/classes/Vitest.html +38 -0
  18. package/docs/api/enums/CommentStyle.html +11 -0
  19. package/docs/api/enums/CoverageProvider.html +7 -0
  20. package/docs/api/enums/CoverageReporter.html +11 -0
  21. package/docs/api/enums/EntryPointStrategy.html +11 -0
  22. package/docs/api/enums/Environment.html +12 -0
  23. package/docs/api/enums/LogLevel.html +13 -0
  24. package/docs/api/enums/Pool.html +17 -0
  25. package/docs/api/enums/ProjectType.html +47 -0
  26. package/docs/api/enums/Visibility.html +9 -0
  27. package/docs/api/functions/applyDefaults.html +1 -0
  28. package/docs/api/functions/toJson_TypeDocConfiguration.html +2 -0
  29. package/docs/api/hierarchy.html +1 -0
  30. package/docs/api/index.html +86 -0
  31. package/docs/api/interfaces/AwsCdkConstructLibraryProjectOptions.html +1075 -0
  32. package/docs/api/interfaces/AwsCdkTypeScriptAppProjectOptions.html +1026 -0
  33. package/docs/api/interfaces/Component.html +13 -0
  34. package/docs/api/interfaces/ComponentOptions.html +8 -0
  35. package/docs/api/interfaces/JsiiProjectOptions.html +1003 -0
  36. package/docs/api/interfaces/ProjectGeneratorOptions.html +49 -0
  37. package/docs/api/interfaces/TypeDocConfiguration.html +141 -0
  38. package/docs/api/interfaces/TypeDocOptions.html +9 -0
  39. package/docs/api/interfaces/TypeScriptProjectOptions.html +899 -0
  40. package/docs/api/interfaces/ValidationOptions.html +9 -0
  41. package/docs/api/interfaces/VitestConfigOptions.html +111 -0
  42. package/docs/api/interfaces/VitestOptions.html +13 -0
  43. package/docs/api/modules.html +1 -0
  44. package/docs/api/variables/defaultOptions.html +1 -0
  45. package/docs/api/variables/defaults.html +1 -0
  46. package/docs/api/variables/projectDefaultOptions.html +1 -0
  47. package/lib/components/typedoc.js +5 -1
  48. package/lib/components/vitest.js +1 -1
  49. package/lib/index.d.ts +1 -0
  50. package/lib/index.js +2 -1
  51. package/lib/project-generator.js +1 -1
  52. package/lib/projects/awscdk-construct-library.generated.js +1 -1
  53. package/lib/projects/awscdk-typescript-app.generated.js +1 -1
  54. package/lib/projects/jsii-options.generated.d.ts +11 -1
  55. package/lib/projects/jsii-options.generated.js +1 -1
  56. package/lib/projects/jsii.generated.js +5 -4
  57. package/lib/projects/typescript.generated.js +1 -1
  58. package/node_modules/@jsii/spec/LICENSE +202 -0
  59. package/node_modules/@jsii/spec/NOTICE +2 -0
  60. package/node_modules/@jsii/spec/README.md +13 -0
  61. package/node_modules/@jsii/spec/jest.config.mjs +9 -0
  62. package/node_modules/@jsii/spec/lib/assembly-utils.d.ts +59 -0
  63. package/node_modules/@jsii/spec/lib/assembly-utils.js +158 -0
  64. package/node_modules/@jsii/spec/lib/assembly.d.ts +920 -0
  65. package/node_modules/@jsii/spec/lib/assembly.js +203 -0
  66. package/node_modules/@jsii/spec/lib/configuration.d.ts +147 -0
  67. package/node_modules/@jsii/spec/lib/configuration.js +3 -0
  68. package/node_modules/@jsii/spec/lib/index.d.ts +7 -0
  69. package/node_modules/@jsii/spec/lib/index.js +23 -0
  70. package/node_modules/@jsii/spec/lib/name-tree.d.ts +60 -0
  71. package/node_modules/@jsii/spec/lib/name-tree.js +84 -0
  72. package/node_modules/@jsii/spec/lib/redirect.d.ts +33 -0
  73. package/node_modules/@jsii/spec/lib/redirect.js +46 -0
  74. package/node_modules/@jsii/spec/lib/validate-assembly.d.ts +4 -0
  75. package/node_modules/@jsii/spec/lib/validate-assembly.js +29 -0
  76. package/node_modules/@jsii/spec/package.json +41 -0
  77. package/node_modules/@jsii/spec/schema/assembly-redirect.schema.json +29 -0
  78. package/node_modules/@jsii/spec/schema/jsii-spec.schema.json +1110 -0
  79. package/node_modules/@mrgrain/jsii-struct-builder/LICENSE +202 -0
  80. package/node_modules/@mrgrain/jsii-struct-builder/README.md +387 -0
  81. package/node_modules/@mrgrain/jsii-struct-builder/lib/builder/index.d.ts +1 -0
  82. package/node_modules/@mrgrain/jsii-struct-builder/lib/builder/index.js +18 -0
  83. package/node_modules/@mrgrain/jsii-struct-builder/lib/builder/struct.d.ts +144 -0
  84. package/node_modules/@mrgrain/jsii-struct-builder/lib/builder/struct.js +163 -0
  85. package/node_modules/@mrgrain/jsii-struct-builder/lib/index.d.ts +3 -0
  86. package/node_modules/@mrgrain/jsii-struct-builder/lib/index.js +20 -0
  87. package/node_modules/@mrgrain/jsii-struct-builder/lib/private/assembly.d.ts +2 -0
  88. package/node_modules/@mrgrain/jsii-struct-builder/lib/private/assembly.js +76 -0
  89. package/node_modules/@mrgrain/jsii-struct-builder/lib/private/index.d.ts +2 -0
  90. package/node_modules/@mrgrain/jsii-struct-builder/lib/private/index.js +19 -0
  91. package/node_modules/@mrgrain/jsii-struct-builder/lib/private/utils.d.ts +2 -0
  92. package/node_modules/@mrgrain/jsii-struct-builder/lib/private/utils.js +14 -0
  93. package/node_modules/@mrgrain/jsii-struct-builder/lib/projen/index.d.ts +2 -0
  94. package/node_modules/@mrgrain/jsii-struct-builder/lib/projen/index.js +19 -0
  95. package/node_modules/@mrgrain/jsii-struct-builder/lib/projen/projen-struct.d.ts +90 -0
  96. package/node_modules/@mrgrain/jsii-struct-builder/lib/projen/projen-struct.js +112 -0
  97. package/node_modules/@mrgrain/jsii-struct-builder/lib/projen/ts-interface.d.ts +15 -0
  98. package/node_modules/@mrgrain/jsii-struct-builder/lib/projen/ts-interface.js +18 -0
  99. package/node_modules/@mrgrain/jsii-struct-builder/lib/renderer/index.d.ts +1 -0
  100. package/node_modules/@mrgrain/jsii-struct-builder/lib/renderer/index.js +18 -0
  101. package/node_modules/@mrgrain/jsii-struct-builder/lib/renderer/typescript.d.ts +53 -0
  102. package/node_modules/@mrgrain/jsii-struct-builder/lib/renderer/typescript.js +194 -0
  103. package/node_modules/@mrgrain/jsii-struct-builder/package.json +116 -0
  104. package/node_modules/ajv/.runkit_example.js +23 -0
  105. package/node_modules/ajv/LICENSE +22 -0
  106. package/node_modules/ajv/README.md +207 -0
  107. package/node_modules/ajv/dist/2019.d.ts +19 -0
  108. package/node_modules/ajv/dist/2019.js +61 -0
  109. package/node_modules/ajv/dist/2019.js.map +1 -0
  110. package/node_modules/ajv/dist/2020.d.ts +19 -0
  111. package/node_modules/ajv/dist/2020.js +55 -0
  112. package/node_modules/ajv/dist/2020.js.map +1 -0
  113. package/node_modules/ajv/dist/ajv.d.ts +18 -0
  114. package/node_modules/ajv/dist/ajv.js +50 -0
  115. package/node_modules/ajv/dist/ajv.js.map +1 -0
  116. package/node_modules/ajv/dist/compile/codegen/code.d.ts +40 -0
  117. package/node_modules/ajv/dist/compile/codegen/code.js +156 -0
  118. package/node_modules/ajv/dist/compile/codegen/code.js.map +1 -0
  119. package/node_modules/ajv/dist/compile/codegen/index.d.ts +79 -0
  120. package/node_modules/ajv/dist/compile/codegen/index.js +697 -0
  121. package/node_modules/ajv/dist/compile/codegen/index.js.map +1 -0
  122. package/node_modules/ajv/dist/compile/codegen/scope.d.ts +79 -0
  123. package/node_modules/ajv/dist/compile/codegen/scope.js +143 -0
  124. package/node_modules/ajv/dist/compile/codegen/scope.js.map +1 -0
  125. package/node_modules/ajv/dist/compile/errors.d.ts +13 -0
  126. package/node_modules/ajv/dist/compile/errors.js +123 -0
  127. package/node_modules/ajv/dist/compile/errors.js.map +1 -0
  128. package/node_modules/ajv/dist/compile/index.d.ts +80 -0
  129. package/node_modules/ajv/dist/compile/index.js +242 -0
  130. package/node_modules/ajv/dist/compile/index.js.map +1 -0
  131. package/node_modules/ajv/dist/compile/jtd/parse.d.ts +4 -0
  132. package/node_modules/ajv/dist/compile/jtd/parse.js +350 -0
  133. package/node_modules/ajv/dist/compile/jtd/parse.js.map +1 -0
  134. package/node_modules/ajv/dist/compile/jtd/serialize.d.ts +4 -0
  135. package/node_modules/ajv/dist/compile/jtd/serialize.js +229 -0
  136. package/node_modules/ajv/dist/compile/jtd/serialize.js.map +1 -0
  137. package/node_modules/ajv/dist/compile/jtd/types.d.ts +6 -0
  138. package/node_modules/ajv/dist/compile/jtd/types.js +14 -0
  139. package/node_modules/ajv/dist/compile/jtd/types.js.map +1 -0
  140. package/node_modules/ajv/dist/compile/names.d.ts +20 -0
  141. package/node_modules/ajv/dist/compile/names.js +28 -0
  142. package/node_modules/ajv/dist/compile/names.js.map +1 -0
  143. package/node_modules/ajv/dist/compile/ref_error.d.ts +6 -0
  144. package/node_modules/ajv/dist/compile/ref_error.js +12 -0
  145. package/node_modules/ajv/dist/compile/ref_error.js.map +1 -0
  146. package/node_modules/ajv/dist/compile/resolve.d.ts +12 -0
  147. package/node_modules/ajv/dist/compile/resolve.js +155 -0
  148. package/node_modules/ajv/dist/compile/resolve.js.map +1 -0
  149. package/node_modules/ajv/dist/compile/rules.d.ts +28 -0
  150. package/node_modules/ajv/dist/compile/rules.js +26 -0
  151. package/node_modules/ajv/dist/compile/rules.js.map +1 -0
  152. package/node_modules/ajv/dist/compile/util.d.ts +40 -0
  153. package/node_modules/ajv/dist/compile/util.js +178 -0
  154. package/node_modules/ajv/dist/compile/util.js.map +1 -0
  155. package/node_modules/ajv/dist/compile/validate/applicability.d.ts +6 -0
  156. package/node_modules/ajv/dist/compile/validate/applicability.js +19 -0
  157. package/node_modules/ajv/dist/compile/validate/applicability.js.map +1 -0
  158. package/node_modules/ajv/dist/compile/validate/boolSchema.d.ts +4 -0
  159. package/node_modules/ajv/dist/compile/validate/boolSchema.js +50 -0
  160. package/node_modules/ajv/dist/compile/validate/boolSchema.js.map +1 -0
  161. package/node_modules/ajv/dist/compile/validate/dataType.d.ts +17 -0
  162. package/node_modules/ajv/dist/compile/validate/dataType.js +203 -0
  163. package/node_modules/ajv/dist/compile/validate/dataType.js.map +1 -0
  164. package/node_modules/ajv/dist/compile/validate/defaults.d.ts +2 -0
  165. package/node_modules/ajv/dist/compile/validate/defaults.js +35 -0
  166. package/node_modules/ajv/dist/compile/validate/defaults.js.map +1 -0
  167. package/node_modules/ajv/dist/compile/validate/index.d.ts +42 -0
  168. package/node_modules/ajv/dist/compile/validate/index.js +520 -0
  169. package/node_modules/ajv/dist/compile/validate/index.js.map +1 -0
  170. package/node_modules/ajv/dist/compile/validate/keyword.d.ts +8 -0
  171. package/node_modules/ajv/dist/compile/validate/keyword.js +124 -0
  172. package/node_modules/ajv/dist/compile/validate/keyword.js.map +1 -0
  173. package/node_modules/ajv/dist/compile/validate/subschema.d.ts +47 -0
  174. package/node_modules/ajv/dist/compile/validate/subschema.js +81 -0
  175. package/node_modules/ajv/dist/compile/validate/subschema.js.map +1 -0
  176. package/node_modules/ajv/dist/core.d.ts +173 -0
  177. package/node_modules/ajv/dist/core.js +618 -0
  178. package/node_modules/ajv/dist/core.js.map +1 -0
  179. package/node_modules/ajv/dist/jtd.d.ts +47 -0
  180. package/node_modules/ajv/dist/jtd.js +72 -0
  181. package/node_modules/ajv/dist/jtd.js.map +1 -0
  182. package/node_modules/ajv/dist/refs/data.json +13 -0
  183. package/node_modules/ajv/dist/refs/json-schema-2019-09/index.d.ts +2 -0
  184. package/node_modules/ajv/dist/refs/json-schema-2019-09/index.js +28 -0
  185. package/node_modules/ajv/dist/refs/json-schema-2019-09/index.js.map +1 -0
  186. package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/applicator.json +53 -0
  187. package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/content.json +17 -0
  188. package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/core.json +57 -0
  189. package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/format.json +14 -0
  190. package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/meta-data.json +37 -0
  191. package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/validation.json +90 -0
  192. package/node_modules/ajv/dist/refs/json-schema-2019-09/schema.json +39 -0
  193. package/node_modules/ajv/dist/refs/json-schema-2020-12/index.d.ts +2 -0
  194. package/node_modules/ajv/dist/refs/json-schema-2020-12/index.js +30 -0
  195. package/node_modules/ajv/dist/refs/json-schema-2020-12/index.js.map +1 -0
  196. package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/applicator.json +48 -0
  197. package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/content.json +17 -0
  198. package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/core.json +51 -0
  199. package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/format-annotation.json +14 -0
  200. package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/meta-data.json +37 -0
  201. package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/unevaluated.json +15 -0
  202. package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/validation.json +90 -0
  203. package/node_modules/ajv/dist/refs/json-schema-2020-12/schema.json +55 -0
  204. package/node_modules/ajv/dist/refs/json-schema-draft-06.json +137 -0
  205. package/node_modules/ajv/dist/refs/json-schema-draft-07.json +151 -0
  206. package/node_modules/ajv/dist/refs/json-schema-secure.json +88 -0
  207. package/node_modules/ajv/dist/refs/jtd-schema.d.ts +3 -0
  208. package/node_modules/ajv/dist/refs/jtd-schema.js +118 -0
  209. package/node_modules/ajv/dist/refs/jtd-schema.js.map +1 -0
  210. package/node_modules/ajv/dist/runtime/equal.d.ts +6 -0
  211. package/node_modules/ajv/dist/runtime/equal.js +7 -0
  212. package/node_modules/ajv/dist/runtime/equal.js.map +1 -0
  213. package/node_modules/ajv/dist/runtime/parseJson.d.ts +18 -0
  214. package/node_modules/ajv/dist/runtime/parseJson.js +185 -0
  215. package/node_modules/ajv/dist/runtime/parseJson.js.map +1 -0
  216. package/node_modules/ajv/dist/runtime/quote.d.ts +5 -0
  217. package/node_modules/ajv/dist/runtime/quote.js +30 -0
  218. package/node_modules/ajv/dist/runtime/quote.js.map +1 -0
  219. package/node_modules/ajv/dist/runtime/re2.d.ts +6 -0
  220. package/node_modules/ajv/dist/runtime/re2.js +6 -0
  221. package/node_modules/ajv/dist/runtime/re2.js.map +1 -0
  222. package/node_modules/ajv/dist/runtime/timestamp.d.ts +5 -0
  223. package/node_modules/ajv/dist/runtime/timestamp.js +42 -0
  224. package/node_modules/ajv/dist/runtime/timestamp.js.map +1 -0
  225. package/node_modules/ajv/dist/runtime/ucs2length.d.ts +5 -0
  226. package/node_modules/ajv/dist/runtime/ucs2length.js +24 -0
  227. package/node_modules/ajv/dist/runtime/ucs2length.js.map +1 -0
  228. package/node_modules/ajv/dist/runtime/uri.d.ts +6 -0
  229. package/node_modules/ajv/dist/runtime/uri.js +6 -0
  230. package/node_modules/ajv/dist/runtime/uri.js.map +1 -0
  231. package/node_modules/ajv/dist/runtime/validation_error.d.ts +7 -0
  232. package/node_modules/ajv/dist/runtime/validation_error.js +11 -0
  233. package/node_modules/ajv/dist/runtime/validation_error.js.map +1 -0
  234. package/node_modules/ajv/dist/standalone/index.d.ts +6 -0
  235. package/node_modules/ajv/dist/standalone/index.js +90 -0
  236. package/node_modules/ajv/dist/standalone/index.js.map +1 -0
  237. package/node_modules/ajv/dist/standalone/instance.d.ts +12 -0
  238. package/node_modules/ajv/dist/standalone/instance.js +35 -0
  239. package/node_modules/ajv/dist/standalone/instance.js.map +1 -0
  240. package/node_modules/ajv/dist/types/index.d.ts +183 -0
  241. package/node_modules/ajv/dist/types/index.js +3 -0
  242. package/node_modules/ajv/dist/types/index.js.map +1 -0
  243. package/node_modules/ajv/dist/types/json-schema.d.ts +125 -0
  244. package/node_modules/ajv/dist/types/json-schema.js +3 -0
  245. package/node_modules/ajv/dist/types/json-schema.js.map +1 -0
  246. package/node_modules/ajv/dist/types/jtd-schema.d.ts +174 -0
  247. package/node_modules/ajv/dist/types/jtd-schema.js +3 -0
  248. package/node_modules/ajv/dist/types/jtd-schema.js.map +1 -0
  249. package/node_modules/ajv/dist/vocabularies/applicator/additionalItems.d.ts +8 -0
  250. package/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +49 -0
  251. package/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js.map +1 -0
  252. package/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.d.ts +6 -0
  253. package/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +106 -0
  254. package/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js.map +1 -0
  255. package/node_modules/ajv/dist/vocabularies/applicator/allOf.d.ts +3 -0
  256. package/node_modules/ajv/dist/vocabularies/applicator/allOf.js +23 -0
  257. package/node_modules/ajv/dist/vocabularies/applicator/allOf.js.map +1 -0
  258. package/node_modules/ajv/dist/vocabularies/applicator/anyOf.d.ts +4 -0
  259. package/node_modules/ajv/dist/vocabularies/applicator/anyOf.js +12 -0
  260. package/node_modules/ajv/dist/vocabularies/applicator/anyOf.js.map +1 -0
  261. package/node_modules/ajv/dist/vocabularies/applicator/contains.d.ts +7 -0
  262. package/node_modules/ajv/dist/vocabularies/applicator/contains.js +95 -0
  263. package/node_modules/ajv/dist/vocabularies/applicator/contains.js.map +1 -0
  264. package/node_modules/ajv/dist/vocabularies/applicator/dependencies.d.ts +21 -0
  265. package/node_modules/ajv/dist/vocabularies/applicator/dependencies.js +85 -0
  266. package/node_modules/ajv/dist/vocabularies/applicator/dependencies.js.map +1 -0
  267. package/node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.d.ts +3 -0
  268. package/node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.js +11 -0
  269. package/node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.js.map +1 -0
  270. package/node_modules/ajv/dist/vocabularies/applicator/if.d.ts +6 -0
  271. package/node_modules/ajv/dist/vocabularies/applicator/if.js +66 -0
  272. package/node_modules/ajv/dist/vocabularies/applicator/if.js.map +1 -0
  273. package/node_modules/ajv/dist/vocabularies/applicator/index.d.ts +13 -0
  274. package/node_modules/ajv/dist/vocabularies/applicator/index.js +44 -0
  275. package/node_modules/ajv/dist/vocabularies/applicator/index.js.map +1 -0
  276. package/node_modules/ajv/dist/vocabularies/applicator/items.d.ts +5 -0
  277. package/node_modules/ajv/dist/vocabularies/applicator/items.js +52 -0
  278. package/node_modules/ajv/dist/vocabularies/applicator/items.js.map +1 -0
  279. package/node_modules/ajv/dist/vocabularies/applicator/items2020.d.ts +6 -0
  280. package/node_modules/ajv/dist/vocabularies/applicator/items2020.js +30 -0
  281. package/node_modules/ajv/dist/vocabularies/applicator/items2020.js.map +1 -0
  282. package/node_modules/ajv/dist/vocabularies/applicator/not.d.ts +4 -0
  283. package/node_modules/ajv/dist/vocabularies/applicator/not.js +26 -0
  284. package/node_modules/ajv/dist/vocabularies/applicator/not.js.map +1 -0
  285. package/node_modules/ajv/dist/vocabularies/applicator/oneOf.d.ts +6 -0
  286. package/node_modules/ajv/dist/vocabularies/applicator/oneOf.js +60 -0
  287. package/node_modules/ajv/dist/vocabularies/applicator/oneOf.js.map +1 -0
  288. package/node_modules/ajv/dist/vocabularies/applicator/patternProperties.d.ts +3 -0
  289. package/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +75 -0
  290. package/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js.map +1 -0
  291. package/node_modules/ajv/dist/vocabularies/applicator/prefixItems.d.ts +3 -0
  292. package/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +12 -0
  293. package/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js.map +1 -0
  294. package/node_modules/ajv/dist/vocabularies/applicator/properties.d.ts +3 -0
  295. package/node_modules/ajv/dist/vocabularies/applicator/properties.js +54 -0
  296. package/node_modules/ajv/dist/vocabularies/applicator/properties.js.map +1 -0
  297. package/node_modules/ajv/dist/vocabularies/applicator/propertyNames.d.ts +6 -0
  298. package/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +38 -0
  299. package/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js.map +1 -0
  300. package/node_modules/ajv/dist/vocabularies/applicator/thenElse.d.ts +3 -0
  301. package/node_modules/ajv/dist/vocabularies/applicator/thenElse.js +13 -0
  302. package/node_modules/ajv/dist/vocabularies/applicator/thenElse.js.map +1 -0
  303. package/node_modules/ajv/dist/vocabularies/code.d.ts +17 -0
  304. package/node_modules/ajv/dist/vocabularies/code.js +131 -0
  305. package/node_modules/ajv/dist/vocabularies/code.js.map +1 -0
  306. package/node_modules/ajv/dist/vocabularies/core/id.d.ts +3 -0
  307. package/node_modules/ajv/dist/vocabularies/core/id.js +10 -0
  308. package/node_modules/ajv/dist/vocabularies/core/id.js.map +1 -0
  309. package/node_modules/ajv/dist/vocabularies/core/index.d.ts +3 -0
  310. package/node_modules/ajv/dist/vocabularies/core/index.js +16 -0
  311. package/node_modules/ajv/dist/vocabularies/core/index.js.map +1 -0
  312. package/node_modules/ajv/dist/vocabularies/core/ref.d.ts +8 -0
  313. package/node_modules/ajv/dist/vocabularies/core/ref.js +122 -0
  314. package/node_modules/ajv/dist/vocabularies/core/ref.js.map +1 -0
  315. package/node_modules/ajv/dist/vocabularies/discriminator/index.d.ts +5 -0
  316. package/node_modules/ajv/dist/vocabularies/discriminator/index.js +104 -0
  317. package/node_modules/ajv/dist/vocabularies/discriminator/index.js.map +1 -0
  318. package/node_modules/ajv/dist/vocabularies/discriminator/types.d.ts +10 -0
  319. package/node_modules/ajv/dist/vocabularies/discriminator/types.js +9 -0
  320. package/node_modules/ajv/dist/vocabularies/discriminator/types.js.map +1 -0
  321. package/node_modules/ajv/dist/vocabularies/draft2020.d.ts +3 -0
  322. package/node_modules/ajv/dist/vocabularies/draft2020.js +23 -0
  323. package/node_modules/ajv/dist/vocabularies/draft2020.js.map +1 -0
  324. package/node_modules/ajv/dist/vocabularies/draft7.d.ts +3 -0
  325. package/node_modules/ajv/dist/vocabularies/draft7.js +17 -0
  326. package/node_modules/ajv/dist/vocabularies/draft7.js.map +1 -0
  327. package/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.d.ts +5 -0
  328. package/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.js +30 -0
  329. package/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.js.map +1 -0
  330. package/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.d.ts +5 -0
  331. package/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.js +51 -0
  332. package/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.js.map +1 -0
  333. package/node_modules/ajv/dist/vocabularies/dynamic/index.d.ts +3 -0
  334. package/node_modules/ajv/dist/vocabularies/dynamic/index.js +9 -0
  335. package/node_modules/ajv/dist/vocabularies/dynamic/index.js.map +1 -0
  336. package/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.d.ts +3 -0
  337. package/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js +16 -0
  338. package/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js.map +1 -0
  339. package/node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.d.ts +3 -0
  340. package/node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.js +10 -0
  341. package/node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.js.map +1 -0
  342. package/node_modules/ajv/dist/vocabularies/errors.d.ts +9 -0
  343. package/node_modules/ajv/dist/vocabularies/errors.js +3 -0
  344. package/node_modules/ajv/dist/vocabularies/errors.js.map +1 -0
  345. package/node_modules/ajv/dist/vocabularies/format/format.d.ts +8 -0
  346. package/node_modules/ajv/dist/vocabularies/format/format.js +92 -0
  347. package/node_modules/ajv/dist/vocabularies/format/format.js.map +1 -0
  348. package/node_modules/ajv/dist/vocabularies/format/index.d.ts +3 -0
  349. package/node_modules/ajv/dist/vocabularies/format/index.js +6 -0
  350. package/node_modules/ajv/dist/vocabularies/format/index.js.map +1 -0
  351. package/node_modules/ajv/dist/vocabularies/jtd/discriminator.d.ts +6 -0
  352. package/node_modules/ajv/dist/vocabularies/jtd/discriminator.js +71 -0
  353. package/node_modules/ajv/dist/vocabularies/jtd/discriminator.js.map +1 -0
  354. package/node_modules/ajv/dist/vocabularies/jtd/elements.d.ts +5 -0
  355. package/node_modules/ajv/dist/vocabularies/jtd/elements.js +24 -0
  356. package/node_modules/ajv/dist/vocabularies/jtd/elements.js.map +1 -0
  357. package/node_modules/ajv/dist/vocabularies/jtd/enum.d.ts +6 -0
  358. package/node_modules/ajv/dist/vocabularies/jtd/enum.js +43 -0
  359. package/node_modules/ajv/dist/vocabularies/jtd/enum.js.map +1 -0
  360. package/node_modules/ajv/dist/vocabularies/jtd/error.d.ts +9 -0
  361. package/node_modules/ajv/dist/vocabularies/jtd/error.js +20 -0
  362. package/node_modules/ajv/dist/vocabularies/jtd/error.js.map +1 -0
  363. package/node_modules/ajv/dist/vocabularies/jtd/index.d.ts +10 -0
  364. package/node_modules/ajv/dist/vocabularies/jtd/index.js +29 -0
  365. package/node_modules/ajv/dist/vocabularies/jtd/index.js.map +1 -0
  366. package/node_modules/ajv/dist/vocabularies/jtd/metadata.d.ts +5 -0
  367. package/node_modules/ajv/dist/vocabularies/jtd/metadata.js +25 -0
  368. package/node_modules/ajv/dist/vocabularies/jtd/metadata.js.map +1 -0
  369. package/node_modules/ajv/dist/vocabularies/jtd/nullable.d.ts +4 -0
  370. package/node_modules/ajv/dist/vocabularies/jtd/nullable.js +22 -0
  371. package/node_modules/ajv/dist/vocabularies/jtd/nullable.js.map +1 -0
  372. package/node_modules/ajv/dist/vocabularies/jtd/optionalProperties.d.ts +3 -0
  373. package/node_modules/ajv/dist/vocabularies/jtd/optionalProperties.js +15 -0
  374. package/node_modules/ajv/dist/vocabularies/jtd/optionalProperties.js.map +1 -0
  375. package/node_modules/ajv/dist/vocabularies/jtd/properties.d.ts +22 -0
  376. package/node_modules/ajv/dist/vocabularies/jtd/properties.js +149 -0
  377. package/node_modules/ajv/dist/vocabularies/jtd/properties.js.map +1 -0
  378. package/node_modules/ajv/dist/vocabularies/jtd/ref.d.ts +4 -0
  379. package/node_modules/ajv/dist/vocabularies/jtd/ref.js +67 -0
  380. package/node_modules/ajv/dist/vocabularies/jtd/ref.js.map +1 -0
  381. package/node_modules/ajv/dist/vocabularies/jtd/type.d.ts +10 -0
  382. package/node_modules/ajv/dist/vocabularies/jtd/type.js +69 -0
  383. package/node_modules/ajv/dist/vocabularies/jtd/type.js.map +1 -0
  384. package/node_modules/ajv/dist/vocabularies/jtd/union.d.ts +3 -0
  385. package/node_modules/ajv/dist/vocabularies/jtd/union.js +12 -0
  386. package/node_modules/ajv/dist/vocabularies/jtd/union.js.map +1 -0
  387. package/node_modules/ajv/dist/vocabularies/jtd/values.d.ts +5 -0
  388. package/node_modules/ajv/dist/vocabularies/jtd/values.js +51 -0
  389. package/node_modules/ajv/dist/vocabularies/jtd/values.js.map +1 -0
  390. package/node_modules/ajv/dist/vocabularies/metadata.d.ts +3 -0
  391. package/node_modules/ajv/dist/vocabularies/metadata.js +18 -0
  392. package/node_modules/ajv/dist/vocabularies/metadata.js.map +1 -0
  393. package/node_modules/ajv/dist/vocabularies/next.d.ts +3 -0
  394. package/node_modules/ajv/dist/vocabularies/next.js +8 -0
  395. package/node_modules/ajv/dist/vocabularies/next.js.map +1 -0
  396. package/node_modules/ajv/dist/vocabularies/unevaluated/index.d.ts +3 -0
  397. package/node_modules/ajv/dist/vocabularies/unevaluated/index.js +7 -0
  398. package/node_modules/ajv/dist/vocabularies/unevaluated/index.js.map +1 -0
  399. package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.d.ts +6 -0
  400. package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js +40 -0
  401. package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js.map +1 -0
  402. package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.d.ts +6 -0
  403. package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js +65 -0
  404. package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js.map +1 -0
  405. package/node_modules/ajv/dist/vocabularies/validation/const.d.ts +6 -0
  406. package/node_modules/ajv/dist/vocabularies/validation/const.js +25 -0
  407. package/node_modules/ajv/dist/vocabularies/validation/const.js.map +1 -0
  408. package/node_modules/ajv/dist/vocabularies/validation/dependentRequired.d.ts +5 -0
  409. package/node_modules/ajv/dist/vocabularies/validation/dependentRequired.js +12 -0
  410. package/node_modules/ajv/dist/vocabularies/validation/dependentRequired.js.map +1 -0
  411. package/node_modules/ajv/dist/vocabularies/validation/enum.d.ts +8 -0
  412. package/node_modules/ajv/dist/vocabularies/validation/enum.js +48 -0
  413. package/node_modules/ajv/dist/vocabularies/validation/enum.js.map +1 -0
  414. package/node_modules/ajv/dist/vocabularies/validation/index.d.ts +16 -0
  415. package/node_modules/ajv/dist/vocabularies/validation/index.js +33 -0
  416. package/node_modules/ajv/dist/vocabularies/validation/index.js.map +1 -0
  417. package/node_modules/ajv/dist/vocabularies/validation/limitContains.d.ts +3 -0
  418. package/node_modules/ajv/dist/vocabularies/validation/limitContains.js +15 -0
  419. package/node_modules/ajv/dist/vocabularies/validation/limitContains.js.map +1 -0
  420. package/node_modules/ajv/dist/vocabularies/validation/limitItems.d.ts +3 -0
  421. package/node_modules/ajv/dist/vocabularies/validation/limitItems.js +24 -0
  422. package/node_modules/ajv/dist/vocabularies/validation/limitItems.js.map +1 -0
  423. package/node_modules/ajv/dist/vocabularies/validation/limitLength.d.ts +3 -0
  424. package/node_modules/ajv/dist/vocabularies/validation/limitLength.js +27 -0
  425. package/node_modules/ajv/dist/vocabularies/validation/limitLength.js.map +1 -0
  426. package/node_modules/ajv/dist/vocabularies/validation/limitNumber.d.ts +11 -0
  427. package/node_modules/ajv/dist/vocabularies/validation/limitNumber.js +27 -0
  428. package/node_modules/ajv/dist/vocabularies/validation/limitNumber.js.map +1 -0
  429. package/node_modules/ajv/dist/vocabularies/validation/limitProperties.d.ts +3 -0
  430. package/node_modules/ajv/dist/vocabularies/validation/limitProperties.js +24 -0
  431. package/node_modules/ajv/dist/vocabularies/validation/limitProperties.js.map +1 -0
  432. package/node_modules/ajv/dist/vocabularies/validation/multipleOf.d.ts +8 -0
  433. package/node_modules/ajv/dist/vocabularies/validation/multipleOf.js +26 -0
  434. package/node_modules/ajv/dist/vocabularies/validation/multipleOf.js.map +1 -0
  435. package/node_modules/ajv/dist/vocabularies/validation/pattern.d.ts +8 -0
  436. package/node_modules/ajv/dist/vocabularies/validation/pattern.js +24 -0
  437. package/node_modules/ajv/dist/vocabularies/validation/pattern.js.map +1 -0
  438. package/node_modules/ajv/dist/vocabularies/validation/required.d.ts +8 -0
  439. package/node_modules/ajv/dist/vocabularies/validation/required.js +79 -0
  440. package/node_modules/ajv/dist/vocabularies/validation/required.js.map +1 -0
  441. package/node_modules/ajv/dist/vocabularies/validation/uniqueItems.d.ts +9 -0
  442. package/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +64 -0
  443. package/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js.map +1 -0
  444. package/node_modules/ajv/lib/2019.ts +81 -0
  445. package/node_modules/ajv/lib/2020.ts +75 -0
  446. package/node_modules/ajv/lib/ajv.ts +70 -0
  447. package/node_modules/ajv/lib/compile/codegen/code.ts +169 -0
  448. package/node_modules/ajv/lib/compile/codegen/index.ts +852 -0
  449. package/node_modules/ajv/lib/compile/codegen/scope.ts +215 -0
  450. package/node_modules/ajv/lib/compile/errors.ts +184 -0
  451. package/node_modules/ajv/lib/compile/index.ts +324 -0
  452. package/node_modules/ajv/lib/compile/jtd/parse.ts +411 -0
  453. package/node_modules/ajv/lib/compile/jtd/serialize.ts +266 -0
  454. package/node_modules/ajv/lib/compile/jtd/types.ts +16 -0
  455. package/node_modules/ajv/lib/compile/names.ts +27 -0
  456. package/node_modules/ajv/lib/compile/ref_error.ts +13 -0
  457. package/node_modules/ajv/lib/compile/resolve.ts +149 -0
  458. package/node_modules/ajv/lib/compile/rules.ts +50 -0
  459. package/node_modules/ajv/lib/compile/util.ts +213 -0
  460. package/node_modules/ajv/lib/compile/validate/applicability.ts +22 -0
  461. package/node_modules/ajv/lib/compile/validate/boolSchema.ts +47 -0
  462. package/node_modules/ajv/lib/compile/validate/dataType.ts +230 -0
  463. package/node_modules/ajv/lib/compile/validate/defaults.ts +32 -0
  464. package/node_modules/ajv/lib/compile/validate/index.ts +582 -0
  465. package/node_modules/ajv/lib/compile/validate/keyword.ts +171 -0
  466. package/node_modules/ajv/lib/compile/validate/subschema.ts +135 -0
  467. package/node_modules/ajv/lib/core.ts +891 -0
  468. package/node_modules/ajv/lib/jtd.ts +132 -0
  469. package/node_modules/ajv/lib/refs/data.json +13 -0
  470. package/node_modules/ajv/lib/refs/json-schema-2019-09/index.ts +28 -0
  471. package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/applicator.json +53 -0
  472. package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/content.json +17 -0
  473. package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/core.json +57 -0
  474. package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/format.json +14 -0
  475. package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/meta-data.json +37 -0
  476. package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/validation.json +90 -0
  477. package/node_modules/ajv/lib/refs/json-schema-2019-09/schema.json +39 -0
  478. package/node_modules/ajv/lib/refs/json-schema-2020-12/index.ts +30 -0
  479. package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/applicator.json +48 -0
  480. package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/content.json +17 -0
  481. package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/core.json +51 -0
  482. package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/format-annotation.json +14 -0
  483. package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/meta-data.json +37 -0
  484. package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/unevaluated.json +15 -0
  485. package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/validation.json +90 -0
  486. package/node_modules/ajv/lib/refs/json-schema-2020-12/schema.json +55 -0
  487. package/node_modules/ajv/lib/refs/json-schema-draft-06.json +137 -0
  488. package/node_modules/ajv/lib/refs/json-schema-draft-07.json +151 -0
  489. package/node_modules/ajv/lib/refs/json-schema-secure.json +88 -0
  490. package/node_modules/ajv/lib/refs/jtd-schema.ts +130 -0
  491. package/node_modules/ajv/lib/runtime/equal.ts +7 -0
  492. package/node_modules/ajv/lib/runtime/parseJson.ts +177 -0
  493. package/node_modules/ajv/lib/runtime/quote.ts +31 -0
  494. package/node_modules/ajv/lib/runtime/re2.ts +6 -0
  495. package/node_modules/ajv/lib/runtime/timestamp.ts +46 -0
  496. package/node_modules/ajv/lib/runtime/ucs2length.ts +20 -0
  497. package/node_modules/ajv/lib/runtime/uri.ts +6 -0
  498. package/node_modules/ajv/lib/runtime/validation_error.ts +13 -0
  499. package/node_modules/ajv/lib/standalone/index.ts +100 -0
  500. package/node_modules/ajv/lib/standalone/instance.ts +36 -0
  501. package/node_modules/ajv/lib/types/index.ts +244 -0
  502. package/node_modules/ajv/lib/types/json-schema.ts +187 -0
  503. package/node_modules/ajv/lib/types/jtd-schema.ts +273 -0
  504. package/node_modules/ajv/lib/vocabularies/applicator/additionalItems.ts +56 -0
  505. package/node_modules/ajv/lib/vocabularies/applicator/additionalProperties.ts +118 -0
  506. package/node_modules/ajv/lib/vocabularies/applicator/allOf.ts +22 -0
  507. package/node_modules/ajv/lib/vocabularies/applicator/anyOf.ts +14 -0
  508. package/node_modules/ajv/lib/vocabularies/applicator/contains.ts +109 -0
  509. package/node_modules/ajv/lib/vocabularies/applicator/dependencies.ts +112 -0
  510. package/node_modules/ajv/lib/vocabularies/applicator/dependentSchemas.ts +11 -0
  511. package/node_modules/ajv/lib/vocabularies/applicator/if.ts +80 -0
  512. package/node_modules/ajv/lib/vocabularies/applicator/index.ts +53 -0
  513. package/node_modules/ajv/lib/vocabularies/applicator/items.ts +59 -0
  514. package/node_modules/ajv/lib/vocabularies/applicator/items2020.ts +36 -0
  515. package/node_modules/ajv/lib/vocabularies/applicator/not.ts +38 -0
  516. package/node_modules/ajv/lib/vocabularies/applicator/oneOf.ts +82 -0
  517. package/node_modules/ajv/lib/vocabularies/applicator/patternProperties.ts +91 -0
  518. package/node_modules/ajv/lib/vocabularies/applicator/prefixItems.ts +12 -0
  519. package/node_modules/ajv/lib/vocabularies/applicator/properties.ts +57 -0
  520. package/node_modules/ajv/lib/vocabularies/applicator/propertyNames.ts +50 -0
  521. package/node_modules/ajv/lib/vocabularies/applicator/thenElse.ts +13 -0
  522. package/node_modules/ajv/lib/vocabularies/code.ts +168 -0
  523. package/node_modules/ajv/lib/vocabularies/core/id.ts +10 -0
  524. package/node_modules/ajv/lib/vocabularies/core/index.ts +16 -0
  525. package/node_modules/ajv/lib/vocabularies/core/ref.ts +129 -0
  526. package/node_modules/ajv/lib/vocabularies/discriminator/index.ts +113 -0
  527. package/node_modules/ajv/lib/vocabularies/discriminator/types.ts +12 -0
  528. package/node_modules/ajv/lib/vocabularies/draft2020.ts +23 -0
  529. package/node_modules/ajv/lib/vocabularies/draft7.ts +17 -0
  530. package/node_modules/ajv/lib/vocabularies/dynamic/dynamicAnchor.ts +31 -0
  531. package/node_modules/ajv/lib/vocabularies/dynamic/dynamicRef.ts +51 -0
  532. package/node_modules/ajv/lib/vocabularies/dynamic/index.ts +9 -0
  533. package/node_modules/ajv/lib/vocabularies/dynamic/recursiveAnchor.ts +14 -0
  534. package/node_modules/ajv/lib/vocabularies/dynamic/recursiveRef.ts +10 -0
  535. package/node_modules/ajv/lib/vocabularies/errors.ts +18 -0
  536. package/node_modules/ajv/lib/vocabularies/format/format.ts +120 -0
  537. package/node_modules/ajv/lib/vocabularies/format/index.ts +6 -0
  538. package/node_modules/ajv/lib/vocabularies/jtd/discriminator.ts +89 -0
  539. package/node_modules/ajv/lib/vocabularies/jtd/elements.ts +32 -0
  540. package/node_modules/ajv/lib/vocabularies/jtd/enum.ts +45 -0
  541. package/node_modules/ajv/lib/vocabularies/jtd/error.ts +23 -0
  542. package/node_modules/ajv/lib/vocabularies/jtd/index.ts +37 -0
  543. package/node_modules/ajv/lib/vocabularies/jtd/metadata.ts +24 -0
  544. package/node_modules/ajv/lib/vocabularies/jtd/nullable.ts +21 -0
  545. package/node_modules/ajv/lib/vocabularies/jtd/optionalProperties.ts +15 -0
  546. package/node_modules/ajv/lib/vocabularies/jtd/properties.ts +184 -0
  547. package/node_modules/ajv/lib/vocabularies/jtd/ref.ts +76 -0
  548. package/node_modules/ajv/lib/vocabularies/jtd/type.ts +75 -0
  549. package/node_modules/ajv/lib/vocabularies/jtd/union.ts +12 -0
  550. package/node_modules/ajv/lib/vocabularies/jtd/values.ts +58 -0
  551. package/node_modules/ajv/lib/vocabularies/metadata.ts +17 -0
  552. package/node_modules/ajv/lib/vocabularies/next.ts +8 -0
  553. package/node_modules/ajv/lib/vocabularies/unevaluated/index.ts +7 -0
  554. package/node_modules/ajv/lib/vocabularies/unevaluated/unevaluatedItems.ts +47 -0
  555. package/node_modules/ajv/lib/vocabularies/unevaluated/unevaluatedProperties.ts +85 -0
  556. package/node_modules/ajv/lib/vocabularies/validation/const.ts +28 -0
  557. package/node_modules/ajv/lib/vocabularies/validation/dependentRequired.ts +23 -0
  558. package/node_modules/ajv/lib/vocabularies/validation/enum.ts +54 -0
  559. package/node_modules/ajv/lib/vocabularies/validation/index.ts +49 -0
  560. package/node_modules/ajv/lib/vocabularies/validation/limitContains.ts +16 -0
  561. package/node_modules/ajv/lib/vocabularies/validation/limitItems.ts +26 -0
  562. package/node_modules/ajv/lib/vocabularies/validation/limitLength.ts +30 -0
  563. package/node_modules/ajv/lib/vocabularies/validation/limitNumber.ts +42 -0
  564. package/node_modules/ajv/lib/vocabularies/validation/limitProperties.ts +26 -0
  565. package/node_modules/ajv/lib/vocabularies/validation/multipleOf.ts +34 -0
  566. package/node_modules/ajv/lib/vocabularies/validation/pattern.ts +28 -0
  567. package/node_modules/ajv/lib/vocabularies/validation/required.ts +98 -0
  568. package/node_modules/ajv/lib/vocabularies/validation/uniqueItems.ts +79 -0
  569. package/node_modules/ajv/package.json +126 -0
  570. package/node_modules/fast-deep-equal/LICENSE +21 -0
  571. package/node_modules/fast-deep-equal/README.md +96 -0
  572. package/node_modules/fast-deep-equal/es6/index.d.ts +2 -0
  573. package/node_modules/fast-deep-equal/es6/index.js +72 -0
  574. package/node_modules/fast-deep-equal/es6/react.d.ts +2 -0
  575. package/node_modules/fast-deep-equal/es6/react.js +79 -0
  576. package/node_modules/fast-deep-equal/index.d.ts +4 -0
  577. package/node_modules/fast-deep-equal/index.js +46 -0
  578. package/node_modules/fast-deep-equal/package.json +61 -0
  579. package/node_modules/fast-deep-equal/react.d.ts +2 -0
  580. package/node_modules/fast-deep-equal/react.js +53 -0
  581. package/node_modules/fast-uri/.gitattributes +2 -0
  582. package/node_modules/fast-uri/.github/.stale.yml +21 -0
  583. package/node_modules/fast-uri/.github/dependabot.yml +13 -0
  584. package/node_modules/fast-uri/.github/tests_checker.yml +8 -0
  585. package/node_modules/fast-uri/.github/workflows/ci.yml +101 -0
  586. package/node_modules/fast-uri/.github/workflows/package-manager-ci.yml +24 -0
  587. package/node_modules/fast-uri/LICENSE +32 -0
  588. package/node_modules/fast-uri/README.md +143 -0
  589. package/node_modules/fast-uri/benchmark/benchmark.mjs +159 -0
  590. package/node_modules/fast-uri/benchmark/equal.mjs +51 -0
  591. package/node_modules/fast-uri/benchmark/non-simple-domain.mjs +22 -0
  592. package/node_modules/fast-uri/benchmark/package.json +17 -0
  593. package/node_modules/fast-uri/benchmark/string-array-to-hex-stripped.mjs +24 -0
  594. package/node_modules/fast-uri/benchmark/ws-is-secure.mjs +65 -0
  595. package/node_modules/fast-uri/eslint.config.js +6 -0
  596. package/node_modules/fast-uri/index.js +340 -0
  597. package/node_modules/fast-uri/lib/schemes.js +267 -0
  598. package/node_modules/fast-uri/lib/utils.js +336 -0
  599. package/node_modules/fast-uri/package.json +69 -0
  600. package/node_modules/fast-uri/test/ajv.test.js +43 -0
  601. package/node_modules/fast-uri/test/equal.test.js +108 -0
  602. package/node_modules/fast-uri/test/fixtures/uri-js-parse.json +501 -0
  603. package/node_modules/fast-uri/test/fixtures/uri-js-serialize.json +120 -0
  604. package/node_modules/fast-uri/test/parse.test.js +318 -0
  605. package/node_modules/fast-uri/test/resolve.test.js +78 -0
  606. package/node_modules/fast-uri/test/rfc-3986.test.js +90 -0
  607. package/node_modules/fast-uri/test/serialize.test.js +151 -0
  608. package/node_modules/fast-uri/test/uri-js-compatibility.test.js +33 -0
  609. package/node_modules/fast-uri/test/uri-js.test.js +912 -0
  610. package/node_modules/fast-uri/test/util.test.js +38 -0
  611. package/node_modules/fast-uri/tsconfig.json +9 -0
  612. package/node_modules/fast-uri/types/index.d.ts +60 -0
  613. package/node_modules/fast-uri/types/index.test-d.ts +17 -0
  614. package/node_modules/json-schema-traverse/.eslintrc.yml +27 -0
  615. package/node_modules/json-schema-traverse/.github/FUNDING.yml +2 -0
  616. package/node_modules/json-schema-traverse/.github/workflows/build.yml +28 -0
  617. package/node_modules/json-schema-traverse/.github/workflows/publish.yml +27 -0
  618. package/node_modules/json-schema-traverse/LICENSE +21 -0
  619. package/node_modules/json-schema-traverse/README.md +95 -0
  620. package/node_modules/json-schema-traverse/index.d.ts +40 -0
  621. package/node_modules/json-schema-traverse/index.js +93 -0
  622. package/node_modules/json-schema-traverse/package.json +43 -0
  623. package/node_modules/json-schema-traverse/spec/.eslintrc.yml +6 -0
  624. package/node_modules/json-schema-traverse/spec/fixtures/schema.js +125 -0
  625. package/node_modules/json-schema-traverse/spec/index.spec.js +171 -0
  626. package/node_modules/require-from-string/index.js +34 -0
  627. package/node_modules/require-from-string/license +21 -0
  628. package/node_modules/require-from-string/package.json +28 -0
  629. package/node_modules/require-from-string/readme.md +56 -0
  630. package/package.json +5 -2
  631. package/typedoc.jsonc +10 -0
@@ -0,0 +1,411 @@
1
+ import type Ajv from "../../core"
2
+ import type {SchemaObject} from "../../types"
3
+ import {jtdForms, JTDForm, SchemaObjectMap} from "./types"
4
+ import {SchemaEnv, getCompilingSchema} from ".."
5
+ import {_, str, and, or, nil, not, CodeGen, Code, Name, SafeExpr} from "../codegen"
6
+ import MissingRefError from "../ref_error"
7
+ import N from "../names"
8
+ import {hasPropFunc} from "../../vocabularies/code"
9
+ import {hasRef} from "../../vocabularies/jtd/ref"
10
+ import {intRange, IntType} from "../../vocabularies/jtd/type"
11
+ import {parseJson, parseJsonNumber, parseJsonString} from "../../runtime/parseJson"
12
+ import {useFunc} from "../util"
13
+ import validTimestamp from "../../runtime/timestamp"
14
+
15
+ type GenParse = (cxt: ParseCxt) => void
16
+
17
+ const genParse: {[F in JTDForm]: GenParse} = {
18
+ elements: parseElements,
19
+ values: parseValues,
20
+ discriminator: parseDiscriminator,
21
+ properties: parseProperties,
22
+ optionalProperties: parseProperties,
23
+ enum: parseEnum,
24
+ type: parseType,
25
+ ref: parseRef,
26
+ }
27
+
28
+ interface ParseCxt {
29
+ readonly gen: CodeGen
30
+ readonly self: Ajv // current Ajv instance
31
+ readonly schemaEnv: SchemaEnv
32
+ readonly definitions: SchemaObjectMap
33
+ schema: SchemaObject
34
+ data: Code
35
+ parseName: Name
36
+ char: Name
37
+ }
38
+
39
+ export default function compileParser(
40
+ this: Ajv,
41
+ sch: SchemaEnv,
42
+ definitions: SchemaObjectMap
43
+ ): SchemaEnv {
44
+ const _sch = getCompilingSchema.call(this, sch)
45
+ if (_sch) return _sch
46
+ const {es5, lines} = this.opts.code
47
+ const {ownProperties} = this.opts
48
+ const gen = new CodeGen(this.scope, {es5, lines, ownProperties})
49
+ const parseName = gen.scopeName("parse")
50
+ const cxt: ParseCxt = {
51
+ self: this,
52
+ gen,
53
+ schema: sch.schema as SchemaObject,
54
+ schemaEnv: sch,
55
+ definitions,
56
+ data: N.data,
57
+ parseName,
58
+ char: gen.name("c"),
59
+ }
60
+
61
+ let sourceCode: string | undefined
62
+ try {
63
+ this._compilations.add(sch)
64
+ sch.parseName = parseName
65
+ parserFunction(cxt)
66
+ gen.optimize(this.opts.code.optimize)
67
+ const parseFuncCode = gen.toString()
68
+ sourceCode = `${gen.scopeRefs(N.scope)}return ${parseFuncCode}`
69
+ const makeParse = new Function(`${N.scope}`, sourceCode)
70
+ const parse: (json: string) => unknown = makeParse(this.scope.get())
71
+ this.scope.value(parseName, {ref: parse})
72
+ sch.parse = parse
73
+ } catch (e) {
74
+ if (sourceCode) this.logger.error("Error compiling parser, function code:", sourceCode)
75
+ delete sch.parse
76
+ delete sch.parseName
77
+ throw e
78
+ } finally {
79
+ this._compilations.delete(sch)
80
+ }
81
+ return sch
82
+ }
83
+
84
+ const undef = _`undefined`
85
+
86
+ function parserFunction(cxt: ParseCxt): void {
87
+ const {gen, parseName, char} = cxt
88
+ gen.func(parseName, _`${N.json}, ${N.jsonPos}, ${N.jsonPart}`, false, () => {
89
+ gen.let(N.data)
90
+ gen.let(char)
91
+ gen.assign(_`${parseName}.message`, undef)
92
+ gen.assign(_`${parseName}.position`, undef)
93
+ gen.assign(N.jsonPos, _`${N.jsonPos} || 0`)
94
+ gen.const(N.jsonLen, _`${N.json}.length`)
95
+ parseCode(cxt)
96
+ skipWhitespace(cxt)
97
+ gen.if(N.jsonPart, () => {
98
+ gen.assign(_`${parseName}.position`, N.jsonPos)
99
+ gen.return(N.data)
100
+ })
101
+ gen.if(_`${N.jsonPos} === ${N.jsonLen}`, () => gen.return(N.data))
102
+ jsonSyntaxError(cxt)
103
+ })
104
+ }
105
+
106
+ function parseCode(cxt: ParseCxt): void {
107
+ let form: JTDForm | undefined
108
+ for (const key of jtdForms) {
109
+ if (key in cxt.schema) {
110
+ form = key
111
+ break
112
+ }
113
+ }
114
+ if (form) parseNullable(cxt, genParse[form])
115
+ else parseEmpty(cxt)
116
+ }
117
+
118
+ const parseBoolean = parseBooleanToken(true, parseBooleanToken(false, jsonSyntaxError))
119
+
120
+ function parseNullable(cxt: ParseCxt, parseForm: GenParse): void {
121
+ const {gen, schema, data} = cxt
122
+ if (!schema.nullable) return parseForm(cxt)
123
+ tryParseToken(cxt, "null", parseForm, () => gen.assign(data, null))
124
+ }
125
+
126
+ function parseElements(cxt: ParseCxt): void {
127
+ const {gen, schema, data} = cxt
128
+ parseToken(cxt, "[")
129
+ const ix = gen.let("i", 0)
130
+ gen.assign(data, _`[]`)
131
+ parseItems(cxt, "]", () => {
132
+ const el = gen.let("el")
133
+ parseCode({...cxt, schema: schema.elements, data: el})
134
+ gen.assign(_`${data}[${ix}++]`, el)
135
+ })
136
+ }
137
+
138
+ function parseValues(cxt: ParseCxt): void {
139
+ const {gen, schema, data} = cxt
140
+ parseToken(cxt, "{")
141
+ gen.assign(data, _`{}`)
142
+ parseItems(cxt, "}", () => parseKeyValue(cxt, schema.values))
143
+ }
144
+
145
+ function parseItems(cxt: ParseCxt, endToken: string, block: () => void): void {
146
+ tryParseItems(cxt, endToken, block)
147
+ parseToken(cxt, endToken)
148
+ }
149
+
150
+ function tryParseItems(cxt: ParseCxt, endToken: string, block: () => void): void {
151
+ const {gen} = cxt
152
+ gen.for(_`;${N.jsonPos}<${N.jsonLen} && ${jsonSlice(1)}!==${endToken};`, () => {
153
+ block()
154
+ tryParseToken(cxt, ",", () => gen.break(), hasItem)
155
+ })
156
+
157
+ function hasItem(): void {
158
+ tryParseToken(cxt, endToken, () => {}, jsonSyntaxError)
159
+ }
160
+ }
161
+
162
+ function parseKeyValue(cxt: ParseCxt, schema: SchemaObject): void {
163
+ const {gen} = cxt
164
+ const key = gen.let("key")
165
+ parseString({...cxt, data: key})
166
+ parseToken(cxt, ":")
167
+ parsePropertyValue(cxt, key, schema)
168
+ }
169
+
170
+ function parseDiscriminator(cxt: ParseCxt): void {
171
+ const {gen, data, schema} = cxt
172
+ const {discriminator, mapping} = schema
173
+ parseToken(cxt, "{")
174
+ gen.assign(data, _`{}`)
175
+ const startPos = gen.const("pos", N.jsonPos)
176
+ const value = gen.let("value")
177
+ const tag = gen.let("tag")
178
+ tryParseItems(cxt, "}", () => {
179
+ const key = gen.let("key")
180
+ parseString({...cxt, data: key})
181
+ parseToken(cxt, ":")
182
+ gen.if(
183
+ _`${key} === ${discriminator}`,
184
+ () => {
185
+ parseString({...cxt, data: tag})
186
+ gen.assign(_`${data}[${key}]`, tag)
187
+ gen.break()
188
+ },
189
+ () => parseEmpty({...cxt, data: value}) // can be discarded/skipped
190
+ )
191
+ })
192
+ gen.assign(N.jsonPos, startPos)
193
+ gen.if(_`${tag} === undefined`)
194
+ parsingError(cxt, str`discriminator tag not found`)
195
+ for (const tagValue in mapping) {
196
+ gen.elseIf(_`${tag} === ${tagValue}`)
197
+ parseSchemaProperties({...cxt, schema: mapping[tagValue]}, discriminator)
198
+ }
199
+ gen.else()
200
+ parsingError(cxt, str`discriminator value not in schema`)
201
+ gen.endIf()
202
+ }
203
+
204
+ function parseProperties(cxt: ParseCxt): void {
205
+ const {gen, data} = cxt
206
+ parseToken(cxt, "{")
207
+ gen.assign(data, _`{}`)
208
+ parseSchemaProperties(cxt)
209
+ }
210
+
211
+ function parseSchemaProperties(cxt: ParseCxt, discriminator?: string): void {
212
+ const {gen, schema, data} = cxt
213
+ const {properties, optionalProperties, additionalProperties} = schema
214
+ parseItems(cxt, "}", () => {
215
+ const key = gen.let("key")
216
+ parseString({...cxt, data: key})
217
+ parseToken(cxt, ":")
218
+ gen.if(false)
219
+ parseDefinedProperty(cxt, key, properties)
220
+ parseDefinedProperty(cxt, key, optionalProperties)
221
+ if (discriminator) {
222
+ gen.elseIf(_`${key} === ${discriminator}`)
223
+ const tag = gen.let("tag")
224
+ parseString({...cxt, data: tag}) // can be discarded, it is already assigned
225
+ }
226
+ gen.else()
227
+ if (additionalProperties) {
228
+ parseEmpty({...cxt, data: _`${data}[${key}]`})
229
+ } else {
230
+ parsingError(cxt, str`property ${key} not allowed`)
231
+ }
232
+ gen.endIf()
233
+ })
234
+ if (properties) {
235
+ const hasProp = hasPropFunc(gen)
236
+ const allProps: Code = and(
237
+ ...Object.keys(properties).map((p): Code => _`${hasProp}.call(${data}, ${p})`)
238
+ )
239
+ gen.if(not(allProps), () => parsingError(cxt, str`missing required properties`))
240
+ }
241
+ }
242
+
243
+ function parseDefinedProperty(cxt: ParseCxt, key: Name, schemas: SchemaObjectMap = {}): void {
244
+ const {gen} = cxt
245
+ for (const prop in schemas) {
246
+ gen.elseIf(_`${key} === ${prop}`)
247
+ parsePropertyValue(cxt, key, schemas[prop] as SchemaObject)
248
+ }
249
+ }
250
+
251
+ function parsePropertyValue(cxt: ParseCxt, key: Name, schema: SchemaObject): void {
252
+ parseCode({...cxt, schema, data: _`${cxt.data}[${key}]`})
253
+ }
254
+
255
+ function parseType(cxt: ParseCxt): void {
256
+ const {gen, schema, data, self} = cxt
257
+ switch (schema.type) {
258
+ case "boolean":
259
+ parseBoolean(cxt)
260
+ break
261
+ case "string":
262
+ parseString(cxt)
263
+ break
264
+ case "timestamp": {
265
+ parseString(cxt)
266
+ const vts = useFunc(gen, validTimestamp)
267
+ const {allowDate, parseDate} = self.opts
268
+ const notValid = allowDate ? _`!${vts}(${data}, true)` : _`!${vts}(${data})`
269
+ const fail: Code = parseDate
270
+ ? or(notValid, _`(${data} = new Date(${data}), false)`, _`isNaN(${data}.valueOf())`)
271
+ : notValid
272
+ gen.if(fail, () => parsingError(cxt, str`invalid timestamp`))
273
+ break
274
+ }
275
+ case "float32":
276
+ case "float64":
277
+ parseNumber(cxt)
278
+ break
279
+ default: {
280
+ const t = schema.type as IntType
281
+ if (!self.opts.int32range && (t === "int32" || t === "uint32")) {
282
+ parseNumber(cxt, 16) // 2 ** 53 - max safe integer
283
+ if (t === "uint32") {
284
+ gen.if(_`${data} < 0`, () => parsingError(cxt, str`integer out of range`))
285
+ }
286
+ } else {
287
+ const [min, max, maxDigits] = intRange[t]
288
+ parseNumber(cxt, maxDigits)
289
+ gen.if(_`${data} < ${min} || ${data} > ${max}`, () =>
290
+ parsingError(cxt, str`integer out of range`)
291
+ )
292
+ }
293
+ }
294
+ }
295
+ }
296
+
297
+ function parseString(cxt: ParseCxt): void {
298
+ parseToken(cxt, '"')
299
+ parseWith(cxt, parseJsonString)
300
+ }
301
+
302
+ function parseEnum(cxt: ParseCxt): void {
303
+ const {gen, data, schema} = cxt
304
+ const enumSch = schema.enum
305
+ parseToken(cxt, '"')
306
+ // TODO loopEnum
307
+ gen.if(false)
308
+ for (const value of enumSch) {
309
+ const valueStr = JSON.stringify(value).slice(1) // remove starting quote
310
+ gen.elseIf(_`${jsonSlice(valueStr.length)} === ${valueStr}`)
311
+ gen.assign(data, str`${value}`)
312
+ gen.add(N.jsonPos, valueStr.length)
313
+ }
314
+ gen.else()
315
+ jsonSyntaxError(cxt)
316
+ gen.endIf()
317
+ }
318
+
319
+ function parseNumber(cxt: ParseCxt, maxDigits?: number): void {
320
+ const {gen} = cxt
321
+ skipWhitespace(cxt)
322
+ gen.if(
323
+ _`"-0123456789".indexOf(${jsonSlice(1)}) < 0`,
324
+ () => jsonSyntaxError(cxt),
325
+ () => parseWith(cxt, parseJsonNumber, maxDigits)
326
+ )
327
+ }
328
+
329
+ function parseBooleanToken(bool: boolean, fail: GenParse): GenParse {
330
+ return (cxt) => {
331
+ const {gen, data} = cxt
332
+ tryParseToken(
333
+ cxt,
334
+ `${bool}`,
335
+ () => fail(cxt),
336
+ () => gen.assign(data, bool)
337
+ )
338
+ }
339
+ }
340
+
341
+ function parseRef(cxt: ParseCxt): void {
342
+ const {gen, self, definitions, schema, schemaEnv} = cxt
343
+ const {ref} = schema
344
+ const refSchema = definitions[ref]
345
+ if (!refSchema) throw new MissingRefError(self.opts.uriResolver, "", ref, `No definition ${ref}`)
346
+ if (!hasRef(refSchema)) return parseCode({...cxt, schema: refSchema})
347
+ const {root} = schemaEnv
348
+ const sch = compileParser.call(self, new SchemaEnv({schema: refSchema, root}), definitions)
349
+ partialParse(cxt, getParser(gen, sch), true)
350
+ }
351
+
352
+ function getParser(gen: CodeGen, sch: SchemaEnv): Code {
353
+ return sch.parse
354
+ ? gen.scopeValue("parse", {ref: sch.parse})
355
+ : _`${gen.scopeValue("wrapper", {ref: sch})}.parse`
356
+ }
357
+
358
+ function parseEmpty(cxt: ParseCxt): void {
359
+ parseWith(cxt, parseJson)
360
+ }
361
+
362
+ function parseWith(cxt: ParseCxt, parseFunc: {code: string}, args?: SafeExpr): void {
363
+ partialParse(cxt, useFunc(cxt.gen, parseFunc), args)
364
+ }
365
+
366
+ function partialParse(cxt: ParseCxt, parseFunc: Name, args?: SafeExpr): void {
367
+ const {gen, data} = cxt
368
+ gen.assign(data, _`${parseFunc}(${N.json}, ${N.jsonPos}${args ? _`, ${args}` : nil})`)
369
+ gen.assign(N.jsonPos, _`${parseFunc}.position`)
370
+ gen.if(_`${data} === undefined`, () => parsingError(cxt, _`${parseFunc}.message`))
371
+ }
372
+
373
+ function parseToken(cxt: ParseCxt, tok: string): void {
374
+ tryParseToken(cxt, tok, jsonSyntaxError)
375
+ }
376
+
377
+ function tryParseToken(cxt: ParseCxt, tok: string, fail: GenParse, success?: GenParse): void {
378
+ const {gen} = cxt
379
+ const n = tok.length
380
+ skipWhitespace(cxt)
381
+ gen.if(
382
+ _`${jsonSlice(n)} === ${tok}`,
383
+ () => {
384
+ gen.add(N.jsonPos, n)
385
+ success?.(cxt)
386
+ },
387
+ () => fail(cxt)
388
+ )
389
+ }
390
+
391
+ function skipWhitespace({gen, char: c}: ParseCxt): void {
392
+ gen.code(
393
+ _`while((${c}=${N.json}[${N.jsonPos}],${c}===" "||${c}==="\\n"||${c}==="\\r"||${c}==="\\t"))${N.jsonPos}++;`
394
+ )
395
+ }
396
+
397
+ function jsonSlice(len: number | Name): Code {
398
+ return len === 1
399
+ ? _`${N.json}[${N.jsonPos}]`
400
+ : _`${N.json}.slice(${N.jsonPos}, ${N.jsonPos}+${len})`
401
+ }
402
+
403
+ function jsonSyntaxError(cxt: ParseCxt): void {
404
+ parsingError(cxt, _`"unexpected token " + ${N.json}[${N.jsonPos}]`)
405
+ }
406
+
407
+ function parsingError({gen, parseName}: ParseCxt, msg: Code): void {
408
+ gen.assign(_`${parseName}.message`, msg)
409
+ gen.assign(_`${parseName}.position`, N.jsonPos)
410
+ gen.return(undef)
411
+ }
@@ -0,0 +1,266 @@
1
+ import type Ajv from "../../core"
2
+ import type {SchemaObject} from "../../types"
3
+ import {jtdForms, JTDForm, SchemaObjectMap} from "./types"
4
+ import {SchemaEnv, getCompilingSchema} from ".."
5
+ import {_, str, and, getProperty, CodeGen, Code, Name} from "../codegen"
6
+ import MissingRefError from "../ref_error"
7
+ import N from "../names"
8
+ import {isOwnProperty} from "../../vocabularies/code"
9
+ import {hasRef} from "../../vocabularies/jtd/ref"
10
+ import {useFunc} from "../util"
11
+ import quote from "../../runtime/quote"
12
+
13
+ const genSerialize: {[F in JTDForm]: (cxt: SerializeCxt) => void} = {
14
+ elements: serializeElements,
15
+ values: serializeValues,
16
+ discriminator: serializeDiscriminator,
17
+ properties: serializeProperties,
18
+ optionalProperties: serializeProperties,
19
+ enum: serializeString,
20
+ type: serializeType,
21
+ ref: serializeRef,
22
+ }
23
+
24
+ interface SerializeCxt {
25
+ readonly gen: CodeGen
26
+ readonly self: Ajv // current Ajv instance
27
+ readonly schemaEnv: SchemaEnv
28
+ readonly definitions: SchemaObjectMap
29
+ schema: SchemaObject
30
+ data: Code
31
+ }
32
+
33
+ export default function compileSerializer(
34
+ this: Ajv,
35
+ sch: SchemaEnv,
36
+ definitions: SchemaObjectMap
37
+ ): SchemaEnv {
38
+ const _sch = getCompilingSchema.call(this, sch)
39
+ if (_sch) return _sch
40
+ const {es5, lines} = this.opts.code
41
+ const {ownProperties} = this.opts
42
+ const gen = new CodeGen(this.scope, {es5, lines, ownProperties})
43
+ const serializeName = gen.scopeName("serialize")
44
+ const cxt: SerializeCxt = {
45
+ self: this,
46
+ gen,
47
+ schema: sch.schema as SchemaObject,
48
+ schemaEnv: sch,
49
+ definitions,
50
+ data: N.data,
51
+ }
52
+
53
+ let sourceCode: string | undefined
54
+ try {
55
+ this._compilations.add(sch)
56
+ sch.serializeName = serializeName
57
+ gen.func(serializeName, N.data, false, () => {
58
+ gen.let(N.json, str``)
59
+ serializeCode(cxt)
60
+ gen.return(N.json)
61
+ })
62
+ gen.optimize(this.opts.code.optimize)
63
+ const serializeFuncCode = gen.toString()
64
+ sourceCode = `${gen.scopeRefs(N.scope)}return ${serializeFuncCode}`
65
+ const makeSerialize = new Function(`${N.scope}`, sourceCode)
66
+ const serialize: (data: unknown) => string = makeSerialize(this.scope.get())
67
+ this.scope.value(serializeName, {ref: serialize})
68
+ sch.serialize = serialize
69
+ } catch (e) {
70
+ if (sourceCode) this.logger.error("Error compiling serializer, function code:", sourceCode)
71
+ delete sch.serialize
72
+ delete sch.serializeName
73
+ throw e
74
+ } finally {
75
+ this._compilations.delete(sch)
76
+ }
77
+ return sch
78
+ }
79
+
80
+ function serializeCode(cxt: SerializeCxt): void {
81
+ let form: JTDForm | undefined
82
+ for (const key of jtdForms) {
83
+ if (key in cxt.schema) {
84
+ form = key
85
+ break
86
+ }
87
+ }
88
+ serializeNullable(cxt, form ? genSerialize[form] : serializeEmpty)
89
+ }
90
+
91
+ function serializeNullable(cxt: SerializeCxt, serializeForm: (_cxt: SerializeCxt) => void): void {
92
+ const {gen, schema, data} = cxt
93
+ if (!schema.nullable) return serializeForm(cxt)
94
+ gen.if(
95
+ _`${data} === undefined || ${data} === null`,
96
+ () => gen.add(N.json, _`"null"`),
97
+ () => serializeForm(cxt)
98
+ )
99
+ }
100
+
101
+ function serializeElements(cxt: SerializeCxt): void {
102
+ const {gen, schema, data} = cxt
103
+ gen.add(N.json, str`[`)
104
+ const first = gen.let("first", true)
105
+ gen.forOf("el", data, (el) => {
106
+ addComma(cxt, first)
107
+ serializeCode({...cxt, schema: schema.elements, data: el})
108
+ })
109
+ gen.add(N.json, str`]`)
110
+ }
111
+
112
+ function serializeValues(cxt: SerializeCxt): void {
113
+ const {gen, schema, data} = cxt
114
+ gen.add(N.json, str`{`)
115
+ const first = gen.let("first", true)
116
+ gen.forIn("key", data, (key) => serializeKeyValue(cxt, key, schema.values, first))
117
+ gen.add(N.json, str`}`)
118
+ }
119
+
120
+ function serializeKeyValue(cxt: SerializeCxt, key: Name, schema: SchemaObject, first?: Name): void {
121
+ const {gen, data} = cxt
122
+ addComma(cxt, first)
123
+ serializeString({...cxt, data: key})
124
+ gen.add(N.json, str`:`)
125
+ const value = gen.const("value", _`${data}${getProperty(key)}`)
126
+ serializeCode({...cxt, schema, data: value})
127
+ }
128
+
129
+ function serializeDiscriminator(cxt: SerializeCxt): void {
130
+ const {gen, schema, data} = cxt
131
+ const {discriminator} = schema
132
+ gen.add(N.json, str`{${JSON.stringify(discriminator)}:`)
133
+ const tag = gen.const("tag", _`${data}${getProperty(discriminator)}`)
134
+ serializeString({...cxt, data: tag})
135
+ gen.if(false)
136
+ for (const tagValue in schema.mapping) {
137
+ gen.elseIf(_`${tag} === ${tagValue}`)
138
+ const sch = schema.mapping[tagValue]
139
+ serializeSchemaProperties({...cxt, schema: sch}, discriminator)
140
+ }
141
+ gen.endIf()
142
+ gen.add(N.json, str`}`)
143
+ }
144
+
145
+ function serializeProperties(cxt: SerializeCxt): void {
146
+ const {gen} = cxt
147
+ gen.add(N.json, str`{`)
148
+ serializeSchemaProperties(cxt)
149
+ gen.add(N.json, str`}`)
150
+ }
151
+
152
+ function serializeSchemaProperties(cxt: SerializeCxt, discriminator?: string): void {
153
+ const {gen, schema, data} = cxt
154
+ const {properties, optionalProperties} = schema
155
+ const props = keys(properties)
156
+ const optProps = keys(optionalProperties)
157
+ const allProps = allProperties(props.concat(optProps))
158
+ let first = !discriminator
159
+ let firstProp: Name | undefined
160
+
161
+ for (const key of props) {
162
+ if (first) first = false
163
+ else gen.add(N.json, str`,`)
164
+ serializeProperty(key, properties[key], keyValue(key))
165
+ }
166
+ if (first) firstProp = gen.let("first", true)
167
+ for (const key of optProps) {
168
+ const value = keyValue(key)
169
+ gen.if(and(_`${value} !== undefined`, isOwnProperty(gen, data, key)), () => {
170
+ addComma(cxt, firstProp)
171
+ serializeProperty(key, optionalProperties[key], value)
172
+ })
173
+ }
174
+ if (schema.additionalProperties) {
175
+ gen.forIn("key", data, (key) =>
176
+ gen.if(isAdditional(key, allProps), () => serializeKeyValue(cxt, key, {}, firstProp))
177
+ )
178
+ }
179
+
180
+ function keys(ps?: SchemaObjectMap): string[] {
181
+ return ps ? Object.keys(ps) : []
182
+ }
183
+
184
+ function allProperties(ps: string[]): string[] {
185
+ if (discriminator) ps.push(discriminator)
186
+ if (new Set(ps).size !== ps.length) {
187
+ throw new Error("JTD: properties/optionalProperties/disciminator overlap")
188
+ }
189
+ return ps
190
+ }
191
+
192
+ function keyValue(key: string): Name {
193
+ return gen.const("value", _`${data}${getProperty(key)}`)
194
+ }
195
+
196
+ function serializeProperty(key: string, propSchema: SchemaObject, value: Name): void {
197
+ gen.add(N.json, str`${JSON.stringify(key)}:`)
198
+ serializeCode({...cxt, schema: propSchema, data: value})
199
+ }
200
+
201
+ function isAdditional(key: Name, ps: string[]): Code | true {
202
+ return ps.length ? and(...ps.map((p) => _`${key} !== ${p}`)) : true
203
+ }
204
+ }
205
+
206
+ function serializeType(cxt: SerializeCxt): void {
207
+ const {gen, schema, data} = cxt
208
+ switch (schema.type) {
209
+ case "boolean":
210
+ gen.add(N.json, _`${data} ? "true" : "false"`)
211
+ break
212
+ case "string":
213
+ serializeString(cxt)
214
+ break
215
+ case "timestamp":
216
+ gen.if(
217
+ _`${data} instanceof Date`,
218
+ () => gen.add(N.json, _`'"' + ${data}.toISOString() + '"'`),
219
+ () => serializeString(cxt)
220
+ )
221
+ break
222
+ default:
223
+ serializeNumber(cxt)
224
+ }
225
+ }
226
+
227
+ function serializeString({gen, data}: SerializeCxt): void {
228
+ gen.add(N.json, _`${useFunc(gen, quote)}(${data})`)
229
+ }
230
+
231
+ function serializeNumber({gen, data}: SerializeCxt): void {
232
+ gen.add(N.json, _`"" + ${data}`)
233
+ }
234
+
235
+ function serializeRef(cxt: SerializeCxt): void {
236
+ const {gen, self, data, definitions, schema, schemaEnv} = cxt
237
+ const {ref} = schema
238
+ const refSchema = definitions[ref]
239
+ if (!refSchema) throw new MissingRefError(self.opts.uriResolver, "", ref, `No definition ${ref}`)
240
+ if (!hasRef(refSchema)) return serializeCode({...cxt, schema: refSchema})
241
+ const {root} = schemaEnv
242
+ const sch = compileSerializer.call(self, new SchemaEnv({schema: refSchema, root}), definitions)
243
+ gen.add(N.json, _`${getSerialize(gen, sch)}(${data})`)
244
+ }
245
+
246
+ function getSerialize(gen: CodeGen, sch: SchemaEnv): Code {
247
+ return sch.serialize
248
+ ? gen.scopeValue("serialize", {ref: sch.serialize})
249
+ : _`${gen.scopeValue("wrapper", {ref: sch})}.serialize`
250
+ }
251
+
252
+ function serializeEmpty({gen, data}: SerializeCxt): void {
253
+ gen.add(N.json, _`JSON.stringify(${data})`)
254
+ }
255
+
256
+ function addComma({gen}: SerializeCxt, first?: Name): void {
257
+ if (first) {
258
+ gen.if(
259
+ first,
260
+ () => gen.assign(first, false),
261
+ () => gen.add(N.json, str`,`)
262
+ )
263
+ } else {
264
+ gen.add(N.json, str`,`)
265
+ }
266
+ }
@@ -0,0 +1,16 @@
1
+ import type {SchemaObject} from "../../types"
2
+
3
+ export type SchemaObjectMap = {[Ref in string]?: SchemaObject}
4
+
5
+ export const jtdForms = [
6
+ "elements",
7
+ "values",
8
+ "discriminator",
9
+ "properties",
10
+ "optionalProperties",
11
+ "enum",
12
+ "type",
13
+ "ref",
14
+ ] as const
15
+
16
+ export type JTDForm = (typeof jtdForms)[number]