@orpc/server 0.0.0-next.fa8d145 → 0.0.0-next.fc1ae52
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 +9 -9
- package/dist/adapters/aws-lambda/index.d.mts +46 -0
- package/dist/adapters/aws-lambda/index.d.ts +46 -0
- package/dist/adapters/aws-lambda/index.mjs +42 -0
- package/dist/adapters/bun-ws/index.d.mts +12 -11
- package/dist/adapters/bun-ws/index.d.ts +12 -11
- package/dist/adapters/bun-ws/index.mjs +16 -20
- package/dist/adapters/crossws/index.d.mts +8 -5
- package/dist/adapters/crossws/index.d.ts +8 -5
- package/dist/adapters/crossws/index.mjs +11 -17
- package/dist/adapters/fetch/index.d.mts +56 -10
- package/dist/adapters/fetch/index.d.ts +56 -10
- package/dist/adapters/fetch/index.mjs +74 -4
- package/dist/adapters/message-port/index.d.mts +31 -0
- package/dist/adapters/message-port/index.d.ts +31 -0
- package/dist/adapters/message-port/index.mjs +39 -0
- package/dist/adapters/node/index.d.mts +32 -10
- package/dist/adapters/node/index.d.ts +32 -10
- package/dist/adapters/node/index.mjs +70 -13
- package/dist/adapters/standard/index.d.mts +8 -13
- package/dist/adapters/standard/index.d.ts +8 -13
- package/dist/adapters/standard/index.mjs +3 -2
- package/dist/adapters/standard-peer/index.d.mts +18 -0
- package/dist/adapters/standard-peer/index.d.ts +18 -0
- package/dist/adapters/standard-peer/index.mjs +7 -0
- package/dist/adapters/websocket/index.d.mts +36 -9
- package/dist/adapters/websocket/index.d.ts +36 -9
- package/dist/adapters/websocket/index.mjs +49 -20
- package/dist/adapters/ws/index.d.mts +11 -8
- package/dist/adapters/ws/index.d.ts +11 -8
- package/dist/adapters/ws/index.mjs +13 -14
- package/dist/helpers/index.d.mts +134 -0
- package/dist/helpers/index.d.ts +134 -0
- package/dist/helpers/index.mjs +188 -0
- package/dist/hibernation/index.d.mts +44 -0
- package/dist/hibernation/index.d.ts +44 -0
- package/dist/hibernation/index.mjs +65 -0
- package/dist/index.d.mts +22 -48
- package/dist/index.d.ts +22 -48
- package/dist/index.mjs +25 -10
- package/dist/plugins/index.d.mts +28 -15
- package/dist/plugins/index.d.ts +28 -15
- package/dist/plugins/index.mjs +96 -60
- package/dist/shared/{server.DPWk5pjW.d.mts → server.B4BGqy3Y.d.mts} +10 -9
- package/dist/shared/{server.DPWk5pjW.d.ts → server.B4BGqy3Y.d.ts} +10 -9
- package/dist/shared/server.COL12UTb.d.ts +32 -0
- package/dist/shared/server.CVKCo60T.d.mts +12 -0
- package/dist/shared/{server.DG7Tamti.mjs → server.CaqDCZX1.mjs} +116 -74
- package/dist/shared/server.Cb6yD7DZ.d.ts +42 -0
- package/dist/shared/server.Ck-gOLzq.d.mts +32 -0
- package/dist/shared/{server.YZzrREz9.d.ts → server.DBCUJijK.d.mts} +8 -8
- package/dist/shared/server.DNtJ-p60.d.ts +12 -0
- package/dist/shared/{server.eWLxY3lq.d.mts → server.DPIFWpxG.d.ts} +8 -8
- package/dist/shared/{server.BVwwTHyO.mjs → server.DZ5BIITo.mjs} +1 -1
- package/dist/shared/server.DzV1hr3z.d.mts +42 -0
- package/dist/shared/server.UVMTOWrk.mjs +26 -0
- package/dist/shared/{server.4FnxLwwr.mjs → server.vzZSq5UM.mjs} +75 -42
- package/package.json +40 -12
- package/dist/shared/server.BRoxSiSC.d.mts +0 -12
- package/dist/shared/server.BjiJH9Vo.d.ts +0 -10
- package/dist/shared/server.Cy1vfSiG.d.ts +0 -12
- package/dist/shared/server.QUe9N8P4.d.mts +0 -10
package/dist/index.mjs
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { mergeErrorMap, mergeMeta, mergeRoute, mergePrefix, mergeTags, isContractProcedure, getContractRouter } from '@orpc/contract';
|
|
2
|
-
export { ValidationError, eventIterator, type } from '@orpc/contract';
|
|
3
|
-
import { P as Procedure, b as addMiddleware, c as createProcedureClient, e as enhanceRouter, l as lazy, s as setHiddenRouterContract, i as isProcedure, d as isLazy, f as createAssertedLazyProcedure
|
|
4
|
-
export { L as LAZY_SYMBOL, p as call, r as createAccessibleLazyRouter, a as createContractedProcedure, h as createORPCErrorConstructorMap, q as getHiddenRouterContract, j as getLazyMeta, n as isStartWithMiddlewares, m as mergeCurrentContext, o as mergeMiddlewares, k as middlewareOutputFn,
|
|
1
|
+
import { mergeErrorMap, mergeMeta, mergeRoute, mergePrefix, mergeTags, isContractProcedure, getContractRouter, fallbackContractConfig } from '@orpc/contract';
|
|
2
|
+
export { ValidationError, eventIterator, type, validateORPCError } from '@orpc/contract';
|
|
3
|
+
import { P as Procedure, b as addMiddleware, c as createProcedureClient, e as enhanceRouter, l as lazy, s as setHiddenRouterContract, u as unlazy, g as getRouter, i as isProcedure, d as isLazy, f as createAssertedLazyProcedure } from './shared/server.CaqDCZX1.mjs';
|
|
4
|
+
export { L as LAZY_SYMBOL, p as call, r as createAccessibleLazyRouter, a as createContractedProcedure, h as createORPCErrorConstructorMap, q as getHiddenRouterContract, j as getLazyMeta, n as isStartWithMiddlewares, m as mergeCurrentContext, o as mergeMiddlewares, k as middlewareOutputFn, v as resolveContractProcedures, t as traverseContractProcedures, w as unlazyRouter } from './shared/server.CaqDCZX1.mjs';
|
|
5
5
|
import { toORPCError } from '@orpc/client';
|
|
6
6
|
export { ORPCError, isDefinedError, safe } from '@orpc/client';
|
|
7
|
-
|
|
7
|
+
import { resolveMaybeOptionalOptions } from '@orpc/shared';
|
|
8
|
+
export { AsyncIteratorClass, EventPublisher, asyncIteratorToStream as eventIteratorToStream, onError, onFinish, onStart, onSuccess, streamToAsyncIteratorClass as streamToEventIterator } from '@orpc/shared';
|
|
8
9
|
export { getEventMeta, withEventMeta } from '@orpc/standard-server';
|
|
9
10
|
|
|
10
11
|
const DEFAULT_CONFIG = {
|
|
@@ -20,7 +21,7 @@ function fallbackConfig(key, value) {
|
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
function decorateMiddleware(middleware) {
|
|
23
|
-
const decorated = (...args) => middleware(...args);
|
|
24
|
+
const decorated = ((...args) => middleware(...args));
|
|
24
25
|
decorated.mapInput = (mapInput) => {
|
|
25
26
|
const mapped = decorateMiddleware(
|
|
26
27
|
(options, input, ...rest) => middleware(options, mapInput(input), ...rest)
|
|
@@ -150,7 +151,7 @@ class Builder {
|
|
|
150
151
|
/**
|
|
151
152
|
* Sets or overrides the config.
|
|
152
153
|
*
|
|
153
|
-
* @see {@link https://orpc.unnoq.com/docs/
|
|
154
|
+
* @see {@link https://orpc.unnoq.com/docs/client/server-side#middlewares-order Middlewares Order Docs}
|
|
154
155
|
* @see {@link https://orpc.unnoq.com/docs/best-practices/dedupe-middleware#configuration Dedupe Middleware Docs}
|
|
155
156
|
*/
|
|
156
157
|
$config(config) {
|
|
@@ -447,12 +448,26 @@ function implement(contract, config = {}) {
|
|
|
447
448
|
return impl;
|
|
448
449
|
}
|
|
449
450
|
|
|
451
|
+
function inferRPCMethodFromRouter(router) {
|
|
452
|
+
return async (_, path) => {
|
|
453
|
+
const { default: procedure } = await unlazy(getRouter(router, path));
|
|
454
|
+
if (!isProcedure(procedure)) {
|
|
455
|
+
throw new Error(
|
|
456
|
+
`[inferRPCMethodFromRouter] No valid procedure found at path "${path.join(".")}". This may happen when the router is not properly configured.`
|
|
457
|
+
);
|
|
458
|
+
}
|
|
459
|
+
const method = fallbackContractConfig("defaultMethod", procedure["~orpc"].route.method);
|
|
460
|
+
return method === "HEAD" ? "GET" : method;
|
|
461
|
+
};
|
|
462
|
+
}
|
|
463
|
+
|
|
450
464
|
function createRouterClient(router, ...rest) {
|
|
465
|
+
const options = resolveMaybeOptionalOptions(rest);
|
|
451
466
|
if (isProcedure(router)) {
|
|
452
|
-
const caller = createProcedureClient(router,
|
|
467
|
+
const caller = createProcedureClient(router, options);
|
|
453
468
|
return caller;
|
|
454
469
|
}
|
|
455
|
-
const procedureCaller = isLazy(router) ? createProcedureClient(createAssertedLazyProcedure(router),
|
|
470
|
+
const procedureCaller = isLazy(router) ? createProcedureClient(createAssertedLazyProcedure(router), options) : {};
|
|
456
471
|
const recursive = new Proxy(procedureCaller, {
|
|
457
472
|
get(target, key) {
|
|
458
473
|
if (typeof key !== "string") {
|
|
@@ -471,4 +486,4 @@ function createRouterClient(router, ...rest) {
|
|
|
471
486
|
return recursive;
|
|
472
487
|
}
|
|
473
488
|
|
|
474
|
-
export { Builder, DecoratedProcedure, Procedure, addMiddleware, createActionableClient, createAssertedLazyProcedure, createProcedureClient, createRouterClient, decorateMiddleware, enhanceRouter, fallbackConfig, getRouter, implement, implementerInternal, isLazy, isProcedure, lazy, os, setHiddenRouterContract };
|
|
489
|
+
export { Builder, DecoratedProcedure, Procedure, addMiddleware, createActionableClient, createAssertedLazyProcedure, createProcedureClient, createRouterClient, decorateMiddleware, enhanceRouter, fallbackConfig, getRouter, implement, implementerInternal, inferRPCMethodFromRouter, isLazy, isProcedure, lazy, os, setHiddenRouterContract, unlazy };
|
package/dist/plugins/index.d.mts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Value } from '@orpc/shared';
|
|
1
|
+
import { Value, Promisable } from '@orpc/shared';
|
|
2
2
|
import { StandardRequest, StandardHeaders } from '@orpc/standard-server';
|
|
3
3
|
import { BatchResponseBodyItem } from '@orpc/standard-server/batch';
|
|
4
|
-
import {
|
|
5
|
-
import { C as Context,
|
|
4
|
+
import { d as StandardHandlerInterceptorOptions, g as StandardHandlerPlugin, e as StandardHandlerOptions } from '../shared/server.DBCUJijK.mjs';
|
|
5
|
+
import { C as Context, d as ProcedureClientInterceptorOptions } from '../shared/server.B4BGqy3Y.mjs';
|
|
6
6
|
import { Meta, ORPCError as ORPCError$1 } from '@orpc/contract';
|
|
7
7
|
import { ORPCError } from '@orpc/client';
|
|
8
8
|
|
|
@@ -12,7 +12,7 @@ interface BatchHandlerOptions<T extends Context> {
|
|
|
12
12
|
*
|
|
13
13
|
* @default 10
|
|
14
14
|
*/
|
|
15
|
-
maxSize?: Value<number
|
|
15
|
+
maxSize?: Value<Promisable<number>, [StandardHandlerInterceptorOptions<T>]>;
|
|
16
16
|
/**
|
|
17
17
|
* Map the request before processing it.
|
|
18
18
|
*
|
|
@@ -24,19 +24,19 @@ interface BatchHandlerOptions<T extends Context> {
|
|
|
24
24
|
*
|
|
25
25
|
* @default 207
|
|
26
26
|
*/
|
|
27
|
-
successStatus?: Value<number
|
|
27
|
+
successStatus?: Value<Promisable<number>, [responses: Promise<BatchResponseBodyItem>[], batchOptions: StandardHandlerInterceptorOptions<T>]>;
|
|
28
28
|
/**
|
|
29
29
|
* success batch response headers.
|
|
30
30
|
*
|
|
31
31
|
* @default {}
|
|
32
32
|
*/
|
|
33
|
-
headers?: Value<StandardHeaders
|
|
33
|
+
headers?: Value<Promisable<StandardHeaders>, [responses: Promise<BatchResponseBodyItem>[], batchOptions: StandardHandlerInterceptorOptions<T>]>;
|
|
34
34
|
}
|
|
35
35
|
/**
|
|
36
|
-
* The Batch
|
|
36
|
+
* The Batch Requests Plugin allows you to combine multiple requests and responses into a single batch,
|
|
37
37
|
* reducing the overhead of sending each one separately.
|
|
38
38
|
*
|
|
39
|
-
* @see {@link https://orpc.unnoq.com/docs/plugins/batch-
|
|
39
|
+
* @see {@link https://orpc.unnoq.com/docs/plugins/batch-requests Batch Requests Plugin Docs}
|
|
40
40
|
*/
|
|
41
41
|
declare class BatchHandlerPlugin<T extends Context> implements StandardHandlerPlugin<T> {
|
|
42
42
|
private readonly maxSize;
|
|
@@ -49,8 +49,8 @@ declare class BatchHandlerPlugin<T extends Context> implements StandardHandlerPl
|
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
interface CORSOptions<T extends Context> {
|
|
52
|
-
origin?: Value<string | readonly string[] | null | undefined
|
|
53
|
-
timingOrigin?: Value<string | readonly string[] | null | undefined
|
|
52
|
+
origin?: Value<Promisable<string | readonly string[] | null | undefined>, [origin: string, options: StandardHandlerInterceptorOptions<T>]>;
|
|
53
|
+
timingOrigin?: Value<Promisable<string | readonly string[] | null | undefined>, [origin: string, options: StandardHandlerInterceptorOptions<T>]>;
|
|
54
54
|
allowMethods?: readonly string[];
|
|
55
55
|
allowHeaders?: readonly string[];
|
|
56
56
|
maxAge?: number;
|
|
@@ -69,6 +69,19 @@ declare class CORSPlugin<T extends Context> implements StandardHandlerPlugin<T>
|
|
|
69
69
|
init(options: StandardHandlerOptions<T>): void;
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
+
interface RequestHeadersPluginContext {
|
|
73
|
+
reqHeaders?: Headers;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* The Request Headers Plugin injects a `reqHeaders` instance into the context,
|
|
77
|
+
* allowing access to request headers in oRPC.
|
|
78
|
+
*
|
|
79
|
+
* @see {@link https://orpc.unnoq.com/docs/plugins/request-headers Request Headers Plugin Docs}
|
|
80
|
+
*/
|
|
81
|
+
declare class RequestHeadersPlugin<T extends RequestHeadersPluginContext> implements StandardHandlerPlugin<T> {
|
|
82
|
+
init(options: StandardHandlerOptions<T>): void;
|
|
83
|
+
}
|
|
84
|
+
|
|
72
85
|
interface ResponseHeadersPluginContext {
|
|
73
86
|
resHeaders?: Headers;
|
|
74
87
|
}
|
|
@@ -88,21 +101,21 @@ interface SimpleCsrfProtectionHandlerPluginOptions<T extends Context> {
|
|
|
88
101
|
*
|
|
89
102
|
* @default 'x-csrf-token'
|
|
90
103
|
*/
|
|
91
|
-
headerName?: Value<string
|
|
104
|
+
headerName?: Value<Promisable<string>, [options: StandardHandlerInterceptorOptions<T>]>;
|
|
92
105
|
/**
|
|
93
106
|
* The value of the header to check.
|
|
94
107
|
*
|
|
95
108
|
* @default 'orpc'
|
|
96
109
|
*
|
|
97
110
|
*/
|
|
98
|
-
headerValue?: Value<string
|
|
111
|
+
headerValue?: Value<Promisable<string>, [options: StandardHandlerInterceptorOptions<T>]>;
|
|
99
112
|
/**
|
|
100
113
|
* Exclude a procedure from the plugin.
|
|
101
114
|
*
|
|
102
115
|
* @default false
|
|
103
116
|
*
|
|
104
117
|
*/
|
|
105
|
-
exclude?: Value<boolean
|
|
118
|
+
exclude?: Value<Promisable<boolean>, [options: ProcedureClientInterceptorOptions<T, Record<never, never>, Meta>]>;
|
|
106
119
|
/**
|
|
107
120
|
* The error thrown when the CSRF token is invalid.
|
|
108
121
|
*
|
|
@@ -152,5 +165,5 @@ declare class StrictGetMethodPlugin<T extends Context> implements StandardHandle
|
|
|
152
165
|
init(options: StandardHandlerOptions<T>): void;
|
|
153
166
|
}
|
|
154
167
|
|
|
155
|
-
export { BatchHandlerPlugin, CORSPlugin, ResponseHeadersPlugin, SimpleCsrfProtectionHandlerPlugin, StrictGetMethodPlugin };
|
|
156
|
-
export type { BatchHandlerOptions, CORSOptions, ResponseHeadersPluginContext, SimpleCsrfProtectionHandlerPluginOptions, StrictGetMethodPluginOptions };
|
|
168
|
+
export { BatchHandlerPlugin, CORSPlugin, RequestHeadersPlugin, ResponseHeadersPlugin, SimpleCsrfProtectionHandlerPlugin, StrictGetMethodPlugin };
|
|
169
|
+
export type { BatchHandlerOptions, CORSOptions, RequestHeadersPluginContext, ResponseHeadersPluginContext, SimpleCsrfProtectionHandlerPluginOptions, StrictGetMethodPluginOptions };
|
package/dist/plugins/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Value } from '@orpc/shared';
|
|
1
|
+
import { Value, Promisable } from '@orpc/shared';
|
|
2
2
|
import { StandardRequest, StandardHeaders } from '@orpc/standard-server';
|
|
3
3
|
import { BatchResponseBodyItem } from '@orpc/standard-server/batch';
|
|
4
|
-
import {
|
|
5
|
-
import { C as Context,
|
|
4
|
+
import { d as StandardHandlerInterceptorOptions, g as StandardHandlerPlugin, e as StandardHandlerOptions } from '../shared/server.DPIFWpxG.js';
|
|
5
|
+
import { C as Context, d as ProcedureClientInterceptorOptions } from '../shared/server.B4BGqy3Y.js';
|
|
6
6
|
import { Meta, ORPCError as ORPCError$1 } from '@orpc/contract';
|
|
7
7
|
import { ORPCError } from '@orpc/client';
|
|
8
8
|
|
|
@@ -12,7 +12,7 @@ interface BatchHandlerOptions<T extends Context> {
|
|
|
12
12
|
*
|
|
13
13
|
* @default 10
|
|
14
14
|
*/
|
|
15
|
-
maxSize?: Value<number
|
|
15
|
+
maxSize?: Value<Promisable<number>, [StandardHandlerInterceptorOptions<T>]>;
|
|
16
16
|
/**
|
|
17
17
|
* Map the request before processing it.
|
|
18
18
|
*
|
|
@@ -24,19 +24,19 @@ interface BatchHandlerOptions<T extends Context> {
|
|
|
24
24
|
*
|
|
25
25
|
* @default 207
|
|
26
26
|
*/
|
|
27
|
-
successStatus?: Value<number
|
|
27
|
+
successStatus?: Value<Promisable<number>, [responses: Promise<BatchResponseBodyItem>[], batchOptions: StandardHandlerInterceptorOptions<T>]>;
|
|
28
28
|
/**
|
|
29
29
|
* success batch response headers.
|
|
30
30
|
*
|
|
31
31
|
* @default {}
|
|
32
32
|
*/
|
|
33
|
-
headers?: Value<StandardHeaders
|
|
33
|
+
headers?: Value<Promisable<StandardHeaders>, [responses: Promise<BatchResponseBodyItem>[], batchOptions: StandardHandlerInterceptorOptions<T>]>;
|
|
34
34
|
}
|
|
35
35
|
/**
|
|
36
|
-
* The Batch
|
|
36
|
+
* The Batch Requests Plugin allows you to combine multiple requests and responses into a single batch,
|
|
37
37
|
* reducing the overhead of sending each one separately.
|
|
38
38
|
*
|
|
39
|
-
* @see {@link https://orpc.unnoq.com/docs/plugins/batch-
|
|
39
|
+
* @see {@link https://orpc.unnoq.com/docs/plugins/batch-requests Batch Requests Plugin Docs}
|
|
40
40
|
*/
|
|
41
41
|
declare class BatchHandlerPlugin<T extends Context> implements StandardHandlerPlugin<T> {
|
|
42
42
|
private readonly maxSize;
|
|
@@ -49,8 +49,8 @@ declare class BatchHandlerPlugin<T extends Context> implements StandardHandlerPl
|
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
interface CORSOptions<T extends Context> {
|
|
52
|
-
origin?: Value<string | readonly string[] | null | undefined
|
|
53
|
-
timingOrigin?: Value<string | readonly string[] | null | undefined
|
|
52
|
+
origin?: Value<Promisable<string | readonly string[] | null | undefined>, [origin: string, options: StandardHandlerInterceptorOptions<T>]>;
|
|
53
|
+
timingOrigin?: Value<Promisable<string | readonly string[] | null | undefined>, [origin: string, options: StandardHandlerInterceptorOptions<T>]>;
|
|
54
54
|
allowMethods?: readonly string[];
|
|
55
55
|
allowHeaders?: readonly string[];
|
|
56
56
|
maxAge?: number;
|
|
@@ -69,6 +69,19 @@ declare class CORSPlugin<T extends Context> implements StandardHandlerPlugin<T>
|
|
|
69
69
|
init(options: StandardHandlerOptions<T>): void;
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
+
interface RequestHeadersPluginContext {
|
|
73
|
+
reqHeaders?: Headers;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* The Request Headers Plugin injects a `reqHeaders` instance into the context,
|
|
77
|
+
* allowing access to request headers in oRPC.
|
|
78
|
+
*
|
|
79
|
+
* @see {@link https://orpc.unnoq.com/docs/plugins/request-headers Request Headers Plugin Docs}
|
|
80
|
+
*/
|
|
81
|
+
declare class RequestHeadersPlugin<T extends RequestHeadersPluginContext> implements StandardHandlerPlugin<T> {
|
|
82
|
+
init(options: StandardHandlerOptions<T>): void;
|
|
83
|
+
}
|
|
84
|
+
|
|
72
85
|
interface ResponseHeadersPluginContext {
|
|
73
86
|
resHeaders?: Headers;
|
|
74
87
|
}
|
|
@@ -88,21 +101,21 @@ interface SimpleCsrfProtectionHandlerPluginOptions<T extends Context> {
|
|
|
88
101
|
*
|
|
89
102
|
* @default 'x-csrf-token'
|
|
90
103
|
*/
|
|
91
|
-
headerName?: Value<string
|
|
104
|
+
headerName?: Value<Promisable<string>, [options: StandardHandlerInterceptorOptions<T>]>;
|
|
92
105
|
/**
|
|
93
106
|
* The value of the header to check.
|
|
94
107
|
*
|
|
95
108
|
* @default 'orpc'
|
|
96
109
|
*
|
|
97
110
|
*/
|
|
98
|
-
headerValue?: Value<string
|
|
111
|
+
headerValue?: Value<Promisable<string>, [options: StandardHandlerInterceptorOptions<T>]>;
|
|
99
112
|
/**
|
|
100
113
|
* Exclude a procedure from the plugin.
|
|
101
114
|
*
|
|
102
115
|
* @default false
|
|
103
116
|
*
|
|
104
117
|
*/
|
|
105
|
-
exclude?: Value<boolean
|
|
118
|
+
exclude?: Value<Promisable<boolean>, [options: ProcedureClientInterceptorOptions<T, Record<never, never>, Meta>]>;
|
|
106
119
|
/**
|
|
107
120
|
* The error thrown when the CSRF token is invalid.
|
|
108
121
|
*
|
|
@@ -152,5 +165,5 @@ declare class StrictGetMethodPlugin<T extends Context> implements StandardHandle
|
|
|
152
165
|
init(options: StandardHandlerOptions<T>): void;
|
|
153
166
|
}
|
|
154
167
|
|
|
155
|
-
export { BatchHandlerPlugin, CORSPlugin, ResponseHeadersPlugin, SimpleCsrfProtectionHandlerPlugin, StrictGetMethodPlugin };
|
|
156
|
-
export type { BatchHandlerOptions, CORSOptions, ResponseHeadersPluginContext, SimpleCsrfProtectionHandlerPluginOptions, StrictGetMethodPluginOptions };
|
|
168
|
+
export { BatchHandlerPlugin, CORSPlugin, RequestHeadersPlugin, ResponseHeadersPlugin, SimpleCsrfProtectionHandlerPlugin, StrictGetMethodPlugin };
|
|
169
|
+
export type { BatchHandlerOptions, CORSOptions, RequestHeadersPluginContext, ResponseHeadersPluginContext, SimpleCsrfProtectionHandlerPluginOptions, StrictGetMethodPluginOptions };
|
package/dist/plugins/index.mjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { value, isAsyncIteratorObject } from '@orpc/shared';
|
|
2
|
-
import { parseBatchRequest, toBatchResponse } from '@orpc/standard-server/batch';
|
|
1
|
+
import { runWithSpan, value, setSpanError, isAsyncIteratorObject, AsyncIteratorClass, clone } from '@orpc/shared';
|
|
3
2
|
import { flattenHeader } from '@orpc/standard-server';
|
|
3
|
+
import { parseBatchRequest, toBatchResponse } from '@orpc/standard-server/batch';
|
|
4
|
+
import { toFetchHeaders } from '@orpc/standard-server-fetch';
|
|
4
5
|
import { ORPCError } from '@orpc/client';
|
|
5
6
|
export { S as StrictGetMethodPlugin } from '../shared/server.BW-nUGgA.mjs';
|
|
6
7
|
import '@orpc/contract';
|
|
@@ -26,69 +27,82 @@ class BatchHandlerPlugin {
|
|
|
26
27
|
init(options) {
|
|
27
28
|
options.rootInterceptors ??= [];
|
|
28
29
|
options.rootInterceptors.unshift(async (options2) => {
|
|
29
|
-
|
|
30
|
+
const xHeader = flattenHeader(options2.request.headers["x-orpc-batch"]);
|
|
31
|
+
if (xHeader === void 0) {
|
|
30
32
|
return options2.next();
|
|
31
33
|
}
|
|
32
34
|
let isParsing = false;
|
|
33
35
|
try {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
return options2.next({ ...options2, request: { ...mapped, body: () => Promise.resolve(mapped.body) } }).then(({ response: response2, matched }) => {
|
|
52
|
-
if (matched) {
|
|
53
|
-
if (response2.body instanceof Blob || response2.body instanceof FormData || isAsyncIteratorObject(response2.body)) {
|
|
54
|
-
return {
|
|
55
|
-
index,
|
|
56
|
-
status: 500,
|
|
57
|
-
headers: {},
|
|
58
|
-
body: "Batch responses do not support file/blob, or event-iterator. Please call this procedure separately outside of the batch request."
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
return { ...response2, index };
|
|
36
|
+
return await runWithSpan({ name: "handle_batch_request" }, async (span) => {
|
|
37
|
+
const mode = xHeader === "buffered" ? "buffered" : "streaming";
|
|
38
|
+
isParsing = true;
|
|
39
|
+
const parsed = parseBatchRequest({ ...options2.request, body: await options2.request.body() });
|
|
40
|
+
isParsing = false;
|
|
41
|
+
span?.setAttribute("batch.mode", mode);
|
|
42
|
+
span?.setAttribute("batch.size", parsed.length);
|
|
43
|
+
const maxSize = await value(this.maxSize, options2);
|
|
44
|
+
if (parsed.length > maxSize) {
|
|
45
|
+
const message = "Batch request size exceeds the maximum allowed size";
|
|
46
|
+
setSpanError(span, message);
|
|
47
|
+
return {
|
|
48
|
+
matched: true,
|
|
49
|
+
response: {
|
|
50
|
+
status: 413,
|
|
51
|
+
headers: {},
|
|
52
|
+
body: message
|
|
62
53
|
}
|
|
63
|
-
|
|
64
|
-
}).catch(() => {
|
|
65
|
-
return { index, status: 500, headers: {}, body: "Internal server error" };
|
|
66
|
-
});
|
|
54
|
+
};
|
|
67
55
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
56
|
+
const responses = parsed.map(
|
|
57
|
+
(request, index) => {
|
|
58
|
+
const mapped = this.mapRequestItem(request, options2);
|
|
59
|
+
return options2.next({ ...options2, request: { ...mapped, body: () => Promise.resolve(mapped.body) } }).then(({ response: response2, matched }) => {
|
|
60
|
+
span?.addEvent(`response.${index}.${matched ? "success" : "not_matched"}`);
|
|
61
|
+
if (matched) {
|
|
62
|
+
if (response2.body instanceof Blob || response2.body instanceof FormData || isAsyncIteratorObject(response2.body)) {
|
|
63
|
+
return {
|
|
64
|
+
index,
|
|
65
|
+
status: 500,
|
|
66
|
+
headers: {},
|
|
67
|
+
body: "Batch responses do not support file/blob, or event-iterator. Please call this procedure separately outside of the batch request."
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
return { ...response2, index };
|
|
71
|
+
}
|
|
72
|
+
return { index, status: 404, headers: {}, body: "No procedure matched" };
|
|
73
|
+
}).catch((err) => {
|
|
74
|
+
Promise.reject(err);
|
|
75
|
+
return { index, status: 500, headers: {}, body: "Internal server error" };
|
|
76
|
+
});
|
|
85
77
|
}
|
|
86
|
-
|
|
78
|
+
);
|
|
79
|
+
await Promise.race(responses);
|
|
80
|
+
const status = await value(this.successStatus, responses, options2);
|
|
81
|
+
const headers = await value(this.headers, responses, options2);
|
|
82
|
+
const promises = [...responses];
|
|
83
|
+
const response = await toBatchResponse({
|
|
84
|
+
status,
|
|
85
|
+
headers,
|
|
86
|
+
mode,
|
|
87
|
+
body: new AsyncIteratorClass(
|
|
88
|
+
async () => {
|
|
89
|
+
const handling = promises.filter((p) => p !== void 0);
|
|
90
|
+
if (handling.length <= 0) {
|
|
91
|
+
return { done: true, value: void 0 };
|
|
92
|
+
}
|
|
93
|
+
const value2 = await Promise.race(handling);
|
|
94
|
+
promises[value2.index] = void 0;
|
|
95
|
+
return { done: false, value: value2 };
|
|
96
|
+
},
|
|
97
|
+
async () => {
|
|
98
|
+
}
|
|
99
|
+
)
|
|
100
|
+
});
|
|
101
|
+
return {
|
|
102
|
+
matched: true,
|
|
103
|
+
response
|
|
104
|
+
};
|
|
87
105
|
});
|
|
88
|
-
return {
|
|
89
|
-
matched: true,
|
|
90
|
-
response
|
|
91
|
-
};
|
|
92
106
|
} catch (cause) {
|
|
93
107
|
if (isParsing) {
|
|
94
108
|
return {
|
|
@@ -175,6 +189,22 @@ class CORSPlugin {
|
|
|
175
189
|
}
|
|
176
190
|
}
|
|
177
191
|
|
|
192
|
+
class RequestHeadersPlugin {
|
|
193
|
+
init(options) {
|
|
194
|
+
options.rootInterceptors ??= [];
|
|
195
|
+
options.rootInterceptors.push((interceptorOptions) => {
|
|
196
|
+
const reqHeaders = interceptorOptions.context.reqHeaders ?? toFetchHeaders(interceptorOptions.request.headers);
|
|
197
|
+
return interceptorOptions.next({
|
|
198
|
+
...interceptorOptions,
|
|
199
|
+
context: {
|
|
200
|
+
...interceptorOptions.context,
|
|
201
|
+
reqHeaders
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
|
|
178
208
|
class ResponseHeadersPlugin {
|
|
179
209
|
init(options) {
|
|
180
210
|
options.rootInterceptors ??= [];
|
|
@@ -190,7 +220,7 @@ class ResponseHeadersPlugin {
|
|
|
190
220
|
if (!result.matched) {
|
|
191
221
|
return result;
|
|
192
222
|
}
|
|
193
|
-
const responseHeaders = result.response.headers;
|
|
223
|
+
const responseHeaders = clone(result.response.headers);
|
|
194
224
|
for (const [key, value] of resHeaders) {
|
|
195
225
|
if (Array.isArray(responseHeaders[key])) {
|
|
196
226
|
responseHeaders[key].push(value);
|
|
@@ -200,7 +230,13 @@ class ResponseHeadersPlugin {
|
|
|
200
230
|
responseHeaders[key] = value;
|
|
201
231
|
}
|
|
202
232
|
}
|
|
203
|
-
return
|
|
233
|
+
return {
|
|
234
|
+
...result,
|
|
235
|
+
response: {
|
|
236
|
+
...result.response,
|
|
237
|
+
headers: responseHeaders
|
|
238
|
+
}
|
|
239
|
+
};
|
|
204
240
|
});
|
|
205
241
|
}
|
|
206
242
|
}
|
|
@@ -248,4 +284,4 @@ class SimpleCsrfProtectionHandlerPlugin {
|
|
|
248
284
|
}
|
|
249
285
|
}
|
|
250
286
|
|
|
251
|
-
export { BatchHandlerPlugin, CORSPlugin, ResponseHeadersPlugin, SimpleCsrfProtectionHandlerPlugin };
|
|
287
|
+
export { BatchHandlerPlugin, CORSPlugin, RequestHeadersPlugin, ResponseHeadersPlugin, SimpleCsrfProtectionHandlerPlugin };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ORPCErrorCode, ORPCErrorOptions, ORPCError, HTTPPath, ClientContext, Client } from '@orpc/client';
|
|
2
2
|
import { ErrorMap, ErrorMapItem, InferSchemaInput, AnySchema, Meta, ContractProcedureDef, InferSchemaOutput, ErrorFromErrorMap, AnyContractRouter, ContractProcedure } from '@orpc/contract';
|
|
3
|
-
import { MaybeOptionalOptions, Promisable, Interceptor, Value } from '@orpc/shared';
|
|
3
|
+
import { MaybeOptionalOptions, Promisable, Interceptor, PromiseWithError, Value } from '@orpc/shared';
|
|
4
4
|
|
|
5
5
|
type Context = Record<PropertyKey, any>;
|
|
6
6
|
type MergedInitialContext<TInitial extends Context, TAdditional extends Context, TCurrent extends Context> = TInitial & Omit<TAdditional, keyof TCurrent>;
|
|
@@ -13,7 +13,6 @@ type ORPCErrorConstructorMap<T extends ErrorMap> = {
|
|
|
13
13
|
[K in keyof T]: K extends ORPCErrorCode ? T[K] extends ErrorMapItem<infer UInputSchema> ? ORPCErrorConstructorMapItem<K, InferSchemaInput<UInputSchema>> : never : never;
|
|
14
14
|
};
|
|
15
15
|
declare function createORPCErrorConstructorMap<T extends ErrorMap>(errors: T): ORPCErrorConstructorMap<T>;
|
|
16
|
-
declare function validateORPCError(map: ErrorMap, error: ORPCError<any, any>): Promise<ORPCError<string, unknown>>;
|
|
17
16
|
|
|
18
17
|
declare const LAZY_SYMBOL: unique symbol;
|
|
19
18
|
interface LazyMeta {
|
|
@@ -29,7 +28,9 @@ interface Lazy<T> {
|
|
|
29
28
|
}
|
|
30
29
|
type Lazyable<T> = T | Lazy<T>;
|
|
31
30
|
/**
|
|
32
|
-
*
|
|
31
|
+
* Creates a lazy-loaded item.
|
|
32
|
+
*
|
|
33
|
+
* @warning The `prefix` in `meta` only holds metadata and does not apply the prefix to the lazy router, use `os.prefix(...).lazy(...)` instead.
|
|
33
34
|
*/
|
|
34
35
|
declare function lazy<T>(loader: () => Promise<{
|
|
35
36
|
default: T;
|
|
@@ -127,18 +128,18 @@ type CreateProcedureClientOptions<TInitialContext extends Context, TOutputSchema
|
|
|
127
128
|
* This is helpful for logging and analytics.
|
|
128
129
|
*/
|
|
129
130
|
path?: readonly string[];
|
|
130
|
-
interceptors?: Interceptor<ProcedureClientInterceptorOptions<TInitialContext, TErrorMap, TMeta>, InferSchemaOutput<TOutputSchema>, ErrorFromErrorMap<TErrorMap
|
|
131
|
+
interceptors?: Interceptor<ProcedureClientInterceptorOptions<TInitialContext, TErrorMap, TMeta>, PromiseWithError<InferSchemaOutput<TOutputSchema>, ErrorFromErrorMap<TErrorMap>>>[];
|
|
131
132
|
} & (Record<never, never> extends TInitialContext ? {
|
|
132
|
-
context?: Value<TInitialContext
|
|
133
|
+
context?: Value<Promisable<TInitialContext>, [clientContext: TClientContext]>;
|
|
133
134
|
} : {
|
|
134
|
-
context: Value<TInitialContext
|
|
135
|
+
context: Value<Promisable<TInitialContext>, [clientContext: TClientContext]>;
|
|
135
136
|
});
|
|
136
137
|
/**
|
|
137
138
|
* Create Server-side client from a procedure.
|
|
138
139
|
*
|
|
139
140
|
* @see {@link https://orpc.unnoq.com/docs/client/server-side Server-side Client Docs}
|
|
140
141
|
*/
|
|
141
|
-
declare function createProcedureClient<TInitialContext extends Context, TInputSchema extends AnySchema, TOutputSchema extends AnySchema, TErrorMap extends ErrorMap, TMeta extends Meta, TClientContext extends ClientContext>(lazyableProcedure: Lazyable<Procedure<TInitialContext, any, TInputSchema, TOutputSchema, TErrorMap, TMeta>>, ...
|
|
142
|
+
declare function createProcedureClient<TInitialContext extends Context, TInputSchema extends AnySchema, TOutputSchema extends AnySchema, TErrorMap extends ErrorMap, TMeta extends Meta, TClientContext extends ClientContext>(lazyableProcedure: Lazyable<Procedure<TInitialContext, any, TInputSchema, TOutputSchema, TErrorMap, TMeta>>, ...rest: MaybeOptionalOptions<CreateProcedureClientOptions<TInitialContext, TOutputSchema, TErrorMap, TMeta, TClientContext>>): ProcedureClient<TClientContext, TInputSchema, TOutputSchema, TErrorMap>;
|
|
142
143
|
|
|
143
144
|
/**
|
|
144
145
|
* Represents a router, which defines a hierarchical structure of procedures.
|
|
@@ -188,5 +189,5 @@ type InferRouterOutputs<T extends AnyRouter> = T extends Procedure<any, any, any
|
|
|
188
189
|
[K in keyof T]: T[K] extends Lazyable<infer U extends AnyRouter> ? InferRouterOutputs<U> : never;
|
|
189
190
|
};
|
|
190
191
|
|
|
191
|
-
export { isProcedure as E, createProcedureClient as
|
|
192
|
-
export type {
|
|
192
|
+
export { isProcedure as E, createProcedureClient as F, Procedure as P, mergeCurrentContext as m, createORPCErrorConstructorMap as n, LAZY_SYMBOL as o, lazy as q, isLazy as r, getLazyMeta as s, unlazy as u, middlewareOutputFn as z };
|
|
193
|
+
export type { AnyProcedure as A, ProcedureHandlerOptions as B, Context as C, ProcedureDef as D, InferRouterInitialContexts as G, InferRouterCurrentContexts as H, InferRouterInitialContext as I, InferRouterInputs as J, InferRouterOutputs as K, Lazyable as L, MergedInitialContext as M, ORPCErrorConstructorMap as O, Router as R, AnyMiddleware as a, AnyRouter as b, Lazy as c, ProcedureClientInterceptorOptions as d, Middleware as e, MergedCurrentContext as f, MapInputMiddleware as g, CreateProcedureClientOptions as h, ProcedureClient as i, ProcedureHandler as j, ORPCErrorConstructorMapItemOptions as k, ORPCErrorConstructorMapItem as l, LazyMeta as p, MiddlewareResult as t, MiddlewareNextFnOptions as v, MiddlewareNextFn as w, MiddlewareOutputFn as x, MiddlewareOptions as y };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ORPCErrorCode, ORPCErrorOptions, ORPCError, HTTPPath, ClientContext, Client } from '@orpc/client';
|
|
2
2
|
import { ErrorMap, ErrorMapItem, InferSchemaInput, AnySchema, Meta, ContractProcedureDef, InferSchemaOutput, ErrorFromErrorMap, AnyContractRouter, ContractProcedure } from '@orpc/contract';
|
|
3
|
-
import { MaybeOptionalOptions, Promisable, Interceptor, Value } from '@orpc/shared';
|
|
3
|
+
import { MaybeOptionalOptions, Promisable, Interceptor, PromiseWithError, Value } from '@orpc/shared';
|
|
4
4
|
|
|
5
5
|
type Context = Record<PropertyKey, any>;
|
|
6
6
|
type MergedInitialContext<TInitial extends Context, TAdditional extends Context, TCurrent extends Context> = TInitial & Omit<TAdditional, keyof TCurrent>;
|
|
@@ -13,7 +13,6 @@ type ORPCErrorConstructorMap<T extends ErrorMap> = {
|
|
|
13
13
|
[K in keyof T]: K extends ORPCErrorCode ? T[K] extends ErrorMapItem<infer UInputSchema> ? ORPCErrorConstructorMapItem<K, InferSchemaInput<UInputSchema>> : never : never;
|
|
14
14
|
};
|
|
15
15
|
declare function createORPCErrorConstructorMap<T extends ErrorMap>(errors: T): ORPCErrorConstructorMap<T>;
|
|
16
|
-
declare function validateORPCError(map: ErrorMap, error: ORPCError<any, any>): Promise<ORPCError<string, unknown>>;
|
|
17
16
|
|
|
18
17
|
declare const LAZY_SYMBOL: unique symbol;
|
|
19
18
|
interface LazyMeta {
|
|
@@ -29,7 +28,9 @@ interface Lazy<T> {
|
|
|
29
28
|
}
|
|
30
29
|
type Lazyable<T> = T | Lazy<T>;
|
|
31
30
|
/**
|
|
32
|
-
*
|
|
31
|
+
* Creates a lazy-loaded item.
|
|
32
|
+
*
|
|
33
|
+
* @warning The `prefix` in `meta` only holds metadata and does not apply the prefix to the lazy router, use `os.prefix(...).lazy(...)` instead.
|
|
33
34
|
*/
|
|
34
35
|
declare function lazy<T>(loader: () => Promise<{
|
|
35
36
|
default: T;
|
|
@@ -127,18 +128,18 @@ type CreateProcedureClientOptions<TInitialContext extends Context, TOutputSchema
|
|
|
127
128
|
* This is helpful for logging and analytics.
|
|
128
129
|
*/
|
|
129
130
|
path?: readonly string[];
|
|
130
|
-
interceptors?: Interceptor<ProcedureClientInterceptorOptions<TInitialContext, TErrorMap, TMeta>, InferSchemaOutput<TOutputSchema>, ErrorFromErrorMap<TErrorMap
|
|
131
|
+
interceptors?: Interceptor<ProcedureClientInterceptorOptions<TInitialContext, TErrorMap, TMeta>, PromiseWithError<InferSchemaOutput<TOutputSchema>, ErrorFromErrorMap<TErrorMap>>>[];
|
|
131
132
|
} & (Record<never, never> extends TInitialContext ? {
|
|
132
|
-
context?: Value<TInitialContext
|
|
133
|
+
context?: Value<Promisable<TInitialContext>, [clientContext: TClientContext]>;
|
|
133
134
|
} : {
|
|
134
|
-
context: Value<TInitialContext
|
|
135
|
+
context: Value<Promisable<TInitialContext>, [clientContext: TClientContext]>;
|
|
135
136
|
});
|
|
136
137
|
/**
|
|
137
138
|
* Create Server-side client from a procedure.
|
|
138
139
|
*
|
|
139
140
|
* @see {@link https://orpc.unnoq.com/docs/client/server-side Server-side Client Docs}
|
|
140
141
|
*/
|
|
141
|
-
declare function createProcedureClient<TInitialContext extends Context, TInputSchema extends AnySchema, TOutputSchema extends AnySchema, TErrorMap extends ErrorMap, TMeta extends Meta, TClientContext extends ClientContext>(lazyableProcedure: Lazyable<Procedure<TInitialContext, any, TInputSchema, TOutputSchema, TErrorMap, TMeta>>, ...
|
|
142
|
+
declare function createProcedureClient<TInitialContext extends Context, TInputSchema extends AnySchema, TOutputSchema extends AnySchema, TErrorMap extends ErrorMap, TMeta extends Meta, TClientContext extends ClientContext>(lazyableProcedure: Lazyable<Procedure<TInitialContext, any, TInputSchema, TOutputSchema, TErrorMap, TMeta>>, ...rest: MaybeOptionalOptions<CreateProcedureClientOptions<TInitialContext, TOutputSchema, TErrorMap, TMeta, TClientContext>>): ProcedureClient<TClientContext, TInputSchema, TOutputSchema, TErrorMap>;
|
|
142
143
|
|
|
143
144
|
/**
|
|
144
145
|
* Represents a router, which defines a hierarchical structure of procedures.
|
|
@@ -188,5 +189,5 @@ type InferRouterOutputs<T extends AnyRouter> = T extends Procedure<any, any, any
|
|
|
188
189
|
[K in keyof T]: T[K] extends Lazyable<infer U extends AnyRouter> ? InferRouterOutputs<U> : never;
|
|
189
190
|
};
|
|
190
191
|
|
|
191
|
-
export { isProcedure as E, createProcedureClient as
|
|
192
|
-
export type {
|
|
192
|
+
export { isProcedure as E, createProcedureClient as F, Procedure as P, mergeCurrentContext as m, createORPCErrorConstructorMap as n, LAZY_SYMBOL as o, lazy as q, isLazy as r, getLazyMeta as s, unlazy as u, middlewareOutputFn as z };
|
|
193
|
+
export type { AnyProcedure as A, ProcedureHandlerOptions as B, Context as C, ProcedureDef as D, InferRouterInitialContexts as G, InferRouterCurrentContexts as H, InferRouterInitialContext as I, InferRouterInputs as J, InferRouterOutputs as K, Lazyable as L, MergedInitialContext as M, ORPCErrorConstructorMap as O, Router as R, AnyMiddleware as a, AnyRouter as b, Lazy as c, ProcedureClientInterceptorOptions as d, Middleware as e, MergedCurrentContext as f, MapInputMiddleware as g, CreateProcedureClientOptions as h, ProcedureClient as i, ProcedureHandler as j, ORPCErrorConstructorMapItemOptions as k, ORPCErrorConstructorMapItem as l, LazyMeta as p, MiddlewareResult as t, MiddlewareNextFnOptions as v, MiddlewareNextFn as w, MiddlewareOutputFn as x, MiddlewareOptions as y };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { StandardRPCJsonSerializerOptions } from '@orpc/client/standard';
|
|
2
|
+
import { b as AnyRouter, C as Context, R as Router } from './server.B4BGqy3Y.js';
|
|
3
|
+
import { i as StandardMatcher, h as StandardMatchResult, e as StandardHandlerOptions, f as StandardHandler } from './server.DPIFWpxG.js';
|
|
4
|
+
import { HTTPPath } from '@orpc/client';
|
|
5
|
+
import { Value } from '@orpc/shared';
|
|
6
|
+
import { T as TraverseContractProcedureCallbackOptions } from './server.Cb6yD7DZ.js';
|
|
7
|
+
|
|
8
|
+
interface StandardRPCMatcherOptions {
|
|
9
|
+
/**
|
|
10
|
+
* Filter procedures. Return `false` to exclude a procedure from matching.
|
|
11
|
+
*
|
|
12
|
+
* @default true
|
|
13
|
+
*/
|
|
14
|
+
filter?: Value<boolean, [options: TraverseContractProcedureCallbackOptions]>;
|
|
15
|
+
}
|
|
16
|
+
declare class StandardRPCMatcher implements StandardMatcher {
|
|
17
|
+
private readonly filter;
|
|
18
|
+
private readonly tree;
|
|
19
|
+
private pendingRouters;
|
|
20
|
+
constructor(options?: StandardRPCMatcherOptions);
|
|
21
|
+
init(router: AnyRouter, path?: readonly string[]): void;
|
|
22
|
+
match(_method: string, pathname: HTTPPath): Promise<StandardMatchResult>;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
interface StandardRPCHandlerOptions<T extends Context> extends StandardHandlerOptions<T>, StandardRPCJsonSerializerOptions, StandardRPCMatcherOptions {
|
|
26
|
+
}
|
|
27
|
+
declare class StandardRPCHandler<T extends Context> extends StandardHandler<T> {
|
|
28
|
+
constructor(router: Router<any, T>, options?: StandardRPCHandlerOptions<T>);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export { StandardRPCHandler as a, StandardRPCMatcher as c };
|
|
32
|
+
export type { StandardRPCHandlerOptions as S, StandardRPCMatcherOptions as b };
|