@nifrajs/client 2.11.0 → 2.12.1
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/client.d.ts +0 -10
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +46 -4
- package/dist/client.js.map +1 -1
- package/dist/treaty.d.ts +39 -2
- package/dist/treaty.d.ts.map +1 -1
- package/dist/validate-responses.d.ts.map +1 -1
- package/dist/validate-responses.js +2 -11
- package/dist/validate-responses.js.map +1 -1
- package/package.json +2 -2
- package/src/client.ts +42 -4
- package/src/treaty.ts +55 -2
- package/src/validate-responses.ts +2 -12
package/dist/client.d.ts
CHANGED
|
@@ -101,16 +101,6 @@ export interface InProcessClientOptions extends Omit<ClientOptions, "fetch"> {
|
|
|
101
101
|
*/
|
|
102
102
|
export declare function client<App>(baseUrl: string, options?: ClientOptions): Treaty<App>;
|
|
103
103
|
export declare function client<const C extends ContractShape>(contract: C, baseUrl: string, options?: ClientOptions): TreatyFromRegistry<RegistryFor<C>>;
|
|
104
|
-
/**
|
|
105
|
-
* A {@link client} whose `fetch` calls a nifra app's own `fetch` in-process - no network, full
|
|
106
|
-
* lifecycle (validation, middleware, contracts). For SSR loaders. Typed from `App` exactly like
|
|
107
|
-
* the network client. The `(url, init) → Request` bridge is required because the client calls
|
|
108
|
-
* `fetch(url, init)` while `app.fetch` takes a `Request`.
|
|
109
|
-
*
|
|
110
|
-
* The returned proxy also implements the explicit symbol-keyed {@link BackendMount} interface, so
|
|
111
|
-
* `createWebApp({ api: inProcessClient(backend) })` can auto-mount the backend while forwarding the
|
|
112
|
-
* outer runtime's `env` and `waitUntil`.
|
|
113
|
-
*/
|
|
114
104
|
export declare function inProcessClient<App extends {
|
|
115
105
|
fetch(request: Request): Response | Promise<Response>;
|
|
116
106
|
}>(app: App, options?: InProcessClientOptions): InProcessClient<App>;
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACxE,OAAO,EACL,KAAK,YAAY,EAGlB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAQL,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC5B,MAAM,+BAA+B,CAAA;AAEtC,OAAO,KAAK,EAAgB,MAAM,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -3,6 +3,15 @@ import { NIFRA_BACKEND_MOUNT, } from "@nifrajs/core/mount";
|
|
|
3
3
|
import { assertTransportTextBounded, createTransportCodecRegistry, decodeTransportResponse, decodeTransportText, defaultTransportCodecs, plainJsonCodec, readBoundedBytes, } from "@nifrajs/core/transport-codec";
|
|
4
4
|
import { ResponseContractViolation, withResponseValidation } from "./validate-responses.js";
|
|
5
5
|
import { NO_SOCKET, openWebSocket } from "./ws.js";
|
|
6
|
+
/**
|
|
7
|
+
* The RESERVED proxy keys, resolved before path segments (see `resolveSegment` and the `then`
|
|
8
|
+
* guard in `createProxy`): these seven verbs (case-insensitive) plus `subscribe`, `ws`, `index`,
|
|
9
|
+
* and `then` (exact). A route path containing a static segment spelling one is unreachable by
|
|
10
|
+
* PROPERTY ACCESS - `treaty.ts` rejects the access at compile time (ReservedSegmentCollision) and
|
|
11
|
+
* types the escape spelling instead: calling the parent node with the segment
|
|
12
|
+
* (`api.api("delete").post()`, the apply trap below) reaches it. `nifra check` reports the
|
|
13
|
+
* collision with the same guidance (NF-C018). Keep the three surfaces in lockstep.
|
|
14
|
+
*/
|
|
6
15
|
const HTTP_VERBS = new Set([
|
|
7
16
|
"get",
|
|
8
17
|
"post",
|
|
@@ -66,11 +75,43 @@ export function client(arg1, arg2, arg3) {
|
|
|
66
75
|
* `createWebApp({ api: inProcessClient(backend) })` can auto-mount the backend while forwarding the
|
|
67
76
|
* outer runtime's `env` and `waitUntil`.
|
|
68
77
|
*/
|
|
78
|
+
const utf8 = new TextEncoder();
|
|
79
|
+
/** Byte length of a body whose size is knowable without reading a stream; `undefined` otherwise
|
|
80
|
+
* (a `ReadableStream` or `FormData` body stays lengthless - multipart framing is the runtime's). */
|
|
81
|
+
function knownBodyLength(body) {
|
|
82
|
+
if (typeof body === "string")
|
|
83
|
+
return utf8.encode(body).byteLength;
|
|
84
|
+
if (body instanceof URLSearchParams)
|
|
85
|
+
return utf8.encode(body.toString()).byteLength;
|
|
86
|
+
if (body instanceof Blob)
|
|
87
|
+
return body.size;
|
|
88
|
+
if (body instanceof ArrayBuffer)
|
|
89
|
+
return body.byteLength;
|
|
90
|
+
if (ArrayBuffer.isView(body))
|
|
91
|
+
return body.byteLength;
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* A `Request` the way a network peer would deliver it: the `Request` constructor never derives
|
|
96
|
+
* `content-length`, so a synthetic in-process request with a body arrives LENGTHLESS - which a
|
|
97
|
+
* fail-closed length gate (e.g. `bodyLimit()`) correctly refuses with 411. Stamp the header
|
|
98
|
+
* whenever the body's size is knowable, so the in-process app sees what a socket would carry.
|
|
99
|
+
*/
|
|
100
|
+
function synthesizedRequest(url, init) {
|
|
101
|
+
const request = new Request(url, init);
|
|
102
|
+
const body = init?.body;
|
|
103
|
+
if (body === undefined || body === null || request.headers.has("content-length"))
|
|
104
|
+
return request;
|
|
105
|
+
const length = knownBodyLength(body);
|
|
106
|
+
if (length !== undefined)
|
|
107
|
+
request.headers.set("content-length", String(length));
|
|
108
|
+
return request;
|
|
109
|
+
}
|
|
69
110
|
export function inProcessClient(app, options) {
|
|
70
111
|
// The in-process bridge: the client speaks `fetch(url, init)` (the `FetchFn` shape) while the app's
|
|
71
112
|
// own `fetch` takes a `Request`. It is the proxy's per-call transport; the symbol-keyed mount below
|
|
72
113
|
// is the platform-aware auto-mount path.
|
|
73
|
-
const direct = (url, init) => Promise.resolve(app.fetch(
|
|
114
|
+
const direct = (url, init) => Promise.resolve(app.fetch(synthesizedRequest(url, init)));
|
|
74
115
|
const bridge = options?.validateResponses === true ? withResponseValidation(app, direct) : direct;
|
|
75
116
|
bridge[LOCAL_FETCH] = true;
|
|
76
117
|
const mount = (request, platform) => Promise.resolve(app.fetch(request, platform));
|
|
@@ -127,9 +168,10 @@ function createProxy(base, path, options, cacheable = true) {
|
|
|
127
168
|
return value;
|
|
128
169
|
},
|
|
129
170
|
apply(_target, _thisArg, args) {
|
|
130
|
-
// A param call (`api.users({ id })`)
|
|
131
|
-
//
|
|
132
|
-
//
|
|
171
|
+
// A param call (`api.users({ id })`) or a collision-escape call (`api.api("delete")`, the
|
|
172
|
+
// typed spelling for reserved-named segments): append the single value, encoded - encoding
|
|
173
|
+
// "/" round-trips through the server's decode, so wildcards and params share this one path.
|
|
174
|
+
// The Treaty type constrains the argument, but the runtime must stay graceful: a no-arg call
|
|
133
175
|
// (`api.users()`) or empty object (`api.users({})`) must NOT throw - the client's contract is
|
|
134
176
|
// to never throw - nor synthesize an `"undefined"` path segment. With no value, fall through
|
|
135
177
|
// to the bare path, which the server resolves as an ordinary `{ ok: false }` (404) Result.
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/treaty.d.ts
CHANGED
|
@@ -108,6 +108,28 @@ type WsMethods<MethodMap> = MethodMap extends {
|
|
|
108
108
|
type Methods<MethodMap> = {
|
|
109
109
|
[M in Exclude<keyof MethodMap, "WS"> as Lowercase<M & string>]: MethodCall<MethodMap[M] & RouteInfo, IsBodyVerb<M & string>>;
|
|
110
110
|
} & SseMethods<MethodMap> & WsMethods<MethodMap>;
|
|
111
|
+
/**
|
|
112
|
+
* Property names the runtime proxy intercepts BEFORE path resolution (`resolveSegment` and the
|
|
113
|
+
* `then` guard in `createProxy`, ./client.ts). A route whose path contains a static segment
|
|
114
|
+
* spelling one of these can never be reached by PROPERTY ACCESS: the access resolves to the
|
|
115
|
+
* reserved behavior (verb call, `.subscribe()`, `.ws()`, root `index`, thenable guard) instead of
|
|
116
|
+
* extending the path. The typed spelling for such a segment is a call on the parent node
|
|
117
|
+
* (`CollisionEscape` below). Verbs are intercepted case-insensitively; the rest match exactly.
|
|
118
|
+
* Kept in lockstep with the runtime's `HTTP_VERBS` set.
|
|
119
|
+
*/
|
|
120
|
+
type ReservedVerbKey = "get" | "post" | "put" | "patch" | "delete" | "head" | "options";
|
|
121
|
+
type ReservedExactKey = "subscribe" | "ws" | "index" | "then";
|
|
122
|
+
/**
|
|
123
|
+
* What a reserved-named segment resolves to instead of a route node, so the collision is a
|
|
124
|
+
* compile error whose message reads out the fix - not a runtime `TypeError` on a path the
|
|
125
|
+
* type system claimed was fine. The typed spelling for the same route is a CALL on the parent
|
|
126
|
+
* node (see `CollisionEscape`); `nifra check` reports the collision at the route definition
|
|
127
|
+
* (NF-C018) with the same guidance.
|
|
128
|
+
*/
|
|
129
|
+
interface ReservedSegmentCollision<Seg extends string> {
|
|
130
|
+
readonly "~nifra-reserved-segment": `route segment '${Seg}' collides with a reserved client proxy key (get/post/put/patch/delete/head/options/subscribe/ws/index/then) and cannot be reached by property access - call the parent node with the segment instead, parent("${Seg}").verb(), or rename the segment`;
|
|
131
|
+
}
|
|
132
|
+
type IsReservedSeg<Seg extends string> = Seg extends ReservedExactKey ? true : Lowercase<Seg> extends ReservedVerbKey ? true : false;
|
|
111
133
|
type Sub<R, Prefix extends string> = Extract<keyof R, `${Prefix}/${string}`>;
|
|
112
134
|
type NextSeg<Prefix extends string, Path extends string> = Path extends `${Prefix}/${infer Seg}/${string}` ? Seg : Path extends `${Prefix}/${infer Seg}` ? Seg : never;
|
|
113
135
|
type NextSegs<R, Prefix extends string> = {
|
|
@@ -117,10 +139,25 @@ type StaticSegs<R, Prefix extends string> = Exclude<NextSegs<R, Prefix>, `:${str
|
|
|
117
139
|
type ParamSeg<R, Prefix extends string> = Extract<NextSegs<R, Prefix>, `:${string}` | `*${string}`>;
|
|
118
140
|
type MethodsAt<R, Prefix extends string> = Prefix extends keyof R ? Methods<R[Prefix]> : unknown;
|
|
119
141
|
type StaticChildren<R, Prefix extends string> = {
|
|
120
|
-
[Seg in StaticSegs<R, Prefix> & string]: TreatyNode<R, `${Prefix}/${Seg}`>;
|
|
142
|
+
[Seg in StaticSegs<R, Prefix> & string]: IsReservedSeg<Seg> extends true ? ReservedSegmentCollision<Seg> : TreatyNode<R, `${Prefix}/${Seg}`>;
|
|
121
143
|
};
|
|
122
144
|
type ParamChild<R, Prefix extends string> = [ParamSeg<R, Prefix>] extends [never] ? unknown : ParamSeg<R, Prefix> extends `:${infer Name}` ? (params: Record<Name, string>) => TreatyNode<R, `${Prefix}/:${Name}`> : ParamSeg<R, Prefix> extends `*${infer Name}` ? (params: Record<Name extends "" ? "*" : Name, string>) => TreatyNode<R, `${Prefix}/*${Name}`> : unknown;
|
|
123
|
-
|
|
145
|
+
/** The reserved-named child segments under `Prefix`, if any. */
|
|
146
|
+
type CollidingSegs<R, Prefix extends string> = {
|
|
147
|
+
[S in StaticSegs<R, Prefix> & string]: IsReservedSeg<S> extends true ? S : never;
|
|
148
|
+
}[StaticSegs<R, Prefix> & string];
|
|
149
|
+
/**
|
|
150
|
+
* The typed spelling for reserved-named segments. Property access can never reach them (the
|
|
151
|
+
* proxy resolves the reserved key first), but the runtime's apply trap has always accepted a
|
|
152
|
+
* scalar argument as one literal path segment - the same call params use. This types that call
|
|
153
|
+
* for EXACTLY the colliding segments, so `api.api("delete").post()` sends `POST /api/delete`
|
|
154
|
+
* while non-colliding segments keep dot access as their only spelling. Placed after `ParamChild`
|
|
155
|
+
* in the node intersection, so on a node with both, an object argument resolves to the param
|
|
156
|
+
* signature and a string literal falls through to this one - matching the runtime, which treats
|
|
157
|
+
* an object as a param bag and a scalar as the segment itself.
|
|
158
|
+
*/
|
|
159
|
+
type CollisionEscape<R, Prefix extends string> = [CollidingSegs<R, Prefix>] extends [never] ? unknown : <S extends CollidingSegs<R, Prefix>>(segment: S) => TreatyNode<R, `${Prefix}/${S}`>;
|
|
160
|
+
type TreatyNode<R, Prefix extends string> = MethodsAt<R, Prefix> & StaticChildren<R, Prefix> & ParamChild<R, Prefix> & CollisionEscape<R, Prefix>;
|
|
124
161
|
type RootIndex<R> = "/" extends keyof R ? {
|
|
125
162
|
readonly index: Methods<R["/"]>;
|
|
126
163
|
} : unknown;
|
package/dist/treaty.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"treaty.d.ts","sourceRoot":"","sources":["../src/treaty.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"treaty.d.ts","sourceRoot":"","sources":["../src/treaty.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,mHAAmH;AACnH,MAAM,MAAM,UAAU,CAAC,GAAG,IAAI,GAAG,SAAS,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAIjF;;;;;GAKG;AACH,KAAK,aAAa,GAChB,sHAAsH,CAAA;AAExH,KAAK,WAAW,CAAC,CAAC,SAAS,SAAS,IAAI;IACtC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,aAAa,GAAG,CAAC,CAAC,OAAO,CAAC,CAAA;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB,CAAA;AAED,KAAK,UAAU,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,IAAI,GAAG,KAAK,CAAA;AAErF;;;;;;;GAOG;AACH,KAAK,UAAU,CAAC,CAAC,SAAS,SAAS,EAAE,QAAQ,SAAS,OAAO,IAAI,QAAQ,SAAS,IAAI,GAClF,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GACzB,CACE,IAAI,CAAC,EAAE,SAAS,EAChB,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,KACrB,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAChE,CACE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EACf,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,KACrB,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAClE,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;AAI7F,uGAAuG;AACvG,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,GAAG,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK,CAAA;AAEtF,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,SAAS;IACnD,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,aAAa,GAAG,CAAC,CAAC,OAAO,CAAC,CAAA;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,0EAA0E;IAC1E,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACnE,kGAAkG;IAClG,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IAClC,oGAAoG;IACpG,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,uFAAuF;IACvF,KAAK,IAAI,IAAI,CAAA;CACd;AAED,KAAK,aAAa,CAAC,CAAC,SAAS,SAAS,IAAI,CACxC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAC3C,OAAO,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,KAC1B,YAAY,CAAA;AAEjB,gFAAgF;AAChF,KAAK,UAAU,CAAC,SAAS,IAAI,SAAS,SAAS;IAAE,GAAG,EAAE,MAAM,CAAC,CAAA;CAAE,GAC3D,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GACxB,OAAO,GACP;IAAE,SAAS,EAAE,aAAa,CAAC,CAAC,GAAG,SAAS,CAAC,CAAA;CAAE,GAC7C,OAAO,CAAA;AAIX,iGAAiG;AACjG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAC,SAAS;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,GAAG,EAAE,OAAO,CAAA;KAAE,CAAA;CAAE,GAAG,CAAC,GAAG,KAAK,CAAA;AAE1F,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAA;IACjD;qFACiF;IACjF,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAC7B,oEAAoE;IACpE,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,kEAAkE;IAClE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;CACnC;AAED;;;;;GAKG;AACH,MAAM,WAAW,QAAQ,CAAC,EAAE,EAAE,GAAG;IAC/B,8FAA8F;IAC9F,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,CAAA;IACvB,6FAA6F;IAC7F,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAA;IACxE,iEAAiE;IACjE,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,GAAG,MAAM,IAAI,CAAA;IACvD,uEAAuE;IACvE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3C,mGAAmG;IACnG,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAA;CACxB;AAED,KAAK,MAAM,CAAC,CAAC,SAAS,SAAS,IAAI,CACjC,OAAO,CAAC,EAAE,aAAa,KACpB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAErD,mFAAmF;AACnF,KAAK,SAAS,CAAC,SAAS,IAAI,SAAS,SAAS;IAAE,EAAE,EAAE,MAAM,CAAC,CAAA;CAAE,GACzD,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GACvB,OAAO,GACP;IAAE,EAAE,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,CAAA;CAAE,GAC/B,OAAO,CAAA;AAEX,KAAK,OAAO,CAAC,SAAS,IAAI;KACvB,CAAC,IAAI,OAAO,CAAC,MAAM,SAAS,EAAE,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,UAAU,CACxE,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,EACxB,UAAU,CAAC,CAAC,GAAG,MAAM,CAAC,CACvB;CACF,GAAG,UAAU,CAAC,SAAS,CAAC,GACvB,SAAS,CAAC,SAAS,CAAC,CAAA;AAItB;;;;;;;;GAQG;AACH,KAAK,eAAe,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAA;AACvF,KAAK,gBAAgB,GAAG,WAAW,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM,CAAA;AAE7D;;;;;;GAMG;AACH,UAAU,wBAAwB,CAAC,GAAG,SAAS,MAAM;IACnD,QAAQ,CAAC,yBAAyB,EAAE,kBAAkB,GAAG,kNAAkN,GAAG,kCAAkC,CAAA;CACjT;AAED,KAAK,aAAa,CAAC,GAAG,SAAS,MAAM,IAAI,GAAG,SAAS,gBAAgB,GACjE,IAAI,GACJ,SAAS,CAAC,GAAG,CAAC,SAAS,eAAe,GACpC,IAAI,GACJ,KAAK,CAAA;AAIX,KAAK,GAAG,CAAC,CAAC,EAAE,MAAM,SAAS,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC,CAAA;AAE5E,KAAK,OAAO,CACV,MAAM,SAAS,MAAM,EACrB,IAAI,SAAS,MAAM,IACjB,IAAI,SAAS,GAAG,MAAM,IAAI,MAAM,GAAG,IAAI,MAAM,EAAE,GAC/C,GAAG,GACH,IAAI,SAAS,GAAG,MAAM,IAAI,MAAM,GAAG,EAAE,GACnC,GAAG,GACH,KAAK,CAAA;AAEX,KAAK,QAAQ,CAAC,CAAC,EAAE,MAAM,SAAS,MAAM,IAAI;KACvC,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CACnD,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,CAAA;AAG1B,KAAK,UAAU,CAAC,CAAC,EAAE,MAAM,SAAS,MAAM,IAAI,OAAO,CACjD,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,EACnB,IAAI,MAAM,EAAE,GAAG,IAAI,MAAM,EAAE,GAAG,EAAE,CACjC,CAAA;AACD,KAAK,QAAQ,CAAC,CAAC,EAAE,MAAM,SAAS,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,IAAI,MAAM,EAAE,GAAG,IAAI,MAAM,EAAE,CAAC,CAAA;AAKnG,KAAK,SAAS,CAAC,CAAC,EAAE,MAAM,SAAS,MAAM,IAAI,MAAM,SAAS,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAA;AAEhG,KAAK,cAAc,CAAC,CAAC,EAAE,MAAM,SAAS,MAAM,IAAI;KAC7C,GAAG,IAAI,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,IAAI,GACpE,wBAAwB,CAAC,GAAG,CAAC,GAC7B,UAAU,CAAC,CAAC,EAAE,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC;CACtC,CAAA;AAED,KAAK,UAAU,CAAC,CAAC,EAAE,MAAM,SAAS,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAC7E,OAAO,GACP,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM,IAAI,EAAE,GAC1C,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,UAAU,CAAC,CAAC,EAAE,GAAG,MAAM,KAAK,IAAI,EAAE,CAAC,GACrE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM,IAAI,EAAE,GAC1C,CACE,MAAM,EAAE,MAAM,CAAC,IAAI,SAAS,EAAE,GAAG,GAAG,GAAG,IAAI,EAAE,MAAM,CAAC,KACjD,UAAU,CAAC,CAAC,EAAE,GAAG,MAAM,KAAK,IAAI,EAAE,CAAC,GACxC,OAAO,CAAA;AAEf,gEAAgE;AAChE,KAAK,aAAa,CAAC,CAAC,EAAE,MAAM,SAAS,MAAM,IAAI;KAC5C,CAAC,IAAI,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC,GAAG,KAAK;CACjF,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,CAAA;AAEjC;;;;;;;;;GASG;AACH,KAAK,eAAe,CAAC,CAAC,EAAE,MAAM,SAAS,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GACvF,OAAO,GACP,CAAC,CAAC,SAAS,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,CAAA;AAEvF,KAAK,UAAU,CAAC,CAAC,EAAE,MAAM,SAAS,MAAM,IAAI,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,GAC9D,cAAc,CAAC,CAAC,EAAE,MAAM,CAAC,GACzB,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,GACrB,eAAe,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;AAG5B,KAAK,SAAS,CAAC,CAAC,IAAI,GAAG,SAAS,MAAM,CAAC,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;CAAE,GAAG,OAAO,CAAA;AAEvF;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;AAEpE;;;;;;;;GAQG;AACH,MAAM,MAAM,MAAM,CAAC,GAAG,IAAI,kBAAkB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-responses.d.ts","sourceRoot":"","sources":["../src/validate-responses.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;
|
|
1
|
+
{"version":3,"file":"validate-responses.d.ts","sourceRoot":"","sources":["../src/validate-responses.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAE1C,wDAAwD;AACxD,UAAU,UAAU;IAClB,QAAQ,CAAC,WAAW,EAAE;QACpB,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAC9B;YAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;YAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;SAAE,GACpF,OAAO,CAAC;YACN,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG,SAAS,CAAA;YACtD,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;SACzB,CAAC,CAAA;KACP,CAAA;CACF;AAED,UAAU,SAAS;IACjB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,WAAW,GAAG;QAAE,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAA;KAAE,CAAC,GAAG,SAAS,CAAA;CACvF;AAED,UAAU,eAAe;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAA;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAA;CACvD;AAED,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAAA;CAC7C;AAED,mFAAmF;AACnF,MAAM,WAAW,mBAAmB;IAClC,MAAM,IAAI,aAAa,CAAC,mBAAmB,CAAC,CAAA;CAC7C;AAED;;;;GAIG;AACH,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,OAAO,EAAE,MAAM;CAI5B;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CA0C7E"}
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
* never drift from what the server itself does.
|
|
14
14
|
*/
|
|
15
15
|
import { Router } from "@nifrajs/core/router";
|
|
16
|
+
import { formatStandardIssues } from "@nifrajs/core/schema";
|
|
16
17
|
/**
|
|
17
18
|
* A response body that broke its route's declared contract. Thrown THROUGH the "never throws"
|
|
18
19
|
* client on purpose: this is a test assertion about the server's honesty, not a call outcome the
|
|
@@ -24,16 +25,6 @@ export class ResponseContractViolation extends Error {
|
|
|
24
25
|
this.name = "ResponseContractViolation";
|
|
25
26
|
}
|
|
26
27
|
}
|
|
27
|
-
function formatIssues(issues) {
|
|
28
|
-
return issues
|
|
29
|
-
.map((issue) => {
|
|
30
|
-
const path = (issue.path ?? [])
|
|
31
|
-
.map((seg) => String(typeof seg === "object" && seg !== null ? seg.key : seg))
|
|
32
|
-
.join(".");
|
|
33
|
-
return path === "" ? issue.message : `${path}: ${issue.message}`;
|
|
34
|
-
})
|
|
35
|
-
.join("; ");
|
|
36
|
-
}
|
|
37
28
|
/**
|
|
38
29
|
* Wrap the in-process bridge so every response is checked against its route's declared contract.
|
|
39
30
|
* Throws at wrap time when the app cannot enumerate routes - a misconfiguration, not a soft skip.
|
|
@@ -74,7 +65,7 @@ export function withResponseValidation(app, bridge) {
|
|
|
74
65
|
}
|
|
75
66
|
const result = await declared["~standard"].validate(body);
|
|
76
67
|
if (result.issues !== undefined) {
|
|
77
|
-
throw new ResponseContractViolation(`response contract violation: ${method} ${new URL(url).pathname} → ${status}: ${
|
|
68
|
+
throw new ResponseContractViolation(`response contract violation: ${method} ${new URL(url).pathname} → ${status}: ${formatStandardIssues(result.issues)}`);
|
|
78
69
|
}
|
|
79
70
|
return response;
|
|
80
71
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-responses.js","sourceRoot":"","sources":["../src/validate-responses.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAe,MAAM,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"validate-responses.js","sourceRoot":"","sources":["../src/validate-responses.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAe,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAoC3D;;;;GAIG;AACH,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAClD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAA;IACzC,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAY,EAAE,MAAe;IAClE,MAAM,QAAQ,GAAI,GAAoC,CAAC,MAAM,CAAA;IAC7D,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACb,2FAA2F,CAC5F,CAAA;IACH,CAAC;IACD,6FAA6F;IAC7F,MAAM,MAAM,GAAG,IAAI,MAAM,EAA+B,CAAA;IACxD,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAgB,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IAC9D,CAAC;IAED,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACzB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QACxC,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;QACpD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAA;QAC9B,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG;YAAE,OAAO,QAAQ,CAAA;QAE1E,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAA;QACxD,IAAI,CAAC,KAAK,CAAC,KAAK;YAAE,OAAO,QAAQ,CAAA;QACjC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAA;QAC5B,MAAM,QAAQ,GAAG,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,CAAA;QAC5F,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,QAAQ,CAAA;QAE3C,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAA;QAC9D,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAAE,OAAO,QAAQ,CAAA;QAC9D,kGAAkG;QAClG,IAAI,IAAa,CAAA;QACjB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAA;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,QAAQ,CAAA;QACjB,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QACzD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,IAAI,yBAAyB,CACjC,gCAAgC,MAAM,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,MAAM,MAAM,KAAK,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CACtH,CAAA;QACH,CAAC;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC,CAAA;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nifrajs/client",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.12.1",
|
|
4
4
|
"description": "Browser-safe, end-to-end-typed client for @nifrajs/core servers (Eden-style proxy).",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"bun",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"access": "public"
|
|
40
40
|
},
|
|
41
41
|
"peerDependencies": {
|
|
42
|
-
"@nifrajs/core": "^2.
|
|
42
|
+
"@nifrajs/core": "^2.12.1"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@nifrajs/core": "workspace:*",
|
package/src/client.ts
CHANGED
|
@@ -21,6 +21,15 @@ import type { Subscription, Treaty, TreatyFromRegistry } from "./treaty.ts"
|
|
|
21
21
|
import { ResponseContractViolation, withResponseValidation } from "./validate-responses.ts"
|
|
22
22
|
import { NO_SOCKET, openWebSocket } from "./ws.ts"
|
|
23
23
|
|
|
24
|
+
/**
|
|
25
|
+
* The RESERVED proxy keys, resolved before path segments (see `resolveSegment` and the `then`
|
|
26
|
+
* guard in `createProxy`): these seven verbs (case-insensitive) plus `subscribe`, `ws`, `index`,
|
|
27
|
+
* and `then` (exact). A route path containing a static segment spelling one is unreachable by
|
|
28
|
+
* PROPERTY ACCESS - `treaty.ts` rejects the access at compile time (ReservedSegmentCollision) and
|
|
29
|
+
* types the escape spelling instead: calling the parent node with the segment
|
|
30
|
+
* (`api.api("delete").post()`, the apply trap below) reaches it. `nifra check` reports the
|
|
31
|
+
* collision with the same guidance (NF-C018). Keep the three surfaces in lockstep.
|
|
32
|
+
*/
|
|
24
33
|
const HTTP_VERBS: ReadonlySet<string> = new Set([
|
|
25
34
|
"get",
|
|
26
35
|
"post",
|
|
@@ -215,13 +224,41 @@ export function client(
|
|
|
215
224
|
* `createWebApp({ api: inProcessClient(backend) })` can auto-mount the backend while forwarding the
|
|
216
225
|
* outer runtime's `env` and `waitUntil`.
|
|
217
226
|
*/
|
|
227
|
+
const utf8 = new TextEncoder()
|
|
228
|
+
|
|
229
|
+
/** Byte length of a body whose size is knowable without reading a stream; `undefined` otherwise
|
|
230
|
+
* (a `ReadableStream` or `FormData` body stays lengthless - multipart framing is the runtime's). */
|
|
231
|
+
function knownBodyLength(body: NonNullable<RequestInit["body"]>): number | undefined {
|
|
232
|
+
if (typeof body === "string") return utf8.encode(body).byteLength
|
|
233
|
+
if (body instanceof URLSearchParams) return utf8.encode(body.toString()).byteLength
|
|
234
|
+
if (body instanceof Blob) return body.size
|
|
235
|
+
if (body instanceof ArrayBuffer) return body.byteLength
|
|
236
|
+
if (ArrayBuffer.isView(body)) return body.byteLength
|
|
237
|
+
return undefined
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* A `Request` the way a network peer would deliver it: the `Request` constructor never derives
|
|
242
|
+
* `content-length`, so a synthetic in-process request with a body arrives LENGTHLESS - which a
|
|
243
|
+
* fail-closed length gate (e.g. `bodyLimit()`) correctly refuses with 411. Stamp the header
|
|
244
|
+
* whenever the body's size is knowable, so the in-process app sees what a socket would carry.
|
|
245
|
+
*/
|
|
246
|
+
function synthesizedRequest(url: string, init?: RequestInit): Request {
|
|
247
|
+
const request = new Request(url, init)
|
|
248
|
+
const body = init?.body
|
|
249
|
+
if (body === undefined || body === null || request.headers.has("content-length")) return request
|
|
250
|
+
const length = knownBodyLength(body)
|
|
251
|
+
if (length !== undefined) request.headers.set("content-length", String(length))
|
|
252
|
+
return request
|
|
253
|
+
}
|
|
254
|
+
|
|
218
255
|
export function inProcessClient<
|
|
219
256
|
App extends { fetch(request: Request): Response | Promise<Response> },
|
|
220
257
|
>(app: App, options?: InProcessClientOptions): InProcessClient<App> {
|
|
221
258
|
// The in-process bridge: the client speaks `fetch(url, init)` (the `FetchFn` shape) while the app's
|
|
222
259
|
// own `fetch` takes a `Request`. It is the proxy's per-call transport; the symbol-keyed mount below
|
|
223
260
|
// is the platform-aware auto-mount path.
|
|
224
|
-
const direct: FetchFn = (url, init) => Promise.resolve(app.fetch(
|
|
261
|
+
const direct: FetchFn = (url, init) => Promise.resolve(app.fetch(synthesizedRequest(url, init)))
|
|
225
262
|
const bridge = options?.validateResponses === true ? withResponseValidation(app, direct) : direct
|
|
226
263
|
// Mark the bridge as same-process: its response bodies are memory the app already holds, so
|
|
227
264
|
// `parseBody` may use the native `Response.text()` read (measured ~23x cheaper than the streaming
|
|
@@ -287,9 +324,10 @@ function createProxy(
|
|
|
287
324
|
return value
|
|
288
325
|
},
|
|
289
326
|
apply(_target, _thisArg, args) {
|
|
290
|
-
// A param call (`api.users({ id })`)
|
|
291
|
-
//
|
|
292
|
-
//
|
|
327
|
+
// A param call (`api.users({ id })`) or a collision-escape call (`api.api("delete")`, the
|
|
328
|
+
// typed spelling for reserved-named segments): append the single value, encoded - encoding
|
|
329
|
+
// "/" round-trips through the server's decode, so wildcards and params share this one path.
|
|
330
|
+
// The Treaty type constrains the argument, but the runtime must stay graceful: a no-arg call
|
|
293
331
|
// (`api.users()`) or empty object (`api.users({})`) must NOT throw - the client's contract is
|
|
294
332
|
// to never throw - nor synthesize an `"undefined"` path segment. With no value, fall through
|
|
295
333
|
// to the bare path, which the server resolves as an ordinary `{ ok: false }` (404) Result.
|
package/src/treaty.ts
CHANGED
|
@@ -139,6 +139,37 @@ type Methods<MethodMap> = {
|
|
|
139
139
|
} & SseMethods<MethodMap> &
|
|
140
140
|
WsMethods<MethodMap>
|
|
141
141
|
|
|
142
|
+
// --- reserved proxy keys ---
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Property names the runtime proxy intercepts BEFORE path resolution (`resolveSegment` and the
|
|
146
|
+
* `then` guard in `createProxy`, ./client.ts). A route whose path contains a static segment
|
|
147
|
+
* spelling one of these can never be reached by PROPERTY ACCESS: the access resolves to the
|
|
148
|
+
* reserved behavior (verb call, `.subscribe()`, `.ws()`, root `index`, thenable guard) instead of
|
|
149
|
+
* extending the path. The typed spelling for such a segment is a call on the parent node
|
|
150
|
+
* (`CollisionEscape` below). Verbs are intercepted case-insensitively; the rest match exactly.
|
|
151
|
+
* Kept in lockstep with the runtime's `HTTP_VERBS` set.
|
|
152
|
+
*/
|
|
153
|
+
type ReservedVerbKey = "get" | "post" | "put" | "patch" | "delete" | "head" | "options"
|
|
154
|
+
type ReservedExactKey = "subscribe" | "ws" | "index" | "then"
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* What a reserved-named segment resolves to instead of a route node, so the collision is a
|
|
158
|
+
* compile error whose message reads out the fix - not a runtime `TypeError` on a path the
|
|
159
|
+
* type system claimed was fine. The typed spelling for the same route is a CALL on the parent
|
|
160
|
+
* node (see `CollisionEscape`); `nifra check` reports the collision at the route definition
|
|
161
|
+
* (NF-C018) with the same guidance.
|
|
162
|
+
*/
|
|
163
|
+
interface ReservedSegmentCollision<Seg extends string> {
|
|
164
|
+
readonly "~nifra-reserved-segment": `route segment '${Seg}' collides with a reserved client proxy key (get/post/put/patch/delete/head/options/subscribe/ws/index/then) and cannot be reached by property access - call the parent node with the segment instead, parent("${Seg}").verb(), or rename the segment`
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
type IsReservedSeg<Seg extends string> = Seg extends ReservedExactKey
|
|
168
|
+
? true
|
|
169
|
+
: Lowercase<Seg> extends ReservedVerbKey
|
|
170
|
+
? true
|
|
171
|
+
: false
|
|
172
|
+
|
|
142
173
|
// --- path-tree construction over the registry ---
|
|
143
174
|
|
|
144
175
|
type Sub<R, Prefix extends string> = Extract<keyof R, `${Prefix}/${string}`>
|
|
@@ -169,7 +200,9 @@ type ParamSeg<R, Prefix extends string> = Extract<NextSegs<R, Prefix>, `:${strin
|
|
|
169
200
|
type MethodsAt<R, Prefix extends string> = Prefix extends keyof R ? Methods<R[Prefix]> : unknown
|
|
170
201
|
|
|
171
202
|
type StaticChildren<R, Prefix extends string> = {
|
|
172
|
-
[Seg in StaticSegs<R, Prefix> & string]:
|
|
203
|
+
[Seg in StaticSegs<R, Prefix> & string]: IsReservedSeg<Seg> extends true
|
|
204
|
+
? ReservedSegmentCollision<Seg>
|
|
205
|
+
: TreatyNode<R, `${Prefix}/${Seg}`>
|
|
173
206
|
}
|
|
174
207
|
|
|
175
208
|
type ParamChild<R, Prefix extends string> = [ParamSeg<R, Prefix>] extends [never]
|
|
@@ -182,9 +215,29 @@ type ParamChild<R, Prefix extends string> = [ParamSeg<R, Prefix>] extends [never
|
|
|
182
215
|
) => TreatyNode<R, `${Prefix}/*${Name}`>
|
|
183
216
|
: unknown
|
|
184
217
|
|
|
218
|
+
/** The reserved-named child segments under `Prefix`, if any. */
|
|
219
|
+
type CollidingSegs<R, Prefix extends string> = {
|
|
220
|
+
[S in StaticSegs<R, Prefix> & string]: IsReservedSeg<S> extends true ? S : never
|
|
221
|
+
}[StaticSegs<R, Prefix> & string]
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* The typed spelling for reserved-named segments. Property access can never reach them (the
|
|
225
|
+
* proxy resolves the reserved key first), but the runtime's apply trap has always accepted a
|
|
226
|
+
* scalar argument as one literal path segment - the same call params use. This types that call
|
|
227
|
+
* for EXACTLY the colliding segments, so `api.api("delete").post()` sends `POST /api/delete`
|
|
228
|
+
* while non-colliding segments keep dot access as their only spelling. Placed after `ParamChild`
|
|
229
|
+
* in the node intersection, so on a node with both, an object argument resolves to the param
|
|
230
|
+
* signature and a string literal falls through to this one - matching the runtime, which treats
|
|
231
|
+
* an object as a param bag and a scalar as the segment itself.
|
|
232
|
+
*/
|
|
233
|
+
type CollisionEscape<R, Prefix extends string> = [CollidingSegs<R, Prefix>] extends [never]
|
|
234
|
+
? unknown
|
|
235
|
+
: <S extends CollidingSegs<R, Prefix>>(segment: S) => TreatyNode<R, `${Prefix}/${S}`>
|
|
236
|
+
|
|
185
237
|
type TreatyNode<R, Prefix extends string> = MethodsAt<R, Prefix> &
|
|
186
238
|
StaticChildren<R, Prefix> &
|
|
187
|
-
ParamChild<R, Prefix>
|
|
239
|
+
ParamChild<R, Prefix> &
|
|
240
|
+
CollisionEscape<R, Prefix>
|
|
188
241
|
|
|
189
242
|
// The root path "/" is reached as `api.index.get()` (Eden convention).
|
|
190
243
|
type RootIndex<R> = "/" extends keyof R ? { readonly index: Methods<R["/"]> } : unknown
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
16
|
import { type Method, Router } from "@nifrajs/core/router"
|
|
17
|
+
import { formatStandardIssues } from "@nifrajs/core/schema"
|
|
17
18
|
import type { FetchFn } from "./client.ts"
|
|
18
19
|
|
|
19
20
|
/** The slice of a Standard Schema this wrapper runs. */
|
|
@@ -61,17 +62,6 @@ export class ResponseContractViolation extends Error {
|
|
|
61
62
|
}
|
|
62
63
|
}
|
|
63
64
|
|
|
64
|
-
function formatIssues(issues: ReadonlyArray<IssueLike>): string {
|
|
65
|
-
return issues
|
|
66
|
-
.map((issue) => {
|
|
67
|
-
const path = (issue.path ?? [])
|
|
68
|
-
.map((seg) => String(typeof seg === "object" && seg !== null ? seg.key : seg))
|
|
69
|
-
.join(".")
|
|
70
|
-
return path === "" ? issue.message : `${path}: ${issue.message}`
|
|
71
|
-
})
|
|
72
|
-
.join("; ")
|
|
73
|
-
}
|
|
74
|
-
|
|
75
65
|
/**
|
|
76
66
|
* Wrap the in-process bridge so every response is checked against its route's declared contract.
|
|
77
67
|
* Throws at wrap time when the app cannot enumerate routes - a misconfiguration, not a soft skip.
|
|
@@ -113,7 +103,7 @@ export function withResponseValidation(app: unknown, bridge: FetchFn): FetchFn {
|
|
|
113
103
|
const result = await declared["~standard"].validate(body)
|
|
114
104
|
if (result.issues !== undefined) {
|
|
115
105
|
throw new ResponseContractViolation(
|
|
116
|
-
`response contract violation: ${method} ${new URL(url).pathname} → ${status}: ${
|
|
106
|
+
`response contract violation: ${method} ${new URL(url).pathname} → ${status}: ${formatStandardIssues(result.issues)}`,
|
|
117
107
|
)
|
|
118
108
|
}
|
|
119
109
|
return response
|