@astrale-os/kernel-protocol 0.5.0-beta.5 → 0.5.0-beta.51
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/artifact/index.d.ts +0 -1
- package/dist/artifact/index.js +0 -1
- package/dist/artifact/ref.d.ts +0 -1
- package/dist/artifact/ref.js +0 -1
- package/dist/codecs/codec.d.ts +0 -1
- package/dist/codecs/codec.js +0 -1
- package/dist/codecs/index.d.ts +0 -1
- package/dist/codecs/index.js +0 -1
- package/dist/codecs/json.d.ts +0 -1
- package/dist/codecs/json.js +0 -1
- package/dist/codecs/media-types.d.ts +0 -1
- package/dist/codecs/media-types.js +0 -1
- package/dist/codecs/msgpack.d.ts +0 -1
- package/dist/codecs/msgpack.js +1 -5
- package/dist/errors/codes.d.ts +0 -1
- package/dist/errors/codes.js +0 -1
- package/dist/errors/http-status.d.ts +0 -1
- package/dist/errors/http-status.js +0 -1
- package/dist/errors/index.d.ts +0 -1
- package/dist/errors/index.js +0 -1
- package/dist/errors/payload.d.ts +0 -1
- package/dist/errors/payload.js +3 -3
- package/dist/errors/protocol-error.d.ts +0 -1
- package/dist/errors/protocol-error.js +4 -3
- package/dist/errors/reason.d.ts +0 -1
- package/dist/errors/reason.js +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -1
- package/dist/invocation/admission.d.ts +0 -1
- package/dist/invocation/admission.js +2 -6
- package/dist/invocation/binary.d.ts +1 -1
- package/dist/invocation/binary.js +14 -2
- package/dist/invocation/binding-codecs.d.ts +0 -1
- package/dist/invocation/binding-codecs.js +0 -1
- package/dist/invocation/cancellation.d.ts +0 -1
- package/dist/invocation/cancellation.js +0 -1
- package/dist/invocation/correlation.d.ts +0 -1
- package/dist/invocation/correlation.js +0 -1
- package/dist/invocation/delegate.d.ts +0 -1
- package/dist/invocation/delegate.js +0 -1
- package/dist/invocation/http/binary.d.ts +3 -2
- package/dist/invocation/http/binary.js +4 -2
- package/dist/invocation/http/index.d.ts +1 -2
- package/dist/invocation/http/index.js +1 -2
- package/dist/invocation/http/negotiation.d.ts +0 -1
- package/dist/invocation/http/negotiation.js +0 -1
- package/dist/invocation/http/stream.d.ts +0 -1
- package/dist/invocation/http/stream.js +0 -1
- package/dist/invocation/http/trace.d.ts +0 -1
- package/dist/invocation/http/trace.js +0 -1
- package/dist/invocation/idempotency.d.ts +0 -1
- package/dist/invocation/idempotency.js +0 -1
- package/dist/invocation/identity.d.ts +0 -1
- package/dist/invocation/identity.js +0 -1
- package/dist/invocation/index.d.ts +2 -3
- package/dist/invocation/index.js +2 -3
- package/dist/invocation/miss.d.ts +0 -1
- package/dist/invocation/miss.js +0 -1
- package/dist/invocation/redirect.d.ts +0 -1
- package/dist/invocation/redirect.js +0 -1
- package/dist/invocation/request.d.ts +0 -1
- package/dist/invocation/request.js +0 -1
- package/dist/invocation/response.d.ts +0 -1
- package/dist/invocation/response.js +0 -1
- package/dist/invocation/routing.d.ts +0 -1
- package/dist/invocation/routing.js +0 -1
- package/dist/invocation/schema.d.ts +1 -2
- package/dist/invocation/schema.js +0 -1
- package/dist/invocation/service-reason.d.ts +3 -11
- package/dist/invocation/service-reason.js +0 -12
- package/dist/invocation/stale-route.d.ts +0 -1
- package/dist/invocation/stale-route.js +0 -1
- package/dist/invocation/stream.d.ts +0 -1
- package/dist/invocation/stream.js +0 -1
- package/dist/invocation/target.d.ts +2 -3
- package/dist/invocation/target.js +17 -3
- package/dist/invocation/trace.d.ts +0 -1
- package/dist/invocation/trace.js +0 -1
- package/dist/invocation/version.d.ts +0 -1
- package/dist/invocation/version.js +0 -1
- package/dist/invocation/websocket/binary.d.ts +0 -1
- package/dist/invocation/websocket/binary.js +2 -2
- package/dist/invocation/websocket/index.d.ts +0 -1
- package/dist/invocation/websocket/index.js +0 -1
- package/dist/invocation/websocket/subprotocol.d.ts +0 -1
- package/dist/invocation/websocket/subprotocol.js +0 -1
- package/dist/issuer/configuration.d.ts +0 -1
- package/dist/issuer/configuration.js +0 -1
- package/dist/issuer/error.d.ts +0 -1
- package/dist/issuer/error.js +0 -1
- package/dist/issuer/exchange.d.ts +0 -1
- package/dist/issuer/exchange.js +0 -1
- package/dist/issuer/hosted.d.ts +0 -1
- package/dist/issuer/hosted.js +0 -1
- package/dist/issuer/index.d.ts +0 -1
- package/dist/issuer/index.js +0 -1
- package/dist/issuer/key-set.d.ts +0 -1
- package/dist/issuer/key-set.js +0 -1
- package/dist/issuer/paths.d.ts +0 -1
- package/dist/issuer/paths.js +0 -1
- package/dist/issuer/url.d.ts +0 -1
- package/dist/issuer/url.js +0 -1
- package/dist/publication/bindings/callable.d.ts +0 -1
- package/dist/publication/bindings/callable.js +8 -6
- package/dist/publication/bindings/index.d.ts +1 -2
- package/dist/publication/bindings/index.js +0 -1
- package/dist/publication/bindings/invocation.d.ts +0 -1
- package/dist/publication/bindings/invocation.js +0 -1
- package/dist/publication/bindings/view.d.ts +7 -1
- package/dist/publication/bindings/view.js +111 -3
- package/dist/publication/bundle-admission.d.ts +0 -1
- package/dist/publication/bundle-admission.js +14 -14
- package/dist/publication/bundle-descriptor.d.ts +0 -1
- package/dist/publication/bundle-descriptor.js +0 -1
- package/dist/publication/bundle-evidence.d.ts +0 -1
- package/dist/publication/bundle-evidence.js +0 -1
- package/dist/publication/bundle.d.ts +4 -2
- package/dist/publication/bundle.js +9 -4
- package/dist/publication/content.d.ts +0 -1
- package/dist/publication/content.js +0 -1
- package/dist/publication/declaration.d.ts +0 -1
- package/dist/publication/declaration.js +0 -1
- package/dist/publication/delivery/attestation.d.ts +0 -1
- package/dist/publication/delivery/attestation.js +0 -1
- package/dist/publication/delivery/claims.d.ts +1 -2
- package/dist/publication/delivery/claims.js +0 -1
- package/dist/publication/delivery/delivery.d.ts +0 -1
- package/dist/publication/delivery/delivery.js +0 -1
- package/dist/publication/delivery/error.d.ts +0 -1
- package/dist/publication/delivery/error.js +0 -1
- package/dist/publication/delivery/index.d.ts +0 -1
- package/dist/publication/delivery/index.js +0 -1
- package/dist/publication/delivery/limits.d.ts +0 -1
- package/dist/publication/delivery/limits.js +0 -1
- package/dist/publication/delivery/request.d.ts +0 -1
- package/dist/publication/delivery/request.js +0 -1
- package/dist/publication/delivery-declaration.d.ts +0 -1
- package/dist/publication/delivery-declaration.js +0 -1
- package/dist/publication/delivery-endpoint.d.ts +0 -1
- package/dist/publication/delivery-endpoint.js +0 -1
- package/dist/publication/error.d.ts +0 -1
- package/dist/publication/error.js +0 -1
- package/dist/publication/etag.d.ts +0 -1
- package/dist/publication/etag.js +5 -2
- package/dist/publication/index.d.ts +4 -5
- package/dist/publication/index.js +2 -3
- package/dist/publication/legacy-requirements.d.ts +12 -0
- package/dist/publication/legacy-requirements.js +23 -0
- package/dist/publication/manifest.d.ts +2 -3
- package/dist/publication/manifest.js +10 -6
- package/dist/publication/publication.d.ts +4 -3
- package/dist/publication/publication.js +27 -12
- package/dist/publication/reference.d.ts +1 -2
- package/dist/publication/reference.js +0 -1
- package/dist/publication/requirements.d.ts +15 -8
- package/dist/publication/requirements.js +147 -45
- package/dist/publication/route.d.ts +0 -1
- package/dist/publication/route.js +0 -1
- package/dist/publication/schema.d.ts +1 -2
- package/dist/publication/schema.js +0 -1
- package/dist/routes/admission.d.ts +0 -1
- package/dist/routes/admission.js +5 -6
- package/dist/routes/binding.d.ts +3 -4
- package/dist/routes/binding.js +5 -6
- package/dist/routes/collision.d.ts +0 -1
- package/dist/routes/collision.js +0 -1
- package/dist/routes/compiler.d.ts +2 -3
- package/dist/routes/compiler.js +14 -12
- package/dist/routes/credential.d.ts +0 -1
- package/dist/routes/credential.js +0 -1
- package/dist/routes/decode.d.ts +2 -3
- package/dist/routes/decode.js +14 -25
- package/dist/routes/encode.d.ts +2 -3
- package/dist/routes/encode.js +18 -17
- package/dist/routes/error-response.d.ts +0 -1
- package/dist/routes/error-response.js +0 -1
- package/dist/routes/error.d.ts +0 -1
- package/dist/routes/error.js +0 -1
- package/dist/routes/evidence.d.ts +3 -4
- package/dist/routes/evidence.js +15 -14
- package/dist/routes/index.d.ts +0 -1
- package/dist/routes/index.js +0 -1
- package/dist/routes/mapping.d.ts +0 -1
- package/dist/routes/mapping.js +0 -1
- package/dist/routes/match.d.ts +0 -1
- package/dist/routes/match.js +0 -1
- package/dist/routes/placement.d.ts +0 -1
- package/dist/routes/placement.js +1 -2
- package/dist/routes/plan.d.ts +5 -5
- package/dist/routes/plan.js +0 -1
- package/dist/routes/release-unavailable.d.ts +0 -1
- package/dist/routes/release-unavailable.js +0 -1
- package/dist/routes/request.d.ts +0 -1
- package/dist/routes/request.js +3 -2
- package/dist/routes/reservation.d.ts +0 -1
- package/dist/routes/reservation.js +7 -2
- package/dist/routes/routing.d.ts +0 -1
- package/dist/routes/routing.js +0 -1
- package/dist/routes/scalar.d.ts +3 -4
- package/dist/routes/scalar.js +5 -6
- package/dist/routes/select.d.ts +0 -1
- package/dist/routes/select.js +0 -1
- package/dist/routes/stream.d.ts +0 -1
- package/dist/routes/stream.js +0 -1
- package/dist/routes/table.d.ts +0 -1
- package/dist/routes/table.js +0 -1
- package/dist/routes/target.d.ts +0 -1
- package/dist/routes/target.js +0 -1
- package/dist/routes/template.d.ts +0 -1
- package/dist/routes/template.js +0 -1
- package/dist/runtime/artifact.d.ts +6 -5
- package/dist/runtime/artifact.js +22 -10
- package/dist/runtime/index.d.ts +1 -2
- package/dist/runtime/index.js +1 -2
- package/dist/schema/index.d.ts +0 -1
- package/dist/schema/index.js +0 -1
- package/dist/schema/installation/codec.d.ts +4 -0
- package/dist/schema/installation/codec.js +70 -0
- package/dist/schema/installation/index.d.ts +2 -1
- package/dist/schema/installation/index.js +1 -1
- package/dist/schema/installation/introspection/codec.d.ts +3 -3
- package/dist/schema/installation/introspection/codec.js +144 -204
- package/dist/schema/installation/introspection/index.d.ts +2 -3
- package/dist/schema/installation/introspection/index.js +1 -2
- package/dist/schema/installation/introspection/result.d.ts +18 -23
- package/dist/schema/installation/introspection/result.js +0 -1
- package/dist/schema/installation/result.d.ts +9 -0
- package/dist/schema/installation/result.js +1 -0
- package/package.json +27 -13
- package/dist/artifact/index.d.ts.map +0 -1
- package/dist/artifact/index.js.map +0 -1
- package/dist/artifact/ref.d.ts.map +0 -1
- package/dist/artifact/ref.js.map +0 -1
- package/dist/codecs/codec.d.ts.map +0 -1
- package/dist/codecs/codec.js.map +0 -1
- package/dist/codecs/index.d.ts.map +0 -1
- package/dist/codecs/index.js.map +0 -1
- package/dist/codecs/json.d.ts.map +0 -1
- package/dist/codecs/json.js.map +0 -1
- package/dist/codecs/media-types.d.ts.map +0 -1
- package/dist/codecs/media-types.js.map +0 -1
- package/dist/codecs/msgpack.d.ts.map +0 -1
- package/dist/codecs/msgpack.js.map +0 -1
- package/dist/errors/codes.d.ts.map +0 -1
- package/dist/errors/codes.js.map +0 -1
- package/dist/errors/http-status.d.ts.map +0 -1
- package/dist/errors/http-status.js.map +0 -1
- package/dist/errors/index.d.ts.map +0 -1
- package/dist/errors/index.js.map +0 -1
- package/dist/errors/payload.d.ts.map +0 -1
- package/dist/errors/payload.js.map +0 -1
- package/dist/errors/protocol-error.d.ts.map +0 -1
- package/dist/errors/protocol-error.js.map +0 -1
- package/dist/errors/reason.d.ts.map +0 -1
- package/dist/errors/reason.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/invocation/admission.d.ts.map +0 -1
- package/dist/invocation/admission.js.map +0 -1
- package/dist/invocation/binary.d.ts.map +0 -1
- package/dist/invocation/binary.js.map +0 -1
- package/dist/invocation/binding-codecs.d.ts.map +0 -1
- package/dist/invocation/binding-codecs.js.map +0 -1
- package/dist/invocation/cancellation.d.ts.map +0 -1
- package/dist/invocation/cancellation.js.map +0 -1
- package/dist/invocation/correlation.d.ts.map +0 -1
- package/dist/invocation/correlation.js.map +0 -1
- package/dist/invocation/delegate.d.ts.map +0 -1
- package/dist/invocation/delegate.js.map +0 -1
- package/dist/invocation/http/binary.d.ts.map +0 -1
- package/dist/invocation/http/binary.js.map +0 -1
- package/dist/invocation/http/index.d.ts.map +0 -1
- package/dist/invocation/http/index.js.map +0 -1
- package/dist/invocation/http/negotiation.d.ts.map +0 -1
- package/dist/invocation/http/negotiation.js.map +0 -1
- package/dist/invocation/http/stream.d.ts.map +0 -1
- package/dist/invocation/http/stream.js.map +0 -1
- package/dist/invocation/http/trace.d.ts.map +0 -1
- package/dist/invocation/http/trace.js.map +0 -1
- package/dist/invocation/idempotency.d.ts.map +0 -1
- package/dist/invocation/idempotency.js.map +0 -1
- package/dist/invocation/identity.d.ts.map +0 -1
- package/dist/invocation/identity.js.map +0 -1
- package/dist/invocation/index.d.ts.map +0 -1
- package/dist/invocation/index.js.map +0 -1
- package/dist/invocation/miss.d.ts.map +0 -1
- package/dist/invocation/miss.js.map +0 -1
- package/dist/invocation/redirect.d.ts.map +0 -1
- package/dist/invocation/redirect.js.map +0 -1
- package/dist/invocation/request.d.ts.map +0 -1
- package/dist/invocation/request.js.map +0 -1
- package/dist/invocation/response.d.ts.map +0 -1
- package/dist/invocation/response.js.map +0 -1
- package/dist/invocation/routing.d.ts.map +0 -1
- package/dist/invocation/routing.js.map +0 -1
- package/dist/invocation/schema.d.ts.map +0 -1
- package/dist/invocation/schema.js.map +0 -1
- package/dist/invocation/service-reason.d.ts.map +0 -1
- package/dist/invocation/service-reason.js.map +0 -1
- package/dist/invocation/stale-route.d.ts.map +0 -1
- package/dist/invocation/stale-route.js.map +0 -1
- package/dist/invocation/stream.d.ts.map +0 -1
- package/dist/invocation/stream.js.map +0 -1
- package/dist/invocation/target.d.ts.map +0 -1
- package/dist/invocation/target.js.map +0 -1
- package/dist/invocation/trace.d.ts.map +0 -1
- package/dist/invocation/trace.js.map +0 -1
- package/dist/invocation/version.d.ts.map +0 -1
- package/dist/invocation/version.js.map +0 -1
- package/dist/invocation/websocket/binary.d.ts.map +0 -1
- package/dist/invocation/websocket/binary.js.map +0 -1
- package/dist/invocation/websocket/index.d.ts.map +0 -1
- package/dist/invocation/websocket/index.js.map +0 -1
- package/dist/invocation/websocket/subprotocol.d.ts.map +0 -1
- package/dist/invocation/websocket/subprotocol.js.map +0 -1
- package/dist/issuer/configuration.d.ts.map +0 -1
- package/dist/issuer/configuration.js.map +0 -1
- package/dist/issuer/error.d.ts.map +0 -1
- package/dist/issuer/error.js.map +0 -1
- package/dist/issuer/exchange.d.ts.map +0 -1
- package/dist/issuer/exchange.js.map +0 -1
- package/dist/issuer/hosted.d.ts.map +0 -1
- package/dist/issuer/hosted.js.map +0 -1
- package/dist/issuer/index.d.ts.map +0 -1
- package/dist/issuer/index.js.map +0 -1
- package/dist/issuer/key-set.d.ts.map +0 -1
- package/dist/issuer/key-set.js.map +0 -1
- package/dist/issuer/paths.d.ts.map +0 -1
- package/dist/issuer/paths.js.map +0 -1
- package/dist/issuer/url.d.ts.map +0 -1
- package/dist/issuer/url.js.map +0 -1
- package/dist/publication/bindings/callable.d.ts.map +0 -1
- package/dist/publication/bindings/callable.js.map +0 -1
- package/dist/publication/bindings/index.d.ts.map +0 -1
- package/dist/publication/bindings/index.js.map +0 -1
- package/dist/publication/bindings/invocation.d.ts.map +0 -1
- package/dist/publication/bindings/invocation.js.map +0 -1
- package/dist/publication/bindings/view.d.ts.map +0 -1
- package/dist/publication/bindings/view.js.map +0 -1
- package/dist/publication/bundle-admission.d.ts.map +0 -1
- package/dist/publication/bundle-admission.js.map +0 -1
- package/dist/publication/bundle-descriptor.d.ts.map +0 -1
- package/dist/publication/bundle-descriptor.js.map +0 -1
- package/dist/publication/bundle-evidence.d.ts.map +0 -1
- package/dist/publication/bundle-evidence.js.map +0 -1
- package/dist/publication/bundle.d.ts.map +0 -1
- package/dist/publication/bundle.js.map +0 -1
- package/dist/publication/content.d.ts.map +0 -1
- package/dist/publication/content.js.map +0 -1
- package/dist/publication/declaration.d.ts.map +0 -1
- package/dist/publication/declaration.js.map +0 -1
- package/dist/publication/delivery/attestation.d.ts.map +0 -1
- package/dist/publication/delivery/attestation.js.map +0 -1
- package/dist/publication/delivery/claims.d.ts.map +0 -1
- package/dist/publication/delivery/claims.js.map +0 -1
- package/dist/publication/delivery/delivery.d.ts.map +0 -1
- package/dist/publication/delivery/delivery.js.map +0 -1
- package/dist/publication/delivery/error.d.ts.map +0 -1
- package/dist/publication/delivery/error.js.map +0 -1
- package/dist/publication/delivery/index.d.ts.map +0 -1
- package/dist/publication/delivery/index.js.map +0 -1
- package/dist/publication/delivery/limits.d.ts.map +0 -1
- package/dist/publication/delivery/limits.js.map +0 -1
- package/dist/publication/delivery/request.d.ts.map +0 -1
- package/dist/publication/delivery/request.js.map +0 -1
- package/dist/publication/delivery-declaration.d.ts.map +0 -1
- package/dist/publication/delivery-declaration.js.map +0 -1
- package/dist/publication/delivery-endpoint.d.ts.map +0 -1
- package/dist/publication/delivery-endpoint.js.map +0 -1
- package/dist/publication/error.d.ts.map +0 -1
- package/dist/publication/error.js.map +0 -1
- package/dist/publication/etag.d.ts.map +0 -1
- package/dist/publication/etag.js.map +0 -1
- package/dist/publication/index.d.ts.map +0 -1
- package/dist/publication/index.js.map +0 -1
- package/dist/publication/manifest.d.ts.map +0 -1
- package/dist/publication/manifest.js.map +0 -1
- package/dist/publication/publication.d.ts.map +0 -1
- package/dist/publication/publication.js.map +0 -1
- package/dist/publication/reference.d.ts.map +0 -1
- package/dist/publication/reference.js.map +0 -1
- package/dist/publication/requirements.d.ts.map +0 -1
- package/dist/publication/requirements.js.map +0 -1
- package/dist/publication/route.d.ts.map +0 -1
- package/dist/publication/route.js.map +0 -1
- package/dist/publication/schema.d.ts.map +0 -1
- package/dist/publication/schema.js.map +0 -1
- package/dist/routes/admission.d.ts.map +0 -1
- package/dist/routes/admission.js.map +0 -1
- package/dist/routes/binding.d.ts.map +0 -1
- package/dist/routes/binding.js.map +0 -1
- package/dist/routes/collision.d.ts.map +0 -1
- package/dist/routes/collision.js.map +0 -1
- package/dist/routes/compiler.d.ts.map +0 -1
- package/dist/routes/compiler.js.map +0 -1
- package/dist/routes/credential.d.ts.map +0 -1
- package/dist/routes/credential.js.map +0 -1
- package/dist/routes/decode.d.ts.map +0 -1
- package/dist/routes/decode.js.map +0 -1
- package/dist/routes/encode.d.ts.map +0 -1
- package/dist/routes/encode.js.map +0 -1
- package/dist/routes/error-response.d.ts.map +0 -1
- package/dist/routes/error-response.js.map +0 -1
- package/dist/routes/error.d.ts.map +0 -1
- package/dist/routes/error.js.map +0 -1
- package/dist/routes/evidence.d.ts.map +0 -1
- package/dist/routes/evidence.js.map +0 -1
- package/dist/routes/index.d.ts.map +0 -1
- package/dist/routes/index.js.map +0 -1
- package/dist/routes/mapping.d.ts.map +0 -1
- package/dist/routes/mapping.js.map +0 -1
- package/dist/routes/match.d.ts.map +0 -1
- package/dist/routes/match.js.map +0 -1
- package/dist/routes/placement.d.ts.map +0 -1
- package/dist/routes/placement.js.map +0 -1
- package/dist/routes/plan.d.ts.map +0 -1
- package/dist/routes/plan.js.map +0 -1
- package/dist/routes/release-unavailable.d.ts.map +0 -1
- package/dist/routes/release-unavailable.js.map +0 -1
- package/dist/routes/request.d.ts.map +0 -1
- package/dist/routes/request.js.map +0 -1
- package/dist/routes/reservation.d.ts.map +0 -1
- package/dist/routes/reservation.js.map +0 -1
- package/dist/routes/routing.d.ts.map +0 -1
- package/dist/routes/routing.js.map +0 -1
- package/dist/routes/scalar.d.ts.map +0 -1
- package/dist/routes/scalar.js.map +0 -1
- package/dist/routes/select.d.ts.map +0 -1
- package/dist/routes/select.js.map +0 -1
- package/dist/routes/stream.d.ts.map +0 -1
- package/dist/routes/stream.js.map +0 -1
- package/dist/routes/table.d.ts.map +0 -1
- package/dist/routes/table.js.map +0 -1
- package/dist/routes/target.d.ts.map +0 -1
- package/dist/routes/target.js.map +0 -1
- package/dist/routes/template.d.ts.map +0 -1
- package/dist/routes/template.js.map +0 -1
- package/dist/runtime/artifact.d.ts.map +0 -1
- package/dist/runtime/artifact.js.map +0 -1
- package/dist/runtime/index.d.ts.map +0 -1
- package/dist/runtime/index.js.map +0 -1
- package/dist/schema/index.d.ts.map +0 -1
- package/dist/schema/index.js.map +0 -1
- package/dist/schema/installation/index.d.ts.map +0 -1
- package/dist/schema/installation/index.js.map +0 -1
- package/dist/schema/installation/introspection/codec.d.ts.map +0 -1
- package/dist/schema/installation/introspection/codec.js.map +0 -1
- package/dist/schema/installation/introspection/index.d.ts.map +0 -1
- package/dist/schema/installation/introspection/index.js.map +0 -1
- package/dist/schema/installation/introspection/result.d.ts.map +0 -1
- package/dist/schema/installation/introspection/result.js.map +0 -1
|
@@ -1,9 +1,14 @@
|
|
|
1
|
-
import { KernelSchema } from '@astrale-os/kernel-core/schema';
|
|
2
1
|
import { AuthorityOperationOrder } from '@astrale-os/kernel-core/schema/authority/operation';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { acceptDefinitionRef, callableAddress, Key } from '@astrale-os/kernel-dsl/v1/addressing';
|
|
3
|
+
import { isMethodExecutable } from '@astrale-os/kernel-dsl/v1/language';
|
|
4
|
+
import { revision } from '@astrale-os/kernel-dsl/v1/schema/revision';
|
|
5
5
|
import { array, deepFreeze, exact, record, unique } from './content.js';
|
|
6
6
|
import { fail } from './error.js';
|
|
7
|
+
const KernelIdentityClass = Object.freeze({
|
|
8
|
+
origin: 'kernel.astrale.ai',
|
|
9
|
+
kind: 'class',
|
|
10
|
+
name: 'Identity',
|
|
11
|
+
});
|
|
7
12
|
export const ClassOperationOrder = Object.freeze([
|
|
8
13
|
'create',
|
|
9
14
|
'read',
|
|
@@ -11,12 +16,12 @@ export const ClassOperationOrder = Object.freeze([
|
|
|
11
16
|
'update',
|
|
12
17
|
'delete',
|
|
13
18
|
]);
|
|
14
|
-
/** Admit the exact closed
|
|
19
|
+
/** Admit the exact closed canonical requirements object used by Publication v3. */
|
|
15
20
|
export function admitRequirements(input) {
|
|
16
21
|
const requirements = record(input, 'PUBLICATION_INVALID', 'Publication requirements are invalid.');
|
|
17
22
|
exact(requirements, ['capabilities'], 'PUBLICATION_INVALID');
|
|
18
23
|
const capabilities = record(requirements.capabilities, 'PUBLICATION_INVALID', 'Publication capability requirements are invalid.');
|
|
19
|
-
exact(capabilities, ['
|
|
24
|
+
exact(capabilities, ['authority', 'classes', 'functions', 'core'], 'PUBLICATION_INVALID');
|
|
20
25
|
const functions = capabilities.functions === undefined
|
|
21
26
|
? undefined
|
|
22
27
|
: nonEmpty(capabilities.functions, 'Function capability requirements').map(admitCallable);
|
|
@@ -31,7 +36,16 @@ export function admitRequirements(input) {
|
|
|
31
36
|
unique(classes.map((entry) => classKey(entry.class)), 'PUBLICATION_INVALID', 'Class capability requirement');
|
|
32
37
|
canonical(classes, (left, right) => compare(classKey(left.class), classKey(right.class)), 'Class capability requirements');
|
|
33
38
|
}
|
|
34
|
-
const
|
|
39
|
+
const authority = capabilities.authority === undefined
|
|
40
|
+
? undefined
|
|
41
|
+
: admitAuthorityRequirements(capabilities.authority);
|
|
42
|
+
const core = capabilities.core === undefined
|
|
43
|
+
? undefined
|
|
44
|
+
: nonEmpty(capabilities.core, 'Core capability requirements').map(admitCoreCapabilityRequirement);
|
|
45
|
+
if (core !== undefined) {
|
|
46
|
+
unique(core.map(({ subject }) => Key.of(subject)), 'PUBLICATION_INVALID', 'Core capability subject');
|
|
47
|
+
canonical(core, (left, right) => compare(Key.of(left.subject), Key.of(right.subject)), 'Core capability requirements');
|
|
48
|
+
}
|
|
35
49
|
return deepFreeze({
|
|
36
50
|
capabilities: {
|
|
37
51
|
...(functions === undefined
|
|
@@ -40,35 +54,113 @@ export function admitRequirements(input) {
|
|
|
40
54
|
...(classes === undefined
|
|
41
55
|
? {}
|
|
42
56
|
: { classes: Object.freeze(classes) }),
|
|
43
|
-
...(
|
|
57
|
+
...(authority === undefined ? {} : { authority }),
|
|
58
|
+
...(core === undefined
|
|
59
|
+
? {}
|
|
60
|
+
: { core: Object.freeze(core) }),
|
|
44
61
|
},
|
|
45
62
|
});
|
|
46
63
|
}
|
|
64
|
+
function admitCoreCapabilityRequirement(input) {
|
|
65
|
+
const requirement = record(input, 'PUBLICATION_INVALID', 'Core capability requirement is invalid.');
|
|
66
|
+
exact(requirement, ['authority', 'classes', 'functions', 'subject'], 'PUBLICATION_INVALID');
|
|
67
|
+
const subject = admitCoreRef(requirement.subject);
|
|
68
|
+
const functions = requirement.functions === undefined
|
|
69
|
+
? undefined
|
|
70
|
+
: nonEmpty(requirement.functions, 'Core capability Function requirements').map(admitCallable);
|
|
71
|
+
if (functions !== undefined) {
|
|
72
|
+
unique(functions, 'PUBLICATION_INVALID', 'Core capability Function requirement');
|
|
73
|
+
canonical(functions, compare, 'Core capability Function requirements');
|
|
74
|
+
}
|
|
75
|
+
const classes = requirement.classes === undefined
|
|
76
|
+
? undefined
|
|
77
|
+
: nonEmpty(requirement.classes, 'Core capability Class requirements').map(admitClassRequirement);
|
|
78
|
+
if (classes !== undefined) {
|
|
79
|
+
unique(classes.map((entry) => classKey(entry.class)), 'PUBLICATION_INVALID', 'Core capability Class requirement');
|
|
80
|
+
canonical(classes, (left, right) => compare(classKey(left.class), classKey(right.class)), 'Core capability Class requirements');
|
|
81
|
+
}
|
|
82
|
+
const authority = requirement.authority === undefined
|
|
83
|
+
? undefined
|
|
84
|
+
: admitAuthorityRequirements(requirement.authority);
|
|
85
|
+
if (functions === undefined && classes === undefined && authority === undefined) {
|
|
86
|
+
fail('PUBLICATION_INVALID', 'Core capability requirements cannot be empty.');
|
|
87
|
+
}
|
|
88
|
+
return Object.freeze({
|
|
89
|
+
subject,
|
|
90
|
+
...(functions === undefined
|
|
91
|
+
? {}
|
|
92
|
+
: { functions: Object.freeze(functions) }),
|
|
93
|
+
...(classes === undefined
|
|
94
|
+
? {}
|
|
95
|
+
: { classes: Object.freeze(classes) }),
|
|
96
|
+
...(authority === undefined ? {} : { authority }),
|
|
97
|
+
});
|
|
98
|
+
}
|
|
47
99
|
/** Bind explicit capability targets to exact functional dependencies in the bundle closure. */
|
|
48
100
|
export function validateRequirements(root, closure, requirements) {
|
|
49
101
|
const dependencies = exactDependencyClosure(root, closure);
|
|
50
102
|
for (const callable of requirements.capabilities.functions ?? []) {
|
|
51
103
|
const dependency = capabilityOwner(root, dependencies, callable, 'Function');
|
|
52
|
-
|
|
53
|
-
if (!hasCallable(dependency, reference)) {
|
|
104
|
+
if (!hasCallable(dependency, callable)) {
|
|
54
105
|
fail('PUBLICATION_INVALID', 'Function capability requirement names an unknown dependency callable.');
|
|
55
106
|
}
|
|
56
107
|
}
|
|
57
108
|
for (const requirement of requirements.capabilities.classes ?? []) {
|
|
58
|
-
const key = Key.
|
|
109
|
+
const key = Key.of(requirement.class);
|
|
59
110
|
const dependency = capabilityOwner(root, dependencies, key, 'Class');
|
|
60
111
|
if (dependency.classes[requirement.class.name] === undefined) {
|
|
61
112
|
fail('PUBLICATION_INVALID', 'Class capability requirement names an unknown dependency Class.');
|
|
62
113
|
}
|
|
63
114
|
}
|
|
115
|
+
for (const requirement of requirements.capabilities.core ?? []) {
|
|
116
|
+
const subject = root.core.nodes[requirement.subject.name];
|
|
117
|
+
if (requirement.subject.origin !== root.origin ||
|
|
118
|
+
subject === undefined ||
|
|
119
|
+
!classSatisfies(root, dependencies, subject.class, KernelIdentityClass)) {
|
|
120
|
+
fail('PUBLICATION_INVALID', 'Core capability subject must name one local Core Identity.');
|
|
121
|
+
}
|
|
122
|
+
for (const callable of requirement.functions ?? []) {
|
|
123
|
+
const owner = Key.origin(callable) === root.origin
|
|
124
|
+
? root
|
|
125
|
+
: capabilityOwner(root, dependencies, callable, 'Function');
|
|
126
|
+
if (!hasCallable(owner, callable)) {
|
|
127
|
+
fail('PUBLICATION_INVALID', 'Core capability Function requirement names an unknown or non-executable callable.');
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
for (const classRequirement of requirement.classes ?? []) {
|
|
131
|
+
const key = Key.of(classRequirement.class);
|
|
132
|
+
const owner = classRequirement.class.origin === root.origin
|
|
133
|
+
? root
|
|
134
|
+
: capabilityOwner(root, dependencies, key, 'Class');
|
|
135
|
+
if (owner.classes[classRequirement.class.name] === undefined) {
|
|
136
|
+
fail('PUBLICATION_INVALID', 'Core capability Class requirement names an unknown dependency Class.');
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
function classSatisfies(root, dependencies, candidate, expected) {
|
|
142
|
+
const expectedKey = Key.of(expected);
|
|
143
|
+
const visited = new Set();
|
|
144
|
+
const visit = (reference) => {
|
|
145
|
+
const key = Key.of(reference);
|
|
146
|
+
if (key === expectedKey)
|
|
147
|
+
return true;
|
|
148
|
+
if (visited.has(key))
|
|
149
|
+
return false;
|
|
150
|
+
visited.add(key);
|
|
151
|
+
const owner = reference.origin === root.origin ? root : dependencies.get(reference.origin);
|
|
152
|
+
const definition = owner?.classes[reference.name];
|
|
153
|
+
return definition?.kind === 'node' && definition.extends.some(visit);
|
|
154
|
+
};
|
|
155
|
+
return visit(candidate);
|
|
64
156
|
}
|
|
65
157
|
function exactDependencyClosure(root, closure) {
|
|
66
158
|
const supplied = new Map(closure.map((dependency) => [dependency.origin, dependency]));
|
|
67
159
|
const reachable = new Map();
|
|
68
160
|
const visit = (owner) => {
|
|
69
|
-
for (const coordinate of owner.dependencies) {
|
|
161
|
+
for (const coordinate of Object.values(owner.dependencies)) {
|
|
70
162
|
const dependency = supplied.get(coordinate.origin);
|
|
71
|
-
if (dependency === undefined ||
|
|
163
|
+
if (dependency === undefined || revision(dependency) !== coordinate.revision) {
|
|
72
164
|
fail('PUBLICATION_INVALID', 'Publication Bundle omits an exact dependency.');
|
|
73
165
|
}
|
|
74
166
|
if (reachable.has(dependency.origin))
|
|
@@ -84,8 +176,10 @@ function admitCallable(input) {
|
|
|
84
176
|
if (typeof input !== 'string' || !Key.is(input)) {
|
|
85
177
|
return fail('PUBLICATION_INVALID', 'Function capability reference is invalid.');
|
|
86
178
|
}
|
|
87
|
-
|
|
88
|
-
|
|
179
|
+
try {
|
|
180
|
+
callableAddress(input);
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
89
183
|
return fail('PUBLICATION_INVALID', 'Function capability reference must name a Function or Method.');
|
|
90
184
|
}
|
|
91
185
|
return input;
|
|
@@ -101,14 +195,14 @@ function admitClassRequirement(input) {
|
|
|
101
195
|
operations: Object.freeze(operations),
|
|
102
196
|
});
|
|
103
197
|
}
|
|
104
|
-
function
|
|
105
|
-
const
|
|
106
|
-
exact(
|
|
107
|
-
if (
|
|
108
|
-
fail('PUBLICATION_INVALID', '
|
|
198
|
+
function admitAuthorityRequirements(input) {
|
|
199
|
+
const authority = record(input, 'PUBLICATION_INVALID', 'Authority capability requirements are invalid.');
|
|
200
|
+
exact(authority, ['grant', 'revoke'], 'PUBLICATION_INVALID');
|
|
201
|
+
if (authority.grant === undefined && authority.revoke === undefined) {
|
|
202
|
+
fail('PUBLICATION_INVALID', 'Authority capability requirements cannot be empty.');
|
|
109
203
|
}
|
|
110
|
-
const grant = admitAuthorityOperations(
|
|
111
|
-
const revoke = admitAuthorityOperations(
|
|
204
|
+
const grant = admitAuthorityOperations(authority.grant, 'grant');
|
|
205
|
+
const revoke = admitAuthorityOperations(authority.revoke, 'revoke');
|
|
112
206
|
return Object.freeze({
|
|
113
207
|
...(grant === undefined ? {} : { grant }),
|
|
114
208
|
...(revoke === undefined ? {} : { revoke }),
|
|
@@ -117,22 +211,35 @@ function admitAdminRequirements(input) {
|
|
|
117
211
|
function admitAuthorityOperations(input, kind) {
|
|
118
212
|
if (input === undefined)
|
|
119
213
|
return undefined;
|
|
120
|
-
const values = nonEmpty(input, `
|
|
121
|
-
unique(values, 'PUBLICATION_INVALID', `
|
|
122
|
-
canonical(values, ordered(AuthorityOperationOrder), `
|
|
214
|
+
const values = nonEmpty(input, `Authority ${kind} operations`).map((entry) => admitOperation(entry, AuthorityOperationOrder, `Authority ${kind} operation`));
|
|
215
|
+
unique(values, 'PUBLICATION_INVALID', `authority ${kind} operation`);
|
|
216
|
+
canonical(values, ordered(AuthorityOperationOrder), `Authority ${kind} operations`);
|
|
123
217
|
return Object.freeze(values);
|
|
124
218
|
}
|
|
125
219
|
function admitClassRef(input) {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
typeof value.name !== 'string' ||
|
|
132
|
-
!patterns.memberName.test(value.name)) {
|
|
220
|
+
let value;
|
|
221
|
+
try {
|
|
222
|
+
value = acceptDefinitionRef(input);
|
|
223
|
+
}
|
|
224
|
+
catch {
|
|
133
225
|
fail('PUBLICATION_INVALID', 'Class capability reference is invalid.');
|
|
134
226
|
}
|
|
135
|
-
|
|
227
|
+
if (value.kind !== 'class')
|
|
228
|
+
fail('PUBLICATION_INVALID', 'Class capability reference is invalid.');
|
|
229
|
+
return value;
|
|
230
|
+
}
|
|
231
|
+
function admitCoreRef(input) {
|
|
232
|
+
let value;
|
|
233
|
+
try {
|
|
234
|
+
value = acceptDefinitionRef(input);
|
|
235
|
+
}
|
|
236
|
+
catch {
|
|
237
|
+
fail('PUBLICATION_INVALID', 'Core capability subject is invalid.');
|
|
238
|
+
}
|
|
239
|
+
if (value.kind !== 'core') {
|
|
240
|
+
fail('PUBLICATION_INVALID', 'Core capability subject must be one local Core reference.');
|
|
241
|
+
}
|
|
242
|
+
return value;
|
|
136
243
|
}
|
|
137
244
|
function nonEmpty(input, label) {
|
|
138
245
|
const values = [...array(input, 'PUBLICATION_INVALID')];
|
|
@@ -158,28 +265,23 @@ function compare(left, right) {
|
|
|
158
265
|
return left < right ? -1 : left > right ? 1 : 0;
|
|
159
266
|
}
|
|
160
267
|
function classKey(input) {
|
|
161
|
-
return String(Key.
|
|
268
|
+
return String(Key.of(input));
|
|
162
269
|
}
|
|
163
270
|
function capabilityOwner(root, dependencies, key, label) {
|
|
164
271
|
const origin = Key.origin(key);
|
|
165
272
|
if (origin === root.origin)
|
|
166
273
|
fail('PUBLICATION_INVALID', `${label} capability target cannot be local.`);
|
|
167
|
-
if (origin === KernelSchema.origin)
|
|
168
|
-
return KernelSchema;
|
|
169
274
|
const dependency = dependencies.get(origin);
|
|
170
275
|
if (dependency === undefined) {
|
|
171
276
|
fail('PUBLICATION_INVALID', `${label} capability target must belong to the exact dependency closure.`);
|
|
172
277
|
}
|
|
173
278
|
return dependency;
|
|
174
279
|
}
|
|
175
|
-
function hasCallable(dependency,
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
const
|
|
180
|
-
const
|
|
181
|
-
|
|
182
|
-
const declaration = ownerKind === 'class' ? dependency.classes[owner] : dependency.interfaces[owner];
|
|
183
|
-
return declaration?.family === 'node' && declaration.methods[method] !== undefined;
|
|
280
|
+
function hasCallable(dependency, callable) {
|
|
281
|
+
const coordinate = callableAddress(callable);
|
|
282
|
+
if (coordinate.kind === 'function')
|
|
283
|
+
return dependency.functions[coordinate.name] !== undefined;
|
|
284
|
+
const declaration = dependency.classes[coordinate.owner.name];
|
|
285
|
+
const method = declaration?.kind === 'node' ? declaration.methods[coordinate.name] : undefined;
|
|
286
|
+
return method !== undefined && isMethodExecutable(declaration, method);
|
|
184
287
|
}
|
|
185
|
-
//# sourceMappingURL=requirements.js.map
|
|
@@ -35,4 +35,3 @@ export interface HttpRouteDeclaration extends Omit<HttpRoute, 'href'> {
|
|
|
35
35
|
}
|
|
36
36
|
export declare function admitRoute(input: unknown, origin: string): HttpRoute;
|
|
37
37
|
export declare function admitRouteDeclaration(input: unknown, origin: string): HttpRouteDeclaration;
|
|
38
|
-
//# sourceMappingURL=route.d.ts.map
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import type { Revision } from '@astrale-os/kernel-dsl/v1/
|
|
1
|
+
import type { Revision } from '@astrale-os/kernel-dsl/v1/addressing';
|
|
2
2
|
import type { BundleDescriptor } from './bundle-descriptor.js';
|
|
3
3
|
export interface Schema {
|
|
4
4
|
readonly revision: Revision;
|
|
5
5
|
readonly bundle: BundleDescriptor;
|
|
6
6
|
}
|
|
7
7
|
export declare function admitSchema(input: unknown): Schema;
|
|
8
|
-
//# sourceMappingURL=schema.d.ts.map
|
package/dist/routes/admission.js
CHANGED
|
@@ -2,7 +2,7 @@ import { accept as acceptPortable } from '@astrale-os/kernel-dsl/value';
|
|
|
2
2
|
import { acceptReference } from '../publication/reference.js';
|
|
3
3
|
import { admitRoute } from '../publication/route.js';
|
|
4
4
|
import { fail } from './error.js';
|
|
5
|
-
const
|
|
5
|
+
const AUTH = new Set(['anonymous', 'authenticated', 'authorized']);
|
|
6
6
|
const OUTPUT = new Set(['value', 'stream', 'binary']);
|
|
7
7
|
/** Admit one emitted portable Table before Server composition. */
|
|
8
8
|
export function acceptTable(input) {
|
|
@@ -19,11 +19,11 @@ export function acceptTable(input) {
|
|
|
19
19
|
}
|
|
20
20
|
function acceptRoute(input, origin) {
|
|
21
21
|
const value = object(input, 'Route Table entry');
|
|
22
|
-
exact(value, ['name', 'callable', 'target', '
|
|
22
|
+
exact(value, ['name', 'callable', 'target', 'auth', 'output', 'href', 'method', 'default'], 'Route Table entry', ['requestMethod', 'query', 'headers', 'body', 'credential']);
|
|
23
23
|
if (typeof value.default !== 'boolean')
|
|
24
24
|
invalid('Route Table default');
|
|
25
|
-
if (typeof value.
|
|
26
|
-
invalid('Route Table
|
|
25
|
+
if (typeof value.auth !== 'string' || !AUTH.has(value.auth)) {
|
|
26
|
+
invalid('Route Table auth');
|
|
27
27
|
}
|
|
28
28
|
if (typeof value.output !== 'string' || !OUTPUT.has(value.output))
|
|
29
29
|
invalid('Route Table output');
|
|
@@ -44,7 +44,7 @@ function acceptRoute(input, origin) {
|
|
|
44
44
|
return Object.freeze({
|
|
45
45
|
...common,
|
|
46
46
|
target: target(value.target),
|
|
47
|
-
|
|
47
|
+
auth: value.auth,
|
|
48
48
|
output: value.output,
|
|
49
49
|
default: value.default,
|
|
50
50
|
});
|
|
@@ -87,4 +87,3 @@ function exact(value, required, label, optional = []) {
|
|
|
87
87
|
function invalid(label) {
|
|
88
88
|
return fail('NATIVE_ROUTE_BINDING_INVALID', `${label} is invalid.`);
|
|
89
89
|
}
|
|
90
|
-
//# sourceMappingURL=admission.js.map
|
package/dist/routes/binding.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Domain } from '@astrale-os/kernel-dsl/v1';
|
|
2
2
|
import type { Publication } from '../publication/publication.js';
|
|
3
3
|
import type { Plan } from './plan.js';
|
|
4
4
|
import type { Table } from './table.js';
|
|
5
|
-
/** Bind one Plan to an exact placed Publication and matching
|
|
6
|
-
export declare function bind(plan: Plan, deployed: Publication,
|
|
7
|
-
//# sourceMappingURL=binding.d.ts.map
|
|
5
|
+
/** Bind one Plan to an exact placed Publication and matching resolved Domain. */
|
|
6
|
+
export declare function bind(plan: Plan, deployed: Publication, domain: Domain): Table;
|
package/dist/routes/binding.js
CHANGED
|
@@ -3,13 +3,13 @@ import { reference } from '../publication/reference.js';
|
|
|
3
3
|
import { fail } from './error.js';
|
|
4
4
|
import { place } from './placement.js';
|
|
5
5
|
import { rejectReserved } from './reservation.js';
|
|
6
|
-
/** Bind one Plan to an exact placed Publication and matching
|
|
7
|
-
export function bind(plan, deployed,
|
|
6
|
+
/** Bind one Plan to an exact placed Publication and matching resolved Domain. */
|
|
7
|
+
export function bind(plan, deployed, domain) {
|
|
8
8
|
if (plan.origin !== deployed.origin ||
|
|
9
|
-
plan.origin !==
|
|
9
|
+
plan.origin !== domain.origin ||
|
|
10
10
|
plan.revision !== deployed.schema.revision ||
|
|
11
|
-
plan.revision !==
|
|
12
|
-
fail('NATIVE_ROUTE_BINDING_INVALID', 'Route Plan, Publication, and
|
|
11
|
+
plan.revision !== domain.revision) {
|
|
12
|
+
fail('NATIVE_ROUTE_BINDING_INVALID', 'Route Plan, Publication, and Domain identity differ.');
|
|
13
13
|
}
|
|
14
14
|
if (json.serialize(place(plan, deployed.identity.issuer)) !==
|
|
15
15
|
json.serialize(deployed.routes)) {
|
|
@@ -25,4 +25,3 @@ export function bind(plan, deployed, validator) {
|
|
|
25
25
|
entries: Object.freeze(entries),
|
|
26
26
|
});
|
|
27
27
|
}
|
|
28
|
-
//# sourceMappingURL=binding.js.map
|
package/dist/routes/collision.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Domain } from '@astrale-os/kernel-dsl/v1';
|
|
2
2
|
import type * as publication from '../publication/index.js';
|
|
3
3
|
import type { Plan } from './plan.js';
|
|
4
4
|
export interface CompileInput {
|
|
5
5
|
readonly routes: readonly publication.HttpRouteDeclaration[];
|
|
6
|
-
readonly
|
|
6
|
+
readonly domain: Domain;
|
|
7
7
|
}
|
|
8
8
|
export declare function compile(input: CompileInput): Plan;
|
|
9
|
-
//# sourceMappingURL=compiler.d.ts.map
|
package/dist/routes/compiler.js
CHANGED
|
@@ -8,41 +8,43 @@ export function compile(input) {
|
|
|
8
8
|
if (input === null || typeof input !== 'object' || !Array.isArray(input.routes)) {
|
|
9
9
|
throw new TypeError('Route compilation input is invalid.');
|
|
10
10
|
}
|
|
11
|
-
const authored = input.routes.map((entry) => admitRouteDeclaration(entry, input.
|
|
11
|
+
const authored = input.routes.map((entry) => admitRouteDeclaration(entry, input.domain.origin));
|
|
12
12
|
const entries = authored.map((declaration) => {
|
|
13
|
-
const meaning = input.
|
|
14
|
-
if (meaning === undefined) {
|
|
15
|
-
fail('NATIVE_ROUTE_BINDING_INVALID', `
|
|
13
|
+
const meaning = input.domain.callable(declaration.callable);
|
|
14
|
+
if (meaning === undefined || (isMethod(meaning) && !meaning.executable)) {
|
|
15
|
+
fail('NATIVE_ROUTE_BINDING_INVALID', `Unavailable callable ${declaration.callable}.`);
|
|
16
16
|
}
|
|
17
17
|
const href = placePath(declaration.path, 'https://routes.invalid');
|
|
18
18
|
const route = { ...declaration, href };
|
|
19
19
|
validateTemplate(href);
|
|
20
|
-
validateMapping(route, meaning.
|
|
20
|
+
validateMapping(route, meaning.inputFields, isMethod(meaning) && !meaning.static);
|
|
21
21
|
validateWireMapping(route);
|
|
22
22
|
validateCredentialMapping(route);
|
|
23
23
|
if (route.method === 'GET' && route.body !== undefined) {
|
|
24
24
|
fail('NATIVE_ROUTE_DECLARATION_INVALID', `GET route ${route.name} cannot declare a body.`);
|
|
25
25
|
}
|
|
26
|
-
const target = meaning
|
|
26
|
+
const target = !isMethod(meaning)
|
|
27
27
|
? { kind: 'function' }
|
|
28
|
-
: meaning.
|
|
28
|
+
: meaning.static
|
|
29
29
|
? { kind: 'method', dispatch: 'static' }
|
|
30
30
|
: { kind: 'method', dispatch: 'instance', receiver: route.receiver };
|
|
31
31
|
const { href: _href, receiver: _receiver, ...portable } = route;
|
|
32
32
|
return Object.freeze({
|
|
33
33
|
...portable,
|
|
34
34
|
target,
|
|
35
|
-
|
|
36
|
-
output: meaning.output,
|
|
35
|
+
auth: meaning.auth,
|
|
36
|
+
output: meaning.output.mode,
|
|
37
37
|
path: declaration.path,
|
|
38
38
|
default: declaration.default === true,
|
|
39
39
|
});
|
|
40
40
|
});
|
|
41
41
|
rejectCollisions(entries.map((entry) => ({ ...entry, href: placePath(entry.path, 'https://routes.invalid') })));
|
|
42
42
|
return Object.freeze({
|
|
43
|
-
origin: input.
|
|
44
|
-
revision: input.
|
|
43
|
+
origin: input.domain.origin,
|
|
44
|
+
revision: input.domain.revision,
|
|
45
45
|
entries: Object.freeze(entries),
|
|
46
46
|
});
|
|
47
47
|
}
|
|
48
|
-
|
|
48
|
+
function isMethod(meaning) {
|
|
49
|
+
return 'owner' in meaning;
|
|
50
|
+
}
|
|
@@ -6,4 +6,3 @@ export declare function specificHeaderWires(entry: Route): ReadonlySet<string>;
|
|
|
6
6
|
export declare function putCredential(entry: Route, url: URL, headers: Record<string, string>, credential: string): void;
|
|
7
7
|
export declare function withoutCredentialHeaders(entry: Route, input: Readonly<Record<string, string>>): Record<string, string>;
|
|
8
8
|
export declare function readCredential(entry: Route, url: URL, headers: Record<string, string>): string | undefined;
|
|
9
|
-
//# sourceMappingURL=credential.d.ts.map
|
package/dist/routes/decode.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Domain } from '@astrale-os/kernel-dsl/v1';
|
|
2
2
|
import type { PublicationRef } from '../publication/index.js';
|
|
3
3
|
import type { HttpRequest, Invocation } from './request.js';
|
|
4
4
|
import type { Route } from './table.js';
|
|
5
|
-
export declare function decode(entry: Route, request: HttpRequest,
|
|
6
|
-
//# sourceMappingURL=decode.d.ts.map
|
|
5
|
+
export declare function decode(entry: Route, request: HttpRequest, domain: Domain, served: PublicationRef): Invocation;
|
package/dist/routes/decode.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { NodePath
|
|
2
|
-
import { Key, Ref } from '@astrale-os/kernel-dsl/v1/addressing';
|
|
1
|
+
import { NodePath } from '@astrale-os/kernel-core/path';
|
|
3
2
|
import * as portable from '@astrale-os/kernel-dsl/value';
|
|
4
3
|
import { readCredential, specificHeaderWires, withoutCredentialHeaders } from './credential.js';
|
|
5
4
|
import { fail, invalidRequest } from './error.js';
|
|
@@ -10,7 +9,7 @@ import { decodeRouting } from './routing.js';
|
|
|
10
9
|
import { decodeScalar } from './scalar.js';
|
|
11
10
|
import { requiresReceiver } from './target.js';
|
|
12
11
|
import { matchTemplate, PLACEHOLDER } from './template.js';
|
|
13
|
-
export function decode(entry, request,
|
|
12
|
+
export function decode(entry, request, domain, served) {
|
|
14
13
|
if (!methodMatches(entry, request.method))
|
|
15
14
|
invalidRequest('HTTP method does not match the route.');
|
|
16
15
|
const matched = matchTemplate(entry.href, request.url);
|
|
@@ -18,10 +17,10 @@ export function decode(entry, request, validator, served) {
|
|
|
18
17
|
invalidRequest('URL does not match the route template.');
|
|
19
18
|
const values = {};
|
|
20
19
|
for (const [name, value] of Object.entries(matched)) {
|
|
21
|
-
values[name] = decodeScalar(entry, name, value,
|
|
20
|
+
values[name] = decodeScalar(entry, name, value, domain);
|
|
22
21
|
}
|
|
23
22
|
if (entry.requestMethod !== undefined) {
|
|
24
|
-
values[entry.requestMethod] = decodeScalar(entry, entry.requestMethod, request.method.toUpperCase(),
|
|
23
|
+
values[entry.requestMethod] = decodeScalar(entry, entry.requestMethod, request.method.toUpperCase(), domain);
|
|
25
24
|
}
|
|
26
25
|
let url;
|
|
27
26
|
try {
|
|
@@ -41,7 +40,7 @@ export function decode(entry, request, validator, served) {
|
|
|
41
40
|
const found = url.searchParams.getAll(wire);
|
|
42
41
|
if (found.length !== 1)
|
|
43
42
|
invalidRequest(`Query parameter ${wire} must occur exactly once.`);
|
|
44
|
-
values[name] = decodeScalar(entry, name, found[0],
|
|
43
|
+
values[name] = decodeScalar(entry, name, found[0], domain);
|
|
45
44
|
}
|
|
46
45
|
for (const [name, pick] of Object.entries(entry.headers ?? {})) {
|
|
47
46
|
if (pick === '*') {
|
|
@@ -55,12 +54,12 @@ export function decode(entry, request, validator, served) {
|
|
|
55
54
|
const value = headers[pick.toLowerCase()];
|
|
56
55
|
if (value === undefined)
|
|
57
56
|
invalidRequest(`Missing header ${pick}.`);
|
|
58
|
-
values[name] = decodeScalar(entry, name, value,
|
|
57
|
+
values[name] = decodeScalar(entry, name, value, domain);
|
|
59
58
|
}
|
|
60
59
|
}
|
|
61
60
|
if (entry.body === '*') {
|
|
62
61
|
const body = parseJsonObject(request.body);
|
|
63
|
-
const allowed = remainderFields(entry,
|
|
62
|
+
const allowed = remainderFields(entry, domain);
|
|
64
63
|
for (const name of Object.keys(body)) {
|
|
65
64
|
if (!allowed.has(name)) {
|
|
66
65
|
invalidRequest(`JSON body field ${name} is not owned by the route remainder mapping.`);
|
|
@@ -112,34 +111,25 @@ export function decode(entry, request, validator, served) {
|
|
|
112
111
|
}
|
|
113
112
|
throw cause;
|
|
114
113
|
}
|
|
115
|
-
const
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
kind: Ref.namespace(ref),
|
|
121
|
-
name: Ref.member(ref),
|
|
122
|
-
}), Ref.child(ref)).raw
|
|
123
|
-
: Path.instanceMethod(Path.from(receiver), Ref.child(ref)).raw
|
|
124
|
-
: Path.project({
|
|
125
|
-
origin: Key.origin(entry.callable),
|
|
126
|
-
kind: 'function',
|
|
127
|
-
name: Ref.member(ref),
|
|
128
|
-
}).raw;
|
|
114
|
+
const target = Object.freeze({
|
|
115
|
+
callable: entry.callable,
|
|
116
|
+
revision: domain.revision,
|
|
117
|
+
...(receiver === undefined ? {} : { instance: receiver }),
|
|
118
|
+
});
|
|
129
119
|
return Object.freeze({
|
|
130
120
|
call: Object.freeze({ target, input }),
|
|
131
121
|
...(credential === undefined ? {} : { credential }),
|
|
132
122
|
...(routing === undefined ? {} : { routing }),
|
|
133
123
|
});
|
|
134
124
|
}
|
|
135
|
-
function remainderFields(entry,
|
|
125
|
+
function remainderFields(entry, domain) {
|
|
136
126
|
const claimed = new Set([
|
|
137
127
|
...[...entry.href.matchAll(PLACEHOLDER)].map((item) => item[1]),
|
|
138
128
|
...(entry.requestMethod === undefined ? [] : [entry.requestMethod]),
|
|
139
129
|
...Object.keys(entry.query ?? {}),
|
|
140
130
|
...Object.keys(entry.headers ?? {}),
|
|
141
131
|
]);
|
|
142
|
-
const fields =
|
|
132
|
+
const fields = domain.callable(entry.callable)?.inputFields ?? [];
|
|
143
133
|
const allowed = new Set(fields.filter((name) => !claimed.has(name)));
|
|
144
134
|
const receiver = entry.target.kind === 'method' && entry.target.dispatch === 'instance'
|
|
145
135
|
? entry.target.receiver
|
|
@@ -149,4 +139,3 @@ function remainderFields(entry, validator) {
|
|
|
149
139
|
}
|
|
150
140
|
return allowed;
|
|
151
141
|
}
|
|
152
|
-
//# sourceMappingURL=decode.js.map
|
package/dist/routes/encode.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Domain } from '@astrale-os/kernel-dsl/v1';
|
|
2
2
|
import type { Invocation, Request } from './request.js';
|
|
3
3
|
import type { Route } from './table.js';
|
|
4
|
-
export declare function encode(entry: Route, invocation: Invocation,
|
|
5
|
-
//# sourceMappingURL=encode.d.ts.map
|
|
4
|
+
export declare function encode(entry: Route, invocation: Invocation, domain: Domain): Request;
|