@blade-hq/agent-client 1.1.1 → 1.1.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 (583) hide show
  1. package/README.md +48 -25
  2. package/dist/blade-client.d.ts +2 -14
  3. package/dist/index.d.ts +5 -2
  4. package/dist/index.js +212 -106
  5. package/dist/index.js.map +1 -1
  6. package/dist/resources/models.d.ts +15 -0
  7. package/dist/resources/sessions.d.ts +8 -1
  8. package/dist/session/agent-session.d.ts +10 -0
  9. package/dist/session/definition.d.ts +49 -0
  10. package/dist/shared/projection/helpers.d.ts +1 -1
  11. package/dist/types/rest.d.ts +378 -10
  12. package/dist/version.d.ts +4 -42
  13. package/node_modules/@ark/schema/LICENSE +7 -0
  14. package/node_modules/@ark/schema/README.md +18 -0
  15. package/node_modules/@ark/schema/out/config.d.ts +58 -0
  16. package/node_modules/@ark/schema/out/config.js +95 -0
  17. package/node_modules/@ark/schema/out/constraint.d.ts +67 -0
  18. package/node_modules/@ark/schema/out/constraint.js +136 -0
  19. package/node_modules/@ark/schema/out/generic.d.ts +73 -0
  20. package/node_modules/@ark/schema/out/generic.js +76 -0
  21. package/node_modules/@ark/schema/out/index.d.ts +47 -0
  22. package/node_modules/@ark/schema/out/index.js +47 -0
  23. package/node_modules/@ark/schema/out/intrinsic.d.ts +24 -0
  24. package/node_modules/@ark/schema/out/intrinsic.js +56 -0
  25. package/node_modules/@ark/schema/out/kinds.d.ts +73 -0
  26. package/node_modules/@ark/schema/out/kinds.js +71 -0
  27. package/node_modules/@ark/schema/out/module.d.ts +24 -0
  28. package/node_modules/@ark/schema/out/module.js +15 -0
  29. package/node_modules/@ark/schema/out/node.d.ts +154 -0
  30. package/node_modules/@ark/schema/out/node.js +438 -0
  31. package/node_modules/@ark/schema/out/parse.d.ts +52 -0
  32. package/node_modules/@ark/schema/out/parse.js +215 -0
  33. package/node_modules/@ark/schema/out/predicate.d.ts +52 -0
  34. package/node_modules/@ark/schema/out/predicate.js +63 -0
  35. package/node_modules/@ark/schema/out/refinements/after.d.ts +41 -0
  36. package/node_modules/@ark/schema/out/refinements/after.js +35 -0
  37. package/node_modules/@ark/schema/out/refinements/before.d.ts +41 -0
  38. package/node_modules/@ark/schema/out/refinements/before.js +41 -0
  39. package/node_modules/@ark/schema/out/refinements/divisor.d.ts +43 -0
  40. package/node_modules/@ark/schema/out/refinements/divisor.js +58 -0
  41. package/node_modules/@ark/schema/out/refinements/exactLength.d.ts +49 -0
  42. package/node_modules/@ark/schema/out/refinements/exactLength.js +55 -0
  43. package/node_modules/@ark/schema/out/refinements/kinds.d.ts +34 -0
  44. package/node_modules/@ark/schema/out/refinements/kinds.js +25 -0
  45. package/node_modules/@ark/schema/out/refinements/max.d.ts +37 -0
  46. package/node_modules/@ark/schema/out/refinements/max.js +45 -0
  47. package/node_modules/@ark/schema/out/refinements/maxLength.d.ts +40 -0
  48. package/node_modules/@ark/schema/out/refinements/maxLength.js +49 -0
  49. package/node_modules/@ark/schema/out/refinements/min.d.ts +37 -0
  50. package/node_modules/@ark/schema/out/refinements/min.js +39 -0
  51. package/node_modules/@ark/schema/out/refinements/minLength.d.ts +40 -0
  52. package/node_modules/@ark/schema/out/refinements/minLength.js +47 -0
  53. package/node_modules/@ark/schema/out/refinements/pattern.d.ts +43 -0
  54. package/node_modules/@ark/schema/out/refinements/pattern.js +52 -0
  55. package/node_modules/@ark/schema/out/refinements/range.d.ts +106 -0
  56. package/node_modules/@ark/schema/out/refinements/range.js +103 -0
  57. package/node_modules/@ark/schema/out/roots/alias.d.ts +45 -0
  58. package/node_modules/@ark/schema/out/roots/alias.js +115 -0
  59. package/node_modules/@ark/schema/out/roots/basis.d.ts +12 -0
  60. package/node_modules/@ark/schema/out/roots/basis.js +26 -0
  61. package/node_modules/@ark/schema/out/roots/domain.d.ts +45 -0
  62. package/node_modules/@ark/schema/out/roots/domain.js +72 -0
  63. package/node_modules/@ark/schema/out/roots/intersection.d.ts +98 -0
  64. package/node_modules/@ark/schema/out/roots/intersection.js +292 -0
  65. package/node_modules/@ark/schema/out/roots/morph.d.ts +62 -0
  66. package/node_modules/@ark/schema/out/roots/morph.js +159 -0
  67. package/node_modules/@ark/schema/out/roots/proto.d.ts +53 -0
  68. package/node_modules/@ark/schema/out/roots/proto.js +101 -0
  69. package/node_modules/@ark/schema/out/roots/root.d.ts +145 -0
  70. package/node_modules/@ark/schema/out/roots/root.js +455 -0
  71. package/node_modules/@ark/schema/out/roots/union.d.ts +99 -0
  72. package/node_modules/@ark/schema/out/roots/union.js +718 -0
  73. package/node_modules/@ark/schema/out/roots/unit.d.ts +41 -0
  74. package/node_modules/@ark/schema/out/roots/unit.js +86 -0
  75. package/node_modules/@ark/schema/out/roots/utils.d.ts +3 -0
  76. package/node_modules/@ark/schema/out/roots/utils.js +6 -0
  77. package/node_modules/@ark/schema/out/scope.d.ts +158 -0
  78. package/node_modules/@ark/schema/out/scope.js +481 -0
  79. package/node_modules/@ark/schema/out/shared/compile.d.ts +62 -0
  80. package/node_modules/@ark/schema/out/shared/compile.js +145 -0
  81. package/node_modules/@ark/schema/out/shared/declare.d.ts +80 -0
  82. package/node_modules/@ark/schema/out/shared/declare.js +1 -0
  83. package/node_modules/@ark/schema/out/shared/disjoint.d.ts +41 -0
  84. package/node_modules/@ark/schema/out/shared/disjoint.js +65 -0
  85. package/node_modules/@ark/schema/out/shared/errors.d.ts +145 -0
  86. package/node_modules/@ark/schema/out/shared/errors.js +252 -0
  87. package/node_modules/@ark/schema/out/shared/implement.d.ts +151 -0
  88. package/node_modules/@ark/schema/out/shared/implement.js +98 -0
  89. package/node_modules/@ark/schema/out/shared/intersections.d.ts +10 -0
  90. package/node_modules/@ark/schema/out/shared/intersections.js +132 -0
  91. package/node_modules/@ark/schema/out/shared/jsonSchema.d.ts +93 -0
  92. package/node_modules/@ark/schema/out/shared/jsonSchema.js +1 -0
  93. package/node_modules/@ark/schema/out/shared/registry.d.ts +7 -0
  94. package/node_modules/@ark/schema/out/shared/registry.js +10 -0
  95. package/node_modules/@ark/schema/out/shared/standardSchema.d.ts +122 -0
  96. package/node_modules/@ark/schema/out/shared/standardSchema.js +2 -0
  97. package/node_modules/@ark/schema/out/shared/toJsonSchema.d.ts +139 -0
  98. package/node_modules/@ark/schema/out/shared/toJsonSchema.js +40 -0
  99. package/node_modules/@ark/schema/out/shared/traversal.d.ts +117 -0
  100. package/node_modules/@ark/schema/out/shared/traversal.js +226 -0
  101. package/node_modules/@ark/schema/out/shared/utils.d.ts +34 -0
  102. package/node_modules/@ark/schema/out/shared/utils.js +8 -0
  103. package/node_modules/@ark/schema/out/structure/index.d.ts +46 -0
  104. package/node_modules/@ark/schema/out/structure/index.js +89 -0
  105. package/node_modules/@ark/schema/out/structure/optional.d.ts +49 -0
  106. package/node_modules/@ark/schema/out/structure/optional.js +127 -0
  107. package/node_modules/@ark/schema/out/structure/prop.d.ts +45 -0
  108. package/node_modules/@ark/schema/out/structure/prop.js +85 -0
  109. package/node_modules/@ark/schema/out/structure/required.d.ts +39 -0
  110. package/node_modules/@ark/schema/out/structure/required.js +38 -0
  111. package/node_modules/@ark/schema/out/structure/sequence.d.ts +110 -0
  112. package/node_modules/@ark/schema/out/structure/sequence.js +521 -0
  113. package/node_modules/@ark/schema/out/structure/shared.d.ts +4 -0
  114. package/node_modules/@ark/schema/out/structure/shared.js +4 -0
  115. package/node_modules/@ark/schema/out/structure/structure.d.ts +113 -0
  116. package/node_modules/@ark/schema/out/structure/structure.js +747 -0
  117. package/node_modules/@ark/schema/package.json +51 -0
  118. package/node_modules/@ark/util/LICENSE +7 -0
  119. package/node_modules/@ark/util/out/arrays.d.ts +166 -0
  120. package/node_modules/@ark/util/out/arrays.js +147 -0
  121. package/node_modules/@ark/util/out/clone.d.ts +4 -0
  122. package/node_modules/@ark/util/out/clone.js +33 -0
  123. package/node_modules/@ark/util/out/describe.d.ts +25 -0
  124. package/node_modules/@ark/util/out/describe.js +1 -0
  125. package/node_modules/@ark/util/out/domain.d.ts +48 -0
  126. package/node_modules/@ark/util/out/domain.js +25 -0
  127. package/node_modules/@ark/util/out/errors.d.ts +29 -0
  128. package/node_modules/@ark/util/out/errors.js +17 -0
  129. package/node_modules/@ark/util/out/flatMorph.d.ts +41 -0
  130. package/node_modules/@ark/util/out/flatMorph.js +24 -0
  131. package/node_modules/@ark/util/out/functions.d.ts +33 -0
  132. package/node_modules/@ark/util/out/functions.js +53 -0
  133. package/node_modules/@ark/util/out/generics.d.ts +59 -0
  134. package/node_modules/@ark/util/out/generics.js +5 -0
  135. package/node_modules/@ark/util/out/get.d.ts +9 -0
  136. package/node_modules/@ark/util/out/get.js +7 -0
  137. package/node_modules/@ark/util/out/hkt.d.ts +27 -0
  138. package/node_modules/@ark/util/out/hkt.js +5 -0
  139. package/node_modules/@ark/util/out/index.d.ts +24 -0
  140. package/node_modules/@ark/util/out/index.js +24 -0
  141. package/node_modules/@ark/util/out/intersections.d.ts +50 -0
  142. package/node_modules/@ark/util/out/intersections.js +1 -0
  143. package/node_modules/@ark/util/out/isomorphic.d.ts +5 -0
  144. package/node_modules/@ark/util/out/isomorphic.js +19 -0
  145. package/node_modules/@ark/util/out/keys.d.ts +18 -0
  146. package/node_modules/@ark/util/out/keys.js +1 -0
  147. package/node_modules/@ark/util/out/lazily.d.ts +1 -0
  148. package/node_modules/@ark/util/out/lazily.js +16 -0
  149. package/node_modules/@ark/util/out/numbers.d.ts +72 -0
  150. package/node_modules/@ark/util/out/numbers.js +138 -0
  151. package/node_modules/@ark/util/out/objectKinds.d.ts +205 -0
  152. package/node_modules/@ark/util/out/objectKinds.js +150 -0
  153. package/node_modules/@ark/util/out/path.d.ts +22 -0
  154. package/node_modules/@ark/util/out/path.js +65 -0
  155. package/node_modules/@ark/util/out/primitive.d.ts +16 -0
  156. package/node_modules/@ark/util/out/primitive.js +3 -0
  157. package/node_modules/@ark/util/out/records.d.ts +183 -0
  158. package/node_modules/@ark/util/out/records.js +63 -0
  159. package/node_modules/@ark/util/out/registry.d.ts +21 -0
  160. package/node_modules/@ark/util/out/registry.js +49 -0
  161. package/node_modules/@ark/util/out/scanner.d.ts +44 -0
  162. package/node_modules/@ark/util/out/scanner.js +87 -0
  163. package/node_modules/@ark/util/out/serialize.d.ts +34 -0
  164. package/node_modules/@ark/util/out/serialize.js +150 -0
  165. package/node_modules/@ark/util/out/strings.d.ts +33 -0
  166. package/node_modules/@ark/util/out/strings.js +59 -0
  167. package/node_modules/@ark/util/out/traits.d.ts +89 -0
  168. package/node_modules/@ark/util/out/traits.js +75 -0
  169. package/node_modules/@ark/util/out/unionToTuple.d.ts +14 -0
  170. package/node_modules/@ark/util/out/unionToTuple.js +1 -0
  171. package/node_modules/@ark/util/package.json +39 -0
  172. package/node_modules/@ark/util/tsconfig.base.json +18 -0
  173. package/node_modules/@socket.io/component-emitter/LICENSE +24 -0
  174. package/node_modules/@socket.io/component-emitter/Readme.md +79 -0
  175. package/node_modules/@socket.io/component-emitter/lib/cjs/index.d.ts +179 -0
  176. package/node_modules/@socket.io/component-emitter/lib/cjs/index.js +176 -0
  177. package/node_modules/@socket.io/component-emitter/lib/cjs/package.json +4 -0
  178. package/node_modules/@socket.io/component-emitter/lib/esm/index.d.ts +179 -0
  179. package/node_modules/@socket.io/component-emitter/lib/esm/index.js +169 -0
  180. package/node_modules/@socket.io/component-emitter/lib/esm/package.json +4 -0
  181. package/node_modules/@socket.io/component-emitter/package.json +28 -0
  182. package/node_modules/arkregex/LICENSE +7 -0
  183. package/node_modules/arkregex/README.md +61 -0
  184. package/node_modules/arkregex/out/charset.d.ts +15 -0
  185. package/node_modules/arkregex/out/charset.js +1 -0
  186. package/node_modules/arkregex/out/escape.d.ts +29 -0
  187. package/node_modules/arkregex/out/escape.js +10 -0
  188. package/node_modules/arkregex/out/execArray.d.ts +23 -0
  189. package/node_modules/arkregex/out/execArray.js +1 -0
  190. package/node_modules/arkregex/out/group.d.ts +33 -0
  191. package/node_modules/arkregex/out/group.js +6 -0
  192. package/node_modules/arkregex/out/index.d.ts +1 -0
  193. package/node_modules/arkregex/out/index.js +1 -0
  194. package/node_modules/arkregex/out/parse.d.ts +10 -0
  195. package/node_modules/arkregex/out/parse.js +1 -0
  196. package/node_modules/arkregex/out/quantify.d.ts +43 -0
  197. package/node_modules/arkregex/out/quantify.js +2 -0
  198. package/node_modules/arkregex/out/regex.d.ts +38 -0
  199. package/node_modules/arkregex/out/regex.js +2 -0
  200. package/node_modules/arkregex/out/state.d.ts +359 -0
  201. package/node_modules/arkregex/out/state.js +2 -0
  202. package/node_modules/arkregex/package.json +42 -0
  203. package/node_modules/arktype/LICENSE +7 -0
  204. package/node_modules/arktype/README.md +157 -0
  205. package/node_modules/arktype/out/attributes.d.ts +104 -0
  206. package/node_modules/arktype/out/attributes.js +3 -0
  207. package/node_modules/arktype/out/config.d.ts +35 -0
  208. package/node_modules/arktype/out/config.js +3 -0
  209. package/node_modules/arktype/out/declare.d.ts +35 -0
  210. package/node_modules/arktype/out/declare.js +1 -0
  211. package/node_modules/arktype/out/fn.d.ts +61 -0
  212. package/node_modules/arktype/out/fn.js +54 -0
  213. package/node_modules/arktype/out/generic.d.ts +118 -0
  214. package/node_modules/arktype/out/generic.js +37 -0
  215. package/node_modules/arktype/out/index.d.ts +12 -0
  216. package/node_modules/arktype/out/index.js +9 -0
  217. package/node_modules/arktype/out/keywords/Array.d.ts +20 -0
  218. package/node_modules/arktype/out/keywords/Array.js +21 -0
  219. package/node_modules/arktype/out/keywords/FormData.d.ts +15 -0
  220. package/node_modules/arktype/out/keywords/FormData.js +40 -0
  221. package/node_modules/arktype/out/keywords/TypedArray.d.ts +19 -0
  222. package/node_modules/arktype/out/keywords/TypedArray.js +16 -0
  223. package/node_modules/arktype/out/keywords/builtins.d.ts +18 -0
  224. package/node_modules/arktype/out/keywords/builtins.js +11 -0
  225. package/node_modules/arktype/out/keywords/constructors.d.ts +31 -0
  226. package/node_modules/arktype/out/keywords/constructors.js +16 -0
  227. package/node_modules/arktype/out/keywords/keywords.d.ts +70 -0
  228. package/node_modules/arktype/out/keywords/keywords.js +48 -0
  229. package/node_modules/arktype/out/keywords/number.d.ts +23 -0
  230. package/node_modules/arktype/out/keywords/number.js +49 -0
  231. package/node_modules/arktype/out/keywords/string.d.ts +334 -0
  232. package/node_modules/arktype/out/keywords/string.js +463 -0
  233. package/node_modules/arktype/out/keywords/ts.d.ts +108 -0
  234. package/node_modules/arktype/out/keywords/ts.js +82 -0
  235. package/node_modules/arktype/out/match.d.ts +152 -0
  236. package/node_modules/arktype/out/match.js +95 -0
  237. package/node_modules/arktype/out/module.d.ts +22 -0
  238. package/node_modules/arktype/out/module.js +3 -0
  239. package/node_modules/arktype/out/nary.d.ts +473 -0
  240. package/node_modules/arktype/out/nary.js +1 -0
  241. package/node_modules/arktype/out/parser/ast/bounds.d.ts +18 -0
  242. package/node_modules/arktype/out/parser/ast/bounds.js +1 -0
  243. package/node_modules/arktype/out/parser/ast/default.d.ts +8 -0
  244. package/node_modules/arktype/out/parser/ast/default.js +1 -0
  245. package/node_modules/arktype/out/parser/ast/divisor.d.ts +9 -0
  246. package/node_modules/arktype/out/parser/ast/divisor.js +1 -0
  247. package/node_modules/arktype/out/parser/ast/generic.d.ts +17 -0
  248. package/node_modules/arktype/out/parser/ast/generic.js +1 -0
  249. package/node_modules/arktype/out/parser/ast/infer.d.ts +25 -0
  250. package/node_modules/arktype/out/parser/ast/infer.js +1 -0
  251. package/node_modules/arktype/out/parser/ast/keyof.d.ts +7 -0
  252. package/node_modules/arktype/out/parser/ast/keyof.js +1 -0
  253. package/node_modules/arktype/out/parser/ast/utils.d.ts +8 -0
  254. package/node_modules/arktype/out/parser/ast/utils.js +1 -0
  255. package/node_modules/arktype/out/parser/ast/validate.d.ts +30 -0
  256. package/node_modules/arktype/out/parser/ast/validate.js +3 -0
  257. package/node_modules/arktype/out/parser/definition.d.ts +30 -0
  258. package/node_modules/arktype/out/parser/definition.js +74 -0
  259. package/node_modules/arktype/out/parser/objectLiteral.d.ts +70 -0
  260. package/node_modules/arktype/out/parser/objectLiteral.js +113 -0
  261. package/node_modules/arktype/out/parser/property.d.ts +34 -0
  262. package/node_modules/arktype/out/parser/property.js +16 -0
  263. package/node_modules/arktype/out/parser/reduce/dynamic.d.ts +42 -0
  264. package/node_modules/arktype/out/parser/reduce/dynamic.js +153 -0
  265. package/node_modules/arktype/out/parser/reduce/shared.d.ts +39 -0
  266. package/node_modules/arktype/out/parser/reduce/shared.js +25 -0
  267. package/node_modules/arktype/out/parser/reduce/static.d.ts +186 -0
  268. package/node_modules/arktype/out/parser/reduce/static.js +1 -0
  269. package/node_modules/arktype/out/parser/shift/operand/date.d.ts +11 -0
  270. package/node_modules/arktype/out/parser/shift/operand/date.js +23 -0
  271. package/node_modules/arktype/out/parser/shift/operand/enclosed.d.ts +57 -0
  272. package/node_modules/arktype/out/parser/shift/operand/enclosed.js +78 -0
  273. package/node_modules/arktype/out/parser/shift/operand/genericArgs.d.ts +27 -0
  274. package/node_modules/arktype/out/parser/shift/operand/genericArgs.js +16 -0
  275. package/node_modules/arktype/out/parser/shift/operand/operand.d.ts +8 -0
  276. package/node_modules/arktype/out/parser/shift/operand/operand.js +16 -0
  277. package/node_modules/arktype/out/parser/shift/operand/unenclosed.d.ts +43 -0
  278. package/node_modules/arktype/out/parser/shift/operand/unenclosed.js +59 -0
  279. package/node_modules/arktype/out/parser/shift/operator/bounds.d.ts +24 -0
  280. package/node_modules/arktype/out/parser/shift/operator/bounds.js +91 -0
  281. package/node_modules/arktype/out/parser/shift/operator/brand.d.ts +7 -0
  282. package/node_modules/arktype/out/parser/shift/operator/brand.js +6 -0
  283. package/node_modules/arktype/out/parser/shift/operator/default.d.ts +24 -0
  284. package/node_modules/arktype/out/parser/shift/operator/default.js +15 -0
  285. package/node_modules/arktype/out/parser/shift/operator/divisor.d.ts +8 -0
  286. package/node_modules/arktype/out/parser/shift/operator/divisor.js +13 -0
  287. package/node_modules/arktype/out/parser/shift/operator/operator.d.ts +14 -0
  288. package/node_modules/arktype/out/parser/shift/operator/operator.js +28 -0
  289. package/node_modules/arktype/out/parser/shift/tokens.d.ts +33 -0
  290. package/node_modules/arktype/out/parser/shift/tokens.js +37 -0
  291. package/node_modules/arktype/out/parser/string.d.ts +30 -0
  292. package/node_modules/arktype/out/parser/string.js +42 -0
  293. package/node_modules/arktype/out/parser/tupleExpressions.d.ts +79 -0
  294. package/node_modules/arktype/out/parser/tupleExpressions.js +75 -0
  295. package/node_modules/arktype/out/parser/tupleLiteral.d.ts +95 -0
  296. package/node_modules/arktype/out/parser/tupleLiteral.js +128 -0
  297. package/node_modules/arktype/out/scope.d.ts +158 -0
  298. package/node_modules/arktype/out/scope.js +106 -0
  299. package/node_modules/arktype/out/type.d.ts +144 -0
  300. package/node_modules/arktype/out/type.js +55 -0
  301. package/node_modules/arktype/out/variants/array.d.ts +12 -0
  302. package/node_modules/arktype/out/variants/array.js +1 -0
  303. package/node_modules/arktype/out/variants/base.d.ts +542 -0
  304. package/node_modules/arktype/out/variants/base.js +1 -0
  305. package/node_modules/arktype/out/variants/date.d.ts +10 -0
  306. package/node_modules/arktype/out/variants/date.js +1 -0
  307. package/node_modules/arktype/out/variants/instantiate.d.ts +12 -0
  308. package/node_modules/arktype/out/variants/instantiate.js +1 -0
  309. package/node_modules/arktype/out/variants/number.d.ts +11 -0
  310. package/node_modules/arktype/out/variants/number.js +1 -0
  311. package/node_modules/arktype/out/variants/object.d.ts +107 -0
  312. package/node_modules/arktype/out/variants/object.js +1 -0
  313. package/node_modules/arktype/out/variants/string.d.ts +15 -0
  314. package/node_modules/arktype/out/variants/string.js +1 -0
  315. package/node_modules/arktype/package.json +57 -0
  316. package/node_modules/debug/LICENSE +20 -0
  317. package/node_modules/debug/README.md +481 -0
  318. package/node_modules/debug/package.json +64 -0
  319. package/node_modules/debug/src/browser.js +272 -0
  320. package/node_modules/debug/src/common.js +292 -0
  321. package/node_modules/debug/src/index.js +10 -0
  322. package/node_modules/debug/src/node.js +263 -0
  323. package/node_modules/engine.io-client/LICENSE +22 -0
  324. package/node_modules/engine.io-client/README.md +331 -0
  325. package/node_modules/engine.io-client/build/cjs/browser-entrypoint.d.ts +3 -0
  326. package/node_modules/engine.io-client/build/cjs/browser-entrypoint.js +4 -0
  327. package/node_modules/engine.io-client/build/cjs/contrib/has-cors.d.ts +1 -0
  328. package/node_modules/engine.io-client/build/cjs/contrib/has-cors.js +14 -0
  329. package/node_modules/engine.io-client/build/cjs/contrib/parseqs.d.ts +15 -0
  330. package/node_modules/engine.io-client/build/cjs/contrib/parseqs.js +38 -0
  331. package/node_modules/engine.io-client/build/cjs/contrib/parseuri.d.ts +1 -0
  332. package/node_modules/engine.io-client/build/cjs/contrib/parseuri.js +67 -0
  333. package/node_modules/engine.io-client/build/cjs/globals.d.ts +4 -0
  334. package/node_modules/engine.io-client/build/cjs/globals.js +26 -0
  335. package/node_modules/engine.io-client/build/cjs/globals.node.d.ts +21 -0
  336. package/node_modules/engine.io-client/build/cjs/globals.node.js +97 -0
  337. package/node_modules/engine.io-client/build/cjs/index.d.ts +15 -0
  338. package/node_modules/engine.io-client/build/cjs/index.js +32 -0
  339. package/node_modules/engine.io-client/build/cjs/package.json +10 -0
  340. package/node_modules/engine.io-client/build/cjs/socket.d.ts +482 -0
  341. package/node_modules/engine.io-client/build/cjs/socket.js +765 -0
  342. package/node_modules/engine.io-client/build/cjs/transport.d.ts +106 -0
  343. package/node_modules/engine.io-client/build/cjs/transport.js +153 -0
  344. package/node_modules/engine.io-client/build/cjs/transports/index.d.ts +8 -0
  345. package/node_modules/engine.io-client/build/cjs/transports/index.js +11 -0
  346. package/node_modules/engine.io-client/build/cjs/transports/polling-fetch.d.ts +15 -0
  347. package/node_modules/engine.io-client/build/cjs/transports/polling-fetch.js +60 -0
  348. package/node_modules/engine.io-client/build/cjs/transports/polling-xhr.d.ts +108 -0
  349. package/node_modules/engine.io-client/build/cjs/transports/polling-xhr.js +285 -0
  350. package/node_modules/engine.io-client/build/cjs/transports/polling-xhr.node.d.ts +11 -0
  351. package/node_modules/engine.io-client/build/cjs/transports/polling-xhr.node.js +44 -0
  352. package/node_modules/engine.io-client/build/cjs/transports/polling.d.ts +52 -0
  353. package/node_modules/engine.io-client/build/cjs/transports/polling.js +165 -0
  354. package/node_modules/engine.io-client/build/cjs/transports/websocket.d.ts +36 -0
  355. package/node_modules/engine.io-client/build/cjs/transports/websocket.js +136 -0
  356. package/node_modules/engine.io-client/build/cjs/transports/websocket.node.d.ts +14 -0
  357. package/node_modules/engine.io-client/build/cjs/transports/websocket.node.js +68 -0
  358. package/node_modules/engine.io-client/build/cjs/transports/webtransport.d.ts +18 -0
  359. package/node_modules/engine.io-client/build/cjs/transports/webtransport.js +94 -0
  360. package/node_modules/engine.io-client/build/cjs/util.d.ts +7 -0
  361. package/node_modules/engine.io-client/build/cjs/util.js +65 -0
  362. package/node_modules/engine.io-client/build/esm/browser-entrypoint.d.ts +3 -0
  363. package/node_modules/engine.io-client/build/esm/browser-entrypoint.js +2 -0
  364. package/node_modules/engine.io-client/build/esm/contrib/has-cors.d.ts +1 -0
  365. package/node_modules/engine.io-client/build/esm/contrib/has-cors.js +11 -0
  366. package/node_modules/engine.io-client/build/esm/contrib/parseqs.d.ts +15 -0
  367. package/node_modules/engine.io-client/build/esm/contrib/parseqs.js +34 -0
  368. package/node_modules/engine.io-client/build/esm/contrib/parseuri.d.ts +1 -0
  369. package/node_modules/engine.io-client/build/esm/contrib/parseuri.js +64 -0
  370. package/node_modules/engine.io-client/build/esm/globals.d.ts +4 -0
  371. package/node_modules/engine.io-client/build/esm/globals.js +22 -0
  372. package/node_modules/engine.io-client/build/esm/globals.node.d.ts +21 -0
  373. package/node_modules/engine.io-client/build/esm/globals.node.js +91 -0
  374. package/node_modules/engine.io-client/build/esm/index.d.ts +15 -0
  375. package/node_modules/engine.io-client/build/esm/index.js +15 -0
  376. package/node_modules/engine.io-client/build/esm/package.json +10 -0
  377. package/node_modules/engine.io-client/build/esm/socket.d.ts +482 -0
  378. package/node_modules/engine.io-client/build/esm/socket.js +727 -0
  379. package/node_modules/engine.io-client/build/esm/transport.d.ts +106 -0
  380. package/node_modules/engine.io-client/build/esm/transport.js +142 -0
  381. package/node_modules/engine.io-client/build/esm/transports/index.d.ts +8 -0
  382. package/node_modules/engine.io-client/build/esm/transports/index.js +8 -0
  383. package/node_modules/engine.io-client/build/esm/transports/polling-fetch.d.ts +15 -0
  384. package/node_modules/engine.io-client/build/esm/transports/polling-fetch.js +56 -0
  385. package/node_modules/engine.io-client/build/esm/transports/polling-xhr.d.ts +108 -0
  386. package/node_modules/engine.io-client/build/esm/transports/polling-xhr.js +271 -0
  387. package/node_modules/engine.io-client/build/esm/transports/polling-xhr.node.d.ts +11 -0
  388. package/node_modules/engine.io-client/build/esm/transports/polling-xhr.node.js +17 -0
  389. package/node_modules/engine.io-client/build/esm/transports/polling.d.ts +52 -0
  390. package/node_modules/engine.io-client/build/esm/transports/polling.js +145 -0
  391. package/node_modules/engine.io-client/build/esm/transports/websocket.d.ts +36 -0
  392. package/node_modules/engine.io-client/build/esm/transports/websocket.js +125 -0
  393. package/node_modules/engine.io-client/build/esm/transports/websocket.node.d.ts +14 -0
  394. package/node_modules/engine.io-client/build/esm/transports/websocket.node.js +41 -0
  395. package/node_modules/engine.io-client/build/esm/transports/webtransport.d.ts +18 -0
  396. package/node_modules/engine.io-client/build/esm/transports/webtransport.js +80 -0
  397. package/node_modules/engine.io-client/build/esm/util.d.ts +7 -0
  398. package/node_modules/engine.io-client/build/esm/util.js +59 -0
  399. package/node_modules/engine.io-client/build/esm-debug/browser-entrypoint.d.ts +3 -0
  400. package/node_modules/engine.io-client/build/esm-debug/browser-entrypoint.js +2 -0
  401. package/node_modules/engine.io-client/build/esm-debug/contrib/has-cors.d.ts +1 -0
  402. package/node_modules/engine.io-client/build/esm-debug/contrib/has-cors.js +11 -0
  403. package/node_modules/engine.io-client/build/esm-debug/contrib/parseqs.d.ts +15 -0
  404. package/node_modules/engine.io-client/build/esm-debug/contrib/parseqs.js +34 -0
  405. package/node_modules/engine.io-client/build/esm-debug/contrib/parseuri.d.ts +1 -0
  406. package/node_modules/engine.io-client/build/esm-debug/contrib/parseuri.js +64 -0
  407. package/node_modules/engine.io-client/build/esm-debug/globals.d.ts +4 -0
  408. package/node_modules/engine.io-client/build/esm-debug/globals.js +22 -0
  409. package/node_modules/engine.io-client/build/esm-debug/globals.node.d.ts +21 -0
  410. package/node_modules/engine.io-client/build/esm-debug/globals.node.js +91 -0
  411. package/node_modules/engine.io-client/build/esm-debug/index.d.ts +15 -0
  412. package/node_modules/engine.io-client/build/esm-debug/index.js +15 -0
  413. package/node_modules/engine.io-client/build/esm-debug/package.json +10 -0
  414. package/node_modules/engine.io-client/build/esm-debug/socket.d.ts +482 -0
  415. package/node_modules/engine.io-client/build/esm-debug/socket.js +756 -0
  416. package/node_modules/engine.io-client/build/esm-debug/transport.d.ts +106 -0
  417. package/node_modules/engine.io-client/build/esm-debug/transport.js +145 -0
  418. package/node_modules/engine.io-client/build/esm-debug/transports/index.d.ts +8 -0
  419. package/node_modules/engine.io-client/build/esm-debug/transports/index.js +8 -0
  420. package/node_modules/engine.io-client/build/esm-debug/transports/polling-fetch.d.ts +15 -0
  421. package/node_modules/engine.io-client/build/esm-debug/transports/polling-fetch.js +56 -0
  422. package/node_modules/engine.io-client/build/esm-debug/transports/polling-xhr.d.ts +108 -0
  423. package/node_modules/engine.io-client/build/esm-debug/transports/polling-xhr.js +276 -0
  424. package/node_modules/engine.io-client/build/esm-debug/transports/polling-xhr.node.d.ts +11 -0
  425. package/node_modules/engine.io-client/build/esm-debug/transports/polling-xhr.node.js +17 -0
  426. package/node_modules/engine.io-client/build/esm-debug/transports/polling.d.ts +52 -0
  427. package/node_modules/engine.io-client/build/esm-debug/transports/polling.js +158 -0
  428. package/node_modules/engine.io-client/build/esm-debug/transports/websocket.d.ts +36 -0
  429. package/node_modules/engine.io-client/build/esm-debug/transports/websocket.js +128 -0
  430. package/node_modules/engine.io-client/build/esm-debug/transports/websocket.node.d.ts +14 -0
  431. package/node_modules/engine.io-client/build/esm-debug/transports/websocket.node.js +41 -0
  432. package/node_modules/engine.io-client/build/esm-debug/transports/webtransport.d.ts +18 -0
  433. package/node_modules/engine.io-client/build/esm-debug/transports/webtransport.js +87 -0
  434. package/node_modules/engine.io-client/build/esm-debug/util.d.ts +7 -0
  435. package/node_modules/engine.io-client/build/esm-debug/util.js +59 -0
  436. package/node_modules/engine.io-client/dist/engine.io.esm.min.js +7 -0
  437. package/node_modules/engine.io-client/dist/engine.io.esm.min.js.map +1 -0
  438. package/node_modules/engine.io-client/dist/engine.io.js +3064 -0
  439. package/node_modules/engine.io-client/dist/engine.io.js.map +1 -0
  440. package/node_modules/engine.io-client/dist/engine.io.min.js +7 -0
  441. package/node_modules/engine.io-client/dist/engine.io.min.js.map +1 -0
  442. package/node_modules/engine.io-client/package.json +95 -0
  443. package/node_modules/engine.io-parser/LICENSE +22 -0
  444. package/node_modules/engine.io-parser/Readme.md +158 -0
  445. package/node_modules/engine.io-parser/build/cjs/commons.d.ts +14 -0
  446. package/node_modules/engine.io-parser/build/cjs/commons.js +19 -0
  447. package/node_modules/engine.io-parser/build/cjs/contrib/base64-arraybuffer.d.ts +2 -0
  448. package/node_modules/engine.io-parser/build/cjs/contrib/base64-arraybuffer.js +48 -0
  449. package/node_modules/engine.io-parser/build/cjs/decodePacket.browser.d.ts +2 -0
  450. package/node_modules/engine.io-parser/build/cjs/decodePacket.browser.js +66 -0
  451. package/node_modules/engine.io-parser/build/cjs/decodePacket.d.ts +2 -0
  452. package/node_modules/engine.io-parser/build/cjs/decodePacket.js +59 -0
  453. package/node_modules/engine.io-parser/build/cjs/encodePacket.browser.d.ts +4 -0
  454. package/node_modules/engine.io-parser/build/cjs/encodePacket.browser.js +72 -0
  455. package/node_modules/engine.io-parser/build/cjs/encodePacket.d.ts +3 -0
  456. package/node_modules/engine.io-parser/build/cjs/encodePacket.js +38 -0
  457. package/node_modules/engine.io-parser/build/cjs/index.d.ts +9 -0
  458. package/node_modules/engine.io-parser/build/cjs/index.js +164 -0
  459. package/node_modules/engine.io-parser/build/cjs/package.json +8 -0
  460. package/node_modules/engine.io-parser/build/esm/commons.d.ts +14 -0
  461. package/node_modules/engine.io-parser/build/esm/commons.js +14 -0
  462. package/node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.d.ts +2 -0
  463. package/node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js +43 -0
  464. package/node_modules/engine.io-parser/build/esm/decodePacket.browser.d.ts +2 -0
  465. package/node_modules/engine.io-parser/build/esm/decodePacket.browser.js +62 -0
  466. package/node_modules/engine.io-parser/build/esm/decodePacket.d.ts +2 -0
  467. package/node_modules/engine.io-parser/build/esm/decodePacket.js +55 -0
  468. package/node_modules/engine.io-parser/build/esm/encodePacket.browser.d.ts +4 -0
  469. package/node_modules/engine.io-parser/build/esm/encodePacket.browser.js +68 -0
  470. package/node_modules/engine.io-parser/build/esm/encodePacket.d.ts +3 -0
  471. package/node_modules/engine.io-parser/build/esm/encodePacket.js +33 -0
  472. package/node_modules/engine.io-parser/build/esm/index.d.ts +9 -0
  473. package/node_modules/engine.io-parser/build/esm/index.js +156 -0
  474. package/node_modules/engine.io-parser/build/esm/package.json +8 -0
  475. package/node_modules/engine.io-parser/package.json +46 -0
  476. package/node_modules/ms/index.js +162 -0
  477. package/node_modules/ms/license.md +21 -0
  478. package/node_modules/ms/package.json +38 -0
  479. package/node_modules/ms/readme.md +59 -0
  480. package/node_modules/socket.io-client/LICENSE +21 -0
  481. package/node_modules/socket.io-client/README.md +29 -0
  482. package/node_modules/socket.io-client/build/cjs/browser-entrypoint.d.ts +2 -0
  483. package/node_modules/socket.io-client/build/cjs/browser-entrypoint.js +4 -0
  484. package/node_modules/socket.io-client/build/cjs/contrib/backo2.d.ts +12 -0
  485. package/node_modules/socket.io-client/build/cjs/contrib/backo2.js +69 -0
  486. package/node_modules/socket.io-client/build/cjs/index.d.ts +29 -0
  487. package/node_modules/socket.io-client/build/cjs/index.js +76 -0
  488. package/node_modules/socket.io-client/build/cjs/manager.d.ts +295 -0
  489. package/node_modules/socket.io-client/build/cjs/manager.js +416 -0
  490. package/node_modules/socket.io-client/build/cjs/on.d.ts +2 -0
  491. package/node_modules/socket.io-client/build/cjs/on.js +9 -0
  492. package/node_modules/socket.io-client/build/cjs/socket.d.ts +593 -0
  493. package/node_modules/socket.io-client/build/cjs/socket.js +909 -0
  494. package/node_modules/socket.io-client/build/cjs/url.d.ts +33 -0
  495. package/node_modules/socket.io-client/build/cjs/url.js +69 -0
  496. package/node_modules/socket.io-client/build/esm/browser-entrypoint.d.ts +2 -0
  497. package/node_modules/socket.io-client/build/esm/browser-entrypoint.js +2 -0
  498. package/node_modules/socket.io-client/build/esm/contrib/backo2.d.ts +12 -0
  499. package/node_modules/socket.io-client/build/esm/contrib/backo2.js +66 -0
  500. package/node_modules/socket.io-client/build/esm/index.d.ts +29 -0
  501. package/node_modules/socket.io-client/build/esm/index.js +58 -0
  502. package/node_modules/socket.io-client/build/esm/manager.d.ts +295 -0
  503. package/node_modules/socket.io-client/build/esm/manager.js +367 -0
  504. package/node_modules/socket.io-client/build/esm/on.d.ts +2 -0
  505. package/node_modules/socket.io-client/build/esm/on.js +6 -0
  506. package/node_modules/socket.io-client/build/esm/package.json +5 -0
  507. package/node_modules/socket.io-client/build/esm/socket.d.ts +593 -0
  508. package/node_modules/socket.io-client/build/esm/socket.js +880 -0
  509. package/node_modules/socket.io-client/build/esm/url.d.ts +33 -0
  510. package/node_modules/socket.io-client/build/esm/url.js +59 -0
  511. package/node_modules/socket.io-client/build/esm-debug/browser-entrypoint.d.ts +2 -0
  512. package/node_modules/socket.io-client/build/esm-debug/browser-entrypoint.js +2 -0
  513. package/node_modules/socket.io-client/build/esm-debug/contrib/backo2.d.ts +12 -0
  514. package/node_modules/socket.io-client/build/esm-debug/contrib/backo2.js +66 -0
  515. package/node_modules/socket.io-client/build/esm-debug/index.d.ts +29 -0
  516. package/node_modules/socket.io-client/build/esm-debug/index.js +62 -0
  517. package/node_modules/socket.io-client/build/esm-debug/manager.d.ts +295 -0
  518. package/node_modules/socket.io-client/build/esm-debug/manager.js +386 -0
  519. package/node_modules/socket.io-client/build/esm-debug/on.d.ts +2 -0
  520. package/node_modules/socket.io-client/build/esm-debug/on.js +6 -0
  521. package/node_modules/socket.io-client/build/esm-debug/package.json +5 -0
  522. package/node_modules/socket.io-client/build/esm-debug/socket.d.ts +593 -0
  523. package/node_modules/socket.io-client/build/esm-debug/socket.js +902 -0
  524. package/node_modules/socket.io-client/build/esm-debug/url.d.ts +33 -0
  525. package/node_modules/socket.io-client/build/esm-debug/url.js +63 -0
  526. package/node_modules/socket.io-client/dist/socket.io.esm.min.js +7 -0
  527. package/node_modules/socket.io-client/dist/socket.io.esm.min.js.map +1 -0
  528. package/node_modules/socket.io-client/dist/socket.io.js +4955 -0
  529. package/node_modules/socket.io-client/dist/socket.io.js.map +1 -0
  530. package/node_modules/socket.io-client/dist/socket.io.min.js +7 -0
  531. package/node_modules/socket.io-client/dist/socket.io.min.js.map +1 -0
  532. package/node_modules/socket.io-client/dist/socket.io.msgpack.min.js +7 -0
  533. package/node_modules/socket.io-client/dist/socket.io.msgpack.min.js.map +1 -0
  534. package/node_modules/socket.io-client/package.json +101 -0
  535. package/node_modules/socket.io-parser/LICENSE +20 -0
  536. package/node_modules/socket.io-parser/Readme.md +81 -0
  537. package/node_modules/socket.io-parser/build/cjs/binary.d.ts +20 -0
  538. package/node_modules/socket.io-parser/build/cjs/binary.js +87 -0
  539. package/node_modules/socket.io-parser/build/cjs/index.d.ts +91 -0
  540. package/node_modules/socket.io-parser/build/cjs/index.js +359 -0
  541. package/node_modules/socket.io-parser/build/cjs/is-binary.d.ts +7 -0
  542. package/node_modules/socket.io-parser/build/cjs/is-binary.js +54 -0
  543. package/node_modules/socket.io-parser/build/cjs/package.json +3 -0
  544. package/node_modules/socket.io-parser/build/esm/binary.d.ts +20 -0
  545. package/node_modules/socket.io-parser/build/esm/binary.js +83 -0
  546. package/node_modules/socket.io-parser/build/esm/index.d.ts +91 -0
  547. package/node_modules/socket.io-parser/build/esm/index.js +348 -0
  548. package/node_modules/socket.io-parser/build/esm/is-binary.d.ts +7 -0
  549. package/node_modules/socket.io-parser/build/esm/is-binary.js +50 -0
  550. package/node_modules/socket.io-parser/build/esm/package.json +3 -0
  551. package/node_modules/socket.io-parser/build/esm-debug/binary.d.ts +20 -0
  552. package/node_modules/socket.io-parser/build/esm-debug/binary.js +83 -0
  553. package/node_modules/socket.io-parser/build/esm-debug/index.d.ts +91 -0
  554. package/node_modules/socket.io-parser/build/esm-debug/index.js +353 -0
  555. package/node_modules/socket.io-parser/build/esm-debug/is-binary.d.ts +7 -0
  556. package/node_modules/socket.io-parser/build/esm-debug/is-binary.js +50 -0
  557. package/node_modules/socket.io-parser/build/esm-debug/package.json +3 -0
  558. package/node_modules/socket.io-parser/package.json +44 -0
  559. package/node_modules/ws/LICENSE +20 -0
  560. package/node_modules/ws/README.md +548 -0
  561. package/node_modules/ws/browser.js +8 -0
  562. package/node_modules/ws/index.js +13 -0
  563. package/node_modules/ws/lib/buffer-util.js +131 -0
  564. package/node_modules/ws/lib/constants.js +18 -0
  565. package/node_modules/ws/lib/event-target.js +292 -0
  566. package/node_modules/ws/lib/extension.js +203 -0
  567. package/node_modules/ws/lib/limiter.js +55 -0
  568. package/node_modules/ws/lib/permessage-deflate.js +528 -0
  569. package/node_modules/ws/lib/receiver.js +706 -0
  570. package/node_modules/ws/lib/sender.js +602 -0
  571. package/node_modules/ws/lib/stream.js +161 -0
  572. package/node_modules/ws/lib/subprotocol.js +62 -0
  573. package/node_modules/ws/lib/validation.js +152 -0
  574. package/node_modules/ws/lib/websocket-server.js +550 -0
  575. package/node_modules/ws/lib/websocket.js +1388 -0
  576. package/node_modules/ws/package.json +69 -0
  577. package/node_modules/ws/wrapper.mjs +8 -0
  578. package/node_modules/xmlhttprequest-ssl/LICENSE +22 -0
  579. package/node_modules/xmlhttprequest-ssl/README.md +67 -0
  580. package/node_modules/xmlhttprequest-ssl/lib/XMLHttpRequest.js +689 -0
  581. package/node_modules/xmlhttprequest-ssl/package.json +40 -0
  582. package/package.json +34 -4
  583. package/public-api.md +85 -23
