@tsed/cli-core 4.4.6 → 4.5.0

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.
Files changed (75) hide show
  1. package/lib/cjs/CliCore.js +2 -0
  2. package/lib/cjs/CliCore.js.map +1 -1
  3. package/lib/cjs/interfaces/CommandMetadata.js.map +1 -1
  4. package/lib/cjs/interfaces/CommandParameters.js.map +1 -1
  5. package/lib/cjs/services/CliFs.js +11 -0
  6. package/lib/cjs/services/CliFs.js.map +1 -1
  7. package/lib/cjs/services/CliPlugins.js +3 -1
  8. package/lib/cjs/services/CliPlugins.js.map +1 -1
  9. package/lib/cjs/services/CliService.js +44 -28
  10. package/lib/cjs/services/CliService.js.map +1 -1
  11. package/lib/cjs/services/ProjectPackageJson.js +111 -167
  12. package/lib/cjs/services/ProjectPackageJson.js.map +1 -1
  13. package/lib/cjs/services/packageManagers/BaseManager.js +36 -0
  14. package/lib/cjs/services/packageManagers/BaseManager.js.map +1 -0
  15. package/lib/cjs/services/packageManagers/NpmManager.js +26 -0
  16. package/lib/cjs/services/packageManagers/NpmManager.js.map +1 -0
  17. package/lib/cjs/services/packageManagers/PNpmManager.js +26 -0
  18. package/lib/cjs/services/packageManagers/PNpmManager.js.map +1 -0
  19. package/lib/cjs/services/packageManagers/YarnBerryManager.js +43 -0
  20. package/lib/cjs/services/packageManagers/YarnBerryManager.js.map +1 -0
  21. package/lib/cjs/services/packageManagers/YarnManager.js +26 -0
  22. package/lib/cjs/services/packageManagers/YarnManager.js.map +1 -0
  23. package/lib/cjs/utils/getCommandMetadata.js +5 -2
  24. package/lib/cjs/utils/getCommandMetadata.js.map +1 -1
  25. package/lib/cjs/utils/index.js +1 -1
  26. package/lib/cjs/utils/index.js.map +1 -1
  27. package/lib/cjs/utils/resolveConfiguration.js +23 -0
  28. package/lib/cjs/utils/resolveConfiguration.js.map +1 -0
  29. package/lib/esm/CliCore.js +2 -0
  30. package/lib/esm/CliCore.js.map +1 -1
  31. package/lib/esm/interfaces/CommandMetadata.js.map +1 -1
  32. package/lib/esm/interfaces/CommandParameters.js.map +1 -1
  33. package/lib/esm/services/CliFs.js +11 -0
  34. package/lib/esm/services/CliFs.js.map +1 -1
  35. package/lib/esm/services/CliPlugins.js +3 -1
  36. package/lib/esm/services/CliPlugins.js.map +1 -1
  37. package/lib/esm/services/CliService.js +45 -29
  38. package/lib/esm/services/CliService.js.map +1 -1
  39. package/lib/esm/services/ProjectPackageJson.js +112 -168
  40. package/lib/esm/services/ProjectPackageJson.js.map +1 -1
  41. package/lib/esm/services/packageManagers/BaseManager.js +32 -0
  42. package/lib/esm/services/packageManagers/BaseManager.js.map +1 -0
  43. package/lib/esm/services/packageManagers/NpmManager.js +23 -0
  44. package/lib/esm/services/packageManagers/NpmManager.js.map +1 -0
  45. package/lib/esm/services/packageManagers/PNpmManager.js +23 -0
  46. package/lib/esm/services/packageManagers/PNpmManager.js.map +1 -0
  47. package/lib/esm/services/packageManagers/YarnBerryManager.js +40 -0
  48. package/lib/esm/services/packageManagers/YarnBerryManager.js.map +1 -0
  49. package/lib/esm/services/packageManagers/YarnManager.js +23 -0
  50. package/lib/esm/services/packageManagers/YarnManager.js.map +1 -0
  51. package/lib/esm/utils/getCommandMetadata.js +5 -2
  52. package/lib/esm/utils/getCommandMetadata.js.map +1 -1
  53. package/lib/esm/utils/index.js +1 -1
  54. package/lib/esm/utils/index.js.map +1 -1
  55. package/lib/esm/utils/resolveConfiguration.js +19 -0
  56. package/lib/esm/utils/resolveConfiguration.js.map +1 -0
  57. package/lib/types/interfaces/CommandMetadata.d.ts +5 -12
  58. package/lib/types/interfaces/CommandParameters.d.ts +3 -0
  59. package/lib/types/services/CliFs.d.ts +3 -0
  60. package/lib/types/services/CliService.d.ts +10 -9
  61. package/lib/types/services/ProjectPackageJson.d.ts +26 -29
  62. package/lib/types/services/packageManagers/BaseManager.d.ts +25 -0
  63. package/lib/types/services/packageManagers/NpmManager.d.ts +9 -0
  64. package/lib/types/services/packageManagers/PNpmManager.d.ts +9 -0
  65. package/lib/types/services/packageManagers/YarnBerryManager.d.ts +15 -0
  66. package/lib/types/services/packageManagers/YarnManager.d.ts +12 -0
  67. package/lib/types/utils/getCommandMetadata.d.ts +2 -12
  68. package/lib/types/utils/index.d.ts +1 -1
  69. package/lib/types/utils/resolveConfiguration.d.ts +1 -0
  70. package/package.json +5 -3
  71. package/lib/cjs/utils/getPackageJson.js +0 -36
  72. package/lib/cjs/utils/getPackageJson.js.map +0 -1
  73. package/lib/esm/utils/getPackageJson.js +0 -31
  74. package/lib/esm/utils/getPackageJson.js.map +0 -1
  75. package/lib/types/utils/getPackageJson.d.ts +0 -2
