@orpc/server 0.0.0-next.3f73bd3 → 0.0.0-next.4011bd2
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 +10 -5
- package/dist/adapters/aws-lambda/index.d.mts +7 -7
- package/dist/adapters/aws-lambda/index.d.ts +7 -7
- package/dist/adapters/aws-lambda/index.mjs +4 -3
- package/dist/adapters/bun-ws/index.d.mts +7 -7
- package/dist/adapters/bun-ws/index.d.ts +7 -7
- package/dist/adapters/bun-ws/index.mjs +10 -10
- package/dist/adapters/crossws/index.d.mts +7 -7
- package/dist/adapters/crossws/index.d.ts +7 -7
- package/dist/adapters/crossws/index.mjs +5 -7
- package/dist/adapters/fastify/index.d.mts +53 -0
- package/dist/adapters/fastify/index.d.ts +53 -0
- package/dist/adapters/fastify/index.mjs +54 -0
- package/dist/adapters/fetch/index.d.mts +57 -12
- package/dist/adapters/fetch/index.d.ts +57 -12
- package/dist/adapters/fetch/index.mjs +74 -4
- package/dist/adapters/message-port/index.d.mts +37 -11
- package/dist/adapters/message-port/index.d.ts +37 -11
- package/dist/adapters/message-port/index.mjs +29 -15
- package/dist/adapters/node/index.d.mts +34 -13
- package/dist/adapters/node/index.d.ts +34 -13
- package/dist/adapters/node/index.mjs +70 -13
- package/dist/adapters/standard/index.d.mts +6 -6
- package/dist/adapters/standard/index.d.ts +6 -6
- package/dist/adapters/standard/index.mjs +2 -2
- package/dist/adapters/standard-peer/index.d.mts +9 -5
- package/dist/adapters/standard-peer/index.d.ts +9 -5
- package/dist/adapters/standard-peer/index.mjs +1 -1
- package/dist/adapters/websocket/index.d.mts +11 -9
- package/dist/adapters/websocket/index.d.ts +11 -9
- package/dist/adapters/websocket/index.mjs +5 -7
- package/dist/adapters/ws/index.d.mts +7 -7
- package/dist/adapters/ws/index.d.ts +7 -7
- package/dist/adapters/ws/index.mjs +5 -7
- package/dist/helpers/index.d.mts +149 -0
- package/dist/helpers/index.d.ts +149 -0
- package/dist/helpers/index.mjs +198 -0
- package/dist/hibernation/index.d.mts +13 -13
- package/dist/hibernation/index.d.ts +13 -13
- package/dist/hibernation/index.mjs +8 -8
- package/dist/index.d.mts +102 -102
- package/dist/index.d.ts +102 -102
- package/dist/index.mjs +37 -33
- package/dist/plugins/index.d.mts +58 -10
- package/dist/plugins/index.d.ts +58 -10
- package/dist/plugins/index.mjs +127 -58
- package/dist/shared/{server.BX8Iro5z.d.ts → server.7cEtMB30.d.ts} +1 -1
- package/dist/shared/{server.VjZAmjFs.d.mts → server.B8gYOD5g.d.mts} +2 -2
- package/dist/shared/{server.De2J-WNx.d.mts → server.BqadksTP.d.mts} +1 -1
- package/dist/shared/{server.Aqc4pYFD.mjs → server.Bxx6tqNe.mjs} +64 -39
- package/dist/shared/{server.LbkXatAA.d.mts → server.C8_sRzQB.d.mts} +9 -5
- package/dist/shared/{server.C73P4Mrh.d.ts → server.ChUyt5-i.d.mts} +4 -4
- package/dist/shared/{server.8MrCCutE.d.ts → server.ChyoA9XY.d.ts} +9 -5
- package/dist/shared/{server.DLJzqnSX.mjs → server.Ds4HPpvH.mjs} +114 -73
- package/dist/shared/{server.mGrd7l1v.d.ts → server.EfTOZ2Q7.d.ts} +2 -2
- package/dist/shared/{server.BW-nUGgA.mjs → server.TEVCLCFC.mjs} +3 -0
- package/dist/shared/server.UVMTOWrk.mjs +26 -0
- package/dist/shared/{server.CRejaM08.d.mts → server.qKsRrdxW.d.mts} +14 -13
- package/dist/shared/{server.CRejaM08.d.ts → server.qKsRrdxW.d.ts} +14 -13
- package/dist/shared/{server.Bhu0GKcA.d.mts → server.yoEB3Fx4.d.ts} +4 -4
- package/package.json +29 -13
- package/dist/shared/server.C6Q5sqYw.mjs +0 -20
package/dist/plugins/index.mjs
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { value, isAsyncIteratorObject, clone } from '@orpc/shared';
|
|
1
|
+
import { runWithSpan, value, setSpanError, isAsyncIteratorObject, AsyncIteratorClass, clone } from '@orpc/shared';
|
|
2
2
|
import { flattenHeader } from '@orpc/standard-server';
|
|
3
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
|
-
export { S as StrictGetMethodPlugin } from '../shared/server.
|
|
6
|
+
export { S as StrictGetMethodPlugin } from '../shared/server.TEVCLCFC.mjs';
|
|
6
7
|
import '@orpc/contract';
|
|
7
8
|
|
|
8
9
|
class BatchHandlerPlugin {
|
|
@@ -32,65 +33,76 @@ class BatchHandlerPlugin {
|
|
|
32
33
|
}
|
|
33
34
|
let isParsing = false;
|
|
34
35
|
try {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
return options2.next({ ...options2, request: { ...mapped, body: () => Promise.resolve(mapped.body) } }).then(({ response: response2, matched }) => {
|
|
53
|
-
if (matched) {
|
|
54
|
-
if (response2.body instanceof Blob || response2.body instanceof FormData || isAsyncIteratorObject(response2.body)) {
|
|
55
|
-
return {
|
|
56
|
-
index,
|
|
57
|
-
status: 500,
|
|
58
|
-
headers: {},
|
|
59
|
-
body: "Batch responses do not support file/blob, or event-iterator. Please call this procedure separately outside of the batch request."
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
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
|
|
63
53
|
}
|
|
64
|
-
|
|
65
|
-
}).catch(() => {
|
|
66
|
-
return { index, status: 500, headers: {}, body: "Internal server error" };
|
|
67
|
-
});
|
|
54
|
+
};
|
|
68
55
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
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
|
+
});
|
|
87
77
|
}
|
|
88
|
-
|
|
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
|
+
};
|
|
89
105
|
});
|
|
90
|
-
return {
|
|
91
|
-
matched: true,
|
|
92
|
-
response
|
|
93
|
-
};
|
|
94
106
|
} catch (cause) {
|
|
95
107
|
if (isParsing) {
|
|
96
108
|
return {
|
|
@@ -177,6 +189,22 @@ class CORSPlugin {
|
|
|
177
189
|
}
|
|
178
190
|
}
|
|
179
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
|
+
|
|
180
208
|
class ResponseHeadersPlugin {
|
|
181
209
|
init(options) {
|
|
182
210
|
options.rootInterceptors ??= [];
|
|
@@ -213,6 +241,47 @@ class ResponseHeadersPlugin {
|
|
|
213
241
|
}
|
|
214
242
|
}
|
|
215
243
|
|
|
244
|
+
class experimental_RethrowHandlerPlugin {
|
|
245
|
+
filter;
|
|
246
|
+
CONTEXT_SYMBOL = Symbol("ORPC_RETHROW_HANDLER_PLUGIN_CONTEXT");
|
|
247
|
+
constructor(options) {
|
|
248
|
+
this.filter = options.filter;
|
|
249
|
+
}
|
|
250
|
+
init(options) {
|
|
251
|
+
options.rootInterceptors ??= [];
|
|
252
|
+
options.interceptors ??= [];
|
|
253
|
+
options.rootInterceptors.push(async (options2) => {
|
|
254
|
+
const pluginContext = {};
|
|
255
|
+
const result = await options2.next({
|
|
256
|
+
...options2,
|
|
257
|
+
context: {
|
|
258
|
+
...options2.context,
|
|
259
|
+
[this.CONTEXT_SYMBOL]: pluginContext
|
|
260
|
+
}
|
|
261
|
+
});
|
|
262
|
+
if (pluginContext.error) {
|
|
263
|
+
throw pluginContext.error.value;
|
|
264
|
+
}
|
|
265
|
+
return result;
|
|
266
|
+
});
|
|
267
|
+
options.interceptors.unshift(async (options2) => {
|
|
268
|
+
const pluginContext = options2.context[this.CONTEXT_SYMBOL];
|
|
269
|
+
if (!pluginContext) {
|
|
270
|
+
throw new TypeError("[RethrowHandlerPlugin] Rethrow handler context has been corrupted or modified by another plugin or interceptor");
|
|
271
|
+
}
|
|
272
|
+
try {
|
|
273
|
+
return await options2.next();
|
|
274
|
+
} catch (error) {
|
|
275
|
+
if (value(this.filter, error, options2)) {
|
|
276
|
+
pluginContext.error = { value: error };
|
|
277
|
+
return { matched: false, response: void 0 };
|
|
278
|
+
}
|
|
279
|
+
throw error;
|
|
280
|
+
}
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
|
|
216
285
|
const SIMPLE_CSRF_PROTECTION_CONTEXT_SYMBOL = Symbol("SIMPLE_CSRF_PROTECTION_CONTEXT");
|
|
217
286
|
class SimpleCsrfProtectionHandlerPlugin {
|
|
218
287
|
headerName;
|
|
@@ -256,4 +325,4 @@ class SimpleCsrfProtectionHandlerPlugin {
|
|
|
256
325
|
}
|
|
257
326
|
}
|
|
258
327
|
|
|
259
|
-
export { BatchHandlerPlugin, CORSPlugin, ResponseHeadersPlugin, SimpleCsrfProtectionHandlerPlugin };
|
|
328
|
+
export { BatchHandlerPlugin, CORSPlugin, RequestHeadersPlugin, ResponseHeadersPlugin, SimpleCsrfProtectionHandlerPlugin, experimental_RethrowHandlerPlugin };
|
|
@@ -2,7 +2,7 @@ import { HTTPPath, ORPCError } from '@orpc/client';
|
|
|
2
2
|
import { Meta } from '@orpc/contract';
|
|
3
3
|
import { Interceptor } from '@orpc/shared';
|
|
4
4
|
import { StandardResponse, StandardLazyRequest } from '@orpc/standard-server';
|
|
5
|
-
import { C as Context, R as Router, b as AnyRouter, A as AnyProcedure, d as ProcedureClientInterceptorOptions } from './server.
|
|
5
|
+
import { C as Context, R as Router, b as AnyRouter, A as AnyProcedure, d as ProcedureClientInterceptorOptions } from './server.qKsRrdxW.js';
|
|
6
6
|
|
|
7
7
|
interface StandardHandlerPlugin<T extends Context> {
|
|
8
8
|
order?: number;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { C as Context } from './server.
|
|
2
|
-
import { b as StandardHandleOptions } from './server.
|
|
1
|
+
import { C as Context } from './server.qKsRrdxW.mjs';
|
|
2
|
+
import { b as StandardHandleOptions } from './server.BqadksTP.mjs';
|
|
3
3
|
|
|
4
4
|
type FriendlyStandardHandleOptions<T extends Context> = Omit<StandardHandleOptions<T>, 'context'> & (Record<never, never> extends T ? {
|
|
5
5
|
context?: T;
|
|
@@ -2,7 +2,7 @@ import { HTTPPath, ORPCError } from '@orpc/client';
|
|
|
2
2
|
import { Meta } from '@orpc/contract';
|
|
3
3
|
import { Interceptor } from '@orpc/shared';
|
|
4
4
|
import { StandardResponse, StandardLazyRequest } from '@orpc/standard-server';
|
|
5
|
-
import { C as Context, R as Router, b as AnyRouter, A as AnyProcedure, d as ProcedureClientInterceptorOptions } from './server.
|
|
5
|
+
import { C as Context, R as Router, b as AnyRouter, A as AnyProcedure, d as ProcedureClientInterceptorOptions } from './server.qKsRrdxW.mjs';
|
|
6
6
|
|
|
7
7
|
interface StandardHandlerPlugin<T extends Context> {
|
|
8
8
|
order?: number;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { toHttpPath, StandardRPCJsonSerializer, StandardRPCSerializer } from '@orpc/client/standard';
|
|
2
2
|
import { ORPCError, toORPCError } from '@orpc/client';
|
|
3
|
-
import { toArray, intercept, parseEmptyableJSON, NullProtoObj, value } from '@orpc/shared';
|
|
3
|
+
import { toArray, intercept, runWithSpan, ORPC_NAME, isAsyncIteratorObject, asyncIteratorWithSpan, setSpanError, parseEmptyableJSON, NullProtoObj, value } from '@orpc/shared';
|
|
4
4
|
import { flattenHeader } from '@orpc/standard-server';
|
|
5
|
-
import { c as createProcedureClient, t as traverseContractProcedures, i as isProcedure, u as unlazy, g as getRouter, a as createContractedProcedure } from './server.
|
|
5
|
+
import { c as createProcedureClient, t as traverseContractProcedures, i as isProcedure, u as unlazy, g as getRouter, a as createContractedProcedure } from './server.Ds4HPpvH.mjs';
|
|
6
6
|
|
|
7
7
|
class CompositeStandardHandlerPlugin {
|
|
8
8
|
plugins;
|
|
@@ -39,49 +39,74 @@ class StandardHandler {
|
|
|
39
39
|
this.rootInterceptors,
|
|
40
40
|
{ ...options, request, prefix },
|
|
41
41
|
async (interceptorOptions) => {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
42
|
+
return runWithSpan(
|
|
43
|
+
{ name: `${request.method} ${request.url.pathname}` },
|
|
44
|
+
async (span) => {
|
|
45
|
+
let step;
|
|
46
|
+
try {
|
|
47
|
+
return await intercept(
|
|
48
|
+
this.interceptors,
|
|
49
|
+
interceptorOptions,
|
|
50
|
+
async ({ request: request2, context, prefix: prefix2 }) => {
|
|
51
|
+
const method = request2.method;
|
|
52
|
+
const url = request2.url;
|
|
53
|
+
const pathname = prefix2 ? url.pathname.replace(prefix2, "") : url.pathname;
|
|
54
|
+
const match = await runWithSpan(
|
|
55
|
+
{ name: "find_procedure" },
|
|
56
|
+
() => this.matcher.match(method, `/${pathname.replace(/^\/|\/$/g, "")}`)
|
|
57
|
+
);
|
|
58
|
+
if (!match) {
|
|
59
|
+
return { matched: false, response: void 0 };
|
|
60
|
+
}
|
|
61
|
+
span?.updateName(`${ORPC_NAME}.${match.path.join("/")}`);
|
|
62
|
+
span?.setAttribute("rpc.system", ORPC_NAME);
|
|
63
|
+
span?.setAttribute("rpc.method", match.path.join("."));
|
|
64
|
+
step = "decode_input";
|
|
65
|
+
let input = await runWithSpan(
|
|
66
|
+
{ name: "decode_input" },
|
|
67
|
+
() => this.codec.decode(request2, match.params, match.procedure)
|
|
68
|
+
);
|
|
69
|
+
step = void 0;
|
|
70
|
+
if (isAsyncIteratorObject(input)) {
|
|
71
|
+
input = asyncIteratorWithSpan(
|
|
72
|
+
{ name: "consume_event_iterator_input", signal: request2.signal },
|
|
73
|
+
input
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
const client = createProcedureClient(match.procedure, {
|
|
77
|
+
context,
|
|
78
|
+
path: match.path,
|
|
79
|
+
interceptors: this.clientInterceptors
|
|
80
|
+
});
|
|
81
|
+
step = "call_procedure";
|
|
82
|
+
const output = await client(input, {
|
|
83
|
+
signal: request2.signal,
|
|
84
|
+
lastEventId: flattenHeader(request2.headers["last-event-id"])
|
|
85
|
+
});
|
|
86
|
+
step = void 0;
|
|
87
|
+
const response = this.codec.encode(output, match.procedure);
|
|
88
|
+
return {
|
|
89
|
+
matched: true,
|
|
90
|
+
response
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
);
|
|
94
|
+
} catch (e) {
|
|
95
|
+
if (step !== "call_procedure") {
|
|
96
|
+
setSpanError(span, e);
|
|
54
97
|
}
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
isDecoding = true;
|
|
61
|
-
const input = await this.codec.decode(request2, match.params, match.procedure);
|
|
62
|
-
isDecoding = false;
|
|
63
|
-
const output = await client(input, {
|
|
64
|
-
signal: request2.signal,
|
|
65
|
-
lastEventId: flattenHeader(request2.headers["last-event-id"])
|
|
66
|
-
});
|
|
67
|
-
const response = this.codec.encode(output, match.procedure);
|
|
98
|
+
const error = step === "decode_input" && !(e instanceof ORPCError) ? new ORPCError("BAD_REQUEST", {
|
|
99
|
+
message: `Malformed request. Ensure the request body is properly formatted and the 'Content-Type' header is set correctly.`,
|
|
100
|
+
cause: e
|
|
101
|
+
}) : toORPCError(e);
|
|
102
|
+
const response = this.codec.encodeError(error);
|
|
68
103
|
return {
|
|
69
104
|
matched: true,
|
|
70
105
|
response
|
|
71
106
|
};
|
|
72
107
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
const error = isDecoding && !(e instanceof ORPCError) ? new ORPCError("BAD_REQUEST", {
|
|
76
|
-
message: `Malformed request. Ensure the request body is properly formatted and the 'Content-Type' header is set correctly.`,
|
|
77
|
-
cause: e
|
|
78
|
-
}) : toORPCError(e);
|
|
79
|
-
const response = this.codec.encodeError(error);
|
|
80
|
-
return {
|
|
81
|
-
matched: true,
|
|
82
|
-
response
|
|
83
|
-
};
|
|
84
|
-
}
|
|
108
|
+
}
|
|
109
|
+
);
|
|
85
110
|
}
|
|
86
111
|
);
|
|
87
112
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ErrorMap, EnhanceRouteOptions, MergedErrorMap, AnyContractRouter, AnyContractProcedure } from '@orpc/contract';
|
|
2
|
-
import { a as AnyMiddleware, L as Lazyable, b as AnyRouter, C as Context, c as Lazy, A as AnyProcedure, P as Procedure, M as MergedInitialContext } from './server.
|
|
2
|
+
import { a as AnyMiddleware, L as Lazyable, b as AnyRouter, C as Context, c as Lazy, A as AnyProcedure, P as Procedure, M as MergedInitialContext } from './server.qKsRrdxW.mjs';
|
|
3
3
|
|
|
4
4
|
declare function getRouter<T extends Lazyable<AnyRouter | undefined>>(router: T, path: readonly string[]): T extends Lazy<any> ? Lazy<AnyRouter | undefined> : Lazyable<AnyRouter | undefined>;
|
|
5
5
|
type AccessibleLazyRouter<T extends Lazyable<AnyRouter | undefined>> = T extends Lazy<infer U extends AnyRouter | undefined | Lazy<AnyRouter | undefined>> ? AccessibleLazyRouter<U> : T extends AnyProcedure | undefined ? Lazy<T> : Lazy<T> & {
|
|
@@ -19,20 +19,24 @@ interface TraverseContractProceduresOptions {
|
|
|
19
19
|
router: AnyContractRouter | AnyRouter;
|
|
20
20
|
path: readonly string[];
|
|
21
21
|
}
|
|
22
|
-
interface
|
|
22
|
+
interface TraverseContractProcedureCallbackOptions {
|
|
23
23
|
contract: AnyContractProcedure | AnyProcedure;
|
|
24
24
|
path: readonly string[];
|
|
25
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* @deprecated Use `TraverseContractProcedureCallbackOptions` instead.
|
|
28
|
+
*/
|
|
29
|
+
type ContractProcedureCallbackOptions = TraverseContractProcedureCallbackOptions;
|
|
26
30
|
interface LazyTraverseContractProceduresOptions {
|
|
27
31
|
router: Lazy<AnyRouter>;
|
|
28
32
|
path: readonly string[];
|
|
29
33
|
}
|
|
30
|
-
declare function traverseContractProcedures(options: TraverseContractProceduresOptions, callback: (options:
|
|
31
|
-
declare function resolveContractProcedures(options: TraverseContractProceduresOptions, callback: (options:
|
|
34
|
+
declare function traverseContractProcedures(options: TraverseContractProceduresOptions, callback: (options: TraverseContractProcedureCallbackOptions) => void, lazyOptions?: LazyTraverseContractProceduresOptions[]): LazyTraverseContractProceduresOptions[];
|
|
35
|
+
declare function resolveContractProcedures(options: TraverseContractProceduresOptions, callback: (options: TraverseContractProcedureCallbackOptions) => void): Promise<void>;
|
|
32
36
|
type UnlaziedRouter<T extends AnyRouter> = T extends AnyProcedure ? T : {
|
|
33
37
|
[K in keyof T]: T[K] extends Lazyable<infer U extends AnyRouter> ? UnlaziedRouter<U> : never;
|
|
34
38
|
};
|
|
35
39
|
declare function unlazyRouter<T extends AnyRouter>(router: T): Promise<UnlaziedRouter<T>>;
|
|
36
40
|
|
|
37
41
|
export { createAccessibleLazyRouter as c, enhanceRouter as e, getRouter as g, resolveContractProcedures as r, traverseContractProcedures as t, unlazyRouter as u };
|
|
38
|
-
export type { AccessibleLazyRouter as A, ContractProcedureCallbackOptions as C, EnhanceRouterOptions as E, LazyTraverseContractProceduresOptions as L,
|
|
42
|
+
export type { AccessibleLazyRouter as A, ContractProcedureCallbackOptions as C, EnhanceRouterOptions as E, LazyTraverseContractProceduresOptions as L, TraverseContractProcedureCallbackOptions as T, UnlaziedRouter as U, EnhancedRouter as a, TraverseContractProceduresOptions as b };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { StandardRPCJsonSerializerOptions } from '@orpc/client/standard';
|
|
2
|
-
import { b as AnyRouter, C as Context, R as Router } from './server.
|
|
3
|
-
import { i as StandardMatcher, h as StandardMatchResult, e as StandardHandlerOptions, f as StandardHandler } from './server.
|
|
2
|
+
import { b as AnyRouter, C as Context, R as Router } from './server.qKsRrdxW.mjs';
|
|
3
|
+
import { i as StandardMatcher, h as StandardMatchResult, e as StandardHandlerOptions, f as StandardHandler } from './server.BqadksTP.mjs';
|
|
4
4
|
import { HTTPPath } from '@orpc/client';
|
|
5
5
|
import { Value } from '@orpc/shared';
|
|
6
|
-
import {
|
|
6
|
+
import { T as TraverseContractProcedureCallbackOptions } from './server.C8_sRzQB.mjs';
|
|
7
7
|
|
|
8
8
|
interface StandardRPCMatcherOptions {
|
|
9
9
|
/**
|
|
@@ -11,7 +11,7 @@ interface StandardRPCMatcherOptions {
|
|
|
11
11
|
*
|
|
12
12
|
* @default true
|
|
13
13
|
*/
|
|
14
|
-
filter?: Value<boolean, [options:
|
|
14
|
+
filter?: Value<boolean, [options: TraverseContractProcedureCallbackOptions]>;
|
|
15
15
|
}
|
|
16
16
|
declare class StandardRPCMatcher implements StandardMatcher {
|
|
17
17
|
private readonly filter;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ErrorMap, EnhanceRouteOptions, MergedErrorMap, AnyContractRouter, AnyContractProcedure } from '@orpc/contract';
|
|
2
|
-
import { a as AnyMiddleware, L as Lazyable, b as AnyRouter, C as Context, c as Lazy, A as AnyProcedure, P as Procedure, M as MergedInitialContext } from './server.
|
|
2
|
+
import { a as AnyMiddleware, L as Lazyable, b as AnyRouter, C as Context, c as Lazy, A as AnyProcedure, P as Procedure, M as MergedInitialContext } from './server.qKsRrdxW.js';
|
|
3
3
|
|
|
4
4
|
declare function getRouter<T extends Lazyable<AnyRouter | undefined>>(router: T, path: readonly string[]): T extends Lazy<any> ? Lazy<AnyRouter | undefined> : Lazyable<AnyRouter | undefined>;
|
|
5
5
|
type AccessibleLazyRouter<T extends Lazyable<AnyRouter | undefined>> = T extends Lazy<infer U extends AnyRouter | undefined | Lazy<AnyRouter | undefined>> ? AccessibleLazyRouter<U> : T extends AnyProcedure | undefined ? Lazy<T> : Lazy<T> & {
|
|
@@ -19,20 +19,24 @@ interface TraverseContractProceduresOptions {
|
|
|
19
19
|
router: AnyContractRouter | AnyRouter;
|
|
20
20
|
path: readonly string[];
|
|
21
21
|
}
|
|
22
|
-
interface
|
|
22
|
+
interface TraverseContractProcedureCallbackOptions {
|
|
23
23
|
contract: AnyContractProcedure | AnyProcedure;
|
|
24
24
|
path: readonly string[];
|
|
25
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* @deprecated Use `TraverseContractProcedureCallbackOptions` instead.
|
|
28
|
+
*/
|
|
29
|
+
type ContractProcedureCallbackOptions = TraverseContractProcedureCallbackOptions;
|
|
26
30
|
interface LazyTraverseContractProceduresOptions {
|
|
27
31
|
router: Lazy<AnyRouter>;
|
|
28
32
|
path: readonly string[];
|
|
29
33
|
}
|
|
30
|
-
declare function traverseContractProcedures(options: TraverseContractProceduresOptions, callback: (options:
|
|
31
|
-
declare function resolveContractProcedures(options: TraverseContractProceduresOptions, callback: (options:
|
|
34
|
+
declare function traverseContractProcedures(options: TraverseContractProceduresOptions, callback: (options: TraverseContractProcedureCallbackOptions) => void, lazyOptions?: LazyTraverseContractProceduresOptions[]): LazyTraverseContractProceduresOptions[];
|
|
35
|
+
declare function resolveContractProcedures(options: TraverseContractProceduresOptions, callback: (options: TraverseContractProcedureCallbackOptions) => void): Promise<void>;
|
|
32
36
|
type UnlaziedRouter<T extends AnyRouter> = T extends AnyProcedure ? T : {
|
|
33
37
|
[K in keyof T]: T[K] extends Lazyable<infer U extends AnyRouter> ? UnlaziedRouter<U> : never;
|
|
34
38
|
};
|
|
35
39
|
declare function unlazyRouter<T extends AnyRouter>(router: T): Promise<UnlaziedRouter<T>>;
|
|
36
40
|
|
|
37
41
|
export { createAccessibleLazyRouter as c, enhanceRouter as e, getRouter as g, resolveContractProcedures as r, traverseContractProcedures as t, unlazyRouter as u };
|
|
38
|
-
export type { AccessibleLazyRouter as A, ContractProcedureCallbackOptions as C, EnhanceRouterOptions as E, LazyTraverseContractProceduresOptions as L,
|
|
42
|
+
export type { AccessibleLazyRouter as A, ContractProcedureCallbackOptions as C, EnhanceRouterOptions as E, LazyTraverseContractProceduresOptions as L, TraverseContractProcedureCallbackOptions as T, UnlaziedRouter as U, EnhancedRouter as a, TraverseContractProceduresOptions as b };
|