tspace-spear 1.2.6 → 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.
- package/README.md +101 -105
- package/dist/cli/app.d.ts +1 -1
- package/dist/cli/app.js +12 -4
- package/dist/cli/app.js.map +1 -1
- package/dist/cli/client.d.ts +1 -0
- package/dist/cli/client.js +30 -0
- package/dist/cli/client.js.map +1 -0
- package/dist/cli/controller.d.ts +1 -1
- package/dist/cli/controller.js +12 -1
- package/dist/cli/controller.js.map +1 -1
- package/dist/cli/generators/app/index.d.ts +1 -0
- package/dist/cli/generators/app/index.js +124 -0
- package/dist/cli/generators/app/index.js.map +1 -0
- package/dist/cli/generators/app/template.d.ts +1 -0
- package/dist/cli/generators/app/template.js +42 -0
- package/dist/cli/generators/app/template.js.map +1 -0
- package/dist/cli/generators/client/template.d.ts +1 -0
- package/dist/cli/generators/client/template.js +30 -0
- package/dist/cli/generators/client/template.js.map +1 -0
- package/dist/cli/generators/controller/index.d.ts +1 -0
- package/dist/cli/generators/controller/index.js +78 -0
- package/dist/cli/generators/controller/index.js.map +1 -0
- package/dist/cli/generators/controller/template.d.ts +1 -0
- package/dist/cli/generators/controller/template.js +99 -0
- package/dist/cli/generators/controller/template.js.map +1 -0
- package/dist/cli/generators/dto/index.d.ts +1 -0
- package/dist/cli/generators/dto/index.js +55 -0
- package/dist/cli/generators/dto/index.js.map +1 -0
- package/dist/cli/generators/dto/template.d.ts +1 -0
- package/dist/cli/generators/dto/template.js +32 -0
- package/dist/cli/generators/dto/template.js.map +1 -0
- package/dist/cli/generators/middleware/index.d.ts +1 -0
- package/dist/cli/generators/middleware/index.js +38 -0
- package/dist/cli/generators/middleware/index.js.map +1 -0
- package/dist/cli/generators/middleware/template.d.ts +1 -0
- package/dist/cli/generators/middleware/template.js +16 -0
- package/dist/cli/generators/middleware/template.js.map +1 -0
- package/dist/cli/generators/module/index.d.ts +1 -0
- package/dist/cli/generators/module/index.js +173 -0
- package/dist/cli/generators/module/index.js.map +1 -0
- package/dist/cli/generators/service/index.d.ts +1 -0
- package/dist/cli/generators/service/index.js +53 -0
- package/dist/cli/generators/service/index.js.map +1 -0
- package/dist/cli/generators/service/template.d.ts +1 -0
- package/dist/cli/generators/service/template.js +74 -0
- package/dist/cli/generators/service/template.js.map +1 -0
- package/dist/cli/generators/shared/index.d.ts +3 -0
- package/dist/cli/generators/shared/index.js +22 -0
- package/dist/cli/generators/shared/index.js.map +1 -0
- package/dist/cli/index.js +52 -125
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/middleware.d.ts +1 -0
- package/dist/cli/middleware.js +16 -0
- package/dist/cli/middleware.js.map +1 -0
- package/dist/client.d.ts +1 -0
- package/dist/client.js +17 -0
- package/dist/client.js.map +1 -0
- package/dist/common/middlewares/log.middleware.d.ts +2 -0
- package/dist/common/middlewares/log.middleware.js +12 -0
- package/dist/common/middlewares/log.middleware.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +32 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/core/compiler/generator.js +37 -1
- package/dist/lib/core/compiler/generator.js.map +1 -1
- package/dist/lib/core/decorators/context.d.ts +78 -8
- package/dist/lib/core/decorators/context.js +74 -7
- package/dist/lib/core/decorators/context.js.map +1 -1
- package/dist/lib/core/package/index.d.ts +11 -0
- package/dist/lib/core/package/index.js +42 -0
- package/dist/lib/core/package/index.js.map +1 -0
- package/dist/modules/cats/cat.controller.d.ts +58 -0
- package/dist/modules/cats/cat.controller.js +90 -0
- package/dist/modules/cats/cat.controller.js.map +1 -0
- package/dist/modules/cats/cat.dto.d.ts +8 -0
- package/dist/modules/cats/cat.dto.js +44 -0
- package/dist/modules/cats/cat.dto.js.map +1 -0
- package/dist/modules/cats/cat.service.d.ts +23 -0
- package/dist/modules/cats/cat.service.js +56 -0
- package/dist/modules/cats/cat.service.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,124 @@
|
|
|
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.createApp = createApp;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const child_process_1 = require("child_process");
|
|
10
|
+
const template_1 = require("./template");
|
|
11
|
+
const template_2 = require("../client/template");
|
|
12
|
+
const template_3 = require("../middleware/template");
|
|
13
|
+
const template_4 = require("../controller/template");
|
|
14
|
+
const template_5 = require("../service/template");
|
|
15
|
+
const template_6 = require("../dto/template");
|
|
16
|
+
const c = {
|
|
17
|
+
bold: (text) => `\x1b[1m${text}\x1b[0m`,
|
|
18
|
+
dim: (text) => `\x1b[2m${text}\x1b[0m`,
|
|
19
|
+
green: (text) => `\x1b[32m${text}\x1b[0m`,
|
|
20
|
+
cyan: (text) => `\x1b[36m${text}\x1b[0m`,
|
|
21
|
+
underline: (text) => `\x1b[4m${text}\x1b[0m`,
|
|
22
|
+
gray: (text) => `\x1b[90m${text}\x1b[0m`,
|
|
23
|
+
reset: "\x1b[0m"
|
|
24
|
+
};
|
|
25
|
+
async function createApp(inputPath) {
|
|
26
|
+
if (!inputPath) {
|
|
27
|
+
console.log("Missing target path, try: spear g app src");
|
|
28
|
+
process.exit(1);
|
|
29
|
+
}
|
|
30
|
+
const root = path_1.default.resolve(process.cwd(), inputPath);
|
|
31
|
+
fs_1.default.mkdirSync(root, { recursive: true });
|
|
32
|
+
await fs_1.default.promises.writeFile(path_1.default.join(root, "package.json"), JSON.stringify({
|
|
33
|
+
name: path_1.default.basename(root),
|
|
34
|
+
version: "1.0.0",
|
|
35
|
+
main: "dist/index.js",
|
|
36
|
+
scripts: {
|
|
37
|
+
build: "tsc",
|
|
38
|
+
start: "node dist/index.js",
|
|
39
|
+
dev: "ts-node src/index.ts",
|
|
40
|
+
},
|
|
41
|
+
dependencies: {
|
|
42
|
+
"tspace-spear": "latest",
|
|
43
|
+
"class-transformer": "0.5.1",
|
|
44
|
+
"class-validator": "0.15.1"
|
|
45
|
+
},
|
|
46
|
+
devDependencies: {
|
|
47
|
+
"typescript": "5.6.2",
|
|
48
|
+
"ts-node": "10.9.2",
|
|
49
|
+
"@types/node": "16.18.126"
|
|
50
|
+
},
|
|
51
|
+
}, null, 2));
|
|
52
|
+
await fs_1.default.promises.writeFile(path_1.default.join(root, "tsconfig.json"), JSON.stringify({
|
|
53
|
+
compilerOptions: {
|
|
54
|
+
"target": "esnext",
|
|
55
|
+
"module": "commonjs",
|
|
56
|
+
"lib": ["esnext", "DOM"],
|
|
57
|
+
"types": ["node"],
|
|
58
|
+
"allowJs": true,
|
|
59
|
+
"checkJs": false,
|
|
60
|
+
"outDir": "dist",
|
|
61
|
+
"rootDir": "src",
|
|
62
|
+
"strict": true,
|
|
63
|
+
"esModuleInterop": true,
|
|
64
|
+
"skipLibCheck": true,
|
|
65
|
+
"forceConsistentCasingInFileNames": true,
|
|
66
|
+
"emitDecoratorMetadata": true,
|
|
67
|
+
"experimentalDecorators": true,
|
|
68
|
+
},
|
|
69
|
+
}, null, 2));
|
|
70
|
+
const src = path_1.default.join(root, "src");
|
|
71
|
+
await fs_1.default.promises.mkdir(src, { recursive: true });
|
|
72
|
+
await fs_1.default.promises.mkdir(path_1.default.join(src, "common", "middlewares"), { recursive: true });
|
|
73
|
+
await fs_1.default.promises.mkdir(path_1.default.join(src, "modules", "cats"), { recursive: true });
|
|
74
|
+
await fs_1.default.promises.writeFile(path_1.default.join(src, "index.ts"), template_1.AppTemplate);
|
|
75
|
+
await fs_1.default.promises.writeFile(path_1.default.join(src, "client.ts"), template_2.ClientTemplate);
|
|
76
|
+
await fs_1.default.promises.writeFile(path_1.default.join(src, "common", "middlewares", "log.middleware.ts"), template_3.MiddlewareTemplate);
|
|
77
|
+
await fs_1.default.promises.writeFile(path_1.default.join(src, "modules", "cats", "cat.controller.ts"), template_4.ControllerTemplate);
|
|
78
|
+
await fs_1.default.promises.writeFile(path_1.default.join(src, "modules", "cats", "cat.service.ts"), template_5.ServiceTemplate);
|
|
79
|
+
await fs_1.default.promises.writeFile(path_1.default.join(src, "modules", "cats", "cat.dto.ts"), template_6.DtoTemplate);
|
|
80
|
+
console.log(`\n${c.bold("$ npm install")}\n`);
|
|
81
|
+
const startTime = Date.now();
|
|
82
|
+
const frames = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
|
|
83
|
+
let i = 0;
|
|
84
|
+
const spinner = setInterval(() => {
|
|
85
|
+
process.stdout.write(`\r ${c.cyan(frames[i])} Installing dependencies...`);
|
|
86
|
+
i = (i + 1) % frames.length;
|
|
87
|
+
}, 50);
|
|
88
|
+
await new Promise((resolve, reject) => {
|
|
89
|
+
(0, child_process_1.exec)("npm install", { cwd: root }, (error) => {
|
|
90
|
+
if (error)
|
|
91
|
+
return reject(error);
|
|
92
|
+
return resolve();
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
96
|
+
const nodeModulesPath = path_1.default.join(root, "node_modules");
|
|
97
|
+
let totalPhysicalPackages = 0;
|
|
98
|
+
if (fs_1.default.existsSync(nodeModulesPath)) {
|
|
99
|
+
const files = await fs_1.default.promises.readdir(nodeModulesPath);
|
|
100
|
+
const packages = files.filter(file => !file.startsWith(".") && !file.startsWith("@"));
|
|
101
|
+
totalPhysicalPackages = packages.length;
|
|
102
|
+
}
|
|
103
|
+
clearInterval(spinner);
|
|
104
|
+
process.stdout.write("\r\x1b[K");
|
|
105
|
+
const endTime = Date.now();
|
|
106
|
+
const elapsedSeconds = ((endTime - startTime) / 1000).toFixed(2);
|
|
107
|
+
console.log(`${c.bold(c.cyan("dependencies"))}`);
|
|
108
|
+
console.log(`${c.gray("├──")} ${c.green("+")} tspace-spear${c.dim("@latest")}`);
|
|
109
|
+
console.log(`${c.gray("├──")} ${c.green("+")} class-transformer${c.dim("@0.5.1")}`);
|
|
110
|
+
console.log(`${c.gray("└──")} ${c.green("+")} class-validator${c.dim("@0.15.1")}`);
|
|
111
|
+
console.log(`${c.gray("│")}`);
|
|
112
|
+
console.log(`${c.bold(c.gray("devDependencies"))}`);
|
|
113
|
+
console.log(`${c.gray("├──")} ${c.green("+")} typescript${c.dim("@5.6.2")}`);
|
|
114
|
+
console.log(`${c.gray("├──")} ${c.green("+")} ts-node${c.dim("@10.9.2")}`);
|
|
115
|
+
console.log(`${c.gray("└──")} ${c.green("+")} @types/node${c.dim("@16.18.126")}\n`);
|
|
116
|
+
console.log(`\n${c.green(`${totalPhysicalPackages} packages installed`)} ${c.dim(`[${elapsedSeconds}s]`)}`);
|
|
117
|
+
console.log(`${c.dim(`[${elapsedSeconds}s] npm install`)}`);
|
|
118
|
+
console.log(`\n--------`);
|
|
119
|
+
console.log("A local project was created for you and dependencies were installed automatically.\n");
|
|
120
|
+
console.log(`${c.green("Created spear project successfully")}\n`);
|
|
121
|
+
console.log(c.bold(c.gray("# To get started, run:")));
|
|
122
|
+
console.log(`\n cd ${inputPath}\n ${c.cyan("npm run dev")}\n`);
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/generators/app/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const AppTemplate = "\nimport Spear from \"tspace-spear\";\n\nconst app = new Spear({\n logger: true,\n controllers: {\n folder: `${__dirname}/modules/*`,\n name: /controller\\.(ts|js)$/i,\n\n // don't forget to set this option for auto-generate route metadata for type-safe E2E usage, \n // and swagger documentation. By default if use .useSwagger() in app no need to set any description\n preRouteTypes: true\n }\n})\n\napp.cors({\n origins: [ \n /^http:\\/\\/localhost:\\d+$/ \n ],\n credentials: true\n});\n\napp.useGlobalPrefix(\"api\");\napp.useSwagger();\napp.useBodyParser();\n\napp.listen(8000 , ({ port , server }) => {\n console.log(`Server listening on : http://localhost:${port}`)\n console.log(`Docs listening on : http://localhost:${port}/api/docs`)\n});\n\ntype AppRouter = typeof app.contract;\n\nexport { AppRouter };\nexport { app };\nexport default app;\n";
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AppTemplate = void 0;
|
|
4
|
+
exports.AppTemplate = `
|
|
5
|
+
import Spear from "tspace-spear";
|
|
6
|
+
|
|
7
|
+
const app = new Spear({
|
|
8
|
+
logger: true,
|
|
9
|
+
controllers: {
|
|
10
|
+
folder: \`\${__dirname}/modules/*\`,
|
|
11
|
+
name: /controller\\\.(ts|js)$/i,
|
|
12
|
+
|
|
13
|
+
// don't forget to set this option for auto-generate route metadata for type-safe E2E usage,
|
|
14
|
+
// and swagger documentation. By default if use .useSwagger() in app no need to set any description
|
|
15
|
+
preRouteTypes: true
|
|
16
|
+
}
|
|
17
|
+
})
|
|
18
|
+
|
|
19
|
+
app.cors({
|
|
20
|
+
origins: [
|
|
21
|
+
/^http:\\/\\/localhost:\\d+$/\
|
|
22
|
+
|
|
23
|
+
],
|
|
24
|
+
credentials: true
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
app.useGlobalPrefix("api");
|
|
28
|
+
app.useSwagger();
|
|
29
|
+
app.useBodyParser();
|
|
30
|
+
|
|
31
|
+
app.listen(8000 , ({ port , server }) => {
|
|
32
|
+
console.log(\`Server listening on : http://localhost:\${port}\`)
|
|
33
|
+
console.log(\`Docs listening on : http://localhost:\${port}/api/docs\`)
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
type AppRouter = typeof app.contract;
|
|
37
|
+
|
|
38
|
+
export { AppRouter };
|
|
39
|
+
export { app };
|
|
40
|
+
export default app;
|
|
41
|
+
`;
|
|
42
|
+
//# sourceMappingURL=template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../src/cli/generators/app/template.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqC1B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const ClientTemplate = "\n// for example E2E\nimport { AppRouter } from \".\";\nimport { ApiClient } from \"tspace-spear/client\";\n\nconst client: ApiClient<AppRouter> = new ApiClient(\n \"http://localhost:8000/api\"\n);\n\nasync function main() { \n \n const res = await client.get(\"/cats\");\n res.data.cats = 1 // Type error: Type 'number' is not assignable to type '{ id: number; name: string; age: number; }[]'\n res.data.cats[0].name = 1 // Type error: Type 'number' is not assignable to type 'string'\n res.data.cats[0].age = \"1.6\" // Type error: Type 'string' is not assignable to type 'number'\n\n console.log(res) \n // res.ok -> boolean\n // res.status -> number\n // res.data -> { cats: [{ id: 1, name: 'cat1', age: 1.6 },{ id: 2, name: 'cat2', age: 1.8 }] }\n\n await client.get(\"/catsq\"); // Type error: Argument of type '\"/catsq\"' is not assignable to parameter of type '\"/cats\" | \"/cats/:id\" | ... 3 more\n \n}\nmain()\n";
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ClientTemplate = void 0;
|
|
4
|
+
exports.ClientTemplate = `
|
|
5
|
+
// for example E2E
|
|
6
|
+
import { AppRouter } from ".";
|
|
7
|
+
import { ApiClient } from "tspace-spear/client";
|
|
8
|
+
|
|
9
|
+
const client: ApiClient<AppRouter> = new ApiClient(
|
|
10
|
+
"http://localhost:8000/api"
|
|
11
|
+
);
|
|
12
|
+
|
|
13
|
+
async function main() {
|
|
14
|
+
|
|
15
|
+
const res = await client.get("/cats");
|
|
16
|
+
res.data.cats = 1 // Type error: Type 'number' is not assignable to type '{ id: number; name: string; age: number; }[]'
|
|
17
|
+
res.data.cats[0].name = 1 // Type error: Type 'number' is not assignable to type 'string'
|
|
18
|
+
res.data.cats[0].age = "1.6" // Type error: Type 'string' is not assignable to type 'number'
|
|
19
|
+
|
|
20
|
+
console.log(res)
|
|
21
|
+
// res.ok -> boolean
|
|
22
|
+
// res.status -> number
|
|
23
|
+
// res.data -> { cats: [{ id: 1, name: 'cat1', age: 1.6 },{ id: 2, name: 'cat2', age: 1.8 }] }
|
|
24
|
+
|
|
25
|
+
await client.get("/catsq"); // Type error: Argument of type '"/catsq"' is not assignable to parameter of type '"/cats" | "/cats/:id" | ... 3 more
|
|
26
|
+
|
|
27
|
+
}
|
|
28
|
+
main()
|
|
29
|
+
`;
|
|
30
|
+
//# sourceMappingURL=template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../src/cli/generators/client/template.ts"],"names":[],"mappings":";;;AACa,QAAA,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;CAyB7B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function createController(root: string, name?: string): void;
|
|
@@ -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;
|