@orpc/server 2.0.0-beta.48 → 2.0.0-beta.49

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.
Files changed (269) hide show
  1. package/README.md +4 -4
  2. package/dist/adapters/aws-lambda/handler.d.ts +25 -0
  3. package/dist/adapters/aws-lambda/handler.js +24 -0
  4. package/dist/adapters/aws-lambda/index.d.ts +16 -0
  5. package/dist/adapters/aws-lambda/index.js +2 -0
  6. package/dist/adapters/aws-lambda/rpc-handler.d.ts +19 -0
  7. package/dist/adapters/aws-lambda/rpc-handler.js +18 -0
  8. package/dist/adapters/crossws/handler.d.ts +45 -0
  9. package/dist/adapters/crossws/handler.js +60 -0
  10. package/dist/adapters/crossws/index.d.ts +2 -0
  11. package/dist/adapters/crossws/index.js +2 -0
  12. package/dist/adapters/crossws/rpc-handler.d.ts +16 -0
  13. package/dist/adapters/crossws/rpc-handler.js +15 -0
  14. package/dist/adapters/fastify/handler.d.ts +21 -0
  15. package/dist/adapters/fastify/handler.js +20 -0
  16. package/dist/adapters/fastify/index.d.ts +2 -0
  17. package/dist/adapters/fastify/index.js +2 -0
  18. package/dist/adapters/fastify/rpc-handler.d.ts +15 -0
  19. package/dist/adapters/fastify/rpc-handler.js +14 -0
  20. package/dist/adapters/fetch/handler.d.ts +23 -0
  21. package/dist/adapters/fetch/handler.js +22 -0
  22. package/dist/adapters/fetch/index.d.ts +7 -0
  23. package/dist/adapters/fetch/index.js +7 -0
  24. package/dist/adapters/fetch/rpc-handler.d.ts +17 -0
  25. package/dist/adapters/fetch/rpc-handler.js +16 -0
  26. package/dist/adapters/message-port/handler.d.ts +64 -0
  27. package/dist/adapters/message-port/handler.js +86 -0
  28. package/dist/adapters/message-port/index.d.ts +2 -0
  29. package/dist/adapters/message-port/index.js +2 -0
  30. package/dist/adapters/message-port/rpc-handler.d.ts +16 -0
  31. package/dist/adapters/message-port/rpc-handler.js +15 -0
  32. package/dist/adapters/node/handler.d.ts +21 -0
  33. package/dist/adapters/node/handler.js +20 -0
  34. package/dist/adapters/node/index.d.ts +7 -0
  35. package/dist/adapters/node/index.js +7 -0
  36. package/dist/adapters/node/rpc-handler.d.ts +16 -0
  37. package/dist/adapters/node/rpc-handler.js +15 -0
  38. package/dist/adapters/standard/codec.d.ts +16 -0
  39. package/dist/adapters/standard/handler.d.ts +68 -0
  40. package/dist/adapters/standard/handler.js +205 -0
  41. package/dist/adapters/standard/index.d.ts +6 -0
  42. package/dist/adapters/standard/index.js +5 -0
  43. package/dist/adapters/standard/plugin.d.ts +32 -0
  44. package/dist/adapters/standard/plugin.js +16 -0
  45. package/dist/adapters/standard/rpc-handler-codec.d.ts +46 -0
  46. package/dist/adapters/standard/rpc-handler-codec.js +51 -0
  47. package/dist/adapters/standard/rpc-matcher.d.ts +53 -0
  48. package/dist/adapters/standard/rpc-matcher.js +152 -0
  49. package/dist/adapters/standard/utils.d.ts +10 -0
  50. package/dist/adapters/standard/utils.js +6 -0
  51. package/dist/adapters/standard-peer/index.d.ts +1 -0
  52. package/dist/adapters/standard-peer/index.js +1 -0
  53. package/dist/adapters/standard-peer/{utils.d.mts → utils.d.ts} +3 -3
  54. package/dist/adapters/standard-peer/utils.js +7 -0
  55. package/dist/adapters/websocket/handler.d.ts +59 -0
  56. package/dist/adapters/websocket/handler.js +85 -0
  57. package/dist/adapters/websocket/index.d.ts +2 -0
  58. package/dist/adapters/websocket/index.js +2 -0
  59. package/dist/adapters/websocket/rpc-handler.d.ts +16 -0
  60. package/dist/adapters/websocket/rpc-handler.js +15 -0
  61. package/dist/builder-variants.d.ts +226 -0
  62. package/dist/builder.d.ts +127 -0
  63. package/dist/builder.js +226 -0
  64. package/dist/context.d.ts +6 -0
  65. package/dist/extensions/callable.d.ts +11 -0
  66. package/dist/extensions/callable.js +7 -0
  67. package/dist/helpers/base64url.d.ts +31 -0
  68. package/dist/helpers/base64url.js +53 -0
  69. package/dist/helpers/cookie.d.ts +51 -0
  70. package/dist/helpers/cookie.js +69 -0
  71. package/dist/helpers/encryption.d.ts +28 -0
  72. package/dist/helpers/encryption.js +80 -0
  73. package/dist/helpers/index.d.ts +4 -0
  74. package/dist/helpers/index.js +4 -0
  75. package/dist/helpers/signing.d.ts +50 -0
  76. package/dist/helpers/signing.js +88 -0
  77. package/dist/implementer-procedure.d.ts +16 -0
  78. package/dist/implementer-procedure.js +44 -0
  79. package/dist/implementer-router.d.ts +40 -0
  80. package/dist/implementer-router.js +117 -0
  81. package/dist/implementer.d.ts +16 -0
  82. package/dist/implementer.js +37 -0
  83. package/dist/index.d.ts +61 -0
  84. package/dist/index.js +48 -0
  85. package/dist/lazy.d.ts +20 -0
  86. package/dist/lazy.js +31 -0
  87. package/dist/middleware-decorated.d.ts +10 -0
  88. package/dist/middleware-decorated.js +71 -0
  89. package/dist/middleware.d.ts +54 -0
  90. package/dist/plugins/batch.d.ts +102 -0
  91. package/dist/plugins/batch.js +405 -0
  92. package/dist/plugins/cors.d.ts +73 -0
  93. package/dist/plugins/cors.js +112 -0
  94. package/dist/plugins/get-method-csrf-protection.d.ts +23 -0
  95. package/dist/plugins/get-method-csrf-protection.js +64 -0
  96. package/dist/plugins/head-method.d.ts +23 -0
  97. package/dist/plugins/head-method.js +104 -0
  98. package/dist/plugins/index.d.ts +39 -0
  99. package/dist/plugins/index.js +29 -0
  100. package/dist/plugins/method-override.d.ts +38 -0
  101. package/dist/plugins/method-override.js +50 -0
  102. package/dist/plugins/request-compression.d.ts +16 -0
  103. package/dist/plugins/request-compression.js +82 -0
  104. package/dist/plugins/request-headers.d.ts +22 -0
  105. package/dist/plugins/request-headers.js +30 -0
  106. package/dist/plugins/request-limit.d.ts +30 -0
  107. package/dist/plugins/request-limit.js +68 -0
  108. package/dist/plugins/response-compression.d.ts +59 -0
  109. package/dist/plugins/response-compression.js +209 -0
  110. package/dist/plugins/response-headers.d.ts +30 -0
  111. package/dist/plugins/response-headers.js +47 -0
  112. package/dist/plugins/rethrow.d.ts +33 -0
  113. package/dist/plugins/rethrow.js +59 -0
  114. package/dist/plugins/signal-sync.d.ts +13 -0
  115. package/dist/plugins/signal-sync.js +91 -0
  116. package/dist/plugins/timeout.d.ts +37 -0
  117. package/dist/plugins/timeout.js +59 -0
  118. package/dist/procedure-client.d.ts +19 -0
  119. package/dist/procedure-client.js +175 -0
  120. package/dist/procedure-decorated.d.ts +10 -0
  121. package/dist/procedure-decorated.js +44 -0
  122. package/dist/procedure-utils.d.ts +41 -0
  123. package/dist/procedure-utils.js +49 -0
  124. package/dist/procedure.d.ts +72 -0
  125. package/dist/procedure.js +24 -0
  126. package/dist/router-client.d.ts +23 -0
  127. package/dist/router-client.js +43 -0
  128. package/dist/{router-hidden.d.mts → router-hidden.d.ts} +3 -3
  129. package/dist/router-hidden.js +14 -0
  130. package/dist/router-utils.d.ts +48 -0
  131. package/dist/router-utils.js +202 -0
  132. package/dist/router.d.ts +72 -0
  133. package/package.json +84 -86
  134. package/dist/adapters/aws-lambda/handler.d.mts +0 -25
  135. package/dist/adapters/aws-lambda/handler.mjs +0 -21
  136. package/dist/adapters/aws-lambda/index.d.mts +0 -16
  137. package/dist/adapters/aws-lambda/index.mjs +0 -2
  138. package/dist/adapters/aws-lambda/rpc-handler.d.mts +0 -18
  139. package/dist/adapters/aws-lambda/rpc-handler.mjs +0 -10
  140. package/dist/adapters/crossws/handler.d.mts +0 -41
  141. package/dist/adapters/crossws/handler.mjs +0 -38
  142. package/dist/adapters/crossws/index.d.mts +0 -2
  143. package/dist/adapters/crossws/index.mjs +0 -2
  144. package/dist/adapters/crossws/rpc-handler.d.mts +0 -15
  145. package/dist/adapters/crossws/rpc-handler.mjs +0 -10
  146. package/dist/adapters/fastify/handler.d.mts +0 -21
  147. package/dist/adapters/fastify/handler.mjs +0 -20
  148. package/dist/adapters/fastify/index.d.mts +0 -2
  149. package/dist/adapters/fastify/index.mjs +0 -2
  150. package/dist/adapters/fastify/rpc-handler.d.mts +0 -14
  151. package/dist/adapters/fastify/rpc-handler.mjs +0 -10
  152. package/dist/adapters/fetch/handler.d.mts +0 -23
  153. package/dist/adapters/fetch/handler.mjs +0 -22
  154. package/dist/adapters/fetch/index.d.mts +0 -7
  155. package/dist/adapters/fetch/index.mjs +0 -5
  156. package/dist/adapters/fetch/rpc-handler.d.mts +0 -16
  157. package/dist/adapters/fetch/rpc-handler.mjs +0 -10
  158. package/dist/adapters/message-port/handler.d.mts +0 -57
  159. package/dist/adapters/message-port/handler.mjs +0 -62
  160. package/dist/adapters/message-port/index.d.mts +0 -2
  161. package/dist/adapters/message-port/index.mjs +0 -2
  162. package/dist/adapters/message-port/rpc-handler.d.mts +0 -15
  163. package/dist/adapters/message-port/rpc-handler.mjs +0 -10
  164. package/dist/adapters/node/handler.d.mts +0 -21
  165. package/dist/adapters/node/handler.mjs +0 -20
  166. package/dist/adapters/node/index.d.mts +0 -7
  167. package/dist/adapters/node/index.mjs +0 -5
  168. package/dist/adapters/node/rpc-handler.d.mts +0 -15
  169. package/dist/adapters/node/rpc-handler.mjs +0 -10
  170. package/dist/adapters/standard/codec.d.mts +0 -16
  171. package/dist/adapters/standard/handler.d.mts +0 -68
  172. package/dist/adapters/standard/handler.mjs +0 -185
  173. package/dist/adapters/standard/index.d.mts +0 -6
  174. package/dist/adapters/standard/index.mjs +0 -5
  175. package/dist/adapters/standard/plugin.d.mts +0 -32
  176. package/dist/adapters/standard/plugin.mjs +0 -16
  177. package/dist/adapters/standard/rpc-handler-codec.d.mts +0 -42
  178. package/dist/adapters/standard/rpc-handler-codec.mjs +0 -51
  179. package/dist/adapters/standard/rpc-matcher.d.mts +0 -53
  180. package/dist/adapters/standard/rpc-matcher.mjs +0 -140
  181. package/dist/adapters/standard/utils.d.mts +0 -10
  182. package/dist/adapters/standard/utils.mjs +0 -6
  183. package/dist/adapters/standard-peer/index.d.mts +0 -1
  184. package/dist/adapters/standard-peer/index.mjs +0 -1
  185. package/dist/adapters/standard-peer/utils.mjs +0 -11
  186. package/dist/adapters/websocket/handler.d.mts +0 -55
  187. package/dist/adapters/websocket/handler.mjs +0 -55
  188. package/dist/adapters/websocket/index.d.mts +0 -2
  189. package/dist/adapters/websocket/index.mjs +0 -2
  190. package/dist/adapters/websocket/rpc-handler.d.mts +0 -15
  191. package/dist/adapters/websocket/rpc-handler.mjs +0 -10
  192. package/dist/builder-variants.d.mts +0 -267
  193. package/dist/builder.d.mts +0 -141
  194. package/dist/builder.mjs +0 -145
  195. package/dist/context.d.mts +0 -13
  196. package/dist/extensions/callable.d.mts +0 -17
  197. package/dist/extensions/callable.mjs +0 -7
  198. package/dist/helpers/base64url.d.mts +0 -31
  199. package/dist/helpers/base64url.mjs +0 -25
  200. package/dist/helpers/cookie.d.mts +0 -50
  201. package/dist/helpers/cookie.mjs +0 -35
  202. package/dist/helpers/encryption.d.mts +0 -28
  203. package/dist/helpers/encryption.mjs +0 -62
  204. package/dist/helpers/index.d.mts +0 -4
  205. package/dist/helpers/index.mjs +0 -4
  206. package/dist/helpers/signing.d.mts +0 -50
  207. package/dist/helpers/signing.mjs +0 -43
  208. package/dist/implementer-procedure.d.mts +0 -36
  209. package/dist/implementer-procedure.mjs +0 -38
  210. package/dist/implementer-router.d.mts +0 -78
  211. package/dist/implementer-router.mjs +0 -77
  212. package/dist/implementer.d.mts +0 -22
  213. package/dist/implementer.mjs +0 -30
  214. package/dist/index.d.mts +0 -57
  215. package/dist/index.mjs +0 -30
  216. package/dist/lazy.d.mts +0 -20
  217. package/dist/lazy.mjs +0 -22
  218. package/dist/middleware-decorated.d.mts +0 -27
  219. package/dist/middleware-decorated.mjs +0 -65
  220. package/dist/middleware.d.mts +0 -70
  221. package/dist/plugins/batch.d.mts +0 -104
  222. package/dist/plugins/batch.mjs +0 -373
  223. package/dist/plugins/cors.d.mts +0 -67
  224. package/dist/plugins/cors.mjs +0 -134
  225. package/dist/plugins/get-method-csrf-protection.d.mts +0 -23
  226. package/dist/plugins/get-method-csrf-protection.mjs +0 -45
  227. package/dist/plugins/head-method.d.mts +0 -23
  228. package/dist/plugins/head-method.mjs +0 -95
  229. package/dist/plugins/index.d.mts +0 -39
  230. package/dist/plugins/index.mjs +0 -23
  231. package/dist/plugins/method-override.d.mts +0 -38
  232. package/dist/plugins/method-override.mjs +0 -50
  233. package/dist/plugins/request-compression.d.mts +0 -16
  234. package/dist/plugins/request-compression.mjs +0 -67
  235. package/dist/plugins/request-headers.d.mts +0 -22
  236. package/dist/plugins/request-headers.mjs +0 -21
  237. package/dist/plugins/request-limit.d.mts +0 -30
  238. package/dist/plugins/request-limit.mjs +0 -53
  239. package/dist/plugins/response-compression.d.mts +0 -59
  240. package/dist/plugins/response-compression.mjs +0 -172
  241. package/dist/plugins/response-headers.d.mts +0 -30
  242. package/dist/plugins/response-headers.mjs +0 -34
  243. package/dist/plugins/rethrow.d.mts +0 -33
  244. package/dist/plugins/rethrow.mjs +0 -46
  245. package/dist/plugins/signal-sync.d.mts +0 -13
  246. package/dist/plugins/signal-sync.mjs +0 -84
  247. package/dist/plugins/timeout.d.mts +0 -37
  248. package/dist/plugins/timeout.mjs +0 -56
  249. package/dist/procedure-client.d.mts +0 -41
  250. package/dist/procedure-client.mjs +0 -157
  251. package/dist/procedure-decorated.d.mts +0 -20
  252. package/dist/procedure-decorated.mjs +0 -41
  253. package/dist/procedure-utils.d.mts +0 -52
  254. package/dist/procedure-utils.mjs +0 -33
  255. package/dist/procedure.d.mts +0 -93
  256. package/dist/procedure.mjs +0 -20
  257. package/dist/router-client.d.mts +0 -27
  258. package/dist/router-client.mjs +0 -35
  259. package/dist/router-hidden.mjs +0 -12
  260. package/dist/router-utils.d.mts +0 -59
  261. package/dist/router-utils.mjs +0 -191
  262. package/dist/router.d.mts +0 -61
  263. /package/dist/adapters/standard/{codec.mjs → codec.js} +0 -0
  264. /package/dist/{builder-variants.mjs → builder-variants.js} +0 -0
  265. /package/dist/{constants.d.mts → constants.d.ts} +0 -0
  266. /package/dist/{constants.mjs → constants.js} +0 -0
  267. /package/dist/{context.mjs → context.js} +0 -0
  268. /package/dist/{middleware.mjs → middleware.js} +0 -0
  269. /package/dist/{router.mjs → router.js} +0 -0
