@orpc/server 0.0.0-next.4220427 → 0.0.0-next.44bdf93
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/{chunk-DNG2IB3R.js → chunk-GK2Z6B6W.js} +38 -35
- package/dist/{chunk-V3I7RIRY.js → chunk-SXUFCJBY.js} +5 -6
- package/dist/fetch.js +4 -4
- package/dist/hono.js +4 -4
- package/dist/index.js +614 -172
- package/dist/next.js +4 -4
- package/dist/node.js +6 -6
- package/dist/src/adapters/fetch/orpc-handler.d.ts +3 -3
- package/dist/src/adapters/node/orpc-handler.d.ts +3 -3
- package/dist/src/builder-with-errors-middlewares.d.ts +50 -0
- package/dist/src/builder-with-errors.d.ts +49 -0
- package/dist/src/builder-with-middlewares.d.ts +47 -0
- package/dist/src/builder.d.ts +30 -23
- package/dist/src/context.d.ts +11 -0
- package/dist/src/error.d.ts +1 -1
- package/dist/src/hidden.d.ts +2 -2
- package/dist/src/implementer-chainable.d.ts +7 -3
- package/dist/src/index.d.ts +3 -2
- package/dist/src/lazy-decorated.d.ts +3 -6
- package/dist/src/middleware-decorated.d.ts +2 -1
- package/dist/src/middleware.d.ts +1 -0
- package/dist/src/procedure-builder-with-input.d.ts +34 -0
- package/dist/src/procedure-builder-with-output.d.ts +33 -0
- package/dist/src/procedure-builder.d.ts +21 -18
- package/dist/src/procedure-client.d.ts +7 -19
- package/dist/src/procedure-decorated.d.ts +21 -10
- package/dist/src/procedure-implementer.d.ts +7 -4
- package/dist/src/procedure-utils.d.ts +17 -0
- package/dist/src/procedure.d.ts +4 -2
- package/dist/src/router-builder.d.ts +19 -15
- package/dist/src/router-client.d.ts +7 -6
- package/dist/src/router-implementer.d.ts +7 -6
- package/dist/src/router.d.ts +3 -3
- package/package.json +3 -3
package/dist/index.js
CHANGED
@@ -9,15 +9,24 @@ import {
|
|
9
9
|
isProcedure,
|
10
10
|
lazy,
|
11
11
|
mergeContext,
|
12
|
+
middlewareOutputFn,
|
12
13
|
unlazy
|
13
|
-
} from "./chunk-
|
14
|
+
} from "./chunk-GK2Z6B6W.js";
|
14
15
|
|
15
16
|
// src/builder.ts
|
17
|
+
import { ContractProcedure as ContractProcedure4 } from "@orpc/contract";
|
18
|
+
|
19
|
+
// src/builder-with-errors.ts
|
20
|
+
import { ContractProcedure as ContractProcedure2 } from "@orpc/contract";
|
21
|
+
|
22
|
+
// src/builder-with-errors-middlewares.ts
|
16
23
|
import { ContractProcedure } from "@orpc/contract";
|
17
24
|
|
18
|
-
// src/
|
19
|
-
import {
|
20
|
-
|
25
|
+
// src/procedure-builder.ts
|
26
|
+
import { ContractProcedureBuilder, DecoratedContractProcedure as DecoratedContractProcedure4 } from "@orpc/contract";
|
27
|
+
|
28
|
+
// src/procedure-builder-with-input.ts
|
29
|
+
import { ContractProcedureBuilderWithInput, DecoratedContractProcedure as DecoratedContractProcedure2 } from "@orpc/contract";
|
21
30
|
|
22
31
|
// src/middleware-decorated.ts
|
23
32
|
function decorateMiddleware(middleware) {
|
@@ -44,58 +53,81 @@ function decorateMiddleware(middleware) {
|
|
44
53
|
|
45
54
|
// src/procedure-decorated.ts
|
46
55
|
import { DecoratedContractProcedure } from "@orpc/contract";
|
47
|
-
|
48
|
-
|
49
|
-
procedure
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
56
|
+
var DecoratedProcedure = class _DecoratedProcedure extends Procedure {
|
57
|
+
static decorate(procedure) {
|
58
|
+
if (procedure instanceof _DecoratedProcedure) {
|
59
|
+
return procedure;
|
60
|
+
}
|
61
|
+
return new _DecoratedProcedure(procedure["~orpc"]);
|
62
|
+
}
|
63
|
+
prefix(prefix) {
|
64
|
+
return new _DecoratedProcedure({
|
65
|
+
...this["~orpc"],
|
66
|
+
contract: DecoratedContractProcedure.decorate(this["~orpc"].contract).prefix(prefix)
|
67
|
+
});
|
68
|
+
}
|
69
|
+
route(route) {
|
70
|
+
return new _DecoratedProcedure({
|
71
|
+
...this["~orpc"],
|
72
|
+
contract: DecoratedContractProcedure.decorate(this["~orpc"].contract).route(route)
|
73
|
+
});
|
74
|
+
}
|
75
|
+
errors(errors) {
|
76
|
+
return new _DecoratedProcedure({
|
77
|
+
...this["~orpc"],
|
78
|
+
contract: DecoratedContractProcedure.decorate(this["~orpc"].contract).errors(errors)
|
79
|
+
});
|
80
|
+
}
|
81
|
+
use(middleware, mapInput) {
|
68
82
|
const middleware_ = mapInput ? decorateMiddleware(middleware).mapInput(mapInput) : middleware;
|
69
|
-
return
|
70
|
-
...
|
71
|
-
middlewares: [...
|
72
|
-
})
|
73
|
-
}
|
74
|
-
|
75
|
-
return
|
76
|
-
...
|
77
|
-
contract: DecoratedContractProcedure.decorate(
|
78
|
-
})
|
79
|
-
}
|
80
|
-
|
81
|
-
|
83
|
+
return new _DecoratedProcedure({
|
84
|
+
...this["~orpc"],
|
85
|
+
middlewares: [...this["~orpc"].middlewares, middleware_]
|
86
|
+
});
|
87
|
+
}
|
88
|
+
unshiftTag(...tags) {
|
89
|
+
return new _DecoratedProcedure({
|
90
|
+
...this["~orpc"],
|
91
|
+
contract: DecoratedContractProcedure.decorate(this["~orpc"].contract).unshiftTag(...tags)
|
92
|
+
});
|
93
|
+
}
|
94
|
+
unshiftMiddleware(...middlewares) {
|
95
|
+
const castedMiddlewares = middlewares;
|
96
|
+
if (this["~orpc"].middlewares.length) {
|
82
97
|
let min = 0;
|
83
|
-
for (let i = 0; i <
|
84
|
-
const index =
|
98
|
+
for (let i = 0; i < this["~orpc"].middlewares.length; i++) {
|
99
|
+
const index = castedMiddlewares.indexOf(this["~orpc"].middlewares[i], min);
|
85
100
|
if (index === -1) {
|
86
|
-
|
101
|
+
castedMiddlewares.push(...this["~orpc"].middlewares.slice(i));
|
87
102
|
break;
|
88
103
|
}
|
89
104
|
min = index + 1;
|
90
105
|
}
|
91
106
|
}
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
}
|
107
|
+
const numNewMiddlewares = castedMiddlewares.length - this["~orpc"].middlewares.length;
|
108
|
+
return new _DecoratedProcedure({
|
109
|
+
...this["~orpc"],
|
110
|
+
inputValidationIndex: this["~orpc"].inputValidationIndex + numNewMiddlewares,
|
111
|
+
outputValidationIndex: this["~orpc"].outputValidationIndex + numNewMiddlewares,
|
112
|
+
middlewares: castedMiddlewares
|
113
|
+
});
|
114
|
+
}
|
115
|
+
/**
|
116
|
+
* Make this procedure callable (works like a function while still being a procedure).
|
117
|
+
*/
|
118
|
+
callable(...rest) {
|
119
|
+
return Object.assign(createProcedureClient(this, ...rest), {
|
120
|
+
"~type": "Procedure",
|
121
|
+
"~orpc": this["~orpc"]
|
122
|
+
});
|
123
|
+
}
|
124
|
+
/**
|
125
|
+
* Make this procedure compatible with server action (the same as .callable, but the type is compatible with server action).
|
126
|
+
*/
|
127
|
+
actionable(...rest) {
|
128
|
+
return this.callable(...rest);
|
129
|
+
}
|
130
|
+
};
|
99
131
|
|
100
132
|
// src/procedure-implementer.ts
|
101
133
|
var ProcedureImplementer = class _ProcedureImplementer {
|
@@ -108,15 +140,143 @@ var ProcedureImplementer = class _ProcedureImplementer {
|
|
108
140
|
const mappedMiddleware = mapInput ? decorateMiddleware(middleware).mapInput(mapInput) : middleware;
|
109
141
|
return new _ProcedureImplementer({
|
110
142
|
...this["~orpc"],
|
111
|
-
middlewares: [...this["~orpc"].middlewares
|
143
|
+
middlewares: [...this["~orpc"].middlewares, mappedMiddleware]
|
112
144
|
});
|
113
145
|
}
|
114
146
|
handler(handler) {
|
115
|
-
return
|
116
|
-
|
117
|
-
contract: this["~orpc"].contract,
|
147
|
+
return new DecoratedProcedure({
|
148
|
+
...this["~orpc"],
|
118
149
|
handler
|
119
|
-
})
|
150
|
+
});
|
151
|
+
}
|
152
|
+
};
|
153
|
+
|
154
|
+
// src/procedure-builder-with-input.ts
|
155
|
+
var ProcedureBuilderWithInput = class _ProcedureBuilderWithInput {
|
156
|
+
"~type" = "ProcedureBuilderWithInput";
|
157
|
+
"~orpc";
|
158
|
+
constructor(def) {
|
159
|
+
this["~orpc"] = def;
|
160
|
+
}
|
161
|
+
errors(errors) {
|
162
|
+
return new _ProcedureBuilderWithInput({
|
163
|
+
...this["~orpc"],
|
164
|
+
contract: DecoratedContractProcedure2.decorate(this["~orpc"].contract).errors(errors)
|
165
|
+
});
|
166
|
+
}
|
167
|
+
route(route) {
|
168
|
+
return new _ProcedureBuilderWithInput({
|
169
|
+
...this["~orpc"],
|
170
|
+
contract: DecoratedContractProcedure2.decorate(this["~orpc"].contract).route(route)
|
171
|
+
});
|
172
|
+
}
|
173
|
+
use(middleware, mapInput) {
|
174
|
+
const maybeWithMapInput = mapInput ? decorateMiddleware(middleware).mapInput(mapInput) : middleware;
|
175
|
+
return new _ProcedureBuilderWithInput({
|
176
|
+
...this["~orpc"],
|
177
|
+
outputValidationIndex: this["~orpc"].outputValidationIndex + 1,
|
178
|
+
middlewares: [...this["~orpc"].middlewares, maybeWithMapInput]
|
179
|
+
});
|
180
|
+
}
|
181
|
+
output(schema, example) {
|
182
|
+
return new ProcedureImplementer({
|
183
|
+
...this["~orpc"],
|
184
|
+
contract: new ContractProcedureBuilderWithInput(this["~orpc"].contract["~orpc"]).output(schema, example)
|
185
|
+
});
|
186
|
+
}
|
187
|
+
handler(handler) {
|
188
|
+
return new DecoratedProcedure({
|
189
|
+
...this["~orpc"],
|
190
|
+
handler
|
191
|
+
});
|
192
|
+
}
|
193
|
+
};
|
194
|
+
|
195
|
+
// src/procedure-builder-with-output.ts
|
196
|
+
import { ContractProcedureBuilderWithOutput, DecoratedContractProcedure as DecoratedContractProcedure3 } from "@orpc/contract";
|
197
|
+
var ProcedureBuilderWithOutput = class _ProcedureBuilderWithOutput {
|
198
|
+
"~type" = "ProcedureBuilderWithOutput";
|
199
|
+
"~orpc";
|
200
|
+
constructor(def) {
|
201
|
+
this["~orpc"] = def;
|
202
|
+
}
|
203
|
+
errors(errors) {
|
204
|
+
return new _ProcedureBuilderWithOutput({
|
205
|
+
...this["~orpc"],
|
206
|
+
contract: DecoratedContractProcedure3.decorate(this["~orpc"].contract).errors(errors)
|
207
|
+
});
|
208
|
+
}
|
209
|
+
route(route) {
|
210
|
+
return new _ProcedureBuilderWithOutput({
|
211
|
+
...this["~orpc"],
|
212
|
+
contract: DecoratedContractProcedure3.decorate(this["~orpc"].contract).route(route)
|
213
|
+
});
|
214
|
+
}
|
215
|
+
use(middleware) {
|
216
|
+
return new _ProcedureBuilderWithOutput({
|
217
|
+
...this["~orpc"],
|
218
|
+
inputValidationIndex: this["~orpc"].inputValidationIndex + 1,
|
219
|
+
middlewares: [...this["~orpc"].middlewares, middleware]
|
220
|
+
});
|
221
|
+
}
|
222
|
+
input(schema, example) {
|
223
|
+
return new ProcedureImplementer({
|
224
|
+
...this["~orpc"],
|
225
|
+
contract: new ContractProcedureBuilderWithOutput(this["~orpc"].contract["~orpc"]).input(schema, example)
|
226
|
+
});
|
227
|
+
}
|
228
|
+
handler(handler) {
|
229
|
+
return new DecoratedProcedure({
|
230
|
+
...this["~orpc"],
|
231
|
+
handler
|
232
|
+
});
|
233
|
+
}
|
234
|
+
};
|
235
|
+
|
236
|
+
// src/procedure-builder.ts
|
237
|
+
var ProcedureBuilder = class _ProcedureBuilder {
|
238
|
+
"~type" = "ProcedureBuilder";
|
239
|
+
"~orpc";
|
240
|
+
constructor(def) {
|
241
|
+
this["~orpc"] = def;
|
242
|
+
}
|
243
|
+
errors(errors) {
|
244
|
+
return new _ProcedureBuilder({
|
245
|
+
...this["~orpc"],
|
246
|
+
contract: DecoratedContractProcedure4.decorate(this["~orpc"].contract).errors(errors)
|
247
|
+
});
|
248
|
+
}
|
249
|
+
route(route) {
|
250
|
+
return new _ProcedureBuilder({
|
251
|
+
...this["~orpc"],
|
252
|
+
contract: DecoratedContractProcedure4.decorate(this["~orpc"].contract).route(route)
|
253
|
+
});
|
254
|
+
}
|
255
|
+
use(middleware) {
|
256
|
+
return new _ProcedureBuilder({
|
257
|
+
...this["~orpc"],
|
258
|
+
inputValidationIndex: this["~orpc"].inputValidationIndex + 1,
|
259
|
+
outputValidationIndex: this["~orpc"].outputValidationIndex + 1,
|
260
|
+
middlewares: [...this["~orpc"].middlewares, middleware]
|
261
|
+
});
|
262
|
+
}
|
263
|
+
input(schema, example) {
|
264
|
+
return new ProcedureBuilderWithInput({
|
265
|
+
...this["~orpc"],
|
266
|
+
contract: new ContractProcedureBuilder(this["~orpc"].contract["~orpc"]).input(schema, example)
|
267
|
+
});
|
268
|
+
}
|
269
|
+
output(schema, example) {
|
270
|
+
return new ProcedureBuilderWithOutput({
|
271
|
+
...this["~orpc"],
|
272
|
+
contract: new ContractProcedureBuilder(this["~orpc"].contract["~orpc"]).output(schema, example)
|
273
|
+
});
|
274
|
+
}
|
275
|
+
handler(handler) {
|
276
|
+
return new DecoratedProcedure({
|
277
|
+
...this["~orpc"],
|
278
|
+
handler
|
279
|
+
});
|
120
280
|
}
|
121
281
|
};
|
122
282
|
|
@@ -154,31 +314,10 @@ function getLazyRouterPrefix(obj) {
|
|
154
314
|
return obj[LAZY_ROUTER_PREFIX_SYMBOL];
|
155
315
|
}
|
156
316
|
|
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
317
|
// src/lazy-decorated.ts
|
174
318
|
function decorateLazy(lazied) {
|
175
319
|
const flattenLazy = flatLazy(lazied);
|
176
|
-
const
|
177
|
-
procedure: createLazyProcedureFormAnyLazy(flattenLazy),
|
178
|
-
context: void 0
|
179
|
-
});
|
180
|
-
Object.assign(procedureProcedureClient, flattenLazy);
|
181
|
-
const recursive = new Proxy(procedureProcedureClient, {
|
320
|
+
const recursive = new Proxy(flattenLazy, {
|
182
321
|
get(target, key) {
|
183
322
|
if (typeof key !== "string") {
|
184
323
|
return Reflect.get(target, key);
|
@@ -215,10 +354,19 @@ var RouterBuilder = class _RouterBuilder {
|
|
215
354
|
tags: [...this["~orpc"].tags ?? [], ...tags]
|
216
355
|
});
|
217
356
|
}
|
357
|
+
errors(errors) {
|
358
|
+
return new _RouterBuilder({
|
359
|
+
...this["~orpc"],
|
360
|
+
errorMap: {
|
361
|
+
...this["~orpc"].errorMap,
|
362
|
+
...errors
|
363
|
+
}
|
364
|
+
});
|
365
|
+
}
|
218
366
|
use(middleware) {
|
219
367
|
return new _RouterBuilder({
|
220
368
|
...this["~orpc"],
|
221
|
-
middlewares: [...this["~orpc"].middlewares
|
369
|
+
middlewares: [...this["~orpc"].middlewares, middleware]
|
222
370
|
});
|
223
371
|
}
|
224
372
|
router(router) {
|
@@ -245,7 +393,7 @@ function adapt(item, options) {
|
|
245
393
|
return adaptedLazy;
|
246
394
|
}
|
247
395
|
if (isProcedure(item)) {
|
248
|
-
let decorated =
|
396
|
+
let decorated = DecoratedProcedure.decorate(item);
|
249
397
|
if (options.tags?.length) {
|
250
398
|
decorated = decorated.unshiftTag(...options.tags);
|
251
399
|
}
|
@@ -255,6 +403,9 @@ function adapt(item, options) {
|
|
255
403
|
if (options.middlewares?.length) {
|
256
404
|
decorated = decorated.unshiftMiddleware(...options.middlewares);
|
257
405
|
}
|
406
|
+
if (Object.keys(options.errorMap).length) {
|
407
|
+
decorated = decorated.errors(options.errorMap);
|
408
|
+
}
|
258
409
|
return decorated;
|
259
410
|
}
|
260
411
|
const adapted = {};
|
@@ -264,6 +415,213 @@ function adapt(item, options) {
|
|
264
415
|
return adapted;
|
265
416
|
}
|
266
417
|
|
418
|
+
// src/builder-with-errors-middlewares.ts
|
419
|
+
var BuilderWithErrorsMiddlewares = class _BuilderWithErrorsMiddlewares {
|
420
|
+
"~type" = "BuilderWithErrorsMiddlewares";
|
421
|
+
"~orpc";
|
422
|
+
constructor(def) {
|
423
|
+
this["~orpc"] = def;
|
424
|
+
}
|
425
|
+
errors(errors) {
|
426
|
+
return new _BuilderWithErrorsMiddlewares({
|
427
|
+
...this["~orpc"],
|
428
|
+
errorMap: {
|
429
|
+
...this["~orpc"].errorMap,
|
430
|
+
...errors
|
431
|
+
}
|
432
|
+
});
|
433
|
+
}
|
434
|
+
use(middleware) {
|
435
|
+
return new _BuilderWithErrorsMiddlewares({
|
436
|
+
...this["~orpc"],
|
437
|
+
inputValidationIndex: this["~orpc"].inputValidationIndex + 1,
|
438
|
+
outputValidationIndex: this["~orpc"].outputValidationIndex + 1,
|
439
|
+
middlewares: [...this["~orpc"].middlewares, middleware]
|
440
|
+
// FIXME: I believe we can remove `as any` here
|
441
|
+
});
|
442
|
+
}
|
443
|
+
route(route) {
|
444
|
+
return new ProcedureBuilder({
|
445
|
+
...this["~orpc"],
|
446
|
+
contract: new ContractProcedure({
|
447
|
+
route,
|
448
|
+
InputSchema: void 0,
|
449
|
+
OutputSchema: void 0,
|
450
|
+
errorMap: this["~orpc"].errorMap
|
451
|
+
})
|
452
|
+
});
|
453
|
+
}
|
454
|
+
input(schema, example) {
|
455
|
+
return new ProcedureBuilderWithInput({
|
456
|
+
...this["~orpc"],
|
457
|
+
contract: new ContractProcedure({
|
458
|
+
OutputSchema: void 0,
|
459
|
+
InputSchema: schema,
|
460
|
+
inputExample: example,
|
461
|
+
errorMap: this["~orpc"].errorMap
|
462
|
+
})
|
463
|
+
});
|
464
|
+
}
|
465
|
+
output(schema, example) {
|
466
|
+
return new ProcedureBuilderWithOutput({
|
467
|
+
...this["~orpc"],
|
468
|
+
contract: new ContractProcedure({
|
469
|
+
InputSchema: void 0,
|
470
|
+
OutputSchema: schema,
|
471
|
+
outputExample: example,
|
472
|
+
errorMap: this["~orpc"].errorMap
|
473
|
+
})
|
474
|
+
});
|
475
|
+
}
|
476
|
+
handler(handler) {
|
477
|
+
return new DecoratedProcedure({
|
478
|
+
...this["~orpc"],
|
479
|
+
contract: new ContractProcedure({
|
480
|
+
InputSchema: void 0,
|
481
|
+
OutputSchema: void 0,
|
482
|
+
errorMap: this["~orpc"].errorMap
|
483
|
+
}),
|
484
|
+
handler
|
485
|
+
});
|
486
|
+
}
|
487
|
+
prefix(prefix) {
|
488
|
+
return new RouterBuilder({
|
489
|
+
...this["~orpc"],
|
490
|
+
prefix
|
491
|
+
});
|
492
|
+
}
|
493
|
+
tag(...tags) {
|
494
|
+
return new RouterBuilder({
|
495
|
+
...this["~orpc"],
|
496
|
+
tags
|
497
|
+
});
|
498
|
+
}
|
499
|
+
router(router) {
|
500
|
+
return new RouterBuilder(this["~orpc"]).router(router);
|
501
|
+
}
|
502
|
+
lazy(loader) {
|
503
|
+
return new RouterBuilder(this["~orpc"]).lazy(loader);
|
504
|
+
}
|
505
|
+
};
|
506
|
+
|
507
|
+
// src/builder-with-errors.ts
|
508
|
+
var BuilderWithErrors = class _BuilderWithErrors {
|
509
|
+
"~type" = "BuilderWithErrors";
|
510
|
+
"~orpc";
|
511
|
+
constructor(def) {
|
512
|
+
this["~orpc"] = def;
|
513
|
+
}
|
514
|
+
context() {
|
515
|
+
return this;
|
516
|
+
}
|
517
|
+
errors(errors) {
|
518
|
+
return new _BuilderWithErrors({
|
519
|
+
...this["~orpc"],
|
520
|
+
errorMap: {
|
521
|
+
...this["~orpc"].errorMap,
|
522
|
+
...errors
|
523
|
+
}
|
524
|
+
});
|
525
|
+
}
|
526
|
+
middleware(middleware) {
|
527
|
+
return decorateMiddleware(middleware);
|
528
|
+
}
|
529
|
+
use(middleware) {
|
530
|
+
return new BuilderWithErrorsMiddlewares({
|
531
|
+
...this["~orpc"],
|
532
|
+
inputValidationIndex: 1,
|
533
|
+
outputValidationIndex: 1,
|
534
|
+
middlewares: [middleware]
|
535
|
+
// FIXME: I believe we can remove `as any` here
|
536
|
+
});
|
537
|
+
}
|
538
|
+
route(route) {
|
539
|
+
return new ProcedureBuilder({
|
540
|
+
middlewares: [],
|
541
|
+
inputValidationIndex: 0,
|
542
|
+
outputValidationIndex: 0,
|
543
|
+
contract: new ContractProcedure2({
|
544
|
+
route,
|
545
|
+
InputSchema: void 0,
|
546
|
+
OutputSchema: void 0,
|
547
|
+
errorMap: this["~orpc"].errorMap
|
548
|
+
})
|
549
|
+
});
|
550
|
+
}
|
551
|
+
input(schema, example) {
|
552
|
+
return new ProcedureBuilderWithInput({
|
553
|
+
middlewares: [],
|
554
|
+
inputValidationIndex: 0,
|
555
|
+
outputValidationIndex: 0,
|
556
|
+
contract: new ContractProcedure2({
|
557
|
+
OutputSchema: void 0,
|
558
|
+
InputSchema: schema,
|
559
|
+
inputExample: example,
|
560
|
+
errorMap: this["~orpc"].errorMap
|
561
|
+
})
|
562
|
+
});
|
563
|
+
}
|
564
|
+
output(schema, example) {
|
565
|
+
return new ProcedureBuilderWithOutput({
|
566
|
+
middlewares: [],
|
567
|
+
inputValidationIndex: 0,
|
568
|
+
outputValidationIndex: 0,
|
569
|
+
contract: new ContractProcedure2({
|
570
|
+
InputSchema: void 0,
|
571
|
+
OutputSchema: schema,
|
572
|
+
outputExample: example,
|
573
|
+
errorMap: this["~orpc"].errorMap
|
574
|
+
})
|
575
|
+
});
|
576
|
+
}
|
577
|
+
handler(handler) {
|
578
|
+
return new DecoratedProcedure({
|
579
|
+
middlewares: [],
|
580
|
+
inputValidationIndex: 0,
|
581
|
+
outputValidationIndex: 0,
|
582
|
+
contract: new ContractProcedure2({
|
583
|
+
InputSchema: void 0,
|
584
|
+
OutputSchema: void 0,
|
585
|
+
errorMap: this["~orpc"].errorMap
|
586
|
+
}),
|
587
|
+
handler
|
588
|
+
});
|
589
|
+
}
|
590
|
+
prefix(prefix) {
|
591
|
+
return new RouterBuilder({
|
592
|
+
middlewares: [],
|
593
|
+
errorMap: this["~orpc"].errorMap,
|
594
|
+
prefix
|
595
|
+
});
|
596
|
+
}
|
597
|
+
tag(...tags) {
|
598
|
+
return new RouterBuilder({
|
599
|
+
middlewares: [],
|
600
|
+
errorMap: this["~orpc"].errorMap,
|
601
|
+
tags
|
602
|
+
});
|
603
|
+
}
|
604
|
+
router(router) {
|
605
|
+
return new RouterBuilder({
|
606
|
+
middlewares: [],
|
607
|
+
...this["~orpc"]
|
608
|
+
}).router(router);
|
609
|
+
}
|
610
|
+
lazy(loader) {
|
611
|
+
return new RouterBuilder({
|
612
|
+
middlewares: [],
|
613
|
+
...this["~orpc"]
|
614
|
+
}).lazy(loader);
|
615
|
+
}
|
616
|
+
};
|
617
|
+
|
618
|
+
// src/builder-with-middlewares.ts
|
619
|
+
import { ContractProcedure as ContractProcedure3 } from "@orpc/contract";
|
620
|
+
|
621
|
+
// src/implementer-chainable.ts
|
622
|
+
import { isContractProcedure } from "@orpc/contract";
|
623
|
+
import { createCallableObject } from "@orpc/shared";
|
624
|
+
|
267
625
|
// src/router-implementer.ts
|
268
626
|
var RouterImplementer = class _RouterImplementer {
|
269
627
|
"~type" = "RouterImplementer";
|
@@ -278,31 +636,42 @@ var RouterImplementer = class _RouterImplementer {
|
|
278
636
|
});
|
279
637
|
}
|
280
638
|
router(router) {
|
281
|
-
const adapted = new RouterBuilder(
|
639
|
+
const adapted = new RouterBuilder({
|
640
|
+
...this["~orpc"],
|
641
|
+
errorMap: {}
|
642
|
+
}).router(router);
|
282
643
|
const contracted = setRouterContract(adapted, this["~orpc"].contract);
|
283
644
|
return contracted;
|
284
645
|
}
|
285
646
|
lazy(loader) {
|
286
|
-
const adapted = new RouterBuilder(
|
647
|
+
const adapted = new RouterBuilder({
|
648
|
+
...this["~orpc"],
|
649
|
+
errorMap: {}
|
650
|
+
}).lazy(loader);
|
287
651
|
const contracted = setRouterContract(adapted, this["~orpc"].contract);
|
288
652
|
return contracted;
|
289
653
|
}
|
290
654
|
};
|
291
655
|
|
292
656
|
// src/implementer-chainable.ts
|
293
|
-
function createChainableImplementer(contract,
|
657
|
+
function createChainableImplementer(contract, options) {
|
294
658
|
if (isContractProcedure(contract)) {
|
295
659
|
const implementer = new ProcedureImplementer({
|
296
660
|
contract,
|
297
|
-
middlewares
|
661
|
+
middlewares: options.middlewares,
|
662
|
+
inputValidationIndex: options.inputValidationIndex,
|
663
|
+
outputValidationIndex: options.outputValidationIndex
|
298
664
|
});
|
299
665
|
return implementer;
|
300
666
|
}
|
301
667
|
const chainable = {};
|
302
668
|
for (const key in contract) {
|
303
|
-
chainable[key] = createChainableImplementer(contract[key],
|
669
|
+
chainable[key] = createChainableImplementer(contract[key], options);
|
304
670
|
}
|
305
|
-
const routerImplementer = new RouterImplementer({
|
671
|
+
const routerImplementer = new RouterImplementer({
|
672
|
+
contract,
|
673
|
+
middlewares: options.middlewares
|
674
|
+
});
|
306
675
|
const merged = new Proxy(chainable, {
|
307
676
|
get(target, key) {
|
308
677
|
const next = Reflect.get(target, key);
|
@@ -319,187 +688,257 @@ function createChainableImplementer(contract, middlewares) {
|
|
319
688
|
return merged;
|
320
689
|
}
|
321
690
|
|
322
|
-
// src/
|
323
|
-
|
324
|
-
|
325
|
-
} from "@orpc/contract";
|
326
|
-
var ProcedureBuilder = class _ProcedureBuilder {
|
327
|
-
"~type" = "ProcedureBuilder";
|
691
|
+
// src/builder-with-middlewares.ts
|
692
|
+
var BuilderWithMiddlewares = class _BuilderWithMiddlewares {
|
693
|
+
"~type" = "BuilderHasMiddlewares";
|
328
694
|
"~orpc";
|
329
695
|
constructor(def) {
|
330
696
|
this["~orpc"] = def;
|
331
697
|
}
|
698
|
+
use(middleware) {
|
699
|
+
return new _BuilderWithMiddlewares({
|
700
|
+
...this["~orpc"],
|
701
|
+
inputValidationIndex: this["~orpc"].inputValidationIndex + 1,
|
702
|
+
outputValidationIndex: this["~orpc"].outputValidationIndex + 1,
|
703
|
+
middlewares: [...this["~orpc"].middlewares, middleware]
|
704
|
+
});
|
705
|
+
}
|
706
|
+
errors(errors) {
|
707
|
+
return new BuilderWithErrorsMiddlewares({
|
708
|
+
...this["~orpc"],
|
709
|
+
errorMap: errors
|
710
|
+
});
|
711
|
+
}
|
332
712
|
route(route) {
|
333
|
-
return new
|
713
|
+
return new ProcedureBuilder({
|
334
714
|
...this["~orpc"],
|
335
|
-
contract:
|
715
|
+
contract: new ContractProcedure3({
|
716
|
+
route,
|
717
|
+
InputSchema: void 0,
|
718
|
+
OutputSchema: void 0,
|
719
|
+
errorMap: {}
|
720
|
+
})
|
336
721
|
});
|
337
722
|
}
|
338
723
|
input(schema, example) {
|
339
|
-
return new
|
724
|
+
return new ProcedureBuilderWithInput({
|
340
725
|
...this["~orpc"],
|
341
|
-
contract:
|
726
|
+
contract: new ContractProcedure3({
|
727
|
+
OutputSchema: void 0,
|
728
|
+
InputSchema: schema,
|
729
|
+
inputExample: example,
|
730
|
+
errorMap: {}
|
731
|
+
})
|
342
732
|
});
|
343
733
|
}
|
344
734
|
output(schema, example) {
|
345
|
-
return new
|
735
|
+
return new ProcedureBuilderWithOutput({
|
346
736
|
...this["~orpc"],
|
347
|
-
contract:
|
737
|
+
contract: new ContractProcedure3({
|
738
|
+
InputSchema: void 0,
|
739
|
+
OutputSchema: schema,
|
740
|
+
outputExample: example,
|
741
|
+
errorMap: {}
|
742
|
+
})
|
348
743
|
});
|
349
744
|
}
|
350
|
-
|
351
|
-
return new
|
745
|
+
handler(handler) {
|
746
|
+
return new DecoratedProcedure({
|
352
747
|
...this["~orpc"],
|
353
|
-
contract:
|
748
|
+
contract: new ContractProcedure3({
|
749
|
+
InputSchema: void 0,
|
750
|
+
OutputSchema: void 0,
|
751
|
+
errorMap: {}
|
752
|
+
}),
|
753
|
+
handler
|
354
754
|
});
|
355
755
|
}
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
}
|
363
|
-
return new ProcedureImplementer({
|
364
|
-
contract: this["~orpc"].contract,
|
365
|
-
middlewares: this["~orpc"].middlewares
|
366
|
-
}).use(middleware, mapInput);
|
756
|
+
prefix(prefix) {
|
757
|
+
return new RouterBuilder({
|
758
|
+
middlewares: this["~orpc"].middlewares,
|
759
|
+
errorMap: {},
|
760
|
+
prefix
|
761
|
+
});
|
367
762
|
}
|
368
|
-
|
369
|
-
return
|
763
|
+
tag(...tags) {
|
764
|
+
return new RouterBuilder({
|
370
765
|
middlewares: this["~orpc"].middlewares,
|
371
|
-
|
372
|
-
|
373
|
-
})
|
766
|
+
errorMap: {},
|
767
|
+
tags
|
768
|
+
});
|
769
|
+
}
|
770
|
+
router(router) {
|
771
|
+
return new RouterBuilder({
|
772
|
+
errorMap: {},
|
773
|
+
...this["~orpc"]
|
774
|
+
}).router(router);
|
775
|
+
}
|
776
|
+
lazy(loader) {
|
777
|
+
return new RouterBuilder({
|
778
|
+
errorMap: {},
|
779
|
+
...this["~orpc"]
|
780
|
+
}).lazy(loader);
|
781
|
+
}
|
782
|
+
contract(contract) {
|
783
|
+
return createChainableImplementer(contract, this["~orpc"]);
|
374
784
|
}
|
375
785
|
};
|
376
786
|
|
377
787
|
// src/builder.ts
|
378
|
-
var Builder = class
|
788
|
+
var Builder = class {
|
379
789
|
"~type" = "Builder";
|
380
790
|
"~orpc";
|
381
791
|
constructor(def) {
|
382
792
|
this["~orpc"] = def;
|
383
793
|
}
|
384
794
|
context() {
|
385
|
-
return
|
795
|
+
return this;
|
796
|
+
}
|
797
|
+
middleware(middleware) {
|
798
|
+
return decorateMiddleware(middleware);
|
799
|
+
}
|
800
|
+
errors(errors) {
|
801
|
+
return new BuilderWithErrors({
|
802
|
+
errorMap: errors
|
803
|
+
});
|
386
804
|
}
|
387
805
|
use(middleware) {
|
388
|
-
return new
|
806
|
+
return new BuilderWithMiddlewares({
|
389
807
|
...this["~orpc"],
|
390
|
-
|
808
|
+
inputValidationIndex: 1,
|
809
|
+
outputValidationIndex: 1,
|
810
|
+
middlewares: [middleware]
|
811
|
+
// FIXME: I believe we can remove `as any` here
|
391
812
|
});
|
392
813
|
}
|
393
|
-
middleware(middleware) {
|
394
|
-
return decorateMiddleware(middleware);
|
395
|
-
}
|
396
814
|
route(route) {
|
397
815
|
return new ProcedureBuilder({
|
398
|
-
middlewares:
|
399
|
-
|
816
|
+
middlewares: [],
|
817
|
+
inputValidationIndex: 0,
|
818
|
+
outputValidationIndex: 0,
|
819
|
+
contract: new ContractProcedure4({
|
400
820
|
route,
|
401
821
|
InputSchema: void 0,
|
402
822
|
OutputSchema: void 0,
|
403
|
-
errorMap:
|
823
|
+
errorMap: {}
|
404
824
|
})
|
405
825
|
});
|
406
826
|
}
|
407
827
|
input(schema, example) {
|
408
|
-
return new
|
409
|
-
middlewares:
|
410
|
-
|
828
|
+
return new ProcedureBuilderWithInput({
|
829
|
+
middlewares: [],
|
830
|
+
inputValidationIndex: 0,
|
831
|
+
outputValidationIndex: 0,
|
832
|
+
contract: new ContractProcedure4({
|
411
833
|
OutputSchema: void 0,
|
412
834
|
InputSchema: schema,
|
413
835
|
inputExample: example,
|
414
|
-
errorMap:
|
836
|
+
errorMap: {}
|
415
837
|
})
|
416
838
|
});
|
417
839
|
}
|
418
840
|
output(schema, example) {
|
419
|
-
return new
|
420
|
-
middlewares:
|
421
|
-
|
841
|
+
return new ProcedureBuilderWithOutput({
|
842
|
+
middlewares: [],
|
843
|
+
inputValidationIndex: 0,
|
844
|
+
outputValidationIndex: 0,
|
845
|
+
contract: new ContractProcedure4({
|
422
846
|
InputSchema: void 0,
|
423
847
|
OutputSchema: schema,
|
424
848
|
outputExample: example,
|
425
|
-
errorMap:
|
426
|
-
})
|
427
|
-
});
|
428
|
-
}
|
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
|
849
|
+
errorMap: {}
|
436
850
|
})
|
437
851
|
});
|
438
852
|
}
|
439
853
|
handler(handler) {
|
440
|
-
return
|
441
|
-
middlewares:
|
442
|
-
|
854
|
+
return new DecoratedProcedure({
|
855
|
+
middlewares: [],
|
856
|
+
inputValidationIndex: 0,
|
857
|
+
outputValidationIndex: 0,
|
858
|
+
contract: new ContractProcedure4({
|
443
859
|
InputSchema: void 0,
|
444
860
|
OutputSchema: void 0,
|
445
|
-
errorMap:
|
861
|
+
errorMap: {}
|
446
862
|
}),
|
447
863
|
handler
|
448
|
-
})
|
864
|
+
});
|
449
865
|
}
|
450
866
|
prefix(prefix) {
|
451
867
|
return new RouterBuilder({
|
452
|
-
middlewares:
|
868
|
+
middlewares: [],
|
869
|
+
errorMap: {},
|
453
870
|
prefix
|
454
871
|
});
|
455
872
|
}
|
456
873
|
tag(...tags) {
|
457
874
|
return new RouterBuilder({
|
458
|
-
middlewares:
|
875
|
+
middlewares: [],
|
876
|
+
errorMap: {},
|
459
877
|
tags
|
460
878
|
});
|
461
879
|
}
|
462
880
|
router(router) {
|
463
|
-
return new RouterBuilder(
|
881
|
+
return new RouterBuilder({
|
882
|
+
middlewares: [],
|
883
|
+
errorMap: []
|
884
|
+
}).router(router);
|
464
885
|
}
|
465
886
|
lazy(loader) {
|
466
|
-
return new RouterBuilder(
|
887
|
+
return new RouterBuilder({
|
888
|
+
middlewares: [],
|
889
|
+
errorMap: {}
|
890
|
+
}).lazy(loader);
|
467
891
|
}
|
468
892
|
contract(contract) {
|
469
|
-
return createChainableImplementer(contract,
|
893
|
+
return createChainableImplementer(contract, {
|
894
|
+
middlewares: [],
|
895
|
+
inputValidationIndex: 0,
|
896
|
+
outputValidationIndex: 0
|
897
|
+
});
|
470
898
|
}
|
471
899
|
};
|
472
900
|
|
901
|
+
// src/procedure-utils.ts
|
902
|
+
function call(procedure, input, ...rest) {
|
903
|
+
return createProcedureClient(procedure, ...rest)(input);
|
904
|
+
}
|
905
|
+
|
906
|
+
// src/lazy-utils.ts
|
907
|
+
function createLazyProcedureFormAnyLazy(lazied) {
|
908
|
+
const lazyProcedure = lazy(async () => {
|
909
|
+
const { default: maybeProcedure } = await unlazy(flatLazy(lazied));
|
910
|
+
if (!isProcedure(maybeProcedure)) {
|
911
|
+
throw new Error(`
|
912
|
+
Expected a lazy<procedure> but got lazy<unknown>.
|
913
|
+
This should be caught by TypeScript compilation.
|
914
|
+
Please report this issue if this makes you feel uncomfortable.
|
915
|
+
`);
|
916
|
+
}
|
917
|
+
return { default: maybeProcedure };
|
918
|
+
});
|
919
|
+
return lazyProcedure;
|
920
|
+
}
|
921
|
+
|
473
922
|
// src/router-client.ts
|
474
|
-
function createRouterClient(
|
475
|
-
if (isProcedure(
|
476
|
-
const caller = createProcedureClient(
|
477
|
-
...options,
|
478
|
-
procedure: options.router,
|
479
|
-
context: options.context,
|
480
|
-
path: options.path
|
481
|
-
});
|
923
|
+
function createRouterClient(router, ...rest) {
|
924
|
+
if (isProcedure(router)) {
|
925
|
+
const caller = createProcedureClient(router, ...rest);
|
482
926
|
return caller;
|
483
927
|
}
|
484
|
-
const procedureCaller = isLazy(
|
485
|
-
...options,
|
486
|
-
procedure: createLazyProcedureFormAnyLazy(options.router),
|
487
|
-
context: options.context,
|
488
|
-
path: options.path
|
489
|
-
}) : {};
|
928
|
+
const procedureCaller = isLazy(router) ? createProcedureClient(createLazyProcedureFormAnyLazy(router), ...rest) : {};
|
490
929
|
const recursive = new Proxy(procedureCaller, {
|
491
930
|
get(target, key) {
|
492
931
|
if (typeof key !== "string") {
|
493
932
|
return Reflect.get(target, key);
|
494
933
|
}
|
495
|
-
const next = getRouterChild(
|
934
|
+
const next = getRouterChild(router, key);
|
496
935
|
if (!next) {
|
497
936
|
return Reflect.get(target, key);
|
498
937
|
}
|
499
|
-
|
938
|
+
const [options] = rest;
|
939
|
+
return createRouterClient(next, {
|
500
940
|
...options,
|
501
|
-
|
502
|
-
path: [...options.path ?? [], key]
|
941
|
+
path: [...options?.path ?? [], key]
|
503
942
|
});
|
504
943
|
}
|
505
944
|
});
|
@@ -507,10 +946,11 @@ function createRouterClient(options) {
|
|
507
946
|
}
|
508
947
|
|
509
948
|
// src/index.ts
|
510
|
-
import { configGlobal, fallbackToGlobalConfig, isDefinedError, ORPCError, safe } from "@orpc/contract";
|
949
|
+
import { configGlobal, fallbackToGlobalConfig, isDefinedError, ORPCError, safe, type } from "@orpc/contract";
|
511
950
|
var os = new Builder({});
|
512
951
|
export {
|
513
952
|
Builder,
|
953
|
+
DecoratedProcedure,
|
514
954
|
LAZY_LOADER_SYMBOL,
|
515
955
|
ORPCError,
|
516
956
|
Procedure,
|
@@ -518,6 +958,7 @@ export {
|
|
518
958
|
ProcedureImplementer,
|
519
959
|
RouterBuilder,
|
520
960
|
RouterImplementer,
|
961
|
+
call,
|
521
962
|
configGlobal,
|
522
963
|
createChainableImplementer,
|
523
964
|
createORPCErrorConstructorMap,
|
@@ -525,7 +966,6 @@ export {
|
|
525
966
|
createRouterClient,
|
526
967
|
decorateLazy,
|
527
968
|
decorateMiddleware,
|
528
|
-
decorateProcedure,
|
529
969
|
deepSetLazyRouterPrefix,
|
530
970
|
fallbackToGlobalConfig,
|
531
971
|
flatLazy,
|
@@ -537,9 +977,11 @@ export {
|
|
537
977
|
isProcedure,
|
538
978
|
lazy,
|
539
979
|
mergeContext,
|
980
|
+
middlewareOutputFn,
|
540
981
|
os,
|
541
982
|
safe,
|
542
983
|
setRouterContract,
|
984
|
+
type,
|
543
985
|
unlazy
|
544
986
|
};
|
545
987
|
//# sourceMappingURL=index.js.map
|