@orpc/server 0.0.0-next.ce2f84d → 0.0.0-next.cedbd4c
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 +20 -23
- 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 +36 -0
- package/dist/adapters/bun-ws/index.d.ts +36 -0
- package/dist/adapters/bun-ws/index.mjs +47 -0
- package/dist/adapters/crossws/index.d.mts +33 -0
- package/dist/adapters/crossws/index.d.ts +33 -0
- package/dist/adapters/crossws/index.mjs +45 -0
- package/dist/adapters/fetch/index.d.mts +81 -11
- package/dist/adapters/fetch/index.d.ts +81 -11
- package/dist/adapters/fetch/index.mjs +179 -8
- 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 +57 -11
- package/dist/adapters/node/index.d.ts +57 -11
- package/dist/adapters/node/index.mjs +89 -22
- package/dist/adapters/standard/index.d.mts +8 -13
- package/dist/adapters/standard/index.d.ts +8 -13
- package/dist/adapters/standard/index.mjs +5 -3
- 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 +54 -0
- package/dist/adapters/websocket/index.d.ts +54 -0
- package/dist/adapters/websocket/index.mjs +67 -0
- package/dist/adapters/ws/index.d.mts +31 -0
- package/dist/adapters/ws/index.d.ts +31 -0
- package/dist/adapters/ws/index.mjs +37 -0
- 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 +564 -52
- package/dist/index.d.ts +564 -52
- package/dist/index.mjs +140 -14
- package/dist/plugins/index.d.mts +148 -9
- package/dist/plugins/index.d.ts +148 -9
- package/dist/plugins/index.mjs +191 -11
- package/dist/shared/{server.DLt5njUb.d.mts → server.B4BGqy3Y.d.mts} +60 -10
- package/dist/shared/{server.DLt5njUb.d.ts → server.B4BGqy3Y.d.ts} +60 -10
- package/dist/shared/server.BW-nUGgA.mjs +36 -0
- package/dist/shared/server.COL12UTb.d.ts +32 -0
- package/dist/shared/server.CVKCo60T.d.mts +12 -0
- package/dist/shared/{server.e3W6AG3-.mjs → server.CaqDCZX1.mjs} +125 -86
- package/dist/shared/server.Cb6yD7DZ.d.ts +42 -0
- package/dist/shared/server.Ck-gOLzq.d.mts +32 -0
- package/dist/shared/{server.CzxlqYZL.d.mts → server.DBCUJijK.d.mts} +18 -10
- package/dist/shared/server.DNtJ-p60.d.ts +12 -0
- package/dist/shared/{server.BHlRCrf_.d.ts → server.DPIFWpxG.d.ts} +18 -10
- 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.vzZSq5UM.mjs +219 -0
- package/package.json +71 -20
- package/dist/adapters/hono/index.d.mts +0 -22
- package/dist/adapters/hono/index.d.ts +0 -22
- package/dist/adapters/hono/index.mjs +0 -32
- package/dist/adapters/next/index.d.mts +0 -29
- package/dist/adapters/next/index.d.ts +0 -29
- package/dist/adapters/next/index.mjs +0 -29
- package/dist/shared/server.B77ImKAP.d.mts +0 -8
- package/dist/shared/server.Cud5qk0c.d.ts +0 -10
- package/dist/shared/server.DCCkTG29.mjs +0 -162
- package/dist/shared/server.DGnN7q3R.d.mts +0 -10
- package/dist/shared/server.DUF89eb-.d.ts +0 -8
- package/dist/shared/server.Prfzu_zf.mjs +0 -98
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import { toHttpPath, StandardRPCJsonSerializer, StandardRPCSerializer } from '@orpc/client/standard';
|
|
2
|
+
import { ORPCError, toORPCError } from '@orpc/client';
|
|
3
|
+
import { toArray, intercept, runWithSpan, ORPC_NAME, isAsyncIteratorObject, asyncIteratorWithSpan, setSpanError, parseEmptyableJSON, NullProtoObj, value } from '@orpc/shared';
|
|
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.CaqDCZX1.mjs';
|
|
6
|
+
|
|
7
|
+
class CompositeStandardHandlerPlugin {
|
|
8
|
+
plugins;
|
|
9
|
+
constructor(plugins = []) {
|
|
10
|
+
this.plugins = [...plugins].sort((a, b) => (a.order ?? 0) - (b.order ?? 0));
|
|
11
|
+
}
|
|
12
|
+
init(options, router) {
|
|
13
|
+
for (const plugin of this.plugins) {
|
|
14
|
+
plugin.init?.(options, router);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
class StandardHandler {
|
|
20
|
+
constructor(router, matcher, codec, options) {
|
|
21
|
+
this.matcher = matcher;
|
|
22
|
+
this.codec = codec;
|
|
23
|
+
const plugins = new CompositeStandardHandlerPlugin(options.plugins);
|
|
24
|
+
plugins.init(options, router);
|
|
25
|
+
this.interceptors = toArray(options.interceptors);
|
|
26
|
+
this.clientInterceptors = toArray(options.clientInterceptors);
|
|
27
|
+
this.rootInterceptors = toArray(options.rootInterceptors);
|
|
28
|
+
this.matcher.init(router);
|
|
29
|
+
}
|
|
30
|
+
interceptors;
|
|
31
|
+
clientInterceptors;
|
|
32
|
+
rootInterceptors;
|
|
33
|
+
async handle(request, options) {
|
|
34
|
+
const prefix = options.prefix?.replace(/\/$/, "") || void 0;
|
|
35
|
+
if (prefix && !request.url.pathname.startsWith(`${prefix}/`) && request.url.pathname !== prefix) {
|
|
36
|
+
return { matched: false, response: void 0 };
|
|
37
|
+
}
|
|
38
|
+
return intercept(
|
|
39
|
+
this.rootInterceptors,
|
|
40
|
+
{ ...options, request, prefix },
|
|
41
|
+
async (interceptorOptions) => {
|
|
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);
|
|
97
|
+
}
|
|
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);
|
|
103
|
+
return {
|
|
104
|
+
matched: true,
|
|
105
|
+
response
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
class StandardRPCCodec {
|
|
116
|
+
constructor(serializer) {
|
|
117
|
+
this.serializer = serializer;
|
|
118
|
+
}
|
|
119
|
+
async decode(request, _params, _procedure) {
|
|
120
|
+
const serialized = request.method === "GET" ? parseEmptyableJSON(request.url.searchParams.getAll("data").at(-1)) : await request.body();
|
|
121
|
+
return this.serializer.deserialize(serialized);
|
|
122
|
+
}
|
|
123
|
+
encode(output, _procedure) {
|
|
124
|
+
return {
|
|
125
|
+
status: 200,
|
|
126
|
+
headers: {},
|
|
127
|
+
body: this.serializer.serialize(output)
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
encodeError(error) {
|
|
131
|
+
return {
|
|
132
|
+
status: error.status,
|
|
133
|
+
headers: {},
|
|
134
|
+
body: this.serializer.serialize(error.toJSON())
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
class StandardRPCMatcher {
|
|
140
|
+
filter;
|
|
141
|
+
tree = new NullProtoObj();
|
|
142
|
+
pendingRouters = [];
|
|
143
|
+
constructor(options = {}) {
|
|
144
|
+
this.filter = options.filter ?? true;
|
|
145
|
+
}
|
|
146
|
+
init(router, path = []) {
|
|
147
|
+
const laziedOptions = traverseContractProcedures({ router, path }, (traverseOptions) => {
|
|
148
|
+
if (!value(this.filter, traverseOptions)) {
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
const { path: path2, contract } = traverseOptions;
|
|
152
|
+
const httpPath = toHttpPath(path2);
|
|
153
|
+
if (isProcedure(contract)) {
|
|
154
|
+
this.tree[httpPath] = {
|
|
155
|
+
path: path2,
|
|
156
|
+
contract,
|
|
157
|
+
procedure: contract,
|
|
158
|
+
// this mean dev not used contract-first so we can used contract as procedure directly
|
|
159
|
+
router
|
|
160
|
+
};
|
|
161
|
+
} else {
|
|
162
|
+
this.tree[httpPath] = {
|
|
163
|
+
path: path2,
|
|
164
|
+
contract,
|
|
165
|
+
procedure: void 0,
|
|
166
|
+
router
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
this.pendingRouters.push(...laziedOptions.map((option) => ({
|
|
171
|
+
...option,
|
|
172
|
+
httpPathPrefix: toHttpPath(option.path)
|
|
173
|
+
})));
|
|
174
|
+
}
|
|
175
|
+
async match(_method, pathname) {
|
|
176
|
+
if (this.pendingRouters.length) {
|
|
177
|
+
const newPendingRouters = [];
|
|
178
|
+
for (const pendingRouter of this.pendingRouters) {
|
|
179
|
+
if (pathname.startsWith(pendingRouter.httpPathPrefix)) {
|
|
180
|
+
const { default: router } = await unlazy(pendingRouter.router);
|
|
181
|
+
this.init(router, pendingRouter.path);
|
|
182
|
+
} else {
|
|
183
|
+
newPendingRouters.push(pendingRouter);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
this.pendingRouters = newPendingRouters;
|
|
187
|
+
}
|
|
188
|
+
const match = this.tree[pathname];
|
|
189
|
+
if (!match) {
|
|
190
|
+
return void 0;
|
|
191
|
+
}
|
|
192
|
+
if (!match.procedure) {
|
|
193
|
+
const { default: maybeProcedure } = await unlazy(getRouter(match.router, match.path));
|
|
194
|
+
if (!isProcedure(maybeProcedure)) {
|
|
195
|
+
throw new Error(`
|
|
196
|
+
[Contract-First] Missing or invalid implementation for procedure at path: ${toHttpPath(match.path)}.
|
|
197
|
+
Ensure that the procedure is correctly defined and matches the expected contract.
|
|
198
|
+
`);
|
|
199
|
+
}
|
|
200
|
+
match.procedure = createContractedProcedure(maybeProcedure, match.contract);
|
|
201
|
+
}
|
|
202
|
+
return {
|
|
203
|
+
path: match.path,
|
|
204
|
+
procedure: match.procedure
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
class StandardRPCHandler extends StandardHandler {
|
|
210
|
+
constructor(router, options = {}) {
|
|
211
|
+
const jsonSerializer = new StandardRPCJsonSerializer(options);
|
|
212
|
+
const serializer = new StandardRPCSerializer(jsonSerializer);
|
|
213
|
+
const matcher = new StandardRPCMatcher(options);
|
|
214
|
+
const codec = new StandardRPCCodec(serializer);
|
|
215
|
+
super(router, matcher, codec, options);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
export { CompositeStandardHandlerPlugin as C, StandardHandler as S, StandardRPCCodec as a, StandardRPCHandler as b, StandardRPCMatcher as c };
|
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.cedbd4c",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://orpc.unnoq.com",
|
|
7
7
|
"repository": {
|
|
@@ -19,54 +19,105 @@
|
|
|
19
19
|
"import": "./dist/index.mjs",
|
|
20
20
|
"default": "./dist/index.mjs"
|
|
21
21
|
},
|
|
22
|
+
"./helpers": {
|
|
23
|
+
"types": "./dist/helpers/index.d.mts",
|
|
24
|
+
"import": "./dist/helpers/index.mjs",
|
|
25
|
+
"default": "./dist/helpers/index.mjs"
|
|
26
|
+
},
|
|
22
27
|
"./plugins": {
|
|
23
28
|
"types": "./dist/plugins/index.d.mts",
|
|
24
29
|
"import": "./dist/plugins/index.mjs",
|
|
25
30
|
"default": "./dist/plugins/index.mjs"
|
|
26
31
|
},
|
|
32
|
+
"./hibernation": {
|
|
33
|
+
"types": "./dist/hibernation/index.d.mts",
|
|
34
|
+
"import": "./dist/hibernation/index.mjs",
|
|
35
|
+
"default": "./dist/hibernation/index.mjs"
|
|
36
|
+
},
|
|
27
37
|
"./standard": {
|
|
28
38
|
"types": "./dist/adapters/standard/index.d.mts",
|
|
29
39
|
"import": "./dist/adapters/standard/index.mjs",
|
|
30
40
|
"default": "./dist/adapters/standard/index.mjs"
|
|
31
41
|
},
|
|
42
|
+
"./standard-peer": {
|
|
43
|
+
"types": "./dist/adapters/standard-peer/index.d.mts",
|
|
44
|
+
"import": "./dist/adapters/standard-peer/index.mjs",
|
|
45
|
+
"default": "./dist/adapters/standard-peer/index.mjs"
|
|
46
|
+
},
|
|
32
47
|
"./fetch": {
|
|
33
48
|
"types": "./dist/adapters/fetch/index.d.mts",
|
|
34
49
|
"import": "./dist/adapters/fetch/index.mjs",
|
|
35
50
|
"default": "./dist/adapters/fetch/index.mjs"
|
|
36
51
|
},
|
|
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
52
|
"./node": {
|
|
48
53
|
"types": "./dist/adapters/node/index.d.mts",
|
|
49
54
|
"import": "./dist/adapters/node/index.mjs",
|
|
50
55
|
"default": "./dist/adapters/node/index.mjs"
|
|
56
|
+
},
|
|
57
|
+
"./aws-lambda": {
|
|
58
|
+
"types": "./dist/adapters/aws-lambda/index.d.mts",
|
|
59
|
+
"import": "./dist/adapters/aws-lambda/index.mjs",
|
|
60
|
+
"default": "./dist/adapters/aws-lambda/index.mjs"
|
|
61
|
+
},
|
|
62
|
+
"./websocket": {
|
|
63
|
+
"types": "./dist/adapters/websocket/index.d.mts",
|
|
64
|
+
"import": "./dist/adapters/websocket/index.mjs",
|
|
65
|
+
"default": "./dist/adapters/websocket/index.mjs"
|
|
66
|
+
},
|
|
67
|
+
"./crossws": {
|
|
68
|
+
"types": "./dist/adapters/crossws/index.d.mts",
|
|
69
|
+
"import": "./dist/adapters/crossws/index.mjs",
|
|
70
|
+
"default": "./dist/adapters/crossws/index.mjs"
|
|
71
|
+
},
|
|
72
|
+
"./ws": {
|
|
73
|
+
"types": "./dist/adapters/ws/index.d.mts",
|
|
74
|
+
"import": "./dist/adapters/ws/index.mjs",
|
|
75
|
+
"default": "./dist/adapters/ws/index.mjs"
|
|
76
|
+
},
|
|
77
|
+
"./bun-ws": {
|
|
78
|
+
"types": "./dist/adapters/bun-ws/index.d.mts",
|
|
79
|
+
"import": "./dist/adapters/bun-ws/index.mjs",
|
|
80
|
+
"default": "./dist/adapters/bun-ws/index.mjs"
|
|
81
|
+
},
|
|
82
|
+
"./message-port": {
|
|
83
|
+
"types": "./dist/adapters/message-port/index.d.mts",
|
|
84
|
+
"import": "./dist/adapters/message-port/index.mjs",
|
|
85
|
+
"default": "./dist/adapters/message-port/index.mjs"
|
|
51
86
|
}
|
|
52
87
|
},
|
|
53
88
|
"files": [
|
|
54
89
|
"dist"
|
|
55
90
|
],
|
|
56
91
|
"peerDependencies": {
|
|
57
|
-
"
|
|
58
|
-
"
|
|
92
|
+
"crossws": ">=0.3.4",
|
|
93
|
+
"ws": ">=8.18.1"
|
|
94
|
+
},
|
|
95
|
+
"peerDependenciesMeta": {
|
|
96
|
+
"crossws": {
|
|
97
|
+
"optional": true
|
|
98
|
+
},
|
|
99
|
+
"ws": {
|
|
100
|
+
"optional": true
|
|
101
|
+
}
|
|
59
102
|
},
|
|
60
103
|
"dependencies": {
|
|
61
|
-
"
|
|
62
|
-
"@orpc/
|
|
63
|
-
"@orpc/
|
|
64
|
-
"@orpc/
|
|
65
|
-
"@orpc/
|
|
66
|
-
"@orpc/standard-server
|
|
104
|
+
"cookie": "^1.0.2",
|
|
105
|
+
"@orpc/contract": "0.0.0-next.cedbd4c",
|
|
106
|
+
"@orpc/client": "0.0.0-next.cedbd4c",
|
|
107
|
+
"@orpc/interop": "0.0.0-next.cedbd4c",
|
|
108
|
+
"@orpc/shared": "0.0.0-next.cedbd4c",
|
|
109
|
+
"@orpc/standard-server": "0.0.0-next.cedbd4c",
|
|
110
|
+
"@orpc/standard-server-aws-lambda": "0.0.0-next.cedbd4c",
|
|
111
|
+
"@orpc/standard-server-fetch": "0.0.0-next.cedbd4c",
|
|
112
|
+
"@orpc/standard-server-peer": "0.0.0-next.cedbd4c",
|
|
113
|
+
"@orpc/standard-server-node": "0.0.0-next.cedbd4c"
|
|
67
114
|
},
|
|
68
115
|
"devDependencies": {
|
|
69
|
-
"
|
|
116
|
+
"@types/ws": "^8.18.1",
|
|
117
|
+
"crossws": "^0.4.1",
|
|
118
|
+
"next": "^15.5.2",
|
|
119
|
+
"supertest": "^7.1.4",
|
|
120
|
+
"ws": "^8.18.3"
|
|
70
121
|
},
|
|
71
122
|
"scripts": {
|
|
72
123
|
"build": "unbuild",
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { FetchHandler } from '../fetch/index.mjs';
|
|
2
|
-
export { BodyLimitPlugin, BodyLimitPluginOptions, FetchHandleResult, FetchHandlerInterceptorOptions, FetchHandlerOptions, FetchHandlerPlugin, 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.DLt5njUb.mjs';
|
|
6
|
-
import { S as StandardHandleOptions } from '../../shared/server.CzxlqYZL.mjs';
|
|
7
|
-
import '../../shared/server.DGnN7q3R.mjs';
|
|
8
|
-
import '@orpc/standard-server-fetch';
|
|
9
|
-
import '../../shared/server.B77ImKAP.mjs';
|
|
10
|
-
import '@orpc/client/standard';
|
|
11
|
-
import '@orpc/client';
|
|
12
|
-
import '@orpc/contract';
|
|
13
|
-
import '@orpc/standard-server';
|
|
14
|
-
|
|
15
|
-
type CreateMiddlewareOptions<T extends Context> = Omit<StandardHandleOptions<T>, 'context'> & (Record<never, never> extends T ? {
|
|
16
|
-
context?: Value<T, [Context$1]>;
|
|
17
|
-
} : {
|
|
18
|
-
context: Value<T, [Context$1]>;
|
|
19
|
-
});
|
|
20
|
-
declare function createMiddleware<T extends Context>(handler: FetchHandler<T>, ...[options]: MaybeOptionalOptions<CreateMiddlewareOptions<T>>): MiddlewareHandler;
|
|
21
|
-
|
|
22
|
-
export { type CreateMiddlewareOptions, FetchHandler, createMiddleware };
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { FetchHandler } from '../fetch/index.js';
|
|
2
|
-
export { BodyLimitPlugin, BodyLimitPluginOptions, FetchHandleResult, FetchHandlerInterceptorOptions, FetchHandlerOptions, FetchHandlerPlugin, 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.DLt5njUb.js';
|
|
6
|
-
import { S as StandardHandleOptions } from '../../shared/server.BHlRCrf_.js';
|
|
7
|
-
import '../../shared/server.Cud5qk0c.js';
|
|
8
|
-
import '@orpc/standard-server-fetch';
|
|
9
|
-
import '../../shared/server.DUF89eb-.js';
|
|
10
|
-
import '@orpc/client/standard';
|
|
11
|
-
import '@orpc/client';
|
|
12
|
-
import '@orpc/contract';
|
|
13
|
-
import '@orpc/standard-server';
|
|
14
|
-
|
|
15
|
-
type CreateMiddlewareOptions<T extends Context> = Omit<StandardHandleOptions<T>, 'context'> & (Record<never, never> extends T ? {
|
|
16
|
-
context?: Value<T, [Context$1]>;
|
|
17
|
-
} : {
|
|
18
|
-
context: Value<T, [Context$1]>;
|
|
19
|
-
});
|
|
20
|
-
declare function createMiddleware<T extends Context>(handler: FetchHandler<T>, ...[options]: MaybeOptionalOptions<CreateMiddlewareOptions<T>>): MiddlewareHandler;
|
|
21
|
-
|
|
22
|
-
export { type CreateMiddlewareOptions, FetchHandler, createMiddleware };
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
export { B as BodyLimitPlugin, F as FetchHandler, R as RPCHandler } from '../../shared/server.Prfzu_zf.mjs';
|
|
2
|
-
import { value } from '@orpc/shared';
|
|
3
|
-
import '@orpc/client';
|
|
4
|
-
import '@orpc/client/standard';
|
|
5
|
-
import '../../shared/server.DCCkTG29.mjs';
|
|
6
|
-
import '../../shared/server.e3W6AG3-.mjs';
|
|
7
|
-
import '@orpc/contract';
|
|
8
|
-
import '@orpc/standard-server-fetch';
|
|
9
|
-
import '../../shared/server.BVwwTHyO.mjs';
|
|
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,29 +0,0 @@
|
|
|
1
|
-
import { FetchHandler } from '../fetch/index.mjs';
|
|
2
|
-
export { BodyLimitPlugin, BodyLimitPluginOptions, FetchHandleResult, FetchHandlerInterceptorOptions, FetchHandlerOptions, FetchHandlerPlugin, 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.DLt5njUb.mjs';
|
|
6
|
-
import { S as StandardHandleOptions } from '../../shared/server.CzxlqYZL.mjs';
|
|
7
|
-
import '../../shared/server.DGnN7q3R.mjs';
|
|
8
|
-
import '@orpc/standard-server-fetch';
|
|
9
|
-
import '../../shared/server.B77ImKAP.mjs';
|
|
10
|
-
import '@orpc/client/standard';
|
|
11
|
-
import '@orpc/client';
|
|
12
|
-
import '@orpc/contract';
|
|
13
|
-
import '@orpc/standard-server';
|
|
14
|
-
|
|
15
|
-
type ServeOptions<T extends Context> = Omit<StandardHandleOptions<T>, 'context'> & (Record<never, never> extends T ? {
|
|
16
|
-
context?: Value<T, [NextRequest]>;
|
|
17
|
-
} : {
|
|
18
|
-
context: Value<T, [NextRequest]>;
|
|
19
|
-
});
|
|
20
|
-
interface ServeResult {
|
|
21
|
-
GET(req: NextRequest): Promise<Response>;
|
|
22
|
-
POST(req: NextRequest): Promise<Response>;
|
|
23
|
-
PUT(req: NextRequest): Promise<Response>;
|
|
24
|
-
PATCH(req: NextRequest): Promise<Response>;
|
|
25
|
-
DELETE(req: NextRequest): Promise<Response>;
|
|
26
|
-
}
|
|
27
|
-
declare function serve<T extends Context>(handler: FetchHandler<T>, ...[options]: MaybeOptionalOptions<ServeOptions<T>>): ServeResult;
|
|
28
|
-
|
|
29
|
-
export { FetchHandler, type ServeOptions, type ServeResult, serve };
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { FetchHandler } from '../fetch/index.js';
|
|
2
|
-
export { BodyLimitPlugin, BodyLimitPluginOptions, FetchHandleResult, FetchHandlerInterceptorOptions, FetchHandlerOptions, FetchHandlerPlugin, 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.DLt5njUb.js';
|
|
6
|
-
import { S as StandardHandleOptions } from '../../shared/server.BHlRCrf_.js';
|
|
7
|
-
import '../../shared/server.Cud5qk0c.js';
|
|
8
|
-
import '@orpc/standard-server-fetch';
|
|
9
|
-
import '../../shared/server.DUF89eb-.js';
|
|
10
|
-
import '@orpc/client/standard';
|
|
11
|
-
import '@orpc/client';
|
|
12
|
-
import '@orpc/contract';
|
|
13
|
-
import '@orpc/standard-server';
|
|
14
|
-
|
|
15
|
-
type ServeOptions<T extends Context> = Omit<StandardHandleOptions<T>, 'context'> & (Record<never, never> extends T ? {
|
|
16
|
-
context?: Value<T, [NextRequest]>;
|
|
17
|
-
} : {
|
|
18
|
-
context: Value<T, [NextRequest]>;
|
|
19
|
-
});
|
|
20
|
-
interface ServeResult {
|
|
21
|
-
GET(req: NextRequest): Promise<Response>;
|
|
22
|
-
POST(req: NextRequest): Promise<Response>;
|
|
23
|
-
PUT(req: NextRequest): Promise<Response>;
|
|
24
|
-
PATCH(req: NextRequest): Promise<Response>;
|
|
25
|
-
DELETE(req: NextRequest): Promise<Response>;
|
|
26
|
-
}
|
|
27
|
-
declare function serve<T extends Context>(handler: FetchHandler<T>, ...[options]: MaybeOptionalOptions<ServeOptions<T>>): ServeResult;
|
|
28
|
-
|
|
29
|
-
export { FetchHandler, type ServeOptions, type ServeResult, serve };
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
export { B as BodyLimitPlugin, F as FetchHandler, R as RPCHandler } from '../../shared/server.Prfzu_zf.mjs';
|
|
2
|
-
import { value } from '@orpc/shared';
|
|
3
|
-
import '@orpc/client';
|
|
4
|
-
import '@orpc/client/standard';
|
|
5
|
-
import '../../shared/server.DCCkTG29.mjs';
|
|
6
|
-
import '../../shared/server.e3W6AG3-.mjs';
|
|
7
|
-
import '@orpc/contract';
|
|
8
|
-
import '@orpc/standard-server-fetch';
|
|
9
|
-
import '../../shared/server.BVwwTHyO.mjs';
|
|
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,8 +0,0 @@
|
|
|
1
|
-
import { StandardRPCJsonSerializerOptions } from '@orpc/client/standard';
|
|
2
|
-
import { C as Context } from './server.DLt5njUb.mjs';
|
|
3
|
-
import { a as StandardHandlerOptions } from './server.CzxlqYZL.mjs';
|
|
4
|
-
|
|
5
|
-
interface StandardRPCHandlerOptions<T extends Context> extends StandardHandlerOptions<T>, StandardRPCJsonSerializerOptions {
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export type { StandardRPCHandlerOptions as S };
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { C as Context } from './server.DLt5njUb.js';
|
|
2
|
-
import { S as StandardHandleOptions } from './server.BHlRCrf_.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 };
|