@pristine-ts/cli 0.0.304 → 0.0.306

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.
@@ -38,6 +38,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
38
38
  const core_1 = require("@pristine-ts/core");
39
39
  const fs_1 = __importDefault(require("fs"));
40
40
  const logging_1 = require("@pristine-ts/logging");
41
+ const file_1 = require("@pristine-ts/file");
41
42
  const getLocalAppModuleCJSPath = () => __awaiter(void 0, void 0, void 0, function* () {
42
43
  return new Promise((resolve, reject) => {
43
44
  const packageJson = process.cwd() + "/package.json";
@@ -46,36 +47,71 @@ const getLocalAppModuleCJSPath = () => __awaiter(void 0, void 0, void 0, functio
46
47
  const message = "Cannot find the package.json at '" + packageJson + "'. Make sure that you execute this script directly from the parent of your 'package.json'";
47
48
  console.error(message);
48
49
  console.error(err);
49
- throw new Error(message);
50
+ return resolve(undefined);
50
51
  }
51
52
  const { pristine } = yield Promise.resolve(`${packageJson}`).then(s => __importStar(require(s)));
52
53
  if (pristine === undefined) {
53
54
  const message = "There needs to be a section 'pristine' in your package.json file located at: '" + packageJson + "'";
54
55
  console.error(message);
55
- throw new Error(message);
56
+ return resolve(undefined);
56
57
  }
57
58
  if (pristine.appModule === undefined) {
58
59
  const message = "There should be a section 'appModule' under 'pristine' in your package.json file located at: '" + packageJson + "'";
59
60
  console.error(message);
60
- throw new Error(message);
61
+ return resolve(undefined);
61
62
  }
62
63
  if (pristine.appModule.cjsPath === undefined) {
63
64
  const message = "There should be a property 'cjsPath' under 'pristine.appModule' in your package.json file located at: '" + packageJson + "'";
64
65
  console.error(message);
65
- throw new Error(message);
66
+ return resolve(undefined);
66
67
  }
67
68
  return resolve(process.cwd() + "/" + pristine.appModule.cjsPath);
68
69
  }));
69
70
  });
70
71
  });
71
72
  const bootstrap = () => __awaiter(void 0, void 0, void 0, function* () {
73
+ let localAppModule;
74
+ let isLoggingModulePresent = false;
72
75
  const cjsPath = yield getLocalAppModuleCJSPath();
73
- const localAppModule = yield Promise.resolve(`${cjsPath}`).then(s => __importStar(require(s)));
76
+ if (cjsPath !== undefined) {
77
+ localAppModule = (yield Promise.resolve(`${cjsPath}`).then(s => __importStar(require(s)))).AppModule;
78
+ isLoggingModulePresent = localAppModule.importModules.find((module) => module.keyname === logging_1.LoggingModuleKeyname) !== undefined;
79
+ }
80
+ else { // Try the automatic Module creation.
81
+ // Loop over the `node_modules/@pristine-ts/*/dist/lib/cjs/*.module.js` folders and find all the module files that are loaded.
82
+ const directoryManager = new file_1.DirectoryManager();
83
+ const moduleFiles = yield directoryManager.list(process.cwd() + "/node_modules/@pristine-ts", {
84
+ matchType: file_1.MatchTypeEnum.Path,
85
+ match: /.*\/cjs\/.*\.module\.js$/,
86
+ types: file_1.TypesEnum.File,
87
+ resultType: file_1.DirectoryListResultEnum.FilePath,
88
+ recurse: true,
89
+ });
90
+ const modules = [];
91
+ for (const moduleFile of moduleFiles) {
92
+ const module = yield Promise.resolve(`${moduleFile}`).then(s => __importStar(require(s)));
93
+ for (const key in module) {
94
+ if (key === "LoggingModule") {
95
+ isLoggingModulePresent = true;
96
+ }
97
+ if (key.endsWith("Module")) {
98
+ modules.push(module[key]);
99
+ }
100
+ }
101
+ }
102
+ localAppModule = {
103
+ keyname: "__auto_generated_app.module__",
104
+ importModules: modules,
105
+ importServices: [],
106
+ };
107
+ }
108
+ const configuration = {};
109
+ if (isLoggingModulePresent) {
110
+ configuration[logging_1.LoggingModuleKeyname + ".consoleLoggerOutputMode"] = logging_1.OutputModeEnum.Simple;
111
+ configuration[logging_1.LoggingModuleKeyname + ".logSeverityLevelConfiguration"] = logging_1.SeverityEnum.Error;
112
+ }
74
113
  const kernel = new core_1.Kernel();
75
- yield kernel.start(localAppModule.AppModule, {
76
- [logging_1.LoggingModuleKeyname + ".consoleLoggerOutputMode"]: logging_1.OutputModeEnum.Simple,
77
- [logging_1.LoggingModuleKeyname + ".logSeverityLevelConfiguration"]: logging_1.SeverityEnum.Error,
78
- });
114
+ yield kernel.start(localAppModule, configuration);
79
115
  yield kernel.handle(process.argv, { keyname: core_1.ExecutionContextKeynameEnum.Cli, context: null });
80
116
  });
