@orpc/server 0.0.0-next.4220427 → 0.0.0-next.43889a7

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 (41) hide show
  1. package/dist/{chunk-V3I7RIRY.js → chunk-26GHKV43.js} +6 -7
  2. package/dist/{chunk-DNG2IB3R.js → chunk-LDIL7OEP.js} +40 -50
  3. package/dist/fetch.js +4 -4
  4. package/dist/hono.js +5 -5
  5. package/dist/index.js +687 -181
  6. package/dist/next.js +5 -5
  7. package/dist/node.js +10 -10
  8. package/dist/src/adapters/fetch/orpc-handler.d.ts +4 -4
  9. package/dist/src/adapters/fetch/types.d.ts +3 -3
  10. package/dist/src/adapters/hono/middleware.d.ts +3 -3
  11. package/dist/src/adapters/next/serve.d.ts +3 -3
  12. package/dist/src/adapters/node/orpc-handler.d.ts +5 -5
  13. package/dist/src/adapters/node/types.d.ts +3 -3
  14. package/dist/src/builder-with-errors-middlewares.d.ts +49 -0
  15. package/dist/src/builder-with-errors.d.ts +49 -0
  16. package/dist/src/builder-with-middlewares.d.ts +49 -0
  17. package/dist/src/builder.d.ts +33 -23
  18. package/dist/src/config.d.ts +6 -0
  19. package/dist/src/context.d.ts +10 -0
  20. package/dist/src/error.d.ts +1 -1
  21. package/dist/src/hidden.d.ts +2 -2
  22. package/dist/src/implementer-chainable.d.ts +11 -5
  23. package/dist/src/index.d.ts +5 -4
  24. package/dist/src/lazy-decorated.d.ts +4 -6
  25. package/dist/src/middleware-decorated.d.ts +5 -5
  26. package/dist/src/middleware.d.ts +19 -15
  27. package/dist/src/procedure-builder-with-input.d.ts +35 -0
  28. package/dist/src/procedure-builder-with-output.d.ts +34 -0
  29. package/dist/src/procedure-builder.d.ts +23 -19
  30. package/dist/src/procedure-client.d.ts +8 -21
  31. package/dist/src/procedure-decorated.d.ts +21 -11
  32. package/dist/src/procedure-implementer.d.ts +14 -10
  33. package/dist/src/procedure-utils.d.ts +17 -0
  34. package/dist/src/procedure.d.ts +16 -12
  35. package/dist/src/router-builder.d.ts +20 -16
  36. package/dist/src/router-client.d.ts +7 -6
  37. package/dist/src/router-implementer.d.ts +12 -10
  38. package/dist/src/router.d.ts +4 -4
  39. package/dist/src/types.d.ts +0 -3
  40. package/package.json +3 -3
  41. package/dist/src/utils.d.ts +0 -3
@@ -4,7 +4,7 @@ import {
4
4
  getRouterChild,
5
5
  isProcedure,
6
6
  unlazy
7
- } from "./chunk-DNG2IB3R.js";
7
+ } from "./chunk-LDIL7OEP.js";
8
8
 
9
9
  // src/adapters/fetch/super-json.ts
10
10
  var super_json_exports = {};
