@orpc/server 0.0.0-next.b15d206 → 0.0.0-next.d137cdf

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. package/dist/chunk-MZXEMHFS.js +272 -0
  2. package/dist/fetch.js +78 -649
  3. package/dist/index.js +190 -117
  4. package/dist/src/builder.d.ts +5 -1
  5. package/dist/src/fetch/handle.d.ts +7 -0
  6. package/dist/src/fetch/handler.d.ts +3 -0
  7. package/dist/src/fetch/index.d.ts +4 -0
  8. package/dist/src/fetch/types.d.ts +27 -0
  9. package/dist/src/index.d.ts +2 -0
  10. package/dist/src/lazy.d.ts +23 -0
  11. package/dist/src/procedure-caller.d.ts +17 -11
  12. package/dist/src/procedure-implementer.d.ts +5 -1
  13. package/dist/src/procedure.d.ts +5 -2
  14. package/dist/src/router-builder.d.ts +5 -0
  15. package/dist/src/router-caller.d.ts +7 -4
  16. package/dist/src/router-implementer.d.ts +7 -3
  17. package/dist/src/router.d.ts +6 -5
  18. package/package.json +15 -18
  19. package/dist/chunk-TDFYNRZV.js +0 -190
  20. package/dist/chunk-TDFYNRZV.js.map +0 -1
  21. package/dist/fetch.js.map +0 -1
  22. package/dist/index.js.map +0 -1
  23. package/dist/src/adapters/fetch.d.ts +0 -42
  24. package/dist/src/adapters/fetch.d.ts.map +0 -1
  25. package/dist/src/builder.d.ts.map +0 -1
  26. package/dist/src/index.d.ts.map +0 -1
  27. package/dist/src/middleware.d.ts.map +0 -1
  28. package/dist/src/procedure-builder.d.ts.map +0 -1
  29. package/dist/src/procedure-caller.d.ts.map +0 -1
  30. package/dist/src/procedure-implementer.d.ts.map +0 -1
  31. package/dist/src/procedure.d.ts.map +0 -1
  32. package/dist/src/router-builder.d.ts.map +0 -1
  33. package/dist/src/router-caller.d.ts.map +0 -1
  34. package/dist/src/router-implementer.d.ts.map +0 -1
  35. package/dist/src/router.d.ts.map +0 -1
  36. package/dist/src/types.d.ts.map +0 -1
  37. package/dist/src/utils.d.ts.map +0 -1
  38. package/dist/tsconfig.tsbuildinfo +0 -1
  39. package/src/adapters/fetch.test.ts +0 -629
  40. package/src/adapters/fetch.ts +0 -290
  41. package/src/builder.test.ts +0 -371
  42. package/src/builder.ts +0 -238
  43. package/src/index.ts +0 -16
  44. package/src/middleware.test.ts +0 -260
  45. package/src/middleware.ts +0 -136
  46. package/src/procedure-builder.test.ts +0 -223
  47. package/src/procedure-builder.ts +0 -158
  48. package/src/procedure-caller.test.ts +0 -171
  49. package/src/procedure-caller.ts +0 -138
  50. package/src/procedure-implementer.test.ts +0 -220
  51. package/src/procedure-implementer.ts +0 -102
  52. package/src/procedure.test.ts +0 -317
  53. package/src/procedure.ts +0 -237
  54. package/src/router-builder.test.ts +0 -106
  55. package/src/router-builder.ts +0 -122
  56. package/src/router-caller.test.ts +0 -126
  57. package/src/router-caller.ts +0 -64
  58. package/src/router-implementer.test.ts +0 -116
  59. package/src/router-implementer.ts +0 -113
  60. package/src/router.test-d.ts +0 -48
  61. package/src/router.test.ts +0 -142
  62. package/src/router.ts +0 -91
  63. package/src/types.test.ts +0 -18
  64. package/src/types.ts +0 -13
  65. package/src/utils.test.ts +0 -16
  66. package/src/utils.ts +0 -16
