@orpc/server 2.0.0-beta.4 → 2.0.0-beta.41
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/README.md +97 -94
- package/dist/adapters/aws-lambda/index.d.mts +50 -0
- package/dist/adapters/aws-lambda/index.d.ts +50 -0
- package/dist/adapters/aws-lambda/index.mjs +39 -0
- package/dist/adapters/crossws/index.d.mts +21 -12
- package/dist/adapters/crossws/index.d.ts +21 -12
- package/dist/adapters/crossws/index.mjs +14 -10
- package/dist/adapters/fastify/index.d.mts +42 -0
- package/dist/adapters/fastify/index.d.ts +42 -0
- package/dist/adapters/fastify/index.mjs +39 -0
- package/dist/adapters/fetch/index.d.mts +21 -114
- package/dist/adapters/fetch/index.d.ts +21 -114
- package/dist/adapters/fetch/index.mjs +20 -182
- package/dist/adapters/message-port/index.d.mts +23 -20
- package/dist/adapters/message-port/index.d.ts +23 -20
- package/dist/adapters/message-port/index.mjs +31 -34
- package/dist/adapters/node/index.d.mts +19 -96
- package/dist/adapters/node/index.d.ts +19 -96
- package/dist/adapters/node/index.mjs +19 -157
- package/dist/adapters/standard/index.d.mts +91 -17
- package/dist/adapters/standard/index.d.ts +91 -17
- package/dist/adapters/standard/index.mjs +4 -4
- package/dist/adapters/standard-peer/index.d.mts +6 -11
- package/dist/adapters/standard-peer/index.d.ts +6 -11
- package/dist/adapters/standard-peer/index.mjs +10 -2
- package/dist/adapters/websocket/index.d.mts +45 -29
- package/dist/adapters/websocket/index.d.ts +45 -29
- package/dist/adapters/websocket/index.mjs +39 -28
- package/dist/extensions/callable.d.mts +5 -5
- package/dist/extensions/callable.d.ts +5 -5
- package/dist/extensions/callable.mjs +2 -2
- package/dist/helpers/index.d.mts +23 -6
- package/dist/helpers/index.d.ts +23 -6
- package/dist/helpers/index.mjs +13 -5
- package/dist/index.d.mts +332 -37
- package/dist/index.d.ts +332 -37
- package/dist/index.mjs +141 -65
- package/dist/plugins/index.d.mts +255 -31
- package/dist/plugins/index.d.ts +255 -31
- package/dist/plugins/index.mjs +559 -38
- package/dist/shared/server.1ExWFMze.mjs +69 -0
- package/dist/shared/{server.CjOb6ItT.mjs → server.AVQWL-DI.mjs} +1 -1
- package/dist/shared/{server.BL22TloH.d.mts → server.BEdOJs6S.d.mts} +41 -62
- package/dist/shared/{server.BL22TloH.d.ts → server.BEdOJs6S.d.ts} +41 -62
- package/dist/shared/{server.GDpX6Df8.mjs → server.BFEVk-EI.mjs} +164 -70
- package/dist/shared/{server.BwHnWUuN.mjs → server.BgvqVW_v.mjs} +25 -20
- package/dist/shared/server.BllfVJLm.d.mts +34 -0
- package/dist/shared/server.COfbQ0D8.d.ts +34 -0
- package/dist/shared/{server.DBANIheG.d.ts → server.CVO0hWyj.d.mts} +24 -13
- package/dist/shared/{server.BsNNjG5J.d.mts → server.DD1roZl9.d.mts} +32 -20
- package/dist/shared/server.DFEuNUt4.d.ts +14 -0
- package/dist/shared/{server.DJIkub_t.d.mts → server.DJNkZPfD.d.ts} +24 -13
- package/dist/shared/{server.Pa0F03f_.d.ts → server.DZeVx8K9.d.ts} +32 -20
- package/dist/shared/{server.CrlKQucM.mjs → server.FEqy7Hrj.mjs} +25 -53
- package/dist/shared/server.UG_xdTub.d.mts +14 -0
- package/package.json +48 -14
- package/dist/shared/server.CX4vUnDk.mjs +0 -11
- package/dist/shared/server.Cj5lgPuG.d.mts +0 -66
- package/dist/shared/server.D_QauotT.mjs +0 -30
- package/dist/shared/server.d_2NS3g5.d.ts +0 -66
package/dist/index.mjs
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { mergeErrorMap, resolveMetaPlugins, getHiddenMetaPlugins, ProcedureContract } from '@orpc/contract';
|
|
2
|
-
export { ValidationError, defineMeta, eventIterator, reconcileORPCError, type } from '@orpc/contract';
|
|
3
|
-
import { toArray, bindMethods,
|
|
4
|
-
export { AsyncIteratorClass, asyncIteratorToStream as eventIteratorToStream, asyncIteratorToUnproxiedDataStream as eventIteratorToUnproxiedDataStream, onError, onFinish, onStart, onSuccess,
|
|
5
|
-
import { L as Lazy, P as Procedure, c as createProcedureClient } from './shared/server.
|
|
6
|
-
export {
|
|
7
|
-
import { D as DecoratedProcedure } from './shared/server.
|
|
8
|
-
import { b as augmentRouter, d as augmentImplementedRouter, e as withHiddenRouterContract, f as createGuardedProcedureLazy, g as getRouter } from './shared/server.
|
|
9
|
-
export { a as DEFAULT_ERROR_STATUS, D as DEFAULT_SUCCESS_STATUS, h as call, c as createContractProcedure, i as getHiddenRouterContract, u as unlazyRouter, j as walkProcedureContractsAsync, w as walkProcedureContractsSync } from './shared/server.
|
|
2
|
+
export { ValidationError, asyncIteratorObject, defineMeta, error, eventIterator, reconcileORPCError, type } from '@orpc/contract';
|
|
3
|
+
import { toArray, bindMethods, isTypescriptObject, resolveMaybeOptionalOptions } from '@orpc/shared';
|
|
4
|
+
export { AsyncIteratorClass, asyncIteratorToStream, asyncIteratorToUnproxiedDataStream, asyncIteratorToStream as eventIteratorToStream, asyncIteratorToUnproxiedDataStream as eventIteratorToUnproxiedDataStream, onAsyncIteratorObjectError, onError, onFinish, onReadableStreamError, onStart, onSuccess, streamToAsyncIteratorObject, streamToAsyncIteratorObject as streamToEventIterator } from '@orpc/shared';
|
|
5
|
+
import { L as Lazy, P as Procedure, c as createProcedureClient } from './shared/server.FEqy7Hrj.mjs';
|
|
6
|
+
export { u as unlazy } from './shared/server.FEqy7Hrj.mjs';
|
|
7
|
+
import { D as DecoratedProcedure } from './shared/server.AVQWL-DI.mjs';
|
|
8
|
+
import { b as augmentRouter, d as augmentImplementedRouter, e as withHiddenRouterContract, f as createGuardedProcedureLazy, g as getRouter } from './shared/server.BgvqVW_v.mjs';
|
|
9
|
+
export { a as DEFAULT_ERROR_STATUS, D as DEFAULT_SUCCESS_STATUS, h as call, c as createContractProcedure, i as getHiddenRouterContract, u as unlazyRouter, j as walkProcedureContractsAsync, w as walkProcedureContractsSync } from './shared/server.BgvqVW_v.mjs';
|
|
10
10
|
import { RECURSIVE_CLIENT_UNWRAP_KEYS } from '@orpc/client';
|
|
11
|
-
export { COMMON_ERROR_STATUS_MAP, ORPCError, RPCJsonSerializer, RPCSerializer, cloneORPCError, isDefinedError,
|
|
12
|
-
export { ErrorEvent, getEventMeta, unwrapEvent, withEventMeta } from '@
|
|
11
|
+
export { COMMON_ERROR_STATUS_MAP, ORPCError, RPCJsonSerializer, RPCSerializer, cloneORPCError, isDefinedError, safe, toORPCError } from '@orpc/client';
|
|
12
|
+
export { ErrorEvent, getEventMeta, unwrapEvent, withEventMeta } from '@standard-server/core';
|
|
13
13
|
|
|
14
14
|
function decorateMiddleware(middleware) {
|
|
15
15
|
const decorated = ((...args) => middleware(...args));
|
|
@@ -23,9 +23,9 @@ function decorateMiddleware(middleware) {
|
|
|
23
23
|
return middleware(opts, adapt(input), ...args);
|
|
24
24
|
}
|
|
25
25
|
);
|
|
26
|
-
mapped["~orpc"] =
|
|
26
|
+
mapped["~orpc"] = decorated["~orpc"];
|
|
27
27
|
Object.defineProperty(mapped, "name", {
|
|
28
|
-
value:
|
|
28
|
+
value: decorated.name
|
|
29
29
|
});
|
|
30
30
|
return mapped;
|
|
31
31
|
};
|
|
@@ -72,12 +72,12 @@ function decorateMiddleware(middleware) {
|
|
|
72
72
|
...decorated["~orpc"],
|
|
73
73
|
errorMap: mergeErrorMap(usedMiddleware["~orpc"]?.errorMap, decorated["~orpc"]?.errorMap),
|
|
74
74
|
metaPlugins: [
|
|
75
|
-
...toArray(
|
|
75
|
+
...toArray(decorated["~orpc"]?.metaPlugins),
|
|
76
76
|
...toArray(usedMiddleware["~orpc"]?.metaPlugins)
|
|
77
77
|
]
|
|
78
78
|
};
|
|
79
79
|
Object.defineProperty(merged, "name", {
|
|
80
|
-
value: `${
|
|
80
|
+
value: `${decorated.name} + ${usedMiddleware.name}`
|
|
81
81
|
});
|
|
82
82
|
return merged;
|
|
83
83
|
};
|
|
@@ -86,9 +86,19 @@ function decorateMiddleware(middleware) {
|
|
|
86
86
|
|
|
87
87
|
class Builder {
|
|
88
88
|
"~orpc";
|
|
89
|
+
/**
|
|
90
|
+
* Private constructor to prevent direct instantiation.
|
|
91
|
+
* Use the static `create` method to initialize a new instance with a safe initial definition.
|
|
92
|
+
*/
|
|
89
93
|
constructor(definition) {
|
|
90
94
|
this["~orpc"] = definition;
|
|
91
95
|
}
|
|
96
|
+
/**
|
|
97
|
+
* Creates a fresh builder with an empty definition.
|
|
98
|
+
* Prefer the exported `os` instance over calling this directly.
|
|
99
|
+
*
|
|
100
|
+
* @see {@link https://orpc.dev/docs/procedure | Procedure}
|
|
101
|
+
*/
|
|
92
102
|
static create() {
|
|
93
103
|
return new Builder({
|
|
94
104
|
errorMap: {},
|
|
@@ -96,9 +106,32 @@ class Builder {
|
|
|
96
106
|
orderedMiddlewares: []
|
|
97
107
|
});
|
|
98
108
|
}
|
|
109
|
+
/**
|
|
110
|
+
* Declares the initial context type that must be provided when executing
|
|
111
|
+
* procedures built from this builder.
|
|
112
|
+
*
|
|
113
|
+
* @see {@link https://orpc.dev/docs/context#initial-context | Context - Initial Context}
|
|
114
|
+
*/
|
|
99
115
|
$context() {
|
|
100
116
|
return this;
|
|
101
117
|
}
|
|
118
|
+
/**
|
|
119
|
+
* Overrides the procedure configuration, such as disabling runtime
|
|
120
|
+
* input/output validation.
|
|
121
|
+
*
|
|
122
|
+
* @see {@link https://orpc.dev/docs/recipes/validation-customization | Validation Customization}
|
|
123
|
+
*/
|
|
124
|
+
$config(config) {
|
|
125
|
+
return new Builder({
|
|
126
|
+
...this["~orpc"],
|
|
127
|
+
...config
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Applies metadata plugins to procedures built from this builder.
|
|
132
|
+
*
|
|
133
|
+
* @see {@link https://orpc.dev/docs/metadata | Metadata}
|
|
134
|
+
*/
|
|
102
135
|
meta(...plugins) {
|
|
103
136
|
const [meta, metaPlugins] = resolveMetaPlugins(
|
|
104
137
|
this["~orpc"].meta,
|
|
@@ -111,6 +144,12 @@ class Builder {
|
|
|
111
144
|
metaPlugins
|
|
112
145
|
});
|
|
113
146
|
}
|
|
147
|
+
/**
|
|
148
|
+
* Defines typesafe errors that procedures built from this builder can throw
|
|
149
|
+
* via the `errors` utility in handlers and middleware.
|
|
150
|
+
*
|
|
151
|
+
* @see {@link https://orpc.dev/docs/error-handling#typesafe-errors | Error Handling - Typesafe Errors}
|
|
152
|
+
*/
|
|
114
153
|
errors(errors) {
|
|
115
154
|
let builder = new Builder({
|
|
116
155
|
...this["~orpc"],
|
|
@@ -122,6 +161,12 @@ class Builder {
|
|
|
122
161
|
}
|
|
123
162
|
return builder;
|
|
124
163
|
}
|
|
164
|
+
/**
|
|
165
|
+
* Applies a middleware that runs before the handler of every procedure
|
|
166
|
+
* built from this builder.
|
|
167
|
+
*
|
|
168
|
+
* @see {@link https://orpc.dev/docs/middleware | Middleware}
|
|
169
|
+
*/
|
|
125
170
|
use(middleware) {
|
|
126
171
|
let builder = new Builder({
|
|
127
172
|
...this["~orpc"],
|
|
@@ -137,6 +182,12 @@ class Builder {
|
|
|
137
182
|
}
|
|
138
183
|
return builder;
|
|
139
184
|
}
|
|
185
|
+
/**
|
|
186
|
+
* Creates a standalone middleware that can be composed and applied to any
|
|
187
|
+
* compatible builder or procedure with `.use`.
|
|
188
|
+
*
|
|
189
|
+
* @see {@link https://orpc.dev/docs/middleware | Middleware}
|
|
190
|
+
*/
|
|
140
191
|
middleware(middleware) {
|
|
141
192
|
const allMiddlewares = [
|
|
142
193
|
...this["~orpc"].orderedMiddlewares.map(({ middleware: middleware2 }) => middleware2),
|
|
@@ -156,6 +207,11 @@ class Builder {
|
|
|
156
207
|
};
|
|
157
208
|
return current;
|
|
158
209
|
}
|
|
210
|
+
/**
|
|
211
|
+
* Defines the input schema used to validate and type the procedure input.
|
|
212
|
+
*
|
|
213
|
+
* @see {@link https://orpc.dev/docs/procedure#inputoutput-validation | Procedure - Input/Output Validation}
|
|
214
|
+
*/
|
|
159
215
|
input(schema) {
|
|
160
216
|
let builder = new Builder({
|
|
161
217
|
...this["~orpc"],
|
|
@@ -167,6 +223,11 @@ class Builder {
|
|
|
167
223
|
}
|
|
168
224
|
return builder;
|
|
169
225
|
}
|
|
226
|
+
/**
|
|
227
|
+
* Defines the output schema used to validate and type the procedure output.
|
|
228
|
+
*
|
|
229
|
+
* @see {@link https://orpc.dev/docs/procedure#inputoutput-validation | Procedure - Input/Output Validation}
|
|
230
|
+
*/
|
|
170
231
|
output(schema) {
|
|
171
232
|
let builder = new Builder({
|
|
172
233
|
...this["~orpc"],
|
|
@@ -178,6 +239,12 @@ class Builder {
|
|
|
178
239
|
}
|
|
179
240
|
return builder;
|
|
180
241
|
}
|
|
242
|
+
/**
|
|
243
|
+
* Defines the function that implements the procedure and completes the
|
|
244
|
+
* chain, returning a callable procedure.
|
|
245
|
+
*
|
|
246
|
+
* @see {@link https://orpc.dev/docs/procedure | Procedure}
|
|
247
|
+
*/
|
|
181
248
|
handler(handler) {
|
|
182
249
|
let procedure = new DecoratedProcedure({
|
|
183
250
|
...this["~orpc"],
|
|
@@ -189,14 +256,24 @@ class Builder {
|
|
|
189
256
|
}
|
|
190
257
|
return procedure;
|
|
191
258
|
}
|
|
259
|
+
/**
|
|
260
|
+
* Applies the builder's middleware, errors, and metadata to every procedure
|
|
261
|
+
* in the given router.
|
|
262
|
+
*
|
|
263
|
+
* @see {@link https://orpc.dev/docs/router#extending-router | Router - Extending Router}
|
|
264
|
+
*/
|
|
192
265
|
router(router) {
|
|
193
266
|
return augmentRouter(router, {
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
metaPlugins: this["~orpc"].metaPlugins,
|
|
197
|
-
errorMap: this["~orpc"].errorMap
|
|
267
|
+
...this["~orpc"],
|
|
268
|
+
middlewares: this["~orpc"].orderedMiddlewares.map(({ middleware }) => middleware)
|
|
198
269
|
});
|
|
199
270
|
}
|
|
271
|
+
/**
|
|
272
|
+
* Like `.router`, but loads the router lazily on first access, which helps
|
|
273
|
+
* reduce startup time for large applications.
|
|
274
|
+
*
|
|
275
|
+
* @see {@link https://orpc.dev/docs/router#lazy-router | Router - Lazy Router}
|
|
276
|
+
*/
|
|
200
277
|
lazy(loader) {
|
|
201
278
|
return new Lazy({
|
|
202
279
|
loader: async () => {
|
|
@@ -230,15 +307,7 @@ class ProcedureImplementer {
|
|
|
230
307
|
"handler"(handler) {
|
|
231
308
|
return new ImplementedProcedure({
|
|
232
309
|
...this["~orpc"],
|
|
233
|
-
handler
|
|
234
|
-
/**
|
|
235
|
-
* When enabled, errors returned (not thrown) by the handler are passed through as-is,
|
|
236
|
-
* rather than being transformed into inferrable errors.
|
|
237
|
-
*
|
|
238
|
-
* This is intended for the contract-first approach, where the procedure adheres to an
|
|
239
|
-
* external contract and returned errors should not affect the inferred contract types.
|
|
240
|
-
*/
|
|
241
|
-
opaqueReturnedErrors: true
|
|
310
|
+
handler
|
|
242
311
|
});
|
|
243
312
|
}
|
|
244
313
|
}
|
|
@@ -256,15 +325,20 @@ class ImplementedProcedure extends Procedure {
|
|
|
256
325
|
}
|
|
257
326
|
|
|
258
327
|
class SharedRouterImplementer {
|
|
259
|
-
constructor(contract, middlewares) {
|
|
328
|
+
constructor(contract, config, middlewares) {
|
|
260
329
|
this.contract = contract;
|
|
330
|
+
this.config = config;
|
|
261
331
|
this.middlewares = middlewares;
|
|
262
332
|
}
|
|
263
|
-
static create(contract, middlewares = []) {
|
|
264
|
-
return new SharedRouterImplementer(
|
|
333
|
+
static create(contract, config, middlewares = []) {
|
|
334
|
+
return new SharedRouterImplementer(
|
|
335
|
+
contract,
|
|
336
|
+
config,
|
|
337
|
+
middlewares
|
|
338
|
+
);
|
|
265
339
|
}
|
|
266
340
|
use(middleware) {
|
|
267
|
-
return createRouterImplementerInternal(this.contract, [...this.middlewares, middleware]);
|
|
341
|
+
return createRouterImplementerInternal(this.contract, this.config, [...this.middlewares, middleware]);
|
|
268
342
|
}
|
|
269
343
|
middleware(middleware) {
|
|
270
344
|
const allMiddlewares = [
|
|
@@ -280,49 +354,44 @@ class SharedRouterImplementer {
|
|
|
280
354
|
router(router) {
|
|
281
355
|
if (this.middlewares.length) {
|
|
282
356
|
router = augmentImplementedRouter(router, {
|
|
357
|
+
...this.config,
|
|
283
358
|
middlewares: this.middlewares
|
|
284
359
|
});
|
|
285
360
|
}
|
|
286
361
|
return withHiddenRouterContract(router, this.contract);
|
|
287
362
|
}
|
|
288
363
|
lazy(loader) {
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
})
|
|
297
|
-
};
|
|
298
|
-
};
|
|
299
|
-
}
|
|
300
|
-
return new Lazy({ loader, meta: {} });
|
|
364
|
+
return new Lazy({
|
|
365
|
+
loader: async () => {
|
|
366
|
+
const { default: router } = await loader();
|
|
367
|
+
return { default: this.router(router) };
|
|
368
|
+
},
|
|
369
|
+
meta: {}
|
|
370
|
+
});
|
|
301
371
|
}
|
|
302
372
|
}
|
|
303
|
-
function createRouterImplementer(contract) {
|
|
304
|
-
return createRouterImplementerInternal(contract, []);
|
|
373
|
+
function createRouterImplementer(contract, config) {
|
|
374
|
+
return createRouterImplementerInternal(contract, config, []);
|
|
305
375
|
}
|
|
306
|
-
function createRouterImplementerInternal(contract, middlewares) {
|
|
376
|
+
function createRouterImplementerInternal(contract, config, middlewares) {
|
|
307
377
|
if (contract instanceof ProcedureContract) {
|
|
308
378
|
return new ProcedureImplementer({
|
|
379
|
+
...config,
|
|
309
380
|
...contract["~orpc"],
|
|
310
381
|
orderedMiddlewares: middlewares.map((middleware) => ({ middleware }))
|
|
311
382
|
});
|
|
312
383
|
}
|
|
313
384
|
const implementer = {};
|
|
314
|
-
for (const key
|
|
315
|
-
|
|
316
|
-
implementer[key] = createRouterImplementerInternal(child, middlewares);
|
|
385
|
+
for (const [key, child] of Object.entries(contract)) {
|
|
386
|
+
implementer[key] = createRouterImplementerInternal(child, config, middlewares);
|
|
317
387
|
}
|
|
318
|
-
const shared = bindMethods(SharedRouterImplementer.create(contract, middlewares));
|
|
319
|
-
for (const key
|
|
320
|
-
const method = shared[key];
|
|
388
|
+
const shared = bindMethods(SharedRouterImplementer.create(contract, config, middlewares));
|
|
389
|
+
for (const [key, method] of Object.entries(shared)) {
|
|
321
390
|
if (key in implementer) {
|
|
322
391
|
const child = implementer[key];
|
|
323
392
|
implementer[key] = new Proxy(method, {
|
|
324
393
|
get(_, p) {
|
|
325
|
-
return
|
|
394
|
+
return Reflect.get(child, p);
|
|
326
395
|
}
|
|
327
396
|
});
|
|
328
397
|
} else {
|
|
@@ -332,22 +401,24 @@ function createRouterImplementerInternal(contract, middlewares) {
|
|
|
332
401
|
return implementer;
|
|
333
402
|
}
|
|
334
403
|
|
|
335
|
-
function implement(contract) {
|
|
336
|
-
const routerImplementer = createRouterImplementer(contract);
|
|
404
|
+
function implement(contract, config = {}) {
|
|
405
|
+
const routerImplementer = createRouterImplementer(contract, config);
|
|
337
406
|
const implementer = new Proxy(routerImplementer, {
|
|
338
407
|
get(_, p) {
|
|
339
408
|
let method;
|
|
340
409
|
if (p === "$context") {
|
|
341
410
|
method = () => implementer;
|
|
411
|
+
} else if (p === "$config") {
|
|
412
|
+
method = (incoming) => implement(contract, { ...config, ...incoming });
|
|
342
413
|
}
|
|
343
|
-
const value =
|
|
414
|
+
const value = Reflect.get(routerImplementer, p);
|
|
344
415
|
if (method) {
|
|
345
416
|
if (!isTypescriptObject(value)) {
|
|
346
417
|
return method;
|
|
347
418
|
}
|
|
348
419
|
return new Proxy(method, {
|
|
349
420
|
get(_2, p2) {
|
|
350
|
-
return
|
|
421
|
+
return Reflect.get(value, p2);
|
|
351
422
|
}
|
|
352
423
|
});
|
|
353
424
|
}
|
|
@@ -363,19 +434,24 @@ function createRouterClient(router, ...rest) {
|
|
|
363
434
|
return createProcedureClient(router, options);
|
|
364
435
|
}
|
|
365
436
|
const procedureCaller = router instanceof Lazy ? createProcedureClient(createGuardedProcedureLazy(router), options) : {};
|
|
437
|
+
const cache = /* @__PURE__ */ new Map();
|
|
366
438
|
const recursive = new Proxy(procedureCaller, {
|
|
367
439
|
get(target, key) {
|
|
368
440
|
if (typeof key !== "string" || router instanceof Lazy && RECURSIVE_CLIENT_UNWRAP_KEYS.has(key)) {
|
|
369
|
-
return
|
|
441
|
+
return Reflect.get(target, key);
|
|
370
442
|
}
|
|
371
|
-
|
|
372
|
-
if (
|
|
373
|
-
|
|
443
|
+
let nextClient = cache.get(key);
|
|
444
|
+
if (nextClient === void 0) {
|
|
445
|
+
const next = getRouter(router, [key]);
|
|
446
|
+
if (!next) {
|
|
447
|
+
return Reflect.get(target, key);
|
|
448
|
+
}
|
|
449
|
+
nextClient = createRouterClient(next, {
|
|
450
|
+
...options,
|
|
451
|
+
path: [...toArray(options.path), key]
|
|
452
|
+
});
|
|
453
|
+
cache.set(key, nextClient);
|
|
374
454
|
}
|
|
375
|
-
const nextClient = createRouterClient(next, {
|
|
376
|
-
...options,
|
|
377
|
-
path: [...toArray(options.path), key]
|
|
378
|
-
});
|
|
379
455
|
return nextClient;
|
|
380
456
|
}
|
|
381
457
|
});
|