@bogomolcompany/bogo 0.1.2 → 0.2.1
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 +60 -10
- package/README.ru.md +60 -17
- package/dist/cli.js +92 -20
- package/dist/cli.js.map +1 -1
- package/dist/commands/add-method.d.ts.map +1 -1
- package/dist/commands/add-method.js +10 -11
- package/dist/commands/add-method.js.map +1 -1
- package/dist/commands/create-app.d.ts +2 -1
- package/dist/commands/create-app.d.ts.map +1 -1
- package/dist/commands/create-app.js +2 -2
- package/dist/commands/create-app.js.map +1 -1
- package/dist/commands/doctor.d.ts +2 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +53 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/generate-module.d.ts.map +1 -1
- package/dist/commands/generate-module.js +21 -16
- package/dist/commands/generate-module.js.map +1 -1
- package/dist/commands/interactive.d.ts +3 -0
- package/dist/commands/interactive.d.ts.map +1 -0
- package/dist/commands/interactive.js +65 -0
- package/dist/commands/interactive.js.map +1 -0
- package/dist/commands/list-modules.d.ts +2 -0
- package/dist/commands/list-modules.d.ts.map +1 -0
- package/dist/commands/list-modules.js +36 -0
- package/dist/commands/list-modules.js.map +1 -0
- package/dist/commands/remove-module.d.ts +2 -1
- package/dist/commands/remove-module.d.ts.map +1 -1
- package/dist/commands/remove-module.js +61 -10
- package/dist/commands/remove-module.js.map +1 -1
- package/dist/templates/module.d.ts +14 -7
- package/dist/templates/module.d.ts.map +1 -1
- package/dist/templates/module.js +38 -63
- package/dist/templates/module.js.map +1 -1
- package/dist/templates/project.d.ts +2 -1
- package/dist/templates/project.d.ts.map +1 -1
- package/dist/templates/project.js +85 -17
- package/dist/templates/project.js.map +1 -1
- package/dist/templates/render-helpers.d.ts +9 -0
- package/dist/templates/render-helpers.d.ts.map +1 -0
- package/dist/templates/render-helpers.js +78 -0
- package/dist/templates/render-helpers.js.map +1 -0
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +6 -2
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/http.d.ts +5 -0
- package/dist/utils/http.d.ts.map +1 -0
- package/dist/utils/http.js +13 -0
- package/dist/utils/http.js.map +1 -0
- package/dist/utils/index-path.d.ts +7 -0
- package/dist/utils/index-path.d.ts.map +1 -0
- package/dist/utils/index-path.js +25 -0
- package/dist/utils/index-path.js.map +1 -0
- package/dist/utils/io.d.ts +8 -0
- package/dist/utils/io.d.ts.map +1 -0
- package/dist/utils/io.js +31 -0
- package/dist/utils/io.js.map +1 -0
- package/dist/utils/method-spec.d.ts +4 -0
- package/dist/utils/method-spec.d.ts.map +1 -0
- package/dist/utils/method-spec.js +49 -0
- package/dist/utils/method-spec.js.map +1 -0
- package/dist/utils/patch-index.d.ts +8 -4
- package/dist/utils/patch-index.d.ts.map +1 -1
- package/dist/utils/patch-index.js +33 -28
- package/dist/utils/patch-index.js.map +1 -1
- package/dist/utils/patch-method.d.ts +13 -20
- package/dist/utils/patch-method.d.ts.map +1 -1
- package/dist/utils/patch-method.js +66 -37
- package/dist/utils/patch-method.js.map +1 -1
- package/dist/utils/template-loader.d.ts +3 -0
- package/dist/utils/template-loader.d.ts.map +1 -0
- package/dist/utils/template-loader.js +17 -0
- package/dist/utils/template-loader.js.map +1 -0
- package/package.json +4 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patch-index.js","sourceRoot":"","sources":["../../src/utils/patch-index.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"patch-index.js","sourceRoot":"","sources":["../../src/utils/patch-index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +1,14 @@
|
|
|
1
|
-
import { MethodSpec } from "../interfaces";
|
|
2
|
-
export declare function
|
|
3
|
-
export declare function
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
export declare function
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
export declare function patchDtoMethod(content: string, _ctx: unknown, method: MethodSpec): string;
|
|
15
|
-
export declare function patchValidatorMethod(content: string, _ctx: unknown, method: MethodSpec): string;
|
|
16
|
-
export declare function patchRoutesMethod(content: string, ctx: {
|
|
17
|
-
names: {
|
|
18
|
-
kebab: string;
|
|
19
|
-
};
|
|
20
|
-
}, method: MethodSpec): string;
|
|
1
|
+
import { MethodSpec, ModuleTemplateContext, ModulePart } from "../interfaces";
|
|
2
|
+
export declare function patchControllerMethod(content: string, ctx: ModuleTemplateContext, method: MethodSpec): string;
|
|
3
|
+
export declare function patchServiceMethod(content: string, ctx: ModuleTemplateContext, method: MethodSpec): string;
|
|
4
|
+
export declare function patchDtoMethod(content: string, _ctx: ModuleTemplateContext, method: MethodSpec): string;
|
|
5
|
+
export declare function patchValidatorMethod(content: string, _ctx: ModuleTemplateContext, method: MethodSpec): string;
|
|
6
|
+
export declare function patchRoutesMethod(content: string, ctx: ModuleTemplateContext, method: MethodSpec): string;
|
|
7
|
+
export declare function removeControllerMethod(content: string, methodName: string): string;
|
|
8
|
+
export declare function removeServiceMethod(content: string, ctx: ModuleTemplateContext, methodName: string): string;
|
|
9
|
+
export declare function removeDtoMethod(content: string, methodName: string): string;
|
|
10
|
+
export declare function removeValidatorMethod(content: string, methodName: string): string;
|
|
11
|
+
export declare function removeRoutesMethod(content: string, ctx: ModuleTemplateContext, method: MethodSpec): string;
|
|
12
|
+
export declare const PATCHERS: Record<ModulePart, (content: string, ctx: ModuleTemplateContext, method: MethodSpec) => string>;
|
|
13
|
+
export declare const REMOVERS: Record<ModulePart, (content: string, ctx: ModuleTemplateContext, method: MethodSpec) => string>;
|
|
21
14
|
//# sourceMappingURL=patch-method.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patch-method.d.ts","sourceRoot":"","sources":["../../src/utils/patch-method.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"patch-method.d.ts","sourceRoot":"","sources":["../../src/utils/patch-method.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AA4C9E,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAW7G;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAiB1G;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAKvG;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAK7G;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAiBzG;AAMD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAKlF;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAW3G;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAKjF;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAc1G;AAED,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,UAAU,KAAK,MAAM,CAMpH,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,UAAU,KAAK,MAAM,CAMpH,CAAC"}
|
|
@@ -1,22 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.REMOVERS = exports.PATCHERS = void 0;
|
|
4
4
|
exports.patchControllerMethod = patchControllerMethod;
|
|
5
5
|
exports.patchServiceMethod = patchServiceMethod;
|
|
6
6
|
exports.patchDtoMethod = patchDtoMethod;
|
|
7
7
|
exports.patchValidatorMethod = patchValidatorMethod;
|
|
8
8
|
exports.patchRoutesMethod = patchRoutesMethod;
|
|
9
|
+
exports.removeControllerMethod = removeControllerMethod;
|
|
10
|
+
exports.removeServiceMethod = removeServiceMethod;
|
|
11
|
+
exports.removeDtoMethod = removeDtoMethod;
|
|
12
|
+
exports.removeValidatorMethod = removeValidatorMethod;
|
|
13
|
+
exports.removeRoutesMethod = removeRoutesMethod;
|
|
14
|
+
const render_helpers_1 = require("../templates/render-helpers");
|
|
15
|
+
const http_1 = require("./http");
|
|
9
16
|
const naming_1 = require("./naming");
|
|
10
|
-
function parseMethodSpec(raw) {
|
|
11
|
-
const [name, route] = raw.split(":");
|
|
12
|
-
if (!name || !/^[a-zA-Z][a-zA-Z0-9]*$/.test(name)) {
|
|
13
|
-
throw new Error(`Invalid method name: "${raw}". Use camelCase, e.g. getList or getList:/custom-path`);
|
|
14
|
-
}
|
|
15
|
-
return {
|
|
16
|
-
name,
|
|
17
|
-
route: route ? (0, naming_1.methodToRoutePath)(name, route) : undefined,
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
17
|
function addImportSymbol(content, importPattern, symbol) {
|
|
21
18
|
const match = content.match(importPattern);
|
|
22
19
|
if (!match) {
|
|
@@ -28,19 +25,26 @@ function addImportSymbol(content, importPattern, symbol) {
|
|
|
28
25
|
}
|
|
29
26
|
return content.replace(match[0], match[0].replace(match[1], `${match[1]}, ${symbol}`));
|
|
30
27
|
}
|
|
28
|
+
function removeImportSymbol(content, importPattern, symbol) {
|
|
29
|
+
const match = content.match(importPattern);
|
|
30
|
+
if (!match) {
|
|
31
|
+
return content;
|
|
32
|
+
}
|
|
33
|
+
const symbols = match[1]
|
|
34
|
+
.split(",")
|
|
35
|
+
.map(value => value.trim())
|
|
36
|
+
.filter(Boolean)
|
|
37
|
+
.filter(value => value !== symbol);
|
|
38
|
+
if (symbols.length === 0) {
|
|
39
|
+
return content.replace(`${match[0]}\n`, "");
|
|
40
|
+
}
|
|
41
|
+
return content.replace(match[0], match[0].replace(match[1], symbols.join(", ")));
|
|
42
|
+
}
|
|
31
43
|
function patchControllerMethod(content, ctx, method) {
|
|
32
44
|
if (new RegExp(`async ${method.name}\\(`).test(content)) {
|
|
33
45
|
throw new Error(`Method "${method.name}" already exists in controller`);
|
|
34
46
|
}
|
|
35
|
-
const snippet =
|
|
36
|
-
async ${method.name}(req: e.Request, res: e.Response) {
|
|
37
|
-
try {
|
|
38
|
-
const result = await ${ctx.names.pascal}Service.${method.name}(req.body);
|
|
39
|
-
return res.success(result);
|
|
40
|
-
} catch (error) {
|
|
41
|
-
return res.error(error);
|
|
42
|
-
}
|
|
43
|
-
}`;
|
|
47
|
+
const snippet = (0, render_helpers_1.renderControllerMethod)(ctx.names, method);
|
|
44
48
|
const updated = content.replace(/(\n}\n\nexport default new .+Controller\(\);)/, `${snippet}$1`);
|
|
45
49
|
if (updated === content) {
|
|
46
50
|
throw new Error("Could not patch controller file");
|
|
@@ -52,10 +56,7 @@ function patchServiceMethod(content, ctx, method) {
|
|
|
52
56
|
throw new Error(`Method "${method.name}" already exists in service`);
|
|
53
57
|
}
|
|
54
58
|
let updated = addImportSymbol(content, new RegExp(`import \\{ (.+) \\} from "\\./${ctx.names.kebab}\\.dto";`), `${method.name}DTO`);
|
|
55
|
-
const snippet =
|
|
56
|
-
async ${method.name}(body: ${method.name}DTO) {
|
|
57
|
-
throw new Error("${ctx.names.pascal}Service.${method.name} is not implemented");
|
|
58
|
-
}`;
|
|
59
|
+
const snippet = (0, render_helpers_1.renderServiceMethod)(ctx.names, method);
|
|
59
60
|
updated = updated.replace(/(\n}\n\nexport default new .+Service\(\);)/, `${snippet}$1`);
|
|
60
61
|
if (updated === content) {
|
|
61
62
|
throw new Error("Could not patch service file");
|
|
@@ -66,34 +67,62 @@ function patchDtoMethod(content, _ctx, method) {
|
|
|
66
67
|
if (new RegExp(`interface ${method.name}DTO`).test(content)) {
|
|
67
68
|
throw new Error(`Method "${method.name}" already exists in dto`);
|
|
68
69
|
}
|
|
69
|
-
return `${content.trimEnd()}\
|
|
70
|
-
// TODO: define fields
|
|
71
|
-
}
|
|
72
|
-
`;
|
|
70
|
+
return `${content.trimEnd()}\n${(0, render_helpers_1.renderDtoBlock)(method)}`;
|
|
73
71
|
}
|
|
74
72
|
function patchValidatorMethod(content, _ctx, method) {
|
|
75
73
|
if (new RegExp(`export const ${method.name} =`).test(content)) {
|
|
76
74
|
throw new Error(`Method "${method.name}" already exists in validator`);
|
|
77
75
|
}
|
|
78
|
-
return `${content.trimEnd()}
|
|
79
|
-
export const ${method.name} = z.object({
|
|
80
|
-
body: z.object({
|
|
81
|
-
// TODO: define validation schema
|
|
82
|
-
}),
|
|
83
|
-
});
|
|
84
|
-
`;
|
|
76
|
+
return `${content.trimEnd()}\n${(0, render_helpers_1.renderValidatorBlock)(method)}`;
|
|
85
77
|
}
|
|
86
78
|
function patchRoutesMethod(content, ctx, method) {
|
|
87
79
|
if (content.includes(`controller.${method.name}(`)) {
|
|
88
80
|
throw new Error(`Method "${method.name}" already exists in routes`);
|
|
89
81
|
}
|
|
90
82
|
let updated = addImportSymbol(content, new RegExp(`import \\{ (.+) \\} from "\\./${ctx.names.kebab}\\.validator";`), method.name);
|
|
91
|
-
const
|
|
92
|
-
const snippet = `router.post("${routePath}", validate(${method.name}), (req: Request, res: Response) => controller.${method.name}(req, res));`;
|
|
83
|
+
const snippet = (0, render_helpers_1.renderRouteLine)(method, ctx.middleware);
|
|
93
84
|
updated = updated.replace(/(\n\nexport default router;\n?)$/, `\n${snippet}$1`);
|
|
94
85
|
if (updated === content) {
|
|
95
86
|
throw new Error("Could not patch routes file");
|
|
96
87
|
}
|
|
97
88
|
return updated;
|
|
98
89
|
}
|
|
90
|
+
function removeBlock(content, pattern) {
|
|
91
|
+
return content.replace(pattern, "");
|
|
92
|
+
}
|
|
93
|
+
function removeControllerMethod(content, methodName) {
|
|
94
|
+
return removeBlock(content, new RegExp(`\\n async ${methodName}\\(req: e\\.Request, res: e\\.Response\\) \\{[\\s\\S]*?\\n \\}`, "m"));
|
|
95
|
+
}
|
|
96
|
+
function removeServiceMethod(content, ctx, methodName) {
|
|
97
|
+
let updated = removeBlock(content, new RegExp(`\\n async ${methodName}\\(dto: ${methodName}DTO\\) \\{[\\s\\S]*?\\n \\}`, "m"));
|
|
98
|
+
updated = removeImportSymbol(updated, new RegExp(`import \\{ (.+) \\} from "\\./${ctx.names.kebab}\\.dto";`), `${methodName}DTO`);
|
|
99
|
+
return updated;
|
|
100
|
+
}
|
|
101
|
+
function removeDtoMethod(content, methodName) {
|
|
102
|
+
return removeBlock(content, new RegExp(`\\nexport interface ${methodName}DTO \\{[\\s\\S]*?\\}\\n`, "m")).trimEnd() + "\n";
|
|
103
|
+
}
|
|
104
|
+
function removeValidatorMethod(content, methodName) {
|
|
105
|
+
return removeBlock(content, new RegExp(`\\nexport const ${methodName} = z\\.object\\(\\{[\\s\\S]*?\\}\\);\\n`, "m")).trimEnd() + "\n";
|
|
106
|
+
}
|
|
107
|
+
function removeRoutesMethod(content, ctx, method) {
|
|
108
|
+
const routePath = (0, naming_1.methodToRoutePath)(method.name, method.route);
|
|
109
|
+
const pattern = new RegExp(`\\nrouter\\.${(0, http_1.routerFn)(method.httpMethod)}\\("${routePath.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}"[\\s\\S]*?controller\\.${method.name}\\(req, res\\)\\);`, "m");
|
|
110
|
+
let updated = removeBlock(content, pattern);
|
|
111
|
+
updated = removeImportSymbol(updated, new RegExp(`import \\{ (.+) \\} from "\\./${ctx.names.kebab}\\.validator";`), method.name);
|
|
112
|
+
return updated;
|
|
113
|
+
}
|
|
114
|
+
exports.PATCHERS = {
|
|
115
|
+
controller: patchControllerMethod,
|
|
116
|
+
service: patchServiceMethod,
|
|
117
|
+
dto: patchDtoMethod,
|
|
118
|
+
validator: patchValidatorMethod,
|
|
119
|
+
routes: patchRoutesMethod,
|
|
120
|
+
};
|
|
121
|
+
exports.REMOVERS = {
|
|
122
|
+
controller: (content, _ctx, method) => removeControllerMethod(content, method.name),
|
|
123
|
+
service: (content, ctx, method) => removeServiceMethod(content, ctx, method.name),
|
|
124
|
+
dto: (content, _ctx, method) => removeDtoMethod(content, method.name),
|
|
125
|
+
validator: (content, _ctx, method) => removeValidatorMethod(content, method.name),
|
|
126
|
+
routes: (content, ctx, method) => removeRoutesMethod(content, ctx, method),
|
|
127
|
+
};
|
|
99
128
|
//# sourceMappingURL=patch-method.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patch-method.js","sourceRoot":"","sources":["../../src/utils/patch-method.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"patch-method.js","sourceRoot":"","sources":["../../src/utils/patch-method.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { ModulePart, ModuleTemplateContext } from "../interfaces";
|
|
2
|
+
export declare function renderWithTemplate(part: ModulePart, ctx: ModuleTemplateContext, templatesDir: string | undefined, fallback: (ctx: ModuleTemplateContext) => string): string;
|
|
3
|
+
//# sourceMappingURL=template-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-loader.d.ts","sourceRoot":"","sources":["../../src/utils/template-loader.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAGlE,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,qBAAqB,EAC1B,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,QAAQ,EAAE,CAAC,GAAG,EAAE,qBAAqB,KAAK,MAAM,GAC/C,MAAM,CAWR"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.renderWithTemplate = renderWithTemplate;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const path_1 = require("path");
|
|
6
|
+
const render_helpers_1 = require("../templates/render-helpers");
|
|
7
|
+
function renderWithTemplate(part, ctx, templatesDir, fallback) {
|
|
8
|
+
if (!templatesDir) {
|
|
9
|
+
return fallback(ctx);
|
|
10
|
+
}
|
|
11
|
+
const templatePath = (0, path_1.join)(templatesDir, `${part}.template`);
|
|
12
|
+
if (!(0, fs_1.existsSync)(templatePath)) {
|
|
13
|
+
return fallback(ctx);
|
|
14
|
+
}
|
|
15
|
+
return (0, render_helpers_1.applyTemplate)((0, fs_1.readFileSync)(templatePath, "utf-8"), ctx, part);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=template-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-loader.js","sourceRoot":"","sources":["../../src/utils/template-loader.ts"],"names":[],"mappings":";;AAKA,gDAgBC;AArBD,2BAA8C;AAC9C,+BAA4B;AAE5B,gEAA4D;AAE5D,SAAgB,kBAAkB,CAChC,IAAgB,EAChB,GAA0B,EAC1B,YAAgC,EAChC,QAAgD;IAEhD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAED,MAAM,YAAY,GAAG,IAAA,WAAI,EAAC,YAAY,EAAE,GAAG,IAAI,WAAW,CAAC,CAAC;IAC5D,IAAI,CAAC,IAAA,eAAU,EAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,IAAA,8BAAa,EAAC,IAAA,iBAAY,EAAC,YAAY,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AACvE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bogomolcompany/bogo",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "CLI to scaffold Express + TypeScript API projects and generate modules (controller, service, dto, routes, validator)",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "bogomolcompany",
|
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
"scripts": {
|
|
39
39
|
"build": "tsc",
|
|
40
40
|
"dev": "ts-node src/cli.ts",
|
|
41
|
+
"test": "vitest run",
|
|
41
42
|
"prepublishOnly": "npm run build"
|
|
42
43
|
},
|
|
43
44
|
"dependencies": {
|
|
@@ -46,7 +47,8 @@
|
|
|
46
47
|
"devDependencies": {
|
|
47
48
|
"@types/node": "^22.5.0",
|
|
48
49
|
"ts-node": "^10.9.2",
|
|
49
|
-
"typescript": "^5.5.4"
|
|
50
|
+
"typescript": "^5.5.4",
|
|
51
|
+
"vitest": "^2.0.5"
|
|
50
52
|
},
|
|
51
53
|
"engines": {
|
|
52
54
|
"node": ">=18"
|