@tsed/cli-plugin-typeorm 3.20.3 → 3.20.6
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.
|
@@ -7,6 +7,7 @@ const cli_1 = require("@tsed/cli");
|
|
|
7
7
|
const cli_core_1 = require("@tsed/cli-core");
|
|
8
8
|
const di_1 = require("@tsed/di");
|
|
9
9
|
const templateDir_1 = require("../utils/templateDir");
|
|
10
|
+
const change_case_1 = require("change-case");
|
|
10
11
|
let TypeORMGenerateHook = TypeORMGenerateHook_1 = class TypeORMGenerateHook {
|
|
11
12
|
constructor(providersInfoService) {
|
|
12
13
|
this.providersInfoService = providersInfoService;
|
|
@@ -49,29 +50,32 @@ let TypeORMGenerateHook = TypeORMGenerateHook_1 = class TypeORMGenerateHook {
|
|
|
49
50
|
generateDataSourceTasks(ctx) {
|
|
50
51
|
var _a;
|
|
51
52
|
const { typeormDataSource, symbolPath, name } = ctx;
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
this.projectPackageJson.addDependencies((connection === null || connection === void 0 ? void 0 : connection.value.dependencies) || {});
|
|
53
|
+
if (!typeormDataSource) {
|
|
54
|
+
return [];
|
|
55
55
|
}
|
|
56
|
+
const databaseType = cli_1.FEATURES_TYPEORM_CONNECTION_TYPES.find((item) => item.value.type === typeormDataSource);
|
|
56
57
|
const database = typeormDataSource.split(":").at(-1);
|
|
58
|
+
if ((_a = databaseType === null || databaseType === void 0 ? void 0 : databaseType.value) === null || _a === void 0 ? void 0 : _a.dependencies) {
|
|
59
|
+
this.projectPackageJson.addDependencies((databaseType === null || databaseType === void 0 ? void 0 : databaseType.value.dependencies) || {});
|
|
60
|
+
}
|
|
61
|
+
const symbolName = ctx.symbolName.replace("Datasource", "DataSource");
|
|
57
62
|
return [
|
|
58
63
|
{
|
|
59
|
-
title: `Generate TypeORM
|
|
60
|
-
task: () => {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
64
|
+
title: `Generate TypeORM datasource file to '${symbolPath}.ts'`,
|
|
65
|
+
task: () => this.srcRenderService.render("datasource.hbs", {
|
|
66
|
+
name,
|
|
67
|
+
database,
|
|
68
|
+
symbolName,
|
|
69
|
+
tokenName: change_case_1.constantCase(symbolName)
|
|
70
|
+
}, {
|
|
71
|
+
templateDir: templateDir_1.TEMPLATE_DIR,
|
|
72
|
+
output: `${ctx.symbolPath}.ts`,
|
|
73
|
+
rootDir: this.srcRenderService.rootDir
|
|
74
|
+
})
|
|
71
75
|
},
|
|
72
76
|
{
|
|
73
77
|
title: "Generate docker-compose configuration",
|
|
74
|
-
task:
|
|
78
|
+
task: () => this.cliDockerComposeYaml.addDatabaseService(name, database)
|
|
75
79
|
}
|
|
76
80
|
];
|
|
77
81
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypeORMGenerateHook.js","sourceRoot":"","sources":["../../src/hooks/TypeORMGenerateHook.ts"],"names":[],"mappings":";;;;;AAAA,mCAAsG;AACtG,6CAA6H;AAC7H,iCAAoC;AACpC,sDAAkD;
|
|
1
|
+
{"version":3,"file":"TypeORMGenerateHook.js","sourceRoot":"","sources":["../../src/hooks/TypeORMGenerateHook.ts"],"names":[],"mappings":";;;;;AAAA,mCAAsG;AACtG,6CAA6H;AAC7H,iCAAoC;AACpC,sDAAkD;AAClD,6CAAyC;AAQzC,IAAa,mBAAmB,2BAAhC,MAAa,mBAAmB;IAU9B,YAAoB,oBAA0C;QAA1C,yBAAoB,GAApB,oBAAoB,CAAsB;QAC5D,oBAAoB,CAAC,GAAG,CACtB;YACE,IAAI,EAAE,oBAAoB;YAC1B,KAAK,EAAE,oBAAoB;YAC3B,KAAK,EAAE,2BAA2B;SACnC,EACD,qBAAmB,CACpB,CAAC;IACJ,CAAC;IAGD,KAAK,CAAC,gBAAgB;QACpB,MAAM,IAAI,GAAG,uCAAiC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAC1D,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;aACvB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO;YACL;gBACE,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,mBAAmB;gBACzB,OAAO,EAAE,sBAAsB;gBAC/B,IAAI,CAAC,KAAU;oBACb,OAAO,KAAK,CAAC,IAAI,KAAK,oBAAoB,CAAC;gBAC7C,CAAC;gBACD,MAAM,EAAE,KAAK,EAAE,KAAU,EAAE,OAAe,EAAE,EAAE;oBAC5C,IAAI,OAAO,EAAE;wBACX,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;qBACvF;oBAED,OAAO,IAAI,CAAC;gBACd,CAAC;aACF;SACF,CAAC;IACJ,CAAC;IAGD,cAAc,CAAC,GAA2B;QACxC,IAAI,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,qBAAmB,CAAC,EAAE;YACzE,OAAO,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;SAC1C;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,uBAAuB,CAAC,GAA2B;;QACjD,MAAM,EAAC,iBAAiB,EAAE,UAAU,EAAE,IAAI,EAAC,GAAG,GAAG,CAAC;QAElD,IAAI,CAAC,iBAAiB,EAAE;YACtB,OAAO,EAAE,CAAC;SACX;QAED,MAAM,YAAY,GAAG,uCAAiC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;QAC7G,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC;QAEtD,IAAI,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,KAAK,0CAAE,YAAY,EAAE;YACrC,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,KAAK,CAAC,YAAY,KAAI,EAAE,CAAC,CAAC;SACjF;QAED,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAEtE,OAAO;YACL;gBACE,KAAK,EAAE,wCAAwC,UAAU,MAAM;gBAC/D,IAAI,EAAE,GAAG,EAAE,CACT,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAC1B,gBAAgB,EAChB;oBACE,IAAI;oBACJ,QAAQ;oBACR,UAAU;oBACV,SAAS,EAAE,0BAAY,CAAC,UAAU,CAAC;iBACpC,EACD;oBACE,WAAW,EAAE,0BAAY;oBACzB,MAAM,EAAE,GAAG,GAAG,CAAC,UAAU,KAAK;oBAC9B,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO;iBACvC,CACF;aACJ;YACD;gBACE,KAAK,EAAE,uCAAuC;gBAC9C,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC;aACzE;SACF,CAAC;IACJ,CAAC;CACF,CAAA;AAjGC;IADC,iBAAM,EAAE;sCACqB,6BAAkB;+DAAC;AAGjD;IADC,iBAAM,EAAE;sCACmB,6BAAkB;6DAAC;AAG/C;IADC,iBAAM,EAAE;sCACuB,+BAAoB;iEAAC;AAcrD;IADC,mBAAQ,CAAC,UAAU,CAAC;;;;2DA0BpB;AAGD;IADC,iBAAM,CAAC,UAAU,CAAC;;;;yDAOlB;AAxDU,mBAAmB;IAD/B,eAAU,EAAE;6CAW+B,0BAAoB;GAVnD,mBAAmB,CAmG/B;AAnGY,kDAAmB","sourcesContent":["import {FEATURES_TYPEORM_CONNECTION_TYPES, GenerateCmdContext, ProvidersInfoService} from \"@tsed/cli\";\nimport {CliDockerComposeYaml, Inject, OnExec, OnPrompt, ProjectPackageJson, SrcRendererService, Tasks} from \"@tsed/cli-core\";\nimport {Injectable} from \"@tsed/di\";\nimport {TEMPLATE_DIR} from \"../utils/templateDir\";\nimport {constantCase} from \"change-case\";\n\nexport interface TypeORMGenerateOptions extends GenerateCmdContext {\n typeormDataSource: string;\n datasourceName: string;\n}\n\n@Injectable()\nexport class TypeORMGenerateHook {\n @Inject()\n protected projectPackageJson: ProjectPackageJson;\n\n @Inject()\n protected srcRenderService: SrcRendererService;\n\n @Inject()\n protected cliDockerComposeYaml: CliDockerComposeYaml;\n\n constructor(private providersInfoService: ProvidersInfoService) {\n providersInfoService.add(\n {\n name: \"TypeORM Datasource\",\n value: \"typeorm:datasource\",\n model: \"{{symbolName}}.datasource\"\n },\n TypeORMGenerateHook\n );\n }\n\n @OnPrompt(\"generate\")\n async onGeneratePrompt() {\n const list = FEATURES_TYPEORM_CONNECTION_TYPES.map((item) => {\n return {\n name: item.name,\n value: item.value.type\n };\n });\n\n return [\n {\n type: \"autocomplete\",\n name: \"typeormDataSource\",\n message: \"Which database type?\",\n when(state: any) {\n return state.type === \"typeorm:datasource\";\n },\n source: async (state: any, keyword: string) => {\n if (keyword) {\n return list.filter((item) => item.name.toLowerCase().includes(keyword.toLowerCase()));\n }\n\n return list;\n }\n }\n ];\n }\n\n @OnExec(\"generate\")\n onGenerateExec(ctx: TypeORMGenerateOptions): Tasks {\n if (this.providersInfoService.isMyProvider(ctx.type, TypeORMGenerateHook)) {\n return this.generateDataSourceTasks(ctx);\n }\n\n return [];\n }\n\n generateDataSourceTasks(ctx: TypeORMGenerateOptions) {\n const {typeormDataSource, symbolPath, name} = ctx;\n\n if (!typeormDataSource) {\n return [];\n }\n\n const databaseType = FEATURES_TYPEORM_CONNECTION_TYPES.find((item) => item.value.type === typeormDataSource);\n const database = typeormDataSource.split(\":\").at(-1)!;\n\n if (databaseType?.value?.dependencies) {\n this.projectPackageJson.addDependencies(databaseType?.value.dependencies || {});\n }\n\n const symbolName = ctx.symbolName.replace(\"Datasource\", \"DataSource\");\n\n return [\n {\n title: `Generate TypeORM datasource file to '${symbolPath}.ts'`,\n task: () =>\n this.srcRenderService.render(\n \"datasource.hbs\",\n {\n name,\n database,\n symbolName,\n tokenName: constantCase(symbolName)\n },\n {\n templateDir: TEMPLATE_DIR,\n output: `${ctx.symbolPath}.ts`,\n rootDir: this.srcRenderService.rootDir\n }\n )\n },\n {\n title: \"Generate docker-compose configuration\",\n task: () => this.cliDockerComposeYaml.addDatabaseService(name, database)\n }\n ];\n }\n}\n"]}
|
|
@@ -11,6 +11,7 @@ function getDatabase(ctx) {
|
|
|
11
11
|
}
|
|
12
12
|
let TypeORMInitHook = class TypeORMInitHook {
|
|
13
13
|
onExec(ctx) {
|
|
14
|
+
var _a;
|
|
14
15
|
this.addScripts();
|
|
15
16
|
this.addDependencies(ctx);
|
|
16
17
|
this.addDevDependencies(ctx);
|
|
@@ -21,7 +22,8 @@ let TypeORMInitHook = class TypeORMInitHook {
|
|
|
21
22
|
return this.cliService.getTasks("generate", {
|
|
22
23
|
...ctx,
|
|
23
24
|
type: "typeorm:dataSource",
|
|
24
|
-
name: change_case_1.pascalCase(database)
|
|
25
|
+
name: change_case_1.pascalCase(database),
|
|
26
|
+
typeormDataSource: (_a = ctx.features.find(({ type }) => type.startsWith("typeorm:"))) === null || _a === void 0 ? void 0 : _a.type
|
|
25
27
|
});
|
|
26
28
|
}
|
|
27
29
|
addScripts() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypeORMInitHook.js","sourceRoot":"","sources":["../../src/hooks/TypeORMInitHook.ts"],"names":[],"mappings":";;;;AACA,6CAQwB;AACxB,iCAAoC;AACpC,6CAAuC;AAEvC,SAAS,WAAW,CAAC,GAAmB;;IACtC,OAAO,CAAA,MAAA,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,0CAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,KAAI,EAAE,CAAC;AAC5F,CAAC;AAGD,IAAa,eAAe,GAA5B,MAAa,eAAe;IAiB1B,MAAM,CAAC,GAAmB
|
|
1
|
+
{"version":3,"file":"TypeORMInitHook.js","sourceRoot":"","sources":["../../src/hooks/TypeORMInitHook.ts"],"names":[],"mappings":";;;;AACA,6CAQwB;AACxB,iCAAoC;AACpC,6CAAuC;AAEvC,SAAS,WAAW,CAAC,GAAmB;;IACtC,OAAO,CAAA,MAAA,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,0CAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,KAAI,EAAE,CAAC;AAC5F,CAAC;AAGD,IAAa,eAAe,GAA5B,MAAa,eAAe;IAiB1B,MAAM,CAAC,GAAmB;;QACxB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAE7B,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAElC,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO,EAAE,CAAC;SACX;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,EAAE;YAC1C,GAAG,GAAG;YACN,IAAI,EAAE,oBAAoB;YAC1B,IAAI,EAAE,wBAAU,CAAC,QAAQ,CAAC;YAC1B,iBAAiB,EAAE,MAAA,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,0CAAE,IAAI;SACpF,CAAC,CAAC;IACL,CAAC;IAED,UAAU;QACR,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;YAC1B,OAAO,EAAE,0BAA0B;SACpC,CAAC,CAAC;IACL,CAAC;IAED,eAAe,CAAC,GAAmB;QACjC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAC5C,CAAC;IAED,kBAAkB,CAAC,GAAmB;QACpC,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAC/C,CAAC;CACF,CAAA;AA/CC;IADC,iBAAM,EAAE;sCACa,qBAAU;mDAAC;AAGjC;IADC,iBAAM,EAAE;sCACc,6BAAkB;oDAAC;AAG1C;IADC,iBAAM,EAAE;sCACe,8BAAmB;qDAAC;AAG5C;IADC,iBAAM,EAAE;sCACc,6BAAkB;oDAAC;AAG1C;IADC,iBAAM,EAAE;sCACuB,+BAAoB;6DAAC;AAGrD;IADC,iBAAM,CAAC,MAAM,CAAC;;;;6CAkBd;AAlCU,eAAe;IAD3B,eAAU,EAAE;GACA,eAAe,CAiD3B;AAjDY,0CAAe","sourcesContent":["import {InitCmdContext} from \"@tsed/cli\";\nimport {\n CliDockerComposeYaml,\n CliService,\n Inject,\n OnExec,\n ProjectPackageJson,\n RootRendererService,\n SrcRendererService\n} from \"@tsed/cli-core\";\nimport {Injectable} from \"@tsed/di\";\nimport {pascalCase} from \"change-case\";\n\nfunction getDatabase(ctx: InitCmdContext) {\n return ctx.features.find(({type}) => type.includes(\"typeorm:\"))?.type.split(\":\")[1] || \"\";\n}\n\n@Injectable()\nexport class TypeORMInitHook {\n @Inject()\n protected cliService: CliService;\n\n @Inject()\n protected packageJson: ProjectPackageJson;\n\n @Inject()\n protected rootRenderer: RootRendererService;\n\n @Inject()\n protected srcRenderer: SrcRendererService;\n\n @Inject()\n protected cliDockerComposeYaml: CliDockerComposeYaml;\n\n @OnExec(\"init\")\n onExec(ctx: InitCmdContext) {\n this.addScripts();\n this.addDependencies(ctx);\n this.addDevDependencies(ctx);\n\n const database = getDatabase(ctx);\n\n if (!database) {\n return [];\n }\n\n return this.cliService.getTasks(\"generate\", {\n ...ctx,\n type: \"typeorm:dataSource\",\n name: pascalCase(database),\n typeormDataSource: ctx.features.find(({type}) => type.startsWith(\"typeorm:\"))?.type\n });\n }\n\n addScripts() {\n this.packageJson.addScripts({\n typeorm: \"typeorm-ts-node-commonjs\"\n });\n }\n\n addDependencies(ctx: InitCmdContext) {\n this.packageJson.addDependencies({}, ctx);\n }\n\n addDevDependencies(ctx: InitCmdContext) {\n this.packageJson.addDevDependencies({}, ctx);\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tsed/cli-plugin-typeorm",
|
|
3
|
-
"version": "3.20.
|
|
3
|
+
"version": "3.20.6",
|
|
4
4
|
"main": "./lib/index.js",
|
|
5
5
|
"typings": "./lib/index.d.ts",
|
|
6
6
|
"description": "Ts.ED CLI plugin. Add TypeORM support",
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
"tslib": "2.3.1"
|
|
10
10
|
},
|
|
11
11
|
"devDependencies": {
|
|
12
|
-
"@tsed/cli": "3.20.
|
|
13
|
-
"@tsed/cli-core": "3.20.
|
|
12
|
+
"@tsed/cli": "3.20.6",
|
|
13
|
+
"@tsed/cli-core": "3.20.6"
|
|
14
14
|
},
|
|
15
15
|
"scripts": {
|
|
16
16
|
"build": "tsc --build tsconfig.compile.json",
|
package/templates/datasource.hbs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {createConnection} from "@tsed/typeorm";
|
|
1
|
+
import {registerProvider} from "@tsed/di";
|
|
3
2
|
import {DataSource} from "typeorm";
|
|
4
3
|
import {Logger} from "@tsed/logger";
|
|
5
4
|
|
|
5
|
+
export const {{tokenName}} = Symbol.for({{symbolName}})
|
|
6
6
|
export const {{symbolName}} = new DataSource({
|
|
7
7
|
type: "{{database}}",
|
|
8
8
|
{{#switch database}}
|
|
@@ -60,13 +60,13 @@ export const {{symbolName}} = new DataSource({
|
|
|
60
60
|
});
|
|
61
61
|
|
|
62
62
|
registerProvider<DataSource>({
|
|
63
|
-
provide: {{
|
|
63
|
+
provide: {{tokenName}},
|
|
64
64
|
type: "typeorm:datasource",
|
|
65
65
|
deps: [Logger],
|
|
66
66
|
async useAsyncFactory(logger: Logger) {
|
|
67
67
|
await {{symbolName}}.initialize();
|
|
68
68
|
|
|
69
|
-
logger.info(
|
|
69
|
+
logger.info("Connected with typeorm to database: {{name}}");
|
|
70
70
|
|
|
71
71
|
return {{symbolName}};
|
|
72
72
|
},
|