@nifrajs/core 5.0.0 → 5.2.0
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/CHANGELOG.md +2384 -0
- package/dist/assurance.d.ts +15 -1
- package/dist/assurance.d.ts.map +1 -1
- package/dist/assurance.js +97 -71
- package/dist/assurance.js.map +1 -1
- package/dist/capabilities.d.ts +2 -0
- package/dist/capabilities.d.ts.map +1 -1
- package/dist/capabilities.js +1 -1
- package/dist/capabilities.js.map +1 -1
- package/dist/edge-kit.d.ts +1 -1
- package/dist/edge-kit.d.ts.map +1 -1
- package/dist/edge-kit.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/internal/hook-origins.d.ts +17 -1
- package/dist/internal/hook-origins.d.ts.map +1 -1
- package/dist/internal/hook-origins.js +20 -0
- package/dist/internal/hook-origins.js.map +1 -1
- package/dist/internal/route-compiler.d.ts +9 -0
- package/dist/internal/route-compiler.d.ts.map +1 -1
- package/dist/internal/route-compiler.js +95 -13
- package/dist/internal/route-compiler.js.map +1 -1
- package/dist/internal/route-program.d.ts +2 -0
- package/dist/internal/route-program.d.ts.map +1 -1
- package/dist/internal/route-program.js +22 -17
- package/dist/internal/route-program.js.map +1 -1
- package/dist/internal/same-origin.d.ts +11 -1
- package/dist/internal/same-origin.d.ts.map +1 -1
- package/dist/internal/same-origin.js +8 -0
- package/dist/internal/same-origin.js.map +1 -1
- package/dist/reflection.d.ts +23 -2
- package/dist/reflection.d.ts.map +1 -1
- package/dist/reflection.js +57 -1
- package/dist/reflection.js.map +1 -1
- package/dist/server/body-lane.d.ts +8 -2
- package/dist/server/body-lane.d.ts.map +1 -1
- package/dist/server/body-lane.js +27 -2
- package/dist/server/body-lane.js.map +1 -1
- package/dist/server/client-ip.js +6 -5
- package/dist/server/client-ip.js.map +1 -1
- package/dist/server/context.d.ts +7 -4
- package/dist/server/context.d.ts.map +1 -1
- package/dist/server/cookies.d.ts.map +1 -1
- package/dist/server/cookies.js +13 -1
- package/dist/server/cookies.js.map +1 -1
- package/dist/server/core-copies.d.ts +7 -1
- package/dist/server/core-copies.d.ts.map +1 -1
- package/dist/server/core-copies.js +37 -1
- package/dist/server/core-copies.js.map +1 -1
- package/dist/server/edge.d.ts.map +1 -1
- package/dist/server/edge.js +2 -1
- package/dist/server/edge.js.map +1 -1
- package/dist/server/headers.d.ts +9 -0
- package/dist/server/headers.d.ts.map +1 -1
- package/dist/server/headers.js +26 -0
- package/dist/server/headers.js.map +1 -1
- package/dist/server/http.d.ts.map +1 -1
- package/dist/server/http.js +5 -1
- package/dist/server/http.js.map +1 -1
- package/dist/server/response-contract-lane.d.ts +57 -7
- package/dist/server/response-contract-lane.d.ts.map +1 -1
- package/dist/server/response-contract-lane.js +394 -23
- package/dist/server/response-contract-lane.js.map +1 -1
- package/dist/server/server-types.d.ts +23 -9
- package/dist/server/server-types.d.ts.map +1 -1
- package/dist/server/server.d.ts +40 -5
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +188 -43
- package/dist/server/server.js.map +1 -1
- package/dist/server/websocket.d.ts +11 -0
- package/dist/server/websocket.d.ts.map +1 -1
- package/dist/server/websocket.js +26 -12
- package/dist/server/websocket.js.map +1 -1
- package/dist/server/ws-bun.d.ts +7 -1
- package/dist/server/ws-bun.d.ts.map +1 -1
- package/dist/server/ws-bun.js +42 -2
- package/dist/server/ws-bun.js.map +1 -1
- package/dist/server/ws-hook.d.ts +9 -3
- package/dist/server/ws-hook.d.ts.map +1 -1
- package/dist/server.d.ts +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +1 -1
- package/dist/server.js.map +1 -1
- package/dist/single-copy.d.ts.map +1 -1
- package/dist/single-copy.js +81 -10
- package/dist/single-copy.js.map +1 -1
- package/dist/wire.d.ts +5 -0
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +5 -0
- package/dist/wire.js.map +1 -1
- package/dist/ws.d.ts.map +1 -1
- package/dist/ws.js +2 -1
- package/dist/ws.js.map +1 -1
- package/package.json +3 -2
- package/src/assurance.ts +120 -81
- package/src/capabilities.ts +3 -1
- package/src/edge-kit.ts +1 -1
- package/src/index.ts +2 -2
- package/src/internal/hook-origins.ts +35 -0
- package/src/internal/route-compiler.ts +107 -16
- package/src/internal/route-program.ts +39 -20
- package/src/internal/same-origin.ts +14 -1
- package/src/reflection.ts +61 -1
- package/src/server/body-lane.ts +36 -1
- package/src/server/client-ip.ts +5 -5
- package/src/server/context.ts +7 -4
- package/src/server/cookies.ts +12 -1
- package/src/server/core-copies.ts +40 -0
- package/src/server/edge.ts +2 -1
- package/src/server/headers.ts +39 -0
- package/src/server/http.ts +7 -1
- package/src/server/response-contract-lane.ts +491 -24
- package/src/server/server-types.ts +23 -9
- package/src/server/server.ts +249 -35
- package/src/server/websocket.ts +39 -13
- package/src/server/ws-bun.ts +48 -1
- package/src/server/ws-hook.ts +9 -2
- package/src/server.ts +1 -1
- package/src/single-copy.ts +90 -9
- package/src/wire.ts +14 -0
- package/src/ws.ts +2 -0
package/dist/edge-kit.d.ts
CHANGED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
*/
|
|
22
22
|
export { type ErrorLogDetail, emitRequestErrorLog } from "./server/bare-error-lane.js";
|
|
23
23
|
export { capBodyBytes } from "./server/body.js";
|
|
24
|
-
export { readBodyFramed } from "./server/body-lane.js";
|
|
24
|
+
export { type FormOrigins, readBodyFramed } from "./server/body-lane.js";
|
|
25
25
|
export { plainError } from "./server/http.js";
|
|
26
26
|
export { answerNotFound, type NotFoundHandler, type NotFoundInput, notFoundInput, } from "./server/not-found-answer.js";
|
|
27
27
|
export type { ProtoPoisoning } from "./server/proto-guard.js";
|
package/dist/edge-kit.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edge-kit.d.ts","sourceRoot":"","sources":["../src/edge-kit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,KAAK,cAAc,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"edge-kit.d.ts","sourceRoot":"","sources":["../src/edge-kit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,KAAK,cAAc,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,KAAK,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EACL,cAAc,EACd,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,aAAa,GACd,MAAM,8BAA8B,CAAA;AACrC,YAAY,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAE,KAAK,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5E,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAC9D,YAAY,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AAClE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA"}
|
package/dist/edge-kit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edge-kit.js","sourceRoot":"","sources":["../src/edge-kit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAuB,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,
|
|
1
|
+
{"version":3,"file":"edge-kit.js","sourceRoot":"","sources":["../src/edge-kit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAuB,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAoB,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EACL,cAAc,EAGd,aAAa,GACd,MAAM,8BAA8B,CAAA;AAErC,OAAO,EAAmB,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5E,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAE9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AAElE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -15,11 +15,11 @@
|
|
|
15
15
|
* read its own package.json at runtime. `scripts/version.ts` rewrites it on every release bump and
|
|
16
16
|
* `check:publish` asserts it equals `@nifrajs/core`'s package version.
|
|
17
17
|
*/
|
|
18
|
-
export declare const VERSION: "5.
|
|
18
|
+
export declare const VERSION: "5.2.0";
|
|
19
19
|
export type Version = typeof VERSION;
|
|
20
20
|
export { FrameworkError, RouteConfigError, type RouteConfigErrorCode } from "./errors.js";
|
|
21
21
|
export { FRAMEWORK_NAME, type FrameworkName } from "./internal/brand.js";
|
|
22
|
-
export { isSameOriginRequest } from "./internal/same-origin.js";
|
|
22
|
+
export { isSameOriginForm, isSameOriginRequest } from "./internal/same-origin.js";
|
|
23
23
|
export { ROUTE_PATTERN_OVERLAP_MAX_STATES, RoutePatternOverlapLimitError, routePatternOverlap, } from "./router/overlap.js";
|
|
24
24
|
export { METHODS, type Method, type RouteMethod, Router, type RouterMatch, } from "./router/router.js";
|
|
25
25
|
export type { InferInput, InferOutput, StandardIssue, StandardResult, StandardSchemaV1, StandardTypes, ValidationOutcome, } from "./schema/standard.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;GAIG;AACH,eAAO,MAAM,OAAO,EAAG,OAAgB,CAAA;AAEvC,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAA;AAEpC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAA;AACzF,OAAO,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -15,10 +15,10 @@
|
|
|
15
15
|
* read its own package.json at runtime. `scripts/version.ts` rewrites it on every release bump and
|
|
16
16
|
* `check:publish` asserts it equals `@nifrajs/core`'s package version.
|
|
17
17
|
*/
|
|
18
|
-
export const VERSION = "5.
|
|
18
|
+
export const VERSION = "5.2.0";
|
|
19
19
|
export { FrameworkError, RouteConfigError } from "./errors.js";
|
|
20
20
|
export { FRAMEWORK_NAME } from "./internal/brand.js";
|
|
21
|
-
export { isSameOriginRequest } from "./internal/same-origin.js";
|
|
21
|
+
export { isSameOriginForm, isSameOriginRequest } from "./internal/same-origin.js";
|
|
22
22
|
export { ROUTE_PATTERN_OVERLAP_MAX_STATES, RoutePatternOverlapLimitError, routePatternOverlap, } from "./router/overlap.js";
|
|
23
23
|
export { METHODS, Router, } from "./router/router.js";
|
|
24
24
|
export { authenticated, isAuthenticatedRequest, markAuthenticatedRequest, rejected, } from "./server/auth.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,OAAgB,CAAA;AAIvC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAA6B,MAAM,aAAa,CAAA;AACzF,OAAO,EAAE,cAAc,EAAsB,MAAM,qBAAqB,CAAA;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,OAAgB,CAAA;AAIvC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAA6B,MAAM,aAAa,CAAA;AACzF,OAAO,EAAE,cAAc,EAAsB,MAAM,qBAAqB,CAAA;AACxE,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AACjF,OAAO,EACL,gCAAgC,EAChC,6BAA6B,EAC7B,mBAAmB,GACpB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,OAAO,EAGP,MAAM,GAEP,MAAM,oBAAoB,CAAA;AAU3B,OAAO,EASL,aAAa,EACb,sBAAsB,EACtB,wBAAwB,EACxB,QAAQ,GACT,MAAM,kBAAkB,CAAA;AAUzB,OAAO,EAGL,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,SAAS,EACT,WAAW,GACZ,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAKL,cAAc,GACf,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAiB,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC1F,OAAO,EACL,oBAAoB,EACpB,UAAU,EAIV,eAAe,EACf,YAAY,GACb,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAUL,eAAe,EACf,gBAAgB,EAChB,eAAe,GAEhB,MAAM,+BAA+B,CAAA;AAStC,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAIL,MAAM,GACP,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAOL,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACZ,kBAAkB,EA8BlB,MAAM,EAEN,MAAM,GAEP,MAAM,oBAAoB,CAAA"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* `server.ts`, so a production define folds the writes away and this module drops out of the bundle.
|
|
5
5
|
* Reads happen only from reflection, never on the request path.
|
|
6
6
|
*/
|
|
7
|
-
export type HookKind = "onRequest" | "around" | "authenticate" | "derive" | "beforeHandle" | "afterHandle" | "onError" | "onResponse" | "responseHeaders" | "onResponseFinalized";
|
|
7
|
+
export type HookKind = "onRequest" | "around" | "authenticate" | "derive" | "beforeHandle" | "afterHandle" | "onError" | "onResponse" | "responseHeaders" | "onResponseFinalized" | "effectLedger" | "idempotency" | "responseContract";
|
|
8
8
|
export interface HookOrigin {
|
|
9
9
|
readonly kind: HookKind;
|
|
10
10
|
/** The server the hook was registered on. */
|
|
@@ -36,6 +36,16 @@ export interface AdoptionTag {
|
|
|
36
36
|
readonly source: object;
|
|
37
37
|
readonly prefix: string | undefined;
|
|
38
38
|
}
|
|
39
|
+
/** A `merge()` whose routes carry no authentication of their own while the parent authenticates the
|
|
40
|
+
* routes it declares: the parent's order-scoped auth never runs for merged routes. */
|
|
41
|
+
export interface MergeAuthGapTag {
|
|
42
|
+
/** The `merge()` call's `file:line:col`, when a frame outside core was found. */
|
|
43
|
+
readonly site: string | undefined;
|
|
44
|
+
/** The parent's auth in effect at the merge: `authenticate(<id>)` stages and evidence sources. */
|
|
45
|
+
readonly auth: readonly string[];
|
|
46
|
+
/** `METHOD /path` of each merged route the parent's auth would have covered. */
|
|
47
|
+
readonly routes: readonly string[];
|
|
48
|
+
}
|
|
39
49
|
/** Record a hook's origin. The first registration wins, so a hook re-adopted elsewhere keeps its site. */
|
|
40
50
|
export declare function tagHook(hook: unknown, kind: HookKind, owner: object, groupStatics?: true): void;
|
|
41
51
|
/**
|
|
@@ -56,6 +66,10 @@ export declare function tagScoped(originals: readonly unknown[], wrapped: readon
|
|
|
56
66
|
}): void;
|
|
57
67
|
export declare function tagStatic(server: object, names: readonly string[], source: unknown, owner?: object, plugin?: string | undefined): void;
|
|
58
68
|
export declare function tagAdoption(target: object, source: object, prefix: string | undefined): void;
|
|
69
|
+
export declare function tagMergeAuthGap(target: object, gap: MergeAuthGapTag): void;
|
|
70
|
+
/** Where `server` registered the route `key` (`METHOD /path`): a `file:line:col` frame. The first
|
|
71
|
+
* registration of a key wins, as it does for the router. */
|
|
72
|
+
export declare function tagRouteSite(server: object, key: string, site: string): void;
|
|
59
73
|
/** Mark the plugin a `use()` is applying, until the matching {@link leavePlugin}. */
|
|
60
74
|
export declare function enterPlugin(name: string | undefined): void;
|
|
61
75
|
export declare function leavePlugin(): void;
|
|
@@ -64,4 +78,6 @@ export declare const hookScopeOf: (hook: unknown) => HookScopeTag | undefined;
|
|
|
64
78
|
export declare const hookSourceOf: (hook: unknown) => unknown;
|
|
65
79
|
export declare const staticHeadersOf: (server: object) => readonly StaticHeadersTag[];
|
|
66
80
|
export declare const adoptionsOf: (server: object) => readonly AdoptionTag[];
|
|
81
|
+
export declare const mergeAuthGapsOf: (server: object) => readonly MergeAuthGapTag[];
|
|
82
|
+
export declare const routeSitesOf: (server: object) => ReadonlyMap<string, string>;
|
|
67
83
|
//# sourceMappingURL=hook-origins.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook-origins.d.ts","sourceRoot":"","sources":["../../src/internal/hook-origins.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,QAAQ,GAChB,WAAW,GACX,QAAQ,GACR,cAAc,GACd,QAAQ,GACR,cAAc,GACd,aAAa,GACb,SAAS,GACT,YAAY,GACZ,iBAAiB,GACjB,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"hook-origins.d.ts","sourceRoot":"","sources":["../../src/internal/hook-origins.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,8 @@ const scopes = new WeakMap();
|
|
|
9
9
|
const sources = new WeakMap();
|
|
10
10
|
const statics = new WeakMap();
|
|
11
11
|
const adoptions = new WeakMap();
|
|
12
|
+
const mergeAuthGaps = new WeakMap();
|
|
13
|
+
const routeSites = new WeakMap();
|
|
12
14
|
let applying;
|
|
13
15
|
// A merged server whose static headers are about to become one of the target's response hooks.
|
|
14
16
|
let staticsOwner;
|
|
@@ -68,6 +70,22 @@ export function tagAdoption(target, source, prefix) {
|
|
|
68
70
|
else
|
|
69
71
|
list.push(tag);
|
|
70
72
|
}
|
|
73
|
+
export function tagMergeAuthGap(target, gap) {
|
|
74
|
+
const list = mergeAuthGaps.get(target);
|
|
75
|
+
if (list === undefined)
|
|
76
|
+
mergeAuthGaps.set(target, [gap]);
|
|
77
|
+
else
|
|
78
|
+
list.push(gap);
|
|
79
|
+
}
|
|
80
|
+
/** Where `server` registered the route `key` (`METHOD /path`): a `file:line:col` frame. The first
|
|
81
|
+
* registration of a key wins, as it does for the router. */
|
|
82
|
+
export function tagRouteSite(server, key, site) {
|
|
83
|
+
const sites = routeSites.get(server);
|
|
84
|
+
if (sites === undefined)
|
|
85
|
+
routeSites.set(server, new Map([[key, site]]));
|
|
86
|
+
else if (!sites.has(key))
|
|
87
|
+
sites.set(key, site);
|
|
88
|
+
}
|
|
71
89
|
const outer = [];
|
|
72
90
|
/** Mark the plugin a `use()` is applying, until the matching {@link leavePlugin}. */
|
|
73
91
|
export function enterPlugin(name) {
|
|
@@ -83,4 +101,6 @@ export const hookScopeOf = (hook) => isRef(hook) ? scopes.get(hook) : undefined;
|
|
|
83
101
|
export const hookSourceOf = (hook) => isRef(hook) ? sources.get(hook) : undefined;
|
|
84
102
|
export const staticHeadersOf = (server) => statics.get(server) ?? [];
|
|
85
103
|
export const adoptionsOf = (server) => adoptions.get(server) ?? [];
|
|
104
|
+
export const mergeAuthGapsOf = (server) => mergeAuthGaps.get(server) ?? [];
|
|
105
|
+
export const routeSitesOf = (server) => routeSites.get(server) ?? new Map();
|
|
86
106
|
//# sourceMappingURL=hook-origins.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook-origins.js","sourceRoot":"","sources":["../../src/internal/hook-origins.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"hook-origins.js","sourceRoot":"","sources":["../../src/internal/hook-origins.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,7 @@ import type { EffectLedgerRuntime, ResolvedEffectLedger } from "../server/ledger
|
|
|
18
18
|
import type { ResponseContractDefinition, ResponseContractRuntime } from "../server/response-contract-lane.js";
|
|
19
19
|
import { type CapabilityUseEvent, type RegisteredCapabilityInterceptor } from "./capability-runtime.js";
|
|
20
20
|
import { type AssuranceDeclaration } from "./route-assurance.js";
|
|
21
|
+
import type { CatalogRoute } from "./route-catalog.js";
|
|
21
22
|
import type { RawAfterHandle, RawAround, RawAuthStage, RawBeforeHandle, RawDerive, RawErrorHandler } from "./route-execution.js";
|
|
22
23
|
import { type RouteLaneSelection } from "./route-lanes.js";
|
|
23
24
|
export interface RouteCompilerContext {
|
|
@@ -57,6 +58,14 @@ export interface CompiledRouteOptions {
|
|
|
57
58
|
readonly authStages: readonly RawAuthStage[];
|
|
58
59
|
readonly authenticated: boolean;
|
|
59
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* Recompile a route another server compiled, under the response contract and effect ledger the
|
|
63
|
+
* adopting server installed and the route's own server did not. Both only add a check or a record,
|
|
64
|
+
* so a merged route can never serve more than it did standalone - and without this, the same
|
|
65
|
+
* `.use()` covered a `group()` route but not a `merge()`d one. A route that already resolved its
|
|
66
|
+
* own contract or ledger keeps it.
|
|
67
|
+
*/
|
|
68
|
+
export declare function adoptRouteRuntimes(route: CatalogRoute, responseContractRuntime: ResponseContractRuntime | undefined, effectLedgerRuntime: EffectLedgerRuntime | undefined): CatalogRoute;
|
|
60
69
|
/** Resolve all registration-time policy and lane facts for one route. */
|
|
61
70
|
export declare function compileRouteOptions(context: RouteCompilerContext, method: string, path: string, schema: RouteSchema | undefined, handler: (context: never) => unknown): CompiledRouteOptions;
|
|
62
71
|
//# sourceMappingURL=route-compiler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-compiler.d.ts","sourceRoot":"","sources":["../../src/internal/route-compiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAErE,OAAO,EAAE,KAAK,oBAAoB,EAAuB,MAAM,sBAAsB,CAAA;AAErF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AAC5F,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AACzF,OAAO,KAAK,EACV,0BAA0B,EAC1B,uBAAuB,EACxB,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EAEL,KAAK,kBAAkB,EAGvB,KAAK,+BAA+B,EACrC,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACL,KAAK,oBAAoB,EAK1B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EACT,YAAY,EACZ,eAAe,EACf,SAAS,EACT,eAAe,EAChB,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"route-compiler.d.ts","sourceRoot":"","sources":["../../src/internal/route-compiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,99 @@ import { compileRoutePattern } from "../router/pattern.js";
|
|
|
3
3
|
import { assertByteLimit } from "../server/body.js";
|
|
4
4
|
import { CAPABILITY_GUARD, createCapabilityGuard, normalizeRouteCapabilities, } from "./capability-runtime.js";
|
|
5
5
|
import { assuranceDeclarationsOf, assuranceEvidenceFor, NIFRA_ASSURANCE_IDS, validEvidenceId, } from "./route-assurance.js";
|
|
6
|
+
import { compileRouteExecutionPlan } from "./route-execution.js";
|
|
6
7
|
import { selectRouteLanes } from "./route-lanes.js";
|
|
8
|
+
import { compileRouteProgram } from "./route-program.js";
|
|
9
|
+
const RESPONSE_CONTRACT_EVIDENCE = Object.freeze({
|
|
10
|
+
id: NIFRA_ASSURANCE_IDS.RESPONSE_CONTRACT,
|
|
11
|
+
source: "response-contract",
|
|
12
|
+
scope: "plugin",
|
|
13
|
+
});
|
|
14
|
+
function responseDefinitionOf(schema) {
|
|
15
|
+
return schema?.response !== undefined || schema?.errors !== undefined
|
|
16
|
+
? {
|
|
17
|
+
...(schema.response === undefined ? {} : { response: schema.response }),
|
|
18
|
+
...(schema.errors === undefined ? {} : { errors: schema.errors }),
|
|
19
|
+
}
|
|
20
|
+
: undefined;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Recompile a route another server compiled, under the response contract and effect ledger the
|
|
24
|
+
* adopting server installed and the route's own server did not. Both only add a check or a record,
|
|
25
|
+
* so a merged route can never serve more than it did standalone - and without this, the same
|
|
26
|
+
* `.use()` covered a `group()` route but not a `merge()`d one. A route that already resolved its
|
|
27
|
+
* own contract or ledger keeps it.
|
|
28
|
+
*/
|
|
29
|
+
export function adoptRouteRuntimes(route, responseContractRuntime, effectLedgerRuntime) {
|
|
30
|
+
const { entry, descriptor } = route;
|
|
31
|
+
const definition = entry.responseContract === undefined && responseContractRuntime !== undefined
|
|
32
|
+
? responseDefinitionOf(entry.schema)
|
|
33
|
+
: undefined;
|
|
34
|
+
const ledgered = entry.ledgered ??
|
|
35
|
+
effectLedgerRuntime?.resolve(descriptor.capabilities ?? [], route.method, route.path);
|
|
36
|
+
if (definition === undefined && ledgered === entry.ledgered)
|
|
37
|
+
return route;
|
|
38
|
+
const responseContract = definition === undefined || responseContractRuntime === undefined
|
|
39
|
+
? entry.responseContract
|
|
40
|
+
: { runtime: responseContractRuntime, definition };
|
|
41
|
+
// Either runtime rules out every fused lane, so the route needs only the generic plan here - and
|
|
42
|
+
// nothing the source server's validation-error default decided about fusion can matter any more.
|
|
43
|
+
const lanes = selectRouteLanes({
|
|
44
|
+
schema: entry.schema,
|
|
45
|
+
hasAuth: entry.authStages.length > 0,
|
|
46
|
+
hasIdempotency: entry.idempotent !== undefined,
|
|
47
|
+
hasLedger: ledgered !== undefined,
|
|
48
|
+
hasResponseContract: responseContract !== undefined,
|
|
49
|
+
hasDecorations: entry.hasDecorations,
|
|
50
|
+
derives: entry.derives.length,
|
|
51
|
+
beforeHandle: entry.beforeHandle.length,
|
|
52
|
+
afterHandle: entry.afterHandle.length,
|
|
53
|
+
onError: entry.onError.length,
|
|
54
|
+
around: entry.around.length,
|
|
55
|
+
defaultOnValidationError: false,
|
|
56
|
+
});
|
|
57
|
+
const program = compileRouteProgram({
|
|
58
|
+
schema: entry.schema,
|
|
59
|
+
handler: entry.handler,
|
|
60
|
+
derives: entry.derives,
|
|
61
|
+
authStages: entry.authStages,
|
|
62
|
+
beforeHandle: entry.beforeHandle,
|
|
63
|
+
afterHandle: entry.afterHandle,
|
|
64
|
+
onError: entry.onError,
|
|
65
|
+
decorations: entry.decorations,
|
|
66
|
+
hasDecorations: entry.hasDecorations,
|
|
67
|
+
bodySchema: entry.schema?.body,
|
|
68
|
+
bodyLimit: entry.bodyLimit,
|
|
69
|
+
responseContract,
|
|
70
|
+
});
|
|
71
|
+
const execution = compileRouteExecutionPlan({
|
|
72
|
+
lane: lanes.lane,
|
|
73
|
+
contextless: false,
|
|
74
|
+
hasAround: entry.around.length > 0,
|
|
75
|
+
hasLedger: ledgered !== undefined,
|
|
76
|
+
fusedWeb: undefined,
|
|
77
|
+
fusedBody: undefined,
|
|
78
|
+
fusedLane: undefined,
|
|
79
|
+
});
|
|
80
|
+
const enforced = definition !== undefined && responseContractRuntime?.mode === "enforce";
|
|
81
|
+
return {
|
|
82
|
+
...route,
|
|
83
|
+
entry: {
|
|
84
|
+
...entry,
|
|
85
|
+
ledgered,
|
|
86
|
+
responseContract,
|
|
87
|
+
lifecycleHookLane: undefined,
|
|
88
|
+
execution,
|
|
89
|
+
program,
|
|
90
|
+
},
|
|
91
|
+
descriptor: definition === undefined || responseContractRuntime === undefined
|
|
92
|
+
? descriptor
|
|
93
|
+
: { ...descriptor, responseContract: responseContractRuntime.mode },
|
|
94
|
+
assurance: enforced
|
|
95
|
+
? Object.freeze([...route.assurance, RESPONSE_CONTRACT_EVIDENCE])
|
|
96
|
+
: route.assurance,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
7
99
|
/** Resolve all registration-time policy and lane facts for one route. */
|
|
8
100
|
export function compileRouteOptions(context, method, path, schema, handler) {
|
|
9
101
|
const pattern = compileRoutePattern(path);
|
|
@@ -64,12 +156,7 @@ export function compileRouteOptions(context, method, path, schema, handler) {
|
|
|
64
156
|
}
|
|
65
157
|
const idempotent = context.idempotencyRuntime?.resolve(schema, authenticated, context.maxBodyBytes);
|
|
66
158
|
const ledgered = context.effectLedgerRuntime?.resolve(capabilities, method, path);
|
|
67
|
-
const responseDefinition = schema
|
|
68
|
-
? {
|
|
69
|
-
...(schema.response === undefined ? {} : { response: schema.response }),
|
|
70
|
-
...(schema.errors === undefined ? {} : { errors: schema.errors }),
|
|
71
|
-
}
|
|
72
|
-
: undefined;
|
|
159
|
+
const responseDefinition = responseDefinitionOf(schema);
|
|
73
160
|
const contracted = context.responseContractRuntime !== undefined && responseDefinition !== undefined
|
|
74
161
|
? { runtime: context.responseContractRuntime, definition: responseDefinition }
|
|
75
162
|
: undefined;
|
|
@@ -88,13 +175,8 @@ export function compileRouteOptions(context, method, path, schema, handler) {
|
|
|
88
175
|
defaultOnValidationError: context.defaultOnValidationError !== undefined,
|
|
89
176
|
});
|
|
90
177
|
const routeAssurance = [...context.activeAssurance, ...handlerAssurance];
|
|
91
|
-
if (contracted?.runtime.mode === "enforce")
|
|
92
|
-
routeAssurance.push(
|
|
93
|
-
id: NIFRA_ASSURANCE_IDS.RESPONSE_CONTRACT,
|
|
94
|
-
source: "response-contract",
|
|
95
|
-
scope: "plugin",
|
|
96
|
-
}));
|
|
97
|
-
}
|
|
178
|
+
if (contracted?.runtime.mode === "enforce")
|
|
179
|
+
routeAssurance.push(RESPONSE_CONTRACT_EVIDENCE);
|
|
98
180
|
for (const id of schema?.assurance ?? []) {
|
|
99
181
|
if (!validEvidenceId(id)) {
|
|
100
182
|
throw new Error(`route assurance: invalid evidence id ${JSON.stringify(id)} on ${method} ${path} (use lowercase dot/dash segments)`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-compiler.js","sourceRoot":"","sources":["../../src/internal/route-compiler.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAA6B,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAQnD,OAAO,EACL,gBAAgB,EAEhB,qBAAqB,EACrB,0BAA0B,GAE3B,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAEL,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,GAChB,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"route-compiler.js","sourceRoot":"","sources":["../../src/internal/route-compiler.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAA6B,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAQnD,OAAO,EACL,gBAAgB,EAEhB,qBAAqB,EACrB,0BAA0B,GAE3B,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAEL,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,GAChB,MAAM,sBAAsB,CAAA;AAU7B,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AAChE,OAAO,EAA2B,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAwCxD,MAAM,0BAA0B,GAAyB,MAAM,CAAC,MAAM,CAAC;IACrE,EAAE,EAAE,mBAAmB,CAAC,iBAAiB;IACzC,MAAM,EAAE,mBAAmB;IAC3B,KAAK,EAAE,QAAQ;CAChB,CAAC,CAAA;AAEF,SAAS,oBAAoB,CAC3B,MAA+B;IAE/B,OAAO,MAAM,EAAE,QAAQ,KAAK,SAAS,IAAI,MAAM,EAAE,MAAM,KAAK,SAAS;QACnE,CAAC,CAAC;YACE,GAAG,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;YACvE,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;SAClE;QACH,CAAC,CAAC,SAAS,CAAA;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAmB,EACnB,uBAA4D,EAC5D,mBAAoD;IAEpD,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,KAAK,CAAA;IACnC,MAAM,UAAU,GACd,KAAK,CAAC,gBAAgB,KAAK,SAAS,IAAI,uBAAuB,KAAK,SAAS;QAC3E,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC;QACpC,CAAC,CAAC,SAAS,CAAA;IACf,MAAM,QAAQ,GACZ,KAAK,CAAC,QAAQ;QACd,mBAAmB,EAAE,OAAO,CAAC,UAAU,CAAC,YAAY,IAAI,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;IACvF,IAAI,UAAU,KAAK,SAAS,IAAI,QAAQ,KAAK,KAAK,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAA;IACzE,MAAM,gBAAgB,GACpB,UAAU,KAAK,SAAS,IAAI,uBAAuB,KAAK,SAAS;QAC/D,CAAC,CAAC,KAAK,CAAC,gBAAgB;QACxB,CAAC,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,UAAU,EAAE,CAAA;IACtD,iGAAiG;IACjG,iGAAiG;IACjG,MAAM,KAAK,GAAG,gBAAgB,CAAC;QAC7B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;QACpC,cAAc,EAAE,KAAK,CAAC,UAAU,KAAK,SAAS;QAC9C,SAAS,EAAE,QAAQ,KAAK,SAAS;QACjC,mBAAmB,EAAE,gBAAgB,KAAK,SAAS;QACnD,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM;QAC7B,YAAY,EAAE,KAAK,CAAC,YAAY,CAAC,MAAM;QACvC,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM;QACrC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM;QAC7B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM;QAC3B,wBAAwB,EAAE,KAAK;KAChC,CAAC,CAAA;IACF,MAAM,OAAO,GAAG,mBAAmB,CAAC;QAClC,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,UAAU,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI;QAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,gBAAgB;KACjB,CAAC,CAAA;IACF,MAAM,SAAS,GAAG,yBAAyB,CAAC;QAC1C,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,WAAW,EAAE,KAAK;QAClB,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QAClC,SAAS,EAAE,QAAQ,KAAK,SAAS;QACjC,QAAQ,EAAE,SAAS;QACnB,SAAS,EAAE,SAAS;QACpB,SAAS,EAAE,SAAS;KACrB,CAAC,CAAA;IACF,MAAM,QAAQ,GAAG,UAAU,KAAK,SAAS,IAAI,uBAAuB,EAAE,IAAI,KAAK,SAAS,CAAA;IACxF,OAAO;QACL,GAAG,KAAK;QACR,KAAK,EAAE;YACL,GAAG,KAAK;YACR,QAAQ;YACR,gBAAgB;YAChB,iBAAiB,EAAE,SAAS;YAC5B,SAAS;YACT,OAAO;SACR;QACD,UAAU,EACR,UAAU,KAAK,SAAS,IAAI,uBAAuB,KAAK,SAAS;YAC/D,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,EAAE,GAAG,UAAU,EAAE,gBAAgB,EAAE,uBAAuB,CAAC,IAAI,EAAE;QACvE,SAAS,EAAE,QAAQ;YACjB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,EAAE,0BAA0B,CAAC,CAAC;YACjE,CAAC,CAAC,KAAK,CAAC,SAAS;KACpB,CAAA;AACH,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,mBAAmB,CACjC,OAA6B,EAC7B,MAAc,EACd,IAAY,EACZ,MAA+B,EAC/B,OAAoC;IAEpC,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAA;IACzC,IAAI,SAAS,GAAuB,OAAO,CAAC,YAAY,CAAA;IACxD,MAAM,gBAAgB,GAAG,CAAC,OAAe,EAAS,EAAE;QAClD,MAAM,IAAI,gBAAgB,CAAC,oBAAoB,EAAE,SAAS,MAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC,CAAA;IACzF,CAAC,CAAA;IACD,IAAI,MAAM,EAAE,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACxD,MAAM,IAAI,gBAAgB,CAAC,cAAc,EAAE,SAAS,MAAM,IAAI,IAAI,sBAAsB,CAAC,CAAA;IAC3F,CAAC;IACD,IAAI,MAAM,EAAE,IAAI,KAAK,KAAK,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACxD,MAAM,IAAI,gBAAgB,CACxB,cAAc,EACd,SAAS,MAAM,IAAI,IAAI,qDAAqD,CAC7E,CAAA;IACH,CAAC;IACD,IACE,MAAM,EAAE,eAAe,KAAK,SAAS;QACrC,MAAM,CAAC,eAAe,KAAK,sBAAsB;QACjD,MAAM,CAAC,eAAe,KAAK,wBAAwB,EACnD,CAAC;QACD,MAAM,IAAI,gBAAgB,CACxB,0BAA0B,EAC1B,SAAS,MAAM,IAAI,IAAI,8BAA8B,CACtD,CAAA;IACH,CAAC;IACD,IAAI,MAAM,EAAE,eAAe,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,KAAK,WAAW,EAAE,CAAC;QAC9E,gBAAgB,CAAC,2DAA2D,CAAC,CAAA;IAC/E,CAAC;IACD,IAAI,MAAM,EAAE,SAAS,KAAK,WAAW,EAAE,CAAC;QACtC,IAAI,OAAO,MAAM,CAAC,eAAe,KAAK,QAAQ,IAAI,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7F,gBAAgB,CAAC,6DAA6D,CAAC,CAAA;QACjF,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,gBAAgB,CAAC,4EAA4E,CAAC,CAAA;QAChG,CAAC;QACD,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACrC,gBAAgB,CAAC,wDAAwD,CAAC,CAAA;QAC5E,CAAC;QACD,SAAS,GAAG,SAAS,CAAA;IACvB,CAAC;SAAM,IAAI,MAAM,EAAE,SAAS,KAAK,SAAS,EAAE,CAAC;QAC3C,IAAI,CAAC;YACH,eAAe,CAAC,MAAM,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAA;QACtD,CAAC;QAAC,MAAM,CAAC;YACP,gBAAgB,CAAC,8DAA8D,CAAC,CAAA;QAClF,CAAC;QACD,SAAS,GAAG,MAAM,CAAC,SAAS,CAAA;IAC9B,CAAC;IAED,MAAM,YAAY,GAAG,0BAA0B,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACrE,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,OAA4B,CAAC,CAAA;IAC9E,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAA;IAClG,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;QACtC,MAAM,IAAI,gBAAgB,CACxB,mBAAmB,EACnB,2DAA2D,mBAAmB,CAAC,KAAK,GAAG,CACxF,CAAA;IACH,CAAC;IAED,MAAM,aAAa,GACjB,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;QAC7B,oBAAoB,CAClB,CAAC,GAAG,OAAO,CAAC,eAAe,EAAE,GAAG,gBAAgB,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,EAC7E,MAAM,EACN,IAAI,CACL,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,mBAAmB,CAAC,aAAa,CAAC,CAAA;IACzE,MAAM,gBAAgB,GAAiC,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAA;IACjF,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,qBAAqB,CACxD,YAAY,EACZ,MAAM,EACN,IAAI,EACJ,OAAO,CAAC,eAAe,EACvB,OAAO,CAAC,kBAAkB,EAAE,WAAW,EACvC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC,EAClD,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAChD,CAAA;IACH,CAAC;IACD,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;IAEnE,IAAI,MAAM,EAAE,WAAW,KAAK,SAAS,IAAI,OAAO,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;QAClF,MAAM,IAAI,gBAAgB,CACxB,qBAAqB,EACrB,iGAAiG,CAClG,CAAA;IACH,CAAC;IACD,MAAM,UAAU,GAAG,OAAO,CAAC,kBAAkB,EAAE,OAAO,CACpD,MAAM,EACN,aAAa,EACb,OAAO,CAAC,YAAY,CACrB,CAAA;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,mBAAmB,EAAE,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IACjF,MAAM,kBAAkB,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAA;IACvD,MAAM,UAAU,GACd,OAAO,CAAC,uBAAuB,KAAK,SAAS,IAAI,kBAAkB,KAAK,SAAS;QAC/E,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,uBAAuB,EAAE,UAAU,EAAE,kBAAkB,EAAE;QAC9E,CAAC,CAAC,SAAS,CAAA;IACf,MAAM,KAAK,GAAG,gBAAgB,CAAC;QAC7B,MAAM;QACN,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;QACtC,cAAc,EAAE,UAAU,KAAK,SAAS;QACxC,SAAS,EAAE,QAAQ,KAAK,SAAS;QACjC,mBAAmB,EAAE,UAAU,KAAK,SAAS;QAC7C,cAAc;QACd,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM;QAC/B,YAAY,EAAE,OAAO,CAAC,iBAAiB,CAAC,MAAM;QAC9C,WAAW,EAAE,OAAO,CAAC,gBAAgB,CAAC,MAAM;QAC5C,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,MAAM;QACpC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,MAAM;QAClC,wBAAwB,EAAE,OAAO,CAAC,wBAAwB,KAAK,SAAS;KACzE,CAAC,CAAA;IAEF,MAAM,cAAc,GAA2B,CAAC,GAAG,OAAO,CAAC,eAAe,EAAE,GAAG,gBAAgB,CAAC,CAAA;IAChG,IAAI,UAAU,EAAE,OAAO,CAAC,IAAI,KAAK,SAAS;QAAE,cAAc,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;IAC3F,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE,SAAS,IAAI,EAAE,EAAE,CAAC;QACzC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,wCAAwC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,MAAM,IAAI,IAAI,oCAAoC,CACpH,CAAA;QACH,CAAC;QACD,MAAM,QAAQ,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAA0B,CAAA;QACpF,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,YAAY,EAAE;YAC5C,KAAK,EAAE,UAAU;YACjB,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,KAAK;YACnB,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAA;QACF,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC9C,CAAC;IACD,MAAM,aAAa,GAAG,MAAM,EAAE,SAAS,KAAK,WAAW,CAAA;IACvD,IAAI,CAAC,aAAa,IAAI,CAAC,MAAM,EAAE,IAAI,KAAK,SAAS,IAAI,OAAO,MAAM,EAAE,SAAS,KAAK,QAAQ,CAAC,EAAE,CAAC;QAC5F,cAAc,CAAC,IAAI,CACjB,MAAM,CAAC,MAAM,CAAC;YACZ,EAAE,EAAE,mBAAmB,CAAC,YAAY;YACpC,MAAM,EAAE,cAAc;YACtB,KAAK,EAAE,QAAQ;SAChB,CAAC,CACH,CAAA;IACH,CAAC;IACD,IAAI,MAAM,EAAE,WAAW,KAAK,SAAS,EAAE,CAAC;QACtC,cAAc,CAAC,IAAI,CACjB,MAAM,CAAC,MAAM,CAAC;YACZ,EAAE,EAAE,mBAAmB,CAAC,eAAe;YACvC,MAAM,EAAE,cAAc;YACtB,KAAK,EAAE,QAAQ;SAChB,CAAC,CACH,CAAA;IACH,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,8FAA8F;QAC9F,oFAAoF;QACpF,sFAAsF;QACtF,cAAc,CAAC,IAAI,CACjB,MAAM,CAAC,MAAM,CAAC;YACZ,EAAE,EAAE,mBAAmB,CAAC,aAAa;YACrC,MAAM,EAAE,oBAAoB;YAC5B,KAAK,EAAE,QAAQ;YACf,UAAU,EAAE,SAAkB;SAC/B,CAAC,CACH,CAAA;IACH,CAAC;IAED,OAAO;QACL,OAAO;QACP,SAAS;QACT,YAAY;QACZ,gBAAgB;QAChB,gBAAgB;QAChB,cAAc;QACd,UAAU;QACV,QAAQ;QACR,gBAAgB,EAAE,UAAU;QAC5B,KAAK;QACL,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC;QAC7C,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QAClD,aAAa;KACd,CAAA;AACH,CAAC"}
|
|
@@ -15,6 +15,8 @@ export type ProgramValidationKind = "headers" | "cookies" | "params" | "body" |
|
|
|
15
15
|
export type RouteProgramStage = {
|
|
16
16
|
readonly kind: ProgramValidationKind;
|
|
17
17
|
readonly schema: StandardSchemaV1;
|
|
18
|
+
/** Headers only: the names a closed schema validates, read case-insensitively. */
|
|
19
|
+
readonly names?: readonly string[] | undefined;
|
|
18
20
|
} | {
|
|
19
21
|
readonly kind: "derive";
|
|
20
22
|
readonly run: RawDerive;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-program.d.ts","sourceRoot":"","sources":["../../src/internal/route-program.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"route-program.d.ts","sourceRoot":"","sources":["../../src/internal/route-program.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* of rediscovering which lifecycle features are present.
|
|
8
8
|
*/
|
|
9
9
|
import { markAuthenticatedRequest } from "../server/auth.js";
|
|
10
|
+
import { declaredHeaderNames } from "../server/headers.js";
|
|
10
11
|
import { pathnameOf } from "../server/http.js";
|
|
11
12
|
import { queryObjectOf } from "../server/query.js";
|
|
12
13
|
import { CONTEXT_SEARCH, CONTEXT_SET, EMPTY_RESPONSE_CONTROLS, isResponseResult, requestOf, status, } from "../server/runtime-core.js";
|
|
@@ -22,7 +23,8 @@ export function compileRouteProgram(input) {
|
|
|
22
23
|
for (const kind of ["headers", "cookies", "params", "body", "query"]) {
|
|
23
24
|
const validator = schema?.[kind];
|
|
24
25
|
if (validator !== undefined) {
|
|
25
|
-
const
|
|
26
|
+
const names = kind === "headers" ? declaredHeaderNames(validator) : undefined;
|
|
27
|
+
const stage = { kind, schema: validator, names };
|
|
26
28
|
stages.push(stage);
|
|
27
29
|
validationStages.push(stage);
|
|
28
30
|
}
|
|
@@ -126,6 +128,11 @@ function validAuthenticationFailureReason(value) {
|
|
|
126
128
|
value === "forbidden" ||
|
|
127
129
|
value === "unavailable");
|
|
128
130
|
}
|
|
131
|
+
/** A failed stage still answers 503, but its cause takes the handler-error path (onError, else the
|
|
132
|
+
* logger) instead of vanishing. */
|
|
133
|
+
function failAuthentication(host, entry, ctx, finalize, wrapResponse, error) {
|
|
134
|
+
return host.handleProgramError(entry, error, ctx, finalize, wrapResponse, () => finalize(defaultAuthenticationResponse("unavailable"), responseSet(ctx), ctx));
|
|
135
|
+
}
|
|
129
136
|
function runAuthenticationStages(host, entry, program, source, ctx, finalize, wrapResponse, start = 0, validationComplete = false) {
|
|
130
137
|
if (start >= program.authStages.length) {
|
|
131
138
|
if (program.authFastLane) {
|
|
@@ -142,8 +149,8 @@ function runAuthenticationStages(host, entry, program, source, ctx, finalize, wr
|
|
|
142
149
|
try {
|
|
143
150
|
outcome = stage.run(input);
|
|
144
151
|
}
|
|
145
|
-
catch {
|
|
146
|
-
return
|
|
152
|
+
catch (error) {
|
|
153
|
+
return failAuthentication(host, entry, ctx, finalize, wrapResponse, error);
|
|
147
154
|
}
|
|
148
155
|
if (outcome instanceof Promise) {
|
|
149
156
|
return outcome.then((settled) => {
|
|
@@ -155,31 +162,29 @@ function runAuthenticationStages(host, entry, program, source, ctx, finalize, wr
|
|
|
155
162
|
catch (error) {
|
|
156
163
|
return host.handleProgramError(entry, error, ctx, finalize, wrapResponse);
|
|
157
164
|
}
|
|
158
|
-
}, () =>
|
|
165
|
+
}, (error) => failAuthentication(host, entry, ctx, finalize, wrapResponse, error));
|
|
159
166
|
}
|
|
160
167
|
return finishAuthentication(host, entry, program, source, ctx, finalize, wrapResponse, outcome, start + 1, validationComplete);
|
|
161
168
|
}
|
|
162
169
|
function finishAuthentication(host, entry, program, source, ctx, finalize, wrapResponse, result, next, validationComplete = false) {
|
|
163
170
|
if (result === null ||
|
|
164
171
|
typeof result !== "object" ||
|
|
165
|
-
(result.kind
|
|
166
|
-
|
|
172
|
+
(result.kind === "rejected"
|
|
173
|
+
? !validAuthenticationFailureReason(result.reason) ||
|
|
174
|
+
(result.response !== undefined &&
|
|
175
|
+
!(result.response instanceof Response) &&
|
|
176
|
+
!isResponseResult(result.response))
|
|
177
|
+
: result.kind !== "authenticated" ||
|
|
178
|
+
result.principal === null ||
|
|
179
|
+
result.principal === undefined)) {
|
|
180
|
+
const id = program.authStages[next - 1].id;
|
|
181
|
+
const error = new TypeError(`authenticate() stage "${id}" returned an invalid decision`);
|
|
182
|
+
return failAuthentication(host, entry, ctx, finalize, wrapResponse, error);
|
|
167
183
|
}
|
|
168
184
|
if (result.kind === "rejected") {
|
|
169
|
-
if (!validAuthenticationFailureReason(result.reason)) {
|
|
170
|
-
return finalize(defaultAuthenticationResponse("unavailable"), responseSet(ctx), ctx);
|
|
171
|
-
}
|
|
172
|
-
if (result.response !== undefined &&
|
|
173
|
-
!(result.response instanceof Response) &&
|
|
174
|
-
!isResponseResult(result.response)) {
|
|
175
|
-
return finalize(defaultAuthenticationResponse("unavailable"), responseSet(ctx), ctx);
|
|
176
|
-
}
|
|
177
185
|
const response = result.response ?? defaultAuthenticationResponse(result.reason);
|
|
178
186
|
return finalize(response, responseSet(ctx), ctx);
|
|
179
187
|
}
|
|
180
|
-
if (result.principal === null || result.principal === undefined) {
|
|
181
|
-
return finalize(defaultAuthenticationResponse("unavailable"), responseSet(ctx), ctx);
|
|
182
|
-
}
|
|
183
188
|
Object.defineProperty(ctx, "principal", {
|
|
184
189
|
value: result.principal,
|
|
185
190
|
enumerable: true,
|