@nifrajs/core 5.0.0 → 5.1.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/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/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/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/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/cookies.d.ts.map +1 -1
- package/dist/server/cookies.js +13 -1
- package/dist/server/cookies.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/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 +21 -6
- package/dist/server/response-contract-lane.d.ts.map +1 -1
- package/dist/server/response-contract-lane.js +139 -14
- package/dist/server/response-contract-lane.js.map +1 -1
- package/dist/server/server-types.d.ts +16 -5
- package/dist/server/server-types.d.ts.map +1 -1
- package/dist/server/server.d.ts +23 -1
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +37 -13
- 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 +35 -5
- 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 +1 -1
- 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/route-compiler.ts +107 -16
- package/src/internal/same-origin.ts +14 -1
- package/src/server/body-lane.ts +36 -1
- package/src/server/client-ip.ts +5 -5
- package/src/server/cookies.ts +12 -1
- package/src/server/edge.ts +2 -1
- package/src/server/http.ts +7 -1
- package/src/server/response-contract-lane.ts +162 -10
- package/src/server/server-types.ts +16 -5
- package/src/server/server.ts +48 -9
- 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 +35 -4
- package/src/wire.ts +14 -0
- package/src/ws.ts +2 -0
package/dist/wire.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wire.js","sourceRoot":"","sources":["../src/wire.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"wire.js","sourceRoot":"","sources":["../src/wire.ts"],"names":[],"mappings":"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"}
|
package/dist/ws.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../src/ws.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAExD,OAAO,EAEL,eAAe,EAEf,aAAa,
|
|
1
|
+
{"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../src/ws.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAExD,OAAO,EAEL,eAAe,EAEf,aAAa,EAEb,8BAA8B,EAC/B,MAAM,uBAAuB,CAAA;AAmB9B;;;GAGG;AACH,wBAAgB,SAAS,IAAI,cAAc,CAM1C;AAED,YAAY,EACV,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,8BAA8B,EAAE,CAAA"}
|
package/dist/ws.js
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
* `attachWebSocket` / `TopicRegistry` from here too.
|
|
18
18
|
*/
|
|
19
19
|
import { INSTALL_WS } from "./server/install.js";
|
|
20
|
-
import { acceptedHandshake, attachWebSocket, handshakeUpgradeStep, TopicRegistry, wrapWebSocketMessageValidation, } from "./server/websocket.js";
|
|
20
|
+
import { acceptedHandshake, attachWebSocket, handshakeUpgradeStep, TopicRegistry, webSocketSender, wrapWebSocketMessageValidation, } from "./server/websocket.js";
|
|
21
21
|
import { createBunWsHandlers } from "./server/ws-bun.js";
|
|
22
22
|
const WS_RUNTIME = {
|
|
23
23
|
wrapHandler: wrapWebSocketMessageValidation,
|
|
@@ -26,6 +26,7 @@ const WS_RUNTIME = {
|
|
|
26
26
|
createTopics: () => new TopicRegistry(),
|
|
27
27
|
bunHandlers: createBunWsHandlers,
|
|
28
28
|
attach: attachWebSocket,
|
|
29
|
+
sender: webSocketSender,
|
|
29
30
|
};
|
|
30
31
|
/**
|
|
31
32
|
* Enable WebSocket routes on a server: `.use(websocket())` turns on `app.ws()`. Applying it twice is
|
package/dist/ws.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws.js","sourceRoot":"","sources":["../src/ws.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAGhD,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,8BAA8B,GAC/B,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAGxD,MAAM,UAAU,GAAc;IAC5B,WAAW,EAAE,8BAA8B;IAC3C,WAAW,EAAE,oBAAoB;IACjC,QAAQ,EAAE,iBAAiB;IAC3B,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,aAAa,EAAE;IACvC,WAAW,EAAE,mBAAmB;IAChC,MAAM,EAAE,eAAe;CACxB,CAAA;AAOD;;;GAGG;AACH,MAAM,UAAU,SAAS;IACvB,MAAM,KAAK,GAAG,CAAsB,GAAM,EAAK,EAAE;QAC/C,CAAC;QAAC,GAAgC,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAA;QAC1D,OAAO,GAAG,CAAA;IACZ,CAAC,CAAA;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAmB,CAAA;AAClF,CAAC;AAUD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,8BAA8B,EAAE,CAAA"}
|
|
1
|
+
{"version":3,"file":"ws.js","sourceRoot":"","sources":["../src/ws.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAGhD,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,eAAe,EACf,8BAA8B,GAC/B,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAGxD,MAAM,UAAU,GAAc;IAC5B,WAAW,EAAE,8BAA8B;IAC3C,WAAW,EAAE,oBAAoB;IACjC,QAAQ,EAAE,iBAAiB;IAC3B,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,aAAa,EAAE;IACvC,WAAW,EAAE,mBAAmB;IAChC,MAAM,EAAE,eAAe;IACvB,MAAM,EAAE,eAAe;CACxB,CAAA;AAOD;;;GAGG;AACH,MAAM,UAAU,SAAS;IACvB,MAAM,KAAK,GAAG,CAAsB,GAAM,EAAK,EAAE;QAC/C,CAAC;QAAC,GAAgC,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAA;QAC1D,OAAO,GAAG,CAAA;IACZ,CAAC,CAAA;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAmB,CAAA;AAClF,CAAC;AAUD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,8BAA8B,EAAE,CAAA"}
|
package/package.json
CHANGED
package/src/assurance.ts
CHANGED
|
@@ -227,6 +227,12 @@ export interface AssuranceRouteSelector {
|
|
|
227
227
|
* already carries `schema.body`, so this reads what the route declared, not where it lives.
|
|
228
228
|
*/
|
|
229
229
|
readonly hasBody?: boolean
|
|
230
|
+
/**
|
|
231
|
+
* Match routes by whether they declare a success `response` schema - the routes a response contract
|
|
232
|
+
* can hold to anything. Pair it with `require: ["nifra.response-contract"]` to say "every route
|
|
233
|
+
* that declares a response enforces it" without listing the routes that declare none.
|
|
234
|
+
*/
|
|
235
|
+
readonly hasResponse?: boolean
|
|
230
236
|
/**
|
|
231
237
|
* Match routes by their effective transport body policy. `"unlimited"` is the explicit
|
|
232
238
|
* streaming/upload exemption; `"bounded"` is any finite cap (an explicit number or the inherited
|
|
@@ -259,7 +265,9 @@ const usesClassSelector = (selector: AssuranceRouteSelector): boolean =>
|
|
|
259
265
|
|
|
260
266
|
/** The rules whose selector needs capability definitions to mean anything. */
|
|
261
267
|
function rulesNeedingDefinitions(policy: AssurancePolicy): readonly string[] {
|
|
262
|
-
return policy.rules
|
|
268
|
+
return [...policy.rules, ...(policy.baseline ?? [])]
|
|
269
|
+
.filter((rule) => usesClassSelector(rule.match))
|
|
270
|
+
.map((rule) => rule.name)
|
|
263
271
|
}
|
|
264
272
|
|
|
265
273
|
function definitionMap(
|
|
@@ -294,6 +302,13 @@ export interface AssuranceRule {
|
|
|
294
302
|
export interface AssurancePolicy {
|
|
295
303
|
/** First matching rule owns a route. Put exceptions before broad defaults. */
|
|
296
304
|
readonly rules: readonly AssuranceRule[]
|
|
305
|
+
/**
|
|
306
|
+
* Rules checked on EVERY route they match, in addition to the first-match rule that owns it - for a
|
|
307
|
+
* requirement that holds across classes ("every route declaring a response enforces it"), which
|
|
308
|
+
* first-match-wins would otherwise make you repeat in each rule. A baseline rule does not classify a
|
|
309
|
+
* route: one no `rules` entry matches is still unclassified. Names share one namespace with `rules`.
|
|
310
|
+
*/
|
|
311
|
+
readonly baseline?: readonly AssuranceRule[]
|
|
297
312
|
/** Default `error`: an unclassified route fails closed. */
|
|
298
313
|
readonly unmatched?: "error" | "ignore"
|
|
299
314
|
/** Default false: reject an empty reflected source so a wrong import cannot pass CI silently. */
|
|
@@ -438,8 +453,11 @@ export function defineAssurancePolicy(policy: AssurancePolicy): AssurancePolicy
|
|
|
438
453
|
) {
|
|
439
454
|
throw new Error(`route assurance: flagClassifiedWithoutEvidence must be boolean`)
|
|
440
455
|
}
|
|
456
|
+
if (policy.baseline !== undefined && !Array.isArray(policy.baseline)) {
|
|
457
|
+
throw new Error("route assurance: baseline must be an array of rules")
|
|
458
|
+
}
|
|
441
459
|
const names = new Set<string>()
|
|
442
|
-
const
|
|
460
|
+
const normalize = (rule: AssuranceRule): AssuranceRule => {
|
|
443
461
|
if (typeof rule.name !== "string" || !nonEmpty(rule.name)) {
|
|
444
462
|
throw new Error("route assurance: rule name must be non-empty")
|
|
445
463
|
}
|
|
@@ -461,6 +479,7 @@ export function defineAssurancePolicy(policy: AssurancePolicy): AssurancePolicy
|
|
|
461
479
|
...CLASS_SELECTOR_KEYS,
|
|
462
480
|
"classificationAtLeast",
|
|
463
481
|
"hasBody",
|
|
482
|
+
"hasResponse",
|
|
464
483
|
"bodyLimit",
|
|
465
484
|
].includes(key),
|
|
466
485
|
)
|
|
@@ -476,10 +495,12 @@ export function defineAssurancePolicy(policy: AssurancePolicy): AssurancePolicy
|
|
|
476
495
|
`route assurance: rule ${JSON.stringify(name)} tools selector must be boolean`,
|
|
477
496
|
)
|
|
478
497
|
}
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
498
|
+
for (const key of ["hasBody", "hasResponse"] as const) {
|
|
499
|
+
if (rule.match[key] !== undefined && typeof rule.match[key] !== "boolean") {
|
|
500
|
+
throw new Error(
|
|
501
|
+
`route assurance: rule ${JSON.stringify(name)} ${key} selector must be boolean`,
|
|
502
|
+
)
|
|
503
|
+
}
|
|
483
504
|
}
|
|
484
505
|
if (
|
|
485
506
|
rule.match.bodyLimit !== undefined &&
|
|
@@ -584,6 +605,7 @@ export function defineAssurancePolicy(policy: AssurancePolicy): AssurancePolicy
|
|
|
584
605
|
match.classificationAtLeast = rule.match.classificationAtLeast
|
|
585
606
|
}
|
|
586
607
|
if (rule.match.hasBody !== undefined) match.hasBody = rule.match.hasBody
|
|
608
|
+
if (rule.match.hasResponse !== undefined) match.hasResponse = rule.match.hasResponse
|
|
587
609
|
if (rule.match.bodyLimit !== undefined) match.bodyLimit = rule.match.bodyLimit
|
|
588
610
|
return Object.freeze({
|
|
589
611
|
name,
|
|
@@ -595,9 +617,12 @@ export function defineAssurancePolicy(policy: AssurancePolicy): AssurancePolicy
|
|
|
595
617
|
: {}),
|
|
596
618
|
...(rule.requireCsrfWithAuthenticated === true ? { requireCsrfWithAuthenticated: true } : {}),
|
|
597
619
|
})
|
|
598
|
-
}
|
|
620
|
+
}
|
|
621
|
+
const rules = policy.rules.map(normalize)
|
|
622
|
+
const baseline = (policy.baseline ?? []).map(normalize)
|
|
599
623
|
return Object.freeze({
|
|
600
624
|
rules: Object.freeze(rules),
|
|
625
|
+
...(baseline.length > 0 ? { baseline: Object.freeze(baseline) } : {}),
|
|
601
626
|
unmatched: policy.unmatched ?? "error",
|
|
602
627
|
allowEmpty: policy.allowEmpty ?? false,
|
|
603
628
|
flagClassifiedWithoutEvidence: policy.flagClassifiedWithoutEvidence ?? false,
|
|
@@ -732,7 +757,7 @@ export function defineAssuranceConfig(config: AssuranceConfig): AssuranceConfig
|
|
|
732
757
|
// that passes capability assurance, so the rule would match nothing.
|
|
733
758
|
if (capabilities !== undefined) {
|
|
734
759
|
const defined = new Set(capabilities.definitions.map((definition) => definition.id))
|
|
735
|
-
for (const rule of policy.rules) {
|
|
760
|
+
for (const rule of [...policy.rules, ...(policy.baseline ?? [])]) {
|
|
736
761
|
const undefinedToken = rule.match.capabilities?.find((token) => !defined.has(token))
|
|
737
762
|
if (undefinedToken !== undefined) {
|
|
738
763
|
throw new Error(
|
|
@@ -804,13 +829,15 @@ export function matchesAssuranceSelector(
|
|
|
804
829
|
definitions?: ReadonlyMap<string, CapabilityDefinition>,
|
|
805
830
|
): boolean {
|
|
806
831
|
const { methods, paths, tools, capabilities, access, zone, classificationAtLeast } = selector
|
|
807
|
-
const { exceptMethods, hasBody, bodyLimit } = selector
|
|
832
|
+
const { exceptMethods, hasBody, hasResponse, bodyLimit } = selector
|
|
808
833
|
if (methods !== undefined && !methods.includes(route.method as Method | "WS")) return false
|
|
809
834
|
if (exceptMethods?.some((method) => method === route.method) === true) return false
|
|
810
835
|
if (paths !== undefined && !paths.some((pattern) => routeGlob(pattern).test(route.path)))
|
|
811
836
|
return false
|
|
812
837
|
if (tools !== undefined && (route.tool !== undefined) !== tools) return false
|
|
813
838
|
if (hasBody !== undefined && (route.schema?.body !== undefined) !== hasBody) return false
|
|
839
|
+
if (hasResponse !== undefined && (route.schema?.response !== undefined) !== hasResponse)
|
|
840
|
+
return false
|
|
814
841
|
if (bodyLimit !== undefined && effectiveBodyLimit(route.schema) !== bodyLimit) return false
|
|
815
842
|
if (
|
|
816
843
|
classificationAtLeast !== undefined &&
|
|
@@ -836,7 +863,61 @@ export function matchesAssuranceSelector(
|
|
|
836
863
|
return true
|
|
837
864
|
}
|
|
838
865
|
|
|
839
|
-
/**
|
|
866
|
+
/** One rule's missing and forbidden evidence on one route, each also reported as a finding. */
|
|
867
|
+
function checkAssuranceRule(
|
|
868
|
+
rule: AssuranceRule,
|
|
869
|
+
route: Pick<ReflectedRoute, "method" | "path">,
|
|
870
|
+
evidence: readonly AssuranceEvidence[],
|
|
871
|
+
evidenceIds: ReadonlySet<string>,
|
|
872
|
+
findings: AssuranceFinding[],
|
|
873
|
+
): { readonly missing: readonly string[]; readonly forbidden: readonly string[] } {
|
|
874
|
+
const requiredProvenance = rule.requireProvenance ?? "any"
|
|
875
|
+
const missing = (rule.require ?? []).filter((id) => {
|
|
876
|
+
if (!evidenceIds.has(id)) return true
|
|
877
|
+
if (requiredProvenance === "any") return false
|
|
878
|
+
return !evidence.some(
|
|
879
|
+
(item) => item.id === id && evidenceProvenance(item) === requiredProvenance,
|
|
880
|
+
)
|
|
881
|
+
})
|
|
882
|
+
const forbidden = (rule.forbid ?? []).filter((id) => evidenceIds.has(id))
|
|
883
|
+
if (
|
|
884
|
+
rule.requireCsrfWithAuthenticated === true &&
|
|
885
|
+
evidenceIds.has(NIFRA_ASSURANCE_IDS.AUTHENTICATED) &&
|
|
886
|
+
!evidence.some(
|
|
887
|
+
(item) => item.id === NIFRA_ASSURANCE_IDS.CSRF && evidenceProvenance(item) === "runtime",
|
|
888
|
+
) &&
|
|
889
|
+
!missing.includes(NIFRA_ASSURANCE_IDS.CSRF)
|
|
890
|
+
) {
|
|
891
|
+
missing.push(NIFRA_ASSURANCE_IDS.CSRF)
|
|
892
|
+
}
|
|
893
|
+
for (const id of missing) {
|
|
894
|
+
findings.push({
|
|
895
|
+
code: "missing-evidence",
|
|
896
|
+
method: route.method,
|
|
897
|
+
path: route.path,
|
|
898
|
+
rule: rule.name,
|
|
899
|
+
evidence: id,
|
|
900
|
+
message:
|
|
901
|
+
requiredProvenance === "any"
|
|
902
|
+
? `${route.method} ${route.path} (${rule.name}) is missing ${id}`
|
|
903
|
+
: `${route.method} ${route.path} (${rule.name}) is missing ${requiredProvenance} evidence for ${id}`,
|
|
904
|
+
})
|
|
905
|
+
}
|
|
906
|
+
for (const id of forbidden) {
|
|
907
|
+
findings.push({
|
|
908
|
+
code: "forbidden-evidence",
|
|
909
|
+
method: route.method,
|
|
910
|
+
path: route.path,
|
|
911
|
+
rule: rule.name,
|
|
912
|
+
evidence: id,
|
|
913
|
+
message: `${route.method} ${route.path} (${rule.name}) carries forbidden ${id}`,
|
|
914
|
+
})
|
|
915
|
+
}
|
|
916
|
+
return { missing, forbidden }
|
|
917
|
+
}
|
|
918
|
+
|
|
919
|
+
/** Evaluate reflected route evidence against the first matching policy rule, plus every matching
|
|
920
|
+
* baseline rule. */
|
|
840
921
|
export function evaluateRouteAssurance(
|
|
841
922
|
source: unknown,
|
|
842
923
|
policyInput: AssurancePolicy,
|
|
@@ -875,6 +956,13 @@ export function evaluateRouteAssurance(
|
|
|
875
956
|
)
|
|
876
957
|
const evidence = route.assurance ?? []
|
|
877
958
|
const evidenceIds = new Set(evidence.map((item) => item.id))
|
|
959
|
+
const missing: string[] = []
|
|
960
|
+
const forbidden: string[] = []
|
|
961
|
+
const hold = (candidate: AssuranceRule): void => {
|
|
962
|
+
const outcome = checkAssuranceRule(candidate, route, evidence, evidenceIds, findings)
|
|
963
|
+
for (const id of outcome.missing) if (!missing.includes(id)) missing.push(id)
|
|
964
|
+
for (const id of outcome.forbidden) if (!forbidden.includes(id)) forbidden.push(id)
|
|
965
|
+
}
|
|
878
966
|
if (rule === undefined) {
|
|
879
967
|
if (policy.unmatched !== "ignore") {
|
|
880
968
|
findings.push({
|
|
@@ -884,82 +972,33 @@ export function evaluateRouteAssurance(
|
|
|
884
972
|
message: `${route.method} ${route.path} is not classified by an assurance rule`,
|
|
885
973
|
})
|
|
886
974
|
}
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
)
|
|
907
|
-
})
|
|
908
|
-
const forbidden = (rule.forbid ?? []).filter((id) => evidenceIds.has(id))
|
|
909
|
-
if (
|
|
910
|
-
rule.requireCsrfWithAuthenticated === true &&
|
|
911
|
-
evidenceIds.has(NIFRA_ASSURANCE_IDS.AUTHENTICATED) &&
|
|
912
|
-
!evidence.some(
|
|
913
|
-
(item) => item.id === NIFRA_ASSURANCE_IDS.CSRF && evidenceProvenance(item) === "runtime",
|
|
914
|
-
)
|
|
915
|
-
) {
|
|
916
|
-
const id = NIFRA_ASSURANCE_IDS.CSRF
|
|
917
|
-
if (!missing.includes(id)) missing = [...missing, id]
|
|
918
|
-
}
|
|
919
|
-
for (const id of missing) {
|
|
920
|
-
findings.push({
|
|
921
|
-
code: "missing-evidence",
|
|
922
|
-
method: route.method,
|
|
923
|
-
path: route.path,
|
|
924
|
-
rule: rule.name,
|
|
925
|
-
evidence: id,
|
|
926
|
-
message:
|
|
927
|
-
requiredProvenance === "any"
|
|
928
|
-
? `${route.method} ${route.path} (${rule.name}) is missing ${id}`
|
|
929
|
-
: `${route.method} ${route.path} (${rule.name}) is missing ${requiredProvenance} evidence for ${id}`,
|
|
930
|
-
})
|
|
931
|
-
}
|
|
932
|
-
for (const id of forbidden) {
|
|
933
|
-
findings.push({
|
|
934
|
-
code: "forbidden-evidence",
|
|
935
|
-
method: route.method,
|
|
936
|
-
path: route.path,
|
|
937
|
-
rule: rule.name,
|
|
938
|
-
evidence: id,
|
|
939
|
-
message: `${route.method} ${route.path} (${rule.name}) carries forbidden ${id}`,
|
|
940
|
-
})
|
|
975
|
+
} else {
|
|
976
|
+
hold(rule)
|
|
977
|
+
// Opt-in visibility: a pure-classification rule (no require + no forbid) matching a route with
|
|
978
|
+
// zero evidence is a "label without proof". Surface it so the gap isn't silently green. A rule
|
|
979
|
+
// that expects or forbids evidence already speaks for itself, so it's excluded here.
|
|
980
|
+
if (
|
|
981
|
+
policy.flagClassifiedWithoutEvidence === true &&
|
|
982
|
+
evidence.length === 0 &&
|
|
983
|
+
(rule.require ?? []).length === 0 &&
|
|
984
|
+
(rule.forbid ?? []).length === 0
|
|
985
|
+
) {
|
|
986
|
+
findings.push({
|
|
987
|
+
code: "classified-no-evidence",
|
|
988
|
+
method: route.method,
|
|
989
|
+
path: route.path,
|
|
990
|
+
rule: rule.name,
|
|
991
|
+
message: `${route.method} ${route.path} (${rule.name}) is classified but carries no enforcement evidence`,
|
|
992
|
+
})
|
|
993
|
+
}
|
|
941
994
|
}
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
// or forbids evidence already speaks for itself via the loops above, so it's excluded here.
|
|
945
|
-
if (
|
|
946
|
-
policy.flagClassifiedWithoutEvidence === true &&
|
|
947
|
-
evidence.length === 0 &&
|
|
948
|
-
(rule.require ?? []).length === 0 &&
|
|
949
|
-
(rule.forbid ?? []).length === 0
|
|
950
|
-
) {
|
|
951
|
-
findings.push({
|
|
952
|
-
code: "classified-no-evidence",
|
|
953
|
-
method: route.method,
|
|
954
|
-
path: route.path,
|
|
955
|
-
rule: rule.name,
|
|
956
|
-
message: `${route.method} ${route.path} (${rule.name}) is classified but carries no enforcement evidence`,
|
|
957
|
-
})
|
|
995
|
+
for (const candidate of policy.baseline ?? []) {
|
|
996
|
+
if (matchesAssuranceSelector(route, candidate.match, definitions)) hold(candidate)
|
|
958
997
|
}
|
|
959
998
|
routes.push({
|
|
960
999
|
method: route.method,
|
|
961
1000
|
path: route.path,
|
|
962
|
-
rule: rule.name,
|
|
1001
|
+
...(rule === undefined ? {} : { rule: rule.name }),
|
|
963
1002
|
evidence,
|
|
964
1003
|
missing: Object.freeze(missing),
|
|
965
1004
|
forbidden: Object.freeze(forbidden),
|
package/src/capabilities.ts
CHANGED
|
@@ -154,6 +154,8 @@ export interface RouteCapabilityEvidence {
|
|
|
154
154
|
/** True only when the route's reachable module graph was actually scanned. */
|
|
155
155
|
readonly covered: boolean
|
|
156
156
|
readonly evidence: readonly CapabilityEvidence[]
|
|
157
|
+
/** The probable cause of an uncovered route, when the collector can tell. */
|
|
158
|
+
readonly uncoveredReason?: string
|
|
157
159
|
}
|
|
158
160
|
|
|
159
161
|
export interface CapabilityEvidenceSet {
|
|
@@ -416,7 +418,7 @@ export function evaluateCapabilityAssurance(
|
|
|
416
418
|
code: "provenance-uncovered",
|
|
417
419
|
method: route.method,
|
|
418
420
|
path: route.path,
|
|
419
|
-
message: `${route.method} ${route.path} has no static provenance coverage`,
|
|
421
|
+
message: `${route.method} ${route.path} has no static provenance coverage${supplied?.uncoveredReason === undefined ? "" : ` - ${supplied.uncoveredReason}`}`,
|
|
420
422
|
})
|
|
421
423
|
}
|
|
422
424
|
// A safe-method route that REACHES a domain write without declaring it used to draw two findings
|
package/src/edge-kit.ts
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
|
|
23
23
|
export { type ErrorLogDetail, emitRequestErrorLog } from "./server/bare-error-lane.ts"
|
|
24
24
|
export { capBodyBytes } from "./server/body.ts"
|
|
25
|
-
export { readBodyFramed } from "./server/body-lane.ts"
|
|
25
|
+
export { type FormOrigins, readBodyFramed } from "./server/body-lane.ts"
|
|
26
26
|
export { plainError } from "./server/http.ts"
|
|
27
27
|
export {
|
|
28
28
|
answerNotFound,
|
package/src/index.ts
CHANGED
|
@@ -16,13 +16,13 @@
|
|
|
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.1.0" as const
|
|
20
20
|
|
|
21
21
|
export type Version = typeof VERSION
|
|
22
22
|
|
|
23
23
|
export { FrameworkError, RouteConfigError, type RouteConfigErrorCode } from "./errors.ts"
|
|
24
24
|
export { FRAMEWORK_NAME, type FrameworkName } from "./internal/brand.ts"
|
|
25
|
-
export { isSameOriginRequest } from "./internal/same-origin.ts"
|
|
25
|
+
export { isSameOriginForm, isSameOriginRequest } from "./internal/same-origin.ts"
|
|
26
26
|
export {
|
|
27
27
|
ROUTE_PATTERN_OVERLAP_MAX_STATES,
|
|
28
28
|
RoutePatternOverlapLimitError,
|
|
@@ -35,6 +35,7 @@ import {
|
|
|
35
35
|
NIFRA_ASSURANCE_IDS,
|
|
36
36
|
validEvidenceId,
|
|
37
37
|
} from "./route-assurance.ts"
|
|
38
|
+
import type { CatalogRoute } from "./route-catalog.ts"
|
|
38
39
|
import type {
|
|
39
40
|
RawAfterHandle,
|
|
40
41
|
RawAround,
|
|
@@ -43,7 +44,9 @@ import type {
|
|
|
43
44
|
RawDerive,
|
|
44
45
|
RawErrorHandler,
|
|
45
46
|
} from "./route-execution.ts"
|
|
47
|
+
import { compileRouteExecutionPlan } from "./route-execution.ts"
|
|
46
48
|
import { type RouteLaneSelection, selectRouteLanes } from "./route-lanes.ts"
|
|
49
|
+
import { compileRouteProgram } from "./route-program.ts"
|
|
47
50
|
|
|
48
51
|
export interface RouteCompilerContext {
|
|
49
52
|
readonly maxBodyBytes: number
|
|
@@ -83,6 +86,108 @@ export interface CompiledRouteOptions {
|
|
|
83
86
|
readonly authenticated: boolean
|
|
84
87
|
}
|
|
85
88
|
|
|
89
|
+
const RESPONSE_CONTRACT_EVIDENCE: AssuranceDeclaration = Object.freeze({
|
|
90
|
+
id: NIFRA_ASSURANCE_IDS.RESPONSE_CONTRACT,
|
|
91
|
+
source: "response-contract",
|
|
92
|
+
scope: "plugin",
|
|
93
|
+
})
|
|
94
|
+
|
|
95
|
+
function responseDefinitionOf(
|
|
96
|
+
schema: RouteSchema | undefined,
|
|
97
|
+
): ResponseContractDefinition | undefined {
|
|
98
|
+
return schema?.response !== undefined || schema?.errors !== undefined
|
|
99
|
+
? {
|
|
100
|
+
...(schema.response === undefined ? {} : { response: schema.response }),
|
|
101
|
+
...(schema.errors === undefined ? {} : { errors: schema.errors }),
|
|
102
|
+
}
|
|
103
|
+
: undefined
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Recompile a route another server compiled, under the response contract and effect ledger the
|
|
108
|
+
* adopting server installed and the route's own server did not. Both only add a check or a record,
|
|
109
|
+
* so a merged route can never serve more than it did standalone - and without this, the same
|
|
110
|
+
* `.use()` covered a `group()` route but not a `merge()`d one. A route that already resolved its
|
|
111
|
+
* own contract or ledger keeps it.
|
|
112
|
+
*/
|
|
113
|
+
export function adoptRouteRuntimes(
|
|
114
|
+
route: CatalogRoute,
|
|
115
|
+
responseContractRuntime: ResponseContractRuntime | undefined,
|
|
116
|
+
effectLedgerRuntime: EffectLedgerRuntime | undefined,
|
|
117
|
+
): CatalogRoute {
|
|
118
|
+
const { entry, descriptor } = route
|
|
119
|
+
const definition =
|
|
120
|
+
entry.responseContract === undefined && responseContractRuntime !== undefined
|
|
121
|
+
? responseDefinitionOf(entry.schema)
|
|
122
|
+
: undefined
|
|
123
|
+
const ledgered =
|
|
124
|
+
entry.ledgered ??
|
|
125
|
+
effectLedgerRuntime?.resolve(descriptor.capabilities ?? [], route.method, route.path)
|
|
126
|
+
if (definition === undefined && ledgered === entry.ledgered) return route
|
|
127
|
+
const responseContract =
|
|
128
|
+
definition === undefined || responseContractRuntime === undefined
|
|
129
|
+
? entry.responseContract
|
|
130
|
+
: { runtime: responseContractRuntime, definition }
|
|
131
|
+
// Either runtime rules out every fused lane, so the route needs only the generic plan here - and
|
|
132
|
+
// nothing the source server's validation-error default decided about fusion can matter any more.
|
|
133
|
+
const lanes = selectRouteLanes({
|
|
134
|
+
schema: entry.schema,
|
|
135
|
+
hasAuth: entry.authStages.length > 0,
|
|
136
|
+
hasIdempotency: entry.idempotent !== undefined,
|
|
137
|
+
hasLedger: ledgered !== undefined,
|
|
138
|
+
hasResponseContract: responseContract !== undefined,
|
|
139
|
+
hasDecorations: entry.hasDecorations,
|
|
140
|
+
derives: entry.derives.length,
|
|
141
|
+
beforeHandle: entry.beforeHandle.length,
|
|
142
|
+
afterHandle: entry.afterHandle.length,
|
|
143
|
+
onError: entry.onError.length,
|
|
144
|
+
around: entry.around.length,
|
|
145
|
+
defaultOnValidationError: false,
|
|
146
|
+
})
|
|
147
|
+
const program = compileRouteProgram({
|
|
148
|
+
schema: entry.schema,
|
|
149
|
+
handler: entry.handler,
|
|
150
|
+
derives: entry.derives,
|
|
151
|
+
authStages: entry.authStages,
|
|
152
|
+
beforeHandle: entry.beforeHandle,
|
|
153
|
+
afterHandle: entry.afterHandle,
|
|
154
|
+
onError: entry.onError,
|
|
155
|
+
decorations: entry.decorations,
|
|
156
|
+
hasDecorations: entry.hasDecorations,
|
|
157
|
+
bodySchema: entry.schema?.body,
|
|
158
|
+
bodyLimit: entry.bodyLimit,
|
|
159
|
+
responseContract,
|
|
160
|
+
})
|
|
161
|
+
const execution = compileRouteExecutionPlan({
|
|
162
|
+
lane: lanes.lane,
|
|
163
|
+
contextless: false,
|
|
164
|
+
hasAround: entry.around.length > 0,
|
|
165
|
+
hasLedger: ledgered !== undefined,
|
|
166
|
+
fusedWeb: undefined,
|
|
167
|
+
fusedBody: undefined,
|
|
168
|
+
fusedLane: undefined,
|
|
169
|
+
})
|
|
170
|
+
const enforced = definition !== undefined && responseContractRuntime?.mode === "enforce"
|
|
171
|
+
return {
|
|
172
|
+
...route,
|
|
173
|
+
entry: {
|
|
174
|
+
...entry,
|
|
175
|
+
ledgered,
|
|
176
|
+
responseContract,
|
|
177
|
+
lifecycleHookLane: undefined,
|
|
178
|
+
execution,
|
|
179
|
+
program,
|
|
180
|
+
},
|
|
181
|
+
descriptor:
|
|
182
|
+
definition === undefined || responseContractRuntime === undefined
|
|
183
|
+
? descriptor
|
|
184
|
+
: { ...descriptor, responseContract: responseContractRuntime.mode },
|
|
185
|
+
assurance: enforced
|
|
186
|
+
? Object.freeze([...route.assurance, RESPONSE_CONTRACT_EVIDENCE])
|
|
187
|
+
: route.assurance,
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
86
191
|
/** Resolve all registration-time policy and lane facts for one route. */
|
|
87
192
|
export function compileRouteOptions(
|
|
88
193
|
context: RouteCompilerContext,
|
|
@@ -181,13 +286,7 @@ export function compileRouteOptions(
|
|
|
181
286
|
context.maxBodyBytes,
|
|
182
287
|
)
|
|
183
288
|
const ledgered = context.effectLedgerRuntime?.resolve(capabilities, method, path)
|
|
184
|
-
const responseDefinition =
|
|
185
|
-
schema?.response !== undefined || schema?.errors !== undefined
|
|
186
|
-
? {
|
|
187
|
-
...(schema.response === undefined ? {} : { response: schema.response }),
|
|
188
|
-
...(schema.errors === undefined ? {} : { errors: schema.errors }),
|
|
189
|
-
}
|
|
190
|
-
: undefined
|
|
289
|
+
const responseDefinition = responseDefinitionOf(schema)
|
|
191
290
|
const contracted =
|
|
192
291
|
context.responseContractRuntime !== undefined && responseDefinition !== undefined
|
|
193
292
|
? { runtime: context.responseContractRuntime, definition: responseDefinition }
|
|
@@ -208,15 +307,7 @@ export function compileRouteOptions(
|
|
|
208
307
|
})
|
|
209
308
|
|
|
210
309
|
const routeAssurance: AssuranceDeclaration[] = [...context.activeAssurance, ...handlerAssurance]
|
|
211
|
-
if (contracted?.runtime.mode === "enforce")
|
|
212
|
-
routeAssurance.push(
|
|
213
|
-
Object.freeze({
|
|
214
|
-
id: NIFRA_ASSURANCE_IDS.RESPONSE_CONTRACT,
|
|
215
|
-
source: "response-contract",
|
|
216
|
-
scope: "plugin",
|
|
217
|
-
}),
|
|
218
|
-
)
|
|
219
|
-
}
|
|
310
|
+
if (contracted?.runtime.mode === "enforce") routeAssurance.push(RESPONSE_CONTRACT_EVIDENCE)
|
|
220
311
|
for (const id of schema?.assurance ?? []) {
|
|
221
312
|
if (!validEvidenceId(id)) {
|
|
222
313
|
throw new Error(
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
*
|
|
27
27
|
* An unparseable Origin is not same-origin.
|
|
28
28
|
*/
|
|
29
|
-
export function isSameOriginRequest(origin: string, request:
|
|
29
|
+
export function isSameOriginRequest(origin: string, request: { readonly url: string }): boolean {
|
|
30
30
|
try {
|
|
31
31
|
const from = new URL(origin)
|
|
32
32
|
const own = new URL(request.url)
|
|
@@ -41,3 +41,16 @@ export function isSameOriginRequest(origin: string, request: Request): boolean {
|
|
|
41
41
|
return false
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* {@link isSameOriginRequest} for a browser form submission. Under `Referrer-Policy: no-referrer` a
|
|
47
|
+
* browser sends a same-origin form POST with `Origin: null`; that one passes on its
|
|
48
|
+
* `Sec-Fetch-Site: same-origin`, a header page script cannot set.
|
|
49
|
+
*/
|
|
50
|
+
export function isSameOriginForm(
|
|
51
|
+
origin: string,
|
|
52
|
+
secFetchSite: string | null,
|
|
53
|
+
request: { readonly url: string },
|
|
54
|
+
): boolean {
|
|
55
|
+
return origin === "null" ? secFetchSite === "same-origin" : isSameOriginRequest(origin, request)
|
|
56
|
+
}
|