@tsed/cli 7.0.0-beta.1 → 7.0.0-beta.10
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/esm/bin/ts-mode.js +10 -0
- package/lib/esm/bin/tsed.js +4 -2
- package/lib/esm/commands/add/AddCmd.js +2 -1
- package/lib/esm/commands/generate/GenerateCmd.js +2 -1
- package/lib/esm/commands/index.js +3 -1
- package/lib/esm/commands/init/InitCmd.js +20 -113
- package/lib/esm/commands/init/InitOptionsCmd.js +17 -0
- package/lib/esm/commands/init/config/FeaturesPrompt.js +35 -36
- package/lib/esm/commands/init/config/InitSchema.js +337 -0
- package/lib/esm/commands/init/prompts/getFeaturesPrompt.js +1 -1
- package/lib/esm/commands/mcp/McpCommand.js +15 -0
- package/lib/esm/commands/mcp/resources/index.js +4 -0
- package/lib/esm/commands/mcp/resources/initOptionsResource.js +93 -0
- package/lib/esm/commands/mcp/resources/projectInfoResource.js +43 -0
- package/lib/esm/commands/mcp/resources/serverInfoResource.js +40 -0
- package/lib/esm/commands/mcp/schema/InitMCPSchema.js +9 -0
- package/lib/esm/commands/mcp/schema/ProjectPreferencesSchema.js +16 -0
- package/lib/esm/commands/mcp/tools/generateTool.js +105 -0
- package/lib/esm/commands/mcp/tools/getTemplateTool.js +47 -0
- package/lib/esm/commands/mcp/tools/index.js +6 -0
- package/lib/esm/commands/mcp/tools/initProjectTool.js +64 -0
- package/lib/esm/commands/mcp/tools/listTemplatesTool.js +37 -0
- package/lib/esm/commands/mcp/tools/setWorkspaceTool.js +64 -0
- package/lib/esm/commands/run/RunCmd.js +4 -1
- package/lib/esm/commands/template/CreateTemplateCommand.js +2 -1
- package/lib/esm/commands/update/UpdateCmd.js +3 -4
- package/lib/esm/index.js +3 -0
- package/lib/esm/processors/transformConfigFile.js +1 -1
- package/lib/esm/processors/transformServerFile.js +5 -7
- package/lib/esm/services/CliProjectService.js +7 -3
- package/lib/esm/services/CliStats.js +45 -0
- package/lib/esm/services/CliTemplatesService.js +13 -4
- package/lib/esm/templates/agents.template.js +17 -0
- package/lib/esm/templates/asyncFactory.template.js +4 -3
- package/lib/esm/templates/barrels.template.js +1 -8
- package/lib/esm/templates/command.template.js +1 -0
- package/lib/esm/templates/controller.template.js +7 -0
- package/lib/esm/templates/decorator.template.js +22 -11
- package/lib/esm/templates/dockerfile.template.js +5 -0
- package/lib/esm/templates/exception-filter.template.js +1 -0
- package/lib/esm/templates/factory.template.js +4 -3
- package/lib/esm/templates/index.command.template.js +1 -1
- package/lib/esm/templates/index.controller.template.js +12 -8
- package/lib/esm/templates/index.js +1 -0
- package/lib/esm/templates/index.logger.template.js +0 -1
- package/lib/esm/templates/interceptor.template.js +1 -0
- package/lib/esm/templates/interface.template.js +1 -0
- package/lib/esm/templates/middleware.template.js +14 -4
- package/lib/esm/templates/model.template.js +1 -0
- package/lib/esm/templates/module.template.js +1 -0
- package/lib/esm/templates/pipe.template.js +1 -0
- package/lib/esm/templates/prisma.service.template.js +1 -0
- package/lib/esm/templates/repository.template.js +1 -0
- package/lib/esm/templates/response-filter.template.js +1 -0
- package/lib/esm/templates/service.template.js +1 -0
- package/lib/esm/templates/value.template.js +1 -0
- package/lib/esm/utils/resolveSchema.js +17 -0
- package/lib/esm/utils/summarizeSchema.js +24 -0
- package/lib/tsconfig.esm.tsbuildinfo +1 -1
- package/lib/types/bin/ts-mode.d.ts +1 -0
- package/lib/types/bin/tsed.d.ts +1 -1
- package/lib/types/commands/generate/GenerateCmd.d.ts +38 -1
- package/lib/types/commands/index.d.ts +103 -1
- package/lib/types/commands/init/InitCmd.d.ts +2 -5
- package/lib/types/commands/init/InitOptionsCmd.d.ts +52 -0
- package/lib/types/commands/init/config/FeaturesPrompt.d.ts +26 -32
- package/lib/types/commands/init/config/InitSchema.d.ts +18 -0
- package/lib/types/commands/mcp/McpCommand.d.ts +52 -0
- package/lib/types/commands/mcp/resources/index.d.ts +2 -0
- package/lib/types/commands/mcp/resources/initOptionsResource.d.ts +1 -0
- package/lib/types/commands/mcp/resources/projectInfoResource.d.ts +1 -0
- package/lib/types/commands/mcp/resources/serverInfoResource.d.ts +1 -0
- package/lib/types/commands/mcp/schema/InitMCPSchema.d.ts +5 -0
- package/lib/types/commands/mcp/schema/ProjectPreferencesSchema.d.ts +9 -0
- package/lib/types/commands/mcp/tools/generateTool.d.ts +116 -0
- package/lib/types/commands/mcp/tools/getTemplateTool.d.ts +114 -0
- package/lib/types/commands/mcp/tools/index.d.ts +345 -0
- package/lib/types/commands/mcp/tools/initProjectTool.d.ts +116 -0
- package/lib/types/commands/mcp/tools/listTemplatesTool.d.ts +114 -0
- package/lib/types/commands/mcp/tools/setWorkspaceTool.d.ts +119 -0
- package/lib/types/index.d.ts +3 -0
- package/lib/types/interfaces/InitCmdOptions.d.ts +1 -1
- package/lib/types/pipes/SymbolNamePipe.d.ts +1 -1
- package/lib/types/services/CliProjectService.d.ts +1 -1
- package/lib/types/services/CliStats.d.ts +36 -0
- package/lib/types/services/CliTemplatesService.d.ts +6 -5
- package/lib/types/templates/agents.template.d.ts +17 -0
- package/lib/types/templates/asyncFactory.template.d.ts +1 -0
- package/lib/types/templates/barrels.template.d.ts +1 -0
- package/lib/types/templates/command.template.d.ts +1 -0
- package/lib/types/templates/config.template.d.ts +1 -0
- package/lib/types/templates/controller.template.d.ts +1 -0
- package/lib/types/templates/decorator.template.d.ts +1 -0
- package/lib/types/templates/docker-compose.template.d.ts +1 -0
- package/lib/types/templates/exception-filter.template.d.ts +1 -0
- package/lib/types/templates/factory.template.d.ts +1 -0
- package/lib/types/templates/index.command.template.d.ts +1 -0
- package/lib/types/templates/index.config.utils.template.d.ts +1 -0
- package/lib/types/templates/index.controller.template.d.ts +1 -0
- package/lib/types/templates/index.d.ts +1 -0
- package/lib/types/templates/index.logger.template.d.ts +3 -2
- package/lib/types/templates/index.template.d.ts +1 -0
- package/lib/types/templates/interceptor.template.d.ts +1 -0
- package/lib/types/templates/interface.template.d.ts +1 -0
- package/lib/types/templates/middleware.template.d.ts +1 -0
- package/lib/types/templates/model.template.d.ts +1 -0
- package/lib/types/templates/module.template.d.ts +1 -0
- package/lib/types/templates/pipe.template.d.ts +1 -0
- package/lib/types/templates/prisma.service.template.d.ts +1 -0
- package/lib/types/templates/readme.template.d.ts +1 -0
- package/lib/types/templates/repository.template.d.ts +1 -0
- package/lib/types/templates/response-filter.template.d.ts +1 -0
- package/lib/types/templates/server.template.d.ts +1 -0
- package/lib/types/templates/service.template.d.ts +1 -0
- package/lib/types/templates/tsconfig.spec.template.d.ts +1 -0
- package/lib/types/templates/value.template.d.ts +1 -0
- package/lib/types/utils/defineTemplate.d.ts +11 -0
- package/lib/types/utils/resolveSchema.d.ts +2 -0
- package/lib/types/utils/summarizeSchema.d.ts +8 -0
- package/package.json +18 -13
- package/templates/views/home.ejs +347 -0
- package/lib/esm/commands/init/config/InitFileSchema.js +0 -49
- package/lib/types/commands/init/config/InitFileSchema.d.ts +0 -49
- package/templates/views/swagger.ejs +0 -100
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
if (process.env.CLI_MODE === "ts") {
|
|
2
|
+
try {
|
|
3
|
+
await import("@swc-node/register/esm-register");
|
|
4
|
+
}
|
|
5
|
+
catch (error) {
|
|
6
|
+
console.error("CLI_MODE=ts requires '@swc-node/register'. Install it and @swc/core to continue.");
|
|
7
|
+
process.env.CLI_MODE = undefined;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export {};
|
package/lib/esm/bin/tsed.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import "
|
|
2
|
+
import "./ts-mode.js";
|
|
3
3
|
import { register } from "node:module";
|
|
4
4
|
import { join } from "node:path";
|
|
5
5
|
import { pathToFileURL } from "node:url";
|
|
@@ -15,7 +15,7 @@ register(pathToFileURL(join(import.meta.dirname, `../loaders/alias.hook.${EXT}`)
|
|
|
15
15
|
},
|
|
16
16
|
transferList: []
|
|
17
17
|
});
|
|
18
|
-
const { commands, CliCore, PKG, TEMPLATE_DIR, ArchitectureConvention, ProjectConvention } = await import("../index.js");
|
|
18
|
+
const { tools, commands, resources, CliCore, PKG, TEMPLATE_DIR, ArchitectureConvention, ProjectConvention } = await import("../index.js");
|
|
19
19
|
CliCore.bootstrap({
|
|
20
20
|
name: "tsed",
|
|
21
21
|
pkg: PKG,
|
|
@@ -24,6 +24,8 @@ CliCore.bootstrap({
|
|
|
24
24
|
updateNotifier: true,
|
|
25
25
|
checkPrecondition: true,
|
|
26
26
|
commands,
|
|
27
|
+
tools,
|
|
28
|
+
resources,
|
|
27
29
|
defaultProjectPreferences() {
|
|
28
30
|
return {
|
|
29
31
|
convention: ProjectConvention.DEFAULT,
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { AddCmd } from "./add/AddCmd.js";
|
|
2
2
|
import { GenerateCmd } from "./generate/GenerateCmd.js";
|
|
3
3
|
import { InitCmd } from "./init/InitCmd.js";
|
|
4
|
+
import { InitOptionsCommand } from "./init/InitOptionsCmd.js";
|
|
5
|
+
import { McpCommand } from "./mcp/McpCommand.js";
|
|
4
6
|
import { RunCmd } from "./run/RunCmd.js";
|
|
5
7
|
import { CreateTemplateCommand } from "./template/CreateTemplateCommand.js";
|
|
6
8
|
import { UpdateCmd } from "./update/UpdateCmd.js";
|
|
7
|
-
export default [AddCmd, InitCmd, GenerateCmd, UpdateCmd, RunCmd, CreateTemplateCommand];
|
|
9
|
+
export default [AddCmd, InitCmd, InitOptionsCommand, GenerateCmd, UpdateCmd, RunCmd, CreateTemplateCommand, McpCommand];
|
|
@@ -1,23 +1,20 @@
|
|
|
1
1
|
import { basename, join } from "node:path";
|
|
2
|
-
import { CliExeca, CliFs, CliLoadFile, cliPackageJson, CliPlugins, command, Configuration, createSubTasks, createTasksRunner, inject,
|
|
2
|
+
import { CliExeca, CliFs, CliLoadFile, cliPackageJson, CliPlugins, command, Configuration, createSubTasks, createTasksRunner, inject, PackageManagersModule, ProjectPackageJson } from "@tsed/cli-core";
|
|
3
3
|
import { isString } from "@tsed/core";
|
|
4
4
|
import { constant } from "@tsed/di";
|
|
5
5
|
import { $asyncAlter } from "@tsed/hooks";
|
|
6
6
|
import { kebabCase } from "change-case";
|
|
7
|
-
import {
|
|
7
|
+
import { TEMPLATE_DIR } from "../../constants/index.js";
|
|
8
8
|
import { exec } from "../../fn/exec.js";
|
|
9
9
|
import { render } from "../../fn/render.js";
|
|
10
10
|
import { taskOutput } from "../../fn/taskOutput.js";
|
|
11
|
-
import { ArchitectureConvention } from "../../interfaces/ArchitectureConvention.js";
|
|
12
|
-
import { PlatformType } from "../../interfaces/index.js";
|
|
13
|
-
import { ProjectConvention } from "../../interfaces/ProjectConvention.js";
|
|
14
11
|
import { PlatformsModule } from "../../platforms/PlatformsModule.js";
|
|
15
12
|
import { RuntimesModule } from "../../runtimes/RuntimesModule.js";
|
|
16
13
|
import { BunRuntime } from "../../runtimes/supports/BunRuntime.js";
|
|
17
14
|
import { NodeRuntime } from "../../runtimes/supports/NodeRuntime.js";
|
|
18
15
|
import { CliProjectService } from "../../services/CliProjectService.js";
|
|
19
16
|
import { FeaturesMap, FeatureType } from "./config/FeaturesPrompt.js";
|
|
20
|
-
import {
|
|
17
|
+
import { InitSchema } from "./config/InitSchema.js";
|
|
21
18
|
import { mapToContext } from "./mappers/mapToContext.js";
|
|
22
19
|
import { getFeaturesPrompt } from "./prompts/getFeaturesPrompt.js";
|
|
23
20
|
export class InitCmd {
|
|
@@ -34,45 +31,14 @@ export class InitCmd {
|
|
|
34
31
|
this.execa = inject(CliExeca);
|
|
35
32
|
this.fs = inject(CliFs);
|
|
36
33
|
}
|
|
37
|
-
|
|
38
|
-
const isValid = (types, value) => (value ? Object.values(types).includes(value) : true);
|
|
39
|
-
if (!isValid(PlatformType, ctx.platform)) {
|
|
40
|
-
throw new Error(`Invalid selected platform: ${ctx.platform}. Possible values: ${Object.values(PlatformType).join(", ")}.`);
|
|
41
|
-
}
|
|
42
|
-
if (!isValid(ArchitectureConvention, ctx.architecture)) {
|
|
43
|
-
throw new Error(`Invalid selected architecture: ${ctx.architecture}. Possible values: ${Object.values(ArchitectureConvention).join(", ")}.`);
|
|
44
|
-
}
|
|
45
|
-
if (!isValid(ProjectConvention, ctx.convention)) {
|
|
46
|
-
throw new Error(`Invalid selected convention: ${ctx.convention}. Possible values: ${Object.values(ProjectConvention).join(", ")}.`);
|
|
47
|
-
}
|
|
48
|
-
const runtimes = this.runtimes.list();
|
|
49
|
-
if (!runtimes.includes(ctx.runtime)) {
|
|
50
|
-
throw new Error(`Invalid selected runtime: ${ctx.runtime}. Possible values: ${runtimes.join(", ")}.`);
|
|
51
|
-
}
|
|
52
|
-
const managers = this.packageManagers.list();
|
|
53
|
-
if (!managers.includes(ctx.packageManager)) {
|
|
54
|
-
throw new Error(`Invalid selected package manager: ${ctx.packageManager}. Possible values: ${managers.join(", ")}.`);
|
|
55
|
-
}
|
|
56
|
-
if (ctx.features) {
|
|
57
|
-
ctx.features.forEach((value) => {
|
|
58
|
-
const feature = FeaturesMap[value.toLowerCase()];
|
|
59
|
-
if (!feature) {
|
|
60
|
-
throw new Error(`Invalid selected feature: ${value}. Possible values: ${Object.values(FeatureType).join(", ")}.`);
|
|
61
|
-
}
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
async $beforePrompt(initialOptions) {
|
|
34
|
+
async $prompt(initialOptions) {
|
|
66
35
|
if (initialOptions.file) {
|
|
67
|
-
const file = join(this.packageJson.
|
|
68
|
-
|
|
36
|
+
const file = join(this.packageJson.cwd, initialOptions.file);
|
|
37
|
+
initialOptions = {
|
|
69
38
|
...initialOptions,
|
|
70
|
-
...(await this.cliLoadFile.loadFile(file,
|
|
39
|
+
...(await this.cliLoadFile.loadFile(file, InitSchema()))
|
|
71
40
|
};
|
|
72
41
|
}
|
|
73
|
-
return initialOptions;
|
|
74
|
-
}
|
|
75
|
-
$prompt(initialOptions) {
|
|
76
42
|
if (initialOptions.skipPrompt) {
|
|
77
43
|
return [];
|
|
78
44
|
}
|
|
@@ -108,14 +74,14 @@ export class InitCmd {
|
|
|
108
74
|
srcDir: constant("project.srcDir", "src")
|
|
109
75
|
};
|
|
110
76
|
}
|
|
111
|
-
async $
|
|
112
|
-
this.fs.ensureDirSync(this.packageJson.
|
|
77
|
+
async $exec(ctx) {
|
|
78
|
+
this.fs.ensureDirSync(this.packageJson.cwd);
|
|
113
79
|
ctx.projectName && (this.packageJson.name = ctx.projectName);
|
|
114
80
|
ctx.packageManager && this.packageJson.setPreference("packageManager", ctx.packageManager);
|
|
115
81
|
ctx.runtime && this.packageJson.setPreference("runtime", ctx.runtime);
|
|
116
82
|
ctx.architecture && this.packageJson.setPreference("architecture", ctx.architecture);
|
|
117
83
|
ctx.convention && this.packageJson.setPreference("convention", ctx.convention);
|
|
118
|
-
ctx.platform && this.packageJson.setPreference("platform", ctx.
|
|
84
|
+
ctx.platform && this.packageJson.setPreference("platform", ctx.platform);
|
|
119
85
|
ctx.GH_TOKEN && this.packageJson.setGhToken(ctx.GH_TOKEN);
|
|
120
86
|
await createTasksRunner([
|
|
121
87
|
{
|
|
@@ -148,9 +114,6 @@ export class InitCmd {
|
|
|
148
114
|
task: createSubTasks(() => this.cliPlugins.addPluginsDependencies(ctx), { ...ctx, concurrent: false })
|
|
149
115
|
}
|
|
150
116
|
], ctx);
|
|
151
|
-
}
|
|
152
|
-
async $exec(ctx) {
|
|
153
|
-
this.checkPrecondition(ctx);
|
|
154
117
|
const runtime = this.runtimes.get();
|
|
155
118
|
ctx = {
|
|
156
119
|
...ctx,
|
|
@@ -213,15 +176,15 @@ export class InitCmd {
|
|
|
213
176
|
];
|
|
214
177
|
}
|
|
215
178
|
resolveRootDir(ctx) {
|
|
216
|
-
const rootDirName = kebabCase(ctx.projectName || basename(this.packageJson.
|
|
217
|
-
if (this.packageJson.
|
|
179
|
+
const rootDirName = kebabCase(ctx.projectName || basename(this.packageJson.cwd));
|
|
180
|
+
if (this.packageJson.cwd.endsWith(rootDirName)) {
|
|
218
181
|
ctx.projectName = ctx.projectName || rootDirName;
|
|
219
182
|
ctx.root = ".";
|
|
220
183
|
return;
|
|
221
184
|
}
|
|
222
185
|
ctx.projectName = ctx.projectName || rootDirName;
|
|
223
186
|
if (ctx.root && ctx.root !== ".") {
|
|
224
|
-
this.packageJson.
|
|
187
|
+
this.packageJson.setCWD(join(this.packageJson.cwd, rootDirName));
|
|
225
188
|
ctx.root = ".";
|
|
226
189
|
}
|
|
227
190
|
}
|
|
@@ -230,7 +193,7 @@ export class InitCmd {
|
|
|
230
193
|
if (ctx.eslint || ctx.testing) {
|
|
231
194
|
const runtime = this.runtimes.get();
|
|
232
195
|
const scripts = {
|
|
233
|
-
test: [ctx.eslint && runtime.run("test:lint"), ctx.testing && runtime.run("test:coverage")].filter(Boolean).join("&&")
|
|
196
|
+
test: [ctx.eslint && runtime.run("test:lint"), ctx.testing && runtime.run("test:coverage")].filter(Boolean).join(" && ")
|
|
234
197
|
};
|
|
235
198
|
this.packageJson.addScripts(scripts);
|
|
236
199
|
}
|
|
@@ -311,12 +274,13 @@ export class InitCmd {
|
|
|
311
274
|
"index",
|
|
312
275
|
"index.config.util",
|
|
313
276
|
"index.logger",
|
|
314
|
-
"index.controller",
|
|
277
|
+
ctx.swagger && "index.controller",
|
|
315
278
|
ctx.commands && "index.command",
|
|
316
279
|
"barrels",
|
|
317
280
|
"readme",
|
|
281
|
+
"agents",
|
|
318
282
|
`pm2.${pm2}`,
|
|
319
|
-
|
|
283
|
+
"/views/home.ejs",
|
|
320
284
|
...runtime.files()
|
|
321
285
|
].map((id) => {
|
|
322
286
|
return id && render(id, ctx);
|
|
@@ -355,67 +319,10 @@ export class InitCmd {
|
|
|
355
319
|
taskOutput(`Plugins files rendered (${Date.now() - startTime}ms)`);
|
|
356
320
|
}
|
|
357
321
|
}
|
|
358
|
-
command(
|
|
322
|
+
command({
|
|
323
|
+
token: InitCmd,
|
|
359
324
|
name: "init",
|
|
360
325
|
description: "Init a new Ts.ED project",
|
|
361
|
-
|
|
362
|
-
root: {
|
|
363
|
-
type: String,
|
|
364
|
-
defaultValue: ".",
|
|
365
|
-
description: "Root directory to initialize the Ts.ED project"
|
|
366
|
-
}
|
|
367
|
-
},
|
|
368
|
-
options: {
|
|
369
|
-
"-n, --project-name <projectName>": {
|
|
370
|
-
type: String,
|
|
371
|
-
defaultValue: "",
|
|
372
|
-
description: "Set the project name. By default, the project is the same as the name directory."
|
|
373
|
-
},
|
|
374
|
-
"-a, --arch <architecture>": {
|
|
375
|
-
type: String,
|
|
376
|
-
defaultValue: ArchitectureConvention.DEFAULT,
|
|
377
|
-
description: `Set the default architecture convention (${ArchitectureConvention.DEFAULT} or ${ArchitectureConvention.FEATURE})`
|
|
378
|
-
},
|
|
379
|
-
"-c, --convention <convention>": {
|
|
380
|
-
type: String,
|
|
381
|
-
defaultValue: ProjectConvention.DEFAULT,
|
|
382
|
-
description: `Set the default project convention (${ArchitectureConvention.DEFAULT} or ${ArchitectureConvention.FEATURE})`
|
|
383
|
-
},
|
|
384
|
-
"-p, --platform <platform>": {
|
|
385
|
-
type: String,
|
|
386
|
-
defaultValue: PlatformType.EXPRESS,
|
|
387
|
-
description: "Set the default platform for Ts.ED (express, koa or fastify)"
|
|
388
|
-
},
|
|
389
|
-
"--features <features...>": {
|
|
390
|
-
type: Array,
|
|
391
|
-
itemType: String,
|
|
392
|
-
defaultValue: [],
|
|
393
|
-
description: "List of the Ts.ED features."
|
|
394
|
-
},
|
|
395
|
-
"--runtime <runtime>": {
|
|
396
|
-
itemType: String,
|
|
397
|
-
defaultValue: "node",
|
|
398
|
-
description: "The default runtime used to run the project"
|
|
399
|
-
},
|
|
400
|
-
"-m, --package-manager <packageManager>": {
|
|
401
|
-
itemType: String,
|
|
402
|
-
defaultValue: PackageManager.YARN,
|
|
403
|
-
description: "The default package manager to install the project"
|
|
404
|
-
},
|
|
405
|
-
"-t, --tsed-version <version>": {
|
|
406
|
-
type: String,
|
|
407
|
-
defaultValue: DEFAULT_TSED_TAGS,
|
|
408
|
-
description: "Use a specific version of Ts.ED (format: 5.x.x)."
|
|
409
|
-
},
|
|
410
|
-
"-f, --file <path>": {
|
|
411
|
-
type: String,
|
|
412
|
-
description: "Location of a file in which the features are defined."
|
|
413
|
-
},
|
|
414
|
-
"-s, --skip-prompt": {
|
|
415
|
-
type: Boolean,
|
|
416
|
-
defaultValue: false,
|
|
417
|
-
description: "Skip the prompt."
|
|
418
|
-
}
|
|
419
|
-
},
|
|
326
|
+
inputSchema: InitSchema,
|
|
420
327
|
disableReadUpPkg: true
|
|
421
328
|
});
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { command } from "@tsed/cli-core";
|
|
2
|
+
import { s } from "@tsed/schema";
|
|
3
|
+
import { InitSchema } from "./config/InitSchema.js";
|
|
4
|
+
export const InitOptionsCommand = command({
|
|
5
|
+
name: "init-options",
|
|
6
|
+
description: "Display available options for Ts.ED init command for external tool",
|
|
7
|
+
disableReadUpPkg: true,
|
|
8
|
+
inputSchema: s.object({
|
|
9
|
+
indent: s.number().default(0).description("Json indentation value").opt("-i, --indent <indent>")
|
|
10
|
+
}),
|
|
11
|
+
handler(data) {
|
|
12
|
+
console.log(JSON.stringify(InitSchema().toJSON({
|
|
13
|
+
useAlias: false,
|
|
14
|
+
customKeys: true
|
|
15
|
+
}), null, data.indent));
|
|
16
|
+
}
|
|
17
|
+
}).token();
|
|
@@ -9,7 +9,7 @@ export var FeatureType;
|
|
|
9
9
|
FeatureType["PASSPORTJS"] = "passportjs";
|
|
10
10
|
FeatureType["CONFIG"] = "config";
|
|
11
11
|
FeatureType["COMMANDS"] = "commands";
|
|
12
|
-
FeatureType["
|
|
12
|
+
FeatureType["ORM"] = "orm";
|
|
13
13
|
FeatureType["DOC"] = "doc";
|
|
14
14
|
// CONFIG
|
|
15
15
|
FeatureType["CONFIG_ENVS"] = "config:envs";
|
|
@@ -22,35 +22,35 @@ export var FeatureType;
|
|
|
22
22
|
FeatureType["CONFIG_VAULT"] = "config:vault:premium";
|
|
23
23
|
FeatureType["CONFIG_POSTGRES"] = "config:postgres:premium";
|
|
24
24
|
// DOC
|
|
25
|
-
FeatureType["SWAGGER"] = "swagger";
|
|
26
|
-
FeatureType["SCALAR"] = "scalar";
|
|
25
|
+
FeatureType["SWAGGER"] = "doc:swagger";
|
|
26
|
+
FeatureType["SCALAR"] = "doc:scalar";
|
|
27
27
|
// ORM
|
|
28
|
-
FeatureType["PRISMA"] = "prisma";
|
|
29
|
-
FeatureType["MONGOOSE"] = "mongoose";
|
|
28
|
+
FeatureType["PRISMA"] = "orm:prisma";
|
|
29
|
+
FeatureType["MONGOOSE"] = "orm:mongoose";
|
|
30
30
|
// TYPEORM
|
|
31
|
-
FeatureType["TYPEORM"] = "typeorm";
|
|
32
|
-
FeatureType["TYPEORM_MYSQL"] = "typeorm:mysql";
|
|
33
|
-
FeatureType["TYPEORM_MARIADB"] = "typeorm:mariadb";
|
|
34
|
-
FeatureType["TYPEORM_POSTGRES"] = "typeorm:postgres";
|
|
35
|
-
FeatureType["TYPEORM_COCKROACHDB"] = "typeorm:cockroachdb";
|
|
36
|
-
FeatureType["TYPEORM_SQLITE"] = "typeorm:sqlite";
|
|
37
|
-
FeatureType["TYPEORM_BETTER_SQLITE3"] = "typeorm:better-sqlite3";
|
|
38
|
-
FeatureType["TYPEORM_CORDOVA"] = "typeorm:cordova";
|
|
39
|
-
FeatureType["TYPEORM_NATIVESCRIPT"] = "typeorm:nativescript";
|
|
40
|
-
FeatureType["TYPEORM_ORACLE"] = "typeorm:oracle";
|
|
41
|
-
FeatureType["TYPEORM_MSSQL"] = "typeorm:mssql";
|
|
42
|
-
FeatureType["TYPEORM_MONGODB"] = "typeorm:mongodb";
|
|
43
|
-
FeatureType["TYPEORM_SQLJS"] = "typeorm:sqljs";
|
|
44
|
-
FeatureType["TYPEORM_REACTNATIVE"] = "typeorm:reactnative";
|
|
45
|
-
FeatureType["TYPEORM_EXPO"] = "typeorm:expo";
|
|
31
|
+
FeatureType["TYPEORM"] = "orm:typeorm";
|
|
32
|
+
FeatureType["TYPEORM_MYSQL"] = "orm:typeorm:mysql";
|
|
33
|
+
FeatureType["TYPEORM_MARIADB"] = "orm:typeorm:mariadb";
|
|
34
|
+
FeatureType["TYPEORM_POSTGRES"] = "orm:typeorm:postgres";
|
|
35
|
+
FeatureType["TYPEORM_COCKROACHDB"] = "orm:typeorm:cockroachdb";
|
|
36
|
+
FeatureType["TYPEORM_SQLITE"] = "orm:typeorm:sqlite";
|
|
37
|
+
FeatureType["TYPEORM_BETTER_SQLITE3"] = "orm:typeorm:better-sqlite3";
|
|
38
|
+
FeatureType["TYPEORM_CORDOVA"] = "orm:typeorm:cordova";
|
|
39
|
+
FeatureType["TYPEORM_NATIVESCRIPT"] = "orm:typeorm:nativescript";
|
|
40
|
+
FeatureType["TYPEORM_ORACLE"] = "orm:typeorm:oracle";
|
|
41
|
+
FeatureType["TYPEORM_MSSQL"] = "orm:typeorm:mssql";
|
|
42
|
+
FeatureType["TYPEORM_MONGODB"] = "orm:typeorm:mongodb";
|
|
43
|
+
FeatureType["TYPEORM_SQLJS"] = "orm:typeorm:sqljs";
|
|
44
|
+
FeatureType["TYPEORM_REACTNATIVE"] = "orm:typeorm:reactnative";
|
|
45
|
+
FeatureType["TYPEORM_EXPO"] = "orm:typeorm:expo";
|
|
46
46
|
// TESTING & LINTER
|
|
47
47
|
FeatureType["TESTING"] = "testing";
|
|
48
|
-
FeatureType["JEST"] = "jest";
|
|
49
|
-
FeatureType["VITEST"] = "vitest";
|
|
48
|
+
FeatureType["JEST"] = "testing:jest";
|
|
49
|
+
FeatureType["VITEST"] = "testing:vitest";
|
|
50
50
|
FeatureType["LINTER"] = "linter";
|
|
51
|
-
FeatureType["ESLINT"] = "eslint";
|
|
52
|
-
FeatureType["LINT_STAGED"] = "lintstaged";
|
|
53
|
-
FeatureType["PRETTIER"] = "prettier";
|
|
51
|
+
FeatureType["ESLINT"] = "linter:eslint";
|
|
52
|
+
FeatureType["LINT_STAGED"] = "linter:lintstaged";
|
|
53
|
+
FeatureType["PRETTIER"] = "linter:prettier";
|
|
54
54
|
})(FeatureType || (FeatureType = {}));
|
|
55
55
|
export const FeaturesMap = {
|
|
56
56
|
[PlatformType.EXPRESS]: {
|
|
@@ -77,7 +77,7 @@ export const FeaturesMap = {
|
|
|
77
77
|
[FeatureType.DOC]: {
|
|
78
78
|
name: "Documentation"
|
|
79
79
|
},
|
|
80
|
-
[FeatureType.
|
|
80
|
+
[FeatureType.ORM]: {
|
|
81
81
|
name: "Database"
|
|
82
82
|
},
|
|
83
83
|
[FeatureType.PASSPORTJS]: {
|
|
@@ -363,14 +363,13 @@ export const FeaturesMap = {
|
|
|
363
363
|
checked: false
|
|
364
364
|
}
|
|
365
365
|
};
|
|
366
|
-
export const FrameworksPrompt = {
|
|
367
|
-
message: "Choose the target Framework:",
|
|
368
|
-
type: "list",
|
|
369
|
-
name: "platform",
|
|
370
|
-
choices: [PlatformType.EXPRESS, PlatformType.KOA, PlatformType.FASTIFY]
|
|
371
|
-
};
|
|
372
366
|
export const FeaturesPrompt = (availableRuntimes, availablePackageManagers) => [
|
|
373
|
-
|
|
367
|
+
{
|
|
368
|
+
message: "Choose the target Framework:",
|
|
369
|
+
type: "list",
|
|
370
|
+
name: "platform",
|
|
371
|
+
choices: [PlatformType.EXPRESS, PlatformType.KOA, PlatformType.FASTIFY]
|
|
372
|
+
},
|
|
374
373
|
{
|
|
375
374
|
message: "Choose the architecture for your project:",
|
|
376
375
|
type: "list",
|
|
@@ -386,11 +385,11 @@ export const FeaturesPrompt = (availableRuntimes, availablePackageManagers) => [
|
|
|
386
385
|
{
|
|
387
386
|
type: "checkbox",
|
|
388
387
|
name: "features",
|
|
389
|
-
message: "
|
|
388
|
+
message: "Choose the features needed for your project",
|
|
390
389
|
choices: [
|
|
391
390
|
FeatureType.CONFIG,
|
|
392
391
|
FeatureType.GRAPHQL,
|
|
393
|
-
FeatureType.
|
|
392
|
+
FeatureType.ORM,
|
|
394
393
|
FeatureType.PASSPORTJS,
|
|
395
394
|
FeatureType.SOCKETIO,
|
|
396
395
|
FeatureType.DOC,
|
|
@@ -428,7 +427,7 @@ export const FeaturesPrompt = (availableRuntimes, availablePackageManagers) => [
|
|
|
428
427
|
message: "Choose a ORM manager",
|
|
429
428
|
type: "list",
|
|
430
429
|
name: "featuresDB",
|
|
431
|
-
when: hasFeature(FeatureType.
|
|
430
|
+
when: hasFeature(FeatureType.ORM),
|
|
432
431
|
choices: [FeatureType.PRISMA, FeatureType.MONGOOSE, FeatureType.TYPEORM]
|
|
433
432
|
},
|
|
434
433
|
{
|