@nifrajs/core 5.1.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/index.d.ts +1 -1
- package/dist/index.js +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-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/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/context.d.ts +7 -4
- package/dist/server/context.d.ts.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/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/response-contract-lane.d.ts +37 -2
- package/dist/server/response-contract-lane.d.ts.map +1 -1
- package/dist/server/response-contract-lane.js +278 -32
- package/dist/server/response-contract-lane.js.map +1 -1
- package/dist/server/server-types.d.ts +7 -4
- package/dist/server/server-types.d.ts.map +1 -1
- package/dist/server/server.d.ts +17 -4
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +151 -30
- package/dist/server/server.js.map +1 -1
- package/dist/single-copy.d.ts.map +1 -1
- package/dist/single-copy.js +46 -5
- package/dist/single-copy.js.map +1 -1
- package/package.json +3 -2
- package/src/index.ts +1 -1
- package/src/internal/hook-origins.ts +35 -0
- package/src/internal/route-program.ts +39 -20
- package/src/reflection.ts +61 -1
- package/src/server/context.ts +7 -4
- package/src/server/core-copies.ts +40 -0
- package/src/server/headers.ts +39 -0
- package/src/server/response-contract-lane.ts +357 -42
- package/src/server/server-types.ts +7 -4
- package/src/server/server.ts +202 -27
- package/src/single-copy.ts +55 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"single-copy.d.ts","sourceRoot":"","sources":["../src/single-copy.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"single-copy.d.ts","sourceRoot":"","sources":["../src/single-copy.ts"],"names":[],"mappings":"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"}
|
package/dist/single-copy.js
CHANGED
|
@@ -573,6 +573,31 @@ const describeSkips = (name, skips) => {
|
|
|
573
573
|
: " Fix: install the same build of the package in both trees (the file layouts differ), then reinstall.");
|
|
574
574
|
return lines.join("\n");
|
|
575
575
|
};
|
|
576
|
+
/** The `node_modules` folder a copy was installed into: `/kit/node_modules/@scope/pkg` -> `/kit/node_modules`. */
|
|
577
|
+
const modulesDirOf = (copy) => {
|
|
578
|
+
const marker = `${sep}node_modules${sep}`;
|
|
579
|
+
const at = copy.lastIndexOf(marker);
|
|
580
|
+
return at === -1 ? dirname(copy) : copy.slice(0, at + marker.length - 1);
|
|
581
|
+
};
|
|
582
|
+
/**
|
|
583
|
+
* Version skews that share both trees and both versions, as one report: a linked repository on
|
|
584
|
+
* another release skews every declared package at once, and a block per package said the same thing
|
|
585
|
+
* eighteen times. One package keeps the per-package report.
|
|
586
|
+
*/
|
|
587
|
+
const describeSkewGroup = (skips) => {
|
|
588
|
+
const [first] = skips;
|
|
589
|
+
if (first === undefined || skips.length === 1)
|
|
590
|
+
return describeSkips(first?.package ?? "", skips);
|
|
591
|
+
const names = skips.map((skip) => skip.package).sort(codeUnitOrder);
|
|
592
|
+
return [
|
|
593
|
+
`[nifra] single-copy: ${names.length} packages are NOT deduplicated (version-skew) - a second copy of each loads, so their module state is not shared.`,
|
|
594
|
+
copyLine("app copies", first.to === undefined ? undefined : modulesDirOf(first.to), first.toVersion),
|
|
595
|
+
copyLine("linked copies", modulesDirOf(first.from), first.fromVersion),
|
|
596
|
+
` packages: ${names.join(", ")}`,
|
|
597
|
+
` ${first.fromVersion ?? "another version"} there, ${first.toVersion ?? "another version"} here - redirecting would serve a version those copies did not ask for`,
|
|
598
|
+
" Fix: align the dependency ranges so both trees install one version, then reinstall. nifra never redirects across versions.",
|
|
599
|
+
].join("\n");
|
|
600
|
+
};
|
|
576
601
|
const strictFromEnv = () => {
|
|
577
602
|
const value = typeof process === "undefined" ? undefined : process.env[SINGLE_COPY_STRICT_ENV];
|
|
578
603
|
return value === "1" || value === "true";
|
|
@@ -591,16 +616,15 @@ export function registerSingleCopy(options = {}) {
|
|
|
591
616
|
const root = realpathOrSelf(resolve(options.cwd ?? process.cwd()));
|
|
592
617
|
const strict = options.strict ?? (readSingleCopyStrict(root) || strictFromEnv());
|
|
593
618
|
const warned = processSet(WARNED);
|
|
594
|
-
const
|
|
595
|
-
const message = describeSkips(name, skips);
|
|
619
|
+
const emit = (key, message) => {
|
|
596
620
|
if (strict)
|
|
597
621
|
throw new Error(`${message}\n Strict mode is on, so this process refuses to start.`);
|
|
598
|
-
const key = `${skips[0]?.reason ?? ""}\0${name}`;
|
|
599
622
|
if (warned.has(key))
|
|
600
623
|
return;
|
|
601
624
|
warned.add(key);
|
|
602
625
|
console.warn(message);
|
|
603
626
|
};
|
|
627
|
+
const report = (name, skips) => emit(`${skips[0]?.reason ?? ""}\0${name}`, describeSkips(name, skips));
|
|
604
628
|
const plugin = singleCopyPlugin({
|
|
605
629
|
...options,
|
|
606
630
|
cwd: root,
|
|
@@ -610,14 +634,31 @@ export function registerSingleCopy(options = {}) {
|
|
|
610
634
|
},
|
|
611
635
|
});
|
|
612
636
|
const byPackage = new Map();
|
|
637
|
+
const bySkew = new Map();
|
|
613
638
|
for (const skip of plugin.plan.skipped) {
|
|
614
639
|
options.onSkip?.(skip);
|
|
615
|
-
const
|
|
640
|
+
const skew = skip.reason === "version-skew"
|
|
641
|
+
? [
|
|
642
|
+
modulesDirOf(skip.from),
|
|
643
|
+
skip.to === undefined ? "" : modulesDirOf(skip.to),
|
|
644
|
+
skip.fromVersion ?? "",
|
|
645
|
+
skip.toVersion ?? "",
|
|
646
|
+
].join("\0")
|
|
647
|
+
: undefined;
|
|
648
|
+
const groups = skew === undefined ? byPackage : bySkew;
|
|
649
|
+
const key = skew ?? skip.package;
|
|
650
|
+
const group = groups.get(key) ?? [];
|
|
616
651
|
group.push(skip);
|
|
617
|
-
|
|
652
|
+
groups.set(key, group);
|
|
618
653
|
}
|
|
619
654
|
for (const [name, skips] of byPackage)
|
|
620
655
|
report(name, skips);
|
|
656
|
+
for (const skips of bySkew.values()) {
|
|
657
|
+
if (skips.length === 1)
|
|
658
|
+
report(skips[0]?.package ?? "", skips);
|
|
659
|
+
else
|
|
660
|
+
emit(`version-skew\0${skips.map((skip) => skip.package).join("\0")}`, describeSkewGroup(skips));
|
|
661
|
+
}
|
|
621
662
|
// Installing twice (a preload listed twice, or an explicit call on top of the preload) would register
|
|
622
663
|
// two `onLoad` hooks for the same foreign files, and two hooks both answering one file stall the
|
|
623
664
|
// runtime loader. One install per root and declaration is the whole effect anyway.
|
package/dist/single-copy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"single-copy.js","sourceRoot":"","sources":["../src/single-copy.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"single-copy.js","sourceRoot":"","sources":["../src/single-copy.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nifrajs/core",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.2.0",
|
|
4
4
|
"description": "Bun-native, contract-first HTTP framework - the router, server, and route descriptor.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"bun",
|
|
@@ -303,7 +303,8 @@
|
|
|
303
303
|
},
|
|
304
304
|
"files": [
|
|
305
305
|
"dist",
|
|
306
|
-
"src"
|
|
306
|
+
"src",
|
|
307
|
+
"CHANGELOG.md"
|
|
307
308
|
],
|
|
308
309
|
"sideEffects": [
|
|
309
310
|
"./src/ws.ts",
|
package/src/index.ts
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* read its own package.json at runtime. `scripts/version.ts` rewrites it on every release bump and
|
|
17
17
|
* `check:publish` asserts it equals `@nifrajs/core`'s package version.
|
|
18
18
|
*/
|
|
19
|
-
export const VERSION = "5.
|
|
19
|
+
export const VERSION = "5.2.0" as const
|
|
20
20
|
|
|
21
21
|
export type Version = typeof VERSION
|
|
22
22
|
|
|
@@ -16,6 +16,10 @@ export type HookKind =
|
|
|
16
16
|
| "onResponse"
|
|
17
17
|
| "responseHeaders"
|
|
18
18
|
| "onResponseFinalized"
|
|
19
|
+
// Runtimes a route resolved at registration: reflected beside its hooks, never tagged as one.
|
|
20
|
+
| "effectLedger"
|
|
21
|
+
| "idempotency"
|
|
22
|
+
| "responseContract"
|
|
19
23
|
|
|
20
24
|
export interface HookOrigin {
|
|
21
25
|
readonly kind: HookKind
|
|
@@ -48,11 +52,24 @@ export interface AdoptionTag {
|
|
|
48
52
|
readonly prefix: string | undefined
|
|
49
53
|
}
|
|
50
54
|
|
|
55
|
+
/** A `merge()` whose routes carry no authentication of their own while the parent authenticates the
|
|
56
|
+
* routes it declares: the parent's order-scoped auth never runs for merged routes. */
|
|
57
|
+
export interface MergeAuthGapTag {
|
|
58
|
+
/** The `merge()` call's `file:line:col`, when a frame outside core was found. */
|
|
59
|
+
readonly site: string | undefined
|
|
60
|
+
/** The parent's auth in effect at the merge: `authenticate(<id>)` stages and evidence sources. */
|
|
61
|
+
readonly auth: readonly string[]
|
|
62
|
+
/** `METHOD /path` of each merged route the parent's auth would have covered. */
|
|
63
|
+
readonly routes: readonly string[]
|
|
64
|
+
}
|
|
65
|
+
|
|
51
66
|
const origins = new WeakMap<object, HookOrigin>()
|
|
52
67
|
const scopes = new WeakMap<object, HookScopeTag>()
|
|
53
68
|
const sources = new WeakMap<object, unknown>()
|
|
54
69
|
const statics = new WeakMap<object, StaticHeadersTag[]>()
|
|
55
70
|
const adoptions = new WeakMap<object, AdoptionTag[]>()
|
|
71
|
+
const mergeAuthGaps = new WeakMap<object, MergeAuthGapTag[]>()
|
|
72
|
+
const routeSites = new WeakMap<object, Map<string, string>>()
|
|
56
73
|
let applying: string | undefined
|
|
57
74
|
// A merged server whose static headers are about to become one of the target's response hooks.
|
|
58
75
|
let staticsOwner: object | undefined
|
|
@@ -130,6 +147,20 @@ export function tagAdoption(target: object, source: object, prefix: string | und
|
|
|
130
147
|
else list.push(tag)
|
|
131
148
|
}
|
|
132
149
|
|
|
150
|
+
export function tagMergeAuthGap(target: object, gap: MergeAuthGapTag): void {
|
|
151
|
+
const list = mergeAuthGaps.get(target)
|
|
152
|
+
if (list === undefined) mergeAuthGaps.set(target, [gap])
|
|
153
|
+
else list.push(gap)
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/** Where `server` registered the route `key` (`METHOD /path`): a `file:line:col` frame. The first
|
|
157
|
+
* registration of a key wins, as it does for the router. */
|
|
158
|
+
export function tagRouteSite(server: object, key: string, site: string): void {
|
|
159
|
+
const sites = routeSites.get(server)
|
|
160
|
+
if (sites === undefined) routeSites.set(server, new Map([[key, site]]))
|
|
161
|
+
else if (!sites.has(key)) sites.set(key, site)
|
|
162
|
+
}
|
|
163
|
+
|
|
133
164
|
const outer: (string | undefined)[] = []
|
|
134
165
|
|
|
135
166
|
/** Mark the plugin a `use()` is applying, until the matching {@link leavePlugin}. */
|
|
@@ -151,3 +182,7 @@ export const hookSourceOf = (hook: unknown): unknown =>
|
|
|
151
182
|
export const staticHeadersOf = (server: object): readonly StaticHeadersTag[] =>
|
|
152
183
|
statics.get(server) ?? []
|
|
153
184
|
export const adoptionsOf = (server: object): readonly AdoptionTag[] => adoptions.get(server) ?? []
|
|
185
|
+
export const mergeAuthGapsOf = (server: object): readonly MergeAuthGapTag[] =>
|
|
186
|
+
mergeAuthGaps.get(server) ?? []
|
|
187
|
+
export const routeSitesOf = (server: object): ReadonlyMap<string, string> =>
|
|
188
|
+
routeSites.get(server) ?? new Map()
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
import type { StandardSchemaV1 } from "../schema/standard.ts"
|
|
11
11
|
import { markAuthenticatedRequest } from "../server/auth.ts"
|
|
12
|
+
import { declaredHeaderNames } from "../server/headers.ts"
|
|
12
13
|
import { pathnameOf } from "../server/http.ts"
|
|
13
14
|
import { queryObjectOf } from "../server/query.ts"
|
|
14
15
|
import type { Registry } from "../server/registry.ts"
|
|
@@ -35,7 +36,12 @@ import type {
|
|
|
35
36
|
export type ProgramValidationKind = "headers" | "cookies" | "params" | "body" | "query"
|
|
36
37
|
|
|
37
38
|
export type RouteProgramStage =
|
|
38
|
-
| {
|
|
39
|
+
| {
|
|
40
|
+
readonly kind: ProgramValidationKind
|
|
41
|
+
readonly schema: StandardSchemaV1
|
|
42
|
+
/** Headers only: the names a closed schema validates, read case-insensitively. */
|
|
43
|
+
readonly names?: readonly string[] | undefined
|
|
44
|
+
}
|
|
39
45
|
| { readonly kind: "derive"; readonly run: RawDerive }
|
|
40
46
|
| { readonly kind: "before"; readonly run: RawBeforeHandle }
|
|
41
47
|
| { readonly kind: "handler"; readonly run: InternalHandler }
|
|
@@ -90,7 +96,8 @@ export function compileRouteProgram(input: RouteProgramInput): RouteProgram {
|
|
|
90
96
|
for (const kind of ["headers", "cookies", "params", "body", "query"] as const) {
|
|
91
97
|
const validator = schema?.[kind]
|
|
92
98
|
if (validator !== undefined) {
|
|
93
|
-
const
|
|
99
|
+
const names = kind === "headers" ? declaredHeaderNames(validator) : undefined
|
|
100
|
+
const stage = { kind, schema: validator, names }
|
|
94
101
|
stages.push(stage)
|
|
95
102
|
validationStages.push(stage)
|
|
96
103
|
}
|
|
@@ -142,6 +149,7 @@ interface RouteProgramRuntime {
|
|
|
142
149
|
ctx: RawContext,
|
|
143
150
|
finalize: (result: unknown, set: CtxSet, ctx?: RawContext) => T,
|
|
144
151
|
wrapResponse: (response: Response | ResponseResult) => T,
|
|
152
|
+
fallback?: () => T,
|
|
145
153
|
): MaybePromise<T>
|
|
146
154
|
finishProgramResult<T>(
|
|
147
155
|
entry: RouteEntry,
|
|
@@ -243,6 +251,21 @@ function validAuthenticationFailureReason(
|
|
|
243
251
|
)
|
|
244
252
|
}
|
|
245
253
|
|
|
254
|
+
/** A failed stage still answers 503, but its cause takes the handler-error path (onError, else the
|
|
255
|
+
* logger) instead of vanishing. */
|
|
256
|
+
function failAuthentication<T>(
|
|
257
|
+
host: RouteProgramRuntime,
|
|
258
|
+
entry: RouteEntry,
|
|
259
|
+
ctx: RawContext,
|
|
260
|
+
finalize: (result: unknown, set: CtxSet, ctx?: RawContext) => T,
|
|
261
|
+
wrapResponse: (response: Response | ResponseResult) => T,
|
|
262
|
+
error: unknown,
|
|
263
|
+
): ProgramResult<T> {
|
|
264
|
+
return host.handleProgramError(entry, error, ctx, finalize, wrapResponse, () =>
|
|
265
|
+
finalize(defaultAuthenticationResponse("unavailable"), responseSet(ctx), ctx),
|
|
266
|
+
)
|
|
267
|
+
}
|
|
268
|
+
|
|
246
269
|
function runAuthenticationStages<T>(
|
|
247
270
|
host: RouteProgramRuntime,
|
|
248
271
|
entry: RouteEntry,
|
|
@@ -287,8 +310,8 @@ function runAuthenticationStages<T>(
|
|
|
287
310
|
let outcome: MaybePromise<import("../server/auth.ts").AuthenticationResult<unknown>>
|
|
288
311
|
try {
|
|
289
312
|
outcome = stage.run(input)
|
|
290
|
-
} catch {
|
|
291
|
-
return
|
|
313
|
+
} catch (error) {
|
|
314
|
+
return failAuthentication(host, entry, ctx, finalize, wrapResponse, error)
|
|
292
315
|
}
|
|
293
316
|
if (outcome instanceof Promise) {
|
|
294
317
|
return outcome.then(
|
|
@@ -312,7 +335,7 @@ function runAuthenticationStages<T>(
|
|
|
312
335
|
return host.handleProgramError(entry, error, ctx, finalize, wrapResponse)
|
|
313
336
|
}
|
|
314
337
|
},
|
|
315
|
-
() =>
|
|
338
|
+
(error) => failAuthentication(host, entry, ctx, finalize, wrapResponse, error),
|
|
316
339
|
)
|
|
317
340
|
}
|
|
318
341
|
return finishAuthentication(
|
|
@@ -344,27 +367,23 @@ function finishAuthentication<T>(
|
|
|
344
367
|
if (
|
|
345
368
|
result === null ||
|
|
346
369
|
typeof result !== "object" ||
|
|
347
|
-
(result.kind
|
|
370
|
+
(result.kind === "rejected"
|
|
371
|
+
? !validAuthenticationFailureReason(result.reason) ||
|
|
372
|
+
(result.response !== undefined &&
|
|
373
|
+
!(result.response instanceof Response) &&
|
|
374
|
+
!isResponseResult(result.response))
|
|
375
|
+
: result.kind !== "authenticated" ||
|
|
376
|
+
result.principal === null ||
|
|
377
|
+
result.principal === undefined)
|
|
348
378
|
) {
|
|
349
|
-
|
|
379
|
+
const id = program.authStages[next - 1]!.id
|
|
380
|
+
const error = new TypeError(`authenticate() stage "${id}" returned an invalid decision`)
|
|
381
|
+
return failAuthentication(host, entry, ctx, finalize, wrapResponse, error)
|
|
350
382
|
}
|
|
351
383
|
if (result.kind === "rejected") {
|
|
352
|
-
if (!validAuthenticationFailureReason(result.reason)) {
|
|
353
|
-
return finalize(defaultAuthenticationResponse("unavailable"), responseSet(ctx), ctx)
|
|
354
|
-
}
|
|
355
|
-
if (
|
|
356
|
-
result.response !== undefined &&
|
|
357
|
-
!(result.response instanceof Response) &&
|
|
358
|
-
!isResponseResult(result.response)
|
|
359
|
-
) {
|
|
360
|
-
return finalize(defaultAuthenticationResponse("unavailable"), responseSet(ctx), ctx)
|
|
361
|
-
}
|
|
362
384
|
const response = result.response ?? defaultAuthenticationResponse(result.reason)
|
|
363
385
|
return finalize(response, responseSet(ctx), ctx)
|
|
364
386
|
}
|
|
365
|
-
if (result.principal === null || result.principal === undefined) {
|
|
366
|
-
return finalize(defaultAuthenticationResponse("unavailable"), responseSet(ctx), ctx)
|
|
367
|
-
}
|
|
368
387
|
Object.defineProperty(ctx, "principal", {
|
|
369
388
|
value: result.principal,
|
|
370
389
|
enumerable: true,
|
package/src/reflection.ts
CHANGED
|
@@ -20,6 +20,9 @@ import {
|
|
|
20
20
|
hookOriginOf,
|
|
21
21
|
hookScopeOf,
|
|
22
22
|
hookSourceOf,
|
|
23
|
+
type MergeAuthGapTag,
|
|
24
|
+
mergeAuthGapsOf,
|
|
25
|
+
routeSitesOf,
|
|
23
26
|
staticHeadersOf,
|
|
24
27
|
} from "./internal/hook-origins.ts"
|
|
25
28
|
import {
|
|
@@ -33,6 +36,8 @@ import { NIFRA_BACKEND_EVIDENCE } from "./mount.ts"
|
|
|
33
36
|
import type { StandardSchemaV1 } from "./schema/standard.ts"
|
|
34
37
|
import type { ToolAnnotations } from "./server/server.ts"
|
|
35
38
|
|
|
39
|
+
export { declaredHeaderNames } from "./server/headers.ts"
|
|
40
|
+
|
|
36
41
|
/** JSON Schema permits either a schema object or the boolean schemas `true` and `false`. */
|
|
37
42
|
export type JsonSchema = boolean | Readonly<Record<string, unknown>>
|
|
38
43
|
|
|
@@ -460,7 +465,9 @@ export interface ReflectedHook {
|
|
|
460
465
|
readonly kind: HookKind
|
|
461
466
|
/** The plugin that registered it, else the function's own name, else `(anonymous)`. */
|
|
462
467
|
readonly name: string
|
|
463
|
-
/** Where it was registered: `app`, `group /api`, `merge #1`, `mount /auth`, or `unknown
|
|
468
|
+
/** Where it was registered: `app`, `group /api`, `merge #1`, `mount /auth`, or `unknown`; `route`
|
|
469
|
+
* for a runtime the route resolved at registration (`responseContract`, `effectLedger`,
|
|
470
|
+
* `idempotency`), whose `name` is the contract mode or the runtime. */
|
|
464
471
|
readonly site: string
|
|
465
472
|
/** The header names a static `responseHeaders()` declaration sets. */
|
|
466
473
|
readonly headers?: readonly string[]
|
|
@@ -559,6 +566,51 @@ const catalogOf = (
|
|
|
559
566
|
const joinPath = (base: string, path: string): string =>
|
|
560
567
|
base === "" ? path : path === "/" ? base : `${base}${path}`
|
|
561
568
|
|
|
569
|
+
/** A `merge()` that authenticates none of its routes under a parent that authenticates its own. */
|
|
570
|
+
export type ReflectedMergeAuthGap = MergeAuthGapTag
|
|
571
|
+
|
|
572
|
+
/**
|
|
573
|
+
* Every `merge()` in the app, its merged servers included, whose server authenticates none of its
|
|
574
|
+
* routes while the parent's order-scoped auth - an `authenticate()` stage, or `authenticated` evidence
|
|
575
|
+
* scoped to subsequent routes - covers the parent's own: that auth never runs for a merged route.
|
|
576
|
+
* Recorded by a development load only (the same provenance {@link reflectHooks} reads), so reflect the
|
|
577
|
+
* app outside production. `nifra check` reports each one (NF-C043).
|
|
578
|
+
*/
|
|
579
|
+
export function reflectMergeAuthGaps(source: unknown): readonly ReflectedMergeAuthGap[] {
|
|
580
|
+
if (!isServerRecord(source)) return []
|
|
581
|
+
const gaps: ReflectedMergeAuthGap[] = []
|
|
582
|
+
const seen = new Set<object>()
|
|
583
|
+
const visit = (server: object): void => {
|
|
584
|
+
if (seen.has(server)) return
|
|
585
|
+
seen.add(server)
|
|
586
|
+
gaps.push(...mergeAuthGapsOf(server))
|
|
587
|
+
for (const adoption of adoptionsOf(server)) visit(adoption.source)
|
|
588
|
+
}
|
|
589
|
+
visit(source)
|
|
590
|
+
return gaps
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
/**
|
|
594
|
+
* Where each route was registered: `METHOD /path` (`WS` for a socket) mapped to the `file:line:col` of
|
|
595
|
+
* the call outside nifra's core that registered it, through every `group()` and `merge()`. Recorded only
|
|
596
|
+
* by a development load with `NIFRA_ROUTE_SITES=1` (the CLI sets it while it loads `nifra.assurance.ts`),
|
|
597
|
+
* so the map is empty otherwise. The paths are absolute, which is why they stay out of
|
|
598
|
+
* {@link reflectRoutes}, whose output is written into artifacts.
|
|
599
|
+
*/
|
|
600
|
+
export function reflectRouteSites(source: unknown): ReadonlyMap<string, string> {
|
|
601
|
+
const sites = new Map<string, string>()
|
|
602
|
+
if (!isServerRecord(source)) return sites
|
|
603
|
+
const seen = new Set<object>()
|
|
604
|
+
const visit = (server: object): void => {
|
|
605
|
+
if (seen.has(server)) return
|
|
606
|
+
seen.add(server)
|
|
607
|
+
for (const [key, site] of routeSitesOf(server)) if (!sites.has(key)) sites.set(key, site)
|
|
608
|
+
for (const adoption of adoptionsOf(server)) visit(adoption.source)
|
|
609
|
+
}
|
|
610
|
+
visit(source)
|
|
611
|
+
return sites
|
|
612
|
+
}
|
|
613
|
+
|
|
562
614
|
/**
|
|
563
615
|
* Every hook that actually runs for each route, and for each prefix's unmatched paths, with the plugin
|
|
564
616
|
* that registered it and where: the app, a `group()`, a `merge()`d server, or a `mount()`ed one. It
|
|
@@ -698,16 +750,24 @@ export function reflectHooks(source: unknown): ReflectedHookReport {
|
|
|
698
750
|
const entry = recordOf(route.entry)
|
|
699
751
|
const chain = (field: string, kind: HookKind) =>
|
|
700
752
|
entry === undefined ? [] : listOf(entry, field).flatMap((hook) => entriesOf(hook, kind))
|
|
753
|
+
// A runtime is pinned into the route when it registers (or is merged), so it is listed with the
|
|
754
|
+
// route's site rather than a hook's; the mode is the name so a warn -> enforce change shows.
|
|
755
|
+
const mode = recordOf(recordOf(entry?.responseContract)?.runtime)?.mode
|
|
756
|
+
const pinned = (present: boolean, kind: HookKind, name: string): ReflectedHook[] =>
|
|
757
|
+
present ? [{ kind, name, site: "route" }] : []
|
|
701
758
|
routes.push({
|
|
702
759
|
method: route.method,
|
|
703
760
|
path: reportPath(route.path),
|
|
704
761
|
hooks: [
|
|
705
762
|
...requestPhase(probes),
|
|
706
763
|
...chain("around", "around"),
|
|
764
|
+
...pinned(entry?.ledgered !== undefined, "effectLedger", "effectLedger"),
|
|
707
765
|
...chain("authStages", "authenticate"),
|
|
708
766
|
...chain("derives", "derive"),
|
|
709
767
|
...chain("beforeHandle", "beforeHandle"),
|
|
768
|
+
...pinned(entry?.idempotent !== undefined, "idempotency", "idempotency"),
|
|
710
769
|
...chain("afterHandle", "afterHandle"),
|
|
770
|
+
...pinned(typeof mode === "string", "responseContract", String(mode)),
|
|
711
771
|
...chain("onError", "onError"),
|
|
712
772
|
...responsePhase(probes),
|
|
713
773
|
],
|
package/src/server/context.ts
CHANGED
|
@@ -312,9 +312,12 @@ export interface RouteSchema {
|
|
|
312
312
|
* The schema must cover every path param; with the strict default an undeclared path param is rejected.
|
|
313
313
|
* When omitted, `c.params` stays the path-inferred `Record<name, string>`. */
|
|
314
314
|
readonly params?: StandardSchemaV1
|
|
315
|
-
/** Optional request-header schema
|
|
316
|
-
*
|
|
317
|
-
* case-
|
|
315
|
+
/** Optional request-header schema; the validated output is `c.headers` and a failure is a `422`.
|
|
316
|
+
* Every client sends headers a route never declares (`host`, `user-agent`, `accept`), so a closed
|
|
317
|
+
* object schema (`t.object`) validates only the names it declares, each read case-insensitively and
|
|
318
|
+
* keyed as declared. `t.headers` is the open form: it receives every header, names lower-cased,
|
|
319
|
+
* and coerces values like `t.query`. A schema that does not expose its JSON Schema (a zod
|
|
320
|
+
* `.strict()` or valibot `strictObject`) receives every header, so declare it open. */
|
|
318
321
|
readonly headers?: StandardSchemaV1
|
|
319
322
|
/** Optional request-cookie schema. It validates the cookies parsed from the `Cookie` header -
|
|
320
323
|
* names as sent, values URL-decoded strings, the first of a repeated name - before the handler
|
|
@@ -446,7 +449,7 @@ export interface Context<Path extends string = string, S extends RouteSchema = R
|
|
|
446
449
|
/** Read one request header without materializing a Web `Request` on the Node adapter hot path. */
|
|
447
450
|
readonly header: (name: string) => string | null
|
|
448
451
|
readonly params: ParamsOf<S, Path>
|
|
449
|
-
/**
|
|
452
|
+
/** Request headers, names lower-cased; when `schema.headers` is declared, its validated output. */
|
|
450
453
|
readonly headers: HeadersOf<S>
|
|
451
454
|
readonly query: QueryOf<S>
|
|
452
455
|
readonly body: BodyOf<S>
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
*/
|
|
11
11
|
const registry = globalThis as unknown as Record<symbol, string[] | undefined>
|
|
12
12
|
const COPIES = Symbol.for("nifra.core.copies")
|
|
13
|
+
const VERSIONS = Symbol.for("nifra.core.copy-versions")
|
|
13
14
|
registry[COPIES] ??= []
|
|
14
15
|
const copies = registry[COPIES]
|
|
15
16
|
const here = String(import.meta.url).split("?")[0] as string
|
|
@@ -19,3 +20,42 @@ if (!copies.includes(here) && copies.push(here) > 1) {
|
|
|
19
20
|
`[nifra] @nifrajs/core is loaded ${copies.length} times; \`nifra check\` names each importer:\n ${copies.join("\n ")}`,
|
|
20
21
|
)
|
|
21
22
|
}
|
|
23
|
+
|
|
24
|
+
/** This copy's version: a literal like the package root's `VERSION` (no fs on the edge), which
|
|
25
|
+
* `scripts/version.ts` rewrites on every release and `check:publish` asserts. */
|
|
26
|
+
const COPY_VERSION = "5.2.0"
|
|
27
|
+
|
|
28
|
+
/** Record this copy's version beside its URL. Called by each `server()` behind the development guard,
|
|
29
|
+
* so a production bundle drops it with the version; a copy that built a server has recorded one. */
|
|
30
|
+
export function recordCopyVersion(): void {
|
|
31
|
+
versionsByUrl().set(here, COPY_VERSION)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/** The process-wide URL -> version map every copy shares. */
|
|
35
|
+
const versionsByUrl = (): Map<unknown, unknown> => {
|
|
36
|
+
const found: unknown = Reflect.get(globalThis, VERSIONS)
|
|
37
|
+
if (found instanceof Map) return found
|
|
38
|
+
const created = new Map<unknown, unknown>()
|
|
39
|
+
Reflect.set(globalThis, VERSIONS, created)
|
|
40
|
+
return created
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const labelled = (url: string): string => {
|
|
44
|
+
const version = versionsByUrl().get(url)
|
|
45
|
+
return typeof version === "string" ? `${url} (${version})` : url
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/** Why `merge()` refused a value that is not a server of this copy: when another copy is loaded, the
|
|
49
|
+
* value is most likely its server, so both copies are named, with their versions where recorded
|
|
50
|
+
* (copies before 5.2 record none), and the way to collapse them. Called only outside production. */
|
|
51
|
+
export function mergeRefusal(): string {
|
|
52
|
+
const base = "merge() requires a server() from this copy of @nifrajs/core"
|
|
53
|
+
const others = copies.filter((url) => url !== here)
|
|
54
|
+
if (others.length === 0) return base
|
|
55
|
+
return [
|
|
56
|
+
`${base}, and ${copies.length} copies are loaded:`,
|
|
57
|
+
` this copy: ${labelled(here)}`,
|
|
58
|
+
...others.map((url) => ` other copy: ${labelled(url)}`),
|
|
59
|
+
"A server() from another copy cannot be merged. Make every package that builds a server() resolve one copy: in a linked repository, install the same nifra version (`nifra upgrade <version> --write`, then `bun install`); `nifra doctor` names each importer.",
|
|
60
|
+
].join("\n")
|
|
61
|
+
}
|
package/src/server/headers.ts
CHANGED
|
@@ -9,3 +9,42 @@ export function headerObjectOf(headers: Headers): Record<string, string> {
|
|
|
9
9
|
for (const [name, value] of headers) out[name.toLowerCase()] = value
|
|
10
10
|
return out
|
|
11
11
|
}
|
|
12
|
+
|
|
13
|
+
const HEADER_NAME = /^[\w!#$%&'*+.^`|~-]+$/
|
|
14
|
+
|
|
15
|
+
/** The parts of a header schema's JSON Schema that decide how the slot reads the request. */
|
|
16
|
+
interface HeaderJsonSchema {
|
|
17
|
+
readonly type?: unknown
|
|
18
|
+
readonly additionalProperties?: unknown
|
|
19
|
+
readonly patternProperties?: unknown
|
|
20
|
+
readonly properties?: object
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* The names a closed header schema declares, or `undefined` when it is open or lists no names.
|
|
25
|
+
* Every client sends headers no route declares (`host`, `user-agent`, `accept`), so a closed schema
|
|
26
|
+
* fed the whole record would refuse all real traffic; it is fed the names it declares instead,
|
|
27
|
+
* which is also how OpenAPI publishes it. A name that is not a valid header token is never sent.
|
|
28
|
+
*/
|
|
29
|
+
export function declaredHeaderNames(schema: object): readonly string[] | undefined {
|
|
30
|
+
const json: HeaderJsonSchema | null | undefined = Reflect.get(schema, "jsonSchema")
|
|
31
|
+
return json?.type === "object" &&
|
|
32
|
+
json.additionalProperties === false &&
|
|
33
|
+
json.patternProperties === undefined &&
|
|
34
|
+
json.properties
|
|
35
|
+
? Object.keys(json.properties).filter((name) => HEADER_NAME.test(name))
|
|
36
|
+
: undefined
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/** The declared headers present on the request, each under the name as declared. */
|
|
40
|
+
export function declaredHeaders(
|
|
41
|
+
headers: Headers,
|
|
42
|
+
names: readonly string[],
|
|
43
|
+
): Record<string, string> {
|
|
44
|
+
const out: Record<string, string> = Object.create(null)
|
|
45
|
+
for (const name of names) {
|
|
46
|
+
const value = headers.get(name)
|
|
47
|
+
if (value !== null) out[name] = value
|
|
48
|
+
}
|
|
49
|
+
return out
|
|
50
|
+
}
|