@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.
- package/README.md +48 -25
- package/dist/blade-client.d.ts +2 -14
- package/dist/index.d.ts +5 -2
- package/dist/index.js +212 -106
- package/dist/index.js.map +1 -1
- package/dist/resources/models.d.ts +15 -0
- package/dist/resources/sessions.d.ts +8 -1
- package/dist/session/agent-session.d.ts +10 -0
- package/dist/session/definition.d.ts +49 -0
- package/dist/shared/projection/helpers.d.ts +1 -1
- package/dist/types/rest.d.ts +378 -10
- package/dist/version.d.ts +4 -42
- package/node_modules/@ark/schema/LICENSE +7 -0
- package/node_modules/@ark/schema/README.md +18 -0
- package/node_modules/@ark/schema/out/config.d.ts +58 -0
- package/node_modules/@ark/schema/out/config.js +95 -0
- package/node_modules/@ark/schema/out/constraint.d.ts +67 -0
- package/node_modules/@ark/schema/out/constraint.js +136 -0
- package/node_modules/@ark/schema/out/generic.d.ts +73 -0
- package/node_modules/@ark/schema/out/generic.js +76 -0
- package/node_modules/@ark/schema/out/index.d.ts +47 -0
- package/node_modules/@ark/schema/out/index.js +47 -0
- package/node_modules/@ark/schema/out/intrinsic.d.ts +24 -0
- package/node_modules/@ark/schema/out/intrinsic.js +56 -0
- package/node_modules/@ark/schema/out/kinds.d.ts +73 -0
- package/node_modules/@ark/schema/out/kinds.js +71 -0
- package/node_modules/@ark/schema/out/module.d.ts +24 -0
- package/node_modules/@ark/schema/out/module.js +15 -0
- package/node_modules/@ark/schema/out/node.d.ts +154 -0
- package/node_modules/@ark/schema/out/node.js +438 -0
- package/node_modules/@ark/schema/out/parse.d.ts +52 -0
- package/node_modules/@ark/schema/out/parse.js +215 -0
- package/node_modules/@ark/schema/out/predicate.d.ts +52 -0
- package/node_modules/@ark/schema/out/predicate.js +63 -0
- package/node_modules/@ark/schema/out/refinements/after.d.ts +41 -0
- package/node_modules/@ark/schema/out/refinements/after.js +35 -0
- package/node_modules/@ark/schema/out/refinements/before.d.ts +41 -0
- package/node_modules/@ark/schema/out/refinements/before.js +41 -0
- package/node_modules/@ark/schema/out/refinements/divisor.d.ts +43 -0
- package/node_modules/@ark/schema/out/refinements/divisor.js +58 -0
- package/node_modules/@ark/schema/out/refinements/exactLength.d.ts +49 -0
- package/node_modules/@ark/schema/out/refinements/exactLength.js +55 -0
- package/node_modules/@ark/schema/out/refinements/kinds.d.ts +34 -0
- package/node_modules/@ark/schema/out/refinements/kinds.js +25 -0
- package/node_modules/@ark/schema/out/refinements/max.d.ts +37 -0
- package/node_modules/@ark/schema/out/refinements/max.js +45 -0
- package/node_modules/@ark/schema/out/refinements/maxLength.d.ts +40 -0
- package/node_modules/@ark/schema/out/refinements/maxLength.js +49 -0
- package/node_modules/@ark/schema/out/refinements/min.d.ts +37 -0
- package/node_modules/@ark/schema/out/refinements/min.js +39 -0
- package/node_modules/@ark/schema/out/refinements/minLength.d.ts +40 -0
- package/node_modules/@ark/schema/out/refinements/minLength.js +47 -0
- package/node_modules/@ark/schema/out/refinements/pattern.d.ts +43 -0
- package/node_modules/@ark/schema/out/refinements/pattern.js +52 -0
- package/node_modules/@ark/schema/out/refinements/range.d.ts +106 -0
- package/node_modules/@ark/schema/out/refinements/range.js +103 -0
- package/node_modules/@ark/schema/out/roots/alias.d.ts +45 -0
- package/node_modules/@ark/schema/out/roots/alias.js +115 -0
- package/node_modules/@ark/schema/out/roots/basis.d.ts +12 -0
- package/node_modules/@ark/schema/out/roots/basis.js +26 -0
- package/node_modules/@ark/schema/out/roots/domain.d.ts +45 -0
- package/node_modules/@ark/schema/out/roots/domain.js +72 -0
- package/node_modules/@ark/schema/out/roots/intersection.d.ts +98 -0
- package/node_modules/@ark/schema/out/roots/intersection.js +292 -0
- package/node_modules/@ark/schema/out/roots/morph.d.ts +62 -0
- package/node_modules/@ark/schema/out/roots/morph.js +159 -0
- package/node_modules/@ark/schema/out/roots/proto.d.ts +53 -0
- package/node_modules/@ark/schema/out/roots/proto.js +101 -0
- package/node_modules/@ark/schema/out/roots/root.d.ts +145 -0
- package/node_modules/@ark/schema/out/roots/root.js +455 -0
- package/node_modules/@ark/schema/out/roots/union.d.ts +99 -0
- package/node_modules/@ark/schema/out/roots/union.js +718 -0
- package/node_modules/@ark/schema/out/roots/unit.d.ts +41 -0
- package/node_modules/@ark/schema/out/roots/unit.js +86 -0
- package/node_modules/@ark/schema/out/roots/utils.d.ts +3 -0
- package/node_modules/@ark/schema/out/roots/utils.js +6 -0
- package/node_modules/@ark/schema/out/scope.d.ts +158 -0
- package/node_modules/@ark/schema/out/scope.js +481 -0
- package/node_modules/@ark/schema/out/shared/compile.d.ts +62 -0
- package/node_modules/@ark/schema/out/shared/compile.js +145 -0
- package/node_modules/@ark/schema/out/shared/declare.d.ts +80 -0
- package/node_modules/@ark/schema/out/shared/declare.js +1 -0
- package/node_modules/@ark/schema/out/shared/disjoint.d.ts +41 -0
- package/node_modules/@ark/schema/out/shared/disjoint.js +65 -0
- package/node_modules/@ark/schema/out/shared/errors.d.ts +145 -0
- package/node_modules/@ark/schema/out/shared/errors.js +252 -0
- package/node_modules/@ark/schema/out/shared/implement.d.ts +151 -0
- package/node_modules/@ark/schema/out/shared/implement.js +98 -0
- package/node_modules/@ark/schema/out/shared/intersections.d.ts +10 -0
- package/node_modules/@ark/schema/out/shared/intersections.js +132 -0
- package/node_modules/@ark/schema/out/shared/jsonSchema.d.ts +93 -0
- package/node_modules/@ark/schema/out/shared/jsonSchema.js +1 -0
- package/node_modules/@ark/schema/out/shared/registry.d.ts +7 -0
- package/node_modules/@ark/schema/out/shared/registry.js +10 -0
- package/node_modules/@ark/schema/out/shared/standardSchema.d.ts +122 -0
- package/node_modules/@ark/schema/out/shared/standardSchema.js +2 -0
- package/node_modules/@ark/schema/out/shared/toJsonSchema.d.ts +139 -0
- package/node_modules/@ark/schema/out/shared/toJsonSchema.js +40 -0
- package/node_modules/@ark/schema/out/shared/traversal.d.ts +117 -0
- package/node_modules/@ark/schema/out/shared/traversal.js +226 -0
- package/node_modules/@ark/schema/out/shared/utils.d.ts +34 -0
- package/node_modules/@ark/schema/out/shared/utils.js +8 -0
- package/node_modules/@ark/schema/out/structure/index.d.ts +46 -0
- package/node_modules/@ark/schema/out/structure/index.js +89 -0
- package/node_modules/@ark/schema/out/structure/optional.d.ts +49 -0
- package/node_modules/@ark/schema/out/structure/optional.js +127 -0
- package/node_modules/@ark/schema/out/structure/prop.d.ts +45 -0
- package/node_modules/@ark/schema/out/structure/prop.js +85 -0
- package/node_modules/@ark/schema/out/structure/required.d.ts +39 -0
- package/node_modules/@ark/schema/out/structure/required.js +38 -0
- package/node_modules/@ark/schema/out/structure/sequence.d.ts +110 -0
- package/node_modules/@ark/schema/out/structure/sequence.js +521 -0
- package/node_modules/@ark/schema/out/structure/shared.d.ts +4 -0
- package/node_modules/@ark/schema/out/structure/shared.js +4 -0
- package/node_modules/@ark/schema/out/structure/structure.d.ts +113 -0
- package/node_modules/@ark/schema/out/structure/structure.js +747 -0
- package/node_modules/@ark/schema/package.json +51 -0
- package/node_modules/@ark/util/LICENSE +7 -0
- package/node_modules/@ark/util/out/arrays.d.ts +166 -0
- package/node_modules/@ark/util/out/arrays.js +147 -0
- package/node_modules/@ark/util/out/clone.d.ts +4 -0
- package/node_modules/@ark/util/out/clone.js +33 -0
- package/node_modules/@ark/util/out/describe.d.ts +25 -0
- package/node_modules/@ark/util/out/describe.js +1 -0
- package/node_modules/@ark/util/out/domain.d.ts +48 -0
- package/node_modules/@ark/util/out/domain.js +25 -0
- package/node_modules/@ark/util/out/errors.d.ts +29 -0
- package/node_modules/@ark/util/out/errors.js +17 -0
- package/node_modules/@ark/util/out/flatMorph.d.ts +41 -0
- package/node_modules/@ark/util/out/flatMorph.js +24 -0
- package/node_modules/@ark/util/out/functions.d.ts +33 -0
- package/node_modules/@ark/util/out/functions.js +53 -0
- package/node_modules/@ark/util/out/generics.d.ts +59 -0
- package/node_modules/@ark/util/out/generics.js +5 -0
- package/node_modules/@ark/util/out/get.d.ts +9 -0
- package/node_modules/@ark/util/out/get.js +7 -0
- package/node_modules/@ark/util/out/hkt.d.ts +27 -0
- package/node_modules/@ark/util/out/hkt.js +5 -0
- package/node_modules/@ark/util/out/index.d.ts +24 -0
- package/node_modules/@ark/util/out/index.js +24 -0
- package/node_modules/@ark/util/out/intersections.d.ts +50 -0
- package/node_modules/@ark/util/out/intersections.js +1 -0
- package/node_modules/@ark/util/out/isomorphic.d.ts +5 -0
- package/node_modules/@ark/util/out/isomorphic.js +19 -0
- package/node_modules/@ark/util/out/keys.d.ts +18 -0
- package/node_modules/@ark/util/out/keys.js +1 -0
- package/node_modules/@ark/util/out/lazily.d.ts +1 -0
- package/node_modules/@ark/util/out/lazily.js +16 -0
- package/node_modules/@ark/util/out/numbers.d.ts +72 -0
- package/node_modules/@ark/util/out/numbers.js +138 -0
- package/node_modules/@ark/util/out/objectKinds.d.ts +205 -0
- package/node_modules/@ark/util/out/objectKinds.js +150 -0
- package/node_modules/@ark/util/out/path.d.ts +22 -0
- package/node_modules/@ark/util/out/path.js +65 -0
- package/node_modules/@ark/util/out/primitive.d.ts +16 -0
- package/node_modules/@ark/util/out/primitive.js +3 -0
- package/node_modules/@ark/util/out/records.d.ts +183 -0
- package/node_modules/@ark/util/out/records.js +63 -0
- package/node_modules/@ark/util/out/registry.d.ts +21 -0
- package/node_modules/@ark/util/out/registry.js +49 -0
- package/node_modules/@ark/util/out/scanner.d.ts +44 -0
- package/node_modules/@ark/util/out/scanner.js +87 -0
- package/node_modules/@ark/util/out/serialize.d.ts +34 -0
- package/node_modules/@ark/util/out/serialize.js +150 -0
- package/node_modules/@ark/util/out/strings.d.ts +33 -0
- package/node_modules/@ark/util/out/strings.js +59 -0
- package/node_modules/@ark/util/out/traits.d.ts +89 -0
- package/node_modules/@ark/util/out/traits.js +75 -0
- package/node_modules/@ark/util/out/unionToTuple.d.ts +14 -0
- package/node_modules/@ark/util/out/unionToTuple.js +1 -0
- package/node_modules/@ark/util/package.json +39 -0
- package/node_modules/@ark/util/tsconfig.base.json +18 -0
- package/node_modules/@socket.io/component-emitter/LICENSE +24 -0
- package/node_modules/@socket.io/component-emitter/Readme.md +79 -0
- package/node_modules/@socket.io/component-emitter/lib/cjs/index.d.ts +179 -0
- package/node_modules/@socket.io/component-emitter/lib/cjs/index.js +176 -0
- package/node_modules/@socket.io/component-emitter/lib/cjs/package.json +4 -0
- package/node_modules/@socket.io/component-emitter/lib/esm/index.d.ts +179 -0
- package/node_modules/@socket.io/component-emitter/lib/esm/index.js +169 -0
- package/node_modules/@socket.io/component-emitter/lib/esm/package.json +4 -0
- package/node_modules/@socket.io/component-emitter/package.json +28 -0
- package/node_modules/arkregex/LICENSE +7 -0
- package/node_modules/arkregex/README.md +61 -0
- package/node_modules/arkregex/out/charset.d.ts +15 -0
- package/node_modules/arkregex/out/charset.js +1 -0
- package/node_modules/arkregex/out/escape.d.ts +29 -0
- package/node_modules/arkregex/out/escape.js +10 -0
- package/node_modules/arkregex/out/execArray.d.ts +23 -0
- package/node_modules/arkregex/out/execArray.js +1 -0
- package/node_modules/arkregex/out/group.d.ts +33 -0
- package/node_modules/arkregex/out/group.js +6 -0
- package/node_modules/arkregex/out/index.d.ts +1 -0
- package/node_modules/arkregex/out/index.js +1 -0
- package/node_modules/arkregex/out/parse.d.ts +10 -0
- package/node_modules/arkregex/out/parse.js +1 -0
- package/node_modules/arkregex/out/quantify.d.ts +43 -0
- package/node_modules/arkregex/out/quantify.js +2 -0
- package/node_modules/arkregex/out/regex.d.ts +38 -0
- package/node_modules/arkregex/out/regex.js +2 -0
- package/node_modules/arkregex/out/state.d.ts +359 -0
- package/node_modules/arkregex/out/state.js +2 -0
- package/node_modules/arkregex/package.json +42 -0
- package/node_modules/arktype/LICENSE +7 -0
- package/node_modules/arktype/README.md +157 -0
- package/node_modules/arktype/out/attributes.d.ts +104 -0
- package/node_modules/arktype/out/attributes.js +3 -0
- package/node_modules/arktype/out/config.d.ts +35 -0
- package/node_modules/arktype/out/config.js +3 -0
- package/node_modules/arktype/out/declare.d.ts +35 -0
- package/node_modules/arktype/out/declare.js +1 -0
- package/node_modules/arktype/out/fn.d.ts +61 -0
- package/node_modules/arktype/out/fn.js +54 -0
- package/node_modules/arktype/out/generic.d.ts +118 -0
- package/node_modules/arktype/out/generic.js +37 -0
- package/node_modules/arktype/out/index.d.ts +12 -0
- package/node_modules/arktype/out/index.js +9 -0
- package/node_modules/arktype/out/keywords/Array.d.ts +20 -0
- package/node_modules/arktype/out/keywords/Array.js +21 -0
- package/node_modules/arktype/out/keywords/FormData.d.ts +15 -0
- package/node_modules/arktype/out/keywords/FormData.js +40 -0
- package/node_modules/arktype/out/keywords/TypedArray.d.ts +19 -0
- package/node_modules/arktype/out/keywords/TypedArray.js +16 -0
- package/node_modules/arktype/out/keywords/builtins.d.ts +18 -0
- package/node_modules/arktype/out/keywords/builtins.js +11 -0
- package/node_modules/arktype/out/keywords/constructors.d.ts +31 -0
- package/node_modules/arktype/out/keywords/constructors.js +16 -0
- package/node_modules/arktype/out/keywords/keywords.d.ts +70 -0
- package/node_modules/arktype/out/keywords/keywords.js +48 -0
- package/node_modules/arktype/out/keywords/number.d.ts +23 -0
- package/node_modules/arktype/out/keywords/number.js +49 -0
- package/node_modules/arktype/out/keywords/string.d.ts +334 -0
- package/node_modules/arktype/out/keywords/string.js +463 -0
- package/node_modules/arktype/out/keywords/ts.d.ts +108 -0
- package/node_modules/arktype/out/keywords/ts.js +82 -0
- package/node_modules/arktype/out/match.d.ts +152 -0
- package/node_modules/arktype/out/match.js +95 -0
- package/node_modules/arktype/out/module.d.ts +22 -0
- package/node_modules/arktype/out/module.js +3 -0
- package/node_modules/arktype/out/nary.d.ts +473 -0
- package/node_modules/arktype/out/nary.js +1 -0
- package/node_modules/arktype/out/parser/ast/bounds.d.ts +18 -0
- package/node_modules/arktype/out/parser/ast/bounds.js +1 -0
- package/node_modules/arktype/out/parser/ast/default.d.ts +8 -0
- package/node_modules/arktype/out/parser/ast/default.js +1 -0
- package/node_modules/arktype/out/parser/ast/divisor.d.ts +9 -0
- package/node_modules/arktype/out/parser/ast/divisor.js +1 -0
- package/node_modules/arktype/out/parser/ast/generic.d.ts +17 -0
- package/node_modules/arktype/out/parser/ast/generic.js +1 -0
- package/node_modules/arktype/out/parser/ast/infer.d.ts +25 -0
- package/node_modules/arktype/out/parser/ast/infer.js +1 -0
- package/node_modules/arktype/out/parser/ast/keyof.d.ts +7 -0
- package/node_modules/arktype/out/parser/ast/keyof.js +1 -0
- package/node_modules/arktype/out/parser/ast/utils.d.ts +8 -0
- package/node_modules/arktype/out/parser/ast/utils.js +1 -0
- package/node_modules/arktype/out/parser/ast/validate.d.ts +30 -0
- package/node_modules/arktype/out/parser/ast/validate.js +3 -0
- package/node_modules/arktype/out/parser/definition.d.ts +30 -0
- package/node_modules/arktype/out/parser/definition.js +74 -0
- package/node_modules/arktype/out/parser/objectLiteral.d.ts +70 -0
- package/node_modules/arktype/out/parser/objectLiteral.js +113 -0
- package/node_modules/arktype/out/parser/property.d.ts +34 -0
- package/node_modules/arktype/out/parser/property.js +16 -0
- package/node_modules/arktype/out/parser/reduce/dynamic.d.ts +42 -0
- package/node_modules/arktype/out/parser/reduce/dynamic.js +153 -0
- package/node_modules/arktype/out/parser/reduce/shared.d.ts +39 -0
- package/node_modules/arktype/out/parser/reduce/shared.js +25 -0
- package/node_modules/arktype/out/parser/reduce/static.d.ts +186 -0
- package/node_modules/arktype/out/parser/reduce/static.js +1 -0
- package/node_modules/arktype/out/parser/shift/operand/date.d.ts +11 -0
- package/node_modules/arktype/out/parser/shift/operand/date.js +23 -0
- package/node_modules/arktype/out/parser/shift/operand/enclosed.d.ts +57 -0
- package/node_modules/arktype/out/parser/shift/operand/enclosed.js +78 -0
- package/node_modules/arktype/out/parser/shift/operand/genericArgs.d.ts +27 -0
- package/node_modules/arktype/out/parser/shift/operand/genericArgs.js +16 -0
- package/node_modules/arktype/out/parser/shift/operand/operand.d.ts +8 -0
- package/node_modules/arktype/out/parser/shift/operand/operand.js +16 -0
- package/node_modules/arktype/out/parser/shift/operand/unenclosed.d.ts +43 -0
- package/node_modules/arktype/out/parser/shift/operand/unenclosed.js +59 -0
- package/node_modules/arktype/out/parser/shift/operator/bounds.d.ts +24 -0
- package/node_modules/arktype/out/parser/shift/operator/bounds.js +91 -0
- package/node_modules/arktype/out/parser/shift/operator/brand.d.ts +7 -0
- package/node_modules/arktype/out/parser/shift/operator/brand.js +6 -0
- package/node_modules/arktype/out/parser/shift/operator/default.d.ts +24 -0
- package/node_modules/arktype/out/parser/shift/operator/default.js +15 -0
- package/node_modules/arktype/out/parser/shift/operator/divisor.d.ts +8 -0
- package/node_modules/arktype/out/parser/shift/operator/divisor.js +13 -0
- package/node_modules/arktype/out/parser/shift/operator/operator.d.ts +14 -0
- package/node_modules/arktype/out/parser/shift/operator/operator.js +28 -0
- package/node_modules/arktype/out/parser/shift/tokens.d.ts +33 -0
- package/node_modules/arktype/out/parser/shift/tokens.js +37 -0
- package/node_modules/arktype/out/parser/string.d.ts +30 -0
- package/node_modules/arktype/out/parser/string.js +42 -0
- package/node_modules/arktype/out/parser/tupleExpressions.d.ts +79 -0
- package/node_modules/arktype/out/parser/tupleExpressions.js +75 -0
- package/node_modules/arktype/out/parser/tupleLiteral.d.ts +95 -0
- package/node_modules/arktype/out/parser/tupleLiteral.js +128 -0
- package/node_modules/arktype/out/scope.d.ts +158 -0
- package/node_modules/arktype/out/scope.js +106 -0
- package/node_modules/arktype/out/type.d.ts +144 -0
- package/node_modules/arktype/out/type.js +55 -0
- package/node_modules/arktype/out/variants/array.d.ts +12 -0
- package/node_modules/arktype/out/variants/array.js +1 -0
- package/node_modules/arktype/out/variants/base.d.ts +542 -0
- package/node_modules/arktype/out/variants/base.js +1 -0
- package/node_modules/arktype/out/variants/date.d.ts +10 -0
- package/node_modules/arktype/out/variants/date.js +1 -0
- package/node_modules/arktype/out/variants/instantiate.d.ts +12 -0
- package/node_modules/arktype/out/variants/instantiate.js +1 -0
- package/node_modules/arktype/out/variants/number.d.ts +11 -0
- package/node_modules/arktype/out/variants/number.js +1 -0
- package/node_modules/arktype/out/variants/object.d.ts +107 -0
- package/node_modules/arktype/out/variants/object.js +1 -0
- package/node_modules/arktype/out/variants/string.d.ts +15 -0
- package/node_modules/arktype/out/variants/string.js +1 -0
- package/node_modules/arktype/package.json +57 -0
- package/node_modules/debug/LICENSE +20 -0
- package/node_modules/debug/README.md +481 -0
- package/node_modules/debug/package.json +64 -0
- package/node_modules/debug/src/browser.js +272 -0
- package/node_modules/debug/src/common.js +292 -0
- package/node_modules/debug/src/index.js +10 -0
- package/node_modules/debug/src/node.js +263 -0
- package/node_modules/engine.io-client/LICENSE +22 -0
- package/node_modules/engine.io-client/README.md +331 -0
- package/node_modules/engine.io-client/build/cjs/browser-entrypoint.d.ts +3 -0
- package/node_modules/engine.io-client/build/cjs/browser-entrypoint.js +4 -0
- package/node_modules/engine.io-client/build/cjs/contrib/has-cors.d.ts +1 -0
- package/node_modules/engine.io-client/build/cjs/contrib/has-cors.js +14 -0
- package/node_modules/engine.io-client/build/cjs/contrib/parseqs.d.ts +15 -0
- package/node_modules/engine.io-client/build/cjs/contrib/parseqs.js +38 -0
- package/node_modules/engine.io-client/build/cjs/contrib/parseuri.d.ts +1 -0
- package/node_modules/engine.io-client/build/cjs/contrib/parseuri.js +67 -0
- package/node_modules/engine.io-client/build/cjs/globals.d.ts +4 -0
- package/node_modules/engine.io-client/build/cjs/globals.js +26 -0
- package/node_modules/engine.io-client/build/cjs/globals.node.d.ts +21 -0
- package/node_modules/engine.io-client/build/cjs/globals.node.js +97 -0
- package/node_modules/engine.io-client/build/cjs/index.d.ts +15 -0
- package/node_modules/engine.io-client/build/cjs/index.js +32 -0
- package/node_modules/engine.io-client/build/cjs/package.json +10 -0
- package/node_modules/engine.io-client/build/cjs/socket.d.ts +482 -0
- package/node_modules/engine.io-client/build/cjs/socket.js +765 -0
- package/node_modules/engine.io-client/build/cjs/transport.d.ts +106 -0
- package/node_modules/engine.io-client/build/cjs/transport.js +153 -0
- package/node_modules/engine.io-client/build/cjs/transports/index.d.ts +8 -0
- package/node_modules/engine.io-client/build/cjs/transports/index.js +11 -0
- package/node_modules/engine.io-client/build/cjs/transports/polling-fetch.d.ts +15 -0
- package/node_modules/engine.io-client/build/cjs/transports/polling-fetch.js +60 -0
- package/node_modules/engine.io-client/build/cjs/transports/polling-xhr.d.ts +108 -0
- package/node_modules/engine.io-client/build/cjs/transports/polling-xhr.js +285 -0
- package/node_modules/engine.io-client/build/cjs/transports/polling-xhr.node.d.ts +11 -0
- package/node_modules/engine.io-client/build/cjs/transports/polling-xhr.node.js +44 -0
- package/node_modules/engine.io-client/build/cjs/transports/polling.d.ts +52 -0
- package/node_modules/engine.io-client/build/cjs/transports/polling.js +165 -0
- package/node_modules/engine.io-client/build/cjs/transports/websocket.d.ts +36 -0
- package/node_modules/engine.io-client/build/cjs/transports/websocket.js +136 -0
- package/node_modules/engine.io-client/build/cjs/transports/websocket.node.d.ts +14 -0
- package/node_modules/engine.io-client/build/cjs/transports/websocket.node.js +68 -0
- package/node_modules/engine.io-client/build/cjs/transports/webtransport.d.ts +18 -0
- package/node_modules/engine.io-client/build/cjs/transports/webtransport.js +94 -0
- package/node_modules/engine.io-client/build/cjs/util.d.ts +7 -0
- package/node_modules/engine.io-client/build/cjs/util.js +65 -0
- package/node_modules/engine.io-client/build/esm/browser-entrypoint.d.ts +3 -0
- package/node_modules/engine.io-client/build/esm/browser-entrypoint.js +2 -0
- package/node_modules/engine.io-client/build/esm/contrib/has-cors.d.ts +1 -0
- package/node_modules/engine.io-client/build/esm/contrib/has-cors.js +11 -0
- package/node_modules/engine.io-client/build/esm/contrib/parseqs.d.ts +15 -0
- package/node_modules/engine.io-client/build/esm/contrib/parseqs.js +34 -0
- package/node_modules/engine.io-client/build/esm/contrib/parseuri.d.ts +1 -0
- package/node_modules/engine.io-client/build/esm/contrib/parseuri.js +64 -0
- package/node_modules/engine.io-client/build/esm/globals.d.ts +4 -0
- package/node_modules/engine.io-client/build/esm/globals.js +22 -0
- package/node_modules/engine.io-client/build/esm/globals.node.d.ts +21 -0
- package/node_modules/engine.io-client/build/esm/globals.node.js +91 -0
- package/node_modules/engine.io-client/build/esm/index.d.ts +15 -0
- package/node_modules/engine.io-client/build/esm/index.js +15 -0
- package/node_modules/engine.io-client/build/esm/package.json +10 -0
- package/node_modules/engine.io-client/build/esm/socket.d.ts +482 -0
- package/node_modules/engine.io-client/build/esm/socket.js +727 -0
- package/node_modules/engine.io-client/build/esm/transport.d.ts +106 -0
- package/node_modules/engine.io-client/build/esm/transport.js +142 -0
- package/node_modules/engine.io-client/build/esm/transports/index.d.ts +8 -0
- package/node_modules/engine.io-client/build/esm/transports/index.js +8 -0
- package/node_modules/engine.io-client/build/esm/transports/polling-fetch.d.ts +15 -0
- package/node_modules/engine.io-client/build/esm/transports/polling-fetch.js +56 -0
- package/node_modules/engine.io-client/build/esm/transports/polling-xhr.d.ts +108 -0
- package/node_modules/engine.io-client/build/esm/transports/polling-xhr.js +271 -0
- package/node_modules/engine.io-client/build/esm/transports/polling-xhr.node.d.ts +11 -0
- package/node_modules/engine.io-client/build/esm/transports/polling-xhr.node.js +17 -0
- package/node_modules/engine.io-client/build/esm/transports/polling.d.ts +52 -0
- package/node_modules/engine.io-client/build/esm/transports/polling.js +145 -0
- package/node_modules/engine.io-client/build/esm/transports/websocket.d.ts +36 -0
- package/node_modules/engine.io-client/build/esm/transports/websocket.js +125 -0
- package/node_modules/engine.io-client/build/esm/transports/websocket.node.d.ts +14 -0
- package/node_modules/engine.io-client/build/esm/transports/websocket.node.js +41 -0
- package/node_modules/engine.io-client/build/esm/transports/webtransport.d.ts +18 -0
- package/node_modules/engine.io-client/build/esm/transports/webtransport.js +80 -0
- package/node_modules/engine.io-client/build/esm/util.d.ts +7 -0
- package/node_modules/engine.io-client/build/esm/util.js +59 -0
- package/node_modules/engine.io-client/build/esm-debug/browser-entrypoint.d.ts +3 -0
- package/node_modules/engine.io-client/build/esm-debug/browser-entrypoint.js +2 -0
- package/node_modules/engine.io-client/build/esm-debug/contrib/has-cors.d.ts +1 -0
- package/node_modules/engine.io-client/build/esm-debug/contrib/has-cors.js +11 -0
- package/node_modules/engine.io-client/build/esm-debug/contrib/parseqs.d.ts +15 -0
- package/node_modules/engine.io-client/build/esm-debug/contrib/parseqs.js +34 -0
- package/node_modules/engine.io-client/build/esm-debug/contrib/parseuri.d.ts +1 -0
- package/node_modules/engine.io-client/build/esm-debug/contrib/parseuri.js +64 -0
- package/node_modules/engine.io-client/build/esm-debug/globals.d.ts +4 -0
- package/node_modules/engine.io-client/build/esm-debug/globals.js +22 -0
- package/node_modules/engine.io-client/build/esm-debug/globals.node.d.ts +21 -0
- package/node_modules/engine.io-client/build/esm-debug/globals.node.js +91 -0
- package/node_modules/engine.io-client/build/esm-debug/index.d.ts +15 -0
- package/node_modules/engine.io-client/build/esm-debug/index.js +15 -0
- package/node_modules/engine.io-client/build/esm-debug/package.json +10 -0
- package/node_modules/engine.io-client/build/esm-debug/socket.d.ts +482 -0
- package/node_modules/engine.io-client/build/esm-debug/socket.js +756 -0
- package/node_modules/engine.io-client/build/esm-debug/transport.d.ts +106 -0
- package/node_modules/engine.io-client/build/esm-debug/transport.js +145 -0
- package/node_modules/engine.io-client/build/esm-debug/transports/index.d.ts +8 -0
- package/node_modules/engine.io-client/build/esm-debug/transports/index.js +8 -0
- package/node_modules/engine.io-client/build/esm-debug/transports/polling-fetch.d.ts +15 -0
- package/node_modules/engine.io-client/build/esm-debug/transports/polling-fetch.js +56 -0
- package/node_modules/engine.io-client/build/esm-debug/transports/polling-xhr.d.ts +108 -0
- package/node_modules/engine.io-client/build/esm-debug/transports/polling-xhr.js +276 -0
- package/node_modules/engine.io-client/build/esm-debug/transports/polling-xhr.node.d.ts +11 -0
- package/node_modules/engine.io-client/build/esm-debug/transports/polling-xhr.node.js +17 -0
- package/node_modules/engine.io-client/build/esm-debug/transports/polling.d.ts +52 -0
- package/node_modules/engine.io-client/build/esm-debug/transports/polling.js +158 -0
- package/node_modules/engine.io-client/build/esm-debug/transports/websocket.d.ts +36 -0
- package/node_modules/engine.io-client/build/esm-debug/transports/websocket.js +128 -0
- package/node_modules/engine.io-client/build/esm-debug/transports/websocket.node.d.ts +14 -0
- package/node_modules/engine.io-client/build/esm-debug/transports/websocket.node.js +41 -0
- package/node_modules/engine.io-client/build/esm-debug/transports/webtransport.d.ts +18 -0
- package/node_modules/engine.io-client/build/esm-debug/transports/webtransport.js +87 -0
- package/node_modules/engine.io-client/build/esm-debug/util.d.ts +7 -0
- package/node_modules/engine.io-client/build/esm-debug/util.js +59 -0
- package/node_modules/engine.io-client/dist/engine.io.esm.min.js +7 -0
- package/node_modules/engine.io-client/dist/engine.io.esm.min.js.map +1 -0
- package/node_modules/engine.io-client/dist/engine.io.js +3064 -0
- package/node_modules/engine.io-client/dist/engine.io.js.map +1 -0
- package/node_modules/engine.io-client/dist/engine.io.min.js +7 -0
- package/node_modules/engine.io-client/dist/engine.io.min.js.map +1 -0
- package/node_modules/engine.io-client/package.json +95 -0
- package/node_modules/engine.io-parser/LICENSE +22 -0
- package/node_modules/engine.io-parser/Readme.md +158 -0
- package/node_modules/engine.io-parser/build/cjs/commons.d.ts +14 -0
- package/node_modules/engine.io-parser/build/cjs/commons.js +19 -0
- package/node_modules/engine.io-parser/build/cjs/contrib/base64-arraybuffer.d.ts +2 -0
- package/node_modules/engine.io-parser/build/cjs/contrib/base64-arraybuffer.js +48 -0
- package/node_modules/engine.io-parser/build/cjs/decodePacket.browser.d.ts +2 -0
- package/node_modules/engine.io-parser/build/cjs/decodePacket.browser.js +66 -0
- package/node_modules/engine.io-parser/build/cjs/decodePacket.d.ts +2 -0
- package/node_modules/engine.io-parser/build/cjs/decodePacket.js +59 -0
- package/node_modules/engine.io-parser/build/cjs/encodePacket.browser.d.ts +4 -0
- package/node_modules/engine.io-parser/build/cjs/encodePacket.browser.js +72 -0
- package/node_modules/engine.io-parser/build/cjs/encodePacket.d.ts +3 -0
- package/node_modules/engine.io-parser/build/cjs/encodePacket.js +38 -0
- package/node_modules/engine.io-parser/build/cjs/index.d.ts +9 -0
- package/node_modules/engine.io-parser/build/cjs/index.js +164 -0
- package/node_modules/engine.io-parser/build/cjs/package.json +8 -0
- package/node_modules/engine.io-parser/build/esm/commons.d.ts +14 -0
- package/node_modules/engine.io-parser/build/esm/commons.js +14 -0
- package/node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.d.ts +2 -0
- package/node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js +43 -0
- package/node_modules/engine.io-parser/build/esm/decodePacket.browser.d.ts +2 -0
- package/node_modules/engine.io-parser/build/esm/decodePacket.browser.js +62 -0
- package/node_modules/engine.io-parser/build/esm/decodePacket.d.ts +2 -0
- package/node_modules/engine.io-parser/build/esm/decodePacket.js +55 -0
- package/node_modules/engine.io-parser/build/esm/encodePacket.browser.d.ts +4 -0
- package/node_modules/engine.io-parser/build/esm/encodePacket.browser.js +68 -0
- package/node_modules/engine.io-parser/build/esm/encodePacket.d.ts +3 -0
- package/node_modules/engine.io-parser/build/esm/encodePacket.js +33 -0
- package/node_modules/engine.io-parser/build/esm/index.d.ts +9 -0
- package/node_modules/engine.io-parser/build/esm/index.js +156 -0
- package/node_modules/engine.io-parser/build/esm/package.json +8 -0
- package/node_modules/engine.io-parser/package.json +46 -0
- package/node_modules/ms/index.js +162 -0
- package/node_modules/ms/license.md +21 -0
- package/node_modules/ms/package.json +38 -0
- package/node_modules/ms/readme.md +59 -0
- package/node_modules/socket.io-client/LICENSE +21 -0
- package/node_modules/socket.io-client/README.md +29 -0
- package/node_modules/socket.io-client/build/cjs/browser-entrypoint.d.ts +2 -0
- package/node_modules/socket.io-client/build/cjs/browser-entrypoint.js +4 -0
- package/node_modules/socket.io-client/build/cjs/contrib/backo2.d.ts +12 -0
- package/node_modules/socket.io-client/build/cjs/contrib/backo2.js +69 -0
- package/node_modules/socket.io-client/build/cjs/index.d.ts +29 -0
- package/node_modules/socket.io-client/build/cjs/index.js +76 -0
- package/node_modules/socket.io-client/build/cjs/manager.d.ts +295 -0
- package/node_modules/socket.io-client/build/cjs/manager.js +416 -0
- package/node_modules/socket.io-client/build/cjs/on.d.ts +2 -0
- package/node_modules/socket.io-client/build/cjs/on.js +9 -0
- package/node_modules/socket.io-client/build/cjs/socket.d.ts +593 -0
- package/node_modules/socket.io-client/build/cjs/socket.js +909 -0
- package/node_modules/socket.io-client/build/cjs/url.d.ts +33 -0
- package/node_modules/socket.io-client/build/cjs/url.js +69 -0
- package/node_modules/socket.io-client/build/esm/browser-entrypoint.d.ts +2 -0
- package/node_modules/socket.io-client/build/esm/browser-entrypoint.js +2 -0
- package/node_modules/socket.io-client/build/esm/contrib/backo2.d.ts +12 -0
- package/node_modules/socket.io-client/build/esm/contrib/backo2.js +66 -0
- package/node_modules/socket.io-client/build/esm/index.d.ts +29 -0
- package/node_modules/socket.io-client/build/esm/index.js +58 -0
- package/node_modules/socket.io-client/build/esm/manager.d.ts +295 -0
- package/node_modules/socket.io-client/build/esm/manager.js +367 -0
- package/node_modules/socket.io-client/build/esm/on.d.ts +2 -0
- package/node_modules/socket.io-client/build/esm/on.js +6 -0
- package/node_modules/socket.io-client/build/esm/package.json +5 -0
- package/node_modules/socket.io-client/build/esm/socket.d.ts +593 -0
- package/node_modules/socket.io-client/build/esm/socket.js +880 -0
- package/node_modules/socket.io-client/build/esm/url.d.ts +33 -0
- package/node_modules/socket.io-client/build/esm/url.js +59 -0
- package/node_modules/socket.io-client/build/esm-debug/browser-entrypoint.d.ts +2 -0
- package/node_modules/socket.io-client/build/esm-debug/browser-entrypoint.js +2 -0
- package/node_modules/socket.io-client/build/esm-debug/contrib/backo2.d.ts +12 -0
- package/node_modules/socket.io-client/build/esm-debug/contrib/backo2.js +66 -0
- package/node_modules/socket.io-client/build/esm-debug/index.d.ts +29 -0
- package/node_modules/socket.io-client/build/esm-debug/index.js +62 -0
- package/node_modules/socket.io-client/build/esm-debug/manager.d.ts +295 -0
- package/node_modules/socket.io-client/build/esm-debug/manager.js +386 -0
- package/node_modules/socket.io-client/build/esm-debug/on.d.ts +2 -0
- package/node_modules/socket.io-client/build/esm-debug/on.js +6 -0
- package/node_modules/socket.io-client/build/esm-debug/package.json +5 -0
- package/node_modules/socket.io-client/build/esm-debug/socket.d.ts +593 -0
- package/node_modules/socket.io-client/build/esm-debug/socket.js +902 -0
- package/node_modules/socket.io-client/build/esm-debug/url.d.ts +33 -0
- package/node_modules/socket.io-client/build/esm-debug/url.js +63 -0
- package/node_modules/socket.io-client/dist/socket.io.esm.min.js +7 -0
- package/node_modules/socket.io-client/dist/socket.io.esm.min.js.map +1 -0
- package/node_modules/socket.io-client/dist/socket.io.js +4955 -0
- package/node_modules/socket.io-client/dist/socket.io.js.map +1 -0
- package/node_modules/socket.io-client/dist/socket.io.min.js +7 -0
- package/node_modules/socket.io-client/dist/socket.io.min.js.map +1 -0
- package/node_modules/socket.io-client/dist/socket.io.msgpack.min.js +7 -0
- package/node_modules/socket.io-client/dist/socket.io.msgpack.min.js.map +1 -0
- package/node_modules/socket.io-client/package.json +101 -0
- package/node_modules/socket.io-parser/LICENSE +20 -0
- package/node_modules/socket.io-parser/Readme.md +81 -0
- package/node_modules/socket.io-parser/build/cjs/binary.d.ts +20 -0
- package/node_modules/socket.io-parser/build/cjs/binary.js +87 -0
- package/node_modules/socket.io-parser/build/cjs/index.d.ts +91 -0
- package/node_modules/socket.io-parser/build/cjs/index.js +359 -0
- package/node_modules/socket.io-parser/build/cjs/is-binary.d.ts +7 -0
- package/node_modules/socket.io-parser/build/cjs/is-binary.js +54 -0
- package/node_modules/socket.io-parser/build/cjs/package.json +3 -0
- package/node_modules/socket.io-parser/build/esm/binary.d.ts +20 -0
- package/node_modules/socket.io-parser/build/esm/binary.js +83 -0
- package/node_modules/socket.io-parser/build/esm/index.d.ts +91 -0
- package/node_modules/socket.io-parser/build/esm/index.js +348 -0
- package/node_modules/socket.io-parser/build/esm/is-binary.d.ts +7 -0
- package/node_modules/socket.io-parser/build/esm/is-binary.js +50 -0
- package/node_modules/socket.io-parser/build/esm/package.json +3 -0
- package/node_modules/socket.io-parser/build/esm-debug/binary.d.ts +20 -0
- package/node_modules/socket.io-parser/build/esm-debug/binary.js +83 -0
- package/node_modules/socket.io-parser/build/esm-debug/index.d.ts +91 -0
- package/node_modules/socket.io-parser/build/esm-debug/index.js +353 -0
- package/node_modules/socket.io-parser/build/esm-debug/is-binary.d.ts +7 -0
- package/node_modules/socket.io-parser/build/esm-debug/is-binary.js +50 -0
- package/node_modules/socket.io-parser/build/esm-debug/package.json +3 -0
- package/node_modules/socket.io-parser/package.json +44 -0
- package/node_modules/ws/LICENSE +20 -0
- package/node_modules/ws/README.md +548 -0
- package/node_modules/ws/browser.js +8 -0
- package/node_modules/ws/index.js +13 -0
- package/node_modules/ws/lib/buffer-util.js +131 -0
- package/node_modules/ws/lib/constants.js +18 -0
- package/node_modules/ws/lib/event-target.js +292 -0
- package/node_modules/ws/lib/extension.js +203 -0
- package/node_modules/ws/lib/limiter.js +55 -0
- package/node_modules/ws/lib/permessage-deflate.js +528 -0
- package/node_modules/ws/lib/receiver.js +706 -0
- package/node_modules/ws/lib/sender.js +602 -0
- package/node_modules/ws/lib/stream.js +161 -0
- package/node_modules/ws/lib/subprotocol.js +62 -0
- package/node_modules/ws/lib/validation.js +152 -0
- package/node_modules/ws/lib/websocket-server.js +550 -0
- package/node_modules/ws/lib/websocket.js +1388 -0
- package/node_modules/ws/package.json +69 -0
- package/node_modules/ws/wrapper.mjs +8 -0
- package/node_modules/xmlhttprequest-ssl/LICENSE +22 -0
- package/node_modules/xmlhttprequest-ssl/README.md +67 -0
- package/node_modules/xmlhttprequest-ssl/lib/XMLHttpRequest.js +689 -0
- package/node_modules/xmlhttprequest-ssl/package.json +40 -0
- package/package.json +34 -4
- 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,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>}'`;
|