@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
@@ -0,0 +1,43 @@
1
+ import { RECURSIVE_CLIENT_UNWRAP_KEYS } from '@orpc/client';
2
+ import { resolveMaybeOptionalOptions, toArray } from '@orpc/shared';
3
+ import { Lazy } from './lazy.js';
4
+ import { createProcedureClient } from './procedure-client.js';
5
+ import { createGuardedProcedureLazy } from './procedure-utils.js';
6
+ import { Procedure } from './procedure.js';
7
+ import { getRouter } from './router-utils.js';
8
+ /**
9
+ * Creates a server-side client that calls the router's procedures directly,
10
+ * within the same process, without any network layer.
11
+ *
12
+ * @see {@link https://orpc.dev/docs/client/server-side#router-clients | Server-Side Clients - Router Clients}
13
+ */
14
+ export function createRouterClient(router, ...rest) {
15
+ const options = resolveMaybeOptionalOptions(rest);
16
+ if (router instanceof Procedure) {
17
+ return createProcedureClient(router, options);
18
+ }
19
+ const procedureCaller = router instanceof Lazy ? createProcedureClient(createGuardedProcedureLazy(router), options) : {};
20
+ const cache = new Map();
21
+ const recursive = new Proxy(procedureCaller, {
22
+ get(target, key) {
23
+ if (typeof key !== 'string' ||
24
+ (router instanceof Lazy && RECURSIVE_CLIENT_UNWRAP_KEYS.has(key))) {
25
+ return Reflect.get(target, key);
26
+ }
27
+ let nextClient = cache.get(key);
28
+ if (nextClient === undefined) {
29
+ const next = getRouter(router, [key]);
30
+ if (!next) {
31
+ return Reflect.get(target, key);
32
+ }
33
+ nextClient = createRouterClient(next, {
34
+ ...options,
35
+ path: [...toArray(options.path), key],
36
+ });
37
+ cache.set(key, nextClient);
38
+ }
39
+ return nextClient;
40
+ },
41
+ });
42
+ return recursive;
43
+ }
@@ -1,5 +1,5 @@
1
- import type { RouterContract } from "@orpc/contract";
2
- import type { Lazyable } from "./lazy.mjs";
3
- import type { AnyRouter } from "./router.mjs";
1
+ import type { RouterContract } from '@orpc/contract';
2
+ import type { Lazyable } from './lazy.ts';
3
+ import type { AnyRouter } from './router.ts';
4
4
  export declare function withHiddenRouterContract<T extends Lazyable<AnyRouter>>(router: T, contract: RouterContract): T;
5
5
  export declare function getHiddenRouterContract(router: Lazyable<AnyRouter | RouterContract>): RouterContract | undefined;
