tspace-spear 1.2.5 → 1.2.6

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 (44) hide show
  1. package/README.md +300 -26
  2. package/dist/cli/app.d.ts +1 -0
  3. package/dist/cli/app.js +24 -0
  4. package/dist/cli/app.js.map +1 -0
  5. package/dist/cli/controller.d.ts +1 -0
  6. package/dist/cli/controller.js +158 -0
  7. package/dist/cli/controller.js.map +1 -0
  8. package/dist/cli/index.d.ts +2 -0
  9. package/dist/cli/index.js +138 -0
  10. package/dist/cli/index.js.map +1 -0
  11. package/dist/lib/core/client/index.d.ts +82 -0
  12. package/dist/lib/core/client/index.js +142 -0
  13. package/dist/lib/core/client/index.js.map +1 -0
  14. package/dist/lib/core/compiler/generator.d.ts +18 -0
  15. package/dist/lib/core/compiler/generator.js +347 -0
  16. package/dist/lib/core/compiler/generator.js.map +1 -0
  17. package/dist/lib/core/compiler/index.d.ts +14 -0
  18. package/dist/lib/core/compiler/index.js +12 -0
  19. package/dist/lib/core/compiler/index.js.map +1 -0
  20. package/dist/lib/core/compiler/pre-routes.d.ts +165 -0
  21. package/dist/lib/core/compiler/pre-routes.js +48 -0
  22. package/dist/lib/core/compiler/pre-routes.js.map +1 -0
  23. package/dist/lib/core/compiler/types.d.ts +14 -0
  24. package/dist/lib/core/compiler/types.js +3 -0
  25. package/dist/lib/core/compiler/types.js.map +1 -0
  26. package/dist/lib/core/decorators/context.d.ts +50 -1
  27. package/dist/lib/core/decorators/context.js +87 -3
  28. package/dist/lib/core/decorators/context.js.map +1 -1
  29. package/dist/lib/core/decorators/swagger.d.ts +1 -1
  30. package/dist/lib/core/decorators/swagger.js +1 -1
  31. package/dist/lib/core/decorators/swagger.js.map +1 -1
  32. package/dist/lib/core/server/fast-router.js +11 -2
  33. package/dist/lib/core/server/fast-router.js.map +1 -1
  34. package/dist/lib/core/server/index.d.ts +16 -0
  35. package/dist/lib/core/server/index.js +118 -38
  36. package/dist/lib/core/server/index.js.map +1 -1
  37. package/dist/lib/core/server/parser-factory.d.ts +2 -2
  38. package/dist/lib/core/server/parser-factory.js +236 -4
  39. package/dist/lib/core/server/parser-factory.js.map +1 -1
  40. package/dist/lib/core/types/index.d.ts +13 -9
  41. package/dist/tests/e2e..test.d.ts +1 -0
  42. package/dist/tests/e2e..test.js +16 -0
  43. package/dist/tests/e2e..test.js.map +1 -0
  44. package/package.json +32 -4
