@orpc/server 2.0.0-beta.47 → 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 (178) hide show
  1. package/README.md +6 -7
  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 +10 -45
  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 -63
  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 -42
  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 +5 -45
  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/{index.d.mts → handler.d.ts} +17 -30
  27. package/dist/adapters/message-port/handler.js +86 -0
  28. package/dist/adapters/message-port/index.d.ts +2 -77
  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 +5 -42
  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/codec.js +1 -0
  40. package/dist/adapters/standard/handler.d.ts +68 -0
  41. package/dist/adapters/standard/handler.js +205 -0
  42. package/dist/adapters/standard/index.d.ts +6 -95
  43. package/dist/adapters/standard/index.js +5 -0
  44. package/dist/adapters/standard/plugin.d.ts +32 -0
  45. package/dist/adapters/standard/plugin.js +16 -0
  46. package/dist/adapters/standard/rpc-handler-codec.d.ts +46 -0
  47. package/dist/adapters/standard/rpc-handler-codec.js +51 -0
  48. package/dist/adapters/standard/rpc-matcher.d.ts +53 -0
  49. package/dist/adapters/standard/rpc-matcher.js +152 -0
  50. package/dist/adapters/standard/utils.d.ts +10 -0
  51. package/dist/adapters/standard/utils.js +6 -0
  52. package/dist/adapters/standard-peer/index.d.ts +1 -11
  53. package/dist/adapters/standard-peer/index.js +1 -0
  54. package/dist/adapters/standard-peer/utils.d.ts +4 -0
  55. package/dist/adapters/standard-peer/utils.js +7 -0
  56. package/dist/adapters/websocket/{index.d.mts → handler.d.ts} +11 -29
  57. package/dist/adapters/websocket/handler.js +85 -0
  58. package/dist/adapters/websocket/index.d.ts +2 -77
  59. package/dist/adapters/websocket/index.js +2 -0
  60. package/dist/adapters/websocket/rpc-handler.d.ts +16 -0
  61. package/dist/adapters/websocket/rpc-handler.js +15 -0
  62. package/dist/builder-variants.d.ts +226 -0
  63. package/dist/builder-variants.js +1 -0
  64. package/dist/builder.d.ts +127 -0
  65. package/dist/builder.js +226 -0
  66. package/dist/constants.d.ts +2 -0
  67. package/dist/constants.js +2 -0
  68. package/dist/context.d.ts +6 -0
  69. package/dist/context.js +1 -0
  70. package/dist/extensions/callable.d.ts +6 -5
  71. package/dist/extensions/callable.js +7 -0
  72. package/dist/helpers/base64url.d.ts +31 -0
  73. package/dist/helpers/base64url.js +53 -0
  74. package/dist/helpers/cookie.d.ts +51 -0
  75. package/dist/helpers/cookie.js +69 -0
  76. package/dist/helpers/encryption.d.ts +28 -0
  77. package/dist/helpers/encryption.js +80 -0
  78. package/dist/helpers/index.d.ts +4 -167
  79. package/dist/helpers/index.js +4 -0
  80. package/dist/helpers/signing.d.ts +50 -0
  81. package/dist/helpers/signing.js +88 -0
  82. package/dist/implementer-procedure.d.ts +16 -0
  83. package/dist/implementer-procedure.js +44 -0
  84. package/dist/implementer-router.d.ts +40 -0
  85. package/dist/implementer-router.js +117 -0
  86. package/dist/implementer.d.ts +16 -0
  87. package/dist/implementer.js +37 -0
  88. package/dist/index.d.ts +45 -460
  89. package/dist/index.js +48 -0
  90. package/dist/lazy.d.ts +20 -0
  91. package/dist/lazy.js +31 -0
  92. package/dist/middleware-decorated.d.ts +10 -0
  93. package/dist/middleware-decorated.js +71 -0
  94. package/dist/middleware.d.ts +54 -0
  95. package/dist/middleware.js +1 -0
  96. package/dist/plugins/batch.d.ts +102 -0
  97. package/dist/plugins/batch.js +405 -0
  98. package/dist/plugins/cors.d.ts +73 -0
  99. package/dist/plugins/cors.js +112 -0
  100. package/dist/plugins/get-method-csrf-protection.d.ts +23 -0
  101. package/dist/plugins/get-method-csrf-protection.js +64 -0
  102. package/dist/plugins/head-method.d.ts +23 -0
  103. package/dist/plugins/head-method.js +104 -0
  104. package/dist/plugins/index.d.ts +29 -422
  105. package/dist/plugins/index.js +29 -0
  106. package/dist/plugins/method-override.d.ts +38 -0
  107. package/dist/plugins/method-override.js +50 -0
  108. package/dist/plugins/request-compression.d.ts +16 -0
  109. package/dist/plugins/request-compression.js +82 -0
  110. package/dist/plugins/request-headers.d.ts +22 -0
  111. package/dist/plugins/request-headers.js +30 -0
  112. package/dist/{shared/server.CgBF3Vj1.d.ts → plugins/request-limit.d.ts} +4 -8
  113. package/dist/plugins/request-limit.js +68 -0
  114. package/dist/plugins/response-compression.d.ts +59 -0
  115. package/dist/plugins/response-compression.js +209 -0
  116. package/dist/plugins/response-headers.d.ts +30 -0
  117. package/dist/plugins/response-headers.js +47 -0
  118. package/dist/plugins/rethrow.d.ts +33 -0
  119. package/dist/plugins/rethrow.js +59 -0
  120. package/dist/plugins/signal-sync.d.ts +13 -0
  121. package/dist/plugins/signal-sync.js +91 -0
  122. package/dist/plugins/timeout.d.ts +37 -0
  123. package/dist/plugins/timeout.js +59 -0
  124. package/dist/procedure-client.d.ts +19 -0
  125. package/dist/procedure-client.js +175 -0
  126. package/dist/procedure-decorated.d.ts +10 -0
  127. package/dist/procedure-decorated.js +44 -0
  128. package/dist/procedure-utils.d.ts +41 -0
  129. package/dist/procedure-utils.js +49 -0
  130. package/dist/procedure.d.ts +72 -0
  131. package/dist/procedure.js +24 -0
  132. package/dist/router-client.d.ts +23 -0
  133. package/dist/router-client.js +43 -0
  134. package/dist/router-hidden.d.ts +5 -0
  135. package/dist/router-hidden.js +14 -0
  136. package/dist/router-utils.d.ts +48 -0
  137. package/dist/router-utils.js +202 -0
  138. package/dist/{shared/server.Dz7j9BEh.d.ts → router.d.ts} +14 -15
  139. package/dist/router.js +1 -0
  140. package/package.json +84 -86
  141. package/dist/adapters/aws-lambda/index.d.mts +0 -51
  142. package/dist/adapters/aws-lambda/index.mjs +0 -39
  143. package/dist/adapters/crossws/index.d.mts +0 -63
  144. package/dist/adapters/crossws/index.mjs +0 -68
  145. package/dist/adapters/fastify/index.d.mts +0 -42
  146. package/dist/adapters/fastify/index.mjs +0 -39
  147. package/dist/adapters/fetch/index.d.mts +0 -47
  148. package/dist/adapters/fetch/index.mjs +0 -42
  149. package/dist/adapters/message-port/index.mjs +0 -87
  150. package/dist/adapters/node/index.d.mts +0 -44
  151. package/dist/adapters/node/index.mjs +0 -41
  152. package/dist/adapters/standard/index.d.mts +0 -95
  153. package/dist/adapters/standard/index.mjs +0 -8
  154. package/dist/adapters/standard-peer/index.d.mts +0 -11
  155. package/dist/adapters/standard-peer/index.mjs +0 -10
  156. package/dist/adapters/websocket/index.mjs +0 -87
  157. package/dist/extensions/callable.d.mts +0 -10
  158. package/dist/extensions/callable.mjs +0 -11
  159. package/dist/helpers/index.d.mts +0 -167
  160. package/dist/helpers/index.mjs +0 -200
  161. package/dist/index.d.mts +0 -476
  162. package/dist/index.mjs +0 -463
  163. package/dist/plugins/index.d.mts +0 -432
  164. package/dist/plugins/index.mjs +0 -965
  165. package/dist/shared/server.1ExWFMze.mjs +0 -69
  166. package/dist/shared/server.9B1jEm5a.d.mts +0 -105
  167. package/dist/shared/server.BB464y-6.mjs +0 -207
  168. package/dist/shared/server.BC5BIu02.d.mts +0 -73
  169. package/dist/shared/server.BSYGskId.d.ts +0 -14
  170. package/dist/shared/server.BvG3boBj.d.mts +0 -14
  171. package/dist/shared/server.CTV_mC2P.d.mts +0 -34
  172. package/dist/shared/server.CYbIpHbH.mjs +0 -239
  173. package/dist/shared/server.Chq5FpXf.mjs +0 -353
  174. package/dist/shared/server.DFPxP2v3.d.mts +0 -166
  175. package/dist/shared/server.DFPxP2v3.d.ts +0 -166
  176. package/dist/shared/server.DOg7ke6y.d.ts +0 -105
  177. package/dist/shared/server.W91HSRkE.mjs +0 -9
  178. package/dist/shared/server.sBQSgqK3.mjs +0 -41
