@nifrajs/core 2.10.0 → 2.12.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 +61 -3
- package/dist/assurance.d.ts.map +1 -1
- package/dist/assurance.js +152 -5
- package/dist/assurance.js.map +1 -1
- package/dist/capabilities.d.ts +9 -1
- package/dist/capabilities.d.ts.map +1 -1
- package/dist/capabilities.js +5 -1
- package/dist/capabilities.js.map +1 -1
- package/dist/diff.d.ts +2 -1
- package/dist/diff.d.ts.map +1 -1
- package/dist/diff.js +3 -1
- package/dist/diff.js.map +1 -1
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/evidence.d.ts +89 -0
- package/dist/evidence.d.ts.map +1 -0
- package/dist/evidence.js +170 -0
- package/dist/evidence.js.map +1 -0
- package/dist/execution-policy.d.ts +23 -0
- package/dist/execution-policy.d.ts.map +1 -0
- package/dist/execution-policy.js +28 -0
- package/dist/execution-policy.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/internal/route-assurance.d.ts +19 -0
- package/dist/internal/route-assurance.d.ts.map +1 -1
- package/dist/internal/route-assurance.js +38 -5
- package/dist/internal/route-assurance.js.map +1 -1
- package/dist/internal/route-execution.d.ts +18 -0
- package/dist/internal/route-execution.d.ts.map +1 -1
- package/dist/internal/route-execution.js +67 -1
- package/dist/internal/route-execution.js.map +1 -1
- package/dist/manifest.d.ts +5 -1
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +22 -4
- package/dist/manifest.js.map +1 -1
- package/dist/reflection.d.ts +5 -0
- package/dist/reflection.d.ts.map +1 -1
- package/dist/reflection.js +13 -4
- package/dist/reflection.js.map +1 -1
- package/dist/replay.d.ts +26 -0
- package/dist/replay.d.ts.map +1 -0
- package/dist/replay.js +63 -0
- package/dist/replay.js.map +1 -0
- package/dist/schema/standard.d.ts +2 -0
- package/dist/schema/standard.d.ts.map +1 -1
- package/dist/schema/standard.js +13 -0
- package/dist/schema/standard.js.map +1 -1
- package/dist/server/body.d.ts +49 -6
- package/dist/server/body.d.ts.map +1 -1
- package/dist/server/body.js +226 -8
- package/dist/server/body.js.map +1 -1
- package/dist/server/context.d.ts +20 -3
- package/dist/server/context.d.ts.map +1 -1
- package/dist/server/contract.d.ts +15 -3
- package/dist/server/contract.d.ts.map +1 -1
- package/dist/server/contract.js +22 -0
- package/dist/server/contract.js.map +1 -1
- package/dist/server/cookies.d.ts +26 -5
- package/dist/server/cookies.d.ts.map +1 -1
- package/dist/server/cookies.js +76 -9
- package/dist/server/cookies.js.map +1 -1
- package/dist/server/edge.d.ts.map +1 -1
- package/dist/server/edge.js +11 -0
- package/dist/server/edge.js.map +1 -1
- package/dist/server/header-case.d.ts +9 -0
- package/dist/server/header-case.d.ts.map +1 -0
- package/dist/server/header-case.js +54 -0
- package/dist/server/header-case.js.map +1 -0
- package/dist/server/headers.d.ts +8 -0
- package/dist/server/headers.d.ts.map +1 -0
- package/dist/server/headers.js +13 -0
- package/dist/server/headers.js.map +1 -0
- package/dist/server/node-outcome-hook.d.ts.map +1 -1
- package/dist/server/node-outcome-hook.js +7 -11
- package/dist/server/node-outcome-hook.js.map +1 -1
- package/dist/server/node-outcome.d.ts +8 -1
- package/dist/server/node-outcome.d.ts.map +1 -1
- package/dist/server/node-outcome.js +10 -3
- package/dist/server/node-outcome.js.map +1 -1
- package/dist/server/plugin.d.ts +66 -7
- package/dist/server/plugin.d.ts.map +1 -1
- package/dist/server/plugin.js +14 -10
- package/dist/server/plugin.js.map +1 -1
- package/dist/server/proto-guard.d.ts +30 -0
- package/dist/server/proto-guard.d.ts.map +1 -0
- package/dist/server/proto-guard.js +116 -0
- package/dist/server/proto-guard.js.map +1 -0
- package/dist/server/registry.d.ts +6 -2
- package/dist/server/registry.d.ts.map +1 -1
- package/dist/server/request-context.d.ts +24 -6
- package/dist/server/request-context.d.ts.map +1 -1
- package/dist/server/request-context.js +157 -30
- package/dist/server/request-context.js.map +1 -1
- package/dist/server/respond.d.ts +2 -2
- package/dist/server/respond.d.ts.map +1 -1
- package/dist/server/respond.js +34 -8
- package/dist/server/respond.js.map +1 -1
- package/dist/server/response-contract-lane.d.ts +1 -1
- package/dist/server/response-contract-lane.d.ts.map +1 -1
- package/dist/server/response-contract-lane.js +45 -13
- package/dist/server/response-contract-lane.js.map +1 -1
- package/dist/server/response-hooks.d.ts +10 -0
- package/dist/server/response-hooks.d.ts.map +1 -0
- package/dist/server/response-hooks.js +52 -0
- package/dist/server/response-hooks.js.map +1 -0
- package/dist/server/runtime-core.d.ts +12 -0
- package/dist/server/runtime-core.d.ts.map +1 -1
- package/dist/server/runtime-core.js +8 -0
- package/dist/server/runtime-core.js.map +1 -1
- package/dist/server/server-types.d.ts +60 -6
- package/dist/server/server-types.d.ts.map +1 -1
- package/dist/server/server.d.ts +80 -23
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +424 -213
- package/dist/server/server.js.map +1 -1
- package/dist/server/static-headers.d.ts +14 -3
- package/dist/server/static-headers.d.ts.map +1 -1
- package/dist/server/static-headers.js +28 -6
- package/dist/server/static-headers.js.map +1 -1
- package/dist/server/transport-lane.d.ts +8 -0
- package/dist/server/transport-lane.d.ts.map +1 -1
- package/dist/server/transport-lane.js +12 -8
- package/dist/server/transport-lane.js.map +1 -1
- package/dist/server/websocket.d.ts +3 -0
- package/dist/server/websocket.d.ts.map +1 -1
- package/dist/server/websocket.js +14 -0
- package/dist/server/websocket.js.map +1 -1
- package/dist/server.d.ts +2 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +2 -2
- package/dist/server.js.map +1 -1
- package/dist/tool-catalog.d.ts +21 -0
- package/dist/tool-catalog.d.ts.map +1 -0
- package/dist/tool-catalog.js +16 -0
- package/dist/tool-catalog.js.map +1 -0
- package/dist/tool-contract.d.ts +238 -0
- package/dist/tool-contract.d.ts.map +1 -0
- package/dist/tool-contract.js +569 -0
- package/dist/tool-contract.js.map +1 -0
- package/package.json +26 -1
- package/src/assurance.ts +236 -6
- package/src/capabilities.ts +14 -1
- package/src/diff.ts +5 -2
- package/src/errors.ts +1 -0
- package/src/evidence.ts +319 -0
- package/src/execution-policy.ts +57 -0
- package/src/index.ts +1 -1
- package/src/internal/route-assurance.ts +67 -4
- package/src/internal/route-execution.ts +276 -1
- package/src/manifest.ts +27 -5
- package/src/reflection.ts +24 -4
- package/src/replay.ts +96 -0
- package/src/schema/standard.ts +16 -0
- package/src/server/body.ts +275 -7
- package/src/server/context.ts +23 -3
- package/src/server/contract.ts +43 -3
- package/src/server/cookies.ts +80 -10
- package/src/server/edge.ts +10 -0
- package/src/server/header-case.ts +54 -0
- package/src/server/headers.ts +11 -0
- package/src/server/node-outcome-hook.ts +6 -11
- package/src/server/node-outcome.ts +10 -2
- package/src/server/plugin.ts +87 -8
- package/src/server/proto-guard.ts +118 -0
- package/src/server/registry.ts +6 -2
- package/src/server/request-context.ts +242 -26
- package/src/server/respond.ts +35 -4
- package/src/server/response-contract-lane.ts +6 -17
- package/src/server/response-hooks.ts +51 -0
- package/src/server/runtime-core.ts +14 -0
- package/src/server/server-types.ts +66 -6
- package/src/server/server.ts +667 -287
- package/src/server/static-headers.ts +27 -3
- package/src/server/transport-lane.ts +19 -8
- package/src/server/websocket.ts +18 -2
- package/src/server.ts +7 -0
- package/src/tool-catalog.ts +40 -0
- package/src/tool-contract.ts +896 -0
|
@@ -40,15 +40,45 @@ export interface AdmissionController {
|
|
|
40
40
|
|
|
41
41
|
export interface ServerOptions {
|
|
42
42
|
/**
|
|
43
|
-
* Max request body size (bytes),
|
|
44
|
-
*
|
|
43
|
+
* Max request body size (bytes), the default transport cap for every route. Default 1_000_000.
|
|
44
|
+
* A route can choose a finite `schema.bodyLimit` of its own; an explicit `'unlimited'` route
|
|
45
|
+
* requires `schema.bodyLimitReason` and is intended only for a separately bounded streaming or
|
|
46
|
+
* upload integration.
|
|
45
47
|
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
48
|
+
* Framework readers (the body-schema lane, `c.boundedJson`) enforce the cap when they read. A
|
|
49
|
+
* route WITHOUT a body schema (raw body, file upload, BYO-validation) is covered too: direct
|
|
50
|
+
* `c.req` reads (`json()`, `arrayBuffer()`, the raw `body` stream, ...) are capped in place -
|
|
51
|
+
* lazily, nothing is buffered until code actually reads - and answer 413 past the limit.
|
|
52
|
+
* `c.boundedBody(n)` states its own explicit per-read limit, above or below the route's cap.
|
|
50
53
|
*/
|
|
51
54
|
readonly maxBodyBytes?: number
|
|
55
|
+
/**
|
|
56
|
+
* Prototype-poisoning policy for JSON bodies (the schema path and `c.boundedJson`). An own
|
|
57
|
+
* `__proto__` key, or a `constructor` carrying a `prototype`, is the payload shape that turns a
|
|
58
|
+
* later innocent merge/assign into prototype pollution. `"reject"` (default) answers the same
|
|
59
|
+
* flat 400 as malformed JSON; `"strip"` removes the offending keys and continues; `"ignore"`
|
|
60
|
+
* parses as-is (only for routes that never merge body input into other objects). Clean payloads
|
|
61
|
+
* pay a substring pre-scan only - the deep walk runs solely on suspect text.
|
|
62
|
+
*/
|
|
63
|
+
readonly protoPoisoning?: "reject" | "strip" | "ignore"
|
|
64
|
+
/**
|
|
65
|
+
* Declare that every `Request` reaching `app.fetch` was framed by a runtime HTTP parser, so its
|
|
66
|
+
* `Content-Length` is an exact transport boundary rather than a hint. Set this ONLY when the
|
|
67
|
+
* runtime's own request object is handed through untouched with no adapter in between to mark it -
|
|
68
|
+
* a bare `export default app` on an edge runtime. Every supported ingress already marks itself:
|
|
69
|
+
* `listen()` on Bun, `toFetchHandler(app)` on Workers/edge, `@nifrajs/deno`, and `@nifrajs/node`
|
|
70
|
+
* (which reads exact bytes and never needs the mark). Reach for this option only for an ingress
|
|
71
|
+
* nifra does not ship an adapter for.
|
|
72
|
+
*
|
|
73
|
+
* Left off (default), the JSON body lane copies the body out and enforces the cap on DELIVERED
|
|
74
|
+
* bytes, because an unmarked request may have been rebuilt by an adapter that kept a caller's
|
|
75
|
+
* `content-length` while decoding a payload of a different size. That check costs an extra pass
|
|
76
|
+
* over the body, which is why an edge deployment that cannot be lied to may opt out of it.
|
|
77
|
+
*
|
|
78
|
+
* Do not set this on an app whose `fetch` is also called with `Request`s assembled from
|
|
79
|
+
* untrusted input.
|
|
80
|
+
*/
|
|
81
|
+
readonly trustBodyFraming?: boolean
|
|
52
82
|
/** Max inbound WebSocket message size (bytes) when `listen()`ing on Bun - frames over this are rejected
|
|
53
83
|
* by the runtime before reaching your handler (so a huge frame can't be JSON-parsed into memory).
|
|
54
84
|
* Default: `maxBodyBytes` (1 MB). */
|
|
@@ -91,6 +121,21 @@ export interface ServerOptions {
|
|
|
91
121
|
readonly onCapabilityUse?: (event: CapabilityUseEvent) => void
|
|
92
122
|
/** Structured logger for framework events (redacts secrets). Default: JSON to stderr. */
|
|
93
123
|
readonly logger?: Logger
|
|
124
|
+
/**
|
|
125
|
+
* How much of an unhandled error reaches the log for a 500. Never reaches the client either way -
|
|
126
|
+
* the response is always a bare `internal_error`.
|
|
127
|
+
*
|
|
128
|
+
* - `"full"` (default) - `name`, the error's own text as `detail`, and `stack`.
|
|
129
|
+
* - `"message"` - `name` and `detail`, no stack.
|
|
130
|
+
* - `"none"` - `name` only.
|
|
131
|
+
*
|
|
132
|
+
* An error's text can quote the input that produced it, which is how request data ends up in a log
|
|
133
|
+
* sink. The framework's answer is the redacting logger rather than blanket suppression: pass
|
|
134
|
+
* `logger: jsonLogger({ valuePatterns: commonSecretPatterns })` to scrub tokens, JWTs, and emails
|
|
135
|
+
* out of `detail` and `stack` while keeping the diagnosis. Reach for `"none"` when the sink itself
|
|
136
|
+
* is the thing you don't trust.
|
|
137
|
+
*/
|
|
138
|
+
readonly errorLogDetail?: "full" | "message" | "none"
|
|
94
139
|
/**
|
|
95
140
|
* App-wide fallback fired when a route **without its own `onValidationError`** fails body/query
|
|
96
141
|
* validation. Same contract as the per-route hook (`(issues, ctx, kind) => Response | repaired-value |
|
|
@@ -101,6 +146,21 @@ export interface ServerOptions {
|
|
|
101
146
|
readonly onValidationError?: RouteSchema["onValidationError"]
|
|
102
147
|
}
|
|
103
148
|
|
|
149
|
+
/** A fetch-compatible handler used by {@link Server.mountFetch}. */
|
|
150
|
+
export type FetchHandler<Env = unknown> = (
|
|
151
|
+
request: Request,
|
|
152
|
+
platform?: Platform<Env>,
|
|
153
|
+
) => MaybePromise<Response>
|
|
154
|
+
|
|
155
|
+
/** Options for a legacy fetch-handler mount. */
|
|
156
|
+
export interface MountFetchOptions {
|
|
157
|
+
/** Remove the mount prefix before invoking the legacy handler. Default: false. */
|
|
158
|
+
readonly stripPrefix?: boolean
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/** A callback awaited after the Bun server has drained and stopped. */
|
|
162
|
+
export type StopHook = () => MaybePromise<void>
|
|
163
|
+
|
|
104
164
|
/**
|
|
105
165
|
* MCP tool safety hints, surfaced in `tools/list`, that tell an agent how risky a `.tool()` call is - so it
|
|
106
166
|
* can decide whether to auto-invoke or confirm first. All optional; an omitted hint means "unknown". Mirrors
|