@orpc/server 0.0.0-next.e9dc36e → 0.0.0-next.ed15210

Sign up to get free protection for your applications and to get access to all the features.
Files changed (103) hide show
  1. package/dist/chunk-6YJ5NGUE.js +301 -0
  2. package/dist/chunk-WUOGVGWG.js +1 -0
  3. package/dist/chunk-XHFINNVL.js +217 -0
  4. package/dist/fetch.js +12 -678
  5. package/dist/hono.js +30 -0
  6. package/dist/index.js +918 -269
  7. package/dist/next.js +36 -0
  8. package/dist/node.js +87 -0
  9. package/dist/src/adapters/fetch/index.d.ts +6 -0
  10. package/dist/src/adapters/fetch/orpc-handler.d.ts +20 -0
  11. package/dist/src/adapters/fetch/orpc-payload-codec.d.ts +16 -0
  12. package/dist/src/adapters/fetch/orpc-procedure-matcher.d.ts +12 -0
  13. package/dist/src/adapters/fetch/super-json.d.ts +12 -0
  14. package/dist/src/adapters/fetch/types.d.ts +21 -0
  15. package/dist/src/adapters/hono/index.d.ts +3 -0
  16. package/dist/src/adapters/hono/middleware.d.ts +12 -0
  17. package/dist/src/adapters/next/index.d.ts +3 -0
  18. package/dist/src/adapters/next/serve.d.ts +19 -0
  19. package/dist/src/adapters/node/index.d.ts +5 -0
  20. package/dist/src/adapters/node/orpc-handler.d.ts +12 -0
  21. package/dist/src/adapters/node/request-listener.d.ts +28 -0
  22. package/dist/src/adapters/node/types.d.ts +22 -0
  23. package/dist/src/builder-with-errors-middlewares.d.ts +49 -0
  24. package/dist/src/builder-with-errors.d.ts +49 -0
  25. package/dist/src/builder-with-middlewares.d.ts +49 -0
  26. package/dist/src/builder.d.ts +42 -45
  27. package/dist/src/config.d.ts +6 -0
  28. package/dist/src/context.d.ts +10 -0
  29. package/dist/src/error.d.ts +10 -0
  30. package/dist/src/hidden.d.ts +4 -0
  31. package/dist/src/implementer-chainable.d.ts +16 -0
  32. package/dist/src/index.d.ts +16 -5
  33. package/dist/src/lazy-decorated.d.ts +8 -0
  34. package/dist/src/lazy-utils.d.ts +4 -0
  35. package/dist/src/lazy.d.ts +18 -0
  36. package/dist/src/middleware-decorated.d.ts +9 -0
  37. package/dist/src/middleware.d.ts +30 -17
  38. package/dist/src/procedure-builder-with-input.d.ts +35 -0
  39. package/dist/src/procedure-builder-with-output.d.ts +34 -0
  40. package/dist/src/procedure-builder.d.ts +26 -29
  41. package/dist/src/procedure-client.d.ts +21 -0
  42. package/dist/src/procedure-decorated.d.ts +25 -0
  43. package/dist/src/procedure-implementer.d.ts +21 -16
  44. package/dist/src/procedure-utils.d.ts +17 -0
  45. package/dist/src/procedure.d.ts +43 -25
  46. package/dist/src/router-builder.d.ts +31 -20
  47. package/dist/src/router-client.d.ts +26 -0
  48. package/dist/src/router-implementer.d.ts +21 -17
  49. package/dist/src/router-utils.d.ts +15 -0
  50. package/dist/src/router.d.ts +14 -15
  51. package/dist/src/types.d.ts +8 -5
  52. package/package.json +29 -21
  53. package/dist/chunk-TDFYNRZV.js +0 -190
  54. package/dist/chunk-TDFYNRZV.js.map +0 -1
  55. package/dist/fetch.js.map +0 -1
  56. package/dist/index.js.map +0 -1
  57. package/dist/src/adapters/fetch.d.ts +0 -42
  58. package/dist/src/adapters/fetch.d.ts.map +0 -1
  59. package/dist/src/builder.d.ts.map +0 -1
  60. package/dist/src/index.d.ts.map +0 -1
  61. package/dist/src/middleware.d.ts.map +0 -1
  62. package/dist/src/procedure-builder.d.ts.map +0 -1
  63. package/dist/src/procedure-caller.d.ts +0 -19
  64. package/dist/src/procedure-caller.d.ts.map +0 -1
  65. package/dist/src/procedure-implementer.d.ts.map +0 -1
  66. package/dist/src/procedure.d.ts.map +0 -1
  67. package/dist/src/router-builder.d.ts.map +0 -1
  68. package/dist/src/router-caller.d.ts +0 -22
  69. package/dist/src/router-caller.d.ts.map +0 -1
  70. package/dist/src/router-implementer.d.ts.map +0 -1
  71. package/dist/src/router.d.ts.map +0 -1
  72. package/dist/src/types.d.ts.map +0 -1
  73. package/dist/src/utils.d.ts +0 -3
  74. package/dist/src/utils.d.ts.map +0 -1
  75. package/dist/tsconfig.tsbuildinfo +0 -1
  76. package/src/adapters/fetch.test.ts +0 -629
  77. package/src/adapters/fetch.ts +0 -290
  78. package/src/builder.test.ts +0 -371
  79. package/src/builder.ts +0 -238
  80. package/src/index.ts +0 -16
  81. package/src/middleware.test.ts +0 -260
  82. package/src/middleware.ts +0 -136
  83. package/src/procedure-builder.test.ts +0 -223
  84. package/src/procedure-builder.ts +0 -158
  85. package/src/procedure-caller.test.ts +0 -171
  86. package/src/procedure-caller.ts +0 -138
  87. package/src/procedure-implementer.test.ts +0 -220
  88. package/src/procedure-implementer.ts +0 -102
  89. package/src/procedure.test.ts +0 -317
  90. package/src/procedure.ts +0 -237
  91. package/src/router-builder.test.ts +0 -106
  92. package/src/router-builder.ts +0 -122
  93. package/src/router-caller.test.ts +0 -126
  94. package/src/router-caller.ts +0 -64
  95. package/src/router-implementer.test.ts +0 -116
  96. package/src/router-implementer.ts +0 -113
  97. package/src/router.test-d.ts +0 -48
  98. package/src/router.test.ts +0 -142
  99. package/src/router.ts +0 -91
  100. package/src/types.test.ts +0 -18
  101. package/src/types.ts +0 -13
  102. package/src/utils.test.ts +0 -16
  103. package/src/utils.ts +0 -16