@@ -0,0 +1,23 @@
1
+ import { __decorate } from "tslib";
2
+ import { Injectable } from "@tsed/di";
3
+ import { BaseManager } from "./BaseManager.js";
4
+ let YarnManager = class YarnManager extends BaseManager {
5
+ name = "yarn";
6
+ cmd = "yarn";
7
+ add(deps, options) {
8
+ return this.run("add", deps, options);
9
+ }
10
+ addDev(deps, options) {
11
+ return this.run("add", ["-D", ...deps], options);
12
+ }
13
+ install(options) {
14
+ return this.run("install", [options.verbose && "--verbose"], options);
15
+ }
16
+ };
17
+ YarnManager = __decorate([
18
+ Injectable({
19
+ type: "package:manager"
20
+ })
21
+ ], YarnManager);
22
+ export { YarnManager };
23
+ //# sourceMappingURL=YarnManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"YarnManager.js","sourceRoot":"","sources":["../../../../src/services/packageManagers/YarnManager.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AAGpC,OAAO,EAAC,WAAW,EAAiB,MAAM,eAAe,CAAC;AAKnD,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,WAAW;IACjC,IAAI,GAAG,MAAM,CAAC;IACd,GAAG,GAAG,MAAM,CAAC;IAEtB,GAAG,CAAC,IAAc,EAAE,OAAuB;QACzC,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,CAAC,IAAc,EAAE,OAAuB;QAC5C,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,CAAC,OAA4C;QAClD,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,OAAO,IAAI,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;IACxE,CAAC;CACF,CAAA;AAfY,WAAW;IAHvB,UAAU,CAAC;QACV,IAAI,EAAE,iBAAiB;KACxB,CAAC;GACW,WAAW,CAevB;SAfY,WAAW","sourcesContent":["import {Injectable} from \"@tsed/di\";\nimport execa from \"execa\";\nimport {Observable} from \"rxjs\";\nimport {BaseManager, ManagerCmdOpts} from \"./BaseManager\";\n\n@Injectable({\n type: \"package:manager\"\n})\nexport class YarnManager extends BaseManager {\n readonly name = \"yarn\";\n readonly cmd = \"yarn\";\n\n add(deps: string[], options: ManagerCmdOpts) {\n return this.run(\"add\", deps, options);\n }\n\n addDev(deps: string[], options: ManagerCmdOpts) {\n return this.run(\"add\", [\"-D\", ...deps], options);\n }\n\n install(options: {verbose?: boolean} & execa.Options): Observable<any> {\n return this.run(\"install\", [options.verbose && \"--verbose\"], options);\n }\n}\n"]}
@@ -1,14 +1,17 @@
1
1
  import { Store } from "@tsed/core";
2
2
  import { CommandStoreKeys } from "../domains/CommandStoreKeys.js";
3
3
  export function getCommandMetadata(token) {
4
- const { name, alias, args = {}, allowUnknownOption, description, options = {} } = Store.from(token)?.get(CommandStoreKeys.COMMAND);
4
+ const { name, alias, args = {}, allowUnknownOption, description, options = {}, enableFeatures, disableReadUpPkg, ...opts } = Store.from(token)?.get(CommandStoreKeys.COMMAND);
5
5
  return {
6
6
  name,
7
7
  alias,
8
8
  args,
9
9
  description,
10
10
  options,
11
- allowUnknownOption: !!allowUnknownOption
11
+ allowUnknownOption: !!allowUnknownOption,
12
+ enableFeatures: enableFeatures || [],
13
+ disableReadUpPkg: !!disableReadUpPkg,
14
+ ...opts
12
15
  };
13
16
  }
