@nikovirtala/projen-constructs 0.2.1 → 0.2.3

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 (581) hide show
  1. package/.jsii +3 -2
  2. package/lib/components/typedoc.js +1 -1
  3. package/lib/components/vitest.js +1 -1
  4. package/lib/project-generator.js +1 -1
  5. package/lib/projects/awscdk-construct-library.generated.js +1 -1
  6. package/lib/projects/awscdk-typescript-app.generated.js +1 -1
  7. package/lib/projects/jsii.generated.js +1 -1
  8. package/lib/projects/typescript.generated.js +1 -1
  9. package/node_modules/@jsii/spec/LICENSE +202 -0
  10. package/node_modules/@jsii/spec/NOTICE +2 -0
  11. package/node_modules/@jsii/spec/README.md +13 -0
  12. package/node_modules/@jsii/spec/jest.config.mjs +9 -0
  13. package/node_modules/@jsii/spec/lib/assembly-utils.d.ts +59 -0
  14. package/node_modules/@jsii/spec/lib/assembly-utils.js +158 -0
  15. package/node_modules/@jsii/spec/lib/assembly.d.ts +920 -0
  16. package/node_modules/@jsii/spec/lib/assembly.js +203 -0
  17. package/node_modules/@jsii/spec/lib/configuration.d.ts +147 -0
  18. package/node_modules/@jsii/spec/lib/configuration.js +3 -0
  19. package/node_modules/@jsii/spec/lib/index.d.ts +7 -0
  20. package/node_modules/@jsii/spec/lib/index.js +23 -0
  21. package/node_modules/@jsii/spec/lib/name-tree.d.ts +60 -0
  22. package/node_modules/@jsii/spec/lib/name-tree.js +84 -0
  23. package/node_modules/@jsii/spec/lib/redirect.d.ts +33 -0
  24. package/node_modules/@jsii/spec/lib/redirect.js +46 -0
  25. package/node_modules/@jsii/spec/lib/validate-assembly.d.ts +4 -0
  26. package/node_modules/@jsii/spec/lib/validate-assembly.js +29 -0
  27. package/node_modules/@jsii/spec/package.json +41 -0
  28. package/node_modules/@jsii/spec/schema/assembly-redirect.schema.json +29 -0
  29. package/node_modules/@jsii/spec/schema/jsii-spec.schema.json +1110 -0
  30. package/node_modules/@mrgrain/jsii-struct-builder/LICENSE +202 -0
  31. package/node_modules/@mrgrain/jsii-struct-builder/README.md +387 -0
  32. package/node_modules/@mrgrain/jsii-struct-builder/lib/builder/index.d.ts +1 -0
  33. package/node_modules/@mrgrain/jsii-struct-builder/lib/builder/index.js +18 -0
  34. package/node_modules/@mrgrain/jsii-struct-builder/lib/builder/struct.d.ts +144 -0
  35. package/node_modules/@mrgrain/jsii-struct-builder/lib/builder/struct.js +163 -0
  36. package/node_modules/@mrgrain/jsii-struct-builder/lib/index.d.ts +3 -0
  37. package/node_modules/@mrgrain/jsii-struct-builder/lib/index.js +20 -0
  38. package/node_modules/@mrgrain/jsii-struct-builder/lib/private/assembly.d.ts +2 -0
  39. package/node_modules/@mrgrain/jsii-struct-builder/lib/private/assembly.js +76 -0
  40. package/node_modules/@mrgrain/jsii-struct-builder/lib/private/index.d.ts +2 -0
  41. package/node_modules/@mrgrain/jsii-struct-builder/lib/private/index.js +19 -0
  42. package/node_modules/@mrgrain/jsii-struct-builder/lib/private/utils.d.ts +2 -0
  43. package/node_modules/@mrgrain/jsii-struct-builder/lib/private/utils.js +14 -0
  44. package/node_modules/@mrgrain/jsii-struct-builder/lib/projen/index.d.ts +2 -0
  45. package/node_modules/@mrgrain/jsii-struct-builder/lib/projen/index.js +19 -0
  46. package/node_modules/@mrgrain/jsii-struct-builder/lib/projen/projen-struct.d.ts +90 -0
  47. package/node_modules/@mrgrain/jsii-struct-builder/lib/projen/projen-struct.js +112 -0
  48. package/node_modules/@mrgrain/jsii-struct-builder/lib/projen/ts-interface.d.ts +15 -0
  49. package/node_modules/@mrgrain/jsii-struct-builder/lib/projen/ts-interface.js +18 -0
  50. package/node_modules/@mrgrain/jsii-struct-builder/lib/renderer/index.d.ts +1 -0
  51. package/node_modules/@mrgrain/jsii-struct-builder/lib/renderer/index.js +18 -0
  52. package/node_modules/@mrgrain/jsii-struct-builder/lib/renderer/typescript.d.ts +53 -0
  53. package/node_modules/@mrgrain/jsii-struct-builder/lib/renderer/typescript.js +194 -0
  54. package/node_modules/@mrgrain/jsii-struct-builder/package.json +116 -0
  55. package/node_modules/ajv/.runkit_example.js +23 -0
  56. package/node_modules/ajv/LICENSE +22 -0
  57. package/node_modules/ajv/README.md +207 -0
  58. package/node_modules/ajv/dist/2019.d.ts +19 -0
  59. package/node_modules/ajv/dist/2019.js +61 -0
  60. package/node_modules/ajv/dist/2019.js.map +1 -0
  61. package/node_modules/ajv/dist/2020.d.ts +19 -0
  62. package/node_modules/ajv/dist/2020.js +55 -0
  63. package/node_modules/ajv/dist/2020.js.map +1 -0
  64. package/node_modules/ajv/dist/ajv.d.ts +18 -0
  65. package/node_modules/ajv/dist/ajv.js +50 -0
  66. package/node_modules/ajv/dist/ajv.js.map +1 -0
  67. package/node_modules/ajv/dist/compile/codegen/code.d.ts +40 -0
  68. package/node_modules/ajv/dist/compile/codegen/code.js +156 -0
  69. package/node_modules/ajv/dist/compile/codegen/code.js.map +1 -0
  70. package/node_modules/ajv/dist/compile/codegen/index.d.ts +79 -0
  71. package/node_modules/ajv/dist/compile/codegen/index.js +697 -0
  72. package/node_modules/ajv/dist/compile/codegen/index.js.map +1 -0
  73. package/node_modules/ajv/dist/compile/codegen/scope.d.ts +79 -0
  74. package/node_modules/ajv/dist/compile/codegen/scope.js +143 -0
  75. package/node_modules/ajv/dist/compile/codegen/scope.js.map +1 -0
  76. package/node_modules/ajv/dist/compile/errors.d.ts +13 -0
  77. package/node_modules/ajv/dist/compile/errors.js +123 -0
  78. package/node_modules/ajv/dist/compile/errors.js.map +1 -0
  79. package/node_modules/ajv/dist/compile/index.d.ts +80 -0
  80. package/node_modules/ajv/dist/compile/index.js +242 -0
  81. package/node_modules/ajv/dist/compile/index.js.map +1 -0
  82. package/node_modules/ajv/dist/compile/jtd/parse.d.ts +4 -0
  83. package/node_modules/ajv/dist/compile/jtd/parse.js +350 -0
  84. package/node_modules/ajv/dist/compile/jtd/parse.js.map +1 -0
  85. package/node_modules/ajv/dist/compile/jtd/serialize.d.ts +4 -0
  86. package/node_modules/ajv/dist/compile/jtd/serialize.js +229 -0
  87. package/node_modules/ajv/dist/compile/jtd/serialize.js.map +1 -0
  88. package/node_modules/ajv/dist/compile/jtd/types.d.ts +6 -0
  89. package/node_modules/ajv/dist/compile/jtd/types.js +14 -0
  90. package/node_modules/ajv/dist/compile/jtd/types.js.map +1 -0
  91. package/node_modules/ajv/dist/compile/names.d.ts +20 -0
  92. package/node_modules/ajv/dist/compile/names.js +28 -0
  93. package/node_modules/ajv/dist/compile/names.js.map +1 -0
  94. package/node_modules/ajv/dist/compile/ref_error.d.ts +6 -0
  95. package/node_modules/ajv/dist/compile/ref_error.js +12 -0
  96. package/node_modules/ajv/dist/compile/ref_error.js.map +1 -0
  97. package/node_modules/ajv/dist/compile/resolve.d.ts +12 -0
  98. package/node_modules/ajv/dist/compile/resolve.js +155 -0
  99. package/node_modules/ajv/dist/compile/resolve.js.map +1 -0
  100. package/node_modules/ajv/dist/compile/rules.d.ts +28 -0
  101. package/node_modules/ajv/dist/compile/rules.js +26 -0
  102. package/node_modules/ajv/dist/compile/rules.js.map +1 -0
  103. package/node_modules/ajv/dist/compile/util.d.ts +40 -0
  104. package/node_modules/ajv/dist/compile/util.js +178 -0
  105. package/node_modules/ajv/dist/compile/util.js.map +1 -0
  106. package/node_modules/ajv/dist/compile/validate/applicability.d.ts +6 -0
  107. package/node_modules/ajv/dist/compile/validate/applicability.js +19 -0
  108. package/node_modules/ajv/dist/compile/validate/applicability.js.map +1 -0
  109. package/node_modules/ajv/dist/compile/validate/boolSchema.d.ts +4 -0
  110. package/node_modules/ajv/dist/compile/validate/boolSchema.js +50 -0
  111. package/node_modules/ajv/dist/compile/validate/boolSchema.js.map +1 -0
  112. package/node_modules/ajv/dist/compile/validate/dataType.d.ts +17 -0
  113. package/node_modules/ajv/dist/compile/validate/dataType.js +203 -0
  114. package/node_modules/ajv/dist/compile/validate/dataType.js.map +1 -0
  115. package/node_modules/ajv/dist/compile/validate/defaults.d.ts +2 -0
  116. package/node_modules/ajv/dist/compile/validate/defaults.js +35 -0
  117. package/node_modules/ajv/dist/compile/validate/defaults.js.map +1 -0
  118. package/node_modules/ajv/dist/compile/validate/index.d.ts +42 -0
  119. package/node_modules/ajv/dist/compile/validate/index.js +520 -0
  120. package/node_modules/ajv/dist/compile/validate/index.js.map +1 -0
  121. package/node_modules/ajv/dist/compile/validate/keyword.d.ts +8 -0
  122. package/node_modules/ajv/dist/compile/validate/keyword.js +124 -0
  123. package/node_modules/ajv/dist/compile/validate/keyword.js.map +1 -0
  124. package/node_modules/ajv/dist/compile/validate/subschema.d.ts +47 -0
  125. package/node_modules/ajv/dist/compile/validate/subschema.js +81 -0
  126. package/node_modules/ajv/dist/compile/validate/subschema.js.map +1 -0
  127. package/node_modules/ajv/dist/core.d.ts +173 -0
  128. package/node_modules/ajv/dist/core.js +618 -0
  129. package/node_modules/ajv/dist/core.js.map +1 -0
  130. package/node_modules/ajv/dist/jtd.d.ts +47 -0
  131. package/node_modules/ajv/dist/jtd.js +72 -0
  132. package/node_modules/ajv/dist/jtd.js.map +1 -0
  133. package/node_modules/ajv/dist/refs/data.json +13 -0
  134. package/node_modules/ajv/dist/refs/json-schema-2019-09/index.d.ts +2 -0
  135. package/node_modules/ajv/dist/refs/json-schema-2019-09/index.js +28 -0
  136. package/node_modules/ajv/dist/refs/json-schema-2019-09/index.js.map +1 -0
  137. package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/applicator.json +53 -0
  138. package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/content.json +17 -0
  139. package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/core.json +57 -0
  140. package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/format.json +14 -0
  141. package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/meta-data.json +37 -0
  142. package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/validation.json +90 -0
  143. package/node_modules/ajv/dist/refs/json-schema-2019-09/schema.json +39 -0
  144. package/node_modules/ajv/dist/refs/json-schema-2020-12/index.d.ts +2 -0
  145. package/node_modules/ajv/dist/refs/json-schema-2020-12/index.js +30 -0
  146. package/node_modules/ajv/dist/refs/json-schema-2020-12/index.js.map +1 -0
  147. package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/applicator.json +48 -0
  148. package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/content.json +17 -0
  149. package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/core.json +51 -0
  150. package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/format-annotation.json +14 -0
  151. package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/meta-data.json +37 -0
  152. package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/unevaluated.json +15 -0
  153. package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/validation.json +90 -0
  154. package/node_modules/ajv/dist/refs/json-schema-2020-12/schema.json +55 -0
  155. package/node_modules/ajv/dist/refs/json-schema-draft-06.json +137 -0
  156. package/node_modules/ajv/dist/refs/json-schema-draft-07.json +151 -0
  157. package/node_modules/ajv/dist/refs/json-schema-secure.json +88 -0
  158. package/node_modules/ajv/dist/refs/jtd-schema.d.ts +3 -0
  159. package/node_modules/ajv/dist/refs/jtd-schema.js +118 -0
  160. package/node_modules/ajv/dist/refs/jtd-schema.js.map +1 -0
  161. package/node_modules/ajv/dist/runtime/equal.d.ts +6 -0
  162. package/node_modules/ajv/dist/runtime/equal.js +7 -0
  163. package/node_modules/ajv/dist/runtime/equal.js.map +1 -0
  164. package/node_modules/ajv/dist/runtime/parseJson.d.ts +18 -0
  165. package/node_modules/ajv/dist/runtime/parseJson.js +185 -0
  166. package/node_modules/ajv/dist/runtime/parseJson.js.map +1 -0
  167. package/node_modules/ajv/dist/runtime/quote.d.ts +5 -0
  168. package/node_modules/ajv/dist/runtime/quote.js +30 -0
  169. package/node_modules/ajv/dist/runtime/quote.js.map +1 -0
  170. package/node_modules/ajv/dist/runtime/re2.d.ts +6 -0
  171. package/node_modules/ajv/dist/runtime/re2.js +6 -0
  172. package/node_modules/ajv/dist/runtime/re2.js.map +1 -0
  173. package/node_modules/ajv/dist/runtime/timestamp.d.ts +5 -0
  174. package/node_modules/ajv/dist/runtime/timestamp.js +42 -0
  175. package/node_modules/ajv/dist/runtime/timestamp.js.map +1 -0
  176. package/node_modules/ajv/dist/runtime/ucs2length.d.ts +5 -0
  177. package/node_modules/ajv/dist/runtime/ucs2length.js +24 -0
  178. package/node_modules/ajv/dist/runtime/ucs2length.js.map +1 -0
  179. package/node_modules/ajv/dist/runtime/uri.d.ts +6 -0
  180. package/node_modules/ajv/dist/runtime/uri.js +6 -0
  181. package/node_modules/ajv/dist/runtime/uri.js.map +1 -0
  182. package/node_modules/ajv/dist/runtime/validation_error.d.ts +7 -0
  183. package/node_modules/ajv/dist/runtime/validation_error.js +11 -0
  184. package/node_modules/ajv/dist/runtime/validation_error.js.map +1 -0
  185. package/node_modules/ajv/dist/standalone/index.d.ts +6 -0
  186. package/node_modules/ajv/dist/standalone/index.js +90 -0
  187. package/node_modules/ajv/dist/standalone/index.js.map +1 -0
  188. package/node_modules/ajv/dist/standalone/instance.d.ts +12 -0
  189. package/node_modules/ajv/dist/standalone/instance.js +35 -0
  190. package/node_modules/ajv/dist/standalone/instance.js.map +1 -0
  191. package/node_modules/ajv/dist/types/index.d.ts +183 -0
  192. package/node_modules/ajv/dist/types/index.js +3 -0
  193. package/node_modules/ajv/dist/types/index.js.map +1 -0
  194. package/node_modules/ajv/dist/types/json-schema.d.ts +125 -0
  195. package/node_modules/ajv/dist/types/json-schema.js +3 -0
  196. package/node_modules/ajv/dist/types/json-schema.js.map +1 -0
  197. package/node_modules/ajv/dist/types/jtd-schema.d.ts +174 -0
  198. package/node_modules/ajv/dist/types/jtd-schema.js +3 -0
  199. package/node_modules/ajv/dist/types/jtd-schema.js.map +1 -0
  200. package/node_modules/ajv/dist/vocabularies/applicator/additionalItems.d.ts +8 -0
  201. package/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +49 -0
  202. package/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js.map +1 -0
  203. package/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.d.ts +6 -0
  204. package/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +106 -0
  205. package/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js.map +1 -0
  206. package/node_modules/ajv/dist/vocabularies/applicator/allOf.d.ts +3 -0
  207. package/node_modules/ajv/dist/vocabularies/applicator/allOf.js +23 -0
  208. package/node_modules/ajv/dist/vocabularies/applicator/allOf.js.map +1 -0
  209. package/node_modules/ajv/dist/vocabularies/applicator/anyOf.d.ts +4 -0
  210. package/node_modules/ajv/dist/vocabularies/applicator/anyOf.js +12 -0
  211. package/node_modules/ajv/dist/vocabularies/applicator/anyOf.js.map +1 -0
  212. package/node_modules/ajv/dist/vocabularies/applicator/contains.d.ts +7 -0
  213. package/node_modules/ajv/dist/vocabularies/applicator/contains.js +95 -0
  214. package/node_modules/ajv/dist/vocabularies/applicator/contains.js.map +1 -0
  215. package/node_modules/ajv/dist/vocabularies/applicator/dependencies.d.ts +21 -0
  216. package/node_modules/ajv/dist/vocabularies/applicator/dependencies.js +85 -0
  217. package/node_modules/ajv/dist/vocabularies/applicator/dependencies.js.map +1 -0
  218. package/node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.d.ts +3 -0
  219. package/node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.js +11 -0
  220. package/node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.js.map +1 -0
  221. package/node_modules/ajv/dist/vocabularies/applicator/if.d.ts +6 -0
  222. package/node_modules/ajv/dist/vocabularies/applicator/if.js +66 -0
  223. package/node_modules/ajv/dist/vocabularies/applicator/if.js.map +1 -0
  224. package/node_modules/ajv/dist/vocabularies/applicator/index.d.ts +13 -0
  225. package/node_modules/ajv/dist/vocabularies/applicator/index.js +44 -0
  226. package/node_modules/ajv/dist/vocabularies/applicator/index.js.map +1 -0
  227. package/node_modules/ajv/dist/vocabularies/applicator/items.d.ts +5 -0
  228. package/node_modules/ajv/dist/vocabularies/applicator/items.js +52 -0
  229. package/node_modules/ajv/dist/vocabularies/applicator/items.js.map +1 -0
  230. package/node_modules/ajv/dist/vocabularies/applicator/items2020.d.ts +6 -0
  231. package/node_modules/ajv/dist/vocabularies/applicator/items2020.js +30 -0
  232. package/node_modules/ajv/dist/vocabularies/applicator/items2020.js.map +1 -0
  233. package/node_modules/ajv/dist/vocabularies/applicator/not.d.ts +4 -0
  234. package/node_modules/ajv/dist/vocabularies/applicator/not.js +26 -0
  235. package/node_modules/ajv/dist/vocabularies/applicator/not.js.map +1 -0
  236. package/node_modules/ajv/dist/vocabularies/applicator/oneOf.d.ts +6 -0
  237. package/node_modules/ajv/dist/vocabularies/applicator/oneOf.js +60 -0
  238. package/node_modules/ajv/dist/vocabularies/applicator/oneOf.js.map +1 -0
  239. package/node_modules/ajv/dist/vocabularies/applicator/patternProperties.d.ts +3 -0
  240. package/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +75 -0
  241. package/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js.map +1 -0
  242. package/node_modules/ajv/dist/vocabularies/applicator/prefixItems.d.ts +3 -0
  243. package/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +12 -0
  244. package/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js.map +1 -0
  245. package/node_modules/ajv/dist/vocabularies/applicator/properties.d.ts +3 -0
  246. package/node_modules/ajv/dist/vocabularies/applicator/properties.js +54 -0
  247. package/node_modules/ajv/dist/vocabularies/applicator/properties.js.map +1 -0
  248. package/node_modules/ajv/dist/vocabularies/applicator/propertyNames.d.ts +6 -0
  249. package/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +38 -0
  250. package/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js.map +1 -0
  251. package/node_modules/ajv/dist/vocabularies/applicator/thenElse.d.ts +3 -0
  252. package/node_modules/ajv/dist/vocabularies/applicator/thenElse.js +13 -0
  253. package/node_modules/ajv/dist/vocabularies/applicator/thenElse.js.map +1 -0
  254. package/node_modules/ajv/dist/vocabularies/code.d.ts +17 -0
  255. package/node_modules/ajv/dist/vocabularies/code.js +131 -0
  256. package/node_modules/ajv/dist/vocabularies/code.js.map +1 -0
  257. package/node_modules/ajv/dist/vocabularies/core/id.d.ts +3 -0
  258. package/node_modules/ajv/dist/vocabularies/core/id.js +10 -0
  259. package/node_modules/ajv/dist/vocabularies/core/id.js.map +1 -0
  260. package/node_modules/ajv/dist/vocabularies/core/index.d.ts +3 -0
  261. package/node_modules/ajv/dist/vocabularies/core/index.js +16 -0
  262. package/node_modules/ajv/dist/vocabularies/core/index.js.map +1 -0
  263. package/node_modules/ajv/dist/vocabularies/core/ref.d.ts +8 -0
  264. package/node_modules/ajv/dist/vocabularies/core/ref.js +122 -0
  265. package/node_modules/ajv/dist/vocabularies/core/ref.js.map +1 -0
  266. package/node_modules/ajv/dist/vocabularies/discriminator/index.d.ts +5 -0
  267. package/node_modules/ajv/dist/vocabularies/discriminator/index.js +104 -0
  268. package/node_modules/ajv/dist/vocabularies/discriminator/index.js.map +1 -0
  269. package/node_modules/ajv/dist/vocabularies/discriminator/types.d.ts +10 -0
  270. package/node_modules/ajv/dist/vocabularies/discriminator/types.js +9 -0
  271. package/node_modules/ajv/dist/vocabularies/discriminator/types.js.map +1 -0
  272. package/node_modules/ajv/dist/vocabularies/draft2020.d.ts +3 -0
  273. package/node_modules/ajv/dist/vocabularies/draft2020.js +23 -0
  274. package/node_modules/ajv/dist/vocabularies/draft2020.js.map +1 -0
  275. package/node_modules/ajv/dist/vocabularies/draft7.d.ts +3 -0
  276. package/node_modules/ajv/dist/vocabularies/draft7.js +17 -0
  277. package/node_modules/ajv/dist/vocabularies/draft7.js.map +1 -0
  278. package/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.d.ts +5 -0
  279. package/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.js +30 -0
  280. package/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.js.map +1 -0
  281. package/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.d.ts +5 -0
  282. package/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.js +51 -0
  283. package/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.js.map +1 -0
  284. package/node_modules/ajv/dist/vocabularies/dynamic/index.d.ts +3 -0
  285. package/node_modules/ajv/dist/vocabularies/dynamic/index.js +9 -0
  286. package/node_modules/ajv/dist/vocabularies/dynamic/index.js.map +1 -0
  287. package/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.d.ts +3 -0
  288. package/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js +16 -0
  289. package/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js.map +1 -0
  290. package/node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.d.ts +3 -0
  291. package/node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.js +10 -0
  292. package/node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.js.map +1 -0
  293. package/node_modules/ajv/dist/vocabularies/errors.d.ts +9 -0
  294. package/node_modules/ajv/dist/vocabularies/errors.js +3 -0
  295. package/node_modules/ajv/dist/vocabularies/errors.js.map +1 -0
  296. package/node_modules/ajv/dist/vocabularies/format/format.d.ts +8 -0
  297. package/node_modules/ajv/dist/vocabularies/format/format.js +92 -0
  298. package/node_modules/ajv/dist/vocabularies/format/format.js.map +1 -0
  299. package/node_modules/ajv/dist/vocabularies/format/index.d.ts +3 -0
  300. package/node_modules/ajv/dist/vocabularies/format/index.js +6 -0
  301. package/node_modules/ajv/dist/vocabularies/format/index.js.map +1 -0
  302. package/node_modules/ajv/dist/vocabularies/jtd/discriminator.d.ts +6 -0
  303. package/node_modules/ajv/dist/vocabularies/jtd/discriminator.js +71 -0
  304. package/node_modules/ajv/dist/vocabularies/jtd/discriminator.js.map +1 -0
  305. package/node_modules/ajv/dist/vocabularies/jtd/elements.d.ts +5 -0
  306. package/node_modules/ajv/dist/vocabularies/jtd/elements.js +24 -0
  307. package/node_modules/ajv/dist/vocabularies/jtd/elements.js.map +1 -0
  308. package/node_modules/ajv/dist/vocabularies/jtd/enum.d.ts +6 -0
  309. package/node_modules/ajv/dist/vocabularies/jtd/enum.js +43 -0
  310. package/node_modules/ajv/dist/vocabularies/jtd/enum.js.map +1 -0
  311. package/node_modules/ajv/dist/vocabularies/jtd/error.d.ts +9 -0
  312. package/node_modules/ajv/dist/vocabularies/jtd/error.js +20 -0
  313. package/node_modules/ajv/dist/vocabularies/jtd/error.js.map +1 -0
  314. package/node_modules/ajv/dist/vocabularies/jtd/index.d.ts +10 -0
  315. package/node_modules/ajv/dist/vocabularies/jtd/index.js +29 -0
  316. package/node_modules/ajv/dist/vocabularies/jtd/index.js.map +1 -0
  317. package/node_modules/ajv/dist/vocabularies/jtd/metadata.d.ts +5 -0
  318. package/node_modules/ajv/dist/vocabularies/jtd/metadata.js +25 -0
  319. package/node_modules/ajv/dist/vocabularies/jtd/metadata.js.map +1 -0
  320. package/node_modules/ajv/dist/vocabularies/jtd/nullable.d.ts +4 -0
  321. package/node_modules/ajv/dist/vocabularies/jtd/nullable.js +22 -0
  322. package/node_modules/ajv/dist/vocabularies/jtd/nullable.js.map +1 -0
  323. package/node_modules/ajv/dist/vocabularies/jtd/optionalProperties.d.ts +3 -0
  324. package/node_modules/ajv/dist/vocabularies/jtd/optionalProperties.js +15 -0
  325. package/node_modules/ajv/dist/vocabularies/jtd/optionalProperties.js.map +1 -0
  326. package/node_modules/ajv/dist/vocabularies/jtd/properties.d.ts +22 -0
  327. package/node_modules/ajv/dist/vocabularies/jtd/properties.js +149 -0
  328. package/node_modules/ajv/dist/vocabularies/jtd/properties.js.map +1 -0
  329. package/node_modules/ajv/dist/vocabularies/jtd/ref.d.ts +4 -0
  330. package/node_modules/ajv/dist/vocabularies/jtd/ref.js +67 -0
  331. package/node_modules/ajv/dist/vocabularies/jtd/ref.js.map +1 -0
  332. package/node_modules/ajv/dist/vocabularies/jtd/type.d.ts +10 -0
  333. package/node_modules/ajv/dist/vocabularies/jtd/type.js +69 -0
  334. package/node_modules/ajv/dist/vocabularies/jtd/type.js.map +1 -0
  335. package/node_modules/ajv/dist/vocabularies/jtd/union.d.ts +3 -0
  336. package/node_modules/ajv/dist/vocabularies/jtd/union.js +12 -0
  337. package/node_modules/ajv/dist/vocabularies/jtd/union.js.map +1 -0
  338. package/node_modules/ajv/dist/vocabularies/jtd/values.d.ts +5 -0
  339. package/node_modules/ajv/dist/vocabularies/jtd/values.js +51 -0
  340. package/node_modules/ajv/dist/vocabularies/jtd/values.js.map +1 -0
  341. package/node_modules/ajv/dist/vocabularies/metadata.d.ts +3 -0
  342. package/node_modules/ajv/dist/vocabularies/metadata.js +18 -0
  343. package/node_modules/ajv/dist/vocabularies/metadata.js.map +1 -0
  344. package/node_modules/ajv/dist/vocabularies/next.d.ts +3 -0
  345. package/node_modules/ajv/dist/vocabularies/next.js +8 -0
  346. package/node_modules/ajv/dist/vocabularies/next.js.map +1 -0
  347. package/node_modules/ajv/dist/vocabularies/unevaluated/index.d.ts +3 -0
  348. package/node_modules/ajv/dist/vocabularies/unevaluated/index.js +7 -0
  349. package/node_modules/ajv/dist/vocabularies/unevaluated/index.js.map +1 -0
  350. package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.d.ts +6 -0
  351. package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js +40 -0
  352. package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js.map +1 -0
  353. package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.d.ts +6 -0
  354. package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js +65 -0
  355. package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js.map +1 -0
  356. package/node_modules/ajv/dist/vocabularies/validation/const.d.ts +6 -0
  357. package/node_modules/ajv/dist/vocabularies/validation/const.js +25 -0
  358. package/node_modules/ajv/dist/vocabularies/validation/const.js.map +1 -0
  359. package/node_modules/ajv/dist/vocabularies/validation/dependentRequired.d.ts +5 -0
  360. package/node_modules/ajv/dist/vocabularies/validation/dependentRequired.js +12 -0
  361. package/node_modules/ajv/dist/vocabularies/validation/dependentRequired.js.map +1 -0
  362. package/node_modules/ajv/dist/vocabularies/validation/enum.d.ts +8 -0
  363. package/node_modules/ajv/dist/vocabularies/validation/enum.js +48 -0
  364. package/node_modules/ajv/dist/vocabularies/validation/enum.js.map +1 -0
  365. package/node_modules/ajv/dist/vocabularies/validation/index.d.ts +16 -0
  366. package/node_modules/ajv/dist/vocabularies/validation/index.js +33 -0
  367. package/node_modules/ajv/dist/vocabularies/validation/index.js.map +1 -0
  368. package/node_modules/ajv/dist/vocabularies/validation/limitContains.d.ts +3 -0
  369. package/node_modules/ajv/dist/vocabularies/validation/limitContains.js +15 -0
  370. package/node_modules/ajv/dist/vocabularies/validation/limitContains.js.map +1 -0
  371. package/node_modules/ajv/dist/vocabularies/validation/limitItems.d.ts +3 -0
  372. package/node_modules/ajv/dist/vocabularies/validation/limitItems.js +24 -0
  373. package/node_modules/ajv/dist/vocabularies/validation/limitItems.js.map +1 -0
  374. package/node_modules/ajv/dist/vocabularies/validation/limitLength.d.ts +3 -0
  375. package/node_modules/ajv/dist/vocabularies/validation/limitLength.js +27 -0
  376. package/node_modules/ajv/dist/vocabularies/validation/limitLength.js.map +1 -0
  377. package/node_modules/ajv/dist/vocabularies/validation/limitNumber.d.ts +11 -0
  378. package/node_modules/ajv/dist/vocabularies/validation/limitNumber.js +27 -0
  379. package/node_modules/ajv/dist/vocabularies/validation/limitNumber.js.map +1 -0
  380. package/node_modules/ajv/dist/vocabularies/validation/limitProperties.d.ts +3 -0
  381. package/node_modules/ajv/dist/vocabularies/validation/limitProperties.js +24 -0
  382. package/node_modules/ajv/dist/vocabularies/validation/limitProperties.js.map +1 -0
  383. package/node_modules/ajv/dist/vocabularies/validation/multipleOf.d.ts +8 -0
  384. package/node_modules/ajv/dist/vocabularies/validation/multipleOf.js +26 -0
  385. package/node_modules/ajv/dist/vocabularies/validation/multipleOf.js.map +1 -0
  386. package/node_modules/ajv/dist/vocabularies/validation/pattern.d.ts +8 -0
  387. package/node_modules/ajv/dist/vocabularies/validation/pattern.js +24 -0
  388. package/node_modules/ajv/dist/vocabularies/validation/pattern.js.map +1 -0
  389. package/node_modules/ajv/dist/vocabularies/validation/required.d.ts +8 -0
  390. package/node_modules/ajv/dist/vocabularies/validation/required.js +79 -0
  391. package/node_modules/ajv/dist/vocabularies/validation/required.js.map +1 -0
  392. package/node_modules/ajv/dist/vocabularies/validation/uniqueItems.d.ts +9 -0
  393. package/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +64 -0
  394. package/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js.map +1 -0
  395. package/node_modules/ajv/lib/2019.ts +81 -0
  396. package/node_modules/ajv/lib/2020.ts +75 -0
  397. package/node_modules/ajv/lib/ajv.ts +70 -0
  398. package/node_modules/ajv/lib/compile/codegen/code.ts +169 -0
  399. package/node_modules/ajv/lib/compile/codegen/index.ts +852 -0
  400. package/node_modules/ajv/lib/compile/codegen/scope.ts +215 -0
  401. package/node_modules/ajv/lib/compile/errors.ts +184 -0
  402. package/node_modules/ajv/lib/compile/index.ts +324 -0
  403. package/node_modules/ajv/lib/compile/jtd/parse.ts +411 -0
  404. package/node_modules/ajv/lib/compile/jtd/serialize.ts +266 -0
  405. package/node_modules/ajv/lib/compile/jtd/types.ts +16 -0
  406. package/node_modules/ajv/lib/compile/names.ts +27 -0
  407. package/node_modules/ajv/lib/compile/ref_error.ts +13 -0
  408. package/node_modules/ajv/lib/compile/resolve.ts +149 -0
  409. package/node_modules/ajv/lib/compile/rules.ts +50 -0
  410. package/node_modules/ajv/lib/compile/util.ts +213 -0
  411. package/node_modules/ajv/lib/compile/validate/applicability.ts +22 -0
  412. package/node_modules/ajv/lib/compile/validate/boolSchema.ts +47 -0
  413. package/node_modules/ajv/lib/compile/validate/dataType.ts +230 -0
  414. package/node_modules/ajv/lib/compile/validate/defaults.ts +32 -0
  415. package/node_modules/ajv/lib/compile/validate/index.ts +582 -0
  416. package/node_modules/ajv/lib/compile/validate/keyword.ts +171 -0
  417. package/node_modules/ajv/lib/compile/validate/subschema.ts +135 -0
  418. package/node_modules/ajv/lib/core.ts +891 -0
  419. package/node_modules/ajv/lib/jtd.ts +132 -0
  420. package/node_modules/ajv/lib/refs/data.json +13 -0
  421. package/node_modules/ajv/lib/refs/json-schema-2019-09/index.ts +28 -0
  422. package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/applicator.json +53 -0
  423. package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/content.json +17 -0
  424. package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/core.json +57 -0
  425. package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/format.json +14 -0
  426. package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/meta-data.json +37 -0
  427. package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/validation.json +90 -0
  428. package/node_modules/ajv/lib/refs/json-schema-2019-09/schema.json +39 -0
  429. package/node_modules/ajv/lib/refs/json-schema-2020-12/index.ts +30 -0
  430. package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/applicator.json +48 -0
  431. package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/content.json +17 -0
  432. package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/core.json +51 -0
  433. package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/format-annotation.json +14 -0
  434. package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/meta-data.json +37 -0
  435. package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/unevaluated.json +15 -0
  436. package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/validation.json +90 -0
  437. package/node_modules/ajv/lib/refs/json-schema-2020-12/schema.json +55 -0
  438. package/node_modules/ajv/lib/refs/json-schema-draft-06.json +137 -0
  439. package/node_modules/ajv/lib/refs/json-schema-draft-07.json +151 -0
  440. package/node_modules/ajv/lib/refs/json-schema-secure.json +88 -0
  441. package/node_modules/ajv/lib/refs/jtd-schema.ts +130 -0
  442. package/node_modules/ajv/lib/runtime/equal.ts +7 -0
  443. package/node_modules/ajv/lib/runtime/parseJson.ts +177 -0
  444. package/node_modules/ajv/lib/runtime/quote.ts +31 -0
  445. package/node_modules/ajv/lib/runtime/re2.ts +6 -0
  446. package/node_modules/ajv/lib/runtime/timestamp.ts +46 -0
  447. package/node_modules/ajv/lib/runtime/ucs2length.ts +20 -0
  448. package/node_modules/ajv/lib/runtime/uri.ts +6 -0
  449. package/node_modules/ajv/lib/runtime/validation_error.ts +13 -0
  450. package/node_modules/ajv/lib/standalone/index.ts +100 -0
  451. package/node_modules/ajv/lib/standalone/instance.ts +36 -0
  452. package/node_modules/ajv/lib/types/index.ts +244 -0
  453. package/node_modules/ajv/lib/types/json-schema.ts +187 -0
  454. package/node_modules/ajv/lib/types/jtd-schema.ts +273 -0
  455. package/node_modules/ajv/lib/vocabularies/applicator/additionalItems.ts +56 -0
  456. package/node_modules/ajv/lib/vocabularies/applicator/additionalProperties.ts +118 -0
  457. package/node_modules/ajv/lib/vocabularies/applicator/allOf.ts +22 -0
  458. package/node_modules/ajv/lib/vocabularies/applicator/anyOf.ts +14 -0
  459. package/node_modules/ajv/lib/vocabularies/applicator/contains.ts +109 -0
  460. package/node_modules/ajv/lib/vocabularies/applicator/dependencies.ts +112 -0
  461. package/node_modules/ajv/lib/vocabularies/applicator/dependentSchemas.ts +11 -0
  462. package/node_modules/ajv/lib/vocabularies/applicator/if.ts +80 -0
  463. package/node_modules/ajv/lib/vocabularies/applicator/index.ts +53 -0
  464. package/node_modules/ajv/lib/vocabularies/applicator/items.ts +59 -0
  465. package/node_modules/ajv/lib/vocabularies/applicator/items2020.ts +36 -0
  466. package/node_modules/ajv/lib/vocabularies/applicator/not.ts +38 -0
  467. package/node_modules/ajv/lib/vocabularies/applicator/oneOf.ts +82 -0
  468. package/node_modules/ajv/lib/vocabularies/applicator/patternProperties.ts +91 -0
  469. package/node_modules/ajv/lib/vocabularies/applicator/prefixItems.ts +12 -0
  470. package/node_modules/ajv/lib/vocabularies/applicator/properties.ts +57 -0
  471. package/node_modules/ajv/lib/vocabularies/applicator/propertyNames.ts +50 -0
  472. package/node_modules/ajv/lib/vocabularies/applicator/thenElse.ts +13 -0
  473. package/node_modules/ajv/lib/vocabularies/code.ts +168 -0
  474. package/node_modules/ajv/lib/vocabularies/core/id.ts +10 -0
  475. package/node_modules/ajv/lib/vocabularies/core/index.ts +16 -0
  476. package/node_modules/ajv/lib/vocabularies/core/ref.ts +129 -0
  477. package/node_modules/ajv/lib/vocabularies/discriminator/index.ts +113 -0
  478. package/node_modules/ajv/lib/vocabularies/discriminator/types.ts +12 -0
  479. package/node_modules/ajv/lib/vocabularies/draft2020.ts +23 -0
  480. package/node_modules/ajv/lib/vocabularies/draft7.ts +17 -0
  481. package/node_modules/ajv/lib/vocabularies/dynamic/dynamicAnchor.ts +31 -0
  482. package/node_modules/ajv/lib/vocabularies/dynamic/dynamicRef.ts +51 -0
  483. package/node_modules/ajv/lib/vocabularies/dynamic/index.ts +9 -0
  484. package/node_modules/ajv/lib/vocabularies/dynamic/recursiveAnchor.ts +14 -0
  485. package/node_modules/ajv/lib/vocabularies/dynamic/recursiveRef.ts +10 -0
  486. package/node_modules/ajv/lib/vocabularies/errors.ts +18 -0
  487. package/node_modules/ajv/lib/vocabularies/format/format.ts +120 -0
  488. package/node_modules/ajv/lib/vocabularies/format/index.ts +6 -0
  489. package/node_modules/ajv/lib/vocabularies/jtd/discriminator.ts +89 -0
  490. package/node_modules/ajv/lib/vocabularies/jtd/elements.ts +32 -0
  491. package/node_modules/ajv/lib/vocabularies/jtd/enum.ts +45 -0
  492. package/node_modules/ajv/lib/vocabularies/jtd/error.ts +23 -0
  493. package/node_modules/ajv/lib/vocabularies/jtd/index.ts +37 -0
  494. package/node_modules/ajv/lib/vocabularies/jtd/metadata.ts +24 -0
  495. package/node_modules/ajv/lib/vocabularies/jtd/nullable.ts +21 -0
  496. package/node_modules/ajv/lib/vocabularies/jtd/optionalProperties.ts +15 -0
  497. package/node_modules/ajv/lib/vocabularies/jtd/properties.ts +184 -0
  498. package/node_modules/ajv/lib/vocabularies/jtd/ref.ts +76 -0
  499. package/node_modules/ajv/lib/vocabularies/jtd/type.ts +75 -0
  500. package/node_modules/ajv/lib/vocabularies/jtd/union.ts +12 -0
  501. package/node_modules/ajv/lib/vocabularies/jtd/values.ts +58 -0
  502. package/node_modules/ajv/lib/vocabularies/metadata.ts +17 -0
  503. package/node_modules/ajv/lib/vocabularies/next.ts +8 -0
  504. package/node_modules/ajv/lib/vocabularies/unevaluated/index.ts +7 -0
  505. package/node_modules/ajv/lib/vocabularies/unevaluated/unevaluatedItems.ts +47 -0
  506. package/node_modules/ajv/lib/vocabularies/unevaluated/unevaluatedProperties.ts +85 -0
  507. package/node_modules/ajv/lib/vocabularies/validation/const.ts +28 -0
  508. package/node_modules/ajv/lib/vocabularies/validation/dependentRequired.ts +23 -0
  509. package/node_modules/ajv/lib/vocabularies/validation/enum.ts +54 -0
  510. package/node_modules/ajv/lib/vocabularies/validation/index.ts +49 -0
  511. package/node_modules/ajv/lib/vocabularies/validation/limitContains.ts +16 -0
  512. package/node_modules/ajv/lib/vocabularies/validation/limitItems.ts +26 -0
  513. package/node_modules/ajv/lib/vocabularies/validation/limitLength.ts +30 -0
  514. package/node_modules/ajv/lib/vocabularies/validation/limitNumber.ts +42 -0
  515. package/node_modules/ajv/lib/vocabularies/validation/limitProperties.ts +26 -0
  516. package/node_modules/ajv/lib/vocabularies/validation/multipleOf.ts +34 -0
  517. package/node_modules/ajv/lib/vocabularies/validation/pattern.ts +28 -0
  518. package/node_modules/ajv/lib/vocabularies/validation/required.ts +98 -0
  519. package/node_modules/ajv/lib/vocabularies/validation/uniqueItems.ts +79 -0
  520. package/node_modules/ajv/package.json +126 -0
  521. package/node_modules/fast-deep-equal/LICENSE +21 -0
  522. package/node_modules/fast-deep-equal/README.md +96 -0
  523. package/node_modules/fast-deep-equal/es6/index.d.ts +2 -0
  524. package/node_modules/fast-deep-equal/es6/index.js +72 -0
  525. package/node_modules/fast-deep-equal/es6/react.d.ts +2 -0
  526. package/node_modules/fast-deep-equal/es6/react.js +79 -0
  527. package/node_modules/fast-deep-equal/index.d.ts +4 -0
  528. package/node_modules/fast-deep-equal/index.js +46 -0
  529. package/node_modules/fast-deep-equal/package.json +61 -0
  530. package/node_modules/fast-deep-equal/react.d.ts +2 -0
  531. package/node_modules/fast-deep-equal/react.js +53 -0
  532. package/node_modules/fast-uri/.gitattributes +2 -0
  533. package/node_modules/fast-uri/.github/.stale.yml +21 -0
  534. package/node_modules/fast-uri/.github/dependabot.yml +13 -0
  535. package/node_modules/fast-uri/.github/tests_checker.yml +8 -0
  536. package/node_modules/fast-uri/.github/workflows/ci.yml +101 -0
  537. package/node_modules/fast-uri/.github/workflows/package-manager-ci.yml +24 -0
  538. package/node_modules/fast-uri/LICENSE +32 -0
  539. package/node_modules/fast-uri/README.md +143 -0
  540. package/node_modules/fast-uri/benchmark/benchmark.mjs +159 -0
  541. package/node_modules/fast-uri/benchmark/equal.mjs +51 -0
  542. package/node_modules/fast-uri/benchmark/non-simple-domain.mjs +22 -0
  543. package/node_modules/fast-uri/benchmark/package.json +17 -0
  544. package/node_modules/fast-uri/benchmark/string-array-to-hex-stripped.mjs +24 -0
  545. package/node_modules/fast-uri/benchmark/ws-is-secure.mjs +65 -0
  546. package/node_modules/fast-uri/eslint.config.js +6 -0
  547. package/node_modules/fast-uri/index.js +340 -0
  548. package/node_modules/fast-uri/lib/schemes.js +267 -0
  549. package/node_modules/fast-uri/lib/utils.js +336 -0
  550. package/node_modules/fast-uri/package.json +69 -0
  551. package/node_modules/fast-uri/test/ajv.test.js +43 -0
  552. package/node_modules/fast-uri/test/equal.test.js +108 -0
  553. package/node_modules/fast-uri/test/fixtures/uri-js-parse.json +501 -0
  554. package/node_modules/fast-uri/test/fixtures/uri-js-serialize.json +120 -0
  555. package/node_modules/fast-uri/test/parse.test.js +318 -0
  556. package/node_modules/fast-uri/test/resolve.test.js +78 -0
  557. package/node_modules/fast-uri/test/rfc-3986.test.js +90 -0
  558. package/node_modules/fast-uri/test/serialize.test.js +151 -0
  559. package/node_modules/fast-uri/test/uri-js-compatibility.test.js +33 -0
  560. package/node_modules/fast-uri/test/uri-js.test.js +912 -0
  561. package/node_modules/fast-uri/test/util.test.js +38 -0
  562. package/node_modules/fast-uri/tsconfig.json +9 -0
  563. package/node_modules/fast-uri/types/index.d.ts +60 -0
  564. package/node_modules/fast-uri/types/index.test-d.ts +17 -0
  565. package/node_modules/json-schema-traverse/.eslintrc.yml +27 -0
  566. package/node_modules/json-schema-traverse/.github/FUNDING.yml +2 -0
  567. package/node_modules/json-schema-traverse/.github/workflows/build.yml +28 -0
  568. package/node_modules/json-schema-traverse/.github/workflows/publish.yml +27 -0
  569. package/node_modules/json-schema-traverse/LICENSE +21 -0
  570. package/node_modules/json-schema-traverse/README.md +95 -0
  571. package/node_modules/json-schema-traverse/index.d.ts +40 -0
  572. package/node_modules/json-schema-traverse/index.js +93 -0
  573. package/node_modules/json-schema-traverse/package.json +43 -0
  574. package/node_modules/json-schema-traverse/spec/.eslintrc.yml +6 -0
  575. package/node_modules/json-schema-traverse/spec/fixtures/schema.js +125 -0
  576. package/node_modules/json-schema-traverse/spec/index.spec.js +171 -0
  577. package/node_modules/require-from-string/index.js +34 -0
  578. package/node_modules/require-from-string/license +21 -0
  579. package/node_modules/require-from-string/package.json +28 -0
  580. package/node_modules/require-from-string/readme.md +56 -0
  581. package/package.json +3 -2
