@tsed/cli-plugin-typeorm 3.25.0 → 3.26.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/lib/cjs/hooks/TypeORMGenerateHook.js +17 -8
- package/lib/cjs/hooks/TypeORMGenerateHook.js.map +1 -1
- package/lib/cjs/hooks/TypeORMInitHook.js +2 -2
- package/lib/cjs/hooks/TypeORMInitHook.js.map +1 -1
- package/lib/esm/hooks/TypeORMGenerateHook.js +18 -9
- package/lib/esm/hooks/TypeORMGenerateHook.js.map +1 -1
- package/lib/esm/hooks/TypeORMInitHook.js +2 -2
- package/lib/esm/hooks/TypeORMInitHook.js.map +1 -1
- package/lib/types/hooks/TypeORMGenerateHook.d.ts +1 -0
- package/package.json +3 -3
|
@@ -6,8 +6,8 @@ const tslib_1 = require("tslib");
|
|
|
6
6
|
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
|
-
const templateDir_1 = require("../utils/templateDir");
|
|
10
9
|
const change_case_1 = require("change-case");
|
|
10
|
+
const templateDir_1 = require("../utils/templateDir");
|
|
11
11
|
let TypeORMGenerateHook = TypeORMGenerateHook_1 = class TypeORMGenerateHook {
|
|
12
12
|
providersInfoService;
|
|
13
13
|
projectPackageJson;
|
|
@@ -22,10 +22,10 @@ let TypeORMGenerateHook = TypeORMGenerateHook_1 = class TypeORMGenerateHook {
|
|
|
22
22
|
}, TypeORMGenerateHook_1);
|
|
23
23
|
}
|
|
24
24
|
async onGeneratePrompt() {
|
|
25
|
-
const list =
|
|
25
|
+
const list = this.getTypeORMTypes().map(([value, { name }]) => {
|
|
26
26
|
return {
|
|
27
|
-
name:
|
|
28
|
-
value:
|
|
27
|
+
name: name,
|
|
28
|
+
value: value
|
|
29
29
|
};
|
|
30
30
|
});
|
|
31
31
|
return [
|
|
@@ -51,16 +51,25 @@ let TypeORMGenerateHook = TypeORMGenerateHook_1 = class TypeORMGenerateHook {
|
|
|
51
51
|
}
|
|
52
52
|
return [];
|
|
53
53
|
}
|
|
54
|
+
getTypeORMTypes() {
|
|
55
|
+
return Object.entries(cli_1.FeaturesMap).filter(([value]) => value.startsWith("typeorm:"));
|
|
56
|
+
}
|
|
54
57
|
generateDataSourceTasks(ctx) {
|
|
55
58
|
const { typeormDataSource, symbolPath, name } = ctx;
|
|
56
59
|
if (!typeormDataSource) {
|
|
57
60
|
return [];
|
|
58
61
|
}
|
|
59
|
-
|
|
62
|
+
this.getTypeORMTypes()
|
|
63
|
+
.filter(([value]) => value === typeormDataSource)
|
|
64
|
+
.forEach(([, feature]) => {
|
|
65
|
+
if (feature.dependencies) {
|
|
66
|
+
this.projectPackageJson.addDependencies(feature.dependencies);
|
|
67
|
+
}
|
|
68
|
+
if (feature.devDependencies) {
|
|
69
|
+
this.projectPackageJson.addDependencies(feature.devDependencies);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
60
72
|
const database = typeormDataSource.split(":").at(-1);
|
|
61
|
-
if (databaseType?.value?.dependencies) {
|
|
62
|
-
this.projectPackageJson.addDependencies(databaseType?.value.dependencies || {});
|
|
63
|
-
}
|
|
64
73
|
const symbolName = ctx.symbolName.replace("Datasource", "DataSource");
|
|
65
74
|
return [
|
|
66
75
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypeORMGenerateHook.js","sourceRoot":"","sources":["../../../src/hooks/TypeORMGenerateHook.ts"],"names":[],"mappings":";;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"TypeORMGenerateHook.js","sourceRoot":"","sources":["../../../src/hooks/TypeORMGenerateHook.ts"],"names":[],"mappings":"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","sourcesContent":["import {FeaturesMap, GenerateCmdContext, ProvidersInfoService} from \"@tsed/cli\";\nimport {CliDockerComposeYaml, Inject, OnExec, OnPrompt, ProjectPackageJson, SrcRendererService, Tasks} from \"@tsed/cli-core\";\nimport {Injectable} from \"@tsed/di\";\nimport {constantCase} from \"change-case\";\nimport {TEMPLATE_DIR} from \"../utils/templateDir\";\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 = this.getTypeORMTypes().map(([value, {name}]) => {\n return {\n name: name,\n value: value\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 getTypeORMTypes() {\n return Object.entries(FeaturesMap).filter(([value]) => value.startsWith(\"typeorm:\"));\n }\n\n generateDataSourceTasks(ctx: TypeORMGenerateOptions) {\n const {typeormDataSource, symbolPath, name} = ctx;\n\n if (!typeormDataSource) {\n return [];\n }\n\n this.getTypeORMTypes()\n .filter(([value]) => value === typeormDataSource)\n .forEach(([, feature]) => {\n if (feature.dependencies) {\n this.projectPackageJson.addDependencies(feature.dependencies);\n }\n if (feature.devDependencies) {\n this.projectPackageJson.addDependencies(feature.devDependencies);\n }\n });\n\n const database = typeormDataSource.split(\":\").at(-1)!;\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"]}
|
|
@@ -6,7 +6,7 @@ const cli_core_1 = require("@tsed/cli-core");
|
|
|
6
6
|
const di_1 = require("@tsed/di");
|
|
7
7
|
const change_case_1 = require("change-case");
|
|
8
8
|
function getDatabase(ctx) {
|
|
9
|
-
return ctx.features.find((
|
|
9
|
+
return ctx.features.find((type) => type.includes("typeorm:"))?.split(":")[1] || "";
|
|
10
10
|
}
|
|
11
11
|
let TypeORMInitHook = class TypeORMInitHook {
|
|
12
12
|
cliService;
|
|
@@ -26,7 +26,7 @@ let TypeORMInitHook = class TypeORMInitHook {
|
|
|
26
26
|
...ctx,
|
|
27
27
|
type: "typeorm:dataSource",
|
|
28
28
|
name: (0, change_case_1.pascalCase)(database),
|
|
29
|
-
typeormDataSource: ctx.features.find((
|
|
29
|
+
typeormDataSource: ctx.features.find((value) => value.startsWith("typeorm:"))
|
|
30
30
|
});
|
|
31
31
|
}
|
|
32
32
|
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,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,
|
|
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,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACrF,CAAC;AAGD,IAAa,eAAe,GAA5B,MAAa,eAAe;IAEhB,UAAU,CAAa;IAGvB,WAAW,CAAqB;IAGhC,YAAY,CAAsB;IAGlC,WAAW,CAAqB;IAGhC,oBAAoB,CAAuB;IAGrD,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,IAAA,wBAAU,EAAC,QAAQ,CAAC;YAC1B,iBAAiB,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;SAC9E,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,IAAA,iBAAM,GAAE;sCACa,qBAAU;mDAAC;AAGjC;IADC,IAAA,iBAAM,GAAE;sCACc,6BAAkB;oDAAC;AAG1C;IADC,IAAA,iBAAM,GAAE;sCACe,8BAAmB;qDAAC;AAG5C;IADC,IAAA,iBAAM,GAAE;sCACc,6BAAkB;oDAAC;AAG1C;IADC,IAAA,iBAAM,GAAE;sCACuB,+BAAoB;6DAAC;AAGrD;IADC,IAAA,iBAAM,EAAC,MAAM,CAAC;;;;6CAkBd;AAlCU,eAAe;IAD3B,IAAA,eAAU,GAAE;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:\"))?.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((value) => value.startsWith(\"typeorm:\"))\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"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
var TypeORMGenerateHook_1;
|
|
2
2
|
import { __decorate, __metadata } from "tslib";
|
|
3
|
-
import {
|
|
3
|
+
import { FeaturesMap, ProvidersInfoService } from "@tsed/cli";
|
|
4
4
|
import { CliDockerComposeYaml, Inject, OnExec, OnPrompt, ProjectPackageJson, SrcRendererService } from "@tsed/cli-core";
|
|
5
5
|
import { Injectable } from "@tsed/di";
|
|
6
|
-
import { TEMPLATE_DIR } from "../utils/templateDir.js";
|
|
7
6
|
import { constantCase } from "change-case";
|
|
7
|
+
import { TEMPLATE_DIR } from "../utils/templateDir.js";
|
|
8
8
|
let TypeORMGenerateHook = TypeORMGenerateHook_1 = class TypeORMGenerateHook {
|
|
9
9
|
providersInfoService;
|
|
10
10
|
projectPackageJson;
|
|
@@ -19,10 +19,10 @@ let TypeORMGenerateHook = TypeORMGenerateHook_1 = class TypeORMGenerateHook {
|
|
|
19
19
|
}, TypeORMGenerateHook_1);
|
|
20
20
|
}
|
|
21
21
|
async onGeneratePrompt() {
|
|
22
|
-
const list =
|
|
22
|
+
const list = this.getTypeORMTypes().map(([value, { name }]) => {
|
|
23
23
|
return {
|
|
24
|
-
name:
|
|
25
|
-
value:
|
|
24
|
+
name: name,
|
|
25
|
+
value: value
|
|
26
26
|
};
|
|
27
27
|
});
|
|
28
28
|
return [
|
|
@@ -48,16 +48,25 @@ let TypeORMGenerateHook = TypeORMGenerateHook_1 = class TypeORMGenerateHook {
|
|
|
48
48
|
}
|
|
49
49
|
return [];
|
|
50
50
|
}
|
|
51
|
+
getTypeORMTypes() {
|
|
52
|
+
return Object.entries(FeaturesMap).filter(([value]) => value.startsWith("typeorm:"));
|
|
53
|
+
}
|
|
51
54
|
generateDataSourceTasks(ctx) {
|
|
52
55
|
const { typeormDataSource, symbolPath, name } = ctx;
|
|
53
56
|
if (!typeormDataSource) {
|
|
54
57
|
return [];
|
|
55
58
|
}
|
|
56
|
-
|
|
59
|
+
this.getTypeORMTypes()
|
|
60
|
+
.filter(([value]) => value === typeormDataSource)
|
|
61
|
+
.forEach(([, feature]) => {
|
|
62
|
+
if (feature.dependencies) {
|
|
63
|
+
this.projectPackageJson.addDependencies(feature.dependencies);
|
|
64
|
+
}
|
|
65
|
+
if (feature.devDependencies) {
|
|
66
|
+
this.projectPackageJson.addDependencies(feature.devDependencies);
|
|
67
|
+
}
|
|
68
|
+
});
|
|
57
69
|
const database = typeormDataSource.split(":").at(-1);
|
|
58
|
-
if (databaseType?.value?.dependencies) {
|
|
59
|
-
this.projectPackageJson.addDependencies(databaseType?.value.dependencies || {});
|
|
60
|
-
}
|
|
61
70
|
const symbolName = ctx.symbolName.replace("Datasource", "DataSource");
|
|
62
71
|
return [
|
|
63
72
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypeORMGenerateHook.js","sourceRoot":"","sources":["../../../src/hooks/TypeORMGenerateHook.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"TypeORMGenerateHook.js","sourceRoot":"","sources":["../../../src/hooks/TypeORMGenerateHook.ts"],"names":[],"mappings":"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","sourcesContent":["import {FeaturesMap, GenerateCmdContext, ProvidersInfoService} from \"@tsed/cli\";\nimport {CliDockerComposeYaml, Inject, OnExec, OnPrompt, ProjectPackageJson, SrcRendererService, Tasks} from \"@tsed/cli-core\";\nimport {Injectable} from \"@tsed/di\";\nimport {constantCase} from \"change-case\";\nimport {TEMPLATE_DIR} from \"../utils/templateDir\";\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 = this.getTypeORMTypes().map(([value, {name}]) => {\n return {\n name: name,\n value: value\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 getTypeORMTypes() {\n return Object.entries(FeaturesMap).filter(([value]) => value.startsWith(\"typeorm:\"));\n }\n\n generateDataSourceTasks(ctx: TypeORMGenerateOptions) {\n const {typeormDataSource, symbolPath, name} = ctx;\n\n if (!typeormDataSource) {\n return [];\n }\n\n this.getTypeORMTypes()\n .filter(([value]) => value === typeormDataSource)\n .forEach(([, feature]) => {\n if (feature.dependencies) {\n this.projectPackageJson.addDependencies(feature.dependencies);\n }\n if (feature.devDependencies) {\n this.projectPackageJson.addDependencies(feature.devDependencies);\n }\n });\n\n const database = typeormDataSource.split(\":\").at(-1)!;\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"]}
|
|
@@ -3,7 +3,7 @@ import { CliDockerComposeYaml, CliService, Inject, OnExec, ProjectPackageJson, R
|
|
|
3
3
|
import { Injectable } from "@tsed/di";
|
|
4
4
|
import { pascalCase } from "change-case";
|
|
5
5
|
function getDatabase(ctx) {
|
|
6
|
-
return ctx.features.find((
|
|
6
|
+
return ctx.features.find((type) => type.includes("typeorm:"))?.split(":")[1] || "";
|
|
7
7
|
}
|
|
8
8
|
let TypeORMInitHook = class TypeORMInitHook {
|
|
9
9
|
cliService;
|
|
@@ -23,7 +23,7 @@ let TypeORMInitHook = class TypeORMInitHook {
|
|
|
23
23
|
...ctx,
|
|
24
24
|
type: "typeorm:dataSource",
|
|
25
25
|
name: pascalCase(database),
|
|
26
|
-
typeormDataSource: ctx.features.find((
|
|
26
|
+
typeormDataSource: ctx.features.find((value) => value.startsWith("typeorm:"))
|
|
27
27
|
});
|
|
28
28
|
}
|
|
29
29
|
addScripts() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypeORMInitHook.js","sourceRoot":"","sources":["../../../src/hooks/TypeORMInitHook.ts"],"names":[],"mappings":";AACA,OAAO,EACL,oBAAoB,EACpB,UAAU,EACV,MAAM,EACN,MAAM,EACN,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,EAAC,UAAU,EAAC,MAAM,aAAa,CAAC;AAEvC,SAAS,WAAW,CAAC,GAAmB;IACtC,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"TypeORMInitHook.js","sourceRoot":"","sources":["../../../src/hooks/TypeORMInitHook.ts"],"names":[],"mappings":";AACA,OAAO,EACL,oBAAoB,EACpB,UAAU,EACV,MAAM,EACN,MAAM,EACN,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,EAAC,UAAU,EAAC,MAAM,aAAa,CAAC;AAEvC,SAAS,WAAW,CAAC,GAAmB;IACtC,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACrF,CAAC;AAGD,IAAa,eAAe,GAA5B,MAAa,eAAe;IAEhB,UAAU,CAAa;IAGvB,WAAW,CAAqB;IAGhC,YAAY,CAAsB;IAGlC,WAAW,CAAqB;IAGhC,oBAAoB,CAAuB;IAGrD,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,UAAU,CAAC,QAAQ,CAAC;YAC1B,iBAAiB,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;SAC9E,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,MAAM,EAAE;8BACa,UAAU;mDAAC;AAGjC;IADC,MAAM,EAAE;8BACc,kBAAkB;oDAAC;AAG1C;IADC,MAAM,EAAE;8BACe,mBAAmB;qDAAC;AAG5C;IADC,MAAM,EAAE;8BACc,kBAAkB;oDAAC;AAG1C;IADC,MAAM,EAAE;8BACuB,oBAAoB;6DAAC;AAGrD;IADC,MAAM,CAAC,MAAM,CAAC;;;;6CAkBd;AAlCU,eAAe;IAD3B,UAAU,EAAE;GACA,eAAe,CAiD3B;SAjDY,eAAe","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:\"))?.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((value) => value.startsWith(\"typeorm:\"))\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"]}
|
|
@@ -21,6 +21,7 @@ export declare class TypeORMGenerateHook {
|
|
|
21
21
|
}[]>;
|
|
22
22
|
}[]>;
|
|
23
23
|
onGenerateExec(ctx: TypeORMGenerateOptions): Tasks;
|
|
24
|
+
getTypeORMTypes(): [string, import("@tsed/cli").Feature][];
|
|
24
25
|
generateDataSourceTasks(ctx: TypeORMGenerateOptions): {
|
|
25
26
|
title: string;
|
|
26
27
|
task: () => Promise<void>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tsed/cli-plugin-typeorm",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.26.1",
|
|
4
4
|
"description": "Ts.ED CLI plugin. Add TypeORM support",
|
|
5
5
|
"source": "./src/index.ts",
|
|
6
6
|
"main": "./lib/cjs/index.js",
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
"tslib": "2.3.1"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"@tsed/cli": "3.
|
|
26
|
-
"@tsed/cli-core": "3.
|
|
25
|
+
"@tsed/cli": "3.26.1",
|
|
26
|
+
"@tsed/cli-core": "3.26.1"
|
|
27
27
|
},
|
|
28
28
|
"peerDependencies": {},
|
|
29
29
|
"repository": "https://github.com/tsedio/tsed-cli",
|