@orpc/server 0.0.0-next.262a4c9 → 0.0.0-next.273b7ab

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 (51) hide show
  1. package/README.md +5 -7
  2. package/dist/adapters/aws-lambda/index.d.mts +44 -0
  3. package/dist/adapters/aws-lambda/index.d.ts +44 -0
  4. package/dist/adapters/aws-lambda/index.mjs +40 -0
  5. package/dist/adapters/bun-ws/index.d.mts +3 -4
  6. package/dist/adapters/bun-ws/index.d.ts +3 -4
  7. package/dist/adapters/bun-ws/index.mjs +4 -10
  8. package/dist/adapters/crossws/index.d.mts +3 -4
  9. package/dist/adapters/crossws/index.d.ts +3 -4
  10. package/dist/adapters/crossws/index.mjs +4 -10
  11. package/dist/adapters/fetch/index.d.mts +5 -6
  12. package/dist/adapters/fetch/index.d.ts +5 -6
  13. package/dist/adapters/fetch/index.mjs +2 -3
  14. package/dist/adapters/message-port/index.d.mts +27 -0
  15. package/dist/adapters/message-port/index.d.ts +27 -0
  16. package/dist/adapters/message-port/index.mjs +40 -0
  17. package/dist/adapters/node/index.d.mts +5 -6
  18. package/dist/adapters/node/index.d.ts +5 -6
  19. package/dist/adapters/node/index.mjs +2 -3
  20. package/dist/adapters/standard/index.d.mts +4 -4
  21. package/dist/adapters/standard/index.d.ts +4 -4
  22. package/dist/adapters/standard/index.mjs +2 -2
  23. package/dist/adapters/websocket/index.d.mts +29 -6
  24. package/dist/adapters/websocket/index.d.ts +29 -6
  25. package/dist/adapters/websocket/index.mjs +46 -16
  26. package/dist/adapters/ws/index.d.mts +3 -4
  27. package/dist/adapters/ws/index.d.ts +3 -4
  28. package/dist/adapters/ws/index.mjs +4 -4
  29. package/dist/hibernation/index.d.mts +44 -0
  30. package/dist/hibernation/index.d.ts +44 -0
  31. package/dist/hibernation/index.mjs +65 -0
  32. package/dist/index.d.mts +17 -12
  33. package/dist/index.d.ts +17 -12
  34. package/dist/index.mjs +22 -8
  35. package/dist/plugins/index.d.mts +13 -13
  36. package/dist/plugins/index.d.ts +13 -13
  37. package/dist/plugins/index.mjs +14 -6
  38. package/dist/shared/{server.YZzrREz9.d.ts → server.-ACo36I0.d.ts} +6 -6
  39. package/dist/shared/server.CLcOiNNH.d.ts +19 -0
  40. package/dist/shared/{server.4FnxLwwr.mjs → server.CQ4gr8z6.mjs} +12 -4
  41. package/dist/shared/server.D2T2AlNJ.d.mts +19 -0
  42. package/dist/shared/{server.DPWk5pjW.d.mts → server.DD2C4ujN.d.mts} +4 -4
  43. package/dist/shared/{server.DPWk5pjW.d.ts → server.DD2C4ujN.d.ts} +4 -4
  44. package/dist/shared/{server.DG7Tamti.mjs → server.DLJzqnSX.mjs} +3 -2
  45. package/dist/shared/{server.eWLxY3lq.d.mts → server.Dq8xr7PQ.d.mts} +6 -6
  46. package/package.json +27 -11
  47. package/dist/shared/server.BRoxSiSC.d.mts +0 -12
  48. package/dist/shared/server.BVwwTHyO.mjs +0 -9
  49. package/dist/shared/server.BjiJH9Vo.d.ts +0 -10
  50. package/dist/shared/server.Cy1vfSiG.d.ts +0 -12
  51. package/dist/shared/server.QUe9N8P4.d.mts +0 -10
@@ -1,8 +1,8 @@
1
- import { Value } from '@orpc/shared';
1
+ import { Value, Promisable } from '@orpc/shared';
2
2
  import { StandardRequest, StandardHeaders } from '@orpc/standard-server';
3
3
  import { BatchResponseBodyItem } from '@orpc/standard-server/batch';
