@orpc/server 1.3.0 → 1.4.0

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.
@@ -0,0 +1,45 @@
1
+ import { MaybeOptionalOptions } from '@orpc/shared';
2
+ import { SendStandardResponseOptions, APIGatewayProxyEventV2, ResponseStream } from '@orpc/standard-server-aws-lambda';
3
+ import { C as Context, R as Router } from '../../shared/server.DD2C4ujN.mjs';
4
+ import { i as StandardHandler } from '../../shared/server.Dq8xr7PQ.mjs';
5
+ import { F as FriendlyStandardHandleOptions } from '../../shared/server.BliFSTnG.mjs';
6
+ import { S as StandardRPCHandlerOptions } from '../../shared/server.Bd52nNaH.mjs';
7
+ import '@orpc/client';
8
+ import '@orpc/contract';
9
+ import '@orpc/standard-server';
10
+ import '@orpc/client/standard';
11
+
12
+ interface AwsLambdaHandlerOptions extends SendStandardResponseOptions {
13
+ }
14
+ type AwsLambdaHandleResult = {
15
+ matched: true;
16
+ } | {
17
+ matched: false;
18
+ };
19
+ declare class AwsLambdaHandler<T extends Context> {
20
+ private readonly standardHandler;
21
+ private readonly sendStandardResponseOptions;
22
+ constructor(standardHandler: StandardHandler<T>, options?: AwsLambdaHandlerOptions);
23
+ handle(event: APIGatewayProxyEventV2, responseStream: ResponseStream, ...rest: MaybeOptionalOptions<FriendlyStandardHandleOptions<T>>): Promise<AwsLambdaHandleResult>;
24
+ }
25
+
26
+ type RPCHandlerOptions<T extends Context> = AwsLambdaHandlerOptions & StandardRPCHandlerOptions<T> & {
27
+ /**
28
+ * Enables or disables the StrictGetMethodPlugin.
29
+ *
30
+ * @default true
31
+ */
32
+ strictGetMethodPluginEnabled?: boolean;
33
+ };
34
+ /**
35
+ * RPC Handler for AWS Lambda.
36
+ *
37
+ * @see {@link https://orpc.unnoq.com/docs/rpc-handler RPC Handler Docs}
38
+ * @see {@link https://orpc.unnoq.com/docs/adapters/http HTTP Adapter Docs}
39
+ */
40
+ declare class experimental_RPCHandler<T extends Context> extends AwsLambdaHandler<T> {
41
+ constructor(router: Router<any, T>, options?: NoInfer<RPCHandlerOptions<T>>);
42
+ }
43
+
44
+ export { AwsLambdaHandler, experimental_RPCHandler };
45
+ export type { AwsLambdaHandleResult, AwsLambdaHandlerOptions, RPCHandlerOptions };
@@ -0,0 +1,45 @@
1
+ import { MaybeOptionalOptions } from '@orpc/shared';
2
+ import { SendStandardResponseOptions, APIGatewayProxyEventV2, ResponseStream } from '@orpc/standard-server-aws-lambda';
3
+ import { C as Context, R as Router } from '../../shared/server.DD2C4ujN.js';
4
+ import { i as StandardHandler } from '../../shared/server.-ACo36I0.js';
5
+ import { F as FriendlyStandardHandleOptions } from '../../shared/server.IG2MjhrD.js';
6
+ import { S as StandardRPCHandlerOptions } from '../../shared/server.BPAWobQg.js';
7
+ import '@orpc/client';
8
+ import '@orpc/contract';
9
+ import '@orpc/standard-server';
10
+ import '@orpc/client/standard';
11
+
12
+ interface AwsLambdaHandlerOptions extends SendStandardResponseOptions {
13
+ }
14
+ type AwsLambdaHandleResult = {
15
+ matched: true;
16
+ } | {
17
+ matched: false;
18
+ };
19
+ declare class AwsLambdaHandler<T extends Context> {
20
+ private readonly standardHandler;
21
+ private readonly sendStandardResponseOptions;
22
+ constructor(standardHandler: StandardHandler<T>, options?: AwsLambdaHandlerOptions);
23
+ handle(event: APIGatewayProxyEventV2, responseStream: ResponseStream, ...rest: MaybeOptionalOptions<FriendlyStandardHandleOptions<T>>): Promise<AwsLambdaHandleResult>;
24
+ }
25
+
26
+ type RPCHandlerOptions<T extends Context> = AwsLambdaHandlerOptions & StandardRPCHandlerOptions<T> & {
27
+ /**
28
+ * Enables or disables the StrictGetMethodPlugin.
29
+ *
30
+ * @default true
31
+ */
32
+ strictGetMethodPluginEnabled?: boolean;
33
+ };
34
+ /**
35
+ * RPC Handler for AWS Lambda.
36
+ *
37
+ * @see {@link https://orpc.unnoq.com/docs/rpc-handler RPC Handler Docs}
38
+ * @see {@link https://orpc.unnoq.com/docs/adapters/http HTTP Adapter Docs}
39
+ */
40
+ declare class experimental_RPCHandler<T extends Context> extends AwsLambdaHandler<T> {
41
+ constructor(router: Router<any, T>, options?: NoInfer<RPCHandlerOptions<T>>);
42
+ }
43
+
44
+ export { AwsLambdaHandler, experimental_RPCHandler };
45
+ export type { AwsLambdaHandleResult, AwsLambdaHandlerOptions, RPCHandlerOptions };
@@ -0,0 +1,41 @@
1
+ import { resolveMaybeOptionalOptions } from '@orpc/shared';
2
+ import { toStandardLazyRequest, sendStandardResponse } from '@orpc/standard-server-aws-lambda';
3
+ import { r as resolveFriendlyStandardHandleOptions } from '../../shared/server.BVwwTHyO.mjs';
4
+ import '@orpc/standard-server';
5
+ import '@orpc/standard-server/batch';
6
+ import '@orpc/client';
7
+ import { S as StrictGetMethodPlugin } from '../../shared/server.BW-nUGgA.mjs';
8
+ import '@orpc/contract';
9
+ import { b as StandardRPCHandler } from '../../shared/server.CHvOkcM3.mjs';
10
+ import '@orpc/client/standard';
11
+ import '../../shared/server.DG7Tamti.mjs';
12
+
13
+ class AwsLambdaHandler {
14
+ constructor(standardHandler, options = {}) {
15
+ this.standardHandler = standardHandler;
16
+ this.sendStandardResponseOptions = options;
17
+ }
18
+ sendStandardResponseOptions;
19
+ async handle(event, responseStream, ...rest) {
20
+ const standardRequest = toStandardLazyRequest(event, responseStream);
21
+ const options = resolveFriendlyStandardHandleOptions(resolveMaybeOptionalOptions(rest));
22
+ const result = await this.standardHandler.handle(standardRequest, options);
23
+ if (!result.matched) {
24
+ return { matched: false };
25
+ }
26
+ await sendStandardResponse(responseStream, result.response, this.sendStandardResponseOptions);
27
+ return { matched: true };
28
+ }
29
+ }
30
+
31
+ class experimental_RPCHandler extends AwsLambdaHandler {
32
+ constructor(router, options = {}) {
33
+ if (options.strictGetMethodPluginEnabled ?? true) {
34
+ options.plugins ??= [];
35
+ options.plugins.push(new StrictGetMethodPlugin());
36
+ }
37
+ super(new StandardRPCHandler(router, options), options);
38
+ }
39
+ }
40
+
41
+ export { AwsLambdaHandler, experimental_RPCHandler };
@@ -4,7 +4,7 @@ import { r as resolveFriendlyStandardHandleOptions } from '../../shared/server.B
4
4
  import '@orpc/client';