14
17
  //# sourceMappingURL=getCommandMetadata.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getCommandMetadata.js","sourceRoot":"","sources":["../../../src/utils/getCommandMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAO,MAAM,YAAY,CAAC;AACvC,OAAO,EAAC,gBAAgB,EAAC,MAAM,6BAA6B,CAAC;AAG7D,MAAM,UAAU,kBAAkB,CAAC,KAAgB;IACjD,MAAM,EACJ,IAAI,EACJ,KAAK,EACL,IAAI,GAAG,EAAE,EACT,kBAAkB,EAClB,WAAW,EACX,OAAO,GAAG,EAAE,EACb,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAsB,CAAC;IAE1E,OAAO;QACL,IAAI;QACJ,KAAK;QACL,IAAI;QACJ,WAAW;QACX,OAAO;QACP,kBAAkB,EAAE,CAAC,CAAC,kBAAkB;KACzC,CAAC;AACJ,CAAC","sourcesContent":["import {Store, Type} from \"@tsed/core\";\nimport {CommandStoreKeys} from \"../domains/CommandStoreKeys\";\nimport {CommandParameters} from \"../interfaces/CommandParameters\";\n\nexport function getCommandMetadata(token: Type<any>) {\n const {\n name,\n alias,\n args = {},\n allowUnknownOption,\n description,\n options = {}\n } = Store.from(token)?.get(CommandStoreKeys.COMMAND) as CommandParameters;\n\n return {\n name,\n alias,\n args,\n description,\n options,\n allowUnknownOption: !!allowUnknownOption\n };\n}\n"]}