4
- import { S as StandardHandlerInterceptorOptions, a as StandardHandlerPlugin, b as StandardHandlerOptions } from '../shared/server.eWLxY3lq.mjs';
5
- import { C as Context, F as ProcedureClientInterceptorOptions } from '../shared/server.DPWk5pjW.mjs';
4
+ import { S as StandardHandlerInterceptorOptions, a as StandardHandlerPlugin, b as StandardHandlerOptions } from '../shared/server.Dq8xr7PQ.mjs';
5
+ import { C as Context, F as ProcedureClientInterceptorOptions } from '../shared/server.DD2C4ujN.mjs';
6
6
  import { Meta, ORPCError as ORPCError$1 } from '@orpc/contract';
7
7
  import { ORPCError } from '@orpc/client';
8
8
 
@@ -12,7 +12,7 @@ interface BatchHandlerOptions<T extends Context> {
12
12
  *
13
13
  * @default 10
14
14
  */
15
- maxSize?: Value<number, [StandardHandlerInterceptorOptions<T>]>;
15
+ maxSize?: Value<Promisable<number>, [StandardHandlerInterceptorOptions<T>]>;
16
16
  /**
17
17
  * Map the request before processing it.
18
18
  *
@@ -24,19 +24,19 @@ interface BatchHandlerOptions<T extends Context> {
24
24
  *
25
25
  * @default 207
26
26
  */
27
- successStatus?: Value<number, [responses: Promise<BatchResponseBodyItem>[], batchOptions: StandardHandlerInterceptorOptions<T>]>;
27
+ successStatus?: Value<Promisable<number>, [responses: Promise<BatchResponseBodyItem>[], batchOptions: StandardHandlerInterceptorOptions<T>]>;
28
28
  /**
29
29
  * success batch response headers.
30
30
  *
31
31
  * @default {}
32
32
  */
33
- headers?: Value<StandardHeaders, [responses: Promise<BatchResponseBodyItem>[], batchOptions: StandardHandlerInterceptorOptions<T>]>;
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;
@@ -49,8 +49,8 @@ declare class BatchHandlerPlugin<T extends Context> implements StandardHandlerPl
49
49
  }
50
50
 