5
5
  import '@orpc/standard-server';
6
6
  import '@orpc/contract';
7
- import { b as StandardRPCHandler } from '../../shared/server.4FnxLwwr.mjs';
7
+ import { b as StandardRPCHandler } from '../../shared/server.CHvOkcM3.mjs';
8
8
  import '@orpc/client/standard';
9
9
  import '../../shared/server.DG7Tamti.mjs';
10
10
 
@@ -4,7 +4,7 @@ import { r as resolveFriendlyStandardHandleOptions } from '../../shared/server.B
4
4
  import '@orpc/client';
5
5
  import '@orpc/standard-server';
6
6
  import '@orpc/contract';
7
- import { b as StandardRPCHandler } from '../../shared/server.4FnxLwwr.mjs';
7
+ import { b as StandardRPCHandler } from '../../shared/server.CHvOkcM3.mjs';
8
8
  import '@orpc/client/standard';
9
9
  import '../../shared/server.DG7Tamti.mjs';
10
10
 
@@ -4,7 +4,7 @@ import { toStandardLazyRequest, toFetchResponse } from '@orpc/standard-server-fe
4
4
  import { r as resolveFriendlyStandardHandleOptions } from '../../shared/server.BVwwTHyO.mjs';
5
5
  import '@orpc/standard-server';
