@astrale-os/kernel-protocol 0.5.0-beta.2 → 0.5.0-beta.4
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/invocation/admission.d.ts +4 -2
- package/dist/invocation/admission.d.ts.map +1 -1
- package/dist/invocation/admission.js +15 -3
- package/dist/invocation/admission.js.map +1 -1
- package/dist/invocation/binary.d.ts +3 -1
- package/dist/invocation/binary.d.ts.map +1 -1
- package/dist/invocation/binary.js +5 -4
- package/dist/invocation/binary.js.map +1 -1
- package/dist/invocation/cancellation.d.ts +1 -1
- package/dist/invocation/cancellation.d.ts.map +1 -1
- package/dist/invocation/cancellation.js +3 -3
- package/dist/invocation/cancellation.js.map +1 -1
- package/dist/invocation/http/binary.d.ts +7 -0
- package/dist/invocation/http/binary.d.ts.map +1 -1
- package/dist/invocation/http/binary.js +46 -2
- package/dist/invocation/http/binary.js.map +1 -1
- package/dist/invocation/http/index.d.ts +1 -1
- package/dist/invocation/http/index.d.ts.map +1 -1
- package/dist/invocation/http/index.js +1 -1
- package/dist/invocation/http/index.js.map +1 -1
- package/dist/invocation/identity.d.ts +17 -0
- package/dist/invocation/identity.d.ts.map +1 -0
- package/dist/invocation/identity.js +56 -0
- package/dist/invocation/identity.js.map +1 -0
- package/dist/invocation/index.d.ts +4 -3
- package/dist/invocation/index.d.ts.map +1 -1
- package/dist/invocation/index.js +3 -2
- package/dist/invocation/index.js.map +1 -1
- package/dist/invocation/miss.d.ts +4 -2
- package/dist/invocation/miss.d.ts.map +1 -1
- package/dist/invocation/miss.js +10 -6
- package/dist/invocation/miss.js.map +1 -1
- package/dist/invocation/redirect.d.ts +19 -11
- package/dist/invocation/redirect.d.ts.map +1 -1
- package/dist/invocation/redirect.js +30 -16
- package/dist/invocation/redirect.js.map +1 -1
- package/dist/invocation/request.d.ts +1 -1
- package/dist/invocation/request.d.ts.map +1 -1
- package/dist/invocation/request.js +3 -3
- package/dist/invocation/request.js.map +1 -1
- package/dist/invocation/response.d.ts +9 -6
- package/dist/invocation/response.d.ts.map +1 -1
- package/dist/invocation/response.js +14 -9
- package/dist/invocation/response.js.map +1 -1
- package/dist/invocation/routing.d.ts +3 -2
- package/dist/invocation/routing.d.ts.map +1 -1
- package/dist/invocation/routing.js +4 -3
- package/dist/invocation/routing.js.map +1 -1
- package/dist/invocation/schema.d.ts +2 -2
- package/dist/invocation/schema.d.ts.map +1 -1
- package/dist/invocation/schema.js +2 -2
- package/dist/invocation/schema.js.map +1 -1
- package/dist/invocation/service-reason.d.ts +17 -9
- package/dist/invocation/service-reason.d.ts.map +1 -1
- package/dist/invocation/service-reason.js +18 -6
- package/dist/invocation/service-reason.js.map +1 -1
- package/dist/invocation/stale-route.d.ts +4 -2
- package/dist/invocation/stale-route.d.ts.map +1 -1
- package/dist/invocation/stale-route.js +7 -6
- package/dist/invocation/stale-route.js.map +1 -1
- package/dist/invocation/stream.d.ts +6 -4
- package/dist/invocation/stream.d.ts.map +1 -1
- package/dist/invocation/stream.js +17 -13
- package/dist/invocation/stream.js.map +1 -1
- package/dist/invocation/target.d.ts +2 -7
- package/dist/invocation/target.d.ts.map +1 -1
- package/dist/invocation/target.js.map +1 -1
- package/dist/invocation/websocket/binary.d.ts.map +1 -1
- package/dist/invocation/websocket/binary.js +2 -1
- package/dist/invocation/websocket/binary.js.map +1 -1
- package/dist/issuer/configuration.d.ts +1 -1
- package/dist/issuer/configuration.d.ts.map +1 -1
- package/dist/issuer/hosted.d.ts +1 -1
- package/dist/issuer/hosted.d.ts.map +1 -1
- package/dist/issuer/key-set.d.ts +1 -1
- package/dist/issuer/key-set.d.ts.map +1 -1
- package/dist/issuer/key-set.js +3 -2
- package/dist/issuer/key-set.js.map +1 -1
- package/dist/issuer/url.d.ts +1 -1
- package/dist/issuer/url.d.ts.map +1 -1
- package/dist/issuer/url.js +3 -2
- package/dist/issuer/url.js.map +1 -1
- package/dist/publication/bindings/callable.d.ts +1 -1
- package/dist/publication/bindings/callable.d.ts.map +1 -1
- package/dist/publication/bindings/callable.js +1 -1
- package/dist/publication/bindings/callable.js.map +1 -1
- package/dist/publication/bindings/view.d.ts +1 -1
- package/dist/publication/bindings/view.d.ts.map +1 -1
- package/dist/publication/bindings/view.js +1 -1
- package/dist/publication/bindings/view.js.map +1 -1
- package/dist/publication/bundle-admission.d.ts +5 -0
- package/dist/publication/bundle-admission.d.ts.map +1 -0
- package/dist/publication/bundle-admission.js +66 -0
- package/dist/publication/bundle-admission.js.map +1 -0
- package/dist/publication/bundle-descriptor.d.ts +10 -0
- package/dist/publication/bundle-descriptor.d.ts.map +1 -0
- package/dist/publication/bundle-descriptor.js +20 -0
- package/dist/publication/bundle-descriptor.js.map +1 -0
- package/dist/publication/bundle-evidence.d.ts +4 -0
- package/dist/publication/bundle-evidence.d.ts.map +1 -0
- package/dist/publication/bundle-evidence.js +14 -0
- package/dist/publication/bundle-evidence.js.map +1 -0
- package/dist/publication/bundle.d.ts +4 -10
- package/dist/publication/bundle.d.ts.map +1 -1
- package/dist/publication/bundle.js +5 -25
- package/dist/publication/bundle.js.map +1 -1
- package/dist/publication/declaration.d.ts +12 -0
- package/dist/publication/declaration.d.ts.map +1 -0
- package/dist/publication/declaration.js +2 -0
- package/dist/publication/declaration.js.map +1 -0
- package/dist/publication/delivery/claims.d.ts +8 -7
- package/dist/publication/delivery/claims.d.ts.map +1 -1
- package/dist/publication/delivery/claims.js +6 -6
- package/dist/publication/delivery/claims.js.map +1 -1
- package/dist/publication/delivery/delivery.d.ts +1 -1
- package/dist/publication/delivery/delivery.d.ts.map +1 -1
- package/dist/publication/delivery/delivery.js +1 -1
- package/dist/publication/delivery/delivery.js.map +1 -1
- package/dist/publication/delivery/request.d.ts +3 -3
- package/dist/publication/delivery/request.d.ts.map +1 -1
- package/dist/publication/delivery/request.js +4 -3
- package/dist/publication/delivery/request.js.map +1 -1
- package/dist/publication/delivery-declaration.d.ts +5 -0
- package/dist/publication/delivery-declaration.d.ts.map +1 -0
- package/dist/publication/delivery-declaration.js +26 -0
- package/dist/publication/delivery-declaration.js.map +1 -0
- package/dist/publication/index.d.ts +6 -2
- package/dist/publication/index.d.ts.map +1 -1
- package/dist/publication/index.js +4 -1
- package/dist/publication/index.js.map +1 -1
- package/dist/publication/manifest.d.ts +1 -1
- package/dist/publication/manifest.d.ts.map +1 -1
- package/dist/publication/manifest.js +1 -1
- package/dist/publication/manifest.js.map +1 -1
- package/dist/publication/publication.d.ts +3 -5
- package/dist/publication/publication.d.ts.map +1 -1
- package/dist/publication/publication.js +7 -66
- package/dist/publication/publication.js.map +1 -1
- package/dist/publication/reference.d.ts +3 -2
- package/dist/publication/reference.d.ts.map +1 -1
- package/dist/publication/reference.js +7 -6
- package/dist/publication/reference.js.map +1 -1
- package/dist/publication/requirements.d.ts +3 -2
- package/dist/publication/requirements.d.ts.map +1 -1
- package/dist/publication/requirements.js +16 -11
- package/dist/publication/requirements.js.map +1 -1
- package/dist/publication/route.d.ts +6 -1
- package/dist/publication/route.d.ts.map +1 -1
- package/dist/publication/route.js +31 -8
- package/dist/publication/route.js.map +1 -1
- package/dist/publication/schema.d.ts +3 -3
- package/dist/publication/schema.d.ts.map +1 -1
- package/dist/publication/schema.js +3 -3
- package/dist/publication/schema.js.map +1 -1
- package/dist/routes/admission.d.ts +4 -0
- package/dist/routes/admission.d.ts.map +1 -0
- package/dist/routes/admission.js +90 -0
- package/dist/routes/admission.js.map +1 -0
- package/dist/routes/binding.d.ts +7 -0
- package/dist/routes/binding.d.ts.map +1 -0
- package/dist/routes/binding.js +28 -0
- package/dist/routes/binding.js.map +1 -0
- package/dist/routes/collision.d.ts +3 -0
- package/dist/routes/collision.d.ts.map +1 -0
- package/dist/routes/collision.js +17 -0
- package/dist/routes/collision.js.map +1 -0
- package/dist/routes/compiler.d.ts +9 -0
- package/dist/routes/compiler.d.ts.map +1 -0
- package/dist/routes/compiler.js +48 -0
- package/dist/routes/compiler.js.map +1 -0
- package/dist/routes/credential.d.ts +7 -7
- package/dist/routes/credential.d.ts.map +1 -1
- package/dist/routes/credential.js +7 -7
- package/dist/routes/credential.js.map +1 -1
- package/dist/routes/decode.d.ts +4 -2
- package/dist/routes/decode.d.ts.map +1 -1
- package/dist/routes/decode.js +36 -31
- package/dist/routes/decode.js.map +1 -1
- package/dist/routes/encode.d.ts +3 -2
- package/dist/routes/encode.d.ts.map +1 -1
- package/dist/routes/encode.js +25 -22
- package/dist/routes/encode.js.map +1 -1
- package/dist/routes/evidence.d.ts +6 -0
- package/dist/routes/evidence.d.ts.map +1 -0
- package/dist/routes/evidence.js +38 -0
- package/dist/routes/evidence.js.map +1 -0
- package/dist/routes/index.d.ts +9 -2
- package/dist/routes/index.d.ts.map +1 -1
- package/dist/routes/index.js +6 -2
- package/dist/routes/index.js.map +1 -1
- package/dist/routes/mapping.d.ts +1 -1
- package/dist/routes/mapping.d.ts.map +1 -1
- package/dist/routes/mapping.js +4 -12
- package/dist/routes/mapping.js.map +1 -1
- package/dist/routes/match.d.ts +3 -3
- package/dist/routes/match.d.ts.map +1 -1
- package/dist/routes/match.js +3 -4
- package/dist/routes/match.js.map +1 -1
- package/dist/routes/placement.d.ts +6 -0
- package/dist/routes/placement.d.ts.map +1 -0
- package/dist/routes/placement.js +19 -0
- package/dist/routes/placement.js.map +1 -0
- package/dist/routes/plan.d.ts +24 -0
- package/dist/routes/plan.d.ts.map +1 -0
- package/dist/routes/plan.js +2 -0
- package/dist/routes/plan.js.map +1 -0
- package/dist/routes/release-unavailable.d.ts +9 -0
- package/dist/routes/release-unavailable.d.ts.map +1 -0
- package/dist/routes/release-unavailable.js +33 -0
- package/dist/routes/release-unavailable.js.map +1 -0
- package/dist/routes/reservation.d.ts +3 -3
- package/dist/routes/reservation.d.ts.map +1 -1
- package/dist/routes/reservation.js +4 -4
- package/dist/routes/reservation.js.map +1 -1
- package/dist/routes/scalar.d.ts +4 -3
- package/dist/routes/scalar.d.ts.map +1 -1
- package/dist/routes/scalar.js +14 -10
- package/dist/routes/scalar.js.map +1 -1
- package/dist/routes/select.d.ts +2 -2
- package/dist/routes/select.d.ts.map +1 -1
- package/dist/routes/select.js +2 -2
- package/dist/routes/select.js.map +1 -1
- package/dist/routes/table.d.ts +10 -0
- package/dist/routes/table.d.ts.map +1 -0
- package/dist/routes/table.js +2 -0
- package/dist/routes/table.js.map +1 -0
- package/dist/routes/target.d.ts +14 -0
- package/dist/routes/target.d.ts.map +1 -0
- package/dist/routes/target.js +4 -0
- package/dist/routes/target.js.map +1 -0
- package/dist/runtime/artifact.d.ts +1 -1
- package/dist/runtime/artifact.d.ts.map +1 -1
- package/dist/runtime/artifact.js +2 -2
- package/dist/runtime/artifact.js.map +1 -1
- package/package.json +96 -3
- package/dist/routes/compile.d.ts +0 -5
- package/dist/routes/compile.d.ts.map +0 -1
- package/dist/routes/compile.js +0 -69
- package/dist/routes/compile.js.map +0 -1
- package/dist/routes/route.d.ts +0 -13
- package/dist/routes/route.d.ts.map +0 -1
- package/dist/routes/route.js +0 -6
- package/dist/routes/route.js.map +0 -1
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import type
|
|
1
|
+
import type { Subject } from '@astrale-os/kernel-core/auth/identity';
|
|
2
|
+
import type { Revision } from '@astrale-os/kernel-dsl/v1/schema';
|
|
3
|
+
import { type IssuerId } from '@astrale-os/kernel-core/auth/issuer';
|
|
4
|
+
import type { Etag } from '../etag.js';
|
|
4
5
|
import { PURPOSE } from './limits.js';
|
|
5
6
|
export interface Claims {
|
|
6
7
|
readonly purpose: typeof PURPOSE;
|
|
7
|
-
readonly iss:
|
|
8
|
-
readonly sub:
|
|
9
|
-
readonly aud:
|
|
8
|
+
readonly iss: IssuerId;
|
|
9
|
+
readonly sub: Subject;
|
|
10
|
+
readonly aud: IssuerId;
|
|
10
11
|
readonly nonce: string;
|
|
11
12
|
readonly etag: Etag;
|
|
12
|
-
readonly schemaRevision:
|
|
13
|
+
readonly schemaRevision: Revision;
|
|
13
14
|
readonly exp: number;
|
|
14
15
|
}
|
|
15
16
|
export declare function acceptClaims(input: unknown): Claims;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claims.d.ts","sourceRoot":"","sources":["../../../publication/delivery/claims.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"claims.d.ts","sourceRoot":"","sources":["../../../publication/delivery/claims.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uCAAuC,CAAA;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAA;AAGhE,OAAO,EAA4B,KAAK,QAAQ,EAAE,MAAM,qCAAqC,CAAA;AAG7F,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAGtC,OAAO,EAAsC,OAAO,EAAE,MAAM,aAAa,CAAA;AAEzE,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,OAAO,EAAE,OAAO,OAAO,CAAA;IAChC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAA;IACtB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAA;IACrB,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IACnB,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAA;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACrB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAyCnD"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
1
|
+
import { AuthValueError } from '@astrale-os/kernel-core/auth/error';
|
|
2
|
+
import { accept as acceptIssuerId } from '@astrale-os/kernel-core/auth/issuer';
|
|
3
|
+
import { patterns } from '@astrale-os/kernel-dsl/v1/addressing';
|
|
3
4
|
import { fail } from './error.js';
|
|
4
5
|
import { NONCE_MAX_LENGTH, NONCE_MIN_LENGTH, PURPOSE } from './limits.js';
|
|
5
6
|
export function acceptClaims(input) {
|
|
@@ -26,8 +27,7 @@ export function acceptClaims(input) {
|
|
|
26
27
|
if (typeof value.etag !== 'string' || !/^sha256:[0-9a-f]{64}$/u.test(value.etag)) {
|
|
27
28
|
fail('DELIVERY_CLAIMS_INVALID', 'Delivery claims ETag is invalid.');
|
|
28
29
|
}
|
|
29
|
-
if (typeof value.schemaRevision !== 'string' ||
|
|
30
|
-
!dslSchema.patterns.revision.test(value.schemaRevision)) {
|
|
30
|
+
if (typeof value.schemaRevision !== 'string' || !patterns.revision.test(value.schemaRevision)) {
|
|
31
31
|
fail('DELIVERY_CLAIMS_INVALID', 'Schema revision is invalid.');
|
|
32
32
|
}
|
|
33
33
|
return deepFreeze({
|
|
@@ -43,10 +43,10 @@ export function acceptClaims(input) {
|
|
|
43
43
|
}
|
|
44
44
|
function acceptIssuer(input) {
|
|
45
45
|
try {
|
|
46
|
-
return
|
|
46
|
+
return acceptIssuerId(String(input));
|
|
47
47
|
}
|
|
48
48
|
catch (cause) {
|
|
49
|
-
if (cause instanceof
|
|
49
|
+
if (cause instanceof AuthValueError) {
|
|
50
50
|
return fail('DELIVERY_CLAIMS_INVALID', 'Delivery claims issuer is invalid.', cause);
|
|
51
51
|
}
|
|
52
52
|
throw cause;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claims.js","sourceRoot":"","sources":["../../../publication/delivery/claims.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"claims.js","sourceRoot":"","sources":["../../../publication/delivery/claims.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery.d.ts","sourceRoot":"","sources":["../../../publication/delivery/delivery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"delivery.d.ts","sourceRoot":"","sources":["../../../publication/delivery/delivery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAMnD,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,MAAM,EAAE,yBAAyB,CAAA;IAC1C,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;IACnB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;CAClC;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAmB/C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery.js","sourceRoot":"","sources":["../../../publication/delivery/delivery.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,IAAI,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"delivery.js","sourceRoot":"","sources":["../../../publication/delivery/delivery.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,IAAI,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AASjC,MAAM,UAAU,MAAM,CAAC,KAAc;IACnC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,IAAI,CAAC,kBAAkB,EAAE,6BAA6B,CAAC,CAAA;IACzD,CAAC;IACD,MAAM,KAAK,GAAG,KAAgC,CAAA;IAC9C,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,CAAA;IAC7E,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC7D,IAAI,CAAC,kBAAkB,EAAE,mCAAmC,CAAC,CAAA;IAC/D,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,yBAAyB,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;QACtE,IAAI,CAAC,kBAAkB,EAAE,yCAAyC,CAAC,CAAA;IACrE,CAAC;IAED,OAAO,UAAU,CAAC;QAChB,MAAM,EAAE,yBAAyB;QACjC,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC;QACjD,WAAW,EAAE,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC;KAClD,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,UAAU,CAAI,KAAQ;IAC7B,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IACvF,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,KAAgC,CAAC;QAAE,UAAU,CAAC,MAAM,CAAC,CAAA;IACxF,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC7B,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import
|
|
2
|
-
import type { Etag } from '../
|
|
1
|
+
import { type IssuerId } from '@astrale-os/kernel-core/auth/issuer';
|
|
2
|
+
import type { Etag } from '../etag.js';
|
|
3
3
|
export interface Request {
|
|
4
4
|
readonly version: 1;
|
|
5
|
-
readonly kernel:
|
|
5
|
+
readonly kernel: IssuerId;
|
|
6
6
|
readonly nonce: string;
|
|
7
7
|
readonly etag: Etag;
|
|
8
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../../publication/delivery/request.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../../publication/delivery/request.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,KAAK,QAAQ,EAAE,MAAM,qCAAqC,CAAA;AAE3F,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAKtC,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;IACnB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAA;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;CACpB;AAED,yEAAyE;AACzE,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAED,wFAAwF;AACxF,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAiDrD"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { AuthValueError } from '@astrale-os/kernel-core/auth/error';
|
|
2
|
+
import { accept as acceptIssuer } from '@astrale-os/kernel-core/auth/issuer';
|
|
2
3
|
import { fail } from './error.js';
|
|
3
4
|
import { NONCE_MAX_LENGTH, NONCE_MIN_LENGTH } from './limits.js';
|
|
4
5
|
/** Admit the exact request representation accepted by a Delivery transport boundary. */
|
|
@@ -34,10 +35,10 @@ export function acceptRequest(input) {
|
|
|
34
35
|
}
|
|
35
36
|
let kernel;
|
|
36
37
|
try {
|
|
37
|
-
kernel =
|
|
38
|
+
kernel = acceptIssuer(value.kernel);
|
|
38
39
|
}
|
|
39
40
|
catch (cause) {
|
|
40
|
-
if (cause instanceof
|
|
41
|
+
if (cause instanceof AuthValueError) {
|
|
41
42
|
return fail('DELIVERY_REQUEST_INVALID', 'Delivery request issuer is invalid.', cause);
|
|
42
43
|
}
|
|
43
44
|
throw cause;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../../publication/delivery/request.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../../publication/delivery/request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACnE,OAAO,EAAE,MAAM,IAAI,YAAY,EAAiB,MAAM,qCAAqC,CAAA;AAI3F,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACjC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAehE,wFAAwF;AACxF,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,IAAI,CAAC,0BAA0B,EAAE,8BAA8B,CAAC,CAAA;IAClE,CAAC;IACD,MAAM,QAAQ,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;IACvD,MAAM,KAAK,GAA4B,EAAE,CAAA;IACzC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACrC,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;QACtC,IAAI,CAAC,0BAA0B,EAAE,8BAA8B,CAAC,CAAA;IAClE,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3D,IAAI,CAAC,0BAA0B,EAAE,8BAA8B,CAAC,CAAA;QAClE,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QAChE,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC,EAAE,CAAC;YACnF,IAAI,CAAC,0BAA0B,EAAE,8BAA8B,CAAC,CAAA;QAClE,CAAC;QACD,KAAK,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,KAAK,CAAA;IACjC,CAAC;IACD,IACE,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACtD,KAAK,CAAC,OAAO,KAAK,CAAC;QACnB,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ;QAChC,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;QAC/B,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,gBAAgB;QACrC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,gBAAgB;QACrC,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC9B,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAC1C,CAAC;QACD,IAAI,CAAC,0BAA0B,EAAE,8BAA8B,CAAC,CAAA;IAClE,CAAC;IAED,IAAI,MAAgB,CAAA;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC,0BAA0B,EAAE,qCAAqC,EAAE,KAAK,CAAC,CAAA;QACvF,CAAC;QACD,MAAM,KAAK,CAAA;IACb,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,OAAO,EAAE,CAAC;QACV,MAAM;QACN,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI,EAAE,KAAK,CAAC,IAAY;KACzB,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { DeliveryDeclaration } from './declaration.js';
|
|
2
|
+
import type { Endpoint } from './delivery-endpoint.js';
|
|
3
|
+
/** Place one provider-neutral Delivery declaration beneath an exact serving issuer. */
|
|
4
|
+
export declare function placeDelivery(input: DeliveryDeclaration, issuer: string, bundleHref: string): Endpoint;
|
|
5
|
+
//# sourceMappingURL=delivery-declaration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delivery-declaration.d.ts","sourceRoot":"","sources":["../../publication/delivery-declaration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAKtD,uFAAuF;AACvF,wBAAgB,aAAa,CAC3B,KAAK,EAAE,mBAAmB,EAC1B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,QAAQ,CAsBV"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { admitEndpoint } from './delivery-endpoint.js';
|
|
2
|
+
import { fail } from './error.js';
|
|
3
|
+
/** Place one provider-neutral Delivery declaration beneath an exact serving issuer. */
|
|
4
|
+
export function placeDelivery(input, issuer, bundleHref) {
|
|
5
|
+
if (input === null || typeof input !== 'object' || Array.isArray(input)) {
|
|
6
|
+
fail('PUBLICATION_INVALID', 'Delivery declaration is invalid.');
|
|
7
|
+
}
|
|
8
|
+
if (Reflect.ownKeys(input).some((key) => key !== 'path' && key !== 'authentication') ||
|
|
9
|
+
typeof input.path !== 'string' ||
|
|
10
|
+
!input.path.startsWith('/')) {
|
|
11
|
+
fail('PUBLICATION_INVALID', 'Delivery declaration is invalid.');
|
|
12
|
+
}
|
|
13
|
+
let href;
|
|
14
|
+
try {
|
|
15
|
+
const url = new URL(input.path, issuer);
|
|
16
|
+
if (url.origin !== new URL(issuer).origin || url.search !== '' || url.hash !== '') {
|
|
17
|
+
fail('PUBLICATION_INVALID', 'Delivery declaration must be one relative path.');
|
|
18
|
+
}
|
|
19
|
+
href = url.href;
|
|
20
|
+
}
|
|
21
|
+
catch (cause) {
|
|
22
|
+
return fail('PUBLICATION_INVALID', 'Delivery declaration path is invalid.', cause);
|
|
23
|
+
}
|
|
24
|
+
return admitEndpoint({ href, method: 'POST', authentication: input.authentication }, bundleHref);
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=delivery-declaration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delivery-declaration.js","sourceRoot":"","sources":["../../publication/delivery-declaration.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAEjC,uFAAuF;AACvF,MAAM,UAAU,aAAa,CAC3B,KAA0B,EAC1B,MAAc,EACd,UAAkB;IAElB,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,IAAI,CAAC,qBAAqB,EAAE,kCAAkC,CAAC,CAAA;IACjE,CAAC;IACD,IACE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,gBAAgB,CAAC;QAChF,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC9B,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAC3B,CAAC;QACD,IAAI,CAAC,qBAAqB,EAAE,kCAAkC,CAAC,CAAA;IACjE,CAAC;IACD,IAAI,IAAY,CAAA;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QACvC,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,IAAI,GAAG,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;YAClF,IAAI,CAAC,qBAAqB,EAAE,iDAAiD,CAAC,CAAA;QAChF,CAAC;QACD,IAAI,GAAG,GAAG,CAAC,IAAI,CAAA;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,IAAI,CAAC,qBAAqB,EAAE,uCAAuC,EAAE,KAAK,CAAC,CAAA;IACpF,CAAC;IACD,OAAO,aAAa,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,EAAE,UAAU,CAAE,CAAA;AACnG,CAAC"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
export { MEDIA_TYPE, PATH, url, seal, accept, encode,
|
|
1
|
+
export { MEDIA_TYPE, PATH, url, seal, accept, encode, type Publication } from './publication.js';
|
|
2
|
+
export { acceptBundle, decodeBundle } from './bundle-admission.js';
|
|
2
3
|
export { BUNDLE_MEDIA_TYPE, describeBundle, type BundleDescriptor } from './bundle.js';
|
|
4
|
+
export { verifyBundleBytes } from './bundle-evidence.js';
|
|
3
5
|
export type { Content } from './content.js';
|
|
6
|
+
export type { Declaration, DeliveryDeclaration } from './declaration.js';
|
|
7
|
+
export { placeDelivery } from './delivery-declaration.js';
|
|
4
8
|
export type { Etag, Sha256Digest } from './etag.js';
|
|
5
9
|
export { PublicationError, type PublicationErrorCode } from './error.js';
|
|
6
10
|
export * as delivery from './delivery/index.js';
|
|
@@ -8,7 +12,7 @@ export type { Authentication as DeliveryAuthentication, Endpoint as DeliveryEndp
|
|
|
8
12
|
export type { Manifest } from './manifest.js';
|
|
9
13
|
export { ClassOperationOrder, admitRequirements, validateRequirements, type CapabilityAdminRequirements, type CapabilityRequirements, type ClassCapabilityRequirement, type ClassOperation, type NonEmpty, type PublicationRequirements, } from './requirements.js';
|
|
10
14
|
export { acceptReference, compareReference, compareReferences, matchesReference, reference, type PublicationRef, type PublicationReferenceRelation, } from './reference.js';
|
|
11
|
-
export type { BodyPick, CredentialSource, HttpMethod, HttpRoute, RouteBody, RouteHeaders, SingleCredentialSource, } from './route.js';
|
|
15
|
+
export type { BodyPick, CredentialSource, HttpMethod, HttpRoute, HttpRouteDeclaration, RouteBody, RouteHeaders, SingleCredentialSource, } from './route.js';
|
|
12
16
|
export type { Schema } from './schema.js';
|
|
13
17
|
export { acceptInvocationEndpoints, type CallableBinding, type InvocationEndpoints, type ViewBinding, } from './bindings/index.js';
|
|
14
18
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../publication/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../publication/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAChG,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAClE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAA;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC3C,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACnD,OAAO,EAAE,gBAAgB,EAAE,KAAK,oBAAoB,EAAE,MAAM,YAAY,CAAA;AACxE,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAA;AAC/C,YAAY,EACV,cAAc,IAAI,sBAAsB,EACxC,QAAQ,IAAI,gBAAgB,GAC7B,MAAM,wBAAwB,CAAA;AAC/B,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,KAAK,2BAA2B,EAChC,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,uBAAuB,GAC7B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,SAAS,EACT,KAAK,cAAc,EACnB,KAAK,4BAA4B,GAClC,MAAM,gBAAgB,CAAA;AACvB,YAAY,EACV,QAAQ,EACR,gBAAgB,EAChB,UAAU,EACV,SAAS,EACT,oBAAoB,EACpB,SAAS,EACT,YAAY,EACZ,sBAAsB,GACvB,MAAM,YAAY,CAAA;AACnB,YAAY,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EACL,yBAAyB,EACzB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,WAAW,GACjB,MAAM,qBAAqB,CAAA"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
export { MEDIA_TYPE, PATH, url, seal, accept, encode
|
|
1
|
+
export { MEDIA_TYPE, PATH, url, seal, accept, encode } from './publication.js';
|
|
2
|
+
export { acceptBundle, decodeBundle } from './bundle-admission.js';
|
|
2
3
|
export { BUNDLE_MEDIA_TYPE, describeBundle } from './bundle.js';
|
|
4
|
+
export { verifyBundleBytes } from './bundle-evidence.js';
|
|
5
|
+
export { placeDelivery } from './delivery-declaration.js';
|
|
3
6
|
export { PublicationError } from './error.js';
|
|
4
7
|
export * as delivery from './delivery/index.js';
|
|
5
8
|
export { ClassOperationOrder, admitRequirements, validateRequirements, } from './requirements.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../publication/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../publication/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAoB,MAAM,kBAAkB,CAAA;AAChG,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAClE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAyB,MAAM,aAAa,CAAA;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAGxD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAEzD,OAAO,EAAE,gBAAgB,EAA6B,MAAM,YAAY,CAAA;AACxE,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAA;AAM/C,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,GAOrB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,SAAS,GAGV,MAAM,gBAAgB,CAAA;AAYvB,OAAO,EACL,yBAAyB,GAI1B,MAAM,qBAAqB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../publication/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../publication/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,sCAAsC,CAAA;AAK1D,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,IAAI,CAAA;CAC/B;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAyBlE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../publication/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../publication/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,sCAAsC,CAAA;AAE1D,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAOjC,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IACzC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,qBAAqB,EAAE,sBAAsB,CAAC,CAAA;IAC1E,KAAK,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,qBAAqB,CAAC,CAAA;IAE3D,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC/D,IAAI,CAAC,qBAAqB,EAAE,iCAAiC,CAAC,CAAA;IAChE,CAAC;IAED,IAAI,UAAgC,CAAA;IACpC,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACnC,IACE,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ;YACpC,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC;YACnC,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,EACrC,CAAC;YACD,IAAI,CAAC,qBAAqB,EAAE,oDAAoD,CAAC,CAAA;QACnF,CAAC;QACD,UAAU,GAAG,KAAK,CAAC,UAAsB,CAAA;IAC3C,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QACzD,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC;KACpD,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { Key
|
|
1
|
+
import { type IssuerId } from '@astrale-os/kernel-core/auth/issuer';
|
|
2
|
+
import { Key } from '@astrale-os/kernel-dsl/v1/addressing';
|
|
3
3
|
import type { CallableBinding, ViewBinding } from './bindings/index.js';
|
|
4
4
|
import type { Content } from './content.js';
|
|
5
5
|
import type { Endpoint as DeliveryEndpoint } from './delivery-endpoint.js';
|
|
@@ -17,7 +17,7 @@ export interface Publication {
|
|
|
17
17
|
readonly version: 2;
|
|
18
18
|
readonly origin: Key.Origin;
|
|
19
19
|
readonly identity: {
|
|
20
|
-
readonly issuer:
|
|
20
|
+
readonly issuer: IssuerId;
|
|
21
21
|
readonly subject: string;
|
|
22
22
|
};
|
|
23
23
|
readonly etag: Etag;
|
|
@@ -34,6 +34,4 @@ export interface Publication {
|
|
|
34
34
|
export declare function seal(input: Content): Publication;
|
|
35
35
|
export declare function accept(input: unknown): Publication;
|
|
36
36
|
export declare function encode(input: Publication): Uint8Array;
|
|
37
|
-
export declare function acceptBundle(input: Publication, artifact: unknown): dslBundle.Bundle;
|
|
38
|
-
export declare function decodeBundle(input: Publication, bytes: Uint8Array): dslBundle.Bundle;
|
|
39
37
|
//# sourceMappingURL=publication.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publication.d.ts","sourceRoot":"","sources":["../../publication/publication.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"publication.d.ts","sourceRoot":"","sources":["../../publication/publication.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,KAAK,QAAQ,EAAE,MAAM,qCAAqC,CAAA;AAC7F,OAAO,EAAE,GAAG,EAAY,MAAM,sCAAsC,CAAA;AAGpE,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,KAAK,EAAE,QAAQ,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC1E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAYzC,eAAO,MAAM,IAAI,EAAG,kCAA2C,CAAA;AAC/D,eAAO,MAAM,UAAU,EAAG,qDAA8D,CAAA;AAExF,sFAAsF;AACtF,wBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAkBzC;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,4BAA4B,CAAA;IAC7C,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;IACnB,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAA;QACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KACzB,CAAA;IACD,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IACnB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,YAAY,EAAE,uBAAuB,CAAA;IAC9C,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAA;IAC5B,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,SAAS,EAAE,SAAS,eAAe,EAAE,CAAA;QAC9C,QAAQ,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,CAAA;KACvC,CAAA;IACD,QAAQ,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAA;IACrC,QAAQ,CAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAA;CACrC;AAED,wBAAgB,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAEhD;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAMlD;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,UAAU,CAErD"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
1
|
+
import { AuthValueError } from '@astrale-os/kernel-core/auth/error';
|
|
2
|
+
import { accept as acceptIssuerId } from '@astrale-os/kernel-core/auth/issuer';
|
|
3
|
+
import { Key, patterns } from '@astrale-os/kernel-dsl/v1/addressing';
|
|
3
4
|
import * as portable from '@astrale-os/kernel-dsl/value';
|
|
4
5
|
import { admitCallableBinding, admitViewBinding } from './bindings/index.js';
|
|
5
|
-
import { acceptBundleValue, decodeBundleValue, verifyBundleBytes } from './bundle.js';
|
|
6
6
|
import { array, deepFreeze, exact, record, unique } from './content.js';
|
|
7
7
|
import { admitEndpoint as admitDeliveryEndpoint } from './delivery-endpoint.js';
|
|
8
8
|
import { fail } from './error.js';
|
|
9
9
|
import { admitDigest, computeEtag } from './etag.js';
|
|
10
10
|
import { admitManifest } from './manifest.js';
|
|
11
|
-
import { admitRequirements
|
|
11
|
+
import { admitRequirements } from './requirements.js';
|
|
12
12
|
import { admitRoute } from './route.js';
|
|
13
13
|
import { admitSchema } from './schema.js';
|
|
14
14
|
export const PATH = '/.well-known/astrale/domain.json';
|
|
@@ -45,17 +45,6 @@ export function accept(input) {
|
|
|
45
45
|
export function encode(input) {
|
|
46
46
|
return portable.json.encode(input);
|
|
47
47
|
}
|
|
48
|
-
export function acceptBundle(input, artifact) {
|
|
49
|
-
const accepted = acceptBundleValue(artifact);
|
|
50
|
-
verifyBundleBytes(input, dslBundle.encode(accepted));
|
|
51
|
-
validateBundleInventory(input, accepted);
|
|
52
|
-
return accepted;
|
|
53
|
-
}
|
|
54
|
-
export function decodeBundle(input, bytes) {
|
|
55
|
-
const decoded = decodeBundleValue(input, bytes);
|
|
56
|
-
validateBundleInventory(input, decoded);
|
|
57
|
-
return decoded;
|
|
58
|
-
}
|
|
59
48
|
function acceptPublication(input, requireEtag) {
|
|
60
49
|
const value = record(input, 'PUBLICATION_INVALID', 'Expected a Publication object.');
|
|
61
50
|
exact(value, [
|
|
@@ -74,7 +63,7 @@ function acceptPublication(input, requireEtag) {
|
|
|
74
63
|
if (value.format !== 'astrale.domain.publication' || value.version !== 2) {
|
|
75
64
|
fail('PUBLICATION_INVALID', 'Unsupported Publication format or version.');
|
|
76
65
|
}
|
|
77
|
-
if (typeof value.origin !== 'string' || !
|
|
66
|
+
if (typeof value.origin !== 'string' || !patterns.origin.test(value.origin)) {
|
|
78
67
|
fail('PUBLICATION_INVALID', 'Publication origin is invalid.');
|
|
79
68
|
}
|
|
80
69
|
const origin = value.origin;
|
|
@@ -124,60 +113,12 @@ function acceptPublication(input, requireEtag) {
|
|
|
124
113
|
...(delivery === undefined ? {} : { delivery }),
|
|
125
114
|
});
|
|
126
115
|
}
|
|
127
|
-
function validateBundleInventory(publication, bundle) {
|
|
128
|
-
const root = bundle.root;
|
|
129
|
-
if (root.origin !== publication.origin ||
|
|
130
|
-
dslSchema.revision(root) !== publication.schema.revision) {
|
|
131
|
-
fail('PUBLICATION_INVALID', 'Bundle root does not match the Publication schema.');
|
|
132
|
-
}
|
|
133
|
-
validateRequirements(root, bundle.closure, publication.requirements);
|
|
134
|
-
const callables = concreteCallables(root);
|
|
135
|
-
const publishedCallables = new Set(publication.bindings.callables.map(({ callable }) => callable));
|
|
136
|
-
if (publishedCallables.size !== callables.size ||
|
|
137
|
-
[...callables].some((key) => !publishedCallables.has(key))) {
|
|
138
|
-
fail('PUBLICATION_BINDING_INVALID', 'Callable bindings must exhaust the root Domain.');
|
|
139
|
-
}
|
|
140
|
-
const views = new Set(Object.keys(root.views).map((name) => Key.of(root.origin, Ref.definition('view', name))));
|
|
141
|
-
const publishedViews = new Set(publication.bindings.views.map(({ view }) => view));
|
|
142
|
-
if (publishedViews.size !== views.size || [...views].some((key) => !publishedViews.has(key))) {
|
|
143
|
-
fail('PUBLICATION_VIEW_INVALID', 'View bindings must exhaust the root Domain.');
|
|
144
|
-
}
|
|
145
|
-
if (publication.manifest?.entrypoint !== undefined &&
|
|
146
|
-
root.views[Ref.member(publication.manifest.entrypoint)] === undefined) {
|
|
147
|
-
fail('PUBLICATION_INVALID', 'Manifest entrypoint does not exist in the root schema.');
|
|
148
|
-
}
|
|
149
|
-
for (const route of publication.routes) {
|
|
150
|
-
if (!callables.has(route.callable)) {
|
|
151
|
-
fail('PUBLICATION_ROUTE_INVALID', `Route ${route.name} names an unknown callable.`);
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
function concreteCallables(root) {
|
|
156
|
-
const result = new Set();
|
|
157
|
-
for (const name of Object.keys(root.functions)) {
|
|
158
|
-
result.add(Key.of(root.origin, Ref.definition('function', name)));
|
|
159
|
-
}
|
|
160
|
-
addConcreteMethods(result, root.origin, 'class', root.classes);
|
|
161
|
-
addConcreteMethods(result, root.origin, 'interface', root.interfaces);
|
|
162
|
-
return result;
|
|
163
|
-
}
|
|
164
|
-
function addConcreteMethods(result, origin, kind, definitions) {
|
|
165
|
-
for (const [owner, declaration] of Object.entries(definitions)) {
|
|
166
|
-
if (declaration.family !== 'node')
|
|
167
|
-
continue;
|
|
168
|
-
for (const [name, method] of Object.entries(declaration.methods)) {
|
|
169
|
-
if (method.inheritance === 'abstract')
|
|
170
|
-
continue;
|
|
171
|
-
result.add(Key.of(origin, Ref.method(Ref.definition(kind, owner), name)));
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
116
|
function admitIssuer(input) {
|
|
176
117
|
try {
|
|
177
|
-
return
|
|
118
|
+
return acceptIssuerId(String(input));
|
|
178
119
|
}
|
|
179
120
|
catch (cause) {
|
|
180
|
-
if (cause instanceof
|
|
121
|
+
if (cause instanceof AuthValueError) {
|
|
181
122
|
return fail('PUBLICATION_INVALID', 'Publication issuer is invalid.', cause);
|
|
182
123
|
}
|
|
183
124
|
throw cause;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publication.js","sourceRoot":"","sources":["../../publication/publication.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"publication.js","sourceRoot":"","sources":["../../publication/publication.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { Revision } from '@astrale-os/kernel-dsl/v1/schema';
|
|
2
|
+
import { type Key } from '@astrale-os/kernel-dsl/v1/addressing';
|
|
2
3
|
import type { Etag } from './etag.js';
|
|
3
4
|
import type { Publication } from './publication.js';
|
|
4
5
|
/** Compact untrusted projection that witnesses one exact Publication. */
|
|
5
6
|
export interface PublicationRef {
|
|
6
7
|
readonly origin: Key.Origin;
|
|
7
8
|
readonly identity: Publication['identity'];
|
|
8
|
-
readonly revision:
|
|
9
|
+
readonly revision: Revision;
|
|
9
10
|
readonly etag: Etag;
|
|
10
11
|
}
|
|
11
12
|
export type PublicationReferenceRelation = 'exact' | 'same-schema' | 'schema-drift' | 'identity-drift' | 'origin-drift';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference.d.ts","sourceRoot":"","sources":["../../publication/reference.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reference.d.ts","sourceRoot":"","sources":["../../publication/reference.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAA;AAIhE,OAAO,EAAY,KAAK,GAAG,EAAE,MAAM,sCAAsC,CAAA;AAEzE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAMnD,yEAAyE;AACzE,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,UAAU,CAAC,CAAA;IAC1C,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;CACpB;AAED,MAAM,MAAM,4BAA4B,GACpC,OAAO,GACP,aAAa,GACb,cAAc,GACd,gBAAgB,GAChB,cAAc,CAAA;AAElB,wBAAgB,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,cAAc,CAO5D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CA6B9D;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAE,cAAc,GACvB,4BAA4B,CAU9B;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,cAAc,GACvB,4BAA4B,CAE9B;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAEtF"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
1
|
+
import { AuthValueError } from '@astrale-os/kernel-core/auth/error';
|
|
2
|
+
import { accept as acceptIssuerId } from '@astrale-os/kernel-core/auth/issuer';
|
|
3
|
+
import { patterns } from '@astrale-os/kernel-dsl/v1/addressing';
|
|
3
4
|
import { deepFreeze, exact, record } from './content.js';
|
|
4
5
|
import { fail } from './error.js';
|
|
5
6
|
import { admitDigest } from './etag.js';
|
|
@@ -14,7 +15,7 @@ export function reference(input) {
|
|
|
14
15
|
export function acceptReference(input) {
|
|
15
16
|
const value = record(input, 'PUBLICATION_INVALID', 'Publication reference is invalid.');
|
|
16
17
|
exact(value, ['origin', 'identity', 'revision', 'etag'], 'PUBLICATION_INVALID');
|
|
17
|
-
if (typeof value.origin !== 'string' || !
|
|
18
|
+
if (typeof value.origin !== 'string' || !patterns.origin.test(value.origin)) {
|
|
18
19
|
fail('PUBLICATION_INVALID', 'Publication reference origin is invalid.');
|
|
19
20
|
}
|
|
20
21
|
const origin = value.origin;
|
|
@@ -24,7 +25,7 @@ export function acceptReference(input) {
|
|
|
24
25
|
if (identity.subject !== origin) {
|
|
25
26
|
fail('PUBLICATION_INVALID', 'Publication reference subject must equal its root origin.');
|
|
26
27
|
}
|
|
27
|
-
if (typeof value.revision !== 'string' || !
|
|
28
|
+
if (typeof value.revision !== 'string' || !patterns.revision.test(value.revision)) {
|
|
28
29
|
fail('PUBLICATION_INVALID', 'Publication reference revision is invalid.');
|
|
29
30
|
}
|
|
30
31
|
return deepFreeze({
|
|
@@ -56,10 +57,10 @@ function acceptIssuer(input) {
|
|
|
56
57
|
fail('PUBLICATION_INVALID', 'Publication reference issuer is invalid.');
|
|
57
58
|
}
|
|
58
59
|
try {
|
|
59
|
-
return
|
|
60
|
+
return acceptIssuerId(input);
|
|
60
61
|
}
|
|
61
62
|
catch (cause) {
|
|
62
|
-
if (cause instanceof
|
|
63
|
+
if (cause instanceof AuthValueError) {
|
|
63
64
|
return fail('PUBLICATION_INVALID', 'Publication reference issuer is invalid.', cause);
|
|
64
65
|
}
|
|
65
66
|
throw cause;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference.js","sourceRoot":"","sources":["../../publication/reference.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reference.js","sourceRoot":"","sources":["../../publication/reference.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACnE,OAAO,EAAE,MAAM,IAAI,cAAc,EAAiB,MAAM,qCAAqC,CAAA;AAC7F,OAAO,EAAE,QAAQ,EAAY,MAAM,sCAAsC,CAAA;AAKzE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAiBvC,MAAM,UAAU,SAAS,CAAC,KAAkB;IAC1C,OAAO,UAAU,CAAC;QAChB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,QAAQ,EAAE,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE;QAC/B,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ;QAC/B,IAAI,EAAE,KAAK,CAAC,IAAI;KACjB,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,qBAAqB,EAAE,mCAAmC,CAAC,CAAA;IACvF,KAAK,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,qBAAqB,CAAC,CAAA;IAC/E,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5E,IAAI,CAAC,qBAAqB,EAAE,0CAA0C,CAAC,CAAA;IACzE,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAoB,CAAA;IAEzC,MAAM,QAAQ,GAAG,MAAM,CACrB,KAAK,CAAC,QAAQ,EACd,qBAAqB,EACrB,4CAA4C,CAC7C,CAAA;IACD,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,qBAAqB,CAAC,CAAA;IAC7D,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC5C,IAAI,QAAQ,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;QAChC,IAAI,CAAC,qBAAqB,EAAE,2DAA2D,CAAC,CAAA;IAC1F,CAAC;IAED,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClF,IAAI,CAAC,qBAAqB,EAAE,4CAA4C,CAAC,CAAA;IAC3E,CAAC;IAED,OAAO,UAAU,CAAC;QAChB,MAAM;QACN,QAAQ,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;QACrC,QAAQ,EAAE,KAAK,CAAC,QAAoB;QACpC,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC;KAC9B,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,KAAqB,EACrB,QAAwB;IAExB,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;QAAE,OAAO,cAAc,CAAA;IAC3D,IACE,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,QAAQ,CAAC,MAAM;QAClD,KAAK,CAAC,QAAQ,CAAC,OAAO,KAAK,QAAQ,CAAC,QAAQ,CAAC,OAAO,EACpD,CAAC;QACD,OAAO,gBAAgB,CAAA;IACzB,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ;QAAE,OAAO,cAAc,CAAA;IAC/D,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAA;AAC/D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,KAAkB,EAClB,QAAwB;IAExB,OAAO,iBAAiB,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAA;AACtD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAkB,EAAE,QAAwB;IAC3E,OAAO,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,OAAO,CAAA;AACtD,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,qBAAqB,EAAE,0CAA0C,CAAC,CAAA;IACzE,CAAC;IACD,IAAI,CAAC;QACH,OAAO,cAAc,CAAC,KAAK,CAAC,CAAA;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC,qBAAqB,EAAE,0CAA0C,EAAE,KAAK,CAAC,CAAA;QACvF,CAAC;QACD,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type { AuthorityOperation } from '@astrale-os/kernel-core/schema';
|
|
2
|
-
import type {
|
|
1
|
+
import type { AuthorityOperation } from '@astrale-os/kernel-core/schema/authority/operation';
|
|
2
|
+
import type { schema } from '@astrale-os/kernel-dsl/v1';
|
|
3
|
+
import type { Key as SemanticKey } from '@astrale-os/kernel-dsl/v1/addressing';
|
|
3
4
|
export type NonEmpty<Value> = readonly [Value, ...Value[]];
|
|
4
5
|
export declare const ClassOperationOrder: readonly ["create", "read", "traverse", "update", "delete"];
|
|
5
6
|
export type ClassOperation = (typeof ClassOperationOrder)[number];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requirements.d.ts","sourceRoot":"","sources":["../../publication/requirements.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"requirements.d.ts","sourceRoot":"","sources":["../../publication/requirements.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oDAAoD,CAAA;AAC5F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,GAAG,IAAI,WAAW,EAAE,MAAM,sCAAsC,CAAA;AAU9E,MAAM,MAAM,QAAQ,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,CAAA;AAE1D,eAAO,MAAM,mBAAmB,6DAMrB,CAAA;AAEX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAA;AAEjE,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAA;IAC/B,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAA;CAC9C;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAA;IAC7C,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAA;CAC/C;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;IACnD,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,0BAA0B,CAAC,CAAA;IACvD,QAAQ,CAAC,KAAK,CAAC,EAAE,2BAA2B,CAAA;CAC7C;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,YAAY,EAAE,sBAAsB,CAAA;CAC9C;AAED,iEAAiE;AACjE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,uBAAuB,CAmDzE;AAED,+FAA+F;AAC/F,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,CAAC,YAAY,EACzB,OAAO,EAAE,SAAS,MAAM,CAAC,YAAY,EAAE,EACvC,YAAY,EAAE,uBAAuB,GACpC,IAAI,CAmBN"}
|