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

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