6
6
  import '@orpc/contract';
7
- import { C as CompositeStandardHandlerPlugin, b as StandardRPCHandler } from '../../shared/server.4FnxLwwr.mjs';
7
+ import { C as CompositeStandardHandlerPlugin, b as StandardRPCHandler } from '../../shared/server.CHvOkcM3.mjs';
8
8
  import '@orpc/client/standard';
9
9
  import '@orpc/standard-server/batch';
10
10
  import { S as StrictGetMethodPlugin } from '../../shared/server.BW-nUGgA.mjs';
@@ -5,7 +5,7 @@ import { r as resolveFriendlyStandardHandleOptions } from '../../shared/server.B
5
5
  import '@orpc/client';
6
6
  import '@orpc/standard-server';
7
7
  import '@orpc/contract';
8
- import { b as StandardRPCHandler } from '../../shared/server.4FnxLwwr.mjs';
8
+ import { b as StandardRPCHandler } from '../../shared/server.CHvOkcM3.mjs';
9
9
  import '@orpc/client/standard';
10
10
  import '../../shared/server.DG7Tamti.mjs';
11
11
 
@@ -4,7 +4,7 @@ import { toStandardLazyRequest, sendStandardResponse } from '@orpc/standard-serv
4
4
  import { r as resolveFriendlyStandardHandleOptions } from '../../shared/server.BVwwTHyO.mjs';
5
5
  import '@orpc/standard-server';
6
6
  import '@orpc/contract';
7
- import { C as CompositeStandardHandlerPlugin, b as StandardRPCHandler } from '../../shared/server.4FnxLwwr.mjs';
7
+ import { C as CompositeStandardHandlerPlugin, b as StandardRPCHandler } from '../../shared/server.CHvOkcM3.mjs';
8
8
  import '@orpc/client/standard';
9
9
  import '@orpc/standard-server/batch';
10
10
  import { S as StrictGetMethodPlugin } from '../../shared/server.BW-nUGgA.mjs';
@@ -1,4 +1,4 @@
1
- export { C as CompositeStandardHandlerPlugin, S as StandardHandler, a as StandardRPCCodec, b as StandardRPCHandler, c as StandardRPCMatcher } from '../../shared/server.4FnxLwwr.mjs';
1
+ export { C as CompositeStandardHandlerPlugin, S as StandardHandler, a as StandardRPCCodec, b as StandardRPCHandler, c as StandardRPCMatcher } from '../../shared/server.CHvOkcM3.mjs';
2
2
  import '@orpc/client/standard';
3
3
  import '@orpc/client';
4
4
  import '@orpc/shared';
@@ -4,7 +4,7 @@ import { r as resolveFriendlyStandardHandleOptions } from '../../shared/server.B
4
4
  import '@orpc/client';
5
5
  import '@orpc/standard-server';
