tspace-spear 1.2.7 → 1.2.8

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 (84) hide show
  1. package/README.md +46 -75
  2. package/dist/cli/app.d.ts +1 -1
  3. package/dist/cli/app.js +7 -3
  4. package/dist/cli/app.js.map +1 -1
  5. package/dist/cli/client.d.ts +1 -0
  6. package/dist/cli/client.js +30 -0
  7. package/dist/cli/client.js.map +1 -0
  8. package/dist/cli/controller.d.ts +1 -1
  9. package/dist/cli/controller.js +12 -1
  10. package/dist/cli/controller.js.map +1 -1
  11. package/dist/cli/generators/app/index.d.ts +1 -0
  12. package/dist/cli/generators/app/index.js +124 -0
  13. package/dist/cli/generators/app/index.js.map +1 -0
  14. package/dist/cli/generators/app/template.d.ts +1 -0
  15. package/dist/cli/generators/app/template.js +42 -0
  16. package/dist/cli/generators/app/template.js.map +1 -0
  17. package/dist/cli/generators/client/template.d.ts +1 -0
  18. package/dist/cli/generators/client/template.js +30 -0
  19. package/dist/cli/generators/client/template.js.map +1 -0
  20. package/dist/cli/generators/controller/index.d.ts +1 -0
  21. package/dist/cli/generators/controller/index.js +78 -0
  22. package/dist/cli/generators/controller/index.js.map +1 -0
  23. package/dist/cli/generators/controller/template.d.ts +1 -0
  24. package/dist/cli/generators/controller/template.js +99 -0
  25. package/dist/cli/generators/controller/template.js.map +1 -0
  26. package/dist/cli/generators/dto/index.d.ts +1 -0
  27. package/dist/cli/generators/dto/index.js +55 -0
  28. package/dist/cli/generators/dto/index.js.map +1 -0
  29. package/dist/cli/generators/dto/template.d.ts +1 -0
  30. package/dist/cli/generators/dto/template.js +32 -0
  31. package/dist/cli/generators/dto/template.js.map +1 -0
  32. package/dist/cli/generators/middleware/index.d.ts +1 -0
  33. package/dist/cli/generators/middleware/index.js +38 -0
  34. package/dist/cli/generators/middleware/index.js.map +1 -0
  35. package/dist/cli/generators/middleware/template.d.ts +1 -0
  36. package/dist/cli/generators/middleware/template.js +16 -0
  37. package/dist/cli/generators/middleware/template.js.map +1 -0
  38. package/dist/cli/generators/module/index.d.ts +1 -0
  39. package/dist/cli/generators/module/index.js +173 -0
  40. package/dist/cli/generators/module/index.js.map +1 -0
  41. package/dist/cli/generators/service/index.d.ts +1 -0
  42. package/dist/cli/generators/service/index.js +53 -0
  43. package/dist/cli/generators/service/index.js.map +1 -0
  44. package/dist/cli/generators/service/template.d.ts +1 -0
  45. package/dist/cli/generators/service/template.js +74 -0
  46. package/dist/cli/generators/service/template.js.map +1 -0
  47. package/dist/cli/generators/shared/index.d.ts +3 -0
  48. package/dist/cli/generators/shared/index.js +22 -0
  49. package/dist/cli/generators/shared/index.js.map +1 -0
  50. package/dist/cli/index.js +52 -96
  51. package/dist/cli/index.js.map +1 -1
  52. package/dist/cli/middleware.d.ts +1 -0
  53. package/dist/cli/middleware.js +16 -0
  54. package/dist/cli/middleware.js.map +1 -0
  55. package/dist/client.d.ts +1 -0
  56. package/dist/client.js +17 -0
  57. package/dist/client.js.map +1 -0
  58. package/dist/common/middlewares/log.middleware.d.ts +2 -0
  59. package/dist/common/middlewares/log.middleware.js +12 -0
  60. package/dist/common/middlewares/log.middleware.js.map +1 -0
  61. package/dist/index.d.ts +4 -0
  62. package/dist/index.js +32 -0
  63. package/dist/index.js.map +1 -0
  64. package/dist/lib/core/compiler/generator.js +20 -2
  65. package/dist/lib/core/compiler/generator.js.map +1 -1
  66. package/dist/lib/core/decorators/context.d.ts +78 -8
  67. package/dist/lib/core/decorators/context.js +74 -7
  68. package/dist/lib/core/decorators/context.js.map +1 -1
  69. package/dist/lib/core/package/index.d.ts +11 -0
  70. package/dist/lib/core/package/index.js +42 -0
  71. package/dist/lib/core/package/index.js.map +1 -0
  72. package/dist/modules/cats/cat.controller.d.ts +58 -0
  73. package/dist/modules/cats/cat.controller.js +90 -0
  74. package/dist/modules/cats/cat.controller.js.map +1 -0
  75. package/dist/modules/cats/cat.dto.d.ts +8 -0
  76. package/dist/modules/cats/cat.dto.js +44 -0
  77. package/dist/modules/cats/cat.dto.js.map +1 -0
  78. package/dist/modules/cats/cat.service.d.ts +23 -0
  79. package/dist/modules/cats/cat.service.js +56 -0
  80. package/dist/modules/cats/cat.service.js.map +1 -0
  81. package/dist/tests/e2e..test.d.ts +1 -0
  82. package/dist/tests/e2e..test.js +16 -0
  83. package/dist/tests/e2e..test.js.map +1 -0
  84. package/package.json +2 -2
