@astrale-os/kernel-protocol 0.5.0-beta.2
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/LICENSE +202 -0
- package/dist/artifact/index.d.ts +2 -0
- package/dist/artifact/index.d.ts.map +1 -0
- package/dist/artifact/index.js +2 -0
- package/dist/artifact/index.js.map +1 -0
- package/dist/artifact/ref.d.ts +11 -0
- package/dist/artifact/ref.d.ts.map +1 -0
- package/dist/artifact/ref.js +71 -0
- package/dist/artifact/ref.js.map +1 -0
- package/dist/codecs/codec.d.ts +14 -0
- package/dist/codecs/codec.d.ts.map +1 -0
- package/dist/codecs/codec.js +7 -0
- package/dist/codecs/codec.js.map +1 -0
- package/dist/codecs/index.d.ts +5 -0
- package/dist/codecs/index.d.ts.map +1 -0
- package/dist/codecs/index.js +5 -0
- package/dist/codecs/index.js.map +1 -0
- package/dist/codecs/json.d.ts +3 -0
- package/dist/codecs/json.d.ts.map +1 -0
- package/dist/codecs/json.js +21 -0
- package/dist/codecs/json.js.map +1 -0
- package/dist/codecs/media-types.d.ts +3 -0
- package/dist/codecs/media-types.d.ts.map +1 -0
- package/dist/codecs/media-types.js +3 -0
- package/dist/codecs/media-types.js.map +1 -0
- package/dist/codecs/msgpack.d.ts +5 -0
- package/dist/codecs/msgpack.d.ts.map +1 -0
- package/dist/codecs/msgpack.js +51 -0
- package/dist/codecs/msgpack.js.map +1 -0
- package/dist/errors/codes.d.ts +24 -0
- package/dist/errors/codes.d.ts.map +1 -0
- package/dist/errors/codes.js +23 -0
- package/dist/errors/codes.js.map +1 -0
- package/dist/errors/http-status.d.ts +3 -0
- package/dist/errors/http-status.d.ts.map +1 -0
- package/dist/errors/http-status.js +26 -0
- package/dist/errors/http-status.js.map +1 -0
- package/dist/errors/index.d.ts +6 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +6 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/payload.d.ts +9 -0
- package/dist/errors/payload.d.ts.map +1 -0
- package/dist/errors/payload.js +37 -0
- package/dist/errors/payload.js.map +1 -0
- package/dist/errors/protocol-error.d.ts +7 -0
- package/dist/errors/protocol-error.d.ts.map +1 -0
- package/dist/errors/protocol-error.js +10 -0
- package/dist/errors/protocol-error.js.map +1 -0
- package/dist/errors/reason.d.ts +8 -0
- package/dist/errors/reason.d.ts.map +1 -0
- package/dist/errors/reason.js +44 -0
- package/dist/errors/reason.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/invocation/admission.d.ts +22 -0
- package/dist/invocation/admission.d.ts.map +1 -0
- package/dist/invocation/admission.js +169 -0
- package/dist/invocation/admission.js.map +1 -0
- package/dist/invocation/binary.d.ts +10 -0
- package/dist/invocation/binary.d.ts.map +1 -0
- package/dist/invocation/binary.js +24 -0
- package/dist/invocation/binary.js.map +1 -0
- package/dist/invocation/binding-codecs.d.ts +9 -0
- package/dist/invocation/binding-codecs.d.ts.map +1 -0
- package/dist/invocation/binding-codecs.js +28 -0
- package/dist/invocation/binding-codecs.js.map +1 -0
- package/dist/invocation/cancellation.d.ts +9 -0
- package/dist/invocation/cancellation.d.ts.map +1 -0
- package/dist/invocation/cancellation.js +17 -0
- package/dist/invocation/cancellation.js.map +1 -0
- package/dist/invocation/correlation.d.ts +3 -0
- package/dist/invocation/correlation.d.ts.map +1 -0
- package/dist/invocation/correlation.js +8 -0
- package/dist/invocation/correlation.js.map +1 -0
- package/dist/invocation/delegate.d.ts +25 -0
- package/dist/invocation/delegate.d.ts.map +1 -0
- package/dist/invocation/delegate.js +44 -0
- package/dist/invocation/delegate.js.map +1 -0
- package/dist/invocation/http/binary.d.ts +6 -0
- package/dist/invocation/http/binary.d.ts.map +1 -0
- package/dist/invocation/http/binary.js +89 -0
- package/dist/invocation/http/binary.js.map +1 -0
- package/dist/invocation/http/index.d.ts +5 -0
- package/dist/invocation/http/index.d.ts.map +1 -0
- package/dist/invocation/http/index.js +5 -0
- package/dist/invocation/http/index.js.map +1 -0
- package/dist/invocation/http/negotiation.d.ts +4 -0
- package/dist/invocation/http/negotiation.d.ts.map +1 -0
- package/dist/invocation/http/negotiation.js +208 -0
- package/dist/invocation/http/negotiation.js.map +1 -0
- package/dist/invocation/http/stream.d.ts +6 -0
- package/dist/invocation/http/stream.d.ts.map +1 -0
- package/dist/invocation/http/stream.js +16 -0
- package/dist/invocation/http/stream.js.map +1 -0
- package/dist/invocation/http/trace.d.ts +7 -0
- package/dist/invocation/http/trace.d.ts.map +1 -0
- package/dist/invocation/http/trace.js +25 -0
- package/dist/invocation/http/trace.js.map +1 -0
- package/dist/invocation/idempotency.d.ts +11 -0
- package/dist/invocation/idempotency.d.ts.map +1 -0
- package/dist/invocation/idempotency.js +14 -0
- package/dist/invocation/idempotency.js.map +1 -0
- package/dist/invocation/index.d.ts +20 -0
- package/dist/invocation/index.d.ts.map +1 -0
- package/dist/invocation/index.js +20 -0
- package/dist/invocation/index.js.map +1 -0
- package/dist/invocation/miss.d.ts +8 -0
- package/dist/invocation/miss.d.ts.map +1 -0
- package/dist/invocation/miss.js +14 -0
- package/dist/invocation/miss.js.map +1 -0
- package/dist/invocation/redirect.d.ts +33 -0
- package/dist/invocation/redirect.d.ts.map +1 -0
- package/dist/invocation/redirect.js +68 -0
- package/dist/invocation/redirect.js.map +1 -0
- package/dist/invocation/request.d.ts +22 -0
- package/dist/invocation/request.d.ts.map +1 -0
- package/dist/invocation/request.js +55 -0
- package/dist/invocation/request.js.map +1 -0
- package/dist/invocation/response.d.ts +17 -0
- package/dist/invocation/response.d.ts.map +1 -0
- package/dist/invocation/response.js +34 -0
- package/dist/invocation/response.js.map +1 -0
- package/dist/invocation/routing.d.ts +14 -0
- package/dist/invocation/routing.d.ts.map +1 -0
- package/dist/invocation/routing.js +34 -0
- package/dist/invocation/routing.js.map +1 -0
- package/dist/invocation/schema.d.ts +10 -0
- package/dist/invocation/schema.d.ts.map +1 -0
- package/dist/invocation/schema.js +20 -0
- package/dist/invocation/schema.js.map +1 -0
- package/dist/invocation/service-reason.d.ts +41 -0
- package/dist/invocation/service-reason.d.ts.map +1 -0
- package/dist/invocation/service-reason.js +74 -0
- package/dist/invocation/service-reason.js.map +1 -0
- package/dist/invocation/stale-route.d.ts +11 -0
- package/dist/invocation/stale-route.d.ts.map +1 -0
- package/dist/invocation/stale-route.js +19 -0
- package/dist/invocation/stale-route.js.map +1 -0
- package/dist/invocation/stream.d.ts +26 -0
- package/dist/invocation/stream.d.ts.map +1 -0
- package/dist/invocation/stream.js +41 -0
- package/dist/invocation/stream.js.map +1 -0
- package/dist/invocation/target.d.ts +9 -0
- package/dist/invocation/target.d.ts.map +1 -0
- package/dist/invocation/target.js +12 -0
- package/dist/invocation/target.js.map +1 -0
- package/dist/invocation/trace.d.ts +10 -0
- package/dist/invocation/trace.d.ts.map +1 -0
- package/dist/invocation/trace.js +87 -0
- package/dist/invocation/trace.js.map +1 -0
- package/dist/invocation/version.d.ts +3 -0
- package/dist/invocation/version.d.ts.map +1 -0
- package/dist/invocation/version.js +2 -0
- package/dist/invocation/version.js.map +1 -0
- package/dist/invocation/websocket/binary.d.ts +4 -0
- package/dist/invocation/websocket/binary.d.ts.map +1 -0
- package/dist/invocation/websocket/binary.js +71 -0
- package/dist/invocation/websocket/binary.js.map +1 -0
- package/dist/invocation/websocket/index.d.ts +3 -0
- package/dist/invocation/websocket/index.d.ts.map +1 -0
- package/dist/invocation/websocket/index.js +3 -0
- package/dist/invocation/websocket/index.js.map +1 -0
- package/dist/invocation/websocket/subprotocol.d.ts +11 -0
- package/dist/invocation/websocket/subprotocol.d.ts.map +1 -0
- package/dist/invocation/websocket/subprotocol.js +30 -0
- package/dist/invocation/websocket/subprotocol.js.map +1 -0
- package/dist/issuer/configuration.d.ts +15 -0
- package/dist/issuer/configuration.d.ts.map +1 -0
- package/dist/issuer/configuration.js +87 -0
- package/dist/issuer/configuration.js.map +1 -0
- package/dist/issuer/error.d.ts +8 -0
- package/dist/issuer/error.d.ts.map +1 -0
- package/dist/issuer/error.js +12 -0
- package/dist/issuer/error.js.map +1 -0
- package/dist/issuer/exchange.d.ts +26 -0
- package/dist/issuer/exchange.d.ts.map +1 -0
- package/dist/issuer/exchange.js +130 -0
- package/dist/issuer/exchange.js.map +1 -0
- package/dist/issuer/hosted.d.ts +3 -0
- package/dist/issuer/hosted.d.ts.map +1 -0
- package/dist/issuer/hosted.js +8 -0
- package/dist/issuer/hosted.js.map +1 -0
- package/dist/issuer/index.d.ts +7 -0
- package/dist/issuer/index.d.ts.map +1 -0
- package/dist/issuer/index.js +7 -0
- package/dist/issuer/index.js.map +1 -0
- package/dist/issuer/key-set.d.ts +7 -0
- package/dist/issuer/key-set.d.ts.map +1 -0
- package/dist/issuer/key-set.js +48 -0
- package/dist/issuer/key-set.js.map +1 -0
- package/dist/issuer/paths.d.ts +7 -0
- package/dist/issuer/paths.d.ts.map +1 -0
- package/dist/issuer/paths.js +11 -0
- package/dist/issuer/paths.js.map +1 -0
- package/dist/issuer/url.d.ts +3 -0
- package/dist/issuer/url.d.ts.map +1 -0
- package/dist/issuer/url.js +34 -0
- package/dist/issuer/url.js.map +1 -0
- package/dist/publication/bindings/callable.d.ts +9 -0
- package/dist/publication/bindings/callable.d.ts.map +1 -0
- package/dist/publication/bindings/callable.js +32 -0
- package/dist/publication/bindings/callable.js.map +1 -0
- package/dist/publication/bindings/index.d.ts +4 -0
- package/dist/publication/bindings/index.d.ts.map +1 -0
- package/dist/publication/bindings/index.js +4 -0
- package/dist/publication/bindings/index.js.map +1 -0
- package/dist/publication/bindings/invocation.d.ts +6 -0
- package/dist/publication/bindings/invocation.d.ts.map +1 -0
- package/dist/publication/bindings/invocation.js +14 -0
- package/dist/publication/bindings/invocation.js.map +1 -0
- package/dist/publication/bindings/view.d.ts +8 -0
- package/dist/publication/bindings/view.d.ts.map +1 -0
- package/dist/publication/bindings/view.js +29 -0
- package/dist/publication/bindings/view.js.map +1 -0
- package/dist/publication/bundle.d.ts +16 -0
- package/dist/publication/bundle.d.ts.map +1 -0
- package/dist/publication/bundle.js +65 -0
- package/dist/publication/bundle.js.map +1 -0
- package/dist/publication/content.d.ts +11 -0
- package/dist/publication/content.d.ts.map +1 -0
- package/dist/publication/content.js +56 -0
- package/dist/publication/content.js.map +1 -0
- package/dist/publication/delivery/attestation.d.ts +7 -0
- package/dist/publication/delivery/attestation.d.ts.map +1 -0
- package/dist/publication/delivery/attestation.js +11 -0
- package/dist/publication/delivery/attestation.js.map +1 -0
- package/dist/publication/delivery/claims.d.ts +16 -0
- package/dist/publication/delivery/claims.d.ts.map +1 -0
- package/dist/publication/delivery/claims.js +62 -0
- package/dist/publication/delivery/claims.js.map +1 -0
- package/dist/publication/delivery/delivery.d.ts +10 -0
- package/dist/publication/delivery/delivery.d.ts.map +1 -0
- package/dist/publication/delivery/delivery.js +30 -0
- package/dist/publication/delivery/delivery.js.map +1 -0
- package/dist/publication/delivery/error.d.ts +8 -0
- package/dist/publication/delivery/error.d.ts.map +1 -0
- package/dist/publication/delivery/error.js +12 -0
- package/dist/publication/delivery/error.js.map +1 -0
- package/dist/publication/delivery/index.d.ts +7 -0
- package/dist/publication/delivery/index.d.ts.map +1 -0
- package/dist/publication/delivery/index.js +7 -0
- package/dist/publication/delivery/index.js.map +1 -0
- package/dist/publication/delivery/limits.d.ts +5 -0
- package/dist/publication/delivery/limits.d.ts.map +1 -0
- package/dist/publication/delivery/limits.js +5 -0
- package/dist/publication/delivery/limits.js.map +1 -0
- package/dist/publication/delivery/request.d.ts +16 -0
- package/dist/publication/delivery/request.d.ts.map +1 -0
- package/dist/publication/delivery/request.js +52 -0
- package/dist/publication/delivery/request.js.map +1 -0
- package/dist/publication/delivery-endpoint.d.ts +12 -0
- package/dist/publication/delivery-endpoint.d.ts.map +1 -0
- package/dist/publication/delivery-endpoint.js +23 -0
- package/dist/publication/delivery-endpoint.js.map +1 -0
- package/dist/publication/error.d.ts +8 -0
- package/dist/publication/error.d.ts.map +1 -0
- package/dist/publication/error.js +12 -0
- package/dist/publication/error.js.map +1 -0
- package/dist/publication/etag.d.ts +7 -0
- package/dist/publication/etag.d.ts.map +1 -0
- package/dist/publication/etag.js +80 -0
- package/dist/publication/etag.js.map +1 -0
- package/dist/publication/index.d.ts +14 -0
- package/dist/publication/index.d.ts.map +1 -0
- package/dist/publication/index.js +8 -0
- package/dist/publication/index.js.map +1 -0
- package/dist/publication/manifest.d.ts +7 -0
- package/dist/publication/manifest.d.ts.map +1 -0
- package/dist/publication/manifest.js +26 -0
- package/dist/publication/manifest.js.map +1 -0
- package/dist/publication/publication.d.ts +39 -0
- package/dist/publication/publication.d.ts.map +1 -0
- package/dist/publication/publication.js +190 -0
- package/dist/publication/publication.js.map +1 -0
- package/dist/publication/reference.d.ts +17 -0
- package/dist/publication/reference.d.ts.map +1 -0
- package/dist/publication/reference.js +68 -0
- package/dist/publication/reference.js.map +1 -0
- package/dist/publication/requirements.d.ts +26 -0
- package/dist/publication/requirements.d.ts.map +1 -0
- package/dist/publication/requirements.js +180 -0
- package/dist/publication/requirements.js.map +1 -0
- package/dist/publication/route.d.ts +33 -0
- package/dist/publication/route.d.ts.map +1 -0
- package/dist/publication/route.js +132 -0
- package/dist/publication/route.js.map +1 -0
- package/dist/publication/schema.d.ts +8 -0
- package/dist/publication/schema.d.ts.map +1 -0
- package/dist/publication/schema.js +16 -0
- package/dist/publication/schema.js.map +1 -0
- package/dist/routes/compile.d.ts +5 -0
- package/dist/routes/compile.d.ts.map +1 -0
- package/dist/routes/compile.js +69 -0
- package/dist/routes/compile.js.map +1 -0
- package/dist/routes/credential.d.ts +9 -0
- package/dist/routes/credential.d.ts.map +1 -0
- package/dist/routes/credential.js +119 -0
- package/dist/routes/credential.js.map +1 -0
- package/dist/routes/decode.d.ts +4 -0
- package/dist/routes/decode.d.ts.map +1 -0
- package/dist/routes/decode.js +147 -0
- package/dist/routes/decode.js.map +1 -0
- package/dist/routes/encode.d.ts +4 -0
- package/dist/routes/encode.d.ts.map +1 -0
- package/dist/routes/encode.js +147 -0
- package/dist/routes/encode.js.map +1 -0
- package/dist/routes/error-response.d.ts +6 -0
- package/dist/routes/error-response.d.ts.map +1 -0
- package/dist/routes/error-response.js +32 -0
- package/dist/routes/error-response.js.map +1 -0
- package/dist/routes/error.d.ts +9 -0
- package/dist/routes/error.d.ts.map +1 -0
- package/dist/routes/error.js +15 -0
- package/dist/routes/error.js.map +1 -0
- package/dist/routes/index.d.ts +13 -0
- package/dist/routes/index.d.ts.map +1 -0
- package/dist/routes/index.js +13 -0
- package/dist/routes/index.js.map +1 -0
- package/dist/routes/mapping.d.ts +6 -0
- package/dist/routes/mapping.d.ts.map +1 -0
- package/dist/routes/mapping.js +135 -0
- package/dist/routes/mapping.js.map +1 -0
- package/dist/routes/match.d.ts +5 -0
- package/dist/routes/match.d.ts.map +1 -0
- package/dist/routes/match.js +9 -0
- package/dist/routes/match.js.map +1 -0
- package/dist/routes/request.d.ts +27 -0
- package/dist/routes/request.d.ts.map +1 -0
- package/dist/routes/request.js +52 -0
- package/dist/routes/request.js.map +1 -0
- package/dist/routes/reservation.d.ts +4 -0
- package/dist/routes/reservation.d.ts.map +1 -0
- package/dist/routes/reservation.js +34 -0
- package/dist/routes/reservation.js.map +1 -0
- package/dist/routes/route.d.ts +13 -0
- package/dist/routes/route.d.ts.map +1 -0
- package/dist/routes/route.js +6 -0
- package/dist/routes/route.js.map +1 -0
- package/dist/routes/routing.d.ts +23 -0
- package/dist/routes/routing.d.ts.map +1 -0
- package/dist/routes/routing.js +88 -0
- package/dist/routes/routing.js.map +1 -0
- package/dist/routes/scalar.d.ts +7 -0
- package/dist/routes/scalar.d.ts.map +1 -0
- package/dist/routes/scalar.js +58 -0
- package/dist/routes/scalar.js.map +1 -0
- package/dist/routes/select.d.ts +4 -0
- package/dist/routes/select.d.ts.map +1 -0
- package/dist/routes/select.js +17 -0
- package/dist/routes/select.js.map +1 -0
- package/dist/routes/stream.d.ts +15 -0
- package/dist/routes/stream.d.ts.map +1 -0
- package/dist/routes/stream.js +51 -0
- package/dist/routes/stream.js.map +1 -0
- package/dist/routes/template.d.ts +9 -0
- package/dist/routes/template.d.ts.map +1 -0
- package/dist/routes/template.js +228 -0
- package/dist/routes/template.js.map +1 -0
- package/dist/runtime/artifact.d.ts +48 -0
- package/dist/runtime/artifact.d.ts.map +1 -0
- package/dist/runtime/artifact.js +177 -0
- package/dist/runtime/artifact.js.map +1 -0
- package/dist/runtime/index.d.ts +2 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +2 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/schema/index.d.ts +2 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +2 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/installation/index.d.ts +2 -0
- package/dist/schema/installation/index.d.ts.map +1 -0
- package/dist/schema/installation/index.js +2 -0
- package/dist/schema/installation/index.js.map +1 -0
- package/dist/schema/installation/introspection/codec.d.ts +6 -0
- package/dist/schema/installation/introspection/codec.d.ts.map +1 -0
- package/dist/schema/installation/introspection/codec.js +273 -0
- package/dist/schema/installation/introspection/codec.js.map +1 -0
- package/dist/schema/installation/introspection/index.d.ts +3 -0
- package/dist/schema/installation/introspection/index.d.ts.map +1 -0
- package/dist/schema/installation/introspection/index.js +2 -0
- package/dist/schema/installation/introspection/index.js.map +1 -0
- package/dist/schema/installation/introspection/result.d.ts +34 -0
- package/dist/schema/installation/introspection/result.d.ts.map +1 -0
- package/dist/schema/installation/introspection/result.js +2 -0
- package/dist/schema/installation/introspection/result.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import * as publication from '../publication/index.js';
|
|
2
|
+
import { exactFields, invalid, issuerId, portableObject, requestId, required, string, } from './admission.js';
|
|
3
|
+
import { admitTrace } from './trace.js';
|
|
4
|
+
const ROUTE_FIELDS = new Set(['endpoint', 'via']);
|
|
5
|
+
const VIA_FIELDS = new Set(['kind', 'publication', 'issuer']);
|
|
6
|
+
const REDIRECT_FIELDS = new Set(['kind', 'id', 'route', 'credential', 'trace']);
|
|
7
|
+
export function acceptRoute(input) {
|
|
8
|
+
const object = portableObject(input, 'route');
|
|
9
|
+
exactFields(object, ROUTE_FIELDS, 'route');
|
|
10
|
+
required(object, ['endpoint', 'via'], 'route');
|
|
11
|
+
try {
|
|
12
|
+
const via = portableObject(object.via, 'route.via');
|
|
13
|
+
exactFields(via, VIA_FIELDS, 'route.via');
|
|
14
|
+
required(via, ['kind', 'publication', 'issuer'], 'route.via');
|
|
15
|
+
if (via.kind !== 'via')
|
|
16
|
+
invalid('route.via.kind must be "via"');
|
|
17
|
+
return Object.freeze({
|
|
18
|
+
endpoint: publication.acceptInvocationEndpoints(object.endpoint),
|
|
19
|
+
via: Object.freeze({
|
|
20
|
+
kind: 'via',
|
|
21
|
+
publication: publication.acceptReference(via.publication),
|
|
22
|
+
issuer: issuerId(via.issuer, 'route.via.issuer'),
|
|
23
|
+
}),
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
catch (cause) {
|
|
27
|
+
if (cause instanceof publication.PublicationError) {
|
|
28
|
+
return invalid(`route is invalid: ${cause.message}`);
|
|
29
|
+
}
|
|
30
|
+
throw cause;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/** Project one semantic remote binding into its admitted protocol route representation. */
|
|
34
|
+
export function remoteRoute(origin, binding, issuer) {
|
|
35
|
+
return acceptRoute({
|
|
36
|
+
endpoint: binding.endpoint,
|
|
37
|
+
via: {
|
|
38
|
+
kind: 'via',
|
|
39
|
+
publication: {
|
|
40
|
+
origin,
|
|
41
|
+
identity: { issuer: binding.issuer, subject: binding.subject },
|
|
42
|
+
revision: binding.revision,
|
|
43
|
+
etag: binding.etag,
|
|
44
|
+
},
|
|
45
|
+
issuer,
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
export function decodeRedirect(input) {
|
|
50
|
+
const object = portableObject(input, 'redirect');
|
|
51
|
+
exactFields(object, REDIRECT_FIELDS, 'redirect');
|
|
52
|
+
required(object, ['kind', 'id', 'route'], 'redirect');
|
|
53
|
+
if (object.kind !== 'redirect')
|
|
54
|
+
invalid('redirect.kind must be "redirect"');
|
|
55
|
+
const route = acceptRoute(object.route);
|
|
56
|
+
const credential = object.credential === undefined ? undefined : string(object.credential, 'redirect.credential');
|
|
57
|
+
const trace = object.trace === undefined ? undefined : admitTrace(object.trace);
|
|
58
|
+
if (credential !== undefined && credential.length === 0)
|
|
59
|
+
invalid('redirect.credential must be non-empty');
|
|
60
|
+
return Object.freeze({
|
|
61
|
+
kind: 'redirect',
|
|
62
|
+
id: requestId(object.id, 'redirect.id'),
|
|
63
|
+
route,
|
|
64
|
+
...(credential === undefined ? {} : { credential }),
|
|
65
|
+
...(trace === undefined ? {} : { trace }),
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=redirect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redirect.js","sourceRoot":"","sources":["../../invocation/redirect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { RequestId } from './correlation.js';
|
|
2
|
+
import type { Delegate } from './delegate.js';
|
|
3
|
+
import type { IdempotencyKey } from './idempotency.js';
|
|
4
|
+
import type { Routing } from './routing.js';
|
|
5
|
+
import type { SchemaTarget } from './schema.js';
|
|
6
|
+
import type { Call } from './target.js';
|
|
7
|
+
import type { Trace } from './trace.js';
|
|
8
|
+
import type { Version } from './version.js';
|
|
9
|
+
export interface Request {
|
|
10
|
+
readonly version: Version;
|
|
11
|
+
readonly id: RequestId;
|
|
12
|
+
readonly call: Call;
|
|
13
|
+
readonly credential?: string;
|
|
14
|
+
readonly delegate?: Delegate;
|
|
15
|
+
readonly routing?: Routing;
|
|
16
|
+
/** Source-Kernel precondition; forbidden on an already-routed destination request. */
|
|
17
|
+
readonly schema?: SchemaTarget;
|
|
18
|
+
readonly idempotencyKey?: IdempotencyKey;
|
|
19
|
+
readonly trace?: Trace;
|
|
20
|
+
}
|
|
21
|
+
export declare function decodeRequest(input: unknown): Request;
|
|
22
|
+
//# sourceMappingURL=request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../invocation/request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAU3C,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAA;IACtB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IACnB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAA;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,sFAAsF;IACtF,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAA;IAC9B,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAA;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CACvB;AAcD,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAkCrD"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { exactFields, invalid, portableObject, requestId, required, string } from './admission.js';
|
|
2
|
+
import { acceptDelegate } from './delegate.js';
|
|
3
|
+
import { acceptIdempotencyKey } from './idempotency.js';
|
|
4
|
+
import { acceptRouting } from './routing.js';
|
|
5
|
+
import { acceptSchemaTarget } from './schema.js';
|
|
6
|
+
import { acceptCall } from './target.js';
|
|
7
|
+
import { admitTrace } from './trace.js';
|
|
8
|
+
const REQUEST_FIELDS = new Set([
|
|
9
|
+
'version',
|
|
10
|
+
'id',
|
|
11
|
+
'call',
|
|
12
|
+
'credential',
|
|
13
|
+
'delegate',
|
|
14
|
+
'routing',
|
|
15
|
+
'schema',
|
|
16
|
+
'idempotencyKey',
|
|
17
|
+
'trace',
|
|
18
|
+
]);
|
|
19
|
+
export function decodeRequest(input) {
|
|
20
|
+
const object = portableObject(input, 'request');
|
|
21
|
+
exactFields(object, REQUEST_FIELDS, 'request');
|
|
22
|
+
required(object, ['version', 'id', 'call'], 'request');
|
|
23
|
+
if (object.version !== 2)
|
|
24
|
+
invalid('request.version must be 2');
|
|
25
|
+
const credential = object.credential === undefined ? undefined : string(object.credential, 'request.credential');
|
|
26
|
+
const delegate = object.delegate === undefined ? undefined : acceptDelegate(object.delegate);
|
|
27
|
+
const routing = object.routing === undefined ? undefined : acceptRouting(object.routing);
|
|
28
|
+
const schema = object.schema === undefined ? undefined : acceptSchemaTarget(object.schema);
|
|
29
|
+
const trace = object.trace === undefined ? undefined : admitTrace(object.trace);
|
|
30
|
+
if (routing?.kind === 'via') {
|
|
31
|
+
if (delegate !== undefined)
|
|
32
|
+
invalid('destination requests with via routing forbid delegate');
|
|
33
|
+
if (schema !== undefined)
|
|
34
|
+
invalid('destination requests with via routing forbid schema target');
|
|
35
|
+
}
|
|
36
|
+
else if ((credential === undefined) !== (delegate === undefined)) {
|
|
37
|
+
invalid('source requests require credential and delegate together');
|
|
38
|
+
}
|
|
39
|
+
return Object.freeze({
|
|
40
|
+
version: 2,
|
|
41
|
+
id: requestId(object.id, 'request.id'),
|
|
42
|
+
call: acceptCall(object.call),
|
|
43
|
+
...(credential === undefined ? {} : { credential }),
|
|
44
|
+
...(delegate === undefined ? {} : { delegate }),
|
|
45
|
+
...(routing === undefined ? {} : { routing }),
|
|
46
|
+
...(schema === undefined ? {} : { schema }),
|
|
47
|
+
...(object.idempotencyKey === undefined
|
|
48
|
+
? {}
|
|
49
|
+
: {
|
|
50
|
+
idempotencyKey: acceptIdempotencyKey(object.idempotencyKey, 'request.idempotencyKey'),
|
|
51
|
+
}),
|
|
52
|
+
...(trace === undefined ? {} : { trace }),
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../invocation/request.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Value } from '@astrale-os/kernel-dsl/value';
|
|
2
|
+
import type { ErrorPayload } from '../errors/index.js';
|
|
3
|
+
import type { RequestId } from './correlation.js';
|
|
4
|
+
import type { Miss } from './miss.js';
|
|
5
|
+
import type { Redirect } from './redirect.js';
|
|
6
|
+
import type { Stale } from './stale-route.js';
|
|
7
|
+
export interface SuccessResponse<Result extends Value = Value> {
|
|
8
|
+
readonly result: Result;
|
|
9
|
+
readonly id: RequestId;
|
|
10
|
+
}
|
|
11
|
+
export interface ErrorResponse {
|
|
12
|
+
readonly error: ErrorPayload;
|
|
13
|
+
readonly id: RequestId;
|
|
14
|
+
}
|
|
15
|
+
export type Response<Result extends Value = Value> = SuccessResponse<Result> | ErrorResponse | Redirect | Stale | Miss;
|
|
16
|
+
export declare function decodeResponse(input: unknown): Response;
|
|
17
|
+
//# sourceMappingURL=response.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../invocation/response.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAA;AAEzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAc7C,MAAM,WAAW,eAAe,CAAC,MAAM,SAAS,KAAK,GAAG,KAAK;IAC3D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAA;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAA;IAC5B,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAA;CACvB;AAED,MAAM,MAAM,QAAQ,CAAC,MAAM,SAAS,KAAK,GAAG,KAAK,IAC7C,eAAe,CAAC,MAAM,CAAC,GACvB,aAAa,GACb,QAAQ,GACR,KAAK,GACL,IAAI,CAAA;AAKR,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAyBvD"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { errorPayload, exactFields, invalid, portableObject, requestId, required, } from './admission.js';
|
|
2
|
+
import { decodeMiss } from './miss.js';
|
|
3
|
+
import { decodeRedirect } from './redirect.js';
|
|
4
|
+
import { decodeStale } from './stale-route.js';
|
|
5
|
+
const SUCCESS_FIELDS = new Set(['result', 'id']);
|
|
6
|
+
const ERROR_FIELDS = new Set(['error', 'id']);
|
|
7
|
+
export function decodeResponse(input) {
|
|
8
|
+
const object = portableObject(input, 'response');
|
|
9
|
+
const hasResult = Object.hasOwn(object, 'result');
|
|
10
|
+
const hasError = Object.hasOwn(object, 'error');
|
|
11
|
+
if (hasResult || hasError) {
|
|
12
|
+
if (hasResult === hasError)
|
|
13
|
+
invalid('response must contain exactly one of result or error');
|
|
14
|
+
if (hasResult) {
|
|
15
|
+
exactFields(object, SUCCESS_FIELDS, 'response');
|
|
16
|
+
required(object, ['id'], 'response');
|
|
17
|
+
return Object.freeze({ result: object.result, id: requestId(object.id, 'response.id') });
|
|
18
|
+
}
|
|
19
|
+
exactFields(object, ERROR_FIELDS, 'response');
|
|
20
|
+
required(object, ['id', 'error'], 'response');
|
|
21
|
+
return Object.freeze({
|
|
22
|
+
error: errorPayload(object.error, 'response.error'),
|
|
23
|
+
id: requestId(object.id, 'response.id'),
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
if (object.kind === 'redirect')
|
|
27
|
+
return decodeRedirect(object);
|
|
28
|
+
if (object.kind === 'stale')
|
|
29
|
+
return decodeStale(object);
|
|
30
|
+
if (object.kind === 'miss')
|
|
31
|
+
return decodeMiss(object);
|
|
32
|
+
return invalid('response must contain a result, error, redirect, stale, or miss control');
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=response.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response.js","sourceRoot":"","sources":["../../invocation/response.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,YAAY,EACZ,WAAW,EACX,OAAO,EACP,cAAc,EACd,SAAS,EACT,QAAQ,GACT,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAmB9C,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAA;AAChD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAA;AAE7C,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;IAChD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/C,IAAI,SAAS,IAAI,QAAQ,EAAE,CAAC;QAC1B,IAAI,SAAS,KAAK,QAAQ;YAAE,OAAO,CAAC,sDAAsD,CAAC,CAAA;QAE3F,IAAI,SAAS,EAAE,CAAC;YACd,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,UAAU,CAAC,CAAA;YAC/C,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAA;YACpC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAO,EAAE,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,CAAC,EAAE,CAAC,CAAA;QAC3F,CAAC;QAED,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,CAAA;QAC7C,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,UAAU,CAAC,CAAA;QAC7C,OAAO,MAAM,CAAC,MAAM,CAAC;YACnB,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,gBAAgB,CAAC;YACnD,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,CAAC;SACxC,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,cAAc,CAAC,MAAM,CAAC,CAAA;IAC7D,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,WAAW,CAAC,MAAM,CAAC,CAAA;IACvD,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,UAAU,CAAC,MAAM,CAAC,CAAA;IACrD,OAAO,OAAO,CAAC,yEAAyE,CAAC,CAAA;AAC3F,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { IssuerId } from '@astrale-os/kernel-core/auth';
|
|
2
|
+
import type { Etag, PublicationRef } from '../publication/index.js';
|
|
3
|
+
export interface Via {
|
|
4
|
+
readonly kind: 'via';
|
|
5
|
+
readonly publication: PublicationRef;
|
|
6
|
+
readonly issuer: IssuerId;
|
|
7
|
+
}
|
|
8
|
+
export interface Refresh {
|
|
9
|
+
readonly kind: 'refresh';
|
|
10
|
+
readonly stale: Etag;
|
|
11
|
+
}
|
|
12
|
+
export type Routing = Via | Refresh;
|
|
13
|
+
export declare function acceptRouting(input: unknown): Routing;
|
|
14
|
+
//# sourceMappingURL=routing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../invocation/routing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAE5D,OAAO,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAKnE,MAAM,WAAW,GAAG;IAClB,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;IACpB,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAA;IACpC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAA;CAC1B;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAA;CACrB;AAED,MAAM,MAAM,OAAO,GAAG,GAAG,GAAG,OAAO,CAAA;AAKnC,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CA2BrD"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import * as publication from '../publication/index.js';
|
|
2
|
+
import { digest, exactFields, invalid, issuerId, portableObject, required } from './admission.js';
|
|
3
|
+
const VIA_FIELDS = new Set(['kind', 'publication', 'issuer']);
|
|
4
|
+
const REFRESH_FIELDS = new Set(['kind', 'stale']);
|
|
5
|
+
export function acceptRouting(input) {
|
|
6
|
+
const object = portableObject(input, 'routing');
|
|
7
|
+
if (object.kind === 'via') {
|
|
8
|
+
exactFields(object, VIA_FIELDS, 'via routing');
|
|
9
|
+
required(object, ['kind', 'publication', 'issuer'], 'via routing');
|
|
10
|
+
try {
|
|
11
|
+
return Object.freeze({
|
|
12
|
+
kind: 'via',
|
|
13
|
+
publication: publication.acceptReference(object.publication),
|
|
14
|
+
issuer: issuerId(object.issuer, 'via routing.issuer'),
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
catch (cause) {
|
|
18
|
+
if (cause instanceof publication.PublicationError) {
|
|
19
|
+
return invalid(`via routing.publication is invalid: ${cause.message}`);
|
|
20
|
+
}
|
|
21
|
+
throw cause;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
if (object.kind === 'refresh') {
|
|
25
|
+
exactFields(object, REFRESH_FIELDS, 'refresh routing');
|
|
26
|
+
required(object, ['kind', 'stale'], 'refresh routing');
|
|
27
|
+
return Object.freeze({
|
|
28
|
+
kind: 'refresh',
|
|
29
|
+
stale: digest(object.stale, 'refresh routing.stale'),
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
return invalid('routing.kind must be "via" or "refresh"');
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=routing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routing.js","sourceRoot":"","sources":["../../invocation/routing.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAejG,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAA;AAC7D,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;AAEjD,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;IAC/C,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC1B,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,aAAa,CAAC,CAAA;QAC9C,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,aAAa,CAAC,CAAA;QAClE,IAAI,CAAC;YACH,OAAO,MAAM,CAAC,MAAM,CAAC;gBACnB,IAAI,EAAE,KAAK;gBACX,WAAW,EAAE,WAAW,CAAC,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC;gBAC5D,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC;aACtD,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,WAAW,CAAC,gBAAgB,EAAE,CAAC;gBAClD,OAAO,OAAO,CAAC,uCAAuC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;YACxE,CAAC;YACD,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9B,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAA;QACtD,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,CAAC,CAAA;QACtD,OAAO,MAAM,CAAC,MAAM,CAAC;YACnB,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,uBAAuB,CAAC;SACrD,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,OAAO,CAAC,yCAAyC,CAAC,CAAA;AAC3D,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type schema } from '@astrale-os/kernel-dsl/v1';
|
|
2
|
+
import type { Sha256Digest } from '../publication/index.js';
|
|
3
|
+
/** Source-Kernel precondition for the active Schema Registration selected by one invocation. */
|
|
4
|
+
export type SchemaTarget = {
|
|
5
|
+
readonly target: Sha256Digest;
|
|
6
|
+
} | {
|
|
7
|
+
readonly revision: schema.Revision;
|
|
8
|
+
};
|
|
9
|
+
export declare function acceptSchemaTarget(input: unknown): SchemaTarget;
|
|
10
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../invocation/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAE5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAI3D,gGAAgG;AAChG,MAAM,MAAM,YAAY,GACpB;IAAE,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GACjC;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAA;CAAE,CAAA;AAI1C,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAe/D"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { schema as dslSchema } from '@astrale-os/kernel-dsl/v1';
|
|
2
|
+
import { digest, exactFields, invalid, portableObject } from './admission.js';
|
|
3
|
+
const FIELDS = new Set(['target', 'revision']);
|
|
4
|
+
export function acceptSchemaTarget(input) {
|
|
5
|
+
const object = portableObject(input, 'schema target');
|
|
6
|
+
exactFields(object, FIELDS, 'schema target');
|
|
7
|
+
const hasTarget = Object.hasOwn(object, 'target');
|
|
8
|
+
const hasRevision = Object.hasOwn(object, 'revision');
|
|
9
|
+
if (hasTarget === hasRevision) {
|
|
10
|
+
invalid('schema target must contain exactly one of target or revision');
|
|
11
|
+
}
|
|
12
|
+
if (hasTarget) {
|
|
13
|
+
return Object.freeze({ target: digest(object.target, 'schema target.target') });
|
|
14
|
+
}
|
|
15
|
+
if (typeof object.revision !== 'string' || !dslSchema.patterns.revision.test(object.revision)) {
|
|
16
|
+
invalid('schema target.revision must be a Schema revision');
|
|
17
|
+
}
|
|
18
|
+
return Object.freeze({ revision: object.revision });
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../invocation/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,SAAS,EAAe,MAAM,2BAA2B,CAAA;AAI5E,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAO7E,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAA;AAE9C,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;IACrD,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,CAAA;IAC5C,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IACjD,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IACrD,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;QAC9B,OAAO,CAAC,8DAA8D,CAAC,CAAA;IACzE,CAAC;IACD,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,EAAE,CAAC,CAAA;IACjF,CAAC;IACD,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9F,OAAO,CAAC,kDAAkD,CAAC,CAAA;IAC7D,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAA2B,EAAE,CAAC,CAAA;AACxE,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { Object as ValueObject } from '@astrale-os/kernel-dsl/value';
|
|
2
|
+
import * as auth from '@astrale-os/kernel-core/auth';
|
|
3
|
+
import { schema as dslSchema, type Key } from '@astrale-os/kernel-dsl/v1';
|
|
4
|
+
import type { ErrorPayload, ErrorReason } from '../errors/index.js';
|
|
5
|
+
import { CODES } from '../errors/index.js';
|
|
6
|
+
export declare const SCHEMA_UPGRADE_REQUIRED: 'SCHEMA_UPGRADE_REQUIRED';
|
|
7
|
+
export declare const SERVICE_TRUST_REQUIRED: 'SERVICE_TRUST_REQUIRED';
|
|
8
|
+
export declare const SERVICE_UNAVAILABLE: 'SERVICE_UNAVAILABLE';
|
|
9
|
+
export declare const SERVICE_CANDIDATE_INVALID: 'SERVICE_CANDIDATE_INVALID';
|
|
10
|
+
export type SchemaUpgradeRequiredDetails = ValueObject & {
|
|
11
|
+
readonly origin: Key.Origin;
|
|
12
|
+
readonly installedRevision: dslSchema.Revision;
|
|
13
|
+
readonly candidateRevision: dslSchema.Revision;
|
|
14
|
+
};
|
|
15
|
+
export type ServiceTrustRequiredDetails = ValueObject & {
|
|
16
|
+
readonly origin: Key.Origin;
|
|
17
|
+
readonly installedIssuer: auth.IssuerId;
|
|
18
|
+
readonly candidateIssuer: auth.IssuerId;
|
|
19
|
+
};
|
|
20
|
+
export type ServiceUnavailableDetails = ValueObject & {
|
|
21
|
+
readonly origin: Key.Origin;
|
|
22
|
+
readonly revision: dslSchema.Revision;
|
|
23
|
+
};
|
|
24
|
+
export type ServiceCandidateInvalidDetails = ValueObject & {
|
|
25
|
+
readonly origin: Key.Origin;
|
|
26
|
+
};
|
|
27
|
+
export type SchemaUpgradeRequiredReason = ErrorReason<typeof SCHEMA_UPGRADE_REQUIRED, SchemaUpgradeRequiredDetails>;
|
|
28
|
+
export type ServiceTrustRequiredReason = ErrorReason<typeof SERVICE_TRUST_REQUIRED, ServiceTrustRequiredDetails>;
|
|
29
|
+
export type ServiceUnavailableReason = ErrorReason<typeof SERVICE_UNAVAILABLE, ServiceUnavailableDetails>;
|
|
30
|
+
export type ServiceCandidateInvalidReason = ErrorReason<typeof SERVICE_CANDIDATE_INVALID, ServiceCandidateInvalidDetails>;
|
|
31
|
+
export type ServiceReason = SchemaUpgradeRequiredReason | ServiceTrustRequiredReason | ServiceUnavailableReason | ServiceCandidateInvalidReason;
|
|
32
|
+
export type ServiceErrorPayload = (Omit<ErrorPayload, 'code' | 'data'> & {
|
|
33
|
+
readonly code: typeof CODES.CONFLICT;
|
|
34
|
+
readonly data: SchemaUpgradeRequiredReason | ServiceTrustRequiredReason;
|
|
35
|
+
}) | (Omit<ErrorPayload, 'code' | 'data'> & {
|
|
36
|
+
readonly code: typeof CODES.BACKEND_UNAVAILABLE;
|
|
37
|
+
readonly data: ServiceUnavailableReason | ServiceCandidateInvalidReason;
|
|
38
|
+
});
|
|
39
|
+
/** Recognize only exact outer-code, reason-code, and detail-shape combinations. */
|
|
40
|
+
export declare function serviceErrorOf(input: ErrorPayload): ServiceErrorPayload | undefined;
|
|
41
|
+
//# sourceMappingURL=service-reason.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-reason.d.ts","sourceRoot":"","sources":["../../invocation/service-reason.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAEzE,OAAO,KAAK,IAAI,MAAM,8BAA8B,CAAA;AACpD,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,KAAK,GAAG,EAAE,MAAM,2BAA2B,CAAA;AAEzE,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAEnE,OAAO,EAAE,KAAK,EAAY,MAAM,oBAAoB,CAAA;AAEpD,eAAO,MAAM,uBAAuB,EAAG,yBAAkC,CAAA;AACzE,eAAO,MAAM,sBAAsB,EAAG,wBAAiC,CAAA;AACvE,eAAO,MAAM,mBAAmB,EAAG,qBAA8B,CAAA;AACjE,eAAO,MAAM,yBAAyB,EAAG,2BAAoC,CAAA;AAE7E,MAAM,MAAM,4BAA4B,GAAG,WAAW,GAAG;IACvD,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAA;IAC3B,QAAQ,CAAC,iBAAiB,EAAE,SAAS,CAAC,QAAQ,CAAA;IAC9C,QAAQ,CAAC,iBAAiB,EAAE,SAAS,CAAC,QAAQ,CAAA;CAC/C,CAAA;AAED,MAAM,MAAM,2BAA2B,GAAG,WAAW,GAAG;IACtD,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAA;IAC3B,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAA;IACvC,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAA;CACxC,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG,WAAW,GAAG;IACpD,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAA;CACtC,CAAA;AAED,MAAM,MAAM,8BAA8B,GAAG,WAAW,GAAG;IACzD,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,2BAA2B,GAAG,WAAW,CACnD,OAAO,uBAAuB,EAC9B,4BAA4B,CAC7B,CAAA;AACD,MAAM,MAAM,0BAA0B,GAAG,WAAW,CAClD,OAAO,sBAAsB,EAC7B,2BAA2B,CAC5B,CAAA;AACD,MAAM,MAAM,wBAAwB,GAAG,WAAW,CAChD,OAAO,mBAAmB,EAC1B,yBAAyB,CAC1B,CAAA;AACD,MAAM,MAAM,6BAA6B,GAAG,WAAW,CACrD,OAAO,yBAAyB,EAChC,8BAA8B,CAC/B,CAAA;AAED,MAAM,MAAM,aAAa,GACrB,2BAA2B,GAC3B,0BAA0B,GAC1B,wBAAwB,GACxB,6BAA6B,CAAA;AAEjC,MAAM,MAAM,mBAAmB,GAC3B,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG;IACrC,QAAQ,CAAC,IAAI,EAAE,OAAO,KAAK,CAAC,QAAQ,CAAA;IACpC,QAAQ,CAAC,IAAI,EAAE,2BAA2B,GAAG,0BAA0B,CAAA;CACxE,CAAC,GACF,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG;IACrC,QAAQ,CAAC,IAAI,EAAE,OAAO,KAAK,CAAC,mBAAmB,CAAA;IAC/C,QAAQ,CAAC,IAAI,EAAE,wBAAwB,GAAG,6BAA6B,CAAA;CACxE,CAAC,CAAA;AAEN,mFAAmF;AACnF,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,mBAAmB,GAAG,SAAS,CAwBnF"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import * as auth from '@astrale-os/kernel-core/auth';
|
|
2
|
+
import { schema as dslSchema } from '@astrale-os/kernel-dsl/v1';
|
|
3
|
+
import { CODES, reasonOf } from '../errors/index.js';
|
|
4
|
+
export const SCHEMA_UPGRADE_REQUIRED = 'SCHEMA_UPGRADE_REQUIRED';
|
|
5
|
+
export const SERVICE_TRUST_REQUIRED = 'SERVICE_TRUST_REQUIRED';
|
|
6
|
+
export const SERVICE_UNAVAILABLE = 'SERVICE_UNAVAILABLE';
|
|
7
|
+
export const SERVICE_CANDIDATE_INVALID = 'SERVICE_CANDIDATE_INVALID';
|
|
8
|
+
/** Recognize only exact outer-code, reason-code, and detail-shape combinations. */
|
|
9
|
+
export function serviceErrorOf(input) {
|
|
10
|
+
const reason = reasonOf(input.data);
|
|
11
|
+
if (reason === undefined)
|
|
12
|
+
return undefined;
|
|
13
|
+
switch (reason.code) {
|
|
14
|
+
case SCHEMA_UPGRADE_REQUIRED:
|
|
15
|
+
return input.code === CODES.CONFLICT && schemaUpgradeDetails(reason.details)
|
|
16
|
+
? input
|
|
17
|
+
: undefined;
|
|
18
|
+
case SERVICE_TRUST_REQUIRED:
|
|
19
|
+
return input.code === CODES.CONFLICT && serviceTrustDetails(reason.details)
|
|
20
|
+
? input
|
|
21
|
+
: undefined;
|
|
22
|
+
case SERVICE_UNAVAILABLE:
|
|
23
|
+
return input.code === CODES.BACKEND_UNAVAILABLE && serviceUnavailableDetails(reason.details)
|
|
24
|
+
? input
|
|
25
|
+
: undefined;
|
|
26
|
+
case SERVICE_CANDIDATE_INVALID:
|
|
27
|
+
return input.code === CODES.BACKEND_UNAVAILABLE && candidateInvalidDetails(reason.details)
|
|
28
|
+
? input
|
|
29
|
+
: undefined;
|
|
30
|
+
default:
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
function schemaUpgradeDetails(input) {
|
|
35
|
+
return (exact(input, ['origin', 'installedRevision', 'candidateRevision']) &&
|
|
36
|
+
isOrigin(input.origin) &&
|
|
37
|
+
isRevision(input.installedRevision) &&
|
|
38
|
+
isRevision(input.candidateRevision));
|
|
39
|
+
}
|
|
40
|
+
function serviceTrustDetails(input) {
|
|
41
|
+
return (exact(input, ['origin', 'installedIssuer', 'candidateIssuer']) &&
|
|
42
|
+
isOrigin(input.origin) &&
|
|
43
|
+
isIssuer(input.installedIssuer) &&
|
|
44
|
+
isIssuer(input.candidateIssuer));
|
|
45
|
+
}
|
|
46
|
+
function serviceUnavailableDetails(input) {
|
|
47
|
+
return (exact(input, ['origin', 'revision']) && isOrigin(input.origin) && isRevision(input.revision));
|
|
48
|
+
}
|
|
49
|
+
function candidateInvalidDetails(input) {
|
|
50
|
+
return exact(input, ['origin']) && isOrigin(input.origin);
|
|
51
|
+
}
|
|
52
|
+
function exact(input, fields) {
|
|
53
|
+
return (Object.keys(input).length === fields.length &&
|
|
54
|
+
fields.every((field) => Object.hasOwn(input, field)));
|
|
55
|
+
}
|
|
56
|
+
function isOrigin(input) {
|
|
57
|
+
return typeof input === 'string' && dslSchema.patterns.origin.test(input);
|
|
58
|
+
}
|
|
59
|
+
function isRevision(input) {
|
|
60
|
+
return typeof input === 'string' && dslSchema.patterns.revision.test(input);
|
|
61
|
+
}
|
|
62
|
+
function isIssuer(input) {
|
|
63
|
+
if (typeof input !== 'string')
|
|
64
|
+
return false;
|
|
65
|
+
try {
|
|
66
|
+
return auth.issuer.accept(input) === input;
|
|
67
|
+
}
|
|
68
|
+
catch (cause) {
|
|
69
|
+
if (cause instanceof auth.AuthValueError)
|
|
70
|
+
return false;
|
|
71
|
+
throw cause;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=service-reason.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-reason.js","sourceRoot":"","sources":["../../invocation/service-reason.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Etag } from '../publication/index.js';
|
|
2
|
+
import type { RequestId } from './correlation.js';
|
|
3
|
+
/** Reserved pre-handler routing control; never an application ErrorResponse. */
|
|
4
|
+
export interface Stale {
|
|
5
|
+
readonly kind: 'stale';
|
|
6
|
+
readonly id: RequestId;
|
|
7
|
+
readonly current: Etag;
|
|
8
|
+
}
|
|
9
|
+
export declare function decodeStale(input: unknown): Stale;
|
|
10
|
+
export declare function stale(id: RequestId, current: Etag): Stale;
|
|
11
|
+
//# sourceMappingURL=stale-route.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stale-route.d.ts","sourceRoot":"","sources":["../../invocation/stale-route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAIjD,gFAAgF;AAChF,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAA;IACtB,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAA;CACvB;AAID,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAYjD;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,GAAG,KAAK,CAEzD"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { digest, exactFields, invalid, portableObject, requestId, required } from './admission.js';
|
|
2
|
+
const FIELDS = new Set(['kind', 'id', 'current']);
|
|
3
|
+
export function decodeStale(input) {
|
|
4
|
+
const object = portableObject(input, 'stale control');
|
|
5
|
+
exactFields(object, FIELDS, 'stale control');
|
|
6
|
+
required(object, ['kind', 'id', 'current'], 'stale control');
|
|
7
|
+
if (object.kind !== 'stale') {
|
|
8
|
+
invalid('stale control.kind must be "stale"');
|
|
9
|
+
}
|
|
10
|
+
return Object.freeze({
|
|
11
|
+
kind: 'stale',
|
|
12
|
+
id: requestId(object.id, 'stale control.id'),
|
|
13
|
+
current: digest(object.current, 'stale control.current'),
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
export function stale(id, current) {
|
|
17
|
+
return Object.freeze({ kind: 'stale', id, current });
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=stale-route.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stale-route.js","sourceRoot":"","sources":["../../invocation/stale-route.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AASlG,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAA;AAEjD,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;IACrD,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,CAAA;IAC5C,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,eAAe,CAAC,CAAA;IAC5D,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC5B,OAAO,CAAC,oCAAoC,CAAC,CAAA;IAC/C,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,OAAO;QACb,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,kBAAkB,CAAC;QAC5C,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,uBAAuB,CAAC;KACzD,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,EAAa,EAAE,OAAa;IAChD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;AACtD,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Value } from '@astrale-os/kernel-dsl/value';
|
|
2
|
+
import type { ErrorPayload } from '../errors/index.js';
|
|
3
|
+
import type { RequestId } from './correlation.js';
|
|
4
|
+
export interface StreamStartFrame {
|
|
5
|
+
readonly kind: 'stream.start';
|
|
6
|
+
readonly id: RequestId;
|
|
7
|
+
}
|
|
8
|
+
export interface StreamItemFrame {
|
|
9
|
+
readonly kind: 'stream.item';
|
|
10
|
+
readonly id: RequestId;
|
|
11
|
+
readonly index: number;
|
|
12
|
+
readonly value: Value;
|
|
13
|
+
}
|
|
14
|
+
export interface StreamEndFrame {
|
|
15
|
+
readonly kind: 'stream.end';
|
|
16
|
+
readonly id: RequestId;
|
|
17
|
+
readonly count: number;
|
|
18
|
+
}
|
|
19
|
+
export interface StreamErrorFrame {
|
|
20
|
+
readonly kind: 'stream.error';
|
|
21
|
+
readonly id: RequestId;
|
|
22
|
+
readonly error: ErrorPayload;
|
|
23
|
+
}
|
|
24
|
+
export type StreamFrame = StreamStartFrame | StreamItemFrame | StreamEndFrame | StreamErrorFrame;
|
|
25
|
+
export declare function decodeStreamFrame(input: unknown): StreamFrame;
|
|
26
|
+
//# sourceMappingURL=stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../invocation/stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAA;AAEzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAYjD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAA;IAC7B,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAA;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;IAC5B,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAA;IAC3B,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAA;IAC7B,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAA;CAC7B;AAED,MAAM,MAAM,WAAW,GAAG,gBAAgB,GAAG,eAAe,GAAG,cAAc,GAAG,gBAAgB,CAAA;AAEhG,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAsC7D"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { count, errorPayload, exactFields, invalid, portableObject, requestId, required, } from './admission.js';
|
|
2
|
+
export function decodeStreamFrame(input) {
|
|
3
|
+
const object = portableObject(input, 'stream frame');
|
|
4
|
+
const kind = object.kind;
|
|
5
|
+
if (typeof kind !== 'string')
|
|
6
|
+
invalid('stream frame.kind must be a string');
|
|
7
|
+
switch (kind) {
|
|
8
|
+
case 'stream.start':
|
|
9
|
+
exactFields(object, new Set(['kind', 'id']), 'stream.start');
|
|
10
|
+
required(object, ['id'], 'stream.start');
|
|
11
|
+
return Object.freeze({ kind, id: requestId(object.id, 'stream.start.id') });
|
|
12
|
+
case 'stream.item':
|
|
13
|
+
exactFields(object, new Set(['kind', 'id', 'index', 'value']), 'stream.item');
|
|
14
|
+
required(object, ['id', 'index', 'value'], 'stream.item');
|
|
15
|
+
return Object.freeze({
|
|
16
|
+
kind,
|
|
17
|
+
id: requestId(object.id, 'stream.item.id'),
|
|
18
|
+
index: count(object.index, 'stream.item.index'),
|
|
19
|
+
value: object.value,
|
|
20
|
+
});
|
|
21
|
+
case 'stream.end':
|
|
22
|
+
exactFields(object, new Set(['kind', 'id', 'count']), 'stream.end');
|
|
23
|
+
required(object, ['id', 'count'], 'stream.end');
|
|
24
|
+
return Object.freeze({
|
|
25
|
+
kind,
|
|
26
|
+
id: requestId(object.id, 'stream.end.id'),
|
|
27
|
+
count: count(object.count, 'stream.end.count'),
|
|
28
|
+
});
|
|
29
|
+
case 'stream.error':
|
|
30
|
+
exactFields(object, new Set(['kind', 'id', 'error']), 'stream.error');
|
|
31
|
+
required(object, ['id', 'error'], 'stream.error');
|
|
32
|
+
return Object.freeze({
|
|
33
|
+
kind,
|
|
34
|
+
id: requestId(object.id, 'stream.error.id'),
|
|
35
|
+
error: errorPayload(object.error, 'stream.error.error'),
|
|
36
|
+
});
|
|
37
|
+
default:
|
|
38
|
+
return invalid(`unsupported stream frame kind ${JSON.stringify(kind)}`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../invocation/stream.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,EACL,YAAY,EACZ,WAAW,EACX,OAAO,EACP,cAAc,EACd,SAAS,EACT,QAAQ,GACT,MAAM,gBAAgB,CAAA;AA4BvB,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,cAAc,CAAC,CAAA;IACpD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAA;IACxB,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,CAAC,oCAAoC,CAAC,CAAA;IAE3E,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,cAAc;YACjB,WAAW,CAAC,MAAM,EAAE,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,cAAc,CAAC,CAAA;YAC5D,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,CAAA;YACxC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,iBAAiB,CAAC,EAAE,CAAC,CAAA;QAC7E,KAAK,aAAa;YAChB,WAAW,CAAC,MAAM,EAAE,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,aAAa,CAAC,CAAA;YAC7E,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,aAAa,CAAC,CAAA;YACzD,OAAO,MAAM,CAAC,MAAM,CAAC;gBACnB,IAAI;gBACJ,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,CAAC;gBAC1C,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,mBAAmB,CAAC;gBAC/C,KAAK,EAAE,MAAM,CAAC,KAAM;aACrB,CAAC,CAAA;QACJ,KAAK,YAAY;YACf,WAAW,CAAC,MAAM,EAAE,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA;YACnE,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC,CAAA;YAC/C,OAAO,MAAM,CAAC,MAAM,CAAC;gBACnB,IAAI;gBACJ,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC;gBACzC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,kBAAkB,CAAC;aAC/C,CAAC,CAAA;QACJ,KAAK,cAAc;YACjB,WAAW,CAAC,MAAM,EAAE,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,cAAc,CAAC,CAAA;YACrE,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,CAAA;YACjD,OAAO,MAAM,CAAC,MAAM,CAAC;gBACnB,IAAI;gBACJ,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,iBAAiB,CAAC;gBAC3C,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,oBAAoB,CAAC;aACxD,CAAC,CAAA;QACJ;YACE,OAAO,OAAO,CAAC,iCAAiC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC3E,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { NodePath } from '@astrale-os/kernel-core/path';
|
|
2
|
+
import type { Value } from '@astrale-os/kernel-dsl/value';
|
|
3
|
+
/** One portable invocation meaning. Resolution remains Runtime-owned. */
|
|
4
|
+
export interface Call {
|
|
5
|
+
readonly target: NodePath;
|
|
6
|
+
readonly input: Value;
|
|
7
|
+
}
|
|
8
|
+
export declare function acceptCall(input: unknown): Call;
|
|
9
|
+
//# sourceMappingURL=target.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"target.d.ts","sourceRoot":"","sources":["../../invocation/target.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAA;AAIzD,yEAAyE;AACzE,MAAM,WAAW,IAAI;IACnB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAA;IACzB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CACtB;AAID,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAQ/C"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { exactFields, nodePath, portableObject, required } from './admission.js';
|
|
2
|
+
const CALL_FIELDS = new Set(['target', 'input']);
|
|
3
|
+
export function acceptCall(input) {
|
|
4
|
+
const object = portableObject(input, 'call');
|
|
5
|
+
exactFields(object, CALL_FIELDS, 'call');
|
|
6
|
+
required(object, ['target', 'input'], 'call');
|
|
7
|
+
return Object.freeze({
|
|
8
|
+
target: nodePath(object.target, 'call.target'),
|
|
9
|
+
input: object.input,
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=target.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"target.js","sourceRoot":"","sources":["../../invocation/target.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAQhF,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;AAEhD,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IAC5C,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,CAAA;IACxC,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,CAAA;IAC7C,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;QAC9C,KAAK,EAAE,MAAM,CAAC,KAAM;KACrB,CAAC,CAAA;AACJ,CAAC"}
|