6
6
  import '@orpc/contract';
7
- import { b as StandardRPCHandler } from '../../shared/server.4FnxLwwr.mjs';
7
+ import { b as StandardRPCHandler } from '../../shared/server.CHvOkcM3.mjs';
8
8
  import '@orpc/client/standard';
9
9
  import '../../shared/server.DG7Tamti.mjs';
10
10
 
@@ -4,7 +4,7 @@ import { r as resolveFriendlyStandardHandleOptions } from '../../shared/server.B
4
4
  import '@orpc/client';
5
5
  import '@orpc/standard-server';
6
6
  import '@orpc/contract';
7
- import { b as StandardRPCHandler } from '../../shared/server.4FnxLwwr.mjs';
7
+ import { b as StandardRPCHandler } from '../../shared/server.CHvOkcM3.mjs';
8
8
  import '@orpc/client/standard';
9
9
  import '../../shared/server.DG7Tamti.mjs';
10
10
 
@@ -33,10 +33,10 @@ interface BatchHandlerOptions<T extends Context> {
33
33
  headers?: Value<Promisable<StandardHeaders>, [responses: Promise<BatchResponseBodyItem>[], batchOptions: StandardHandlerInterceptorOptions<T>]>;
34
34
  }
35
35
  /**
36
- * The Batch Request/Response Plugin allows you to combine multiple requests and responses into a single batch,
36
+ * The Batch Requests Plugin allows you to combine multiple requests and responses into a single batch,
37
37
  * reducing the overhead of sending each one separately.
38
38
  *
39
- * @see {@link https://orpc.unnoq.com/docs/plugins/batch-request-response Batch Request/Response Plugin Docs}
39
+ * @see {@link https://orpc.unnoq.com/docs/plugins/batch-requests Batch Requests Plugin Docs}
40
40
  */
