@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,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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { accept as acceptPortable } from '@astrale-os/kernel-dsl/value';
|
|
2
|
+
import { acceptReference } from '../publication/reference.js';
|
|
3
|
+
import { admitRoute } from '../publication/route.js';
|
|
4
|
+
import { fail } from './error.js';
|
|
5
|
+
const AUTHENTICATION = new Set(['anonymous', 'authenticated', 'authorized']);
|
|
6
|
+
const OUTPUT = new Set(['value', 'stream', 'binary']);
|
|
7
|
+
/** Admit one emitted portable Table before Server composition. */
|
|
8
|
+
export function acceptTable(input) {
|
|
9
|
+
const value = object(acceptPortable(input), 'Route Table');
|
|
10
|
+
exact(value, ['publication', 'entries'], 'Route Table');
|
|
11
|
+
const reference = acceptReference(value.publication);
|
|
12
|
+
if (!Array.isArray(value.entries))
|
|
13
|
+
invalid('Route Table entries');
|
|
14
|
+
const entries = value.entries.map((entry) => acceptRoute(entry, reference.origin));
|
|
15
|
+
if (new Set(entries.map(({ name }) => name)).size !== entries.length) {
|
|
16
|
+
fail('NATIVE_ROUTE_BINDING_INVALID', 'Route Table names must be unique.');
|
|
17
|
+
}
|
|
18
|
+
return Object.freeze({ publication: reference, entries: Object.freeze(entries) });
|
|
19
|
+
}
|
|
20
|
+
function acceptRoute(input, origin) {
|
|
21
|
+
const value = object(input, 'Route Table entry');
|
|
22
|
+
exact(value, ['name', 'callable', 'target', 'authentication', 'output', 'href', 'method', 'default'], 'Route Table entry', ['requestMethod', 'query', 'headers', 'body', 'credential']);
|
|
23
|
+
if (typeof value.default !== 'boolean')
|
|
24
|
+
invalid('Route Table default');
|
|
25
|
+
if (typeof value.authentication !== 'string' || !AUTHENTICATION.has(value.authentication)) {
|
|
26
|
+
invalid('Route Table authentication');
|
|
27
|
+
}
|
|
28
|
+
if (typeof value.output !== 'string' || !OUTPUT.has(value.output))
|
|
29
|
+
invalid('Route Table output');
|
|
30
|
+
const wire = admitRoute({
|
|
31
|
+
name: value.name,
|
|
32
|
+
callable: value.callable,
|
|
33
|
+
href: value.href,
|
|
34
|
+
method: value.method,
|
|
35
|
+
...(value.default === true ? { default: true } : {}),
|
|
36
|
+
...(value.requestMethod === undefined ? {} : { requestMethod: value.requestMethod }),
|
|
37
|
+
...(value.query === undefined ? {} : { query: value.query }),
|
|
38
|
+
...(value.headers === undefined ? {} : { headers: value.headers }),
|
|
39
|
+
...(value.body === undefined ? {} : { body: value.body }),
|
|
40
|
+
...(value.credential === undefined ? {} : { credential: value.credential }),
|
|
41
|
+
...receiver(value.target),
|
|
42
|
+
}, origin);
|
|
43
|
+
const { default: _default, receiver: _receiver, ...common } = wire;
|
|
44
|
+
return Object.freeze({
|
|
45
|
+
...common,
|
|
46
|
+
target: target(value.target),
|
|
47
|
+
authentication: value.authentication,
|
|
48
|
+
output: value.output,
|
|
49
|
+
default: value.default,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
function target(input) {
|
|
53
|
+
const value = object(input, 'Route target');
|
|
54
|
+
if (value.kind === 'function') {
|
|
55
|
+
exact(value, ['kind'], 'Route Function target');
|
|
56
|
+
return Object.freeze({ kind: 'function' });
|
|
57
|
+
}
|
|
58
|
+
if (value.kind !== 'method' || (value.dispatch !== 'static' && value.dispatch !== 'instance')) {
|
|
59
|
+
invalid('Route Method target');
|
|
60
|
+
}
|
|
61
|
+
if (value.dispatch === 'static') {
|
|
62
|
+
exact(value, ['kind', 'dispatch'], 'Route static Method target');
|
|
63
|
+
return Object.freeze({ kind: 'method', dispatch: 'static' });
|
|
64
|
+
}
|
|
65
|
+
exact(value, ['kind', 'dispatch', 'receiver'], 'Route instance Method target');
|
|
66
|
+
if (typeof value.receiver !== 'string')
|
|
67
|
+
invalid('Route receiver');
|
|
68
|
+
return Object.freeze({ kind: 'method', dispatch: 'instance', receiver: value.receiver });
|
|
69
|
+
}
|
|
70
|
+
function receiver(input) {
|
|
71
|
+
const admitted = target(input);
|
|
72
|
+
return admitted.kind === 'method' && admitted.dispatch === 'instance'
|
|
73
|
+
? { receiver: admitted.receiver }
|
|
74
|
+
: {};
|
|
75
|
+
}
|
|
76
|
+
function object(input, label) {
|
|
77
|
+
if (input === null || typeof input !== 'object' || Array.isArray(input))
|
|
78
|
+
invalid(label);
|
|
79
|
+
return input;
|
|
80
|
+
}
|
|
81
|
+
function exact(value, required, label, optional = []) {
|
|
82
|
+
const allowed = new Set([...required, ...optional]);
|
|
83
|
+
if (Object.keys(value).some((key) => !allowed.has(key)) ||
|
|
84
|
+
required.some((key) => !Object.hasOwn(value, key)))
|
|
85
|
+
invalid(label);
|
|
86
|
+
}
|
|
87
|
+
function invalid(label) {
|
|
88
|
+
return fail('NATIVE_ROUTE_BINDING_INVALID', `${label} is invalid.`);
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=admission.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admission.js","sourceRoot":"","sources":["../../routes/admission.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { schema } from '@astrale-os/kernel-dsl/v1';
|
|
2
|
+
import type { Publication } from '../publication/publication.js';
|
|
3
|
+
import type { Plan } from './plan.js';
|
|
4
|
+
import type { Table } from './table.js';
|
|
5
|
+
/** Bind one Plan to an exact placed Publication and matching Validator. */
|
|
6
|
+
export declare function bind(plan: Plan, deployed: Publication, validator: schema.Validator): Table;
|
|
7
|
+
//# sourceMappingURL=binding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binding.d.ts","sourceRoot":"","sources":["../../routes/binding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAIvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,KAAK,EAAS,KAAK,EAAE,MAAM,YAAY,CAAA;AAO9C,2EAA2E;AAC3E,wBAAgB,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,GAAG,KAAK,CAwB1F"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { json } from '@astrale-os/kernel-dsl/value';
|
|
2
|
+
import { reference } from '../publication/reference.js';
|
|
3
|
+
import { fail } from './error.js';
|
|
4
|
+
import { place } from './placement.js';
|
|
5
|
+
import { rejectReserved } from './reservation.js';
|
|
6
|
+
/** Bind one Plan to an exact placed Publication and matching Validator. */
|
|
7
|
+
export function bind(plan, deployed, validator) {
|
|
8
|
+
if (plan.origin !== deployed.origin ||
|
|
9
|
+
plan.origin !== validator.origin ||
|
|
10
|
+
plan.revision !== deployed.schema.revision ||
|
|
11
|
+
plan.revision !== validator.revision) {
|
|
12
|
+
fail('NATIVE_ROUTE_BINDING_INVALID', 'Route Plan, Publication, and Validator identity differ.');
|
|
13
|
+
}
|
|
14
|
+
if (json.serialize(place(plan, deployed.identity.issuer)) !==
|
|
15
|
+
json.serialize(deployed.routes)) {
|
|
16
|
+
fail('NATIVE_ROUTE_BINDING_INVALID', 'Publication routes differ from the placed Route Plan.');
|
|
17
|
+
}
|
|
18
|
+
const entries = plan.entries.map((entry, index) => {
|
|
19
|
+
const { path: _path, ...portable } = entry;
|
|
20
|
+
return Object.freeze({ ...portable, href: deployed.routes[index].href });
|
|
21
|
+
});
|
|
22
|
+
rejectReserved(deployed, entries);
|
|
23
|
+
return Object.freeze({
|
|
24
|
+
publication: reference(deployed),
|
|
25
|
+
entries: Object.freeze(entries),
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=binding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binding.js","sourceRoot":"","sources":["../../routes/binding.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAA;AAMnD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,2EAA2E;AAC3E,MAAM,UAAU,IAAI,CAAC,IAAU,EAAE,QAAqB,EAAE,SAA2B;IACjF,IACE,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;QAC/B,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM;QAChC,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,MAAM,CAAC,QAAQ;QAC1C,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ,EACpC,CAAC;QACD,IAAI,CAAC,8BAA8B,EAAE,yDAAyD,CAAC,CAAA;IACjG,CAAC;IACD,IACE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAU,CAAC;QAC9D,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAe,CAAC,EACxC,CAAC;QACD,IAAI,CAAC,8BAA8B,EAAE,uDAAuD,CAAC,CAAA;IAC/F,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAS,EAAE;QACvD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,GAAG,KAAK,CAAA;QAC1C,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAE,CAAC,IAAI,EAAE,CAAC,CAAA;IAC3E,CAAC,CAAC,CAAA;IACF,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IACjC,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,WAAW,EAAE,SAAS,CAAC,QAAQ,CAAC;QAChC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;KAChC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collision.d.ts","sourceRoot":"","sources":["../../routes/collision.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAKvC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,SAAS,KAAK,EAAE,GAAG,IAAI,CAUhE"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { fail } from './error.js';
|
|
2
|
+
import { templatesOverlap } from './template.js';
|
|
3
|
+
export function rejectCollisions(entries) {
|
|
4
|
+
const accepted = [];
|
|
5
|
+
for (const entry of entries) {
|
|
6
|
+
for (const previous of accepted) {
|
|
7
|
+
if (overlap(entry.method, previous.method) && templatesOverlap(entry.href, previous.href)) {
|
|
8
|
+
fail('NATIVE_ROUTE_COLLISION', `Route ${entry.name} collides with ${previous.name}.`);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
accepted.push(entry);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
function overlap(left, right) {
|
|
15
|
+
return left === '*' || right === '*' || left === right;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=collision.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collision.js","sourceRoot":"","sources":["../../routes/collision.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAEhD,MAAM,UAAU,gBAAgB,CAAC,OAAyB;IACxD,MAAM,QAAQ,GAAY,EAAE,CAAA;IAC5B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,KAAK,MAAM,QAAQ,IAAI,QAAQ,EAAE,CAAC;YAChC,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1F,IAAI,CAAC,wBAAwB,EAAE,SAAS,KAAK,CAAC,IAAI,kBAAkB,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAA;YACvF,CAAC;QACH,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACtB,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,IAAgB,EAAE,KAAiB;IAClD,OAAO,IAAI,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,IAAI,IAAI,KAAK,KAAK,CAAA;AACxD,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { schema } from '@astrale-os/kernel-dsl/v1';
|
|
2
|
+
import type * as publication from '../publication/index.js';
|
|
3
|
+
import type { Plan } from './plan.js';
|
|
4
|
+
export interface CompileInput {
|
|
5
|
+
readonly routes: readonly publication.HttpRouteDeclaration[];
|
|
6
|
+
readonly validator: schema.Validator;
|
|
7
|
+
}
|
|
8
|
+
export declare function compile(input: CompileInput): Plan;
|
|
9
|
+
//# sourceMappingURL=compiler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../routes/compiler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAEvD,OAAO,KAAK,KAAK,WAAW,MAAM,yBAAyB,CAAA;AAC3D,OAAO,KAAK,EAAE,IAAI,EAAa,MAAM,WAAW,CAAA;AAShD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,CAAC,oBAAoB,EAAE,CAAA;IAC5D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAA;CACrC;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CA+CjD"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { admitRouteDeclaration } from '../publication/route.js';
|
|
2
|
+
import { rejectCollisions } from './collision.js';
|
|
3
|
+
import { fail } from './error.js';
|
|
4
|
+
import { validateCredentialMapping, validateMapping, validateWireMapping } from './mapping.js';
|
|
5
|
+
import { placePath } from './placement.js';
|
|
6
|
+
import { validateTemplate } from './template.js';
|
|
7
|
+
export function compile(input) {
|
|
8
|
+
if (input === null || typeof input !== 'object' || !Array.isArray(input.routes)) {
|
|
9
|
+
throw new TypeError('Route compilation input is invalid.');
|
|
10
|
+
}
|
|
11
|
+
const authored = input.routes.map((entry) => admitRouteDeclaration(entry, input.validator.origin));
|
|
12
|
+
const entries = authored.map((declaration) => {
|
|
13
|
+
const meaning = input.validator.callable(declaration.callable);
|
|
14
|
+
if (meaning === undefined) {
|
|
15
|
+
fail('NATIVE_ROUTE_BINDING_INVALID', `Unknown callable ${declaration.callable}.`);
|
|
16
|
+
}
|
|
17
|
+
const href = placePath(declaration.path, 'https://routes.invalid');
|
|
18
|
+
const route = { ...declaration, href };
|
|
19
|
+
validateTemplate(href);
|
|
20
|
+
validateMapping(route, meaning.fields, meaning.target.kind === 'method' && meaning.target.dispatch === 'instance');
|
|
21
|
+
validateWireMapping(route);
|
|
22
|
+
validateCredentialMapping(route);
|
|
23
|
+
if (route.method === 'GET' && route.body !== undefined) {
|
|
24
|
+
fail('NATIVE_ROUTE_DECLARATION_INVALID', `GET route ${route.name} cannot declare a body.`);
|
|
25
|
+
}
|
|
26
|
+
const target = meaning.target.kind === 'function'
|
|
27
|
+
? { kind: 'function' }
|
|
28
|
+
: meaning.target.dispatch === 'static'
|
|
29
|
+
? { kind: 'method', dispatch: 'static' }
|
|
30
|
+
: { kind: 'method', dispatch: 'instance', receiver: route.receiver };
|
|
31
|
+
const { href: _href, receiver: _receiver, ...portable } = route;
|
|
32
|
+
return Object.freeze({
|
|
33
|
+
...portable,
|
|
34
|
+
target,
|
|
35
|
+
authentication: meaning.authentication,
|
|
36
|
+
output: meaning.output,
|
|
37
|
+
path: declaration.path,
|
|
38
|
+
default: declaration.default === true,
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
rejectCollisions(entries.map((entry) => ({ ...entry, href: placePath(entry.path, 'https://routes.invalid') })));
|
|
42
|
+
return Object.freeze({
|
|
43
|
+
origin: input.validator.origin,
|
|
44
|
+
revision: input.validator.revision,
|
|
45
|
+
entries: Object.freeze(entries),
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=compiler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../routes/compiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { HttpRoute, SingleCredentialSource } from '../publication/index.js';
|
|
2
|
-
import type {
|
|
3
|
-
export declare function credentialSources(route: HttpRoute): readonly SingleCredentialSource[];
|
|
4
|
-
export declare function firstCredentialIsAmbient(entry:
|
|
5
|
-
export declare function specificHeaderWires(entry:
|
|
6
|
-
export declare function putCredential(entry:
|
|
7
|
-
export declare function withoutCredentialHeaders(entry:
|
|
8
|
-
export declare function readCredential(entry:
|
|
2
|
+
import type { Route } from './table.js';
|
|
3
|
+
export declare function credentialSources(route: Pick<HttpRoute, 'credential'>): readonly SingleCredentialSource[];
|
|
4
|
+
export declare function firstCredentialIsAmbient(entry: Route): boolean;
|
|
5
|
+
export declare function specificHeaderWires(entry: Route): ReadonlySet<string>;
|
|
6
|
+
export declare function putCredential(entry: Route, url: URL, headers: Record<string, string>, credential: string): void;
|
|
7
|
+
export declare function withoutCredentialHeaders(entry: Route, input: Readonly<Record<string, string>>): Record<string, string>;
|
|
8
|
+
export declare function readCredential(entry: Route, url: URL, headers: Record<string, string>): string | undefined;
|
|
9
9
|
//# sourceMappingURL=credential.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credential.d.ts","sourceRoot":"","sources":["../../routes/credential.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAChF,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"credential.d.ts","sourceRoot":"","sources":["../../routes/credential.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAChF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAIvC,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,GACnC,SAAS,sBAAsB,EAAE,CAGnC;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAE9D;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAMrE;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,UAAU,EAAE,MAAM,GACjB,IAAI,CAaN;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GACtC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAsBxB;AAED,wBAAgB,cAAc,CAC5B,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,MAAM,GAAG,SAAS,CA2BpB"}
|