@astrale-os/kernel-protocol 0.5.0-beta.3 → 0.5.0-beta.5
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 +2 -2
- package/dist/invocation/admission.d.ts.map +1 -1
- package/dist/invocation/admission.js +4 -3
- package/dist/invocation/admission.js.map +1 -1
- package/dist/invocation/index.d.ts +1 -1
- package/dist/invocation/index.d.ts.map +1 -1
- package/dist/invocation/index.js +1 -1
- package/dist/invocation/index.js.map +1 -1
- package/dist/invocation/redirect.d.ts +9 -7
- package/dist/invocation/redirect.d.ts.map +1 -1
- package/dist/invocation/redirect.js +6 -4
- package/dist/invocation/redirect.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/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 +8 -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 +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":"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"}
|
|
@@ -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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { KernelSchema } from '@astrale-os/kernel-core/schema';
|
|
2
|
+
import { AuthorityOperationOrder } from '@astrale-os/kernel-core/schema/authority/operation';
|
|
3
|
+
import { Key, patterns, Ref } from '@astrale-os/kernel-dsl/v1/addressing';
|
|
4
|
+
import { revisionOfDomainSchema } from '@astrale-os/kernel-dsl/v1/schema/revision';
|
|
3
5
|
import { array, deepFreeze, exact, record, unique } from './content.js';
|
|
4
6
|
import { fail } from './error.js';
|
|
5
7
|
export const ClassOperationOrder = Object.freeze([
|
|
@@ -46,8 +48,7 @@ export function admitRequirements(input) {
|
|
|
46
48
|
export function validateRequirements(root, closure, requirements) {
|
|
47
49
|
const dependencies = exactDependencyClosure(root, closure);
|
|
48
50
|
for (const callable of requirements.capabilities.functions ?? []) {
|
|
49
|
-
|
|
50
|
-
const dependency = dependencies.get(Key.origin(callable));
|
|
51
|
+
const dependency = capabilityOwner(root, dependencies, callable, 'Function');
|
|
51
52
|
const reference = Key.ref(callable);
|
|
52
53
|
if (!hasCallable(dependency, reference)) {
|
|
53
54
|
fail('PUBLICATION_INVALID', 'Function capability requirement names an unknown dependency callable.');
|
|
@@ -55,8 +56,8 @@ export function validateRequirements(root, closure, requirements) {
|
|
|
55
56
|
}
|
|
56
57
|
for (const requirement of requirements.capabilities.classes ?? []) {
|
|
57
58
|
const key = Key.fromSchema(requirement.class);
|
|
58
|
-
|
|
59
|
-
if (
|
|
59
|
+
const dependency = capabilityOwner(root, dependencies, key, 'Class');
|
|
60
|
+
if (dependency.classes[requirement.class.name] === undefined) {
|
|
60
61
|
fail('PUBLICATION_INVALID', 'Class capability requirement names an unknown dependency Class.');
|
|
61
62
|
}
|
|
62
63
|
}
|
|
@@ -67,7 +68,7 @@ function exactDependencyClosure(root, closure) {
|
|
|
67
68
|
const visit = (owner) => {
|
|
68
69
|
for (const coordinate of owner.dependencies) {
|
|
69
70
|
const dependency = supplied.get(coordinate.origin);
|
|
70
|
-
if (dependency === undefined ||
|
|
71
|
+
if (dependency === undefined || revisionOfDomainSchema(dependency) !== coordinate.revision) {
|
|
71
72
|
fail('PUBLICATION_INVALID', 'Publication Bundle omits an exact dependency.');
|
|
72
73
|
}
|
|
73
74
|
if (reachable.has(dependency.origin))
|
|
@@ -126,9 +127,9 @@ function admitClassRef(input) {
|
|
|
126
127
|
exact(value, ['kind', 'name', 'origin'], 'PUBLICATION_INVALID');
|
|
127
128
|
if (value.kind !== 'class' ||
|
|
128
129
|
typeof value.origin !== 'string' ||
|
|
129
|
-
!
|
|
130
|
+
!patterns.origin.test(value.origin) ||
|
|
130
131
|
typeof value.name !== 'string' ||
|
|
131
|
-
!
|
|
132
|
+
!patterns.memberName.test(value.name)) {
|
|
132
133
|
fail('PUBLICATION_INVALID', 'Class capability reference is invalid.');
|
|
133
134
|
}
|
|
134
135
|
return Object.freeze({ origin: value.origin, kind: 'class', name: value.name });
|
|
@@ -159,13 +160,17 @@ function compare(left, right) {
|
|
|
159
160
|
function classKey(input) {
|
|
160
161
|
return String(Key.fromSchema(input));
|
|
161
162
|
}
|
|
162
|
-
function
|
|
163
|
+
function capabilityOwner(root, dependencies, key, label) {
|
|
163
164
|
const origin = Key.origin(key);
|
|
164
165
|
if (origin === root.origin)
|
|
165
166
|
fail('PUBLICATION_INVALID', `${label} capability target cannot be local.`);
|
|
166
|
-
if (
|
|
167
|
+
if (origin === KernelSchema.origin)
|
|
168
|
+
return KernelSchema;
|
|
169
|
+
const dependency = dependencies.get(origin);
|
|
170
|
+
if (dependency === undefined) {
|
|
167
171
|
fail('PUBLICATION_INVALID', `${label} capability target must belong to the exact dependency closure.`);
|
|
168
172
|
}
|
|
173
|
+
return dependency;
|
|
169
174
|
}
|
|
170
175
|
function hasCallable(dependency, reference) {
|
|
171
176
|
if (reference.startsWith('function.')) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requirements.js","sourceRoot":"","sources":["../../publication/requirements.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"requirements.js","sourceRoot":"","sources":["../../publication/requirements.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type Key } from '@astrale-os/kernel-dsl/v1';
|
|
1
|
+
import { type Key } from '@astrale-os/kernel-dsl/v1/addressing';
|
|
2
2
|
export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | '*';
|
|
3
3
|
export type SingleCredentialSource = {
|
|
4
4
|
readonly in: 'header';
|
|
@@ -29,5 +29,10 @@ export interface HttpRoute {
|
|
|
29
29
|
readonly body?: RouteBody;
|
|
30
30
|
readonly credential?: CredentialSource;
|
|
31
31
|
}
|
|
32
|
+
/** Provider-neutral build input; placement replaces path with the canonical absolute href. */
|
|
33
|
+
export interface HttpRouteDeclaration extends Omit<HttpRoute, 'href'> {
|
|
34
|
+
readonly path: string;
|
|
35
|
+
}
|
|
32
36
|
export declare function admitRoute(input: unknown, origin: string): HttpRoute;
|
|
37
|
+
export declare function admitRouteDeclaration(input: unknown, origin: string): HttpRouteDeclaration;
|
|
33
38
|
//# sourceMappingURL=route.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../publication/route.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../publication/route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,GAAG,EAAE,MAAM,sCAAsC,CAAA;AAMzE,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,GAAG,CAAA;AAE1E,MAAM,MAAM,sBAAsB,GAC9B;IAAE,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChD;IAAE,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAEnD,MAAM,MAAM,gBAAgB,GACxB,sBAAsB,GACtB,SAAS,CAAC,sBAAsB,EAAE,GAAG,sBAAsB,EAAE,CAAC,CAAA;AAElE,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAA;AACvD,MAAM,MAAM,SAAS,GAAG,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAA;AAChE,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC,CAAA;AAEjE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAA;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;IAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAA;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACjD,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAA;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAA;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAA;CACvC;AAED,8FAA8F;AAC9F,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC;IACnE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAID,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAOpE;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,oBAAoB,CAmB1F"}
|
|
@@ -1,14 +1,39 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { patterns } from '@astrale-os/kernel-dsl/v1/addressing';
|
|
2
2
|
import { admitCallableKey } from './bindings/callable.js';
|
|
3
3
|
import { absoluteHttpUrl, deepFreeze, exact, record } from './content.js';
|
|
4
4
|
import { fail } from './error.js';
|
|
5
5
|
const ROUTE_NAME = /^[A-Za-z][A-Za-z0-9_-]{0,63}$/u;
|
|
6
6
|
export function admitRoute(input, origin) {
|
|
7
7
|
const value = record(input, 'PUBLICATION_ROUTE_INVALID', 'Published HTTP route is invalid.');
|
|
8
|
+
const common = admitRouteCommon(value, origin, 'href');
|
|
9
|
+
return deepFreeze({
|
|
10
|
+
...common,
|
|
11
|
+
href: absoluteHttpUrl(value.href, false, 'PUBLICATION_ROUTE_INVALID', true),
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
export function admitRouteDeclaration(input, origin) {
|
|
15
|
+
const value = record(input, 'PUBLICATION_ROUTE_INVALID', 'HTTP route declaration is invalid.');
|
|
16
|
+
const common = admitRouteCommon(value, origin, 'path');
|
|
17
|
+
if (typeof value.path !== 'string' || !value.path.startsWith('/')) {
|
|
18
|
+
fail('PUBLICATION_ROUTE_INVALID', 'Route declaration path must be relative to one issuer.');
|
|
19
|
+
}
|
|
20
|
+
let parsed;
|
|
21
|
+
try {
|
|
22
|
+
parsed = new URL(value.path, 'https://placement.invalid');
|
|
23
|
+
}
|
|
24
|
+
catch (cause) {
|
|
25
|
+
return fail('PUBLICATION_ROUTE_INVALID', 'Route declaration path is invalid.', cause);
|
|
26
|
+
}
|
|
27
|
+
if (parsed.origin !== 'https://placement.invalid' || parsed.search !== '' || parsed.hash !== '') {
|
|
28
|
+
fail('PUBLICATION_ROUTE_INVALID', 'Route declaration path cannot select an origin, query, or fragment.');
|
|
29
|
+
}
|
|
30
|
+
return deepFreeze({ ...common, path: value.path });
|
|
31
|
+
}
|
|
32
|
+
function admitRouteCommon(value, origin, location) {
|
|
8
33
|
exact(value, [
|
|
9
34
|
'name',
|
|
10
35
|
'callable',
|
|
11
|
-
|
|
36
|
+
location,
|
|
12
37
|
'method',
|
|
13
38
|
'requestMethod',
|
|
14
39
|
'default',
|
|
@@ -29,22 +54,20 @@ export function admitRoute(input, origin) {
|
|
|
29
54
|
fail('PUBLICATION_ROUTE_INVALID', 'Route default may only be true.');
|
|
30
55
|
}
|
|
31
56
|
if (value.requestMethod !== undefined &&
|
|
32
|
-
(typeof value.requestMethod !== 'string' ||
|
|
33
|
-
!dslSchema.patterns.memberName.test(value.requestMethod))) {
|
|
57
|
+
(typeof value.requestMethod !== 'string' || !patterns.memberName.test(value.requestMethod))) {
|
|
34
58
|
fail('PUBLICATION_ROUTE_INVALID', 'Route request-method mapping is invalid.');
|
|
35
59
|
}
|
|
36
60
|
if (value.receiver !== undefined &&
|
|
37
|
-
(typeof value.receiver !== 'string' || !
|
|
61
|
+
(typeof value.receiver !== 'string' || !patterns.memberName.test(value.receiver))) {
|
|
38
62
|
fail('PUBLICATION_ROUTE_INVALID', 'Route receiver is invalid.');
|
|
39
63
|
}
|
|
40
64
|
const query = stringRecord(value.query);
|
|
41
65
|
const headers = headerRecord(value.headers);
|
|
42
66
|
const body = admitBody(value.body);
|
|
43
67
|
const credential = admitCredential(value.credential);
|
|
44
|
-
return
|
|
68
|
+
return {
|
|
45
69
|
name: value.name,
|
|
46
70
|
callable,
|
|
47
|
-
href: absoluteHttpUrl(value.href, false, 'PUBLICATION_ROUTE_INVALID', true),
|
|
48
71
|
method: value.method,
|
|
49
72
|
...(value.requestMethod === undefined ? {} : { requestMethod: value.requestMethod }),
|
|
50
73
|
...(value.default === true ? { default: true } : {}),
|
|
@@ -53,7 +76,7 @@ export function admitRoute(input, origin) {
|
|
|
53
76
|
...(headers === undefined ? {} : { headers }),
|
|
54
77
|
...(body === undefined ? {} : { body }),
|
|
55
78
|
...(credential === undefined ? {} : { credential }),
|
|
56
|
-
}
|
|
79
|
+
};
|
|
57
80
|
}
|
|
58
81
|
function admitCredential(input) {
|
|
59
82
|
if (input === undefined)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../publication/route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../publication/route.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type { BundleDescriptor } from './bundle.js';
|
|
1
|
+
import type { Revision } from '@astrale-os/kernel-dsl/v1/schema';
|
|
2
|
+
import type { BundleDescriptor } from './bundle-descriptor.js';
|
|
3
3
|
export interface Schema {
|
|
4
|
-
readonly revision:
|
|
4
|
+
readonly revision: Revision;
|
|
5
5
|
readonly bundle: BundleDescriptor;
|
|
6
6
|
}
|
|
7
7
|
export declare function admitSchema(input: unknown): Schema;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../publication/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../publication/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAA;AAIhE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAM9D,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAA;CAClC;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAUlD"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { admitBundleDescriptor } from './bundle.js';
|
|
1
|
+
import { patterns } from '@astrale-os/kernel-dsl/v1/addressing';
|
|
2
|
+
import { admitBundleDescriptor } from './bundle-descriptor.js';
|
|
3
3
|
import { exact, record } from './content.js';
|
|
4
4
|
import { fail } from './error.js';
|
|
5
5
|
export function admitSchema(input) {
|
|
6
6
|
const value = record(input, 'PUBLICATION_INVALID', 'Published schema is invalid.');
|
|
7
7
|
exact(value, ['revision', 'bundle'], 'PUBLICATION_INVALID');
|
|
8
|
-
if (typeof value.revision !== 'string' || !
|
|
8
|
+
if (typeof value.revision !== 'string' || !patterns.revision.test(value.revision)) {
|
|
9
9
|
fail('PUBLICATION_INVALID', 'Published schema revision is invalid.');
|
|
10
10
|
}
|
|
11
11
|
return Object.freeze({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../publication/schema.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../publication/schema.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAA;AAI/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAOjC,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,qBAAqB,EAAE,8BAA8B,CAAC,CAAA;IAClF,KAAK,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,qBAAqB,CAAC,CAAA;IAC3D,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,uCAAuC,CAAC,CAAA;IACtE,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,QAAQ,EAAE,KAAK,CAAC,QAAoB;QACpC,MAAM,EAAE,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC;KAC5C,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admission.d.ts","sourceRoot":"","sources":["../../routes/admission.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAS,KAAK,EAAE,MAAM,YAAY,CAAA;AAU9C,kEAAkE;AAClE,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAUjD"}
|