@astrale-os/kernel-dsl 0.2.0-beta.2 → 0.2.0-beta.20
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/CHANGELOG.md +240 -0
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -1
- package/dist/upgrade/contract.d.ts +0 -1
- package/dist/upgrade/contract.js +0 -1
- package/dist/upgrade/index.d.ts +0 -1
- package/dist/upgrade/index.js +0 -1
- package/dist/v1/addressing/class-key.d.ts +12 -0
- package/dist/v1/addressing/class-key.js +39 -0
- package/dist/v1/addressing/definition-ref.d.ts +28 -0
- package/dist/v1/addressing/definition-ref.js +63 -0
- package/dist/v1/addressing/domain-dependency.d.ts +18 -0
- package/dist/v1/addressing/domain-dependency.js +6 -0
- package/dist/v1/addressing/index.d.ts +10 -4
- package/dist/v1/addressing/index.js +5 -3
- package/dist/v1/addressing/key.d.ts +14 -16
- package/dist/v1/addressing/key.js +24 -34
- package/dist/v1/addressing/method-address.d.ts +9 -0
- package/dist/v1/addressing/method-address.js +1 -0
- package/dist/v1/addressing/method-key.d.ts +15 -0
- package/dist/v1/addressing/method-key.js +60 -0
- package/dist/v1/addressing/ordering.d.ts +6 -0
- package/dist/v1/addressing/ordering.js +20 -0
- package/dist/v1/addressing/patterns.d.ts +12 -3
- package/dist/v1/addressing/patterns.js +11 -2
- package/dist/v1/addressing/property-key.d.ts +10 -15
- package/dist/v1/addressing/property-key.js +24 -15
- package/dist/v1/addressing/revision.d.ts +8 -0
- package/dist/v1/addressing/revision.js +8 -0
- package/dist/v1/builder/callable/authoring.d.ts +117 -0
- package/dist/v1/builder/{callable.js → callable/authoring.js} +28 -7
- package/dist/v1/builder/class/authoring.d.ts +378 -0
- package/dist/v1/builder/class/authoring.js +134 -0
- package/dist/v1/builder/class/property.d.ts +58 -0
- package/dist/v1/builder/class/property.js +57 -0
- package/dist/v1/builder/core/authoring.d.ts +42 -0
- package/dist/v1/builder/core/authoring.js +39 -0
- package/dist/v1/builder/index.d.ts +26 -22
- package/dist/v1/builder/index.js +11 -11
- package/dist/v1/builder/lowering/callable.d.ts +24 -0
- package/dist/v1/builder/{compiler → lowering}/callable.js +11 -14
- package/dist/v1/builder/lowering/class.d.ts +22 -0
- package/dist/v1/builder/lowering/class.js +134 -0
- package/dist/v1/builder/lowering/core-properties.d.ts +10 -0
- package/dist/v1/builder/{compiler/core.properties.js → lowering/core-properties.js} +14 -8
- package/dist/v1/builder/lowering/core.d.ts +22 -0
- package/dist/v1/builder/{compiler → lowering}/core.js +17 -11
- package/dist/v1/builder/lowering/policy.d.ts +16 -0
- package/dist/v1/builder/{compiler → lowering}/policy.js +19 -14
- package/dist/v1/builder/{compiler/schema.capture.d.ts → lowering/schema/capture.d.ts} +2 -3
- package/dist/v1/builder/lowering/schema/capture.js +70 -0
- package/dist/v1/builder/{compiler/schema.d.ts → lowering/schema/compile.d.ts} +4 -4
- package/dist/v1/builder/{compiler/schema.js → lowering/schema/compile.js} +34 -44
- package/dist/v1/builder/lowering/schema/context.d.ts +44 -0
- package/dist/v1/builder/{compiler/schema.context.js → lowering/schema/context.js} +66 -74
- package/dist/v1/builder/{compiler/schema.ownership.d.ts → lowering/schema/ownership.d.ts} +1 -2
- package/dist/v1/builder/{compiler/schema.ownership.js → lowering/schema/ownership.js} +1 -2
- package/dist/v1/builder/lowering/value/compile.d.ts +15 -0
- package/dist/v1/builder/{compiler/value.js → lowering/value/compile.js} +44 -61
- package/dist/v1/builder/lowering/value/path.d.ts +3 -0
- package/dist/v1/builder/{compiler/value.path.js → lowering/value/path.js} +1 -2
- package/dist/v1/builder/{compiler/value.zod.d.ts → lowering/value/zod.d.ts} +8 -9
- package/dist/v1/builder/{compiler/value.zod.js → lowering/value/zod.js} +10 -11
- package/dist/v1/builder/lowering/view.d.ts +11 -0
- package/dist/v1/builder/{compiler → lowering}/view.js +7 -7
- package/dist/v1/builder/{policy.d.ts → policy/authoring.d.ts} +19 -17
- package/dist/v1/builder/{policy.js → policy/authoring.js} +23 -12
- package/dist/v1/builder/schema/define.d.ts +11 -0
- package/dist/v1/builder/{schema.js → schema/define.js} +1 -2
- package/dist/v1/builder/schema/diagnostic.d.ts +16 -0
- package/dist/v1/builder/schema/diagnostic.js +31 -0
- package/dist/v1/builder/{internal/authoring.d.ts → schema/handle.d.ts} +1 -2
- package/dist/v1/builder/{internal/authoring.js → schema/handle.js} +0 -1
- package/dist/v1/builder/schema/input.d.ts +15 -0
- package/dist/v1/builder/schema/input.js +1 -0
- package/dist/v1/builder/{internal/authoring.lazy.d.ts → schema/lazy.d.ts} +0 -1
- package/dist/v1/builder/{internal/authoring.lazy.js → schema/lazy.js} +0 -1
- package/dist/v1/builder/schema/projection.d.ts +370 -0
- package/dist/v1/builder/schema/projection.js +1 -0
- package/dist/v1/builder/value/full-match.d.ts +4 -0
- package/dist/v1/builder/value/full-match.js +11 -0
- package/dist/v1/builder/value/path-metadata.d.ts +4 -0
- package/dist/v1/builder/{internal/path.metadata.js → value/path-metadata.js} +0 -1
- package/dist/v1/builder/value/path.d.ts +8 -0
- package/dist/v1/builder/{path.js → value/path.js} +4 -5
- package/dist/v1/builder/{value-schema.d.ts → value/schema.d.ts} +2 -3
- package/dist/v1/builder/{value-schema.js → value/schema.js} +0 -1
- package/dist/v1/builder/view/authoring.d.ts +17 -0
- package/dist/v1/builder/view/authoring.js +16 -0
- package/dist/v1/bundle/codec.d.ts +0 -1
- package/dist/v1/bundle/codec.js +36 -19
- package/dist/v1/bundle/create.d.ts +3 -0
- package/dist/v1/bundle/create.js +5 -0
- package/dist/v1/bundle/diagnostic.d.ts +10 -0
- package/dist/v1/bundle/diagnostic.js +17 -0
- package/dist/v1/bundle/index.d.ts +3 -2
- package/dist/v1/bundle/index.js +2 -2
- package/dist/v1/bundle/model.d.ts +1 -4
- package/dist/v1/bundle/model.js +0 -6
- package/dist/v1/bundle/structure.d.ts +1 -2
- package/dist/v1/bundle/structure.js +6 -6
- package/dist/v1/bundle/transport.d.ts +8 -0
- package/dist/v1/bundle/transport.js +7 -0
- package/dist/v1/compiled/admission/accept.d.ts +3 -0
- package/dist/v1/compiled/admission/accept.js +910 -0
- package/dist/v1/compiled/admission/revision.d.ts +4 -0
- package/dist/v1/compiled/admission/revision.js +73 -0
- package/dist/v1/compiled/admission/semantics.d.ts +7 -0
- package/dist/v1/compiled/admission/semantics.js +1114 -0
- package/dist/v1/compiled/codec/json.d.ts +3 -0
- package/dist/v1/compiled/codec/json.js +9 -0
- package/dist/v1/compiled/compiler/compile.d.ts +4 -0
- package/dist/v1/compiled/compiler/compile.js +113 -0
- package/dist/v1/compiled/diagnostic.d.ts +11 -0
- package/dist/v1/compiled/diagnostic.js +13 -0
- package/dist/v1/compiled/generated.d.ts +10 -0
- package/dist/v1/compiled/generated.js +15 -0
- package/dist/v1/compiled/index.d.ts +7 -0
- package/dist/v1/compiled/index.js +5 -0
- package/dist/v1/compiled/loader/index.d.ts +1 -0
- package/dist/v1/compiled/loader/index.js +1 -0
- package/dist/v1/compiled/loader/load.d.ts +9 -0
- package/dist/v1/compiled/loader/load.js +147 -0
- package/dist/v1/compiled/model/schema.d.ts +73 -0
- package/dist/v1/compiled/model/schema.js +1 -0
- package/dist/v1/domain/create.d.ts +8 -0
- package/dist/v1/domain/create.js +264 -0
- package/dist/v1/domain/index.d.ts +2 -0
- package/dist/v1/domain/index.js +1 -0
- package/dist/v1/domain/model/domain.d.ts +59 -0
- package/dist/v1/domain/model/domain.js +1 -0
- package/dist/v1/domain/model/input.d.ts +31 -0
- package/dist/v1/domain/model/input.js +1 -0
- package/dist/v1/domain/namespace/member-collection.d.ts +5 -0
- package/dist/v1/domain/namespace/member-collection.js +81 -0
- package/dist/v1/domain/projection/classes.d.ts +4 -0
- package/dist/v1/domain/projection/classes.js +198 -0
- package/dist/v1/domain/validation/create.d.ts +18 -0
- package/dist/v1/domain/validation/create.js +75 -0
- package/dist/v1/index.d.ts +14 -5
- package/dist/v1/index.js +6 -3
- package/dist/v1/language/callable/index.d.ts +2 -0
- package/dist/v1/language/callable/index.js +1 -0
- package/dist/v1/language/callable/model/callable.d.ts +33 -0
- package/dist/v1/language/callable/model/callable.js +1 -0
- package/dist/v1/language/callable/resolved.d.ts +68 -0
- package/dist/v1/language/callable/resolved.js +1 -0
- package/dist/v1/language/class/facets.d.ts +58 -0
- package/dist/v1/language/class/facets.js +1 -0
- package/dist/v1/language/class/index.d.ts +8 -0
- package/dist/v1/language/class/index.js +1 -0
- package/dist/v1/language/class/model/class.d.ts +37 -0
- package/dist/v1/language/class/model/class.js +1 -0
- package/dist/v1/{schema/definition → language/class/model}/data.d.ts +2 -3
- package/dist/v1/{schema/definition → language/class/model}/data.js +0 -1
- package/dist/v1/{schema/definition → language/class/model}/edge.d.ts +9 -6
- package/dist/v1/language/class/model/edge.js +1 -0
- package/dist/v1/language/class/model/property.d.ts +17 -0
- package/dist/v1/language/class/model/property.js +1 -0
- package/dist/v1/language/class/property-values.d.ts +15 -0
- package/dist/v1/language/class/property-values.js +30 -0
- package/dist/v1/language/class/resolved.d.ts +126 -0
- package/dist/v1/language/class/resolved.js +1 -0
- package/dist/v1/language/core/index.d.ts +2 -0
- package/dist/v1/language/core/index.js +1 -0
- package/dist/v1/language/core/model/core.d.ts +20 -0
- package/dist/v1/language/core/model/core.js +1 -0
- package/dist/v1/language/core/resolved.d.ts +21 -0
- package/dist/v1/language/core/resolved.js +1 -0
- package/dist/v1/{schema → language/definition}/metadata.d.ts +0 -1
- package/dist/v1/{schema → language/definition}/metadata.js +0 -1
- package/dist/v1/language/definition.d.ts +7 -0
- package/dist/v1/language/definition.js +1 -0
- package/dist/v1/language/index.d.ts +25 -0
- package/dist/v1/language/index.js +2 -0
- package/dist/v1/{schema/policy/validation → language/policy/analysis}/branches.d.ts +2 -4
- package/dist/v1/{schema/policy/validation → language/policy/analysis}/branches.js +14 -30
- package/dist/v1/{schema/policy/validation → language/policy/analysis}/budgets.d.ts +1 -4
- package/dist/v1/language/policy/analysis/budgets.js +25 -0
- package/dist/v1/language/policy/index.d.ts +3 -0
- package/dist/v1/language/policy/index.js +1 -0
- package/dist/v1/{schema/policy/ast.d.ts → language/policy/model/policy.d.ts} +7 -7
- package/dist/v1/language/policy/model/policy.js +1 -0
- package/dist/v1/language/policy/normalization/normalize.d.ts +4 -0
- package/dist/v1/{schema/policy → language/policy/normalization}/normalize.js +12 -16
- package/dist/v1/language/policy/resolved.d.ts +9 -0
- package/dist/v1/language/policy/resolved.js +1 -0
- package/dist/v1/language/resolved.d.ts +10 -0
- package/dist/v1/language/resolved.js +1 -0
- package/dist/v1/language/state/index.d.ts +3 -0
- package/dist/v1/language/state/index.js +1 -0
- package/dist/v1/language/state/machine.d.ts +28 -0
- package/dist/v1/language/state/machine.js +40 -0
- package/dist/v1/language/state/topology.d.ts +14 -0
- package/dist/v1/language/state/topology.js +69 -0
- package/dist/v1/language/validation/diagnostic.d.ts +8 -0
- package/dist/v1/language/validation/diagnostic.js +3 -0
- package/dist/v1/language/value/compile/fields.d.ts +3 -0
- package/dist/v1/language/value/compile/fields.js +60 -0
- package/dist/v1/language/value/compile/load.d.ts +4 -0
- package/dist/v1/language/value/compile/load.js +41 -0
- package/dist/v1/language/value/compile/model.d.ts +27 -0
- package/dist/v1/language/value/compile/model.js +1 -0
- package/dist/v1/{schema/value/instance → language/value/evaluate}/assertions.d.ts +0 -1
- package/dist/v1/{schema/value/instance → language/value/evaluate}/assertions.js +1 -2
- package/dist/v1/{schema/value/instance → language/value/evaluate}/evaluator.d.ts +0 -1
- package/dist/v1/{schema/value/instance → language/value/evaluate}/evaluator.js +6 -18
- package/dist/v1/{schema/value/instance/compiler.d.ts → language/value/evaluate/preparation.d.ts} +4 -4
- package/dist/v1/language/value/evaluate/preparation.js +135 -0
- package/dist/v1/language/value/evaluate/program.d.ts +3 -0
- package/dist/v1/language/value/evaluate/program.js +16 -0
- package/dist/v1/{schema/value/instance → language/value/evaluate}/types.d.ts +8 -5
- package/dist/v1/{schema/value/instance → language/value/evaluate}/types.js +0 -1
- package/dist/v1/{schema/value/instance.validate.d.ts → language/value/evaluate/validate.d.ts} +4 -5
- package/dist/v1/{schema/value/instance.validate.js → language/value/evaluate/validate.js} +5 -6
- package/dist/v1/language/value/index.d.ts +11 -0
- package/dist/v1/language/value/index.js +8 -0
- package/dist/v1/{schema/value → language/value/model}/instant.d.ts +1 -1
- package/dist/v1/{schema/value → language/value/model}/instant.js +1 -1
- package/dist/v1/{schema/value → language/value/model}/object.d.ts +1 -1
- package/dist/v1/{schema/value → language/value/model}/object.js +0 -1
- package/dist/v1/{schema/value → language/value/model}/schema.d.ts +3 -4
- package/dist/v1/{schema/value → language/value/model}/schema.js +0 -2
- package/dist/v1/{schema → language}/value/ordering.d.ts +5 -3
- package/dist/v1/{schema → language}/value/ordering.js +16 -14
- package/dist/v1/{schema → language}/value/profile/canonicalize.d.ts +2 -3
- package/dist/v1/{schema → language}/value/profile/canonicalize.js +4 -7
- package/dist/v1/language/value/profile/json.validate.d.ts +2 -0
- package/dist/v1/{schema → language}/value/profile/json.validate.js +1 -2
- package/dist/v1/{schema → language}/value/profile/meta-schema.compiled.d.ts +0 -1
- package/dist/v1/{schema → language}/value/profile/meta-schema.compiled.js +1 -2
- package/dist/v1/language/value/profile/meta-schema.d.ts +4 -0
- package/dist/v1/{schema/value/profile/meta-schema.validate.js → language/value/profile/meta-schema.js} +2 -2
- package/dist/v1/language/value/profile/rules.d.ts +3 -0
- package/dist/v1/{schema → language}/value/profile/rules.js +7 -50
- package/dist/v1/language/value/profile/validate.d.ts +4 -0
- package/dist/v1/{schema → language}/value/profile/validate.js +14 -22
- package/dist/v1/{schema → language}/value/profile/vocabulary.d.ts +0 -1
- package/dist/v1/{schema → language}/value/profile/vocabulary.js +0 -1
- package/dist/v1/language/value/reference/closure.d.ts +11 -0
- package/dist/v1/{schema/value/resources → language/value/reference}/closure.js +13 -21
- package/dist/v1/{schema/value/resources → language/value/reference}/recursion.d.ts +3 -4
- package/dist/v1/{schema/value/resources → language/value/reference}/recursion.js +5 -6
- package/dist/v1/language/value/reference/references.d.ts +17 -0
- package/dist/v1/language/value/reference/references.js +45 -0
- package/dist/v1/{schema/value → language/value/reference}/registry.d.ts +9 -7
- package/dist/v1/language/value/reference/registry.index.d.ts +14 -0
- package/dist/v1/{schema/value/resources → language/value/reference}/registry.index.js +7 -45
- package/dist/v1/language/value/reference/registry.js +1 -0
- package/dist/v1/language/value/regexp/ast.d.ts +21 -0
- package/dist/v1/language/value/regexp/ast.js +326 -0
- package/dist/v1/language/value/regexp/compile.d.ts +3 -0
- package/dist/v1/language/value/regexp/compile.js +96 -0
- package/dist/v1/{schema → language}/value/regexp/lower.d.ts +1 -2
- package/dist/v1/{schema → language}/value/regexp/lower.js +2 -3
- package/dist/v1/language/value/regexp/matcher.d.ts +7 -0
- package/dist/v1/language/value/regexp/matcher.js +50 -0
- package/dist/v1/{schema → language}/value/regexp/pattern.d.ts +0 -1
- package/dist/v1/{schema → language}/value/regexp/pattern.js +0 -1
- package/dist/v1/language/value/regexp/syntax.d.ts +2 -0
- package/dist/v1/language/value/regexp/syntax.js +5 -0
- package/dist/v1/language/value/syntax/full-match.d.ts +6 -0
- package/dist/v1/language/value/syntax/full-match.js +20 -0
- package/dist/v1/{schema/value/location → language/value/syntax}/keywords.d.ts +0 -1
- package/dist/v1/{schema/value/location → language/value/syntax}/keywords.js +0 -1
- package/dist/v1/{schema/value/extensions → language/value/syntax}/node-path/schema.d.ts +1 -2
- package/dist/v1/{schema/value/extensions → language/value/syntax}/node-path/schema.js +2 -3
- package/dist/v1/language/value/syntax/node-path/validate.d.ts +4 -0
- package/dist/v1/{schema/value/extensions → language/value/syntax}/node-path/validate.js +16 -18
- package/dist/v1/{schema/value/location → language/value/syntax}/pointer.d.ts +0 -1
- package/dist/v1/{schema/value/location → language/value/syntax}/pointer.js +1 -2
- package/dist/v1/{schema/value/location → language/value/syntax}/walk.d.ts +1 -2
- package/dist/v1/{schema/value/location → language/value/syntax}/walk.js +1 -2
- package/dist/v1/language/view/index.d.ts +2 -0
- package/dist/v1/language/view/index.js +1 -0
- package/dist/v1/language/view/model/view.d.ts +11 -0
- package/dist/v1/language/view/model/view.js +1 -0
- package/dist/v1/language/view/resolved.d.ts +9 -0
- package/dist/v1/language/view/resolved.js +1 -0
- package/dist/v1/schema/admission/accept.d.ts +3 -0
- package/dist/v1/schema/{domain.accept.js → admission/accept.js} +8 -9
- package/dist/v1/schema/{definition/analysis.d.ts → analysis/class.d.ts} +17 -18
- package/dist/v1/schema/{definition/analysis.js → analysis/class.js} +21 -30
- package/dist/v1/schema/canonical/domain.d.ts +2 -2
- package/dist/v1/schema/canonical/domain.digest.d.ts +1 -2
- package/dist/v1/schema/canonical/domain.digest.js +2 -6
- package/dist/v1/schema/canonical/domain.js +3 -224
- package/dist/v1/schema/canonical/freeze.d.ts +0 -1
- package/dist/v1/schema/canonical/freeze.js +0 -1
- package/dist/v1/schema/{domain.revision.d.ts → canonical/revision.d.ts} +2 -3
- package/dist/v1/schema/{domain.revision.js → canonical/revision.js} +3 -4
- package/dist/v1/schema/codec/header.d.ts +17 -0
- package/dist/v1/schema/codec/header.js +26 -0
- package/dist/v1/schema/{domain.codec.d.ts → codec/schema.d.ts} +2 -3
- package/dist/v1/schema/{domain.codec.js → codec/schema.js} +4 -5
- package/dist/v1/schema/{dependency.meaning.d.ts → compatibility/meaning.d.ts} +4 -5
- package/dist/v1/schema/{dependency.meaning.js → compatibility/meaning.js} +121 -124
- package/dist/v1/schema/{domain.lookup.d.ts → dependency/lookup.d.ts} +3 -4
- package/dist/v1/schema/{domain.lookup.js → dependency/lookup.js} +1 -2
- package/dist/v1/schema/diagnostic.d.ts +7 -7
- package/dist/v1/schema/diagnostic.js +9 -9
- package/dist/v1/schema/index.d.ts +24 -34
- package/dist/v1/schema/index.js +11 -14
- package/dist/v1/schema/model/format.d.ts +2 -0
- package/dist/v1/schema/model/format.js +2 -0
- package/dist/v1/schema/model/schema.d.ts +30 -0
- package/dist/v1/schema/model/schema.js +4 -0
- package/dist/v1/schema/normalization/domain.d.ts +2 -0
- package/dist/v1/schema/normalization/domain.js +210 -0
- package/dist/v1/schema/resolution/closure.d.ts +3 -4
- package/dist/v1/schema/resolution/closure.js +6 -7
- package/dist/v1/schema/resolution/context.d.ts +11 -12
- package/dist/v1/schema/resolution/context.js +82 -50
- package/dist/v1/schema/resolution/definition.index.d.ts +13 -35
- package/dist/v1/schema/resolution/definition.index.js +8 -18
- package/dist/v1/schema/resolution/domain.d.ts +4 -0
- package/dist/v1/schema/resolution/domain.js +112 -0
- package/dist/v1/schema/resolution/origins.d.ts +11 -14
- package/dist/v1/schema/resolution/origins.js +31 -44
- package/dist/v1/schema/resolution/value.registry.d.ts +3 -4
- package/dist/v1/schema/resolution/value.registry.js +7 -14
- package/dist/v1/schema/revision.d.ts +1 -0
- package/dist/v1/schema/revision.js +1 -0
- package/dist/v1/schema/validation/class.d.ts +5 -0
- package/dist/v1/schema/validation/class.js +257 -0
- package/dist/v1/schema/validation/core.d.ts +5 -0
- package/dist/v1/schema/{core/validate.js → validation/core.js} +39 -30
- package/dist/v1/schema/validation/domain.d.ts +11 -0
- package/dist/v1/schema/{domain.validate.js → validation/domain.js} +12 -12
- package/dist/v1/schema/validation/domain.route.d.ts +1 -2
- package/dist/v1/schema/validation/domain.route.js +3 -4
- package/dist/v1/schema/validation/domain.structure.d.ts +3 -4
- package/dist/v1/schema/validation/domain.structure.js +203 -207
- package/dist/v1/schema/validation/policy/budgets.d.ts +4 -0
- package/dist/v1/schema/{policy/validation → validation/policy}/budgets.js +2 -32
- package/dist/v1/schema/validation/policy/context.d.ts +28 -0
- package/dist/v1/schema/{policy/validation → validation/policy}/context.js +23 -33
- package/dist/v1/schema/{policy/validation → validation/policy}/references.d.ts +0 -1
- package/dist/v1/schema/{policy/validation → validation/policy}/references.js +18 -11
- package/dist/v1/schema/{policy/validation → validation/policy}/typing.d.ts +4 -8
- package/dist/v1/schema/{policy/validation → validation/policy}/typing.js +25 -67
- package/dist/v1/schema/{policy/validation → validation/policy}/uses.d.ts +0 -1
- package/dist/v1/schema/{policy/validation → validation/policy}/uses.js +27 -63
- package/dist/v1/schema/{policy/validation → validation/policy}/validate.d.ts +3 -4
- package/dist/v1/schema/{policy/validation → validation/policy}/validate.js +0 -1
- package/dist/v1/schema/{value/index.d.ts → validation/value-api.d.ts} +9 -10
- package/dist/v1/schema/{value/index.js → validation/value-api.js} +4 -5
- package/dist/v1/schema/validation/value.d.ts +4 -5
- package/dist/v1/schema/validation/value.js +4 -9
- package/dist/v1/schema/validation/view.d.ts +3 -0
- package/dist/v1/schema/{view/validate.js → validation/view.js} +11 -4
- package/dist/v1/value/full-match.d.ts +2 -0
- package/dist/v1/value/full-match.js +2 -0
- package/dist/v1.d.ts +1 -2
- package/dist/v1.js +1 -2
- package/dist/value/accept.d.ts +0 -1
- package/dist/value/accept.js +0 -1
- package/dist/value/canonical.d.ts +0 -1
- package/dist/value/canonical.js +0 -1
- package/dist/value/decode.d.ts +0 -1
- package/dist/value/decode.js +0 -1
- package/dist/value/equal.d.ts +0 -1
- package/dist/value/equal.js +0 -1
- package/dist/value/error.d.ts +0 -1
- package/dist/value/error.js +0 -1
- package/dist/value/index.d.ts +0 -1
- package/dist/value/index.js +0 -1
- package/dist/value/json.d.ts +0 -1
- package/dist/value/json.js +0 -1
- package/dist/value/limits.d.ts +0 -1
- package/dist/value/limits.js +0 -1
- package/dist/value/types.d.ts +0 -1
- package/dist/value/types.js +0 -1
- package/dist/value/unicode.d.ts +0 -1
- package/dist/value/unicode.js +0 -1
- package/dist/version/dispatch.d.ts +0 -1
- package/dist/version/dispatch.js +0 -1
- package/dist/version/index.d.ts +0 -1
- package/dist/version/index.js +0 -1
- package/package.json +69 -13
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/upgrade/contract.d.ts.map +0 -1
- package/dist/upgrade/contract.js.map +0 -1
- package/dist/upgrade/index.d.ts.map +0 -1
- package/dist/upgrade/index.js.map +0 -1
- package/dist/v1/addressing/index.d.ts.map +0 -1
- package/dist/v1/addressing/index.js.map +0 -1
- package/dist/v1/addressing/key.d.ts.map +0 -1
- package/dist/v1/addressing/key.js.map +0 -1
- package/dist/v1/addressing/patterns.d.ts.map +0 -1
- package/dist/v1/addressing/patterns.js.map +0 -1
- package/dist/v1/addressing/property-key.d.ts.map +0 -1
- package/dist/v1/addressing/property-key.js.map +0 -1
- package/dist/v1/addressing/ref.d.ts +0 -35
- package/dist/v1/addressing/ref.d.ts.map +0 -1
- package/dist/v1/addressing/ref.js +0 -94
- package/dist/v1/addressing/ref.js.map +0 -1
- package/dist/v1/addressing/schema-ref.d.ts +0 -8
- package/dist/v1/addressing/schema-ref.d.ts.map +0 -1
- package/dist/v1/addressing/schema-ref.js +0 -2
- package/dist/v1/addressing/schema-ref.js.map +0 -1
- package/dist/v1/builder/callable.d.ts +0 -92
- package/dist/v1/builder/callable.d.ts.map +0 -1
- package/dist/v1/builder/callable.js.map +0 -1
- package/dist/v1/builder/compiler/callable.d.ts +0 -20
- package/dist/v1/builder/compiler/callable.d.ts.map +0 -1
- package/dist/v1/builder/compiler/callable.js.map +0 -1
- package/dist/v1/builder/compiler/core.d.ts +0 -6
- package/dist/v1/builder/compiler/core.d.ts.map +0 -1
- package/dist/v1/builder/compiler/core.js.map +0 -1
- package/dist/v1/builder/compiler/core.properties.d.ts +0 -6
- package/dist/v1/builder/compiler/core.properties.d.ts.map +0 -1
- package/dist/v1/builder/compiler/core.properties.js.map +0 -1
- package/dist/v1/builder/compiler/definition.d.ts +0 -32
- package/dist/v1/builder/compiler/definition.d.ts.map +0 -1
- package/dist/v1/builder/compiler/definition.js +0 -197
- package/dist/v1/builder/compiler/definition.js.map +0 -1
- package/dist/v1/builder/compiler/policy.d.ts +0 -17
- package/dist/v1/builder/compiler/policy.d.ts.map +0 -1
- package/dist/v1/builder/compiler/policy.js.map +0 -1
- package/dist/v1/builder/compiler/schema.capture.d.ts.map +0 -1
- package/dist/v1/builder/compiler/schema.capture.js +0 -85
- package/dist/v1/builder/compiler/schema.capture.js.map +0 -1
- package/dist/v1/builder/compiler/schema.context.d.ts +0 -45
- package/dist/v1/builder/compiler/schema.context.d.ts.map +0 -1
- package/dist/v1/builder/compiler/schema.context.js.map +0 -1
- package/dist/v1/builder/compiler/schema.d.ts.map +0 -1
- package/dist/v1/builder/compiler/schema.js.map +0 -1
- package/dist/v1/builder/compiler/schema.ownership.d.ts.map +0 -1
- package/dist/v1/builder/compiler/schema.ownership.js.map +0 -1
- package/dist/v1/builder/compiler/value.d.ts +0 -26
- package/dist/v1/builder/compiler/value.d.ts.map +0 -1
- package/dist/v1/builder/compiler/value.js.map +0 -1
- package/dist/v1/builder/compiler/value.path.d.ts +0 -4
- package/dist/v1/builder/compiler/value.path.d.ts.map +0 -1
- package/dist/v1/builder/compiler/value.path.js.map +0 -1
- package/dist/v1/builder/compiler/value.zod.d.ts.map +0 -1
- package/dist/v1/builder/compiler/value.zod.js.map +0 -1
- package/dist/v1/builder/compiler/view.d.ts +0 -12
- package/dist/v1/builder/compiler/view.d.ts.map +0 -1
- package/dist/v1/builder/compiler/view.js.map +0 -1
- package/dist/v1/builder/core.d.ts +0 -27
- package/dist/v1/builder/core.d.ts.map +0 -1
- package/dist/v1/builder/core.js +0 -21
- package/dist/v1/builder/core.js.map +0 -1
- package/dist/v1/builder/definition.d.ts +0 -155
- package/dist/v1/builder/definition.d.ts.map +0 -1
- package/dist/v1/builder/definition.js +0 -141
- package/dist/v1/builder/definition.js.map +0 -1
- package/dist/v1/builder/full-match.d.ts +0 -12
- package/dist/v1/builder/full-match.d.ts.map +0 -1
- package/dist/v1/builder/full-match.js +0 -21
- package/dist/v1/builder/full-match.js.map +0 -1
- package/dist/v1/builder/index.d.ts.map +0 -1
- package/dist/v1/builder/index.js.map +0 -1
- package/dist/v1/builder/internal/authoring.d.ts.map +0 -1
- package/dist/v1/builder/internal/authoring.js.map +0 -1
- package/dist/v1/builder/internal/authoring.lazy.d.ts.map +0 -1
- package/dist/v1/builder/internal/authoring.lazy.js.map +0 -1
- package/dist/v1/builder/internal/diagnostic.d.ts +0 -4
- package/dist/v1/builder/internal/diagnostic.d.ts.map +0 -1
- package/dist/v1/builder/internal/diagnostic.js +0 -16
- package/dist/v1/builder/internal/diagnostic.js.map +0 -1
- package/dist/v1/builder/internal/path.metadata.d.ts +0 -5
- package/dist/v1/builder/internal/path.metadata.d.ts.map +0 -1
- package/dist/v1/builder/internal/path.metadata.js.map +0 -1
- package/dist/v1/builder/path.d.ts +0 -9
- package/dist/v1/builder/path.d.ts.map +0 -1
- package/dist/v1/builder/path.js.map +0 -1
- package/dist/v1/builder/policy.d.ts.map +0 -1
- package/dist/v1/builder/policy.js.map +0 -1
- package/dist/v1/builder/property.d.ts +0 -37
- package/dist/v1/builder/property.d.ts.map +0 -1
- package/dist/v1/builder/property.js +0 -36
- package/dist/v1/builder/property.js.map +0 -1
- package/dist/v1/builder/schema.d.ts +0 -6
- package/dist/v1/builder/schema.d.ts.map +0 -1
- package/dist/v1/builder/schema.input.d.ts +0 -19
- package/dist/v1/builder/schema.input.d.ts.map +0 -1
- package/dist/v1/builder/schema.input.js +0 -2
- package/dist/v1/builder/schema.input.js.map +0 -1
- package/dist/v1/builder/schema.js.map +0 -1
- package/dist/v1/builder/value-schema.d.ts.map +0 -1
- package/dist/v1/builder/value-schema.js.map +0 -1
- package/dist/v1/builder/view.d.ts +0 -19
- package/dist/v1/builder/view.d.ts.map +0 -1
- package/dist/v1/builder/view.js +0 -7
- package/dist/v1/builder/view.js.map +0 -1
- package/dist/v1/builder.d.ts +0 -3
- package/dist/v1/builder.d.ts.map +0 -1
- package/dist/v1/builder.js +0 -2
- package/dist/v1/builder.js.map +0 -1
- package/dist/v1/bundle/codec.d.ts.map +0 -1
- package/dist/v1/bundle/codec.js.map +0 -1
- package/dist/v1/bundle/index.d.ts.map +0 -1
- package/dist/v1/bundle/index.js.map +0 -1
- package/dist/v1/bundle/model.d.ts.map +0 -1
- package/dist/v1/bundle/model.js.map +0 -1
- package/dist/v1/bundle/structure.d.ts.map +0 -1
- package/dist/v1/bundle/structure.js.map +0 -1
- package/dist/v1/bundle.d.ts +0 -3
- package/dist/v1/bundle.d.ts.map +0 -1
- package/dist/v1/bundle.js +0 -3
- package/dist/v1/bundle.js.map +0 -1
- package/dist/v1/index.d.ts.map +0 -1
- package/dist/v1/index.js.map +0 -1
- package/dist/v1/schema/callable.d.ts +0 -29
- package/dist/v1/schema/callable.d.ts.map +0 -1
- package/dist/v1/schema/callable.js +0 -2
- package/dist/v1/schema/callable.js.map +0 -1
- package/dist/v1/schema/canonical/domain.d.ts.map +0 -1
- package/dist/v1/schema/canonical/domain.digest.d.ts.map +0 -1
- package/dist/v1/schema/canonical/domain.digest.js.map +0 -1
- package/dist/v1/schema/canonical/domain.js.map +0 -1
- package/dist/v1/schema/canonical/freeze.d.ts.map +0 -1
- package/dist/v1/schema/canonical/freeze.js.map +0 -1
- package/dist/v1/schema/core/declaration.d.ts +0 -17
- package/dist/v1/schema/core/declaration.d.ts.map +0 -1
- package/dist/v1/schema/core/declaration.js +0 -2
- package/dist/v1/schema/core/declaration.js.map +0 -1
- package/dist/v1/schema/core/validate.d.ts +0 -6
- package/dist/v1/schema/core/validate.d.ts.map +0 -1
- package/dist/v1/schema/core/validate.js.map +0 -1
- package/dist/v1/schema/definition/analysis.d.ts.map +0 -1
- package/dist/v1/schema/definition/analysis.js.map +0 -1
- package/dist/v1/schema/definition/class.d.ts +0 -28
- package/dist/v1/schema/definition/class.d.ts.map +0 -1
- package/dist/v1/schema/definition/class.js +0 -2
- package/dist/v1/schema/definition/class.js.map +0 -1
- package/dist/v1/schema/definition/data.d.ts.map +0 -1
- package/dist/v1/schema/definition/data.js.map +0 -1
- package/dist/v1/schema/definition/edge.d.ts.map +0 -1
- package/dist/v1/schema/definition/edge.js +0 -2
- package/dist/v1/schema/definition/edge.js.map +0 -1
- package/dist/v1/schema/definition/interface.d.ts +0 -22
- package/dist/v1/schema/definition/interface.d.ts.map +0 -1
- package/dist/v1/schema/definition/interface.js +0 -2
- package/dist/v1/schema/definition/interface.js.map +0 -1
- package/dist/v1/schema/definition/property.d.ts +0 -18
- package/dist/v1/schema/definition/property.d.ts.map +0 -1
- package/dist/v1/schema/definition/property.js +0 -2
- package/dist/v1/schema/definition/property.js.map +0 -1
- package/dist/v1/schema/definition/validate.d.ts +0 -5
- package/dist/v1/schema/definition/validate.d.ts.map +0 -1
- package/dist/v1/schema/definition/validate.js +0 -221
- package/dist/v1/schema/definition/validate.js.map +0 -1
- package/dist/v1/schema/dependency.meaning.d.ts.map +0 -1
- package/dist/v1/schema/dependency.meaning.js.map +0 -1
- package/dist/v1/schema/diagnostic.d.ts.map +0 -1
- package/dist/v1/schema/diagnostic.js.map +0 -1
- package/dist/v1/schema/domain.accept.d.ts +0 -4
- package/dist/v1/schema/domain.accept.d.ts.map +0 -1
- package/dist/v1/schema/domain.accept.js.map +0 -1
- package/dist/v1/schema/domain.codec.d.ts.map +0 -1
- package/dist/v1/schema/domain.codec.js.map +0 -1
- package/dist/v1/schema/domain.header.d.ts +0 -15
- package/dist/v1/schema/domain.header.d.ts.map +0 -1
- package/dist/v1/schema/domain.header.js +0 -21
- package/dist/v1/schema/domain.header.js.map +0 -1
- package/dist/v1/schema/domain.ir.d.ts +0 -40
- package/dist/v1/schema/domain.ir.d.ts.map +0 -1
- package/dist/v1/schema/domain.ir.js +0 -5
- package/dist/v1/schema/domain.ir.js.map +0 -1
- package/dist/v1/schema/domain.lookup.d.ts.map +0 -1
- package/dist/v1/schema/domain.lookup.js.map +0 -1
- package/dist/v1/schema/domain.resolve.d.ts +0 -26
- package/dist/v1/schema/domain.resolve.d.ts.map +0 -1
- package/dist/v1/schema/domain.resolve.js +0 -43
- package/dist/v1/schema/domain.resolve.js.map +0 -1
- package/dist/v1/schema/domain.revision.d.ts.map +0 -1
- package/dist/v1/schema/domain.revision.js.map +0 -1
- package/dist/v1/schema/domain.validate.d.ts +0 -12
- package/dist/v1/schema/domain.validate.d.ts.map +0 -1
- package/dist/v1/schema/domain.validate.js.map +0 -1
- package/dist/v1/schema/index.d.ts.map +0 -1
- package/dist/v1/schema/index.js.map +0 -1
- package/dist/v1/schema/metadata.d.ts.map +0 -1
- package/dist/v1/schema/metadata.js.map +0 -1
- package/dist/v1/schema/policy/ast.d.ts.map +0 -1
- package/dist/v1/schema/policy/ast.js +0 -2
- package/dist/v1/schema/policy/ast.js.map +0 -1
- package/dist/v1/schema/policy/normalize.d.ts +0 -5
- package/dist/v1/schema/policy/normalize.d.ts.map +0 -1
- package/dist/v1/schema/policy/normalize.js.map +0 -1
- package/dist/v1/schema/policy/validation/branches.d.ts.map +0 -1
- package/dist/v1/schema/policy/validation/branches.js.map +0 -1
- package/dist/v1/schema/policy/validation/budgets.d.ts.map +0 -1
- package/dist/v1/schema/policy/validation/budgets.js.map +0 -1
- package/dist/v1/schema/policy/validation/context.d.ts +0 -28
- package/dist/v1/schema/policy/validation/context.d.ts.map +0 -1
- package/dist/v1/schema/policy/validation/context.js.map +0 -1
- package/dist/v1/schema/policy/validation/references.d.ts.map +0 -1
- package/dist/v1/schema/policy/validation/references.js.map +0 -1
- package/dist/v1/schema/policy/validation/typing.d.ts.map +0 -1
- package/dist/v1/schema/policy/validation/typing.js.map +0 -1
- package/dist/v1/schema/policy/validation/uses.d.ts.map +0 -1
- package/dist/v1/schema/policy/validation/uses.js.map +0 -1
- package/dist/v1/schema/policy/validation/validate.d.ts.map +0 -1
- package/dist/v1/schema/policy/validation/validate.js.map +0 -1
- package/dist/v1/schema/reference.d.ts +0 -43
- package/dist/v1/schema/reference.d.ts.map +0 -1
- package/dist/v1/schema/reference.js +0 -31
- package/dist/v1/schema/reference.js.map +0 -1
- package/dist/v1/schema/resolution/closure.d.ts.map +0 -1
- package/dist/v1/schema/resolution/closure.js.map +0 -1
- package/dist/v1/schema/resolution/context.d.ts.map +0 -1
- package/dist/v1/schema/resolution/context.js.map +0 -1
- package/dist/v1/schema/resolution/definition.index.d.ts.map +0 -1
- package/dist/v1/schema/resolution/definition.index.js.map +0 -1
- package/dist/v1/schema/resolution/origins.d.ts.map +0 -1
- package/dist/v1/schema/resolution/origins.js.map +0 -1
- package/dist/v1/schema/resolution/value.registry.d.ts.map +0 -1
- package/dist/v1/schema/resolution/value.registry.js.map +0 -1
- package/dist/v1/schema/validation/domain.route.d.ts.map +0 -1
- package/dist/v1/schema/validation/domain.route.js.map +0 -1
- package/dist/v1/schema/validation/domain.structure.d.ts.map +0 -1
- package/dist/v1/schema/validation/domain.structure.js.map +0 -1
- package/dist/v1/schema/validation/value.d.ts.map +0 -1
- package/dist/v1/schema/validation/value.js.map +0 -1
- package/dist/v1/schema/value/extensions/node-path/schema.d.ts.map +0 -1
- package/dist/v1/schema/value/extensions/node-path/schema.js.map +0 -1
- package/dist/v1/schema/value/extensions/node-path/validate.d.ts +0 -5
- package/dist/v1/schema/value/extensions/node-path/validate.d.ts.map +0 -1
- package/dist/v1/schema/value/extensions/node-path/validate.js.map +0 -1
- package/dist/v1/schema/value/index.d.ts.map +0 -1
- package/dist/v1/schema/value/index.js.map +0 -1
- package/dist/v1/schema/value/instance/assertions.d.ts.map +0 -1
- package/dist/v1/schema/value/instance/assertions.js.map +0 -1
- package/dist/v1/schema/value/instance/compiler.d.ts.map +0 -1
- package/dist/v1/schema/value/instance/compiler.js +0 -69
- package/dist/v1/schema/value/instance/compiler.js.map +0 -1
- package/dist/v1/schema/value/instance/evaluator.d.ts.map +0 -1
- package/dist/v1/schema/value/instance/evaluator.js.map +0 -1
- package/dist/v1/schema/value/instance/types.d.ts.map +0 -1
- package/dist/v1/schema/value/instance/types.js.map +0 -1
- package/dist/v1/schema/value/instance.validate.d.ts.map +0 -1
- package/dist/v1/schema/value/instance.validate.js.map +0 -1
- package/dist/v1/schema/value/instant.d.ts.map +0 -1
- package/dist/v1/schema/value/instant.js.map +0 -1
- package/dist/v1/schema/value/location/keywords.d.ts.map +0 -1
- package/dist/v1/schema/value/location/keywords.js.map +0 -1
- package/dist/v1/schema/value/location/pointer.d.ts.map +0 -1
- package/dist/v1/schema/value/location/pointer.js.map +0 -1
- package/dist/v1/schema/value/location/walk.d.ts.map +0 -1
- package/dist/v1/schema/value/location/walk.js.map +0 -1
- package/dist/v1/schema/value/object.d.ts.map +0 -1
- package/dist/v1/schema/value/object.js.map +0 -1
- package/dist/v1/schema/value/ordering.d.ts.map +0 -1
- package/dist/v1/schema/value/ordering.js.map +0 -1
- package/dist/v1/schema/value/profile/canonicalize.d.ts.map +0 -1
- package/dist/v1/schema/value/profile/canonicalize.js.map +0 -1
- package/dist/v1/schema/value/profile/dialect.d.ts +0 -5
- package/dist/v1/schema/value/profile/dialect.d.ts.map +0 -1
- package/dist/v1/schema/value/profile/dialect.js +0 -36
- package/dist/v1/schema/value/profile/dialect.js.map +0 -1
- package/dist/v1/schema/value/profile/json.validate.d.ts +0 -3
- package/dist/v1/schema/value/profile/json.validate.d.ts.map +0 -1
- package/dist/v1/schema/value/profile/json.validate.js.map +0 -1
- package/dist/v1/schema/value/profile/meta-schema.compiled.d.ts.map +0 -1
- package/dist/v1/schema/value/profile/meta-schema.compiled.js.map +0 -1
- package/dist/v1/schema/value/profile/meta-schema.validate.d.ts +0 -4
- package/dist/v1/schema/value/profile/meta-schema.validate.d.ts.map +0 -1
- package/dist/v1/schema/value/profile/meta-schema.validate.js.map +0 -1
- package/dist/v1/schema/value/profile/rules.d.ts +0 -5
- package/dist/v1/schema/value/profile/rules.d.ts.map +0 -1
- package/dist/v1/schema/value/profile/rules.js.map +0 -1
- package/dist/v1/schema/value/profile/validate.d.ts +0 -5
- package/dist/v1/schema/value/profile/validate.d.ts.map +0 -1
- package/dist/v1/schema/value/profile/validate.js.map +0 -1
- package/dist/v1/schema/value/profile/vocabulary.d.ts.map +0 -1
- package/dist/v1/schema/value/profile/vocabulary.js.map +0 -1
- package/dist/v1/schema/value/regexp/linear.d.ts +0 -20
- package/dist/v1/schema/value/regexp/linear.d.ts.map +0 -1
- package/dist/v1/schema/value/regexp/linear.js +0 -24
- package/dist/v1/schema/value/regexp/linear.js.map +0 -1
- package/dist/v1/schema/value/regexp/lower.d.ts.map +0 -1
- package/dist/v1/schema/value/regexp/lower.js.map +0 -1
- package/dist/v1/schema/value/regexp/pattern.d.ts.map +0 -1
- package/dist/v1/schema/value/regexp/pattern.js.map +0 -1
- package/dist/v1/schema/value/regexp/syntax.d.ts +0 -3
- package/dist/v1/schema/value/regexp/syntax.d.ts.map +0 -1
- package/dist/v1/schema/value/regexp/syntax.js +0 -217
- package/dist/v1/schema/value/regexp/syntax.js.map +0 -1
- package/dist/v1/schema/value/registry.d.ts.map +0 -1
- package/dist/v1/schema/value/registry.js +0 -2
- package/dist/v1/schema/value/registry.js.map +0 -1
- package/dist/v1/schema/value/resources/closure.d.ts +0 -12
- package/dist/v1/schema/value/resources/closure.d.ts.map +0 -1
- package/dist/v1/schema/value/resources/closure.js.map +0 -1
- package/dist/v1/schema/value/resources/recursion.d.ts.map +0 -1
- package/dist/v1/schema/value/resources/recursion.js.map +0 -1
- package/dist/v1/schema/value/resources/references.d.ts +0 -25
- package/dist/v1/schema/value/resources/references.d.ts.map +0 -1
- package/dist/v1/schema/value/resources/references.js +0 -93
- package/dist/v1/schema/value/resources/references.js.map +0 -1
- package/dist/v1/schema/value/resources/registry.index.d.ts +0 -22
- package/dist/v1/schema/value/resources/registry.index.d.ts.map +0 -1
- package/dist/v1/schema/value/resources/registry.index.js.map +0 -1
- package/dist/v1/schema/value/schema.d.ts.map +0 -1
- package/dist/v1/schema/value/schema.js.map +0 -1
- package/dist/v1/schema/view/declaration.d.ts +0 -14
- package/dist/v1/schema/view/declaration.d.ts.map +0 -1
- package/dist/v1/schema/view/declaration.js +0 -2
- package/dist/v1/schema/view/declaration.js.map +0 -1
- package/dist/v1/schema/view/validate.d.ts +0 -4
- package/dist/v1/schema/view/validate.d.ts.map +0 -1
- package/dist/v1/schema/view/validate.js.map +0 -1
- package/dist/v1/schema.d.ts +0 -3
- package/dist/v1/schema.d.ts.map +0 -1
- package/dist/v1/schema.js +0 -3
- package/dist/v1/schema.js.map +0 -1
- package/dist/v1.d.ts.map +0 -1
- package/dist/v1.js.map +0 -1
- package/dist/value/accept.d.ts.map +0 -1
- package/dist/value/accept.js.map +0 -1
- package/dist/value/canonical.d.ts.map +0 -1
- package/dist/value/canonical.js.map +0 -1
- package/dist/value/decode.d.ts.map +0 -1
- package/dist/value/decode.js.map +0 -1
- package/dist/value/equal.d.ts.map +0 -1
- package/dist/value/equal.js.map +0 -1
- package/dist/value/error.d.ts.map +0 -1
- package/dist/value/error.js.map +0 -1
- package/dist/value/index.d.ts.map +0 -1
- package/dist/value/index.js.map +0 -1
- package/dist/value/json.d.ts.map +0 -1
- package/dist/value/json.js.map +0 -1
- package/dist/value/limits.d.ts.map +0 -1
- package/dist/value/limits.js.map +0 -1
- package/dist/value/types.d.ts.map +0 -1
- package/dist/value/types.js.map +0 -1
- package/dist/value/unicode.d.ts.map +0 -1
- package/dist/value/unicode.js.map +0 -1
- package/dist/version/dispatch.d.ts.map +0 -1
- package/dist/version/dispatch.js.map +0 -1
- package/dist/version/index.d.ts.map +0 -1
- package/dist/version/index.js.map +0 -1
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
import { Key } from '../addressing/index.js';
|
|
2
|
+
import { frozenRecord } from './namespace/member-collection.js';
|
|
3
|
+
import { createClasses } from './projection/classes.js';
|
|
4
|
+
const admittedDomains = new WeakSet();
|
|
5
|
+
/** True only for an immutable Domain created by DSL resolution or compiled loading. */
|
|
6
|
+
export function isDomain(input) {
|
|
7
|
+
return input !== null && typeof input === 'object' && admittedDomains.has(input);
|
|
8
|
+
}
|
|
9
|
+
/** Retain source provenance without losing the admitted root Domain identity. */
|
|
10
|
+
export function createSourceDomain(domain, source) {
|
|
11
|
+
if (!isDomain(domain))
|
|
12
|
+
throw new TypeError('Source provenance requires an admitted Domain.');
|
|
13
|
+
const resolved = Object.freeze({ ...domain, source });
|
|
14
|
+
admittedDomains.add(resolved);
|
|
15
|
+
return resolved;
|
|
16
|
+
}
|
|
17
|
+
/** Construct one resolved Definition universe and one memoized facade per closure Domain. */
|
|
18
|
+
export function createDomain(input) {
|
|
19
|
+
const entries = new Map();
|
|
20
|
+
for (const entry of input.entries) {
|
|
21
|
+
if (entries.has(entry.origin))
|
|
22
|
+
throw new TypeError(`Domain entry ${entry.origin} is duplicated.`);
|
|
23
|
+
entries.set(entry.origin, entry);
|
|
24
|
+
}
|
|
25
|
+
const root = entries.get(input.root.origin);
|
|
26
|
+
if (root === undefined || root.revision !== input.root.revision) {
|
|
27
|
+
throw new TypeError('Domain root is absent or has the wrong revision.');
|
|
28
|
+
}
|
|
29
|
+
const declarations = Object.freeze(input.entries.flatMap(({ definitions }) => definitions));
|
|
30
|
+
const classesByKey = createClasses(declarations, input.validation);
|
|
31
|
+
const definitionsByKey = createDefinitions(declarations, classesByKey, input);
|
|
32
|
+
const callables = createCallables(definitionsByKey, classesByKey);
|
|
33
|
+
const facades = new Map();
|
|
34
|
+
const projecting = new Set();
|
|
35
|
+
const project = (entry) => {
|
|
36
|
+
const cached = facades.get(entry.origin);
|
|
37
|
+
if (cached !== undefined)
|
|
38
|
+
return cached;
|
|
39
|
+
if (projecting.has(entry.origin))
|
|
40
|
+
throw new TypeError(`Dependency cycle reaches ${entry.origin}.`);
|
|
41
|
+
projecting.add(entry.origin);
|
|
42
|
+
const visibleEntries = reachableEntries(entry, entries);
|
|
43
|
+
const visibleOrigins = new Set(visibleEntries.map(({ origin }) => origin));
|
|
44
|
+
const local = [...definitionsByKey.values()]
|
|
45
|
+
.filter(({ ref }) => ref.origin === entry.origin)
|
|
46
|
+
.sort((left, right) => compare(left.key, right.key));
|
|
47
|
+
const classes = namespace(local, 'class');
|
|
48
|
+
const functions = namespace(local, 'function');
|
|
49
|
+
const policies = namespace(local, 'policy');
|
|
50
|
+
const views = namespace(local, 'view');
|
|
51
|
+
const coreNodes = namespace(local, 'core');
|
|
52
|
+
const domainEndpoint = Object.freeze({
|
|
53
|
+
kind: 'domain',
|
|
54
|
+
origin: entry.origin,
|
|
55
|
+
});
|
|
56
|
+
const coreEdges = Object.freeze(entry.coreEdges.map((edge) => {
|
|
57
|
+
const classValue = classesByKey.get(Key.of(edge.class));
|
|
58
|
+
if (classValue?.kind !== 'edge') {
|
|
59
|
+
throw new TypeError(`Core Edge has no Edge Class ${Key.of(edge.class)}.`);
|
|
60
|
+
}
|
|
61
|
+
return Object.freeze({
|
|
62
|
+
class: classValue,
|
|
63
|
+
source: edge.source.kind === 'domain'
|
|
64
|
+
? domainEndpoint
|
|
65
|
+
: requiredCore(definitionsByKey, edge.source),
|
|
66
|
+
target: edge.target.kind === 'domain'
|
|
67
|
+
? domainEndpoint
|
|
68
|
+
: requiredCore(definitionsByKey, edge.target),
|
|
69
|
+
properties: edge.properties,
|
|
70
|
+
});
|
|
71
|
+
}));
|
|
72
|
+
const dependencies = frozenRecord(Object.entries(entry.dependencies).map(([alias, pin]) => {
|
|
73
|
+
const dependency = entries.get(pin.origin);
|
|
74
|
+
if (dependency === undefined || dependency.revision !== pin.revision) {
|
|
75
|
+
throw new TypeError(`Dependency alias ${alias} has no exact ${pin.origin}@${pin.revision} entry.`);
|
|
76
|
+
}
|
|
77
|
+
return [alias, project(dependency)];
|
|
78
|
+
}));
|
|
79
|
+
const definitionLookup = ((value) => {
|
|
80
|
+
const resolved = definitionsByKey.get(typeof value === 'string' ? value : Key.of(value));
|
|
81
|
+
return resolved !== undefined && visibleOrigins.has(resolved.ref.origin)
|
|
82
|
+
? resolved
|
|
83
|
+
: undefined;
|
|
84
|
+
});
|
|
85
|
+
const domain = {
|
|
86
|
+
origin: entry.origin,
|
|
87
|
+
revision: entry.revision,
|
|
88
|
+
closure: Object.freeze(visibleEntries
|
|
89
|
+
.map(({ origin, revision }) => Object.freeze({ origin, revision }))
|
|
90
|
+
.sort((left, right) => compare(left.origin, right.origin))),
|
|
91
|
+
dependencies,
|
|
92
|
+
classes,
|
|
93
|
+
functions,
|
|
94
|
+
policies,
|
|
95
|
+
views,
|
|
96
|
+
core: Object.freeze({ nodes: coreNodes, edges: coreEdges }),
|
|
97
|
+
definition: definitionLookup,
|
|
98
|
+
callable(key) {
|
|
99
|
+
const callable = callables.get(key);
|
|
100
|
+
if (callable === undefined)
|
|
101
|
+
return undefined;
|
|
102
|
+
const origin = 'ref' in callable ? callable.ref.origin : callable.owner.ref.origin;
|
|
103
|
+
return visibleOrigins.has(origin) ? callable : undefined;
|
|
104
|
+
},
|
|
105
|
+
definitions(kind) {
|
|
106
|
+
return kind === undefined ? local : local.filter(({ ref }) => ref.kind === kind);
|
|
107
|
+
},
|
|
108
|
+
viewsFor(target) {
|
|
109
|
+
return Object.freeze(Object.values(views).filter((view) => {
|
|
110
|
+
if (view.target.kind === 'domain')
|
|
111
|
+
return target === 'domain';
|
|
112
|
+
if (target === 'domain')
|
|
113
|
+
return false;
|
|
114
|
+
return view.target.definitions.some((ref) => {
|
|
115
|
+
const selected = classesByKey.get(Key.of(ref));
|
|
116
|
+
if (target.kind === 'node' && selected?.kind === 'node') {
|
|
117
|
+
return target.satisfies(selected);
|
|
118
|
+
}
|
|
119
|
+
if (target.kind === 'edge' && selected?.kind === 'edge') {
|
|
120
|
+
return target.satisfies(selected);
|
|
121
|
+
}
|
|
122
|
+
return false;
|
|
123
|
+
});
|
|
124
|
+
}));
|
|
125
|
+
},
|
|
126
|
+
};
|
|
127
|
+
const admitted = Object.freeze(domain);
|
|
128
|
+
facades.set(entry.origin, admitted);
|
|
129
|
+
admittedDomains.add(admitted);
|
|
130
|
+
projecting.delete(entry.origin);
|
|
131
|
+
return admitted;
|
|
132
|
+
};
|
|
133
|
+
return project(root);
|
|
134
|
+
}
|
|
135
|
+
function createDefinitions(declarations, classesByKey, input) {
|
|
136
|
+
const definitionsByKey = new Map();
|
|
137
|
+
for (const value of classesByKey.values())
|
|
138
|
+
definitionsByKey.set(value.key, value);
|
|
139
|
+
for (const definition of declarations) {
|
|
140
|
+
if (definition.ref.kind === 'class')
|
|
141
|
+
continue;
|
|
142
|
+
if (isFunctionDefinition(definition)) {
|
|
143
|
+
const key = Key.of(definition.ref);
|
|
144
|
+
const inputFields = input.validation.callableFields(key);
|
|
145
|
+
const resolved = Object.freeze({
|
|
146
|
+
ref: definition.ref,
|
|
147
|
+
key,
|
|
148
|
+
description: definition.description,
|
|
149
|
+
input: definition.input,
|
|
150
|
+
output: definition.output,
|
|
151
|
+
auth: definition.auth,
|
|
152
|
+
policy: definition.policy,
|
|
153
|
+
...(inputFields === undefined ? {} : { inputFields }),
|
|
154
|
+
definition,
|
|
155
|
+
validateInput: (value) => input.validation.callableInput(key, value),
|
|
156
|
+
validateInputField: (field, value) => input.validation.callableInputField(key, field, value),
|
|
157
|
+
validateOutput: (value) => input.validation.callableOutput(key, value),
|
|
158
|
+
});
|
|
159
|
+
definitionsByKey.set(key, resolved);
|
|
160
|
+
continue;
|
|
161
|
+
}
|
|
162
|
+
if (isPolicyDefinition(definition)) {
|
|
163
|
+
const key = Key.of(definition.ref);
|
|
164
|
+
definitionsByKey.set(key, Object.freeze({
|
|
165
|
+
ref: definition.ref,
|
|
166
|
+
key,
|
|
167
|
+
expression: definition.expression,
|
|
168
|
+
description: definition.description,
|
|
169
|
+
definition,
|
|
170
|
+
}));
|
|
171
|
+
continue;
|
|
172
|
+
}
|
|
173
|
+
if (isViewDefinition(definition)) {
|
|
174
|
+
const key = Key.of(definition.ref);
|
|
175
|
+
definitionsByKey.set(key, Object.freeze({
|
|
176
|
+
ref: definition.ref,
|
|
177
|
+
key,
|
|
178
|
+
target: definition.target,
|
|
179
|
+
description: definition.description,
|
|
180
|
+
definition,
|
|
181
|
+
}));
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
for (const definition of declarations) {
|
|
185
|
+
if (!isCoreDefinition(definition))
|
|
186
|
+
continue;
|
|
187
|
+
const classValue = classesByKey.get(Key.of(definition.class));
|
|
188
|
+
if (classValue?.kind !== 'node') {
|
|
189
|
+
throw new TypeError(`Core ${Key.of(definition.ref)} has no Node Class.`);
|
|
190
|
+
}
|
|
191
|
+
if (classValue.abstract) {
|
|
192
|
+
throw new TypeError(`Core ${Key.of(definition.ref)} cannot use abstract Class ${classValue.key}.`);
|
|
193
|
+
}
|
|
194
|
+
const resolved = Object.freeze({
|
|
195
|
+
ref: definition.ref,
|
|
196
|
+
key: Key.of(definition.ref),
|
|
197
|
+
class: classValue,
|
|
198
|
+
properties: definition.properties,
|
|
199
|
+
definition,
|
|
200
|
+
});
|
|
201
|
+
definitionsByKey.set(resolved.key, resolved);
|
|
202
|
+
}
|
|
203
|
+
return definitionsByKey;
|
|
204
|
+
}
|
|
205
|
+
function createCallables(definitions, classes) {
|
|
206
|
+
const callables = new Map();
|
|
207
|
+
for (const definition of definitions.values()) {
|
|
208
|
+
if (definition.ref.kind === 'function') {
|
|
209
|
+
callables.set(definition.key, definition);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
for (const definition of classes.values()) {
|
|
213
|
+
if (definition.kind !== 'node')
|
|
214
|
+
continue;
|
|
215
|
+
for (const method of [...definition.methods, ...definition.static.methods]) {
|
|
216
|
+
callables.set(method.key, method);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
return callables;
|
|
220
|
+
}
|
|
221
|
+
function reachableEntries(root, entries) {
|
|
222
|
+
const reachable = new Map();
|
|
223
|
+
const pending = [root];
|
|
224
|
+
while (pending.length > 0) {
|
|
225
|
+
const current = pending.pop();
|
|
226
|
+
if (reachable.has(current.origin))
|
|
227
|
+
continue;
|
|
228
|
+
reachable.set(current.origin, current);
|
|
229
|
+
for (const dependency of Object.values(current.dependencies)) {
|
|
230
|
+
const nested = entries.get(dependency.origin);
|
|
231
|
+
if (nested === undefined || nested.revision !== dependency.revision) {
|
|
232
|
+
throw new TypeError(`Domain universe has no exact ${dependency.origin}@${dependency.revision}.`);
|
|
233
|
+
}
|
|
234
|
+
pending.push(nested);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
return [...reachable.values()];
|
|
238
|
+
}
|
|
239
|
+
function namespace(definitions, kind) {
|
|
240
|
+
return frozenRecord(definitions
|
|
241
|
+
.filter((value) => value.ref.kind === kind)
|
|
242
|
+
.map((value) => [value.ref.name, value]));
|
|
243
|
+
}
|
|
244
|
+
function requiredCore(definitions, ref) {
|
|
245
|
+
const value = definitions.get(Key.of(ref));
|
|
246
|
+
if (value?.ref.kind !== 'core')
|
|
247
|
+
throw new TypeError(`Core endpoint ${Key.of(ref)} is absent.`);
|
|
248
|
+
return value;
|
|
249
|
+
}
|
|
250
|
+
function isFunctionDefinition(value) {
|
|
251
|
+
return value.ref.kind === 'function';
|
|
252
|
+
}
|
|
253
|
+
function isPolicyDefinition(value) {
|
|
254
|
+
return value.ref.kind === 'policy';
|
|
255
|
+
}
|
|
256
|
+
function isViewDefinition(value) {
|
|
257
|
+
return value.ref.kind === 'view';
|
|
258
|
+
}
|
|
259
|
+
function isCoreDefinition(value) {
|
|
260
|
+
return value.ref.kind === 'core';
|
|
261
|
+
}
|
|
262
|
+
function compare(left, right) {
|
|
263
|
+
return left < right ? -1 : left > right ? 1 : 0;
|
|
264
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { isDomain } from './create.js';
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { DefinitionKey, DefinitionRef, Key, Revision } from '../../addressing/index.js';
|
|
2
|
+
import type { DomainDependency } from '../../addressing/index.js';
|
|
3
|
+
import type { MethodOwnerKeyOf, ResolvedCallable, ResolvedFunction } from '../../language/callable/resolved.js';
|
|
4
|
+
import type { AnyResolvedClass } from '../../language/class/resolved.js';
|
|
5
|
+
import type { ResolvedCoreDefinition, ResolvedCoreEdge } from '../../language/core/resolved.js';
|
|
6
|
+
import type { ResolvedPolicy } from '../../language/policy/resolved.js';
|
|
7
|
+
import type { ResolvedDefinition, ResolvedDefinitionOf } from '../../language/resolved.js';
|
|
8
|
+
import type { ResolvedView } from '../../language/view/resolved.js';
|
|
9
|
+
export type ClassNamespace<Classes extends Readonly<Record<string, unknown>> = Readonly<Record<string, AnyResolvedClass>>> = Readonly<Classes>;
|
|
10
|
+
export type FunctionNamespace<Functions extends Readonly<Record<string, unknown>> = Readonly<Record<string, ResolvedFunction>>> = Readonly<Functions>;
|
|
11
|
+
export type PolicyNamespace<Policies extends Readonly<Record<string, unknown>> = Readonly<Record<string, ResolvedPolicy>>> = Readonly<Policies>;
|
|
12
|
+
export type ViewNamespace<Views extends Readonly<Record<string, unknown>> = Readonly<Record<string, ResolvedView>>> = Readonly<Views>;
|
|
13
|
+
export interface CoreNamespace<Nodes extends Readonly<Record<string, unknown>> = Readonly<Record<string, ResolvedCoreDefinition>>> {
|
|
14
|
+
readonly nodes: Readonly<Nodes>;
|
|
15
|
+
readonly edges: readonly ResolvedCoreEdge[];
|
|
16
|
+
}
|
|
17
|
+
/** Erased recursive dependency projection used when no authored Schema witness is available. */
|
|
18
|
+
export interface DependencyDomains {
|
|
19
|
+
readonly [alias: string]: Domain<Readonly<Record<string, AnyResolvedClass>>, Readonly<Record<string, ResolvedFunction>>, Readonly<Record<string, ResolvedPolicy>>, Readonly<Record<string, ResolvedView>>, Readonly<Record<string, ResolvedCoreDefinition>>, Revision>;
|
|
20
|
+
}
|
|
21
|
+
export type DependencyDomainNamespace<Dependencies extends Readonly<Record<string, unknown>> = DependencyDomains> = Readonly<Dependencies>;
|
|
22
|
+
export interface Domain<Classes extends Readonly<Record<string, unknown>> = Readonly<Record<string, AnyResolvedClass>>, Functions extends Readonly<Record<string, unknown>> = Readonly<Record<string, ResolvedFunction>>, Policies extends Readonly<Record<string, unknown>> = Readonly<Record<string, ResolvedPolicy>>, Views extends Readonly<Record<string, unknown>> = Readonly<Record<string, ResolvedView>>, CoreNodes extends Readonly<Record<string, unknown>> = Readonly<Record<string, ResolvedCoreDefinition>>, RevisionValue extends Revision = Revision> {
|
|
23
|
+
readonly origin: Key.Origin;
|
|
24
|
+
readonly revision: RevisionValue;
|
|
25
|
+
/** Exact admitted root and transitive dependency revisions, ordered by origin. */
|
|
26
|
+
readonly closure: readonly DomainDependency[];
|
|
27
|
+
/** Exact immutable direct dependency Domains keyed by authored Schema aliases. */
|
|
28
|
+
readonly dependencies: DependencyDomainNamespace;
|
|
29
|
+
readonly classes: ClassNamespace<Classes>;
|
|
30
|
+
readonly functions: FunctionNamespace<Functions>;
|
|
31
|
+
readonly policies: PolicyNamespace<Policies>;
|
|
32
|
+
readonly views: ViewNamespace<Views>;
|
|
33
|
+
readonly core: CoreNamespace<CoreNodes>;
|
|
34
|
+
definition<const Ref extends DefinitionRef>(ref: Ref): ResolvedDefinitionOf<Ref['kind']> | undefined;
|
|
35
|
+
definition<const Origin extends Key.Origin, const Kind extends DefinitionRef['kind'], const Name extends string>(key: DefinitionKey<Origin, Kind, Name>): ResolvedDefinitionOf<Kind> | undefined;
|
|
36
|
+
callable(key: Key.Callable): ResolvedCallable | undefined;
|
|
37
|
+
definitions(): readonly ResolvedDefinition[];
|
|
38
|
+
definitions<const Kind extends DefinitionRef['kind']>(kind: Kind): readonly ResolvedDefinitionOf<Kind>[];
|
|
39
|
+
viewsFor(target: 'domain' | AnyResolvedClass): readonly Views[keyof Views][];
|
|
40
|
+
}
|
|
41
|
+
declare const DOMAIN_SOURCE_RESOLVED: unique symbol;
|
|
42
|
+
/** Type-only witness carried by a source that retains its exact resolved Domain. */
|
|
43
|
+
export interface DomainSource<Resolved extends Domain = Domain> {
|
|
44
|
+
readonly [DOMAIN_SOURCE_RESOLVED]: Resolved;
|
|
45
|
+
}
|
|
46
|
+
export type DomainOfSource<Source> = Source extends DomainSource<infer Resolved> ? Resolved : Domain;
|
|
47
|
+
export type SourceDomain<Source, Resolved extends Domain = DomainOfSource<Source>> = Resolved & {
|
|
48
|
+
readonly source: Source;
|
|
49
|
+
};
|
|
50
|
+
export type ClassesOf<Value> = Value extends Domain<infer Classes> ? Classes : never;
|
|
51
|
+
export type MethodOwnerOf<Work extends Domain, Method> = Extract<ClassesOf<Work>[keyof ClassesOf<Work>], {
|
|
52
|
+
readonly key: MethodOwnerKeyOf<Method>;
|
|
53
|
+
}>;
|
|
54
|
+
export type FunctionsOf<Value> = Value extends Domain<Readonly<Record<string, unknown>>, infer Functions> ? Functions : never;
|
|
55
|
+
export type PoliciesOf<Value> = Value extends Domain<Readonly<Record<string, unknown>>, Readonly<Record<string, unknown>>, infer Policies> ? Policies : never;
|
|
56
|
+
export type ViewsOf<Value> = Value extends Domain<Readonly<Record<string, unknown>>, Readonly<Record<string, unknown>>, Readonly<Record<string, unknown>>, infer Views> ? Views : never;
|
|
57
|
+
export type PropertyInputFor<Class extends AnyResolvedClass> = import('../../language/class/resolved.js').PropertyInputOf<Class>;
|
|
58
|
+
export type PropertyValuesFor<Class extends AnyResolvedClass> = ReturnType<Class['properties']['from']>;
|
|
59
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Key as AddressKey, PropertyKey, Revision } from '../../addressing/index.js';
|
|
2
|
+
import type { DomainDependency, DomainDependencyMap } from '../../addressing/index.js';
|
|
3
|
+
import type { CoreEdge } from '../../language/core/model/core.js';
|
|
4
|
+
import type { Definition } from '../../language/definition.js';
|
|
5
|
+
import type { Diagnostic } from '../../language/validation/diagnostic.js';
|
|
6
|
+
import type { OrderingKind } from '../../language/value/ordering.js';
|
|
7
|
+
/** One admitted Schema entry in a dependency-closed Domain universe. */
|
|
8
|
+
export interface DomainEntryInput {
|
|
9
|
+
readonly origin: AddressKey.Origin;
|
|
10
|
+
readonly revision: Revision;
|
|
11
|
+
readonly dependencies: DomainDependencyMap;
|
|
12
|
+
readonly definitions: readonly Definition[];
|
|
13
|
+
readonly coreEdges: readonly CoreEdge[];
|
|
14
|
+
}
|
|
15
|
+
/** Dependency-closed, representation-neutral input to the one Domain universe constructor. */
|
|
16
|
+
export interface DomainInput {
|
|
17
|
+
readonly root: DomainDependency;
|
|
18
|
+
readonly entries: readonly DomainEntryInput[];
|
|
19
|
+
readonly validation: DomainValidation;
|
|
20
|
+
}
|
|
21
|
+
/** Already-bound validation semantics supplied by source compilation or compiled loading. */
|
|
22
|
+
export interface DomainValidation {
|
|
23
|
+
propertyExists(key: PropertyKey): boolean;
|
|
24
|
+
property(key: PropertyKey, input: unknown): readonly Diagnostic[];
|
|
25
|
+
propertyOrdering(key: PropertyKey): OrderingKind | undefined;
|
|
26
|
+
callableExists(key: AddressKey.Callable): boolean;
|
|
27
|
+
callableInput(key: AddressKey.Callable, input: unknown): readonly Diagnostic[];
|
|
28
|
+
callableFields(key: AddressKey.Callable): readonly string[] | undefined;
|
|
29
|
+
callableInputField(key: AddressKey.Callable, field: string, input: unknown): readonly Diagnostic[];
|
|
30
|
+
callableOutput(key: AddressKey.Callable, output: unknown): readonly Diagnostic[];
|
|
31
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ResolvedMethod, ResolvedMethodCollection } from '../../language/callable/resolved.js';
|
|
2
|
+
import type { ResolvedProperty, ResolvedPropertyCollection } from '../../language/class/resolved.js';
|
|
3
|
+
export declare function createPropertyCollection(values: Iterable<ResolvedProperty>): ResolvedPropertyCollection;
|
|
4
|
+
export declare function createMethodCollection(values: Iterable<ResolvedMethod>): ResolvedMethodCollection;
|
|
5
|
+
export declare function frozenRecord<Value>(entries: Iterable<readonly [string, Value]>): Readonly<Record<string, Value>>;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { PropertyKey as PropertyKeyValue } from '../../addressing/index.js';
|
|
2
|
+
import { createPropertyValues } from '../../language/class/property-values.js';
|
|
3
|
+
const PROPERTY_OPERATIONS = new Set(['byKey', 'get', 'from']);
|
|
4
|
+
const METHOD_OPERATIONS = new Set(['byKey', 'get']);
|
|
5
|
+
export function createPropertyCollection(values) {
|
|
6
|
+
const ordered = [...values].sort((left, right) => compare(left.key, right.key));
|
|
7
|
+
const byKey = frozenRecord(ordered.map((value) => [value.key, value]));
|
|
8
|
+
const named = uniqueNames(ordered);
|
|
9
|
+
const collection = {
|
|
10
|
+
byKey,
|
|
11
|
+
get(key) {
|
|
12
|
+
return byKey[key];
|
|
13
|
+
},
|
|
14
|
+
from(input) {
|
|
15
|
+
const entries = new Map();
|
|
16
|
+
const source = new Map();
|
|
17
|
+
for (const [candidate, value] of Object.entries(input)) {
|
|
18
|
+
const property = PropertyKeyValue.is(candidate) ? byKey[candidate] : named[candidate];
|
|
19
|
+
if (property === undefined) {
|
|
20
|
+
throw new TypeError(`Unknown or ambiguous Property ${JSON.stringify(candidate)}.`);
|
|
21
|
+
}
|
|
22
|
+
if (entries.has(property.key)) {
|
|
23
|
+
throw new TypeError(`Property ${property.key} is supplied through both ${JSON.stringify(source.get(property.key))} and ${JSON.stringify(candidate)}.`);
|
|
24
|
+
}
|
|
25
|
+
const diagnostics = property.validate(value);
|
|
26
|
+
if (diagnostics.length > 0) {
|
|
27
|
+
throw new TypeError(`Invalid value for Property ${property.key}: ${diagnostics.map(({ message }) => message).join('; ')}`);
|
|
28
|
+
}
|
|
29
|
+
source.set(property.key, candidate);
|
|
30
|
+
entries.set(property.key, value);
|
|
31
|
+
}
|
|
32
|
+
return createPropertyValues(entries);
|
|
33
|
+
},
|
|
34
|
+
*[Symbol.iterator]() {
|
|
35
|
+
yield* ordered;
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
installShortcuts(collection, named, PROPERTY_OPERATIONS);
|
|
39
|
+
return Object.freeze(collection);
|
|
40
|
+
}
|
|
41
|
+
export function createMethodCollection(values) {
|
|
42
|
+
const ordered = [...values].sort((left, right) => compare(left.key, right.key));
|
|
43
|
+
const byKey = frozenRecord(ordered.map((value) => [value.key, value]));
|
|
44
|
+
const named = uniqueNames(ordered);
|
|
45
|
+
const collection = {
|
|
46
|
+
byKey,
|
|
47
|
+
get(key) {
|
|
48
|
+
return byKey[key];
|
|
49
|
+
},
|
|
50
|
+
*[Symbol.iterator]() {
|
|
51
|
+
yield* ordered;
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
installShortcuts(collection, named, METHOD_OPERATIONS);
|
|
55
|
+
return Object.freeze(collection);
|
|
56
|
+
}
|
|
57
|
+
function uniqueNames(values) {
|
|
58
|
+
const candidates = new Map();
|
|
59
|
+
for (const value of values) {
|
|
60
|
+
const list = candidates.get(value.name) ?? [];
|
|
61
|
+
list.push(value);
|
|
62
|
+
candidates.set(value.name, list);
|
|
63
|
+
}
|
|
64
|
+
return frozenRecord([...candidates].flatMap(([name, list]) => list.length === 1 ? [[name, list[0]]] : []));
|
|
65
|
+
}
|
|
66
|
+
function installShortcuts(target, named, reserved) {
|
|
67
|
+
for (const [name, value] of Object.entries(named)) {
|
|
68
|
+
if (!reserved.has(name))
|
|
69
|
+
Object.defineProperty(target, name, { enumerable: true, value });
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
export function frozenRecord(entries) {
|
|
73
|
+
const output = Object.create(null);
|
|
74
|
+
for (const [key, value] of [...entries].sort(([left], [right]) => compare(left, right))) {
|
|
75
|
+
Object.defineProperty(output, key, { enumerable: true, value });
|
|
76
|
+
}
|
|
77
|
+
return Object.freeze(output);
|
|
78
|
+
}
|
|
79
|
+
function compare(left, right) {
|
|
80
|
+
return left < right ? -1 : left > right ? 1 : 0;
|
|
81
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { AnyResolvedClass } from '../../language/class/resolved.js';
|
|
2
|
+
import type { Definition } from '../../language/definition.js';
|
|
3
|
+
import type { DomainValidation } from '../model/input.js';
|
|
4
|
+
export declare function createClasses(definitions: readonly Definition[], validation: DomainValidation): ReadonlyMap<string, AnyResolvedClass>;
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { compareUnicode, Key, MethodKey as MethodKeyValue, PropertyKey as PropertyKeyValue, } from '../../addressing/index.js';
|
|
2
|
+
import { acceptPropertyValues } from '../../language/class/property-values.js';
|
|
3
|
+
import { appendPointer } from '../../language/value/syntax/pointer.js';
|
|
4
|
+
import { createMethodCollection, createPropertyCollection } from '../namespace/member-collection.js';
|
|
5
|
+
export function createClasses(definitions, validation) {
|
|
6
|
+
const declarations = new Map(definitions
|
|
7
|
+
.filter((value) => value.ref.kind === 'class')
|
|
8
|
+
.map((value) => [Key.of(value.ref), value]));
|
|
9
|
+
const resolved = new Map();
|
|
10
|
+
const visiting = new Set();
|
|
11
|
+
const resolve = (ref) => {
|
|
12
|
+
const key = Key.of(ref);
|
|
13
|
+
const cached = resolved.get(key);
|
|
14
|
+
if (cached !== undefined)
|
|
15
|
+
return cached;
|
|
16
|
+
if (visiting.has(key))
|
|
17
|
+
throw new TypeError(`Class inheritance cycle reaches ${key}.`);
|
|
18
|
+
const definition = declarations.get(key);
|
|
19
|
+
if (definition === undefined)
|
|
20
|
+
throw new TypeError(`Class ${key} is absent from Domain input.`);
|
|
21
|
+
visiting.add(key);
|
|
22
|
+
const parents = definition.extends.map(resolve);
|
|
23
|
+
if (parents.some((parent) => parent.kind !== definition.kind)) {
|
|
24
|
+
throw new TypeError(`Class ${key} extends a Class of another graph kind.`);
|
|
25
|
+
}
|
|
26
|
+
const shell = {};
|
|
27
|
+
const policies = Object.freeze({
|
|
28
|
+
read: Object.freeze(uniquePolicyRefs([
|
|
29
|
+
...parents.flatMap((parent) => [...parent.policies.read]),
|
|
30
|
+
...(definition.policies.read === undefined ? [] : [definition.policies.read]),
|
|
31
|
+
])),
|
|
32
|
+
traverse: Object.freeze(uniquePolicyRefs([
|
|
33
|
+
...parents.flatMap((parent) => [...parent.policies.traverse]),
|
|
34
|
+
...(definition.policies.traverse === undefined ? [] : [definition.policies.traverse]),
|
|
35
|
+
])),
|
|
36
|
+
});
|
|
37
|
+
const effectiveProperties = new Map();
|
|
38
|
+
const effectiveMethods = new Map();
|
|
39
|
+
let inheritedData;
|
|
40
|
+
for (const parent of parents) {
|
|
41
|
+
for (const property of parent.properties) {
|
|
42
|
+
effectiveProperties.set(property.key, property);
|
|
43
|
+
}
|
|
44
|
+
for (const method of [...parent.methods, ...parent.static.methods]) {
|
|
45
|
+
if (!effectiveMethods.has(method.name))
|
|
46
|
+
effectiveMethods.set(method.name, method);
|
|
47
|
+
}
|
|
48
|
+
if (parent.kind === 'node' && inheritedData === undefined)
|
|
49
|
+
inheritedData = parent.data;
|
|
50
|
+
}
|
|
51
|
+
const ownProperties = [];
|
|
52
|
+
for (const [name, propertyDefinition] of Object.entries(definition.properties)) {
|
|
53
|
+
const propertyKey = PropertyKeyValue.of(ref, name);
|
|
54
|
+
const ordering = validation.propertyOrdering(propertyKey);
|
|
55
|
+
const property = Object.freeze({
|
|
56
|
+
owner: shell,
|
|
57
|
+
name,
|
|
58
|
+
key: propertyKey,
|
|
59
|
+
definition: propertyDefinition,
|
|
60
|
+
...(ordering === undefined ? {} : { ordering }),
|
|
61
|
+
validate: (input) => validation.property(propertyKey, input),
|
|
62
|
+
});
|
|
63
|
+
ownProperties.push(property);
|
|
64
|
+
effectiveProperties.set(property.key, property);
|
|
65
|
+
}
|
|
66
|
+
const ownInstanceMethods = [];
|
|
67
|
+
const ownStaticMethods = [];
|
|
68
|
+
const ownData = definition.kind === 'node' && definition.data !== undefined
|
|
69
|
+
? Object.freeze({ owner: shell, definition: definition.data })
|
|
70
|
+
: undefined;
|
|
71
|
+
if (definition.kind === 'node') {
|
|
72
|
+
for (const [name, methodDefinition] of Object.entries(definition.methods)) {
|
|
73
|
+
const methodKey = MethodKeyValue.of(ref, name);
|
|
74
|
+
const inputFields = validation.callableFields(methodKey);
|
|
75
|
+
const method = Object.freeze({
|
|
76
|
+
owner: shell,
|
|
77
|
+
name,
|
|
78
|
+
key: methodKey,
|
|
79
|
+
description: methodDefinition.description,
|
|
80
|
+
input: methodDefinition.input,
|
|
81
|
+
output: methodDefinition.output,
|
|
82
|
+
auth: methodDefinition.auth,
|
|
83
|
+
policy: methodDefinition.policy,
|
|
84
|
+
static: methodDefinition.static,
|
|
85
|
+
inheritance: methodDefinition.inheritance,
|
|
86
|
+
...(inputFields === undefined ? {} : { inputFields }),
|
|
87
|
+
definition: methodDefinition,
|
|
88
|
+
validateInput: (input) => validation.callableInput(methodKey, input),
|
|
89
|
+
validateInputField: (field, input) => validation.callableInputField(methodKey, field, input),
|
|
90
|
+
validateOutput: (output) => validation.callableOutput(methodKey, output),
|
|
91
|
+
});
|
|
92
|
+
effectiveMethods.set(name, method);
|
|
93
|
+
(methodDefinition.static ? ownStaticMethods : ownInstanceMethods).push(method);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
const instanceMethods = [...effectiveMethods.values()].filter(({ definition }) => !definition.static);
|
|
97
|
+
const staticMethods = [...effectiveMethods.values()].filter(({ definition }) => definition.static);
|
|
98
|
+
Object.assign(shell, {
|
|
99
|
+
ref: definition.ref,
|
|
100
|
+
key,
|
|
101
|
+
kind: definition.kind,
|
|
102
|
+
abstract: definition.abstract,
|
|
103
|
+
definition,
|
|
104
|
+
extends: Object.freeze(parents),
|
|
105
|
+
policies,
|
|
106
|
+
data: definition.kind === 'node' ? (ownData ?? inheritedData) : undefined,
|
|
107
|
+
properties: createPropertyCollection(effectiveProperties.values()),
|
|
108
|
+
methods: createMethodCollection(instanceMethods),
|
|
109
|
+
static: Object.freeze({ methods: createMethodCollection(staticMethods) }),
|
|
110
|
+
self: Object.freeze({
|
|
111
|
+
data: definition.kind === 'node' ? ownData : undefined,
|
|
112
|
+
properties: createPropertyCollection(ownProperties),
|
|
113
|
+
policies: definition.policies,
|
|
114
|
+
methods: createMethodCollection(ownInstanceMethods),
|
|
115
|
+
static: Object.freeze({ methods: createMethodCollection(ownStaticMethods) }),
|
|
116
|
+
}),
|
|
117
|
+
satisfies(selected) {
|
|
118
|
+
if (key === selected.key)
|
|
119
|
+
return true;
|
|
120
|
+
return parents.some((parent) => {
|
|
121
|
+
if (parent.kind === 'node' && selected.kind === 'node')
|
|
122
|
+
return parent.satisfies(selected);
|
|
123
|
+
if (parent.kind === 'edge' && selected.kind === 'edge')
|
|
124
|
+
return parent.satisfies(selected);
|
|
125
|
+
return false;
|
|
126
|
+
});
|
|
127
|
+
},
|
|
128
|
+
validateProperties(input) {
|
|
129
|
+
return validateProperties(definition.abstract, effectiveProperties, input);
|
|
130
|
+
},
|
|
131
|
+
});
|
|
132
|
+
const value = Object.freeze(shell);
|
|
133
|
+
resolved.set(key, value);
|
|
134
|
+
visiting.delete(key);
|
|
135
|
+
return value;
|
|
136
|
+
};
|
|
137
|
+
for (const definition of declarations.values())
|
|
138
|
+
resolve(definition.ref);
|
|
139
|
+
return resolved;
|
|
140
|
+
}
|
|
141
|
+
function uniquePolicyRefs(values) {
|
|
142
|
+
const result = new Map();
|
|
143
|
+
for (const value of values)
|
|
144
|
+
result.set(Key.of(value), value);
|
|
145
|
+
return [...result.values()].sort((left, right) => compareUnicode(Key.of(left), Key.of(right)));
|
|
146
|
+
}
|
|
147
|
+
function validateProperties(abstract, properties, input) {
|
|
148
|
+
if (abstract) {
|
|
149
|
+
return [
|
|
150
|
+
{
|
|
151
|
+
code: 'DOMAIN_CLASS_ABSTRACT',
|
|
152
|
+
pointer: '/class',
|
|
153
|
+
message: 'An abstract Class cannot admit exact object Properties.',
|
|
154
|
+
},
|
|
155
|
+
];
|
|
156
|
+
}
|
|
157
|
+
let values;
|
|
158
|
+
try {
|
|
159
|
+
values = acceptPropertyValues(input, '/properties');
|
|
160
|
+
}
|
|
161
|
+
catch (cause) {
|
|
162
|
+
return [
|
|
163
|
+
{
|
|
164
|
+
code: 'DOMAIN_PROPERTY_INPUT_INVALID',
|
|
165
|
+
pointer: '/properties',
|
|
166
|
+
message: cause instanceof Error ? cause.message : 'Properties are not canonical.',
|
|
167
|
+
},
|
|
168
|
+
];
|
|
169
|
+
}
|
|
170
|
+
const diagnostics = [];
|
|
171
|
+
for (const key of Object.keys(values)) {
|
|
172
|
+
if (!properties.has(key)) {
|
|
173
|
+
diagnostics.push({
|
|
174
|
+
code: 'DOMAIN_PROPERTY_UNKNOWN',
|
|
175
|
+
pointer: appendPointer('/properties', key),
|
|
176
|
+
message: `Property ${key} is not effective on this Class.`,
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
for (const property of properties.values()) {
|
|
181
|
+
if (!Object.hasOwn(values, property.key)) {
|
|
182
|
+
if (property.definition.required) {
|
|
183
|
+
diagnostics.push({
|
|
184
|
+
code: 'DOMAIN_PROPERTY_REQUIRED',
|
|
185
|
+
pointer: appendPointer('/properties', property.key),
|
|
186
|
+
message: `Required Property ${property.key} is absent.`,
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
continue;
|
|
190
|
+
}
|
|
191
|
+
const pointer = appendPointer('/properties', property.key);
|
|
192
|
+
diagnostics.push(...property.validate(values[property.key]).map((item) => ({
|
|
193
|
+
...item,
|
|
194
|
+
pointer: `${pointer}${item.pointer}`,
|
|
195
|
+
})));
|
|
196
|
+
}
|
|
197
|
+
return Object.freeze(diagnostics);
|
|
198
|
+
}
|