@@ -1,87 +0,0 @@
1
- import { onMessagePortMessage, onMessagePortClose, postMessagePortMessage } from '@orpc/client/message-port';
2
- import { value, resolveMaybeOptionalOptions } from '@orpc/shared';
3
- import { ServerPeer, encodePeerMessage, decodePeerMessage, isClientPeerSendMessage, isPeerMessage } from '@standard-server/peer';
4
- import { createStandardPeerRequestHandler } from '../standard-peer/index.mjs';
5
- import { R as RPCHandlerCodec, S as StandardHandler } from '../../shared/server.Chq5FpXf.mjs';
6
- import '../../shared/server.W91HSRkE.mjs';
7
- import '@orpc/client';
8
- import '@standard-server/core';
9
- import '../../shared/server.BB464y-6.mjs';
10
- import '@orpc/contract';
11
- import '../../shared/server.CYbIpHbH.mjs';
12
-
13
- class MessagePortHandler {
14
- constructor(handler, options = {}) {
15
- this.handler = handler;
16
- this.transfer = options.experimental_transfer;
17
- this.encodePeerMessageOptions = options.encodePeerMessage;
18
- this.decodePeerMessageOptions = options.decodePeerMessage;
19
- }
20
- peers = /* @__PURE__ */ new WeakMap();
21
- transfer;
22
- encodePeerMessageOptions;
23
- decodePeerMessageOptions;
24
- /**
25
- * Attaches message and close listeners to a message port.
26
- *
27
- * Prefer this over calling `.message()` and `.close()` manually.
28
- */
29
- upgrade(port, ...rest) {
30
- onMessagePortMessage(port, (message) => this.message(port, message, ...rest));
31
- onMessagePortClose(port, () => this.close(port));
32
- }
33
- /**
34
- * Handles a single message received from a message port.
35
- *
36
- * @param port The message port instance. Use the same instance for all messages.
37
- */
38
- async message(port, data, ...rest) {
39
- let peer = this.peers.get(port);
40
- if (!peer) {
41
- this.peers.set(port, peer = new ServerPeer(async (message) => {
42
- const transfer = await value(this.transfer, message, port);
43
- if (transfer) {
44
- postMessagePortMessage(port, message, transfer);
45
- } else {
46
- postMessagePortMessage(port, await encodePeerMessage(message, this.encodePeerMessageOptions));
47
- }
48
- }));
49
- }
50
- let peerMessage;
51
- if (typeof data === "string" || data instanceof Uint8Array) {
52
- const result = decodePeerMessage(data, this.decodePeerMessageOptions);
53
- if (result.matched && isClientPeerSendMessage(result.message)) {
54
- peerMessage = result.message;
55
- }
56
- } else if (isPeerMessage(data) && isClientPeerSendMessage(data)) {
57
- peerMessage = data;
58
- }
59
- if (peerMessage === void 0) {
60
- return { matched: false };
61
- }
62
- await peer.message(peerMessage, createStandardPeerRequestHandler(this.handler, resolveMaybeOptionalOptions(rest)));
63
- return { matched: true };
64
- }
65
- /**
66
- * Cleans up peer state for a closed message port.
67
- *
68
- * @param port The same message port instance passed to `.message()`.
69
- */
70
- async close(port) {
71
- const peer = this.peers.get(port);
72
- if (peer) {
73
- this.peers.delete(port);
74
- await peer.close();
75
- }
76
- }
77
- }
78
-
79
- class RPCHandler extends MessagePortHandler {
80
- constructor(router, options = {}) {
81
- const codec = new RPCHandlerCodec(router, options);
82
- const handler = new StandardHandler(codec, options);
83
- super(handler, options);
84
- }
85
- }
86
-
87
- export { MessagePortHandler, RPCHandler };
@@ -1,44 +0,0 @@
1
- export { R as BodyLimitPlugin } from '../../shared/server.CTV_mC2P.mjs';
2
- import { MaybeOptionalOptions } from '@orpc/shared';
3
- import { SendStandardResponseOptions, NodeHttpRequest, NodeHttpResponse } from '@standard-server/node';
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 NodeHttpHandlerHandleResult = {
14
- matched: true;
15
- } | {
16
- matched: false;
17
- };
18
- interface NodeHttpHandlerOptions<_T extends Context> {
19
- /**
20
- * Custom options for `sendStandardResponse`, used to send a `Standard Response`
21
- */
22
- sendStandardResponse?: SendStandardResponseOptions | undefined;
23
- }
24
- declare class NodeHttpHandler<T extends Context> {
25
- private readonly standardHandler;
26
- private readonly sendStandardResponseOptions;
27
- constructor(standardHandler: StandardHandler<T>, options?: NoInfer<NodeHttpHandlerOptions<T>>);
28
- handle(request: NodeHttpRequest, response: NodeHttpResponse, ...rest: MaybeOptionalOptions<FriendlyStandardHandlerHandleOptions<T>>): Promise<NodeHttpHandlerHandleResult>;
29
- }
30
-
31
- interface RPCHandlerOptions<T extends Context> extends NodeHttpHandlerOptions<T>, StandardHandlerOptions<T>, RPCHandlerCodecOptions<T> {
32
- }
33
- /**
34
- * Serves an oRPC router over the RPC protocol using Node.js built-in
35
- * HTTP request/response objects.
36
- *
37
- * @see {@link https://orpc.dev/docs/adapters/node-http | Node HTTP Adapter}
38
- */
39
- declare class RPCHandler<T extends Context> extends NodeHttpHandler<T> {
40
- constructor(router: Router<T>, options?: NoInfer<RPCHandlerOptions<T>>);
41
- }
42
-
43
- export { NodeHttpHandler, RPCHandler };
44
- export type { NodeHttpHandlerHandleResult, NodeHttpHandlerOptions, RPCHandlerOptions };
@@ -1,41 +0,0 @@
1
- export { R as BodyLimitPlugin } from '../../shared/server.1ExWFMze.mjs';
2
- import { resolveMaybeOptionalOptions } from '@orpc/shared';
3
- import { toStandardLazyRequest, sendStandardResponse } from '@standard-server/node';
4
- import { r as resolveFriendlyStandardHandlerHandleOptions } from '../../shared/server.W91HSRkE.mjs';
5
- import { R as RPCHandlerCodec, S as StandardHandler } from '../../shared/server.Chq5FpXf.mjs';
6
- import '@orpc/client';
7
- import '@standard-server/core';
8
- import '@standard-server/fetch';
9
- import '../../shared/server.BB464y-6.mjs';
10
- import '@orpc/contract';
11
- import '../../shared/server.CYbIpHbH.mjs';
12
-
13
- class NodeHttpHandler {
14
- constructor(standardHandler, options = {}) {
15
- this.standardHandler = standardHandler;
16
- this.sendStandardResponseOptions = options.sendStandardResponse;
17
- }
18
- sendStandardResponseOptions;
19
- async handle(request, response, ...rest) {
20
- const standardRequest = toStandardLazyRequest(request, response);
21
- const result = await this.standardHandler.handle(
22
- standardRequest,
23
- resolveFriendlyStandardHandlerHandleOptions(resolveMaybeOptionalOptions(rest))
24
- );
25
- if (!result.matched) {
26
- return result;
27
- }
28
- await sendStandardResponse(response, result.response, this.sendStandardResponseOptions);
29
- return result;
30
- }
31
- }
32
-
33
- class RPCHandler extends NodeHttpHandler {
34
- constructor(router, options = {}) {
35
- const codec = new RPCHandlerCodec(router, options);
36
- const handler = new StandardHandler(codec, options);
37
- super(handler, options);
38
- }
39
- }
40
-
41
- export { NodeHttpHandler, RPCHandler };
@@ -1,95 +0,0 @@
1
- import { R as ResolvedStandardHandlerHandleOptions, f as StandardHandlerCodec, g as StandardHandlerCodecResolvedProcedure } from '../../shared/server.9B1jEm5a.mjs';
2
- export { S as StandardHandler, a as StandardHandlerHandleOptions, h as StandardHandlerHandleResult, i as StandardHandlerInterceptor, e as StandardHandlerInterceptorOptions, c as StandardHandlerOptions, b as StandardHandlerPlugin, j as StandardHandlerRoutingInterceptor, d as StandardHandlerRoutingInterceptorOptions } from '../../shared/server.9B1jEm5a.mjs';
3
- import { RPCSerializer, AnyORPCError } from '@orpc/client';
4
- import { Value, Public, Promisable } from '@orpc/shared';
5
- import { StandardMethod, StandardLazyRequest, StandardResponse } from '@standard-server/core';
6
- import { AnyProcedure, Context } from '../../index.mjs';
7
- import { AnyRouter } from '../../index.mjs';
8
- import { AnyProcedureContract } from '@orpc/contract';
9
- export { F as FriendlyStandardHandlerHandleOptions, r as resolveFriendlyStandardHandlerHandleOptions } from '../../shared/server.BvG3boBj.mjs';
10
-
11
- /**
12
- * Methods that can invoke procedures by default. Browsers cannot trigger them
13
- * cross-site without a CORS preflight or an HTML form, unlike `GET`, which a plain
14
- * `<a>` click or redirect can trigger with `SameSite=Lax` cookies attached. Other
15
- * methods (`HEAD`, `OPTIONS`, `QUERY`, ...) have safe semantics that should not
16
- * invoke a procedure that can modify data.
17
- *
18
- * @see {@link https://orpc.dev/docs/rpc/handler#supported-http-methods | RPC Handler - Supported HTTP Methods}
19
- */
20
- declare const RPC_DEFAULT_ALLOW_METHODS: readonly StandardMethod[];
21
- interface RPCMatcherOptions {
22
- /**
23
- * Filter which procedures are exposed for matching. Return `false` to exclude.
24
- *
25
- * @default true
26
- */
27
- filter?: Value<boolean, [procedure: AnyProcedureContract | AnyProcedure, path: string[]]> | undefined;
28
- /**
29
- * Restricts which HTTP methods can invoke procedures, either with a list of allowed
30
- * methods or decided per request via a function. Requests using a disallowed method
31
- * are treated as unmatched. `GET` is excluded by default because it is exposed to
32
- * Cross-Site Request Forgery (CSRF) attacks.
33
- *
34
- * @default RPC_DEFAULT_ALLOW_METHODS (['POST', 'PUT', 'PATCH', 'DELETE'])
35
- * @see {@link https://orpc.dev/docs/rpc/handler#supported-http-methods | RPC Handler - Supported HTTP Methods}
36
- */
37
- allowMethods?: readonly StandardMethod[] | ((method: StandardMethod, procedure: AnyProcedure, path: string[]) => boolean) | undefined;
38
- }
39
- declare class RPCMatcher {
40
- private readonly filter;
41
- private readonly allowMethodsSet;
42
- private readonly allowMethodsFn;
43
- private readonly rootRouter;
44
- private readonly tree;
45
- private readonly pendingLazyRouters;
46
- /** segment count of the deepest pending key, never lowered so it stays an upper bound */
47
- private maxPendingLazyRouterDepth;
48
- constructor(router: AnyRouter, options?: RPCMatcherOptions);
49
- private index;
50
- match(method: StandardMethod, pathname: `/${string}`, prefix: `/${string}` | undefined): Promise<{
51
- path: string[];
52
- procedure: AnyProcedure;
53
- } | undefined>;
54
- private resolvePendingLazyRouters;
55
- private loadPendingLazyRouter;
56
- private indexPendingLazyRouter;
57
- private resolveProcedure;
58
- }
59
-
60
- interface RPCHandlerCodecOptions<T extends Context> extends RPCMatcherOptions {
61
- /**
62
- * Override the default RPC serializer.
63
- */
64
- serializer?: Public<RPCSerializer> | undefined;
65
- /**
66
- * Resolve HTTP status for encoded successful outputs.
67
- *
68
- * Value should be in the `2xx` range and must be less than `400`.
69
- * Return `undefined` or `null` to fallback to default
70
- *
71
- * @default DEFAULT_SUCCESS_STATUS (200)
72
- */
73
- outputStatus?: Value<number | undefined | null, [output: unknown, procedure: AnyProcedure, path: string[], options: ResolvedStandardHandlerHandleOptions<T>]> | undefined;
74
- /**
75
- * Mapping ORPCError Code -> HTTP Status Code
76
- * The status code should be in the `4xx` or `5xx` range (must be greater than or equal to `400`).
77
- * Codes missing from the map fall back to `DEFAULT_ERROR_STATUS` (400).
78
- *
79
- * @default COMMON_ERROR_STATUS_MAP
80
- */
81
- errorStatusMap?: Record<string, number> | undefined;
82
- }
83
- declare class RPCHandlerCodec<T extends Context> implements StandardHandlerCodec<T> {
84
- private readonly matcher;
85
- private readonly serializer;
86
- private readonly errorStatusMap;
87
- private readonly outputStatus;
88
- constructor(router: AnyRouter, options?: RPCHandlerCodecOptions<T>);
89
- resolveProcedure(request: StandardLazyRequest, options: ResolvedStandardHandlerHandleOptions<T>): Promise<StandardHandlerCodecResolvedProcedure | undefined>;
90
- encodeOutput(output: unknown, procedure: AnyProcedure, path: string[], options: ResolvedStandardHandlerHandleOptions<T>): Promisable<StandardResponse>;
91
- encodeError(error: AnyORPCError, _procedure: AnyProcedure, _path: string[], _options: ResolvedStandardHandlerHandleOptions<T>): Promisable<StandardResponse>;
92
- }
93
-
94
- export { RPCHandlerCodec, RPCMatcher, RPC_DEFAULT_ALLOW_METHODS, ResolvedStandardHandlerHandleOptions, StandardHandlerCodec, StandardHandlerCodecResolvedProcedure };
95
- export type { RPCHandlerCodecOptions, RPCMatcherOptions };
@@ -1,8 +0,0 @@
1
- export { R as RPCHandlerCodec, a as RPCMatcher, b as RPC_DEFAULT_ALLOW_METHODS, S as StandardHandler } from '../../shared/server.Chq5FpXf.mjs';
2
- export { r as resolveFriendlyStandardHandlerHandleOptions } from '../../shared/server.W91HSRkE.mjs';
3
- import '@orpc/client';
4
- import '@orpc/shared';
5
- import '@standard-server/core';
6
- import '../../shared/server.BB464y-6.mjs';
7
- import '@orpc/contract';
8
- import '../../shared/server.CYbIpHbH.mjs';
@@ -1,11 +0,0 @@
1
- import { StandardLazyRequest, StandardResponse } from '@standard-server/core';
2
- import { Context } from '../../index.mjs';
3
- import { StandardHandler } from '../standard/index.mjs';
4
- import { FriendlyStandardHandlerHandleOptions } from '../standard/index.mjs';
5
- import '@orpc/client';
6
- import '@orpc/contract';
7
- import '@orpc/shared';
8
-
9
- declare function createStandardPeerRequestHandler<T extends Context>(handler: StandardHandler<T>, options: FriendlyStandardHandlerHandleOptions<T>): (request: StandardLazyRequest) => Promise<StandardResponse>;
10
-
11
- export { createStandardPeerRequestHandler };
@@ -1,10 +0,0 @@
1
- import { r as resolveFriendlyStandardHandlerHandleOptions } from '../../shared/server.W91HSRkE.mjs';
2
-
3
- function createStandardPeerRequestHandler(handler, options) {
4
- return async (request) => {
5
- const { response } = await handler.handle(request, resolveFriendlyStandardHandlerHandleOptions(options));
6
- return response ?? { status: 404, headers: {}, body: "No procedure matched" };
7
- };
8
- }
9
-
10
- export { createStandardPeerRequestHandler };
@@ -1,87 +0,0 @@
1
- import { toStringOrBytes, resolveMaybeOptionalOptions, sequential, loadBytes } from '@orpc/shared';
2
- import { ServerPeer, encodePeerMessage, decodePeerMessage, isClientPeerSendMessage } from '@standard-server/peer';
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 WebSocketHandler {
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
- * To avoid async Blob reads, configure `ws.binaryType` to return binary data
28
- * directly (for example, `arraybuffer`).
29
- *
30
- * @param ws The WebSocket instance. Use the same instance for all messages.
31
- * @param data The received message. Binary data should already be loaded (not a `Blob`).
32
- */
33
- async message(ws, data, ...rest) {
34
- let peer = this.peers.get(ws);
35
- if (!peer) {
36
- this.peers.set(ws, peer = new ServerPeer(async (message) => {
37
- const encoded2 = await encodePeerMessage(message, this.encodePeerMessageOptions);
38
- await ws.send(encoded2);
39
- }));
40
- }
41
- const encoded = toStringOrBytes(data);
42
- const result = decodePeerMessage(encoded, this.decodePeerMessageOptions);
43
- if (result.matched && isClientPeerSendMessage(result.message)) {
44
- await peer.message(
45
- result.message,
46
- createStandardPeerRequestHandler(this.handler, resolveMaybeOptionalOptions(rest))
47
- );
48
- }
49
- return result;
50
- }
51
- /**
52
- * Cleans up peer state for a closed WebSocket.
53
- *
54
- * @param ws The same WebSocket instance passed to `.message()`.
55
- */
56
- async close(ws) {
57
- const peer = this.peers.get(ws);
58
- if (peer) {
59
- this.peers.delete(ws);
60
- await peer.close();
61
- }
62
- }
63
- /**
64
- * Attaches message, close, and error event listeners to a WebSocket.
65
- *
66
- * Prefer this over calling `.message()` and `.close()` manually.
67
- */
68
- upgrade(ws, ...rest) {
69
- ws.addEventListener("message", sequential(async (event) => {
70
- const data = event.data instanceof Blob ? await loadBytes(event.data) : event.data;
71
- this.message(ws, data, ...rest);
72
- }));
73
- ws.addEventListener("close", () => this.close(ws));
74
- ws.addEventListener("error", () => {
75
- });
76
- }
77
- }
78
-
79
- class RPCHandler extends WebSocketHandler {
80
- constructor(router, options = {}) {
81
- const codec = new RPCHandlerCodec(router, options);
82
- const handler = new StandardHandler(codec, options);
83
- super(handler, options);
84
- }
85
- }
86
-
87
- export { RPCHandler, WebSocketHandler };
@@ -1,10 +0,0 @@
1
- import { ClientContext } from '@orpc/client';
2
- import { AnySchema, ErrorMap } from '@orpc/contract';
3
- import { MaybeOptionalOptions } from '@orpc/shared';
4
- import { Context, ProcedureClientOptions, Procedure, ProcedureClient } from '../index.mjs';
5
-
6
- declare module '@orpc/server' {
7
- interface DecoratedProcedure<TInitialContext extends Context, TInjectedContext extends Context, TInputSchema extends AnySchema, TOutputSchema extends AnySchema, TErrorMap extends ErrorMap> {
8
- callable<TClientContext extends ClientContext>(...rest: MaybeOptionalOptions<ProcedureClientOptions<TInitialContext, TOutputSchema, TErrorMap, TClientContext>>): Procedure<TInitialContext, TInjectedContext, TInputSchema, TOutputSchema, TErrorMap> & ProcedureClient<TClientContext, TInputSchema, TOutputSchema, TErrorMap>;
9
- }
10
- }
@@ -1,11 +0,0 @@
1
- import { c as createProcedureClient } from '../shared/server.BB464y-6.mjs';
2
- import { D as DecoratedProcedure } from '../shared/server.sBQSgqK3.mjs';
3
- import '@orpc/client';
4
- import '@orpc/contract';
5
- import '@orpc/shared';
6
-
7
- DecoratedProcedure.prototype.callable = function callable(...rest) {
8
- const callable2 = createProcedureClient(this, ...rest);
9
- callable2["~orpc"] = this["~orpc"];
10
- return callable2;
11
- };
@@ -1,167 +0,0 @@
1
- import { ParseOptions, SetCookie, StringifyOptions } from 'cookie';
2
-
3
- /**
4
- * Encodes a Uint8Array to base64url format
5
- * Base64url is URL-safe and doesn't use padding
6
- *
7
- * @example
8
- * ```ts
9
- * const text = "Hello World"
10
- * const encoded = encodeBase64url(new TextEncoder().encode(text))
11
- * const decoded = decodeBase64url(encoded)
12
- * expect(new TextDecoder().decode(decoded)).toEqual(text)
13
- * ```
14
- *
15
- * @see {@link https://orpc.dev/docs/helpers/base64url | Base64Url Helpers}
16
- */
17
- declare function encodeBase64url(data: Uint8Array): string;
18
- /**
19
- * Decodes a base64url string to Uint8Array
20
- * Only accepts canonical, unpadded base64url (the form produced by `encodeBase64url`),
21
- * returns undefined for anything else, including padded or standard base64 input
22
- *
23
- * @example
24
- * ```ts
25
- * const text = "Hello World"
26
- * const encoded = encodeBase64url(new TextEncoder().encode(text))
27
- * const decoded = decodeBase64url(encoded)
28
- * expect(new TextDecoder().decode(decoded)).toEqual(text)
29
- * ```
30
- *
31
- * @see {@link https://orpc.dev/docs/helpers/base64url | Base64Url Helpers}
32
- */
33
- declare function decodeBase64url(base64url: string | undefined | null): Uint8Array<ArrayBuffer> | undefined;
34
-
35
- interface SetCookieOptions extends Omit<SetCookie, 'name' | 'value'>, StringifyOptions {
36
- /**
37
- * Specifies the value for the [`Path` `Set-Cookie` attribute](https://tools.ietf.org/html/rfc6265#section-5.2.4).
38
- *
39
- * @default '/'
40
- */
41
- path?: string;
42
- }
43
- /**
44
- * Sets a cookie in the response headers.
45
- *
46
- * Does nothing if `headers` is `undefined`.
47
- *
48
- * @example
49
- * ```ts
50
- * const headers = new Headers()
51
- *
52
- * setCookie(headers, 'sessionId', 'abc123', { httpOnly: true, maxAge: 3600 })
53
- *
54
- * expect(headers.get('Set-Cookie')).toBe('sessionId=abc123; Max-Age=3600; Path=/; HttpOnly')
55
- * ```
56
- *
57
- * @see {@link https://orpc.dev/docs/helpers/cookie | Cookie Helpers}
58
- */
59
- declare function setCookie(headers: Headers | undefined, name: string, value: string, options?: SetCookieOptions): void;
60
- interface GetCookieOptions extends ParseOptions {
61
- }
62
- /**
63
- * Gets a cookie value from request headers
64
- *
65
- * Returns `undefined` if the cookie is not found or headers are `undefined`.
66
- *
67
- * @example
68
- * ```ts
69
- * const headers = new Headers({ 'Cookie': 'sessionId=abc123; theme=dark' })
70
- *
71
- * const sessionId = getCookie(headers, 'sessionId')
72
- *
73
- * expect(sessionId).toEqual('abc123')
74
- * ```
75
- *
76
- * @see {@link https://orpc.dev/docs/helpers/cookie | Cookie Helpers}
77
- */
78
- declare function getCookie(headers: Headers | undefined, name: string, options?: GetCookieOptions): string | undefined;
79
- /**
80
- * Deletes a cookie by marking it expired.
81
- *
82
- * @see {@link https://orpc.dev/docs/helpers/cookie | Cookie Helpers}
83
- */
84
- declare function deleteCookie(headers: Headers | undefined, name: string, options?: Omit<SetCookieOptions, 'maxAge'>): void;
85
-
86
- /**
87
- * Encrypts a string using AES-GCM with a secret key.
88
- * The output is base64url encoded to be URL-safe.
89
- *
90
- * @example
91
- * ```ts
92
- * const encrypted = await encrypt("Hello, World!", "test-secret-key")
93
- * const decrypted = await decrypt(encrypted, "test-secret-key")
94
- * expect(decrypted).toBe("Hello, World!")
95
- * ```
96
- *
97
- * @see {@link https://orpc.dev/docs/helpers/encryption | Encryption Helpers}
98
- */
99
- declare function encrypt(value: string, secret: string): Promise<string>;
100
- /**
101
- * Decrypts a base64url encoded string using AES-GCM with a secret key.
102
- * Returns the original string if decryption is successful, or undefined if it fails.
103
- *
104
- * @example
105
- * ```ts
106
- * const encrypted = await encrypt("Hello, World!", "test-secret-key")
107
- * const decrypted = await decrypt(encrypted, "test-secret-key")
108
- * expect(decrypted).toBe("Hello, World!")
109
- * ```
110
- *
111
- * @see {@link https://orpc.dev/docs/helpers/encryption | Encryption Helpers}
112
- */
113
- declare function decrypt(encrypted: string | undefined | null, secret: string): Promise<string | undefined>;
114
-
115
- /**
116
- * Signs a string value using HMAC-SHA256 with a secret key.
117
- *
118
- * This function creates a cryptographic signature that can be used to verify
119
- * the integrity and authenticity of the data. The signature is appended to
120
- * the original value, separated by a dot, using base64url encoding (no padding).
121
- *
122
- * @example
123
- * ```ts
124
- * const signedValue = await sign("user123", "my-secret-key")
125
- * expect(signedValue).toEqual("user123.oneQsU0r5dvwQFHFEjjV1uOI_IR3gZfkYHij3TRauVA")
126
- * ```
127
- *
128
- * @see {@link https://orpc.dev/docs/helpers/signing | Signing Helpers}
129
- */
130
- declare function sign(value: string, secret: string): Promise<string>;
131
- /**
132
- * Verifies and extracts the original value from a signed string.
133
- *
134
- * This function validates the signature of a previously signed value using the same
135
- * secret key. If the signature is valid, it returns the original value. If the
136
- * signature is invalid or the format is incorrect, it returns undefined.
137
- *
138
- * @example
139
- * ```ts
140
- * const signedValue = "user123.oneQsU0r5dvwQFHFEjjV1uOI_IR3gZfkYHij3TRauVA"
141
- * const originalValue = await unsign(signedValue, "my-secret-key")
142
- * expect(originalValue).toEqual("user123")
143
- * ```
144
- *
145
- * @see {@link https://orpc.dev/docs/helpers/signing | Signing Helpers}
146
- */
147
- declare function unsign(signedValue: string | undefined | null, secret: string): Promise<string | undefined>;
148
- /**
149
- * Extracts the value part from a signed string without verification.
150
- *
151
- * This function simply extracts the original value from a signed string
152
- * without performing any signature verification. It's useful when you need
153
- * to access the value quickly without the overhead of cryptographic verification.
154
- *
155
- * @example
156
- * ```ts
157
- * const signedValue = "user123.oneQsU0r5dvwQFHFEjjV1uOI_IR3gZfkYHij3TRauVA"
158
- * const value = getSignedValue(signedValue)
159
- * expect(value).toEqual("user123")
160
- * ```
161
- *
162
- * @see {@link https://orpc.dev/docs/helpers/signing | Signing Helpers}
163
- */
164
- declare function getSignedValue(signedValue: string | undefined | null): string | undefined;
165
-
166
- export { decodeBase64url, decrypt, deleteCookie, encodeBase64url, encrypt, getCookie, getSignedValue, setCookie, sign, unsign };
167
- export type { GetCookieOptions, SetCookieOptions };