@@ -0,0 +1,301 @@
1
+ import {
2
+ __export,
3
+ createProcedureClient,
4
+ getRouterChild,
5
+ isProcedure,
6
+ unlazy
7
+ } from "./chunk-XHFINNVL.js";
8
+
9
+ // src/adapters/fetch/super-json.ts
10
+ var super_json_exports = {};
11
+ __export(super_json_exports, {
12
+ deserialize: () => deserialize,
13
+ serialize: () => serialize
14
+ });
15
+
16
+ // ../../node_modules/.pnpm/is-what@5.0.2/node_modules/is-what/dist/getType.js
17
+ function getType(payload) {
18
+ return Object.prototype.toString.call(payload).slice(8, -1);
19
+ }
20
+
21
+ // ../../node_modules/.pnpm/is-what@5.0.2/node_modules/is-what/dist/isPlainObject.js
22
+ function isPlainObject(payload) {
23
+ if (getType(payload) !== "Object")
24
+ return false;
25
+ const prototype = Object.getPrototypeOf(payload);
26
+ return !!prototype && prototype.constructor === Object && prototype === Object.prototype;
27
+ }
28
+
29
+ // src/adapters/fetch/super-json.ts
30
+ function serialize(value, segments = [], meta = []) {
31
+ if (typeof value === "bigint") {
32
+ meta.push(["bigint", segments]);
33
+ return { data: value.toString(), meta };
34
+ }
35
+ if (value instanceof Date) {
36
+ meta.push(["date", segments]);
37
+ const data = Number.isNaN(value.getTime()) ? "Invalid Date" : value.toISOString();
38
+ return { data, meta };
39
+ }
40
+ if (Number.isNaN(value)) {
41
+ meta.push(["nan", segments]);
42
+ return { data: "NaN", meta };
43
+ }
44
+ if (value instanceof RegExp) {
45
+ meta.push(["regexp", segments]);
46
+ return { data: value.toString(), meta };
47
+ }
48
+ if (value instanceof URL) {
49
+ meta.push(["url", segments]);
50
+ return { data: value.toString(), meta };
51
+ }
52
+ if (isPlainObject(value)) {
53
+ const data = {};
54
+ for (const k in value) {
55
+ data[k] = serialize(value[k], [...segments, k], meta).data;
56
+ }
57
+ return { data, meta };
58
+ }
59
+ if (Array.isArray(value)) {
60
+ const data = value.map((v, i) => {
61
+ if (v === void 0) {
62
+ meta.push(["undefined", [...segments, i]]);
63
+ return null;
64
+ }
65
+ return serialize(v, [...segments, i], meta).data;
66
+ });
67
+ return { data, meta };
68
+ }
69
+ if (value instanceof Set) {
70
+ const result = serialize(Array.from(value), segments, meta);
71
+ meta.push(["set", segments]);
72
+ return result;
73
+ }
74
+ if (value instanceof Map) {
75
+ const result = serialize(Array.from(value.entries()), segments, meta);
76
+ meta.push(["map", segments]);
77
+ return result;
78
+ }
79
+ return { data: value, meta };
80
+ }
81
+ function deserialize({
82
+ data,
83
+ meta
84
+ }) {
85
+ if (meta.length === 0) {
86
+ return data;
87
+ }
88
+ const ref = { data };
89
+ for (const [type, segments] of meta) {
90
+ let currentRef = ref;
91
+ let preSegment = "data";
92
+ for (let i = 0; i < segments.length; i++) {
93
+ currentRef = currentRef[preSegment];
94
+ preSegment = segments[i];
95
+ }
96
+ switch (type) {
97
+ case "nan":
98
+ currentRef[preSegment] = Number.NaN;
99
+ break;
100
+ case "bigint":
101
+ currentRef[preSegment] = BigInt(currentRef[preSegment]);
102
+ break;
103
+ case "date":
104
+ currentRef[preSegment] = new Date(currentRef[preSegment]);
105
+ break;
106
+ case "regexp": {
107
+ const [, pattern, flags] = currentRef[preSegment].match(/^\/(.*)\/([a-z]*)$/);
108
+ currentRef[preSegment] = new RegExp(pattern, flags);
109
+ break;
110
+ }
111
+ case "url":
112
+ currentRef[preSegment] = new URL(currentRef[preSegment]);
113
+ break;
114
+ case "undefined":
115
+ currentRef[preSegment] = void 0;
116
+ break;
117
+ case "map":
118
+ currentRef[preSegment] = new Map(currentRef[preSegment]);
119
+ break;
120
+ case "set":
121
+ currentRef[preSegment] = new Set(currentRef[preSegment]);
122
+ break;
123
+ /* v8 ignore next 3 */
124
+ default: {
125
+ const _expected = type;
126
+ }
127
+ }
128
+ }
129
+ return ref.data;
130
+ }
131
+
132
+ // src/adapters/fetch/orpc-payload-codec.ts
133
+ import { ORPCError } from "@orpc/contract";
134
+ import { findDeepMatches, set } from "@orpc/shared";
135
+ var ORPCPayloadCodec = class {
136
+ /**
137
+ * If method is GET, the payload will be encoded as query string.
138
+ * If method is GET and payload contain file, the method will be fallback to fallbackMethod. (fallbackMethod = GET will force to use GET method)
139
+ */
140
+ encode(payload, method = "POST", fallbackMethod = "POST") {
141
+ const { data, meta } = serialize(payload);
142
+ const { maps, values } = findDeepMatches((v) => v instanceof Blob, data);
143
+ if (method === "GET" && (values.length === 0 || fallbackMethod === "GET")) {
144
+ const query = new URLSearchParams({
145
+ data: JSON.stringify(data),
146
+ meta: JSON.stringify(meta)
147
+ });
148
+ return {
149
+ query,
150
+ method: "GET"
151
+ };
152
+ }
153
+ const nonGETMethod = method === "GET" ? fallbackMethod : method;
154
+ if (values.length > 0) {
155
+ const form = new FormData();
156
+ if (data !== void 0) {
157
+ form.append("data", JSON.stringify(data));
158
+ }
159
+ form.append("meta", JSON.stringify(meta));
160
+ form.append("maps", JSON.stringify(maps));
161
+ for (const i in values) {
162
+ const value = values[i];
163
+ form.append(i, value);
164
+ }
165
+ return {
166
+ body: form,
167
+ method: nonGETMethod
168
+ };
169
+ }
170
+ return {
171
+ body: JSON.stringify({ data, meta }),
172
+ headers: new Headers({
173
+ "content-type": "application/json"
174
+ }),
175
+ method: nonGETMethod
176
+ };
177
+ }
178
+ async decode(re) {
179
+ try {
180
+ if ("method" in re && re.method === "GET") {
181
+ const url = new URL(re.url);
182
+ const query = url.searchParams;
183
+ const data = JSON.parse(query.getAll("data").at(-1));
184
+ const meta = JSON.parse(query.getAll("meta").at(-1));
185
+ return deserialize({
186
+ data,
187
+ meta
188
+ });
189
+ }
190
+ if (re.headers.get("content-type")?.startsWith("multipart/form-data")) {
191
+ const form = await re.formData();
192
+ const rawData = form.get("data");
193
+ const rawMeta = form.get("meta");
194
+ const rawMaps = form.get("maps");
195
+ let data = JSON.parse(rawData);
196
+ const meta = JSON.parse(rawMeta);
197
+ const maps = JSON.parse(rawMaps);
198
+ for (const i in maps) {
199
+ data = set(data, maps[i], form.get(i));
200
+ }
201
+ return deserialize({
202
+ data,
203
+ meta
204
+ });
205
+ }
206
+ const json = await re.json();
207
+ return deserialize(json);
208
+ } catch (e) {
209
+ throw new ORPCError({
210
+ code: "BAD_REQUEST",
211
+ message: "Cannot parse request/response. Please check the request/response body and Content-Type header.",
212
+ cause: e
213
+ });
214
+ }
215
+ }
216
+ };
217
+
218
+ // src/adapters/fetch/orpc-procedure-matcher.ts
219
+ import { trim } from "@orpc/shared";
220
+ var ORPCProcedureMatcher = class {
221
+ constructor(router) {
222
+ this.router = router;
223
+ }
224
+ async match(pathname) {
225
+ const path = trim(pathname, "/").split("/").map(decodeURIComponent);
226
+ const match = getRouterChild(this.router, ...path);
227
+ const { default: maybeProcedure } = await unlazy(match);
228
+ if (!isProcedure(maybeProcedure)) {
229
+ return void 0;
230
+ }
231
+ return {
232
+ procedure: maybeProcedure,
233
+ path
234
+ };
235
+ }
236
+ };
237
+
238
+ // src/adapters/fetch/orpc-handler.ts
239
+ import { ORPCError as ORPCError2 } from "@orpc/contract";
240
+ import { executeWithHooks, trim as trim2 } from "@orpc/shared";
241
+ var RPCHandler = class {
242
+ constructor(router, options) {
243
+ this.options = options;
244
+ this.procedureMatcher = options?.procedureMatcher ?? new ORPCProcedureMatcher(router);
245
+ this.payloadCodec = options?.payloadCodec ?? new ORPCPayloadCodec();
246
+ }
247
+ procedureMatcher;
248
+ payloadCodec;
249
+ async handle(request, ...[options]) {
250
+ const context = options?.context ?? {};
251
+ const execute = async () => {
252
+ const url = new URL(request.url);
253
+ const pathname = `/${trim2(url.pathname.replace(options?.prefix ?? "", ""), "/")}`;
254
+ const match = await this.procedureMatcher.match(pathname);
255
+ if (!match) {
256
+ return { matched: false, response: void 0 };
257
+ }
258
+ const input = await this.payloadCodec.decode(request);
259
+ const client = createProcedureClient(match.procedure, {
260
+ context,
261
+ path: match.path
262
+ });
263
+ const output = await client(input, { signal: request.signal });
264
+ const { body, headers } = this.payloadCodec.encode(output);
265
+ const response = new Response(body, { headers });
266
+ return { matched: true, response };
267
+ };
268
+ try {
269
+ const result = await executeWithHooks({
270
+ context,
271
+ execute,
272
+ input: request,
273
+ hooks: this.options,
274
+ meta: {
275
+ signal: request.signal
276
+ }
277
+ });
278
+ return result;
279
+ } catch (e) {
280
+ const error = e instanceof ORPCError2 ? e : new ORPCError2({
281
+ code: "INTERNAL_SERVER_ERROR",
282
+ message: "Internal server error",
283
+ cause: e
284
+ });
285
+ const { body, headers } = this.payloadCodec.encode(error.toJSON());
286
+ const response = new Response(body, {
287
+ headers,
288
+ status: error.status
289
+ });
290
+ return { matched: true, response };
291
+ }
292
+ }
293
+ };
294
+
295
+ export {
296
+ super_json_exports,
297
+ ORPCPayloadCodec,
298
+ ORPCProcedureMatcher,
299
+ RPCHandler
300
+ };
301
+ //# sourceMappingURL=chunk-6YJ5NGUE.js.map
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=chunk-WUOGVGWG.js.map
@@ -0,0 +1,217 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __export = (target, all) => {
3
+ for (var name in all)
4
+ __defProp(target, name, { get: all[name], enumerable: true });
5
+ };
6
+
7
+ // src/procedure.ts
8
+ import { isContractProcedure } from "@orpc/contract";
9
+ var Procedure = class {
10
+ "~type" = "Procedure";
11
+ "~orpc";
12
+ constructor(def) {
13
+ this["~orpc"] = def;
14
+ }
15
+ };
16
+ function isProcedure(item) {
17
+ if (item instanceof Procedure) {
18
+ return true;
19
+ }
20
+ return (typeof item === "object" || typeof item === "function") && item !== null && "~type" in item && item["~type"] === "Procedure" && "~orpc" in item && typeof item["~orpc"] === "object" && item["~orpc"] !== null && "contract" in item["~orpc"] && isContractProcedure(item["~orpc"].contract) && "handler" in item["~orpc"] && typeof item["~orpc"].handler === "function";
21
+ }
22
+
23
+ // src/error.ts
24
+ import { ORPCError } from "@orpc/contract";
25
+ function createORPCErrorConstructorMap(errors) {
26
+ const constructors = {};
27
+ for (const code in errors) {
28
+ const config = errors[code];
29
+ if (!config) {
30
+ continue;
31
+ }
32
+ const constructor = (...[options]) => {
33
+ return new ORPCError({
34
+ code,
35
+ defined: true,
36
+ status: config.status,
37
+ message: options?.message ?? config.message,
38
+ data: options?.data,
39
+ cause: options?.cause
40
+ });
41
+ };
42
+ constructors[code] = constructor;
43
+ }
44
+ return constructors;
45
+ }
46
+
47
+ // src/lazy.ts
48
+ var LAZY_LOADER_SYMBOL = Symbol("ORPC_LAZY_LOADER");
49
+ function lazy(loader) {
50
+ return {
51
+ [LAZY_LOADER_SYMBOL]: loader
52
+ };
53
+ }
54
+ function isLazy(item) {
55
+ return (typeof item === "object" || typeof item === "function") && item !== null && LAZY_LOADER_SYMBOL in item && typeof item[LAZY_LOADER_SYMBOL] === "function";
56
+ }
57
+ function unlazy(lazied) {
58
+ return isLazy(lazied) ? lazied[LAZY_LOADER_SYMBOL]() : Promise.resolve({ default: lazied });
59
+ }
60
+ function flatLazy(lazied) {
61
+ const flattenLoader = async () => {
62
+ let current = await unlazy(lazied);
63
+ while (true) {
64
+ if (!isLazy(current.default)) {
65
+ break;
66
+ }
67
+ current = await unlazy(current.default);
68
+ }
69
+ return current;
70
+ };
71
+ return lazy(flattenLoader);
72
+ }
73
+
74
+ // src/middleware.ts
75
+ function middlewareOutputFn(output) {
76
+ return { output, context: {} };
77
+ }
78
+
79
+ // src/procedure-client.ts
80
+ import { ORPCError as ORPCError2, validateORPCError, ValidationError } from "@orpc/contract";
81
+ import { executeWithHooks, toError, value } from "@orpc/shared";
82
+ function createProcedureClient(lazyableProcedure, ...[options]) {
83
+ return async (...[input, callerOptions]) => {
84
+ const path = options?.path ?? [];
85
+ const { default: procedure } = await unlazy(lazyableProcedure);
86
+ const context = await value(options?.context ?? {}, callerOptions?.context);
87
+ const errors = createORPCErrorConstructorMap(procedure["~orpc"].contract["~orpc"].errorMap);
88
+ const executeOptions = {
89
+ input,
90
+ context,
91
+ errors,
92
+ path,
93
+ procedure,
94
+ signal: callerOptions?.signal
95
+ };
96
+ try {
97
+ const output = await executeWithHooks({
98
+ hooks: options,
99
+ input,
100
+ context,
101
+ meta: executeOptions,
102
+ execute: () => executeProcedureInternal(procedure, executeOptions)
103
+ });
104
+ return output;
105
+ } catch (e) {
106
+ if (!(e instanceof ORPCError2)) {
107
+ throw toError(e);
108
+ }
109
+ const validated = await validateORPCError(procedure["~orpc"].contract["~orpc"].errorMap, e);
110
+ throw validated;
111
+ }
112
+ };
113
+ }
114
+ async function validateInput(procedure, input) {
115
+ const schema = procedure["~orpc"].contract["~orpc"].InputSchema;
116
+ if (!schema)
117
+ return input;
118
+ const result = await schema["~standard"].validate(input);
119
+ if (result.issues) {
120
+ throw new ORPCError2({
121
+ message: "Input validation failed",
122
+ code: "BAD_REQUEST",
123
+ data: {
124
+ issues: result.issues
125
+ },
126
+ cause: new ValidationError({ message: "Input validation failed", issues: result.issues })
127
+ });
128
+ }
129
+ return result.value;
130
+ }
131
+ async function validateOutput(procedure, output) {
132
+ const schema = procedure["~orpc"].contract["~orpc"].OutputSchema;
133
+ if (!schema)
134
+ return output;
135
+ const result = await schema["~standard"].validate(output);
136
+ if (result.issues) {
137
+ throw new ORPCError2({
138
+ message: "Output validation failed",
139
+ code: "INTERNAL_SERVER_ERROR",
140
+ cause: new ValidationError({ message: "Output validation failed", issues: result.issues })
141
+ });
142
+ }
143
+ return result.value;
144
+ }
145
+ async function executeProcedureInternal(procedure, options) {
146
+ const middlewares = procedure["~orpc"].middlewares;
147
+ const inputValidationIndex = Math.min(Math.max(0, procedure["~orpc"].inputValidationIndex), middlewares.length);
148
+ const outputValidationIndex = Math.min(Math.max(0, procedure["~orpc"].outputValidationIndex), middlewares.length);
149
+ let currentIndex = 0;
150
+ let currentContext = options.context;
151
+ let currentInput = options.input;
152
+ const next = async (...[nextOptions]) => {
153
+ const index = currentIndex;
154
+ currentIndex += 1;
155
+ currentContext = { ...currentContext, ...nextOptions?.context };
156
+ if (index === inputValidationIndex) {
157
+ currentInput = await validateInput(procedure, currentInput);
158
+ }
159
+ const mid = middlewares[index];
160
+ const result = mid ? await mid({ ...options, context: currentContext, next }, currentInput, middlewareOutputFn) : { output: await procedure["~orpc"].handler({ ...options, context: currentContext, input: currentInput }), context: currentContext };
161
+ if (index === outputValidationIndex) {
162
+ const validatedOutput = await validateOutput(procedure, result.output);
163
+ return {
164
+ ...result,
165
+ output: validatedOutput
166
+ };
167
+ }
168
+ return result;
169
+ };
170
+ return (await next({})).output;
171
+ }
172
+
173
+ // src/router.ts
174
+ function getRouterChild(router, ...path) {
175
+ let current = router;
176
+ for (let i = 0; i < path.length; i++) {
177
+ const segment = path[i];
178
+ if (!current) {
179
+ return void 0;
180
+ }
181
+ if (isProcedure(current)) {
182
+ return void 0;
183
+ }
184
+ if (!isLazy(current)) {
185
+ current = current[segment];
186
+ continue;
187
+ }
188
+ const lazied = current;
189
+ const rest = path.slice(i);
190
+ const newLazy = lazy(async () => {
191
+ const unwrapped = await unlazy(lazied);
192
+ if (!unwrapped.default) {
193
+ return unwrapped;
194
+ }
195
+ const next = getRouterChild(unwrapped.default, ...rest);
196
+ return { default: next };
197
+ });
198
+ return flatLazy(newLazy);
199
+ }
200
+ return current;
201
+ }
202
+
203
+ export {
204
+ __export,
205
+ Procedure,
206
+ isProcedure,
207
+ createORPCErrorConstructorMap,
208
+ LAZY_LOADER_SYMBOL,
209
+ lazy,
210
+ isLazy,
211
+ unlazy,
212
+ flatLazy,
213
+ middlewareOutputFn,
214
+ createProcedureClient,
215
+ getRouterChild
216
+ };
217
+ //# sourceMappingURL=chunk-XHFINNVL.js.map