@@ -238,7 +238,7 @@ var ORPCProcedureMatcher = class {
238
238
  // src/adapters/fetch/orpc-handler.ts
239
239
  import { ORPCError as ORPCError2 } from "@orpc/contract";
240
240
  import { executeWithHooks, trim as trim2 } from "@orpc/shared";
241
- var ORPCHandler = class {
241
+ var RPCHandler = class {
242
242
  constructor(router, options) {
243
243
  this.options = options;
244
244
  this.procedureMatcher = options?.procedureMatcher ?? new ORPCProcedureMatcher(router);
@@ -247,7 +247,7 @@ var ORPCHandler = class {
247
247
  procedureMatcher;
248
248
  payloadCodec;
249
249
  async handle(request, ...[options]) {
250
- const context = options?.context;
250
+ const context = options?.context ?? {};
251
251
  const execute = async () => {
252
252
  const url = new URL(request.url);
253
253
  const pathname = `/${trim2(url.pathname.replace(options?.prefix ?? "", ""), "/")}`;
@@ -256,9 +256,8 @@ var ORPCHandler = class {
256
256
  return { matched: false, response: void 0 };
257
257
  }
258
258
  const input = await this.payloadCodec.decode(request);
259
- const client = createProcedureClient({
259
+ const client = createProcedureClient(match.procedure, {
260
260
  context,
261
- procedure: match.procedure,
262
261
  path: match.path
263
262
  });
264
263
  const output = await client(input, { signal: request.signal });
@@ -297,6 +296,6 @@ export {
297
296
  super_json_exports,
298
297
  ORPCPayloadCodec,
299
298
  ORPCProcedureMatcher,
300
- ORPCHandler
299
+ RPCHandler
301
300
  };
302
- //# sourceMappingURL=chunk-V3I7RIRY.js.map
301
+ //# sourceMappingURL=chunk-26GHKV43.js.map
@@ -4,18 +4,6 @@ var __export = (target, all) => {
4
4
  __defProp(target, name, { get: all[name], enumerable: true });
5
5
  };
6
6
 
7
- // src/utils.ts
8
- function mergeContext(a, b) {
9
- if (!a)
10
- return b;
11
- if (!b)
12
- return a;
13
- return {
14
- ...a,
15
- ...b
16
- };
17
- }
18
-
19
7
  // src/procedure.ts
20
8
  import { isContractProcedure } from "@orpc/contract";
21
9
  var Procedure = class {
@@ -36,9 +24,6 @@ function isProcedure(item) {
36
24
  import { ORPCError } from "@orpc/contract";
37
25
  function createORPCErrorConstructorMap(errors) {
38
26
  const constructors = {};
39
- if (!errors) {
40
- return constructors;
41
- }
42
27
  for (const code in errors) {
43
28
  const config = errors[code];
44
29
  if (!config) {
@@ -86,38 +71,35 @@ function flatLazy(lazied) {
86
71
  return lazy(flattenLoader);
87
72
  }
88
73
 
74
+ // src/middleware.ts
75
+ function middlewareOutputFn(output) {
76
+ return { output, context: {} };
77
+ }
78
+
89
79
  // src/procedure-client.ts
90
80
  import { ORPCError as ORPCError2, validateORPCError, ValidationError } from "@orpc/contract";
91
81
  import { executeWithHooks, toError, value } from "@orpc/shared";
92
- function createProcedureClient(options) {
82
+ function createProcedureClient(lazyableProcedure, ...[options]) {
93
83
  return async (...[input, callerOptions]) => {
94
- const path = options.path ?? [];
95
- const { default: procedure } = await unlazy(options.procedure);
96
- const context = await value(options.context);
97
- const meta = {
84
+ const path = options?.path ?? [];
85
+ const { default: procedure } = await unlazy(lazyableProcedure);
86
+ const context = await value(options?.context ?? {}, callerOptions?.context);
87
+ const errors = createORPCErrorConstructorMap(procedure["~orpc"].contract["~orpc"].errorMap);
88
+ const executeOptions = {
89
+ input,
90
+ context,
91
+ errors,
98
92
  path,
99
93
  procedure,
100
94
  signal: callerOptions?.signal
101
95
  };
102
- const executeWithValidation = async () => {
103
- const validInput = await validateInput(procedure, input);
104
- const output = await executeMiddlewareChain({
105
- context,
106
- input: validInput,
107
- path,
108
- procedure,
109
- signal: callerOptions?.signal,
110
- errors: createORPCErrorConstructorMap(procedure["~orpc"].contract["~orpc"].errorMap)
111
- });
112
- return validateOutput(procedure, output);
113
- };
114
96
  try {
115
97
  const output = await executeWithHooks({
116
98
  hooks: options,
117
99
  input,
118
100
  context,
119
- meta,
120
- execute: executeWithValidation
101
+ meta: executeOptions,
102
+ execute: () => executeProcedureInternal(procedure, executeOptions)
121
103
  });
122
104
  return output;
123
105
  } catch (e) {
@@ -160,21 +142,29 @@ async function validateOutput(procedure, output) {
160
142
  }
161
143
  return result.value;
162
144
  }
163
- async function executeMiddlewareChain(opt) {
164
- const middlewares = opt.procedure["~orpc"].middlewares ?? [];
165
- let currentMidIndex = 0;
166
- let currentContext = opt.context;
167
- const next = async (nextOptions) => {
168
- const mid = middlewares[currentMidIndex];
169
- currentMidIndex += 1;
170
- currentContext = mergeContext(currentContext, nextOptions.context);
171
- if (mid) {
172
- return await mid({ ...opt, context: currentContext, next }, opt.input, (output) => ({ output, context: void 0 }));
145
+ async function executeProcedureInternal(procedure, options) {
146
+ const middlewares = procedure["~orpc"].middlewares;
147
+ const inputValidationIndex = Math.min(Math.max(0, procedure["~orpc"].inputValidationIndex), middlewares.length);
148
+ const outputValidationIndex = Math.min(Math.max(0, procedure["~orpc"].outputValidationIndex), middlewares.length);
149
+ let currentIndex = 0;
150
+ let currentContext = options.context;
151
+ let currentInput = options.input;
152
+ const next = async (...[nextOptions]) => {
153
+ const index = currentIndex;
154
+ currentIndex += 1;
155
+ currentContext = { ...currentContext, ...nextOptions?.context };
156
+ if (index === inputValidationIndex) {
157
+ currentInput = await validateInput(procedure, currentInput);
158
+ }
159
+ const mid = middlewares[index];
160
+ const result = mid ? await mid({ ...options, context: currentContext, next }, currentInput, middlewareOutputFn) : { output: await procedure["~orpc"].handler({ ...options, context: currentContext, input: currentInput }), context: currentContext };
161
+ if (index === outputValidationIndex) {
162
+ const validatedOutput = await validateOutput(procedure, result.output);
163
+ return {
164
+ ...result,
165
+ output: validatedOutput
166
+ };
173
167
  }
174
- const result = {
175
- output: await opt.procedure["~orpc"].handler({ ...opt, context: currentContext }),
176
- context: currentContext
177
- };
178
168
  return result;
179
169
  };
180
170
  return (await next({})).output;
@@ -212,7 +202,6 @@ function getRouterChild(router, ...path) {
212
202
 
213
203
  export {
214
204
  __export,
215
- mergeContext,
216
205
  Procedure,
217
206
  isProcedure,
218
207
  createORPCErrorConstructorMap,
@@ -221,7 +210,8 @@ export {
221
210
  isLazy,
222
211
  unlazy,
223
212
  flatLazy,
213
+ middlewareOutputFn,
224
214
  createProcedureClient,
225
215
  getRouterChild
226
216
  };
227
- //# sourceMappingURL=chunk-DNG2IB3R.js.map
217
+ //# sourceMappingURL=chunk-LDIL7OEP.js.map
package/dist/fetch.js CHANGED
@@ -1,15 +1,15 @@
1
1
  import "./chunk-WUOGVGWG.js";
2
2
  import {
3
- ORPCHandler,
4
3
  ORPCPayloadCodec,
5
4
  ORPCProcedureMatcher,
5
+ RPCHandler,
6
6
  super_json_exports
7
- } from "./chunk-V3I7RIRY.js";
8
- import "./chunk-DNG2IB3R.js";
7
+ } from "./chunk-26GHKV43.js";
8
+ import "./chunk-LDIL7OEP.js";
9
9
  export {
10
- ORPCHandler,
11
10
  ORPCPayloadCodec,
12
11
  ORPCProcedureMatcher,
12
+ RPCHandler,
13
13
  super_json_exports as SuperJSON
14
14
  };
15
15
  //# sourceMappingURL=fetch.js.map
package/dist/hono.js CHANGED
@@ -1,17 +1,17 @@
1
1
  import "./chunk-WUOGVGWG.js";
2
2
  import {
3
- ORPCHandler,
4
3
  ORPCPayloadCodec,
5
4
  ORPCProcedureMatcher,
5
+ RPCHandler,
6
6
  super_json_exports
7
- } from "./chunk-V3I7RIRY.js";
8
- import "./chunk-DNG2IB3R.js";
7
+ } from "./chunk-26GHKV43.js";
8
+ import "./chunk-LDIL7OEP.js";
9
9
 
10
10
  // src/adapters/hono/middleware.ts
11
11
  import { value } from "@orpc/shared";
12
12
  function createMiddleware(handler, ...[options]) {
13
13
  return async (c, next) => {
14
- const context = await value(options?.context, c);
14
+ const context = await value(options?.context ?? {}, c);
15
15
  const { matched, response } = await handler.handle(c.req.raw, { ...options, context });
16
16
  if (matched) {
17
17
  c.res = response;
@@ -21,9 +21,9 @@ function createMiddleware(handler, ...[options]) {
21
21
  };
22
22
  }
23
23
  export {
24
- ORPCHandler,
25
24
  ORPCPayloadCodec,
26
25
  ORPCProcedureMatcher,
26
+ RPCHandler,
27
27
  super_json_exports as SuperJSON,
28
28
  createMiddleware
29
29
  };