@@ -0,0 +1,852 @@
1
+ import type {ScopeValueSets, NameValue, ValueScope, ValueScopeName} from "./scope"
2
+ import {_, nil, _Code, Code, Name, UsedNames, CodeItem, addCodeArg, _CodeOrName} from "./code"
3
+ import {Scope, varKinds} from "./scope"
4
+
5
+ export {_, str, strConcat, nil, getProperty, stringify, regexpCode, Name, Code} from "./code"
6
+ export {Scope, ScopeStore, ValueScope, ValueScopeName, ScopeValueSets, varKinds} from "./scope"
7
+
8
+ // type for expressions that can be safely inserted in code without quotes
9
+ export type SafeExpr = Code | number | boolean | null
10
+
11
+ // type that is either Code of function that adds code to CodeGen instance using its methods
12
+ export type Block = Code | (() => void)
13
+
14
+ export const operators = {
15
+ GT: new _Code(">"),
16
+ GTE: new _Code(">="),
17
+ LT: new _Code("<"),
18
+ LTE: new _Code("<="),
19
+ EQ: new _Code("==="),
20
+ NEQ: new _Code("!=="),
21
+ NOT: new _Code("!"),
22
+ OR: new _Code("||"),
23
+ AND: new _Code("&&"),
24
+ ADD: new _Code("+"),
25
+ }
26
+
27
+ abstract class Node {
28
+ abstract readonly names: UsedNames
29
+
30
+ optimizeNodes(): this | ChildNode | ChildNode[] | undefined {
31
+ return this
32
+ }
33
+
34
+ optimizeNames(_names: UsedNames, _constants: Constants): this | undefined {
35
+ return this
36
+ }
37
+
38
+ // get count(): number {
39
+ // return 1
40
+ // }
41
+ }
42
+
43
+ class Def extends Node {
44
+ constructor(
45
+ private readonly varKind: Name,
46
+ private readonly name: Name,
47
+ private rhs?: SafeExpr
48
+ ) {
49
+ super()
50
+ }
51
+
52
+ render({es5, _n}: CGOptions): string {
53
+ const varKind = es5 ? varKinds.var : this.varKind
54
+ const rhs = this.rhs === undefined ? "" : ` = ${this.rhs}`
55
+ return `${varKind} ${this.name}${rhs};` + _n
56
+ }
57
+
58
+ optimizeNames(names: UsedNames, constants: Constants): this | undefined {
59
+ if (!names[this.name.str]) return
60
+ if (this.rhs) this.rhs = optimizeExpr(this.rhs, names, constants)
61
+ return this
62
+ }
63
+
64
+ get names(): UsedNames {
65
+ return this.rhs instanceof _CodeOrName ? this.rhs.names : {}
66
+ }
67
+ }
68
+
69
+ class Assign extends Node {
70
+ constructor(
71
+ readonly lhs: Code,
72
+ public rhs: SafeExpr,
73
+ private readonly sideEffects?: boolean
74
+ ) {
75
+ super()
76
+ }
77
+
78
+ render({_n}: CGOptions): string {
79
+ return `${this.lhs} = ${this.rhs};` + _n
80
+ }
81
+
82
+ optimizeNames(names: UsedNames, constants: Constants): this | undefined {
83
+ if (this.lhs instanceof Name && !names[this.lhs.str] && !this.sideEffects) return
84
+ this.rhs = optimizeExpr(this.rhs, names, constants)
85
+ return this
86
+ }
87
+
88
+ get names(): UsedNames {
89
+ const names = this.lhs instanceof Name ? {} : {...this.lhs.names}
90
+ return addExprNames(names, this.rhs)
91
+ }
92
+ }
93
+
94
+ class AssignOp extends Assign {
95
+ constructor(
96
+ lhs: Code,
97
+ private readonly op: Code,
98
+ rhs: SafeExpr,
99
+ sideEffects?: boolean
100
+ ) {
101
+ super(lhs, rhs, sideEffects)
102
+ }
103
+
104
+ render({_n}: CGOptions): string {
105
+ return `${this.lhs} ${this.op}= ${this.rhs};` + _n
106
+ }
107
+ }
108
+
109
+ class Label extends Node {
110
+ readonly names: UsedNames = {}
111
+ constructor(readonly label: Name) {
112
+ super()
113
+ }
114
+
115
+ render({_n}: CGOptions): string {
116
+ return `${this.label}:` + _n
117
+ }
118
+ }
119
+
120
+ class Break extends Node {
121
+ readonly names: UsedNames = {}
122
+ constructor(readonly label?: Code) {
123
+ super()
124
+ }
125
+
126
+ render({_n}: CGOptions): string {
127
+ const label = this.label ? ` ${this.label}` : ""
128
+ return `break${label};` + _n
129
+ }
130
+ }
131
+
132
+ class Throw extends Node {
133
+ constructor(readonly error: Code) {
134
+ super()
135
+ }
136
+
137
+ render({_n}: CGOptions): string {
138
+ return `throw ${this.error};` + _n
139
+ }
140
+
141
+ get names(): UsedNames {
142
+ return this.error.names
143
+ }
144
+ }
145
+
146
+ class AnyCode extends Node {
147
+ constructor(private code: SafeExpr) {
148
+ super()
149
+ }
150
+
151
+ render({_n}: CGOptions): string {
152
+ return `${this.code};` + _n
153
+ }
154
+
155
+ optimizeNodes(): this | undefined {
156
+ return `${this.code}` ? this : undefined
157
+ }
158
+
159
+ optimizeNames(names: UsedNames, constants: Constants): this {
160
+ this.code = optimizeExpr(this.code, names, constants)
161
+ return this
162
+ }
163
+
164
+ get names(): UsedNames {
165
+ return this.code instanceof _CodeOrName ? this.code.names : {}
166
+ }
167
+ }
168
+
169
+ abstract class ParentNode extends Node {
170
+ constructor(readonly nodes: ChildNode[] = []) {
171
+ super()
172
+ }
173
+
174
+ render(opts: CGOptions): string {
175
+ return this.nodes.reduce((code, n) => code + n.render(opts), "")
176
+ }
177
+
178
+ optimizeNodes(): this | ChildNode | ChildNode[] | undefined {
179
+ const {nodes} = this
180
+ let i = nodes.length
181
+ while (i--) {
182
+ const n = nodes[i].optimizeNodes()
183
+ if (Array.isArray(n)) nodes.splice(i, 1, ...n)
184
+ else if (n) nodes[i] = n
185
+ else nodes.splice(i, 1)
186
+ }
187
+ return nodes.length > 0 ? this : undefined
188
+ }
189
+
190
+ optimizeNames(names: UsedNames, constants: Constants): this | undefined {
191
+ const {nodes} = this
192
+ let i = nodes.length
193
+ while (i--) {
194
+ // iterating backwards improves 1-pass optimization
195
+ const n = nodes[i]
196
+ if (n.optimizeNames(names, constants)) continue
197
+ subtractNames(names, n.names)
198
+ nodes.splice(i, 1)
199
+ }
200
+ return nodes.length > 0 ? this : undefined
201
+ }
202
+
203
+ get names(): UsedNames {
204
+ return this.nodes.reduce((names: UsedNames, n) => addNames(names, n.names), {})
205
+ }
206
+
207
+ // get count(): number {
208
+ // return this.nodes.reduce((c, n) => c + n.count, 1)
209
+ // }
210
+ }
211
+
212
+ abstract class BlockNode extends ParentNode {
213
+ render(opts: CGOptions): string {
214
+ return "{" + opts._n + super.render(opts) + "}" + opts._n
215
+ }
216
+ }
217
+
218
+ class Root extends ParentNode {}
219
+
220
+ class Else extends BlockNode {
221
+ static readonly kind = "else"
222
+ }
223
+
224
+ class If extends BlockNode {
225
+ static readonly kind = "if"
226
+ else?: If | Else
227
+ constructor(
228
+ private condition: Code | boolean,
229
+ nodes?: ChildNode[]
230
+ ) {
231
+ super(nodes)
232
+ }
233
+
234
+ render(opts: CGOptions): string {
235
+ let code = `if(${this.condition})` + super.render(opts)
236
+ if (this.else) code += "else " + this.else.render(opts)
237
+ return code
238
+ }
239
+
240
+ optimizeNodes(): If | ChildNode[] | undefined {
241
+ super.optimizeNodes()
242
+ const cond = this.condition
243
+ if (cond === true) return this.nodes // else is ignored here
244
+ let e = this.else
245
+ if (e) {
246
+ const ns = e.optimizeNodes()
247
+ e = this.else = Array.isArray(ns) ? new Else(ns) : (ns as Else | undefined)
248
+ }
249
+ if (e) {
250
+ if (cond === false) return e instanceof If ? e : e.nodes
251
+ if (this.nodes.length) return this
252
+ return new If(not(cond), e instanceof If ? [e] : e.nodes)
253
+ }
254
+ if (cond === false || !this.nodes.length) return undefined
255
+ return this
256
+ }
257
+
258
+ optimizeNames(names: UsedNames, constants: Constants): this | undefined {
259
+ this.else = this.else?.optimizeNames(names, constants)
260
+ if (!(super.optimizeNames(names, constants) || this.else)) return
261
+ this.condition = optimizeExpr(this.condition, names, constants)
262
+ return this
263
+ }
264
+
265
+ get names(): UsedNames {
266
+ const names = super.names
267
+ addExprNames(names, this.condition)
268
+ if (this.else) addNames(names, this.else.names)
269
+ return names
270
+ }
271
+
272
+ // get count(): number {
273
+ // return super.count + (this.else?.count || 0)
274
+ // }
275
+ }
276
+
277
+ abstract class For extends BlockNode {
278
+ static readonly kind = "for"
279
+ }
280
+
281
+ class ForLoop extends For {
282
+ constructor(private iteration: Code) {
283
+ super()
284
+ }
285
+
286
+ render(opts: CGOptions): string {
287
+ return `for(${this.iteration})` + super.render(opts)
288
+ }
289
+
290
+ optimizeNames(names: UsedNames, constants: Constants): this | undefined {
291
+ if (!super.optimizeNames(names, constants)) return
292
+ this.iteration = optimizeExpr(this.iteration, names, constants)
293
+ return this
294
+ }
295
+
296
+ get names(): UsedNames {
297
+ return addNames(super.names, this.iteration.names)
298
+ }
299
+ }
300
+
301
+ class ForRange extends For {
302
+ constructor(
303
+ private readonly varKind: Name,
304
+ private readonly name: Name,
305
+ private readonly from: SafeExpr,
306
+ private readonly to: SafeExpr
307
+ ) {
308
+ super()
309
+ }
310
+
311
+ render(opts: CGOptions): string {
312
+ const varKind = opts.es5 ? varKinds.var : this.varKind
313
+ const {name, from, to} = this
314
+ return `for(${varKind} ${name}=${from}; ${name}<${to}; ${name}++)` + super.render(opts)
315
+ }
316
+
317
+ get names(): UsedNames {
318
+ const names = addExprNames(super.names, this.from)
319
+ return addExprNames(names, this.to)
320
+ }
321
+ }
322
+
323
+ class ForIter extends For {
324
+ constructor(
325
+ private readonly loop: "of" | "in",
326
+ private readonly varKind: Name,
327
+ private readonly name: Name,
328
+ private iterable: Code
329
+ ) {
330
+ super()
331
+ }
332
+
333
+ render(opts: CGOptions): string {
334
+ return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(opts)
335
+ }
336
+
337
+ optimizeNames(names: UsedNames, constants: Constants): this | undefined {
338
+ if (!super.optimizeNames(names, constants)) return
339
+ this.iterable = optimizeExpr(this.iterable, names, constants)
340
+ return this
341
+ }
342
+
343
+ get names(): UsedNames {
344
+ return addNames(super.names, this.iterable.names)
345
+ }
346
+ }
347
+
348
+ class Func extends BlockNode {
349
+ static readonly kind = "func"
350
+ constructor(
351
+ public name: Name,
352
+ public args: Code,
353
+ public async?: boolean
354
+ ) {
355
+ super()
356
+ }
357
+
358
+ render(opts: CGOptions): string {
359
+ const _async = this.async ? "async " : ""
360
+ return `${_async}function ${this.name}(${this.args})` + super.render(opts)
361
+ }
362
+ }
363
+
364
+ class Return extends ParentNode {
365
+ static readonly kind = "return"
366
+
367
+ render(opts: CGOptions): string {
368
+ return "return " + super.render(opts)
369
+ }
370
+ }
371
+
372
+ class Try extends BlockNode {
373
+ catch?: Catch
374
+ finally?: Finally
375
+
376
+ render(opts: CGOptions): string {
377
+ let code = "try" + super.render(opts)
378
+ if (this.catch) code += this.catch.render(opts)
379
+ if (this.finally) code += this.finally.render(opts)
380
+ return code
381
+ }
382
+
383
+ optimizeNodes(): this {
384
+ super.optimizeNodes()
385
+ this.catch?.optimizeNodes() as Catch | undefined
386
+ this.finally?.optimizeNodes() as Finally | undefined
387
+ return this
388
+ }
389
+
390
+ optimizeNames(names: UsedNames, constants: Constants): this {
391
+ super.optimizeNames(names, constants)
392
+ this.catch?.optimizeNames(names, constants)
393
+ this.finally?.optimizeNames(names, constants)
394
+ return this
395
+ }
396
+
397
+ get names(): UsedNames {
398
+ const names = super.names
399
+ if (this.catch) addNames(names, this.catch.names)
400
+ if (this.finally) addNames(names, this.finally.names)
401
+ return names
402
+ }
403
+
404
+ // get count(): number {
405
+ // return super.count + (this.catch?.count || 0) + (this.finally?.count || 0)
406
+ // }
407
+ }
408
+
409
+ class Catch extends BlockNode {
410
+ static readonly kind = "catch"
411
+ constructor(readonly error: Name) {
412
+ super()
413
+ }
414
+
415
+ render(opts: CGOptions): string {
416
+ return `catch(${this.error})` + super.render(opts)
417
+ }
418
+ }
419
+
420
+ class Finally extends BlockNode {
421
+ static readonly kind = "finally"
422
+ render(opts: CGOptions): string {
423
+ return "finally" + super.render(opts)
424
+ }
425
+ }
426
+
427
+ type StartBlockNode = If | For | Func | Return | Try
428
+
429
+ type LeafNode = Def | Assign | Label | Break | Throw | AnyCode
430
+
431
+ type ChildNode = StartBlockNode | LeafNode
432
+
433
+ type EndBlockNodeType =
434
+ | typeof If
435
+ | typeof Else
436
+ | typeof For
437
+ | typeof Func
438
+ | typeof Return
439
+ | typeof Catch
440
+ | typeof Finally
441
+
442
+ type Constants = Record<string, SafeExpr | undefined>
443
+
444
+ export interface CodeGenOptions {
445
+ es5?: boolean
446
+ lines?: boolean
447
+ ownProperties?: boolean
448
+ }
449
+
450
+ interface CGOptions extends CodeGenOptions {
451
+ _n: "\n" | ""
452
+ }
453
+
454
+ export class CodeGen {
455
+ readonly _scope: Scope
456
+ readonly _extScope: ValueScope
457
+ readonly _values: ScopeValueSets = {}
458
+ private readonly _nodes: ParentNode[]
459
+ private readonly _blockStarts: number[] = []
460
+ private readonly _constants: Constants = {}
461
+ private readonly opts: CGOptions
462
+
463
+ constructor(extScope: ValueScope, opts: CodeGenOptions = {}) {
464
+ this.opts = {...opts, _n: opts.lines ? "\n" : ""}
465
+ this._extScope = extScope
466
+ this._scope = new Scope({parent: extScope})
467
+ this._nodes = [new Root()]
468
+ }
469
+
470
+ toString(): string {
471
+ return this._root.render(this.opts)
472
+ }
473
+
474
+ // returns unique name in the internal scope
475
+ name(prefix: string): Name {
476
+ return this._scope.name(prefix)
477
+ }
478
+
479
+ // reserves unique name in the external scope
480
+ scopeName(prefix: string): ValueScopeName {
481
+ return this._extScope.name(prefix)
482
+ }
483
+
484
+ // reserves unique name in the external scope and assigns value to it
485
+ scopeValue(prefixOrName: ValueScopeName | string, value: NameValue): Name {
486
+ const name = this._extScope.value(prefixOrName, value)
487
+ const vs = this._values[name.prefix] || (this._values[name.prefix] = new Set())
488
+ vs.add(name)
489
+ return name
490
+ }
491
+
492
+ getScopeValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {
493
+ return this._extScope.getValue(prefix, keyOrRef)
494
+ }
495
+
496
+ // return code that assigns values in the external scope to the names that are used internally
497
+ // (same names that were returned by gen.scopeName or gen.scopeValue)
498
+ scopeRefs(scopeName: Name): Code {
499
+ return this._extScope.scopeRefs(scopeName, this._values)
500
+ }
501
+
502
+ scopeCode(): Code {
503
+ return this._extScope.scopeCode(this._values)
504
+ }
505
+
506
+ private _def(
507
+ varKind: Name,
508
+ nameOrPrefix: Name | string,
509
+ rhs?: SafeExpr,
510
+ constant?: boolean
511
+ ): Name {
512
+ const name = this._scope.toName(nameOrPrefix)
513
+ if (rhs !== undefined && constant) this._constants[name.str] = rhs
514
+ this._leafNode(new Def(varKind, name, rhs))
515
+ return name
516
+ }
517
+
518
+ // `const` declaration (`var` in es5 mode)
519
+ const(nameOrPrefix: Name | string, rhs: SafeExpr, _constant?: boolean): Name {
520
+ return this._def(varKinds.const, nameOrPrefix, rhs, _constant)
521
+ }
522
+
523
+ // `let` declaration with optional assignment (`var` in es5 mode)
524
+ let(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {
525
+ return this._def(varKinds.let, nameOrPrefix, rhs, _constant)
526
+ }
527
+
528
+ // `var` declaration with optional assignment
529
+ var(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {
530
+ return this._def(varKinds.var, nameOrPrefix, rhs, _constant)
531
+ }
532
+
533
+ // assignment code
534
+ assign(lhs: Code, rhs: SafeExpr, sideEffects?: boolean): CodeGen {
535
+ return this._leafNode(new Assign(lhs, rhs, sideEffects))
536
+ }
537
+
538
+ // `+=` code
539
+ add(lhs: Code, rhs: SafeExpr): CodeGen {
540
+ return this._leafNode(new AssignOp(lhs, operators.ADD, rhs))
541
+ }
542
+
543
+ // appends passed SafeExpr to code or executes Block
544
+ code(c: Block | SafeExpr): CodeGen {
545
+ if (typeof c == "function") c()
546
+ else if (c !== nil) this._leafNode(new AnyCode(c))
547
+ return this
548
+ }
549
+
550
+ // returns code for object literal for the passed argument list of key-value pairs
551
+ object(...keyValues: [Name | string, SafeExpr | string][]): _Code {
552
+ const code: CodeItem[] = ["{"]
553
+ for (const [key, value] of keyValues) {
554
+ if (code.length > 1) code.push(",")
555
+ code.push(key)
556
+ if (key !== value || this.opts.es5) {
557
+ code.push(":")
558
+ addCodeArg(code, value)
559
+ }
560
+ }
561
+ code.push("}")
562
+ return new _Code(code)
563
+ }
564
+
565
+ // `if` clause (or statement if `thenBody` and, optionally, `elseBody` are passed)
566
+ if(condition: Code | boolean, thenBody?: Block, elseBody?: Block): CodeGen {
567
+ this._blockNode(new If(condition))
568
+
569
+ if (thenBody && elseBody) {
570
+ this.code(thenBody).else().code(elseBody).endIf()
571
+ } else if (thenBody) {
572
+ this.code(thenBody).endIf()
573
+ } else if (elseBody) {
574
+ throw new Error('CodeGen: "else" body without "then" body')
575
+ }
576
+ return this
577
+ }
578
+
579
+ // `else if` clause - invalid without `if` or after `else` clauses
580
+ elseIf(condition: Code | boolean): CodeGen {
581
+ return this._elseNode(new If(condition))
582
+ }
583
+
584
+ // `else` clause - only valid after `if` or `else if` clauses
585
+ else(): CodeGen {
586
+ return this._elseNode(new Else())
587
+ }
588
+
589
+ // end `if` statement (needed if gen.if was used only with condition)
590
+ endIf(): CodeGen {
591
+ return this._endBlockNode(If, Else)
592
+ }
593
+
594
+ private _for(node: For, forBody?: Block): CodeGen {
595
+ this._blockNode(node)
596
+ if (forBody) this.code(forBody).endFor()
597
+ return this
598
+ }
599
+
600
+ // a generic `for` clause (or statement if `forBody` is passed)
601
+ for(iteration: Code, forBody?: Block): CodeGen {
602
+ return this._for(new ForLoop(iteration), forBody)
603
+ }
604
+
605
+ // `for` statement for a range of values
606
+ forRange(
607
+ nameOrPrefix: Name | string,
608
+ from: SafeExpr,
609
+ to: SafeExpr,
610
+ forBody: (index: Name) => void,
611
+ varKind: Code = this.opts.es5 ? varKinds.var : varKinds.let
612
+ ): CodeGen {
613
+ const name = this._scope.toName(nameOrPrefix)
614
+ return this._for(new ForRange(varKind, name, from, to), () => forBody(name))
615
+ }
616
+
617
+ // `for-of` statement (in es5 mode replace with a normal for loop)
618
+ forOf(
619
+ nameOrPrefix: Name | string,
620
+ iterable: Code,
621
+ forBody: (item: Name) => void,
622
+ varKind: Code = varKinds.const
623
+ ): CodeGen {
624
+ const name = this._scope.toName(nameOrPrefix)
625
+ if (this.opts.es5) {
626
+ const arr = iterable instanceof Name ? iterable : this.var("_arr", iterable)
627
+ return this.forRange("_i", 0, _`${arr}.length`, (i) => {
628
+ this.var(name, _`${arr}[${i}]`)
629
+ forBody(name)
630
+ })
631
+ }
632
+ return this._for(new ForIter("of", varKind, name, iterable), () => forBody(name))
633
+ }
634
+
635
+ // `for-in` statement.
636
+ // With option `ownProperties` replaced with a `for-of` loop for object keys
637
+ forIn(
638
+ nameOrPrefix: Name | string,
639
+ obj: Code,
640
+ forBody: (item: Name) => void,
641
+ varKind: Code = this.opts.es5 ? varKinds.var : varKinds.const
642
+ ): CodeGen {
643
+ if (this.opts.ownProperties) {
644
+ return this.forOf(nameOrPrefix, _`Object.keys(${obj})`, forBody)
645
+ }
646
+ const name = this._scope.toName(nameOrPrefix)
647
+ return this._for(new ForIter("in", varKind, name, obj), () => forBody(name))
648
+ }
649
+
650
+ // end `for` loop
651
+ endFor(): CodeGen {
652
+ return this._endBlockNode(For)
653
+ }
654
+
655
+ // `label` statement
656
+ label(label: Name): CodeGen {
657
+ return this._leafNode(new Label(label))
658
+ }
659
+
660
+ // `break` statement
661
+ break(label?: Code): CodeGen {
662
+ return this._leafNode(new Break(label))
663
+ }
664
+
665
+ // `return` statement
666
+ return(value: Block | SafeExpr): CodeGen {
667
+ const node = new Return()
668
+ this._blockNode(node)
669
+ this.code(value)
670
+ if (node.nodes.length !== 1) throw new Error('CodeGen: "return" should have one node')
671
+ return this._endBlockNode(Return)
672
+ }
673
+
674
+ // `try` statement
675
+ try(tryBody: Block, catchCode?: (e: Name) => void, finallyCode?: Block): CodeGen {
676
+ if (!catchCode && !finallyCode) throw new Error('CodeGen: "try" without "catch" and "finally"')
677
+ const node = new Try()
678
+ this._blockNode(node)
679
+ this.code(tryBody)
680
+ if (catchCode) {
681
+ const error = this.name("e")
682
+ this._currNode = node.catch = new Catch(error)
683
+ catchCode(error)
684
+ }
685
+ if (finallyCode) {
686
+ this._currNode = node.finally = new Finally()
687
+ this.code(finallyCode)
688
+ }
689
+ return this._endBlockNode(Catch, Finally)
690
+ }
691
+
692
+ // `throw` statement
693
+ throw(error: Code): CodeGen {
694
+ return this._leafNode(new Throw(error))
695
+ }
696
+
697
+ // start self-balancing block
698
+ block(body?: Block, nodeCount?: number): CodeGen {
699
+ this._blockStarts.push(this._nodes.length)
700
+ if (body) this.code(body).endBlock(nodeCount)
701
+ return this
702
+ }
703
+
704
+ // end the current self-balancing block
705
+ endBlock(nodeCount?: number): CodeGen {
706
+ const len = this._blockStarts.pop()
707
+ if (len === undefined) throw new Error("CodeGen: not in self-balancing block")
708
+ const toClose = this._nodes.length - len
709
+ if (toClose < 0 || (nodeCount !== undefined && toClose !== nodeCount)) {
710
+ throw new Error(`CodeGen: wrong number of nodes: ${toClose} vs ${nodeCount} expected`)
711
+ }
712
+ this._nodes.length = len
713
+ return this
714
+ }
715
+
716
+ // `function` heading (or definition if funcBody is passed)
717
+ func(name: Name, args: Code = nil, async?: boolean, funcBody?: Block): CodeGen {
718
+ this._blockNode(new Func(name, args, async))
719
+ if (funcBody) this.code(funcBody).endFunc()
720
+ return this
721
+ }
722
+
723
+ // end function definition
724
+ endFunc(): CodeGen {
725
+ return this._endBlockNode(Func)
726
+ }
727
+
728
+ optimize(n = 1): void {
729
+ while (n-- > 0) {
730
+ this._root.optimizeNodes()
731
+ this._root.optimizeNames(this._root.names, this._constants)
732
+ }
733
+ }
734
+
735
+ private _leafNode(node: LeafNode): CodeGen {
736
+ this._currNode.nodes.push(node)
737
+ return this
738
+ }
739
+
740
+ private _blockNode(node: StartBlockNode): void {
741
+ this._currNode.nodes.push(node)
742
+ this._nodes.push(node)
743
+ }
744
+
745
+ private _endBlockNode(N1: EndBlockNodeType, N2?: EndBlockNodeType): CodeGen {
746
+ const n = this._currNode
747
+ if (n instanceof N1 || (N2 && n instanceof N2)) {
748
+ this._nodes.pop()
749
+ return this
750
+ }
751
+ throw new Error(`CodeGen: not in block "${N2 ? `${N1.kind}/${N2.kind}` : N1.kind}"`)
752
+ }
753
+
754
+ private _elseNode(node: If | Else): CodeGen {
755
+ const n = this._currNode
756
+ if (!(n instanceof If)) {
757
+ throw new Error('CodeGen: "else" without "if"')
758
+ }
759
+ this._currNode = n.else = node
760
+ return this
761
+ }
762
+
763
+ private get _root(): Root {
764
+ return this._nodes[0] as Root
765
+ }
766
+
767
+ private get _currNode(): ParentNode {
768
+ const ns = this._nodes
769
+ return ns[ns.length - 1]
770
+ }
771
+
772
+ private set _currNode(node: ParentNode) {
773
+ const ns = this._nodes
774
+ ns[ns.length - 1] = node
775
+ }
776
+
777
+ // get nodeCount(): number {
778
+ // return this._root.count
779
+ // }
780
+ }
781
+
782
+ function addNames(names: UsedNames, from: UsedNames): UsedNames {
783
+ for (const n in from) names[n] = (names[n] || 0) + (from[n] || 0)
784
+ return names
785
+ }
786
+
787
+ function addExprNames(names: UsedNames, from: SafeExpr): UsedNames {
788
+ return from instanceof _CodeOrName ? addNames(names, from.names) : names
789
+ }
790
+
791
+ function optimizeExpr<T extends SafeExpr | Code>(expr: T, names: UsedNames, constants: Constants): T
792
+ function optimizeExpr(expr: SafeExpr, names: UsedNames, constants: Constants): SafeExpr {
793
+ if (expr instanceof Name) return replaceName(expr)
794
+ if (!canOptimize(expr)) return expr
795
+ return new _Code(
796
+ expr._items.reduce((items: CodeItem[], c: SafeExpr | string) => {
797
+ if (c instanceof Name) c = replaceName(c)
798
+ if (c instanceof _Code) items.push(...c._items)
799
+ else items.push(c)
800
+ return items
801
+ }, [])
802
+ )
803
+
804
+ function replaceName(n: Name): SafeExpr {
805
+ const c = constants[n.str]
806
+ if (c === undefined || names[n.str] !== 1) return n
807
+ delete names[n.str]
808
+ return c
809
+ }
810
+
811
+ function canOptimize(e: SafeExpr): e is _Code {
812
+ return (
813
+ e instanceof _Code &&
814
+ e._items.some(
815
+ (c) => c instanceof Name && names[c.str] === 1 && constants[c.str] !== undefined
816
+ )
817
+ )
818
+ }
819
+ }
820
+
821
+ function subtractNames(names: UsedNames, from: UsedNames): void {
822
+ for (const n in from) names[n] = (names[n] || 0) - (from[n] || 0)
823
+ }
824
+
825
+ export function not<T extends Code | SafeExpr>(x: T): T
826
+ export function not(x: Code | SafeExpr): Code | SafeExpr {
827
+ return typeof x == "boolean" || typeof x == "number" || x === null ? !x : _`!${par(x)}`
828
+ }
829
+
830
+ const andCode = mappend(operators.AND)
831
+
832
+ // boolean AND (&&) expression with the passed arguments
833
+ export function and(...args: Code[]): Code {
834
+ return args.reduce(andCode)
835
+ }
836
+
837
+ const orCode = mappend(operators.OR)
838
+
839
+ // boolean OR (||) expression with the passed arguments
840
+ export function or(...args: Code[]): Code {
841
+ return args.reduce(orCode)
842
+ }
843
+
844
+ type MAppend = (x: Code, y: Code) => Code
845
+
846
+ function mappend(op: Code): MAppend {
847
+ return (x, y) => (x === nil ? y : y === nil ? x : _`${par(x)} ${op} ${par(y)}`)
848
+ }
849
+
850
+ function par(x: Code): Code {
851
+ return x instanceof Name ? x : _`(${x})`
852
+ }