@orpc/server 0.0.0-next.3f3f19b → 0.0.0-next.4220427
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.
- package/dist/chunk-DNG2IB3R.js +227 -0
- package/dist/chunk-V3I7RIRY.js +302 -0
- package/dist/chunk-WUOGVGWG.js +1 -0
- package/dist/fetch.js +11 -108
- package/dist/hono.js +30 -0
- package/dist/index.js +397 -319
- package/dist/next.js +36 -0
- package/dist/node.js +87 -0
- package/dist/src/adapters/fetch/index.d.ts +6 -0
- package/dist/src/adapters/fetch/orpc-handler.d.ts +20 -0
- package/dist/src/adapters/fetch/orpc-payload-codec.d.ts +16 -0
- package/dist/src/adapters/fetch/orpc-procedure-matcher.d.ts +12 -0
- package/dist/src/adapters/fetch/super-json.d.ts +12 -0
- package/dist/src/adapters/fetch/types.d.ts +21 -0
- package/dist/src/adapters/hono/index.d.ts +3 -0
- package/dist/src/adapters/hono/middleware.d.ts +12 -0
- package/dist/src/adapters/next/index.d.ts +3 -0
- package/dist/src/adapters/next/serve.d.ts +19 -0
- package/dist/src/adapters/node/index.d.ts +5 -0
- package/dist/src/adapters/node/orpc-handler.d.ts +12 -0
- package/dist/src/adapters/node/request-listener.d.ts +28 -0
- package/dist/src/adapters/node/types.d.ts +22 -0
- package/dist/src/builder.d.ts +29 -46
- package/dist/src/error.d.ts +10 -0
- package/dist/src/hidden.d.ts +6 -0
- package/dist/src/implementer-chainable.d.ts +10 -0
- package/dist/src/index.d.ts +11 -4
- package/dist/src/lazy-decorated.d.ts +10 -0
- package/dist/src/lazy-utils.d.ts +4 -0
- package/dist/src/lazy.d.ts +6 -11
- package/dist/src/middleware-decorated.d.ts +9 -0
- package/dist/src/middleware.d.ts +21 -12
- package/dist/src/procedure-builder.d.ts +19 -26
- package/dist/src/procedure-client.d.ts +34 -0
- package/dist/src/procedure-decorated.d.ts +15 -0
- package/dist/src/procedure-implementer.d.ts +16 -19
- package/dist/src/procedure.d.ts +37 -26
- package/dist/src/router-builder.d.ts +23 -21
- package/dist/src/router-client.d.ts +25 -0
- package/dist/src/router-implementer.d.ts +18 -21
- package/dist/src/router.d.ts +11 -16
- package/dist/src/types.d.ts +8 -8
- package/package.json +22 -11
- package/dist/chunk-3JMSDC5L.js +0 -274
- package/dist/src/fetch/handle.d.ts +0 -7
- package/dist/src/fetch/handler.d.ts +0 -3
- package/dist/src/fetch/index.d.ts +0 -4
- package/dist/src/fetch/types.d.ts +0 -28
- package/dist/src/procedure-caller.d.ts +0 -26
- package/dist/src/router-caller.d.ts +0 -25
package/dist/index.js
CHANGED
@@ -1,434 +1,505 @@
|
|
1
1
|
import {
|
2
2
|
LAZY_LOADER_SYMBOL,
|
3
3
|
Procedure,
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
decorateMiddleware,
|
9
|
-
decorateProcedure,
|
4
|
+
createORPCErrorConstructorMap,
|
5
|
+
createProcedureClient,
|
6
|
+
flatLazy,
|
7
|
+
getRouterChild,
|
10
8
|
isLazy,
|
11
9
|
isProcedure,
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
} from "./chunk-
|
10
|
+
lazy,
|
11
|
+
mergeContext,
|
12
|
+
unlazy
|
13
|
+
} from "./chunk-DNG2IB3R.js";
|
16
14
|
|
17
15
|
// src/builder.ts
|
18
|
-
import {
|
19
|
-
ContractProcedure,
|
20
|
-
isContractProcedure as isContractProcedure2
|
21
|
-
} from "@orpc/contract";
|
16
|
+
import { ContractProcedure } from "@orpc/contract";
|
22
17
|
|
23
|
-
// src/
|
24
|
-
import {
|
25
|
-
|
26
|
-
} from "@orpc/contract";
|
18
|
+
// src/implementer-chainable.ts
|
19
|
+
import { isContractProcedure } from "@orpc/contract";
|
20
|
+
import { createCallableObject } from "@orpc/shared";
|
27
21
|
|
28
|
-
// src/
|
29
|
-
|
22
|
+
// src/middleware-decorated.ts
|
23
|
+
function decorateMiddleware(middleware) {
|
24
|
+
const decorated = middleware;
|
25
|
+
decorated.mapInput = (mapInput) => {
|
26
|
+
const mapped = decorateMiddleware(
|
27
|
+
(options, input, ...rest) => middleware(options, mapInput(input), ...rest)
|
28
|
+
);
|
29
|
+
return mapped;
|
30
|
+
};
|
31
|
+
decorated.concat = (concatMiddleware, mapInput) => {
|
32
|
+
const mapped = mapInput ? decorateMiddleware(concatMiddleware).mapInput(mapInput) : concatMiddleware;
|
33
|
+
const concatted = decorateMiddleware((options, input, output, ...rest) => {
|
34
|
+
const next = async (nextOptions) => {
|
35
|
+
return mapped({ ...options, context: mergeContext(nextOptions.context, options.context) }, input, output, ...rest);
|
36
|
+
};
|
37
|
+
const merged = middleware({ ...options, next }, input, output, ...rest);
|
38
|
+
return merged;
|
39
|
+
});
|
40
|
+
return concatted;
|
41
|
+
};
|
42
|
+
return decorated;
|
43
|
+
}
|
44
|
+
|
45
|
+
// src/procedure-decorated.ts
|
46
|
+
import { DecoratedContractProcedure } from "@orpc/contract";
|
47
|
+
function decorateProcedure(procedure) {
|
48
|
+
const caller = createProcedureClient({
|
49
|
+
procedure,
|
50
|
+
context: void 0
|
51
|
+
});
|
52
|
+
const decorated = caller;
|
53
|
+
decorated["~type"] = procedure["~type"];
|
54
|
+
decorated["~orpc"] = procedure["~orpc"];
|
55
|
+
decorated.prefix = (prefix) => {
|
56
|
+
return decorateProcedure(new Procedure({
|
57
|
+
...procedure["~orpc"],
|
58
|
+
contract: DecoratedContractProcedure.decorate(procedure["~orpc"].contract).prefix(prefix)
|
59
|
+
}));
|
60
|
+
};
|
61
|
+
decorated.route = (route) => {
|
62
|
+
return decorateProcedure(new Procedure({
|
63
|
+
...procedure["~orpc"],
|
64
|
+
contract: DecoratedContractProcedure.decorate(procedure["~orpc"].contract).route(route)
|
65
|
+
}));
|
66
|
+
};
|
67
|
+
decorated.use = (middleware, mapInput) => {
|
68
|
+
const middleware_ = mapInput ? decorateMiddleware(middleware).mapInput(mapInput) : middleware;
|
69
|
+
return decorateProcedure(new Procedure({
|
70
|
+
...procedure["~orpc"],
|
71
|
+
middlewares: [...procedure["~orpc"].middlewares ?? [], middleware_]
|
72
|
+
}));
|
73
|
+
};
|
74
|
+
decorated.unshiftTag = (...tags) => {
|
75
|
+
return decorateProcedure(new Procedure({
|
76
|
+
...procedure["~orpc"],
|
77
|
+
contract: DecoratedContractProcedure.decorate(procedure["~orpc"].contract).unshiftTag(...tags)
|
78
|
+
}));
|
79
|
+
};
|
80
|
+
decorated.unshiftMiddleware = (...middlewares) => {
|
81
|
+
if (procedure["~orpc"].middlewares?.length) {
|
82
|
+
let min = 0;
|
83
|
+
for (let i = 0; i < procedure["~orpc"].middlewares.length; i++) {
|
84
|
+
const index = middlewares.indexOf(procedure["~orpc"].middlewares[i], min);
|
85
|
+
if (index === -1) {
|
86
|
+
middlewares.push(...procedure["~orpc"].middlewares.slice(i));
|
87
|
+
break;
|
88
|
+
}
|
89
|
+
min = index + 1;
|
90
|
+
}
|
91
|
+
}
|
92
|
+
return decorateProcedure(new Procedure({
|
93
|
+
...procedure["~orpc"],
|
94
|
+
middlewares
|
95
|
+
}));
|
96
|
+
};
|
97
|
+
return decorated;
|
98
|
+
}
|
99
|
+
|
100
|
+
// src/procedure-implementer.ts
|
101
|
+
var ProcedureImplementer = class _ProcedureImplementer {
|
102
|
+
"~type" = "ProcedureImplementer";
|
103
|
+
"~orpc";
|
104
|
+
constructor(def) {
|
105
|
+
this["~orpc"] = def;
|
106
|
+
}
|
107
|
+
use(middleware, mapInput) {
|
108
|
+
const mappedMiddleware = mapInput ? decorateMiddleware(middleware).mapInput(mapInput) : middleware;
|
109
|
+
return new _ProcedureImplementer({
|
110
|
+
...this["~orpc"],
|
111
|
+
middlewares: [...this["~orpc"].middlewares ?? [], mappedMiddleware]
|
112
|
+
});
|
113
|
+
}
|
114
|
+
handler(handler) {
|
115
|
+
return decorateProcedure(new Procedure({
|
116
|
+
middlewares: this["~orpc"].middlewares,
|
117
|
+
contract: this["~orpc"].contract,
|
118
|
+
handler
|
119
|
+
}));
|
120
|
+
}
|
121
|
+
};
|
122
|
+
|
123
|
+
// src/hidden.ts
|
124
|
+
var ROUTER_CONTRACT_SYMBOL = Symbol("ORPC_ROUTER_CONTRACT");
|
125
|
+
function setRouterContract(obj, contract) {
|
126
|
+
return new Proxy(obj, {
|
127
|
+
get(target, key) {
|
128
|
+
if (key === ROUTER_CONTRACT_SYMBOL) {
|
129
|
+
return contract;
|
130
|
+
}
|
131
|
+
return Reflect.get(target, key);
|
132
|
+
}
|
133
|
+
});
|
134
|
+
}
|
135
|
+
function getRouterContract(obj) {
|
136
|
+
return obj[ROUTER_CONTRACT_SYMBOL];
|
137
|
+
}
|
30
138
|
var LAZY_ROUTER_PREFIX_SYMBOL = Symbol("ORPC_LAZY_ROUTER_PREFIX");
|
139
|
+
function deepSetLazyRouterPrefix(router, prefix) {
|
140
|
+
return new Proxy(router, {
|
141
|
+
get(target, key) {
|
142
|
+
if (key !== LAZY_ROUTER_PREFIX_SYMBOL) {
|
143
|
+
const val = Reflect.get(target, key);
|
144
|
+
if (val && (typeof val === "object" || typeof val === "function")) {
|
145
|
+
return deepSetLazyRouterPrefix(val, prefix);
|
146
|
+
}
|
147
|
+
return val;
|
148
|
+
}
|
149
|
+
return prefix;
|
150
|
+
}
|
151
|
+
});
|
152
|
+
}
|
153
|
+
function getLazyRouterPrefix(obj) {
|
154
|
+
return obj[LAZY_ROUTER_PREFIX_SYMBOL];
|
155
|
+
}
|
156
|
+
|
157
|
+
// src/lazy-utils.ts
|
158
|
+
function createLazyProcedureFormAnyLazy(lazied) {
|
159
|
+
const lazyProcedure = lazy(async () => {
|
160
|
+
const { default: maybeProcedure } = await unlazy(flatLazy(lazied));
|
161
|
+
if (!isProcedure(maybeProcedure)) {
|
162
|
+
throw new Error(`
|
163
|
+
Expected a lazy<procedure> but got lazy<unknown>.
|
164
|
+
This should be caught by TypeScript compilation.
|
165
|
+
Please report this issue if this makes you feel uncomfortable.
|
166
|
+
`);
|
167
|
+
}
|
168
|
+
return { default: maybeProcedure };
|
169
|
+
});
|
170
|
+
return lazyProcedure;
|
171
|
+
}
|
172
|
+
|
173
|
+
// src/lazy-decorated.ts
|
174
|
+
function decorateLazy(lazied) {
|
175
|
+
const flattenLazy = flatLazy(lazied);
|
176
|
+
const procedureProcedureClient = createProcedureClient({
|
177
|
+
procedure: createLazyProcedureFormAnyLazy(flattenLazy),
|
178
|
+
context: void 0
|
179
|
+
});
|
180
|
+
Object.assign(procedureProcedureClient, flattenLazy);
|
181
|
+
const recursive = new Proxy(procedureProcedureClient, {
|
182
|
+
get(target, key) {
|
183
|
+
if (typeof key !== "string") {
|
184
|
+
return Reflect.get(target, key);
|
185
|
+
}
|
186
|
+
const next = getRouterChild(flattenLazy, key);
|
187
|
+
return decorateLazy(next);
|
188
|
+
}
|
189
|
+
});
|
190
|
+
return recursive;
|
191
|
+
}
|
192
|
+
|
193
|
+
// src/router-builder.ts
|
31
194
|
var RouterBuilder = class _RouterBuilder {
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
195
|
+
"~type" = "RouterBuilder";
|
196
|
+
"~orpc";
|
197
|
+
constructor(def) {
|
198
|
+
this["~orpc"] = def;
|
199
|
+
if (def.prefix && def.prefix.includes("{")) {
|
200
|
+
throw new Error(`
|
201
|
+
Dynamic routing in prefix not supported yet.
|
202
|
+
Please remove "{" from "${def.prefix}".
|
203
|
+
`);
|
36
204
|
}
|
37
205
|
}
|
38
206
|
prefix(prefix) {
|
39
207
|
return new _RouterBuilder({
|
40
|
-
...this
|
41
|
-
prefix: `${this.
|
208
|
+
...this["~orpc"],
|
209
|
+
prefix: `${this["~orpc"].prefix ?? ""}${prefix}`
|
42
210
|
});
|
43
211
|
}
|
44
|
-
|
45
|
-
if (!tags.length)
|
46
|
-
return this;
|
212
|
+
tag(...tags) {
|
47
213
|
return new _RouterBuilder({
|
48
|
-
...this
|
49
|
-
tags: [...this.
|
214
|
+
...this["~orpc"],
|
215
|
+
tags: [...this["~orpc"].tags ?? [], ...tags]
|
50
216
|
});
|
51
217
|
}
|
52
|
-
use(middleware
|
53
|
-
const middleware_ = mapInput ? decorateMiddleware(middleware).mapInput(mapInput) : middleware;
|
218
|
+
use(middleware) {
|
54
219
|
return new _RouterBuilder({
|
55
|
-
...this
|
56
|
-
middlewares: [...this.
|
220
|
+
...this["~orpc"],
|
221
|
+
middlewares: [...this["~orpc"].middlewares ?? [], middleware]
|
57
222
|
});
|
58
223
|
}
|
59
224
|
router(router) {
|
60
|
-
const
|
61
|
-
|
62
|
-
middlewares: this.zz$rb.middlewares,
|
63
|
-
tags: this.zz$rb.tags,
|
64
|
-
prefix: this.zz$rb.prefix
|
65
|
-
});
|
66
|
-
return handled;
|
225
|
+
const adapted = adapt(router, this["~orpc"]);
|
226
|
+
return adapted;
|
67
227
|
}
|
68
228
|
lazy(loader) {
|
69
|
-
const
|
70
|
-
|
71
|
-
middlewares: this.zz$rb.middlewares,
|
72
|
-
tags: this.zz$rb.tags,
|
73
|
-
prefix: this.zz$rb.prefix
|
74
|
-
});
|
75
|
-
return lazy;
|
229
|
+
const adapted = adapt(flatLazy(lazy(loader)), this["~orpc"]);
|
230
|
+
return adapted;
|
76
231
|
}
|
77
232
|
};
|
78
|
-
function
|
79
|
-
if (
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
}
|
90
|
-
|
91
|
-
const handled = {};
|
92
|
-
for (const key in options.routerOrChild) {
|
93
|
-
handled[key] = adaptRouter({
|
94
|
-
...options,
|
95
|
-
routerOrChild: options.routerOrChild[key]
|
96
|
-
});
|
97
|
-
}
|
98
|
-
return handled;
|
99
|
-
}
|
100
|
-
function adaptLazyRouter(options) {
|
101
|
-
const loader = async () => {
|
102
|
-
const current = (await loadLazy(options.current)).default;
|
103
|
-
return {
|
104
|
-
default: adaptRouter({
|
105
|
-
...options,
|
106
|
-
routerOrChild: current
|
107
|
-
})
|
108
|
-
};
|
109
|
-
};
|
110
|
-
let lazyRouterPrefix = options.prefix;
|
111
|
-
if (LAZY_ROUTER_PREFIX_SYMBOL in options.current && typeof options.current[LAZY_ROUTER_PREFIX_SYMBOL] === "string") {
|
112
|
-
lazyRouterPrefix = lazyRouterPrefix ? prefixHTTPPath(options.current[LAZY_ROUTER_PREFIX_SYMBOL], lazyRouterPrefix) : options.current[LAZY_ROUTER_PREFIX_SYMBOL];
|
233
|
+
function adapt(item, options) {
|
234
|
+
if (isLazy(item)) {
|
235
|
+
const adaptedLazy = decorateLazy(lazy(async () => {
|
236
|
+
const routerOrProcedure = (await unlazy(item)).default;
|
237
|
+
const adapted2 = adapt(routerOrProcedure, options);
|
238
|
+
return { default: adapted2 };
|
239
|
+
}));
|
240
|
+
const lazyPrefix = getLazyRouterPrefix(item);
|
241
|
+
if (options.prefix || lazyPrefix) {
|
242
|
+
const prefixed = deepSetLazyRouterPrefix(adaptedLazy, `${options.prefix ?? ""}${lazyPrefix ?? ""}`);
|
243
|
+
return prefixed;
|
244
|
+
}
|
245
|
+
return adaptedLazy;
|
113
246
|
}
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
get(target, key) {
|
119
|
-
if (typeof key !== "string") {
|
120
|
-
return Reflect.get(target, key);
|
121
|
-
}
|
122
|
-
return adaptLazyRouter({
|
123
|
-
...options,
|
124
|
-
current: createLazy(async () => {
|
125
|
-
const current = (await loadLazy(options.current)).default;
|
126
|
-
return { default: current[key] };
|
127
|
-
})
|
128
|
-
});
|
247
|
+
if (isProcedure(item)) {
|
248
|
+
let decorated = decorateProcedure(item);
|
249
|
+
if (options.tags?.length) {
|
250
|
+
decorated = decorated.unshiftTag(...options.tags);
|
129
251
|
}
|
130
|
-
|
131
|
-
|
132
|
-
}
|
133
|
-
function adaptProcedure(options) {
|
134
|
-
const builderMiddlewares = options.middlewares ?? [];
|
135
|
-
const procedureMiddlewares = options.procedure.zz$p.middlewares ?? [];
|
136
|
-
const middlewares = [
|
137
|
-
...builderMiddlewares,
|
138
|
-
...procedureMiddlewares.filter(
|
139
|
-
(item) => !builderMiddlewares.includes(item)
|
140
|
-
)
|
141
|
-
];
|
142
|
-
let contract = DecoratedContractProcedure.decorate(
|
143
|
-
options.procedure.zz$p.contract
|
144
|
-
).addTags(...options.tags ?? []);
|
145
|
-
if (options.prefix) {
|
146
|
-
contract = contract.prefix(options.prefix);
|
147
|
-
}
|
148
|
-
return decorateProcedure({
|
149
|
-
zz$p: {
|
150
|
-
...options.procedure.zz$p,
|
151
|
-
contract,
|
152
|
-
middlewares
|
252
|
+
if (options.prefix) {
|
253
|
+
decorated = decorated.prefix(options.prefix);
|
153
254
|
}
|
154
|
-
|
255
|
+
if (options.middlewares?.length) {
|
256
|
+
decorated = decorated.unshiftMiddleware(...options.middlewares);
|
257
|
+
}
|
258
|
+
return decorated;
|
259
|
+
}
|
260
|
+
const adapted = {};
|
261
|
+
for (const key in item) {
|
262
|
+
adapted[key] = adapt(item[key], options);
|
263
|
+
}
|
264
|
+
return adapted;
|
155
265
|
}
|
156
266
|
|
157
|
-
// src/
|
158
|
-
var
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
267
|
+
// src/router-implementer.ts
|
268
|
+
var RouterImplementer = class _RouterImplementer {
|
269
|
+
"~type" = "RouterImplementer";
|
270
|
+
"~orpc";
|
271
|
+
constructor(def) {
|
272
|
+
this["~orpc"] = def;
|
273
|
+
}
|
274
|
+
use(middleware) {
|
275
|
+
return new _RouterImplementer({
|
276
|
+
...this["~orpc"],
|
277
|
+
middlewares: [...this["~orpc"].middlewares ?? [], middleware]
|
167
278
|
});
|
168
279
|
}
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
contract: this.zz$pi.contract,
|
174
|
-
func
|
175
|
-
}
|
176
|
-
});
|
280
|
+
router(router) {
|
281
|
+
const adapted = new RouterBuilder(this["~orpc"]).router(router);
|
282
|
+
const contracted = setRouterContract(adapted, this["~orpc"].contract);
|
283
|
+
return contracted;
|
177
284
|
}
|
178
285
|
lazy(loader) {
|
179
|
-
|
286
|
+
const adapted = new RouterBuilder(this["~orpc"]).lazy(loader);
|
287
|
+
const contracted = setRouterContract(adapted, this["~orpc"].contract);
|
288
|
+
return contracted;
|
180
289
|
}
|
181
290
|
};
|
182
291
|
|
292
|
+
// src/implementer-chainable.ts
|
293
|
+
function createChainableImplementer(contract, middlewares) {
|
294
|
+
if (isContractProcedure(contract)) {
|
295
|
+
const implementer = new ProcedureImplementer({
|
296
|
+
contract,
|
297
|
+
middlewares
|
298
|
+
});
|
299
|
+
return implementer;
|
300
|
+
}
|
301
|
+
const chainable = {};
|
302
|
+
for (const key in contract) {
|
303
|
+
chainable[key] = createChainableImplementer(contract[key], middlewares);
|
304
|
+
}
|
305
|
+
const routerImplementer = new RouterImplementer({ contract, middlewares });
|
306
|
+
const merged = new Proxy(chainable, {
|
307
|
+
get(target, key) {
|
308
|
+
const next = Reflect.get(target, key);
|
309
|
+
const method = Reflect.get(routerImplementer, key);
|
310
|
+
if (typeof key !== "string" || typeof method !== "function") {
|
311
|
+
return next;
|
312
|
+
}
|
313
|
+
if (!next) {
|
314
|
+
return method.bind(routerImplementer);
|
315
|
+
}
|
316
|
+
return createCallableObject(next, method.bind(routerImplementer));
|
317
|
+
}
|
318
|
+
});
|
319
|
+
return merged;
|
320
|
+
}
|
321
|
+
|
183
322
|
// src/procedure-builder.ts
|
323
|
+
import {
|
324
|
+
DecoratedContractProcedure as DecoratedContractProcedure2
|
325
|
+
} from "@orpc/contract";
|
184
326
|
var ProcedureBuilder = class _ProcedureBuilder {
|
185
|
-
|
186
|
-
|
327
|
+
"~type" = "ProcedureBuilder";
|
328
|
+
"~orpc";
|
329
|
+
constructor(def) {
|
330
|
+
this["~orpc"] = def;
|
187
331
|
}
|
188
|
-
|
189
|
-
* Self chainable
|
190
|
-
*/
|
191
|
-
route(opts) {
|
332
|
+
route(route) {
|
192
333
|
return new _ProcedureBuilder({
|
193
|
-
...this
|
194
|
-
contract: DecoratedContractProcedure2.decorate(this.
|
195
|
-
opts
|
196
|
-
)
|
334
|
+
...this["~orpc"],
|
335
|
+
contract: DecoratedContractProcedure2.decorate(this["~orpc"].contract).route(route)
|
197
336
|
});
|
198
337
|
}
|
199
338
|
input(schema, example) {
|
200
339
|
return new _ProcedureBuilder({
|
201
|
-
...this
|
202
|
-
contract: DecoratedContractProcedure2.decorate(this.
|
203
|
-
schema,
|
204
|
-
example
|
205
|
-
)
|
340
|
+
...this["~orpc"],
|
341
|
+
contract: DecoratedContractProcedure2.decorate(this["~orpc"].contract).input(schema, example)
|
206
342
|
});
|
207
343
|
}
|
208
344
|
output(schema, example) {
|
209
345
|
return new _ProcedureBuilder({
|
210
|
-
...this
|
211
|
-
contract: DecoratedContractProcedure2.decorate(this.
|
212
|
-
|
213
|
-
|
214
|
-
|
346
|
+
...this["~orpc"],
|
347
|
+
contract: DecoratedContractProcedure2.decorate(this["~orpc"].contract).output(schema, example)
|
348
|
+
});
|
349
|
+
}
|
350
|
+
errors(errors) {
|
351
|
+
return new _ProcedureBuilder({
|
352
|
+
...this["~orpc"],
|
353
|
+
contract: DecoratedContractProcedure2.decorate(this["~orpc"].contract).errors(errors)
|
215
354
|
});
|
216
355
|
}
|
217
356
|
use(middleware, mapInput) {
|
218
357
|
if (!mapInput) {
|
219
358
|
return new ProcedureImplementer({
|
220
|
-
contract: this.
|
221
|
-
middlewares: this.
|
359
|
+
contract: this["~orpc"].contract,
|
360
|
+
middlewares: this["~orpc"].middlewares
|
222
361
|
}).use(middleware);
|
223
362
|
}
|
224
363
|
return new ProcedureImplementer({
|
225
|
-
contract: this.
|
226
|
-
middlewares: this.
|
364
|
+
contract: this["~orpc"].contract,
|
365
|
+
middlewares: this["~orpc"].middlewares
|
227
366
|
}).use(middleware, mapInput);
|
228
367
|
}
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
middlewares: this.zz$pb.middlewares,
|
236
|
-
contract: this.zz$pb.contract,
|
237
|
-
func
|
238
|
-
}
|
239
|
-
});
|
368
|
+
handler(handler) {
|
369
|
+
return decorateProcedure(new Procedure({
|
370
|
+
middlewares: this["~orpc"].middlewares,
|
371
|
+
contract: this["~orpc"].contract,
|
372
|
+
handler
|
373
|
+
}));
|
240
374
|
}
|
241
375
|
};
|
242
376
|
|
243
|
-
// src/router-implementer.ts
|
244
|
-
import { isContractProcedure } from "@orpc/contract";
|
245
|
-
var ROUTER_CONTRACT_SYMBOL = Symbol("ORPC_ROUTER_CONTRACT");
|
246
|
-
var RouterImplementer = class {
|
247
|
-
constructor(zz$ri) {
|
248
|
-
this.zz$ri = zz$ri;
|
249
|
-
}
|
250
|
-
router(router) {
|
251
|
-
return Object.assign(new RouterBuilder({}).router(router), {
|
252
|
-
[ROUTER_CONTRACT_SYMBOL]: this.zz$ri.contract
|
253
|
-
});
|
254
|
-
}
|
255
|
-
lazy(loader) {
|
256
|
-
const lazy = createLazy(loader);
|
257
|
-
const decorated = decorateLazy(lazy);
|
258
|
-
return Object.assign(decorated, {
|
259
|
-
[ROUTER_CONTRACT_SYMBOL]: this.zz$ri.contract
|
260
|
-
});
|
261
|
-
}
|
262
|
-
};
|
263
|
-
function chainRouterImplementer(contract, middlewares) {
|
264
|
-
const result = {};
|
265
|
-
for (const key in contract) {
|
266
|
-
const item = contract[key];
|
267
|
-
if (isContractProcedure(item)) {
|
268
|
-
result[key] = new ProcedureImplementer({
|
269
|
-
contract: item,
|
270
|
-
middlewares
|
271
|
-
});
|
272
|
-
} else {
|
273
|
-
result[key] = chainRouterImplementer(item, middlewares);
|
274
|
-
}
|
275
|
-
}
|
276
|
-
const implementer = new RouterImplementer({ contract });
|
277
|
-
return Object.assign(implementer, result);
|
278
|
-
}
|
279
|
-
|
280
377
|
// src/builder.ts
|
281
378
|
var Builder = class _Builder {
|
282
|
-
|
283
|
-
|
379
|
+
"~type" = "Builder";
|
380
|
+
"~orpc";
|
381
|
+
constructor(def) {
|
382
|
+
this["~orpc"] = def;
|
284
383
|
}
|
285
|
-
/**
|
286
|
-
* Self chainable
|
287
|
-
*/
|
288
384
|
context() {
|
289
|
-
return
|
385
|
+
return new _Builder({});
|
290
386
|
}
|
291
|
-
use(middleware
|
292
|
-
const middleware_ = mapInput ? decorateMiddleware(middleware).mapInput(mapInput) : middleware;
|
387
|
+
use(middleware) {
|
293
388
|
return new _Builder({
|
294
|
-
...this
|
295
|
-
middlewares: [...this.
|
389
|
+
...this["~orpc"],
|
390
|
+
middlewares: [...this["~orpc"].middlewares ?? [], middleware]
|
296
391
|
});
|
297
392
|
}
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
route(
|
393
|
+
middleware(middleware) {
|
394
|
+
return decorateMiddleware(middleware);
|
395
|
+
}
|
396
|
+
route(route) {
|
302
397
|
return new ProcedureBuilder({
|
303
|
-
middlewares: this.
|
398
|
+
middlewares: this["~orpc"].middlewares,
|
304
399
|
contract: new ContractProcedure({
|
305
|
-
|
400
|
+
route,
|
306
401
|
InputSchema: void 0,
|
307
|
-
OutputSchema: void 0
|
402
|
+
OutputSchema: void 0,
|
403
|
+
errorMap: void 0
|
308
404
|
})
|
309
405
|
});
|
310
406
|
}
|
311
407
|
input(schema, example) {
|
312
408
|
return new ProcedureBuilder({
|
313
|
-
middlewares: this.
|
409
|
+
middlewares: this["~orpc"].middlewares,
|
314
410
|
contract: new ContractProcedure({
|
315
411
|
OutputSchema: void 0,
|
316
412
|
InputSchema: schema,
|
317
|
-
inputExample: example
|
413
|
+
inputExample: example,
|
414
|
+
errorMap: void 0
|
318
415
|
})
|
319
416
|
});
|
320
417
|
}
|
321
418
|
output(schema, example) {
|
322
419
|
return new ProcedureBuilder({
|
323
|
-
middlewares: this.
|
420
|
+
middlewares: this["~orpc"].middlewares,
|
324
421
|
contract: new ContractProcedure({
|
325
422
|
InputSchema: void 0,
|
326
423
|
OutputSchema: schema,
|
327
|
-
outputExample: example
|
424
|
+
outputExample: example,
|
425
|
+
errorMap: void 0
|
328
426
|
})
|
329
427
|
});
|
330
428
|
}
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
InputSchema: void 0,
|
340
|
-
OutputSchema: void 0
|
341
|
-
}),
|
342
|
-
func
|
343
|
-
}
|
429
|
+
errors(errors) {
|
430
|
+
return new ProcedureBuilder({
|
431
|
+
middlewares: this["~orpc"].middlewares,
|
432
|
+
contract: new ContractProcedure({
|
433
|
+
InputSchema: void 0,
|
434
|
+
OutputSchema: void 0,
|
435
|
+
errorMap: errors
|
436
|
+
})
|
344
437
|
});
|
345
438
|
}
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
}
|
356
|
-
return chainRouterImplementer(
|
357
|
-
contract,
|
358
|
-
this.zz$b.middlewares
|
359
|
-
);
|
360
|
-
}
|
361
|
-
/**
|
362
|
-
* Create ExtendedMiddleware
|
363
|
-
*/
|
364
|
-
// TODO: TOutput always any, infer not work at all, because TOutput used inside middleware params,
|
365
|
-
// solution (maybe): create new generic for .output() method
|
366
|
-
middleware(middleware) {
|
367
|
-
return decorateMiddleware(middleware);
|
439
|
+
handler(handler) {
|
440
|
+
return decorateProcedure(new Procedure({
|
441
|
+
middlewares: this["~orpc"].middlewares,
|
442
|
+
contract: new ContractProcedure({
|
443
|
+
InputSchema: void 0,
|
444
|
+
OutputSchema: void 0,
|
445
|
+
errorMap: void 0
|
446
|
+
}),
|
447
|
+
handler
|
448
|
+
}));
|
368
449
|
}
|
369
450
|
prefix(prefix) {
|
370
451
|
return new RouterBuilder({
|
371
|
-
|
452
|
+
middlewares: this["~orpc"].middlewares,
|
372
453
|
prefix
|
373
454
|
});
|
374
455
|
}
|
375
|
-
|
456
|
+
tag(...tags) {
|
376
457
|
return new RouterBuilder({
|
377
|
-
|
458
|
+
middlewares: this["~orpc"].middlewares,
|
378
459
|
tags
|
379
460
|
});
|
380
461
|
}
|
381
|
-
/**
|
382
|
-
* Create DecoratedRouter
|
383
|
-
*/
|
384
462
|
router(router) {
|
385
|
-
return new RouterBuilder(this
|
463
|
+
return new RouterBuilder(this["~orpc"]).router(router);
|
386
464
|
}
|
387
465
|
lazy(loader) {
|
388
|
-
return new RouterBuilder(this
|
466
|
+
return new RouterBuilder(this["~orpc"]).lazy(loader);
|
467
|
+
}
|
468
|
+
contract(contract) {
|
469
|
+
return createChainableImplementer(contract, this["~orpc"].middlewares);
|
389
470
|
}
|
390
471
|
};
|
391
472
|
|
392
|
-
// src/router.ts
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
} else if (isProcedure(item)) {
|
403
|
-
contract[key] = item.zz$p.contract;
|
404
|
-
} else {
|
405
|
-
contract[key] = toContractRouter(item);
|
406
|
-
}
|
473
|
+
// src/router-client.ts
|
474
|
+
function createRouterClient(options) {
|
475
|
+
if (isProcedure(options.router)) {
|
476
|
+
const caller = createProcedureClient({
|
477
|
+
...options,
|
478
|
+
procedure: options.router,
|
479
|
+
context: options.context,
|
480
|
+
path: options.path
|
481
|
+
});
|
482
|
+
return caller;
|
407
483
|
}
|
408
|
-
|
409
|
-
}
|
410
|
-
|
411
|
-
// src/router-caller.ts
|
412
|
-
function createRouterCaller(options) {
|
413
|
-
return createRouterCallerInternal(options);
|
414
|
-
}
|
415
|
-
function createRouterCallerInternal(options) {
|
416
|
-
const procedureCaller = isLazy(options.router) || isProcedure(options.router) ? createProcedureCaller({
|
484
|
+
const procedureCaller = isLazy(options.router) ? createProcedureClient({
|
417
485
|
...options,
|
418
|
-
procedure: options.router,
|
486
|
+
procedure: createLazyProcedureFormAnyLazy(options.router),
|
419
487
|
context: options.context,
|
420
|
-
path: options.
|
488
|
+
path: options.path
|
421
489
|
}) : {};
|
422
490
|
const recursive = new Proxy(procedureCaller, {
|
423
491
|
get(target, key) {
|
424
492
|
if (typeof key !== "string") {
|
425
493
|
return Reflect.get(target, key);
|
426
494
|
}
|
427
|
-
const next = options.router
|
428
|
-
|
495
|
+
const next = getRouterChild(options.router, key);
|
496
|
+
if (!next) {
|
497
|
+
return Reflect.get(target, key);
|
498
|
+
}
|
499
|
+
return createRouterClient({
|
429
500
|
...options,
|
430
501
|
router: next,
|
431
|
-
|
502
|
+
path: [...options.path ?? [], key]
|
432
503
|
});
|
433
504
|
}
|
434
505
|
});
|
@@ -436,32 +507,39 @@ function createRouterCallerInternal(options) {
|
|
436
507
|
}
|
437
508
|
|
438
509
|
// src/index.ts
|
439
|
-
|
440
|
-
var os = new Builder();
|
510
|
+
import { configGlobal, fallbackToGlobalConfig, isDefinedError, ORPCError, safe } from "@orpc/contract";
|
511
|
+
var os = new Builder({});
|
441
512
|
export {
|
442
513
|
Builder,
|
443
514
|
LAZY_LOADER_SYMBOL,
|
444
|
-
|
515
|
+
ORPCError,
|
445
516
|
Procedure,
|
446
517
|
ProcedureBuilder,
|
447
518
|
ProcedureImplementer,
|
448
|
-
ROUTER_CONTRACT_SYMBOL,
|
449
519
|
RouterBuilder,
|
450
520
|
RouterImplementer,
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
521
|
+
configGlobal,
|
522
|
+
createChainableImplementer,
|
523
|
+
createORPCErrorConstructorMap,
|
524
|
+
createProcedureClient,
|
525
|
+
createRouterClient,
|
456
526
|
decorateLazy,
|
457
527
|
decorateMiddleware,
|
458
528
|
decorateProcedure,
|
529
|
+
deepSetLazyRouterPrefix,
|
530
|
+
fallbackToGlobalConfig,
|
531
|
+
flatLazy,
|
532
|
+
getLazyRouterPrefix,
|
533
|
+
getRouterChild,
|
534
|
+
getRouterContract,
|
535
|
+
isDefinedError,
|
459
536
|
isLazy,
|
460
537
|
isProcedure,
|
461
|
-
|
462
|
-
loadProcedure,
|
538
|
+
lazy,
|
463
539
|
mergeContext,
|
464
540
|
os,
|
465
|
-
|
541
|
+
safe,
|
542
|
+
setRouterContract,
|
543
|
+
unlazy
|
466
544
|
};
|
467
545
|
//# sourceMappingURL=index.js.map
|