tspace-spear 1.2.7 → 1.2.9

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 (80) hide show
  1. package/README.md +299 -146
  2. package/dist/cli/generators/app/index.d.ts +1 -0
  3. package/dist/cli/generators/app/index.js +124 -0
  4. package/dist/cli/generators/app/index.js.map +1 -0
  5. package/dist/cli/generators/app/template.d.ts +1 -0
  6. package/dist/cli/{app.js → generators/app/template.js} +22 -8
  7. package/dist/cli/generators/app/template.js.map +1 -0
  8. package/dist/cli/generators/client/template.d.ts +1 -0
  9. package/dist/cli/generators/client/template.js +30 -0
  10. package/dist/cli/generators/client/template.js.map +1 -0
  11. package/dist/cli/generators/controller/index.d.ts +1 -0
  12. package/dist/cli/generators/controller/index.js +78 -0
  13. package/dist/cli/generators/controller/index.js.map +1 -0
  14. package/dist/cli/generators/controller/template.d.ts +1 -0
  15. package/dist/cli/generators/controller/template.js +106 -0
  16. package/dist/cli/generators/controller/template.js.map +1 -0
  17. package/dist/cli/generators/dto/index.d.ts +1 -0
  18. package/dist/cli/generators/dto/index.js +57 -0
  19. package/dist/cli/generators/dto/index.js.map +1 -0
  20. package/dist/cli/generators/dto/template.d.ts +1 -0
  21. package/dist/cli/generators/dto/template.js +32 -0
  22. package/dist/cli/generators/dto/template.js.map +1 -0
  23. package/dist/cli/generators/middleware/index.d.ts +1 -0
  24. package/dist/cli/generators/middleware/index.js +38 -0
  25. package/dist/cli/generators/middleware/index.js.map +1 -0
  26. package/dist/cli/generators/middleware/template.d.ts +1 -0
  27. package/dist/cli/generators/middleware/template.js +16 -0
  28. package/dist/cli/generators/middleware/template.js.map +1 -0
  29. package/dist/cli/generators/module/index.d.ts +1 -0
  30. package/dist/cli/generators/module/index.js +173 -0
  31. package/dist/cli/generators/module/index.js.map +1 -0
  32. package/dist/cli/generators/service/index.d.ts +1 -0
  33. package/dist/cli/generators/service/index.js +53 -0
  34. package/dist/cli/generators/service/index.js.map +1 -0
  35. package/dist/cli/generators/service/template.d.ts +1 -0
  36. package/dist/cli/generators/service/template.js +74 -0
  37. package/dist/cli/generators/service/template.js.map +1 -0
  38. package/dist/cli/generators/shared/index.d.ts +3 -0
  39. package/dist/cli/generators/shared/index.js +22 -0
  40. package/dist/cli/generators/shared/index.js.map +1 -0
  41. package/dist/cli/index.js +53 -96
  42. package/dist/cli/index.js.map +1 -1
  43. package/dist/lib/core/client/index.d.ts +13 -43
  44. package/dist/lib/core/client/index.js +47 -26
  45. package/dist/lib/core/client/index.js.map +1 -1
  46. package/dist/lib/core/{compiler → client}/types.d.ts +29 -0
  47. package/dist/lib/core/client/types.js.map +1 -0
  48. package/dist/lib/core/compiler/generator.d.ts +4 -6
  49. package/dist/lib/core/compiler/generator.js +186 -39
  50. package/dist/lib/core/compiler/generator.js.map +1 -1
  51. package/dist/lib/core/compiler/index.d.ts +2 -2
  52. package/dist/lib/core/compiler/index.js +2 -2
  53. package/dist/lib/core/compiler/index.js.map +1 -1
  54. package/dist/lib/core/compiler/pre-routes.d.ts +170 -34
  55. package/dist/lib/core/compiler/pre-routes.js +45 -25
  56. package/dist/lib/core/compiler/pre-routes.js.map +1 -1
  57. package/dist/lib/core/decorators/context.d.ts +78 -8
  58. package/dist/lib/core/decorators/context.js +84 -9
  59. package/dist/lib/core/decorators/context.js.map +1 -1
  60. package/dist/lib/core/decorators/statusCode.js +3 -1
  61. package/dist/lib/core/decorators/statusCode.js.map +1 -1
  62. package/dist/lib/core/package/index.d.ts +11 -0
  63. package/dist/lib/core/package/index.js +42 -0
  64. package/dist/lib/core/package/index.js.map +1 -0
  65. package/dist/lib/core/server/fast-router.d.ts +2 -2
  66. package/dist/lib/core/server/fast-router.js +17 -3
  67. package/dist/lib/core/server/fast-router.js.map +1 -1
  68. package/dist/lib/core/server/index.js +2 -2
  69. package/dist/lib/core/server/index.js.map +1 -1
  70. package/dist/lib/core/server/response.js +21 -1
  71. package/dist/lib/core/server/response.js.map +1 -1
  72. package/dist/lib/core/types/index.d.ts +32 -27
  73. package/package.json +7 -4
  74. package/dist/cli/app.d.ts +0 -1
  75. package/dist/cli/app.js.map +0 -1
  76. package/dist/cli/controller.d.ts +0 -1
  77. package/dist/cli/controller.js +0 -158
  78. package/dist/cli/controller.js.map +0 -1
  79. package/dist/lib/core/compiler/types.js.map +0 -1
  80. /package/dist/lib/core/{compiler → client}/types.js +0 -0
