@orpc/server 0.0.0-next.3f3f19b → 0.0.0-next.4220427

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. package/dist/chunk-DNG2IB3R.js +227 -0
  2. package/dist/chunk-V3I7RIRY.js +302 -0
  3. package/dist/chunk-WUOGVGWG.js +1 -0
  4. package/dist/fetch.js +11 -108
  5. package/dist/hono.js +30 -0
  6. package/dist/index.js +397 -319
  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.d.ts +29 -46
  24. package/dist/src/error.d.ts +10 -0
  25. package/dist/src/hidden.d.ts +6 -0
  26. package/dist/src/implementer-chainable.d.ts +10 -0
  27. package/dist/src/index.d.ts +11 -4
  28. package/dist/src/lazy-decorated.d.ts +10 -0
  29. package/dist/src/lazy-utils.d.ts +4 -0
  30. package/dist/src/lazy.d.ts +6 -11
  31. package/dist/src/middleware-decorated.d.ts +9 -0
  32. package/dist/src/middleware.d.ts +21 -12
  33. package/dist/src/procedure-builder.d.ts +19 -26
  34. package/dist/src/procedure-client.d.ts +34 -0
  35. package/dist/src/procedure-decorated.d.ts +15 -0
  36. package/dist/src/procedure-implementer.d.ts +16 -19
  37. package/dist/src/procedure.d.ts +37 -26
  38. package/dist/src/router-builder.d.ts +23 -21
  39. package/dist/src/router-client.d.ts +25 -0
  40. package/dist/src/router-implementer.d.ts +18 -21
  41. package/dist/src/router.d.ts +11 -16
  42. package/dist/src/types.d.ts +8 -8
  43. package/package.json +22 -11
  44. package/dist/chunk-3JMSDC5L.js +0 -274
  45. package/dist/src/fetch/handle.d.ts +0 -7
  46. package/dist/src/fetch/handler.d.ts +0 -3
  47. package/dist/src/fetch/index.d.ts +0 -4
  48. package/dist/src/fetch/types.d.ts +0 -28
  49. package/dist/src/procedure-caller.d.ts +0 -26
  50. package/dist/src/router-caller.d.ts +0 -25
package/dist/index.js CHANGED
@@ -1,434 +1,505 @@
1
1
  import {
2
2
  LAZY_LOADER_SYMBOL,
3
3
  Procedure,
4
- createFlattenLazy,
5
- createLazy,
6
- createProcedureCaller,
7
- decorateLazy,
8
- decorateMiddleware,
9
- decorateProcedure,
4
+ createORPCErrorConstructorMap,
5
+ createProcedureClient,
6
+ flatLazy,
7
+ getRouterChild,
10
8
  isLazy,
11
9
  isProcedure,
12
- loadLazy,
13
- loadProcedure,
14
- mergeContext
15
- } from "./chunk-3JMSDC5L.js";
10
+ lazy,
11
+ mergeContext,
12
+ unlazy
13
+ } from "./chunk-DNG2IB3R.js";
16
14
 
17
15
  // src/builder.ts
18
- import {
19
- ContractProcedure,
20
- isContractProcedure as isContractProcedure2
21
- } from "@orpc/contract";
16
+ import { ContractProcedure } from "@orpc/contract";
22
17
 
23
- // src/procedure-builder.ts
24
- import {
25
- DecoratedContractProcedure as DecoratedContractProcedure2
26
- } from "@orpc/contract";
18
+ // src/implementer-chainable.ts
19
+ import { isContractProcedure } from "@orpc/contract";
20
+ import { createCallableObject } from "@orpc/shared";
27
21
 
