vona-cli-set-api 1.0.5 → 1.0.11
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/cli/templates/create/module/boilerplate/_package.json +28 -8
- package/cli/templates/create/module/boilerplate/_tsconfig.build.json +8 -0
- package/cli/templates/create/module/boilerplate/_tsconfig.json +2 -3
- package/cli/templates/create/module/snippets/package.json.ts +17 -0
- package/cli/templates/create/module/snippets/tsconfig.json.ts +19 -0
- package/cli/templates/create/project/basic/boilerplate/.editorconfig +9 -0
- package/cli/templates/create/project/basic/boilerplate/.gitattributes +2 -0
- package/cli/templates/create/project/basic/boilerplate/.vscode/extensions.json +4 -0
- package/cli/templates/create/project/basic/boilerplate/.vscode/settings.json +45 -0
- package/cli/templates/create/project/basic/boilerplate/.vscode/vona.code-snippets +51 -0
- package/cli/templates/create/project/basic/boilerplate/env/.env +59 -0
- package/cli/templates/create/project/basic/boilerplate/env/.env.local +0 -0
- package/cli/templates/create/project/basic/boilerplate/env/.env.prod +26 -0
- package/cli/templates/create/project/basic/boilerplate/env/.env.test +0 -0
- package/cli/templates/create/project/basic/boilerplate/eslint.config.mjs +16 -0
- package/cli/templates/create/project/basic/boilerplate/package.original.json +45 -0
- package/cli/templates/create/project/basic/boilerplate/pnpm-workspace.yaml +7 -0
- package/cli/templates/create/project/basic/boilerplate/scripts/app-init.sh +4 -0
- package/cli/templates/create/project/basic/boilerplate/scripts/wait-for-it.sh +156 -0
- package/cli/templates/create/project/basic/boilerplate/src/backend/config/config/config.local.ts +10 -0
- package/cli/templates/create/project/basic/boilerplate/src/backend/config/config/config.prod.ts +21 -0
- package/cli/templates/create/project/basic/boilerplate/src/backend/config/config/config.test.ts +10 -0
- package/cli/templates/create/project/basic/boilerplate/src/backend/config/config/config.ts +10 -0
- package/cli/templates/create/project/basic/boilerplate/src/backend/config/locale/en-us.ts +5 -0
- package/cli/templates/create/project/basic/boilerplate/src/backend/config/locale/zh-cn.ts +5 -0
- package/cli/templates/create/project/basic/boilerplate/src/backend/config/locales.ts +7 -0
- package/cli/templates/create/project/basic/boilerplate/src/backend/typing/env.d.ts +5 -0
- package/cli/templates/create/project/basic/boilerplate/src/module/.gitkeep +0 -0
- package/cli/templates/create/project/basic/boilerplate/src/module-vendor/.gitkeep +0 -0
- package/cli/templates/create/project/basic/boilerplate/src/suite/.gitkeep +0 -0
- package/cli/templates/create/project/basic/boilerplate/src/suite-vendor/.gitkeep +0 -0
- package/cli/templates/create/project/basic/boilerplate/tsconfig.base.esm.json +10 -0
- package/cli/templates/create/project/basic/boilerplate/tsconfig.base.json +3 -0
- package/cli/templates/create/project/basic/boilerplate/tsconfig.json +12 -0
- package/cli/templates/create/suite/_package.json +2 -2
- package/cli/templates/create/suite/_tsconfig.json +2 -2
- package/cli/templates/create/test/boilerplate/{{name}}.test.ts +11 -0
- package/cli/templates/init/config/boilerplate/config/config.ts +5 -0
- package/cli/templates/init/constant/boilerplate/config/constants.ts +1 -0
- package/cli/templates/init/error/boilerplate/config/errors.ts +1 -0
- package/cli/templates/init/locale/boilerplate/config/locale/en-us.ts +1 -0
- package/cli/templates/init/locale/boilerplate/config/locale/zh-cn.ts +1 -0
- package/cli/templates/init/main/boilerplate/main.ts +8 -0
- package/cli/templates/init/monkey/boilerplate/monkey.ts +9 -0
- package/cli/templates/init/static/boilerplate/static/img/vona.png +0 -0
- package/cli/templates/tools/crud/boilerplate/src/controller/{{resourceName}}.ts_ +43 -0
- package/cli/templates/tools/crud/boilerplate/src/dto/{{resourceName}}Create.ts_ +9 -0
- package/cli/templates/tools/crud/boilerplate/src/dto/{{resourceName}}Update.ts_ +9 -0
- package/cli/templates/tools/crud/boilerplate/src/entity/{{resourceName}}.ts_ +15 -0
- package/cli/templates/tools/crud/boilerplate/src/model/{{resourceName}}.ts_ +5 -0
- package/cli/templates/tools/crud/boilerplate/src/service/{{resourceName}}.ts_ +32 -0
- package/cli/templates/tools/crud/boilerplate/test/{{resourceName}}.test.ts_ +46 -0
- package/cli/templates/tools/crud/snippets/1-package.json.ts +16 -0
- package/cli/templates/tools/crud/snippets/2-meta.version.ts +42 -0
- package/cli/templates/tools/crud/snippets/3-en-us.ts +27 -0
- package/cli/templates/tools/crud/snippets/4-zh-cn.ts +10 -0
- package/cli/templates/tools/crud/utils.ts +20 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.js +3 -3
- package/dist/lib/bean/cli.bin.build.d.ts +15 -0
- package/dist/lib/bean/cli.bin.build.js +139 -0
- package/dist/lib/bean/cli.bin.dbReset.d.ts +13 -0
- package/dist/lib/bean/cli.bin.dbReset.js +46 -0
- package/dist/lib/bean/cli.bin.demo.d.ts +12 -0
- package/dist/lib/bean/cli.bin.demo.js +50 -0
- package/dist/lib/bean/cli.bin.dev.d.ts +14 -0
- package/dist/lib/bean/cli.bin.dev.js +53 -0
- package/dist/lib/bean/cli.bin.test.d.ts +15 -0
- package/dist/lib/bean/cli.bin.test.js +67 -0
- package/dist/lib/bean/{cli.tools.build.d.ts → cli.bin.tsc.d.ts} +2 -3
- package/dist/lib/bean/{cli.tools.build.js → cli.bin.tsc.js} +13 -5
- package/dist/lib/bean/cli.create.bean.d.ts +3 -4
- package/dist/lib/bean/cli.create.bean.js +42 -28
- package/dist/lib/bean/cli.create.module.d.ts +1 -2
- package/dist/lib/bean/cli.create.module.js +3 -4
- package/dist/lib/bean/cli.create.project.d.ts +26 -0
- package/dist/lib/bean/cli.create.project.js +115 -0
- package/dist/lib/bean/cli.create.suite.d.ts +1 -2
- package/dist/lib/bean/cli.create.suite.js +5 -9
- package/dist/lib/bean/cli.create.test.d.ts +15 -0
- package/dist/lib/bean/cli.create.test.js +39 -0
- package/dist/lib/bean/cli.default.list.d.ts +0 -1
- package/dist/lib/bean/cli.default.list.js +0 -1
- package/dist/lib/bean/cli.init.config.d.ts +8 -0
- package/dist/lib/bean/cli.init.config.js +36 -0
- package/dist/lib/bean/cli.init.constant.d.ts +8 -0
- package/dist/lib/bean/cli.init.constant.js +36 -0
- package/dist/lib/bean/cli.init.error.d.ts +8 -0
- package/dist/lib/bean/cli.init.error.js +47 -0
- package/dist/lib/bean/cli.init.locale.d.ts +8 -0
- package/dist/lib/bean/cli.init.locale.js +36 -0
- package/dist/lib/bean/cli.init.main.d.ts +8 -0
- package/dist/lib/bean/cli.init.main.js +36 -0
- package/dist/lib/bean/cli.init.monkey.d.ts +9 -0
- package/dist/lib/bean/cli.init.monkey.js +62 -0
- package/dist/lib/bean/cli.init.static.d.ts +8 -0
- package/dist/lib/bean/cli.init.static.js +36 -0
- package/dist/lib/bean/cli.tools.crud.d.ts +15 -0
- package/dist/lib/bean/cli.tools.crud.js +42 -0
- package/dist/lib/bean/cli.tools.deps.d.ts +2 -10
- package/dist/lib/bean/cli.tools.deps.js +16 -123
- package/dist/lib/bean/cli.tools.metadata.d.ts +1 -1
- package/dist/lib/bean/cli.tools.metadata.js +71 -32
- package/dist/lib/bean/toolsBin/configUtils.d.ts +7 -0
- package/dist/lib/bean/toolsBin/configUtils.js +56 -0
- package/dist/lib/bean/toolsBin/dbReset.d.ts +1 -0
- package/dist/lib/bean/toolsBin/dbReset.js +8 -0
- package/dist/lib/bean/toolsBin/demo.d.ts +1 -0
- package/dist/lib/bean/toolsBin/demo.js +41 -0
- package/dist/lib/bean/toolsBin/generateEntryFiles.d.ts +4 -0
- package/dist/lib/bean/toolsBin/generateEntryFiles.js +75 -0
- package/dist/lib/bean/toolsBin/generateVonaMeta.d.ts +10 -0
- package/dist/lib/bean/toolsBin/generateVonaMeta.js +17 -0
- package/dist/lib/bean/toolsBin/test.d.ts +1 -0
- package/dist/lib/bean/toolsBin/test.js +121 -0
- package/dist/lib/bean/toolsBin/types.d.ts +5 -0
- package/dist/lib/bean/toolsBin/types.js +1 -0
- package/dist/lib/bean/toolsMetadata/generateBeanGenerals.d.ts +2 -0
- package/dist/lib/bean/toolsMetadata/generateBeanGenerals.js +33 -0
- package/dist/lib/bean/toolsMetadata/generateBeans.d.ts +2 -2
- package/dist/lib/bean/toolsMetadata/generateBeans.js +33 -21
- package/dist/lib/bean/toolsMetadata/generateConfig.d.ts +3 -4
- package/dist/lib/bean/toolsMetadata/generateConfig.js +12 -14
- package/dist/lib/bean/toolsMetadata/generateMetadataCustom.d.ts +3 -0
- package/dist/lib/bean/toolsMetadata/generateMetadataCustom.js +23 -0
- package/dist/lib/bean/toolsMetadata/generateMonkey.d.ts +2 -3
- package/dist/lib/bean/toolsMetadata/generateMonkey.js +3 -4
- package/dist/lib/bean/toolsMetadata/generateOnions.d.ts +2 -0
- package/dist/lib/bean/toolsMetadata/generateOnions.js +90 -0
- package/dist/lib/bean/toolsMetadata/generateScope.d.ts +1 -4
- package/dist/lib/bean/toolsMetadata/generateScope.js +43 -16
- package/dist/lib/bean/toolsMetadata/generateScopeResources.d.ts +2 -0
- package/dist/lib/bean/toolsMetadata/generateScopeResources.js +29 -0
- package/dist/lib/bean/toolsMetadata/generateScopeResourcesMeta.d.ts +2 -0
- package/dist/lib/bean/toolsMetadata/generateScopeResourcesMeta.js +13 -0
- package/dist/lib/bean/toolsMetadata/utils.d.ts +9 -0
- package/dist/lib/bean/toolsMetadata/utils.js +82 -0
- package/dist/lib/beans.d.ts +38 -9
- package/dist/lib/beans.js +38 -9
- package/dist/lib/command/bin.build.d.ts +19 -0
- package/dist/lib/command/bin.build.js +18 -0
- package/dist/lib/command/bin.dbReset.d.ts +15 -0
- package/dist/lib/command/bin.dbReset.js +14 -0
- package/dist/lib/command/bin.demo.d.ts +15 -0
- package/dist/lib/command/bin.demo.js +14 -0
- package/dist/lib/command/bin.dev.d.ts +19 -0
- package/dist/lib/command/bin.dev.js +18 -0
- package/dist/lib/command/bin.test.d.ts +19 -0
- package/dist/lib/command/bin.test.js +18 -0
- package/dist/lib/command/{tools.build.d.ts → bin.tsc.d.ts} +0 -1
- package/dist/lib/command/{tools.build.js → bin.tsc.js} +3 -4
- package/dist/lib/command/create.bean.d.ts +0 -1
- package/dist/lib/command/create.bean.js +0 -1
- package/dist/lib/command/create.module.d.ts +0 -1
- package/dist/lib/command/create.module.js +0 -1
- package/dist/lib/command/create.project.d.ts +45 -0
- package/dist/lib/command/create.project.js +43 -0
- package/dist/lib/command/create.suite.d.ts +0 -1
- package/dist/lib/command/create.suite.js +0 -1
- package/dist/lib/command/create.test.d.ts +34 -0
- package/dist/lib/command/create.test.js +33 -0
- package/dist/lib/command/default.list.d.ts +0 -1
- package/dist/lib/command/default.list.js +0 -1
- package/dist/lib/command/init.config.d.ts +9 -0
- package/dist/lib/command/init.config.js +10 -0
- package/dist/lib/command/init.constant.d.ts +9 -0
- package/dist/lib/command/init.constant.js +10 -0
- package/dist/lib/command/init.error.d.ts +9 -0
- package/dist/lib/command/init.error.js +10 -0
- package/dist/lib/command/init.locale.d.ts +9 -0
- package/dist/lib/command/init.locale.js +10 -0
- package/dist/lib/command/init.main.d.ts +9 -0
- package/dist/lib/command/init.main.js +10 -0
- package/dist/lib/command/init.monkey.d.ts +9 -0
- package/dist/lib/command/init.monkey.js +10 -0
- package/dist/lib/command/init.static.d.ts +9 -0
- package/dist/lib/command/init.static.js +10 -0
- package/dist/lib/command/tools.crud.d.ts +34 -0
- package/dist/lib/command/tools.crud.js +33 -0
- package/dist/lib/command/tools.deps.d.ts +1 -11
- package/dist/lib/command/tools.deps.js +2 -12
- package/dist/lib/command/tools.metadata.d.ts +0 -1
- package/dist/lib/command/tools.metadata.js +0 -1
- package/dist/lib/commands.d.ts +253 -12
- package/dist/lib/commands.js +42 -10
- package/dist/lib/this.d.ts +0 -1
- package/dist/lib/this.js +0 -1
- package/dist/lib/utils.d.ts +15 -0
- package/dist/lib/utils.js +63 -0
- package/dist/typings.d.ts +0 -1
- package/dist/typings.js +0 -1
- package/package.json +50 -26
- package/templates/app/app.ejs +15 -0
- package/templates/app/bootstrap.ejs +13 -0
- package/templates/app/vona-modules-meta.ejs +49 -0
- package/templates/config/_tsconfig_project.json +12 -0
- package/templates/config/_tsconfig_source.json +40 -0
- package/templates/test/done-only.test.ts +3 -0
- package/templates/test/done.test.ts +3 -0
- package/cli/templates/create/bean/boilerplate/{{sceneName}}.{{beanName}}.ts_ +0 -4
- package/cli/templates/create/module/snippets/package.json.cjs +0 -11
- package/cli/templates/create/module/snippets/tsconfig.json.cjs +0 -13
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lib/bean/cli.create.bean.d.ts.map +0 -1
- package/dist/lib/bean/cli.create.bean.js.map +0 -1
- package/dist/lib/bean/cli.create.module.d.ts.map +0 -1
- package/dist/lib/bean/cli.create.module.js.map +0 -1
- package/dist/lib/bean/cli.create.suite.d.ts.map +0 -1
- package/dist/lib/bean/cli.create.suite.js.map +0 -1
- package/dist/lib/bean/cli.default.list.d.ts.map +0 -1
- package/dist/lib/bean/cli.default.list.js.map +0 -1
- package/dist/lib/bean/cli.tools.build.d.ts.map +0 -1
- package/dist/lib/bean/cli.tools.build.js.map +0 -1
- package/dist/lib/bean/cli.tools.deps.d.ts.map +0 -1
- package/dist/lib/bean/cli.tools.deps.js.map +0 -1
- package/dist/lib/bean/cli.tools.metadata.d.ts.map +0 -1
- package/dist/lib/bean/cli.tools.metadata.js.map +0 -1
- package/dist/lib/bean/toolsMetadata/generateAtoms.d.ts +0 -2
- package/dist/lib/bean/toolsMetadata/generateAtoms.d.ts.map +0 -1
- package/dist/lib/bean/toolsMetadata/generateAtoms.js +0 -24
- package/dist/lib/bean/toolsMetadata/generateAtoms.js.map +0 -1
- package/dist/lib/bean/toolsMetadata/generateBeans.d.ts.map +0 -1
- package/dist/lib/bean/toolsMetadata/generateBeans.js.map +0 -1
- package/dist/lib/bean/toolsMetadata/generateConfig.d.ts.map +0 -1
- package/dist/lib/bean/toolsMetadata/generateConfig.js.map +0 -1
- package/dist/lib/bean/toolsMetadata/generateControllers.d.ts +0 -2
- package/dist/lib/bean/toolsMetadata/generateControllers.d.ts.map +0 -1
- package/dist/lib/bean/toolsMetadata/generateControllers.js +0 -24
- package/dist/lib/bean/toolsMetadata/generateControllers.js.map +0 -1
- package/dist/lib/bean/toolsMetadata/generateEntities.d.ts +0 -2
- package/dist/lib/bean/toolsMetadata/generateEntities.d.ts.map +0 -1
- package/dist/lib/bean/toolsMetadata/generateEntities.js +0 -24
- package/dist/lib/bean/toolsMetadata/generateEntities.js.map +0 -1
- package/dist/lib/bean/toolsMetadata/generateModels.d.ts +0 -2
- package/dist/lib/bean/toolsMetadata/generateModels.d.ts.map +0 -1
- package/dist/lib/bean/toolsMetadata/generateModels.js +0 -34
- package/dist/lib/bean/toolsMetadata/generateModels.js.map +0 -1
- package/dist/lib/bean/toolsMetadata/generateMonkey.d.ts.map +0 -1
- package/dist/lib/bean/toolsMetadata/generateMonkey.js.map +0 -1
- package/dist/lib/bean/toolsMetadata/generateScope.d.ts.map +0 -1
- package/dist/lib/bean/toolsMetadata/generateScope.js.map +0 -1
- package/dist/lib/bean/toolsMetadata/generateServices.d.ts +0 -2
- package/dist/lib/bean/toolsMetadata/generateServices.d.ts.map +0 -1
- package/dist/lib/bean/toolsMetadata/generateServices.js +0 -54
- package/dist/lib/bean/toolsMetadata/generateServices.js.map +0 -1
- package/dist/lib/beans.d.ts.map +0 -1
- package/dist/lib/beans.js.map +0 -1
- package/dist/lib/command/create.bean.d.ts.map +0 -1
- package/dist/lib/command/create.bean.js.map +0 -1
- package/dist/lib/command/create.module.d.ts.map +0 -1
- package/dist/lib/command/create.module.js.map +0 -1
- package/dist/lib/command/create.suite.d.ts.map +0 -1
- package/dist/lib/command/create.suite.js.map +0 -1
- package/dist/lib/command/default.list.d.ts.map +0 -1
- package/dist/lib/command/default.list.js.map +0 -1
- package/dist/lib/command/tools.build.d.ts.map +0 -1
- package/dist/lib/command/tools.build.js.map +0 -1
- package/dist/lib/command/tools.deps.d.ts.map +0 -1
- package/dist/lib/command/tools.deps.js.map +0 -1
- package/dist/lib/command/tools.metadata.d.ts.map +0 -1
- package/dist/lib/command/tools.metadata.js.map +0 -1
- package/dist/lib/commands.d.ts.map +0 -1
- package/dist/lib/commands.js.map +0 -1
- package/dist/lib/this.d.ts.map +0 -1
- package/dist/lib/this.js.map +0 -1
- package/dist/typings.d.ts.map +0 -1
- package/dist/typings.js.map +0 -1
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { BeanCliBase } from '@cabloy/cli';
|
|
3
|
+
import fse from 'fs-extra';
|
|
4
|
+
import { generateVonaMeta } from "./toolsBin/generateVonaMeta.js";
|
|
5
|
+
export class CliBinDemo extends BeanCliBase {
|
|
6
|
+
async execute() {
|
|
7
|
+
const { argv } = this.context;
|
|
8
|
+
// super
|
|
9
|
+
await super.execute();
|
|
10
|
+
const projectPath = argv.projectPath;
|
|
11
|
+
// test
|
|
12
|
+
await this._demo(projectPath);
|
|
13
|
+
}
|
|
14
|
+
async _demo(projectPath) {
|
|
15
|
+
const { argv } = this.context;
|
|
16
|
+
const mode = 'local';
|
|
17
|
+
const flavor = argv.flavor || 'normal';
|
|
18
|
+
const configMeta = { flavor, mode };
|
|
19
|
+
if (!fse.existsSync(path.join(projectPath, '.vona'))) {
|
|
20
|
+
const configOptions = {
|
|
21
|
+
appDir: projectPath,
|
|
22
|
+
runtimeDir: '.vona',
|
|
23
|
+
workers: 1,
|
|
24
|
+
};
|
|
25
|
+
await generateVonaMeta(configMeta, configOptions);
|
|
26
|
+
}
|
|
27
|
+
await this._run(projectPath);
|
|
28
|
+
}
|
|
29
|
+
async _run(projectPath) {
|
|
30
|
+
// testFile
|
|
31
|
+
let testFile = path.join(import.meta.dirname, './toolsBin/demo.ts');
|
|
32
|
+
if (!fse.existsSync(testFile)) {
|
|
33
|
+
testFile = path.join(import.meta.dirname, './toolsBin/demo.js');
|
|
34
|
+
}
|
|
35
|
+
// run
|
|
36
|
+
let args = [];
|
|
37
|
+
args = args.concat(['--experimental-transform-types', '--loader=ts-node/esm', testFile, projectPath]);
|
|
38
|
+
const pos = process.argv.indexOf(':bin:demo');
|
|
39
|
+
if (pos > -1) {
|
|
40
|
+
args = args.concat(process.argv.slice(pos + 1));
|
|
41
|
+
}
|
|
42
|
+
await this.helper.spawnExe({
|
|
43
|
+
cmd: 'node',
|
|
44
|
+
args,
|
|
45
|
+
options: {
|
|
46
|
+
cwd: projectPath,
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { glob } from '@cabloy/module-glob';
|
|
2
|
+
import type { VonaMetaFlavor } from '@cabloy/module-info';
|
|
3
|
+
import { BeanCliBase } from '@cabloy/cli';
|
|
4
|
+
declare module '@cabloy/cli' {
|
|
5
|
+
interface ICommandArgv {
|
|
6
|
+
workers?: number;
|
|
7
|
+
flavor?: VonaMetaFlavor;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export declare class CliBinDev extends BeanCliBase {
|
|
11
|
+
execute(): Promise<void>;
|
|
12
|
+
_dev(projectPath: string): Promise<void>;
|
|
13
|
+
_run(projectPath: string, _modulesMeta: Awaited<ReturnType<typeof glob>>): Promise<unknown>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { BeanCliBase } from '@cabloy/cli';
|
|
3
|
+
import nodemon from 'nodemon';
|
|
4
|
+
import { rimraf } from 'rimraf';
|
|
5
|
+
import { generateVonaMeta } from "./toolsBin/generateVonaMeta.js";
|
|
6
|
+
export class CliBinDev extends BeanCliBase {
|
|
7
|
+
async execute() {
|
|
8
|
+
const { argv } = this.context;
|
|
9
|
+
// super
|
|
10
|
+
await super.execute();
|
|
11
|
+
const projectPath = argv.projectPath;
|
|
12
|
+
// run
|
|
13
|
+
await this._dev(projectPath);
|
|
14
|
+
}
|
|
15
|
+
async _dev(projectPath) {
|
|
16
|
+
const { argv } = this.context;
|
|
17
|
+
const mode = 'local';
|
|
18
|
+
const flavor = argv.flavor || 'normal';
|
|
19
|
+
const configMeta = { flavor, mode };
|
|
20
|
+
const configOptions = {
|
|
21
|
+
appDir: projectPath,
|
|
22
|
+
runtimeDir: '.vona',
|
|
23
|
+
workers: argv.workers,
|
|
24
|
+
};
|
|
25
|
+
const { modulesMeta } = await generateVonaMeta(configMeta, configOptions);
|
|
26
|
+
await this._run(projectPath, modulesMeta);
|
|
27
|
+
await rimraf(path.join(projectPath, '.vona'));
|
|
28
|
+
}
|
|
29
|
+
async _run(projectPath, _modulesMeta) {
|
|
30
|
+
return new Promise((resolve, _reject) => {
|
|
31
|
+
nodemon({
|
|
32
|
+
script: '.vona/bootstrap.ts',
|
|
33
|
+
cwd: projectPath,
|
|
34
|
+
exec: 'node',
|
|
35
|
+
execArgs: ['--experimental-transform-types', '--loader=ts-node/esm'],
|
|
36
|
+
// signal: 'SIGHUP',
|
|
37
|
+
});
|
|
38
|
+
nodemon.on('quit', () => {
|
|
39
|
+
resolve(undefined);
|
|
40
|
+
}).on('restart', files => {
|
|
41
|
+
// eslint-disable-next-line
|
|
42
|
+
console.log('App restarted due to: ', files);
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
// await this.helper.spawnExe({
|
|
46
|
+
// cmd: 'node',
|
|
47
|
+
// args: ['--experimental-transform-types', '--loader=ts-node/esm', '.vona/bootstrap.ts'],
|
|
48
|
+
// options: {
|
|
49
|
+
// cwd: projectPath,
|
|
50
|
+
// },
|
|
51
|
+
// });
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { glob } from '@cabloy/module-glob';
|
|
2
|
+
import type { VonaMetaFlavor } from '@cabloy/module-info';
|
|
3
|
+
import { BeanCliBase } from '@cabloy/cli';
|
|
4
|
+
declare module '@cabloy/cli' {
|
|
5
|
+
interface ICommandArgv {
|
|
6
|
+
coverage?: boolean;
|
|
7
|
+
flavor?: VonaMetaFlavor;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export declare class CliBinTest extends BeanCliBase {
|
|
11
|
+
execute(): Promise<void>;
|
|
12
|
+
_test(projectPath: string): Promise<void>;
|
|
13
|
+
_run(projectPath: string, modulesMeta: Awaited<ReturnType<typeof glob>>): Promise<void>;
|
|
14
|
+
_combineTestPatterns(projectPath: string, modulesMeta: Awaited<ReturnType<typeof glob>>): string[];
|
|
15
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { BeanCliBase } from '@cabloy/cli';
|
|
3
|
+
import fse from 'fs-extra';
|
|
4
|
+
import { rimraf } from 'rimraf';
|
|
5
|
+
import { generateVonaMeta } from "./toolsBin/generateVonaMeta.js";
|
|
6
|
+
export class CliBinTest extends BeanCliBase {
|
|
7
|
+
async execute() {
|
|
8
|
+
const { argv } = this.context;
|
|
9
|
+
// super
|
|
10
|
+
await super.execute();
|
|
11
|
+
const projectPath = argv.projectPath;
|
|
12
|
+
// test
|
|
13
|
+
await this._test(projectPath);
|
|
14
|
+
}
|
|
15
|
+
async _test(projectPath) {
|
|
16
|
+
const { argv } = this.context;
|
|
17
|
+
const mode = 'test';
|
|
18
|
+
const flavor = argv.flavor || 'normal';
|
|
19
|
+
const configMeta = { flavor, mode };
|
|
20
|
+
const configOptions = {
|
|
21
|
+
appDir: projectPath,
|
|
22
|
+
runtimeDir: '.vona',
|
|
23
|
+
workers: 1,
|
|
24
|
+
};
|
|
25
|
+
const { modulesMeta } = await generateVonaMeta(configMeta, configOptions);
|
|
26
|
+
await this._run(projectPath, modulesMeta);
|
|
27
|
+
await rimraf(path.join(projectPath, '.vona'));
|
|
28
|
+
}
|
|
29
|
+
async _run(projectPath, modulesMeta) {
|
|
30
|
+
const { argv } = this.context;
|
|
31
|
+
// globs
|
|
32
|
+
const patterns = this._combineTestPatterns(projectPath, modulesMeta);
|
|
33
|
+
// testFile
|
|
34
|
+
let testFile = path.join(import.meta.dirname, './toolsBin/test.ts');
|
|
35
|
+
if (!fse.existsSync(testFile)) {
|
|
36
|
+
testFile = path.join(import.meta.dirname, './toolsBin/test.js');
|
|
37
|
+
}
|
|
38
|
+
// run
|
|
39
|
+
let args = [];
|
|
40
|
+
if (argv.coverage) {
|
|
41
|
+
args.push('--experimental-test-coverage');
|
|
42
|
+
}
|
|
43
|
+
if (process.env.TEST_WHYISNODERUNNING === 'true') {
|
|
44
|
+
args.push('--import=why-is-node-running/include');
|
|
45
|
+
}
|
|
46
|
+
args = args.concat(['--experimental-transform-types', '--loader=ts-node/esm', testFile, projectPath, (!!argv.coverage).toString(), patterns.join(',')]);
|
|
47
|
+
await this.helper.spawnExe({
|
|
48
|
+
cmd: 'node',
|
|
49
|
+
args,
|
|
50
|
+
options: {
|
|
51
|
+
cwd: projectPath,
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
_combineTestPatterns(projectPath, modulesMeta) {
|
|
56
|
+
const patterns = [];
|
|
57
|
+
for (const moduleName in modulesMeta.modules) {
|
|
58
|
+
const module = modulesMeta.modules[moduleName];
|
|
59
|
+
const testDir = path.join(module.root, 'test');
|
|
60
|
+
if (fse.existsSync(testDir)) {
|
|
61
|
+
const relativePath = path.relative(projectPath, module.root);
|
|
62
|
+
patterns.push(`${relativePath}/test/**/*.ts`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return patterns;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -4,8 +4,7 @@ declare module '@cabloy/cli' {
|
|
|
4
4
|
force: boolean;
|
|
5
5
|
}
|
|
6
6
|
}
|
|
7
|
-
export declare class
|
|
7
|
+
export declare class CliBinTsc extends BeanCliBase {
|
|
8
8
|
execute(): Promise<void>;
|
|
9
|
-
|
|
9
|
+
_tsc(projectPath: string, force: boolean): Promise<void>;
|
|
10
10
|
}
|
|
11
|
-
//# sourceMappingURL=cli.tools.build.d.ts.map
|
|
@@ -1,41 +1,49 @@
|
|
|
1
1
|
import { BeanCliBase } from '@cabloy/cli';
|
|
2
|
-
export class
|
|
2
|
+
export class CliBinTsc extends BeanCliBase {
|
|
3
3
|
async execute() {
|
|
4
4
|
const { argv } = this.context;
|
|
5
5
|
// super
|
|
6
6
|
await super.execute();
|
|
7
7
|
const projectPath = argv.projectPath;
|
|
8
8
|
const force = argv.force;
|
|
9
|
-
await this.
|
|
9
|
+
await this._tsc(projectPath, force);
|
|
10
10
|
}
|
|
11
|
-
async
|
|
11
|
+
async _tsc(projectPath, force) {
|
|
12
12
|
// count
|
|
13
|
-
const count =
|
|
13
|
+
const count = 1 +
|
|
14
|
+
Object.keys(this.modulesMeta.suites).length + this.modulesMeta.modulesArray.filter(item => !item.suite).length;
|
|
14
15
|
// begin
|
|
15
16
|
let counter = 0;
|
|
16
17
|
const timeBegin = new Date();
|
|
18
|
+
// eslint-disable-next-line
|
|
17
19
|
console.log('===> build begin');
|
|
18
20
|
// args
|
|
19
21
|
const tscArgs = ['-b'];
|
|
20
22
|
if (force) {
|
|
21
23
|
tscArgs.push('--force');
|
|
22
24
|
}
|
|
25
|
+
// tsc: project
|
|
26
|
+
// eslint-disable-next-line
|
|
27
|
+
console.log(`===> ${++counter}/${count} project`);
|
|
28
|
+
await this.helper.processHelper.tsc(tscArgs, { cwd: projectPath });
|
|
23
29
|
// suites
|
|
24
30
|
for (const key in this.modulesMeta.suites) {
|
|
25
31
|
const suite = this.modulesMeta.suites[key];
|
|
32
|
+
// eslint-disable-next-line
|
|
26
33
|
console.log(`===> ${++counter}/${count} suite: ${suite.info.originalName}`);
|
|
27
34
|
await this.helper.processHelper.tsc(tscArgs, { cwd: suite.root });
|
|
28
35
|
}
|
|
29
36
|
// modules
|
|
30
37
|
for (const module of this.modulesMeta.modulesArray) {
|
|
31
38
|
if (!module.suite) {
|
|
39
|
+
// eslint-disable-next-line
|
|
32
40
|
console.log(`===> ${++counter}/${count} module: ${module.info.originalName}`);
|
|
33
41
|
await this.helper.processHelper.tsc(tscArgs, { cwd: module.root });
|
|
34
42
|
}
|
|
35
43
|
}
|
|
36
44
|
// end
|
|
37
45
|
const timeEnd = new Date();
|
|
46
|
+
// eslint-disable-next-line
|
|
38
47
|
console.log(`===> build end: ${(timeEnd.valueOf() - timeBegin.valueOf()) / 1000}s`);
|
|
39
48
|
}
|
|
40
49
|
}
|
|
41
|
-
//# sourceMappingURL=cli.tools.build.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import type { IModuleInfo } from '@cabloy/module-info';
|
|
1
2
|
import { BeanCliBase } from '@cabloy/cli';
|
|
2
|
-
import { IModuleInfo } from '@cabloy/module-info';
|
|
3
3
|
declare module '@cabloy/cli' {
|
|
4
4
|
interface ICommandArgv {
|
|
5
5
|
module: string;
|
|
@@ -8,11 +8,10 @@ declare module '@cabloy/cli' {
|
|
|
8
8
|
sceneNameCapitalize: string;
|
|
9
9
|
beanName: string;
|
|
10
10
|
beanNameCapitalize: string;
|
|
11
|
-
|
|
12
|
-
beanOptions: string;
|
|
11
|
+
moduleResourceName: string;
|
|
13
12
|
}
|
|
14
13
|
}
|
|
15
14
|
export declare class CliCreateBean extends BeanCliBase {
|
|
16
15
|
execute(): Promise<void>;
|
|
16
|
+
private _getBoilerplatesOrSnippets;
|
|
17
17
|
}
|
|
18
|
-
//# sourceMappingURL=cli.create.bean.d.ts.map
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
1
3
|
import { BeanCliBase } from '@cabloy/cli';
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import { __ThisSetName__ } from '../this.js';
|
|
5
|
-
const __decorators = {
|
|
6
|
-
virtual: 'Virtual',
|
|
7
|
-
aop: 'Aop',
|
|
8
|
-
};
|
|
4
|
+
import { getOnionMetasMeta, getOnionScenesMeta } from '@cabloy/module-info';
|
|
5
|
+
import { __ThisSetName__ } from "../this.js";
|
|
9
6
|
export class CliCreateBean extends BeanCliBase {
|
|
10
7
|
async execute() {
|
|
11
8
|
const { argv } = this.context;
|
|
@@ -22,40 +19,57 @@ export class CliCreateBean extends BeanCliBase {
|
|
|
22
19
|
// target dir
|
|
23
20
|
const targetDir = await this.helper.ensureDir(_module.root);
|
|
24
21
|
// scene name
|
|
25
|
-
const sceneName = argv.sceneName;
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
const sceneName = argv.sceneName;
|
|
23
|
+
argv.sceneNameCapitalize = this.helper.firstCharToUpperCase(sceneName);
|
|
24
|
+
// scene meta
|
|
25
|
+
// onionScenesMeta
|
|
26
|
+
const onionScenesMeta = getOnionScenesMeta(this.modulesMeta.modules);
|
|
27
|
+
const onionSceneMeta = onionScenesMeta[sceneName];
|
|
28
28
|
// bean name
|
|
29
29
|
const beanName = argv.beanName;
|
|
30
30
|
argv.beanNameCapitalize = this.helper.firstCharToUpperCase(beanName);
|
|
31
|
-
//
|
|
32
|
-
argv.
|
|
33
|
-
// beanOptions
|
|
34
|
-
if (sceneName === 'aop') {
|
|
35
|
-
argv.beanOptions = "{ match: 'some-bean-name' }";
|
|
36
|
-
}
|
|
37
|
-
else if (sceneName === 'bean') {
|
|
38
|
-
argv.beanOptions = '';
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
argv.beanOptions = `{ scene: '${sceneName}' }`;
|
|
42
|
-
}
|
|
31
|
+
// moduleResourceName
|
|
32
|
+
argv.moduleResourceName = this.helper.combineModuleNameAndResource(argv.moduleInfo.relativeName, argv.beanName);
|
|
43
33
|
// directory
|
|
44
|
-
const beanDir = path.join(targetDir, 'src/bean');
|
|
45
|
-
const beanFile = path.join(beanDir, `${sceneName}.${beanName}.ts`);
|
|
34
|
+
const beanDir = path.join(targetDir, onionSceneMeta.sceneIsolate ? `src/${sceneName}` : 'src/bean');
|
|
35
|
+
const beanFile = path.join(beanDir, onionSceneMeta.sceneIsolate ? `${beanName}.ts` : `${sceneName}.${beanName}.ts`);
|
|
46
36
|
if (fs.existsSync(beanFile)) {
|
|
47
37
|
throw new Error(`${sceneName} bean exists: ${beanName}`);
|
|
48
38
|
}
|
|
49
39
|
await this.helper.ensureDir(beanDir);
|
|
50
|
-
//
|
|
40
|
+
// snippets/boilerplate
|
|
41
|
+
const snippets = this._getBoilerplatesOrSnippets('snippets');
|
|
42
|
+
const boilerplates = this._getBoilerplatesOrSnippets('boilerplate');
|
|
43
|
+
const snippetsName = snippets[`${sceneName}:${argv.beanName}`] || snippets[sceneName];
|
|
44
|
+
const boilerplateName = boilerplates[`${sceneName}:${argv.beanName}`] || boilerplates[sceneName];
|
|
45
|
+
// render
|
|
51
46
|
await this.template.renderBoilerplateAndSnippets({
|
|
52
47
|
targetDir: beanDir,
|
|
53
48
|
setName: __ThisSetName__,
|
|
54
|
-
snippetsPath:
|
|
55
|
-
boilerplatePath:
|
|
49
|
+
snippetsPath: snippetsName,
|
|
50
|
+
boilerplatePath: boilerplateName,
|
|
56
51
|
});
|
|
57
52
|
// tools.metadata
|
|
58
53
|
await this.helper.invokeCli([':tools:metadata', moduleName], { cwd: argv.projectPath });
|
|
59
54
|
}
|
|
55
|
+
_getBoilerplatesOrSnippets(type) {
|
|
56
|
+
const result = {};
|
|
57
|
+
// scenes
|
|
58
|
+
const onionScenesMeta = getOnionScenesMeta(this.modulesMeta.modules);
|
|
59
|
+
for (const sceneName in onionScenesMeta) {
|
|
60
|
+
const onionSceneMeta = onionScenesMeta[sceneName];
|
|
61
|
+
if (onionSceneMeta[type]) {
|
|
62
|
+
result[sceneName] = path.join(onionSceneMeta.module.root, onionSceneMeta[type]);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// metas
|
|
66
|
+
const onionMetasMeta = getOnionMetasMeta(this.modulesMeta.modules);
|
|
67
|
+
for (const sceneName in onionMetasMeta) {
|
|
68
|
+
const onionMetaMeta = onionMetasMeta[sceneName];
|
|
69
|
+
if (onionMetaMeta[type]) {
|
|
70
|
+
result[`meta:${sceneName}`] = path.join(onionMetaMeta.module.root, onionMetaMeta[type]);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return result;
|
|
74
|
+
}
|
|
60
75
|
}
|
|
61
|
-
//# sourceMappingURL=cli.create.bean.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import type { IModuleInfo, ISuite } from '@cabloy/module-info';
|
|
1
2
|
import { BeanCliBase } from '@cabloy/cli';
|
|
2
|
-
import { IModuleInfo, ISuite } from '@cabloy/module-info';
|
|
3
3
|
declare module '@cabloy/cli' {
|
|
4
4
|
interface ICommandArgv {
|
|
5
5
|
suite: string;
|
|
@@ -13,4 +13,3 @@ declare module '@cabloy/cli' {
|
|
|
13
13
|
export declare class CliCreateModule extends BeanCliBase {
|
|
14
14
|
execute(): Promise<void>;
|
|
15
15
|
}
|
|
16
|
-
//# sourceMappingURL=cli.create.module.d.ts.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
1
3
|
import { BeanCliBase } from '@cabloy/cli';
|
|
2
|
-
import
|
|
3
|
-
import path from 'path';
|
|
4
|
-
import { __ThisSetName__ } from '../this.js';
|
|
4
|
+
import { __ThisSetName__ } from "../this.js";
|
|
5
5
|
export class CliCreateModule extends BeanCliBase {
|
|
6
6
|
async execute() {
|
|
7
7
|
const { argv } = this.context;
|
|
@@ -67,4 +67,3 @@ export class CliCreateModule extends BeanCliBase {
|
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
|
-
//# sourceMappingURL=cli.create.module.js.map
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { CmdOptions } from '@cabloy/cli';
|
|
2
|
+
import { BeanCliBase } from '@cabloy/cli';
|
|
3
|
+
import urllib from 'urllib';
|
|
4
|
+
declare module '@cabloy/cli' {
|
|
5
|
+
interface ICommandArgv {
|
|
6
|
+
force: boolean;
|
|
7
|
+
template: string;
|
|
8
|
+
SERVER_KEYS: string;
|
|
9
|
+
SERVER_KEYS_PROD: string;
|
|
10
|
+
DATABASE_CLIENT_MYSQL_USER: string;
|
|
11
|
+
DATABASE_CLIENT_MYSQL_PASSWORD: string;
|
|
12
|
+
DATABASE_CLIENT_MYSQL_PASSWORD_ROOT: string;
|
|
13
|
+
DATABASE_CLIENT_PG_USER: string;
|
|
14
|
+
DATABASE_CLIENT_PG_PASSWORD: string;
|
|
15
|
+
DATABASE_CLIENT_PG_PASSWORD_ROOT: string;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export declare class CliCreateProject extends BeanCliBase {
|
|
19
|
+
httpClient: typeof urllib;
|
|
20
|
+
constructor(options: CmdOptions);
|
|
21
|
+
execute(): Promise<void>;
|
|
22
|
+
printUsage(targetDir: string): Promise<void>;
|
|
23
|
+
downloadBoilerplate(packageName: string): Promise<string>;
|
|
24
|
+
getPackageInfo(packageName: string, withFallback: boolean): Promise<any>;
|
|
25
|
+
curl(url: string, options: any): Promise<import("urllib").HttpClientResponse<any>>;
|
|
26
|
+
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import { createRequire } from 'node:module';
|
|
3
|
+
import os from 'node:os';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { BeanCliBase } from '@cabloy/cli';
|
|
6
|
+
import compressing from 'compressing';
|
|
7
|
+
import fse from 'fs-extra';
|
|
8
|
+
import randomize from 'randomatic';
|
|
9
|
+
import { rimraf } from 'rimraf';
|
|
10
|
+
import urllib from 'urllib';
|
|
11
|
+
import * as uuid from 'uuid';
|
|
12
|
+
import { __ThisSetName__ } from "../this.js";
|
|
13
|
+
export class CliCreateProject extends BeanCliBase {
|
|
14
|
+
httpClient;
|
|
15
|
+
constructor(options) {
|
|
16
|
+
super(options);
|
|
17
|
+
this.httpClient = urllib;
|
|
18
|
+
}
|
|
19
|
+
async execute() {
|
|
20
|
+
const { argv } = this.context;
|
|
21
|
+
// super
|
|
22
|
+
await super.execute();
|
|
23
|
+
// project name
|
|
24
|
+
const projectName = argv.name;
|
|
25
|
+
// target dir
|
|
26
|
+
const targetDir = path.join(argv.projectPath, projectName);
|
|
27
|
+
if (!argv.force && fs.existsSync(targetDir)) {
|
|
28
|
+
throw new Error(`project exists: ${projectName}`);
|
|
29
|
+
}
|
|
30
|
+
fse.ensureDirSync(targetDir);
|
|
31
|
+
// vars
|
|
32
|
+
argv.SERVER_KEYS = `vona_${uuid.v4()}_${Date.now()}_${random(100, 10000)}`;
|
|
33
|
+
argv.SERVER_KEYS_PROD = `vona_${uuid.v4()}_${Date.now()}_${random(100, 10000)}`;
|
|
34
|
+
argv.DATABASE_CLIENT_MYSQL_USER = 'web_user';
|
|
35
|
+
argv.DATABASE_CLIENT_MYSQL_PASSWORD = randomize('*', 16, { exclude: '\\\'"$' });
|
|
36
|
+
argv.DATABASE_CLIENT_MYSQL_PASSWORD_ROOT = randomize('*', 16, { exclude: '\\\'"$' });
|
|
37
|
+
argv.DATABASE_CLIENT_PG_USER = 'web_user';
|
|
38
|
+
argv.DATABASE_CLIENT_PG_PASSWORD = randomize('*', 16, { exclude: '\\\'"$' });
|
|
39
|
+
argv.DATABASE_CLIENT_PG_PASSWORD_ROOT = randomize('*', 16, { exclude: '\\\'"$' });
|
|
40
|
+
// template
|
|
41
|
+
const template = argv.template;
|
|
42
|
+
// render project boilerplate
|
|
43
|
+
await this.template.renderBoilerplateAndSnippets({
|
|
44
|
+
targetDir,
|
|
45
|
+
setName: __ThisSetName__,
|
|
46
|
+
snippetsPath: null,
|
|
47
|
+
boilerplatePath: `create/project/${template}/boilerplate`,
|
|
48
|
+
});
|
|
49
|
+
// copy package.json
|
|
50
|
+
fse.copyFileSync(path.join(targetDir, 'package.original.json'), path.join(targetDir, 'package.json'));
|
|
51
|
+
// npm run init
|
|
52
|
+
await this.helper.spawnCmd({
|
|
53
|
+
cmd: 'npm',
|
|
54
|
+
args: ['run', 'init'],
|
|
55
|
+
options: { cwd: targetDir },
|
|
56
|
+
});
|
|
57
|
+
// done
|
|
58
|
+
await this.printUsage(targetDir);
|
|
59
|
+
}
|
|
60
|
+
async printUsage(targetDir) {
|
|
61
|
+
await this.console.log(`usage:
|
|
62
|
+
- cd ${targetDir}
|
|
63
|
+
- pnpm install
|
|
64
|
+
- npm run dev
|
|
65
|
+
- npm run test
|
|
66
|
+
- npm run build
|
|
67
|
+
- npm run start
|
|
68
|
+
`);
|
|
69
|
+
}
|
|
70
|
+
async downloadBoilerplate(packageName) {
|
|
71
|
+
const result = await this.getPackageInfo(packageName, false);
|
|
72
|
+
const tgzUrl = result.dist.tarball;
|
|
73
|
+
await this.console.log(`downloading ${tgzUrl}`);
|
|
74
|
+
const saveDir = path.join(os.tmpdir(), 'zova-project-boilerplate');
|
|
75
|
+
await rimraf(saveDir);
|
|
76
|
+
const response = await this.curl(tgzUrl, { streaming: true, followRedirect: true });
|
|
77
|
+
await compressing.tgz.uncompress(response.res, saveDir);
|
|
78
|
+
await this.console.log(`extract to ${saveDir}`);
|
|
79
|
+
return path.join(saveDir, '/package');
|
|
80
|
+
}
|
|
81
|
+
async getPackageInfo(packageName, withFallback) {
|
|
82
|
+
await this.console.log(`fetching npm info of ${packageName}`);
|
|
83
|
+
try {
|
|
84
|
+
const registry = await this.helper.getRegistry();
|
|
85
|
+
const result = await this.curl(`${registry}${packageName}/latest`, {
|
|
86
|
+
dataType: 'json',
|
|
87
|
+
followRedirect: true,
|
|
88
|
+
maxRedirects: 5,
|
|
89
|
+
});
|
|
90
|
+
if (result.status !== 200) {
|
|
91
|
+
const message = `npm info ${packageName} got error: ${result.status}, ${result.data.reason}`;
|
|
92
|
+
throw new Error(message);
|
|
93
|
+
}
|
|
94
|
+
return result.data;
|
|
95
|
+
}
|
|
96
|
+
catch (err) {
|
|
97
|
+
if (withFallback) {
|
|
98
|
+
await this.console.log(`use fallback from ${packageName}`);
|
|
99
|
+
const require = createRequire(import.meta.url);
|
|
100
|
+
return require(`${packageName}/package.json`);
|
|
101
|
+
}
|
|
102
|
+
throw err;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
async curl(url, options) {
|
|
106
|
+
options = options || {};
|
|
107
|
+
if (!options.timeout) {
|
|
108
|
+
options.timeout = 30000;
|
|
109
|
+
}
|
|
110
|
+
return await this.httpClient.request(url, options);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
function random(start, end) {
|
|
114
|
+
return Math.floor(Math.random() * (end - start) + start);
|
|
115
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import type { IModuleInfo } from '@cabloy/module-info';
|
|
1
2
|
import { BeanCliBase } from '@cabloy/cli';
|
|
2
|
-
import { IModuleInfo } from '@cabloy/module-info';
|
|
3
3
|
declare module '@cabloy/cli' {
|
|
4
4
|
interface ICommandArgv {
|
|
5
5
|
name: string;
|
|
@@ -9,4 +9,3 @@ declare module '@cabloy/cli' {
|
|
|
9
9
|
export declare class CliCreateSuite extends BeanCliBase {
|
|
10
10
|
execute(): Promise<void>;
|
|
11
11
|
}
|
|
12
|
-
//# sourceMappingURL=cli.create.suite.d.ts.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
1
3
|
import { BeanCliBase } from '@cabloy/cli';
|
|
2
|
-
import
|
|
3
|
-
import path from 'path';
|
|
4
|
-
import { __ThisSetName__ } from '../this.js';
|
|
4
|
+
import { __ThisSetName__ } from "../this.js";
|
|
5
5
|
export class CliCreateSuite extends BeanCliBase {
|
|
6
6
|
async execute() {
|
|
7
7
|
const { argv } = this.context;
|
|
@@ -26,12 +26,8 @@ export class CliCreateSuite extends BeanCliBase {
|
|
|
26
26
|
}
|
|
27
27
|
targetDir = await this.helper.ensureDir(targetDir);
|
|
28
28
|
// templateDir
|
|
29
|
-
const templateDir = this.template.resolveTemplatePath(
|
|
30
|
-
setName: __ThisSetName__,
|
|
31
|
-
path: 'create/suite',
|
|
32
|
-
});
|
|
29
|
+
const templateDir = this.template.resolveTemplatePath(__ThisSetName__, 'create/suite');
|
|
33
30
|
// render
|
|
34
|
-
await this.template.renderDir(
|
|
31
|
+
await this.template.renderDir(targetDir, templateDir);
|
|
35
32
|
}
|
|
36
33
|
}
|
|
37
|
-
//# sourceMappingURL=cli.create.suite.js.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { NameMeta } from '@cabloy/cli';
|
|
2
|
+
import type { IModuleInfo } from '@cabloy/module-info';
|
|
3
|
+
import { BeanCliBase } from '@cabloy/cli';
|
|
4
|
+
declare module '@cabloy/cli' {
|
|
5
|
+
interface ICommandArgv {
|
|
6
|
+
module: string;
|
|
7
|
+
moduleInfo: IModuleInfo;
|
|
8
|
+
name: string;
|
|
9
|
+
nameCapitalize: string;
|
|
10
|
+
nameMeta: NameMeta;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export declare class CliCreateTest extends BeanCliBase {
|
|
14
|
+
execute(): Promise<void>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { BeanCliBase } from '@cabloy/cli';
|
|
4
|
+
import { __ThisSetName__ } from "../this.js";
|
|
5
|
+
export class CliCreateTest extends BeanCliBase {
|
|
6
|
+
async execute() {
|
|
7
|
+
const { argv } = this.context;
|
|
8
|
+
// super
|
|
9
|
+
await super.execute();
|
|
10
|
+
// module name/info
|
|
11
|
+
const moduleName = argv.module;
|
|
12
|
+
argv.moduleInfo = this.helper.parseModuleInfo(moduleName);
|
|
13
|
+
// check if exists
|
|
14
|
+
const _module = this.helper.findModule(moduleName);
|
|
15
|
+
if (!_module) {
|
|
16
|
+
throw new Error(`module does not exist: ${moduleName}`);
|
|
17
|
+
}
|
|
18
|
+
// target dir
|
|
19
|
+
const targetDir = await this.helper.ensureDir(_module.root);
|
|
20
|
+
// name
|
|
21
|
+
argv.nameCapitalize = this.helper.firstCharToUpperCase(argv.name);
|
|
22
|
+
// nameMeta
|
|
23
|
+
argv.nameMeta = this.helper.parseNameMeta(argv.name, ['test']);
|
|
24
|
+
// directory
|
|
25
|
+
const testDir = path.join(targetDir, 'test');
|
|
26
|
+
const testFile = path.join(testDir, `${argv.name}.test.ts`);
|
|
27
|
+
if (fs.existsSync(testFile)) {
|
|
28
|
+
throw new Error(`test exists: ${testFile}`);
|
|
29
|
+
}
|
|
30
|
+
await this.helper.ensureDir(testDir);
|
|
31
|
+
// render boilerplate
|
|
32
|
+
await this.template.renderBoilerplateAndSnippets({
|
|
33
|
+
targetDir: testDir,
|
|
34
|
+
setName: __ThisSetName__,
|
|
35
|
+
snippetsPath: null,
|
|
36
|
+
boilerplatePath: 'create/test/boilerplate',
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|