@@ -0,0 +1,347 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.generateRoutes = generateRoutes;
7
+ const ts_morph_1 = require("ts-morph");
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const path_1 = __importDefault(require("path"));
10
+ const HTTP_METHODS = {
11
+ Get: "GET",
12
+ Post: "POST",
13
+ Put: "PUT",
14
+ Patch: "PATCH",
15
+ Delete: "DELETE",
16
+ Options: "OPTIONS",
17
+ Head: "HEAD",
18
+ };
19
+ function normalizePath(p) {
20
+ return ("/" +
21
+ p
22
+ .replace(/['"`]/g, "")
23
+ .replace(/\/+/g, "/")
24
+ .replace(/\/$/, "")
25
+ .replace(/^\//, ""));
26
+ }
27
+ function splitTopLevel(input) {
28
+ const parts = [];
29
+ let current = "";
30
+ let depth = 0;
31
+ for (const char of input) {
32
+ if (char === "{")
33
+ depth++;
34
+ if (char === "}")
35
+ depth--;
36
+ if (char === ";" && depth === 0) {
37
+ parts.push(current.trim());
38
+ current = "";
39
+ continue;
40
+ }
41
+ current += char;
42
+ }
43
+ if (current.trim()) {
44
+ parts.push(current.trim());
45
+ }
46
+ return parts;
47
+ }
48
+ function parseType(type) {
49
+ type = type.trim();
50
+ if (type === "never") {
51
+ return null;
52
+ }
53
+ if (type.startsWith("Record<")) {
54
+ return {};
55
+ }
56
+ if (type.startsWith("Partial<")) {
57
+ const inner = type
58
+ .replace(/^Partial</, "")
59
+ .replace(/>$/, "");
60
+ const parsed = parseType(inner);
61
+ if (parsed &&
62
+ typeof parsed === "object" &&
63
+ !Array.isArray(parsed)) {
64
+ for (const key in parsed) {
65
+ parsed[key] =
66
+ parsed[key] + " | null";
67
+ }
68
+ }
69
+ return parsed;
70
+ }
71
+ if (type.startsWith("Promise<")) {
72
+ const inner = type
73
+ .replace(/^Promise</, "")
74
+ .replace(/>$/, "");
75
+ return parseType(inner);
76
+ }
77
+ if (type.endsWith("[]")) {
78
+ return [parseType(type.slice(0, -2))];
79
+ }
80
+ if (type.startsWith("{") &&
81
+ type.endsWith("}")) {
82
+ const result = {};
83
+ const content = type.slice(1, -1);
84
+ const fields = splitTopLevel(content)
85
+ .map((x) => x.trim())
86
+ .filter(Boolean);
87
+ for (const field of fields) {
88
+ const match = field.match(/^(\w+)(\??):\s*(.+)$/);
89
+ if (!match)
90
+ continue;
91
+ const [, key, optional, value] = match;
92
+ let parsed;
93
+ if (value === "string") {
94
+ parsed = optional
95
+ ? "string | null"
96
+ : "string";
97
+ }
98
+ else if (value === "number") {
99
+ parsed = optional
100
+ ? "number | null"
101
+ : "number";
102
+ }
103
+ else if (value === "boolean") {
104
+ parsed = optional
105
+ ? "boolean | null"
106
+ : "boolean";
107
+ }
108
+ else {
109
+ parsed = parseType(value);
110
+ }
111
+ result[key] = parsed;
112
+ }
113
+ return result;
114
+ }
115
+ if (type === "string")
116
+ return "string";
117
+ if (type === "number")
118
+ return "number";
119
+ if (type === "boolean")
120
+ return "boolean";
121
+ if (type === "string | undefined")
122
+ return "string";
123
+ if (type === "number | undefined")
124
+ return "number";
125
+ if (type === "boolean | undefined")
126
+ return "boolean";
127
+ if (type.includes("| undefined")) {
128
+ return type;
129
+ }
130
+ if (type.includes("| null")) {
131
+ return type;
132
+ }
133
+ // fallback
134
+ return {
135
+ $ref: type
136
+ };
137
+ }
138
+ function resolveType(type) {
139
+ if (type.getSymbol()?.getName() === "Promise") {
140
+ type = type.getTypeArguments()[0];
141
+ }
142
+ if (type.isString())
143
+ return "string";
144
+ if (type.isNumber())
145
+ return "number";
146
+ if (type.isBoolean())
147
+ return "boolean";
148
+ if (type.isNull())
149
+ return "null";
150
+ if (type.isUndefined())
151
+ return "undefined";
152
+ if (type.isAny())
153
+ return "any";
154
+ if (type.isUnknown())
155
+ return "unknown";
156
+ if (type.isArray()) {
157
+ const el = type.getArrayElementTypeOrThrow();
158
+ return `${resolveType(el)}[]`;
159
+ }
160
+ const props = type.getProperties();
161
+ if (props.length) {
162
+ const obj = [];
163
+ for (const prop of props) {
164
+ const decl = prop.getDeclarations()[0];
165
+ if (!decl)
166
+ continue;
167
+ const propType = prop.getTypeAtLocation(decl);
168
+ const text = propType.getText(decl);
169
+ const key = prop.getName();
170
+ let value = resolveType(propType);
171
+ if (/^\s*(\(.*\)\s*=>|function\b)/.test(value)) {
172
+ continue;
173
+ }
174
+ if (text.includes('[x: string]')) {
175
+ value = text;
176
+ }
177
+ ;
178
+ let colon = ":";
179
+ const maybeOptional = value.includes(" | undefined");
180
+ if (maybeOptional) {
181
+ value = value.replace(" | undefined", "");
182
+ colon = "?:";
183
+ }
184
+ obj.push(`${key}${colon} ${value}`);
185
+ }
186
+ return `{ ${obj.join("; ")} }`;
187
+ }
188
+ return type.getText();
189
+ }
190
+ function extractPropertyType(type, key, node) {
191
+ const prop = type.getProperty(key);
192
+ if (!prop)
193
+ return "never";
194
+ const t = prop.getTypeAtLocation(node);
195
+ const text = t.getText(node);
196
+ if (text.includes('[x: string]'))
197
+ return text;
198
+ if (!text || text.includes("undefined"))
199
+ return "never";
200
+ return resolveType(t) ?? "never";
201
+ }
202
+ async function generateRoutes(options) {
203
+ const project = new ts_morph_1.Project({
204
+ tsConfigFilePath: path_1.default.resolve(process.cwd(), "tsconfig.json"),
205
+ });
206
+ project.addSourceFilesAtPaths(path_1.default.join(options.controllers.folder, "**/*"));
207
+ const files = project.getSourceFiles();
208
+ if (!files.length) {
209
+ console.log("No controller files found");
210
+ return;
211
+ }
212
+ const routes = [];
213
+ for (const file of files) {
214
+ const filename = file.getBaseName();
215
+ if (!options.controllers.name.test(filename))
216
+ continue;
217
+ for (const cls of file.getClasses()) {
218
+ const controller = cls.getDecorator("Controller");
219
+ if (!controller)
220
+ continue;
221
+ const basePath = controller.getArguments()[0]
222
+ ?.getText()
223
+ .replace(/['"`]/g, "") || "";
224
+ for (const method of cls.getMethods()) {
225
+ for (const [decName, http] of Object.entries(HTTP_METHODS)) {
226
+ const decorator = method.getDecorator(decName);
227
+ if (!decorator)
228
+ continue;
229
+ const methodPath = decorator
230
+ .getArguments()[0]
231
+ ?.getText()
232
+ .replace(/['"`]/g, "") || "";
233
+ const fullPath = normalizePath(`${basePath}/${methodPath}`);
234
+ const response = resolveType(method.getReturnType());
235
+ let body = "never";
236
+ let params = "never";
237
+ let query = "never";
238
+ let files = "never";
239
+ const firstParam = method.getParameters()[0];
240
+ if (firstParam) {
241
+ const type = firstParam.getType();
242
+ body = extractPropertyType(type, "body", firstParam);
243
+ params = extractPropertyType(type, "params", firstParam);
244
+ query = extractPropertyType(type, "query", firstParam);
245
+ files = extractPropertyType(type, "files", firstParam);
246
+ }
247
+ routes.push({
248
+ method: http,
249
+ path: fullPath,
250
+ response,
251
+ body,
252
+ params,
253
+ query,
254
+ files,
255
+ });
256
+ }
257
+ }
258
+ }
259
+ }
260
+ const groupedTypes = routes.reduce((acc, r) => {
261
+ acc[r.path] ??= {};
262
+ acc[r.path][r.method] = {
263
+ response: r.response,
264
+ body: r.body,
265
+ params: r.params,
266
+ query: r.query,
267
+ files: r.files,
268
+ };
269
+ return acc;
270
+ }, {});
271
+ const routeMapTypes = Object.entries(groupedTypes)
272
+ .map(([path, methods]) => {
273
+ const methodBlock = Object.entries(methods)
274
+ .map(([method, c]) => `
275
+ ${method}: {
276
+ params: ${c.params}
277
+ query: ${c.query}
278
+ body: ${c.body}
279
+ files: ${c.files}
280
+ response: ${c.response}
281
+ }`).join("\n");
282
+ return `
283
+ "${path}": {
284
+ ${methodBlock}
285
+ }`;
286
+ })
287
+ .join("\n");
288
+ const formatValue = (v) => {
289
+ if (typeof v === "string")
290
+ return v;
291
+ return JSON.stringify(v);
292
+ };
293
+ const groupedValues = routes.reduce((acc, route) => {
294
+ if (!acc[route.path]) {
295
+ acc[route.path] = {};
296
+ }
297
+ acc[route.path][route.method] = {
298
+ params: parseType(route.params),
299
+ query: parseType(route.query),
300
+ body: parseType(route.body),
301
+ files: parseType(route.files),
302
+ response: parseType(route.response),
303
+ };
304
+ return acc;
305
+ }, {});
306
+ const routerMapValues = Object.entries(groupedValues)
307
+ .map(([path, methods]) => {
308
+ const methodBlock = Object.entries(methods)
309
+ .map(([method, c]) => `
310
+ ${method}: {
311
+ params: ${formatValue(c.params)},
312
+ query: ${formatValue(c.query)},
313
+ body: ${formatValue(c.body)},
314
+ files: ${formatValue(c.files)},
315
+ response: ${formatValue(c.response)}
316
+ }`).join(",\n");
317
+ return `
318
+ "${path}": {
319
+ ${methodBlock}
320
+ }`;
321
+ })
322
+ .join(",\n");
323
+ const output = `
324
+ // @ts-nocheck
325
+ // AUTO GENERATED FILE
326
+ // DO NOT EDIT
327
+
328
+ export const appRoutes = {
329
+ ${routerMapValues}
330
+ }
331
+
332
+ export interface AppRoutes {
333
+ ${routeMapTypes}
334
+ }
335
+
336
+ export type AppRoute = keyof AppRoutes
337
+ `;
338
+ const outPath = options.output
339
+ ? `${__dirname}/${options.output}/pre-routes.ts`
340
+ : `${__dirname}/pre-routes.ts`;
341
+ await fs_1.default.promises.mkdir(path_1.default.dirname(outPath), {
342
+ recursive: true,
343
+ });
344
+ await fs_1.default.promises.writeFile(outPath, output);
345
+ return routes;
346
+ }
347
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../src/lib/core/compiler/generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export declare class Compiler {
2
+ generateRoutes(options: {
3
+ folder: string;
4
+ name: RegExp;
5
+ }): Promise<void | {
6
+ method: string;
7
+ path: string;
8
+ response: string;
9
+ body: string;
10
+ params: string;
11
+ query: string;
12
+ files: string;
13
+ }[] | undefined>;
14
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Compiler = void 0;
4
+ const generator_1 = require("./generator");
5
+ class Compiler {
6
+ async generateRoutes(options) {
7
+ return await (0, generator_1.generateRoutes)({ controllers: options })
8
+ .catch(err => console.log(err));
9
+ }
10
+ }
11
+ exports.Compiler = Compiler;
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/core/compiler/index.ts"],"names":[],"mappings":";;;AAAA,2CAA4C;AAC5C,MAAa,QAAQ;IACV,KAAK,CAAC,cAAc,CAAE,OAG5B;QACG,OAAO,MAAM,IAAA,0BAAc,EAAC,EAAE,WAAW,EAAG,OAAO,EAAE,CAAC;aACrD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;IACnC,CAAC;CACJ;AARD,4BAQC"}
@@ -0,0 +1,165 @@
1
+ export declare const appRoutes: {
2
+ "/cats": {
3
+ GET: {
4
+ params: null;
5
+ query: {
6
+ id: string;
7
+ name: string;
8
+ };
9
+ body: {};
10
+ files: null;
11
+ response: {
12
+ query: {
13
+ id: string;
14
+ name: string;
15
+ };
16
+ cats: {
17
+ id: string;
18
+ name: string;
19
+ age: string;
20
+ }[];
21
+ };
22
+ };
23
+ POST: {
24
+ params: null;
25
+ query: null;
26
+ body: {
27
+ name: string;
28
+ age: string;
29
+ };
30
+ files: null;
31
+ response: {
32
+ cat: {
33
+ name: string;
34
+ age: string;
35
+ id: string;
36
+ };
37
+ message: string;
38
+ };
39
+ };
40
+ };
41
+ "/cats/:id": {
42
+ GET: {
43
+ params: {
44
+ id: string;
45
+ };
46
+ query: null;
47
+ body: {};
48
+ files: null;
49
+ response: {
50
+ cat: {
51
+ id: string;
52
+ name: string;
53
+ age: string;
54
+ };
55
+ };
56
+ };
57
+ PUT: {
58
+ params: {
59
+ id: string;
60
+ };
61
+ query: null;
62
+ body: {
63
+ name: string;
64
+ age: string;
65
+ };
66
+ files: null;
67
+ response: {
68
+ $ref: string;
69
+ };
70
+ };
71
+ DELETE: {
72
+ params: {
73
+ id: string;
74
+ };
75
+ query: null;
76
+ body: {};
77
+ files: null;
78
+ response: {
79
+ message: string;
80
+ };
81
+ };
82
+ };
83
+ };
84
+ export interface AppRoutes {
85
+ "/cats": {
86
+ GET: {
87
+ params: never;
88
+ query: {
89
+ id?: string;
90
+ name?: string;
91
+ };
92
+ body: Record<string, any>;
93
+ files: never;
94
+ response: {
95
+ query: {
96
+ id?: string;
97
+ name?: string;
98
+ };
99
+ cats: {
100
+ id: number;
101
+ name: string;
102
+ age: number;
103
+ }[];
104
+ };
105
+ };
106
+ POST: {
107
+ params: never;
108
+ query: never;
109
+ body: {
110
+ name: string;
111
+ age: number;
112
+ };
113
+ files: never;
114
+ response: {
115
+ cat: {
116
+ name: string;
117
+ age: number;
118
+ id: number;
119
+ };
120
+ message: string;
121
+ };
122
+ };
123
+ };
124
+ "/cats/:id": {
125
+ GET: {
126
+ params: {
127
+ id: number;
128
+ };
129
+ query: never;
130
+ body: Record<string, any>;
131
+ files: never;
132
+ response: {
133
+ cat: {
134
+ id: number;
135
+ name: string;
136
+ age: number;
137
+ };
138
+ };
139
+ };
140
+ PUT: {
141
+ params: {
142
+ id: number;
143
+ };
144
+ query: never;
145
+ body: {
146
+ name?: string;
147
+ age?: number;
148
+ };
149
+ files: never;
150
+ response: any;
151
+ };
152
+ DELETE: {
153
+ params: {
154
+ id: number;
155
+ };
156
+ query: never;
157
+ body: Record<string, any>;
158
+ files: never;
159
+ response: {
160
+ message: string;
161
+ };
162
+ };
163
+ };
164
+ }
165
+ export type AppRoute = keyof AppRoutes;
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ // @ts-nocheck
3
+ // AUTO GENERATED FILE
4
+ // DO NOT EDIT
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.appRoutes = void 0;
7
+ exports.appRoutes = {
8
+ "/cats": {
9
+ GET: {
10
+ params: null,
11
+ query: { "id": "string | null", "name": "string | null" },
12
+ body: {},
13
+ files: null,
14
+ response: { "query": { "id": "string | null", "name": "string | null" }, "cats": [{ "id": "number", "name": "string", "age": "number" }] }
15
+ },
16
+ POST: {
17
+ params: null,
18
+ query: null,
19
+ body: { "name": "string", "age": "number" },
20
+ files: null,
21
+ response: { "cat": { "name": "string", "age": "number", "id": "number" }, "message": "string" }
22
+ }
23
+ },
24
+ "/cats/:id": {
25
+ GET: {
26
+ params: { "id": "number" },
27
+ query: null,
28
+ body: {},
29
+ files: null,
30
+ response: { "cat": { "id": "number", "name": "string", "age": "number" } }
31
+ },
32
+ PUT: {
33
+ params: { "id": "number" },
34
+ query: null,
35
+ body: { "name": "string | null", "age": "number | null" },
36
+ files: null,
37
+ response: { "$ref": "any" }
38
+ },
39
+ DELETE: {
40
+ params: { "id": "number" },
41
+ query: null,
42
+ body: {},
43
+ files: null,
44
+ response: { "message": "string" }
45
+ }
46
+ }
47
+ };
48
+ //# sourceMappingURL=pre-routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pre-routes.js","sourceRoot":"","sources":["../../../../src/lib/core/compiler/pre-routes.ts"],"names":[],"mappings":";AACA,cAAc;AACd,sBAAsB;AACtB,cAAc;;;AAED,QAAA,SAAS,GAAG;IAEvB,OAAO,EAAE;QAEP,GAAG,EAAE;YACH,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,EAAC,IAAI,EAAC,eAAe,EAAC,MAAM,EAAC,eAAe,EAAC;YACpD,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,EAAC,OAAO,EAAC,EAAC,IAAI,EAAC,eAAe,EAAC,MAAM,EAAC,eAAe,EAAC,EAAC,MAAM,EAAC,CAAC,EAAC,IAAI,EAAC,QAAQ,EAAC,MAAM,EAAC,QAAQ,EAAC,KAAK,EAAC,QAAQ,EAAC,CAAC,EAAC;SAC1H;QAED,IAAI,EAAE;YACJ,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,EAAC,MAAM,EAAC,QAAQ,EAAC,KAAK,EAAC,QAAQ,EAAC;YACtC,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,EAAC,KAAK,EAAC,EAAC,MAAM,EAAC,QAAQ,EAAC,KAAK,EAAC,QAAQ,EAAC,IAAI,EAAC,QAAQ,EAAC,EAAC,SAAS,EAAC,QAAQ,EAAC;SACpF;KACF;IAED,WAAW,EAAE;QAEX,GAAG,EAAE;YACH,MAAM,EAAE,EAAC,IAAI,EAAC,QAAQ,EAAC;YACvB,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,EAAC,KAAK,EAAC,EAAC,IAAI,EAAC,QAAQ,EAAC,MAAM,EAAC,QAAQ,EAAC,KAAK,EAAC,QAAQ,EAAC,EAAC;SACjE;QAED,GAAG,EAAE;YACH,MAAM,EAAE,EAAC,IAAI,EAAC,QAAQ,EAAC;YACvB,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,EAAC,MAAM,EAAC,eAAe,EAAC,KAAK,EAAC,eAAe,EAAC;YACpD,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,EAAC,MAAM,EAAC,KAAK,EAAC;SACzB;QAED,MAAM,EAAE;YACN,MAAM,EAAE,EAAC,IAAI,EAAC,QAAQ,EAAC;YACvB,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,EAAC,SAAS,EAAC,QAAQ,EAAC;SAC/B;KACF;CACF,CAAA"}
@@ -0,0 +1,14 @@
1
+ export type AnyRoutes = {
2
+ [key: string]: any;
3
+ };
4
+ export type RoutesWithMethod<TRoutes extends AnyRoutes, TMethod extends string> = {
5
+ [K in keyof TRoutes]: TMethod extends keyof TRoutes[K] ? K : never;
6
+ }[keyof TRoutes];
7
+ export type ExtractFrom<TRoutes extends AnyRoutes, TPath extends keyof TRoutes, TMethod extends keyof TRoutes[TPath], Key extends string> = TRoutes[TPath][TMethod] extends Record<Key, infer R> ? R : never;
8
+ export type RequestBody<TRoutes extends AnyRoutes, TPath extends keyof TRoutes, TMethod extends keyof TRoutes[TPath]> = ExtractFrom<TRoutes, TPath, TMethod, "body">;
9
+ export type RequestQuery<TRoutes extends AnyRoutes, TPath extends keyof TRoutes, TMethod extends keyof TRoutes[TPath]> = ExtractFrom<TRoutes, TPath, TMethod, "query">;
10
+ export type RequestParams<TRoutes extends AnyRoutes, TPath extends keyof TRoutes, TMethod extends keyof TRoutes[TPath]> = ExtractFrom<TRoutes, TPath, TMethod, "params">;
11
+ export type RequestFiles<TRoutes extends AnyRoutes, TPath extends keyof TRoutes, TMethod extends keyof TRoutes[TPath]> = ExtractFrom<TRoutes, TPath, TMethod, "files">;
12
+ export type ResponseType<TRoutes extends AnyRoutes, TPath extends keyof TRoutes, TMethod extends keyof TRoutes[TPath]> = TRoutes[TPath][TMethod] extends {
13
+ response: infer R;
14
+ } ? Awaited<R> : never;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/lib/core/compiler/types.ts"],"names":[],"mappings":""}