28
- // src/router-builder.ts
29
- import { DecoratedContractProcedure, prefixHTTPPath } from "@orpc/contract";
22
+ // src/middleware-decorated.ts
23
+ function decorateMiddleware(middleware) {
24
+ const decorated = middleware;
25
+ decorated.mapInput = (mapInput) => {
26
+ const mapped = decorateMiddleware(
27
+ (options, input, ...rest) => middleware(options, mapInput(input), ...rest)
28
+ );
29
+ return mapped;
30
+ };
31
+ decorated.concat = (concatMiddleware, mapInput) => {
32
+ const mapped = mapInput ? decorateMiddleware(concatMiddleware).mapInput(mapInput) : concatMiddleware;
33
+ const concatted = decorateMiddleware((options, input, output, ...rest) => {
34
+ const next = async (nextOptions) => {
35
+ return mapped({ ...options, context: mergeContext(nextOptions.context, options.context) }, input, output, ...rest);
36
+ };
37
+ const merged = middleware({ ...options, next }, input, output, ...rest);
38
+ return merged;
39
+ });
40
+ return concatted;
41
+ };
42
+ return decorated;
43
+ }
44
+
45
+ // src/procedure-decorated.ts
46
+ import { DecoratedContractProcedure } from "@orpc/contract";
47
+ function decorateProcedure(procedure) {
48
+ const caller = createProcedureClient({
49
+ procedure,
50
+ context: void 0
51
+ });
52
+ const decorated = caller;
53
+ decorated["~type"] = procedure["~type"];
54
+ decorated["~orpc"] = procedure["~orpc"];
55
+ decorated.prefix = (prefix) => {
56
+ return decorateProcedure(new Procedure({
57
+ ...procedure["~orpc"],
58
+ contract: DecoratedContractProcedure.decorate(procedure["~orpc"].contract).prefix(prefix)
59
+ }));
60
+ };
61
+ decorated.route = (route) => {
62
+ return decorateProcedure(new Procedure({
63
+ ...procedure["~orpc"],
64
+ contract: DecoratedContractProcedure.decorate(procedure["~orpc"].contract).route(route)
65
+ }));
66
+ };
67
+ decorated.use = (middleware, mapInput) => {
68
+ const middleware_ = mapInput ? decorateMiddleware(middleware).mapInput(mapInput) : middleware;
69
+ return decorateProcedure(new Procedure({
70
+ ...procedure["~orpc"],
71
+ middlewares: [...procedure["~orpc"].middlewares ?? [], middleware_]
72
+ }));
73
+ };
74
+ decorated.unshiftTag = (...tags) => {
75
+ return decorateProcedure(new Procedure({
76
+ ...procedure["~orpc"],
77
+ contract: DecoratedContractProcedure.decorate(procedure["~orpc"].contract).unshiftTag(...tags)
78
+ }));
79
+ };
80
+ decorated.unshiftMiddleware = (...middlewares) => {
81
+ if (procedure["~orpc"].middlewares?.length) {
82
+ let min = 0;
83
+ for (let i = 0; i < procedure["~orpc"].middlewares.length; i++) {
84
+ const index = middlewares.indexOf(procedure["~orpc"].middlewares[i], min);
85
+ if (index === -1) {
86
+ middlewares.push(...procedure["~orpc"].middlewares.slice(i));
87
+ break;
88
+ }
89
+ min = index + 1;
90
+ }
91
+ }
92
+ return decorateProcedure(new Procedure({
93
+ ...procedure["~orpc"],
94
+ middlewares
95
+ }));
96
+ };
97
+ return decorated;
98
+ }
99
+
100
+ // src/procedure-implementer.ts
101
+ var ProcedureImplementer = class _ProcedureImplementer {
102
+ "~type" = "ProcedureImplementer";
103
+ "~orpc";
104
+ constructor(def) {
105
+ this["~orpc"] = def;
106
+ }
107
+ use(middleware, mapInput) {
108
+ const mappedMiddleware = mapInput ? decorateMiddleware(middleware).mapInput(mapInput) : middleware;
109
+ return new _ProcedureImplementer({
110
+ ...this["~orpc"],
111
+ middlewares: [...this["~orpc"].middlewares ?? [], mappedMiddleware]
112
+ });
113
+ }
114
+ handler(handler) {
115
+ return decorateProcedure(new Procedure({
116
+ middlewares: this["~orpc"].middlewares,
117
+ contract: this["~orpc"].contract,
118
+ handler
119
+ }));
120
+ }
121
+ };
122
+
123
+ // src/hidden.ts
124
+ var ROUTER_CONTRACT_SYMBOL = Symbol("ORPC_ROUTER_CONTRACT");
125
+ function setRouterContract(obj, contract) {
126
+ return new Proxy(obj, {
127
+ get(target, key) {
128
+ if (key === ROUTER_CONTRACT_SYMBOL) {
129
+ return contract;
130
+ }
131
+ return Reflect.get(target, key);
132
+ }
133
+ });
134
+ }
135
+ function getRouterContract(obj) {
136
+ return obj[ROUTER_CONTRACT_SYMBOL];
137
+ }
30
138
  var LAZY_ROUTER_PREFIX_SYMBOL = Symbol("ORPC_LAZY_ROUTER_PREFIX");
