@orpc/server 0.0.0-next.2546825 → 0.0.0-next.2568a3f
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 +14 -1
- package/dist/adapters/fetch/index.d.mts +43 -10
- package/dist/adapters/fetch/index.d.ts +43 -10
- package/dist/adapters/fetch/index.mjs +104 -8
- package/dist/adapters/node/index.d.mts +45 -21
- package/dist/adapters/node/index.d.ts +45 -21
- package/dist/adapters/node/index.mjs +82 -23
- package/dist/adapters/standard/index.d.mts +12 -11
- package/dist/adapters/standard/index.d.ts +12 -11
- package/dist/adapters/standard/index.mjs +6 -4
- package/dist/index.d.mts +161 -124
- package/dist/index.d.ts +161 -124
- package/dist/index.mjs +78 -48
- package/dist/plugins/index.d.mts +112 -18
- package/dist/plugins/index.d.ts +112 -18
- package/dist/plugins/index.mjs +157 -8
- package/dist/shared/server.B1oIHH_j.d.mts +74 -0
- package/dist/shared/server.BVHsfJ99.d.mts +144 -0
- package/dist/shared/server.BVHsfJ99.d.ts +144 -0
- package/dist/shared/server.BVwwTHyO.mjs +9 -0
- package/dist/shared/server.BW-nUGgA.mjs +36 -0
- package/dist/shared/server.BuLPHTX1.d.mts +18 -0
- package/dist/shared/{server.V6zT5iYQ.mjs → server.C37gDhSZ.mjs} +158 -173
- package/dist/shared/server.CaWivVk3.d.ts +74 -0
- package/dist/shared/{server.DKrKGnk2.mjs → server.DFuJLDuo.mjs} +69 -40
- package/dist/shared/server.DMhSfHk1.d.ts +10 -0
- package/dist/shared/server.D_vpYits.d.ts +18 -0
- package/dist/shared/server.Dwnm6cSk.d.mts +10 -0
- package/package.json +8 -22
- package/dist/adapters/hono/index.d.mts +0 -19
- package/dist/adapters/hono/index.d.ts +0 -19
- package/dist/adapters/hono/index.mjs +0 -32
- package/dist/adapters/next/index.d.mts +0 -26
- package/dist/adapters/next/index.d.ts +0 -26
- package/dist/adapters/next/index.mjs +0 -29
- package/dist/shared/server.BHIDiY4a.mjs +0 -28
- package/dist/shared/server.CtBp-i4f.d.mts +0 -77
- package/dist/shared/server.Drm1Lma3.d.ts +0 -77
- package/dist/shared/server.Q6ZmnTgO.mjs +0 -12
- package/dist/shared/server.ptXwNGQr.d.mts +0 -158
- package/dist/shared/server.ptXwNGQr.d.ts +0 -158
@@ -1,51 +1,68 @@
|
|
1
|
+
import { toHttpPath, StandardRPCJsonSerializer, StandardRPCSerializer } from '@orpc/client/standard';
|
2
|
+
import { toArray, intercept, parseEmptyableJSON } from '@orpc/shared';
|
3
|
+
import '@orpc/standard-server/batch';
|
1
4
|
import { ORPCError, toORPCError } from '@orpc/client';
|
2
|
-
import {
|
3
|
-
import {
|
4
|
-
|
5
|
+
import { S as StrictGetMethodPlugin } from './server.BW-nUGgA.mjs';
|
6
|
+
import { c as createProcedureClient, t as traverseContractProcedures, i as isProcedure, u as unlazy, g as getRouter, a as createContractedProcedure } from './server.C37gDhSZ.mjs';
|
7
|
+
|
8
|
+
class CompositeStandardHandlerPlugin {
|
9
|
+
plugins;
|
10
|
+
constructor(plugins = []) {
|
11
|
+
this.plugins = [...plugins].sort((a, b) => (a.order ?? 0) - (b.order ?? 0));
|
12
|
+
}
|
13
|
+
init(options) {
|
14
|
+
for (const plugin of this.plugins) {
|
15
|
+
plugin.init?.(options);
|
16
|
+
}
|
17
|
+
}
|
18
|
+
}
|
5
19
|
|
6
20
|
class StandardHandler {
|
7
21
|
constructor(router, matcher, codec, options) {
|
8
22
|
this.matcher = matcher;
|
9
23
|
this.codec = codec;
|
10
|
-
|
11
|
-
|
12
|
-
this.
|
24
|
+
const plugins = new CompositeStandardHandlerPlugin(options.plugins);
|
25
|
+
plugins.init(options);
|
26
|
+
this.interceptors = toArray(options.interceptors);
|
27
|
+
this.clientInterceptors = toArray(options.clientInterceptors);
|
28
|
+
this.rootInterceptors = toArray(options.rootInterceptors);
|
13
29
|
this.matcher.init(router);
|
14
30
|
}
|
15
|
-
|
16
|
-
|
31
|
+
interceptors;
|
32
|
+
clientInterceptors;
|
33
|
+
rootInterceptors;
|
34
|
+
async handle(request, options) {
|
35
|
+
const prefix = options.prefix?.replace(/\/$/, "") || void 0;
|
36
|
+
if (prefix && !request.url.pathname.startsWith(`${prefix}/`) && request.url.pathname !== prefix) {
|
37
|
+
return { matched: false, response: void 0 };
|
38
|
+
}
|
17
39
|
return intercept(
|
18
|
-
this.
|
19
|
-
{
|
20
|
-
request,
|
21
|
-
...options,
|
22
|
-
context: options?.context ?? {}
|
23
|
-
// context is optional only when all fields are optional so we can safely force it to have a context
|
24
|
-
},
|
40
|
+
this.rootInterceptors,
|
41
|
+
{ ...options, request, prefix },
|
25
42
|
async (interceptorOptions) => {
|
26
43
|
let isDecoding = false;
|
27
44
|
try {
|
28
45
|
return await intercept(
|
29
|
-
this.
|
46
|
+
this.interceptors,
|
30
47
|
interceptorOptions,
|
31
|
-
async (
|
32
|
-
const method =
|
33
|
-
const url =
|
34
|
-
const pathname =
|
35
|
-
const match = await this.matcher.match(method, pathname);
|
48
|
+
async ({ request: request2, context, prefix: prefix2 }) => {
|
49
|
+
const method = request2.method;
|
50
|
+
const url = request2.url;
|
51
|
+
const pathname = prefix2 ? url.pathname.replace(prefix2, "") : url.pathname;
|
52
|
+
const match = await this.matcher.match(method, `/${pathname.replace(/^\/|\/$/g, "")}`);
|
36
53
|
if (!match) {
|
37
54
|
return { matched: false, response: void 0 };
|
38
55
|
}
|
39
56
|
const client = createProcedureClient(match.procedure, {
|
40
|
-
context
|
57
|
+
context,
|
41
58
|
path: match.path,
|
42
|
-
interceptors: this.
|
59
|
+
interceptors: this.clientInterceptors
|
43
60
|
});
|
44
61
|
isDecoding = true;
|
45
|
-
const input = await this.codec.decode(
|
62
|
+
const input = await this.codec.decode(request2, match.params, match.procedure);
|
46
63
|
isDecoding = false;
|
47
|
-
const lastEventId = Array.isArray(
|
48
|
-
const output = await client(input, { signal:
|
64
|
+
const lastEventId = Array.isArray(request2.headers["last-event-id"]) ? request2.headers["last-event-id"].at(-1) : request2.headers["last-event-id"];
|
65
|
+
const output = await client(input, { signal: request2.signal, lastEventId });
|
49
66
|
const response = this.codec.encode(output, match.procedure);
|
50
67
|
return {
|
51
68
|
matched: true,
|
@@ -54,7 +71,7 @@ class StandardHandler {
|
|
54
71
|
}
|
55
72
|
);
|
56
73
|
} catch (e) {
|
57
|
-
const error = isDecoding ? new ORPCError("BAD_REQUEST", {
|
74
|
+
const error = isDecoding && !(e instanceof ORPCError) ? new ORPCError("BAD_REQUEST", {
|
58
75
|
message: `Malformed request. Ensure the request body is properly formatted and the 'Content-Type' header is set correctly.`,
|
59
76
|
cause: e
|
60
77
|
}) : toORPCError(e);
|
@@ -69,7 +86,7 @@ class StandardHandler {
|
|
69
86
|
}
|
70
87
|
}
|
71
88
|
|
72
|
-
class
|
89
|
+
class StandardRPCCodec {
|
73
90
|
constructor(serializer) {
|
74
91
|
this.serializer = serializer;
|
75
92
|
}
|
@@ -93,15 +110,12 @@ class RPCCodec {
|
|
93
110
|
}
|
94
111
|
}
|
95
112
|
|
96
|
-
class
|
113
|
+
class StandardRPCMatcher {
|
97
114
|
tree = {};
|
98
115
|
pendingRouters = [];
|
99
116
|
init(router, path = []) {
|
100
|
-
const laziedOptions =
|
101
|
-
|
102
|
-
path
|
103
|
-
}, ({ path: path2, contract }) => {
|
104
|
-
const httpPath = convertPathToHttpPath(path2);
|
117
|
+
const laziedOptions = traverseContractProcedures({ router, path }, ({ path: path2, contract }) => {
|
118
|
+
const httpPath = toHttpPath(path2);
|
105
119
|
if (isProcedure(contract)) {
|
106
120
|
this.tree[httpPath] = {
|
107
121
|
path: path2,
|
@@ -121,7 +135,7 @@ class RPCMatcher {
|
|
121
135
|
});
|
122
136
|
this.pendingRouters.push(...laziedOptions.map((option) => ({
|
123
137
|
...option,
|
124
|
-
httpPathPrefix:
|
138
|
+
httpPathPrefix: toHttpPath(option.path)
|
125
139
|
})));
|
126
140
|
}
|
127
141
|
async match(_method, pathname) {
|
@@ -129,7 +143,7 @@ class RPCMatcher {
|
|
129
143
|
const newPendingRouters = [];
|
130
144
|
for (const pendingRouter of this.pendingRouters) {
|
131
145
|
if (pathname.startsWith(pendingRouter.httpPathPrefix)) {
|
132
|
-
const { default: router } = await unlazy(pendingRouter.
|
146
|
+
const { default: router } = await unlazy(pendingRouter.router);
|
133
147
|
this.init(router, pendingRouter.path);
|
134
148
|
} else {
|
135
149
|
newPendingRouters.push(pendingRouter);
|
@@ -142,14 +156,14 @@ class RPCMatcher {
|
|
142
156
|
return void 0;
|
143
157
|
}
|
144
158
|
if (!match.procedure) {
|
145
|
-
const { default: maybeProcedure } = await unlazy(
|
159
|
+
const { default: maybeProcedure } = await unlazy(getRouter(match.router, match.path));
|
146
160
|
if (!isProcedure(maybeProcedure)) {
|
147
161
|
throw new Error(`
|
148
|
-
[Contract-First] Missing or invalid implementation for procedure at path: ${
|
162
|
+
[Contract-First] Missing or invalid implementation for procedure at path: ${toHttpPath(match.path)}.
|
149
163
|
Ensure that the procedure is correctly defined and matches the expected contract.
|
150
164
|
`);
|
151
165
|
}
|
152
|
-
match.procedure = createContractedProcedure(match.contract
|
166
|
+
match.procedure = createContractedProcedure(maybeProcedure, match.contract);
|
153
167
|
}
|
154
168
|
return {
|
155
169
|
path: match.path,
|
@@ -158,4 +172,19 @@ class RPCMatcher {
|
|
158
172
|
}
|
159
173
|
}
|
160
174
|
|
161
|
-
|
175
|
+
class StandardRPCHandler extends StandardHandler {
|
176
|
+
constructor(router, options) {
|
177
|
+
options.plugins ??= [];
|
178
|
+
const strictGetMethodPluginEnabled = options.strictGetMethodPluginEnabled ?? true;
|
179
|
+
if (strictGetMethodPluginEnabled) {
|
180
|
+
options.plugins.push(new StrictGetMethodPlugin());
|
181
|
+
}
|
182
|
+
const jsonSerializer = new StandardRPCJsonSerializer(options);
|
183
|
+
const serializer = new StandardRPCSerializer(jsonSerializer);
|
184
|
+
const matcher = new StandardRPCMatcher();
|
185
|
+
const codec = new StandardRPCCodec(serializer);
|
186
|
+
super(router, matcher, codec, options);
|
187
|
+
}
|
188
|
+
}
|
189
|
+
|
190
|
+
export { CompositeStandardHandlerPlugin as C, StandardHandler as S, StandardRPCCodec as a, StandardRPCHandler as b, StandardRPCMatcher as c };
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { C as Context } from './server.BVHsfJ99.js';
|
2
|
+
import { g as StandardHandleOptions } from './server.CaWivVk3.js';
|
3
|
+
|
4
|
+
type FriendlyStandardHandleOptions<T extends Context> = Omit<StandardHandleOptions<T>, 'context'> & (Record<never, never> extends T ? {
|
5
|
+
context?: T;
|
6
|
+
} : {
|
7
|
+
context: T;
|
8
|
+
});
|
9
|
+
|
10
|
+
export type { FriendlyStandardHandleOptions as F };
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import { StandardRPCJsonSerializerOptions } from '@orpc/client/standard';
|
2
|
+
import { C as Context, R as Router } from './server.BVHsfJ99.js';
|
3
|
+
import { b as StandardHandlerOptions, i as StandardHandler } from './server.CaWivVk3.js';
|
4
|
+
|
5
|
+
interface StandardRPCHandlerOptions<T extends Context> extends StandardHandlerOptions<T>, StandardRPCJsonSerializerOptions {
|
6
|
+
/**
|
7
|
+
* Enables or disables the StrictGetMethodPlugin.
|
8
|
+
*
|
9
|
+
* @default true
|
10
|
+
*/
|
11
|
+
strictGetMethodPluginEnabled?: boolean;
|
12
|
+
}
|
13
|
+
declare class StandardRPCHandler<T extends Context> extends StandardHandler<T> {
|
14
|
+
constructor(router: Router<any, T>, options: StandardRPCHandlerOptions<T>);
|
15
|
+
}
|
16
|
+
|
17
|
+
export { StandardRPCHandler as a };
|
18
|
+
export type { StandardRPCHandlerOptions as S };
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { C as Context } from './server.BVHsfJ99.mjs';
|
2
|
+
import { g as StandardHandleOptions } from './server.B1oIHH_j.mjs';
|
3
|
+
|
4
|
+
type FriendlyStandardHandleOptions<T extends Context> = Omit<StandardHandleOptions<T>, 'context'> & (Record<never, never> extends T ? {
|
5
|
+
context?: T;
|
6
|
+
} : {
|
7
|
+
context: T;
|
8
|
+
});
|
9
|
+
|
10
|
+
export type { FriendlyStandardHandleOptions as F };
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@orpc/server",
|
3
3
|
"type": "module",
|
4
|
-
"version": "0.0.0-next.
|
4
|
+
"version": "0.0.0-next.2568a3f",
|
5
5
|
"license": "MIT",
|
6
6
|
"homepage": "https://orpc.unnoq.com",
|
7
7
|
"repository": {
|
@@ -34,16 +34,6 @@
|
|
34
34
|
"import": "./dist/adapters/fetch/index.mjs",
|
35
35
|
"default": "./dist/adapters/fetch/index.mjs"
|
36
36
|
},
|
37
|
-
"./hono": {
|
38
|
-
"types": "./dist/adapters/hono/index.d.mts",
|
39
|
-
"import": "./dist/adapters/hono/index.mjs",
|
40
|
-
"default": "./dist/adapters/hono/index.mjs"
|
41
|
-
},
|
42
|
-
"./next": {
|
43
|
-
"types": "./dist/adapters/next/index.d.mts",
|
44
|
-
"import": "./dist/adapters/next/index.mjs",
|
45
|
-
"default": "./dist/adapters/next/index.mjs"
|
46
|
-
},
|
47
37
|
"./node": {
|
48
38
|
"types": "./dist/adapters/node/index.d.mts",
|
49
39
|
"import": "./dist/adapters/node/index.mjs",
|
@@ -53,20 +43,16 @@
|
|
53
43
|
"files": [
|
54
44
|
"dist"
|
55
45
|
],
|
56
|
-
"peerDependencies": {
|
57
|
-
"hono": ">=4.6.0",
|
58
|
-
"next": ">=14.0.0"
|
59
|
-
},
|
60
46
|
"dependencies": {
|
61
|
-
"@orpc/client": "0.0.0-next.
|
62
|
-
"@orpc/
|
63
|
-
"@orpc/
|
64
|
-
"@orpc/standard-server": "0.0.0-next.
|
65
|
-
"@orpc/standard-server-
|
66
|
-
"@orpc/standard-server
|
47
|
+
"@orpc/client": "0.0.0-next.2568a3f",
|
48
|
+
"@orpc/contract": "0.0.0-next.2568a3f",
|
49
|
+
"@orpc/shared": "0.0.0-next.2568a3f",
|
50
|
+
"@orpc/standard-server-fetch": "0.0.0-next.2568a3f",
|
51
|
+
"@orpc/standard-server-node": "0.0.0-next.2568a3f",
|
52
|
+
"@orpc/standard-server": "0.0.0-next.2568a3f"
|
67
53
|
},
|
68
54
|
"devDependencies": {
|
69
|
-
"
|
55
|
+
"supertest": "^7.1.0"
|
70
56
|
},
|
71
57
|
"scripts": {
|
72
58
|
"build": "unbuild",
|
@@ -1,19 +0,0 @@
|
|
1
|
-
import { FetchHandler } from '../fetch/index.mjs';
|
2
|
-
export { FetchHandleResult, RPCHandler } from '../fetch/index.mjs';
|
3
|
-
import { Value, MaybeOptionalOptions } from '@orpc/shared';
|
4
|
-
import { Context as Context$1, MiddlewareHandler } from 'hono';
|
5
|
-
import { C as Context } from '../../shared/server.ptXwNGQr.mjs';
|
6
|
-
import { S as StandardHandleOptions } from '../../shared/server.CtBp-i4f.mjs';
|
7
|
-
import '@orpc/standard-server-fetch';
|
8
|
-
import '@orpc/client';
|
9
|
-
import '@orpc/contract';
|
10
|
-
import '@orpc/standard-server';
|
11
|
-
|
12
|
-
type CreateMiddlewareOptions<T extends Context> = Omit<StandardHandleOptions<T>, 'context'> & (Record<never, never> extends T ? {
|
13
|
-
context?: Value<T, [Context$1]>;
|
14
|
-
} : {
|
15
|
-
context: Value<T, [Context$1]>;
|
16
|
-
});
|
17
|
-
declare function createMiddleware<T extends Context>(handler: FetchHandler<T>, ...[options]: MaybeOptionalOptions<CreateMiddlewareOptions<T>>): MiddlewareHandler;
|
18
|
-
|
19
|
-
export { type CreateMiddlewareOptions, FetchHandler, createMiddleware };
|
@@ -1,19 +0,0 @@
|
|
1
|
-
import { FetchHandler } from '../fetch/index.js';
|
2
|
-
export { FetchHandleResult, RPCHandler } from '../fetch/index.js';
|
3
|
-
import { Value, MaybeOptionalOptions } from '@orpc/shared';
|
4
|
-
import { Context as Context$1, MiddlewareHandler } from 'hono';
|
5
|
-
import { C as Context } from '../../shared/server.ptXwNGQr.js';
|
6
|
-
import { S as StandardHandleOptions } from '../../shared/server.Drm1Lma3.js';
|
7
|
-
import '@orpc/standard-server-fetch';
|
8
|
-
import '@orpc/client';
|
9
|
-
import '@orpc/contract';
|
10
|
-
import '@orpc/standard-server';
|
11
|
-
|
12
|
-
type CreateMiddlewareOptions<T extends Context> = Omit<StandardHandleOptions<T>, 'context'> & (Record<never, never> extends T ? {
|
13
|
-
context?: Value<T, [Context$1]>;
|
14
|
-
} : {
|
15
|
-
context: Value<T, [Context$1]>;
|
16
|
-
});
|
17
|
-
declare function createMiddleware<T extends Context>(handler: FetchHandler<T>, ...[options]: MaybeOptionalOptions<CreateMiddlewareOptions<T>>): MiddlewareHandler;
|
18
|
-
|
19
|
-
export { type CreateMiddlewareOptions, FetchHandler, createMiddleware };
|
@@ -1,32 +0,0 @@
|
|
1
|
-
export { R as RPCHandler } from '../../shared/server.BHIDiY4a.mjs';
|
2
|
-
import { value } from '@orpc/shared';
|
3
|
-
import '@orpc/client/standard';
|
4
|
-
import '@orpc/standard-server-fetch';
|
5
|
-
import '../../shared/server.DKrKGnk2.mjs';
|
6
|
-
import '@orpc/client';
|
7
|
-
import '../../shared/server.Q6ZmnTgO.mjs';
|
8
|
-
import '../../shared/server.V6zT5iYQ.mjs';
|
9
|
-
import '@orpc/contract';
|
10
|
-
|
11
|
-
function createMiddleware(handler, ...[options]) {
|
12
|
-
return async (c, next) => {
|
13
|
-
const bodyProps = /* @__PURE__ */ new Set(["arrayBuffer", "blob", "formData", "json", "text"]);
|
14
|
-
const request = c.req.method === "GET" || c.req.method === "HEAD" ? c.req.raw : new Proxy(c.req.raw, {
|
15
|
-
// https://github.com/honojs/middleware/blob/main/packages/trpc-server/src/index.ts#L39
|
16
|
-
get(target, prop) {
|
17
|
-
if (bodyProps.has(prop)) {
|
18
|
-
return () => c.req[prop]();
|
19
|
-
}
|
20
|
-
return Reflect.get(target, prop, target);
|
21
|
-
}
|
22
|
-
});
|
23
|
-
const context = await value(options?.context ?? {}, c);
|
24
|
-
const { matched, response } = await handler.handle(request, { ...options, context });
|
25
|
-
if (matched) {
|
26
|
-
return c.newResponse(response.body, response);
|
27
|
-
}
|
28
|
-
await next();
|
29
|
-
};
|
30
|
-
}
|
31
|
-
|
32
|
-
export { createMiddleware };
|
@@ -1,26 +0,0 @@
|
|
1
|
-
import { FetchHandler } from '../fetch/index.mjs';
|
2
|
-
export { FetchHandleResult, RPCHandler } from '../fetch/index.mjs';
|
3
|
-
import { Value, MaybeOptionalOptions } from '@orpc/shared';
|
4
|
-
import { NextRequest } from 'next/server';
|
5
|
-
import { C as Context } from '../../shared/server.ptXwNGQr.mjs';
|
6
|
-
import { S as StandardHandleOptions } from '../../shared/server.CtBp-i4f.mjs';
|
7
|
-
import '@orpc/standard-server-fetch';
|
8
|
-
import '@orpc/client';
|
9
|
-
import '@orpc/contract';
|
10
|
-
import '@orpc/standard-server';
|
11
|
-
|
12
|
-
type ServeOptions<T extends Context> = Omit<StandardHandleOptions<T>, 'context'> & (Record<never, never> extends T ? {
|
13
|
-
context?: Value<T, [NextRequest]>;
|
14
|
-
} : {
|
15
|
-
context: Value<T, [NextRequest]>;
|
16
|
-
});
|
17
|
-
interface ServeResult {
|
18
|
-
GET(req: NextRequest): Promise<Response>;
|
19
|
-
POST(req: NextRequest): Promise<Response>;
|
20
|
-
PUT(req: NextRequest): Promise<Response>;
|
21
|
-
PATCH(req: NextRequest): Promise<Response>;
|
22
|
-
DELETE(req: NextRequest): Promise<Response>;
|
23
|
-
}
|
24
|
-
declare function serve<T extends Context>(handler: FetchHandler<T>, ...[options]: MaybeOptionalOptions<ServeOptions<T>>): ServeResult;
|
25
|
-
|
26
|
-
export { FetchHandler, type ServeOptions, type ServeResult, serve };
|
@@ -1,26 +0,0 @@
|
|
1
|
-
import { FetchHandler } from '../fetch/index.js';
|
2
|
-
export { FetchHandleResult, RPCHandler } from '../fetch/index.js';
|
3
|
-
import { Value, MaybeOptionalOptions } from '@orpc/shared';
|
4
|
-
import { NextRequest } from 'next/server';
|
5
|
-
import { C as Context } from '../../shared/server.ptXwNGQr.js';
|
6
|
-
import { S as StandardHandleOptions } from '../../shared/server.Drm1Lma3.js';
|
7
|
-
import '@orpc/standard-server-fetch';
|
8
|
-
import '@orpc/client';
|
9
|
-
import '@orpc/contract';
|
10
|
-
import '@orpc/standard-server';
|
11
|
-
|
12
|
-
type ServeOptions<T extends Context> = Omit<StandardHandleOptions<T>, 'context'> & (Record<never, never> extends T ? {
|
13
|
-
context?: Value<T, [NextRequest]>;
|
14
|
-
} : {
|
15
|
-
context: Value<T, [NextRequest]>;
|
16
|
-
});
|
17
|
-
interface ServeResult {
|
18
|
-
GET(req: NextRequest): Promise<Response>;
|
19
|
-
POST(req: NextRequest): Promise<Response>;
|
20
|
-
PUT(req: NextRequest): Promise<Response>;
|
21
|
-
PATCH(req: NextRequest): Promise<Response>;
|
22
|
-
DELETE(req: NextRequest): Promise<Response>;
|
23
|
-
}
|
24
|
-
declare function serve<T extends Context>(handler: FetchHandler<T>, ...[options]: MaybeOptionalOptions<ServeOptions<T>>): ServeResult;
|
25
|
-
|
26
|
-
export { FetchHandler, type ServeOptions, type ServeResult, serve };
|
@@ -1,29 +0,0 @@
|
|
1
|
-
export { R as RPCHandler } from '../../shared/server.BHIDiY4a.mjs';
|
2
|
-
import { value } from '@orpc/shared';
|
3
|
-
import '@orpc/client/standard';
|
4
|
-
import '@orpc/standard-server-fetch';
|
5
|
-
import '../../shared/server.DKrKGnk2.mjs';
|
6
|
-
import '@orpc/client';
|
7
|
-
import '../../shared/server.Q6ZmnTgO.mjs';
|
8
|
-
import '../../shared/server.V6zT5iYQ.mjs';
|
9
|
-
import '@orpc/contract';
|
10
|
-
|
11
|
-
function serve(handler, ...[options]) {
|
12
|
-
const main = async (req) => {
|
13
|
-
const context = await value(options?.context ?? {}, req);
|
14
|
-
const { matched, response } = await handler.handle(req, { ...options, context });
|
15
|
-
if (matched) {
|
16
|
-
return response;
|
17
|
-
}
|
18
|
-
return new Response(`Cannot find a matching procedure for ${req.url}`, { status: 404 });
|
19
|
-
};
|
20
|
-
return {
|
21
|
-
GET: main,
|
22
|
-
POST: main,
|
23
|
-
PUT: main,
|
24
|
-
PATCH: main,
|
25
|
-
DELETE: main
|
26
|
-
};
|
27
|
-
}
|
28
|
-
|
29
|
-
export { serve };
|
@@ -1,28 +0,0 @@
|
|
1
|
-
import { RPCSerializer } from '@orpc/client/standard';
|
2
|
-
import { toStandardLazyRequest, toFetchResponse } from '@orpc/standard-server-fetch';
|
3
|
-
import { S as StandardHandler, a as RPCMatcher, R as RPCCodec } from './server.DKrKGnk2.mjs';
|
4
|
-
|
5
|
-
class RPCHandler {
|
6
|
-
standardHandler;
|
7
|
-
constructor(router, options = {}) {
|
8
|
-
const serializer = new RPCSerializer();
|
9
|
-
const matcher = new RPCMatcher();
|
10
|
-
const codec = new RPCCodec(serializer);
|
11
|
-
this.standardHandler = new StandardHandler(router, matcher, codec, options);
|
12
|
-
}
|
13
|
-
async handle(request, ...[
|
14
|
-
options = {}
|
15
|
-
]) {
|
16
|
-
const standardRequest = toStandardLazyRequest(request);
|
17
|
-
const result = await this.standardHandler.handle(standardRequest, options);
|
18
|
-
if (!result.matched) {
|
19
|
-
return result;
|
20
|
-
}
|
21
|
-
return {
|
22
|
-
matched: true,
|
23
|
-
response: toFetchResponse(result.response, options)
|
24
|
-
};
|
25
|
-
}
|
26
|
-
}
|
27
|
-
|
28
|
-
export { RPCHandler as R };
|
@@ -1,77 +0,0 @@
|
|
1
|
-
import { HTTPPath, Schema, Meta, SchemaOutput, ErrorFromErrorMap } from '@orpc/contract';
|
2
|
-
import { Interceptor, MaybeOptionalOptions } from '@orpc/shared';
|
3
|
-
import { StandardResponse, StandardLazyRequest } from '@orpc/standard-server';
|
4
|
-
import { a as AnyRouter, A as AnyProcedure, C as Context, P as ProcedureClientInterceptorOptions, R as Router } from './server.ptXwNGQr.mjs';
|
5
|
-
import { ORPCError } from '@orpc/client';
|
6
|
-
|
7
|
-
type StandardParams = Record<string, string>;
|
8
|
-
type StandardMatchResult = {
|
9
|
-
path: string[];
|
10
|
-
procedure: AnyProcedure;
|
11
|
-
params?: StandardParams;
|
12
|
-
} | undefined;
|
13
|
-
interface StandardMatcher {
|
14
|
-
init(router: AnyRouter): void;
|
15
|
-
match(method: string, pathname: HTTPPath): Promise<StandardMatchResult>;
|
16
|
-
}
|
17
|
-
interface StandardCodec {
|
18
|
-
encode(output: unknown, procedure: AnyProcedure): StandardResponse;
|
19
|
-
encodeError(error: ORPCError<any, any>): StandardResponse;
|
20
|
-
decode(request: StandardLazyRequest, params: StandardParams | undefined, procedure: AnyProcedure): Promise<unknown>;
|
21
|
-
}
|
22
|
-
|
23
|
-
type StandardHandleOptions<T extends Context> = {
|
24
|
-
prefix?: HTTPPath;
|
25
|
-
} & (Record<never, never> extends T ? {
|
26
|
-
context?: T;
|
27
|
-
} : {
|
28
|
-
context: T;
|
29
|
-
});
|
30
|
-
type WellStandardHandleOptions<T extends Context> = StandardHandleOptions<T> & {
|
31
|
-
context: T;
|
32
|
-
};
|
33
|
-
type StandardHandleResult = {
|
34
|
-
matched: true;
|
35
|
-
response: StandardResponse;
|
36
|
-
} | {
|
37
|
-
matched: false;
|
38
|
-
response: undefined;
|
39
|
-
};
|
40
|
-
type StandardHandlerInterceptorOptions<TContext extends Context> = WellStandardHandleOptions<TContext> & {
|
41
|
-
request: StandardLazyRequest;
|
42
|
-
};
|
43
|
-
interface StandardHandlerOptions<TContext extends Context> {
|
44
|
-
plugins?: Plugin<TContext>[];
|
45
|
-
/**
|
46
|
-
* Interceptors at the request level, helpful when you want catch errors
|
47
|
-
*/
|
48
|
-
interceptors?: Interceptor<StandardHandlerInterceptorOptions<TContext>, StandardHandleResult, unknown>[];
|
49
|
-
/**
|
50
|
-
* Interceptors at the root level, helpful when you want override the request/response
|
51
|
-
*/
|
52
|
-
rootInterceptors?: Interceptor<StandardHandlerInterceptorOptions<TContext>, StandardHandleResult, unknown>[];
|
53
|
-
/**
|
54
|
-
*
|
55
|
-
* Interceptors for procedure client.
|
56
|
-
*/
|
57
|
-
clientInterceptors?: Interceptor<ProcedureClientInterceptorOptions<TContext, Schema, Record<never, never>, Meta>, SchemaOutput<Schema, unknown>, ErrorFromErrorMap<Record<never, never>>>[];
|
58
|
-
}
|
59
|
-
declare class StandardHandler<T extends Context> {
|
60
|
-
private readonly matcher;
|
61
|
-
private readonly codec;
|
62
|
-
private readonly options;
|
63
|
-
private readonly plugin;
|
64
|
-
constructor(router: Router<T, any>, matcher: StandardMatcher, codec: StandardCodec, options: NoInfer<StandardHandlerOptions<T>>);
|
65
|
-
handle(request: StandardLazyRequest, ...[options]: MaybeOptionalOptions<StandardHandleOptions<T>>): Promise<StandardHandleResult>;
|
66
|
-
}
|
67
|
-
|
68
|
-
interface Plugin<TContext extends Context> {
|
69
|
-
init?(options: StandardHandlerOptions<TContext>): void;
|
70
|
-
}
|
71
|
-
declare class CompositePlugin<TContext extends Context> implements Plugin<TContext> {
|
72
|
-
private readonly plugins;
|
73
|
-
constructor(plugins?: Plugin<TContext>[]);
|
74
|
-
init(options: StandardHandlerOptions<TContext>): void;
|
75
|
-
}
|
76
|
-
|
77
|
-
export { CompositePlugin as C, type Plugin as P, type StandardHandleOptions as S, type WellStandardHandleOptions as W, type StandardHandlerInterceptorOptions as a, type StandardHandlerOptions as b, type StandardCodec as c, type StandardParams as d, type StandardMatcher as e, type StandardMatchResult as f, type StandardHandleResult as g, StandardHandler as h };
|
@@ -1,77 +0,0 @@
|
|
1
|
-
import { HTTPPath, Schema, Meta, SchemaOutput, ErrorFromErrorMap } from '@orpc/contract';
|
2
|
-
import { Interceptor, MaybeOptionalOptions } from '@orpc/shared';
|
3
|
-
import { StandardResponse, StandardLazyRequest } from '@orpc/standard-server';
|
4
|
-
import { a as AnyRouter, A as AnyProcedure, C as Context, P as ProcedureClientInterceptorOptions, R as Router } from './server.ptXwNGQr.js';
|
5
|
-
import { ORPCError } from '@orpc/client';
|
6
|
-
|
7
|
-
type StandardParams = Record<string, string>;
|
8
|
-
type StandardMatchResult = {
|
9
|
-
path: string[];
|
10
|
-
procedure: AnyProcedure;
|
11
|
-
params?: StandardParams;
|
12
|
-
} | undefined;
|
13
|
-
interface StandardMatcher {
|
14
|
-
init(router: AnyRouter): void;
|
15
|
-
match(method: string, pathname: HTTPPath): Promise<StandardMatchResult>;
|
16
|
-
}
|
17
|
-
interface StandardCodec {
|
18
|
-
encode(output: unknown, procedure: AnyProcedure): StandardResponse;
|
19
|
-
encodeError(error: ORPCError<any, any>): StandardResponse;
|
20
|
-
decode(request: StandardLazyRequest, params: StandardParams | undefined, procedure: AnyProcedure): Promise<unknown>;
|
21
|
-
}
|
22
|
-
|
23
|
-
type StandardHandleOptions<T extends Context> = {
|
24
|
-
prefix?: HTTPPath;
|
25
|
-
} & (Record<never, never> extends T ? {
|
26
|
-
context?: T;
|
27
|
-
} : {
|
28
|
-
context: T;
|
29
|
-
});
|
30
|
-
type WellStandardHandleOptions<T extends Context> = StandardHandleOptions<T> & {
|
31
|
-
context: T;
|
32
|
-
};
|
33
|
-
type StandardHandleResult = {
|
34
|
-
matched: true;
|
35
|
-
response: StandardResponse;
|
36
|
-
} | {
|
37
|
-
matched: false;
|
38
|
-
response: undefined;
|
39
|
-
};
|
40
|
-
type StandardHandlerInterceptorOptions<TContext extends Context> = WellStandardHandleOptions<TContext> & {
|
41
|
-
request: StandardLazyRequest;
|
42
|
-
};
|
43
|
-
interface StandardHandlerOptions<TContext extends Context> {
|
44
|
-
plugins?: Plugin<TContext>[];
|
45
|
-
/**
|
46
|
-
* Interceptors at the request level, helpful when you want catch errors
|
47
|
-
*/
|
48
|
-
interceptors?: Interceptor<StandardHandlerInterceptorOptions<TContext>, StandardHandleResult, unknown>[];
|
49
|
-
/**
|
50
|
-
* Interceptors at the root level, helpful when you want override the request/response
|
51
|
-
*/
|
52
|
-
rootInterceptors?: Interceptor<StandardHandlerInterceptorOptions<TContext>, StandardHandleResult, unknown>[];
|
53
|
-
/**
|
54
|
-
*
|
55
|
-
* Interceptors for procedure client.
|
56
|
-
*/
|
57
|
-
clientInterceptors?: Interceptor<ProcedureClientInterceptorOptions<TContext, Schema, Record<never, never>, Meta>, SchemaOutput<Schema, unknown>, ErrorFromErrorMap<Record<never, never>>>[];
|
58
|
-
}
|
59
|
-
declare class StandardHandler<T extends Context> {
|
60
|
-
private readonly matcher;
|
61
|
-
private readonly codec;
|
62
|
-
private readonly options;
|
63
|
-
private readonly plugin;
|
64
|
-
constructor(router: Router<T, any>, matcher: StandardMatcher, codec: StandardCodec, options: NoInfer<StandardHandlerOptions<T>>);
|
65
|
-
handle(request: StandardLazyRequest, ...[options]: MaybeOptionalOptions<StandardHandleOptions<T>>): Promise<StandardHandleResult>;
|
66
|
-
}
|
67
|
-
|
68
|
-
interface Plugin<TContext extends Context> {
|
69
|
-
init?(options: StandardHandlerOptions<TContext>): void;
|
70
|
-
}
|
71
|
-
declare class CompositePlugin<TContext extends Context> implements Plugin<TContext> {
|
72
|
-
private readonly plugins;
|
73
|
-
constructor(plugins?: Plugin<TContext>[]);
|
74
|
-
init(options: StandardHandlerOptions<TContext>): void;
|
75
|
-
}
|
76
|
-
|
77
|
-
export { CompositePlugin as C, type Plugin as P, type StandardHandleOptions as S, type WellStandardHandleOptions as W, type StandardHandlerInterceptorOptions as a, type StandardHandlerOptions as b, type StandardCodec as c, type StandardParams as d, type StandardMatcher as e, type StandardMatchResult as f, type StandardHandleResult as g, StandardHandler as h };
|