1
+ {"version":3,"file":"getCommandMetadata.js","sourceRoot":"","sources":["../../../src/utils/getCommandMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAO,MAAM,YAAY,CAAC;AACvC,OAAO,EAAC,gBAAgB,EAAC,MAAM,6BAA6B,CAAC;AAI7D,MAAM,UAAU,kBAAkB,CAAC,KAAgB;IACjD,MAAM,EACJ,IAAI,EACJ,KAAK,EACL,IAAI,GAAG,EAAE,EACT,kBAAkB,EAClB,WAAW,EACX,OAAO,GAAG,EAAE,EACZ,cAAc,EACd,gBAAgB,EAChB,GAAG,IAAI,EACR,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAsB,CAAC;IAE1E,OAAO;QACL,IAAI;QACJ,KAAK;QACL,IAAI;QACJ,WAAW;QACX,OAAO;QACP,kBAAkB,EAAE,CAAC,CAAC,kBAAkB;QACxC,cAAc,EAAE,cAAc,IAAI,EAAE;QACpC,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;QACpC,GAAG,IAAI;KACR,CAAC;AACJ,CAAC","sourcesContent":["import {Store, Type} from \"@tsed/core\";\nimport {CommandStoreKeys} from \"../domains/CommandStoreKeys\";\nimport {CommandParameters} from \"../interfaces/CommandParameters\";\nimport {CommandMetadata} from \"../interfaces/CommandMetadata\";\n\nexport function getCommandMetadata(token: Type<any>): CommandMetadata {\n const {\n name,\n alias,\n args = {},\n allowUnknownOption,\n description,\n options = {},\n enableFeatures,\n disableReadUpPkg,\n ...opts\n } = Store.from(token)?.get(CommandStoreKeys.COMMAND) as CommandParameters;\n\n return {\n name,\n alias,\n args,\n description,\n options,\n allowUnknownOption: !!allowUnknownOption,\n enableFeatures: enableFeatures || [],\n disableReadUpPkg: !!disableReadUpPkg,\n ...opts\n };\n}\n"]}
@@ -6,7 +6,7 @@ export * from "./mapCommanderArgs.js";
6
6
  export * from "./mapCommanderOptions.js";
7
7
  export * from "./parseOption.js";
8
8
  export * from "./createTasksRunner.js";
9
- export * from "./getPackageJson.js";
9
+ export * from "./resolveConfiguration.js";
10
10
  export * from "./getTemplateDirectory.js";
11
11
  export { default as filedirname } from "filedirname";
12
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAC,OAAO,IAAI,WAAW,EAAC,MAAM,aAAa,CAAC","sourcesContent":["export * from \"./createInjector\";\nexport * from \"./getCommandMetadata\";\nexport * from \"./loadPlugins\";\nexport * from \"./logToCurl\";\nexport * from \"./mapCommanderArgs\";\nexport * from \"./mapCommanderOptions\";\nexport * from \"./parseOption\";\nexport * from \"./createTasksRunner\";\nexport * from \"./getPackageJson\";\nexport * from \"./getTemplateDirectory\";\nexport {default as filedirname} from \"filedirname\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAC,OAAO,IAAI,WAAW,EAAC,MAAM,aAAa,CAAC","sourcesContent":["export * from \"./createInjector\";\nexport * from \"./getCommandMetadata\";\nexport * from \"./loadPlugins\";\nexport * from \"./logToCurl\";\nexport * from \"./mapCommanderArgs\";\nexport * from \"./mapCommanderOptions\";\nexport * from \"./parseOption\";\nexport * from \"./createTasksRunner\";\nexport * from \"./resolveConfiguration\";\nexport * from \"./getTemplateDirectory\";\nexport {default as filedirname} from \"filedirname\";\n"]}
@@ -0,0 +1,19 @@
1
+ import { getValue } from "@tsed/core";
2
+ import { getCommandMetadata } from "./getCommandMetadata.js";
3
+ export function resolveConfiguration(settings) {
4
+ const argv = getValue(settings, "argv", process.argv);
5
+ const configResolvers = getValue(settings, "configResolvers", []);
6
+ const commands = getValue(settings, "commands", []);
7
+ const commandOpts = commands
8
+ .map((token) => getCommandMetadata(token))
9
+ .find((commandOpts) => argv.includes(commandOpts.name));
10
+ settings = {
11
+ ...settings,
12
+ commands,
13
+ command: commandOpts || {},
14
+ argv
15
+ };
16
+ configResolvers.map((resolver) => resolver(settings));
17
+ return settings;
18
+ }
19
+ //# sourceMappingURL=resolveConfiguration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveConfiguration.js","sourceRoot":"","sources":["../../../src/utils/resolveConfiguration.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AACpC,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AAExD,MAAM,UAAU,oBAAoB,CAAC,QAAa;IAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,MAAM,eAAe,GAAG,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;IAEpD,MAAM,WAAW,GAAG,QAAQ;SACzB,GAAG,CAAC,CAAC,KAAoB,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;SACxD,IAAI,CAAC,CAAC,WAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAE/D,QAAQ,GAAG;QACT,GAAG,QAAQ;QACX,QAAQ;QACR,OAAO,EAAE,WAAW,IAAI,EAAE;QAC1B,IAAI;KACL,CAAC;IAEF,eAAe,CAAC,GAAG,CAAC,CAAC,QAAiC,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE/E,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["import {TokenProvider} from \"@tsed/di\";\nimport {getValue} from \"@tsed/core\";\nimport {getCommandMetadata} from \"./getCommandMetadata\";\n\nexport function resolveConfiguration(settings: any) {\n const argv = getValue(settings, \"argv\", process.argv);\n const configResolvers = getValue(settings, \"configResolvers\", []);\n const commands = getValue(settings, \"commands\", []);\n\n const commandOpts = commands\n .map((token: TokenProvider) => getCommandMetadata(token))\n .find((commandOpts: any) => argv.includes(commandOpts.name));\n\n settings = {\n ...settings,\n commands,\n command: commandOpts || {},\n argv\n };\n\n configResolvers.map((resolver: (settings: any) => void) => resolver(settings));\n\n return settings;\n}\n"]}
@@ -1,14 +1,5 @@
1
- import { CommandArg, CommandOptions } from "./CommandParameters";
2
- export interface CommandMetadata {
3
- /**
4
- * name commands
5
- */
6
- name: string;
7
- alias?: string;
8
- /**
9
- * CommandProvider description
10
- */
11
- description: string;
1
+ import { CommandArg, CommandOptions, CommandParameters } from "./CommandParameters";
2
+ export interface CommandMetadata extends CommandParameters {
12
3
  /**
13
4
  * CommandProvider arguments
14
5
  */
@@ -21,5 +12,7 @@ export interface CommandMetadata {
21
12
  options: {
22
13
  [key: string]: CommandOptions;
23
14
  };
24
- allowUnknownOption?: boolean;
15
+ allowUnknownOption: boolean;
16
+ enableFeatures: string[];
17
+ disableReadUpPkg: boolean;
25
18
  }
@@ -53,6 +53,7 @@ export interface CommandParameters {
53
53
  * name commands
54
54
  */
55
55
  name: string;
56
+ alias?: string;
56
57
  /**
57
58
  * CommandProvider description
58
59
  */
@@ -70,5 +71,7 @@ export interface CommandParameters {
70
71
  [key: string]: CommandOptions;
71
72
  };
72
73
  allowUnknownOption?: boolean;
74
+ enableFeatures?: string[];
75
+ disableReadUpPkg?: boolean;
73
76
  [key: string]: any;
74
77
  }
@@ -8,6 +8,9 @@ export declare class CliFs {
8
8
  exists(path: string): boolean;
9
9
  join(...args: string[]): string;
10
10
  readFile(file: string | Buffer | number, encoding?: any): Promise<string>;
11
+ readFileSync(file: string | Buffer | number, encoding?: any): any;
12
+ readJson(file: string, encoding?: any): Promise<any>;
13
+ readJsonSync(file: string, encoding?: any): Promise<any>;
11
14
  writeJson(file: string | Buffer | number, data: any, options?: WriteFileOptions | string): Promise<any>;
12
15
  writeFileSync(path: PathLike | number, data: any, options?: WriteFileOptions): void;
13
16
  writeFile(file: string | Buffer | number, data: any, options?: WriteFileOptions | string): void;
@@ -1,8 +1,8 @@
1
- import { InjectorService } from "@tsed/di";
1
+ import { DIContext, InjectorService } from "@tsed/di";
2
2
  import { Command } from "commander";
3
- import { CommandMetadata } from "../interfaces/CommandMetadata";
4
3
  import { CliHooks } from "./CliHooks";
5
4
  import { ProjectPackageJson } from "./ProjectPackageJson";
5
+ import { CommandMetadata } from "../interfaces/CommandMetadata";
6
6
  export declare class CliService {
7
7
  readonly program: Command;
8
8
  reinstallAfterRun: boolean;
@@ -20,10 +20,11 @@ export declare class CliService {
20
20
  * Run lifecycle
21
21
  * @param cmdName
22
22
  * @param data
23
+ * @param $ctx
23
24
  */
24
- runLifecycle(cmdName: string, data?: any): Promise<void>;
25
- dispatch(cmdName: string, data: any): Promise<void>;
26
- exec(cmdName: string, ctx: any): Promise<any>;
25
+ runLifecycle(cmdName: string, data: any, $ctx: DIContext): Promise<any>;
26
+ dispatch(cmdName: string, data: any, $ctx: DIContext): Promise<void>;
27
+ exec(cmdName: string, data: any, $ctx: DIContext): Promise<any>;
27
28
  /**
28
29
  * Run prompt for a given command
29
30
  * @param cmdName
@@ -39,13 +40,13 @@ export declare class CliService {
39
40
  /**
40
41
  * Run lifecycle
41
42
  * @param cmdName
42
- * @param ctx
43
+ * @param data
43
44
  */
44
- getTasks(cmdName: string, ctx: any): Promise<any[]>;
45
- getPostInstallTasks(cmdName: string, ctx: any): Promise<any[]>;
45
+ getTasks(cmdName: string, data: any): Promise<any[]>;
46
+ getPostInstallTasks(cmdName: string, data: any): Promise<any[]>;
46
47
  createCommand(metadata: CommandMetadata): any;
47
48
  private load;
48
- private mapContext;
49
+ private mapData;
49
50
  /**
50
51
  * Build command and sub-commands
51
52
  * @param provider
@@ -1,22 +1,22 @@
1
1
  import { Configuration } from "@tsed/di";
2
2
  import { PackageJson } from "../interfaces/PackageJson";
3
- import { PackageManager, ProjectPreferences } from "../interfaces/ProjectPreferences";
4
- import { CliExeca } from "./CliExeca";
3
+ import { ProjectPreferences } from "../interfaces/ProjectPreferences";
5
4
  import { CliFs } from "./CliFs";
6
5
  import { Options } from "execa";
6
+ import { BaseManager } from "./packageManagers/BaseManager";
7
7
  export interface InstallOptions {
8
- packageManager?: PackageManager;
8
+ packageManager?: string;
9
9
  [key: string]: any;
10
10
  }
11
11
  export declare class ProjectPackageJson {
12
12
  private configuration;
13
+ protected fs: CliFs;
14
+ protected packageManagers: BaseManager[];
13
15
  rewrite: boolean;
14
16
  reinstall: boolean;
15
- protected cliExeca: CliExeca;
16
- protected fs: CliFs;
17
17
  private GH_TOKEN;
18
18
  private raw;
19
- constructor(configuration: Configuration);
19
+ constructor(configuration: Configuration, fs: CliFs, packageManagers: BaseManager[]);
20
20
  get path(): string;
21
21
  get dir(): string;
22
22
  set dir(dir: string);
@@ -37,10 +37,12 @@ export declare class ProjectPackageJson {
37
37
  [key: string]: string;
38
38
  };
39
39
  get preferences(): ProjectPreferences;
40
+ get availablePackageManagers(): string[];
40
41
  toJSON(): PackageJson;
41
42
  read(): this;
42
43
  setRaw(pkg: any): void;
43
- getRunCmd(): "npm run" | "pnpm run" | "yarn run";
44
+ packageManager(name?: string): BaseManager;
45
+ getRunCmd(): string;
44
46
  addDevDependency(pkg: string, version?: string): this;
45
47
  addDevDependencies(modules: {
46
48
  [key: string]: string | undefined;
@@ -58,44 +60,39 @@ export declare class ProjectPackageJson {
58
60
  set(key: string, value: any): void;
59
61
  get(key: string): any;
60
62
  write(): this;
61
- hasYarn(): boolean;
63
+ init(options?: InstallOptions): Promise<void>;
62
64
  install(options?: InstallOptions): ({
63
- title: string;
64
- skip: () => boolean;
65
- task: () => any;
66
- } | {
67
65
  title: string;
68
66
  enabled: () => boolean;
69
67
  task: () => void;
68
+ skip?: undefined;
69
+ } | {
70
+ title: string;
71
+ skip: () => boolean;
72
+ task: () => import("rxjs").Observable<unknown>;
73
+ enabled?: undefined;
70
74
  } | {
71
75
  title: string;
72
76
  task: () => void;
73
77
  enabled?: undefined;
78
+ skip?: undefined;
74
79
  })[];
75
80
  /**
76
81
  * Import a module from the project workspace
77
82
  * @param mod
78
83
  */
79
84
  importModule(mod: string): Promise<any>;
80
- runScript(npmTask: string, { ignoreError, ...opts }?: {
85
+ runScript(scriptName: string, { ignoreError, ...opts }?: {
81
86
  ignoreError?: boolean;
82
87
  } & Options & Record<string, any>): import("rxjs").Observable<unknown>;
83
- getPackageManager(packageManager?: PackageManager): PackageManager;
84
88
  setGhToken(GH_TOKEN: string): void;
85
- protected installWithYarn({ verbose }: any): {
86
- title: string;
87
- skip: () => boolean;
88
- task: () => import("rxjs").Observable<unknown>;
89
- }[];
90
- protected installWithNpm({ verbose }: any): {
91
- title: string;
92
- skip: () => boolean;
93
- task: () => import("rxjs").Observable<any>;
94
- }[];
95
- protected installWithPnpm({ verbose }: any): {
96
- title: string;
97
- skip: () => boolean;
98
- task: () => import("rxjs").Observable<any>;
99
- }[];
100
89
  protected getPackageJson(): any;
90
+ protected getEmptyPackageJson(name: string): {
91
+ name: string;
92
+ version: string;
93
+ description: string;
94
+ scripts: {};
95
+ dependencies: {};
96
+ devDependencies: {};
97
+ };
101
98
  }
@@ -0,0 +1,25 @@
1
+ import { Observable } from "rxjs";
2
+ import execa from "execa";
3
+ import { CliExeca } from "../CliExeca";
4
+ export declare type ManagerCmdOpts = {
5
+ verbose?: boolean;
6
+ } & execa.Options;
7
+ export declare type ManagerCmdSyncOpts = {
8
+ verbose?: boolean;
9
+ } & execa.SyncOptions;
10
+ export declare abstract class BaseManager {
11
+ abstract readonly name: string;
12
+ abstract readonly cmd: string;
13
+ protected verboseOpt: string;
14
+ protected cliExeca: CliExeca;
15
+ get runCmd(): string;
16
+ has(): boolean;
17
+ init(opts: ManagerCmdSyncOpts): Promise<void>;
18
+ abstract install(options: ManagerCmdOpts): Observable<any>;
19
+ abstract add(deps: string[], options: ManagerCmdOpts): Observable<any>;
20
+ abstract addDev(deps: string[], options: ManagerCmdOpts): Observable<any>;
21
+ runScript(script: string, options: ManagerCmdOpts): Observable<any>;
22
+ protected run(cmd: string, args: any[], options: {
23
+ verbose?: boolean;
24
+ } & execa.Options<string>): Observable<any>;
25
+ }
@@ -0,0 +1,9 @@
1
+ import { BaseManager, ManagerCmdOpts } from "./BaseManager";
2
+ import { Observable } from "rxjs";
3
+ export declare class NpmManager extends BaseManager {
4
+ readonly name: string;
5
+ readonly cmd: string;
6
+ add(deps: string[], options: ManagerCmdOpts): Observable<any>;
7
+ addDev(deps: string[], options: ManagerCmdOpts): Observable<any>;
8
+ install(options: ManagerCmdOpts): Observable<any>;
9
+ }
@@ -0,0 +1,9 @@
1
+ import { Observable } from "rxjs";
2
+ import { BaseManager, ManagerCmdOpts } from "./BaseManager";
3
+ export declare class PNpmManager extends BaseManager {
4
+ readonly name = "pnpm";
5
+ readonly cmd = "pnpm";
6
+ add(deps: string[], options: ManagerCmdOpts): Observable<any>;
7
+ addDev(deps: string[], options: ManagerCmdOpts): Observable<any>;
8
+ install(options: ManagerCmdOpts): Observable<any>;
9
+ }
@@ -0,0 +1,15 @@
1
+ import execa from "execa";
2
+ import { Observable } from "rxjs";
3
+ import { BaseManager, ManagerCmdOpts, ManagerCmdSyncOpts } from "./BaseManager";
4
+ import { CliYaml } from "../CliYaml";
5
+ export declare class YarnBerryManager extends BaseManager {
6
+ readonly name = "yarn_berry";
7
+ readonly cmd = "yarn";
8
+ protected cliYaml: CliYaml;
9
+ init(options: ManagerCmdSyncOpts): Promise<void>;
10
+ add(deps: string[], options: ManagerCmdOpts): Observable<any>;
11
+ addDev(deps: string[], options: ManagerCmdOpts): Observable<any>;
12
+ install(options: {
13
+ verbose?: boolean;
14
+ } & execa.Options): Observable<any>;
15
+ }
@@ -0,0 +1,12 @@
1
+ import execa from "execa";
2
+ import { Observable } from "rxjs";
3
+ import { BaseManager, ManagerCmdOpts } from "./BaseManager";
4
+ export declare class YarnManager extends BaseManager {
5
+ readonly name = "yarn";
6
+ readonly cmd = "yarn";
7
+ add(deps: string[], options: ManagerCmdOpts): Observable<any>;
8
+ addDev(deps: string[], options: ManagerCmdOpts): Observable<any>;
9
+ install(options: {
10
+ verbose?: boolean;
11
+ } & execa.Options): Observable<any>;
12
+ }
@@ -1,13 +1,3 @@
1
1
  import { Type } from "@tsed/core";
2
- export declare function getCommandMetadata(token: Type<any>): {
3
- name: string;
4
- alias: any;
5
- args: {
6
- [key: string]: import("../interfaces/CommandParameters").CommandArg;
7
- };
8
- description: string;
9
- options: {
10
- [key: string]: import("../interfaces/CommandParameters").CommandOptions;
11
- };
12
- allowUnknownOption: boolean;
13
- };
2
+ import { CommandMetadata } from "../interfaces/CommandMetadata";
3
+ export declare function getCommandMetadata(token: Type<any>): CommandMetadata;
@@ -6,6 +6,6 @@ export * from "./mapCommanderArgs";
6
6
  export * from "./mapCommanderOptions";
7
7
  export * from "./parseOption";
8
8
  export * from "./createTasksRunner";
9
- export * from "./getPackageJson";
9
+ export * from "./resolveConfiguration";
10
10
  export * from "./getTemplateDirectory";
11
11
  export { default as filedirname } from "filedirname";
@@ -0,0 +1 @@
1
+ export declare function resolveConfiguration(settings: any): any;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tsed/cli-core",
3
- "version": "4.4.6",
3
+ "version": "4.5.0",
4
4
  "description": "Build your CLI with TypeScript and Decorators",
5
5
  "source": "./src/index.ts",
6
6
  "main": "./lib/cjs/index.js",
@@ -62,7 +62,8 @@
62
62
  "tslib": "2.3.1",
63
63
  "tunnel": "0.0.6",
64
64
  "update-notifier": "5.1.0",
65
- "url-parse": "1.5.10"
65
+ "url-parse": "1.5.10",
66
+ "uuid": "^8.3.2"
66
67
  },
67
68
  "devDependencies": {
68
69
  "@types/axios": "0.14.0",
@@ -77,7 +78,8 @@
77
78
  "@types/semver": "7.3.9",
78
79
  "@types/tunnel": "0.0.3",
79
80
  "@types/update-notifier": "5.1.0",
80
- "@types/url-parse": "^1.4.3"
81
+ "@types/url-parse": "^1.4.3",
82
+ "@types/uuid": "8.3.4"
81
83
  },
82
84
  "peerDependencies": {
83
85
  "@tsed/core": ">=7.14.2",
@@ -1,36 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getPackageJson = void 0;
4
- const tslib_1 = require("tslib");
5
- const read_pkg_up_1 = tslib_1.__importDefault(require("read-pkg-up"));
6
- const path_1 = require("path");
7
- const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
8
- function useReadPkgUp(configuration) {
9
- return !(process.argv.includes("init") && !fs_extra_1.default.existsSync((0, path_1.join)(String(configuration.project?.rootDir), "package.json")));
10
- }
11
- function getEmptyPackageJson(configuration) {
12
- return {
13
- name: configuration.name,
14
- version: "1.0.0",
15
- description: "",
16
- scripts: {},
17
- dependencies: {},
18
- devDependencies: {}
19
- };
20
- }
21
- function getPackageJson(configuration) {
22
- if (useReadPkgUp(configuration)) {
23
- const result = read_pkg_up_1.default.sync({
24
- cwd: configuration.project?.rootDir
25
- });
26
- if (result && result.path) {
27
- const pkgPath = (0, path_1.dirname)(result.path);
28
- configuration.set("project.root", pkgPath);
29
- const pkg = fs_extra_1.default.readJsonSync(result.path, { encoding: "utf8" });
30
- return { ...getEmptyPackageJson(configuration), ...pkg };
31
- }
32
- }
33
- return getEmptyPackageJson(configuration);
34
- }
35
- exports.getPackageJson = getPackageJson;
36
- //# sourceMappingURL=getPackageJson.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getPackageJson.js","sourceRoot":"","sources":["../../../src/utils/getPackageJson.ts"],"names":[],"mappings":";;;;AACA,sEAAoC;AACpC,+BAAmC;AACnC,gEAA0B;AAE1B,SAAS,YAAY,CAAC,aAA4B;IAChD,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAE,CAAC,UAAU,CAAC,IAAA,WAAI,EAAC,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;AAC1H,CAAC;AAED,SAAS,mBAAmB,CAAC,aAA4B;IACvD,OAAO;QACL,IAAI,EAAE,aAAa,CAAC,IAAI;QACxB,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,EAAE;QACf,OAAO,EAAE,EAAE;QACX,YAAY,EAAE,EAAE;QAChB,eAAe,EAAE,EAAE;KACpB,CAAC;AACJ,CAAC;AAED,SAAgB,cAAc,CAAC,aAA4B;IACzD,IAAI,YAAY,CAAC,aAAa,CAAC,EAAE;QAC/B,MAAM,MAAM,GAAG,qBAAS,CAAC,IAAI,CAAC;YAC5B,GAAG,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO;SACpC,CAAC,CAAC;QAEH,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE;YACzB,MAAM,OAAO,GAAG,IAAA,cAAO,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAErC,aAAa,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;YAE3C,MAAM,GAAG,GAAG,kBAAE,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,EAAC,QAAQ,EAAE,MAAM,EAAC,CAAC,CAAC;YAE7D,OAAO,EAAC,GAAG,mBAAmB,CAAC,aAAa,CAAC,EAAE,GAAG,GAAG,EAAQ,CAAC;SAC/D;KACF;IAED,OAAO,mBAAmB,CAAC,aAAa,CAAC,CAAC;AAC5C,CAAC;AAlBD,wCAkBC","sourcesContent":["import {Configuration} from \"@tsed/di\";\nimport readPkgUp from \"read-pkg-up\";\nimport {dirname, join} from \"path\";\nimport Fs from \"fs-extra\";\n\nfunction useReadPkgUp(configuration: Configuration) {\n return !(process.argv.includes(\"init\") && !Fs.existsSync(join(String(configuration.project?.rootDir), \"package.json\")));\n}\n\nfunction getEmptyPackageJson(configuration: Configuration) {\n return {\n name: configuration.name,\n version: \"1.0.0\",\n description: \"\",\n scripts: {},\n dependencies: {},\n devDependencies: {}\n };\n}\n\nexport function getPackageJson(configuration: Configuration) {\n if (useReadPkgUp(configuration)) {\n const result = readPkgUp.sync({\n cwd: configuration.project?.rootDir\n });\n\n if (result && result.path) {\n const pkgPath = dirname(result.path);\n\n configuration.set(\"project.root\", pkgPath);\n\n const pkg = Fs.readJsonSync(result.path, {encoding: \"utf8\"});\n\n return {...getEmptyPackageJson(configuration), ...pkg} as any;\n }\n }\n\n return getEmptyPackageJson(configuration);\n}\n"]}
@@ -1,31 +0,0 @@
1
- import readPkgUp from "read-pkg-up";
2
- import { dirname, join } from "path";
3
- import Fs from "fs-extra";
4
- function useReadPkgUp(configuration) {
5
- return !(process.argv.includes("init") && !Fs.existsSync(join(String(configuration.project?.rootDir), "package.json")));
6
- }
7
- function getEmptyPackageJson(configuration) {
8
- return {
9
- name: configuration.name,
10
- version: "1.0.0",
11
- description: "",
12
- scripts: {},
13
- dependencies: {},
14
- devDependencies: {}
15
- };
16
- }
17
- export function getPackageJson(configuration) {
18
- if (useReadPkgUp(configuration)) {
19
- const result = readPkgUp.sync({
20
- cwd: configuration.project?.rootDir
21
- });
22
- if (result && result.path) {
23
- const pkgPath = dirname(result.path);
24
- configuration.set("project.root", pkgPath);
25
- const pkg = Fs.readJsonSync(result.path, { encoding: "utf8" });
26
- return { ...getEmptyPackageJson(configuration), ...pkg };
27
- }
28
- }
29
- return getEmptyPackageJson(configuration);
30
- }
31
- //# sourceMappingURL=getPackageJson.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getPackageJson.js","sourceRoot":"","sources":["../../../src/utils/getPackageJson.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,EAAC,OAAO,EAAE,IAAI,EAAC,MAAM,MAAM,CAAC;AACnC,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B,SAAS,YAAY,CAAC,aAA4B;IAChD,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;AAC1H,CAAC;AAED,SAAS,mBAAmB,CAAC,aAA4B;IACvD,OAAO;QACL,IAAI,EAAE,aAAa,CAAC,IAAI;QACxB,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,EAAE;QACf,OAAO,EAAE,EAAE;QACX,YAAY,EAAE,EAAE;QAChB,eAAe,EAAE,EAAE;KACpB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,aAA4B;IACzD,IAAI,YAAY,CAAC,aAAa,CAAC,EAAE;QAC/B,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC;YAC5B,GAAG,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO;SACpC,CAAC,CAAC;QAEH,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE;YACzB,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAErC,aAAa,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;YAE3C,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,EAAC,QAAQ,EAAE,MAAM,EAAC,CAAC,CAAC;YAE7D,OAAO,EAAC,GAAG,mBAAmB,CAAC,aAAa,CAAC,EAAE,GAAG,GAAG,EAAQ,CAAC;SAC/D;KACF;IAED,OAAO,mBAAmB,CAAC,aAAa,CAAC,CAAC;AAC5C,CAAC","sourcesContent":["import {Configuration} from \"@tsed/di\";\nimport readPkgUp from \"read-pkg-up\";\nimport {dirname, join} from \"path\";\nimport Fs from \"fs-extra\";\n\nfunction useReadPkgUp(configuration: Configuration) {\n return !(process.argv.includes(\"init\") && !Fs.existsSync(join(String(configuration.project?.rootDir), \"package.json\")));\n}\n\nfunction getEmptyPackageJson(configuration: Configuration) {\n return {\n name: configuration.name,\n version: \"1.0.0\",\n description: \"\",\n scripts: {},\n dependencies: {},\n devDependencies: {}\n };\n}\n\nexport function getPackageJson(configuration: Configuration) {\n if (useReadPkgUp(configuration)) {\n const result = readPkgUp.sync({\n cwd: configuration.project?.rootDir\n });\n\n if (result && result.path) {\n const pkgPath = dirname(result.path);\n\n configuration.set(\"project.root\", pkgPath);\n\n const pkg = Fs.readJsonSync(result.path, {encoding: \"utf8\"});\n\n return {...getEmptyPackageJson(configuration), ...pkg} as any;\n }\n }\n\n return getEmptyPackageJson(configuration);\n}\n"]}
@@ -1,2 +0,0 @@
1
- import { Configuration } from "@tsed/di";
2
- export declare function getPackageJson(configuration: Configuration): any;