139
+ function deepSetLazyRouterPrefix(router, prefix) {
140
+ return new Proxy(router, {
141
+ get(target, key) {
142
+ if (key !== LAZY_ROUTER_PREFIX_SYMBOL) {
143
+ const val = Reflect.get(target, key);
144
+ if (val && (typeof val === "object" || typeof val === "function")) {
145
+ return deepSetLazyRouterPrefix(val, prefix);
146
+ }
147
+ return val;
148
+ }
149
+ return prefix;
150
+ }
151
+ });
152
+ }
153
+ function getLazyRouterPrefix(obj) {
154
+ return obj[LAZY_ROUTER_PREFIX_SYMBOL];
155
+ }
156
+
157
+ // src/lazy-utils.ts
158
+ function createLazyProcedureFormAnyLazy(lazied) {
159
+ const lazyProcedure = lazy(async () => {
160
+ const { default: maybeProcedure } = await unlazy(flatLazy(lazied));
161
+ if (!isProcedure(maybeProcedure)) {
162
+ throw new Error(`
163
+ Expected a lazy<procedure> but got lazy<unknown>.
164
+ This should be caught by TypeScript compilation.
165
+ Please report this issue if this makes you feel uncomfortable.
166
+ `);
167
+ }
168
+ return { default: maybeProcedure };
169
+ });
170
+ return lazyProcedure;
171
+ }
172
+
173
+ // src/lazy-decorated.ts
174
+ function decorateLazy(lazied) {
175
+ const flattenLazy = flatLazy(lazied);
176
+ const procedureProcedureClient = createProcedureClient({
177
+ procedure: createLazyProcedureFormAnyLazy(flattenLazy),
178
+ context: void 0
179
+ });
180
+ Object.assign(procedureProcedureClient, flattenLazy);
181
+ const recursive = new Proxy(procedureProcedureClient, {
182
+ get(target, key) {
183
+ if (typeof key !== "string") {
184
+ return Reflect.get(target, key);
185
+ }
186
+ const next = getRouterChild(flattenLazy, key);
187
+ return decorateLazy(next);
188
+ }
189
+ });
190
+ return recursive;
191
+ }
192
+
193
+ // src/router-builder.ts
31
194
  var RouterBuilder = class _RouterBuilder {
32
- constructor(zz$rb) {
33
- this.zz$rb = zz$rb;
34
- if (zz$rb.prefix && zz$rb.prefix.includes("{")) {
35
- throw new Error('Prefix cannot contain "{" for dynamic routing');
195
+ "~type" = "RouterBuilder";
196
+ "~orpc";
197
+ constructor(def) {
198
+ this["~orpc"] = def;
199
+ if (def.prefix && def.prefix.includes("{")) {
200
+ throw new Error(`
201
+ Dynamic routing in prefix not supported yet.
202
+ Please remove "{" from "${def.prefix}".
203
+ `);
36
204
  }
37
205
  }
38
206
  prefix(prefix) {
39
207
  return new _RouterBuilder({
40
- ...this.zz$rb,
41
- prefix: `${this.zz$rb.prefix ?? ""}${prefix}`
208
+ ...this["~orpc"],
209
+ prefix: `${this["~orpc"].prefix ?? ""}${prefix}`
42
210
  });
43
211
  }
44
- tags(...tags) {
45
- if (!tags.length)
46
- return this;
212
+ tag(...tags) {
47
213
  return new _RouterBuilder({
48
- ...this.zz$rb,
49
- tags: [...this.zz$rb.tags ?? [], ...tags]
214
+ ...this["~orpc"],
215
+ tags: [...this["~orpc"].tags ?? [], ...tags]
50
216
  });
51
217
  }
52
- use(middleware, mapInput) {
53
- const middleware_ = mapInput ? decorateMiddleware(middleware).mapInput(mapInput) : middleware;
218
+ use(middleware) {
54
219
  return new _RouterBuilder({
55
- ...this.zz$rb,
56
- middlewares: [...this.zz$rb.middlewares || [], middleware_]
220
+ ...this["~orpc"],
221
+ middlewares: [...this["~orpc"].middlewares ?? [], middleware]
57
222
  });
58
223
  }
59
224
  router(router) {
60
- const handled = adaptRouter({
61
- routerOrChild: router,
62
- middlewares: this.zz$rb.middlewares,
63
- tags: this.zz$rb.tags,
64
- prefix: this.zz$rb.prefix
65
- });
66
- return handled;
225
+ const adapted = adapt(router, this["~orpc"]);
226
+ return adapted;
67
227
  }
68
228
  lazy(loader) {
69
- const lazy = adaptLazyRouter({
70
- current: createLazy(loader),
71
- middlewares: this.zz$rb.middlewares,
72
- tags: this.zz$rb.tags,
73
- prefix: this.zz$rb.prefix
74
- });
75
- return lazy;
229
+ const adapted = adapt(flatLazy(lazy(loader)), this["~orpc"]);
230
+ return adapted;
76
231
  }
77
232
  };
78
- function adaptRouter(options) {
79
- if (isProcedure(options.routerOrChild)) {
80
- return adaptProcedure({
81
- ...options,
82
- procedure: options.routerOrChild
83
- });
84
- }
85
- if (isLazy(options.routerOrChild)) {
86
- return adaptLazyRouter({
87
- ...options,
88
- current: options.routerOrChild
89
- });
90
- }
91
- const handled = {};
92
- for (const key in options.routerOrChild) {
93
- handled[key] = adaptRouter({
94
- ...options,
95
- routerOrChild: options.routerOrChild[key]
96
- });
97
- }
98
- return handled;
99
- }
100
- function adaptLazyRouter(options) {
101
- const loader = async () => {
102
- const current = (await loadLazy(options.current)).default;
103
- return {
104
- default: adaptRouter({
105
- ...options,
106
- routerOrChild: current
107
- })
108
- };
109
- };
110
- let lazyRouterPrefix = options.prefix;
111
- if (LAZY_ROUTER_PREFIX_SYMBOL in options.current && typeof options.current[LAZY_ROUTER_PREFIX_SYMBOL] === "string") {
112
- lazyRouterPrefix = lazyRouterPrefix ? prefixHTTPPath(options.current[LAZY_ROUTER_PREFIX_SYMBOL], lazyRouterPrefix) : options.current[LAZY_ROUTER_PREFIX_SYMBOL];
233
+ function adapt(item, options) {
234
+ if (isLazy(item)) {
235
+ const adaptedLazy = decorateLazy(lazy(async () => {
236
+ const routerOrProcedure = (await unlazy(item)).default;
237
+ const adapted2 = adapt(routerOrProcedure, options);
238
+ return { default: adapted2 };
239
+ }));
240
+ const lazyPrefix = getLazyRouterPrefix(item);
241
+ if (options.prefix || lazyPrefix) {
242
+ const prefixed = deepSetLazyRouterPrefix(adaptedLazy, `${options.prefix ?? ""}${lazyPrefix ?? ""}`);
243
+ return prefixed;
244
+ }
245
+ return adaptedLazy;
113
246
  }
114
- const decoratedLazy = Object.assign(decorateLazy(createLazy(loader)), {
115
- [LAZY_ROUTER_PREFIX_SYMBOL]: lazyRouterPrefix
116
- });
117
- const recursive = new Proxy(decoratedLazy, {
118
- get(target, key) {
119
- if (typeof key !== "string") {
120
- return Reflect.get(target, key);
121
- }
122
- return adaptLazyRouter({
123
- ...options,
124
- current: createLazy(async () => {
125
- const current = (await loadLazy(options.current)).default;
126
- return { default: current[key] };
127
- })
128
- });
247
+ if (isProcedure(item)) {
248
+ let decorated = decorateProcedure(item);
249
+ if (options.tags?.length) {
250
+ decorated = decorated.unshiftTag(...options.tags);
129
251
  }
130
- });
131
- return recursive;
132
- }
133
- function adaptProcedure(options) {
134
- const builderMiddlewares = options.middlewares ?? [];
135
- const procedureMiddlewares = options.procedure.zz$p.middlewares ?? [];
136
- const middlewares = [
137
- ...builderMiddlewares,
138
- ...procedureMiddlewares.filter(
139
- (item) => !builderMiddlewares.includes(item)
140
- )
141
- ];
142
- let contract = DecoratedContractProcedure.decorate(
143
- options.procedure.zz$p.contract
144
- ).addTags(...options.tags ?? []);
145
- if (options.prefix) {
146
- contract = contract.prefix(options.prefix);
147
- }
148
- return decorateProcedure({
149
- zz$p: {
150
- ...options.procedure.zz$p,
151
- contract,
152
- middlewares
252
+ if (options.prefix) {
253
+ decorated = decorated.prefix(options.prefix);
153
254
  }
154
- });
255
+ if (options.middlewares?.length) {
256
+ decorated = decorated.unshiftMiddleware(...options.middlewares);
257
+ }
258
+ return decorated;
259
+ }
260
+ const adapted = {};
261
+ for (const key in item) {
262
+ adapted[key] = adapt(item[key], options);
263
+ }
264
+ return adapted;
155
265
  }
156
266
 
157
- // src/procedure-implementer.ts
158
- var ProcedureImplementer = class _ProcedureImplementer {
159
- constructor(zz$pi) {
160
- this.zz$pi = zz$pi;
161
- }
162
- use(middleware, mapInput) {
163
- const middleware_ = mapInput ? decorateMiddleware(middleware).mapInput(mapInput) : middleware;
164
- return new _ProcedureImplementer({
165
- ...this.zz$pi,
166
- middlewares: [...this.zz$pi.middlewares ?? [], middleware_]
267
+ // src/router-implementer.ts
268
+ var RouterImplementer = class _RouterImplementer {
269
+ "~type" = "RouterImplementer";
270
+ "~orpc";
271
+ constructor(def) {
272
+ this["~orpc"] = def;
273
+ }
274
+ use(middleware) {
275
+ return new _RouterImplementer({
276
+ ...this["~orpc"],
277
+ middlewares: [...this["~orpc"].middlewares ?? [], middleware]
167
278
  });
168
279
  }
169
- func(func) {
170
- return decorateProcedure({
171
- zz$p: {
172
- middlewares: this.zz$pi.middlewares,
173
- contract: this.zz$pi.contract,
174
- func
175
- }
176
- });
280
+ router(router) {
281
+ const adapted = new RouterBuilder(this["~orpc"]).router(router);
282
+ const contracted = setRouterContract(adapted, this["~orpc"].contract);
283
+ return contracted;
177
284
  }
178
285
  lazy(loader) {
179
- return new RouterBuilder(this.zz$pi).lazy(loader);
286
+ const adapted = new RouterBuilder(this["~orpc"]).lazy(loader);
287
+ const contracted = setRouterContract(adapted, this["~orpc"].contract);
288
+ return contracted;
180
289
  }
181
290
  };
182
291
 
292
+ // src/implementer-chainable.ts
293
+ function createChainableImplementer(contract, middlewares) {
294
+ if (isContractProcedure(contract)) {
295
+ const implementer = new ProcedureImplementer({
296
+ contract,
297
+ middlewares
298
+ });
299
+ return implementer;
300
+ }
301
+ const chainable = {};
302
+ for (const key in contract) {
303
+ chainable[key] = createChainableImplementer(contract[key], middlewares);
304
+ }
305
+ const routerImplementer = new RouterImplementer({ contract, middlewares });
306
+ const merged = new Proxy(chainable, {
307
+ get(target, key) {
308
+ const next = Reflect.get(target, key);
309
+ const method = Reflect.get(routerImplementer, key);
310
+ if (typeof key !== "string" || typeof method !== "function") {
311
+ return next;
312
+ }
313
+ if (!next) {
314
+ return method.bind(routerImplementer);
315
+ }
316
+ return createCallableObject(next, method.bind(routerImplementer));
317
+ }
318
+ });
319
+ return merged;
320
+ }
321
+
183
322
  // src/procedure-builder.ts
323
+ import {
324
+ DecoratedContractProcedure as DecoratedContractProcedure2
325
+ } from "@orpc/contract";
184
326
  var ProcedureBuilder = class _ProcedureBuilder {
185
- constructor(zz$pb) {
186
- this.zz$pb = zz$pb;
327
+ "~type" = "ProcedureBuilder";
328
+ "~orpc";
329
+ constructor(def) {
330
+ this["~orpc"] = def;
187
331
  }
188
- /**
189
- * Self chainable
190
- */
191
- route(opts) {
332
+ route(route) {
192
333
  return new _ProcedureBuilder({
193
- ...this.zz$pb,
194
- contract: DecoratedContractProcedure2.decorate(this.zz$pb.contract).route(
195
- opts
196
- )
334
+ ...this["~orpc"],
335
+ contract: DecoratedContractProcedure2.decorate(this["~orpc"].contract).route(route)
197
336
  });
198
337
  }
199
338
  input(schema, example) {
200
339
  return new _ProcedureBuilder({
201
- ...this.zz$pb,
202
- contract: DecoratedContractProcedure2.decorate(this.zz$pb.contract).input(
203
- schema,
204
- example
205
- )
340
+ ...this["~orpc"],
341
+ contract: DecoratedContractProcedure2.decorate(this["~orpc"].contract).input(schema, example)
206
342
  });
207
343
  }
208
344
  output(schema, example) {
209
345
  return new _ProcedureBuilder({
210
- ...this.zz$pb,
211
- contract: DecoratedContractProcedure2.decorate(this.zz$pb.contract).output(
212
- schema,
213
- example
214
- )
346
+ ...this["~orpc"],
347
+ contract: DecoratedContractProcedure2.decorate(this["~orpc"].contract).output(schema, example)
348
+ });
349
+ }
350
+ errors(errors) {
351
+ return new _ProcedureBuilder({
352
+ ...this["~orpc"],
353
+ contract: DecoratedContractProcedure2.decorate(this["~orpc"].contract).errors(errors)
215
354
  });
216
355
  }
217
356
  use(middleware, mapInput) {
218
357
  if (!mapInput) {
219
358
  return new ProcedureImplementer({
220
- contract: this.zz$pb.contract,
221
- middlewares: this.zz$pb.middlewares
359
+ contract: this["~orpc"].contract,
360
+ middlewares: this["~orpc"].middlewares
222
361
  }).use(middleware);
223
362
  }
224
363
  return new ProcedureImplementer({
225
- contract: this.zz$pb.contract,
226
- middlewares: this.zz$pb.middlewares
364
+ contract: this["~orpc"].contract,
365
+ middlewares: this["~orpc"].middlewares
227
366
  }).use(middleware, mapInput);
228
367
  }
229
- /**
230
- * Convert to Procedure
231
- */
232
- func(func) {
233
- return decorateProcedure({
234
- zz$p: {
235
- middlewares: this.zz$pb.middlewares,
236
- contract: this.zz$pb.contract,
237
- func
238
- }
239
- });
368
+ handler(handler) {
369
+ return decorateProcedure(new Procedure({
370
+ middlewares: this["~orpc"].middlewares,
371
+ contract: this["~orpc"].contract,
372
+ handler
373
+ }));
240
374
  }
241
375
  };
242
376
 
243
- // src/router-implementer.ts
244
- import { isContractProcedure } from "@orpc/contract";
245
- var ROUTER_CONTRACT_SYMBOL = Symbol("ORPC_ROUTER_CONTRACT");
246
- var RouterImplementer = class {
247
- constructor(zz$ri) {
248
- this.zz$ri = zz$ri;
249
- }
250
- router(router) {
251
- return Object.assign(new RouterBuilder({}).router(router), {
252
- [ROUTER_CONTRACT_SYMBOL]: this.zz$ri.contract
253
- });
254
- }
255
- lazy(loader) {
256
- const lazy = createLazy(loader);
257
- const decorated = decorateLazy(lazy);
258
- return Object.assign(decorated, {
259
- [ROUTER_CONTRACT_SYMBOL]: this.zz$ri.contract
260
- });
261
- }
262
- };
263
- function chainRouterImplementer(contract, middlewares) {
264
- const result = {};
265
- for (const key in contract) {
266
- const item = contract[key];
267
- if (isContractProcedure(item)) {
268
- result[key] = new ProcedureImplementer({
269
- contract: item,
270
- middlewares
271
- });
272
- } else {
273
- result[key] = chainRouterImplementer(item, middlewares);
274
- }
275
- }
276
- const implementer = new RouterImplementer({ contract });
277
- return Object.assign(implementer, result);
278
- }
279
-
280
377
  // src/builder.ts
281
378
  var Builder = class _Builder {
282
- constructor(zz$b = {}) {
283
- this.zz$b = zz$b;
379
+ "~type" = "Builder";
380
+ "~orpc";
381
+ constructor(def) {
382
+ this["~orpc"] = def;
284
383
  }
285
- /**
286
- * Self chainable
287
- */
288
384
  context() {
289
- return this;
385
+ return new _Builder({});
290
386
  }
291
- use(middleware, mapInput) {
292
- const middleware_ = mapInput ? decorateMiddleware(middleware).mapInput(mapInput) : middleware;
387
+ use(middleware) {
293
388
  return new _Builder({
294
- ...this.zz$b,
295
- middlewares: [...this.zz$b.middlewares || [], middleware_]
389
+ ...this["~orpc"],
390
+ middlewares: [...this["~orpc"].middlewares ?? [], middleware]
296
391
  });
297
392
  }
298
- /**
299
- * Convert to ContractProcedureBuilder
300
- */
301
- route(opts) {
393
+ middleware(middleware) {
394
+ return decorateMiddleware(middleware);
395
+ }
396
+ route(route) {
302
397
  return new ProcedureBuilder({
303
- middlewares: this.zz$b.middlewares,
398
+ middlewares: this["~orpc"].middlewares,
304
399
  contract: new ContractProcedure({
305
- ...opts,
400
+ route,
306
401
  InputSchema: void 0,
307
- OutputSchema: void 0
402
+ OutputSchema: void 0,
403
+ errorMap: void 0
308
404
  })
309
405
  });
310
406
  }
311
407
  input(schema, example) {
312
408
  return new ProcedureBuilder({
313
- middlewares: this.zz$b.middlewares,
409
+ middlewares: this["~orpc"].middlewares,
314
410
  contract: new ContractProcedure({
315
411
  OutputSchema: void 0,
316
412
  InputSchema: schema,
317
- inputExample: example
413
+ inputExample: example,
414
+ errorMap: void 0
318
415
  })
319
416
  });
320
417
  }
321
418
  output(schema, example) {
322
419
  return new ProcedureBuilder({
323
- middlewares: this.zz$b.middlewares,
420
+ middlewares: this["~orpc"].middlewares,
324
421
  contract: new ContractProcedure({
325
422
  InputSchema: void 0,
326
423
  OutputSchema: schema,
327
- outputExample: example
424
+ outputExample: example,
425
+ errorMap: void 0
328
426
  })
329
427
  });
330
428
  }
331
- /**
332
- * Convert to Procedure
333
- */
334
- func(func) {
335
- return decorateProcedure({
336
- zz$p: {
337
- middlewares: this.zz$b.middlewares,
338
- contract: new ContractProcedure({
339
- InputSchema: void 0,
340
- OutputSchema: void 0
341
- }),
342
- func
343
- }
429
+ errors(errors) {
430
+ return new ProcedureBuilder({
431
+ middlewares: this["~orpc"].middlewares,
432
+ contract: new ContractProcedure({
433
+ InputSchema: void 0,
434
+ OutputSchema: void 0,
435
+ errorMap: errors
436
+ })
344
437
  });
345
438
  }
346
- /**
347
- * Convert to ProcedureImplementer | RouterBuilder
348
- */
349
- contract(contract) {
350
- if (isContractProcedure2(contract)) {
351
- return new ProcedureImplementer({
352
- contract,
353
- middlewares: this.zz$b.middlewares
354
- });
355
- }
356
- return chainRouterImplementer(
357
- contract,
358
- this.zz$b.middlewares
359
- );
360
- }
361
- /**
362
- * Create ExtendedMiddleware
363
- */
364
- // TODO: TOutput always any, infer not work at all, because TOutput used inside middleware params,
365
- // solution (maybe): create new generic for .output() method
366
- middleware(middleware) {
367
- return decorateMiddleware(middleware);
439
+ handler(handler) {
440
+ return decorateProcedure(new Procedure({
441
+ middlewares: this["~orpc"].middlewares,
442
+ contract: new ContractProcedure({
443
+ InputSchema: void 0,
444
+ OutputSchema: void 0,
445
+ errorMap: void 0
446
+ }),
447
+ handler
448
+ }));
368
449
  }
369
450
  prefix(prefix) {
370
451
  return new RouterBuilder({
371
- ...this.zz$b,
452
+ middlewares: this["~orpc"].middlewares,
372
453
  prefix
373
454
  });
374
455
  }
375
- tags(...tags) {
456
+ tag(...tags) {
376
457
  return new RouterBuilder({
377
- ...this.zz$b,
458
+ middlewares: this["~orpc"].middlewares,
378
459
  tags
379
460
  });
380
461
  }
381
- /**
382
- * Create DecoratedRouter
383
- */
384
462
  router(router) {
385
- return new RouterBuilder(this.zz$b).router(router);
463
+ return new RouterBuilder(this["~orpc"]).router(router);
386
464
  }
387
465
  lazy(loader) {
388
- return new RouterBuilder(this.zz$b).lazy(loader);
466
+ return new RouterBuilder(this["~orpc"]).lazy(loader);
467
+ }
468
+ contract(contract) {
469
+ return createChainableImplementer(contract, this["~orpc"].middlewares);
389
470
  }
390
471
  };
391
472
 
392
- // src/router.ts
393
- import {
394
- isContractProcedure as isContractProcedure3
395
- } from "@orpc/contract";
396
- function toContractRouter(router) {
397
- const contract = {};
398
- for (const key in router) {
399
- const item = router[key];
400
- if (isContractProcedure3(item)) {
401
- contract[key] = item;
402
- } else if (isProcedure(item)) {
403
- contract[key] = item.zz$p.contract;
404
- } else {
405
- contract[key] = toContractRouter(item);
406
- }
473
+ // src/router-client.ts
474
+ function createRouterClient(options) {
475
+ if (isProcedure(options.router)) {
476
+ const caller = createProcedureClient({
477
+ ...options,
478
+ procedure: options.router,
479
+ context: options.context,
480
+ path: options.path
481
+ });
482
+ return caller;
407
483
  }
408
- return contract;
409
- }
410
-
411
- // src/router-caller.ts
412
- function createRouterCaller(options) {
413
- return createRouterCallerInternal(options);
414
- }
415
- function createRouterCallerInternal(options) {
416
- const procedureCaller = isLazy(options.router) || isProcedure(options.router) ? createProcedureCaller({
484
+ const procedureCaller = isLazy(options.router) ? createProcedureClient({
417
485
  ...options,
418
- procedure: options.router,
486
+ procedure: createLazyProcedureFormAnyLazy(options.router),
419
487
  context: options.context,
420
- path: options.basePath
488
+ path: options.path
421
489
  }) : {};
422
490
  const recursive = new Proxy(procedureCaller, {
423
491
  get(target, key) {
424
492
  if (typeof key !== "string") {
425
493
  return Reflect.get(target, key);
426
494
  }
427
- const next = options.router[key];
428
- return createRouterCallerInternal({
495
+ const next = getRouterChild(options.router, key);
496
+ if (!next) {
497
+ return Reflect.get(target, key);
498
+ }
499
+ return createRouterClient({
429
500
  ...options,
430
501
  router: next,
431
- basePath: [...options.basePath ?? [], key]
502
+ path: [...options.path ?? [], key]
432
503
  });
433
504
  }
434
505
  });
@@ -436,32 +507,39 @@ function createRouterCallerInternal(options) {
436
507
  }
437
508
 
438
509
  // src/index.ts
439
- export * from "@orpc/shared/error";
440
- var os = new Builder();
510
+ import { configGlobal, fallbackToGlobalConfig, isDefinedError, ORPCError, safe } from "@orpc/contract";
511
+ var os = new Builder({});
441
512
  export {
442
513
  Builder,
443
514
  LAZY_LOADER_SYMBOL,
444
- LAZY_ROUTER_PREFIX_SYMBOL,
515
+ ORPCError,
445
516
  Procedure,
446
517
  ProcedureBuilder,
447
518
  ProcedureImplementer,
448
- ROUTER_CONTRACT_SYMBOL,
449
519
  RouterBuilder,
450
520
  RouterImplementer,
451
- chainRouterImplementer,
452
- createFlattenLazy,
453
- createLazy,
454
- createProcedureCaller,
455
- createRouterCaller,
521
+ configGlobal,
522
+ createChainableImplementer,
523
+ createORPCErrorConstructorMap,
524
+ createProcedureClient,
525
+ createRouterClient,
456
526
  decorateLazy,
457
527
  decorateMiddleware,
458
528
  decorateProcedure,
529
+ deepSetLazyRouterPrefix,
530
+ fallbackToGlobalConfig,
531
+ flatLazy,
532
+ getLazyRouterPrefix,
533
+ getRouterChild,
534
+ getRouterContract,
535
+ isDefinedError,
459
536
  isLazy,
460
537
  isProcedure,
461
- loadLazy,
462
- loadProcedure,
538
+ lazy,
463
539
  mergeContext,
464
540
  os,
465
- toContractRouter
541
+ safe,
542
+ setRouterContract,
543
+ unlazy
466
544
  };
467
545
  //# sourceMappingURL=index.js.map