@@ -0,0 +1,14 @@
1
+ const HIDDEN_ROUTER_CONTRACT_SYMBOL = /* @__PURE__ */ Symbol.for('ORPC_HIDDEN_ROUTER_CONTRACT');
2
+ export function withHiddenRouterContract(router, contract) {
3
+ return new Proxy(router, {
4
+ get(target, key) {
5
+ if (key === HIDDEN_ROUTER_CONTRACT_SYMBOL) {
6
+ return contract;
7
+ }
8
+ return Reflect.get(target, key);
9
+ },
10
+ });
11
+ }
12
+ export function getHiddenRouterContract(router) {
13
+ return router[HIDDEN_ROUTER_CONTRACT_SYMBOL];
14
+ }
@@ -0,0 +1,48 @@
1
+ import type { AnyProcedureContract, AugmentContractRouterOptions, ErrorMap, MergedErrorMap, RouterContract } from '@orpc/contract';
2
+ import type { Promisable } from '@orpc/shared';
3
+ import type { Context, MergedInitialContext } from './context.ts';
4
+ import type { Lazyable } from './lazy.ts';
5
+ import { Lazy } from './lazy.ts';
6
+ import type { AnyMiddleware } from './middleware.ts';
7
+ import type { AnyProcedure, ProcedureConfig } from './procedure.ts';
8
+ import { Procedure } from './procedure.ts';
9
+ import type { AnyRouter } from './router.ts';
10
+ export type AugmentedRouter<T extends AnyRouter, TErrorMap extends ErrorMap> = T extends Procedure<infer $InitialContext, infer $CurrentContext, infer $InputSchema, infer $OutputSchema, infer $ErrorMap> ? Procedure<$InitialContext, $CurrentContext, $InputSchema, $OutputSchema, MergedErrorMap<TErrorMap, $ErrorMap>> : {
11
+ [K in keyof T]: T[K] extends Lazy<infer $ extends AnyRouter> ? Lazy<AugmentedRouter<$, TErrorMap>> : T[K] extends AnyRouter ? AugmentedRouter<T[K], TErrorMap> : never;
12
+ };
13
+ export type AugmentedRouterWithMiddlewares<T extends AnyRouter, TInitialContext extends Context, TInjectedContext extends Context, TErrorMap extends ErrorMap> = T extends Procedure<infer $InitialContext, infer $CurrentContext, infer $InputSchema, infer $OutputSchema, infer $ErrorMap> ? Procedure<MergedInitialContext<TInitialContext, TInjectedContext, $InitialContext>, $CurrentContext, $InputSchema, $OutputSchema, MergedErrorMap<TErrorMap, $ErrorMap>> : {
14
+ [K in keyof T]: T[K] extends Lazy<infer $ extends AnyRouter> ? Lazy<AugmentedRouterWithMiddlewares<$, TInitialContext, TInjectedContext, TErrorMap>> : T[K] extends AnyRouter ? AugmentedRouterWithMiddlewares<T[K], TInitialContext, TInjectedContext, TErrorMap> : never;
15
+ };
16
+ interface AugmentRouterOptions<TErrorMap extends ErrorMap> extends AugmentContractRouterOptions<TErrorMap>, ProcedureConfig {
17
+ middlewares: AnyMiddleware[];
18
+ }
19
+ export declare function augmentRouter<T extends AnyRouter, TInitialContext extends Context, TCurrentContext extends Context, TErrorMap extends ErrorMap>(router: T, options: AugmentRouterOptions<TErrorMap>): AugmentedRouter<T, TErrorMap> | AugmentedRouterWithMiddlewares<T, TInitialContext, TCurrentContext, TErrorMap>;
20
+ interface AugmentImplementedRouterOptions extends ProcedureConfig {
21
+ middlewares: AnyMiddleware[];
22
+ }
23
+ export declare function augmentImplementedRouter<T extends AnyRouter, TInitialContext extends Context, TCurrentContext extends Context>(router: T, options: AugmentImplementedRouterOptions): AugmentedRouter<T, object> | AugmentedRouterWithMiddlewares<T, TInitialContext, TCurrentContext, object>;
24
+ /**
25
+ * Resolves the procedure of a contract walked from a router: the procedure itself,
26
+ * or the implementation of a contract-first procedure, looked up by its path.
27
+ *
28
+ * @throws {TypeError} If a contract-first procedure has no valid implementation.
29
+ */
30
+ export declare function resolveContractProcedure(router: AnyRouter, contract: AnyProcedureContract, path: readonly string[]): Promise<AnyProcedure>;
31
+ export declare function getRouter<T extends Lazyable<AnyRouter | undefined>>(router: T, path: readonly string[]): T extends Lazy<any> ? Lazy<AnyRouter | undefined> : Lazyable<AnyRouter | undefined>;
32
+ export interface WalkProcedureContractsLazyResult {
33
+ router: Lazy<AnyRouter>;
34
+ path: string[];
35
+ }
36
+ export declare function walkProcedureContractsSync(router: RouterContract | AnyRouter, callback: (contract: AnyProcedureContract | AnyProcedure, path: string[]) => void, path?: string[]): WalkProcedureContractsLazyResult[];
37
+ export declare function walkProcedureContractsAsync(router: RouterContract | AnyRouter, callback: (contract: AnyProcedureContract | AnyProcedure, path: string[]) => Promisable<void>, path?: string[]): Promise<void>;
38
+ export type UnlaziedRouter<T extends AnyRouter> = T extends AnyProcedure ? T : {
39
+ [K in keyof T]: T[K] extends Lazyable<infer U extends AnyRouter> ? UnlaziedRouter<U> : never;
40
+ };
41
+ /**
42
+ * Fully resolves all lazy routers inside a router, returning a plain router.
43
+ * Useful for making a router with lazy parts contract-compatible.
44
+ *
45
+ * @see {@link https://orpc.dev/docs/contract/router#router-to-contract | Router Contract - Router to Contract}
46
+ */
47
+ export declare function unlazyRouter<T extends AnyRouter>(router: T): Promise<UnlaziedRouter<T>>;
48
+ export {};
@@ -0,0 +1,202 @@
1
+ import { mergeErrorMap, ProcedureContract, resolveMetaPlugins } from '@orpc/contract';
2
+ import { getOwn, isNonPrimitive, omit, setOwn } from '@orpc/shared';
3
+ import { Lazy, unlazy } from './lazy.js';
4
+ import { createContractProcedure } from './procedure-utils.js';
5
+ import { Procedure } from './procedure.js';
6
+ import { getHiddenRouterContract } from './router-hidden.js';
7
+ export function augmentRouter(router, options) {
8
+ if (router instanceof Lazy) {
9
+ const [meta, metaPlugins] = resolveMetaPlugins(options.meta, options.metaPlugins, router['~orpc'].metaPlugins);
10
+ const enhanced = new Lazy({
11
+ meta,
12
+ metaPlugins,
13
+ async loader() {
14
+ const { default: unlaziedRouter } = await unlazy(router);
15
+ const enhanced = augmentRouter(unlaziedRouter, options);
16
+ return unlazy(enhanced);
17
+ },
18
+ });
19
+ return enhanced;
20
+ }
21
+ if (router instanceof Procedure) {
22
+ const [meta, metaPlugins] = resolveMetaPlugins(options.meta, options.metaPlugins, router['~orpc'].metaPlugins);
23
+ const enhanced = new Procedure({
24
+ ...omit(options, ['middlewares', 'errorMap', 'meta', 'metaPlugins']),
25
+ ...router['~orpc'],
26
+ meta,
27
+ metaPlugins,
28
+ errorMap: mergeErrorMap(options.errorMap, router['~orpc'].errorMap),
29
+ orderedMiddlewares: [
30
+ ...options.middlewares.map((middleware) => ({
31
+ middleware,
32
+ inputSchemasLengthAtUse: 0,
33
+ outputSchemasLengthAtUse: 0,
34
+ })),
35
+ ...router['~orpc'].orderedMiddlewares,
36
+ ],
37
+ });
38
+ return enhanced;
39
+ }
40
+ if (!isNonPrimitive(router)) {
41
+ return router;
42
+ }
43
+ const enhanced = {};
44
+ for (const [key, child] of Object.entries(router)) {
45
+ setOwn(enhanced, key, augmentRouter(child, options));
46
+ }
47
+ return enhanced;
48
+ }
49
+ export function augmentImplementedRouter(router, options) {
50
+ if (router instanceof Lazy) {
51
+ const enhanced = new Lazy({
52
+ ...router['~orpc'],
53
+ async loader() {
54
+ const { default: unlaziedRouter } = await unlazy(router);
55
+ const enhanced = augmentImplementedRouter(unlaziedRouter, options);
56
+ return unlazy(enhanced);
57
+ },
58
+ });
59
+ return enhanced;
60
+ }
61
+ if (router instanceof Procedure) {
62
+ const enhanced = new Procedure({
63
+ ...omit(options, ['middlewares']),
64
+ ...router['~orpc'],
65
+ orderedMiddlewares: [
66
+ ...options.middlewares.map((middleware) => ({
67
+ middleware,
68
+ inputSchemasLengthAtUse: 0,
69
+ outputSchemasLengthAtUse: 0,
70
+ })),
71
+ ...router['~orpc'].orderedMiddlewares,
72
+ ],
73
+ });
74
+ return enhanced;
75
+ }
76
+ if (!isNonPrimitive(router)) {
77
+ return router;
78
+ }
79
+ const enhanced = {};
80
+ for (const [key, child] of Object.entries(router)) {
81
+ setOwn(enhanced, key, augmentImplementedRouter(child, options));
82
+ }
83
+ return enhanced;
84
+ }
85
+ /**
86
+ * Resolves the procedure of a contract walked from a router: the procedure itself,
87
+ * or the implementation of a contract-first procedure, looked up by its path.
88
+ *
89
+ * @throws {TypeError} If a contract-first procedure has no valid implementation.
90
+ */
91
+ export async function resolveContractProcedure(router, contract, path) {
92
+ if (contract instanceof Procedure) {
93
+ return contract;
94
+ }
95
+ const { default: maybeProcedure } = await unlazy(getRouter(router, path));
96
+ if (!(maybeProcedure instanceof Procedure)) {
97
+ throw new TypeError(`[Contract-First] Missing or invalid implementation for procedure at path: "${path.join('.')}". ` +
98
+ `Ensure the procedure is correctly implemented and matches its contract.`);
99
+ }
100
+ return createContractProcedure(maybeProcedure, contract);
101
+ }
102
+ export function getRouter(router, path) {
103
+ let current = router;
104
+ for (let i = 0; i < path.length; i++) {
105
+ const segment = path[i];
106
+ if (!isNonPrimitive(current)) {
107
+ return undefined;
108
+ }
109
+ if (current instanceof Procedure) {
110
+ return undefined;
111
+ }
112
+ if (!(current instanceof Lazy)) {
113
+ current = getOwn(current, segment);
114
+ continue;
115
+ }
116
+ const lazied = current;
117
+ const rest = path.slice(i);
118
+ return new Lazy({
119
+ ...lazied['~orpc'],
120
+ async loader() {
121
+ const unwrapped = await unlazy(lazied);
122
+ const next = getRouter(unwrapped.default, rest);
123
+ return await unlazy(next);
124
+ },
125
+ });
126
+ }
127
+ if (!isNonPrimitive(current)) {
128
+ return undefined;
129
+ }
130
+ return current;
131
+ }
132
+ export function walkProcedureContractsSync(router, callback, path = []) {
133
+ const lazyResults = [];
134
+ walkProcedureContractsSyncInternal(router, callback, path.slice(), lazyResults);
135
+ return lazyResults;
136
+ }
137
+ function walkProcedureContractsSyncInternal(router, callback, path, lazyResults) {
138
+ const hiddenContract = getHiddenRouterContract(router);
139
+ if (hiddenContract !== undefined) {
140
+ router = hiddenContract;
141
+ }
142
+ if (router instanceof ProcedureContract) {
143
+ callback(router, path.slice());
144
+ return;
145
+ }
146
+ if (!isNonPrimitive(router)) {
147
+ return;
148
+ }
149
+ for (const [key, value] of Object.entries(router)) {
150
+ path.push(key);
151
+ if (value instanceof Lazy) {
152
+ lazyResults.push({ router: value, path: path.slice() });
153
+ }
154
+ else {
155
+ walkProcedureContractsSyncInternal(value, callback, path, lazyResults);
156
+ }
157
+ path.pop();
158
+ }
159
+ }
160
+ export async function walkProcedureContractsAsync(router, callback, path = []) {
161
+ const hiddenContract = getHiddenRouterContract(router);
162
+ if (hiddenContract !== undefined) {
163
+ router = hiddenContract;
164
+ }
165
+ if (router instanceof ProcedureContract) {
166
+ await callback(router, path);
167
+ return;
168
+ }
169
+ if (!isNonPrimitive(router)) {
170
+ return;
171
+ }
172
+ for (const [key, value] of Object.entries(router)) {
173
+ if (value instanceof Lazy) {
174
+ const { default: router } = await unlazy(value);
175
+ await walkProcedureContractsAsync(router, callback, [...path, key]);
176
+ }
177
+ else {
178
+ await walkProcedureContractsAsync(value, callback, [...path, key]);
179
+ }
180
+ }
181
+ }
182
+ /**
183
+ * Fully resolves all lazy routers inside a router, returning a plain router.
184
+ * Useful for making a router with lazy parts contract-compatible.
185
+ *
186
+ * @see {@link https://orpc.dev/docs/contract/router#router-to-contract | Router Contract - Router to Contract}
187
+ */
188
+ export async function unlazyRouter(router) {
189
+ if (router instanceof Procedure) {
190
+ return router;
191
+ }
192
+ if (!isNonPrimitive(router)) {
193
+ return router;
194
+ }
195
+ const unlazied = {};
196
+ for (const key of Object.keys(router)) {
197
+ const item = router[key];
198
+ const { default: unlaziedRouter } = await unlazy(item);
199
+ setOwn(unlazied, key, await unlazyRouter(unlaziedRouter));
200
+ }
201
+ return unlazied;
202
+ }
@@ -0,0 +1,72 @@
1
+ import type { InferSchemaInput, InferSchemaOutput, ORPCErrorFromErrorMap, ProcedureContract, RouterContract, ThrowableError } from '@orpc/contract';
2
+ import type { Context, MergedContext } from './context.ts';
3
+ import type { Lazyable } from './lazy.ts';
4
+ import type { Procedure } from './procedure.ts';
5
+ export type Router<TInitialContext extends Context> = Procedure<TInitialContext, any, any, any, any> | {
6
+ [k: string]: Lazyable<Router<TInitialContext>>;
7
+ };
8
+ export type ContractedRouter<T extends RouterContract, TInitialContext extends Context> = T extends ProcedureContract<infer $InputSchema, infer $OutputSchema, infer $ErrorMap> ? Procedure<TInitialContext, any, $InputSchema, $OutputSchema, $ErrorMap> : {
9
+ [K in keyof T]: T[K] extends RouterContract ? Lazyable<ContractedRouter<T[K], TInitialContext>> : never;
10
+ };
11
+ export type AnyRouter = Router<any>;
12
+ export type InferRouterInitialContext<T extends AnyRouter> = T extends Router<infer $> ? $ : never;
13
+ /**
14
+ * Infer all initial context of the router.
15
+ *
16
+ * @remarks
17
+ * **Note**: A procedure is a router too.
18
+ *
19
+ * @see {@link https://orpc.dev/docs/router#infer-router-initial-contexts | Router - Infer Router Initial Contexts}
20
+ */
21
+ export type InferRouterInitialContexts<T extends AnyRouter> = T extends Procedure<infer UInitialContext, any, any, any, any> ? UInitialContext : {
22
+ [K in keyof T]: T[K] extends Lazyable<infer U extends AnyRouter> ? InferRouterInitialContexts<U> : never;
23
+ };
24
+ /**
25
+ * Infer all current context of the router.
26
+ *
27
+ * @remarks
28
+ * **Note**: A procedure is a router too.
29
+ *
30
+ * @see {@link https://orpc.dev/docs/router#infer-router-final-contexts | Router - Infer Router Final Contexts}
31
+ */
32
+ export type InferRouterFinalContexts<T extends AnyRouter> = T extends Procedure<infer UInitialContext, infer UInjectedContext, any, any, any> ? MergedContext<UInitialContext, UInjectedContext> : {
33
+ [K in keyof T]: T[K] extends Lazyable<infer U extends AnyRouter> ? InferRouterFinalContexts<U> : never;
34
+ };
35
+ /**
36
+ * Infer all router inputs.
37
+ *
38
+ * @remarks
39
+ * **Note**: A procedure is a router too.
40
+ *
41
+ * @see {@link https://orpc.dev/docs/router#infer-router-inputs | Router - Infer Router Inputs}
42
+ */
43
+ export type InferRouterInputs<T extends AnyRouter> = T extends Procedure<any, any, infer UInputSchema, any, any> ? InferSchemaInput<UInputSchema> : {
44
+ [K in keyof T]: T[K] extends Lazyable<infer U extends AnyRouter> ? InferRouterInputs<U> : never;
45
+ };
46
+ /**
47
+ * Infer all router outputs.
48
+ *
49
+ * @remarks
50
+ * **Note**: A procedure is a router too.
51
+ *
52
+ * @see {@link https://orpc.dev/docs/router#infer-router-outputs | Router - Infer Router Outputs}
53
+ */
54
+ export type InferRouterOutputs<T extends AnyRouter> = T extends Procedure<any, any, any, infer UOutputSchema, any> ? InferSchemaOutput<UOutputSchema> : {
55
+ [K in keyof T]: T[K] extends Lazyable<infer U extends AnyRouter> ? InferRouterOutputs<U> : never;
56
+ };
57
+ /**
58
+ * Infer the union of throwable errors for entire router.
59
+ *
60
+ * @see {@link https://orpc.dev/docs/router#infer-router-error | Router - Infer Router Error}
61
+ */
62
+ export type InferRouterError<T extends AnyRouter> = T extends Procedure<any, any, any, any, infer UErrorMap> ? ORPCErrorFromErrorMap<UErrorMap> | ThrowableError : {
63
+ [K in keyof T]: T[K] extends Lazyable<infer U extends AnyRouter> ? InferRouterError<U> : never;
64
+ }[keyof T];
65
+ /**
66
+ * Infer throwable errors for each procedure, preserving the router shape.
67
+ *
68
+ * @see {@link https://orpc.dev/docs/router#infer-router-errors | Router - Infer Router Errors}
69
+ */
70
+ export type InferRouterErrors<T extends AnyRouter> = T extends Procedure<any, any, any, any, infer UErrorMap> ? ORPCErrorFromErrorMap<UErrorMap> | ThrowableError : {
71
+ [K in keyof T]: T[K] extends Lazyable<infer U extends AnyRouter> ? InferRouterErrors<U> : never;
72
+ };
package/package.json CHANGED
@@ -1,109 +1,128 @@
1
1
  {
2
2
  "name": "@orpc/server",
3
- "type": "module",
4
- "version": "2.0.0-beta.48",
3
+ "version": "2.0.0-beta.49",
5
4
  "description": "Build typesafe APIs with oRPC: RPC and OpenAPI support, middleware, and adapters for Node.js, Bun, Deno, Fetch, Fastify, WebSocket, AWS Lambda, and more",
6
- "license": "MIT",
7
- "funding": [
8
- "https://github.com/sponsors/dinwwwh",
9
- "https://opencollective.com/middleapi"
5
+ "keywords": [
6
+ "api",
7
+ "aws-lambda",
8
+ "bun",
9
+ "deno",
10
+ "fastify",
11
+ "middleware",
12
+ "nodejs",
13
+ "openapi",
14
+ "orpc",
15
+ "rpc",
16
+ "server",
17
+ "typesafe",
18
+ "typescript",
19
+ "websocket"
10
20
  ],
11
21
  "homepage": "https://orpc.dev",
22
+ "license": "MIT",
12
23
  "repository": {
13
24
  "type": "git",
14
25
  "url": "git+https://github.com/middleapi/orpc.git",
15
26
  "directory": "packages/server"
16
27
  },
17
- "keywords": [
18
- "orpc",
19
- "rpc",
20
- "api",
21
- "typescript",
22
- "typesafe",
23
- "server",
24
- "openapi",
25
- "middleware",
26
- "nodejs",
27
- "bun",
28
- "deno",
29
- "fastify",
30
- "websocket",
31
- "aws-lambda"
28
+ "funding": [
29
+ "https://github.com/sponsors/dinwwwh",
30
+ "https://opencollective.com/middleapi"
32
31
  ],
32
+ "files": [
33
+ "dist"
34
+ ],
35
+ "type": "module",
33
36
  "sideEffects": [
34
- "./dist/extensions/callable.mjs"
37
+ "./dist/extensions/callable.js"
35
38
  ],
36
39
  "exports": {
37
40
  "./package.json": "./package.json",
38
41
  ".": {
39
- "types": "./dist/index.d.mts",
40
- "import": "./dist/index.mjs",
41
- "default": "./dist/index.mjs"
42
+ "types": "./dist/index.d.ts",
43
+ "import": "./dist/index.js",
44
+ "default": "./dist/index.js"
42
45
  },
43
46
  "./helpers": {
44
- "types": "./dist/helpers/index.d.mts",
45
- "import": "./dist/helpers/index.mjs",
46
- "default": "./dist/helpers/index.mjs"
47
+ "types": "./dist/helpers/index.d.ts",
48
+ "import": "./dist/helpers/index.js",
49
+ "default": "./dist/helpers/index.js"
47
50
  },
48
51
  "./plugins": {
49
- "types": "./dist/plugins/index.d.mts",
50
- "import": "./dist/plugins/index.mjs",
51
- "default": "./dist/plugins/index.mjs"
52
+ "types": "./dist/plugins/index.d.ts",
53
+ "import": "./dist/plugins/index.js",
54
+ "default": "./dist/plugins/index.js"
52
55
  },
53
56
  "./standard": {
54
- "types": "./dist/adapters/standard/index.d.mts",
55
- "import": "./dist/adapters/standard/index.mjs",
56
- "default": "./dist/adapters/standard/index.mjs"
57
+ "types": "./dist/adapters/standard/index.d.ts",
58
+ "import": "./dist/adapters/standard/index.js",
59
+ "default": "./dist/adapters/standard/index.js"
57
60
  },
58
61
  "./standard-peer": {
59
- "types": "./dist/adapters/standard-peer/index.d.mts",
60
- "import": "./dist/adapters/standard-peer/index.mjs",
61
- "default": "./dist/adapters/standard-peer/index.mjs"
62
+ "types": "./dist/adapters/standard-peer/index.d.ts",
63
+ "import": "./dist/adapters/standard-peer/index.js",
64
+ "default": "./dist/adapters/standard-peer/index.js"
62
65
  },
63
66
  "./fetch": {
64
- "types": "./dist/adapters/fetch/index.d.mts",
65
- "import": "./dist/adapters/fetch/index.mjs",
66
- "default": "./dist/adapters/fetch/index.mjs"
67
+ "types": "./dist/adapters/fetch/index.d.ts",
68
+ "import": "./dist/adapters/fetch/index.js",
69
+ "default": "./dist/adapters/fetch/index.js"
67
70
  },
68
71
  "./node": {
69
- "types": "./dist/adapters/node/index.d.mts",
70
- "import": "./dist/adapters/node/index.mjs",
71
- "default": "./dist/adapters/node/index.mjs"
72
+ "types": "./dist/adapters/node/index.d.ts",
73
+ "import": "./dist/adapters/node/index.js",
74
+ "default": "./dist/adapters/node/index.js"
72
75
  },
73
76
  "./aws-lambda": {
74
- "types": "./dist/adapters/aws-lambda/index.d.mts",
75
- "import": "./dist/adapters/aws-lambda/index.mjs",
76
- "default": "./dist/adapters/aws-lambda/index.mjs"
77
+ "types": "./dist/adapters/aws-lambda/index.d.ts",
78
+ "import": "./dist/adapters/aws-lambda/index.js",
79
+ "default": "./dist/adapters/aws-lambda/index.js"
77
80
  },
78
81
  "./fastify": {
79
- "types": "./dist/adapters/fastify/index.d.mts",
80
- "import": "./dist/adapters/fastify/index.mjs",
81
- "default": "./dist/adapters/fastify/index.mjs"
82
+ "types": "./dist/adapters/fastify/index.d.ts",
83
+ "import": "./dist/adapters/fastify/index.js",
84
+ "default": "./dist/adapters/fastify/index.js"
82
85
  },
83
86
  "./websocket": {
84
- "types": "./dist/adapters/websocket/index.d.mts",
85
- "import": "./dist/adapters/websocket/index.mjs",
86
- "default": "./dist/adapters/websocket/index.mjs"
87
+ "types": "./dist/adapters/websocket/index.d.ts",
88
+ "import": "./dist/adapters/websocket/index.js",
89
+ "default": "./dist/adapters/websocket/index.js"
87
90
  },
88
91
  "./message-port": {
89
- "types": "./dist/adapters/message-port/index.d.mts",
90
- "import": "./dist/adapters/message-port/index.mjs",
91
- "default": "./dist/adapters/message-port/index.mjs"
92
+ "types": "./dist/adapters/message-port/index.d.ts",
93
+ "import": "./dist/adapters/message-port/index.js",
94
+ "default": "./dist/adapters/message-port/index.js"
92
95
  },
93
96
  "./crossws": {
94
- "types": "./dist/adapters/crossws/index.d.mts",
95
- "import": "./dist/adapters/crossws/index.mjs",
96
- "default": "./dist/adapters/crossws/index.mjs"
97
+ "types": "./dist/adapters/crossws/index.d.ts",
98
+ "import": "./dist/adapters/crossws/index.js",
99
+ "default": "./dist/adapters/crossws/index.js"
97
100
  },
98
101
  "./extensions/callable": {
99
- "types": "./dist/extensions/callable.d.mts",
100
- "import": "./dist/extensions/callable.mjs",
101
- "default": "./dist/extensions/callable.mjs"
102
+ "types": "./dist/extensions/callable.d.ts",
103
+ "import": "./dist/extensions/callable.js",
104
+ "default": "./dist/extensions/callable.js"
102
105
  }
103
106
  },
104
- "files": [
105
- "dist"
106
- ],
107
+ "dependencies": {
108
+ "@orpc/client": "2.0.0-beta.49",
109
+ "@orpc/contract": "2.0.0-beta.49",
110
+ "@orpc/shared": "2.0.0-beta.49",
111
+ "@standard-server/aws-lambda": "~0.15.0",
112
+ "@standard-server/core": "~0.15.0",
113
+ "@standard-server/fastify": "~0.15.0",
114
+ "@standard-server/fetch": "~0.15.0",
115
+ "@standard-server/node": "~0.15.0",
116
+ "@standard-server/peer": "~0.15.0",
117
+ "cookie": "^2.0.1"
118
+ },
119
+ "devDependencies": {
120
+ "crossws": "^0.4.17",
121
+ "fastify": "^5.12.8",
122
+ "supertest": "^7.3.1",
123
+ "ws": "^8.22.1",
124
+ "zod": "^4.6.7"
125
+ },
107
126
  "peerDependencies": {
108
127
  "crossws": ">=0.3.4",
109
128
  "fastify": ">=5.6.1"
@@ -116,26 +135,5 @@
116
135
  "optional": true
117
136
  }
118
137
  },
119
- "dependencies": {
120
- "@orpc/client": "2.0.0-beta.48",
121
- "@orpc/contract": "2.0.0-beta.48",
122
- "@orpc/shared": "2.0.0-beta.48",
123
- "@standard-server/aws-lambda": "~0.14.0",
124
- "@standard-server/core": "~0.14.0",
125
- "@standard-server/fastify": "~0.14.0",
126
- "@standard-server/fetch": "~0.14.0",
127
- "@standard-server/node": "~0.14.0",
128
- "@standard-server/peer": "~0.14.0",
129
- "cookie": "^2.0.1"
130
- },
131
- "devDependencies": {
132
- "crossws": "^0.4.17",
133
- "fastify": "^5.12.7",
134
- "supertest": "^7.3.1",
135
- "ws": "^8.22.0",
136
- "zod": "^4.6.7"
137
- },
138
- "scripts": {
139
- "type:check": "tsc -b"
140
- }
138
+ "scripts": {}
141
139
  }
@@ -1,25 +0,0 @@
1
- import type { MaybeOptionalOptions } from "@orpc/shared";
2
- import type { AnyAPIGatewayProxyEvent, HttpResponseStream, SendStandardResponseOptions } from "@standard-server/aws-lambda";
3
- import type { Context } from "../../context.mjs";
4
- import type { FriendlyStandardHandlerHandleOptions, StandardHandler } from "../standard/index.mjs";
5
- export type AwsLambdaHandlerHandleResult = {
6
- matched: true;
7
- } | {
8
- matched: false;
9
- };
10
- export interface AwsLambdaHandlerOptions<_T extends Context> {
11
- /**
12
- * Custom options for `sendStandardResponse`, used to send a `Standard Response`
13
- */
14
- sendStandardResponse?: SendStandardResponseOptions | undefined;
15
- }
16
- /**
17
- * Requires the AWS Lambda Node.js runtime with response streaming enabled,
18
- * handlers should be wrapped with `awslambda.streamifyResponse`.
19
- */
20
- export declare class AwsLambdaHandler<T extends Context> {
21
- private readonly standardHandler;
22
- private readonly sendStandardResponseOptions;
23
- constructor(standardHandler: StandardHandler<T>, options?: NoInfer<AwsLambdaHandlerOptions<T>>);
24
- handle(event: AnyAPIGatewayProxyEvent, responseStream: HttpResponseStream, ...rest: MaybeOptionalOptions<FriendlyStandardHandlerHandleOptions<T>>): Promise<AwsLambdaHandlerHandleResult>;
25
- }
@@ -1,21 +0,0 @@
1
- import { resolveMaybeOptionalOptions } from "@orpc/shared";
2
- import { sendStandardResponse, toStandardLazyRequest } from "@standard-server/aws-lambda";
3
- import { resolveFriendlyStandardHandlerHandleOptions } from "../standard/index.mjs";
4
-
5
- export class AwsLambdaHandler {
6
- standardHandler;
7
- sendStandardResponseOptions;
8
- constructor(standardHandler, options = {}) {
9
- this.standardHandler = standardHandler;
10
- this.sendStandardResponseOptions = options.sendStandardResponse;
11
- }
12
- async handle(event, responseStream, ...rest) {
13
- const standardRequest = toStandardLazyRequest(event, responseStream);
14
- const result = await this.standardHandler.handle(standardRequest, resolveFriendlyStandardHandlerHandleOptions(resolveMaybeOptionalOptions(rest)));
15
- if (!result.matched) {
16
- return result;
17
- }
18
- await sendStandardResponse(responseStream, result.response, this.sendStandardResponseOptions);
19
- return result;
20
- }
21
- }