@@ -0,0 +1,272 @@
1
+ // src/utils.ts
2
+ function mergeContext(a, b) {
3
+ if (!a)
4
+ return b;
5
+ if (!b)
6
+ return a;
7
+ return {
8
+ ...a,
9
+ ...b
10
+ };
11
+ }
12
+
13
+ // src/middleware.ts
14
+ var decoratedMiddlewareSymbol = Symbol("\u{1F512}decoratedMiddleware");
15
+ function decorateMiddleware(middleware) {
16
+ if (Reflect.get(middleware, decoratedMiddlewareSymbol)) {
17
+ return middleware;
18
+ }
19
+ const concat = (concatMiddleware, mapInput2) => {
20
+ const concatMiddleware_ = mapInput2 ? decorateMiddleware(concatMiddleware).mapInput(mapInput2) : concatMiddleware;
21
+ return decorateMiddleware(async (input, context, meta, ...rest) => {
22
+ const input_ = input;
23
+ const context_ = context;
24
+ const meta_ = meta;
25
+ const next = async (options) => {
26
+ return concatMiddleware_(input_, mergeContext(context_, options.context), meta_, ...rest);
27
+ };
28
+ const m1 = await middleware(input_, context_, {
29
+ ...meta_,
30
+ next
31
+ }, ...rest);
32
+ return m1;
33
+ });
34
+ };
35
+ const mapInput = (map) => {
36
+ return decorateMiddleware(
37
+ (input, ...rest) => middleware(map(input), ...rest)
38
+ );
39
+ };
40
+ return Object.assign(middleware, {
41
+ [decoratedMiddlewareSymbol]: true,
42
+ concat,
43
+ mapInput
44
+ });
45
+ }
46
+
47
+ // src/procedure-caller.ts
48
+ import { executeWithHooks, trim, value } from "@orpc/shared";
49
+ import { ORPCError } from "@orpc/shared/error";
50
+
51
+ // src/procedure.ts
52
+ import {
53
+ DecoratedContractProcedure,
54
+ isContractProcedure
55
+ } from "@orpc/contract";
56
+ var Procedure = class {
57
+ constructor(zz$p) {
58
+ this.zz$p = zz$p;
59
+ }
60
+ };
61
+ var DECORATED_PROCEDURE_SYMBOL = Symbol("DECORATED_PROCEDURE");
62
+ function decorateProcedure(procedure) {
63
+ if (DECORATED_PROCEDURE_SYMBOL in procedure) {
64
+ return procedure;
65
+ }
66
+ return Object.assign(createProcedureCaller({
67
+ procedure,
68
+ context: void 0
69
+ }), {
70
+ [DECORATED_PROCEDURE_SYMBOL]: true,
71
+ zz$p: procedure.zz$p,
72
+ prefix(prefix) {
73
+ return decorateProcedure({
74
+ zz$p: {
75
+ ...procedure.zz$p,
76
+ contract: DecoratedContractProcedure.decorate(
77
+ procedure.zz$p.contract
78
+ ).prefix(prefix)
79
+ }
80
+ });
81
+ },
82
+ route(opts) {
83
+ return decorateProcedure({
84
+ zz$p: {
85
+ ...procedure.zz$p,
86
+ contract: DecoratedContractProcedure.decorate(
87
+ procedure.zz$p.contract
88
+ ).route(opts)
89
+ }
90
+ });
91
+ },
92
+ use(middleware, mapInput) {
93
+ const middleware_ = mapInput ? decorateMiddleware(middleware).mapInput(mapInput) : middleware;
94
+ return decorateProcedure({
95
+ zz$p: {
96
+ ...procedure.zz$p,
97
+ middlewares: [middleware_, ...procedure.zz$p.middlewares ?? []]
98
+ }
99
+ });
100
+ }
101
+ });
102
+ }
103
+ function isProcedure(item) {
104
+ if (item instanceof Procedure)
105
+ return true;
106
+ return (typeof item === "object" || typeof item === "function") && item !== null && "zz$p" in item && typeof item.zz$p === "object" && item.zz$p !== null && "contract" in item.zz$p && isContractProcedure(item.zz$p.contract) && "func" in item.zz$p && typeof item.zz$p.func === "function";
107
+ }
108
+
109
+ // src/procedure-caller.ts
110
+ function createProcedureCaller(options) {
111
+ const caller = async (input) => {
112
+ const path = options.path ?? [];
113
+ const procedure = await loadProcedure(options.procedure);
114
+ const context = await value(options.context);
115
+ const execute = async () => {
116
+ const validInput = (() => {
117
+ const schema = procedure.zz$p.contract.zz$cp.InputSchema;
118
+ if (!schema) {
119
+ return input;
120
+ }
121
+ try {
122
+ return schema.parse(input);
123
+ } catch (e) {
124
+ throw new ORPCError({
125
+ message: "Validation input failed",
126
+ code: "BAD_REQUEST",
127
+ cause: e
128
+ });
129
+ }
130
+ })();
131
+ const middlewares = procedure.zz$p.middlewares ?? [];
132
+ let currentMidIndex = 0;
133
+ let currentContext = context;
134
+ const next = async (nextOptions) => {
135
+ const mid = middlewares[currentMidIndex];
136
+ currentMidIndex += 1;
137
+ currentContext = mergeContext(currentContext, nextOptions.context);
138
+ if (mid) {
139
+ return await mid(validInput, currentContext, {
140
+ path,
141
+ procedure,
142
+ next,
143
+ output: (output3) => ({ output: output3, context: void 0 })
144
+ });
145
+ } else {
146
+ return {
147
+ output: await await procedure.zz$p.func(validInput, currentContext, {
148
+ path,
149
+ procedure
150
+ }),
151
+ context: currentContext
152
+ };
153
+ }
154
+ };
155
+ const output2 = (await next({})).output;
156
+ const validOutput = await (async () => {
157
+ const schema = procedure.zz$p.contract.zz$cp.OutputSchema;
158
+ if (!schema) {
159
+ return output2;
160
+ }
161
+ const result = await schema.safeParseAsync(output2);
162
+ if (result.error) {
163
+ throw new ORPCError({
164
+ message: "Validation output failed",
165
+ code: "INTERNAL_SERVER_ERROR",
166
+ cause: result.error
167
+ });
168
+ }
169
+ return result.data;
170
+ })();
171
+ return validOutput;
172
+ };
173
+ const output = await executeWithHooks({
174
+ hooks: options,
175
+ input,
176
+ context,
177
+ meta: {
178
+ path,
179
+ procedure
180
+ },
181
+ execute
182
+ });
183
+ return output;
184
+ };
185
+ return caller;
186
+ }
187
+ async function loadProcedure(procedure) {
188
+ let loadedProcedure;
189
+ if (isLazy(procedure)) {
190
+ loadedProcedure = (await loadLazy(procedure)).default;
191
+ } else {
192
+ loadedProcedure = procedure;
193
+ }
194
+ if (!isProcedure(loadedProcedure)) {
195
+ throw new ORPCError({
196
+ code: "NOT_FOUND",
197
+ message: "Not found",
198
+ cause: new Error(trim(`
199
+ This error should be caught by the typescript compiler.
200
+ But if you still see this error, it means that you trying to call a lazy router (expected to be a lazy procedure).
201
+ `))
202
+ });
203
+ }
204
+ return loadedProcedure;
205
+ }
206
+
207
+ // src/lazy.ts
208
+ var LAZY_LOADER_SYMBOL = Symbol("ORPC_LAZY_LOADER");
209
+ function createLazy(loader) {
210
+ return {
211
+ [LAZY_LOADER_SYMBOL]: loader
212
+ };
213
+ }
214
+ function loadLazy(lazy) {
215
+ return lazy[LAZY_LOADER_SYMBOL]();
216
+ }
217
+ function isLazy(item) {
218
+ return (typeof item === "object" || typeof item === "function") && item !== null && LAZY_LOADER_SYMBOL in item && typeof item[LAZY_LOADER_SYMBOL] === "function";
219
+ }
220
+ function createFlattenLazy(lazy) {
221
+ const flattenLoader = async () => {
222
+ let current = await loadLazy(lazy);
223
+ while (true) {
224
+ if (!isLazy(current.default)) {
225
+ break;
226
+ }
227
+ current = await loadLazy(current.default);
228
+ }
229
+ return current;
230
+ };
231
+ const flattenLazy = {
232
+ [LAZY_LOADER_SYMBOL]: flattenLoader
233
+ };
234
+ return flattenLazy;
235
+ }
236
+ function decorateLazy(lazy) {
237
+ const flattenLazy = createFlattenLazy(lazy);
238
+ const procedureCaller = createProcedureCaller({
239
+ procedure: flattenLazy,
240
+ context: void 0
241
+ });
242
+ Object.assign(procedureCaller, flattenLazy);
243
+ const recursive = new Proxy(procedureCaller, {
244
+ get(target, key) {
245
+ if (typeof key !== "string") {
246
+ return Reflect.get(target, key);
247
+ }
248
+ return decorateLazy(createLazy(async () => {
249
+ const current = await loadLazy(flattenLazy);
250
+ return { default: current.default[key] };
251
+ }));
252
+ }
253
+ });
254
+ return recursive;
255
+ }
256
+
257
+ export {
258
+ mergeContext,
259
+ decorateMiddleware,
260
+ LAZY_LOADER_SYMBOL,
261
+ createLazy,
262
+ loadLazy,
263
+ isLazy,
264
+ createFlattenLazy,
265
+ decorateLazy,
266
+ createProcedureCaller,
267
+ loadProcedure,
268
+ Procedure,
269
+ decorateProcedure,
270
+ isProcedure
271
+ };
272
+ //# sourceMappingURL=chunk-MZXEMHFS.js.map