@orpc/server 2.0.0-beta.46 → 2.0.0-beta.48
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 +6 -4
- package/dist/adapters/aws-lambda/handler.d.mts +25 -0
- package/dist/adapters/aws-lambda/handler.mjs +21 -0
- package/dist/adapters/aws-lambda/index.d.mts +14 -49
- package/dist/adapters/aws-lambda/index.mjs +2 -39
- package/dist/adapters/aws-lambda/rpc-handler.d.mts +18 -0
- package/dist/adapters/aws-lambda/rpc-handler.mjs +10 -0
- package/dist/adapters/crossws/handler.d.mts +41 -0
- package/dist/adapters/crossws/handler.mjs +38 -0
- package/dist/adapters/crossws/index.d.mts +2 -63
- package/dist/adapters/crossws/index.mjs +2 -68
- package/dist/adapters/crossws/rpc-handler.d.mts +15 -0
- package/dist/adapters/crossws/rpc-handler.mjs +10 -0
- package/dist/adapters/fastify/handler.d.mts +21 -0
- package/dist/adapters/fastify/handler.mjs +20 -0
- package/dist/adapters/fastify/index.d.mts +2 -42
- package/dist/adapters/fastify/index.mjs +2 -39
- package/dist/adapters/fastify/rpc-handler.d.mts +14 -0
- package/dist/adapters/fastify/rpc-handler.mjs +10 -0
- package/dist/adapters/fetch/handler.d.mts +23 -0
- package/dist/adapters/fetch/handler.mjs +22 -0
- package/dist/adapters/fetch/index.d.mts +6 -46
- package/dist/adapters/fetch/index.mjs +4 -41
- package/dist/adapters/fetch/rpc-handler.d.mts +16 -0
- package/dist/adapters/fetch/rpc-handler.mjs +10 -0
- package/dist/adapters/message-port/handler.d.mts +57 -0
- package/dist/adapters/message-port/handler.mjs +62 -0
- package/dist/adapters/message-port/index.d.mts +2 -77
- package/dist/adapters/message-port/index.mjs +2 -87
- package/dist/adapters/message-port/rpc-handler.d.mts +15 -0
- package/dist/adapters/message-port/rpc-handler.mjs +10 -0
- package/dist/adapters/node/handler.d.mts +21 -0
- package/dist/adapters/node/handler.mjs +20 -0
- package/dist/adapters/node/index.d.mts +6 -43
- package/dist/adapters/node/index.mjs +4 -40
- package/dist/adapters/node/rpc-handler.d.mts +15 -0
- package/dist/adapters/node/rpc-handler.mjs +10 -0
- package/dist/adapters/standard/codec.d.mts +16 -0
- package/dist/adapters/standard/codec.mjs +1 -0
- package/dist/adapters/standard/handler.d.mts +68 -0
- package/dist/adapters/standard/handler.mjs +185 -0
- package/dist/adapters/standard/index.d.mts +6 -95
- package/dist/adapters/standard/index.mjs +5 -8
- package/dist/adapters/standard/plugin.d.mts +32 -0
- package/dist/adapters/standard/plugin.mjs +16 -0
- package/dist/adapters/standard/rpc-handler-codec.d.mts +42 -0
- package/dist/adapters/standard/rpc-handler-codec.mjs +51 -0
- package/dist/adapters/standard/rpc-matcher.d.mts +53 -0
- package/dist/adapters/standard/rpc-matcher.mjs +140 -0
- package/dist/adapters/standard/utils.d.mts +10 -0
- package/dist/adapters/standard/utils.mjs +6 -0
- package/dist/adapters/standard-peer/index.d.mts +1 -11
- package/dist/adapters/standard-peer/index.mjs +1 -10
- package/dist/adapters/standard-peer/utils.d.mts +4 -0
- package/dist/adapters/standard-peer/utils.mjs +11 -0
- package/dist/adapters/websocket/handler.d.mts +55 -0
- package/dist/adapters/websocket/handler.mjs +55 -0
- package/dist/adapters/websocket/index.d.mts +2 -77
- package/dist/adapters/websocket/index.mjs +2 -87
- package/dist/adapters/websocket/rpc-handler.d.mts +15 -0
- package/dist/adapters/websocket/rpc-handler.mjs +10 -0
- package/dist/builder-variants.d.mts +267 -0
- package/dist/builder-variants.mjs +1 -0
- package/dist/builder.d.mts +141 -0
- package/dist/builder.mjs +145 -0
- package/dist/constants.d.mts +2 -0
- package/dist/constants.mjs +2 -0
- package/dist/context.d.mts +13 -0
- package/dist/context.mjs +1 -0
- package/dist/extensions/callable.d.mts +16 -9
- package/dist/extensions/callable.mjs +5 -9
- package/dist/helpers/base64url.d.mts +31 -0
- package/dist/helpers/base64url.mjs +25 -0
- package/dist/helpers/cookie.d.mts +50 -0
- package/dist/helpers/cookie.mjs +35 -0
- package/dist/helpers/encryption.d.mts +28 -0
- package/dist/helpers/encryption.mjs +62 -0
- package/dist/helpers/index.d.mts +4 -167
- package/dist/helpers/index.mjs +4 -200
- package/dist/helpers/signing.d.mts +50 -0
- package/dist/helpers/signing.mjs +43 -0
- package/dist/implementer-procedure.d.mts +36 -0
- package/dist/implementer-procedure.mjs +38 -0
- package/dist/implementer-router.d.mts +78 -0
- package/dist/implementer-router.mjs +77 -0
- package/dist/implementer.d.mts +22 -0
- package/dist/implementer.mjs +30 -0
- package/dist/index.d.mts +57 -476
- package/dist/index.mjs +25 -458
- package/dist/lazy.d.mts +20 -0
- package/dist/lazy.mjs +22 -0
- package/dist/middleware-decorated.d.mts +27 -0
- package/dist/middleware-decorated.mjs +65 -0
- package/dist/middleware.d.mts +70 -0
- package/dist/middleware.mjs +1 -0
- package/dist/plugins/batch.d.mts +104 -0
- package/dist/plugins/batch.mjs +373 -0
- package/dist/plugins/cors.d.mts +67 -0
- package/dist/plugins/cors.mjs +134 -0
- package/dist/plugins/get-method-csrf-protection.d.mts +23 -0
- package/dist/plugins/get-method-csrf-protection.mjs +45 -0
- package/dist/plugins/head-method.d.mts +23 -0
- package/dist/plugins/head-method.mjs +95 -0
- package/dist/plugins/index.d.mts +39 -432
- package/dist/plugins/index.mjs +23 -967
- package/dist/plugins/method-override.d.mts +38 -0
- package/dist/plugins/method-override.mjs +50 -0
- package/dist/plugins/request-compression.d.mts +16 -0
- package/dist/plugins/request-compression.mjs +67 -0
- package/dist/plugins/request-headers.d.mts +22 -0
- package/dist/plugins/request-headers.mjs +21 -0
- package/dist/plugins/request-limit.d.mts +30 -0
- package/dist/plugins/request-limit.mjs +53 -0
- package/dist/plugins/response-compression.d.mts +59 -0
- package/dist/plugins/response-compression.mjs +172 -0
- package/dist/plugins/response-headers.d.mts +30 -0
- package/dist/plugins/response-headers.mjs +34 -0
- package/dist/plugins/rethrow.d.mts +33 -0
- package/dist/plugins/rethrow.mjs +46 -0
- package/dist/plugins/signal-sync.d.mts +13 -0
- package/dist/plugins/signal-sync.mjs +84 -0
- package/dist/plugins/timeout.d.mts +37 -0
- package/dist/plugins/timeout.mjs +56 -0
- package/dist/procedure-client.d.mts +41 -0
- package/dist/procedure-client.mjs +157 -0
- package/dist/procedure-decorated.d.mts +20 -0
- package/dist/procedure-decorated.mjs +41 -0
- package/dist/procedure-utils.d.mts +52 -0
- package/dist/procedure-utils.mjs +33 -0
- package/dist/procedure.d.mts +93 -0
- package/dist/procedure.mjs +20 -0
- package/dist/router-client.d.mts +27 -0
- package/dist/router-client.mjs +35 -0
- package/dist/router-hidden.d.mts +5 -0
- package/dist/router-hidden.mjs +12 -0
- package/dist/router-utils.d.mts +59 -0
- package/dist/router-utils.mjs +191 -0
- package/dist/router.d.mts +61 -0
- package/dist/router.mjs +1 -0
- package/package.json +11 -11
- package/dist/adapters/aws-lambda/index.d.ts +0 -51
- package/dist/adapters/crossws/index.d.ts +0 -63
- package/dist/adapters/fastify/index.d.ts +0 -42
- package/dist/adapters/fetch/index.d.ts +0 -47
- package/dist/adapters/message-port/index.d.ts +0 -77
- package/dist/adapters/node/index.d.ts +0 -44
- package/dist/adapters/standard/index.d.ts +0 -95
- package/dist/adapters/standard-peer/index.d.ts +0 -11
- package/dist/adapters/websocket/index.d.ts +0 -77
- package/dist/extensions/callable.d.ts +0 -10
- package/dist/helpers/index.d.ts +0 -167
- package/dist/index.d.ts +0 -476
- package/dist/plugins/index.d.ts +0 -432
- package/dist/shared/server.1ExWFMze.mjs +0 -69
- package/dist/shared/server.9B1jEm5a.d.mts +0 -105
- package/dist/shared/server.BB464y-6.mjs +0 -207
- package/dist/shared/server.BC5BIu02.d.mts +0 -73
- package/dist/shared/server.BSYGskId.d.ts +0 -14
- package/dist/shared/server.BvG3boBj.d.mts +0 -14
- package/dist/shared/server.CTV_mC2P.d.mts +0 -34
- package/dist/shared/server.CYbIpHbH.mjs +0 -239
- package/dist/shared/server.CgBF3Vj1.d.ts +0 -34
- package/dist/shared/server.Chq5FpXf.mjs +0 -353
- package/dist/shared/server.DFPxP2v3.d.mts +0 -166
- package/dist/shared/server.DFPxP2v3.d.ts +0 -166
- package/dist/shared/server.DOg7ke6y.d.ts +0 -105
- package/dist/shared/server.Dz7j9BEh.d.ts +0 -73
- package/dist/shared/server.W91HSRkE.mjs +0 -9
- package/dist/shared/server.sBQSgqK3.mjs +0 -41
package/README.md
CHANGED
|
@@ -156,10 +156,11 @@ Like what we build over at [middleapi](https://github.com/middleapi)? You can he
|
|
|
156
156
|
<td align="center"><a href="https://github.com/christ12938?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="christ12938"><img src="https://avatars.githubusercontent.com/u/25758598?v=4" width="167" alt="christ12938"/><br />christ12938</a></td>
|
|
157
157
|
<td align="center"><a href="https://github.com/Ryanjso?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Ryan Soderberg"><img src="https://avatars.githubusercontent.com/u/39172778?u=5ed913c31d57e7221b75784abcad48c7ebddde27&v=4" width="167" alt="Ryan Soderberg"/><br />Ryan Soderberg</a></td>
|
|
158
158
|
<td align="center"><a href="https://github.com/itigoore01?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="shota"><img src="https://avatars.githubusercontent.com/u/11831107?u=c976a6dc7e055eb026304c46c99100ed22b0c8e0&v=4" width="167" alt="shota"/><br />shota</a></td>
|
|
159
|
+
<td align="center"><a href="https://github.com/Nic13Gamer?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Nicholas"><img src="https://avatars.githubusercontent.com/u/54724556?u=56a7ab430ce7a80d648ab6eba051d454a818ed0b&v=4" width="167" alt="Nicholas"/><br />Nicholas</a></td>
|
|
159
160
|
<td align="center"><a href="https://github.com/ellis-driscoll?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Ellis Driscoll"><img src="https://avatars.githubusercontent.com/u/70685966?u=c5f95bc33b5991d9744abe00052542e4a2ed3cb9&v=4" width="167" alt="Ellis Driscoll"/><br />Ellis Driscoll</a></td>
|
|
160
|
-
<td align="center"><a href="https://github.com/hoangbn?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Hoang Nguyen"><img src="https://avatars.githubusercontent.com/u/38968280?u=c90084c6de65c56facabab7ba13a72a49ddbc3e4&v=4" width="167" alt="Hoang Nguyen"/><br />Hoang Nguyen</a></td>
|
|
161
161
|
</tr>
|
|
162
162
|
<tr>
|
|
163
|
+
<td align="center"><a href="https://github.com/hoangbn?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Hoang Nguyen"><img src="https://avatars.githubusercontent.com/u/38968280?u=c90084c6de65c56facabab7ba13a72a49ddbc3e4&v=4" width="167" alt="Hoang Nguyen"/><br />Hoang Nguyen</a></td>
|
|
163
164
|
<td align="center"><a href="https://opencollective.com/guest-ac41de3b?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Orestis Ioannou"><img src="https://images.opencollective.com/guest-ac41de3b/avatar/460.png" width="167" alt="Orestis Ioannou"/><br />Orestis Ioannou</a></td>
|
|
164
165
|
<td align="center"><a href="https://automatio.ai/?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Stefan Smiljkovic"><img src="https://avatars.githubusercontent.com/u/1984909?u=b7bf5bc40ed49df3c22f69d2da7b8d78709c49ed&v=4" width="167" alt="Stefan Smiljkovic"/><br />Stefan Smiljkovic</a></td>
|
|
165
166
|
</tr>
|
|
@@ -190,10 +191,9 @@ Like what we build over at [middleapi](https://github.com/middleapi)? You can he
|
|
|
190
191
|
<td align="center"><a href="https://kellychan.im/?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Kelly Peilin Chan"><img src="https://avatars.githubusercontent.com/u/520852?u=6b0f7105f694e7b5cacf410a3f04c7044b469dc8&v=4" width="139" alt="Kelly Peilin Chan"/><br />Kelly Peilin Chan</a></td>
|
|
191
192
|
<td align="center"><a href="https://guyariely.com/?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Guy Ariely"><img src="https://avatars.githubusercontent.com/u/42813496?u=edb6b7f563bf28e160a290832e7da57c0506f8ca&v=4" width="139" alt="Guy Ariely"/><br />Guy Ariely</a></td>
|
|
192
193
|
<td align="center"><a href="https://paulsenon.com/?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="PaulSenon"><img src="https://avatars.githubusercontent.com/u/19531087?u=6385741eb91d200b8c513ec6045482e301767ca6&v=4" width="139" alt="PaulSenon"/><br />PaulSenon</a></td>
|
|
193
|
-
<td align="center"><a href="https://
|
|
194
|
+
<td align="center"><a href="https://piscis.dev/?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Alex"><img src="https://avatars.githubusercontent.com/u/326163?u=b245f368bd940cf51d08c0b6bf55f8257f359437&v=4" width="139" alt="Alex"/><br />Alex</a></td>
|
|
194
195
|
</tr>
|
|
195
196
|
<tr>
|
|
196
|
-
<td align="center"><a href="https://piscis.dev/?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Alex"><img src="https://avatars.githubusercontent.com/u/326163?u=b245f368bd940cf51d08c0b6bf55f8257f359437&v=4" width="139" alt="Alex"/><br />Alex</a></td>
|
|
197
197
|
<td align="center"><a href="https://opensource.gubanov.eu/?ref=middleapi&utm_source=middleapi&utm_medium=sponsor" target="_blank" rel="noopener sponsored" title="Andrey Gubanov"><img src="https://avatars.githubusercontent.com/u/1082083?u=c5f2daf7ebece498e85c83367bb37b4e10e2649d&v=4" width="139" alt="Andrey Gubanov"/><br />Andrey Gubanov</a></td>
|
|
198
198
|
</tr>
|
|
199
199
|
</table>
|
|
@@ -206,7 +206,9 @@ With thanks to [40 past sponsors](https://orpc.dev/sponsors#past-sponsors) who h
|
|
|
206
206
|
|
|
207
207
|
<table>
|
|
208
208
|
<tr>
|
|
209
|
-
<td align="center"><a href="https://claude.com/contact-sales/claude-for-oss" target="_blank" rel="noopener" title="Claude for Open Source"><img src="https://cdn.simpleicons.org/claude" width="64" alt="Claude"/><br />Claude
|
|
209
|
+
<td align="center"><a href="https://claude.com/contact-sales/claude-for-oss" target="_blank" rel="noopener" title="Claude for Open Source"><img src="https://cdn.simpleicons.org/claude" width="64" alt="Claude"/><br />Claude</a></td>
|
|
210
|
+
<td align="center"><a href="https://pullfrog.com/for-oss" target="_blank" rel="noopener" title="Pullfrog for OSS"><img src="https://avatars.githubusercontent.com/in/1768019?s=128&v=4" width="64" alt="Pullfrog"/><br />Pullfrog</a></td>
|
|
211
|
+
<td align="center"><a href="https://macroscope.com/open-source" target="_blank" rel="noopener" title="Macroscope for Open Source"><img src="https://avatars.githubusercontent.com/in/900172?s=128&v=4" width="64" alt="Macroscope"/><br />Macroscope</a></td>
|
|
210
212
|
</tr>
|
|
211
213
|
</table>
|
|
212
214
|
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { MaybeOptionalOptions } from "@orpc/shared";
|
|
2
|
+
import type { AnyAPIGatewayProxyEvent, HttpResponseStream, SendStandardResponseOptions } from "@standard-server/aws-lambda";
|
|
3
|
+
import type { Context } from "../../context.mjs";
|
|
4
|
+
import type { FriendlyStandardHandlerHandleOptions, StandardHandler } from "../standard/index.mjs";
|
|
5
|
+
export type AwsLambdaHandlerHandleResult = {
|
|
6
|
+
matched: true;
|
|
7
|
+
} | {
|
|
8
|
+
matched: false;
|
|
9
|
+
};
|
|
10
|
+
export interface AwsLambdaHandlerOptions<_T extends Context> {
|
|
11
|
+
/**
|
|
12
|
+
* Custom options for `sendStandardResponse`, used to send a `Standard Response`
|
|
13
|
+
*/
|
|
14
|
+
sendStandardResponse?: SendStandardResponseOptions | undefined;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Requires the AWS Lambda Node.js runtime with response streaming enabled,
|
|
18
|
+
* handlers should be wrapped with `awslambda.streamifyResponse`.
|
|
19
|
+
*/
|
|
20
|
+
export declare class AwsLambdaHandler<T extends Context> {
|
|
21
|
+
private readonly standardHandler;
|
|
22
|
+
private readonly sendStandardResponseOptions;
|
|
23
|
+
constructor(standardHandler: StandardHandler<T>, options?: NoInfer<AwsLambdaHandlerOptions<T>>);
|
|
24
|
+
handle(event: AnyAPIGatewayProxyEvent, responseStream: HttpResponseStream, ...rest: MaybeOptionalOptions<FriendlyStandardHandlerHandleOptions<T>>): Promise<AwsLambdaHandlerHandleResult>;
|
|
25
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { resolveMaybeOptionalOptions } from "@orpc/shared";
|
|
2
|
+
import { sendStandardResponse, toStandardLazyRequest } from "@standard-server/aws-lambda";
|
|
3
|
+
import { resolveFriendlyStandardHandlerHandleOptions } from "../standard/index.mjs";
|
|
4
|
+
|
|
5
|
+
export class AwsLambdaHandler {
|
|
6
|
+
standardHandler;
|
|
7
|
+
sendStandardResponseOptions;
|
|
8
|
+
constructor(standardHandler, options = {}) {
|
|
9
|
+
this.standardHandler = standardHandler;
|
|
10
|
+
this.sendStandardResponseOptions = options.sendStandardResponse;
|
|
11
|
+
}
|
|
12
|
+
async handle(event, responseStream, ...rest) {
|
|
13
|
+
const standardRequest = toStandardLazyRequest(event, responseStream);
|
|
14
|
+
const result = await this.standardHandler.handle(standardRequest, resolveFriendlyStandardHandlerHandleOptions(resolveMaybeOptionalOptions(rest)));
|
|
15
|
+
if (!result.matched) {
|
|
16
|
+
return result;
|
|
17
|
+
}
|
|
18
|
+
await sendStandardResponse(responseStream, result.response, this.sendStandardResponseOptions);
|
|
19
|
+
return result;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -1,51 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export {
|
|
4
|
-
import { Context } from '../../index.mjs';
|
|
5
|
-
import { StandardHandler, StandardHandlerOptions } from '../standard/index.mjs';
|
|
6
|
-
import { FriendlyStandardHandlerHandleOptions } from '../standard/index.mjs';
|
|
7
|
-
import { Router } from '../../index.mjs';
|
|
8
|
-
import { RPCHandlerCodecOptions } from '../standard/index.mjs';
|
|
9
|
-
import '@orpc/client';
|
|
10
|
-
import '@orpc/contract';
|
|
11
|
-
import '@standard-server/core';
|
|
12
|
-
|
|
13
|
-
type AwsLambdaHandlerHandleResult = {
|
|
14
|
-
matched: true;
|
|
15
|
-
} | {
|
|
16
|
-
matched: false;
|
|
17
|
-
};
|
|
18
|
-
interface AwsLambdaHandlerOptions<_T extends Context> {
|
|
19
|
-
/**
|
|
20
|
-
* Custom options for `sendStandardResponse`, used to send a `Standard Response`
|
|
21
|
-
*/
|
|
22
|
-
sendStandardResponse?: SendStandardResponseOptions | undefined;
|
|
23
|
-
}
|
|
1
|
+
export * from "./handler.mjs";
|
|
2
|
+
export * from "./rpc-handler.mjs";
|
|
3
|
+
export type { AnyAPIGatewayProxyEvent, APIGatewayProxyEvent,
|
|
24
4
|
/**
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
private readonly sendStandardResponseOptions;
|
|
31
|
-
constructor(standardHandler: StandardHandler<T>, options?: NoInfer<AwsLambdaHandlerOptions<T>>);
|
|
32
|
-
handle(event: AnyAPIGatewayProxyEvent, responseStream: HttpResponseStream, ...rest: MaybeOptionalOptions<FriendlyStandardHandlerHandleOptions<T>>): Promise<AwsLambdaHandlerHandleResult>;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
interface RPCHandlerOptions<T extends Context> extends AwsLambdaHandlerOptions<T>, StandardHandlerOptions<T>, RPCHandlerCodecOptions<T> {
|
|
36
|
-
}
|
|
5
|
+
* AWS API Gateway proxy event, payload format 2.0, also used by Lambda Function URLs.
|
|
6
|
+
*
|
|
7
|
+
* @see {@link https://orpc.dev/docs/adapters/aws-lambda | AWS Lambda Adapter}
|
|
8
|
+
*/
|
|
9
|
+
APIGatewayProxyEventV2,
|
|
37
10
|
/**
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
* @see {@link https://orpc.dev/docs/adapters/aws-lambda | AWS Lambda Adapter}
|
|
45
|
-
*/
|
|
46
|
-
declare class RPCHandler<T extends Context> extends AwsLambdaHandler<T> {
|
|
47
|
-
constructor(router: Router<T>, options?: NoInfer<RPCHandlerOptions<T>>);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
export { AwsLambdaHandler, RPCHandler };
|
|
51
|
-
export type { AwsLambdaHandlerHandleResult, AwsLambdaHandlerOptions, RPCHandlerOptions };
|
|
11
|
+
* Shape of the `awslambda` global the Lambda Node.js runtime injects when response streaming is enabled.
|
|
12
|
+
* Declare it yourself: `declare const awslambda: AwsLambdaGlobal`.
|
|
13
|
+
*
|
|
14
|
+
* @see {@link https://orpc.dev/docs/adapters/aws-lambda | AWS Lambda Adapter}
|
|
15
|
+
*/
|
|
16
|
+
AwsLambdaGlobal, HttpResponseStream } from "@standard-server/aws-lambda";
|
|
@@ -1,39 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import { r as resolveFriendlyStandardHandlerHandleOptions } from '../../shared/server.W91HSRkE.mjs';
|
|
4
|
-
import { R as RPCHandlerCodec, S as StandardHandler } from '../../shared/server.Chq5FpXf.mjs';
|
|
5
|
-
import '@orpc/client';
|
|
6
|
-
import '@standard-server/core';
|
|
7
|
-
import '../../shared/server.BB464y-6.mjs';
|
|
8
|
-
import '@orpc/contract';
|
|
9
|
-
import '../../shared/server.CYbIpHbH.mjs';
|
|
10
|
-
|
|
11
|
-
class AwsLambdaHandler {
|
|
12
|
-
constructor(standardHandler, options = {}) {
|
|
13
|
-
this.standardHandler = standardHandler;
|
|
14
|
-
this.sendStandardResponseOptions = options.sendStandardResponse;
|
|
15
|
-
}
|
|
16
|
-
sendStandardResponseOptions;
|
|
17
|
-
async handle(event, responseStream, ...rest) {
|
|
18
|
-
const standardRequest = toStandardLazyRequest(event, responseStream);
|
|
19
|
-
const result = await this.standardHandler.handle(
|
|
20
|
-
standardRequest,
|
|
21
|
-
resolveFriendlyStandardHandlerHandleOptions(resolveMaybeOptionalOptions(rest))
|
|
22
|
-
);
|
|
23
|
-
if (!result.matched) {
|
|
24
|
-
return result;
|
|
25
|
-
}
|
|
26
|
-
await sendStandardResponse(responseStream, result.response, this.sendStandardResponseOptions);
|
|
27
|
-
return result;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
class RPCHandler extends AwsLambdaHandler {
|
|
32
|
-
constructor(router, options = {}) {
|
|
33
|
-
const codec = new RPCHandlerCodec(router, options);
|
|
34
|
-
const handler = new StandardHandler(codec, options);
|
|
35
|
-
super(handler, options);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
export { AwsLambdaHandler, RPCHandler };
|
|
1
|
+
export * from "./handler.mjs";
|
|
2
|
+
export * from "./rpc-handler.mjs";
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Context } from "../../context.mjs";
|
|
2
|
+
import type { Router } from "../../router.mjs";
|
|
3
|
+
import type { RPCHandlerCodecOptions, StandardHandlerOptions } from "../standard/index.mjs";
|
|
4
|
+
import type { AwsLambdaHandlerOptions } from "./handler.mjs";
|
|
5
|
+
import { AwsLambdaHandler } from "./handler.mjs";
|
|
6
|
+
export interface RPCHandlerOptions<T extends Context> extends AwsLambdaHandlerOptions<T>, StandardHandlerOptions<T>, RPCHandlerCodecOptions<T> {}
|
|
7
|
+
/**
|
|
8
|
+
* Serves an oRPC router over the RPC protocol on AWS Lambda,
|
|
9
|
+
* behind API Gateway or Lambda Function URLs.
|
|
10
|
+
*
|
|
11
|
+
* @remarks
|
|
12
|
+
* **Warning**: Requires the Lambda Node.js runtime with response streaming enabled, so handlers must be wrapped with `awslambda.streamifyResponse`.
|
|
13
|
+
*
|
|
14
|
+
* @see {@link https://orpc.dev/docs/adapters/aws-lambda | AWS Lambda Adapter}
|
|
15
|
+
*/
|
|
16
|
+
export declare class RPCHandler<T extends Context> extends AwsLambdaHandler<T> {
|
|
17
|
+
constructor(router: Router<T>, options?: NoInfer<RPCHandlerOptions<T>>);
|
|
18
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { RPCHandlerCodec, StandardHandler } from "../standard/index.mjs";
|
|
2
|
+
import { AwsLambdaHandler } from "./handler.mjs";
|
|
3
|
+
|
|
4
|
+
export class RPCHandler extends AwsLambdaHandler {
|
|
5
|
+
constructor(router, options = {}) {
|
|
6
|
+
const codec = new RPCHandlerCodec(router, options);
|
|
7
|
+
const handler = new StandardHandler(codec, options);
|
|
8
|
+
super(handler, options);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { MaybeOptionalOptions } from "@orpc/shared";
|
|
2
|
+
import type { DecodePeerMessageOptions, EncodePeerMessageOptions } from "@standard-server/peer";
|
|
3
|
+
import type { Message, Peer } from "crossws";
|
|
4
|
+
import type { Context } from "../../context.mjs";
|
|
5
|
+
import type { FriendlyStandardHandlerHandleOptions, StandardHandler } from "../standard/index.mjs";
|
|
6
|
+
export type CrosswsPeerLike = Pick<Peer, "send">;
|
|
7
|
+
export type CrosswsMessageLike = Pick<Message, "rawData" | "uint8Array">;
|
|
8
|
+
export interface experimental_CrosswsHandlerOptions<_T extends Context> {
|
|
9
|
+
/**
|
|
10
|
+
* Options for encoding peer messages. such as `prefix` for distinguishing messages on the same channel..
|
|
11
|
+
*/
|
|
12
|
+
encodePeerMessage?: EncodePeerMessageOptions | undefined;
|
|
13
|
+
/**
|
|
14
|
+
* Options for decoding peer messages. such as `prefix` for distinguishing messages on the same channel..
|
|
15
|
+
*/
|
|
16
|
+
decodePeerMessage?: DecodePeerMessageOptions | undefined;
|
|
17
|
+
}
|
|
18
|
+
export declare class experimental_CrosswsHandler<T extends Context> {
|
|
19
|
+
private readonly handler;
|
|
20
|
+
private readonly peers;
|
|
21
|
+
private readonly encodePeerMessageOptions;
|
|
22
|
+
private readonly decodePeerMessageOptions;
|
|
23
|
+
constructor(handler: StandardHandler<T>, options?: NoInfer<experimental_CrosswsHandlerOptions<T>>);
|
|
24
|
+
/**
|
|
25
|
+
* Handles a single WebSocket message.
|
|
26
|
+
*
|
|
27
|
+
* Message order matters. Call this immediately after receiving a message,
|
|
28
|
+
* before any other async work, to preserve ordering.
|
|
29
|
+
*
|
|
30
|
+
* @param ws The crossws peer instance. Use the same instance for all messages.
|
|
31
|
+
*/
|
|
32
|
+
message(ws: CrosswsPeerLike, message: CrosswsMessageLike, ...rest: MaybeOptionalOptions<FriendlyStandardHandlerHandleOptions<T>>): Promise<{
|
|
33
|
+
matched: boolean;
|
|
34
|
+
}>;
|
|
35
|
+
/**
|
|
36
|
+
* Cleans up peer state for a closed WebSocket.
|
|
37
|
+
*
|
|
38
|
+
* @param ws The same crossws peer instance passed to `.message()`.
|
|
39
|
+
*/
|
|
40
|
+
close(ws: CrosswsPeerLike): Promise<void>;
|
|
41
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { resolveMaybeOptionalOptions } from "@orpc/shared";
|
|
2
|
+
import { decodePeerMessage, encodePeerMessage, isClientPeerSendMessage, ServerPeer } from "@standard-server/peer";
|
|
3
|
+
import { createStandardPeerRequestHandler } from "../standard-peer/index.mjs";
|
|
4
|
+
export class experimental_CrosswsHandler {
|
|
5
|
+
handler;
|
|
6
|
+
peers = new WeakMap();
|
|
7
|
+
encodePeerMessageOptions;
|
|
8
|
+
decodePeerMessageOptions;
|
|
9
|
+
constructor(handler, options = {}) {
|
|
10
|
+
this.handler = handler;
|
|
11
|
+
this.encodePeerMessageOptions = options.encodePeerMessage;
|
|
12
|
+
this.decodePeerMessageOptions = options.decodePeerMessage;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
async message(ws, message, ...rest) {
|
|
16
|
+
let peer = this.peers.get(ws);
|
|
17
|
+
if (!peer) {
|
|
18
|
+
this.peers.set(ws, peer = new ServerPeer(async (message) => {
|
|
19
|
+
ws.send(await encodePeerMessage(message, this.encodePeerMessageOptions));
|
|
20
|
+
}));
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const encodedMessage = typeof message.rawData === "string" ? message.rawData : message.uint8Array();
|
|
24
|
+
const result = decodePeerMessage(encodedMessage, this.decodePeerMessageOptions);
|
|
25
|
+
if (result.matched && isClientPeerSendMessage(result.message)) {
|
|
26
|
+
await peer.message(result.message, createStandardPeerRequestHandler(this.handler, resolveMaybeOptionalOptions(rest)));
|
|
27
|
+
}
|
|
28
|
+
return result;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
async close(ws) {
|
|
32
|
+
const server = this.peers.get(ws);
|
|
33
|
+
if (server) {
|
|
34
|
+
await server.close();
|
|
35
|
+
this.peers.delete(ws);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -1,63 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import { Message, Peer } from 'crossws';
|
|
4
|
-
import { Context } from '../../index.mjs';
|
|
5
|
-
import { StandardHandler, StandardHandlerOptions } from '../standard/index.mjs';
|
|
6
|
-
import { FriendlyStandardHandlerHandleOptions } from '../standard/index.mjs';
|
|
7
|
-
import { Router } from '../../index.mjs';
|
|
8
|
-
import { RPCHandlerCodecOptions } from '../standard/index.mjs';
|
|
9
|
-
import '@orpc/client';
|
|
10
|
-
import '@orpc/contract';
|
|
11
|
-
import '@standard-server/core';
|
|
12
|
-
|
|
13
|
-
type CrosswsPeerLike = Pick<Peer, 'send'>;
|
|
14
|
-
type CrosswsMessageLike = Pick<Message, 'rawData' | 'uint8Array'>;
|
|
15
|
-
interface experimental_CrosswsHandlerOptions<_T extends Context> {
|
|
16
|
-
/**
|
|
17
|
-
* Options for encoding peer messages. such as `prefix` for distinguishing messages on the same channel..
|
|
18
|
-
*/
|
|
19
|
-
encodePeerMessage?: EncodePeerMessageOptions | undefined;
|
|
20
|
-
/**
|
|
21
|
-
* Options for decoding peer messages. such as `prefix` for distinguishing messages on the same channel..
|
|
22
|
-
*/
|
|
23
|
-
decodePeerMessage?: DecodePeerMessageOptions | undefined;
|
|
24
|
-
}
|
|
25
|
-
declare class experimental_CrosswsHandler<T extends Context> {
|
|
26
|
-
private readonly handler;
|
|
27
|
-
private readonly peers;
|
|
28
|
-
private readonly encodePeerMessageOptions;
|
|
29
|
-
private readonly decodePeerMessageOptions;
|
|
30
|
-
constructor(handler: StandardHandler<T>, options?: NoInfer<experimental_CrosswsHandlerOptions<T>>);
|
|
31
|
-
/**
|
|
32
|
-
* Handles a single WebSocket message.
|
|
33
|
-
*
|
|
34
|
-
* Message order matters. Call this immediately after receiving a message,
|
|
35
|
-
* before any other async work, to preserve ordering.
|
|
36
|
-
*
|
|
37
|
-
* @param ws The crossws peer instance. Use the same instance for all messages.
|
|
38
|
-
*/
|
|
39
|
-
message(ws: CrosswsPeerLike, message: CrosswsMessageLike, ...rest: MaybeOptionalOptions<FriendlyStandardHandlerHandleOptions<T>>): Promise<{
|
|
40
|
-
matched: boolean;
|
|
41
|
-
}>;
|
|
42
|
-
/**
|
|
43
|
-
* Cleans up peer state for a closed WebSocket.
|
|
44
|
-
*
|
|
45
|
-
* @param ws The same crossws peer instance passed to `.message()`.
|
|
46
|
-
*/
|
|
47
|
-
close(ws: CrosswsPeerLike): Promise<void>;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
interface experimental_RPCHandlerOptions<T extends Context> extends StandardHandlerOptions<T>, RPCHandlerCodecOptions<T>, experimental_CrosswsHandlerOptions<T> {
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Serves an oRPC router over the RPC protocol on a WebSocket connection
|
|
54
|
-
* managed by [crossws](https://github.com/h3js/crossws).
|
|
55
|
-
*
|
|
56
|
-
* @see {@link https://orpc.dev/docs/adapters/websocket | WebSocket Adapters}
|
|
57
|
-
*/
|
|
58
|
-
declare class experimental_RPCHandler<T extends Context> extends experimental_CrosswsHandler<T> {
|
|
59
|
-
constructor(router: Router<T>, options?: NoInfer<experimental_RPCHandlerOptions<T>>);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
export { experimental_CrosswsHandler, experimental_RPCHandler };
|
|
63
|
-
export type { CrosswsMessageLike, CrosswsPeerLike, experimental_CrosswsHandlerOptions, experimental_RPCHandlerOptions };
|
|
1
|
+
export * from "./handler.mjs";
|
|
2
|
+
export * from "./rpc-handler.mjs";
|
|
@@ -1,68 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import { createStandardPeerRequestHandler } from '../standard-peer/index.mjs';
|
|
4
|
-
import { R as RPCHandlerCodec, S as StandardHandler } from '../../shared/server.Chq5FpXf.mjs';
|
|
5
|
-
import '../../shared/server.W91HSRkE.mjs';
|
|
6
|
-
import '@orpc/client';
|
|
7
|
-
import '@standard-server/core';
|
|
8
|
-
import '../../shared/server.BB464y-6.mjs';
|
|
9
|
-
import '@orpc/contract';
|
|
10
|
-
import '../../shared/server.CYbIpHbH.mjs';
|
|
11
|
-
|
|
12
|
-
class experimental_CrosswsHandler {
|
|
13
|
-
constructor(handler, options = {}) {
|
|
14
|
-
this.handler = handler;
|
|
15
|
-
this.encodePeerMessageOptions = options.encodePeerMessage;
|
|
16
|
-
this.decodePeerMessageOptions = options.decodePeerMessage;
|
|
17
|
-
}
|
|
18
|
-
peers = /* @__PURE__ */ new WeakMap();
|
|
19
|
-
encodePeerMessageOptions;
|
|
20
|
-
decodePeerMessageOptions;
|
|
21
|
-
/**
|
|
22
|
-
* Handles a single WebSocket message.
|
|
23
|
-
*
|
|
24
|
-
* Message order matters. Call this immediately after receiving a message,
|
|
25
|
-
* before any other async work, to preserve ordering.
|
|
26
|
-
*
|
|
27
|
-
* @param ws The crossws peer instance. Use the same instance for all messages.
|
|
28
|
-
*/
|
|
29
|
-
async message(ws, message, ...rest) {
|
|
30
|
-
let peer = this.peers.get(ws);
|
|
31
|
-
if (!peer) {
|
|
32
|
-
this.peers.set(ws, peer = new ServerPeer(async (message2) => {
|
|
33
|
-
ws.send(await encodePeerMessage(message2, this.encodePeerMessageOptions));
|
|
34
|
-
}));
|
|
35
|
-
}
|
|
36
|
-
const encodedMessage = typeof message.rawData === "string" ? message.rawData : message.uint8Array();
|
|
37
|
-
const result = decodePeerMessage(encodedMessage, this.decodePeerMessageOptions);
|
|
38
|
-
if (result.matched && isClientPeerSendMessage(result.message)) {
|
|
39
|
-
await peer.message(
|
|
40
|
-
result.message,
|
|
41
|
-
createStandardPeerRequestHandler(this.handler, resolveMaybeOptionalOptions(rest))
|
|
42
|
-
);
|
|
43
|
-
}
|
|
44
|
-
return result;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Cleans up peer state for a closed WebSocket.
|
|
48
|
-
*
|
|
49
|
-
* @param ws The same crossws peer instance passed to `.message()`.
|
|
50
|
-
*/
|
|
51
|
-
async close(ws) {
|
|
52
|
-
const server = this.peers.get(ws);
|
|
53
|
-
if (server) {
|
|
54
|
-
await server.close();
|
|
55
|
-
this.peers.delete(ws);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
class experimental_RPCHandler extends experimental_CrosswsHandler {
|
|
61
|
-
constructor(router, options = {}) {
|
|
62
|
-
const codec = new RPCHandlerCodec(router, options);
|
|
63
|
-
const handler = new StandardHandler(codec, options);
|
|
64
|
-
super(handler, options);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
export { experimental_CrosswsHandler, experimental_RPCHandler };
|
|
1
|
+
export * from "./handler.mjs";
|
|
2
|
+
export * from "./rpc-handler.mjs";
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Context } from "../../context.mjs";
|
|
2
|
+
import type { Router } from "../../router.mjs";
|
|
3
|
+
import type { RPCHandlerCodecOptions, StandardHandlerOptions } from "../standard/index.mjs";
|
|
4
|
+
import type { experimental_CrosswsHandlerOptions as CrosswsHandlerOptions } from "./handler.mjs";
|
|
5
|
+
import { experimental_CrosswsHandler as CrosswsHandler } from "./handler.mjs";
|
|
6
|
+
export interface experimental_RPCHandlerOptions<T extends Context> extends StandardHandlerOptions<T>, RPCHandlerCodecOptions<T>, CrosswsHandlerOptions<T> {}
|
|
7
|
+
/**
|
|
8
|
+
* Serves an oRPC router over the RPC protocol on a WebSocket connection
|
|
9
|
+
* managed by [crossws](https://github.com/h3js/crossws).
|
|
10
|
+
*
|
|
11
|
+
* @see {@link https://orpc.dev/docs/adapters/websocket | WebSocket Adapters}
|
|
12
|
+
*/
|
|
13
|
+
export declare class experimental_RPCHandler<T extends Context> extends CrosswsHandler<T> {
|
|
14
|
+
constructor(router: Router<T>, options?: NoInfer<experimental_RPCHandlerOptions<T>>);
|
|
15
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { RPCHandlerCodec, StandardHandler } from "../standard/index.mjs";
|
|
2
|
+
import { experimental_CrosswsHandler as CrosswsHandler } from "./handler.mjs";
|
|
3
|
+
|
|
4
|
+
export class experimental_RPCHandler extends CrosswsHandler {
|
|
5
|
+
constructor(router, options = {}) {
|
|
6
|
+
const codec = new RPCHandlerCodec(router, options);
|
|
7
|
+
const handler = new StandardHandler(codec, options);
|
|
8
|
+
super(handler, options);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { MaybeOptionalOptions } from "@orpc/shared";
|
|
2
|
+
import type { AnyFastifyReply, AnyFastifyRequest, SendStandardResponseOptions } from "@standard-server/fastify";
|
|
3
|
+
import type { Context } from "../../context.mjs";
|
|
4
|
+
import type { FriendlyStandardHandlerHandleOptions, StandardHandler } from "../standard/index.mjs";
|
|
5
|
+
export type FastifyHandlerHandleResult = {
|
|
6
|
+
matched: true;
|
|
7
|
+
} | {
|
|
8
|
+
matched: false;
|
|
9
|
+
};
|
|
10
|
+
export interface FastifyHandlerOptions<_T extends Context> {
|
|
11
|
+
/**
|
|
12
|
+
* Custom options for `sendStandardResponse`, used to send a `Standard Response`
|
|
13
|
+
*/
|
|
14
|
+
sendStandardResponse?: SendStandardResponseOptions | undefined;
|
|
15
|
+
}
|
|
16
|
+
export declare class FastifyHandler<T extends Context> {
|
|
17
|
+
private readonly standardHandler;
|
|
18
|
+
private readonly sendStandardResponseOptions;
|
|
19
|
+
constructor(standardHandler: StandardHandler<T>, options?: NoInfer<FastifyHandlerOptions<T>>);
|
|
20
|
+
handle(request: AnyFastifyRequest, reply: AnyFastifyReply, ...rest: MaybeOptionalOptions<FriendlyStandardHandlerHandleOptions<T>>): Promise<FastifyHandlerHandleResult>;
|
|
21
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { resolveMaybeOptionalOptions } from "@orpc/shared";
|
|
2
|
+
import { sendStandardResponse, toStandardLazyRequest } from "@standard-server/fastify";
|
|
3
|
+
import { resolveFriendlyStandardHandlerHandleOptions } from "../standard/index.mjs";
|
|
4
|
+
export class FastifyHandler {
|
|
5
|
+
standardHandler;
|
|
6
|
+
sendStandardResponseOptions;
|
|
7
|
+
constructor(standardHandler, options = {}) {
|
|
8
|
+
this.standardHandler = standardHandler;
|
|
9
|
+
this.sendStandardResponseOptions = options.sendStandardResponse;
|
|
10
|
+
}
|
|
11
|
+
async handle(request, reply, ...rest) {
|
|
12
|
+
const standardRequest = toStandardLazyRequest(request, reply);
|
|
13
|
+
const result = await this.standardHandler.handle(standardRequest, resolveFriendlyStandardHandlerHandleOptions(resolveMaybeOptionalOptions(rest)));
|
|
14
|
+
if (!result.matched) {
|
|
15
|
+
return result;
|
|
16
|
+
}
|
|
17
|
+
await sendStandardResponse(reply, result.response, this.sendStandardResponseOptions);
|
|
18
|
+
return result;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -1,42 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import { Context } from '../../index.mjs';
|
|
4
|
-
import { StandardHandler, StandardHandlerOptions } from '../standard/index.mjs';
|
|
5
|
-
import { FriendlyStandardHandlerHandleOptions } from '../standard/index.mjs';
|
|
6
|
-
import { Router } from '../../index.mjs';
|
|
7
|
-
import { RPCHandlerCodecOptions } from '../standard/index.mjs';
|
|
8
|
-
import '@orpc/client';
|
|
9
|
-
import '@orpc/contract';
|
|
10
|
-
import '@standard-server/core';
|
|
11
|
-
|
|
12
|
-
type FastifyHandlerHandleResult = {
|
|
13
|
-
matched: true;
|
|
14
|
-
} | {
|
|
15
|
-
matched: false;
|
|
16
|
-
};
|
|
17
|
-
interface FastifyHandlerOptions<_T extends Context> {
|
|
18
|
-
/**
|
|
19
|
-
* Custom options for `sendStandardResponse`, used to send a `Standard Response`
|
|
20
|
-
*/
|
|
21
|
-
sendStandardResponse?: SendStandardResponseOptions | undefined;
|
|
22
|
-
}
|
|
23
|
-
declare class FastifyHandler<T extends Context> {
|
|
24
|
-
private readonly standardHandler;
|
|
25
|
-
private readonly sendStandardResponseOptions;
|
|
26
|
-
constructor(standardHandler: StandardHandler<T>, options?: NoInfer<FastifyHandlerOptions<T>>);
|
|
27
|
-
handle(request: AnyFastifyRequest, reply: AnyFastifyReply, ...rest: MaybeOptionalOptions<FriendlyStandardHandlerHandleOptions<T>>): Promise<FastifyHandlerHandleResult>;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
interface RPCHandlerOptions<T extends Context> extends FastifyHandlerOptions<T>, StandardHandlerOptions<T>, RPCHandlerCodecOptions<T> {
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Serves an oRPC router over the RPC protocol inside a Fastify server.
|
|
34
|
-
*
|
|
35
|
-
* @see {@link https://orpc.dev/docs/adapters/fastify | Fastify Adapter}
|
|
36
|
-
*/
|
|
37
|
-
declare class RPCHandler<T extends Context> extends FastifyHandler<T> {
|
|
38
|
-
constructor(router: Router<T>, options?: NoInfer<RPCHandlerOptions<T>>);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export { FastifyHandler, RPCHandler };
|
|
42
|
-
export type { FastifyHandlerHandleResult, FastifyHandlerOptions, RPCHandlerOptions };
|
|
1
|
+
export * from "./handler.mjs";
|
|
2
|
+
export * from "./rpc-handler.mjs";
|
|
@@ -1,39 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import { r as resolveFriendlyStandardHandlerHandleOptions } from '../../shared/server.W91HSRkE.mjs';
|
|
4
|
-
import { R as RPCHandlerCodec, S as StandardHandler } from '../../shared/server.Chq5FpXf.mjs';
|
|
5
|
-
import '@orpc/client';
|
|
6
|
-
import '@standard-server/core';
|
|
7
|
-
import '../../shared/server.BB464y-6.mjs';
|
|
8
|
-
import '@orpc/contract';
|
|
9
|
-
import '../../shared/server.CYbIpHbH.mjs';
|
|
10
|
-
|
|
11
|
-
class FastifyHandler {
|
|
12
|
-
constructor(standardHandler, options = {}) {
|
|
13
|
-
this.standardHandler = standardHandler;
|
|
14
|
-
this.sendStandardResponseOptions = options.sendStandardResponse;
|
|
15
|
-
}
|
|
16
|
-
sendStandardResponseOptions;
|
|
17
|
-
async handle(request, reply, ...rest) {
|
|
18
|
-
const standardRequest = toStandardLazyRequest(request, reply);
|
|
19
|
-
const result = await this.standardHandler.handle(
|
|
20
|
-
standardRequest,
|
|
21
|
-
resolveFriendlyStandardHandlerHandleOptions(resolveMaybeOptionalOptions(rest))
|
|
22
|
-
);
|
|
23
|
-
if (!result.matched) {
|
|
24
|
-
return result;
|
|
25
|
-
}
|
|
26
|
-
await sendStandardResponse(reply, result.response, this.sendStandardResponseOptions);
|
|
27
|
-
return result;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
class RPCHandler extends FastifyHandler {
|
|
32
|
-
constructor(router, options = {}) {
|
|
33
|
-
const codec = new RPCHandlerCodec(router, options);
|
|
34
|
-
const handler = new StandardHandler(codec, options);
|
|
35
|
-
super(handler, options);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
export { FastifyHandler, RPCHandler };
|
|
1
|
+
export * from "./handler.mjs";
|
|
2
|
+
export * from "./rpc-handler.mjs";
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Context } from "../../context.mjs";
|
|
2
|
+
import type { Router } from "../../router.mjs";
|
|
3
|
+
import type { RPCHandlerCodecOptions, StandardHandlerOptions } from "../standard/index.mjs";
|
|
4
|
+
import type { FastifyHandlerOptions } from "./handler.mjs";
|
|
5
|
+
import { FastifyHandler } from "./handler.mjs";
|
|
6
|
+
export interface RPCHandlerOptions<T extends Context> extends FastifyHandlerOptions<T>, StandardHandlerOptions<T>, RPCHandlerCodecOptions<T> {}
|
|
7
|
+
/**
|
|
8
|
+
* Serves an oRPC router over the RPC protocol inside a Fastify server.
|
|
9
|
+
*
|
|
10
|
+
* @see {@link https://orpc.dev/docs/adapters/fastify | Fastify Adapter}
|
|
11
|
+
*/
|
|
12
|
+
export declare class RPCHandler<T extends Context> extends FastifyHandler<T> {
|
|
13
|
+
constructor(router: Router<T>, options?: NoInfer<RPCHandlerOptions<T>>);
|
|
14
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { RPCHandlerCodec, StandardHandler } from "../standard/index.mjs";
|
|
2
|
+
import { FastifyHandler } from "./handler.mjs";
|
|
3
|
+
|
|
4
|
+
export class RPCHandler extends FastifyHandler {
|
|
5
|
+
constructor(router, options = {}) {
|
|
6
|
+
const codec = new RPCHandlerCodec(router, options);
|
|
7
|
+
const handler = new StandardHandler(codec, options);
|
|
8
|
+
super(handler, options);
|
|
9
|
+
}
|
|
10
|
+
}
|