@orpc/server 2.0.0-beta.5 → 2.0.0-beta.50
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/README.md +137 -102
- package/dist/adapters/aws-lambda/handler.d.ts +27 -0
- package/dist/adapters/aws-lambda/handler.js +24 -0
- package/dist/adapters/aws-lambda/index.d.ts +4 -0
- package/dist/adapters/aws-lambda/index.js +2 -0
- package/dist/adapters/aws-lambda/rpc-handler.d.ts +19 -0
- package/dist/adapters/aws-lambda/rpc-handler.js +21 -0
- package/dist/adapters/crossws/handler.d.ts +47 -0
- package/dist/adapters/crossws/handler.js +53 -0
- package/dist/adapters/crossws/index.d.ts +3 -54
- package/dist/adapters/crossws/index.js +2 -0
- package/dist/adapters/crossws/rpc-handler.d.ts +16 -0
- package/dist/adapters/crossws/rpc-handler.js +18 -0
- package/dist/adapters/fastify/handler.d.ts +23 -0
- package/dist/adapters/fastify/handler.js +20 -0
- package/dist/adapters/fastify/index.d.ts +3 -0
- package/dist/adapters/fastify/index.js +2 -0
- package/dist/adapters/fastify/rpc-handler.d.ts +15 -0
- package/dist/adapters/fastify/rpc-handler.js +17 -0
- package/dist/adapters/fetch/handler.d.ts +25 -0
- package/dist/adapters/fetch/handler.js +22 -0
- package/dist/adapters/fetch/index.d.ts +4 -140
- package/dist/adapters/fetch/index.js +3 -0
- package/dist/adapters/fetch/rpc-handler.d.ts +17 -0
- package/dist/adapters/fetch/rpc-handler.js +19 -0
- package/dist/adapters/message-port/handler.d.ts +62 -0
- package/dist/adapters/message-port/handler.js +72 -0
- package/dist/adapters/message-port/index.d.ts +3 -74
- package/dist/adapters/message-port/index.js +2 -0
- package/dist/adapters/message-port/rpc-handler.d.ts +16 -0
- package/dist/adapters/message-port/rpc-handler.js +18 -0
- package/dist/adapters/node/handler.d.ts +23 -0
- package/dist/adapters/node/handler.js +20 -0
- package/dist/adapters/node/index.d.ts +4 -121
- package/dist/adapters/node/index.js +3 -0
- package/dist/adapters/node/rpc-handler.d.ts +16 -0
- package/dist/adapters/node/rpc-handler.js +18 -0
- package/dist/adapters/standard/codec.d.ts +16 -0
- package/dist/adapters/standard/handler.d.ts +68 -0
- package/dist/adapters/standard/handler.js +205 -0
- package/dist/adapters/standard/index.d.ts +7 -19
- package/dist/adapters/standard/index.js +4 -0
- package/dist/adapters/standard/plugin.d.ts +26 -0
- package/dist/adapters/standard/plugin.js +14 -0
- package/dist/adapters/standard/rpc-handler-codec.d.ts +42 -0
- package/dist/adapters/standard/rpc-handler-codec.js +50 -0
- package/dist/adapters/standard/rpc-matcher.d.ts +53 -0
- package/dist/adapters/standard/rpc-matcher.js +106 -0
- package/dist/adapters/standard/utils.d.ts +10 -0
- package/dist/adapters/standard/utils.js +8 -0
- package/dist/adapters/standard-peer/index.d.ts +2 -16
- package/dist/adapters/standard-peer/index.js +1 -0
- package/dist/adapters/standard-peer/utils.d.ts +6 -0
- package/dist/adapters/standard-peer/utils.js +13 -0
- package/dist/adapters/websocket/handler.d.ts +61 -0
- package/dist/adapters/websocket/handler.js +75 -0
- package/dist/adapters/websocket/index.d.ts +3 -61
- package/dist/adapters/websocket/index.js +2 -0
- package/dist/adapters/websocket/rpc-handler.d.ts +16 -0
- package/dist/adapters/websocket/rpc-handler.js +18 -0
- package/dist/builder-variants.d.ts +226 -0
- package/dist/builder.d.ts +126 -0
- package/dist/builder.js +200 -0
- package/dist/constants.d.ts +2 -0
- package/dist/constants.js +4 -0
- package/dist/context.d.ts +6 -0
- package/dist/extensions/callable.d.ts +11 -10
- package/dist/extensions/callable.js +8 -0
- package/dist/helpers/base64url.d.ts +31 -0
- package/dist/helpers/base64url.js +48 -0
- package/dist/helpers/cookie.d.ts +50 -0
- package/dist/helpers/cookie.js +62 -0
- package/dist/helpers/encryption.d.ts +28 -0
- package/dist/helpers/encryption.js +90 -0
- package/dist/helpers/index.d.ts +5 -149
- package/dist/helpers/index.js +4 -0
- package/dist/helpers/signing.d.ts +50 -0
- package/dist/helpers/signing.js +78 -0
- package/dist/implementer-procedure.d.ts +15 -0
- package/dist/implementer-procedure.js +37 -0
- package/dist/implementer-router.d.ts +34 -0
- package/dist/implementer-router.js +98 -0
- package/dist/implementer.d.ts +16 -0
- package/dist/implementer.js +30 -0
- package/dist/index.d.ts +22 -196
- package/dist/index.js +16 -0
- package/dist/lazy.d.ts +20 -0
- package/dist/lazy.js +20 -0
- package/dist/middleware-decorated.d.ts +9 -0
- package/dist/middleware-decorated.js +67 -0
- package/dist/middleware.d.ts +54 -0
- package/dist/plugins/batch.d.ts +102 -0
- package/dist/plugins/batch.js +371 -0
- package/dist/plugins/cors.d.ts +69 -0
- package/dist/plugins/cors.js +119 -0
- package/dist/plugins/get-method-csrf-protection.d.ts +25 -0
- package/dist/plugins/get-method-csrf-protection.js +48 -0
- package/dist/plugins/head-method.d.ts +25 -0
- package/dist/plugins/head-method.js +107 -0
- package/dist/plugins/index.d.ts +15 -197
- package/dist/plugins/index.js +14 -0
- package/dist/plugins/method-override.d.ts +40 -0
- package/dist/plugins/method-override.js +54 -0
- package/dist/plugins/request-compression.d.ts +18 -0
- package/dist/plugins/request-compression.js +55 -0
- package/dist/plugins/request-headers.d.ts +24 -0
- package/dist/plugins/request-headers.js +28 -0
- package/dist/plugins/request-limit.d.ts +32 -0
- package/dist/plugins/request-limit.js +61 -0
- package/dist/plugins/response-compression.d.ts +62 -0
- package/dist/plugins/response-compression.js +157 -0
- package/dist/plugins/response-headers.d.ts +32 -0
- package/dist/plugins/response-headers.js +44 -0
- package/dist/plugins/rethrow.d.ts +35 -0
- package/dist/plugins/rethrow.js +47 -0
- package/dist/plugins/signal-sync.d.ts +15 -0
- package/dist/plugins/signal-sync.js +76 -0
- package/dist/plugins/timeout.d.ts +39 -0
- package/dist/plugins/timeout.js +62 -0
- package/dist/procedure-client.d.ts +18 -0
- package/dist/procedure-client.js +158 -0
- package/dist/procedure-decorated.d.ts +10 -0
- package/dist/procedure-decorated.js +36 -0
- package/dist/procedure-utils.d.ts +21 -0
- package/dist/procedure-utils.js +48 -0
- package/dist/procedure.d.ts +72 -0
- package/dist/procedure.js +18 -0
- package/dist/router-client.d.ts +21 -0
- package/dist/router-client.js +35 -0
- package/dist/router-hidden.js +12 -0
- package/dist/router-utils.d.ts +31 -0
- package/dist/router-utils.js +157 -0
- package/dist/router.d.ts +58 -0
- package/package.json +95 -63
- package/dist/adapters/crossws/index.d.mts +0 -54
- package/dist/adapters/crossws/index.mjs +0 -64
- package/dist/adapters/fetch/index.d.mts +0 -140
- package/dist/adapters/fetch/index.mjs +0 -204
- package/dist/adapters/message-port/index.d.mts +0 -74
- package/dist/adapters/message-port/index.mjs +0 -90
- package/dist/adapters/node/index.d.mts +0 -121
- package/dist/adapters/node/index.mjs +0 -179
- package/dist/adapters/standard/index.d.mts +0 -19
- package/dist/adapters/standard/index.mjs +0 -8
- package/dist/adapters/standard-peer/index.d.mts +0 -16
- package/dist/adapters/standard-peer/index.mjs +0 -2
- package/dist/adapters/websocket/index.d.mts +0 -61
- package/dist/adapters/websocket/index.mjs +0 -76
- package/dist/extensions/callable.d.mts +0 -10
- package/dist/extensions/callable.mjs +0 -11
- package/dist/helpers/index.d.mts +0 -149
- package/dist/helpers/index.mjs +0 -198
- package/dist/index.d.mts +0 -196
- package/dist/index.mjs +0 -385
- package/dist/plugins/index.d.mts +0 -197
- package/dist/plugins/index.mjs +0 -357
- package/dist/shared/server.BL22TloH.d.mts +0 -184
- package/dist/shared/server.BL22TloH.d.ts +0 -184
- package/dist/shared/server.BsNNjG5J.d.mts +0 -61
- package/dist/shared/server.BwHnWUuN.mjs +0 -222
- package/dist/shared/server.CX4vUnDk.mjs +0 -11
- package/dist/shared/server.Cj5lgPuG.d.mts +0 -66
- package/dist/shared/server.CjOb6ItT.mjs +0 -41
- package/dist/shared/server.CrlKQucM.mjs +0 -233
- package/dist/shared/server.DBANIheG.d.ts +0 -104
- package/dist/shared/server.DJIkub_t.d.mts +0 -104
- package/dist/shared/server.D_QauotT.mjs +0 -30
- package/dist/shared/server.GDpX6Df8.mjs +0 -271
- package/dist/shared/server.Pa0F03f_.d.ts +0 -61
- package/dist/shared/server.W91HSRkE.mjs +0 -9
- package/dist/shared/server.d_2NS3g5.d.ts +0 -66
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { ProcedureImplementer } from "./implementer-procedure.js";
|
|
2
|
+
import { Lazy } from "./lazy.js";
|
|
3
|
+
import { decorateMiddleware } from "./middleware-decorated.js";
|
|
4
|
+
import { Procedure } from "./procedure.js";
|
|
5
|
+
import { withHiddenRouterContract } from "./router-hidden.js";
|
|
6
|
+
import { augmentImplementedRouter } from "./router-utils.js";
|
|
7
|
+
import { ProcedureContract } from "@orpc/contract";
|
|
8
|
+
import { bindMethods, omit, setOwn } from "@orpc/shared";
|
|
9
|
+
// src/implementer-router.ts
|
|
10
|
+
var SharedRouterImplementer = class SharedRouterImplementer {
|
|
11
|
+
contract;
|
|
12
|
+
config;
|
|
13
|
+
middlewares;
|
|
14
|
+
constructor(contract, config, middlewares) {
|
|
15
|
+
this.contract = contract;
|
|
16
|
+
this.config = config;
|
|
17
|
+
this.middlewares = middlewares;
|
|
18
|
+
}
|
|
19
|
+
static create(contract, config, middlewares = []) {
|
|
20
|
+
return new SharedRouterImplementer(contract, config, middlewares);
|
|
21
|
+
}
|
|
22
|
+
use(middleware) {
|
|
23
|
+
return createRouterImplementerInternal(this.contract, this.config, [...this.middlewares, middleware]);
|
|
24
|
+
}
|
|
25
|
+
middleware(middleware) {
|
|
26
|
+
const allMiddlewares = [...this.middlewares, middleware];
|
|
27
|
+
let current = decorateMiddleware(allMiddlewares.shift());
|
|
28
|
+
for (const mid of allMiddlewares) current = current.use(mid);
|
|
29
|
+
return current;
|
|
30
|
+
}
|
|
31
|
+
router(router) {
|
|
32
|
+
if (this.middlewares.length) router = augmentImplementedRouter(router, {
|
|
33
|
+
...this.config,
|
|
34
|
+
middlewares: this.middlewares
|
|
35
|
+
});
|
|
36
|
+
return withHiddenRouterContract(router, this.contract);
|
|
37
|
+
}
|
|
38
|
+
lazy(loader) {
|
|
39
|
+
return new Lazy({
|
|
40
|
+
loader: async () => {
|
|
41
|
+
const { default: router } = await loader();
|
|
42
|
+
return { default: this.router(router) };
|
|
43
|
+
},
|
|
44
|
+
meta: {}
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
function createRouterImplementer(contract, config) {
|
|
49
|
+
return createRouterImplementerInternal(toPlainRouterContract(contract), config, []);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* A normal router can be used as a contract (e.g. for mocking), but its procedures carry a handler,
|
|
53
|
+
* middlewares and config. Kept as is, unimplemented procedures would pass as procedures, their config
|
|
54
|
+
* would override the config passed to `implement`, and handlers serving the hidden contract would run
|
|
55
|
+
* the contract's procedures instead of the actual implementation.
|
|
56
|
+
*
|
|
57
|
+
* Rebuilds the contract with every procedure turned into a plain {@link ProcedureContract}
|
|
58
|
+
* (without `handler`, `orderedMiddlewares` and procedure config), copying only the routers that contain one,
|
|
59
|
+
* so contract-first contracts are returned as is.
|
|
60
|
+
*/
|
|
61
|
+
function toPlainRouterContract(contract) {
|
|
62
|
+
if (contract instanceof ProcedureContract) {
|
|
63
|
+
if (!(contract instanceof Procedure)) return contract;
|
|
64
|
+
return new ProcedureContract(omit(contract["~orpc"], [
|
|
65
|
+
"handler",
|
|
66
|
+
"orderedMiddlewares",
|
|
67
|
+
"disableInputValidation",
|
|
68
|
+
"disableOutputValidation"
|
|
69
|
+
]));
|
|
70
|
+
}
|
|
71
|
+
let copied;
|
|
72
|
+
for (const [key, child] of Object.entries(contract)) {
|
|
73
|
+
const plainChild = toPlainRouterContract(child);
|
|
74
|
+
if (plainChild !== child) {
|
|
75
|
+
copied ??= { ...contract };
|
|
76
|
+
copied[key] = plainChild;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return copied ?? contract;
|
|
80
|
+
}
|
|
81
|
+
function createRouterImplementerInternal(contract, config, middlewares) {
|
|
82
|
+
if (contract instanceof ProcedureContract) return new ProcedureImplementer({
|
|
83
|
+
...config,
|
|
84
|
+
...contract["~orpc"],
|
|
85
|
+
orderedMiddlewares: middlewares.map((middleware) => ({ middleware }))
|
|
86
|
+
});
|
|
87
|
+
const implementer = {};
|
|
88
|
+
for (const [key, child] of Object.entries(contract)) setOwn(implementer, key, createRouterImplementerInternal(child, config, middlewares));
|
|
89
|
+
const shared = bindMethods(SharedRouterImplementer.create(contract, config, middlewares));
|
|
90
|
+
for (const [key, method] of Object.entries(shared)) if (Object.hasOwn(implementer, key)) {
|
|
91
|
+
const child = implementer[key];
|
|
92
|
+
implementer[key] = new Proxy(method, { get(_, p) {
|
|
93
|
+
return Reflect.get(child, p);
|
|
94
|
+
} });
|
|
95
|
+
} else implementer[key] = method;
|
|
96
|
+
return implementer;
|
|
97
|
+
}
|
|
98
|
+
export { SharedRouterImplementer, createRouterImplementer };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { DefaultInitialContext } from "./builder.js";
|
|
2
|
+
import { Context } from "./context.js";
|
|
3
|
+
import { RouterImplementer } from "./implementer-router.js";
|
|
4
|
+
import { ProcedureConfig } from "./procedure.js";
|
|
5
|
+
import { RouterContract } from "@orpc/contract";
|
|
6
|
+
export type Implementer<TContract extends RouterContract, TInitialContext extends Context> = {
|
|
7
|
+
$context<T extends Context = DefaultInitialContext>(): Implementer<TContract, T & object>;
|
|
8
|
+
$config(config: ProcedureConfig): Implementer<TContract, TInitialContext>;
|
|
9
|
+
} & RouterImplementer<TContract, TInitialContext>;
|
|
10
|
+
/**
|
|
11
|
+
* Turns a contract into an implementer, used to implement the contract's
|
|
12
|
+
* procedures, routers, and middleware with full type safety.
|
|
13
|
+
*
|
|
14
|
+
* @see {@link https://orpc.dev/docs/contract/implementation#implementer | Contract Implementation - Implementer}
|
|
15
|
+
*/
|
|
16
|
+
export declare function implement<TContract extends RouterContract, TInitialContext extends Context = DefaultInitialContext>(contract: TContract, config?: ProcedureConfig): Implementer<TContract, TInitialContext & object>;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { createRouterImplementer } from "./implementer-router.js";
|
|
2
|
+
import { isNonPrimitive } from "@orpc/shared";
|
|
3
|
+
// src/implementer.ts
|
|
4
|
+
/**
|
|
5
|
+
* Turns a contract into an implementer, used to implement the contract's
|
|
6
|
+
* procedures, routers, and middleware with full type safety.
|
|
7
|
+
*
|
|
8
|
+
* @see {@link https://orpc.dev/docs/contract/implementation#implementer | Contract Implementation - Implementer}
|
|
9
|
+
*/
|
|
10
|
+
function implement(contract, config = {}) {
|
|
11
|
+
const routerImplementer = createRouterImplementer(contract, config);
|
|
12
|
+
const implementer = new Proxy(routerImplementer, { get(_, p) {
|
|
13
|
+
let method;
|
|
14
|
+
if (p === "$context") method = () => implementer;
|
|
15
|
+
else if (p === "$config") method = (incoming) => implement(contract, {
|
|
16
|
+
...config,
|
|
17
|
+
...incoming
|
|
18
|
+
});
|
|
19
|
+
const value = Reflect.get(routerImplementer, p);
|
|
20
|
+
if (method) {
|
|
21
|
+
if (!isNonPrimitive(value)) return method;
|
|
22
|
+
return new Proxy(method, { get(_, p) {
|
|
23
|
+
return Reflect.get(value, p);
|
|
24
|
+
} });
|
|
25
|
+
}
|
|
26
|
+
return value;
|
|
27
|
+
} });
|
|
28
|
+
return implementer;
|
|
29
|
+
}
|
|
30
|
+
export { implement };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,196 +1,22 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
use<$OutContext extends IntersectPick<MergedContext<TInitialContext, TInjectedContext>, $OutContext>, $InContext extends Context = MergedContext<TInitialContext, TInjectedContext>, $ErrorMap extends ErrorMap = TErrorMap>(middleware: Middleware<$InContext | MergedContext<TInitialContext, TInjectedContext>, $OutContext, InferSchemaOutput<TInputSchema>, InferSchemaInput<TOutputSchema>, $ErrorMap>): DecoratedProcedure<MergedInitialContext<TInitialContext, TInjectedContext, $InContext>, MergedContext<TInjectedContext, $OutContext>, TInputSchema, TOutputSchema, MergedErrorMap<$ErrorMap, TErrorMap>, TReturnedError>;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
type AugmentedRouter<T extends AnyRouter, TErrorMap extends ErrorMap> = T extends Procedure<infer $InitialContext, infer $CurrentContext, infer $InputSchema, infer $OutputSchema, infer $ErrorMap, infer $ReturnedORPCError> ? Procedure<$InitialContext, $CurrentContext, $InputSchema, $OutputSchema, MergedErrorMap<TErrorMap, $ErrorMap>, $ReturnedORPCError> : {
|
|
27
|
-
[K in keyof T]: T[K] extends Lazy<infer $ extends AnyRouter> ? Lazy<AugmentedRouter<$, TErrorMap>> : T[K] extends AnyRouter ? AugmentedRouter<T[K], TErrorMap> : never;
|
|
28
|
-
};
|
|
29
|
-
type AugmentedRouterWithMiddlewares<T extends AnyRouter, TInitialContext extends Context, TInjectedContext extends Context, TErrorMap extends ErrorMap> = T extends Procedure<infer $InitialContext, infer $CurrentContext, infer $InputSchema, infer $OutputSchema, infer $ErrorMap, infer $ReturnedORPCError> ? Procedure<MergedInitialContext<TInitialContext, TInjectedContext, $InitialContext>, $CurrentContext, $InputSchema, $OutputSchema, MergedErrorMap<TErrorMap, $ErrorMap>, $ReturnedORPCError> : {
|
|
30
|
-
[K in keyof T]: T[K] extends Lazy<infer $ extends AnyRouter> ? Lazy<AugmentedRouterWithMiddlewares<$, TInitialContext, TInjectedContext, TErrorMap>> : T[K] extends AnyRouter ? AugmentedRouterWithMiddlewares<T[K], TInitialContext, TInjectedContext, TErrorMap> : never;
|
|
31
|
-
};
|
|
32
|
-
interface AugmentRouterOptions<TErrorMap extends ErrorMap> extends AugmentContractRouterOptions<TErrorMap> {
|
|
33
|
-
middlewares: AnyMiddleware[];
|
|
34
|
-
}
|
|
35
|
-
declare function augmentRouter<T extends AnyRouter, TInitialContext extends Context, TCurrentContext extends Context, TErrorMap extends ErrorMap>(router: T, options: AugmentRouterOptions<TErrorMap>): AugmentedRouter<T, TErrorMap> | AugmentedRouterWithMiddlewares<T, TInitialContext, TCurrentContext, TErrorMap>;
|
|
36
|
-
interface AugmentImplementedRouterOptions {
|
|
37
|
-
middlewares: AnyMiddleware[];
|
|
38
|
-
}
|
|
39
|
-
declare function augmentImplementedRouter<T extends AnyRouter, TInitialContext extends Context, TCurrentContext extends Context>(router: T, options: AugmentImplementedRouterOptions): AugmentedRouter<T, object> | AugmentedRouterWithMiddlewares<T, TInitialContext, TCurrentContext, object>;
|
|
40
|
-
declare function getRouter<T extends Lazyable<AnyRouter | undefined>>(router: T, path: readonly string[]): T extends Lazy<any> ? Lazy<AnyRouter | undefined> : Lazyable<AnyRouter | undefined>;
|
|
41
|
-
interface WalkProcedureContractsLazyResult {
|
|
42
|
-
router: Lazy<AnyRouter>;
|
|
43
|
-
path: string[];
|
|
44
|
-
}
|
|
45
|
-
declare function walkProcedureContractsSync(router: RouterContract | AnyRouter, callback: (contract: AnyProcedureContract | AnyProcedure, path: string[]) => void, path?: string[]): WalkProcedureContractsLazyResult[];
|
|
46
|
-
declare function walkProcedureContractsAsync(router: RouterContract | AnyRouter, callback: (contract: AnyProcedureContract | AnyProcedure, path: string[]) => Promisable<void>, path?: string[]): Promise<void>;
|
|
47
|
-
type UnlaziedRouter<T extends AnyRouter> = T extends AnyProcedure ? T : {
|
|
48
|
-
[K in keyof T]: T[K] extends Lazyable<infer U extends AnyRouter> ? UnlaziedRouter<U> : never;
|
|
49
|
-
};
|
|
50
|
-
declare function unlazyRouter<T extends AnyRouter>(router: T): Promise<UnlaziedRouter<T>>;
|
|
51
|
-
|
|
52
|
-
interface BuilderWithMiddlewares<TInitialContext extends Context, TInjectedContext extends Context, TErrorMap extends ErrorMap> {
|
|
53
|
-
'~orpc': BuilderDefinition<InitialInputSchema, InitialOutputSchema, TErrorMap>;
|
|
54
|
-
'meta'(...plugins: MetaPlugin<InitialInputSchema, InitialOutputSchema, TErrorMap>[]): BuilderWithMiddlewares<TInitialContext, TInjectedContext, TErrorMap>;
|
|
55
|
-
'errors'<T extends ErrorMap>(errors: T): BuilderWithMiddlewares<TInitialContext, TInjectedContext, MergedErrorMap<TErrorMap, T>>;
|
|
56
|
-
'use'<$OutContext extends IntersectPick<MergedContext<TInitialContext, TInjectedContext>, $OutContext>, $InContext extends Context = MergedContext<TInitialContext, TInjectedContext>, $ErrorMap extends ErrorMap = TErrorMap>(middleware: Middleware<$InContext | MergedContext<TInitialContext, TInjectedContext>, $OutContext, InferSchemaOutput<InitialInputSchema>, InferSchemaInput<InitialOutputSchema>, $ErrorMap>): BuilderWithMiddlewares<MergedInitialContext<TInitialContext, TInjectedContext, $InContext>, MergedContext<TInjectedContext, $OutContext>, MergedErrorMap<$ErrorMap, TErrorMap>>;
|
|
57
|
-
'middleware'<$OutContext extends IntersectPick<MergedContext<TInitialContext, TInjectedContext>, $OutContext>, $Input, $InContext extends Context = MergedContext<TInitialContext, TInjectedContext>, $Output = any>(middleware: Middleware<$InContext | MergedContext<TInitialContext, TInjectedContext>, $OutContext, $Input, $Output, TErrorMap>): DecoratedMiddleware<MergedInitialContext<TInitialContext, TInjectedContext, $InContext>, MergedContext<TInjectedContext, $OutContext>, $Input, $Output, TErrorMap>;
|
|
58
|
-
'input'<T extends AnySchema>(schema: T): BuilderWithInput<TInitialContext, TInjectedContext, T, TErrorMap>;
|
|
59
|
-
'output'<T extends AnySchema>(schema: T): BuilderWithOutput<TInitialContext, TInjectedContext, T, TErrorMap>;
|
|
60
|
-
'handler'<T>(handler: ProcedureHandler<MergedContext<TInitialContext, TInjectedContext>, InferSchemaOutput<InitialInputSchema>, T, ORPCErrorConstructorMap<TErrorMap>>): DecoratedProcedure<TInitialContext, TInjectedContext, InitialInputSchema, Schema<Exclude<T, AnyORPCError>>, TErrorMap, Extract<T, AnyORPCError>>;
|
|
61
|
-
'router'<T extends Router<MergedContext<TInitialContext, TInjectedContext>>>(router: T): AugmentedRouterWithMiddlewares<T, TInitialContext, TInjectedContext, TErrorMap>;
|
|
62
|
-
'lazy'<T extends Router<MergedContext<TInitialContext, TInjectedContext>>>(loader: () => Promise<{
|
|
63
|
-
default: T;
|
|
64
|
-
}>): Lazy<AugmentedRouterWithMiddlewares<T, TInitialContext, TInjectedContext, TErrorMap>>;
|
|
65
|
-
}
|
|
66
|
-
interface BuilderWithInput<TInitialContext extends Context, TInjectedContext extends Context, TInputSchema extends AnySchema, TErrorMap extends ErrorMap> {
|
|
67
|
-
'~orpc': BuilderDefinition<TInputSchema, InitialOutputSchema, TErrorMap>;
|
|
68
|
-
'meta'(...plugins: MetaPlugin<TInputSchema, InitialOutputSchema, TErrorMap>[]): BuilderWithInput<TInitialContext, TInjectedContext, TInputSchema, TErrorMap>;
|
|
69
|
-
'errors'<T extends ErrorMap>(errors: T): BuilderWithInput<TInitialContext, TInjectedContext, TInputSchema, MergedErrorMap<TErrorMap, T>>;
|
|
70
|
-
'use'<$OutContext extends IntersectPick<MergedContext<TInitialContext, TInjectedContext>, $OutContext>, $InContext extends Context = MergedContext<TInitialContext, TInjectedContext>, $ErrorMap extends ErrorMap = TErrorMap>(middleware: Middleware<$InContext | MergedContext<TInitialContext, TInjectedContext>, $OutContext, InferSchemaOutput<TInputSchema>, InferSchemaInput<InitialOutputSchema>, $ErrorMap>): BuilderWithInput<MergedInitialContext<TInitialContext, TInjectedContext, $InContext>, MergedContext<TInjectedContext, $OutContext>, TInputSchema, MergedErrorMap<$ErrorMap, TErrorMap>>;
|
|
71
|
-
'input'<T extends AnySchema>(schema: T): BuilderWithInput<TInitialContext, TInjectedContext, MergedSchema<T, TInputSchema>, TErrorMap>;
|
|
72
|
-
'output'<T extends AnySchema>(schema: T): BuilderWithInputOutput<TInitialContext, TInjectedContext, TInputSchema, T, TErrorMap>;
|
|
73
|
-
'handler'<T>(handler: ProcedureHandler<MergedContext<TInitialContext, TInjectedContext>, InferSchemaOutput<TInputSchema>, T, ORPCErrorConstructorMap<TErrorMap>>): DecoratedProcedure<TInitialContext, TInjectedContext, TInputSchema, Schema<Exclude<T, AnyORPCError>>, TErrorMap, Extract<T, AnyORPCError>>;
|
|
74
|
-
}
|
|
75
|
-
interface BuilderWithOutput<TInitialContext extends Context, TInjectedContext extends Context, TOutputSchema extends AnySchema, TErrorMap extends ErrorMap> {
|
|
76
|
-
'~orpc': BuilderDefinition<InitialInputSchema, TOutputSchema, TErrorMap>;
|
|
77
|
-
'meta'(...plugins: MetaPlugin<InitialInputSchema, TOutputSchema, TErrorMap>[]): BuilderWithOutput<TInitialContext, TInjectedContext, TOutputSchema, TErrorMap>;
|
|
78
|
-
'errors'<T extends ErrorMap>(errors: T): BuilderWithOutput<TInitialContext, TInjectedContext, TOutputSchema, MergedErrorMap<TErrorMap, T>>;
|
|
79
|
-
'use'<$OutContext extends IntersectPick<MergedContext<TInitialContext, TInjectedContext>, $OutContext>, $InContext extends Context = MergedContext<TInitialContext, TInjectedContext>, $ErrorMap extends ErrorMap = TErrorMap>(middleware: Middleware<$InContext | MergedContext<TInitialContext, TInjectedContext>, $OutContext, InferSchemaOutput<InitialInputSchema>, InferSchemaInput<TOutputSchema>, $ErrorMap>): BuilderWithOutput<MergedInitialContext<TInitialContext, TInjectedContext, $InContext>, MergedContext<TInjectedContext, $OutContext>, TOutputSchema, MergedErrorMap<$ErrorMap, TErrorMap>>;
|
|
80
|
-
'input'<T extends AnySchema>(schema: T): BuilderWithInputOutput<TInitialContext, TInjectedContext, T, TOutputSchema, TErrorMap>;
|
|
81
|
-
'output'<T extends AnySchema>(schema: T): BuilderWithOutput<TInitialContext, TInjectedContext, MergedSchema<T, TOutputSchema>, TErrorMap>;
|
|
82
|
-
'handler'<T extends InferSchemaInput<TOutputSchema> | AnyORPCError>(handler: ProcedureHandler<MergedContext<TInitialContext, TInjectedContext>, InferSchemaOutput<InitialInputSchema>, T, ORPCErrorConstructorMap<TErrorMap>>): DecoratedProcedure<TInitialContext, TInjectedContext, InitialInputSchema, TOutputSchema, TErrorMap, Extract<T, AnyORPCError>>;
|
|
83
|
-
}
|
|
84
|
-
interface BuilderWithInputOutput<TInitialContext extends Context, TInjectedContext extends Context, TInputSchema extends AnySchema, TOutputSchema extends AnySchema, TErrorMap extends ErrorMap> {
|
|
85
|
-
'~orpc': BuilderDefinition<TInputSchema, TOutputSchema, TErrorMap>;
|
|
86
|
-
'meta'(...plugins: MetaPlugin<TInputSchema, TOutputSchema, TErrorMap>[]): BuilderWithInputOutput<TInitialContext, TInjectedContext, TInputSchema, TOutputSchema, TErrorMap>;
|
|
87
|
-
'errors'<T extends ErrorMap>(errors: T): BuilderWithInputOutput<TInitialContext, TInjectedContext, TInputSchema, TOutputSchema, MergedErrorMap<TErrorMap, T>>;
|
|
88
|
-
'use'<$OutContext extends IntersectPick<MergedContext<TInitialContext, TInjectedContext>, $OutContext>, $InContext extends Context = MergedContext<TInitialContext, TInjectedContext>, $ErrorMap extends ErrorMap = TErrorMap>(middleware: Middleware<$InContext | MergedContext<TInitialContext, TInjectedContext>, $OutContext, InferSchemaOutput<TInputSchema>, InferSchemaInput<TOutputSchema>, $ErrorMap>): BuilderWithInputOutput<MergedInitialContext<TInitialContext, TInjectedContext, $InContext>, MergedContext<TInjectedContext, $OutContext>, TInputSchema, TOutputSchema, MergedErrorMap<$ErrorMap, TErrorMap>>;
|
|
89
|
-
'input'<T extends AnySchema>(schema: T): BuilderWithInputOutput<TInitialContext, TInjectedContext, MergedSchema<T, TInputSchema>, TOutputSchema, TErrorMap>;
|
|
90
|
-
'output'<T extends AnySchema>(schema: T): BuilderWithInputOutput<TInitialContext, TInjectedContext, TInputSchema, MergedSchema<T, TOutputSchema>, TErrorMap>;
|
|
91
|
-
'handler'<T extends InferSchemaInput<TOutputSchema> | AnyORPCError>(handler: ProcedureHandler<MergedContext<TInitialContext, TInjectedContext>, InferSchemaOutput<TInputSchema>, T, ORPCErrorConstructorMap<TErrorMap>>): DecoratedProcedure<TInitialContext, TInjectedContext, TInputSchema, TOutputSchema, TErrorMap, Extract<T, AnyORPCError>>;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
interface DefaultInitialContext {
|
|
95
|
-
}
|
|
96
|
-
interface BuilderDefinition<TInputSchema extends AnySchema, TInjectedContext extends AnySchema, TErrorMap extends ErrorMap> extends ProcedureContractDefinition<TInputSchema, TInjectedContext, TErrorMap> {
|
|
97
|
-
orderedMiddlewares: OrderedMiddleware[];
|
|
98
|
-
}
|
|
99
|
-
declare class Builder<TInitialContext extends Context, TErrorMap extends ErrorMap> {
|
|
100
|
-
'~orpc': BuilderDefinition<InitialInputSchema, InitialOutputSchema, TErrorMap>;
|
|
101
|
-
private constructor();
|
|
102
|
-
static create<T extends Context = DefaultInitialContext>(): Builder<T & object, Record<never, never>>;
|
|
103
|
-
$context<T extends Context = DefaultInitialContext>(): Builder<T & object, TErrorMap>;
|
|
104
|
-
meta(...plugins: MetaPlugin<InitialInputSchema, InitialOutputSchema, TErrorMap>[]): Builder<TInitialContext, TErrorMap>;
|
|
105
|
-
errors<U extends ErrorMap>(errors: U): Builder<TInitialContext, MergedErrorMap<TErrorMap, U>>;
|
|
106
|
-
use<$OutContext extends IntersectPick<TInitialContext, $OutContext>, $InContext extends Context = TInitialContext, $ErrorMap extends ErrorMap = TErrorMap>(middleware: Middleware<$InContext | TInitialContext, $OutContext, InferSchemaOutput<InitialInputSchema>, InferSchemaInput<InitialOutputSchema>, $ErrorMap>): BuilderWithMiddlewares<MergedInitialContext<TInitialContext, object, $InContext>, $OutContext, MergedErrorMap<$ErrorMap, TErrorMap>>;
|
|
107
|
-
middleware<$OutContext extends IntersectPick<TInitialContext, $OutContext>, $Input, $Output = any>(middleware: Middleware<TInitialContext, $OutContext, $Input, $Output, TErrorMap>): DecoratedMiddleware<TInitialContext, $OutContext, $Input, $Output, TErrorMap>;
|
|
108
|
-
input<$ extends AnySchema>(schema: $): BuilderWithInput<TInitialContext, object, $, TErrorMap>;
|
|
109
|
-
output<$ extends AnySchema>(schema: $): BuilderWithOutput<TInitialContext, object, $, TErrorMap>;
|
|
110
|
-
handler<T>(handler: ProcedureHandler<TInitialContext, InferSchemaOutput<InitialInputSchema>, T, ORPCErrorConstructorMap<TErrorMap>>): DecoratedProcedure<TInitialContext, object, InitialInputSchema, Schema<Exclude<T, AnyORPCError>>, TErrorMap, Extract<T, AnyORPCError>>;
|
|
111
|
-
router<T extends AnyRouter>(router: T): AugmentedRouter<T, TErrorMap>;
|
|
112
|
-
lazy<T extends AnyRouter>(loader: () => Promise<{
|
|
113
|
-
default: T;
|
|
114
|
-
}>): Lazy<AugmentedRouter<T, TErrorMap>>;
|
|
115
|
-
}
|
|
116
|
-
declare const os: Builder<DefaultInitialContext & object, Record<never, never>>;
|
|
117
|
-
|
|
118
|
-
declare const DEFAULT_SUCCESS_STATUS = 200;
|
|
119
|
-
declare const DEFAULT_ERROR_STATUS = 500;
|
|
120
|
-
|
|
121
|
-
declare class ProcedureImplementer<TInitialContext extends Context, TInjectedContext extends Context, TInputSchema extends AnySchema, TOutputSchema extends AnySchema, TErrorMap extends ErrorMap> {
|
|
122
|
-
'~orpc': BuilderDefinition<TInputSchema, TOutputSchema, TErrorMap>;
|
|
123
|
-
constructor(definition: BuilderDefinition<TInputSchema, TOutputSchema, TErrorMap>);
|
|
124
|
-
'use'<$OutContext extends IntersectPick<MergedContext<TInitialContext, TInjectedContext>, $OutContext>, $InContext extends Context = MergedContext<TInitialContext, TInjectedContext>, $ErrorMap extends ErrorMap = TErrorMap>(middleware: Middleware<$InContext | MergedContext<TInitialContext, TInjectedContext>, $OutContext, InferSchemaOutput<TInputSchema>, InferSchemaInput<TOutputSchema>, $ErrorMap>): ProcedureImplementer<MergedInitialContext<TInitialContext, TInjectedContext, $InContext>, MergedContext<TInjectedContext, $OutContext>, TInputSchema, TOutputSchema, TErrorMap>;
|
|
125
|
-
'handler'(handler: ProcedureHandler<MergedContext<TInitialContext, TInjectedContext>, InferSchemaOutput<TInputSchema>, AnyORPCError | InferSchemaInput<TOutputSchema>, ORPCErrorConstructorMap<TErrorMap>>): ImplementedProcedure<TInitialContext, TInjectedContext, TInputSchema, TOutputSchema, TErrorMap>;
|
|
126
|
-
}
|
|
127
|
-
declare class ImplementedProcedure<TInitialContext extends Context, TInjectedContext extends Context, TInputSchema extends AnySchema, TOutputSchema extends AnySchema, TErrorMap extends ErrorMap> extends Procedure<TInitialContext, TInjectedContext, TInputSchema, TOutputSchema, TErrorMap, never> {
|
|
128
|
-
use<$OutContext extends IntersectPick<MergedContext<TInitialContext, TInjectedContext>, $OutContext>, $InContext extends Context = MergedContext<TInitialContext, TInjectedContext>, $ErrorMap extends ErrorMap = TErrorMap>(middleware: Middleware<$InContext | MergedContext<TInitialContext, TInjectedContext>, $OutContext, InferSchemaOutput<TInputSchema>, InferSchemaInput<TOutputSchema>, $ErrorMap>): ImplementedProcedure<MergedInitialContext<TInitialContext, TInjectedContext, $InContext>, MergedContext<TInjectedContext, $OutContext>, TInputSchema, TOutputSchema, TErrorMap>;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
declare class SharedRouterImplementer<TContract extends RouterContract, TInitialContext extends Context> {
|
|
132
|
-
private readonly contract;
|
|
133
|
-
private readonly middlewares;
|
|
134
|
-
private constructor();
|
|
135
|
-
static create<TContract extends RouterContract, TInitialContext extends Context>(contract: TContract): SharedRouterImplementer<TContract, TInitialContext>;
|
|
136
|
-
static create<TContract extends RouterContract, TInitialContext extends Context, TInjectedContext extends Context>(contract: TContract, middlewares: AnyMiddleware[]): SharedRouterImplementerWithMiddlewares<TContract, TInitialContext, TInjectedContext>;
|
|
137
|
-
use<$OutContext extends IntersectPick<TInitialContext, $OutContext>, $InContext extends Context = TInitialContext, $ErrorMap extends ErrorMap = InferRouterContractErrorMap<TContract>>(middleware: Middleware<$InContext | TInitialContext, $OutContext, unknown, unknown, $ErrorMap>): RouterImplementerWithMiddlewares<TContract, MergedInitialContext<TInitialContext, object, $InContext>, $OutContext>;
|
|
138
|
-
middleware<$OutContext extends IntersectPick<TInitialContext, $OutContext>, $Input, $InContext extends Context = TInitialContext, $Output = any>(middleware: Middleware<$InContext | TInitialContext, $OutContext, $Input, $Output, InferRouterContractErrorMap<TContract>>): DecoratedMiddleware<MergedInitialContext<TInitialContext, object, $InContext>, $OutContext, $Input, $Output, object>;
|
|
139
|
-
router<T extends ContractedRouter<TContract, any>>(router: T): T;
|
|
140
|
-
lazy<T extends ContractedRouter<TContract, any>>(loader: () => Promise<{
|
|
141
|
-
default: T;
|
|
142
|
-
}>): Lazy<T>;
|
|
143
|
-
}
|
|
144
|
-
interface SharedRouterImplementerWithMiddlewares<TContract extends RouterContract, TInitialContext extends Context, TInjectedContext extends Context> {
|
|
145
|
-
use<$OutContext extends IntersectPick<MergedContext<TInitialContext, TInjectedContext>, $OutContext>, $InContext extends Context = MergedContext<TInitialContext, TInjectedContext>, $ErrorMap extends ErrorMap = InferRouterContractErrorMap<TContract>>(middleware: Middleware<$InContext | MergedContext<TInitialContext, TInjectedContext>, $OutContext, unknown, unknown, $ErrorMap>): RouterImplementerWithMiddlewares<TContract, MergedInitialContext<TInitialContext, TInjectedContext, $InContext>, MergedContext<TInjectedContext, $OutContext>>;
|
|
146
|
-
middleware<$OutContext extends IntersectPick<MergedContext<TInitialContext, TInjectedContext>, $OutContext>, $Input, $InContext extends Context = MergedContext<TInitialContext, TInjectedContext>, $Output = any>(middleware: Middleware<$InContext | MergedContext<TInitialContext, TInjectedContext>, $OutContext, $Input, $Output, InferRouterContractErrorMap<TContract>>): DecoratedMiddleware<MergedInitialContext<TInitialContext, TInjectedContext, $InContext>, MergedContext<TInjectedContext, $OutContext>, $Input, $Output, object>;
|
|
147
|
-
router<T extends ContractedRouter<TContract, MergedContext<TInitialContext, TInjectedContext>>>(router: T): AugmentedRouterWithMiddlewares<T, TInitialContext, TInjectedContext, object>;
|
|
148
|
-
lazy<T extends ContractedRouter<TContract, any>>(loader: () => Promise<{
|
|
149
|
-
default: T;
|
|
150
|
-
}>): Lazy<AugmentedRouterWithMiddlewares<T, TInitialContext, TInjectedContext, object>>;
|
|
151
|
-
}
|
|
152
|
-
type RouterImplementer<TContract extends RouterContract, TInitialContext extends Context> = TContract extends ProcedureContract<infer $InputSchema, infer $OutputSchema, infer $ErrorMap> ? ProcedureImplementer<TInitialContext, object, $InputSchema, $OutputSchema, $ErrorMap> : Public<SharedRouterImplementer<TContract, TInitialContext>> & {
|
|
153
|
-
[K in keyof TContract]: TContract[K] extends RouterContract ? RouterImplementer<TContract[K], TInitialContext> : never;
|
|
154
|
-
};
|
|
155
|
-
type RouterImplementerWithMiddlewares<TContract extends RouterContract, TInitialContext extends Context, TInjectedContext extends Context> = TContract extends ProcedureContract<infer $InputSchema, infer $OutputSchema, infer $ErrorMap> ? ProcedureImplementer<TInitialContext, TInjectedContext, $InputSchema, $OutputSchema, $ErrorMap> : SharedRouterImplementerWithMiddlewares<TContract, TInitialContext, TInjectedContext> & {
|
|
156
|
-
[K in keyof TContract]: TContract[K] extends RouterContract ? RouterImplementerWithMiddlewares<TContract[K], TInitialContext, TInjectedContext> : never;
|
|
157
|
-
};
|
|
158
|
-
declare function createRouterImplementer<TContract extends RouterContract, TInitialContext extends Context>(contract: TContract): RouterImplementer<TContract, TInitialContext>;
|
|
159
|
-
|
|
160
|
-
type Implementer<TContract extends RouterContract, TInitialContext extends Context> = {
|
|
161
|
-
$context<T extends Context = DefaultInitialContext>(): Implementer<TContract, T & object>;
|
|
162
|
-
} & RouterImplementer<TContract, TInitialContext>;
|
|
163
|
-
declare function implement<TContract extends RouterContract, TInitialContext extends Context = DefaultInitialContext>(contract: TContract): Implementer<TContract, TInitialContext & object>;
|
|
164
|
-
|
|
165
|
-
declare function createGuardedProcedureLazy(lazy: Lazy<unknown>): Lazy<AnyProcedure>;
|
|
166
|
-
/**
|
|
167
|
-
* Create a new procedure that ensure the contract is applied to the procedure.
|
|
168
|
-
*
|
|
169
|
-
* .input/.output/.handler mismatches are already caught by the `implementer.router`,
|
|
170
|
-
* but .errors (in case implemented procedure error map is more than enough) and .meta cannot be
|
|
171
|
-
* validated that way - so they must be overridden here to ensure the client always sees what the contract defines.
|
|
172
|
-
*/
|
|
173
|
-
declare function createContractProcedure<TInitialContext extends Context, TInjectedContext extends Context, TInputSchema extends AnySchema, TOutputSchema extends AnySchema, TErrorMap extends ErrorMap>(procedure: Procedure<TInitialContext, TInjectedContext, TInputSchema, TOutputSchema, any, any>, contract: ProcedureContract<any, any, TErrorMap>): Procedure<TInitialContext, TInjectedContext, TInputSchema, TOutputSchema, TErrorMap, never>;
|
|
174
|
-
type CallOptions<TInitialContext extends Context, TOutputSchema extends AnySchema, TErrorMap extends ErrorMap, TReturnedError extends AnyORPCError> = ProcedureClientOptions<TInitialContext, TOutputSchema, TErrorMap, TReturnedError, object> & Omit<ClientOptions<object>, 'context'>;
|
|
175
|
-
type CallRest<TInitialContext extends Context, TInputSchema extends AnySchema, TOutputSchema extends AnySchema, TErrorMap extends ErrorMap, TReturnedError extends AnyORPCError> = object extends CallOptions<TInitialContext, TOutputSchema, TErrorMap, TReturnedError> ? undefined extends InferSchemaInput<TInputSchema> ? [input?: InferSchemaInput<TInputSchema>, options?: CallOptions<TInitialContext, TOutputSchema, TErrorMap, TReturnedError>] : [input: InferSchemaInput<TInputSchema>, options?: CallOptions<TInitialContext, TOutputSchema, TErrorMap, TReturnedError>] : [input: InferSchemaInput<TInputSchema>, options: CallOptions<TInitialContext, TOutputSchema, TErrorMap, TReturnedError>];
|
|
176
|
-
/**
|
|
177
|
-
* Quickly call a procedure without creating a client.
|
|
178
|
-
*
|
|
179
|
-
* @example
|
|
180
|
-
* ```ts
|
|
181
|
-
* const output = await call(getting, 'input')
|
|
182
|
-
* const output = await call(getting, 'input', { context: { db: 'postgres' } })
|
|
183
|
-
* ```
|
|
184
|
-
*/
|
|
185
|
-
declare function call<TInitialContext extends Context, TInputSchema extends AnySchema, TOutputSchema extends AnySchema, TErrorMap extends ErrorMap, TReturnedError extends AnyORPCError>(lazyableProcedure: Lazyable<Procedure<TInitialContext, any, TInputSchema, TOutputSchema, TErrorMap, TReturnedError>>, ...[input, options,]: CallRest<TInitialContext, TInputSchema, TOutputSchema, TErrorMap, TReturnedError>): PromiseWithError<InferSchemaOutput<TOutputSchema>, ORPCErrorFromErrorMap<TErrorMap> | TReturnedError | ThrowableError>;
|
|
186
|
-
|
|
187
|
-
type RouterClient<TRouter extends AnyRouter, TClientContext extends ClientContext = object> = TRouter extends Procedure<any, any, infer $InputSchema, infer $OutputSchema, infer $ErrorMap, infer $ReturnedError> ? ProcedureClient<TClientContext, $InputSchema, $OutputSchema, $ErrorMap, $ReturnedError> : {
|
|
188
|
-
[K in keyof TRouter]: TRouter[K] extends Lazyable<infer U extends AnyRouter> ? RouterClient<U, TClientContext> : never;
|
|
189
|
-
};
|
|
190
|
-
declare function createRouterClient<T extends AnyRouter, TClientContext extends ClientContext = object>(router: Lazyable<T | undefined>, ...rest: MaybeOptionalOptions<ProcedureClientOptions<InferRouterInitialContext<T>, Schema<unknown>, ErrorMap, any, TClientContext>>): RouterClient<T, TClientContext>;
|
|
191
|
-
|
|
192
|
-
declare function withHiddenRouterContract<T extends Lazyable<AnyRouter>>(router: T, contract: RouterContract): T;
|
|
193
|
-
declare function getHiddenRouterContract(router: Lazyable<AnyRouter | RouterContract>): RouterContract | undefined;
|
|
194
|
-
|
|
195
|
-
export { AnyMiddleware, AnyProcedure, AnyRouter, Builder, Context, ContractedRouter, DEFAULT_ERROR_STATUS, DEFAULT_SUCCESS_STATUS, DecoratedProcedure, ImplementedProcedure, InferRouterInitialContext, Lazy, Lazyable, MergedContext, MergedInitialContext, Middleware, ORPCErrorConstructorMap, OrderedMiddleware, Procedure, ProcedureClient, ProcedureClientOptions, ProcedureHandler, ProcedureImplementer, Router, SharedRouterImplementer, augmentImplementedRouter, augmentRouter, call, createContractProcedure, createGuardedProcedureLazy, createRouterClient, createRouterImplementer, decorateMiddleware, getHiddenRouterContract, getRouter, implement, os, unlazyRouter, walkProcedureContractsAsync, walkProcedureContractsSync, withHiddenRouterContract };
|
|
196
|
-
export type { AugmentImplementedRouterOptions, AugmentRouterOptions, AugmentedRouter, AugmentedRouterWithMiddlewares, BuilderDefinition, BuilderWithInput, BuilderWithInputOutput, BuilderWithMiddlewares, BuilderWithOutput, CallOptions, CallRest, DecoratedMiddleware, DefaultInitialContext, Implementer, RouterClient, RouterImplementer, RouterImplementerWithMiddlewares, SharedRouterImplementerWithMiddlewares, UnlaziedRouter, WalkProcedureContractsLazyResult };
|
|
1
|
+
import { Builder, BuilderDefinition, DefaultInitialContext, os } from "./builder.js";
|
|
2
|
+
import { BuilderWithInput, BuilderWithInputOutput, BuilderWithMiddlewares, BuilderWithOutput } from "./builder-variants.js";
|
|
3
|
+
import { DEFAULT_ERROR_STATUS, DEFAULT_SUCCESS_STATUS } from "./constants.js";
|
|
4
|
+
import { Context, MergedContext, MergedInitialContext } from "./context.js";
|
|
5
|
+
import { Implementer, implement } from "./implementer.js";
|
|
6
|
+
import { ImplementedProcedure, ProcedureImplementer } from "./implementer-procedure.js";
|
|
7
|
+
import { RouterImplementer, RouterImplementerWithMiddlewares, SharedRouterImplementer, SharedRouterImplementerWithMiddlewares } from "./implementer-router.js";
|
|
8
|
+
import { Lazy, LazyDefinition, Lazyable, unlazy } from "./lazy.js";
|
|
9
|
+
import { AnyMiddleware, Middleware, MiddlewareDefinition, MiddlewareDone, MiddlewareDoneOptions, MiddlewareNext, MiddlewareNextOptions, MiddlewareOptions, MiddlewareResult } from "./middleware.js";
|
|
10
|
+
import { DecoratedMiddleware } from "./middleware-decorated.js";
|
|
11
|
+
import { AnyProcedure, OrderedMiddleware, Procedure, ProcedureConfig, ProcedureDefinition, ProcedureHandler, ProcedureHandlerOptions } from "./procedure.js";
|
|
12
|
+
import { ProcedureClient, ProcedureClientInterceptor, ProcedureClientInterceptorOptions, ProcedureClientOptions, createProcedureClient } from "./procedure-client.js";
|
|
13
|
+
import { DecoratedProcedure } from "./procedure-decorated.js";
|
|
14
|
+
import { CallOptions, CallRest, call } from "./procedure-utils.js";
|
|
15
|
+
import { AnyRouter, ContractedRouter, InferRouterError, InferRouterErrors, InferRouterFinalContexts, InferRouterInitialContext, InferRouterInitialContexts, InferRouterInputs, InferRouterOutputs, Router } from "./router.js";
|
|
16
|
+
import { RouterClient, createRouterClient } from "./router-client.js";
|
|
17
|
+
import { AugmentedRouter, AugmentedRouterWithMiddlewares, UnlaziedRouter, WalkProcedureContractsLazyResult, getRouter, resolveContractProcedure, unlazyRouter, walkProcedureContractsAsync, walkProcedureContractsSync } from "./router-utils.js";
|
|
18
|
+
import { AnyMetaPlugin, AnySchema, ErrorMap, ErrorMapItem, InferSchemaInput, InferSchemaOutput, InitialInputSchema, InitialOutputSchema, MergedErrorMap, MergedSchema, Meta, MetaPlugin, MetaPluginDefinition, ORPCErrorConstructorMap, ORPCErrorConstructorMapItem, ORPCErrorConstructorMapItemOptions, ORPCErrorFactory, ORPCErrorFactoryOptions, ORPCErrorFromErrorMap, ProcedureContract, ProcedureContractDefinition, RouterContract, Schema, ValidationError, asyncIteratorObject, defineMeta, error, eventIterator, type } from "@orpc/contract";
|
|
19
|
+
import { AsyncCleanupFn, AsyncIteratorClass, AsyncIteratorClassNextFn, DistributiveOmit, IntersectPick, MaybeOptionalOptions, PromiseWithError, Public, Registry, ThrowableError, asyncIteratorToStream, asyncIteratorToStream as eventIteratorToStream, asyncIteratorToUnproxiedDataStream, asyncIteratorToUnproxiedDataStream as eventIteratorToUnproxiedDataStream, onAsyncIteratorObjectError, onError, onFinish, onReadableStreamError, onStart, onSuccess, streamToAsyncIteratorObject, streamToAsyncIteratorObject as streamToEventIterator } from "@orpc/shared";
|
|
20
|
+
import { AnyORPCError, AnyORPCErrorJSON, COMMON_ERROR_STATUS_MAP, Client, ClientContext, ClientOptions, ClientRest, FriendlyClientOptions, ORPCError, ORPCErrorCode, ORPCErrorJSON, ORPCErrorOptions, RPCJsonSerialization, RPCJsonSerializationMeta, RPCJsonSerializer, RPCJsonSerializerHandler, RPCJsonSerializerOptions, RPCSerializer, RPCSerializerOptions, RPCSerializerSerializeOptions, SafeResult, isDefinedError, safe, toORPCError } from "@orpc/client";
|
|
21
|
+
import { EventMeta, EventStreamErrorEvent, EventStreamErrorEvent as ErrorEvent, StandardBody, StandardBodyHint, StandardHeaders, StandardLazyRequest, StandardLazyResponse, StandardMethod, StandardRequest, StandardResponse, StandardUrl, getEventMeta, unwrapEvent, withEventMeta } from "@standard-server/core";
|
|
22
|
+
export { type AnyMetaPlugin, AnyMiddleware, type AnyORPCError, type AnyORPCErrorJSON, AnyProcedure, AnyRouter, type AnySchema, type AsyncCleanupFn, AsyncIteratorClass, type AsyncIteratorClassNextFn, type AugmentedRouter, type AugmentedRouterWithMiddlewares, Builder, BuilderDefinition, BuilderWithInput, BuilderWithInputOutput, BuilderWithMiddlewares, BuilderWithOutput, COMMON_ERROR_STATUS_MAP, type CallOptions, type CallRest, type Client, type ClientContext, type ClientOptions, type ClientRest, Context, ContractedRouter, DEFAULT_ERROR_STATUS, DEFAULT_SUCCESS_STATUS, type DecoratedMiddleware, DecoratedProcedure, DefaultInitialContext, type DistributiveOmit, ErrorEvent, type ErrorMap, type ErrorMapItem, type EventMeta, EventStreamErrorEvent, type FriendlyClientOptions, ImplementedProcedure, Implementer, type InferRouterFinalContexts as InferRouterCurrentContexts, InferRouterError, InferRouterErrors, InferRouterFinalContexts, InferRouterInitialContext, InferRouterInitialContexts, InferRouterInputs, InferRouterOutputs, type InferSchemaInput, type InferSchemaOutput, type InitialInputSchema, type InitialOutputSchema, type IntersectPick, Lazy, LazyDefinition, Lazyable, type MaybeOptionalOptions, MergedContext, type MergedErrorMap, MergedInitialContext, type MergedSchema, type Meta, type MetaPlugin, type MetaPluginDefinition, Middleware, MiddlewareDefinition, MiddlewareDone, MiddlewareDoneOptions, MiddlewareNext, MiddlewareNextOptions, MiddlewareOptions, MiddlewareResult, ORPCError, type ORPCErrorCode, type ORPCErrorConstructorMap, type ORPCErrorConstructorMapItem, type ORPCErrorConstructorMapItemOptions, type ORPCErrorFactory, type ORPCErrorFactoryOptions, type ORPCErrorFromErrorMap, type ORPCErrorJSON, type ORPCErrorOptions, OrderedMiddleware, Procedure, ProcedureClient, ProcedureClientInterceptor, ProcedureClientInterceptorOptions, ProcedureClientOptions, ProcedureConfig, type ProcedureContract, type ProcedureContractDefinition, ProcedureDefinition, ProcedureHandler, ProcedureHandlerOptions, ProcedureImplementer, type PromiseWithError, type Public, type RPCJsonSerialization, type RPCJsonSerializationMeta, RPCJsonSerializer, type RPCJsonSerializerHandler, type RPCJsonSerializerOptions, RPCSerializer, type RPCSerializerOptions, type RPCSerializerSerializeOptions, type Registry, Router, RouterClient, type RouterContract, type RouterImplementer, type RouterImplementerWithMiddlewares, type SafeResult, type Schema, SharedRouterImplementer, type SharedRouterImplementerWithMiddlewares, type StandardBody, type StandardBodyHint, type StandardHeaders, type StandardLazyRequest, type StandardLazyResponse, type StandardMethod, type StandardRequest, type StandardResponse, type StandardUrl, type ThrowableError, type UnlaziedRouter, ValidationError, type WalkProcedureContractsLazyResult, asyncIteratorObject, asyncIteratorToStream, asyncIteratorToUnproxiedDataStream, call, createProcedureClient, createRouterClient, defineMeta, error, eventIterator, eventIteratorToStream, eventIteratorToUnproxiedDataStream, getEventMeta, getRouter, implement, isDefinedError, onAsyncIteratorObjectError, onError, onFinish, onReadableStreamError, onStart, onSuccess, os, resolveContractProcedure, safe, streamToAsyncIteratorObject, streamToEventIterator, toORPCError, type, unlazy, unlazyRouter, unwrapEvent, walkProcedureContractsAsync, walkProcedureContractsSync, withEventMeta };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export { Builder, os } from "./builder.js";
|
|
2
|
+
export { DEFAULT_ERROR_STATUS, DEFAULT_SUCCESS_STATUS } from "./constants.js";
|
|
3
|
+
export { implement } from "./implementer.js";
|
|
4
|
+
export { ImplementedProcedure, ProcedureImplementer } from "./implementer-procedure.js";
|
|
5
|
+
export { SharedRouterImplementer } from "./implementer-router.js";
|
|
6
|
+
export { Lazy, unlazy } from "./lazy.js";
|
|
7
|
+
export { Procedure } from "./procedure.js";
|
|
8
|
+
export { createProcedureClient } from "./procedure-client.js";
|
|
9
|
+
export { DecoratedProcedure } from "./procedure-decorated.js";
|
|
10
|
+
export { call } from "./procedure-utils.js";
|
|
11
|
+
export { createRouterClient } from "./router-client.js";
|
|
12
|
+
export { getRouter, resolveContractProcedure, unlazyRouter, walkProcedureContractsAsync, walkProcedureContractsSync } from "./router-utils.js";
|
|
13
|
+
export { ValidationError, asyncIteratorObject, defineMeta, error, eventIterator, type } from "@orpc/contract";
|
|
14
|
+
export { AsyncIteratorClass, asyncIteratorToStream, asyncIteratorToStream as eventIteratorToStream, asyncIteratorToUnproxiedDataStream, asyncIteratorToUnproxiedDataStream as eventIteratorToUnproxiedDataStream, onAsyncIteratorObjectError, onError, onFinish, onReadableStreamError, onStart, onSuccess, streamToAsyncIteratorObject, streamToAsyncIteratorObject as streamToEventIterator } from "@orpc/shared";
|
|
15
|
+
export { COMMON_ERROR_STATUS_MAP, ORPCError, RPCJsonSerializer, RPCSerializer, isDefinedError, safe, toORPCError } from "@orpc/client";
|
|
16
|
+
export { EventStreamErrorEvent, EventStreamErrorEvent as ErrorEvent, getEventMeta, unwrapEvent, withEventMeta } from "@standard-server/core";
|
package/dist/lazy.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { AnyMetaPlugin, Meta } from "@orpc/contract";
|
|
2
|
+
export interface LazyDefinition<T> {
|
|
3
|
+
meta: Meta;
|
|
4
|
+
metaPlugins?: AnyMetaPlugin[] | undefined;
|
|
5
|
+
loader: () => Promise<{
|
|
6
|
+
default: T;
|
|
7
|
+
}>;
|
|
8
|
+
}
|
|
9
|
+
export declare class Lazy<T> {
|
|
10
|
+
"~orpc": LazyDefinition<T>;
|
|
11
|
+
"constructor"(def: LazyDefinition<T>);
|
|
12
|
+
/**
|
|
13
|
+
* Checks if the given instance satisfies the {@link Lazy} class/interface.
|
|
14
|
+
*/
|
|
15
|
+
static [Symbol.hasInstance](instance: unknown): boolean;
|
|
16
|
+
}
|
|
17
|
+
export type Lazyable<T> = T | Lazy<T>;
|
|
18
|
+
export declare function unlazy<T extends Lazyable<any>>(maybeLazy: T): Promise<{
|
|
19
|
+
default: T extends Lazy<infer U> ? U : T;
|
|
20
|
+
}>;
|
package/dist/lazy.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { getConstructor, isNonPrimitive } from "@orpc/shared";
|
|
2
|
+
// src/lazy.ts
|
|
3
|
+
var Lazy = class Lazy {
|
|
4
|
+
"~orpc";
|
|
5
|
+
"constructor"(def) {
|
|
6
|
+
this["~orpc"] = def;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Checks if the given instance satisfies the {@link Lazy} class/interface.
|
|
10
|
+
*/
|
|
11
|
+
static [Symbol.hasInstance](instance) {
|
|
12
|
+
if (this !== Lazy) return Function.prototype[Symbol.hasInstance].call(this, instance);
|
|
13
|
+
if (getConstructor(instance) === Lazy) return true;
|
|
14
|
+
return isNonPrimitive(instance) && isNonPrimitive(instance["~orpc"]) && isNonPrimitive(instance["~orpc"].meta) && (instance["~orpc"].metaPlugins === void 0 || Array.isArray(instance["~orpc"].metaPlugins)) && typeof instance["~orpc"].loader === "function";
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
function unlazy(maybeLazy) {
|
|
18
|
+
return maybeLazy instanceof Lazy ? maybeLazy["~orpc"].loader() : Promise.resolve({ default: maybeLazy });
|
|
19
|
+
}
|
|
20
|
+
export { Lazy, unlazy };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Context, MergedContext, MergedInitialContext } from "./context.js";
|
|
2
|
+
import { Middleware } from "./middleware.js";
|
|
3
|
+
import { ErrorMap, MergedErrorMap } from "@orpc/contract";
|
|
4
|
+
import { IntersectPick } from "@orpc/shared";
|
|
5
|
+
export interface DecoratedMiddleware<TInContext extends Context, TOutContext extends Context, TInput, TOutput, TErrorMap extends ErrorMap> extends Middleware<TInContext, TOutContext, TInput, TOutput, TErrorMap> {
|
|
6
|
+
adaptInput<T>(adapt: (input: T) => TInput): DecoratedMiddleware<TInContext, TOutContext, T, TOutput, TErrorMap>;
|
|
7
|
+
errors<T extends ErrorMap>(errors: T): DecoratedMiddleware<TInContext, TOutContext, TInput, TOutput, MergedErrorMap<TErrorMap, T>>;
|
|
8
|
+
use<$OutContext extends IntersectPick<MergedContext<TInContext, TOutContext>, $OutContext>, $Input extends TInput, $InContext extends Context = MergedContext<TInContext, TOutContext>, $ErrorMap extends ErrorMap = TErrorMap>(middleware: Middleware<$InContext | MergedContext<TInContext, TOutContext>, $OutContext, $Input, TOutput, $ErrorMap>): DecoratedMiddleware<MergedInitialContext<TInContext, TOutContext, $InContext>, MergedContext<TOutContext, $OutContext>, $Input, TOutput, MergedErrorMap<$ErrorMap, TErrorMap>>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { mergeErrorMap } from "@orpc/contract";
|
|
2
|
+
import { toArray } from "@orpc/shared";
|
|
3
|
+
// src/middleware-decorated.ts
|
|
4
|
+
function decorateMiddleware(middleware) {
|
|
5
|
+
const decorated = ((...args) => middleware(...args));
|
|
6
|
+
decorated["~orpc"] = middleware["~orpc"];
|
|
7
|
+
Object.defineProperty(decorated, "name", { value: middleware.name });
|
|
8
|
+
decorated.adaptInput = (adapt) => {
|
|
9
|
+
const mapped = decorateMiddleware((opts, input, ...args) => {
|
|
10
|
+
return middleware(opts, adapt(input), ...args);
|
|
11
|
+
});
|
|
12
|
+
mapped["~orpc"] = decorated["~orpc"];
|
|
13
|
+
Object.defineProperty(mapped, "name", { value: decorated.name });
|
|
14
|
+
return mapped;
|
|
15
|
+
};
|
|
16
|
+
decorated.errors = (errors) => {
|
|
17
|
+
const newMiddleware = decorateMiddleware(decorated);
|
|
18
|
+
newMiddleware["~orpc"] = {
|
|
19
|
+
...decorated["~orpc"],
|
|
20
|
+
errorMap: mergeErrorMap(decorated["~orpc"]?.errorMap, errors)
|
|
21
|
+
};
|
|
22
|
+
return newMiddleware;
|
|
23
|
+
};
|
|
24
|
+
decorated.use = (usedMiddleware) => {
|
|
25
|
+
const merged = decorateMiddleware((opts, ...args) => {
|
|
26
|
+
return middleware({
|
|
27
|
+
...opts,
|
|
28
|
+
async next(nextOpts1) {
|
|
29
|
+
const signal = nextOpts1?.signal ?? opts.signal;
|
|
30
|
+
const result = await usedMiddleware({
|
|
31
|
+
...opts,
|
|
32
|
+
context: {
|
|
33
|
+
...opts.context,
|
|
34
|
+
...nextOpts1?.context
|
|
35
|
+
},
|
|
36
|
+
signal,
|
|
37
|
+
next(nextOpts2, ...args) {
|
|
38
|
+
return opts.next({
|
|
39
|
+
context: {
|
|
40
|
+
...nextOpts1?.context,
|
|
41
|
+
...nextOpts2?.context
|
|
42
|
+
},
|
|
43
|
+
signal: nextOpts2?.signal ?? signal
|
|
44
|
+
}, ...args);
|
|
45
|
+
}
|
|
46
|
+
}, ...args);
|
|
47
|
+
return {
|
|
48
|
+
...result,
|
|
49
|
+
context: {
|
|
50
|
+
...nextOpts1?.context,
|
|
51
|
+
...result.context
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
}, ...args);
|
|
56
|
+
});
|
|
57
|
+
merged["~orpc"] = {
|
|
58
|
+
...decorated["~orpc"],
|
|
59
|
+
errorMap: mergeErrorMap(usedMiddleware["~orpc"]?.errorMap, decorated["~orpc"]?.errorMap),
|
|
60
|
+
metaPlugins: [...toArray(decorated["~orpc"]?.metaPlugins), ...toArray(usedMiddleware["~orpc"]?.metaPlugins)]
|
|
61
|
+
};
|
|
62
|
+
Object.defineProperty(merged, "name", { value: `${decorated.name} + ${usedMiddleware.name}` });
|
|
63
|
+
return merged;
|
|
64
|
+
};
|
|
65
|
+
return decorated;
|
|
66
|
+
}
|
|
67
|
+
export { decorateMiddleware };
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Context } from "./context.js";
|
|
2
|
+
import { AnyProcedure } from "./procedure.js";
|
|
3
|
+
import { AnyMetaPlugin, ErrorMap, ORPCErrorConstructorMap } from "@orpc/contract";
|
|
4
|
+
import { MaybeOptionalOptions, Promisable } from "@orpc/shared";
|
|
5
|
+
export type MiddlewareResult<TOutContext extends Context, TOutput> = Promisable<{
|
|
6
|
+
output: TOutput;
|
|
7
|
+
context: TOutContext;
|
|
8
|
+
}>;
|
|
9
|
+
export type MiddlewareNextOptions<TOutContext extends Context> = (object extends TOutContext ? {
|
|
10
|
+
context?: TOutContext | undefined;
|
|
11
|
+
} : {
|
|
12
|
+
context: TOutContext;
|
|
13
|
+
}) & {
|
|
14
|
+
/** Overrides the signal for the rest of the chain. */
|
|
15
|
+
signal?: AbortSignal | undefined;
|
|
16
|
+
};
|
|
17
|
+
export interface MiddlewareNext<TOutput> {
|
|
18
|
+
<T extends Context = object>(...rest: MaybeOptionalOptions<MiddlewareNextOptions<T>>): MiddlewareResult<T, TOutput>;
|
|
19
|
+
}
|
|
20
|
+
export type MiddlewareDoneOptions<TOutContext, TOutput> = (object extends TOutContext ? {
|
|
21
|
+
context?: TOutContext | undefined;
|
|
22
|
+
} : {
|
|
23
|
+
context: TOutContext;
|
|
24
|
+
}) & {
|
|
25
|
+
output: TOutput;
|
|
26
|
+
};
|
|
27
|
+
export interface MiddlewareDone<TOutput> {
|
|
28
|
+
/**
|
|
29
|
+
* Create a successful result and terminate the middleware chain early.
|
|
30
|
+
*/
|
|
31
|
+
<TOutContext extends Context = object>(...rest: MaybeOptionalOptions<MiddlewareDoneOptions<TOutContext, TOutput>>): MiddlewareResult<TOutContext, TOutput>;
|
|
32
|
+
}
|
|
33
|
+
export interface MiddlewareOptions<TInContext extends Context, TOutput, TErrorConstructorMap extends ORPCErrorConstructorMap<any>> {
|
|
34
|
+
context: TInContext;
|
|
35
|
+
path: string[];
|
|
36
|
+
procedure: AnyProcedure;
|
|
37
|
+
signal?: AbortSignal | undefined;
|
|
38
|
+
lastEventId: string | undefined;
|
|
39
|
+
/**
|
|
40
|
+
* Invoke to continue the middleware chain.
|
|
41
|
+
*/
|
|
42
|
+
next: MiddlewareNext<TOutput>;
|
|
43
|
+
errors: TErrorConstructorMap;
|
|
44
|
+
}
|
|
45
|
+
export interface MiddlewareDefinition<TErrorMap extends ErrorMap> {
|
|
46
|
+
errorMap?: TErrorMap | undefined;
|
|
47
|
+
metaPlugins?: AnyMetaPlugin[] | undefined;
|
|
48
|
+
}
|
|
49
|
+
export interface Middleware<TInContext extends Context, TOutContext extends Context, TInput, TOutput, TErrorMap extends ErrorMap> {
|
|
50
|
+
/** this property should be optional to support inline middleware */
|
|
51
|
+
"~orpc"?: MiddlewareDefinition<TErrorMap> | undefined;
|
|
52
|
+
(opts: MiddlewareOptions<TInContext, TOutput, ORPCErrorConstructorMap<TErrorMap>>, input: TInput, done: MiddlewareDone<TOutput>): Promisable<MiddlewareResult<TOutContext, TOutput>>;
|
|
53
|
+
}
|
|
54
|
+
export type AnyMiddleware = Middleware<any, any, any, any, any>;
|