@orpc/server 0.29.0 → 0.30.0
Sign up to get free protection for your applications and to get access to all the features.
- 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'",
|