@@ -0,0 +1,53 @@
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.createService = createService;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const shared_1 = require("../shared");
10
+ function createService(root, name) {
11
+ if (!name) {
12
+ console.log("Missing service path, try spear g service dog");
13
+ process.exit(1);
14
+ }
15
+ const resolvedPath = path_1.default.resolve(process.cwd(), root, 'modules', (0, shared_1.toPlural)(name));
16
+ const fileName = `${(0, shared_1.toSingular)(name)}.service.ts`;
17
+ const target = path_1.default.join(resolvedPath, fileName);
18
+ fs_1.default.mkdirSync(resolvedPath, { recursive: true });
19
+ const className = (0, shared_1.capitalize)((0, shared_1.toSingular)(name)) + "Service";
20
+ fs_1.default.writeFileSync(target, `
21
+ class ${className} {
22
+ public async index() {
23
+ return [];
24
+ };
25
+
26
+ public async show(id: number) {
27
+ return {};
28
+ };
29
+
30
+ public async create() {
31
+ return {};
32
+ }
33
+
34
+ public async update(id: number) {
35
+ return {};
36
+ }
37
+
38
+ public async remove(id: number) {
39
+ return {};
40
+ }
41
+ }
42
+
43
+ export { ${className} };
44
+ export default ${className};
45
+ `);
46
+ console.log(`
47
+ CREATE ${target}
48
+
49
+ ✔ Successfully generated service "${name}"
50
+
51
+ `);
52
+ }
53
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/generators/service/index.ts"],"names":[],"mappings":";;;;;AAQA,sCAoDC;AA5DD,4CAAoB;AACpB,gDAAwB;AACxB,sCAImB;AAEnB,SAAgB,aAAa,CAAC,IAAa,EAAC,IAAa;IACvD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,YAAY,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,EAAG,SAAS,EAAE,IAAA,iBAAQ,EAAC,IAAI,CAAC,CAAC,CAAC;IAEnF,MAAM,QAAQ,GAAG,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,aAAa,CAAC;IAElD,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAEjD,YAAE,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEhD,MAAM,SAAS,GAAG,IAAA,mBAAU,EAAC,IAAA,mBAAU,EAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;IAE3D,YAAE,CAAC,aAAa,CACd,MAAM,EACN;QACI,SAAS;;;;;;;;;;;;;;;;;;;;;;WAsBN,SAAS;iBACH,SAAS;CACzB,CACE,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC;WACF,MAAM;;oCAEmB,IAAI;;CAEvC,CAAC,CAAA;AACF,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const ServiceTemplate = "\nimport { \n CreateCatDto, \n UpdateCatDto \n} from \"./cat.dto\";\n\ntype Cat = {\n id: number;\n name: string;\n age: number;\n}\n\nexport class CatService {\n private cats: Cat[] = [\n { id: 1, name: 'cat1', age: 1.6 },\n { id: 2, name: 'cat2', age: 1.8 },\n ];\n public async index() {\n return this.cats;\n };\n\n public async show(id: number) {\n const cat = this.cats.find(cat => cat.id === id);\n if(cat == null) return null;\n return cat;\n };\n\n public async create({ name, age }: CreateCatDto) {\n\n const cat = {\n id: this.cats.length + 1,\n name: name,\n age: age\n };\n\n this.cats.push(cat);\n\n return cat;\n }\n \n public async update(id: number, { name, age }: UpdateCatDto) {\n const index = this.cats.findIndex(d => d.id === id);\n\n if (index === -1) {\n throw new Error(\"Cat not found\");\n }\n\n this.cats[index] = {\n ...this.cats[index],\n ...{ name, age } \n };\n\n const cat = this.cats[index];\n\n return cat;\n }\n\n public async remove(id: number) {\n const index = this.cats.findIndex(d => d.id === id);\n\n if (index === -1) {\n throw new Error(\"Cat not found\");\n }\n\n this.cats.splice(index, 1);\n\n return true;\n }\n}\n";
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ServiceTemplate = void 0;
4
+ exports.ServiceTemplate = `
5
+ import {
6
+ CreateCatDto,
7
+ UpdateCatDto
8
+ } from "./cat.dto";
9
+
10
+ type Cat = {
11
+ id: number;
12
+ name: string;
13
+ age: number;
14
+ }
15
+
16
+ export class CatService {
17
+ private cats: Cat[] = [
18
+ { id: 1, name: 'cat1', age: 1.6 },
19
+ { id: 2, name: 'cat2', age: 1.8 },
20
+ ];
21
+ public async index() {
22
+ return this.cats;
23
+ };
24
+
25
+ public async show(id: number) {
26
+ const cat = this.cats.find(cat => cat.id === id);
27
+ if(cat == null) return null;
28
+ return cat;
29
+ };
30
+
31
+ public async create({ name, age }: CreateCatDto) {
32
+
33
+ const cat = {
34
+ id: this.cats.length + 1,
35
+ name: name,
36
+ age: age
37
+ };
38
+
39
+ this.cats.push(cat);
40
+
41
+ return cat;
42
+ }
43
+
44
+ public async update(id: number, { name, age }: UpdateCatDto) {
45
+ const index = this.cats.findIndex(d => d.id === id);
46
+
47
+ if (index === -1) {
48
+ throw new Error("Cat not found");
49
+ }
50
+
51
+ this.cats[index] = {
52
+ ...this.cats[index],
53
+ ...{ name, age }
54
+ };
55
+
56
+ const cat = this.cats[index];
57
+
58
+ return cat;
59
+ }
60
+
61
+ public async remove(id: number) {
62
+ const index = this.cats.findIndex(d => d.id === id);
63
+
64
+ if (index === -1) {
65
+ throw new Error("Cat not found");
66
+ }
67
+
68
+ this.cats.splice(index, 1);
69
+
70
+ return true;
71
+ }
72
+ }
73
+ `;
74
+ //# sourceMappingURL=template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../src/cli/generators/service/template.ts"],"names":[],"mappings":";;;AACa,QAAA,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqE9B,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function toSingular(name: string): string;
2
+ export declare function toPlural(name: string): string;
3
+ export declare function capitalize(value: string): string;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toSingular = toSingular;
4
+ exports.toPlural = toPlural;
5
+ exports.capitalize = capitalize;
6
+ function toSingular(name) {
7
+ if (!name)
8
+ return name;
9
+ return name.endsWith("s") ? name.slice(0, -1) : name;
10
+ }
11
+ function toPlural(name) {
12
+ if (!name)
13
+ return name;
14
+ if (name.endsWith("s"))
15
+ return name;
16
+ return name + "s";
17
+ }
18
+ function capitalize(value) {
19
+ return (value.charAt(0).toUpperCase() +
20
+ value.slice(1));
21
+ }
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/generators/shared/index.ts"],"names":[],"mappings":";;AAAA,gCAGC;AAED,4BAMC;AAED,gCAOC;AApBD,SAAgB,UAAU,CAAC,IAAY;IACrC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvD,CAAC;AAED,SAAgB,QAAQ,CAAC,IAAY;IACnC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAEpC,OAAO,IAAI,GAAG,GAAG,CAAC;AACpB,CAAC;AAED,SAAgB,UAAU,CACxB,KAAa;IAEb,OAAO,CACL,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;QAC7B,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CACf,CAAC;AACJ,CAAC"}
package/dist/cli/index.js CHANGED
@@ -1,109 +1,66 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
6
3
  Object.defineProperty(exports, "__esModule", { value: true });
