@orpc/server 1.14.11 → 1.14.12

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 (78) hide show
  1. package/README.md +98 -52
  2. package/dist/adapters/aws-lambda/index.d.mts +46 -0
  3. package/dist/adapters/aws-lambda/index.d.ts +46 -0
  4. package/dist/adapters/aws-lambda/index.mjs +40 -0
  5. package/dist/adapters/bun-ws/index.d.mts +36 -0
  6. package/dist/adapters/bun-ws/index.d.ts +36 -0
  7. package/dist/adapters/bun-ws/index.mjs +47 -0
  8. package/dist/adapters/crossws/index.d.mts +21 -45
  9. package/dist/adapters/crossws/index.d.ts +21 -45
  10. package/dist/adapters/crossws/index.mjs +18 -40
  11. package/dist/adapters/fastify/index.d.mts +53 -0
  12. package/dist/adapters/fastify/index.d.ts +53 -0
  13. package/dist/adapters/fastify/index.mjs +52 -0
  14. package/dist/adapters/fetch/index.d.mts +96 -64
  15. package/dist/adapters/fetch/index.d.ts +96 -64
  16. package/dist/adapters/fetch/index.mjs +139 -34
  17. package/dist/adapters/message-port/index.d.mts +34 -49
  18. package/dist/adapters/message-port/index.d.ts +34 -49
  19. package/dist/adapters/message-port/index.mjs +37 -68
  20. package/dist/adapters/node/index.d.mts +71 -63
  21. package/dist/adapters/node/index.d.ts +71 -63
  22. package/dist/adapters/node/index.mjs +113 -36
  23. package/dist/adapters/standard/index.d.mts +18 -16
  24. package/dist/adapters/standard/index.d.ts +18 -16
  25. package/dist/adapters/standard/index.mjs +5 -5
  26. package/dist/adapters/standard-peer/index.d.mts +14 -12
  27. package/dist/adapters/standard-peer/index.d.ts +14 -12
  28. package/dist/adapters/standard-peer/index.mjs +21 -2
  29. package/dist/adapters/websocket/index.d.mts +38 -53
  30. package/dist/adapters/websocket/index.d.ts +38 -53
  31. package/dist/adapters/websocket/index.mjs +42 -59
  32. package/dist/adapters/ws/index.d.mts +31 -0
  33. package/dist/adapters/ws/index.d.ts +31 -0
  34. package/dist/adapters/ws/index.mjs +41 -0
  35. package/dist/helpers/index.d.mts +4 -4
  36. package/dist/helpers/index.d.ts +4 -4
  37. package/dist/helpers/index.mjs +5 -13
  38. package/dist/hibernation/index.d.mts +44 -0
  39. package/dist/hibernation/index.d.ts +44 -0
  40. package/dist/hibernation/index.mjs +65 -0
  41. package/dist/index.d.mts +770 -166
  42. package/dist/index.d.ts +770 -166
  43. package/dist/index.mjs +399 -306
  44. package/dist/plugins/index.d.mts +121 -214
  45. package/dist/plugins/index.d.ts +121 -214
  46. package/dist/plugins/index.mjs +214 -576
  47. package/dist/shared/server.7cEtMB30.d.ts +74 -0
  48. package/dist/shared/server.B8gYOD5g.d.mts +12 -0
  49. package/dist/shared/server.BqadksTP.d.mts +74 -0
  50. package/dist/shared/server.C8_sRzQB.d.mts +42 -0
  51. package/dist/shared/server.CMf4nKky.mjs +230 -0
  52. package/dist/shared/server.ChyoA9XY.d.ts +42 -0
  53. package/dist/shared/server.D8IXzfqT.d.ts +32 -0
  54. package/dist/shared/server.DEBcqOjg.mjs +418 -0
  55. package/dist/shared/{server.W91HSRkE.mjs → server.DZ5BIITo.mjs} +2 -2
  56. package/dist/shared/server.DzE6WeuY.d.mts +32 -0
  57. package/dist/shared/server.EfTOZ2Q7.d.ts +12 -0
  58. package/dist/shared/server.TEVCLCFC.mjs +39 -0
  59. package/dist/shared/server.qKsRrdxW.d.mts +193 -0
  60. package/dist/shared/server.qKsRrdxW.d.ts +193 -0
  61. package/package.json +56 -26
  62. package/dist/extensions/callable.d.mts +0 -10
  63. package/dist/extensions/callable.d.ts +0 -10
  64. package/dist/extensions/callable.mjs +0 -11
  65. package/dist/shared/server.15O7oC1p.d.mts +0 -61
  66. package/dist/shared/server.B4BnEWWm.d.mts +0 -67
  67. package/dist/shared/server.BhsVw7m7.d.ts +0 -104
  68. package/dist/shared/server.BoiFpNT7.mjs +0 -224
  69. package/dist/shared/server.COPVXhDG.mjs +0 -271
  70. package/dist/shared/server.CX4vUnDk.mjs +0 -11
  71. package/dist/shared/server.CcR4kgje.d.mts +0 -206
  72. package/dist/shared/server.CcR4kgje.d.ts +0 -206
  73. package/dist/shared/server.CnN50DHH.d.ts +0 -67
  74. package/dist/shared/server.DBs0rrf9.mjs +0 -41
  75. package/dist/shared/server.DDFizwfU.d.mts +0 -104
  76. package/dist/shared/server.D_QauotT.mjs +0 -30
  77. package/dist/shared/server.DofEOwf-.mjs +0 -237
  78. package/dist/shared/server.m3szVJGU.d.ts +0 -61