@@ -1,16 +0,0 @@
1
- export * from "./handler.mjs";
2
- export * from "./rpc-handler.mjs";
3
- export type { AnyAPIGatewayProxyEvent, APIGatewayProxyEvent,
4
- /**
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,
10
- /**
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,2 +0,0 @@
1
- export * from "./handler.mjs";
2
- export * from "./rpc-handler.mjs";
@@ -1,18 +0,0 @@
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
- }
@@ -1,10 +0,0 @@
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
- }
@@ -1,41 +0,0 @@
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
- }
@@ -1,38 +0,0 @@
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,2 +0,0 @@
1
- export * from "./handler.mjs";
2
- export * from "./rpc-handler.mjs";
@@ -1,2 +0,0 @@
1
- export * from "./handler.mjs";
2
- export * from "./rpc-handler.mjs";
@@ -1,15 +0,0 @@
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
- }
@@ -1,10 +0,0 @@
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
- }
@@ -1,21 +0,0 @@
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
- }
@@ -1,20 +0,0 @@
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,2 +0,0 @@
1
- export * from "./handler.mjs";
2
- export * from "./rpc-handler.mjs";
@@ -1,2 +0,0 @@
1
- export * from "./handler.mjs";
2
- export * from "./rpc-handler.mjs";
@@ -1,14 +0,0 @@
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
- }
@@ -1,10 +0,0 @@
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
- }
@@ -1,23 +0,0 @@
1
- import type { MaybeOptionalOptions } from "@orpc/shared";
2
- import type { ToFetchResponseOptions } from "@standard-server/fetch";
3
- import type { Context } from "../../context.mjs";
4
- import type { FriendlyStandardHandlerHandleOptions, StandardHandler } from "../standard/index.mjs";
5
- export type FetchHandlerHandleResult = {
6
- matched: true;
7
- response: Response;
8
- } | {
9
- matched: false;
10
- response?: undefined;
11
- };
12
- export interface FetchHandlerOptions<_T extends Context> {
13
- /**
14
- * Options for how to convert the Fetch Response to a Standard Response, like event stream options, etc.
15
- */
16
- toFetchResponse?: ToFetchResponseOptions | undefined;
17
- }
18
- export declare class FetchHandler<T extends Context> {
19
- private readonly standardHandler;
20
- private readonly toFetchResponseOptions;
21
- constructor(standardHandler: StandardHandler<T>, options?: NoInfer<FetchHandlerOptions<T>>);
22
- handle(request: Request, ...rest: MaybeOptionalOptions<FriendlyStandardHandlerHandleOptions<T>>): Promise<FetchHandlerHandleResult>;
23
- }
@@ -1,22 +0,0 @@
1
- import { resolveMaybeOptionalOptions } from "@orpc/shared";
2
- import { toFetchResponse, toStandardLazyRequest } from "@standard-server/fetch";
3
- import { resolveFriendlyStandardHandlerHandleOptions } from "../standard/index.mjs";
4
- export class FetchHandler {
5
- standardHandler;
6
- toFetchResponseOptions;
7
- constructor(standardHandler, options = {}) {
8
- this.standardHandler = standardHandler;
9
- this.toFetchResponseOptions = options.toFetchResponse;
10
- }
11
- async handle(request, ...rest) {
12
- const standardRequest = toStandardLazyRequest(request);
13
- const result = await this.standardHandler.handle(standardRequest, resolveFriendlyStandardHandlerHandleOptions(resolveMaybeOptionalOptions(rest)));
14
- if (!result.matched) {
15
- return result;
16
- }
17
- return {
18
- matched: true,
19
- response: toFetchResponse(result.response, this.toFetchResponseOptions)
20
- };
21
- }
22
- }
@@ -1,7 +0,0 @@
1
- export {
2
- /**
3
- * @deprecated Use `RequestLimitHandlerPlugin` from `@orpc/server/plugins` instead.
4
- */
5
- RequestLimitHandlerPlugin as BodyLimitPlugin } from "../../plugins/request-limit.mjs";
6
- export * from "./handler.mjs";
7
- export * from "./rpc-handler.mjs";
@@ -1,5 +0,0 @@
1
- export {
2
-
3
- RequestLimitHandlerPlugin as BodyLimitPlugin } from "../../plugins/request-limit.mjs";
4
- export * from "./handler.mjs";
5
- export * from "./rpc-handler.mjs";
@@ -1,16 +0,0 @@
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 { FetchHandlerOptions } from "./handler.mjs";
5
- import { FetchHandler } from "./handler.mjs";
6
- export interface RPCHandlerOptions<T extends Context> extends FetchHandlerOptions<T>, StandardHandlerOptions<T>, RPCHandlerCodecOptions<T> {}
7
- /**
8
- * Serves an oRPC router over the RPC protocol using the Fetch API
9
- * (Request/Response), supported by modern runtimes like Deno, Bun,
10
- * Cloudflare Workers, and browsers.
11
- *
12
- * @see {@link https://orpc.dev/docs/adapters/fetch-api | Fetch API Adapter}
13
- */
14
- export declare class RPCHandler<T extends Context> extends FetchHandler<T> {
15
- constructor(router: Router<T>, options?: NoInfer<RPCHandlerOptions<T>>);
16
- }
@@ -1,10 +0,0 @@
1
- import { RPCHandlerCodec, StandardHandler } from "../standard/index.mjs";
2
- import { FetchHandler } from "./handler.mjs";
3
-
4
- export class RPCHandler extends FetchHandler {
5
- constructor(router, options = {}) {
6
- const codec = new RPCHandlerCodec(router, options);
7
- const handler = new StandardHandler(codec, options);
8
- super(handler, options);
9
- }
10
- }
@@ -1,57 +0,0 @@
1
- import type { SupportedMessagePort } from "@orpc/client/message-port";
2
- import type { MaybeOptionalOptions, Promisable, Value } from "@orpc/shared";
3
- import type { DecodePeerMessageOptions, EncodePeerMessageOptions } from "@standard-server/peer";
4
- import type { Context } from "../../context.mjs";
5
- import type { FriendlyStandardHandlerHandleOptions, StandardHandler } from "../standard/index.mjs";
6
- import { ServerPeer } from "@standard-server/peer";
7
- type DecodedResponseMessage = ConstructorParameters<typeof ServerPeer>[0] extends (message: infer TMessage) => unknown ? TMessage : never;
8
- export interface MessagePortHandlerOptions<_T extends Context> {
9
- /**
10
- * By default, oRPC encodes peer messages as strings or binary data before sending them over the message port.
11
- * Use this option to bypass encoding and leverage the full capabilities of the
12
- * [MessagePort: postMessage() method](https://developer.mozilla.org/en-US/docs/Web/API/MessagePort/postMessage),
13
- * such as transferring object ownership or supporting non-serializable objects like `OffscreenCanvas` or improving performance.
14
- *
15
- * @remarks
16
- * **Note**: Returning `null` or `undefined` disables this feature.
17
- * **Warning**: Ensure your message port implementation supports `transferable` objects before enabling this.
18
- */
19
- experimental_transfer?: Value<Promisable<object[] | null | undefined>, [message: DecodedResponseMessage, port: SupportedMessagePort]> | undefined;
20
- /**
21
- * Options for encoding peer messages. such as `prefix` for distinguishing messages on the same channel..
22
- */
23
- encodePeerMessage?: EncodePeerMessageOptions | undefined;
24
- /**
25
- * Options for decoding peer messages. such as `prefix` for distinguishing messages on the same channel..
26
- */
27
- decodePeerMessage?: DecodePeerMessageOptions | undefined;
28
- }
29
- export declare class MessagePortHandler<T extends Context> {
30
- private readonly handler;
31
- private readonly peers;
32
- private readonly transfer;
33
- private readonly encodePeerMessageOptions;
34
- private readonly decodePeerMessageOptions;
35
- constructor(handler: StandardHandler<T>, options?: NoInfer<MessagePortHandlerOptions<T>>);
36
- /**
37
- * Attaches message and close listeners to a message port.
38
- *
39
- * Prefer this over calling `.message()` and `.close()` manually.
40
- */
41
- upgrade(port: SupportedMessagePort, ...rest: MaybeOptionalOptions<FriendlyStandardHandlerHandleOptions<T>>): void;
42
- /**
43
- * Handles a single message received from a message port.
44
- *
45
- * @param port The message port instance. Use the same instance for all messages.
46
- */
47
- message(port: SupportedMessagePort, data: unknown, ...rest: MaybeOptionalOptions<FriendlyStandardHandlerHandleOptions<T>>): Promise<{
48
- matched: boolean;
49
- }>;
50
- /**
51
- * Cleans up peer state for a closed message port.
52
- *
53
- * @param port The same message port instance passed to `.message()`.
54
- */
55
- close(port: SupportedMessagePort): Promise<void>;
56
- }
57
- export {};
@@ -1,62 +0,0 @@
1
- import { onMessagePortClose, onMessagePortMessage, postMessagePortMessage } from "@orpc/client/message-port";
2
- import { resolveMaybeOptionalOptions, value } from "@orpc/shared";
3
- import { decodePeerMessage, encodePeerMessage, isClientPeerSendMessage, isPeerMessage, ServerPeer } from "@standard-server/peer";
4
- import { createStandardPeerRequestHandler } from "../standard-peer/index.mjs";
5
- export class MessagePortHandler {
6
- handler;
7
- peers = new WeakMap();
8
- transfer;
9
- encodePeerMessageOptions;
10
- decodePeerMessageOptions;
11
- constructor(handler, options = {}) {
12
- this.handler = handler;
13
- this.transfer = options.experimental_transfer;
14
- this.encodePeerMessageOptions = options.encodePeerMessage;
15
- this.decodePeerMessageOptions = options.decodePeerMessage;
16
- }
17
-
18
- upgrade(port, ...rest) {
19
-
20
- onMessagePortMessage(port, (message) => this.message(port, message, ...rest));
21
- onMessagePortClose(port, () => this.close(port));
22
- }
23
-
24
- async message(port, data, ...rest) {
25
- let peer = this.peers.get(port);
26
- if (!peer) {
27
- this.peers.set(port, peer = new ServerPeer(async (message) => {
28
- const transfer = await value(this.transfer, message, port);
29
- if (transfer) {
30
- postMessagePortMessage(port, message, transfer);
31
- } else {
32
- postMessagePortMessage(port, await encodePeerMessage(message, this.encodePeerMessageOptions));
33
- }
34
- }));
35
- }
36
- let peerMessage;
37
- if (typeof data === "string" || data instanceof Uint8Array) {
38
-
39
- const result = decodePeerMessage(data, this.decodePeerMessageOptions);
40
- if (result.matched && isClientPeerSendMessage(result.message)) {
41
- peerMessage = result.message;
42
- }
43
- } else if (isPeerMessage(data) && isClientPeerSendMessage(data)) {
44
- peerMessage = data;
45
- }
46
- if (peerMessage === undefined) {
47
- return { matched: false };
48
- }
49
-
50
- await peer.message(peerMessage, createStandardPeerRequestHandler(this.handler, resolveMaybeOptionalOptions(rest)));
51
- return { matched: true };
52
- }
53
-
54
- async close(port) {
55
- const peer = this.peers.get(port);
56
- if (peer) {
57
-
58
- this.peers.delete(port);
59
- await peer.close();
60
- }
61
- }
62
- }
@@ -1,2 +0,0 @@
1
- export * from "./handler.mjs";
2
- export * from "./rpc-handler.mjs";
@@ -1,2 +0,0 @@
1
- export * from "./handler.mjs";
2
- export * from "./rpc-handler.mjs";
@@ -1,15 +0,0 @@
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 { MessagePortHandlerOptions } from "./handler.mjs";
5
- import { MessagePortHandler } from "./handler.mjs";
6
- export interface RPCHandlerOptions<T extends Context> extends StandardHandlerOptions<T>, RPCHandlerCodecOptions<T>, MessagePortHandlerOptions<T> {}
7
- /**
8
- * Serves an oRPC router over the RPC protocol on a message port,
9
- * such as browser extensions, Electron, or worker threads.
10
- *
11
- * @see {@link https://orpc.dev/docs/adapters/message-port | Message Port Adapter}
12
- */
13
- export declare class RPCHandler<T extends Context> extends MessagePortHandler<T> {
14
- constructor(router: Router<T>, options?: NoInfer<RPCHandlerOptions<T>>);
15
- }
@@ -1,10 +0,0 @@
1
- import { RPCHandlerCodec, StandardHandler } from "../standard/index.mjs";
2
- import { MessagePortHandler } from "./handler.mjs";
3
-
4
- export class RPCHandler extends MessagePortHandler {
5
- constructor(router, options = {}) {
6
- const codec = new RPCHandlerCodec(router, options);
7
- const handler = new StandardHandler(codec, options);
8
- super(handler, options);
9
- }
10
- }
@@ -1,21 +0,0 @@
1
- import type { MaybeOptionalOptions } from "@orpc/shared";
2
- import type { NodeHttpRequest, NodeHttpResponse, SendStandardResponseOptions } from "@standard-server/node";
3
- import type { Context } from "../../context.mjs";
4
- import type { FriendlyStandardHandlerHandleOptions, StandardHandler } from "../standard/index.mjs";
5
- export type NodeHttpHandlerHandleResult = {
6
- matched: true;
7
- } | {
8
- matched: false;
9
- };
10
- export interface NodeHttpHandlerOptions<_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 NodeHttpHandler<T extends Context> {
17
- private readonly standardHandler;
18
- private readonly sendStandardResponseOptions;
19
- constructor(standardHandler: StandardHandler<T>, options?: NoInfer<NodeHttpHandlerOptions<T>>);
20
- handle(request: NodeHttpRequest, response: NodeHttpResponse, ...rest: MaybeOptionalOptions<FriendlyStandardHandlerHandleOptions<T>>): Promise<NodeHttpHandlerHandleResult>;
21
- }
@@ -1,20 +0,0 @@
1
- import { resolveMaybeOptionalOptions } from "@orpc/shared";
2
- import { sendStandardResponse, toStandardLazyRequest } from "@standard-server/node";
3
- import { resolveFriendlyStandardHandlerHandleOptions } from "../standard/index.mjs";
4
- export class NodeHttpHandler {
5
- standardHandler;
6
- sendStandardResponseOptions;
7
- constructor(standardHandler, options = {}) {
8
- this.standardHandler = standardHandler;
9
- this.sendStandardResponseOptions = options.sendStandardResponse;
10
- }
11
- async handle(request, response, ...rest) {
12
- const standardRequest = toStandardLazyRequest(request, response);
13
- const result = await this.standardHandler.handle(standardRequest, resolveFriendlyStandardHandlerHandleOptions(resolveMaybeOptionalOptions(rest)));
14
- if (!result.matched) {
15
- return result;
16
- }
17
- await sendStandardResponse(response, result.response, this.sendStandardResponseOptions);
18
- return result;
19
- }
20
- }
@@ -1,7 +0,0 @@
1
- export {
2
- /**
3
- * @deprecated Use `RequestLimitHandlerPlugin` from `@orpc/server/plugins` instead.
4
- */
5
- RequestLimitHandlerPlugin as BodyLimitPlugin } from "../../plugins/request-limit.mjs";
6
- export * from "./handler.mjs";
7
- export * from "./rpc-handler.mjs";
@@ -1,5 +0,0 @@
1
- export {
2
-
3
- RequestLimitHandlerPlugin as BodyLimitPlugin } from "../../plugins/request-limit.mjs";
4
- export * from "./handler.mjs";
5
- export * from "./rpc-handler.mjs";
@@ -1,15 +0,0 @@
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 { NodeHttpHandlerOptions } from "./handler.mjs";
5
- import { NodeHttpHandler } from "./handler.mjs";
6
- export interface RPCHandlerOptions<T extends Context> extends NodeHttpHandlerOptions<T>, StandardHandlerOptions<T>, RPCHandlerCodecOptions<T> {}
7
- /**
8
- * Serves an oRPC router over the RPC protocol using Node.js built-in
9
- * HTTP request/response objects.
10
- *
11
- * @see {@link https://orpc.dev/docs/adapters/node-http | Node HTTP Adapter}
12
- */
13
- export declare class RPCHandler<T extends Context> extends NodeHttpHandler<T> {
14
- constructor(router: Router<T>, options?: NoInfer<RPCHandlerOptions<T>>);
15
- }
@@ -1,10 +0,0 @@
1
- import { RPCHandlerCodec, StandardHandler } from "../standard/index.mjs";
2
- import { NodeHttpHandler } from "./handler.mjs";
3
-
4
- export class RPCHandler extends NodeHttpHandler {
5
- constructor(router, options = {}) {
6
- const codec = new RPCHandlerCodec(router, options);
7
- const handler = new StandardHandler(codec, options);
8
- super(handler, options);
9
- }
10
- }
@@ -1,16 +0,0 @@
1
- import type { AnyORPCError } from "@orpc/client";
2
- import type { Promisable } from "@orpc/shared";
3
- import type { StandardLazyRequest, StandardResponse } from "@standard-server/core";
4
- import type { Context } from "../../context.mjs";
5
- import type { AnyProcedure } from "../../procedure.mjs";
6
- import type { ResolvedStandardHandlerHandleOptions } from "./handler.mjs";
7
- export interface StandardHandlerCodecResolvedProcedure {
8
- path: string[];
9
- procedure: AnyProcedure;
10
- decodeInput: () => Promise<unknown>;
11
- }
12
- export interface StandardHandlerCodec<T extends Context> {
13
- resolveProcedure(request: StandardLazyRequest, options: ResolvedStandardHandlerHandleOptions<T>): Promisable<StandardHandlerCodecResolvedProcedure | undefined>;
14
- encodeOutput(output: unknown, procedure: AnyProcedure, path: string[], options: ResolvedStandardHandlerHandleOptions<T>): Promisable<StandardResponse>;
15
- encodeError(error: AnyORPCError, procedure: AnyProcedure, path: string[], options: ResolvedStandardHandlerHandleOptions<T>): Promisable<StandardResponse>;
16
- }