51
51
  interface CORSOptions<T extends Context> {
52
- origin?: Value<string | readonly string[] | null | undefined, [origin: string, options: StandardHandlerInterceptorOptions<T>]>;
53
- timingOrigin?: Value<string | readonly string[] | null | undefined, [origin: string, options: StandardHandlerInterceptorOptions<T>]>;
52
+ origin?: Value<Promisable<string | readonly string[] | null | undefined>, [origin: string, options: StandardHandlerInterceptorOptions<T>]>;
53
+ timingOrigin?: Value<Promisable<string | readonly string[] | null | undefined>, [origin: string, options: StandardHandlerInterceptorOptions<T>]>;
54
54
  allowMethods?: readonly string[];
55
55
  allowHeaders?: readonly string[];
56
56
  maxAge?: number;
@@ -88,21 +88,21 @@ interface SimpleCsrfProtectionHandlerPluginOptions<T extends Context> {
88
88
  *
89
89
  * @default 'x-csrf-token'
90
90
  */
91
- headerName?: Value<string, [options: StandardHandlerInterceptorOptions<T>]>;
91
+ headerName?: Value<Promisable<string>, [options: StandardHandlerInterceptorOptions<T>]>;
92
92
  /**
93
93
  * The value of the header to check.
94
94
  *
95
95
  * @default 'orpc'
96
96
  *
97
97
  */
98
- headerValue?: Value<string, [options: StandardHandlerInterceptorOptions<T>]>;
98
+ headerValue?: Value<Promisable<string>, [options: StandardHandlerInterceptorOptions<T>]>;
99
99
  /**
100
100
  * Exclude a procedure from the plugin.
101
101
  *
102
102
  * @default false
103
103
  *
104
104
  */
105
- exclude?: Value<boolean, [options: ProcedureClientInterceptorOptions<T, Record<never, never>, Meta>]>;
105
+ exclude?: Value<Promisable<boolean>, [options: ProcedureClientInterceptorOptions<T, Record<never, never>, Meta>]>;
106
106
  /**
107
107
  * The error thrown when the CSRF token is invalid.
108
108
  *
@@ -1,8 +1,8 @@
1
- import { Value } from '@orpc/shared';
1
+ import { Value, Promisable } from '@orpc/shared';
2
2
  import { StandardRequest, StandardHeaders } from '@orpc/standard-server';
3
3
  import { BatchResponseBodyItem } from '@orpc/standard-server/batch';
4
- import { S as StandardHandlerInterceptorOptions, a as StandardHandlerPlugin, b as StandardHandlerOptions } from '../shared/server.YZzrREz9.js';
5
- import { C as Context, F as ProcedureClientInterceptorOptions } from '../shared/server.DPWk5pjW.js';
4
+ import { S as StandardHandlerInterceptorOptions, a as StandardHandlerPlugin, b as StandardHandlerOptions } from '../shared/server.-ACo36I0.js';
5
+ import { C as Context, F as ProcedureClientInterceptorOptions } from '../shared/server.DD2C4ujN.js';
6
6
  import { Meta, ORPCError as ORPCError$1 } from '@orpc/contract';
7
7
  import { ORPCError } from '@orpc/client';
8
8
 
@@ -12,7 +12,7 @@ interface BatchHandlerOptions<T extends Context> {
12
12
  *
13
13
  * @default 10
14
14
  */
15
- maxSize?: Value<number, [StandardHandlerInterceptorOptions<T>]>;
15
+ maxSize?: Value<Promisable<number>, [StandardHandlerInterceptorOptions<T>]>;
16
16
  /**
17
17
  * Map the request before processing it.
18
18
  *
@@ -24,19 +24,19 @@ interface BatchHandlerOptions<T extends Context> {
24
24
  *
25
25
  * @default 207
26
26
  */
27
- successStatus?: Value<number, [responses: Promise<BatchResponseBodyItem>[], batchOptions: StandardHandlerInterceptorOptions<T>]>;
27
+ successStatus?: Value<Promisable<number>, [responses: Promise<BatchResponseBodyItem>[], batchOptions: StandardHandlerInterceptorOptions<T>]>;
28
28
  /**
29
29
  * success batch response headers.
30
30
  *
31
31
  * @default {}
32
32
  */
33
- headers?: Value<StandardHeaders, [responses: Promise<BatchResponseBodyItem>[], batchOptions: StandardHandlerInterceptorOptions<T>]>;
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;
@@ -49,8 +49,8 @@ declare class BatchHandlerPlugin<T extends Context> implements StandardHandlerPl
49
49
  }
50
50
 
51
51
  interface CORSOptions<T extends Context> {
52
- origin?: Value<string | readonly string[] | null | undefined, [origin: string, options: StandardHandlerInterceptorOptions<T>]>;
53
- timingOrigin?: Value<string | readonly string[] | null | undefined, [origin: string, options: StandardHandlerInterceptorOptions<T>]>;
52
+ origin?: Value<Promisable<string | readonly string[] | null | undefined>, [origin: string, options: StandardHandlerInterceptorOptions<T>]>;
53
+ timingOrigin?: Value<Promisable<string | readonly string[] | null | undefined>, [origin: string, options: StandardHandlerInterceptorOptions<T>]>;
54
54
  allowMethods?: readonly string[];
55
55
  allowHeaders?: readonly string[];
56
56
  maxAge?: number;
@@ -88,21 +88,21 @@ interface SimpleCsrfProtectionHandlerPluginOptions<T extends Context> {
88
88
  *
89
89
  * @default 'x-csrf-token'
90
90
  */
91
- headerName?: Value<string, [options: StandardHandlerInterceptorOptions<T>]>;
91
+ headerName?: Value<Promisable<string>, [options: StandardHandlerInterceptorOptions<T>]>;
92
92
  /**
93
93
  * The value of the header to check.
94
94
  *
95
95
  * @default 'orpc'
96
96
  *
97
97
  */
98
- headerValue?: Value<string, [options: StandardHandlerInterceptorOptions<T>]>;
98
+ headerValue?: Value<Promisable<string>, [options: StandardHandlerInterceptorOptions<T>]>;
99
99
  /**
100
100
  * Exclude a procedure from the plugin.
101
101
  *
102
102
  * @default false
103
103
  *
104
104
  */
105
- exclude?: Value<boolean, [options: ProcedureClientInterceptorOptions<T, Record<never, never>, Meta>]>;
105
+ exclude?: Value<Promisable<boolean>, [options: ProcedureClientInterceptorOptions<T, Record<never, never>, Meta>]>;
106
106
  /**
107
107
  * The error thrown when the CSRF token is invalid.
108
108
  *
@@ -1,6 +1,6 @@
1
- import { value, isAsyncIteratorObject } from '@orpc/shared';
2
- import { parseBatchRequest, toBatchResponse } from '@orpc/standard-server/batch';
1
+ import { value, isAsyncIteratorObject, clone } from '@orpc/shared';
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) {
@@ -190,7 +192,7 @@ class ResponseHeadersPlugin {
190
192
  if (!result.matched) {
191
193
  return result;
192
194
  }
193
- const responseHeaders = result.response.headers;
195
+ const responseHeaders = clone(result.response.headers);
194
196
  for (const [key, value] of resHeaders) {
195
197
  if (Array.isArray(responseHeaders[key])) {
196
198
  responseHeaders[key].push(value);
@@ -200,7 +202,13 @@ class ResponseHeadersPlugin {
200
202
  responseHeaders[key] = value;
201
203
  }
202
204
  }
203
- return result;
205
+ return {
206
+ ...result,
207
+ response: {
208
+ ...result.response,
209
+ headers: responseHeaders
210
+ }
211
+ };
204
212
  });
205
213
  }
206
214
  }
@@ -1,8 +1,8 @@
1
1
  import { HTTPPath, ORPCError } from '@orpc/client';
2
- import { Meta, InferSchemaOutput, AnySchema, ErrorFromErrorMap } from '@orpc/contract';
3
- import { Interceptor, ThrowableError } from '@orpc/shared';
2
+ import { Meta } from '@orpc/contract';
3
+ import { Interceptor } from '@orpc/shared';
4
4
  import { StandardResponse, StandardLazyRequest } from '@orpc/standard-server';
5
- import { C as Context, R as Router, f as AnyRouter, h as AnyProcedure, F as ProcedureClientInterceptorOptions } from './server.DPWk5pjW.js';
5
+ import { C as Context, R as Router, f as AnyRouter, h as AnyProcedure, F as ProcedureClientInterceptorOptions } from './server.DD2C4ujN.js';
6
6
 
7
7
  interface StandardHandlerPlugin<T extends Context> {
8
8
  order?: number;
@@ -49,16 +49,16 @@ interface StandardHandlerOptions<TContext extends Context> {
49
49
  /**
50
50
  * Interceptors at the request level, helpful when you want catch errors
51
51
  */
52
- interceptors?: Interceptor<StandardHandlerInterceptorOptions<TContext>, StandardHandleResult, ThrowableError>[];
52
+ interceptors?: Interceptor<StandardHandlerInterceptorOptions<TContext>, Promise<StandardHandleResult>>[];
53
53
  /**
54
54
  * Interceptors at the root level, helpful when you want override the request/response
55
55
  */
56
- rootInterceptors?: Interceptor<StandardHandlerInterceptorOptions<TContext>, StandardHandleResult, ThrowableError>[];
56
+ rootInterceptors?: Interceptor<StandardHandlerInterceptorOptions<TContext>, Promise<StandardHandleResult>>[];
57
57
  /**
58
58
  *
59
59
  * Interceptors for procedure client.
60
60
  */
61
- clientInterceptors?: Interceptor<ProcedureClientInterceptorOptions<TContext, Record<never, never>, Meta>, InferSchemaOutput<AnySchema>, ErrorFromErrorMap<Record<never, never>>>[];
61
+ clientInterceptors?: Interceptor<ProcedureClientInterceptorOptions<TContext, Record<never, never>, Meta>, Promise<unknown>>[];
62
62
  }
63
63
  declare class StandardHandler<T extends Context> {
64
64
  private readonly matcher;
@@ -0,0 +1,19 @@
1
+ import { StandardRPCJsonSerializerOptions } from '@orpc/client/standard';
2
+ import { C as Context, R as Router } from './server.DD2C4ujN.js';
3
+ import { b as StandardHandlerOptions, i as StandardHandler, g as StandardHandleOptions } from './server.-ACo36I0.js';
4
+
5
+ interface StandardRPCHandlerOptions<T extends Context> extends StandardHandlerOptions<T>, StandardRPCJsonSerializerOptions {
6
+ }
7
+ declare class StandardRPCHandler<T extends Context> extends StandardHandler<T> {
8
+ constructor(router: Router<any, T>, options?: StandardRPCHandlerOptions<T>);
9
+ }
10
+
11
+ type FriendlyStandardHandleOptions<T extends Context> = Omit<StandardHandleOptions<T>, 'context'> & (Record<never, never> extends T ? {
12
+ context?: T;
13
+ } : {
14
+ context: T;
15
+ });
16
+ declare function resolveFriendlyStandardHandleOptions<T extends Context>(options: FriendlyStandardHandleOptions<T>): StandardHandleOptions<T>;
17
+
18
+ export { StandardRPCHandler as a, resolveFriendlyStandardHandleOptions as r };
19
+ export type { FriendlyStandardHandleOptions as F, StandardRPCHandlerOptions as S };
@@ -1,8 +1,8 @@
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
- import { c as createProcedureClient, t as traverseContractProcedures, i as isProcedure, u as unlazy, g as getRouter, a as createContractedProcedure } from './server.DG7Tamti.mjs';
5
+ import { c as createProcedureClient, t as traverseContractProcedures, i as isProcedure, u as unlazy, g as getRouter, a as createContractedProcedure } from './server.DLJzqnSX.mjs';
6
6
 
7
7
  class CompositeStandardHandlerPlugin {
8
8
  plugins;
@@ -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 }) => {
@@ -183,4 +183,12 @@ class StandardRPCHandler extends StandardHandler {
183
183
  }
184
184
  }
185
185
 
186
- export { CompositeStandardHandlerPlugin as C, StandardHandler as S, StandardRPCCodec as a, StandardRPCHandler as b, StandardRPCMatcher as c };
186
+ function resolveFriendlyStandardHandleOptions(options) {
187
+ return {
188
+ ...options,
189
+ context: options.context ?? {}
190
+ // Context only optional if all fields are optional
191
+ };
192
+ }
193
+
194
+ export { CompositeStandardHandlerPlugin as C, StandardHandler as S, StandardRPCCodec as a, StandardRPCHandler as b, StandardRPCMatcher as c, resolveFriendlyStandardHandleOptions as r };
@@ -0,0 +1,19 @@
1
+ import { StandardRPCJsonSerializerOptions } from '@orpc/client/standard';
2
+ import { C as Context, R as Router } from './server.DD2C4ujN.mjs';
3
+ import { b as StandardHandlerOptions, i as StandardHandler, g as StandardHandleOptions } from './server.Dq8xr7PQ.mjs';
4
+
5
+ interface StandardRPCHandlerOptions<T extends Context> extends StandardHandlerOptions<T>, StandardRPCJsonSerializerOptions {
6
+ }
7
+ declare class StandardRPCHandler<T extends Context> extends StandardHandler<T> {
8
+ constructor(router: Router<any, T>, options?: StandardRPCHandlerOptions<T>);
9
+ }
10
+
11
+ type FriendlyStandardHandleOptions<T extends Context> = Omit<StandardHandleOptions<T>, 'context'> & (Record<never, never> extends T ? {
12
+ context?: T;
13
+ } : {
14
+ context: T;
15
+ });
16
+ declare function resolveFriendlyStandardHandleOptions<T extends Context>(options: FriendlyStandardHandleOptions<T>): StandardHandleOptions<T>;
17
+
18
+ export { StandardRPCHandler as a, resolveFriendlyStandardHandleOptions as r };
19
+ export type { FriendlyStandardHandleOptions as F, StandardRPCHandlerOptions as S };
@@ -1,6 +1,6 @@
1
1
  import { ORPCErrorCode, ORPCErrorOptions, ORPCError, HTTPPath, ClientContext, Client } from '@orpc/client';
2
2
  import { ErrorMap, ErrorMapItem, InferSchemaInput, AnySchema, Meta, ContractProcedureDef, InferSchemaOutput, ErrorFromErrorMap, AnyContractRouter, ContractProcedure } from '@orpc/contract';
3
- import { MaybeOptionalOptions, Promisable, Interceptor, Value } from '@orpc/shared';
3
+ import { MaybeOptionalOptions, Promisable, Interceptor, PromiseWithError, Value } from '@orpc/shared';
4
4
 
5
5
  type Context = Record<PropertyKey, any>;
6
6
  type MergedInitialContext<TInitial extends Context, TAdditional extends Context, TCurrent extends Context> = TInitial & Omit<TAdditional, keyof TCurrent>;
@@ -127,11 +127,11 @@ type CreateProcedureClientOptions<TInitialContext extends Context, TOutputSchema
127
127
  * This is helpful for logging and analytics.
128
128
  */
129
129
  path?: readonly string[];
130
- interceptors?: Interceptor<ProcedureClientInterceptorOptions<TInitialContext, TErrorMap, TMeta>, InferSchemaOutput<TOutputSchema>, ErrorFromErrorMap<TErrorMap>>[];
130
+ interceptors?: Interceptor<ProcedureClientInterceptorOptions<TInitialContext, TErrorMap, TMeta>, PromiseWithError<InferSchemaOutput<TOutputSchema>, ErrorFromErrorMap<TErrorMap>>>[];
131
131
  } & (Record<never, never> extends TInitialContext ? {
132
- context?: Value<TInitialContext, [clientContext: TClientContext]>;
132
+ context?: Value<Promisable<TInitialContext>, [clientContext: TClientContext]>;
133
133
  } : {
134
- context: Value<TInitialContext, [clientContext: TClientContext]>;
134
+ context: Value<Promisable<TInitialContext>, [clientContext: TClientContext]>;
135
135
  });
136
136
  /**
137
137
  * Create Server-side client from a procedure.
@@ -1,6 +1,6 @@
1
1
  import { ORPCErrorCode, ORPCErrorOptions, ORPCError, HTTPPath, ClientContext, Client } from '@orpc/client';
2
2
  import { ErrorMap, ErrorMapItem, InferSchemaInput, AnySchema, Meta, ContractProcedureDef, InferSchemaOutput, ErrorFromErrorMap, AnyContractRouter, ContractProcedure } from '@orpc/contract';
3
- import { MaybeOptionalOptions, Promisable, Interceptor, Value } from '@orpc/shared';
3
+ import { MaybeOptionalOptions, Promisable, Interceptor, PromiseWithError, Value } from '@orpc/shared';
4
4
 
5
5
  type Context = Record<PropertyKey, any>;
6
6
  type MergedInitialContext<TInitial extends Context, TAdditional extends Context, TCurrent extends Context> = TInitial & Omit<TAdditional, keyof TCurrent>;
@@ -127,11 +127,11 @@ type CreateProcedureClientOptions<TInitialContext extends Context, TOutputSchema
127
127
  * This is helpful for logging and analytics.
128
128
  */
129
129
  path?: readonly string[];
130
- interceptors?: Interceptor<ProcedureClientInterceptorOptions<TInitialContext, TErrorMap, TMeta>, InferSchemaOutput<TOutputSchema>, ErrorFromErrorMap<TErrorMap>>[];
130
+ interceptors?: Interceptor<ProcedureClientInterceptorOptions<TInitialContext, TErrorMap, TMeta>, PromiseWithError<InferSchemaOutput<TOutputSchema>, ErrorFromErrorMap<TErrorMap>>>[];
131
131
  } & (Record<never, never> extends TInitialContext ? {
132
- context?: Value<TInitialContext, [clientContext: TClientContext]>;
132
+ context?: Value<Promisable<TInitialContext>, [clientContext: TClientContext]>;
133
133
  } : {
134
- context: Value<TInitialContext, [clientContext: TClientContext]>;
134
+ context: Value<Promisable<TInitialContext>, [clientContext: TClientContext]>;
135
135
  });