@@ -1,91 +1,99 @@
1
+ import { C as Context, R as Router } from '../../shared/server.qKsRrdxW.mjs';
1
2
  import { Interceptor, MaybeOptionalOptions } from '@orpc/shared';
2
- import { SendStandardResponseOptions, NodeHttpRequest, NodeHttpResponse } from '@standardserver/node';
3
- import { C as Context } from '../../shared/server.CcR4kgje.mjs';
4
- import { e as StandardHandlerPlugin, b as StandardHandlerHandleOptions, S as StandardHandler, a as StandardHandlerOptions } from '../../shared/server.DDFizwfU.mjs';
5
- import { FriendlyStandardHandlerHandleOptions } from '../standard/index.mjs';
6
- import { R as Router } from '../../shared/server.15O7oC1p.mjs';
7
- import { R as RPCHandlerCodecOptions } from '../../shared/server.B4BnEWWm.mjs';
3
+ import { SendStandardResponseOptions, NodeHttpRequest, NodeHttpResponse } from '@orpc/standard-server-node';
4
+ import { F as FriendlyStandardHandleOptions } from '../../shared/server.B8gYOD5g.mjs';
5
+ import { g as StandardHandlerPlugin, C as CompositeStandardHandlerPlugin, b as StandardHandleOptions, f as StandardHandler } from '../../shared/server.BqadksTP.mjs';
6
+ import compression from '@orpc/interop/compression';
7
+ import { S as StandardRPCHandlerOptions } from '../../shared/server.DzE6WeuY.mjs';
8
8
  import '@orpc/client';
9
9
  import '@orpc/contract';
10
- import '@standardserver/core';
10
+ import '@orpc/standard-server';
11
+ import '@orpc/client/standard';
12
+ import '../../shared/server.C8_sRzQB.mjs';
11
13
 
12
14
  interface NodeHttpHandlerPlugin<T extends Context> extends StandardHandlerPlugin<T> {
13
- /**
14
- * Initializes the plugin and returns new node HTTP handler options.
15
- * Called once per plugin instance during composition.
16
- *
17
- * This method allows plugins to wrap, extend, or transform node HTTP handler options
18
- * such as interceptors, or other configuration.
19
- *
20
- * @param options - The current handler options from previous plugins or base configuration
21
- * @returns Transformed handler options with plugin's modifications applied
22
- *
23
- * @example
24
- * ```ts
25
- * initNodeHttpHandlerOptions(options) {
26
- * return {
27
- * ...options,
28
- * nodeHttpInterceptors: [...(options.nodeHttpInterceptors || []), myInterceptor]
29
- * }
30
- * }
31
- * ```
32
- */
33
- initNodeHttpHandlerOptions?(options: NodeHttpHandlerOptions<T>): NodeHttpHandlerOptions<T>;
15
+ initRuntimeAdapter?(options: NodeHttpHandlerOptions<T>): void;
34
16
  }