41
41
  declare class BatchHandlerPlugin<T extends Context> implements StandardHandlerPlugin<T> {
42
42
  private readonly maxSize;
@@ -33,10 +33,10 @@ interface BatchHandlerOptions<T extends Context> {
33
33
  headers?: Value<Promisable<StandardHeaders>, [responses: Promise<BatchResponseBodyItem>[], batchOptions: StandardHandlerInterceptorOptions<T>]>;
34
34
  }
35
35
  /**
36
- * The Batch Request/Response Plugin allows you to combine multiple requests and responses into a single batch,
36
+ * The Batch Requests Plugin allows you to combine multiple requests and responses into a single batch,
37
37
  * reducing the overhead of sending each one separately.
38
38
  *
39
- * @see {@link https://orpc.unnoq.com/docs/plugins/batch-request-response Batch Request/Response Plugin Docs}
39
+ * @see {@link https://orpc.unnoq.com/docs/plugins/batch-requests Batch Requests Plugin Docs}
40
40
  */
41
41
  declare class BatchHandlerPlugin<T extends Context> implements StandardHandlerPlugin<T> {
42
42
  private readonly maxSize;
@@ -1,6 +1,6 @@
1
1
  import { value, isAsyncIteratorObject } from '@orpc/shared';
2
- import { parseBatchRequest, toBatchResponse } from '@orpc/standard-server/batch';
3
2
  import { flattenHeader } from '@orpc/standard-server';
3
+ import { parseBatchRequest, toBatchResponse } from '@orpc/standard-server/batch';
4
4
  import { ORPCError } from '@orpc/client';
5
5
  export { S as StrictGetMethodPlugin } from '../shared/server.BW-nUGgA.mjs';
6
6
  import '@orpc/contract';
@@ -26,7 +26,8 @@ class BatchHandlerPlugin {
26
26
  init(options) {
27
27
  options.rootInterceptors ??= [];
28
28
  options.rootInterceptors.unshift(async (options2) => {
29
- if (options2.request.headers["x-orpc-batch"] !== "1") {
29
+ const xHeader = flattenHeader(options2.request.headers["x-orpc-batch"]);
30
+ if (xHeader === void 0) {
30
31
  return options2.next();
31
32
  }
32
33
  let isParsing = false;
@@ -69,9 +70,10 @@ class BatchHandlerPlugin {
69
70
  await Promise.race(responses);
70
71
  const status = await value(this.successStatus, responses, options2);
71
72
  const headers = await value(this.headers, responses, options2);
72
- const response = toBatchResponse({
73
+ const response = await toBatchResponse({
73
74
  status,
74
75
  headers,
76
+ mode: xHeader === "buffered" ? "buffered" : "streaming",
75
77
  body: async function* () {
76
78
  const promises = [...responses];
77
79
  while (true) {
@@ -1,6 +1,6 @@
1
1
  import { toHttpPath, StandardRPCJsonSerializer, StandardRPCSerializer } from '@orpc/client/standard';
2
2
  import { ORPCError, toORPCError } from '@orpc/client';
3
- import { toArray, intercept, parseEmptyableJSON } from '@orpc/shared';
3
+ import { toArray, intercept, parseEmptyableJSON, NullProtoObj } from '@orpc/shared';
4
4
  import { flattenHeader } from '@orpc/standard-server';
5
5
  import { c as createProcedureClient, t as traverseContractProcedures, i as isProcedure, u as unlazy, g as getRouter, a as createContractedProcedure } from './server.DG7Tamti.mjs';
6
6
 
@@ -112,7 +112,7 @@ class StandardRPCCodec {
112
112
  }
113
113
 
114
114
  class StandardRPCMatcher {
115
- tree = {};
115
+ tree = new NullProtoObj();
116
116
  pendingRouters = [];
117
117
  init(router, path = []) {
118
118
  const laziedOptions = traverseContractProcedures({ router, path }, ({ path: path2, contract }) => {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@orpc/server",
3
3
  "type": "module",
4
- "version": "1.3.0",
4
+ "version": "1.4.0",
5
5
  "license": "MIT",
6
6
  "homepage": "https://orpc.unnoq.com",
7
7
  "repository": {
@@ -39,6 +39,11 @@
39
39
  "import": "./dist/adapters/node/index.mjs",
40
40
  "default": "./dist/adapters/node/index.mjs"
41
41
  },
42
+ "./aws-lambda": {
43
+ "types": "./dist/adapters/aws-lambda/index.d.mts",
44
+ "import": "./dist/adapters/aws-lambda/index.mjs",
45
+ "default": "./dist/adapters/aws-lambda/index.mjs"
46
+ },
42
47
  "./websocket": {
43
48
  "types": "./dist/adapters/websocket/index.d.mts",
44
49
  "import": "./dist/adapters/websocket/index.mjs",
@@ -81,17 +86,18 @@
81
86
  }
82
87
  },
83
88
  "dependencies": {
84
- "@orpc/client": "1.3.0",
85
- "@orpc/shared": "1.3.0",
86
- "@orpc/contract": "1.3.0",
87
- "@orpc/standard-server": "1.3.0",
88
- "@orpc/standard-server-fetch": "1.3.0",
89
- "@orpc/standard-server-node": "1.3.0",
90
- "@orpc/standard-server-peer": "1.3.0"
89
+ "@orpc/client": "1.4.0",
90
+ "@orpc/shared": "1.4.0",
91
+ "@orpc/contract": "1.4.0",
92
+ "@orpc/standard-server": "1.4.0",
93
+ "@orpc/standard-server-aws-lambda": "1.4.0",
94
+ "@orpc/standard-server-node": "1.4.0",
95
+ "@orpc/standard-server-fetch": "1.4.0",
96
+ "@orpc/standard-server-peer": "1.4.0"
91
97
  },
92
98
  "devDependencies": {
93
99
  "@types/ws": "^8.18.1",
94
- "crossws": "^0.3.4",
100
+ "crossws": "^0.4.1",
95
101
  "next": "^15.3.0",
96
102
  "supertest": "^7.1.0",
97
103
  "ws": "^8.18.1"