136
136
  /**
137
137
  * Create Server-side client from a procedure.
@@ -1,6 +1,6 @@
1
1
  import { isContractProcedure, ValidationError, mergePrefix, mergeErrorMap, enhanceRoute } from '@orpc/contract';
2
+ import { value, intercept, resolveMaybeOptionalOptions } from '@orpc/shared';
2
3
  import { fallbackORPCErrorStatus, ORPCError } from '@orpc/client';
3
- import { value, intercept } from '@orpc/shared';
4
4
 
5
5
  const LAZY_SYMBOL = Symbol("ORPC_LAZY_SYMBOL");
6
6
  function lazy(loader, meta = {}) {
@@ -361,7 +361,8 @@ function createContractedProcedure(procedure, contract) {
361
361
  });
362
362
  }
363
363
  function call(procedure, input, ...rest) {
364
- return createProcedureClient(procedure, ...rest)(input);
364
+ const options = resolveMaybeOptionalOptions(rest);
365
+ return createProcedureClient(procedure, options)(input, options);
365
366
  }
366
367
 
367
368
  export { LAZY_SYMBOL as L, Procedure as P, createContractedProcedure as a, addMiddleware as b, createProcedureClient as c, isLazy as d, enhanceRouter as e, createAssertedLazyProcedure as f, getRouter as g, createORPCErrorConstructorMap as h, isProcedure as i, getLazyMeta as j, middlewareOutputFn as k, lazy as l, mergeCurrentContext as m, isStartWithMiddlewares as n, mergeMiddlewares as o, call as p, getHiddenRouterContract as q, createAccessibleLazyRouter as r, setHiddenRouterContract as s, traverseContractProcedures as t, unlazy as u, validateORPCError as v, resolveContractProcedures as w, unlazyRouter as x };
@@ -1,8 +1,8 @@
1
1
  import { HTTPPath, ORPCError } from '@orpc/client';
2
- import { Meta, InferSchemaOutput, AnySchema, ErrorFromErrorMap } from '@orpc/contract';
3
- import { Interceptor, ThrowableError } from '@orpc/shared';
2
+ import { Meta } from '@orpc/contract';
3
+ import { Interceptor } from '@orpc/shared';
4
4
  import { StandardResponse, StandardLazyRequest } from '@orpc/standard-server';
5
- import { C as Context, R as Router, f as AnyRouter, h as AnyProcedure, F as ProcedureClientInterceptorOptions } from './server.DPWk5pjW.mjs';
5
+ import { C as Context, R as Router, f as AnyRouter, h as AnyProcedure, F as ProcedureClientInterceptorOptions } from './server.DD2C4ujN.mjs';
6
6
 
7
7
  interface StandardHandlerPlugin<T extends Context> {
8
8
  order?: number;
@@ -49,16 +49,16 @@ interface StandardHandlerOptions<TContext extends Context> {
49
49
  /**
50
50
  * Interceptors at the request level, helpful when you want catch errors
51
51
  */