35
- declare class CompositeNodeHttpHandlerPlugin<T extends Context> implements NodeHttpHandlerPlugin<T> {
36
- readonly name = "~composite/node-http-handler";
37
- protected readonly plugins: NodeHttpHandlerPlugin<T>[];
38
- constructor(plugins?: NodeHttpHandlerPlugin<T>[]);
39
- initNodeHttpHandlerOptions(options: NodeHttpHandlerOptions<T>): NodeHttpHandlerOptions<T>;
17
+ declare class CompositeNodeHttpHandlerPlugin<T extends Context, TPlugin extends NodeHttpHandlerPlugin<T>> extends CompositeStandardHandlerPlugin<T, TPlugin> implements NodeHttpHandlerPlugin<T> {
18
+ initRuntimeAdapter(options: NodeHttpHandlerOptions<T>): void;
40
19
  }
41
20
 
42
- type NodeHttpHandlerHandleResult = {
21
+ type NodeHttpHandleResult = {
43
22
  matched: true;
44
23
  } | {
45
24
  matched: false;
46
25
  };
47
- interface NodeHttpHandlerNodeHttpInterceptorOptions<T extends Context> extends StandardHandlerHandleOptions<T> {
26
+ interface NodeHttpHandlerInterceptorOptions<T extends Context> extends StandardHandleOptions<T> {
48
27
  request: NodeHttpRequest;
49
28
  response: NodeHttpResponse;
50
- sendStandardResponseOptions: SendStandardResponseOptions | undefined;
29
+ sendStandardResponseOptions: SendStandardResponseOptions;
51
30
  }
52
- type NodeHttpHandlerNodeHttpInterceptor<T extends Context> = Interceptor<NodeHttpHandlerNodeHttpInterceptorOptions<T>, Promise<NodeHttpHandlerHandleResult>>;
53
- interface NodeHttpHandlerOptions<T extends Context> {
54
- /**
55
- * Custom options for `sendStandardResponse`, used to send a `Standard Response`
56
- */
57
- sendStandardResponse?: SendStandardResponseOptions | undefined;
58
- /**
59
- * Interceptors that run before the mapping between the Standard API and Node HTTP API,
60
- * useful for extending Node HTTP request/response before handling, ...
61
- */
62
- nodeHttpInterceptors?: NodeHttpHandlerNodeHttpInterceptor<T>[] | undefined;
63
- plugins?: NodeHttpHandlerPlugin<T>[] | undefined;
31
+ interface NodeHttpHandlerOptions<T extends Context> extends SendStandardResponseOptions {
32
+ adapterInterceptors?: Interceptor<NodeHttpHandlerInterceptorOptions<T>, Promise<NodeHttpHandleResult>>[];
33
+ plugins?: NodeHttpHandlerPlugin<T>[];
64
34
  }
65
35
  declare class NodeHttpHandler<T extends Context> {
66
36
  private readonly standardHandler;
67
37
  private readonly sendStandardResponseOptions;
68
- private readonly nodeHttpInterceptors;
38
+ private readonly adapterInterceptors;
69
39
  constructor(standardHandler: StandardHandler<T>, options?: NoInfer<NodeHttpHandlerOptions<T>>);
70
- handle(request: NodeHttpRequest, response: NodeHttpResponse, ...rest: MaybeOptionalOptions<FriendlyStandardHandlerHandleOptions<T>>): Promise<NodeHttpHandlerHandleResult>;
40
+ handle(request: NodeHttpRequest, response: NodeHttpResponse, ...rest: MaybeOptionalOptions<FriendlyStandardHandleOptions<T>>): Promise<NodeHttpHandleResult>;
71
41
  }
72
42
 
73
- interface RPCHandlerOptions<T extends Context> extends NodeHttpHandlerOptions<T>, Omit<StandardHandlerOptions<T>, 'plugins'>, RPCHandlerCodecOptions<T> {
43
+ interface BodyLimitPluginOptions {
74
44
  /**
75
- * Configuration for {@link CSRFGuardHandlerPlugin}, which is enabled by default for `RPCHandler` over HTTP.
45
+ * The maximum size of the body in bytes.
46
+ */
47
+ maxBodySize: number;
48
+ }
49
+ /**
50
+ * The Body Limit Plugin restricts the size of the request body for the Node.js HTTP Server.
51
+ *
52
+ * @see {@link https://orpc.dev/docs/plugins/body-limit Body Limit Plugin Docs}
53
+ */
54
+ declare class BodyLimitPlugin<T extends Context> implements NodeHttpHandlerPlugin<T> {
55
+ private readonly maxBodySize;
56
+ constructor(options: BodyLimitPluginOptions);
57
+ initRuntimeAdapter(options: NodeHttpHandlerOptions<T>): void;
58
+ }
59
+
60
+ interface CompressionPluginOptions extends compression.CompressionOptions {
61
+ /**
62
+ * Override the default content-type filter used to determine which responses should be compressed.
63
+ *
64
+ * @warning [Event Iterator](https://orpc.dev/docs/event-iterator) responses are never compressed, regardless of this filter's return value.
65
+ * @default only responses with compressible content types are compressed.
66
+ */
67
+ filter?: (req: NodeHttpRequest, res: NodeHttpResponse) => boolean;
68
+ }
69
+ /**
70
+ * The Compression Plugin adds response compression to the Node.js HTTP Server.
71
+ *
72
+ * @see {@link https://orpc.dev/docs/plugins/compression Compression Plugin Docs}
73
+ */
74
+ declare class CompressionPlugin<T extends Context> implements NodeHttpHandlerPlugin<T> {
75
+ private readonly compressionHandler;
76
+ constructor(options?: CompressionPluginOptions);
77
+ initRuntimeAdapter(options: NodeHttpHandlerOptions<T>): void;
78
+ }
79
+
80
+ interface RPCHandlerOptions<T extends Context> extends NodeHttpHandlerOptions<T>, Omit<StandardRPCHandlerOptions<T>, 'plugins'> {
81
+ /**
82
+ * Enables or disables the StrictGetMethodPlugin.
83
+ *
84
+ * @default true
76
85
  */
77
- csrfGuardPlugin?: {
78
- /**
79
- * If `false`, this plugin is disabled.
80
- *
81
- * @default true
82
- */
83
- enabled?: boolean;
84
- };
86
+ strictGetMethodPluginEnabled?: boolean;
85
87
  }
88
+ /**
89
+ * RPC Handler for Node.js HTTP Server
90
+ *
91
+ * @see {@link https://orpc.dev/docs/rpc-handler RPC Handler Docs}
92
+ * @see {@link https://orpc.dev/docs/adapters/http HTTP Adapter Docs}
93
+ */
86
94
  declare class RPCHandler<T extends Context> extends NodeHttpHandler<T> {
87
- constructor(router: Router<T>, options?: NoInfer<RPCHandlerOptions<T>>);
95
+ constructor(router: Router<any, T>, options?: NoInfer<RPCHandlerOptions<T>>);
88
96
  }
89
97
 
90
- export { CompositeNodeHttpHandlerPlugin, NodeHttpHandler, RPCHandler };
91
- export type { NodeHttpHandlerHandleResult, NodeHttpHandlerNodeHttpInterceptor, NodeHttpHandlerNodeHttpInterceptorOptions, NodeHttpHandlerOptions, NodeHttpHandlerPlugin, RPCHandlerOptions };
98
+ export { BodyLimitPlugin, CompositeNodeHttpHandlerPlugin, CompressionPlugin, NodeHttpHandler, RPCHandler };
99
+ export type { BodyLimitPluginOptions, CompressionPluginOptions, NodeHttpHandleResult, NodeHttpHandlerInterceptorOptions, NodeHttpHandlerOptions, NodeHttpHandlerPlugin, RPCHandlerOptions };
@@ -1,91 +1,99 @@
1
+ import { C as Context, R as Router } from '../../shared/server.qKsRrdxW.js';
1
2
  import { Interceptor, MaybeOptionalOptions } from '@orpc/shared';
2
- import { SendStandardResponseOptions, NodeHttpRequest, NodeHttpResponse } from '@standardserver/node';
3
- import { C as Context } from '../../shared/server.CcR4kgje.js';
4
- import { e as StandardHandlerPlugin, b as StandardHandlerHandleOptions, S as StandardHandler, a as StandardHandlerOptions } from '../../shared/server.BhsVw7m7.js';
5
- import { FriendlyStandardHandlerHandleOptions } from '../standard/index.js';
6
- import { R as Router } from '../../shared/server.m3szVJGU.js';
7
- import { R as RPCHandlerCodecOptions } from '../../shared/server.CnN50DHH.js';
3
+ import { SendStandardResponseOptions, NodeHttpRequest, NodeHttpResponse } from '@orpc/standard-server-node';
4
+ import { F as FriendlyStandardHandleOptions } from '../../shared/server.EfTOZ2Q7.js';
5
+ import { g as StandardHandlerPlugin, C as CompositeStandardHandlerPlugin, b as StandardHandleOptions, f as StandardHandler } from '../../shared/server.7cEtMB30.js';
6
+ import compression from '@orpc/interop/compression';
7
+ import { S as StandardRPCHandlerOptions } from '../../shared/server.D8IXzfqT.js';
8
8
  import '@orpc/client';
9
9
  import '@orpc/contract';
10
- import '@standardserver/core';
10
+ import '@orpc/standard-server';
11
+ import '@orpc/client/standard';
12
+ import '../../shared/server.ChyoA9XY.js';
11
13
 
12
14
  interface NodeHttpHandlerPlugin<T extends Context> extends StandardHandlerPlugin<T> {
13
- /**
14
- * Initializes the plugin and returns new node HTTP handler options.
15
- * Called once per plugin instance during composition.
16
- *
17
- * This method allows plugins to wrap, extend, or transform node HTTP handler options
18
- * such as interceptors, or other configuration.
19
- *
20
- * @param options - The current handler options from previous plugins or base configuration
21
- * @returns Transformed handler options with plugin's modifications applied
22
- *
23
- * @example
24
- * ```ts
25
- * initNodeHttpHandlerOptions(options) {
26
- * return {
27
- * ...options,
28
- * nodeHttpInterceptors: [...(options.nodeHttpInterceptors || []), myInterceptor]
29
- * }
30
- * }
31
- * ```
32
- */
33
- initNodeHttpHandlerOptions?(options: NodeHttpHandlerOptions<T>): NodeHttpHandlerOptions<T>;
15
+ initRuntimeAdapter?(options: NodeHttpHandlerOptions<T>): void;
34
16
  }
35
- declare class CompositeNodeHttpHandlerPlugin<T extends Context> implements NodeHttpHandlerPlugin<T> {
36
- readonly name = "~composite/node-http-handler";
37
- protected readonly plugins: NodeHttpHandlerPlugin<T>[];
38
- constructor(plugins?: NodeHttpHandlerPlugin<T>[]);
39
- initNodeHttpHandlerOptions(options: NodeHttpHandlerOptions<T>): NodeHttpHandlerOptions<T>;
17
+ declare class CompositeNodeHttpHandlerPlugin<T extends Context, TPlugin extends NodeHttpHandlerPlugin<T>> extends CompositeStandardHandlerPlugin<T, TPlugin> implements NodeHttpHandlerPlugin<T> {
18
+ initRuntimeAdapter(options: NodeHttpHandlerOptions<T>): void;
40
19
  }
41
20
 
42
- type NodeHttpHandlerHandleResult = {
21
+ type NodeHttpHandleResult = {
43
22
  matched: true;
44
23
  } | {
45
24
  matched: false;
46
25
  };
47
- interface NodeHttpHandlerNodeHttpInterceptorOptions<T extends Context> extends StandardHandlerHandleOptions<T> {
26
+ interface NodeHttpHandlerInterceptorOptions<T extends Context> extends StandardHandleOptions<T> {
48
27
  request: NodeHttpRequest;
49
28
  response: NodeHttpResponse;
50
- sendStandardResponseOptions: SendStandardResponseOptions | undefined;
29
+ sendStandardResponseOptions: SendStandardResponseOptions;
51
30
  }
52
- type NodeHttpHandlerNodeHttpInterceptor<T extends Context> = Interceptor<NodeHttpHandlerNodeHttpInterceptorOptions<T>, Promise<NodeHttpHandlerHandleResult>>;
53
- interface NodeHttpHandlerOptions<T extends Context> {
54
- /**
55
- * Custom options for `sendStandardResponse`, used to send a `Standard Response`
56
- */
57
- sendStandardResponse?: SendStandardResponseOptions | undefined;
58
- /**
59
- * Interceptors that run before the mapping between the Standard API and Node HTTP API,
60
- * useful for extending Node HTTP request/response before handling, ...
61
- */
62
- nodeHttpInterceptors?: NodeHttpHandlerNodeHttpInterceptor<T>[] | undefined;
63
- plugins?: NodeHttpHandlerPlugin<T>[] | undefined;
31
+ interface NodeHttpHandlerOptions<T extends Context> extends SendStandardResponseOptions {
32
+ adapterInterceptors?: Interceptor<NodeHttpHandlerInterceptorOptions<T>, Promise<NodeHttpHandleResult>>[];
33
+ plugins?: NodeHttpHandlerPlugin<T>[];
64
34
  }
65
35
  declare class NodeHttpHandler<T extends Context> {
66
36
  private readonly standardHandler;
67
37
  private readonly sendStandardResponseOptions;
68
- private readonly nodeHttpInterceptors;
38
+ private readonly adapterInterceptors;
69
39
  constructor(standardHandler: StandardHandler<T>, options?: NoInfer<NodeHttpHandlerOptions<T>>);
70
- handle(request: NodeHttpRequest, response: NodeHttpResponse, ...rest: MaybeOptionalOptions<FriendlyStandardHandlerHandleOptions<T>>): Promise<NodeHttpHandlerHandleResult>;
40
+ handle(request: NodeHttpRequest, response: NodeHttpResponse, ...rest: MaybeOptionalOptions<FriendlyStandardHandleOptions<T>>): Promise<NodeHttpHandleResult>;
71
41
  }
72
42
 
73
- interface RPCHandlerOptions<T extends Context> extends NodeHttpHandlerOptions<T>, Omit<StandardHandlerOptions<T>, 'plugins'>, RPCHandlerCodecOptions<T> {
43
+ interface BodyLimitPluginOptions {
74
44
  /**
75
- * Configuration for {@link CSRFGuardHandlerPlugin}, which is enabled by default for `RPCHandler` over HTTP.
45
+ * The maximum size of the body in bytes.
46
+ */
47
+ maxBodySize: number;
48
+ }
49
+ /**
50
+ * The Body Limit Plugin restricts the size of the request body for the Node.js HTTP Server.
51
+ *
52
+ * @see {@link https://orpc.dev/docs/plugins/body-limit Body Limit Plugin Docs}
53
+ */
54
+ declare class BodyLimitPlugin<T extends Context> implements NodeHttpHandlerPlugin<T> {
55
+ private readonly maxBodySize;
56
+ constructor(options: BodyLimitPluginOptions);
57
+ initRuntimeAdapter(options: NodeHttpHandlerOptions<T>): void;
58
+ }
59
+
60
+ interface CompressionPluginOptions extends compression.CompressionOptions {
61
+ /**
62
+ * Override the default content-type filter used to determine which responses should be compressed.
63
+ *
64
+ * @warning [Event Iterator](https://orpc.dev/docs/event-iterator) responses are never compressed, regardless of this filter's return value.
65
+ * @default only responses with compressible content types are compressed.
66
+ */
67
+ filter?: (req: NodeHttpRequest, res: NodeHttpResponse) => boolean;
68
+ }
69
+ /**
70
+ * The Compression Plugin adds response compression to the Node.js HTTP Server.
71
+ *
72
+ * @see {@link https://orpc.dev/docs/plugins/compression Compression Plugin Docs}
73
+ */
74
+ declare class CompressionPlugin<T extends Context> implements NodeHttpHandlerPlugin<T> {
75
+ private readonly compressionHandler;
76
+ constructor(options?: CompressionPluginOptions);
77
+ initRuntimeAdapter(options: NodeHttpHandlerOptions<T>): void;
78
+ }
79
+
80
+ interface RPCHandlerOptions<T extends Context> extends NodeHttpHandlerOptions<T>, Omit<StandardRPCHandlerOptions<T>, 'plugins'> {
81
+ /**
82
+ * Enables or disables the StrictGetMethodPlugin.
83
+ *
84
+ * @default true
76
85
  */
77
- csrfGuardPlugin?: {
78
- /**
79
- * If `false`, this plugin is disabled.
80
- *
81
- * @default true
82
- */
83
- enabled?: boolean;
84
- };
86
+ strictGetMethodPluginEnabled?: boolean;
85
87
  }
88
+ /**
89
+ * RPC Handler for Node.js HTTP Server
90
+ *
91
+ * @see {@link https://orpc.dev/docs/rpc-handler RPC Handler Docs}
92
+ * @see {@link https://orpc.dev/docs/adapters/http HTTP Adapter Docs}
93
+ */
86
94
  declare class RPCHandler<T extends Context> extends NodeHttpHandler<T> {
87
- constructor(router: Router<T>, options?: NoInfer<RPCHandlerOptions<T>>);
95
+ constructor(router: Router<any, T>, options?: NoInfer<RPCHandlerOptions<T>>);
88
96
  }
89
97
 
90
- export { CompositeNodeHttpHandlerPlugin, NodeHttpHandler, RPCHandler };
91
- export type { NodeHttpHandlerHandleResult, NodeHttpHandlerNodeHttpInterceptor, NodeHttpHandlerNodeHttpInterceptorOptions, NodeHttpHandlerOptions, NodeHttpHandlerPlugin, RPCHandlerOptions };
98
+ export { BodyLimitPlugin, CompositeNodeHttpHandlerPlugin, CompressionPlugin, NodeHttpHandler, RPCHandler };
99
+ export type { BodyLimitPluginOptions, CompressionPluginOptions, NodeHttpHandleResult, NodeHttpHandlerInterceptorOptions, NodeHttpHandlerOptions, NodeHttpHandlerPlugin, RPCHandlerOptions };
@@ -1,44 +1,125 @@
1
- import { sortPlugins, intercept, resolveMaybeOptionalOptions, toArray } from '@orpc/shared';
2
- import { toStandardLazyRequest, sendStandardResponse } from '@standardserver/node';
3
- import { r as resolveFriendlyStandardHandlerHandleOptions } from '../../shared/server.W91HSRkE.mjs';
4
- import { C as CSRFGuardHandlerPlugin } from '../../shared/server.D_QauotT.mjs';
5
- import { R as RPCHandlerCodec, S as StandardHandler } from '../../shared/server.COPVXhDG.mjs';
6
- import '@orpc/client';
7
- import '@standardserver/core';
8
- import '../../shared/server.DofEOwf-.mjs';
1
+ import { ORPCError } from '@orpc/client';
2
+ import { once, toArray, intercept, resolveMaybeOptionalOptions } from '@orpc/shared';
3
+ import compression from '@orpc/interop/compression';
4
+ import { toStandardLazyRequest, sendStandardResponse } from '@orpc/standard-server-node';
5
+ import { r as resolveFriendlyStandardHandleOptions } from '../../shared/server.DZ5BIITo.mjs';
6
+ import { C as CompositeStandardHandlerPlugin, b as StandardRPCHandler } from '../../shared/server.CMf4nKky.mjs';
7
+ import { S as StrictGetMethodPlugin } from '../../shared/server.TEVCLCFC.mjs';
8
+ import '@orpc/client/standard';
9
+ import '@orpc/standard-server';
10
+ import '../../shared/server.DEBcqOjg.mjs';
9
11
  import '@orpc/contract';
10
- import '../../shared/server.BoiFpNT7.mjs';
11
12
 
12
- class CompositeNodeHttpHandlerPlugin {
13
- name = "~composite/node-http-handler";
14
- plugins;
15
- constructor(plugins = []) {
16
- this.plugins = sortPlugins(plugins);
13
+ class BodyLimitPlugin {
14
+ maxBodySize;
15
+ constructor(options) {
16
+ this.maxBodySize = options.maxBodySize;
17
17
  }
18
- initNodeHttpHandlerOptions(options) {
19
- for (const plugin of this.plugins) {
20
- if (plugin.initNodeHttpHandlerOptions) {
21
- options = plugin.initNodeHttpHandlerOptions(options);
18
+ initRuntimeAdapter(options) {
19
+ options.adapterInterceptors ??= [];
20
+ options.adapterInterceptors.push(async (options2) => {
21
+ const checkHeader = once(() => {
22
+ if (Number(options2.request.headers["content-length"]) > this.maxBodySize) {
23
+ throw new ORPCError("PAYLOAD_TOO_LARGE");
24
+ }
25
+ });
26
+ const originalEmit = options2.request.emit;
27
+ let currentBodySize = 0;
28
+ options2.request.emit = (event, ...args) => {
29
+ if (event === "data") {
30
+ checkHeader();
31
+ currentBodySize += args[0].length;
32
+ if (currentBodySize > this.maxBodySize) {
33
+ throw new ORPCError("PAYLOAD_TOO_LARGE");
34
+ }
35
+ }
36
+ return originalEmit.call(options2.request, event, ...args);
37
+ };
38
+ try {
39
+ return await options2.next(options2);
40
+ } finally {
41
+ options2.request.emit = originalEmit;
42
+ }
43
+ });
44
+ }
45
+ }
46
+
47
+ class CompressionPlugin {
48
+ compressionHandler;
49
+ constructor(options = {}) {
50
+ this.compressionHandler = compression({
51
+ ...options,
52
+ filter: (req, res) => {
53
+ const hasContentDisposition = res.hasHeader("content-disposition");
54
+ const contentType = res.getHeader("content-type")?.toString();
55
+ if (!hasContentDisposition && contentType?.startsWith("text/event-stream")) {
56
+ return false;
57
+ }
58
+ return options.filter ? options.filter(req, res) : compression.filter(req, res);
22
59
  }
60
+ });
61
+ }
62
+ initRuntimeAdapter(options) {
63
+ options.adapterInterceptors ??= [];
64
+ options.adapterInterceptors.unshift(async (options2) => {
65
+ let resolve;
66
+ let reject;
67
+ const promise = new Promise((res, rej) => {
68
+ resolve = res;
69
+ reject = rej;
70
+ });
71
+ const originalWrite = options2.response.write;
72
+ const originalEnd = options2.response.end;
73
+ const originalOn = options2.response.on;
74
+ this.compressionHandler(
75
+ options2.request,
76
+ options2.response,
77
+ async (err) => {
78
+ if (err) {
79
+ reject(err);
80
+ } else {
81
+ try {
82
+ resolve(await options2.next());
83
+ } catch (error) {
84
+ reject(error);
85
+ }
86
+ }
87
+ }
88
+ );
89
+ try {
90
+ return await promise;
91
+ } finally {
92
+ options2.response.write = originalWrite;
93
+ options2.response.end = originalEnd;
94
+ options2.response.on = originalOn;
95
+ }
96
+ });
97
+ }
98
+ }
99
+
100
+ class CompositeNodeHttpHandlerPlugin extends CompositeStandardHandlerPlugin {
101
+ initRuntimeAdapter(options) {
102
+ for (const plugin of this.plugins) {
103
+ plugin.initRuntimeAdapter?.(options);
23
104
  }
24
- return options;
25
105
  }
26
106
  }
27
107
 
28
108
  class NodeHttpHandler {
29
109
  constructor(standardHandler, options = {}) {
30
110
  this.standardHandler = standardHandler;
31
- options = new CompositeNodeHttpHandlerPlugin(options.plugins).initNodeHttpHandlerOptions(options);
32
- this.nodeHttpInterceptors = options.nodeHttpInterceptors;
33
- this.sendStandardResponseOptions = options.sendStandardResponse;
111
+ const plugin = new CompositeNodeHttpHandlerPlugin(options.plugins);
112
+ plugin.initRuntimeAdapter(options);
113
+ this.adapterInterceptors = toArray(options.adapterInterceptors);
114
+ this.sendStandardResponseOptions = options;
34
115
  }
35
116
  sendStandardResponseOptions;
36
- nodeHttpInterceptors;
117
+ adapterInterceptors;
37
118
  async handle(request, response, ...rest) {
38
119
  return intercept(
39
- this.nodeHttpInterceptors,
120
+ this.adapterInterceptors,
40
121
  {
41
- ...resolveFriendlyStandardHandlerHandleOptions(resolveMaybeOptionalOptions(rest)),
122
+ ...resolveFriendlyStandardHandleOptions(resolveMaybeOptionalOptions(rest)),
42
123
  request,
43
124
  response,
44
125
  sendStandardResponseOptions: this.sendStandardResponseOptions
@@ -47,10 +128,10 @@ class NodeHttpHandler {
47
128
  const standardRequest = toStandardLazyRequest(request2, response2);
48
129
  const result = await this.standardHandler.handle(standardRequest, options);
49
130
  if (!result.matched) {
50
- return result;
131
+ return { matched: false };
51
132
  }
52
133
  await sendStandardResponse(response2, result.response, sendStandardResponseOptions);
53
- return result;
134
+ return { matched: true };
54
135
  }
55
136
  );
56
137
  }
@@ -58,16 +139,12 @@ class NodeHttpHandler {
58
139
 
59
140
  class RPCHandler extends NodeHttpHandler {
60
141
  constructor(router, options = {}) {
61
- if (options.csrfGuardPlugin?.enabled !== false) {
62
- options = {
63
- ...options,
64
- plugins: [...toArray(options.plugins), new CSRFGuardHandlerPlugin()]
65
- };
142
+ if (options.strictGetMethodPluginEnabled ?? true) {
143
+ options.plugins ??= [];
144
+ options.plugins.push(new StrictGetMethodPlugin());
66
145
  }
67
- const codec = new RPCHandlerCodec(router, options);
68
- const handler = new StandardHandler(codec, options);
69
- super(handler, options);
146
+ super(new StandardRPCHandler(router, options), options);
70
147
  }
71
148
  }
72
149
 
73
- export { CompositeNodeHttpHandlerPlugin, NodeHttpHandler, RPCHandler };
150
+ export { BodyLimitPlugin, CompositeNodeHttpHandlerPlugin, CompressionPlugin, NodeHttpHandler, RPCHandler };
@@ -1,19 +1,21 @@
1
- import { b as StandardHandlerHandleOptions } from '../../shared/server.DDFizwfU.mjs';
2
- export { C as CompositeStandardHandlerPlugin, O as OtelHandlerPlugin, S as StandardHandler, c as StandardHandlerCodec, d as StandardHandlerCodecResolvedProcedure, h as StandardHandlerHandleResult, i as StandardHandlerInterceptor, g as StandardHandlerInterceptorOptions, a as StandardHandlerOptions, e as StandardHandlerPlugin, j as StandardHandlerRoutingInterceptor, f as StandardHandlerRoutingInterceptorOptions } from '../../shared/server.DDFizwfU.mjs';
3
- export { a as RPCHandlerCodec, R as RPCHandlerCodecOptions, b as RPCMatcher, c as RPCMatcherOptions } from '../../shared/server.B4BnEWWm.mjs';
4
- import { C as Context } from '../../shared/server.CcR4kgje.mjs';
5
- export { StandardBody, StandardBodyHint, StandardHeaders, StandardLazyRequest, StandardLazyResponse, StandardMethod, StandardRequest, StandardResponse, StandardUrl } from '@standardserver/core';
6
- import '@orpc/client';
7
- import '@orpc/shared';
1
+ import { S as StandardCodec, a as StandardParams } from '../../shared/server.BqadksTP.mjs';
2
+ export { C as CompositeStandardHandlerPlugin, b as StandardHandleOptions, c as StandardHandleResult, f as StandardHandler, d as StandardHandlerInterceptorOptions, e as StandardHandlerOptions, g as StandardHandlerPlugin, h as StandardMatchResult, i as StandardMatcher } from '../../shared/server.BqadksTP.mjs';
3
+ import { ORPCError } from '@orpc/client';
4
+ import { StandardRPCSerializer } from '@orpc/client/standard';
5
+ import { StandardLazyRequest, StandardResponse } from '@orpc/standard-server';
6
+ import { A as AnyProcedure } from '../../shared/server.qKsRrdxW.mjs';
7
+ export { a as StandardRPCHandler, S as StandardRPCHandlerOptions, c as StandardRPCMatcher, b as StandardRPCMatcherOptions } from '../../shared/server.DzE6WeuY.mjs';
8
+ export { F as FriendlyStandardHandleOptions, r as resolveFriendlyStandardHandleOptions } from '../../shared/server.B8gYOD5g.mjs';
8
9
  import '@orpc/contract';
9
- import '../../shared/server.15O7oC1p.mjs';
10
+ import '@orpc/shared';
11
+ import '../../shared/server.C8_sRzQB.mjs';
10
12
 
11
- type FriendlyStandardHandlerHandleOptions<T extends Context> = Omit<StandardHandlerHandleOptions<T>, 'context'> & (object extends T ? {
12
- context?: T;
13
- } : {
14
- context: T;
15
- });
16
- declare function resolveFriendlyStandardHandlerHandleOptions<T extends Context>(options: FriendlyStandardHandlerHandleOptions<T>): StandardHandlerHandleOptions<T>;
13
+ declare class StandardRPCCodec implements StandardCodec {
14
+ private readonly serializer;
15
+ constructor(serializer: StandardRPCSerializer);
16
+ decode(request: StandardLazyRequest, _params: StandardParams | undefined, _procedure: AnyProcedure): Promise<unknown>;
17
+ encode(output: unknown, _procedure: AnyProcedure): StandardResponse;
18
+ encodeError(error: ORPCError<any, any>): StandardResponse;
19
+ }
17
20
 
18
- export { StandardHandlerHandleOptions, resolveFriendlyStandardHandlerHandleOptions };
19
- export type { FriendlyStandardHandlerHandleOptions };
21
+ export { StandardCodec, StandardParams, StandardRPCCodec };
@@ -1,19 +1,21 @@
1
- import { b as StandardHandlerHandleOptions } from '../../shared/server.BhsVw7m7.js';
2
- export { C as CompositeStandardHandlerPlugin, O as OtelHandlerPlugin, S as StandardHandler, c as StandardHandlerCodec, d as StandardHandlerCodecResolvedProcedure, h as StandardHandlerHandleResult, i as StandardHandlerInterceptor, g as StandardHandlerInterceptorOptions, a as StandardHandlerOptions, e as StandardHandlerPlugin, j as StandardHandlerRoutingInterceptor, f as StandardHandlerRoutingInterceptorOptions } from '../../shared/server.BhsVw7m7.js';
3
- export { a as RPCHandlerCodec, R as RPCHandlerCodecOptions, b as RPCMatcher, c as RPCMatcherOptions } from '../../shared/server.CnN50DHH.js';
4
- import { C as Context } from '../../shared/server.CcR4kgje.js';
5
- export { StandardBody, StandardBodyHint, StandardHeaders, StandardLazyRequest, StandardLazyResponse, StandardMethod, StandardRequest, StandardResponse, StandardUrl } from '@standardserver/core';
6
- import '@orpc/client';
7
- import '@orpc/shared';
1
+ import { S as StandardCodec, a as StandardParams } from '../../shared/server.7cEtMB30.js';
2
+ export { C as CompositeStandardHandlerPlugin, b as StandardHandleOptions, c as StandardHandleResult, f as StandardHandler, d as StandardHandlerInterceptorOptions, e as StandardHandlerOptions, g as StandardHandlerPlugin, h as StandardMatchResult, i as StandardMatcher } from '../../shared/server.7cEtMB30.js';
3
+ import { ORPCError } from '@orpc/client';
4
+ import { StandardRPCSerializer } from '@orpc/client/standard';
5
+ import { StandardLazyRequest, StandardResponse } from '@orpc/standard-server';
6
+ import { A as AnyProcedure } from '../../shared/server.qKsRrdxW.js';
7
+ export { a as StandardRPCHandler, S as StandardRPCHandlerOptions, c as StandardRPCMatcher, b as StandardRPCMatcherOptions } from '../../shared/server.D8IXzfqT.js';
8
+ export { F as FriendlyStandardHandleOptions, r as resolveFriendlyStandardHandleOptions } from '../../shared/server.EfTOZ2Q7.js';
8
9
  import '@orpc/contract';
9
- import '../../shared/server.m3szVJGU.js';
10
+ import '@orpc/shared';
11
+ import '../../shared/server.ChyoA9XY.js';
10
12
 
11
- type FriendlyStandardHandlerHandleOptions<T extends Context> = Omit<StandardHandlerHandleOptions<T>, 'context'> & (object extends T ? {
12
- context?: T;
13
- } : {
14
- context: T;
15
- });
16
- declare function resolveFriendlyStandardHandlerHandleOptions<T extends Context>(options: FriendlyStandardHandlerHandleOptions<T>): StandardHandlerHandleOptions<T>;
13
+ declare class StandardRPCCodec implements StandardCodec {
14
+ private readonly serializer;
15
+ constructor(serializer: StandardRPCSerializer);
16
+ decode(request: StandardLazyRequest, _params: StandardParams | undefined, _procedure: AnyProcedure): Promise<unknown>;
17
+ encode(output: unknown, _procedure: AnyProcedure): StandardResponse;
18
+ encodeError(error: ORPCError<any, any>): StandardResponse;
19
+ }
17
20
 
18
- export { StandardHandlerHandleOptions, resolveFriendlyStandardHandlerHandleOptions };
19
- export type { FriendlyStandardHandlerHandleOptions };
21
+ export { StandardCodec, StandardParams, StandardRPCCodec };
@@ -1,8 +1,8 @@
1
- export { C as CompositeStandardHandlerPlugin, O as OtelHandlerPlugin, R as RPCHandlerCodec, a as RPCMatcher, S as StandardHandler } from '../../shared/server.COPVXhDG.mjs';
2
- export { r as resolveFriendlyStandardHandlerHandleOptions } from '../../shared/server.W91HSRkE.mjs';
1
+ export { C as CompositeStandardHandlerPlugin, S as StandardHandler, a as StandardRPCCodec, b as StandardRPCHandler, c as StandardRPCMatcher } from '../../shared/server.CMf4nKky.mjs';
2
+ export { r as resolveFriendlyStandardHandleOptions } from '../../shared/server.DZ5BIITo.mjs';
3
+ import '@orpc/client/standard';
3
4
  import '@orpc/client';
4
5
  import '@orpc/shared';
5
- import '@standardserver/core';
6
- import '../../shared/server.DofEOwf-.mjs';
6
+ import '@orpc/standard-server';
7
+ import '../../shared/server.DEBcqOjg.mjs';
7
8
  import '@orpc/contract';
8
- import '../../shared/server.BoiFpNT7.mjs';