@astrale-os/kernel-server 0.5.0-beta.4 → 0.5.0-beta.6
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/errors/classify.d.ts +1 -1
- package/dist/errors/classify.d.ts.map +1 -1
- package/dist/errors/classify.js +1 -1
- package/dist/errors/classify.js.map +1 -1
- package/dist/invocation/publication-route.d.ts +5 -3
- package/dist/invocation/publication-route.d.ts.map +1 -1
- package/dist/invocation/publication-route.js +8 -6
- package/dist/invocation/publication-route.js.map +1 -1
- package/dist/issuer/exchange.d.ts +2 -2
- package/dist/issuer/exchange.d.ts.map +1 -1
- package/dist/issuer/exchange.js +13 -11
- package/dist/issuer/exchange.js.map +1 -1
- package/dist/issuer/routes.d.ts.map +1 -1
- package/dist/issuer/routes.js +14 -11
- package/dist/issuer/routes.js.map +1 -1
- package/dist/issuer/types.d.ts +2 -1
- package/dist/issuer/types.d.ts.map +1 -1
- package/dist/publication/snapshot.d.ts +4 -2
- package/dist/publication/snapshot.d.ts.map +1 -1
- package/dist/publication/snapshot.js +15 -6
- package/dist/publication/snapshot.js.map +1 -1
- package/dist/publication/table.d.ts +4 -0
- package/dist/publication/table.d.ts.map +1 -0
- package/dist/publication/table.js +17 -0
- package/dist/publication/table.js.map +1 -0
- package/dist/publication/types.d.ts +4 -0
- package/dist/publication/types.d.ts.map +1 -1
- package/dist/publication/validator.d.ts +4 -0
- package/dist/publication/validator.d.ts.map +1 -0
- package/dist/publication/validator.js +17 -0
- package/dist/publication/validator.js.map +1 -0
- package/dist/routes/routes.d.ts +1 -1
- package/dist/routes/routes.d.ts.map +1 -1
- package/dist/routes/routes.js +22 -22
- package/dist/routes/routes.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +6 -4
- package/dist/server.js.map +1 -1
- package/dist/transport/codecs.d.ts +1 -1
- package/dist/transport/codecs.d.ts.map +1 -1
- package/dist/transport/codecs.js +1 -1
- package/dist/transport/codecs.js.map +1 -1
- package/dist/transport/credential.d.ts +1 -1
- package/dist/transport/credential.d.ts.map +1 -1
- package/dist/transport/credential.js +1 -1
- package/dist/transport/credential.js.map +1 -1
- package/dist/transport/http/handler.d.ts.map +1 -1
- package/dist/transport/http/handler.js +3 -1
- package/dist/transport/http/handler.js.map +1 -1
- package/dist/transport/http/render.d.ts +7 -5
- package/dist/transport/http/render.d.ts.map +1 -1
- package/dist/transport/http/render.js +5 -3
- package/dist/transport/http/render.js.map +1 -1
- package/dist/transport/stream-error.d.ts +2 -2
- package/dist/transport/stream-error.d.ts.map +1 -1
- package/dist/transport/stream-error.js +3 -3
- package/dist/transport/stream-error.js.map +1 -1
- package/dist/transport/websocket/session.d.ts +2 -2
- package/dist/transport/websocket/session.d.ts.map +1 -1
- package/dist/transport/websocket/session.js +2 -1
- package/dist/transport/websocket/session.js.map +1 -1
- package/dist/transport/websocket/upgrade.js +1 -1
- package/dist/transport/websocket/upgrade.js.map +1 -1
- package/package.json +15 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as errors from '@astrale-os/kernel-protocol/errors';
|
|
2
2
|
/** Convert only errors owned by an admitted Server or Protocol boundary into safe public data. */
|
|
3
3
|
export declare function classifyError(input: unknown): errors.ErrorPayload;
|
|
4
4
|
//# sourceMappingURL=classify.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"classify.d.ts","sourceRoot":"","sources":["../../errors/classify.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"classify.d.ts","sourceRoot":"","sources":["../../errors/classify.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,oCAAoC,CAAA;AAK5D,kGAAkG;AAClG,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,YAAY,CAYjE"}
|
package/dist/errors/classify.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PathError } from '@astrale-os/kernel-core/path';
|
|
2
|
-
import
|
|
2
|
+
import * as errors from '@astrale-os/kernel-protocol/errors';
|
|
3
3
|
import { RequestBodyTooLargeError } from './request-body.js';
|
|
4
4
|
import { ResponseBodyTooLargeError } from './response-body.js';
|
|
5
5
|
/** Convert only errors owned by an admitted Server or Protocol boundary into safe public data. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"classify.js","sourceRoot":"","sources":["../../errors/classify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AACxD,OAAO,
|
|
1
|
+
{"version":3,"file":"classify.js","sourceRoot":"","sources":["../../errors/classify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AACxD,OAAO,KAAK,MAAM,MAAM,oCAAoC,CAAA;AAE5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAA;AAE9D,kGAAkG;AAClG,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,IAAI,KAAK,YAAY,MAAM,CAAC,aAAa;QAAE,OAAO,KAAK,CAAC,OAAO,CAAA;IAC/D,IAAI,KAAK,YAAY,wBAAwB,EAAE,CAAC;QAC9C,OAAO,WAAW,CAAC,gBAAgB,EAAE,4CAA4C,CAAC,CAAA;IACpF,CAAC;IACD,IAAI,KAAK,YAAY,yBAAyB,EAAE,CAAC;QAC/C,OAAO,WAAW,CAAC,gBAAgB,EAAE,6CAA6C,CAAC,CAAA;IACrF,CAAC;IACD,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;QAC/B,OAAO,WAAW,CAAC,kBAAkB,EAAE,yBAAyB,CAAC,CAAA;IACnE,CAAC;IACD,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAA;AACxB,CAAC;AAED,SAAS,WAAW,CAAC,IAA+B,EAAE,OAAe;IACnE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAA;AAC9C,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,cAAc,CAAC,KAAK,CAAC,CAAA;IACrB,OAAO,WAAW,CAAC,gBAAgB,EAAE,6BAA6B,CAAC,CAAA;AACrE,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;QACnE,OAAO,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;IAChE,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,MAAM,KAAK,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;IACxD,iFAAiF;IACjF,sCAAsC;IACtC,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE;QAClD,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,IAAI,IAAI,OAAO,KAAK;QAC7C,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC;KACxB,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ErrorPayload } from '@astrale-os/kernel-protocol/errors';
|
|
2
|
+
import type { Publication } from '@astrale-os/kernel-protocol/publication/publication';
|
|
3
|
+
import type { PublicationRef } from '@astrale-os/kernel-protocol/publication/reference';
|
|
2
4
|
export type PublicationRouteDecision = {
|
|
3
5
|
readonly kind: 'exact';
|
|
4
6
|
} | {
|
|
5
7
|
readonly kind: 'same-schema';
|
|
6
8
|
} | {
|
|
7
9
|
readonly kind: 'rejected';
|
|
8
|
-
readonly error:
|
|
10
|
+
readonly error: ErrorPayload;
|
|
9
11
|
};
|
|
10
12
|
/** Compare untrusted installed routing evidence with the one captured serving Publication. */
|
|
11
|
-
export declare function publicationRouteDecision(current:
|
|
13
|
+
export declare function publicationRouteDecision(current: Publication, installed: PublicationRef): PublicationRouteDecision;
|
|
12
14
|
//# sourceMappingURL=publication-route.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publication-route.d.ts","sourceRoot":"","sources":["../../invocation/publication-route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"publication-route.d.ts","sourceRoot":"","sources":["../../invocation/publication-route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAe,MAAM,oCAAoC,CAAA;AACnF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qDAAqD,CAAA;AACtF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mDAAmD,CAAA;AASvF,MAAM,MAAM,wBAAwB,GAChC;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;CAAE,GAChC;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAA;CAAE,CAAA;AAE/D,8FAA8F;AAC9F,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,cAAc,GACxB,wBAAwB,CAuC1B"}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CODES } from '@astrale-os/kernel-protocol/errors';
|
|
2
|
+
import { SCHEMA_UPGRADE_REQUIRED, SERVICE_TRUST_REQUIRED, } from '@astrale-os/kernel-protocol/invocation/service-reason';
|
|
3
|
+
import { compareReference } from '@astrale-os/kernel-protocol/publication/reference';
|
|
2
4
|
/** Compare untrusted installed routing evidence with the one captured serving Publication. */
|
|
3
5
|
export function publicationRouteDecision(current, installed) {
|
|
4
|
-
switch (
|
|
6
|
+
switch (compareReference(current, installed)) {
|
|
5
7
|
case 'exact':
|
|
6
8
|
return Object.freeze({ kind: 'exact' });
|
|
7
9
|
case 'same-schema':
|
|
8
10
|
return Object.freeze({ kind: 'same-schema' });
|
|
9
11
|
case 'schema-drift':
|
|
10
12
|
return rejected('Installed Domain schema requires an explicit upgrade.', Object.freeze({
|
|
11
|
-
code:
|
|
13
|
+
code: SCHEMA_UPGRADE_REQUIRED,
|
|
12
14
|
details: Object.freeze({
|
|
13
15
|
origin: installed.origin,
|
|
14
16
|
installedRevision: installed.revision,
|
|
@@ -17,7 +19,7 @@ export function publicationRouteDecision(current, installed) {
|
|
|
17
19
|
}));
|
|
18
20
|
case 'identity-drift':
|
|
19
21
|
return rejected('Installed Domain Service identity requires explicit trust.', Object.freeze({
|
|
20
|
-
code:
|
|
22
|
+
code: SERVICE_TRUST_REQUIRED,
|
|
21
23
|
details: Object.freeze({
|
|
22
24
|
origin: installed.origin,
|
|
23
25
|
installedIssuer: installed.identity.issuer,
|
|
@@ -28,7 +30,7 @@ export function publicationRouteDecision(current, installed) {
|
|
|
28
30
|
return Object.freeze({
|
|
29
31
|
kind: 'rejected',
|
|
30
32
|
error: Object.freeze({
|
|
31
|
-
code:
|
|
33
|
+
code: CODES.INVALID_REQUEST,
|
|
32
34
|
message: 'Routed Publication origin differs from the served Domain.',
|
|
33
35
|
}),
|
|
34
36
|
});
|
|
@@ -37,7 +39,7 @@ export function publicationRouteDecision(current, installed) {
|
|
|
37
39
|
function rejected(message, data) {
|
|
38
40
|
return Object.freeze({
|
|
39
41
|
kind: 'rejected',
|
|
40
|
-
error: Object.freeze({ code:
|
|
42
|
+
error: Object.freeze({ code: CODES.CONFLICT, message, data }),
|
|
41
43
|
});
|
|
42
44
|
}
|
|
43
45
|
//# sourceMappingURL=publication-route.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publication-route.js","sourceRoot":"","sources":["../../invocation/publication-route.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"publication-route.js","sourceRoot":"","sources":["../../invocation/publication-route.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,oCAAoC,CAAA;AAC1D,OAAO,EACL,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,uDAAuD,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mDAAmD,CAAA;AAOpF,8FAA8F;AAC9F,MAAM,UAAU,wBAAwB,CACtC,OAAoB,EACpB,SAAyB;IAEzB,QAAQ,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC;QAC7C,KAAK,OAAO;YACV,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;QACzC,KAAK,aAAa;YAChB,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAA;QAC/C,KAAK,cAAc;YACjB,OAAO,QAAQ,CACb,uDAAuD,EACvD,MAAM,CAAC,MAAM,CAAC;gBACZ,IAAI,EAAE,uBAAuB;gBAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;oBACrB,MAAM,EAAE,SAAS,CAAC,MAAM;oBACxB,iBAAiB,EAAE,SAAS,CAAC,QAAQ;oBACrC,iBAAiB,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ;iBAC3C,CAAC;aACH,CAAC,CACH,CAAA;QACH,KAAK,gBAAgB;YACnB,OAAO,QAAQ,CACb,4DAA4D,EAC5D,MAAM,CAAC,MAAM,CAAC;gBACZ,IAAI,EAAE,sBAAsB;gBAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;oBACrB,MAAM,EAAE,SAAS,CAAC,MAAM;oBACxB,eAAe,EAAE,SAAS,CAAC,QAAQ,CAAC,MAAM;oBAC1C,eAAe,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM;iBACzC,CAAC;aACH,CAAC,CACH,CAAA;QACH,KAAK,cAAc;YACjB,OAAO,MAAM,CAAC,MAAM,CAAC;gBACnB,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;oBACnB,IAAI,EAAE,KAAK,CAAC,eAAe;oBAC3B,OAAO,EAAE,2DAA2D;iBACrE,CAAC;aACH,CAAC,CAAA;IACN,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,OAAe,EAAE,IAAiB;IAClD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;KAC9D,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as exchangeProtocol from '@astrale-os/kernel-protocol/issuer/exchange';
|
|
2
2
|
import type { CorsPolicy } from '../cors/index.js';
|
|
3
3
|
import type { ActiveOperations } from '../lifecycle/index.js';
|
|
4
4
|
import type { ServerRouter } from '../transport/index.js';
|
|
@@ -6,7 +6,7 @@ export interface Context {
|
|
|
6
6
|
readonly signal: AbortSignal;
|
|
7
7
|
}
|
|
8
8
|
export interface Provider {
|
|
9
|
-
exchange(request:
|
|
9
|
+
exchange(request: exchangeProtocol.Request, context: Context): Promise<exchangeProtocol.Response>;
|
|
10
10
|
}
|
|
11
11
|
export declare function capture(input: Provider): Provider;
|
|
12
12
|
export declare function mount(app: ServerRouter, issuer: string, provider: Provider, cors: CorsPolicy, active: ActiveOperations, timeoutMs: number): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exchange.d.ts","sourceRoot":"","sources":["../../issuer/exchange.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"exchange.d.ts","sourceRoot":"","sources":["../../issuer/exchange.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,gBAAgB,MAAM,6CAA6C,CAAA;AAG/E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEzD,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAC7B;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAA;CAClG;AASD,wBAAgB,OAAO,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,CASjD;AAED,wBAAgB,KAAK,CACnB,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,gBAAgB,EACxB,SAAS,EAAE,MAAM,GAChB,IAAI,CA8EN"}
|
package/dist/issuer/exchange.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
1
|
+
import { inspect as inspectCredential } from '@astrale-os/kernel-core/auth/credential';
|
|
2
|
+
import * as errors from '@astrale-os/kernel-protocol/errors';
|
|
3
|
+
import * as exchangeProtocol from '@astrale-os/kernel-protocol/issuer/exchange';
|
|
4
|
+
import { paths as issuerPaths } from '@astrale-os/kernel-protocol/issuer/paths';
|
|
3
5
|
const PROVIDER_CODES = new Set([
|
|
4
6
|
errors.CODES.AUTH_INVALID,
|
|
5
7
|
errors.CODES.AUTH_EXPIRED,
|
|
@@ -16,7 +18,7 @@ export function capture(input) {
|
|
|
16
18
|
});
|
|
17
19
|
}
|
|
18
20
|
export function mount(app, issuer, provider, cors, active, timeoutMs) {
|
|
19
|
-
const path =
|
|
21
|
+
const path = issuerPaths(issuer).tokenExchange;
|
|
20
22
|
if (cors.enabled) {
|
|
21
23
|
app.options(path, (context) => cors.preflight(context.req.raw, { methods: ['POST'], headers: ['authorization', 'accept'] }));
|
|
22
24
|
}
|
|
@@ -25,7 +27,7 @@ export function mount(app, issuer, provider, cors, active, timeoutMs) {
|
|
|
25
27
|
const respond = (payload, extra) => json(payload, errors.httpStatusOf(payload.error), request, cors, extra);
|
|
26
28
|
let admitted;
|
|
27
29
|
try {
|
|
28
|
-
admitted =
|
|
30
|
+
admitted = exchangeProtocol.acceptHttpRequest({
|
|
29
31
|
method: request.method,
|
|
30
32
|
url: request.url,
|
|
31
33
|
authorization: request.headers.get('authorization'),
|
|
@@ -34,7 +36,7 @@ export function mount(app, issuer, provider, cors, active, timeoutMs) {
|
|
|
34
36
|
}
|
|
35
37
|
catch (cause) {
|
|
36
38
|
if (cause instanceof errors.ProtocolError) {
|
|
37
|
-
return respond(
|
|
39
|
+
return respond(exchangeProtocol.acceptErrorResponse({ error: cause.payload }), cause.payload.code === errors.CODES.METHOD_NOT_ALLOWED ? { allow: 'POST' } : undefined);
|
|
38
40
|
}
|
|
39
41
|
throw cause;
|
|
40
42
|
}
|
|
@@ -54,7 +56,7 @@ export function mount(app, issuer, provider, cors, active, timeoutMs) {
|
|
|
54
56
|
return respond(error('DEADLINE_EXCEEDED', 'Token-exchange deadline elapsed.'));
|
|
55
57
|
}
|
|
56
58
|
if (cause instanceof errors.ProtocolError) {
|
|
57
|
-
return respond(
|
|
59
|
+
return respond(exchangeProtocol.acceptErrorResponse({ error: cause.payload }));
|
|
58
60
|
}
|
|
59
61
|
throw cause;
|
|
60
62
|
}
|
|
@@ -67,15 +69,15 @@ export function mount(app, issuer, provider, cors, active, timeoutMs) {
|
|
|
67
69
|
return respond(error('DEADLINE_EXCEEDED', 'Token-exchange deadline elapsed.'));
|
|
68
70
|
}
|
|
69
71
|
if (cause instanceof errors.ProtocolError && PROVIDER_CODES.has(cause.payload.code)) {
|
|
70
|
-
return respond(
|
|
72
|
+
return respond(exchangeProtocol.acceptErrorResponse({ error: cause.payload }));
|
|
71
73
|
}
|
|
72
74
|
throw cause;
|
|
73
75
|
}
|
|
74
76
|
if (operation.timedOut) {
|
|
75
77
|
return respond(error('DEADLINE_EXCEEDED', 'Token-exchange deadline elapsed.'));
|
|
76
78
|
}
|
|
77
|
-
const response =
|
|
78
|
-
if (
|
|
79
|
+
const response = exchangeProtocol.acceptResponse(output);
|
|
80
|
+
if (inspectCredential(response.token).claims.exp !== response.expiresAt) {
|
|
79
81
|
throw new TypeError('Token-exchange provider returned inconsistent expiry evidence.');
|
|
80
82
|
}
|
|
81
83
|
return json(response, 200, request, cors);
|
|
@@ -118,12 +120,12 @@ function invalidRequest() {
|
|
|
118
120
|
});
|
|
119
121
|
}
|
|
120
122
|
function error(code, message) {
|
|
121
|
-
return
|
|
123
|
+
return exchangeProtocol.acceptErrorResponse({
|
|
122
124
|
error: { code: errors.CODES[code], message },
|
|
123
125
|
});
|
|
124
126
|
}
|
|
125
127
|
function json(value, status, request, cors, extra) {
|
|
126
|
-
const headers = new Headers(
|
|
128
|
+
const headers = new Headers(exchangeProtocol.responseHeaders());
|
|
127
129
|
for (const [name, value] of Object.entries(cors.response(request)))
|
|
128
130
|
headers.set(name, value);
|
|
129
131
|
if (extra !== undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exchange.js","sourceRoot":"","sources":["../../issuer/exchange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"exchange.js","sourceRoot":"","sources":["../../issuer/exchange.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../issuer/routes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../issuer/routes.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAKxC,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CACpC;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,EACb,aAAa,UAAQ,GACpB,SAAS,sBAAsB,EAAE,CAyBnC;AAED,wBAAgB,WAAW,CACzB,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,gBAAgB,EACxB,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,QAAQ,GACvB,IAAI,CAoIN;AAWD,0FAA0F;AAC1F,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAyBjD"}
|
package/dist/issuer/routes.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { configuration } from '@astrale-os/kernel-protocol/issuer/configuration';
|
|
2
|
+
import { hosted } from '@astrale-os/kernel-protocol/issuer/hosted';
|
|
3
|
+
import { keySet } from '@astrale-os/kernel-protocol/issuer/key-set';
|
|
4
|
+
import { paths as issuerPaths } from '@astrale-os/kernel-protocol/issuer/paths';
|
|
2
5
|
import { IssuerKeysUnavailableError } from '../errors/index.js';
|
|
3
6
|
import { mount } from './exchange.js';
|
|
4
7
|
export function issuerRouteReservations(input, tokenExchange = false) {
|
|
5
|
-
const paths =
|
|
8
|
+
const paths = issuerPaths(input.issuer);
|
|
6
9
|
const reservations = [
|
|
7
10
|
Object.freeze({ path: paths.configuration, methods: Object.freeze(['GET']) }),
|
|
8
11
|
Object.freeze({ path: paths.keys, methods: Object.freeze(['GET']) }),
|
|
@@ -24,16 +27,16 @@ export function issuerRouteReservations(input, tokenExchange = false) {
|
|
|
24
27
|
}
|
|
25
28
|
export function mountIssuer(app, input, cors, active, timeoutMs, tokenExchange) {
|
|
26
29
|
const issuer = input.issuer;
|
|
27
|
-
const paths =
|
|
30
|
+
const paths = issuerPaths(issuer);
|
|
28
31
|
const headers = (request) => ({
|
|
29
32
|
...cors.response(request),
|
|
30
33
|
'cache-control': 'no-cache',
|
|
31
34
|
});
|
|
32
35
|
const algorithm = input.signingAlgorithm ?? 'ES256';
|
|
33
|
-
const
|
|
36
|
+
const discovery = configuration(issuer, [algorithm], {
|
|
34
37
|
tokenExchange: tokenExchange !== undefined,
|
|
35
38
|
});
|
|
36
|
-
app.get(paths.configuration, (context) => context.json(
|
|
39
|
+
app.get(paths.configuration, (context) => context.json(discovery, 200, headers(context.req.raw)));
|
|
37
40
|
if (cors.enabled) {
|
|
38
41
|
app.options(paths.configuration, (context) => cors.preflight(context.req.raw, { methods: ['GET'] }));
|
|
39
42
|
app.options(paths.keys, (context) => cors.preflight(context.req.raw, { methods: ['GET'] }));
|
|
@@ -45,7 +48,7 @@ export function mountIssuer(app, input, cors, active, timeoutMs, tokenExchange)
|
|
|
45
48
|
}
|
|
46
49
|
try {
|
|
47
50
|
const keys = await input.loadPublicKeys(operation.signal);
|
|
48
|
-
return context.json(
|
|
51
|
+
return context.json(keySet(keys, [algorithm]), 200, headers(context.req.raw));
|
|
49
52
|
}
|
|
50
53
|
catch (cause) {
|
|
51
54
|
if (operation.signal.aborted || cause instanceof IssuerKeysUnavailableError) {
|
|
@@ -68,7 +71,7 @@ export function mountIssuer(app, input, cors, active, timeoutMs, tokenExchange)
|
|
|
68
71
|
app.options(`${base}/iss/:thumbprint/.well-known/jwks.json`, (context) => cors.preflight(context.req.raw, { methods: ['GET'] }));
|
|
69
72
|
}
|
|
70
73
|
app.get(`${base}/iss/:thumbprint/.well-known/openid-configuration`, async (context) => {
|
|
71
|
-
const hostedIssuer =
|
|
74
|
+
const hostedIssuer = hosted(issuer, context.req.param('thumbprint'));
|
|
72
75
|
if (hostedIssuer === undefined)
|
|
73
76
|
return context.json({ error: 'Issuer not found.' }, 404, headers(context.req.raw));
|
|
74
77
|
const operation = active.begin(timeoutMs, context.req.raw.signal);
|
|
@@ -79,7 +82,7 @@ export function mountIssuer(app, input, cors, active, timeoutMs, tokenExchange)
|
|
|
79
82
|
const keys = await hostedKeys(loadIssuerPublicKeys, hostedIssuer, operation.signal, algorithm);
|
|
80
83
|
if (keys.length === 0)
|
|
81
84
|
return context.json({ error: 'Issuer not found.' }, 404, headers(context.req.raw));
|
|
82
|
-
return context.json(
|
|
85
|
+
return context.json(configuration(hostedIssuer, [algorithm]), 200, headers(context.req.raw));
|
|
83
86
|
}
|
|
84
87
|
catch (cause) {
|
|
85
88
|
if (operation.signal.aborted || cause instanceof IssuerKeysUnavailableError) {
|
|
@@ -92,7 +95,7 @@ export function mountIssuer(app, input, cors, active, timeoutMs, tokenExchange)
|
|
|
92
95
|
}
|
|
93
96
|
});
|
|
94
97
|
app.get(`${base}/iss/:thumbprint/.well-known/jwks.json`, async (context) => {
|
|
95
|
-
const hostedIssuer =
|
|
98
|
+
const hostedIssuer = hosted(issuer, context.req.param('thumbprint'));
|
|
96
99
|
if (hostedIssuer === undefined)
|
|
97
100
|
return context.json({ error: 'Issuer not found.' }, 404, headers(context.req.raw));
|
|
98
101
|
const operation = active.begin(timeoutMs, context.req.raw.signal);
|
|
@@ -118,12 +121,12 @@ export function mountIssuer(app, input, cors, active, timeoutMs, tokenExchange)
|
|
|
118
121
|
}
|
|
119
122
|
}
|
|
120
123
|
async function hostedKeys(load, issuer, signal, algorithm) {
|
|
121
|
-
return
|
|
124
|
+
return keySet(await load(issuer, signal), [algorithm]).keys;
|
|
122
125
|
}
|
|
123
126
|
/** Admit static discovery configuration before Runtime Boot performs any durable work. */
|
|
124
127
|
export function admitIssuer(input) {
|
|
125
128
|
const signingAlgorithm = input.signingAlgorithm ?? 'ES256';
|
|
126
|
-
const issuer =
|
|
129
|
+
const issuer = configuration(input.issuer, [signingAlgorithm]).issuer;
|
|
127
130
|
if (typeof input.loadPublicKeys !== 'function') {
|
|
128
131
|
throw new TypeError('Issuer public-key loader is invalid.');
|
|
129
132
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../issuer/routes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../issuer/routes.ts"],"names":[],"mappings":"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"}
|
package/dist/issuer/types.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { IssuerId
|
|
1
|
+
import type { IssuerId } from '@astrale-os/kernel-core/auth/issuer';
|
|
2
|
+
import type { JsonWebKey } from '@astrale-os/kernel-core/auth/jwk';
|
|
2
3
|
/** Public issuer material; Server never receives private signing material. */
|
|
3
4
|
export interface Issuer {
|
|
4
5
|
readonly issuer: IssuerId;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../issuer/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../issuer/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAA;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAElE,8EAA8E;AAC9E,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAA;IACzB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC,kEAAkE;IAClE,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,UAAU,EAAE,CAAC,CAAA;IACnE,kFAAkF;IAClF,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAC9B,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,WAAW,KAChB,OAAO,CAAC,SAAS,UAAU,EAAE,CAAC,CAAA;CACpC"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { schema } from '@astrale-os/kernel-dsl/v1';
|
|
2
|
+
import type { publication, routes } from '@astrale-os/kernel-protocol';
|
|
2
3
|
import type { PublicationSnapshot, PublicationSnapshotInput } from './types.js';
|
|
3
4
|
export interface PreparedPublicationSnapshot {
|
|
4
5
|
readonly snapshot: PublicationSnapshot;
|
|
5
6
|
readonly publication: publication.Publication;
|
|
6
7
|
readonly publicationBytes: Uint8Array;
|
|
7
8
|
readonly bundle: Uint8Array;
|
|
8
|
-
readonly
|
|
9
|
+
readonly table: routes.Table;
|
|
10
|
+
readonly validator: schema.Validator;
|
|
9
11
|
}
|
|
10
12
|
/** Admit and detach one revision-coherent serving snapshot before publication. */
|
|
11
13
|
export declare function preparePublicationSnapshot(input: PublicationSnapshotInput): PublicationSnapshot;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../publication/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../publication/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAA;AAQtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AAK/E,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAA;IACtC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,WAAW,CAAA;IAC7C,QAAQ,CAAC,gBAAgB,EAAE,UAAU,CAAA;IACrC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAA;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAA;CACrC;AAID,kFAAkF;AAClF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,wBAAwB,GAAG,mBAAmB,CA2B/F;AAED,sGAAsG;AACtG,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,OAAO,GACb,2BAA2B,GAAG,SAAS,CAGzC"}
|
|
@@ -1,22 +1,31 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { verifyBundleBytes } from '@astrale-os/kernel-protocol/publication/bundle-evidence';
|
|
2
|
+
import { accept as acceptPublication, encode as encodePublication, } from '@astrale-os/kernel-protocol/publication/publication';
|
|
3
|
+
import { admitTable } from './table.js';
|
|
4
|
+
import { captureValidator } from './validator.js';
|
|
2
5
|
const snapshots = new WeakMap();
|
|
3
6
|
/** Admit and detach one revision-coherent serving snapshot before publication. */
|
|
4
7
|
export function preparePublicationSnapshot(input) {
|
|
5
8
|
if (input === null || typeof input !== 'object' || !(input.bundle instanceof Uint8Array)) {
|
|
6
9
|
throw new TypeError('Publication snapshot input is invalid.');
|
|
7
10
|
}
|
|
8
|
-
const admittedPublication =
|
|
11
|
+
const admittedPublication = acceptPublication(input.publication);
|
|
9
12
|
const bundleBytes = new Uint8Array(input.bundle);
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
+
verifyBundleBytes(admittedPublication, bundleBytes);
|
|
14
|
+
const validator = captureValidator(input.validator);
|
|
15
|
+
if (validator.origin !== admittedPublication.origin ||
|
|
16
|
+
validator.revision !== admittedPublication.schema.revision) {
|
|
17
|
+
throw new TypeError('Publication snapshot Validator identity differs from its Publication.');
|
|
18
|
+
}
|
|
19
|
+
const table = admitTable(admittedPublication, input.table, validator);
|
|
20
|
+
const publicationBytes = encodePublication(admittedPublication);
|
|
13
21
|
const snapshot = Object.freeze({ publication: admittedPublication });
|
|
14
22
|
const prepared = Object.freeze({
|
|
15
23
|
snapshot,
|
|
16
24
|
publication: admittedPublication,
|
|
17
25
|
publicationBytes,
|
|
18
26
|
bundle: bundleBytes,
|
|
19
|
-
|
|
27
|
+
table,
|
|
28
|
+
validator,
|
|
20
29
|
});
|
|
21
30
|
snapshots.set(snapshot, prepared);
|
|
22
31
|
return snapshot;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../publication/snapshot.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../publication/snapshot.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yDAAyD,CAAA;AAC3F,OAAO,EACL,MAAM,IAAI,iBAAiB,EAC3B,MAAM,IAAI,iBAAiB,GAC5B,MAAM,qDAAqD,CAAA;AAI5D,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAWjD,MAAM,SAAS,GAAG,IAAI,OAAO,EAAuC,CAAA;AAEpE,kFAAkF;AAClF,MAAM,UAAU,0BAA0B,CAAC,KAA+B;IACxE,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,YAAY,UAAU,CAAC,EAAE,CAAC;QACzF,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAA;IAC/D,CAAC;IACD,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IAChE,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAChD,iBAAiB,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAA;IACnD,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IACnD,IACE,SAAS,CAAC,MAAM,KAAK,mBAAmB,CAAC,MAAM;QAC/C,SAAS,CAAC,QAAQ,KAAK,mBAAmB,CAAC,MAAM,CAAC,QAAQ,EAC1D,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,uEAAuE,CAAC,CAAA;IAC9F,CAAC;IACD,MAAM,KAAK,GAAG,UAAU,CAAC,mBAAmB,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;IACrE,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,mBAAmB,CAAC,CAAA;IAC/D,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAwB,CAAA;IAC3F,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;QAC7B,QAAQ;QACR,WAAW,EAAE,mBAAmB;QAChC,gBAAgB;QAChB,MAAM,EAAE,WAAW;QACnB,KAAK;QACL,SAAS;KACV,CAAC,CAAA;IACF,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IACjC,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,sGAAsG;AACtG,MAAM,UAAU,+BAA+B,CAC7C,KAAc;IAEd,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAA;IACjE,OAAO,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AAC7B,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { schema } from '@astrale-os/kernel-dsl/v1';
|
|
2
|
+
import type { publication, routes } from '@astrale-os/kernel-protocol';
|
|
3
|
+
export declare function admitTable(deployed: publication.Publication, input: routes.Table | undefined, validator: schema.Validator): routes.Table;
|
|
4
|
+
//# sourceMappingURL=table.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../publication/table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAA;AAMtE,wBAAgB,UAAU,CACxB,QAAQ,EAAE,WAAW,CAAC,WAAW,EACjC,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,SAAS,EAC/B,SAAS,EAAE,MAAM,CAAC,SAAS,GAC1B,MAAM,CAAC,KAAK,CAgBd"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { reference } from '@astrale-os/kernel-protocol/publication/reference';
|
|
2
|
+
import { acceptTable } from '@astrale-os/kernel-protocol/routes/admission';
|
|
3
|
+
import { verifyTable } from '@astrale-os/kernel-protocol/routes/evidence';
|
|
4
|
+
export function admitTable(deployed, input, validator) {
|
|
5
|
+
if (input === undefined) {
|
|
6
|
+
if (deployed.routes.length !== 0) {
|
|
7
|
+
throw new TypeError('A Publication with native routes requires a Route Table.');
|
|
8
|
+
}
|
|
9
|
+
return verifyTable(Object.freeze({
|
|
10
|
+
publication: reference(deployed),
|
|
11
|
+
entries: Object.freeze([]),
|
|
12
|
+
}), deployed, validator);
|
|
13
|
+
}
|
|
14
|
+
const table = acceptTable(input);
|
|
15
|
+
return verifyTable(table, deployed, validator);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.js","sourceRoot":"","sources":["../../publication/table.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,mDAAmD,CAAA;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,8CAA8C,CAAA;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAA;AAEzE,MAAM,UAAU,UAAU,CACxB,QAAiC,EACjC,KAA+B,EAC/B,SAA2B;IAE3B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,SAAS,CAAC,0DAA0D,CAAC,CAAA;QACjF,CAAC;QACD,OAAO,WAAW,CAChB,MAAM,CAAC,MAAM,CAAC;YACZ,WAAW,EAAE,SAAS,CAAC,QAAQ,CAAC;YAChC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;SAC3B,CAAC,EACF,QAAQ,EACR,SAAS,CACV,CAAA;IACH,CAAC;IACD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;IAChC,OAAO,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAA;AAChD,CAAC"}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
+
import type { schema } from '@astrale-os/kernel-dsl/v1';
|
|
1
2
|
import type { publication } from '@astrale-os/kernel-protocol';
|
|
3
|
+
import type { routes } from '@astrale-os/kernel-protocol';
|
|
2
4
|
declare const PUBLICATION_SNAPSHOT: unique symbol;
|
|
3
5
|
export interface PublicationSnapshotInput {
|
|
4
6
|
readonly publication: publication.Publication;
|
|
5
7
|
/** Exact artifact served at Publication.schema.bundle.href. */
|
|
6
8
|
readonly bundle: Uint8Array;
|
|
9
|
+
readonly table?: routes.Table;
|
|
10
|
+
readonly validator: schema.Validator;
|
|
7
11
|
}
|
|
8
12
|
/** Immutable admitted serving identity; bundle and compiled routes remain Server-private. */
|
|
9
13
|
export interface PublicationSnapshot {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../publication/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../publication/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAA;AAEzD,OAAO,CAAC,MAAM,oBAAoB,EAAE,OAAO,MAAM,CAAA;AAEjD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,WAAW,CAAA;IAC7C,+DAA+D;IAC/D,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,CAAA;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAA;CACrC;AAED,6FAA6F;AAC7F,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,WAAW,CAAA;IAC7C,QAAQ,CAAC,CAAC,oBAAoB,CAAC,EAAE,IAAI,CAAA;CACtC;AAED,qFAAqF;AACrF,MAAM,WAAW,iBAAiB;IAChC,qEAAqE;IACrE,OAAO,IAAI,mBAAmB,GAAG,SAAS,CAAA;CAC3C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../publication/validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAO,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAE5D,+EAA+E;AAC/E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAgB1E"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** Capture one injected Validator capability without trusting its receiver. */
|
|
2
|
+
export function captureValidator(input) {
|
|
3
|
+
if (input === null ||
|
|
4
|
+
typeof input !== 'object' ||
|
|
5
|
+
typeof input.origin !== 'string' ||
|
|
6
|
+
typeof input.revision !== 'string' ||
|
|
7
|
+
typeof input.callable !== 'function') {
|
|
8
|
+
throw new TypeError('Publication snapshot Validator is invalid.');
|
|
9
|
+
}
|
|
10
|
+
const callable = input.callable;
|
|
11
|
+
return Object.freeze({
|
|
12
|
+
origin: input.origin,
|
|
13
|
+
revision: input.revision,
|
|
14
|
+
callable: (key) => callable.call(input, key),
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../publication/validator.ts"],"names":[],"mappings":"AAEA,+EAA+E;AAC/E,MAAM,UAAU,gBAAgB,CAAC,KAAuB;IACtD,IACE,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ;QAChC,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ;QAClC,OAAO,KAAK,CAAC,QAAQ,KAAK,UAAU,EACpC,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,4CAA4C,CAAC,CAAA;IACnE,CAAC;IACD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAA;IAC/B,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,QAAQ,EAAE,CAAC,GAAiB,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC;KAC3D,CAAC,CAAA;AACJ,CAAC"}
|
package/dist/routes/routes.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import type { Provider as DeliveryProvider } from '../publication/delivery/index
|
|
|
5
5
|
import type { PublicationSource } from '../publication/index.js';
|
|
6
6
|
import { type ApplicationHost, type Handler } from '../invocation/index.js';
|
|
7
7
|
import { type PreparedPublicationSnapshot } from '../publication/index.js';
|
|
8
|
-
import { type ServerRouter } from '../transport/
|
|
8
|
+
import { type ServerRouter } from '../transport/router.js';
|
|
9
9
|
export interface RouteLimits {
|
|
10
10
|
readonly maximumRequestBytes: number;
|
|
11
11
|
readonly maximumPublicationBytes: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../routes/routes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../routes/routes.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,kBAAkB,CAAA;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,KAAK,EAAE,QAAQ,IAAI,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AACpF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAOhE,OAAO,EAAqB,KAAK,eAAe,EAAE,KAAK,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAE9F,OAAO,EAEL,KAAK,2BAA2B,EACjC,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAG1D,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAA;IACpC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAA;IACxC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAA;IACnC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAA;IACrC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAA;CACrC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CACpC;AAED,wBAAgB,WAAW,CACzB,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,iBAAiB,EACzB,gBAAgB,EAAE,gBAAgB,GAAG,SAAS,EAC9C,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,gBAAgB,EACxB,cAAc,EAAE,gBAAgB,EAChC,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,eAAe,GAAG,SAAS,EAC1D,YAAY,EAAE,SAAS,gBAAgB,EAAE,EACzC,cAAc,CAAC,EAAE,MAAM,GACtB,IAAI,CAoPN;AA8DD,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,yBAAyB,GAAG,oBAAoB,CAAC,EAC3E,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,YAAY,EAAE,SAAS,gBAAgB,EAAE,CAAA;CACnD,GACA,2BAA2B,GAAG,SAAS,CAczC"}
|