52
- interceptors?: Interceptor<StandardHandlerInterceptorOptions<TContext>, StandardHandleResult, ThrowableError>[];
52
+ interceptors?: Interceptor<StandardHandlerInterceptorOptions<TContext>, Promise<StandardHandleResult>>[];
53
53
  /**
54
54
  * Interceptors at the root level, helpful when you want override the request/response
55
55
  */
56
- rootInterceptors?: Interceptor<StandardHandlerInterceptorOptions<TContext>, StandardHandleResult, ThrowableError>[];
56
+ rootInterceptors?: Interceptor<StandardHandlerInterceptorOptions<TContext>, Promise<StandardHandleResult>>[];
57
57
  /**
58
58
  *
59
59
  * Interceptors for procedure client.
60
60
  */
61
- clientInterceptors?: Interceptor<ProcedureClientInterceptorOptions<TContext, Record<never, never>, Meta>, InferSchemaOutput<AnySchema>, ErrorFromErrorMap<Record<never, never>>>[];
61
+ clientInterceptors?: Interceptor<ProcedureClientInterceptorOptions<TContext, Record<never, never>, Meta>, Promise<unknown>>[];
62
62
  }
63
63
  declare class StandardHandler<T extends Context> {
64
64
  private readonly matcher;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@orpc/server",
3
3
  "type": "module",
4
- "version": "0.0.0-next.262a4c9",
4
+ "version": "0.0.0-next.273b7ab",
5
5
  "license": "MIT",
6
6
  "homepage": "https://orpc.unnoq.com",
7
7
  "repository": {
@@ -24,6 +24,11 @@
24
24
  "import": "./dist/plugins/index.mjs",
25
25
  "default": "./dist/plugins/index.mjs"
26
26
  },
27
+ "./hibernation": {
28
+ "types": "./dist/hibernation/index.d.mts",
29
+ "import": "./dist/hibernation/index.mjs",
30
+ "default": "./dist/hibernation/index.mjs"
31
+ },
27
32
  "./standard": {
28
33
  "types": "./dist/adapters/standard/index.d.mts",
29
34
  "import": "./dist/adapters/standard/index.mjs",
@@ -39,6 +44,11 @@
39
44
  "import": "./dist/adapters/node/index.mjs",
40
45
  "default": "./dist/adapters/node/index.mjs"
41
46
  },
47
+ "./aws-lambda": {
48
+ "types": "./dist/adapters/aws-lambda/index.d.mts",
49
+ "import": "./dist/adapters/aws-lambda/index.mjs",
50
+ "default": "./dist/adapters/aws-lambda/index.mjs"
51
+ },
42
52
  "./websocket": {
43
53
  "types": "./dist/adapters/websocket/index.d.mts",
44
54
  "import": "./dist/adapters/websocket/index.mjs",
@@ -58,6 +68,11 @@
58
68
  "types": "./dist/adapters/bun-ws/index.d.mts",
59
69
  "import": "./dist/adapters/bun-ws/index.mjs",
60
70
  "default": "./dist/adapters/bun-ws/index.mjs"
71
+ },
72
+ "./message-port": {
73
+ "types": "./dist/adapters/message-port/index.d.mts",
74
+ "import": "./dist/adapters/message-port/index.mjs",
75
+ "default": "./dist/adapters/message-port/index.mjs"
61
76
  }
62
77
  },