@@ -0,0 +1,78 @@
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.createController = createController;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const shared_1 = require("../shared");
10
+ function createController(root, name) {
11
+ if (!name) {
12
+ console.log("Missing controller path, try spear g controller 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)}.controller.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)) + "Controller";
20
+ fs_1.default.writeFileSync(target, `
21
+ import {
22
+ type T,
23
+ Controller,
24
+ Get,
25
+ Post,
26
+ Put,
27
+ Delete
28
+ } from "tspace-spear";
29
+
30
+ @Controller("/${name}")
31
+ class ${className} {
32
+
33
+ @Get("/")
34
+ async index() {
35
+ return {};
36
+ }
37
+
38
+ @Get("/:id")
39
+ async show({
40
+ params
41
+ }: T.Context<{ params: { id: number } }>) {
42
+ return { id: params.id };
43
+ }
44
+
45
+ @Post("/")
46
+ async create({
47
+ body
48
+ }: T.Context<{ body: {} }>) {
49
+ return { body };
50
+ }
51
+
52
+ @Put("/:id")
53
+ async update({
54
+ params,
55
+ body
56
+ }: T.Context<{ params: { id: number }; body: {} }>) {
57
+ return { id: params.id, body };
58
+ }
59
+
60
+ @Delete("/:id")
61
+ async remove({
62
+ params
63
+ }: T.Context<{ params: { id: number } }>) {
64
+ return { id: params.id };
65
+ }
66
+ }
67
+
68
+ export { ${className} };
69
+ export default ${className};
70
+ `);
71
+ console.log(`
72
+ CREATE ${target}
73
+
74
+ ✔ Successfully generated controller "${name}"
75
+
76
+ `);
77
+ }
78
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/generators/controller/index.ts"],"names":[],"mappings":";;;;;AAQA,4CA6EC;AArFD,4CAAoB;AACpB,gDAAwB;AACxB,sCAImB;AAEnB,SAAgB,gBAAgB,CAAC,IAAa,EAAC,IAAa;IAC1D,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;QACnE,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,gBAAgB,CAAC;IAErD,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,YAAY,CAAC;IAE9D,YAAE,CAAC,aAAa,CACd,MAAM,EACN;;;;;;;;;;gBAUY,IAAI;QACZ,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAqCN,SAAS;iBACH,SAAS;CACzB,CACE,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC;WACH,MAAM;;uCAEsB,IAAI;;CAE1C,CAAC,CAAA;AACF,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const ControllerTemplate = "\nimport {\n type T,\n Controller,\n Middleware,\n Get,\n Post,\n Put,\n Delete,\n ValidateDto\n} from \"tspace-spear\";\nimport { CatService } from \"./cat.service\";\nimport { CreateCatDto , UpdateCatDto } from \"./cat.dto\";\nimport { LogMiddleware } from \"../../common/middlewares/log.middleware\";\n\n@Controller(\"/cats\")\nclass CatController {\n\n constructor(\n private catService: CatService = new CatService()\n ) {}\n\n @Get(\"/\")\n @Middleware(LogMiddleware)\n async index() {\n return this.catService.index();\n }\n\n @Get(\"/:id\")\n @Middleware(LogMiddleware)\n async show({\n params\n }: T.Context<{\n params: {\n id: number;\n };\n }>) {\n\n return this.catService.show(params.id);\n }\n\n @Post(\"/\")\n @ValidateDto(CreateCatDto)\n @Middleware(LogMiddleware)\n async create({\n body\n }: T.Context<{\n body: CreateCatDto;\n }>) {\n\n return this.catService\n .create({ \n name: body.name, \n age: body.age \n });\n }\n\n @Put(\"/:id\")\n @ValidateDto(UpdateCatDto)\n @Middleware(LogMiddleware)\n async update({\n params,\n body\n }: T.Context<{\n params: {\n id: number;\n };\n body: UpdateCatDto;\n }>) {\n\n return this.catService\n .update(params.id, { \n name: body.name, \n age: body.age \n });\n }\n\n @Delete(\"/:id\")\n @Middleware(LogMiddleware)\n async remove({\n params\n }: T.Context<{\n params: {\n id: number;\n };\n }>) {\n\n return this.catService\n .remove(params.id);\n }\n}\n\nexport { CatController };\nexport default CatController;\n";
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ControllerTemplate = void 0;
4
+ exports.ControllerTemplate = `
5
+ import {
6
+ type T,
7
+ Controller,
8
+ Middleware,
9
+ Get,
10
+ Post,
11
+ Put,
12
+ Delete,
13
+ ValidateDto
14
+ } from "tspace-spear";
15
+ import { CatService } from "./cat.service";
16
+ import { CreateCatDto , UpdateCatDto } from "./cat.dto";
17
+ import { LogMiddleware } from "../../common/middlewares/log.middleware";
18
+
19
+ @Controller("/cats")
20
+ class CatController {
21
+
22
+ constructor(
23
+ private catService: CatService = new CatService()
24
+ ) {}
25
+
26
+ @Get("/")
27
+ @Middleware(LogMiddleware)
28
+ async index() {
29
+ return this.catService.index();
30
+ }
31
+
32
+ @Get("/:id")
33
+ @Middleware(LogMiddleware)
34
+ async show({
35
+ params
36
+ }: T.Context<{
37
+ params: {
38
+ id: number;
39
+ };
40
+ }>) {
41
+
42
+ return this.catService.show(params.id);
43
+ }
44
+
45
+ @Post("/")
46
+ @ValidateDto(CreateCatDto)
47
+ @Middleware(LogMiddleware)
48
+ async create({
49
+ body
50
+ }: T.Context<{
51
+ body: CreateCatDto;
52
+ }>) {
53
+
54
+ return this.catService
55
+ .create({
56
+ name: body.name,
57
+ age: body.age
58
+ });
59
+ }
60
+
61
+ @Put("/:id")
62
+ @ValidateDto(UpdateCatDto)
63
+ @Middleware(LogMiddleware)
64
+ async update({
65
+ params,
66
+ body
67
+ }: T.Context<{
68
+ params: {
69
+ id: number;
70
+ };
71
+ body: UpdateCatDto;
72
+ }>) {
73
+
74
+ return this.catService
75
+ .update(params.id, {
76
+ name: body.name,
77
+ age: body.age
78
+ });
79
+ }
80
+
81
+ @Delete("/:id")
82
+ @Middleware(LogMiddleware)
83
+ async remove({
84
+ params
85
+ }: T.Context<{
86
+ params: {
87
+ id: number;
88
+ };
89
+ }>) {
90
+
91
+ return this.catService
92
+ .remove(params.id);
93
+ }
94
+ }
95
+
96
+ export { CatController };
97
+ export default CatController;
98
+ `;
99
+ //# sourceMappingURL=template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../src/cli/generators/controller/template.ts"],"names":[],"mappings":";;;AAAa,QAAA,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8FjC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function createDto(root: string, name?: string): void;
@@ -0,0 +1,55 @@
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.createDto = createDto;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const shared_1 = require("../shared");
10
+ function createDto(root, name) {
11
+ if (!name) {
12
+ console.log("Missing dto path, try spear g dto 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)}.dto.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)) + "Dto";
20
+ fs_1.default.writeFileSync(target, `
21
+ import {
22
+ IsString,
23
+ Min,
24
+ IsNotEmpty,
25
+ IsNumber,
26
+ } from "class-validator";
27
+
28
+ export class Create${className} {
29
+ @IsString()
30
+ @IsNotEmpty()
31
+ name!: string;
32
+
33
+ @IsNumber()
34
+ @Min(0.1)
35
+ age!: number;
36
+ }
37
+
38
+ export class Update${className} {
39
+ @IsString()
40
+ @IsNotEmpty()
41
+ name!: string;
42
+
43
+ @IsNumber()
44
+ @Min(0.1)
45
+ age!: number;
46
+ }
47
+ `);
48
+ console.log(`
49
+ CREATE ${target}
50
+
51
+ ✔ Successfully generated dto "${name}"
52
+
53
+ `);
54
+ }
55
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/generators/dto/index.ts"],"names":[],"mappings":";;;;;AAQA,8BAsDC;AA9DD,4CAAoB;AACpB,gDAAwB;AACxB,sCAImB;AAEnB,SAAgB,SAAS,CAAC,IAAa,EAAC,IAAa;IACjD,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAEH,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,SAAS,CAAC;IAE9C,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,KAAK,CAAC;IAEvD,YAAE,CAAC,aAAa,CACd,MAAM,EACN;;;;;;;;qBAQiB,SAAS;;;;;;;;;;qBAUT,SAAS;;;;;;;;;CAS7B,CACE,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC;WACF,MAAM;;gCAEe,IAAI;;CAEnC,CAAC,CAAA;AACF,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const DtoTemplate = "\nimport {\n IsString,\n Min,\n IsNotEmpty,\n IsNumber,\n} from \"class-validator\";\n\nexport class CreateCatDto {\n @IsString()\n @IsNotEmpty()\n name!: string;\n\n @IsNumber()\n @Min(0.1)\n age!: number;\n}\n\nexport class UpdateCatDto {\n @IsString()\n @IsNotEmpty()\n name!: string;\n\n @IsNumber()\n @Min(0.1)\n age!: number;\n}\n";
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DtoTemplate = void 0;
4
+ exports.DtoTemplate = `
5
+ import {
6
+ IsString,
7
+ Min,
8
+ IsNotEmpty,
9
+ IsNumber,
10
+ } from "class-validator";
11
+
12
+ export class CreateCatDto {
13
+ @IsString()
14
+ @IsNotEmpty()
15
+ name!: string;
16
+
17
+ @IsNumber()
18
+ @Min(0.1)
19
+ age!: number;
20
+ }
21
+
22
+ export class UpdateCatDto {
23
+ @IsString()
24
+ @IsNotEmpty()
25
+ name!: string;
26
+
27
+ @IsNumber()
28
+ @Min(0.1)
29
+ age!: number;
30
+ }
31
+ `;
32
+ //# sourceMappingURL=template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../src/cli/generators/dto/template.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2B1B,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function createMiddleware(root: string, name?: string): void;
@@ -0,0 +1,38 @@
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.createMiddleware = createMiddleware;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const shared_1 = require("../shared");
10
+ function createMiddleware(root, name) {
11
+ if (!name) {
12
+ console.log("Missing middleware path, try spear g middleware log");
13
+ process.exit(1);
14
+ }
15
+ const resolvedPath = path_1.default.resolve(process.cwd(), root, "common", "middlewares");
16
+ const fileName = `${(0, shared_1.toSingular)(name)}.middleware.ts`;
17
+ const target = path_1.default.join(resolvedPath, fileName);
18
+ fs_1.default.mkdirSync(resolvedPath, { recursive: true });
19
+ const middleName = (0, shared_1.capitalize)((0, shared_1.toSingular)(name)) + "Middleware";
20
+ fs_1.default.writeFileSync(target, `
21
+ import { type T } from "tspace-spear";
22
+
23
+ const ${middleName} = async (ctx : T.Context, next: T.NextFunction) => {
24
+ console.log('hello: ${middleName}')
25
+ return next();
26
+ }
27
+
28
+ export { ${middleName} };
29
+ export default ${middleName};
30
+ `);
31
+ console.log(`
32
+ CREATE ${target}
33
+
34
+ ✔ Successfully generated middleware "${name}"
35
+
36
+ `);
37
+ }
38
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/generators/middleware/index.ts"],"names":[],"mappings":";;;;;AAKA,4CAqCC;AA1CD,4CAAoB;AACpB,gDAAwB;AACxB,sCAAmD;AAGnD,SAAgB,gBAAgB,CAAC,IAAY,EAAE,IAAa;IAC1D,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;QACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,YAAY,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,EAAG,QAAQ,EAAE,aAAa,CAAC,CAAC;IAEjF,MAAM,QAAQ,GAAG,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,gBAAgB,CAAC;IAErD,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,UAAU,GAAG,IAAA,mBAAU,EAAC,IAAA,mBAAU,EAAC,IAAI,CAAC,CAAC,GAAG,YAAY,CAAC;IAE/D,YAAE,CAAC,aAAa,CACd,MAAM,EACN;;;QAGI,UAAU;wBACM,UAAU;;;;WAIvB,UAAU;iBACJ,UAAU;CAC1B,CACE,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC;WACH,MAAM;;uCAEsB,IAAI;;CAE1C,CAAC,CAAA;AACF,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const MiddlewareTemplate = "\nimport { type T } from \"tspace-spear\";\n\nconst sleep = async (ms : number) => new Promise(resolve => setTimeout(resolve, ms))\n\nexport const LogMiddleware = async (ctx : T.Context, next: T.NextFunction) =>{\n await sleep(100);\n console.log('after logging middleware Meow!');\n ctx.req.cat = 'Meow!';\n return next()\n}\n";
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MiddlewareTemplate = void 0;
4
+ exports.MiddlewareTemplate = `
5
+ import { type T } from "tspace-spear";
6
+
7
+ const sleep = async (ms : number) => new Promise(resolve => setTimeout(resolve, ms))
8
+
9
+ export const LogMiddleware = async (ctx : T.Context, next: T.NextFunction) =>{
10
+ await sleep(100);
11
+ console.log('after logging middleware Meow!');
12
+ ctx.req.cat = 'Meow!';
13
+ return next()
14
+ }
15
+ `;
16
+ //# sourceMappingURL=template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../src/cli/generators/middleware/template.ts"],"names":[],"mappings":";;;AAAa,QAAA,kBAAkB,GAAG;;;;;;;;;;;CAWjC,CAAA"}
@@ -0,0 +1 @@
1
+ export declare function createModule(root: string, name?: string): void;
@@ -0,0 +1,173 @@
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.createModule = createModule;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const shared_1 = require("../shared");
10
+ function createModule(root, name) {
11
+ if (!name) {
12
+ console.log("Missing module path, try spear g module dogs");
13
+ process.exit(1);
14
+ }
15
+ const modulePath = path_1.default.resolve(process.cwd(), root, 'modules', (0, shared_1.toPlural)(name));
16
+ fs_1.default.mkdirSync(modulePath, { recursive: true });
17
+ const controllerPath = path_1.default.resolve(process.cwd(), root, "modules", (0, shared_1.toPlural)(name), `${(0, shared_1.toSingular)(name)}.controller.ts`);
18
+ const servicePath = path_1.default.resolve(process.cwd(), root, "modules", (0, shared_1.toPlural)(name), `${(0, shared_1.toSingular)(name)}.service.ts`);
19
+ const dtoPath = path_1.default.resolve(process.cwd(), root, "modules", (0, shared_1.toPlural)(name), `${(0, shared_1.toSingular)(name)}.dto.ts`);
20
+ const controllerName = (0, shared_1.capitalize)((0, shared_1.toSingular)(name)) + "Controller";
21
+ const serviceName = (0, shared_1.capitalize)((0, shared_1.toSingular)(name)) + "Service";
22
+ const dtoName = (0, shared_1.capitalize)((0, shared_1.toSingular)(name)) + "Dto";
23
+ fs_1.default.writeFileSync(controllerPath, `import {
24
+ type T,
25
+ Controller,
26
+ Get,
27
+ Post,
28
+ Put,
29
+ Patch,
30
+ Delete,
31
+ ValidateDto
32
+ } from "tspace-spear";
33
+
34
+ import { ${serviceName} } from "./${(0, shared_1.toSingular)(name)}.service";
35
+
36
+ import {
37
+ Create${dtoName},
38
+ Update${dtoName}
39
+ } from "./${(0, shared_1.toSingular)(name)}.dto";
40
+
41
+ @Controller("/${name}")
42
+ class ${controllerName} {
43
+
44
+ constructor(
45
+ private ${(0, shared_1.toSingular)(name)}Service: ${serviceName} = new ${serviceName}()
46
+ ) {}
47
+
48
+ @Get("/")
49
+ async index() {
50
+ return this.${(0, shared_1.toSingular)(name)}Service.index();
51
+ }
52
+
53
+ @Get("/:id")
54
+ async show({
55
+ params
56
+ }: T.Context<{ params: { id: number } }>) {
57
+ return this.${(0, shared_1.toSingular)(name)}Service.show(params.id);
58
+ }
59
+
60
+ @Post("/")
61
+ @ValidateDto(Create${dtoName})
62
+ async create({
63
+ body
64
+ }: T.Context<{ body: Create${dtoName} }>) {
65
+ return this.${(0, shared_1.toSingular)(name)}Service
66
+ .create({
67
+ name: body.name,
68
+ age: body.age
69
+ });
70
+ }
71
+
72
+ @Put("/:id")
73
+ @Patch("/:id")
74
+ @ValidateDto(Update${dtoName})
75
+ async update({
76
+ params,
77
+ body
78
+ }: T.Context<{
79
+ params: { id: number };
80
+ body: Update${dtoName};
81
+ }>) {
82
+
83
+ return this.${(0, shared_1.toSingular)(name)}Service
84
+ .update(params.id, {
85
+ name: body.name,
86
+ age: body.age
87
+ });
88
+ }
89
+
90
+ @Delete("/:id")
91
+ async remove({
92
+ params
93
+ }: T.Context<{ params: { id: number } }>) {
94
+ return this.${(0, shared_1.toSingular)(name)}Service
95
+ .remove(params.id);
96
+ }
97
+ }
98
+
99
+ export { ${controllerName} };
100
+ export default ${controllerName};
101
+ `);
102
+ fs_1.default.writeFileSync(servicePath, `import {
103
+ Create${dtoName},
104
+ Update${dtoName}
105
+ } from "./${(0, shared_1.toSingular)(name)}.dto";
106
+
107
+ class ${serviceName} {
108
+ public async index() {
109
+ return [];
110
+ };
111
+
112
+ public async show(id: number) {
113
+ return {};
114
+ };
115
+
116
+ public async create(body : Create${dtoName}) {
117
+ return {};
118
+ }
119
+
120
+ public async update(id: number, body: Update${dtoName}) {
121
+ return {};
122
+ }
123
+
124
+ public async remove(id: number) {
125
+ return {};
126
+ }
127
+ }
128
+
129
+ export { ${serviceName} };
130
+ export default ${serviceName};
131
+ `);
132
+ fs_1.default.writeFileSync(dtoPath, `import {
133
+ IsString,
134
+ Min,
135
+ IsNotEmpty,
136
+ IsNumber,
137
+ } from "class-validator";
138
+
139
+ export class Create${dtoName} {
140
+ @IsString()
141
+ @IsNotEmpty()
142
+ name!: string;
143
+
144
+ @IsNumber()
145
+ @Min(0.1)
146
+ age!: number;
147
+ }
148
+
149
+ export class Update${dtoName} {
150
+ @IsString()
151
+ @IsNotEmpty()
152
+ name!: string;
153
+
154
+ @IsNumber()
155
+ @Min(0.1)
156
+ age!: number;
157
+ }
158
+
159
+ `);
160
+ console.log(`
161
+ CREATE ${modulePath}
162
+ CREATE ${controllerPath}
163
+ CREATE ${servicePath}
164
+ CREATE ${dtoPath}
165
+
166
+ ✔ Successfully generated module "${name}"
167
+
168
+ Controller ${controllerName}
169
+ Service ${serviceName}
170
+ DTO ${dtoName}
171
+ `);
172
+ }
173
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/generators/module/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function createService(root: string, name?: string): void;
@@ -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 = "\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 return this.cats.find(cat => cat.id === id);\n };\n\n public async create({ name, age }: Omit<Cat, \"id\">) {\n\n const cat: Cat = {\n id: this.cats.length + 1,\n name: name,\n age: age\n };\n\n this.cats.push(cat);\n\n return {\n message: \"Created\",\n cat\n };\n }\n \n public async update(id: number, { name, age }: Omit<Cat, \"id\">) {\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 return {\n message: \"Updated\",\n cat: this.cats[index]\n };\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 const [removedCat] = this.cats.splice(index, 1);\n\n return {\n message: \"Deleted\",\n cat: removedCat\n };\n }\n}\n";