@@ -0,0 +1,521 @@
1
+ import { append, conflatenate, printable, throwInternalError, throwParseError } from "@ark/util";
2
+ import { BaseConstraint } from "../constraint.js";
3
+ import { appendUniqueFlatRefs, flatRef } from "../node.js";
4
+ import { Disjoint } from "../shared/disjoint.js";
5
+ import { defaultValueSerializer, implementNode } from "../shared/implement.js";
6
+ import { intersectOrPipeNodes } from "../shared/intersections.js";
7
+ import { $ark, registeredReference } from "../shared/registry.js";
8
+ import { traverseKey } from "../shared/traversal.js";
9
+ import { assertDefaultValueAssignability, computeDefaultValueMorph } from "./optional.js";
10
+ import { writeDefaultIntersectionMessage } from "./prop.js";
11
+ const implementation = implementNode({
12
+ kind: "sequence",
13
+ hasAssociatedError: false,
14
+ collapsibleKey: "variadic",
15
+ keys: {
16
+ prefix: {
17
+ child: true,
18
+ parse: (schema, ctx) => {
19
+ // empty affixes are omitted. an empty array should therefore
20
+ // be specified as `{ proto: Array, length: 0 }`
21
+ if (schema.length === 0)
22
+ return undefined;
23
+ return schema.map(element => ctx.$.parseSchema(element));
24
+ }
25
+ },
26
+ optionals: {
27
+ child: true,
28
+ parse: (schema, ctx) => {
29
+ if (schema.length === 0)
30
+ return undefined;
31
+ return schema.map(element => ctx.$.parseSchema(element));
32
+ }
33
+ },
34
+ defaultables: {
35
+ child: defaultables => defaultables.map(element => element[0]),
36
+ parse: (defaultables, ctx) => {
37
+ if (defaultables.length === 0)
38
+ return undefined;
39
+ return defaultables.map(element => {
40
+ const node = ctx.$.parseSchema(element[0]);
41
+ assertDefaultValueAssignability(node, element[1], null);
42
+ return [node, element[1]];
43
+ });
44
+ },
45
+ serialize: defaults => defaults.map(element => [
46
+ element[0].collapsibleJson,
47
+ defaultValueSerializer(element[1])
48
+ ]),
49
+ reduceIo: (ioKind, inner, defaultables) => {
50
+ if (ioKind === "in") {
51
+ inner.optionals = defaultables.map(d => d[0].rawIn);
52
+ return;
53
+ }
54
+ inner.prefix = defaultables.map(d => d[0].rawOut);
55
+ return;
56
+ }
57
+ },
58
+ variadic: {
59
+ child: true,
60
+ parse: (schema, ctx) => ctx.$.parseSchema(schema, ctx)
61
+ },
62
+ minVariadicLength: {
63
+ // minVariadicLength is reflected in the id of this node,
64
+ // but not its IntersectionNode parent since it is superceded by the minLength
65
+ // node it implies
66
+ parse: min => (min === 0 ? undefined : min)
67
+ },
68
+ postfix: {
69
+ child: true,
70
+ parse: (schema, ctx) => {
71
+ if (schema.length === 0)
72
+ return undefined;
73
+ return schema.map(element => ctx.$.parseSchema(element));
74
+ }
75
+ }
76
+ },
77
+ normalize: schema => {
78
+ if (typeof schema === "string")
79
+ return { variadic: schema };
80
+ if ("variadic" in schema ||
81
+ "prefix" in schema ||
82
+ "defaultables" in schema ||
83
+ "optionals" in schema ||
84
+ "postfix" in schema ||
85
+ "minVariadicLength" in schema) {
86
+ if (schema.postfix?.length) {
87
+ if (!schema.variadic)
88
+ return throwParseError(postfixWithoutVariadicMessage);
89
+ if (schema.optionals?.length || schema.defaultables?.length)
90
+ return throwParseError(postfixAfterOptionalOrDefaultableMessage);
91
+ }
92
+ if (schema.minVariadicLength && !schema.variadic) {
93
+ return throwParseError("minVariadicLength may not be specified without a variadic element");
94
+ }
95
+ return schema;
96
+ }
97
+ return { variadic: schema };
98
+ },
99
+ reduce: (raw, $) => {
100
+ let minVariadicLength = raw.minVariadicLength ?? 0;
101
+ const prefix = raw.prefix?.slice() ?? [];
102
+ const defaultables = raw.defaultables?.slice() ?? [];
103
+ const optionals = raw.optionals?.slice() ?? [];
104
+ const postfix = raw.postfix?.slice() ?? [];
105
+ if (raw.variadic) {
106
+ // optional elements equivalent to the variadic parameter are redundant
107
+ while (optionals[optionals.length - 1]?.equals(raw.variadic))
108
+ optionals.pop();
109
+ if (optionals.length === 0 && defaultables.length === 0) {
110
+ // If there are no optional, normalize prefix
111
+ // elements adjacent and equivalent to variadic:
112
+ // { variadic: number, prefix: [string, number] }
113
+ // reduces to:
114
+ // { variadic: number, prefix: [string], minVariadicLength: 1 }
115
+ while (prefix[prefix.length - 1]?.equals(raw.variadic)) {
116
+ prefix.pop();
117
+ minVariadicLength++;
118
+ }
119
+ }
120
+ // Normalize postfix elements adjacent and equivalent to variadic:
121
+ // { variadic: number, postfix: [number, number, 5] }
122
+ // reduces to:
123
+ // { variadic: number, postfix: [5], minVariadicLength: 2 }
124
+ while (postfix[0]?.equals(raw.variadic)) {
125
+ postfix.shift();
126
+ minVariadicLength++;
127
+ }
128
+ }
129
+ else if (optionals.length === 0 && defaultables.length === 0) {
130
+ // if there's no variadic, optional or defaultable elements,
131
+ // postfix can just be appended to prefix
132
+ prefix.push(...postfix.splice(0));
133
+ }
134
+ if (
135
+ // if any variadic adjacent elements were moved to minVariadicLength
136
+ minVariadicLength !== raw.minVariadicLength ||
137
+ // or any postfix elements were moved to prefix
138
+ (raw.prefix && raw.prefix.length !== prefix.length)) {
139
+ // reparse the reduced def
140
+ return $.node("sequence", {
141
+ ...raw,
142
+ // empty lists will be omitted during parsing
143
+ prefix,
144
+ defaultables,
145
+ optionals,
146
+ postfix,
147
+ minVariadicLength
148
+ }, { prereduced: true });
149
+ }
150
+ },
151
+ defaults: {
152
+ description: node => {
153
+ if (node.isVariadicOnly)
154
+ return `${node.variadic.nestableExpression}[]`;
155
+ const innerDescription = node.tuple
156
+ .map(element => element.kind === "defaultables" ?
157
+ `${element.node.nestableExpression} = ${printable(element.default)}`
158
+ : element.kind === "optionals" ?
159
+ `${element.node.nestableExpression}?`
160
+ : element.kind === "variadic" ?
161
+ `...${element.node.nestableExpression}[]`
162
+ : element.node.expression)
163
+ .join(", ");
164
+ return `[${innerDescription}]`;
165
+ }
166
+ },
167
+ intersections: {
168
+ sequence: (l, r, ctx) => {
169
+ const rootState = _intersectSequences({
170
+ l: l.tuple,
171
+ r: r.tuple,
172
+ disjoint: new Disjoint(),
173
+ result: [],
174
+ fixedVariants: [],
175
+ ctx
176
+ });
177
+ const viableBranches = rootState.disjoint.length === 0 ?
178
+ [rootState, ...rootState.fixedVariants]
179
+ : rootState.fixedVariants;
180
+ return (viableBranches.length === 0 ? rootState.disjoint
181
+ : viableBranches.length === 1 ?
182
+ ctx.$.node("sequence", sequenceTupleToInner(viableBranches[0].result))
183
+ : ctx.$.node("union", viableBranches.map(state => ({
184
+ proto: Array,
185
+ sequence: sequenceTupleToInner(state.result)
186
+ }))));
187
+ }
188
+ // exactLength, minLength, and maxLength don't need to be defined
189
+ // here since impliedSiblings guarantees they will be added
190
+ // directly to the IntersectionNode parent of the SequenceNode
191
+ // they exist on
192
+ }
193
+ });
194
+ export class SequenceNode extends BaseConstraint {
195
+ impliedBasis = $ark.intrinsic.Array.internal;
196
+ tuple = sequenceInnerToTuple(this.inner);
197
+ prefixLength = this.prefix?.length ?? 0;
198
+ defaultablesLength = this.defaultables?.length ?? 0;
199
+ optionalsLength = this.optionals?.length ?? 0;
200
+ postfixLength = this.postfix?.length ?? 0;
201
+ defaultablesAndOptionals = [];
202
+ prevariadic = this.tuple.filter((el) => {
203
+ if (el.kind === "defaultables" || el.kind === "optionals") {
204
+ // populate defaultablesAndOptionals while filtering prevariadic
205
+ this.defaultablesAndOptionals.push(el.node);
206
+ return true;
207
+ }
208
+ return el.kind === "prefix";
209
+ });
210
+ variadicOrPostfix = conflatenate(this.variadic && [this.variadic], this.postfix);
211
+ // have to wait until prevariadic and variadicOrPostfix are set to calculate
212
+ flatRefs = this.addFlatRefs();
213
+ addFlatRefs() {
214
+ appendUniqueFlatRefs(this.flatRefs, this.prevariadic.flatMap((element, i) => append(element.node.flatRefs.map(ref => flatRef([`${i}`, ...ref.path], ref.node)), flatRef([`${i}`], element.node))));
215
+ appendUniqueFlatRefs(this.flatRefs, this.variadicOrPostfix.flatMap(element =>
216
+ // a postfix index can't be directly represented as a type
217
+ // key, so we just use the same matcher for variadic
218
+ append(element.flatRefs.map(ref => flatRef([$ark.intrinsic.nonNegativeIntegerString.internal, ...ref.path], ref.node)), flatRef([$ark.intrinsic.nonNegativeIntegerString.internal], element))));
219
+ return this.flatRefs;
220
+ }
221
+ isVariadicOnly = this.prevariadic.length + this.postfixLength === 0;
222
+ minVariadicLength = this.inner.minVariadicLength ?? 0;
223
+ minLength = this.prefixLength + this.minVariadicLength + this.postfixLength;
224
+ minLengthNode = this.minLength === 0 ?
225
+ null
226
+ // cast is safe here as the only time this would not be a
227
+ // MinLengthNode would be when minLength is 0
228
+ : this.$.node("minLength", this.minLength);
229
+ maxLength = this.variadic ? null : this.tuple.length;
230
+ maxLengthNode = this.maxLength === null ? null : this.$.node("maxLength", this.maxLength);
231
+ impliedSiblings = this.minLengthNode ?
232
+ this.maxLengthNode ?
233
+ [this.minLengthNode, this.maxLengthNode]
234
+ : [this.minLengthNode]
235
+ : this.maxLengthNode ? [this.maxLengthNode]
236
+ : [];
237
+ defaultValueMorphs = getDefaultableMorphs(this);
238
+ defaultValueMorphsReference = this.defaultValueMorphs.length ?
239
+ registeredReference(this.defaultValueMorphs)
240
+ : undefined;
241
+ elementAtIndex(data, index) {
242
+ if (index < this.prevariadic.length)
243
+ return this.tuple[index];
244
+ const firstPostfixIndex = data.length - this.postfixLength;
245
+ if (index >= firstPostfixIndex)
246
+ return { kind: "postfix", node: this.postfix[index - firstPostfixIndex] };
247
+ return {
248
+ kind: "variadic",
249
+ node: this.variadic ??
250
+ throwInternalError(`Unexpected attempt to access index ${index} on ${this}`)
251
+ };
252
+ }
253
+ // minLength/maxLength should be checked by Intersection before either traversal
254
+ traverseAllows = (data, ctx) => {
255
+ for (let i = 0; i < data.length; i++) {
256
+ if (!this.elementAtIndex(data, i).node.traverseAllows(data[i], ctx))
257
+ return false;
258
+ }
259
+ return true;
260
+ };
261
+ traverseApply = (data, ctx) => {
262
+ let i = 0;
263
+ for (; i < data.length; i++) {
264
+ traverseKey(i, () => this.elementAtIndex(data, i).node.traverseApply(data[i], ctx), ctx);
265
+ }
266
+ };
267
+ get element() {
268
+ return this.cacheGetter("element", this.$.node("union", this.children));
269
+ }
270
+ // minLength/maxLength compilation should be handled by Intersection
271
+ compile(js) {
272
+ if (this.prefix) {
273
+ for (const [i, node] of this.prefix.entries())
274
+ js.traverseKey(`${i}`, `data[${i}]`, node);
275
+ }
276
+ for (const [i, node] of this.defaultablesAndOptionals.entries()) {
277
+ const dataIndex = `${i + this.prefixLength}`;
278
+ js.if(`${dataIndex} >= data.length`, () => js.traversalKind === "Allows" ? js.return(true) : js.return());
279
+ js.traverseKey(dataIndex, `data[${dataIndex}]`, node);
280
+ }
281
+ if (this.variadic) {
282
+ if (this.postfix) {
283
+ js.const("firstPostfixIndex", `data.length${this.postfix ? `- ${this.postfix.length}` : ""}`);
284
+ }
285
+ js.for(`i < ${this.postfix ? "firstPostfixIndex" : "data.length"}`, () => js.traverseKey("i", "data[i]", this.variadic), this.prevariadic.length);
286
+ if (this.postfix) {
287
+ for (const [i, node] of this.postfix.entries()) {
288
+ const keyExpression = `firstPostfixIndex + ${i}`;
289
+ js.traverseKey(keyExpression, `data[${keyExpression}]`, node);
290
+ }
291
+ }
292
+ }
293
+ if (js.traversalKind === "Allows")
294
+ js.return(true);
295
+ }
296
+ _transform(mapper, ctx) {
297
+ ctx.path.push($ark.intrinsic.nonNegativeIntegerString.internal);
298
+ const result = super._transform(mapper, ctx);
299
+ ctx.path.pop();
300
+ return result;
301
+ }
302
+ // this depends on tuple so needs to come after it
303
+ expression = this.description;
304
+ reduceJsonSchema(schema, ctx) {
305
+ const isDraft07 = ctx.target === "draft-07";
306
+ if (this.prevariadic.length) {
307
+ const prefixSchemas = this.prevariadic.map(el => {
308
+ const valueSchema = el.node.toJsonSchemaRecurse(ctx);
309
+ if (el.kind === "defaultables") {
310
+ const value = typeof el.default === "function" ? el.default() : el.default;
311
+ valueSchema.default =
312
+ $ark.intrinsic.jsonData.allows(value) ?
313
+ value
314
+ : ctx.fallback.defaultValue({
315
+ code: "defaultValue",
316
+ base: valueSchema,
317
+ value
318
+ });
319
+ }
320
+ return valueSchema;
321
+ });
322
+ // draft-07 uses items as array, draft-2020-12 uses prefixItems
323
+ if (isDraft07)
324
+ schema.items = prefixSchemas;
325
+ else
326
+ schema.prefixItems = prefixSchemas;
327
+ }
328
+ // by default JSON schema prefixElements are optional
329
+ // add minLength here if there are any required prefix elements
330
+ if (this.minLength)
331
+ schema.minItems = this.minLength;
332
+ if (this.variadic) {
333
+ const variadicItemSchema = this.variadic.toJsonSchemaRecurse(ctx);
334
+ // draft-07 uses additionalItems when items is an array (tuple),
335
+ // draft-2020-12 uses items
336
+ if (isDraft07 && this.prevariadic.length)
337
+ schema.additionalItems = variadicItemSchema;
338
+ else
339
+ schema.items = variadicItemSchema;
340
+ // maxLength constraint will be enforced by items: false
341
+ // for non-variadic arrays
342
+ if (this.maxLength)
343
+ schema.maxItems = this.maxLength;
344
+ // postfix can only be present if variadic is present so nesting this is fine
345
+ if (this.postfix) {
346
+ const elements = this.postfix.map(el => el.toJsonSchemaRecurse(ctx));
347
+ schema = ctx.fallback.arrayPostfix({
348
+ code: "arrayPostfix",
349
+ base: schema,
350
+ elements
351
+ });
352
+ }
353
+ }
354
+ else {
355
+ // For fixed-length tuples without variadic elements
356
+ // draft-07 uses additionalItems: false, draft-2020-12 uses items: false
357
+ if (isDraft07)
358
+ schema.additionalItems = false;
359
+ else
360
+ schema.items = false;
361
+ // delete maxItems constraint that will have been added by the
362
+ // base intersection node to enforce fixed length
363
+ delete schema.maxItems;
364
+ }
365
+ return schema;
366
+ }
367
+ }
368
+ const defaultableMorphsCache = {};
369
+ const getDefaultableMorphs = (node) => {
370
+ if (!node.defaultables)
371
+ return [];
372
+ const morphs = [];
373
+ let cacheKey = "[";
374
+ const lastDefaultableIndex = node.prefixLength + node.defaultablesLength - 1;
375
+ for (let i = node.prefixLength; i <= lastDefaultableIndex; i++) {
376
+ const [elementNode, defaultValue] = node.defaultables[i - node.prefixLength];
377
+ morphs.push(computeDefaultValueMorph(i, elementNode, defaultValue));
378
+ cacheKey += `${i}: ${elementNode.id} = ${defaultValueSerializer(defaultValue)}, `;
379
+ }
380
+ cacheKey += "]";
381
+ return (defaultableMorphsCache[cacheKey] ??= morphs);
382
+ };
383
+ export const Sequence = {
384
+ implementation,
385
+ Node: SequenceNode
386
+ };
387
+ const sequenceInnerToTuple = (inner) => {
388
+ const tuple = [];
389
+ if (inner.prefix)
390
+ for (const node of inner.prefix)
391
+ tuple.push({ kind: "prefix", node });
392
+ if (inner.defaultables) {
393
+ for (const [node, defaultValue] of inner.defaultables)
394
+ tuple.push({ kind: "defaultables", node, default: defaultValue });
395
+ }
396
+ if (inner.optionals)
397
+ for (const node of inner.optionals)
398
+ tuple.push({ kind: "optionals", node });
399
+ if (inner.variadic)
400
+ tuple.push({ kind: "variadic", node: inner.variadic });
401
+ if (inner.postfix)
402
+ for (const node of inner.postfix)
403
+ tuple.push({ kind: "postfix", node });
404
+ return tuple;
405
+ };
406
+ const sequenceTupleToInner = (tuple) => tuple.reduce((result, element) => {
407
+ if (element.kind === "variadic")
408
+ result.variadic = element.node;
409
+ else if (element.kind === "defaultables") {
410
+ result.defaultables = append(result.defaultables, [
411
+ [element.node, element.default]
412
+ ]);
413
+ }
414
+ else
415
+ result[element.kind] = append(result[element.kind], element.node);
416
+ return result;
417
+ }, {});
418
+ export const postfixAfterOptionalOrDefaultableMessage = "A postfix required element cannot follow an optional or defaultable element";
419
+ export const postfixWithoutVariadicMessage = "A postfix element requires a variadic element";
420
+ const _intersectSequences = (s) => {
421
+ const [lHead, ...lTail] = s.l;
422
+ const [rHead, ...rTail] = s.r;
423
+ if (!lHead || !rHead)
424
+ return s;
425
+ const lHasPostfix = lTail[lTail.length - 1]?.kind === "postfix";
426
+ const rHasPostfix = rTail[rTail.length - 1]?.kind === "postfix";
427
+ const kind = lHead.kind === "prefix" || rHead.kind === "prefix" ? "prefix"
428
+ : lHead.kind === "postfix" || rHead.kind === "postfix" ? "postfix"
429
+ : lHead.kind === "variadic" && rHead.kind === "variadic" ? "variadic"
430
+ // if either operand has postfix elements, the full-length
431
+ // intersection can't include optional elements (though they may
432
+ // exist in some of the fixed length variants)
433
+ : lHasPostfix || rHasPostfix ? "prefix"
434
+ : lHead.kind === "defaultables" || rHead.kind === "defaultables" ?
435
+ "defaultables"
436
+ : "optionals";
437
+ if (lHead.kind === "prefix" && rHead.kind === "variadic" && rHasPostfix) {
438
+ const postfixBranchResult = _intersectSequences({
439
+ ...s,
440
+ fixedVariants: [],
441
+ r: rTail.map(element => ({ ...element, kind: "prefix" }))
442
+ });
443
+ if (postfixBranchResult.disjoint.length === 0)
444
+ s.fixedVariants.push(postfixBranchResult);
445
+ }
446
+ else if (rHead.kind === "prefix" &&
447
+ lHead.kind === "variadic" &&
448
+ lHasPostfix) {
449
+ const postfixBranchResult = _intersectSequences({
450
+ ...s,
451
+ fixedVariants: [],
452
+ l: lTail.map(element => ({ ...element, kind: "prefix" }))
453
+ });
454
+ if (postfixBranchResult.disjoint.length === 0)
455
+ s.fixedVariants.push(postfixBranchResult);
456
+ }
457
+ const result = intersectOrPipeNodes(lHead.node, rHead.node, s.ctx);
458
+ if (result instanceof Disjoint) {
459
+ if (kind === "prefix" || kind === "postfix") {
460
+ s.disjoint.push(...result.withPrefixKey(
461
+ // ideally we could handle disjoint paths more precisely here,
462
+ // but not trivial to serialize postfix elements as keys
463
+ kind === "prefix" ? s.result.length : `-${lTail.length + 1}`,
464
+ // both operands must be required for the disjoint to be considered required
465
+ elementIsRequired(lHead) && elementIsRequired(rHead) ?
466
+ "required"
467
+ : "optional"));
468
+ s.result = [...s.result, { kind, node: $ark.intrinsic.never.internal }];
469
+ }
470
+ else if (kind === "optionals" || kind === "defaultables") {
471
+ // if the element result is optional and unsatisfiable, the
472
+ // intersection can still be satisfied as long as the tuple
473
+ // ends before the disjoint element would occur
474
+ return s;
475
+ }
476
+ else {
477
+ // if the element is variadic and unsatisfiable, the intersection
478
+ // can be satisfied with a fixed length variant including zero
479
+ // variadic elements
480
+ return _intersectSequences({
481
+ ...s,
482
+ fixedVariants: [],
483
+ // if there were any optional elements, there will be no postfix elements
484
+ // so this mapping will never occur (which would be illegal otherwise)
485
+ l: lTail.map(element => ({ ...element, kind: "prefix" })),
486
+ r: lTail.map(element => ({ ...element, kind: "prefix" }))
487
+ });
488
+ }
489
+ }
490
+ else if (kind === "defaultables") {
491
+ if (lHead.kind === "defaultables" &&
492
+ rHead.kind === "defaultables" &&
493
+ lHead.default !== rHead.default) {
494
+ throwParseError(writeDefaultIntersectionMessage(lHead.default, rHead.default));
495
+ }
496
+ s.result = [
497
+ ...s.result,
498
+ {
499
+ kind,
500
+ node: result,
501
+ default: lHead.kind === "defaultables" ? lHead.default
502
+ : rHead.kind === "defaultables" ? rHead.default
503
+ : throwInternalError(`Unexpected defaultable intersection from ${lHead.kind} and ${rHead.kind} elements.`)
504
+ }
505
+ ];
506
+ }
507
+ else
508
+ s.result = [...s.result, { kind, node: result }];
509
+ const lRemaining = s.l.length;
510
+ const rRemaining = s.r.length;
511
+ if (lHead.kind !== "variadic" ||
512
+ (lRemaining >= rRemaining &&
513
+ (rHead.kind === "variadic" || rRemaining === 1)))
514
+ s.l = lTail;
515
+ if (rHead.kind !== "variadic" ||
516
+ (rRemaining >= lRemaining &&
517
+ (lHead.kind === "variadic" || lRemaining === 1)))
518
+ s.r = rTail;
519
+ return _intersectSequences(s);
520
+ };
521
+ const elementIsRequired = (el) => el.kind === "prefix" || el.kind === "postfix";
@@ -0,0 +1,4 @@
1
+ import { type RegisteredReference } from "../shared/registry.ts";
2
+ export declare const arrayIndexSource = "^(?:0|[1-9]\\d*)$";
3
+ export declare const arrayIndexMatcher: RegExp;
4
+ export declare const arrayIndexMatcherReference: RegisteredReference;
@@ -0,0 +1,4 @@
1
+ import { registeredReference } from "../shared/registry.js";
2
+ export const arrayIndexSource = `^(?:0|[1-9]\\d*)$`;
3
+ export const arrayIndexMatcher = new RegExp(arrayIndexSource);
4
+ export const arrayIndexMatcherReference = registeredReference(arrayIndexMatcher);
@@ -0,0 +1,113 @@
1
+ import { type array, type describe, type Key, type listable } from "@ark/util";
2
+ import { BaseConstraint } from "../constraint.ts";
3
+ import type { GettableKeyOrNode, KeyOrKeyNode } from "../node.ts";
4
+ import type { Morph } from "../roots/morph.ts";
5
+ import { type BaseRoot } from "../roots/root.ts";
6
+ import type { BaseScope } from "../scope.ts";
7
+ import { type NodeCompiler } from "../shared/compile.ts";
8
+ import type { BaseNormalizedSchema, declareNode } from "../shared/declare.ts";
9
+ import { type nodeImplementationOf, type StructuralKind } from "../shared/implement.ts";
10
+ import type { JsonSchema } from "../shared/jsonSchema.ts";
11
+ import { type RegisteredReference } from "../shared/registry.ts";
12
+ import { ToJsonSchema } from "../shared/toJsonSchema.ts";
13
+ import { type InternalTraversal, type TraversalKind, type TraverseAllows, type TraverseApply } from "../shared/traversal.ts";
14
+ import { makeRootAndArrayPropertiesMutable } from "../shared/utils.ts";
15
+ import type { Index } from "./index.ts";
16
+ import { Optional } from "./optional.ts";
17
+ import type { Prop } from "./prop.ts";
18
+ import type { Required } from "./required.ts";
19
+ import type { Sequence } from "./sequence.ts";
20
+ /**
21
+ * - `"ignore"` (default) - allow and preserve extra properties
22
+ * - `"reject"` - disallow extra properties
23
+ * - `"delete"` - clone and remove extra properties from output
24
+ */
25
+ export type UndeclaredKeyBehavior = "ignore" | UndeclaredKeyHandling;
26
+ export type UndeclaredKeyHandling = "reject" | "delete";
27
+ export declare namespace Structure {
28
+ interface Schema extends BaseNormalizedSchema {
29
+ readonly optional?: readonly Optional.Schema[];
30
+ readonly required?: readonly Required.Schema[];
31
+ readonly index?: readonly Index.Schema[];
32
+ readonly sequence?: Sequence.Schema;
33
+ readonly undeclared?: UndeclaredKeyBehavior;
34
+ }
35
+ interface Inner {
36
+ readonly optional?: readonly Optional.Node[];
37
+ readonly required?: readonly Required.Node[];
38
+ readonly index?: readonly Index.Node[];
39
+ readonly sequence?: Sequence.Node;
40
+ readonly undeclared?: UndeclaredKeyHandling;
41
+ }
42
+ namespace Inner {
43
+ type mutable = makeRootAndArrayPropertiesMutable<Inner>;
44
+ }
45
+ interface Declaration extends declareNode<{
46
+ kind: "structure";
47
+ schema: Schema;
48
+ normalizedSchema: Schema;
49
+ inner: Inner;
50
+ prerequisite: object;
51
+ childKind: StructuralKind;
52
+ }> {
53
+ }
54
+ type Node = StructureNode;
55
+ }
56
+ export declare class StructureNode extends BaseConstraint<Structure.Declaration> {
57
+ impliedBasis: BaseRoot;
58
+ impliedSiblings: BaseConstraint<import("../constraint.ts").Constraint.Declaration>[];
59
+ props: array<Prop.Node>;
60
+ propsByKey: Record<Key, Prop.Node | undefined>;
61
+ propsByKeyReference: RegisteredReference;
62
+ expression: string;
63
+ requiredKeys: Key[];
64
+ optionalKeys: Key[];
65
+ literalKeys: Key[];
66
+ _keyof: BaseRoot | undefined;
67
+ keyof(): BaseRoot;
68
+ map(flatMapProp: PropFlatMapper): StructureNode;
69
+ assertHasKeys(keys: array<KeyOrKeyNode>): void;
70
+ get(indexer: GettableKeyOrNode, ...path: array<GettableKeyOrNode>): BaseRoot;
71
+ pick(...keys: KeyOrKeyNode[]): StructureNode;
72
+ omit(...keys: KeyOrKeyNode[]): StructureNode;
73
+ optionalize(): StructureNode;
74
+ require(): StructureNode;
75
+ merge(r: StructureNode): StructureNode;
76
+ private filterKeys;
77
+ traverseAllows: TraverseAllows<object>;
78
+ traverseApply: TraverseApply<object>;
79
+ protected _traverse: (traversalKind: TraversalKind, data: object, ctx: InternalTraversal) => boolean;
80
+ get defaultable(): Optional.Node.withDefault[];
81
+ declaresKey: (k: Key) => boolean;
82
+ _compileDeclaresKey(js: NodeCompiler): string;
83
+ get structuralMorph(): Morph | undefined;
84
+ structuralMorphRef: RegisteredReference | undefined;
85
+ compile(js: NodeCompiler): unknown;
86
+ protected compileExhaustiveEntry(js: NodeCompiler): NodeCompiler;
87
+ reduceJsonSchema(schema: JsonSchema.Structure, ctx: ToJsonSchema.Context): JsonSchema.Structure;
88
+ reduceObjectJsonSchema(schema: JsonSchema.Object, ctx: ToJsonSchema.Context): JsonSchema.Object;
89
+ }
90
+ export type PropFlatMapper = (entry: Prop.Node) => listable<MappedPropInner>;
91
+ export type MappedPropInner = BaseMappedPropInner | OptionalMappedPropInner;
92
+ export interface BaseMappedPropInner extends Required.Schema {
93
+ kind?: "required" | "optional";
94
+ }
95
+ export interface OptionalMappedPropInner extends Optional.Schema {
96
+ kind: "optional";
97
+ }
98
+ export declare const Structure: {
99
+ implementation: nodeImplementationOf<Structure.Declaration>;
100
+ Node: typeof StructureNode;
101
+ };
102
+ export declare const writeNumberIndexMessage: (indexExpression: string, sequenceExpression: string) => string;
103
+ export type NormalizedIndex = {
104
+ index?: Index.Node;
105
+ required?: Required.Node[];
106
+ optional?: Optional.Node[];
107
+ };
108
+ /** extract enumerable named props from an index signature */
109
+ export declare const normalizeIndex: (signature: BaseRoot, value: BaseRoot, $: BaseScope) => NormalizedIndex;
110
+ export declare const typeKeyToString: (k: KeyOrKeyNode) => string;
111
+ export declare const writeInvalidKeysMessage: <o extends string, keys extends array<KeyOrKeyNode>>(o: o, keys: keys) => string;
112
+ export declare const writeDuplicateKeyMessage: <key extends Key>(key: key) => writeDuplicateKeyMessage<key>;
113
+ export type writeDuplicateKeyMessage<key extends Key> = `Duplicate key '${describe<key>}'`;