63
78
  "files": [
@@ -76,20 +91,21 @@
76
91
  }
77
92
  },
78
93
  "dependencies": {
79
- "@orpc/contract": "0.0.0-next.262a4c9",
80
- "@orpc/shared": "0.0.0-next.262a4c9",
81
- "@orpc/standard-server": "0.0.0-next.262a4c9",
82
- "@orpc/client": "0.0.0-next.262a4c9",
83
- "@orpc/standard-server-fetch": "0.0.0-next.262a4c9",
84
- "@orpc/standard-server-node": "0.0.0-next.262a4c9",
85
- "@orpc/standard-server-peer": "0.0.0-next.262a4c9"
94
+ "@orpc/client": "0.0.0-next.273b7ab",
95
+ "@orpc/contract": "0.0.0-next.273b7ab",
96
+ "@orpc/shared": "0.0.0-next.273b7ab",
97
+ "@orpc/standard-server": "0.0.0-next.273b7ab",
98
+ "@orpc/standard-server-aws-lambda": "0.0.0-next.273b7ab",
99
+ "@orpc/standard-server-fetch": "0.0.0-next.273b7ab",
100
+ "@orpc/standard-server-node": "0.0.0-next.273b7ab",
101
+ "@orpc/standard-server-peer": "0.0.0-next.273b7ab"
86
102
  },