7
- const fs_1 = __importDefault(require("fs"));
8
- const path_1 = __importDefault(require("path"));
9
- const app_1 = require("./app");
10
- const controller_1 = require("./controller");
11
- const [, , action, type, target] = process.argv;
12
- switch (`${action}:${type}`) {
13
- case "create:app":
14
- createApp(target);
15
- break;
16
- case "create:controller":
17
- createController(target);
18
- break;
19
- default:
20
- console.log(`
21
- Usage:
22
-
23
- tspace-spear create app ./src
24
- tspace-spear create controller ./src/controllers/dogs
25
- `);
4
+ const app_1 = require("./generators/app");
5
+ const module_1 = require("./generators/module");
6
+ const controller_1 = require("./generators/controller");
7
+ const service_1 = require("./generators/service");
8
+ const middleware_1 = require("./generators/middleware");
9
+ const dto_1 = require("./generators/dto");
10
+ const [, , command, type, name] = process.argv;
11
+ /**
12
+ * spear create new <name>
13
+ * spear g module <name>
14
+ * spear g controller <name>
15
+ * spear g service <name>
16
+ * spear g middleware <name>
17
+ */
18
+ if (command === "create" && type === "new") {
19
+ (0, app_1.createApp)(name)
20
+ .then(_ => process.exit(1))
21
+ .catch(_ => process.exit(1));
26
22
  }
27
- function createApp(targetPath) {
28
- if (!targetPath) {
29
- console.log("Missing target path");
23
+ if (command === "g") {
24
+ if (!name) {
25
+ printUsage();
30
26
  process.exit(1);
31
27
  }
32
- const root = path_1.default.resolve(process.cwd(), targetPath);
33
- fs_1.default.mkdirSync(root, {
34
- recursive: true
35
- });
36
- fs_1.default.mkdirSync(path_1.default.join(root, "controllers"), {
37
- recursive: true
38
- });
39
- fs_1.default.writeFileSync(path_1.default.join(root, "index.ts"), app_1.app);
40
- fs_1.default.writeFileSync(path_1.default.join(root, "controllers", "cat.controller.ts"), controller_1.CatController);
41
- console.log(`App created at: ${root}`);
42
- }
43
- function createController(inputPath) {
44
- if (!inputPath) {
45
- console.log("Missing controller path");
46
- process.exit(1);
28
+ const root = 'src';
29
+ switch (type) {
30
+ case "module":
31
+ (0, module_1.createModule)(root, name);
32
+ break;
33
+ case "controller":
34
+ (0, controller_1.createController)(root, name);
35
+ break;
36
+ case "service":
37
+ (0, service_1.createService)(root, name);
38
+ break;
39
+ case "dto":
40
+ (0, dto_1.createDto)(root, name);
41
+ break;
42
+ case "middleware":
43
+ (0, middleware_1.createMiddleware)(root, name);
44
+ break;
45
+ default:
46
+ printUsage();
47
47
  }
48
- const resolvedPath = path_1.default.resolve(process.cwd(), inputPath);
49
- const name = path_1.default.basename(resolvedPath);
50
- const fileName = `${name}.controller.ts`;
51
- const target = path_1.default.join(resolvedPath, fileName);
52
- fs_1.default.mkdirSync(resolvedPath, { recursive: true });
53
- const className = capitalize(name) + "Controller";
54
- fs_1.default.writeFileSync(target, `
55
- import {
56
- type T,
57
- Controller,
58
- Get,
59
- Post,
60
- Put,
61
- Delete
62
- } from "tspace-spear";
63
-
64
- @Controller("/${name}")
65
- export default class ${className} {
66
-
67
- @Get("/")
68
- async index() {
69
- return {};
70
- }
71
-
72
- @Get("/:id")
73
- async show({
74
- params
75
- }: T.Context<{ params: { id: number } }>) {
76
- return { id: params.id };
77
- }
78
-
79
- @Post("/")
80
- async create({
81
- body
82
- }: T.Context<{ body: {} }>) {
83
- return { body };
84
- }
48
+ process.exit(0);
49
+ }
50
+ printUsage();
51
+ function printUsage() {
52
+ console.log(`
53
+ Usage:
85
54
 
86
- @Put("/:id")
87
- async update({
88
- params,
89
- body
90
- }: T.Context<{ params: { id: number }; body: {} }>) {
91
- return { id: params.id, body };
92
- }
55
+ spear create new <project>
93
56
 
94
- @Delete("/:id")
95
- async remove({
96
- params
97
- }: T.Context<{ params: { id: number } }>) {
98
- return { id: params.id };
99
- }
57
+ Generators:
100
58
 
101
- }
59
+ spear g module <names>
60
+ spear g controller <name>
61
+ spear g service <name>
62
+ spear g dto <name>
63
+ spear g middleware <name>
102
64
  `);
103
- console.log(`Controller created: ${target}`);
104
- }
105
- function capitalize(value) {
106
- return (value.charAt(0).toUpperCase() +
107
- value.slice(1));
108
65
  }
109
66
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;;;;AAEA,4CAAoB;AACpB,gDAAwB;AACxB,+BAA4B;AAC5B,6CAA6C;AAE7C,MAAM,CAAC,EAAE,AAAD,EAAG,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;AAEhD,QAAQ,GAAG,MAAM,IAAI,IAAI,EAAE,EAAE,CAAC;IAE5B,KAAK,YAAY;QACf,SAAS,CAAC,MAAM,CAAC,CAAC;QAClB,MAAM;IAER,KAAK,mBAAmB;QACtB,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACzB,MAAM;IAER;QACE,OAAO,CAAC,GAAG,CAAC;;;;;CAKf,CAAC,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,UAAmB;IAEpC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG,cAAI,CAAC,OAAO,CACvB,OAAO,CAAC,GAAG,EAAE,EACb,UAAU,CACX,CAAC;IAEF,YAAE,CAAC,SAAS,CAAC,IAAI,EAAE;QACjB,SAAS,EAAE,IAAI;KAChB,CAAC,CAAC;IAEH,YAAE,CAAC,SAAS,CACV,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,EAC9B;QACE,SAAS,EAAE,IAAI;KAChB,CACF,CAAC;IAEF,YAAE,CAAC,aAAa,CACd,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,EAC3B,SAAG,CACJ,CAAC;IAEF,YAAE,CAAC,aAAa,CACd,cAAI,CAAC,IAAI,CACP,IAAI,EACJ,aAAa,EACb,mBAAmB,CACpB,EAAC,0BAAa,CAChB,CAAC;IAEF,OAAO,CAAC,GAAG,CACT,mBAAmB,IAAI,EAAE,CAC1B,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,SAAkB;IAC1C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,YAAY,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;IAE5D,MAAM,IAAI,GAAG,cAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,GAAG,IAAI,gBAAgB,CAAC;IAEzC,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAEjD,YAAE,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEhD,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC;IAElD,YAAE,CAAC,aAAa,CACd,MAAM,EACN;;;;;;;;;;gBAUY,IAAI;uBACG,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqC/B,CACE,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,uBAAuB,MAAM,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,UAAU,CACjB,KAAa;IAEb,OAAO,CACL,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;QAC7B,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CACf,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;AAEA,0CAA6C;AAC7C,gDAAmD;AACnD,wDAA2D;AAC3D,kDAAqD;AACrD,wDAA2D;AAC3D,0CAA6C;AAE7C,MAAM,CAAC,EAAE,AAAD,EAAG,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;AAE/C;;;;;;GAMG;AAEH,IAAI,OAAO,KAAK,QAAQ,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;IAC3C,IAAA,eAAS,EAAC,IAAI,CAAC;SACd,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAC1B,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AAC9B,CAAC;AAED,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;IACpB,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,UAAU,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC;IAEnB,QAAQ,IAAI,EAAE,CAAC;QAEb,KAAK,QAAQ;YACX,IAAA,qBAAY,EAAC,IAAI,EAAC,IAAI,CAAC,CAAC;YACxB,MAAM;QAER,KAAK,YAAY;YACf,IAAA,6BAAgB,EAAC,IAAI,EAAC,IAAI,CAAC,CAAC;YAC5B,MAAM;QAER,KAAK,SAAS;YACZ,IAAA,uBAAa,EAAC,IAAI,EAAC,IAAI,CAAC,CAAC;YACzB,MAAM;QAER,KAAK,KAAK;YACR,IAAA,eAAS,EAAC,IAAI,EAAC,IAAI,CAAC,CAAC;YACrB,MAAM;QAER,KAAK,YAAY;YACf,IAAA,6BAAgB,EAAC,IAAI,EAAC,IAAI,CAAC,CAAC;YAC5B,MAAM;QAER;YACE,UAAU,EAAE,CAAC;IACjB,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,UAAU,EAAE,CAAC;AAEb,SAAS,UAAU;IACjB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;CAYb,CAAC,CAAC;AACH,CAAC"}
@@ -1,15 +1,4 @@
1
- import type { AnyRoutes, RoutesWithMethod, RequestBody, RequestQuery, RequestParams, RequestFiles, ResponseType } from "../compiler/types";
2
- type RequestInput<TRoutes extends AnyRoutes, TPath extends keyof TRoutes, TMethod extends keyof TRoutes[TPath]> = RequestParams<TRoutes, TPath, TMethod> extends never ? {
3
- params?: never;
4
- query?: RequestQuery<TRoutes, TPath, TMethod>;
5
- body?: RequestBody<TRoutes, TPath, TMethod>;
6
- files?: RequestFiles<TRoutes, TPath, TMethod>;
7
- } : {
8
- params: RequestParams<TRoutes, TPath, TMethod>;
9
- query?: RequestQuery<TRoutes, TPath, TMethod>;
10
- body?: RequestBody<TRoutes, TPath, TMethod>;
11
- files?: RequestFiles<TRoutes, TPath, TMethod>;
12
- };
1
+ import type { AnyRoutes, RoutesWithMethod, ResponseType, RequestInput, OptionalIfEmpty, ApiResponse } from "./types";
13
2
  /**
14
3
  * Type-safe HTTP client built on top of the native Fetch API.
15
4
  *
@@ -41,42 +30,23 @@ type RequestInput<TRoutes extends AnyRoutes, TPath extends keyof TRoutes, TMetho
41
30
  * })
42
31
  *
43
32
  * // fully typed response
44
- * console.log(res.cats)
33
+ * if(res.ok)
34
+ * console.log(res.cats)
45
35
  * ```
46
36
  */
47
37
  declare class ApiClient<TRoutes extends AnyRoutes> {
48
38
  private baseURL;
49
39
  constructor(baseURL: string);
50
- protected request<TPath extends keyof TRoutes, TMethod extends keyof TRoutes[TPath]>(method: TMethod, path: TPath, input?: RequestInput<TRoutes, TPath, TMethod>): Promise<{
51
- ok: boolean;
52
- status: number;
53
- data: ResponseType<TRoutes, TPath, TMethod>;
54
- }>;
55
- get<TPath extends RoutesWithMethod<TRoutes, "GET">>(path: TPath, input?: RequestInput<TRoutes, TPath, "GET">): Promise<{
56
- ok: boolean;
57
- status: number;
58
- data: ResponseType<TRoutes, TPath, "GET">;
59
- }>;
60
- post<TPath extends RoutesWithMethod<TRoutes, "POST">>(path: TPath, input: RequestInput<TRoutes, TPath, "POST">): Promise<{
61
- ok: boolean;
62
- status: number;
63
- data: ResponseType<TRoutes, TPath, "POST">;
64
- }>;
65
- put<TPath extends RoutesWithMethod<TRoutes, "PUT">>(path: TPath, input: RequestInput<TRoutes, TPath, "PUT">): Promise<{
66
- ok: boolean;
67
- status: number;
68
- data: ResponseType<TRoutes, TPath, "PUT">;
69
- }>;
70
- patch<TPath extends RoutesWithMethod<TRoutes, "PATCH">>(path: TPath, input: RequestInput<TRoutes, TPath, "PATCH">): Promise<{
71
- ok: boolean;
72
- status: number;
73
- data: ResponseType<TRoutes, TPath, "PATCH">;
74
- }>;
75
- delete<TPath extends RoutesWithMethod<TRoutes, "DELETE">>(path: TPath, input?: RequestInput<TRoutes, TPath, "DELETE">): Promise<{
76
- ok: boolean;
77
- status: number;
78
- data: ResponseType<TRoutes, TPath, "DELETE">;
79
- }>;
40
+ private request;
41
+ get<TPath extends RoutesWithMethod<TRoutes, "GET">>(path: TPath, ...args: OptionalIfEmpty<RequestInput<TRoutes, TPath, "GET">>): Promise<ApiResponse<ResponseType<TRoutes, TPath, "GET">>>;
42
+ post<TPath extends RoutesWithMethod<TRoutes, "POST">>(path: TPath, ...args: OptionalIfEmpty<RequestInput<TRoutes, TPath, "POST">>): Promise<ApiResponse<ResponseType<TRoutes, TPath, "POST">>>;
43
+ put<TPath extends RoutesWithMethod<TRoutes, "PUT">>(path: TPath, ...args: OptionalIfEmpty<RequestInput<TRoutes, TPath, "PUT">>): Promise<ApiResponse<ResponseType<TRoutes, TPath, "PUT">>>;
44
+ patch<TPath extends RoutesWithMethod<TRoutes, "PATCH">>(path: TPath, ...args: OptionalIfEmpty<RequestInput<TRoutes, TPath, "PATCH">>): Promise<ApiResponse<ResponseType<TRoutes, TPath, "PATCH">>>;
45
+ delete<TPath extends RoutesWithMethod<TRoutes, "DELETE">>(path: TPath, ...args: OptionalIfEmpty<RequestInput<TRoutes, TPath, "DELETE">>): Promise<ApiResponse<ResponseType<TRoutes, TPath, "DELETE">>>;
46
+ upload<TMethod extends "POST" | "PUT" | "PATCH" = "POST", TPath extends RoutesWithMethod<TRoutes, TMethod> = RoutesWithMethod<TRoutes, TMethod>>(path: TPath, options: {
47
+ method?: TMethod;
48
+ formdata: FormData;
49
+ }): Promise<ApiResponse<ResponseType<TRoutes, TPath, TMethod>>>;
80
50
  }
81
51
  export { ApiClient };
82
52
  export default ApiClient;
@@ -25,17 +25,25 @@ var __importStar = (this && this.__importStar) || function (mod) {
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.ApiClient = void 0;
27
27
  let fetchFn = null;
28
- async function getFetch() {
28
+ const getFetch = async () => {
29
29
  if (fetchFn)
30
30
  return fetchFn;
31
- if (globalThis.fetch) {
32
- fetchFn = globalThis.fetch;
31
+ // Browser OR modern Node v18+ (preferred)
32
+ if (typeof globalThis.fetch === "function") {
33
+ fetchFn = globalThis.fetch.bind(globalThis);
33
34
  return fetchFn;
34
35
  }
36
+ // Legacy Node fallback
35
37
  const mod = await Promise.resolve().then(() => __importStar(require("node-fetch")));
36
38
  fetchFn = mod.default;
37
39
  return fetchFn;
38
- }
40
+ };
41
+ const isFormData = (value) => {
42
+ return (value != null &&
43
+ typeof value === "object" &&
44
+ typeof value.append === "function" &&
45
+ typeof value.getHeaders === "function");
46
+ };
39
47
  /**
40
48
  * Type-safe HTTP client built on top of the native Fetch API.
41
49
  *
@@ -67,7 +75,8 @@ async function getFetch() {
67
75
  * })
68
76
  *
69
77
  * // fully typed response
70
- * console.log(res.cats)
78
+ * if(res.ok)
79
+ * console.log(res.cats)
71
80
  * ```
72
81
  */
73
82
  class ApiClient {
@@ -92,50 +101,62 @@ class ApiClient {
92
101
  if (!fetchFn) {
93
102
  throw new Error("Fetch is not available. Use Node 18+ or polyfill.");
94
103
  }
104
+ let body = input?.body
105
+ ? JSON.stringify(input.body)
106
+ : undefined;
107
+ let headers = {
108
+ "Content-Type": "application/json",
109
+ };
110
+ const isFileUpload = isFormData(input?.body);
111
+ if (isFileUpload) {
112
+ body = input?.body;
113
+ headers = undefined;
114
+ }
95
115
  const res = await fetchFn(url, {
96
116
  method: method,
97
- headers: {
98
- "Content-Type": "application/json",
99
- },
100
- body: input?.body
101
- ? JSON.stringify(input.body)
102
- : undefined,
117
+ headers,
118
+ body
103
119
  });
104
120
  const contentType = res.headers.get("content-type");
105
121
  const isJson = contentType?.includes("application/json");
106
122
  const data = isJson
107
123
  ? await res.json()
108
124
  : await res.text();
109
- // if (!res.ok) {
110
- // throw new Error(
111
- // data?.message ||
112
- // data?.error ||
113
- // (typeof data === "string"
114
- // ? data
115
- // : `HTTP ${res.status}`),
116
- // );
117
- // }
118
125
  return {
119
126
  ok: res.ok,
127
+ headers: res.headers,
120
128
  status: res.status,
121
- data,
129
+ data: data,
122
130
  };
123
131
  }
124
- async get(path, input) {
132
+ async get(path, ...args) {
133
+ const input = args[0];
125
134
  return this.request("GET", path, input);
126
135
  }
127
- async post(path, input) {
136
+ async post(path, ...args) {
137
+ const input = args[0];
128
138
  return this.request("POST", path, input);
129
139
  }
130
- async put(path, input) {
140
+ async put(path, ...args) {
141
+ const input = args[0];
131
142
  return this.request("PUT", path, input);
132
143
  }
133
- async patch(path, input) {
144
+ async patch(path, ...args) {
145
+ const input = args[0];
134
146
  return this.request("PATCH", path, input);
135
147
  }
136
- async delete(path, input) {
148
+ async delete(path, ...args) {
149
+ const input = args[0];
137
150
  return this.request("DELETE", path, input);
138
151
  }
152
+ async upload(path, options) {
153
+ const { method = "POST", formdata } = options;
154
+ return this.request(method, path,
155
+ //@ts-ignore
156
+ {
157
+ body: formdata
158
+ });
159
+ }
139
160
  }
140
161
  exports.ApiClient = ApiClient;
141
162
  exports.default = ApiClient;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/core/client/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/core/client/index.ts"],"names":[],"mappings":"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"}
@@ -12,3 +12,32 @@ export type RequestFiles<TRoutes extends AnyRoutes, TPath extends keyof TRoutes,
12
12
  export type ResponseType<TRoutes extends AnyRoutes, TPath extends keyof TRoutes, TMethod extends keyof TRoutes[TPath]> = TRoutes[TPath][TMethod] extends {
13
13
  response: infer R;
14
14
  } ? Awaited<R> : never;
15
+ export type Prettify<T> = {
16
+ [K in keyof T]: T[K];
17
+ } & {};
18
+ export type ExactProperty<Key extends string, T> = [
19
+ T
20
+ ] extends [never] ? {
21
+ [K in Key]?: never;
22
+ } : undefined extends T ? {
23
+ [K in Key]?: T;
24
+ } : {} extends T ? {
25
+ [K in Key]?: T;
26
+ } : {
27
+ [K in Key]: T;
28
+ };
29
+ export type OptionalIfEmpty<T> = {} extends T ? [input?: T] : [input: T];
30
+ export type RequestInput<TRoutes extends AnyRoutes, TPath extends keyof TRoutes, TMethod extends keyof TRoutes[TPath]> = Prettify<ExactProperty<"params", RequestParams<TRoutes, TPath, TMethod>> & ExactProperty<"query", RequestQuery<TRoutes, TPath, TMethod>> & ExactProperty<"body", RequestBody<TRoutes, TPath, TMethod>> & ExactProperty<"files", RequestFiles<TRoutes, TPath, TMethod>>>;
31
+ export type SuccessStatus = 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 226;
32
+ export type ErrorStatus = 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 429 | 431 | 451 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511;
33
+ export type ApiResponse<T, E = any> = {
34
+ ok: true;
35
+ status: SuccessStatus;
36
+ headers: Headers;
37
+ data: T;
38
+ } | {
39
+ ok: false;
40
+ status: ErrorStatus;
41
+ headers: Headers;
42
+ data: E;
43
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/lib/core/client/types.ts"],"names":[],"mappings":""}
@@ -1,18 +1,16 @@
1
1
  type Route = {
2
2
  method: string;
3
3
  path: string;
4
- response: string;
5
4
  body: string;
6
5
  params: string;
7
6
  query: string;
8
7
  files: string;
8
+ response: string;
9
9
  };
10
10
  type Options = {
11
- controllers: {
12
- folder: string;
13
- name: RegExp;
14
- };
11
+ folder: string;
12
+ name: RegExp;
15
13
  output?: string;
16
14
  };
17
- export declare function generateRoutes(options: Options): Promise<Route[] | undefined>;
15
+ export declare const generateRoutes: (globalPrefix: string, options: Options) => Promise<Route[] | undefined>;
18
16
  export {};