@orpc/server 0.29.0 → 0.30.0
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-VY6NXNQT.js → chunk-2HRHHZJD.js} +2 -2
- package/dist/{chunk-XDC42C3C.js → chunk-SA7HGGVY.js} +47 -32
- package/dist/fetch.js +2 -2
- package/dist/hono.js +2 -2
- package/dist/index.js +76 -35
- package/dist/next.js +2 -2
- package/dist/node.js +2 -2
- package/dist/src/builder.d.ts +22 -20
- package/dist/src/error.d.ts +1 -1
- package/dist/src/hidden.d.ts +2 -2
- package/dist/src/implementer-chainable.d.ts +3 -3
- package/dist/src/index.d.ts +1 -1
- package/dist/src/middleware.d.ts +1 -0
- package/dist/src/procedure-builder.d.ts +3 -3
- package/dist/src/procedure-decorated.d.ts +5 -4
- package/dist/src/procedure-implementer.d.ts +2 -1
- package/dist/src/procedure.d.ts +3 -2
- package/dist/src/router-builder.d.ts +16 -14
- package/dist/src/router-implementer.d.ts +6 -6
- package/dist/src/router.d.ts +2 -2
- package/package.json +3 -3
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
getRouterChild,
|
|
5
5
|
isProcedure,
|
|
6
6
|
unlazy
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-SA7HGGVY.js";
|
|
8
8
|
|
|
9
9
|
// src/adapters/fetch/super-json.ts
|
|
10
10
|
var super_json_exports = {};
|
|
@@ -298,4 +298,4 @@ export {
|
|
|
298
298
|
ORPCProcedureMatcher,
|
|
299
299
|
RPCHandler
|
|
300
300
|
};
|
|
301
|
-
//# sourceMappingURL=chunk-
|
|
301
|
+
//# sourceMappingURL=chunk-2HRHHZJD.js.map
|
|
@@ -36,9 +36,6 @@ function isProcedure(item) {
|
|
|
36
36
|
import { ORPCError } from "@orpc/contract";
|
|
37
37
|
function createORPCErrorConstructorMap(errors) {
|
|
38
38
|
const constructors = {};
|
|
39
|
-
if (!errors) {
|
|
40
|
-
return constructors;
|
|
41
|
-
}
|
|
42
39
|
for (const code in errors) {
|
|
43
40
|
const config = errors[code];
|
|
44
41
|
if (!config) {
|
|
@@ -86,6 +83,11 @@ function flatLazy(lazied) {
|
|
|
86
83
|
return lazy(flattenLoader);
|
|
87
84
|
}
|
|
88
85
|
|
|
86
|
+
// src/middleware.ts
|
|
87
|
+
function middlewareOutputFn(output) {
|
|
88
|
+
return { output, context: void 0 };
|
|
89
|
+
}
|
|
90
|
+
|
|
89
91
|
// src/procedure-client.ts
|
|
90
92
|
import { ORPCError as ORPCError2, validateORPCError, ValidationError } from "@orpc/contract";
|
|
91
93
|
import { executeWithHooks, toError, value } from "@orpc/shared";
|
|
@@ -94,30 +96,22 @@ function createProcedureClient(lazyableProcedure, ...[options]) {
|
|
|
94
96
|
const path = options?.path ?? [];
|
|
95
97
|
const { default: procedure } = await unlazy(lazyableProcedure);
|
|
96
98
|
const context = await value(options?.context, callerOptions?.context);
|
|
97
|
-
const
|
|
99
|
+
const errors = createORPCErrorConstructorMap(procedure["~orpc"].contract["~orpc"].errorMap);
|
|
100
|
+
const executeOptions = {
|
|
101
|
+
input,
|
|
102
|
+
context,
|
|
103
|
+
errors,
|
|
98
104
|
path,
|
|
99
105
|
procedure,
|
|
100
106
|
signal: callerOptions?.signal
|
|
101
107
|
};
|
|
102
|
-
const executeWithValidation = async () => {
|
|
103
|
-
const validInput = await validateInput(procedure, input);
|
|
104
|
-
const output = await executeMiddlewareChain({
|
|
105
|
-
context,
|
|
106
|
-
input: validInput,
|
|
107
|
-
path,
|
|
108
|
-
procedure,
|
|
109
|
-
signal: callerOptions?.signal,
|
|
110
|
-
errors: createORPCErrorConstructorMap(procedure["~orpc"].contract["~orpc"].errorMap)
|
|
111
|
-
});
|
|
112
|
-
return validateOutput(procedure, output);
|
|
113
|
-
};
|
|
114
108
|
try {
|
|
115
109
|
const output = await executeWithHooks({
|
|
116
110
|
hooks: options,
|
|
117
111
|
input,
|
|
118
112
|
context,
|
|
119
|
-
meta,
|
|
120
|
-
execute:
|
|
113
|
+
meta: executeOptions,
|
|
114
|
+
execute: () => executeProcedureInternal(procedure, executeOptions)
|
|
121
115
|
});
|
|
122
116
|
return output;
|
|
123
117
|
} catch (e) {
|
|
@@ -160,24 +154,44 @@ async function validateOutput(procedure, output) {
|
|
|
160
154
|
}
|
|
161
155
|
return result.value;
|
|
162
156
|
}
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
let currentMidIndex = 0;
|
|
157
|
+
function executeMiddlewareChain(middlewares, opt, input) {
|
|
158
|
+
let currentIndex = 0;
|
|
166
159
|
let currentContext = opt.context;
|
|
167
|
-
const
|
|
168
|
-
const mid = middlewares[
|
|
169
|
-
|
|
160
|
+
const executeMiddlewareChain2 = async (nextOptions) => {
|
|
161
|
+
const mid = middlewares[currentIndex];
|
|
162
|
+
currentIndex += 1;
|
|
170
163
|
currentContext = mergeContext(currentContext, nextOptions.context);
|
|
171
164
|
if (mid) {
|
|
172
|
-
return await mid({ ...opt, context: currentContext, next },
|
|
165
|
+
return await mid({ ...opt, context: currentContext, next: executeMiddlewareChain2 }, input, middlewareOutputFn);
|
|
173
166
|
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
167
|
+
return opt.next({ context: currentContext });
|
|
168
|
+
};
|
|
169
|
+
return executeMiddlewareChain2({});
|
|
170
|
+
}
|
|
171
|
+
async function executeProcedureInternal(procedure, options) {
|
|
172
|
+
const executeHandler = async (context, input) => {
|
|
173
|
+
return await procedure["~orpc"].handler({ ...options, context, input });
|
|
174
|
+
};
|
|
175
|
+
const executePostMiddlewares = async (context, input) => {
|
|
176
|
+
const validatedInput = await validateInput(procedure, input);
|
|
177
|
+
const result2 = await executeMiddlewareChain(procedure["~orpc"].postMiddlewares, {
|
|
178
|
+
...options,
|
|
179
|
+
context,
|
|
180
|
+
next: async ({ context: context2 }) => {
|
|
181
|
+
return middlewareOutputFn(
|
|
182
|
+
await executeHandler(context2, validatedInput)
|
|
183
|
+
);
|
|
184
|
+
}
|
|
185
|
+
}, validatedInput);
|
|
186
|
+
const validatedOutput = await validateOutput(procedure, result2.output);
|
|
187
|
+
return { ...result2, output: validatedOutput };
|
|
179
188
|
};
|
|
180
|
-
|
|
189
|
+
const result = await executeMiddlewareChain(procedure["~orpc"].preMiddlewares, {
|
|
190
|
+
...options,
|
|
191
|
+
context: options.context,
|
|
192
|
+
next: ({ context }) => executePostMiddlewares(context, options.input)
|
|
193
|
+
}, options.input);
|
|
194
|
+
return result.output;
|
|
181
195
|
}
|
|
182
196
|
|
|
183
197
|
// src/router.ts
|
|
@@ -221,7 +235,8 @@ export {
|
|
|
221
235
|
isLazy,
|
|
222
236
|
unlazy,
|
|
223
237
|
flatLazy,
|
|
238
|
+
middlewareOutputFn,
|
|
224
239
|
createProcedureClient,
|
|
225
240
|
getRouterChild
|
|
226
241
|
};
|
|
227
|
-
//# sourceMappingURL=chunk-
|
|
242
|
+
//# sourceMappingURL=chunk-SA7HGGVY.js.map
|
package/dist/fetch.js
CHANGED
package/dist/hono.js
CHANGED
|
@@ -4,8 +4,8 @@ import {
|
|
|
4
4
|
ORPCProcedureMatcher,
|
|
5
5
|
RPCHandler,
|
|
6
6
|
super_json_exports
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-2HRHHZJD.js";
|
|
8
|
+
import "./chunk-SA7HGGVY.js";
|
|
9
9
|
|
|
10
10
|
// src/adapters/hono/middleware.ts
|
|
11
11
|
import { value } from "@orpc/shared";
|
package/dist/index.js
CHANGED
|
@@ -9,8 +9,9 @@ import {
|
|
|
9
9
|
isProcedure,
|
|
10
10
|
lazy,
|
|
11
11
|
mergeContext,
|
|
12
|
+
middlewareOutputFn,
|
|
12
13
|
unlazy
|
|
13
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-SA7HGGVY.js";
|
|
14
15
|
|
|
15
16
|
// src/builder.ts
|
|
16
17
|
import { ContractProcedure } from "@orpc/contract";
|
|
@@ -64,11 +65,17 @@ var DecoratedProcedure = class _DecoratedProcedure extends Procedure {
|
|
|
64
65
|
contract: DecoratedContractProcedure.decorate(this["~orpc"].contract).route(route)
|
|
65
66
|
});
|
|
66
67
|
}
|
|
68
|
+
errors(errors) {
|
|
69
|
+
return new _DecoratedProcedure({
|
|
70
|
+
...this["~orpc"],
|
|
71
|
+
contract: DecoratedContractProcedure.decorate(this["~orpc"].contract).errors(errors)
|
|
72
|
+
});
|
|
73
|
+
}
|
|
67
74
|
use(middleware, mapInput) {
|
|
68
75
|
const middleware_ = mapInput ? decorateMiddleware(middleware).mapInput(mapInput) : middleware;
|
|
69
76
|
return new _DecoratedProcedure({
|
|
70
77
|
...this["~orpc"],
|
|
71
|
-
|
|
78
|
+
postMiddlewares: [...this["~orpc"].postMiddlewares, middleware_]
|
|
72
79
|
});
|
|
73
80
|
}
|
|
74
81
|
unshiftTag(...tags) {
|
|
@@ -79,12 +86,12 @@ var DecoratedProcedure = class _DecoratedProcedure extends Procedure {
|
|
|
79
86
|
}
|
|
80
87
|
unshiftMiddleware(...middlewares) {
|
|
81
88
|
const castedMiddlewares = middlewares;
|
|
82
|
-
if (this["~orpc"].
|
|
89
|
+
if (this["~orpc"].preMiddlewares.length) {
|
|
83
90
|
let min = 0;
|
|
84
|
-
for (let i = 0; i < this["~orpc"].
|
|
85
|
-
const index = castedMiddlewares.indexOf(this["~orpc"].
|
|
91
|
+
for (let i = 0; i < this["~orpc"].preMiddlewares.length; i++) {
|
|
92
|
+
const index = castedMiddlewares.indexOf(this["~orpc"].preMiddlewares[i], min);
|
|
86
93
|
if (index === -1) {
|
|
87
|
-
castedMiddlewares.push(...this["~orpc"].
|
|
94
|
+
castedMiddlewares.push(...this["~orpc"].preMiddlewares.slice(i));
|
|
88
95
|
break;
|
|
89
96
|
}
|
|
90
97
|
min = index + 1;
|
|
@@ -92,7 +99,7 @@ var DecoratedProcedure = class _DecoratedProcedure extends Procedure {
|
|
|
92
99
|
}
|
|
93
100
|
return new _DecoratedProcedure({
|
|
94
101
|
...this["~orpc"],
|
|
95
|
-
|
|
102
|
+
preMiddlewares: castedMiddlewares
|
|
96
103
|
});
|
|
97
104
|
}
|
|
98
105
|
/**
|
|
@@ -122,12 +129,13 @@ var ProcedureImplementer = class _ProcedureImplementer {
|
|
|
122
129
|
const mappedMiddleware = mapInput ? decorateMiddleware(middleware).mapInput(mapInput) : middleware;
|
|
123
130
|
return new _ProcedureImplementer({
|
|
124
131
|
...this["~orpc"],
|
|
125
|
-
|
|
132
|
+
postMiddlewares: [...this["~orpc"].postMiddlewares, mappedMiddleware]
|
|
126
133
|
});
|
|
127
134
|
}
|
|
128
135
|
handler(handler) {
|
|
129
136
|
return new DecoratedProcedure({
|
|
130
|
-
|
|
137
|
+
postMiddlewares: this["~orpc"].postMiddlewares,
|
|
138
|
+
preMiddlewares: this["~orpc"].preMiddlewares,
|
|
131
139
|
contract: this["~orpc"].contract,
|
|
132
140
|
handler
|
|
133
141
|
});
|
|
@@ -208,10 +216,19 @@ var RouterBuilder = class _RouterBuilder {
|
|
|
208
216
|
tags: [...this["~orpc"].tags ?? [], ...tags]
|
|
209
217
|
});
|
|
210
218
|
}
|
|
219
|
+
errors(errors) {
|
|
220
|
+
return new _RouterBuilder({
|
|
221
|
+
...this["~orpc"],
|
|
222
|
+
errorMap: {
|
|
223
|
+
...this["~orpc"].errorMap,
|
|
224
|
+
...errors
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
}
|
|
211
228
|
use(middleware) {
|
|
212
229
|
return new _RouterBuilder({
|
|
213
230
|
...this["~orpc"],
|
|
214
|
-
middlewares: [...this["~orpc"].middlewares
|
|
231
|
+
middlewares: [...this["~orpc"].middlewares, middleware]
|
|
215
232
|
});
|
|
216
233
|
}
|
|
217
234
|
router(router) {
|
|
@@ -248,6 +265,9 @@ function adapt(item, options) {
|
|
|
248
265
|
if (options.middlewares?.length) {
|
|
249
266
|
decorated = decorated.unshiftMiddleware(...options.middlewares);
|
|
250
267
|
}
|
|
268
|
+
if (Object.keys(options.errorMap).length) {
|
|
269
|
+
decorated = decorated.errors(options.errorMap);
|
|
270
|
+
}
|
|
251
271
|
return decorated;
|
|
252
272
|
}
|
|
253
273
|
const adapted = {};
|
|
@@ -271,23 +291,30 @@ var RouterImplementer = class _RouterImplementer {
|
|
|
271
291
|
});
|
|
272
292
|
}
|
|
273
293
|
router(router) {
|
|
274
|
-
const adapted = new RouterBuilder(
|
|
294
|
+
const adapted = new RouterBuilder({
|
|
295
|
+
...this["~orpc"],
|
|
296
|
+
errorMap: {}
|
|
297
|
+
}).router(router);
|
|
275
298
|
const contracted = setRouterContract(adapted, this["~orpc"].contract);
|
|
276
299
|
return contracted;
|
|
277
300
|
}
|
|
278
301
|
lazy(loader) {
|
|
279
|
-
const adapted = new RouterBuilder(
|
|
302
|
+
const adapted = new RouterBuilder({
|
|
303
|
+
...this["~orpc"],
|
|
304
|
+
errorMap: {}
|
|
305
|
+
}).lazy(loader);
|
|
280
306
|
const contracted = setRouterContract(adapted, this["~orpc"].contract);
|
|
281
307
|
return contracted;
|
|
282
308
|
}
|
|
283
309
|
};
|
|
284
310
|
|
|
285
311
|
// src/implementer-chainable.ts
|
|
286
|
-
function createChainableImplementer(contract, middlewares) {
|
|
312
|
+
function createChainableImplementer(contract, middlewares = []) {
|
|
287
313
|
if (isContractProcedure(contract)) {
|
|
288
314
|
const implementer = new ProcedureImplementer({
|
|
289
315
|
contract,
|
|
290
|
-
middlewares
|
|
316
|
+
preMiddlewares: middlewares,
|
|
317
|
+
postMiddlewares: []
|
|
291
318
|
});
|
|
292
319
|
return implementer;
|
|
293
320
|
}
|
|
@@ -350,17 +377,20 @@ var ProcedureBuilder = class _ProcedureBuilder {
|
|
|
350
377
|
if (!mapInput) {
|
|
351
378
|
return new ProcedureImplementer({
|
|
352
379
|
contract: this["~orpc"].contract,
|
|
353
|
-
|
|
380
|
+
preMiddlewares: this["~orpc"].middlewares,
|
|
381
|
+
postMiddlewares: []
|
|
354
382
|
}).use(middleware);
|
|
355
383
|
}
|
|
356
384
|
return new ProcedureImplementer({
|
|
357
385
|
contract: this["~orpc"].contract,
|
|
358
|
-
|
|
386
|
+
preMiddlewares: this["~orpc"].middlewares,
|
|
387
|
+
postMiddlewares: []
|
|
359
388
|
}).use(middleware, mapInput);
|
|
360
389
|
}
|
|
361
390
|
handler(handler) {
|
|
362
391
|
return new DecoratedProcedure({
|
|
363
|
-
|
|
392
|
+
preMiddlewares: this["~orpc"].middlewares,
|
|
393
|
+
postMiddlewares: [],
|
|
364
394
|
contract: this["~orpc"].contract,
|
|
365
395
|
handler
|
|
366
396
|
});
|
|
@@ -374,15 +404,29 @@ var Builder = class _Builder {
|
|
|
374
404
|
constructor(def) {
|
|
375
405
|
this["~orpc"] = def;
|
|
376
406
|
}
|
|
407
|
+
// TODO: separate it
|
|
377
408
|
context() {
|
|
378
|
-
return new _Builder({
|
|
409
|
+
return new _Builder({
|
|
410
|
+
middlewares: [],
|
|
411
|
+
errorMap: {}
|
|
412
|
+
});
|
|
379
413
|
}
|
|
380
414
|
use(middleware) {
|
|
381
415
|
return new _Builder({
|
|
382
416
|
...this["~orpc"],
|
|
383
|
-
middlewares: [...this["~orpc"].middlewares
|
|
417
|
+
middlewares: [...this["~orpc"].middlewares, middleware]
|
|
384
418
|
});
|
|
385
419
|
}
|
|
420
|
+
errors(errors) {
|
|
421
|
+
return new _Builder({
|
|
422
|
+
...this["~orpc"],
|
|
423
|
+
errorMap: {
|
|
424
|
+
...this["~orpc"].errorMap,
|
|
425
|
+
...errors
|
|
426
|
+
}
|
|
427
|
+
});
|
|
428
|
+
}
|
|
429
|
+
// TODO: not allow define middleware after has context, or anything else
|
|
386
430
|
middleware(middleware) {
|
|
387
431
|
return decorateMiddleware(middleware);
|
|
388
432
|
}
|
|
@@ -393,7 +437,7 @@ var Builder = class _Builder {
|
|
|
393
437
|
route,
|
|
394
438
|
InputSchema: void 0,
|
|
395
439
|
OutputSchema: void 0,
|
|
396
|
-
errorMap:
|
|
440
|
+
errorMap: this["~orpc"].errorMap
|
|
397
441
|
})
|
|
398
442
|
});
|
|
399
443
|
}
|
|
@@ -404,7 +448,7 @@ var Builder = class _Builder {
|
|
|
404
448
|
OutputSchema: void 0,
|
|
405
449
|
InputSchema: schema,
|
|
406
450
|
inputExample: example,
|
|
407
|
-
errorMap:
|
|
451
|
+
errorMap: this["~orpc"].errorMap
|
|
408
452
|
})
|
|
409
453
|
});
|
|
410
454
|
}
|
|
@@ -415,27 +459,18 @@ var Builder = class _Builder {
|
|
|
415
459
|
InputSchema: void 0,
|
|
416
460
|
OutputSchema: schema,
|
|
417
461
|
outputExample: example,
|
|
418
|
-
errorMap:
|
|
419
|
-
})
|
|
420
|
-
});
|
|
421
|
-
}
|
|
422
|
-
errors(errors) {
|
|
423
|
-
return new ProcedureBuilder({
|
|
424
|
-
middlewares: this["~orpc"].middlewares,
|
|
425
|
-
contract: new ContractProcedure({
|
|
426
|
-
InputSchema: void 0,
|
|
427
|
-
OutputSchema: void 0,
|
|
428
|
-
errorMap: errors
|
|
462
|
+
errorMap: this["~orpc"].errorMap
|
|
429
463
|
})
|
|
430
464
|
});
|
|
431
465
|
}
|
|
432
466
|
handler(handler) {
|
|
433
467
|
return new DecoratedProcedure({
|
|
434
|
-
|
|
468
|
+
preMiddlewares: this["~orpc"].middlewares,
|
|
469
|
+
postMiddlewares: [],
|
|
435
470
|
contract: new ContractProcedure({
|
|
436
471
|
InputSchema: void 0,
|
|
437
472
|
OutputSchema: void 0,
|
|
438
|
-
errorMap:
|
|
473
|
+
errorMap: this["~orpc"].errorMap
|
|
439
474
|
}),
|
|
440
475
|
handler
|
|
441
476
|
});
|
|
@@ -443,12 +478,14 @@ var Builder = class _Builder {
|
|
|
443
478
|
prefix(prefix) {
|
|
444
479
|
return new RouterBuilder({
|
|
445
480
|
middlewares: this["~orpc"].middlewares,
|
|
481
|
+
errorMap: this["~orpc"].errorMap,
|
|
446
482
|
prefix
|
|
447
483
|
});
|
|
448
484
|
}
|
|
449
485
|
tag(...tags) {
|
|
450
486
|
return new RouterBuilder({
|
|
451
487
|
middlewares: this["~orpc"].middlewares,
|
|
488
|
+
errorMap: this["~orpc"].errorMap,
|
|
452
489
|
tags
|
|
453
490
|
});
|
|
454
491
|
}
|
|
@@ -512,7 +549,10 @@ function createRouterClient(router, ...rest) {
|
|
|
512
549
|
|
|
513
550
|
// src/index.ts
|
|
514
551
|
import { configGlobal, fallbackToGlobalConfig, isDefinedError, ORPCError, safe } from "@orpc/contract";
|
|
515
|
-
var os = new Builder({
|
|
552
|
+
var os = new Builder({
|
|
553
|
+
middlewares: [],
|
|
554
|
+
errorMap: {}
|
|
555
|
+
});
|
|
516
556
|
export {
|
|
517
557
|
Builder,
|
|
518
558
|
DecoratedProcedure,
|
|
@@ -542,6 +582,7 @@ export {
|
|
|
542
582
|
isProcedure,
|
|
543
583
|
lazy,
|
|
544
584
|
mergeContext,
|
|
585
|
+
middlewareOutputFn,
|
|
545
586
|
os,
|
|
546
587
|
safe,
|
|
547
588
|
setRouterContract,
|
package/dist/next.js
CHANGED
|
@@ -4,8 +4,8 @@ import {
|
|
|
4
4
|
ORPCProcedureMatcher,
|
|
5
5
|
RPCHandler,
|
|
6
6
|
super_json_exports
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-2HRHHZJD.js";
|
|
8
|
+
import "./chunk-SA7HGGVY.js";
|
|
9
9
|
|
|
10
10
|
// src/adapters/next/serve.ts
|
|
11
11
|
import { value } from "@orpc/shared";
|
package/dist/node.js
CHANGED
package/dist/src/builder.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ContractRouter, ErrorMap, ErrorMapGuard, ErrorMapSuggestions, HTTPPath, RouteOptions, Schema, SchemaInput, SchemaOutput, StrictErrorMap } from '@orpc/contract';
|
|
2
|
+
import type { ORPCErrorConstructorMap } from './error';
|
|
2
3
|
import type { FlattenLazy } from './lazy';
|
|
3
4
|
import type { Middleware } from './middleware';
|
|
4
5
|
import type { DecoratedMiddleware } from './middleware-decorated';
|
|
@@ -10,27 +11,28 @@ import { type ChainableImplementer } from './implementer-chainable';
|
|
|
10
11
|
import { ProcedureBuilder } from './procedure-builder';
|
|
11
12
|
import { DecoratedProcedure } from './procedure-decorated';
|
|
12
13
|
import { RouterBuilder } from './router-builder';
|
|
13
|
-
export interface BuilderDef<TContext extends Context, TExtraContext extends Context> {
|
|
14
|
-
middlewares
|
|
14
|
+
export interface BuilderDef<TContext extends Context, TExtraContext extends Context, TErrorMap extends ErrorMap> {
|
|
15
|
+
middlewares: Middleware<MergeContext<TContext, TExtraContext>, Partial<TExtraContext> | undefined, unknown, any, Record<never, never>>[];
|
|
16
|
+
errorMap: TErrorMap;
|
|
15
17
|
}
|
|
16
|
-
export declare class Builder<TContext extends Context, TExtraContext extends Context> {
|
|
18
|
+
export declare class Builder<TContext extends Context, TExtraContext extends Context, TErrorMap extends ErrorMap> {
|
|
17
19
|
'~type': "Builder";
|
|
18
|
-
'~orpc': BuilderDef<TContext, TExtraContext>;
|
|
19
|
-
constructor(def: BuilderDef<TContext, TExtraContext>);
|
|
20
|
-
context<UContext extends Context = WELL_CONTEXT>(): Builder<UContext, undefined
|
|
21
|
-
use<U extends Context & Partial<MergeContext<TContext, TExtraContext>> | undefined = undefined>(middleware: Middleware<MergeContext<TContext, TExtraContext>, U, unknown, unknown,
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
handler<UFuncOutput = undefined>(handler: ProcedureHandler<TContext, TExtraContext, undefined, undefined, UFuncOutput,
|
|
28
|
-
prefix(prefix: HTTPPath): RouterBuilder<TContext, TExtraContext>;
|
|
29
|
-
tag(...tags: string[]): RouterBuilder<TContext, TExtraContext>;
|
|
30
|
-
router<U extends Router<MergeContext<TContext, TExtraContext>,
|
|
31
|
-
lazy<U extends Router<MergeContext<TContext, TExtraContext>,
|
|
20
|
+
'~orpc': BuilderDef<TContext, TExtraContext, TErrorMap>;
|
|
21
|
+
constructor(def: BuilderDef<TContext, TExtraContext, TErrorMap>);
|
|
22
|
+
context<UContext extends Context = WELL_CONTEXT>(): Builder<UContext, undefined, Record<never, never>>;
|
|
23
|
+
use<U extends Context & Partial<MergeContext<TContext, TExtraContext>> | undefined = undefined>(middleware: Middleware<MergeContext<TContext, TExtraContext>, U, unknown, unknown, ORPCErrorConstructorMap<TErrorMap>>): Builder<TContext, MergeContext<TExtraContext, U>, TErrorMap>;
|
|
24
|
+
errors<U extends ErrorMap & ErrorMapGuard<TErrorMap> & ErrorMapSuggestions>(errors: U): Builder<TContext, TExtraContext, TErrorMap & U>;
|
|
25
|
+
middleware<UExtraContext extends Context & Partial<MergeContext<TContext, TExtraContext>> | undefined = undefined, TInput = unknown, TOutput = any>(middleware: Middleware<MergeContext<TContext, TExtraContext>, UExtraContext, TInput, TOutput, Record<never, never>>): DecoratedMiddleware<MergeContext<TContext, TExtraContext>, UExtraContext, TInput, TOutput, Record<never, never>>;
|
|
26
|
+
route(route: RouteOptions): ProcedureBuilder<TContext, TExtraContext, undefined, undefined, TErrorMap>;
|
|
27
|
+
input<USchema extends Schema>(schema: USchema, example?: SchemaInput<USchema>): ProcedureBuilder<TContext, TExtraContext, USchema, undefined, TErrorMap>;
|
|
28
|
+
output<USchema extends Schema>(schema: USchema, example?: SchemaOutput<USchema>): ProcedureBuilder<TContext, TExtraContext, undefined, USchema, TErrorMap>;
|
|
29
|
+
handler<UFuncOutput = undefined>(handler: ProcedureHandler<TContext, TExtraContext, undefined, undefined, UFuncOutput, TErrorMap>): DecoratedProcedure<TContext, TExtraContext, undefined, undefined, UFuncOutput, TErrorMap>;
|
|
30
|
+
prefix(prefix: HTTPPath): RouterBuilder<TContext, TExtraContext, TErrorMap>;
|
|
31
|
+
tag(...tags: string[]): RouterBuilder<TContext, TExtraContext, TErrorMap>;
|
|
32
|
+
router<U extends Router<MergeContext<TContext, TExtraContext>, ContractRouter<ErrorMap & Partial<StrictErrorMap<TErrorMap>>>>>(router: U): AdaptedRouter<TContext, U, TErrorMap>;
|
|
33
|
+
lazy<U extends Router<MergeContext<TContext, TExtraContext>, ContractRouter<ErrorMap & Partial<StrictErrorMap<TErrorMap>>>>>(loader: () => Promise<{
|
|
32
34
|
default: U;
|
|
33
|
-
}>): AdaptedRouter<TContext, FlattenLazy<U
|
|
34
|
-
contract<U extends
|
|
35
|
+
}>): AdaptedRouter<TContext, FlattenLazy<U>, TErrorMap>;
|
|
36
|
+
contract<U extends ContractRouter<any>>(contract: U): ChainableImplementer<TContext, TExtraContext, U>;
|
|
35
37
|
}
|
|
36
38
|
//# sourceMappingURL=builder.d.ts.map
|
package/dist/src/error.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { ORPCError } from '@orpc/contract';
|
|
|
3
3
|
export type ORPCErrorConstructorMapItemOptions<TData> = Omit<ORPCErrorOptions<any, TData>, 'defined' | 'code' | 'status'>;
|
|
4
4
|
export type ORPCErrorConstructorMapItemRest<TData> = [options: ORPCErrorConstructorMapItemOptions<TData>] | (undefined extends TData ? [] : never);
|
|
5
5
|
export type ORPCErrorConstructorMapItem<TCode extends string, TDataSchema extends Schema> = (...rest: ORPCErrorConstructorMapItemRest<SchemaInput<TDataSchema>>) => ORPCError<TCode, SchemaOutput<TDataSchema>>;
|
|
6
|
-
export type ORPCErrorConstructorMap<T extends ErrorMap> =
|
|
6
|
+
export type ORPCErrorConstructorMap<T extends ErrorMap> = {
|
|
7
7
|
[K in keyof T]: K extends string ? T[K] extends ErrorMapItem<infer UInputSchema> ? ORPCErrorConstructorMapItem<K, UInputSchema> : never : never;
|
|
8
8
|
};
|
|
9
9
|
export declare function createORPCErrorConstructorMap<T extends ErrorMap>(errors: T): ORPCErrorConstructorMap<T>;
|
package/dist/src/hidden.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ContractRouter, HTTPPath } from '@orpc/contract';
|
|
2
|
-
export declare function setRouterContract<T extends object>(obj: T, contract: ContractRouter): T;
|
|
3
|
-
export declare function getRouterContract(obj: object): ContractRouter | undefined;
|
|
2
|
+
export declare function setRouterContract<T extends object>(obj: T, contract: ContractRouter<any>): T;
|
|
3
|
+
export declare function getRouterContract(obj: object): ContractRouter<any> | undefined;
|
|
4
4
|
export declare function deepSetLazyRouterPrefix<T extends object>(router: T, prefix: HTTPPath): T;
|
|
5
5
|
export declare function getLazyRouterPrefix(obj: object): HTTPPath | undefined;
|
|
6
6
|
//# sourceMappingURL=hidden.d.ts.map
|
|
@@ -3,8 +3,8 @@ import type { Context, MergeContext, WELL_CONTEXT } from './types';
|
|
|
3
3
|
import { type ContractProcedure, type ContractRouter } from '@orpc/contract';
|
|
4
4
|
import { ProcedureImplementer } from './procedure-implementer';
|
|
5
5
|
import { RouterImplementer } from './router-implementer';
|
|
6
|
-
export type ChainableImplementer<TContext extends Context, TExtraContext extends Context, TContract extends ContractRouter
|
|
7
|
-
[K in keyof TContract]: TContract[K] extends ContractRouter ? ChainableImplementer<TContext, TExtraContext, TContract[K]> : never;
|
|
6
|
+
export type ChainableImplementer<TContext extends Context, TExtraContext extends Context, TContract extends ContractRouter<any>> = TContract extends ContractProcedure<infer UInputSchema, infer UOutputSchema, infer UErrorMap> ? ProcedureImplementer<TContext, TExtraContext, UInputSchema, UOutputSchema, UErrorMap> : {
|
|
7
|
+
[K in keyof TContract]: TContract[K] extends ContractRouter<any> ? ChainableImplementer<TContext, TExtraContext, TContract[K]> : never;
|
|
8
8
|
} & Omit<RouterImplementer<TContext, TExtraContext, TContract>, '~type' | '~orpc'>;
|
|
9
|
-
export declare function createChainableImplementer<TContext extends Context = WELL_CONTEXT, TExtraContext extends Context = undefined, TContract extends ContractRouter = any>(contract: TContract, middlewares?: Middleware<MergeContext<TContext, TExtraContext>, Partial<TExtraContext> | undefined, unknown, any, Record<
|
|
9
|
+
export declare function createChainableImplementer<TContext extends Context = WELL_CONTEXT, TExtraContext extends Context = undefined, TContract extends ContractRouter<any> = any>(contract: TContract, middlewares?: Middleware<MergeContext<TContext, TExtraContext>, Partial<TExtraContext> | undefined, unknown, any, Record<never, never>>[]): ChainableImplementer<TContext, TExtraContext, TContract>;
|
|
10
10
|
//# sourceMappingURL=implementer-chainable.d.ts.map
|
package/dist/src/index.d.ts
CHANGED
|
@@ -21,5 +21,5 @@ export * from './router-implementer';
|
|
|
21
21
|
export * from './types';
|
|
22
22
|
export * from './utils';
|
|
23
23
|
export { configGlobal, fallbackToGlobalConfig, isDefinedError, ORPCError, safe } from '@orpc/contract';
|
|
24
|
-
export declare const os: Builder<WELL_CONTEXT, undefined
|
|
24
|
+
export declare const os: Builder<WELL_CONTEXT, undefined, Record<never, never>>;
|
|
25
25
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/middleware.d.ts
CHANGED
|
@@ -32,4 +32,5 @@ export interface MapInputMiddleware<TInput, TMappedInput> {
|
|
|
32
32
|
(input: TInput): TMappedInput;
|
|
33
33
|
}
|
|
34
34
|
export type ANY_MAP_INPUT_MIDDLEWARE = MapInputMiddleware<any, any>;
|
|
35
|
+
export declare function middlewareOutputFn<TOutput>(output: TOutput): MiddlewareResult<undefined, TOutput>;
|
|
35
36
|
//# sourceMappingURL=middleware.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ContractProcedure, ErrorMap, RouteOptions, Schema, SchemaInput, SchemaOutput } from '@orpc/contract';
|
|
1
|
+
import type { ContractProcedure, ErrorMap, ErrorMapGuard, ErrorMapSuggestions, RouteOptions, Schema, SchemaInput, SchemaOutput } from '@orpc/contract';
|
|
2
2
|
import type { ORPCErrorConstructorMap } from './error';
|
|
3
3
|
import type { MapInputMiddleware, Middleware } from './middleware';
|
|
4
4
|
import type { ProcedureHandler } from './procedure';
|
|
@@ -7,7 +7,7 @@ import { DecoratedProcedure } from './procedure-decorated';
|
|
|
7
7
|
import { ProcedureImplementer } from './procedure-implementer';
|
|
8
8
|
export interface ProcedureBuilderDef<TContext extends Context, TExtraContext extends Context, TInputSchema extends Schema, TOutputSchema extends Schema, TErrorMap extends ErrorMap> {
|
|
9
9
|
contract: ContractProcedure<TInputSchema, TOutputSchema, TErrorMap>;
|
|
10
|
-
middlewares
|
|
10
|
+
middlewares: Middleware<MergeContext<TContext, TExtraContext>, Partial<TExtraContext> | undefined, unknown, any, Record<never, never>>[];
|
|
11
11
|
}
|
|
12
12
|
export declare class ProcedureBuilder<TContext extends Context, TExtraContext extends Context, TInputSchema extends Schema, TOutputSchema extends Schema, TErrorMap extends ErrorMap> {
|
|
13
13
|
'~type': "ProcedureBuilder";
|
|
@@ -16,7 +16,7 @@ export declare class ProcedureBuilder<TContext extends Context, TExtraContext ex
|
|
|
16
16
|
route(route: RouteOptions): ProcedureBuilder<TContext, TExtraContext, TInputSchema, TOutputSchema, TErrorMap>;
|
|
17
17
|
input<U extends Schema>(schema: U, example?: SchemaInput<U>): ProcedureBuilder<TContext, TExtraContext, U, TOutputSchema, TErrorMap>;
|
|
18
18
|
output<U extends Schema>(schema: U, example?: SchemaOutput<U>): ProcedureBuilder<TContext, TExtraContext, TInputSchema, U, TErrorMap>;
|
|
19
|
-
errors<
|
|
19
|
+
errors<U extends ErrorMap & ErrorMapGuard<TErrorMap> & ErrorMapSuggestions>(errors: U): ProcedureBuilder<TContext, TExtraContext, TInputSchema, TOutputSchema, TErrorMap & U>;
|
|
20
20
|
use<U extends Context & Partial<MergeContext<TContext, TExtraContext>> | undefined = undefined>(middleware: Middleware<MergeContext<TContext, TExtraContext>, U, SchemaOutput<TInputSchema>, SchemaInput<TOutputSchema>, ORPCErrorConstructorMap<TErrorMap>>): ProcedureImplementer<TContext, MergeContext<TExtraContext, U>, TInputSchema, TOutputSchema, TErrorMap>;
|
|
21
21
|
use<UExtra extends Context & Partial<MergeContext<TContext, TExtraContext>> | undefined = undefined, UInput = unknown>(middleware: Middleware<MergeContext<TContext, TExtraContext>, UExtra, UInput, SchemaInput<TOutputSchema>, ORPCErrorConstructorMap<TErrorMap>>, mapInput: MapInputMiddleware<SchemaOutput<TInputSchema>, UInput>): ProcedureImplementer<TContext, MergeContext<TExtraContext, UExtra>, TInputSchema, TOutputSchema, TErrorMap>;
|
|
22
22
|
handler<UFuncOutput extends SchemaInput<TOutputSchema>>(handler: ProcedureHandler<TContext, TExtraContext, TInputSchema, TOutputSchema, UFuncOutput, TErrorMap>): DecoratedProcedure<TContext, TExtraContext, TInputSchema, TOutputSchema, UFuncOutput, TErrorMap>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ClientRest, ErrorMap, HTTPPath, RouteOptions, Schema, SchemaInput, SchemaOutput } from '@orpc/contract';
|
|
1
|
+
import type { ClientRest, ErrorMap, ErrorMapGuard, ErrorMapSuggestions, HTTPPath, RouteOptions, Schema, SchemaInput, SchemaOutput } from '@orpc/contract';
|
|
2
2
|
import type { ORPCErrorConstructorMap } from './error';
|
|
3
3
|
import type { MapInputMiddleware, Middleware } from './middleware';
|
|
4
4
|
import type { CreateProcedureClientRest, ProcedureClient } from './procedure-client';
|
|
@@ -8,10 +8,11 @@ export declare class DecoratedProcedure<TContext extends Context, TExtraContext
|
|
|
8
8
|
static decorate<UContext extends Context, UExtraContext extends Context, UInputSchema extends Schema, UOutputSchema extends Schema, UHandlerOutput extends SchemaInput<UOutputSchema>, UErrorMap extends ErrorMap>(procedure: Procedure<UContext, UExtraContext, UInputSchema, UOutputSchema, UHandlerOutput, UErrorMap>): DecoratedProcedure<any, any, any, any, any, any> | DecoratedProcedure<UContext, UExtraContext, UInputSchema, UOutputSchema, UHandlerOutput, UErrorMap>;
|
|
9
9
|
prefix(prefix: HTTPPath): DecoratedProcedure<TContext, TExtraContext, TInputSchema, TOutputSchema, THandlerOutput, TErrorMap>;
|
|
10
10
|
route(route: RouteOptions): DecoratedProcedure<TContext, TExtraContext, TInputSchema, TOutputSchema, THandlerOutput, TErrorMap>;
|
|
11
|
-
|
|
12
|
-
use<
|
|
11
|
+
errors<U extends ErrorMap & ErrorMapGuard<TErrorMap> & ErrorMapSuggestions>(errors: U): DecoratedProcedure<TContext, TExtraContext, TInputSchema, TOutputSchema, THandlerOutput, TErrorMap & U>;
|
|
12
|
+
use<U extends Context & Partial<MergeContext<TContext, TExtraContext>> | undefined = undefined>(middleware: Middleware<MergeContext<TContext, TExtraContext>, U, SchemaOutput<TInputSchema>, THandlerOutput, ORPCErrorConstructorMap<TErrorMap>>): DecoratedProcedure<TContext, MergeContext<TExtraContext, U>, TInputSchema, TOutputSchema, THandlerOutput, TErrorMap>;
|
|
13
|
+
use<UExtra extends Context & Partial<MergeContext<TContext, TExtraContext>> | undefined = undefined, UInput = unknown>(middleware: Middleware<MergeContext<TContext, TExtraContext>, UExtra, UInput, THandlerOutput, ORPCErrorConstructorMap<TErrorMap>>, mapInput: MapInputMiddleware<SchemaOutput<TInputSchema, THandlerOutput>, UInput>): DecoratedProcedure<TContext, MergeContext<TExtraContext, UExtra>, TInputSchema, TOutputSchema, THandlerOutput, TErrorMap>;
|
|
13
14
|
unshiftTag(...tags: string[]): DecoratedProcedure<TContext, TExtraContext, TInputSchema, TOutputSchema, THandlerOutput, TErrorMap>;
|
|
14
|
-
unshiftMiddleware<
|
|
15
|
+
unshiftMiddleware(...middlewares: Middleware<TContext, Context & Partial<MergeContext<TContext, TExtraContext>> | undefined, unknown, SchemaOutput<TOutputSchema, THandlerOutput>, ORPCErrorConstructorMap<TErrorMap>>[]): DecoratedProcedure<TContext, TExtraContext, TInputSchema, TOutputSchema, THandlerOutput, TErrorMap>;
|
|
15
16
|
/**
|
|
16
17
|
* Make this procedure callable (works like a function while still being a procedure).
|
|
17
18
|
* **Note**: this only takes effect when this method is called at the end of the chain.
|
|
@@ -6,7 +6,8 @@ import type { Context, MergeContext } from './types';
|
|
|
6
6
|
import { DecoratedProcedure } from './procedure-decorated';
|
|
7
7
|
export type ProcedureImplementerDef<TContext extends Context, TExtraContext extends Context, TInputSchema extends Schema, TOutputSchema extends Schema, TErrorMap extends ErrorMap> = {
|
|
8
8
|
contract: ContractProcedure<TInputSchema, TOutputSchema, TErrorMap>;
|
|
9
|
-
|
|
9
|
+
preMiddlewares: Middleware<MergeContext<TContext, TExtraContext>, Partial<TExtraContext> | undefined, unknown, any, Record<never, never>>[];
|
|
10
|
+
postMiddlewares: Middleware<MergeContext<TContext, TExtraContext>, Partial<TExtraContext> | undefined, SchemaOutput<TInputSchema>, SchemaInput<TOutputSchema>, Record<never, never>>[];
|
|
10
11
|
};
|
|
11
12
|
export declare class ProcedureImplementer<TContext extends Context, TExtraContext extends Context, TInputSchema extends Schema, TOutputSchema extends Schema, TErrorMap extends ErrorMap> {
|
|
12
13
|
'~type': "ProcedureImplementer";
|
package/dist/src/procedure.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ export interface ProcedureHandler<TContext extends Context, TExtraContext extend
|
|
|
16
16
|
(opt: ProcedureHandlerOptions<TContext, TExtraContext, SchemaOutput<TInputSchema>, ORPCErrorConstructorMap<TErrorMap>>): Promisable<SchemaInput<TOutputSchema, THandlerOutput>>;
|
|
17
17
|
}
|
|
18
18
|
/**
|
|
19
|
-
* Why is `ErrorConstructorMap` passed to `
|
|
19
|
+
* Why is `ErrorConstructorMap` passed to `postMiddlewares` as `Record<never, never>`?
|
|
20
20
|
* Why is `ErrorMap` passed to `ProcedureHandler` as `any`?
|
|
21
21
|
*
|
|
22
22
|
* Passing `ErrorMap/ErrorConstructorMap` directly to `Middleware/ProcedureHandler`
|
|
@@ -27,7 +27,8 @@ export interface ProcedureHandler<TContext extends Context, TExtraContext extend
|
|
|
27
27
|
* The only downside is that direct access to them requires careful type checking to ensure safety.
|
|
28
28
|
*/
|
|
29
29
|
export interface ProcedureDef<TContext extends Context, TExtraContext extends Context, TInputSchema extends Schema, TOutputSchema extends Schema, THandlerOutput extends SchemaInput<TOutputSchema>, TErrorMap extends ErrorMap> {
|
|
30
|
-
|
|
30
|
+
preMiddlewares: Middleware<MergeContext<TContext, TExtraContext>, Partial<TExtraContext> | undefined, unknown, any, Record<never, never>>[];
|
|
31
|
+
postMiddlewares: Middleware<MergeContext<TContext, TExtraContext>, Partial<TExtraContext> | undefined, SchemaOutput<TInputSchema>, SchemaInput<TOutputSchema>, Record<never, never>>[];
|
|
31
32
|
contract: ContractProcedure<TInputSchema, TOutputSchema, TErrorMap>;
|
|
32
33
|
handler: ProcedureHandler<TContext, TExtraContext, TInputSchema, TOutputSchema, THandlerOutput, any>;
|
|
33
34
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { HTTPPath } from '@orpc/contract';
|
|
1
|
+
import type { ContractRouter, ErrorMap, ErrorMapGuard, ErrorMapSuggestions, HTTPPath, StrictErrorMap } from '@orpc/contract';
|
|
2
2
|
import type { FlattenLazy, Lazy } from './lazy';
|
|
3
3
|
import type { Middleware } from './middleware';
|
|
4
4
|
import type { Procedure } from './procedure';
|
|
@@ -6,24 +6,26 @@ import type { ANY_ROUTER, Router } from './router';
|
|
|
6
6
|
import type { Context, MergeContext } from './types';
|
|
7
7
|
import { type DecoratedLazy } from './lazy-decorated';
|
|
8
8
|
import { DecoratedProcedure } from './procedure-decorated';
|
|
9
|
-
export type AdaptedRouter<TContext extends Context, TRouter extends ANY_ROUTER> = TRouter extends Lazy<infer U extends ANY_ROUTER> ? DecoratedLazy<AdaptedRouter<TContext, U>> : TRouter extends Procedure<any, infer UExtraContext, infer UInputSchema, infer UOutputSchema, infer UFuncOutput, infer UErrorMap> ? DecoratedProcedure<TContext, UExtraContext, UInputSchema, UOutputSchema, UFuncOutput, UErrorMap> : {
|
|
10
|
-
[K in keyof TRouter]: TRouter[K] extends ANY_ROUTER ? AdaptedRouter<TContext, TRouter[K]> : never;
|
|
9
|
+
export type AdaptedRouter<TContext extends Context, TRouter extends ANY_ROUTER, TErrorMapExtra extends ErrorMap> = TRouter extends Lazy<infer U extends ANY_ROUTER> ? DecoratedLazy<AdaptedRouter<TContext, U, TErrorMapExtra>> : TRouter extends Procedure<any, infer UExtraContext, infer UInputSchema, infer UOutputSchema, infer UFuncOutput, infer UErrorMap> ? DecoratedProcedure<TContext, UExtraContext, UInputSchema, UOutputSchema, UFuncOutput, UErrorMap & TErrorMapExtra> : {
|
|
10
|
+
[K in keyof TRouter]: TRouter[K] extends ANY_ROUTER ? AdaptedRouter<TContext, TRouter[K], TErrorMapExtra> : never;
|
|
11
11
|
};
|
|
12
|
-
export type RouterBuilderDef<TContext extends Context, TExtraContext extends Context> = {
|
|
12
|
+
export type RouterBuilderDef<TContext extends Context, TExtraContext extends Context, TErrorMap extends ErrorMap> = {
|
|
13
13
|
prefix?: HTTPPath;
|
|
14
14
|
tags?: readonly string[];
|
|
15
|
-
middlewares
|
|
15
|
+
middlewares: Middleware<MergeContext<TContext, TExtraContext>, Partial<TExtraContext> | undefined, unknown, any, Record<never, never>>[];
|
|
16
|
+
errorMap: TErrorMap;
|
|
16
17
|
};
|
|
17
|
-
export declare class RouterBuilder<TContext extends Context, TExtraContext extends Context> {
|
|
18
|
+
export declare class RouterBuilder<TContext extends Context, TExtraContext extends Context, TErrorMap extends ErrorMap> {
|
|
18
19
|
'~type': "RouterBuilder";
|
|
19
|
-
'~orpc': RouterBuilderDef<TContext, TExtraContext>;
|
|
20
|
-
constructor(def: RouterBuilderDef<TContext, TExtraContext>);
|
|
21
|
-
prefix(prefix: HTTPPath): RouterBuilder<TContext, TExtraContext>;
|
|
22
|
-
tag(...tags: string[]): RouterBuilder<TContext, TExtraContext>;
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
20
|
+
'~orpc': RouterBuilderDef<TContext, TExtraContext, TErrorMap>;
|
|
21
|
+
constructor(def: RouterBuilderDef<TContext, TExtraContext, TErrorMap>);
|
|
22
|
+
prefix(prefix: HTTPPath): RouterBuilder<TContext, TExtraContext, TErrorMap>;
|
|
23
|
+
tag(...tags: string[]): RouterBuilder<TContext, TExtraContext, TErrorMap>;
|
|
24
|
+
errors<U extends ErrorMap & ErrorMapGuard<TErrorMap> & ErrorMapSuggestions>(errors: U): RouterBuilder<TContext, TExtraContext, TErrorMap & U>;
|
|
25
|
+
use<U extends Context & Partial<MergeContext<TContext, TExtraContext>> | undefined = undefined>(middleware: Middleware<MergeContext<TContext, TExtraContext>, U, unknown, unknown, Record<never, never>>): RouterBuilder<TContext, MergeContext<TExtraContext, U>, TErrorMap>;
|
|
26
|
+
router<U extends Router<MergeContext<TContext, TExtraContext>, ContractRouter<ErrorMap & Partial<StrictErrorMap<TErrorMap>>>>>(router: U): AdaptedRouter<TContext, U, TErrorMap>;
|
|
27
|
+
lazy<U extends Router<MergeContext<TContext, TExtraContext>, ContractRouter<ErrorMap & Partial<StrictErrorMap<TErrorMap>>>>>(loader: () => Promise<{
|
|
26
28
|
default: U;
|
|
27
|
-
}>): AdaptedRouter<TContext, FlattenLazy<U
|
|
29
|
+
}>): AdaptedRouter<TContext, FlattenLazy<U>, TErrorMap>;
|
|
28
30
|
}
|
|
29
31
|
//# sourceMappingURL=router-builder.d.ts.map
|
|
@@ -4,18 +4,18 @@ import type { Middleware } from './middleware';
|
|
|
4
4
|
import type { Router } from './router';
|
|
5
5
|
import type { AdaptedRouter } from './router-builder';
|
|
6
6
|
import type { Context, MergeContext } from './types';
|
|
7
|
-
export interface RouterImplementerDef<TContext extends Context, TExtraContext extends Context, TContract extends ContractRouter
|
|
8
|
-
middlewares
|
|
7
|
+
export interface RouterImplementerDef<TContext extends Context, TExtraContext extends Context, TContract extends ContractRouter<any>> {
|
|
8
|
+
middlewares: Middleware<MergeContext<TContext, TExtraContext>, Partial<TExtraContext> | undefined, unknown, any, Record<never, never>>[];
|
|
9
9
|
contract: TContract;
|
|
10
10
|
}
|
|
11
|
-
export declare class RouterImplementer<TContext extends Context, TExtraContext extends Context, TContract extends ContractRouter
|
|
11
|
+
export declare class RouterImplementer<TContext extends Context, TExtraContext extends Context, TContract extends ContractRouter<any>> {
|
|
12
12
|
'~type': "RouterImplementer";
|
|
13
13
|
'~orpc': RouterImplementerDef<TContext, TExtraContext, TContract>;
|
|
14
14
|
constructor(def: RouterImplementerDef<TContext, TExtraContext, TContract>);
|
|
15
|
-
use<U extends Context & Partial<MergeContext<TContext, TExtraContext>> | undefined = undefined>(middleware: Middleware<MergeContext<TContext, TExtraContext>, U, unknown, unknown, Record<
|
|
16
|
-
router<U extends Router<MergeContext<TContext, TExtraContext>, TContract>>(router: U): AdaptedRouter<TContext, U
|
|
15
|
+
use<U extends Context & Partial<MergeContext<TContext, TExtraContext>> | undefined = undefined>(middleware: Middleware<MergeContext<TContext, TExtraContext>, U, unknown, unknown, Record<never, never>>): RouterImplementer<TContext, MergeContext<TExtraContext, U>, TContract>;
|
|
16
|
+
router<U extends Router<MergeContext<TContext, TExtraContext>, TContract>>(router: U): AdaptedRouter<TContext, U, Record<never, never>>;
|
|
17
17
|
lazy<U extends Router<MergeContext<TContext, TExtraContext>, TContract>>(loader: () => Promise<{
|
|
18
18
|
default: U;
|
|
19
|
-
}>): AdaptedRouter<TContext, FlattenLazy<U>>;
|
|
19
|
+
}>): AdaptedRouter<TContext, FlattenLazy<U>, Record<never, never>>;
|
|
20
20
|
}
|
|
21
21
|
//# sourceMappingURL=router-implementer.d.ts.map
|
package/dist/src/router.d.ts
CHANGED
|
@@ -2,8 +2,8 @@ import type { ContractProcedure, ContractRouter, SchemaInput, SchemaOutput } fro
|
|
|
2
2
|
import type { ANY_LAZY, Lazy, Lazyable } from './lazy';
|
|
3
3
|
import type { ANY_PROCEDURE, Procedure } from './procedure';
|
|
4
4
|
import type { Context } from './types';
|
|
5
|
-
export type Router<TContext extends Context, TContract extends ContractRouter
|
|
6
|
-
[K in keyof TContract]: TContract[K] extends ContractRouter ? Router<TContext, TContract[K]> : never;
|
|
5
|
+
export type Router<TContext extends Context, TContract extends ContractRouter<any>> = Lazyable<TContract extends ContractProcedure<infer UInputSchema, infer UOutputSchema, infer UErrorMap> ? Procedure<TContext, any, UInputSchema, UOutputSchema, any, UErrorMap> : {
|
|
6
|
+
[K in keyof TContract]: TContract[K] extends ContractRouter<any> ? Router<TContext, TContract[K]> : never;
|
|
7
7
|
}>;
|
|
8
8
|
export type ANY_ROUTER = Router<any, any>;
|
|
9
9
|
export type InferRouterInputs<T extends ANY_ROUTER> = T extends Lazy<infer U extends ANY_ROUTER> ? InferRouterInputs<U> : T extends Procedure<any, any, infer UInputSchema, any, any, any> ? SchemaInput<UInputSchema> : {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@orpc/server",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.30.0",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://orpc.unnoq.com",
|
|
7
7
|
"repository": {
|
|
@@ -53,8 +53,8 @@
|
|
|
53
53
|
"next": ">=14.0.0"
|
|
54
54
|
},
|
|
55
55
|
"dependencies": {
|
|
56
|
-
"@orpc/contract": "0.
|
|
57
|
-
"@orpc/shared": "0.
|
|
56
|
+
"@orpc/contract": "0.30.0",
|
|
57
|
+
"@orpc/shared": "0.30.0"
|
|
58
58
|
},
|
|
59
59
|
"scripts": {
|
|
60
60
|
"build": "tsup --onSuccess='tsc -b --noCheck'",
|