87
103
  "devDependencies": {
88
104
  "@types/ws": "^8.18.1",
89
- "crossws": "^0.3.4",
90
- "next": "^15.3.0",
105
+ "crossws": "^0.4.1",
106
+ "next": "^15.3.5",
91
107
  "supertest": "^7.1.0",
92
- "ws": "^8.18.1"
108
+ "ws": "^8.18.3"
93
109
  },
94
110
  "scripts": {
95
111
  "build": "unbuild",
@@ -1,12 +0,0 @@
1
- import { StandardRPCJsonSerializerOptions } from '@orpc/client/standard';
2
- import { C as Context, R as Router } from './server.DPWk5pjW.mjs';
3
- import { b as StandardHandlerOptions, i as StandardHandler } from './server.eWLxY3lq.mjs';
4
-
5
- interface StandardRPCHandlerOptions<T extends Context> extends StandardHandlerOptions<T>, StandardRPCJsonSerializerOptions {
6
- }
7
- declare class StandardRPCHandler<T extends Context> extends StandardHandler<T> {
8
- constructor(router: Router<any, T>, options?: StandardRPCHandlerOptions<T>);
9
- }
10
-
11
- export { StandardRPCHandler as a };
12
- export type { StandardRPCHandlerOptions as S };
@@ -1,9 +0,0 @@
1
- function resolveFriendlyStandardHandleOptions(options) {
2
- return {
3
- ...options,
4
- context: options?.context ?? {}
5
- // Context only optional if all fields are optional
6
- };
7
- }
8
-
9
- export { resolveFriendlyStandardHandleOptions as r };
@@ -1,10 +0,0 @@
1
- import { C as Context } from './server.DPWk5pjW.js';
2
- import { g as StandardHandleOptions } from './server.YZzrREz9.js';
3
-
4
- type FriendlyStandardHandleOptions<T extends Context> = Omit<StandardHandleOptions<T>, 'context'> & (Record<never, never> extends T ? {
5
- context?: T;
6
- } : {
7
- context: T;
8
- });
9
-
10
- export type { FriendlyStandardHandleOptions as F };
@@ -1,12 +0,0 @@
1
- import { StandardRPCJsonSerializerOptions } from '@orpc/client/standard';
2
- import { C as Context, R as Router } from './server.DPWk5pjW.js';
3
- import { b as StandardHandlerOptions, i as StandardHandler } from './server.YZzrREz9.js';
4
-
5
- interface StandardRPCHandlerOptions<T extends Context> extends StandardHandlerOptions<T>, StandardRPCJsonSerializerOptions {
6
- }
7
- declare class StandardRPCHandler<T extends Context> extends StandardHandler<T> {
8
- constructor(router: Router<any, T>, options?: StandardRPCHandlerOptions<T>);
9
- }
10
-
11
- export { StandardRPCHandler as a };
12
- export type { StandardRPCHandlerOptions as S };
@@ -1,10 +0,0 @@
1
- import { C as Context } from './server.DPWk5pjW.mjs';
2
- import { g as StandardHandleOptions } from './server.eWLxY3lq.mjs';
3
-
4
- type FriendlyStandardHandleOptions<T extends Context> = Omit<StandardHandleOptions<T>, 'context'> & (Record<never, never> extends T ? {
5
- context?: T;
6
- } : {
7
- context: T;
8
- });
9
-
10
- export type { FriendlyStandardHandleOptions as F };