81
117
  bootstrap();
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/cli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,4CAAsE;AACtE,4CAAoB;AACpB,kDAAwF;AAExF,MAAM,wBAAwB,GAAG,GAA0B,EAAE;IACzD,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,eAAe,CAAC;QAEpD,YAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAO,GAAG,EAAE,KAAK,EAAE,EAAE;YACtC,IAAG,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,KAAK,KAAK,EAAE,CAAC;gBACjC,MAAM,OAAO,GAAG,mCAAmC,GAAG,WAAW,GAAG,2FAA2F,CAAA;gBAC/J,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACvB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;YAC7B,CAAC;YAED,MAAM,EAAC,QAAQ,EAAC,GAAG,yBAAa,WAAW,uCAAC,CAAC;YAE7C,IAAG,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACxB,MAAM,OAAO,GAAG,gFAAgF,GAAG,WAAW,GAAG,GAAG,CAAC;gBACrH,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;YAC7B,CAAC;YAED,IAAG,QAAQ,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBAClC,MAAM,OAAO,GAAG,gGAAgG,GAAG,WAAW,GAAG,GAAG,CAAA;gBACpI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;YAC7B,CAAC;YACD,IAAG,QAAQ,CAAC,SAAS,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1C,MAAM,OAAO,GAAG,yGAAyG,GAAG,WAAW,GAAG,GAAG,CAAA;gBAC7I,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;YAC7B,CAAC;YAED,OAAO,OAAO,CAAE,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACtE,CAAC,CAAA,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;AACN,CAAC,CAAA,CAAA;AAED,MAAM,SAAS,GAAG,GAAS,EAAE;IAEzB,MAAM,OAAO,GAAG,MAAM,wBAAwB,EAAE,CAAC;IAEjD,MAAM,cAAc,GAAG,yBAAa,OAAO,uCAAC,CAAC;IAE7C,MAAM,MAAM,GAAG,IAAI,aAAM,EAAE,CAAC;IAC5B,MAAM,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,EAAE;QACzC,CAAC,8BAAoB,GAAG,0BAA0B,CAAC,EAAE,wBAAc,CAAC,MAAM;QAC1E,CAAC,8BAAoB,GAAG,gCAAgC,CAAC,EAAE,sBAAY,CAAC,KAAK;KAChF,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAC,OAAO,EAAE,kCAA2B,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC,CAAA;AAChG,CAAC,CAAA,CAAA;AAED,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/cli.ts"],"names":[],"mappings":"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"}
@@ -28,15 +28,16 @@ const command_event_response_type_1 = require("../types/command-event-response.t
28
28
  const common_1 = require("@pristine-ts/common");
29
29
  const command_not_found_error_1 = require("../errors/command-not-found.error");
30
30
  const class_validator_1 = require("@pristine-ts/class-validator");
31
- const class_transformer_1 = require("class-transformer");
32
31
  const console_manager_1 = require("../managers/console.manager");
33
32
  const exit_code_enum_1 = require("../enums/exit-code.enum");
34
33
  const cli_module_keyname_1 = require("../cli.module.keyname");
34
+ const data_mapping_common_1 = require("@pristine-ts/data-mapping-common");
35
35
  let CliEventHandler = class CliEventHandler {
36
- constructor(logHandler, validator, consoleManager, commands) {
36
+ constructor(logHandler, validator, consoleManager, dataMapper, commands) {
37
37
  this.logHandler = logHandler;
38
38
  this.validator = validator;
39
39
  this.consoleManager = consoleManager;
40
+ this.dataMapper = dataMapper;
40
41
  this.commands = commands;
41
42
  }
42
43
  handle(event) {
@@ -48,7 +49,16 @@ let CliEventHandler = class CliEventHandler {
48
49
  }
49
50
  let mappedArguments;
50
51
  if (event.payload.arguments !== undefined) {
51
- mappedArguments = (0, class_transformer_1.plainToInstance)(command.optionsType, event.payload.arguments);
52
+ try {
53
+ mappedArguments = yield this.dataMapper.autoMap(event.payload.arguments, command.optionsType, {
54
+ isOptionalDefaultValue: true,
55
+ excludeExtraneousValues: false,
56
+ });
57
+ }
58
+ catch (e) {
59
+ // Trying without the arguments being mapped.
60
+ mappedArguments = event.payload.arguments;
61
+ }
52
62
  }
53
63
  // Validates if all the conditions are respected in the expected type.
54
64
  const errors = yield this.validator.validate(mappedArguments);
@@ -91,8 +101,9 @@ exports.CliEventHandler = CliEventHandler = __decorate([
91
101
  (0, common_1.moduleScoped)(cli_module_keyname_1.CliModuleKeyname),
92
102
  (0, tsyringe_1.injectable)(),
93
103
  __param(0, (0, tsyringe_1.inject)("LogHandlerInterface")),
94
- __param(3, (0, tsyringe_1.injectAll)(common_1.ServiceDefinitionTagEnum.Command)),
104
+ __param(4, (0, tsyringe_1.injectAll)(common_1.ServiceDefinitionTagEnum.Command)),
95
105
  __metadata("design:paramtypes", [Object, class_validator_1.Validator,
96
- console_manager_1.ConsoleManager, Array])
106
+ console_manager_1.ConsoleManager,
107
+ data_mapping_common_1.DataMapper, Array])
97
108
  ], CliEventHandler);
98
109
  //# sourceMappingURL=cli.event-handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli.event-handler.js","sourceRoot":"","sources":["../../../../src/event-handlers/cli.event-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.event-handler.js","sourceRoot":"","sources":["../../../../src/event-handlers/cli.event-handler.ts"],"names":[],"mappings":"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"}
@@ -25,15 +25,16 @@ import { CommandEventResponse } from "../types/command-event-response.type";
25
25
  import { moduleScoped, ServiceDefinitionTagEnum, tag } from "@pristine-ts/common";
26
26
  import { CommandNotFoundError } from "../errors/command-not-found.error";
27
27
  import { Validator } from "@pristine-ts/class-validator";
28
- import { plainToInstance } from "class-transformer";
29
28
  import { ConsoleManager } from "../managers/console.manager";
30
29
  import { ExitCodeEnum } from "../enums/exit-code.enum";
31
30
  import { CliModuleKeyname } from "../cli.module.keyname";
31
+ import { DataMapper } from "@pristine-ts/data-mapping-common";
32
32
  let CliEventHandler = class CliEventHandler {
33
- constructor(logHandler, validator, consoleManager, commands) {
33
+ constructor(logHandler, validator, consoleManager, dataMapper, commands) {
34
34
  this.logHandler = logHandler;
35
35
  this.validator = validator;
36
36
  this.consoleManager = consoleManager;
37
+ this.dataMapper = dataMapper;
37
38
  this.commands = commands;
38
39
  }
39
40
  handle(event) {
@@ -45,7 +46,16 @@ let CliEventHandler = class CliEventHandler {
45
46
  }
46
47
  let mappedArguments;
47
48
  if (event.payload.arguments !== undefined) {
48
- mappedArguments = plainToInstance(command.optionsType, event.payload.arguments);
49
+ try {
50
+ mappedArguments = yield this.dataMapper.autoMap(event.payload.arguments, command.optionsType, {
51
+ isOptionalDefaultValue: true,
52
+ excludeExtraneousValues: false,
53
+ });
54
+ }
55
+ catch (e) {
56
+ // Trying without the arguments being mapped.
57
+ mappedArguments = event.payload.arguments;
58
+ }
49
59
  }
50
60
  // Validates if all the conditions are respected in the expected type.
51
61
  const errors = yield this.validator.validate(mappedArguments);
@@ -87,9 +97,10 @@ CliEventHandler = __decorate([
87
97
  moduleScoped(CliModuleKeyname),
88
98
  injectable(),
89
99
  __param(0, inject("LogHandlerInterface")),
90
- __param(3, injectAll(ServiceDefinitionTagEnum.Command)),
100
+ __param(4, injectAll(ServiceDefinitionTagEnum.Command)),
91
101
  __metadata("design:paramtypes", [Object, Validator,
92
- ConsoleManager, Array])
102
+ ConsoleManager,
103
+ DataMapper, Array])
93
104
  ], CliEventHandler);
94
105
  export { CliEventHandler };
95
106
  //# sourceMappingURL=cli.event-handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli.event-handler.js","sourceRoot":"","sources":["../../../../src/event-handlers/cli.event-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.event-handler.js","sourceRoot":"","sources":["../../../../src/event-handlers/cli.event-handler.ts"],"names":[],"mappings":"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"}
@@ -5,12 +5,14 @@ import { CommandInterface } from "../interfaces/command.interface";
5
5
  import { LogHandlerInterface } from "@pristine-ts/logging";
6
6
  import { Validator } from "@pristine-ts/class-validator";
7
7
  import { ConsoleManager } from "../managers/console.manager";
8
+ import { DataMapper } from "@pristine-ts/data-mapping-common";
8
9
  export declare class CliEventHandler implements EventHandlerInterface<any, any> {
9
10
  private readonly logHandler;
10
11
  private readonly validator;
11
12
  private readonly consoleManager;
13
+ private readonly dataMapper;
12
14
  private readonly commands;
13
- constructor(logHandler: LogHandlerInterface, validator: Validator, consoleManager: ConsoleManager, commands: CommandInterface<any>[]);
15
+ constructor(logHandler: LogHandlerInterface, validator: Validator, consoleManager: ConsoleManager, dataMapper: DataMapper, commands: CommandInterface<any>[]);
14
16
  handle(event: CommandEvent): Promise<CommandEventResponse>;
15
17
  supports(event: Event<any>): boolean;
16
18
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pristine-ts/cli",
3
- "version": "0.0.304",
3
+ "version": "0.0.306",
4
4
  "description": "",
5
5
  "module": "dist/lib/esm/cli.module.js",
6
6
  "main": "dist/lib/cjs/cli.module.js",
@@ -12,7 +12,8 @@
12
12
  "build": "tsc -p tsconfig.json && tsc -p tsconfig.cjs.json",
13
13
  "prepublish": "npm run build",
14
14
  "test": "jest",
15
- "test:cov": "jest --coverage"
15
+ "test:cov": "jest --coverage",
16
+ "pristine:command": "pristine help"
16
17
  },
17
18
  "files": [
18
19
  "dist"
@@ -23,10 +24,11 @@
23
24
  "access": "public"
24
25
  },
25
26
  "dependencies": {
26
- "@pristine-ts/common": "^0.0.304",
27
- "@pristine-ts/core": "^0.0.304",
28
- "@pristine-ts/logging": "^0.0.304",
29
- "@pristine-ts/validation": "^0.0.304",
27
+ "@pristine-ts/common": "^0.0.306",
28
+ "@pristine-ts/core": "^0.0.306",
29
+ "@pristine-ts/file": "^0.0.306",
30
+ "@pristine-ts/logging": "^0.0.306",
31
+ "@pristine-ts/validation": "^0.0.306",
30
32
  "class-transformer": "^0.5.1"
31
33
  },
32
34
  "jest": {
@@ -63,5 +65,5 @@
63
65
  "src/*.{js,ts}"
64
66
  ]
65
67
  },
66
- "gitHead": "3f3c999223b89a8bcf7dcacf963dbe8b73b09d37"
68
+ "gitHead": "7cd470d729226102adc8a4785c5b6918ac65f9fc"
67
69
  }