@astrale-os/kernel-dsl 0.2.0-beta.4 → 0.2.0-beta.41
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/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 +143 -0
- package/dist/v1/builder/callable/authoring.js +82 -0
- package/dist/v1/builder/class/authoring.d.ts +400 -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 +47 -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/lowering/callable.js +150 -0
- 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/lowering/core-properties.js +76 -0
- package/dist/v1/builder/lowering/core.d.ts +22 -0
- package/dist/v1/builder/lowering/core.js +50 -0
- package/dist/v1/builder/lowering/policy.d.ts +16 -0
- package/dist/v1/builder/lowering/policy.js +60 -0
- package/dist/v1/builder/lowering/schema/capture.d.ts +4 -0
- package/dist/v1/builder/lowering/schema/capture.js +75 -0
- package/dist/v1/builder/lowering/schema/compile.d.ts +10 -0
- package/dist/v1/builder/lowering/schema/compile.js +80 -0
- package/dist/v1/builder/lowering/schema/context.d.ts +49 -0
- package/dist/v1/builder/lowering/schema/context.js +277 -0
- package/dist/v1/builder/lowering/schema/ownership.d.ts +8 -0
- package/dist/v1/builder/lowering/schema/ownership.js +30 -0
- package/dist/v1/builder/lowering/value/compile.d.ts +15 -0
- package/dist/v1/builder/lowering/value/compile.js +143 -0
- package/dist/v1/builder/lowering/value/path.d.ts +3 -0
- package/dist/v1/builder/lowering/value/path.js +20 -0
- package/dist/v1/builder/lowering/value/zod.d.ts +32 -0
- package/dist/v1/builder/lowering/value/zod.js +342 -0
- package/dist/v1/builder/lowering/view.d.ts +11 -0
- package/dist/v1/builder/lowering/view.js +27 -0
- package/dist/v1/builder/policy/authoring.d.ts +61 -0
- package/dist/v1/builder/policy/authoring.js +117 -0
- package/dist/v1/builder/schema/define.d.ts +11 -0
- package/dist/v1/builder/schema/define.js +5 -0
- package/dist/v1/builder/schema/diagnostic.d.ts +16 -0
- package/dist/v1/builder/schema/diagnostic.js +31 -0
- package/dist/v1/builder/schema/handle.d.ts +7 -0
- package/dist/v1/builder/schema/handle.js +14 -0
- package/dist/v1/builder/schema/input.d.ts +15 -0
- package/dist/v1/builder/schema/input.js +1 -0
- package/dist/v1/builder/schema/lazy.d.ts +2 -0
- package/dist/v1/builder/schema/lazy.js +13 -0
- package/dist/v1/builder/schema/projection.d.ts +375 -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/value/path-metadata.js +7 -0
- package/dist/v1/builder/value/path.d.ts +8 -0
- package/dist/v1/builder/value/path.js +11 -0
- package/dist/v1/builder/value/schema.d.ts +16 -0
- package/dist/v1/builder/value/schema.js +10 -0
- 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 +1068 -0
- package/dist/v1/compiled/admission/revision.d.ts +4 -0
- package/dist/v1/compiled/admission/revision.js +79 -0
- package/dist/v1/compiled/admission/semantics.d.ts +7 -0
- package/dist/v1/compiled/admission/semantics.js +1187 -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 +142 -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 +18 -0
- package/dist/v1/compiled/loader/load.js +156 -0
- package/dist/v1/compiled/model/schema.d.ts +78 -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 +273 -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 +178 -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 +15 -5
- package/dist/v1/index.js +7 -3
- package/dist/v1/language/callable/composition.d.ts +27 -0
- package/dist/v1/language/callable/composition.js +52 -0
- package/dist/v1/language/callable/executable.d.ts +6 -0
- package/dist/v1/language/callable/executable.js +4 -0
- 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 +56 -0
- package/dist/v1/language/callable/model/callable.js +3 -0
- package/dist/v1/language/callable/resolved.d.ts +83 -0
- package/dist/v1/language/callable/resolved.js +1 -0
- package/dist/v1/language/class/facets.d.ts +61 -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/language/class/model/data.d.ts +11 -0
- package/dist/v1/language/class/model/data.js +2 -0
- package/dist/v1/language/class/model/edge.d.ts +38 -0
- 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 +33 -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 +26 -0
- package/dist/v1/language/core/model/core.js +1 -0
- package/dist/v1/language/core/resolved.d.ts +25 -0
- package/dist/v1/language/core/resolved.js +1 -0
- package/dist/v1/language/definition/metadata.d.ts +12 -0
- package/dist/v1/language/definition/metadata.js +12 -0
- package/dist/v1/language/definition.d.ts +7 -0
- package/dist/v1/language/definition.js +1 -0
- package/dist/v1/language/index.d.ts +28 -0
- package/dist/v1/language/index.js +5 -0
- package/dist/v1/language/policy/analysis/branches.d.ts +20 -0
- package/dist/v1/language/policy/analysis/branches.js +174 -0
- package/dist/v1/language/policy/analysis/budgets.d.ts +16 -0
- package/dist/v1/language/policy/analysis/budgets.js +25 -0
- package/dist/v1/language/policy/index.d.ts +4 -0
- package/dist/v1/language/policy/index.js +2 -0
- package/dist/v1/language/policy/model/policy.d.ts +116 -0
- package/dist/v1/language/policy/model/policy.js +35 -0
- package/dist/v1/language/policy/normalization/normalize.d.ts +4 -0
- package/dist/v1/language/policy/normalization/normalize.js +275 -0
- 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 +6 -0
- package/dist/v1/language/value/compile/load.js +62 -0
- package/dist/v1/language/value/compile/model.d.ts +42 -0
- package/dist/v1/language/value/compile/model.js +1 -0
- package/dist/v1/language/value/evaluate/assertions.d.ts +8 -0
- package/dist/v1/language/value/evaluate/assertions.js +71 -0
- package/dist/v1/language/value/evaluate/evaluator.d.ts +4 -0
- package/dist/v1/language/value/evaluate/evaluator.js +426 -0
- package/dist/v1/language/value/evaluate/preparation.d.ts +22 -0
- package/dist/v1/language/value/evaluate/preparation.js +126 -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/language/value/evaluate/types.d.ts +36 -0
- package/dist/v1/language/value/evaluate/types.js +9 -0
- package/dist/v1/language/value/evaluate/validate.d.ts +16 -0
- package/dist/v1/language/value/evaluate/validate.js +50 -0
- package/dist/v1/language/value/index.d.ts +11 -0
- package/dist/v1/language/value/index.js +8 -0
- package/dist/v1/language/value/model/blob.d.ts +33 -0
- package/dist/v1/language/value/model/blob.js +90 -0
- package/dist/v1/language/value/model/instant.d.ts +9 -0
- package/dist/v1/language/value/model/instant.js +37 -0
- package/dist/v1/language/value/model/object.d.ts +5 -0
- package/dist/v1/language/value/model/object.js +3 -0
- package/dist/v1/language/value/model/schema.d.ts +25 -0
- package/dist/v1/language/value/model/schema.js +11 -0
- package/dist/v1/language/value/ordering.d.ts +15 -0
- package/dist/v1/language/value/ordering.js +170 -0
- package/dist/v1/language/value/profile/canonicalize.d.ts +4 -0
- package/dist/v1/language/value/profile/canonicalize.js +130 -0
- package/dist/v1/language/value/profile/json.validate.d.ts +2 -0
- package/dist/v1/language/value/profile/json.validate.js +14 -0
- package/dist/v1/language/value/profile/meta-schema.compiled.d.ts +78 -0
- package/dist/v1/language/value/profile/meta-schema.compiled.js +2079 -0
- package/dist/v1/language/value/profile/meta-schema.d.ts +4 -0
- package/dist/v1/language/value/profile/meta-schema.js +19 -0
- package/dist/v1/language/value/profile/rules.d.ts +3 -0
- package/dist/v1/language/value/profile/rules.js +141 -0
- package/dist/v1/language/value/profile/validate.d.ts +4 -0
- package/dist/v1/language/value/profile/validate.js +39 -0
- package/dist/v1/language/value/profile/vocabulary.d.ts +2 -0
- package/dist/v1/language/value/profile/vocabulary.js +68 -0
- package/dist/v1/language/value/reference/closure.d.ts +11 -0
- package/dist/v1/language/value/reference/closure.js +51 -0
- package/dist/v1/language/value/reference/recursion.d.ts +5 -0
- package/dist/v1/language/value/reference/recursion.js +95 -0
- package/dist/v1/language/value/reference/references.d.ts +17 -0
- package/dist/v1/language/value/reference/references.js +45 -0
- package/dist/v1/language/value/reference/registry.d.ts +24 -0
- package/dist/v1/language/value/reference/registry.index.d.ts +14 -0
- package/dist/v1/language/value/reference/registry.index.js +76 -0
- 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 +138 -0
- package/dist/v1/language/value/regexp/lower.d.ts +3 -0
- package/dist/v1/language/value/regexp/lower.js +26 -0
- package/dist/v1/language/value/regexp/matcher.d.ts +10 -0
- package/dist/v1/language/value/regexp/matcher.js +207 -0
- package/dist/v1/language/value/regexp/pattern.d.ts +2 -0
- package/dist/v1/language/value/regexp/pattern.js +38 -0
- 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/language/value/syntax/keywords.d.ts +3 -0
- package/dist/v1/language/value/syntax/keywords.js +20 -0
- package/dist/v1/language/value/syntax/node-path/schema.d.ts +5 -0
- package/dist/v1/language/value/syntax/node-path/schema.js +18 -0
- package/dist/v1/language/value/syntax/node-path/validate.d.ts +4 -0
- package/dist/v1/language/value/syntax/node-path/validate.js +78 -0
- package/dist/v1/language/value/syntax/pointer.d.ts +4 -0
- package/dist/v1/language/value/syntax/pointer.js +49 -0
- package/dist/v1/language/value/syntax/walk.d.ts +10 -0
- package/dist/v1/language/value/syntax/walk.js +53 -0
- 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/admission/accept.js +26 -0
- package/dist/v1/schema/analysis/class.d.ts +69 -0
- package/dist/v1/schema/analysis/class.js +145 -0
- 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/canonical/revision.d.ts +11 -0
- package/dist/v1/schema/canonical/revision.js +20 -0
- package/dist/v1/schema/codec/header.d.ts +17 -0
- package/dist/v1/schema/codec/header.js +26 -0
- package/dist/v1/schema/codec/schema.d.ts +5 -0
- package/dist/v1/schema/codec/schema.js +21 -0
- package/dist/v1/schema/compatibility/api.d.ts +2 -0
- package/dist/v1/schema/compatibility/api.js +1 -0
- package/dist/v1/schema/compatibility/comparators/callables.d.ts +32 -0
- package/dist/v1/schema/compatibility/comparators/callables.js +88 -0
- package/dist/v1/schema/compatibility/comparators/classes.d.ts +28 -0
- package/dist/v1/schema/compatibility/comparators/classes.js +96 -0
- package/dist/v1/schema/compatibility/comparators/index.d.ts +12 -0
- package/dist/v1/schema/compatibility/comparators/index.js +41 -0
- package/dist/v1/schema/compatibility/comparators/members.d.ts +4 -0
- package/dist/v1/schema/compatibility/comparators/members.js +49 -0
- package/dist/v1/schema/compatibility/comparators/values.d.ts +5 -0
- package/dist/v1/schema/compatibility/comparators/values.js +37 -0
- package/dist/v1/schema/compatibility/compare.d.ts +5 -0
- package/dist/v1/schema/compatibility/compare.js +23 -0
- package/dist/v1/schema/compatibility/context.d.ts +15 -0
- package/dist/v1/schema/compatibility/context.js +43 -0
- package/dist/v1/schema/compatibility/coordinate.d.ts +39 -0
- package/dist/v1/schema/compatibility/coordinate.js +38 -0
- package/dist/v1/schema/compatibility/diff.d.ts +12 -0
- package/dist/v1/schema/compatibility/diff.js +39 -0
- package/dist/v1/schema/compatibility/evidence.d.ts +5 -0
- package/dist/v1/schema/compatibility/evidence.js +51 -0
- package/dist/v1/schema/compatibility/fields.d.ts +192 -0
- package/dist/v1/schema/compatibility/fields.js +93 -0
- package/dist/v1/schema/compatibility/index.d.ts +8 -0
- package/dist/v1/schema/compatibility/index.js +4 -0
- package/dist/v1/schema/compatibility/legacy/index.d.ts +58 -0
- package/dist/v1/schema/compatibility/legacy/index.js +145 -0
- package/dist/v1/schema/compatibility/meaning/footprint.d.ts +7 -0
- package/dist/v1/schema/compatibility/meaning/footprint.js +57 -0
- package/dist/v1/schema/compatibility/meaning/index.d.ts +3 -0
- package/dist/v1/schema/compatibility/meaning/index.js +14 -0
- package/dist/v1/schema/compatibility/model.d.ts +96 -0
- package/dist/v1/schema/compatibility/model.js +1 -0
- package/dist/v1/schema/compatibility/references.d.ts +30 -0
- package/dist/v1/schema/compatibility/references.js +122 -0
- package/dist/v1/schema/compatibility/report.d.ts +26 -0
- package/dist/v1/schema/compatibility/report.js +100 -0
- package/dist/v1/schema/compatibility/scope.d.ts +27 -0
- package/dist/v1/schema/compatibility/scope.js +78 -0
- package/dist/v1/schema/compatibility/structure/index.d.ts +3 -0
- package/dist/v1/schema/compatibility/structure/index.js +16 -0
- package/dist/v1/schema/compatibility/structure/inheritance.d.ts +7 -0
- package/dist/v1/schema/compatibility/structure/inheritance.js +68 -0
- package/dist/v1/schema/compatibility/structure/requirements.d.ts +7 -0
- package/dist/v1/schema/compatibility/structure/requirements.js +70 -0
- package/dist/v1/schema/compatibility/subjects.d.ts +34 -0
- package/dist/v1/schema/compatibility/subjects.js +86 -0
- package/dist/v1/schema/dependency/lookup.d.ts +18 -0
- package/dist/v1/schema/dependency/lookup.js +31 -0
- package/dist/v1/schema/diagnostic.d.ts +7 -7
- package/dist/v1/schema/diagnostic.js +9 -9
- package/dist/v1/schema/fingerprint.d.ts +2 -0
- package/dist/v1/schema/fingerprint.js +1 -0
- package/dist/v1/schema/index.d.ts +27 -40
- package/dist/v1/schema/index.js +13 -18
- 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 +234 -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 +120 -0
- package/dist/v1/schema/resolution/origins.d.ts +27 -14
- package/dist/v1/schema/resolution/origins.js +87 -58
- 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/callable.d.ts +4 -0
- package/dist/v1/schema/validation/callable.js +39 -0
- package/dist/v1/schema/validation/class.d.ts +5 -0
- package/dist/v1/schema/validation/class.js +247 -0
- package/dist/v1/schema/validation/core.d.ts +5 -0
- package/dist/v1/schema/validation/core.js +318 -0
- package/dist/v1/schema/validation/domain.d.ts +11 -0
- package/dist/v1/schema/validation/domain.js +38 -0
- 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 +234 -218
- package/dist/v1/schema/validation/policy/budgets.d.ts +4 -0
- package/dist/v1/schema/validation/policy/budgets.js +119 -0
- package/dist/v1/schema/validation/policy/context.d.ts +28 -0
- package/dist/v1/schema/validation/policy/context.js +89 -0
- package/dist/v1/schema/validation/policy/objects.d.ts +4 -0
- package/dist/v1/schema/validation/policy/objects.js +71 -0
- package/dist/v1/schema/validation/policy/references.d.ts +2 -0
- package/dist/v1/schema/validation/policy/references.js +155 -0
- package/dist/v1/schema/validation/policy/typing.d.ts +19 -0
- package/dist/v1/schema/validation/policy/typing.js +347 -0
- package/dist/v1/schema/validation/policy/uses.d.ts +5 -0
- package/dist/v1/schema/validation/policy/uses.js +196 -0
- package/dist/v1/schema/validation/policy/validate.d.ts +11 -0
- package/dist/v1/schema/validation/policy/validate.js +23 -0
- package/dist/v1/schema/validation/value-api.d.ts +15 -0
- package/dist/v1/schema/validation/value-api.js +24 -0
- package/dist/v1/schema/validation/value.d.ts +4 -5
- package/dist/v1/schema/validation/value.js +11 -10
- package/dist/v1/schema/validation/view.d.ts +3 -0
- package/dist/v1/schema/validation/view.js +29 -0
- 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 +9 -1
- package/dist/value/accept.js +78 -6
- package/dist/value/canonical.d.ts +3 -1
- package/dist/value/canonical.js +13 -6
- 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/immutable.optimization.d.ts +12 -0
- package/dist/value/immutable.optimization.js +28 -0
- package/dist/value/index.d.ts +1 -2
- package/dist/value/index.js +1 -2
- package/dist/value/json.d.ts +1 -2
- package/dist/value/json.js +1 -2
- 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 +1 -2
- package/dist/value/unicode.js +1 -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 +52 -21
- 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 -91
- package/dist/v1/builder/callable.d.ts.map +0 -1
- package/dist/v1/builder/callable.js +0 -46
- 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 +0 -138
- 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 +0 -44
- 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 +0 -70
- 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 +0 -54
- package/dist/v1/builder/compiler/policy.js.map +0 -1
- package/dist/v1/builder/compiler/schema.capture.d.ts +0 -5
- 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 +0 -255
- package/dist/v1/builder/compiler/schema.context.js.map +0 -1
- package/dist/v1/builder/compiler/schema.d.ts +0 -10
- package/dist/v1/builder/compiler/schema.d.ts.map +0 -1
- package/dist/v1/builder/compiler/schema.js +0 -90
- package/dist/v1/builder/compiler/schema.js.map +0 -1
- package/dist/v1/builder/compiler/schema.ownership.d.ts +0 -9
- package/dist/v1/builder/compiler/schema.ownership.d.ts.map +0 -1
- package/dist/v1/builder/compiler/schema.ownership.js +0 -30
- 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 +0 -160
- 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 +0 -21
- package/dist/v1/builder/compiler/value.path.js.map +0 -1
- package/dist/v1/builder/compiler/value.zod.d.ts +0 -33
- package/dist/v1/builder/compiler/value.zod.d.ts.map +0 -1
- package/dist/v1/builder/compiler/value.zod.js +0 -343
- 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 +0 -27
- 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 -5
- package/dist/v1/builder/full-match.d.ts.map +0 -1
- package/dist/v1/builder/full-match.js +0 -12
- 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 +0 -8
- package/dist/v1/builder/internal/authoring.d.ts.map +0 -1
- package/dist/v1/builder/internal/authoring.js +0 -15
- package/dist/v1/builder/internal/authoring.js.map +0 -1
- package/dist/v1/builder/internal/authoring.lazy.d.ts +0 -3
- package/dist/v1/builder/internal/authoring.lazy.d.ts.map +0 -1
- package/dist/v1/builder/internal/authoring.lazy.js +0 -14
- 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 +0 -8
- 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 +0 -12
- package/dist/v1/builder/path.js.map +0 -1
- package/dist/v1/builder/policy.d.ts +0 -50
- package/dist/v1/builder/policy.d.ts.map +0 -1
- package/dist/v1/builder/policy.js +0 -79
- 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 +0 -6
- package/dist/v1/builder/schema.js.map +0 -1
- package/dist/v1/builder/value-schema.d.ts +0 -17
- package/dist/v1/builder/value-schema.d.ts.map +0 -1
- package/dist/v1/builder/value-schema.js +0 -11
- 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/compiled/admission.d.ts +0 -4
- package/dist/v1/schema/compiled/admission.d.ts.map +0 -1
- package/dist/v1/schema/compiled/admission.js +0 -217
- package/dist/v1/schema/compiled/admission.js.map +0 -1
- package/dist/v1/schema/compiled/authored-validator.d.ts +0 -5
- package/dist/v1/schema/compiled/authored-validator.d.ts.map +0 -1
- package/dist/v1/schema/compiled/authored-validator.js +0 -7
- package/dist/v1/schema/compiled/authored-validator.js.map +0 -1
- package/dist/v1/schema/compiled/compiler.d.ts +0 -5
- package/dist/v1/schema/compiled/compiler.d.ts.map +0 -1
- package/dist/v1/schema/compiled/compiler.js +0 -86
- package/dist/v1/schema/compiled/compiler.js.map +0 -1
- package/dist/v1/schema/compiled/model.d.ts +0 -61
- package/dist/v1/schema/compiled/model.d.ts.map +0 -1
- package/dist/v1/schema/compiled/model.js +0 -2
- package/dist/v1/schema/compiled/model.js.map +0 -1
- package/dist/v1/schema/compiled/program.d.ts +0 -5
- package/dist/v1/schema/compiled/program.d.ts.map +0 -1
- package/dist/v1/schema/compiled/program.js +0 -42
- package/dist/v1/schema/compiled/program.js.map +0 -1
- package/dist/v1/schema/compiled/validator.d.ts +0 -23
- package/dist/v1/schema/compiled/validator.d.ts.map +0 -1
- package/dist/v1/schema/compiled/validator.js +0 -62
- package/dist/v1/schema/compiled/validator.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 +0 -257
- package/dist/v1/schema/core/validate.js.map +0 -1
- package/dist/v1/schema/definition/analysis.d.ts +0 -43
- package/dist/v1/schema/definition/analysis.d.ts.map +0 -1
- package/dist/v1/schema/definition/analysis.js +0 -190
- 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 +0 -12
- package/dist/v1/schema/definition/data.d.ts.map +0 -1
- package/dist/v1/schema/definition/data.js +0 -3
- package/dist/v1/schema/definition/data.js.map +0 -1
- package/dist/v1/schema/definition/edge.d.ts +0 -35
- 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 +0 -30
- package/dist/v1/schema/dependency.meaning.d.ts.map +0 -1
- package/dist/v1/schema/dependency.meaning.js +0 -608
- 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 +0 -27
- package/dist/v1/schema/domain.accept.js.map +0 -1
- package/dist/v1/schema/domain.codec.d.ts +0 -6
- package/dist/v1/schema/domain.codec.d.ts.map +0 -1
- package/dist/v1/schema/domain.codec.js +0 -22
- 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 +0 -19
- package/dist/v1/schema/domain.lookup.d.ts.map +0 -1
- package/dist/v1/schema/domain.lookup.js +0 -32
- 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 +0 -12
- package/dist/v1/schema/domain.revision.d.ts.map +0 -1
- package/dist/v1/schema/domain.revision.js +0 -18
- 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 +0 -36
- 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 +0 -13
- package/dist/v1/schema/metadata.d.ts.map +0 -1
- package/dist/v1/schema/metadata.js +0 -13
- package/dist/v1/schema/metadata.js.map +0 -1
- package/dist/v1/schema/policy/ast.d.ts +0 -77
- 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 +0 -230
- package/dist/v1/schema/policy/normalize.js.map +0 -1
- package/dist/v1/schema/policy/validation/branches.d.ts +0 -21
- package/dist/v1/schema/policy/validation/branches.d.ts.map +0 -1
- package/dist/v1/schema/policy/validation/branches.js +0 -155
- package/dist/v1/schema/policy/validation/branches.js.map +0 -1
- package/dist/v1/schema/policy/validation/budgets.d.ts +0 -19
- package/dist/v1/schema/policy/validation/budgets.d.ts.map +0 -1
- package/dist/v1/schema/policy/validation/budgets.js +0 -132
- 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 +0 -99
- package/dist/v1/schema/policy/validation/context.js.map +0 -1
- package/dist/v1/schema/policy/validation/references.d.ts +0 -3
- package/dist/v1/schema/policy/validation/references.d.ts.map +0 -1
- package/dist/v1/schema/policy/validation/references.js +0 -136
- package/dist/v1/schema/policy/validation/references.js.map +0 -1
- package/dist/v1/schema/policy/validation/typing.d.ts +0 -23
- package/dist/v1/schema/policy/validation/typing.d.ts.map +0 -1
- package/dist/v1/schema/policy/validation/typing.js +0 -360
- package/dist/v1/schema/policy/validation/typing.js.map +0 -1
- package/dist/v1/schema/policy/validation/uses.d.ts +0 -6
- package/dist/v1/schema/policy/validation/uses.d.ts.map +0 -1
- package/dist/v1/schema/policy/validation/uses.js +0 -272
- package/dist/v1/schema/policy/validation/uses.js.map +0 -1
- package/dist/v1/schema/policy/validation/validate.d.ts +0 -12
- package/dist/v1/schema/policy/validation/validate.d.ts.map +0 -1
- package/dist/v1/schema/policy/validation/validate.js +0 -24
- 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 +0 -6
- package/dist/v1/schema/value/extensions/node-path/schema.d.ts.map +0 -1
- package/dist/v1/schema/value/extensions/node-path/schema.js +0 -19
- 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 +0 -80
- package/dist/v1/schema/value/extensions/node-path/validate.js.map +0 -1
- package/dist/v1/schema/value/full-match.d.ts +0 -7
- package/dist/v1/schema/value/full-match.d.ts.map +0 -1
- package/dist/v1/schema/value/full-match.js +0 -21
- package/dist/v1/schema/value/full-match.js.map +0 -1
- package/dist/v1/schema/value/index.d.ts +0 -14
- package/dist/v1/schema/value/index.d.ts.map +0 -1
- package/dist/v1/schema/value/index.js +0 -24
- package/dist/v1/schema/value/index.js.map +0 -1
- package/dist/v1/schema/value/instance/assertions.d.ts +0 -7
- package/dist/v1/schema/value/instance/assertions.d.ts.map +0 -1
- package/dist/v1/schema/value/instance/assertions.js +0 -59
- package/dist/v1/schema/value/instance/assertions.js.map +0 -1
- package/dist/v1/schema/value/instance/evaluator.d.ts +0 -5
- package/dist/v1/schema/value/instance/evaluator.d.ts.map +0 -1
- package/dist/v1/schema/value/instance/evaluator.js +0 -362
- package/dist/v1/schema/value/instance/evaluator.js.map +0 -1
- package/dist/v1/schema/value/instance/preparation.d.ts +0 -14
- package/dist/v1/schema/value/instance/preparation.d.ts.map +0 -1
- package/dist/v1/schema/value/instance/preparation.js +0 -137
- package/dist/v1/schema/value/instance/preparation.js.map +0 -1
- package/dist/v1/schema/value/instance/types.d.ts +0 -37
- package/dist/v1/schema/value/instance/types.d.ts.map +0 -1
- package/dist/v1/schema/value/instance/types.js +0 -10
- package/dist/v1/schema/value/instance/types.js.map +0 -1
- package/dist/v1/schema/value/instance.validate.d.ts +0 -13
- package/dist/v1/schema/value/instance.validate.d.ts.map +0 -1
- package/dist/v1/schema/value/instance.validate.js +0 -44
- package/dist/v1/schema/value/instance.validate.js.map +0 -1
- package/dist/v1/schema/value/instant.d.ts +0 -9
- package/dist/v1/schema/value/instant.d.ts.map +0 -1
- package/dist/v1/schema/value/instant.js +0 -37
- package/dist/v1/schema/value/instant.js.map +0 -1
- package/dist/v1/schema/value/location/keywords.d.ts +0 -4
- package/dist/v1/schema/value/location/keywords.d.ts.map +0 -1
- package/dist/v1/schema/value/location/keywords.js +0 -21
- package/dist/v1/schema/value/location/keywords.js.map +0 -1
- package/dist/v1/schema/value/location/pointer.d.ts +0 -5
- package/dist/v1/schema/value/location/pointer.d.ts.map +0 -1
- package/dist/v1/schema/value/location/pointer.js +0 -50
- package/dist/v1/schema/value/location/pointer.js.map +0 -1
- package/dist/v1/schema/value/location/walk.d.ts +0 -11
- package/dist/v1/schema/value/location/walk.d.ts.map +0 -1
- package/dist/v1/schema/value/location/walk.js +0 -54
- package/dist/v1/schema/value/location/walk.js.map +0 -1
- package/dist/v1/schema/value/object.d.ts +0 -5
- package/dist/v1/schema/value/object.d.ts.map +0 -1
- package/dist/v1/schema/value/object.js +0 -4
- package/dist/v1/schema/value/object.js.map +0 -1
- package/dist/v1/schema/value/ordering.d.ts +0 -11
- package/dist/v1/schema/value/ordering.d.ts.map +0 -1
- package/dist/v1/schema/value/ordering.js +0 -172
- package/dist/v1/schema/value/ordering.js.map +0 -1
- package/dist/v1/schema/value/profile/canonicalize.d.ts +0 -5
- package/dist/v1/schema/value/profile/canonicalize.d.ts.map +0 -1
- package/dist/v1/schema/value/profile/canonicalize.js +0 -133
- 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 +0 -15
- package/dist/v1/schema/value/profile/json.validate.js.map +0 -1
- package/dist/v1/schema/value/profile/meta-schema.compiled.d.ts +0 -79
- package/dist/v1/schema/value/profile/meta-schema.compiled.d.ts.map +0 -1
- package/dist/v1/schema/value/profile/meta-schema.compiled.js +0 -2080
- package/dist/v1/schema/value/profile/meta-schema.compiled.js.map +0 -1
- package/dist/v1/schema/value/profile/meta-schema.d.ts +0 -5
- package/dist/v1/schema/value/profile/meta-schema.d.ts.map +0 -1
- package/dist/v1/schema/value/profile/meta-schema.js +0 -20
- package/dist/v1/schema/value/profile/meta-schema.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 +0 -152
- 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 +0 -47
- package/dist/v1/schema/value/profile/validate.js.map +0 -1
- package/dist/v1/schema/value/profile/vocabulary.d.ts +0 -3
- package/dist/v1/schema/value/profile/vocabulary.d.ts.map +0 -1
- package/dist/v1/schema/value/profile/vocabulary.js +0 -69
- package/dist/v1/schema/value/profile/vocabulary.js.map +0 -1
- package/dist/v1/schema/value/regexp/ast.d.ts +0 -22
- package/dist/v1/schema/value/regexp/ast.d.ts.map +0 -1
- package/dist/v1/schema/value/regexp/ast.js +0 -327
- package/dist/v1/schema/value/regexp/ast.js.map +0 -1
- package/dist/v1/schema/value/regexp/compile.d.ts +0 -4
- package/dist/v1/schema/value/regexp/compile.d.ts.map +0 -1
- package/dist/v1/schema/value/regexp/compile.js +0 -97
- package/dist/v1/schema/value/regexp/compile.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 +0 -4
- package/dist/v1/schema/value/regexp/lower.d.ts.map +0 -1
- package/dist/v1/schema/value/regexp/lower.js +0 -27
- package/dist/v1/schema/value/regexp/lower.js.map +0 -1
- package/dist/v1/schema/value/regexp/matcher.d.ts +0 -8
- package/dist/v1/schema/value/regexp/matcher.d.ts.map +0 -1
- package/dist/v1/schema/value/regexp/matcher.js +0 -51
- package/dist/v1/schema/value/regexp/matcher.js.map +0 -1
- package/dist/v1/schema/value/regexp/pattern.d.ts +0 -3
- package/dist/v1/schema/value/regexp/pattern.d.ts.map +0 -1
- package/dist/v1/schema/value/regexp/pattern.js +0 -39
- 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 -6
- package/dist/v1/schema/value/regexp/syntax.js.map +0 -1
- package/dist/v1/schema/value/registry.d.ts +0 -22
- 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 +0 -59
- package/dist/v1/schema/value/resources/closure.js.map +0 -1
- package/dist/v1/schema/value/resources/recursion.d.ts +0 -6
- package/dist/v1/schema/value/resources/recursion.d.ts.map +0 -1
- package/dist/v1/schema/value/resources/recursion.js +0 -96
- 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 +0 -114
- package/dist/v1/schema/value/resources/registry.index.js.map +0 -1
- package/dist/v1/schema/value/schema.d.ts +0 -26
- package/dist/v1/schema/value/schema.d.ts.map +0 -1
- package/dist/v1/schema/value/schema.js +0 -13
- 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 +0 -22
- 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,4 @@
|
|
|
1
|
+
import type { Diagnostic } from '../../validation/diagnostic.js';
|
|
2
|
+
import type { JsonSchema } from '../model/schema.js';
|
|
3
|
+
/** Validate untrusted value-schema structure with the pinned generated meta-schema validator. */
|
|
4
|
+
export declare function validateValueSchemaMetaSchema(schema: JsonSchema, pointer: string): readonly Diagnostic[];
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { diagnostic } from '../../validation/diagnostic.js';
|
|
2
|
+
import validateMetaSchema from './meta-schema.compiled.js';
|
|
3
|
+
const validate = validateMetaSchema;
|
|
4
|
+
/** Validate untrusted value-schema structure with the pinned generated meta-schema validator. */
|
|
5
|
+
export function validateValueSchemaMetaSchema(schema, pointer) {
|
|
6
|
+
try {
|
|
7
|
+
if (validate(schema))
|
|
8
|
+
return [];
|
|
9
|
+
return (validate.errors ?? []).map((error) => diagnostic('VS_META_SCHEMA', `${pointer}${error.instancePath}`, `Astrale V1 value-schema meta-schema rejected the schema: ${error.message ?? error.keyword}.`));
|
|
10
|
+
}
|
|
11
|
+
catch (error) {
|
|
12
|
+
return [
|
|
13
|
+
diagnostic('VS_META_SCHEMA', pointer, `Astrale V1 value-schema meta-schema validation failed closed: ${errorMessage(error)}.`),
|
|
14
|
+
];
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function errorMessage(error) {
|
|
18
|
+
return error instanceof Error ? error.message : String(error);
|
|
19
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { Diagnostic } from '../../validation/diagnostic.js';
|
|
2
|
+
import type { JsonSchema, ValueSchemaContext } from '../model/schema.js';
|
|
3
|
+
export declare function validateSchemaProfile(schema: JsonSchema, context: ValueSchemaContext, pointer: string): readonly Diagnostic[];
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { json } from '@astrale-os/kernel-dsl/value';
|
|
2
|
+
import { diagnostic } from '../../validation/diagnostic.js';
|
|
3
|
+
import { blob, BLOB_VALUE_KIND } from '../model/blob.js';
|
|
4
|
+
import { isValueObject as isJsonObject } from '../model/object.js';
|
|
5
|
+
import { VALUE_SCHEMA_DIALECT } from '../model/schema.js';
|
|
6
|
+
import { isIRegexp } from '../regexp/syntax.js';
|
|
7
|
+
import { walkSchema } from '../syntax/walk.js';
|
|
8
|
+
import { FORBIDDEN_DYNAMIC_KEYWORDS, STANDARD_SCHEMA_KEYWORDS } from './vocabulary.js';
|
|
9
|
+
export function validateSchemaProfile(schema, context, pointer) {
|
|
10
|
+
const diagnostics = [];
|
|
11
|
+
walkSchema(schema, (location) => {
|
|
12
|
+
if (!isJsonObject(location.schema))
|
|
13
|
+
return;
|
|
14
|
+
const currentPointer = `${pointer}${location.pointer}`;
|
|
15
|
+
for (const keyword of Object.keys(location.schema)) {
|
|
16
|
+
if (!STANDARD_SCHEMA_KEYWORDS.has(keyword)) {
|
|
17
|
+
diagnostics.push(diagnostic('VS_KEYWORD_CLOSED', `${currentPointer}/${escapeToken(keyword)}`, `Keyword ${keyword} is outside the closed V1 Draft 2020-12 vocabulary.`));
|
|
18
|
+
}
|
|
19
|
+
if (FORBIDDEN_DYNAMIC_KEYWORDS.has(keyword)) {
|
|
20
|
+
diagnostics.push(diagnostic('VS_DYNAMIC_FORBIDDEN', `${currentPointer}/${escapeToken(keyword)}`, `Keyword ${keyword} is forbidden by V1.`));
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
if (Object.hasOwn(location.schema, '$schema')) {
|
|
24
|
+
if (location.depth !== 0 || location.schema.$schema !== VALUE_SCHEMA_DIALECT) {
|
|
25
|
+
diagnostics.push(diagnostic('VS_DIALECT', `${currentPointer}/$schema`, `Embedded-root $schema is optional, but when present must equal ${VALUE_SCHEMA_DIALECT}.`));
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
if (Object.hasOwn(location.schema, '$id')) {
|
|
29
|
+
diagnostics.push(diagnostic('VS_RESOURCE_ID', `${currentPointer}/$id`, '$id is forbidden in an embedded V1 value schema.'));
|
|
30
|
+
}
|
|
31
|
+
validateSemanticSets(location.schema, currentPointer, diagnostics);
|
|
32
|
+
validateValueKind(location.schema, context, location.depth, currentPointer, diagnostics);
|
|
33
|
+
validateRegexes(location.schema, currentPointer, diagnostics);
|
|
34
|
+
});
|
|
35
|
+
return diagnostics;
|
|
36
|
+
}
|
|
37
|
+
function validateValueKind(schema, context, depth, pointer, diagnostics) {
|
|
38
|
+
if (!Object.hasOwn(schema, 'x-astrale-value-kind'))
|
|
39
|
+
return;
|
|
40
|
+
if (schema['x-astrale-value-kind'] === BLOB_VALUE_KIND) {
|
|
41
|
+
if (context !== 'property-facet' || depth !== 0 || !isCanonicalBlobSchema(schema)) {
|
|
42
|
+
diagnostics.push(diagnostic('VS_VALUE_KIND', `${pointer}/x-astrale-value-kind`, 'blob must be the exact schema.values.blob output at the root of a Node property.'));
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
else if (schema['x-astrale-value-kind'] !== 'instant' || schema.type !== 'string') {
|
|
46
|
+
diagnostics.push(diagnostic('VS_VALUE_KIND', `${pointer}/x-astrale-value-kind`, 'x-astrale-value-kind is exactly instant and requires type string at the same schema location.'));
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
function isCanonicalBlobSchema(input) {
|
|
50
|
+
const properties = input.properties;
|
|
51
|
+
if (!isJsonObject(properties))
|
|
52
|
+
return false;
|
|
53
|
+
const size = properties.size;
|
|
54
|
+
const mediaType = properties.mediaType;
|
|
55
|
+
if (!isJsonObject(size) || !isJsonObject(mediaType))
|
|
56
|
+
return false;
|
|
57
|
+
const maxBytes = size.maximum;
|
|
58
|
+
if (typeof maxBytes !== 'number' || !Number.isSafeInteger(maxBytes) || maxBytes < 1) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
const mediaTypes = mediaType.enum;
|
|
62
|
+
if (mediaTypes !== undefined && (!Array.isArray(mediaTypes) || !mediaTypes.every(isString))) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
try {
|
|
66
|
+
return (json.serialize(input) ===
|
|
67
|
+
json.serialize(blob({ maxBytes, ...(mediaTypes === undefined ? {} : { mediaTypes }) })));
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
function isString(input) {
|
|
74
|
+
return typeof input === 'string';
|
|
75
|
+
}
|
|
76
|
+
function validateSemanticSets(schema, pointer, diagnostics) {
|
|
77
|
+
if (Array.isArray(schema.type)) {
|
|
78
|
+
rejectPrimitiveDuplicates(schema.type, `${pointer}/type`, 'type', diagnostics);
|
|
79
|
+
}
|
|
80
|
+
if (Array.isArray(schema.required)) {
|
|
81
|
+
rejectPrimitiveDuplicates(schema.required, `${pointer}/required`, 'required', diagnostics);
|
|
82
|
+
}
|
|
83
|
+
if (Array.isArray(schema.enum)) {
|
|
84
|
+
rejectCanonicalDuplicates(schema.enum, `${pointer}/enum`, 'enum', diagnostics);
|
|
85
|
+
}
|
|
86
|
+
if (isJsonObject(schema.dependentRequired)) {
|
|
87
|
+
for (const [name, dependencies] of Object.entries(schema.dependentRequired)) {
|
|
88
|
+
if (Array.isArray(dependencies)) {
|
|
89
|
+
rejectPrimitiveDuplicates(dependencies, `${pointer}/dependentRequired/${escapeToken(name)}`, 'dependentRequired', diagnostics);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
function validateRegexes(schema, pointer, diagnostics) {
|
|
95
|
+
if (Object.hasOwn(schema, 'fullMatch') && typeof schema.fullMatch !== 'string') {
|
|
96
|
+
diagnostics.push(diagnostic('VS_META_SCHEMA', `${pointer}/fullMatch`, 'fullMatch must be an I-Regexp source string.'));
|
|
97
|
+
}
|
|
98
|
+
if (typeof schema.fullMatch === 'string' && !isIRegexp(schema.fullMatch)) {
|
|
99
|
+
diagnostics.push(diagnostic('VS_REGEX_PORTABLE', `${pointer}/fullMatch`, 'fullMatch must satisfy the complete RFC 9485 I-Regexp syntax.'));
|
|
100
|
+
}
|
|
101
|
+
if (typeof schema.pattern === 'string' && !isIRegexp(schema.pattern)) {
|
|
102
|
+
diagnostics.push(diagnostic('VS_REGEX_PORTABLE', `${pointer}/pattern`, 'pattern must satisfy the complete RFC 9485 I-Regexp syntax.'));
|
|
103
|
+
}
|
|
104
|
+
if (isJsonObject(schema.patternProperties)) {
|
|
105
|
+
for (const pattern of Object.keys(schema.patternProperties)) {
|
|
106
|
+
if (!isIRegexp(pattern)) {
|
|
107
|
+
diagnostics.push(diagnostic('VS_REGEX_PORTABLE', `${pointer}/patternProperties/${escapeToken(pattern)}`, 'patternProperties keys must satisfy RFC 9485 I-Regexp syntax.'));
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
function rejectPrimitiveDuplicates(values, pointer, name, diagnostics) {
|
|
113
|
+
const seen = new Set();
|
|
114
|
+
for (const value of values) {
|
|
115
|
+
if (seen.has(value)) {
|
|
116
|
+
diagnostics.push(diagnostic('VS_META_SCHEMA', pointer, `${name} is a duplicate-free semantic set.`));
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
seen.add(value);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
function rejectCanonicalDuplicates(values, pointer, name, diagnostics) {
|
|
123
|
+
const seen = new Set();
|
|
124
|
+
for (const value of values) {
|
|
125
|
+
let key;
|
|
126
|
+
try {
|
|
127
|
+
key = json.serialize(value);
|
|
128
|
+
}
|
|
129
|
+
catch {
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
if (seen.has(key)) {
|
|
133
|
+
diagnostics.push(diagnostic('VS_META_SCHEMA', pointer, `${name} rejects canonically equal duplicates.`));
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
seen.add(key);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
function escapeToken(value) {
|
|
140
|
+
return value.replaceAll('~', '~0').replaceAll('/', '~1');
|
|
141
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Diagnostic } from '../../validation/diagnostic.js';
|
|
2
|
+
import type { JsonSchema, ValueSchemaContext } from '../model/schema.js';
|
|
3
|
+
import type { ValueSchemaRegistry } from '../reference/registry.js';
|
|
4
|
+
export declare function validateValueSchema(schema: JsonSchema, context: ValueSchemaContext, registry: ValueSchemaRegistry, pointer?: string): Diagnostic[];
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { compareUnicode } from '../../../addressing/ordering.js';
|
|
2
|
+
import { collectResourceClosure } from '../reference/closure.js';
|
|
3
|
+
import { validateProductiveRecursion } from '../reference/recursion.js';
|
|
4
|
+
import { hasNodeDefinition, indexRegistry } from '../reference/registry.index.js';
|
|
5
|
+
import { GRAPH_NODE_PATH_SCHEMA_ID } from '../syntax/node-path/schema.js';
|
|
6
|
+
import { validateNodePathExtension } from '../syntax/node-path/validate.js';
|
|
7
|
+
import { validateCanonicalJsonDomain } from './json.validate.js';
|
|
8
|
+
import { validateValueSchemaMetaSchema } from './meta-schema.js';
|
|
9
|
+
import { validateSchemaProfile } from './rules.js';
|
|
10
|
+
export function validateValueSchema(schema, context, registry, pointer = '') {
|
|
11
|
+
const diagnostics = [];
|
|
12
|
+
diagnostics.push(...validateCanonicalJsonDomain(schema, pointer));
|
|
13
|
+
const indexed = indexRegistry(registry, pointer);
|
|
14
|
+
diagnostics.push(...indexed.diagnostics);
|
|
15
|
+
const closure = collectResourceClosure(schema, context, indexed.index, pointer);
|
|
16
|
+
diagnostics.push(...closure.diagnostics);
|
|
17
|
+
for (const resource of closure.resources.values()) {
|
|
18
|
+
// The Core-owned graph locator artifact is admitted exactly by indexRegistry. It participates
|
|
19
|
+
// in instance evaluation, but it is not an embedded V1 value-schema resource.
|
|
20
|
+
if (resource.key === GRAPH_NODE_PATH_SCHEMA_ID)
|
|
21
|
+
continue;
|
|
22
|
+
const resourcePointer = resource.diagnosticPointer ?? pointer;
|
|
23
|
+
diagnostics.push(...validateValueSchemaMetaSchema(resource.schema, resourcePointer));
|
|
24
|
+
diagnostics.push(...validateCanonicalJsonDomain(resource.schema, resourcePointer));
|
|
25
|
+
diagnostics.push(...validateSchemaProfile(resource.schema, context, resourcePointer));
|
|
26
|
+
diagnostics.push(...validateNodePathExtension(resource.schema, context, resourcePointer, (ref) => hasNodeDefinition(indexed.index, ref, resource.ownerOrigin)));
|
|
27
|
+
}
|
|
28
|
+
diagnostics.push(...validateProductiveRecursion(closure.resources, closure.resolutions));
|
|
29
|
+
return orderAndDeduplicate(diagnostics);
|
|
30
|
+
}
|
|
31
|
+
function orderAndDeduplicate(diagnostics) {
|
|
32
|
+
const unique = new Map();
|
|
33
|
+
for (const value of diagnostics) {
|
|
34
|
+
unique.set(`${value.pointer}\u0000${value.code}\u0000${value.ref ?? ''}\u0000${value.message}`, value);
|
|
35
|
+
}
|
|
36
|
+
return [...unique.values()].sort((left, right) => compareUnicode(left.pointer, right.pointer) ||
|
|
37
|
+
compareUnicode(left.code, right.code) ||
|
|
38
|
+
compareUnicode(left.message, right.message));
|
|
39
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
export const STANDARD_SCHEMA_KEYWORDS = new Set([
|
|
2
|
+
'$anchor',
|
|
3
|
+
'$comment',
|
|
4
|
+
'$defs',
|
|
5
|
+
'$dynamicAnchor',
|
|
6
|
+
'$dynamicRef',
|
|
7
|
+
'$id',
|
|
8
|
+
'$ref',
|
|
9
|
+
'$schema',
|
|
10
|
+
'$vocabulary',
|
|
11
|
+
'additionalProperties',
|
|
12
|
+
'allOf',
|
|
13
|
+
'anyOf',
|
|
14
|
+
'const',
|
|
15
|
+
'contains',
|
|
16
|
+
'contentEncoding',
|
|
17
|
+
'contentMediaType',
|
|
18
|
+
'contentSchema',
|
|
19
|
+
'default',
|
|
20
|
+
'dependentRequired',
|
|
21
|
+
'dependentSchemas',
|
|
22
|
+
'deprecated',
|
|
23
|
+
'description',
|
|
24
|
+
'else',
|
|
25
|
+
'enum',
|
|
26
|
+
'examples',
|
|
27
|
+
'exclusiveMaximum',
|
|
28
|
+
'exclusiveMinimum',
|
|
29
|
+
'format',
|
|
30
|
+
'fullMatch',
|
|
31
|
+
'if',
|
|
32
|
+
'items',
|
|
33
|
+
'maxContains',
|
|
34
|
+
'maximum',
|
|
35
|
+
'maxItems',
|
|
36
|
+
'maxLength',
|
|
37
|
+
'maxProperties',
|
|
38
|
+
'minContains',
|
|
39
|
+
'minimum',
|
|
40
|
+
'minItems',
|
|
41
|
+
'minLength',
|
|
42
|
+
'minProperties',
|
|
43
|
+
'multipleOf',
|
|
44
|
+
'not',
|
|
45
|
+
'oneOf',
|
|
46
|
+
'pattern',
|
|
47
|
+
'patternProperties',
|
|
48
|
+
'prefixItems',
|
|
49
|
+
'properties',
|
|
50
|
+
'propertyNames',
|
|
51
|
+
'readOnly',
|
|
52
|
+
'required',
|
|
53
|
+
'then',
|
|
54
|
+
'title',
|
|
55
|
+
'type',
|
|
56
|
+
'unevaluatedItems',
|
|
57
|
+
'unevaluatedProperties',
|
|
58
|
+
'uniqueItems',
|
|
59
|
+
'writeOnly',
|
|
60
|
+
'x-astrale-path',
|
|
61
|
+
'x-astrale-value-kind',
|
|
62
|
+
]);
|
|
63
|
+
export const FORBIDDEN_DYNAMIC_KEYWORDS = new Set([
|
|
64
|
+
'$anchor',
|
|
65
|
+
'$dynamicAnchor',
|
|
66
|
+
'$dynamicRef',
|
|
67
|
+
'$vocabulary',
|
|
68
|
+
]);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Diagnostic } from '../../validation/diagnostic.js';
|
|
2
|
+
import type { JsonSchema, ValueSchemaContext } from '../model/schema.js';
|
|
3
|
+
import type { RegistryIndex } from './registry.index.js';
|
|
4
|
+
import { type ResolvedAddressReference, type SchemaResource } from './references.js';
|
|
5
|
+
export interface ValueSchemaResourceClosure {
|
|
6
|
+
readonly resources: ReadonlyMap<string, SchemaResource>;
|
|
7
|
+
readonly resolutions: ReadonlyMap<string, ResolvedAddressReference>;
|
|
8
|
+
readonly diagnostics: readonly Diagnostic[];
|
|
9
|
+
}
|
|
10
|
+
export declare function collectResourceClosure(schema: JsonSchema, context: ValueSchemaContext, index: RegistryIndex, pointer: string): ValueSchemaResourceClosure;
|
|
11
|
+
export declare function locationKey(resourceKey: string, pointer: string): string;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { diagnostic } from '../../validation/diagnostic.js';
|
|
2
|
+
import { isValueObject as isJsonObject } from '../model/object.js';
|
|
3
|
+
import { hasNodePathAnnotation } from '../syntax/node-path/schema.js';
|
|
4
|
+
import { walkSchema } from '../syntax/walk.js';
|
|
5
|
+
import { resolveAddressReference, } from './references.js';
|
|
6
|
+
export function collectResourceClosure(schema, context, index, pointer) {
|
|
7
|
+
const diagnostics = [];
|
|
8
|
+
const resources = new Map();
|
|
9
|
+
const resolutions = new Map();
|
|
10
|
+
const initial = {
|
|
11
|
+
key: `urn:astrale:dsl:v1:embedded:${context}`,
|
|
12
|
+
schema,
|
|
13
|
+
ownerOrigin: index.registry.current.origin,
|
|
14
|
+
diagnosticPointer: pointer,
|
|
15
|
+
};
|
|
16
|
+
resources.set(initial.key, initial);
|
|
17
|
+
const queue = [initial];
|
|
18
|
+
while (queue.length > 0) {
|
|
19
|
+
const resource = queue.shift();
|
|
20
|
+
if (resource === undefined)
|
|
21
|
+
break;
|
|
22
|
+
walkSchema(resource.schema, (location) => {
|
|
23
|
+
if (!isJsonObject(location.schema) || !Object.hasOwn(location.schema, '$ref'))
|
|
24
|
+
return;
|
|
25
|
+
const refPointer = `${resource.diagnosticPointer ?? pointer}${location.pointer}/$ref`;
|
|
26
|
+
if (typeof location.schema.$ref !== 'string') {
|
|
27
|
+
diagnostics.push(diagnostic('VS_REFERENCE_FORM', refPointer, '$ref must be a string URI-reference.'));
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const result = resolveAddressReference(location.schema.$ref, resource, index, refPointer, hasNodePathAnnotation(location.schema));
|
|
31
|
+
if (result.diagnostic !== undefined)
|
|
32
|
+
diagnostics.push(result.diagnostic);
|
|
33
|
+
if (result.resolved === undefined)
|
|
34
|
+
return;
|
|
35
|
+
resolutions.set(locationKey(resource.key, location.pointer), result.resolved);
|
|
36
|
+
const target = result.resolved.resource;
|
|
37
|
+
if (resources.has(target.key))
|
|
38
|
+
return;
|
|
39
|
+
const registered = {
|
|
40
|
+
...target,
|
|
41
|
+
diagnosticPointer: `${pointer}/registry/graphNodePath`,
|
|
42
|
+
};
|
|
43
|
+
resources.set(target.key, registered);
|
|
44
|
+
queue.push(registered);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
return { resources, resolutions, diagnostics };
|
|
48
|
+
}
|
|
49
|
+
export function locationKey(resourceKey, pointer) {
|
|
50
|
+
return `${resourceKey}\u0000${pointer}`;
|
|
51
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Diagnostic } from '../../validation/diagnostic.js';
|
|
2
|
+
import type { ResolvedAddressReference, SchemaResource } from './references.js';
|
|
3
|
+
export declare const CONSUMING_SCHEMA_KEYWORDS: Set<string>;
|
|
4
|
+
export declare const NON_CONSUMING_SCHEMA_KEYWORDS: Set<string>;
|
|
5
|
+
export declare function validateProductiveRecursion(resources: ReadonlyMap<string, SchemaResource>, resolutions: ReadonlyMap<string, ResolvedAddressReference>): readonly Diagnostic[];
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { diagnostic } from '../../validation/diagnostic.js';
|
|
2
|
+
import { isValueObject as isJsonObject } from '../model/object.js';
|
|
3
|
+
import { SCHEMA_ARRAY_KEYWORDS, SCHEMA_MAP_KEYWORDS, SCHEMA_SINGLE_KEYWORDS, } from '../syntax/keywords.js';
|
|
4
|
+
import { appendPointer } from '../syntax/pointer.js';
|
|
5
|
+
import { isJsonSchema, walkSchema } from '../syntax/walk.js';
|
|
6
|
+
import { locationKey } from './closure.js';
|
|
7
|
+
export const CONSUMING_SCHEMA_KEYWORDS = new Set([
|
|
8
|
+
'additionalProperties',
|
|
9
|
+
'contains',
|
|
10
|
+
'items',
|
|
11
|
+
'patternProperties',
|
|
12
|
+
'prefixItems',
|
|
13
|
+
'properties',
|
|
14
|
+
'propertyNames',
|
|
15
|
+
'unevaluatedItems',
|
|
16
|
+
'unevaluatedProperties',
|
|
17
|
+
]);
|
|
18
|
+
export const NON_CONSUMING_SCHEMA_KEYWORDS = new Set([
|
|
19
|
+
'$defs',
|
|
20
|
+
'allOf',
|
|
21
|
+
'anyOf',
|
|
22
|
+
'dependentSchemas',
|
|
23
|
+
'else',
|
|
24
|
+
'if',
|
|
25
|
+
'not',
|
|
26
|
+
'oneOf',
|
|
27
|
+
'then',
|
|
28
|
+
]);
|
|
29
|
+
export function validateProductiveRecursion(resources, resolutions) {
|
|
30
|
+
const adjacency = new Map();
|
|
31
|
+
const diagnosticPointers = new Map();
|
|
32
|
+
for (const resource of resources.values()) {
|
|
33
|
+
walkSchema(resource.schema, (location) => {
|
|
34
|
+
const source = locationKey(resource.key, location.pointer);
|
|
35
|
+
diagnosticPointers.set(source, `${resource.diagnosticPointer ?? ''}${location.pointer}`);
|
|
36
|
+
const outgoing = adjacency.get(source) ?? new Set();
|
|
37
|
+
adjacency.set(source, outgoing);
|
|
38
|
+
if (!isJsonObject(location.schema))
|
|
39
|
+
return;
|
|
40
|
+
const ref = resolutions.get(source);
|
|
41
|
+
if (ref !== undefined)
|
|
42
|
+
outgoing.add(locationKey(ref.resource.key, ref.pointer));
|
|
43
|
+
for (const [keyword, value] of Object.entries(location.schema)) {
|
|
44
|
+
if (!NON_CONSUMING_SCHEMA_KEYWORDS.has(keyword))
|
|
45
|
+
continue;
|
|
46
|
+
const keywordPointer = appendPointer(location.pointer, keyword);
|
|
47
|
+
if (SCHEMA_SINGLE_KEYWORDS.has(keyword) && isJsonSchema(value)) {
|
|
48
|
+
outgoing.add(locationKey(resource.key, keywordPointer));
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
if (SCHEMA_ARRAY_KEYWORDS.has(keyword) && Array.isArray(value)) {
|
|
52
|
+
value.forEach((entry, index) => {
|
|
53
|
+
if (isJsonSchema(entry)) {
|
|
54
|
+
outgoing.add(locationKey(resource.key, appendPointer(keywordPointer, index)));
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
if (SCHEMA_MAP_KEYWORDS.has(keyword) && isJsonObject(value)) {
|
|
60
|
+
for (const [name, entry] of Object.entries(value)) {
|
|
61
|
+
if (isJsonSchema(entry)) {
|
|
62
|
+
outgoing.add(locationKey(resource.key, appendPointer(keywordPointer, name)));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
const visiting = new Set();
|
|
70
|
+
const visited = new Set();
|
|
71
|
+
for (const node of adjacency.keys()) {
|
|
72
|
+
const cycleAt = findCycle(node, adjacency, visiting, visited);
|
|
73
|
+
if (cycleAt !== undefined) {
|
|
74
|
+
return [
|
|
75
|
+
diagnostic('VS_RECURSION_PRODUCTIVE', diagnosticPointers.get(cycleAt) ?? '', 'Every recursive cycle must cross an instance-consuming schema edge.'),
|
|
76
|
+
];
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return [];
|
|
80
|
+
}
|
|
81
|
+
function findCycle(node, adjacency, visiting, visited) {
|
|
82
|
+
if (visiting.has(node))
|
|
83
|
+
return node;
|
|
84
|
+
if (visited.has(node))
|
|
85
|
+
return undefined;
|
|
86
|
+
visiting.add(node);
|
|
87
|
+
for (const target of adjacency.get(node) ?? []) {
|
|
88
|
+
const cycleAt = findCycle(target, adjacency, visiting, visited);
|
|
89
|
+
if (cycleAt !== undefined)
|
|
90
|
+
return cycleAt;
|
|
91
|
+
}
|
|
92
|
+
visiting.delete(node);
|
|
93
|
+
visited.add(node);
|
|
94
|
+
return undefined;
|
|
95
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Diagnostic } from '../../validation/diagnostic.js';
|
|
2
|
+
import type { JsonSchema } from '../model/schema.js';
|
|
3
|
+
import type { RegistryIndex } from './registry.index.js';
|
|
4
|
+
export interface SchemaResource {
|
|
5
|
+
readonly key: string;
|
|
6
|
+
readonly schema: JsonSchema;
|
|
7
|
+
readonly ownerOrigin: string;
|
|
8
|
+
readonly diagnosticPointer?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface ResolvedAddressReference {
|
|
11
|
+
readonly resource: SchemaResource;
|
|
12
|
+
readonly pointer: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function resolveAddressReference(ref: string, from: SchemaResource, index: RegistryIndex, pointer: string, nodePathPlacement: boolean): {
|
|
15
|
+
readonly resolved?: ResolvedAddressReference;
|
|
16
|
+
readonly diagnostic?: Diagnostic;
|
|
17
|
+
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { diagnostic } from '../../validation/diagnostic.js';
|
|
2
|
+
import { GRAPH_NODE_PATH_SCHEMA_ID } from '../syntax/node-path/schema.js';
|
|
3
|
+
import { parseJsonPointerFragment, resolvePointer, tokensToPointer } from '../syntax/pointer.js';
|
|
4
|
+
import { collectSchemaPointers } from '../syntax/walk.js';
|
|
5
|
+
export function resolveAddressReference(ref, from, index, pointer, nodePathPlacement) {
|
|
6
|
+
if (ref === GRAPH_NODE_PATH_SCHEMA_ID) {
|
|
7
|
+
if (!nodePathPlacement) {
|
|
8
|
+
return {
|
|
9
|
+
diagnostic: diagnostic('VS_REFERENCE_FORM', pointer, 'The graph NodePath schema may be referenced only beside a valid x-astrale-path annotation.', ref),
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
return {
|
|
13
|
+
resolved: {
|
|
14
|
+
resource: {
|
|
15
|
+
key: GRAPH_NODE_PATH_SCHEMA_ID,
|
|
16
|
+
schema: index.registry.graphNodePath,
|
|
17
|
+
ownerOrigin: from.ownerOrigin,
|
|
18
|
+
},
|
|
19
|
+
pointer: '',
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
if (ref.startsWith('#')) {
|
|
24
|
+
const tokens = parseJsonPointerFragment(ref);
|
|
25
|
+
if (tokens === undefined) {
|
|
26
|
+
return {
|
|
27
|
+
diagnostic: diagnostic('VS_REFERENCE_FORM', pointer, 'A local $ref must be a JSON Pointer fragment; anchors are forbidden.', ref),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
return resolveTarget(from, tokens, pointer, ref);
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
diagnostic: diagnostic('VS_REFERENCE_FORM', pointer, 'A $ref must be a local JSON Pointer or the graph NodePath id at its extension site.', ref),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
function resolveTarget(resource, tokens, diagnosticPointer, ref) {
|
|
37
|
+
const target = resolvePointer(resource.schema, tokens);
|
|
38
|
+
const pointer = tokensToPointer(tokens);
|
|
39
|
+
if (target === undefined || !collectSchemaPointers(resource.schema).has(pointer)) {
|
|
40
|
+
return {
|
|
41
|
+
diagnostic: diagnostic('VS_REFERENCE_RESOLUTION', diagnosticPointer, 'The $ref does not resolve to an exact schema location in the registry.', ref),
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
return { resolved: { resource, pointer } };
|
|
45
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ClassRef } from '../../../addressing/index.js';
|
|
2
|
+
import type { JsonSchema } from '../model/schema.js';
|
|
3
|
+
export interface ValueSchemaDependency {
|
|
4
|
+
readonly origin: string;
|
|
5
|
+
readonly revision: `sha256:${string}`;
|
|
6
|
+
}
|
|
7
|
+
export interface ValueSchemaDomainRegistry {
|
|
8
|
+
readonly origin: string;
|
|
9
|
+
readonly revision?: `sha256:${string}`;
|
|
10
|
+
readonly dependencies: readonly ValueSchemaDependency[];
|
|
11
|
+
readonly nodeDefinitions: readonly ClassRef[];
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* The exact closure visible while validating one DomainSchema.
|
|
15
|
+
*
|
|
16
|
+
* The exact closure is present, but each resource may see only its owning
|
|
17
|
+
* Domain and that owner's exact direct dependency pins.
|
|
18
|
+
*/
|
|
19
|
+
export interface ValueSchemaRegistry {
|
|
20
|
+
readonly current: ValueSchemaDomainRegistry;
|
|
21
|
+
readonly directDependencies: readonly ValueSchemaDomainRegistry[];
|
|
22
|
+
readonly transitiveDependencies: readonly ValueSchemaDomainRegistry[];
|
|
23
|
+
readonly graphNodePath: JsonSchema;
|
|
24
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ClassRef } from '../../../addressing/index.js';
|
|
2
|
+
import type { Diagnostic } from '../../validation/diagnostic.js';
|
|
3
|
+
import type { ValueSchemaDomainRegistry, ValueSchemaRegistry } from './registry.js';
|
|
4
|
+
export interface RegistryIndex {
|
|
5
|
+
readonly registry: ValueSchemaRegistry;
|
|
6
|
+
readonly domains: ReadonlyMap<string, ValueSchemaDomainRegistry>;
|
|
7
|
+
readonly dependenciesByOwner: ReadonlyMap<string, ReadonlyMap<string, string>>;
|
|
8
|
+
}
|
|
9
|
+
export declare function indexRegistry(registry: ValueSchemaRegistry, pointer: string): {
|
|
10
|
+
readonly index: RegistryIndex;
|
|
11
|
+
readonly diagnostics: readonly Diagnostic[];
|
|
12
|
+
};
|
|
13
|
+
export declare function isOriginVisibleFrom(index: RegistryIndex, ownerOrigin: string, targetOrigin: string): boolean;
|
|
14
|
+
export declare function hasNodeDefinition(index: RegistryIndex, ref: ClassRef, ownerOrigin: string): boolean;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { definitionRefIndex } from '../../../addressing/ordering.js';
|
|
2
|
+
import { DOMAIN_ORIGIN_PATTERN, DOMAIN_REVISION_PATTERN } from '../../../addressing/patterns.js';
|
|
3
|
+
import { diagnostic } from '../../validation/diagnostic.js';
|
|
4
|
+
import { isValueObject as isJsonObject } from '../model/object.js';
|
|
5
|
+
import { JSON_SCHEMA_DIALECT } from '../model/schema.js';
|
|
6
|
+
import { GRAPH_NODE_PATH_SCHEMA_ID } from '../syntax/node-path/schema.js';
|
|
7
|
+
export function indexRegistry(registry, pointer) {
|
|
8
|
+
const diagnostics = [];
|
|
9
|
+
const domains = new Map();
|
|
10
|
+
domains.set(registry.current.origin, registry.current);
|
|
11
|
+
validateDomainRegistry(registry.current, `${pointer}/registry/current`, false, diagnostics);
|
|
12
|
+
const dependencies = [
|
|
13
|
+
...registry.directDependencies.map((domain) => ({ domain, lane: 'directDependencies' })),
|
|
14
|
+
...registry.transitiveDependencies.map((domain) => ({
|
|
15
|
+
domain,
|
|
16
|
+
lane: 'transitiveDependencies',
|
|
17
|
+
})),
|
|
18
|
+
];
|
|
19
|
+
dependencies.forEach(({ domain, lane }, index) => {
|
|
20
|
+
const domainPointer = `${pointer}/registry/${lane}/${index}`;
|
|
21
|
+
validateDomainRegistry(domain, domainPointer, true, diagnostics);
|
|
22
|
+
if (domain.origin === registry.current.origin || domains.has(domain.origin)) {
|
|
23
|
+
diagnostics.push(diagnostic('VS_REFERENCE_RESOLUTION', domainPointer, `Registry origin ${domain.origin} is duplicated in the exact closure.`));
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
domains.set(domain.origin, domain);
|
|
27
|
+
});
|
|
28
|
+
const dependenciesByOwner = new Map();
|
|
29
|
+
for (const domain of domains.values()) {
|
|
30
|
+
const pins = new Map(domain.dependencies.map((dependency) => [dependency.origin, dependency.revision]));
|
|
31
|
+
dependenciesByOwner.set(domain.origin, pins);
|
|
32
|
+
for (const dependency of domain.dependencies) {
|
|
33
|
+
const target = domains.get(dependency.origin);
|
|
34
|
+
if (target === undefined || target.revision !== dependency.revision) {
|
|
35
|
+
diagnostics.push(diagnostic('VS_REFERENCE_RESOLUTION', `${pointer}/registry/${domain.origin}/dependencies`, `Registry closure is missing exact ${dependency.origin}@${dependency.revision} required by ${domain.origin}.`));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
validateGraphNodePathResource(registry.graphNodePath, `${pointer}/registry/graphNodePath`, diagnostics);
|
|
40
|
+
return { index: { registry, domains, dependenciesByOwner }, diagnostics };
|
|
41
|
+
}
|
|
42
|
+
export function isOriginVisibleFrom(index, ownerOrigin, targetOrigin) {
|
|
43
|
+
return (ownerOrigin === targetOrigin ||
|
|
44
|
+
index.dependenciesByOwner.get(ownerOrigin)?.has(targetOrigin) === true);
|
|
45
|
+
}
|
|
46
|
+
export function hasNodeDefinition(index, ref, ownerOrigin) {
|
|
47
|
+
if (!isOriginVisibleFrom(index, ownerOrigin, ref.origin))
|
|
48
|
+
return false;
|
|
49
|
+
return (index.domains
|
|
50
|
+
.get(ref.origin)
|
|
51
|
+
?.nodeDefinitions.some((candidate) => definitionRefIndex(candidate) === definitionRefIndex(ref)) === true);
|
|
52
|
+
}
|
|
53
|
+
function validateDomainRegistry(domain, pointer, revisionRequired, diagnostics) {
|
|
54
|
+
if (!DOMAIN_ORIGIN_PATTERN.test(domain.origin)) {
|
|
55
|
+
diagnostics.push(diagnostic('VS_REFERENCE_RESOLUTION', `${pointer}/origin`, 'Registry origin is invalid.'));
|
|
56
|
+
}
|
|
57
|
+
if ((revisionRequired && domain.revision === undefined) ||
|
|
58
|
+
(domain.revision !== undefined && !DOMAIN_REVISION_PATTERN.test(domain.revision))) {
|
|
59
|
+
diagnostics.push(diagnostic('VS_REFERENCE_RESOLUTION', `${pointer}/revision`, 'A dependency-closure registry entry requires its exact sha256 revision.'));
|
|
60
|
+
}
|
|
61
|
+
for (const ref of domain.nodeDefinitions) {
|
|
62
|
+
if (ref.origin !== domain.origin) {
|
|
63
|
+
diagnostics.push(diagnostic('VS_REFERENCE_RESOLUTION', `${pointer}/nodeDefinitions`, 'A registry domain can list only its own Node Definitions.'));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
function validateGraphNodePathResource(schema, pointer, diagnostics) {
|
|
68
|
+
if (!isJsonObject(schema) ||
|
|
69
|
+
schema.$schema !== JSON_SCHEMA_DIALECT ||
|
|
70
|
+
schema.$id !== GRAPH_NODE_PATH_SCHEMA_ID ||
|
|
71
|
+
schema.type !== 'string' ||
|
|
72
|
+
schema.minLength !== 1 ||
|
|
73
|
+
schema.format !== 'astrale-node-path-v1') {
|
|
74
|
+
diagnostics.push(diagnostic('VS_REFERENCE_RESOLUTION', pointer, `The graph NodePath artifact must be preloaded under exact id ${GRAPH_NODE_PATH_SCHEMA_ID}.`, GRAPH_NODE_PATH_SCHEMA_ID));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|