@pristine-ts/cli 0.0.240

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 (121) hide show
  1. package/LICENSE +201 -0
  2. package/dist/lib/cjs/bin.js +4 -0
  3. package/dist/lib/cjs/bin.js.map +1 -0
  4. package/dist/lib/cjs/cli.js +84 -0
  5. package/dist/lib/cjs/cli.js.map +1 -0
  6. package/dist/lib/cjs/cli.module.js +40 -0
  7. package/dist/lib/cjs/cli.module.js.map +1 -0
  8. package/dist/lib/cjs/cli.module.keyname.js +5 -0
  9. package/dist/lib/cjs/cli.module.keyname.js.map +1 -0
  10. package/dist/lib/cjs/commands/commands.js +19 -0
  11. package/dist/lib/cjs/commands/commands.js.map +1 -0
  12. package/dist/lib/cjs/commands/help.command.js +54 -0
  13. package/dist/lib/cjs/commands/help.command.js.map +1 -0
  14. package/dist/lib/cjs/commands/list.command.js +54 -0
  15. package/dist/lib/cjs/commands/list.command.js.map +1 -0
  16. package/dist/lib/cjs/enums/enums.js +18 -0
  17. package/dist/lib/cjs/enums/enums.js.map +1 -0
  18. package/dist/lib/cjs/enums/exit-code.enum.js +9 -0
  19. package/dist/lib/cjs/enums/exit-code.enum.js.map +1 -0
  20. package/dist/lib/cjs/errors/command-not-found.error.js +25 -0
  21. package/dist/lib/cjs/errors/command-not-found.error.js.map +1 -0
  22. package/dist/lib/cjs/errors/errors.js +18 -0
  23. package/dist/lib/cjs/errors/errors.js.map +1 -0
  24. package/dist/lib/cjs/event-handlers/cli.event-handler.js +95 -0
  25. package/dist/lib/cjs/event-handlers/cli.event-handler.js.map +1 -0
  26. package/dist/lib/cjs/event-handlers/event-handlers.js +18 -0
  27. package/dist/lib/cjs/event-handlers/event-handlers.js.map +1 -0
  28. package/dist/lib/cjs/event-payloads/command.event-payload.js +12 -0
  29. package/dist/lib/cjs/event-payloads/command.event-payload.js.map +1 -0
  30. package/dist/lib/cjs/event-payloads/event-payloads.js +18 -0
  31. package/dist/lib/cjs/event-payloads/event-payloads.js.map +1 -0
  32. package/dist/lib/cjs/interfaces/command.interface.js +3 -0
  33. package/dist/lib/cjs/interfaces/command.interface.js.map +1 -0
  34. package/dist/lib/cjs/interfaces/interfaces.js +18 -0
  35. package/dist/lib/cjs/interfaces/interfaces.js.map +1 -0
  36. package/dist/lib/cjs/managers/console.manager.js +26 -0
  37. package/dist/lib/cjs/managers/console.manager.js.map +1 -0
  38. package/dist/lib/cjs/managers/managers.js +18 -0
  39. package/dist/lib/cjs/managers/managers.js.map +1 -0
  40. package/dist/lib/cjs/mappers/command-event.mapper.js +93 -0
  41. package/dist/lib/cjs/mappers/command-event.mapper.js.map +1 -0
  42. package/dist/lib/cjs/mappers/mappers.js +18 -0
  43. package/dist/lib/cjs/mappers/mappers.js.map +1 -0
  44. package/dist/lib/cjs/types/command-event-response.type.js +8 -0
  45. package/dist/lib/cjs/types/command-event-response.type.js.map +1 -0
  46. package/dist/lib/cjs/types/command-event.type.js +8 -0
  47. package/dist/lib/cjs/types/command-event.type.js.map +1 -0
  48. package/dist/lib/cjs/types/types.js +19 -0
  49. package/dist/lib/cjs/types/types.js.map +1 -0
  50. package/dist/lib/esm/bin.js +4 -0
  51. package/dist/lib/esm/bin.js.map +1 -0
  52. package/dist/lib/esm/cli.module.js +23 -0
  53. package/dist/lib/esm/cli.module.js.map +1 -0
  54. package/dist/lib/esm/cli.module.keyname.js +2 -0
  55. package/dist/lib/esm/cli.module.keyname.js.map +1 -0
  56. package/dist/lib/esm/commands/commands.js +3 -0
  57. package/dist/lib/esm/commands/commands.js.map +1 -0
  58. package/dist/lib/esm/commands/help.command.js +51 -0
  59. package/dist/lib/esm/commands/help.command.js.map +1 -0
  60. package/dist/lib/esm/commands/list.command.js +51 -0
  61. package/dist/lib/esm/commands/list.command.js.map +1 -0
  62. package/dist/lib/esm/enums/enums.js +2 -0
  63. package/dist/lib/esm/enums/enums.js.map +1 -0
  64. package/dist/lib/esm/enums/exit-code.enum.js +6 -0
  65. package/dist/lib/esm/enums/exit-code.enum.js.map +1 -0
  66. package/dist/lib/esm/errors/command-not-found.error.js +21 -0
  67. package/dist/lib/esm/errors/command-not-found.error.js.map +1 -0
  68. package/dist/lib/esm/errors/errors.js +2 -0
  69. package/dist/lib/esm/errors/errors.js.map +1 -0
  70. package/dist/lib/esm/event-handlers/cli.event-handler.js +92 -0
  71. package/dist/lib/esm/event-handlers/cli.event-handler.js.map +1 -0
  72. package/dist/lib/esm/event-handlers/event-handlers.js +2 -0
  73. package/dist/lib/esm/event-handlers/event-handlers.js.map +1 -0
  74. package/dist/lib/esm/event-payloads/command.event-payload.js +8 -0
  75. package/dist/lib/esm/event-payloads/command.event-payload.js.map +1 -0
  76. package/dist/lib/esm/event-payloads/event-payloads.js +2 -0
  77. package/dist/lib/esm/event-payloads/event-payloads.js.map +1 -0
  78. package/dist/lib/esm/interfaces/command.interface.js +2 -0
  79. package/dist/lib/esm/interfaces/command.interface.js.map +1 -0
  80. package/dist/lib/esm/interfaces/interfaces.js +2 -0
  81. package/dist/lib/esm/interfaces/interfaces.js.map +1 -0
  82. package/dist/lib/esm/managers/console.manager.js +23 -0
  83. package/dist/lib/esm/managers/console.manager.js.map +1 -0
  84. package/dist/lib/esm/managers/managers.js +2 -0
  85. package/dist/lib/esm/managers/managers.js.map +1 -0
  86. package/dist/lib/esm/mappers/command-event.mapper.js +90 -0
  87. package/dist/lib/esm/mappers/command-event.mapper.js.map +1 -0
  88. package/dist/lib/esm/mappers/mappers.js +2 -0
  89. package/dist/lib/esm/mappers/mappers.js.map +1 -0
  90. package/dist/lib/esm/types/command-event-response.type.js +4 -0
  91. package/dist/lib/esm/types/command-event-response.type.js.map +1 -0
  92. package/dist/lib/esm/types/command-event.type.js +4 -0
  93. package/dist/lib/esm/types/command-event.type.js.map +1 -0
  94. package/dist/lib/esm/types/types.js +3 -0
  95. package/dist/lib/esm/types/types.js.map +1 -0
  96. package/dist/types/bin.d.ts +1 -0
  97. package/dist/types/cli.d.ts +1 -0
  98. package/dist/types/cli.module.d.ts +11 -0
  99. package/dist/types/cli.module.keyname.d.ts +1 -0
  100. package/dist/types/commands/commands.d.ts +2 -0
  101. package/dist/types/commands/help.command.d.ts +10 -0
  102. package/dist/types/commands/list.command.d.ts +12 -0
  103. package/dist/types/enums/enums.d.ts +1 -0
  104. package/dist/types/enums/exit-code.enum.d.ts +4 -0
  105. package/dist/types/errors/command-not-found.error.d.ts +12 -0
  106. package/dist/types/errors/errors.d.ts +1 -0
  107. package/dist/types/event-handlers/cli.event-handler.d.ts +16 -0
  108. package/dist/types/event-handlers/event-handlers.d.ts +1 -0
  109. package/dist/types/event-payloads/command.event-payload.d.ts +8 -0
  110. package/dist/types/event-payloads/event-payloads.d.ts +1 -0
  111. package/dist/types/interfaces/command.interface.d.ts +8 -0
  112. package/dist/types/interfaces/interfaces.d.ts +1 -0
  113. package/dist/types/managers/console.manager.d.ts +4 -0
  114. package/dist/types/managers/managers.d.ts +1 -0
  115. package/dist/types/mappers/command-event.mapper.d.ts +20 -0
  116. package/dist/types/mappers/mappers.d.ts +1 -0
  117. package/dist/types/types/command-event-response.type.d.ts +5 -0
  118. package/dist/types/types/command-event.type.d.ts +4 -0
  119. package/dist/types/types/types.d.ts +2 -0
  120. package/package.json +67 -0
  121. package/readme.md +31 -0
@@ -0,0 +1,21 @@
1
+ import { LoggableError } from "@pristine-ts/common";
2
+ /**
3
+ * The CommandNotFoundError error when the command specified is not implemented.
4
+ */
5
+ export class CommandNotFoundError extends LoggableError {
6
+ /**
7
+ * This Error is the base class for CommandNotFoundError errors.
8
+ * @param commandName The name of the command that could not be found
9
+ */
10
+ constructor(commandName) {
11
+ super("There is no command found for name: '" + commandName + "'. Use the 'list' command to see the commands already registered.", {
12
+ commandName
13
+ });
14
+ this.commandName = commandName;
15
+ // Set the prototype explicitly.
16
+ // As specified in the documentation in TypeScript
17
+ // https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work
18
+ Object.setPrototypeOf(this, CommandNotFoundError.prototype);
19
+ }
20
+ }
21
+ //# sourceMappingURL=command-not-found.error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-not-found.error.js","sourceRoot":"","sources":["../../../../src/errors/command-not-found.error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAElD;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,aAAa;IACnD;;;OAGG;IACH,YACmC,WAAmB;QAElD,KAAK,CAAC,uCAAuC,GAAG,WAAW,GAAG,mEAAmE,EAAE;YAC/H,WAAW;SACd,CAAC,CAAC;QAJ4B,gBAAW,GAAX,WAAW,CAAQ;QAMlD,gCAAgC;QAChC,kDAAkD;QAClD,gIAAgI;QAChI,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC;CACJ"}
@@ -0,0 +1,2 @@
1
+ export * from "./command-not-found.error";
2
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../src/errors/errors.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC"}
@@ -0,0 +1,92 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
+ return function (target, key) { decorator(target, key, paramIndex); }
12
+ };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ import { inject, injectable, injectAll } from "tsyringe";
23
+ import { CommandEventPayload } from "../event-payloads/command.event-payload";
24
+ import { CommandEventResponse } from "../types/command-event-response.type";
25
+ import { moduleScoped, ServiceDefinitionTagEnum, tag } from "@pristine-ts/common";
26
+ import { CommandNotFoundError } from "../errors/command-not-found.error";
27
+ import { Validator } from "@pristine-ts/class-validator";
28
+ import { plainToInstance } from "class-transformer";
29
+ import { ConsoleManager } from "../managers/console.manager";
30
+ import { ExitCodeEnum } from "../enums/exit-code.enum";
31
+ import { CliModuleKeyname } from "../cli.module.keyname";
32
+ let CliEventHandler = class CliEventHandler {
33
+ constructor(logHandler, validator, consoleManager, commands) {
34
+ this.logHandler = logHandler;
35
+ this.validator = validator;
36
+ this.consoleManager = consoleManager;
37
+ this.commands = commands;
38
+ }
39
+ handle(event) {
40
+ return __awaiter(this, void 0, void 0, function* () {
41
+ // Check if a command is matched
42
+ const command = this.commands.find(command => command.name === event.payload.name);
43
+ if (command === undefined) {
44
+ throw new CommandNotFoundError(event.payload.name);
45
+ }
46
+ const mappedArguments = plainToInstance(command.optionsType, event.payload.arguments);
47
+ // Validates if all the conditions are respected in the expected type.
48
+ const errors = yield this.validator.validate(mappedArguments);
49
+ if (errors.length !== 0) {
50
+ // list the errors and return
51
+ errors.forEach(error => {
52
+ this.consoleManager.writeLine("Errors with argument '" + error.property + "'. The following constraints failed:");
53
+ for (const constraint in error.constraints) {
54
+ const message = error.constraints[constraint];
55
+ this.consoleManager.writeLine("/t/t- [" + constraint + "]: " + message);
56
+ }
57
+ });
58
+ return new CommandEventResponse(event, ExitCodeEnum.Error);
59
+ }
60
+ // Execute the command
61
+ const exitCode = yield command.run(
62
+ // @ts-ignore Needs to be ignored since we know we are casting it into the expected type.
63
+ mappedArguments);
64
+ // Log the status and the command
65
+ let status;
66
+ switch (exitCode) {
67
+ case ExitCodeEnum.Success:
68
+ status = "Success";
69
+ break;
70
+ default:
71
+ status = "Error";
72
+ break;
73
+ }
74
+ this.consoleManager.writeLine("Command '" + event.payload.name + "' exited with code: '" + exitCode + "' (Status: '" + status + "')");
75
+ return new CommandEventResponse(event, exitCode);
76
+ });
77
+ }
78
+ supports(event) {
79
+ return event.payload instanceof CommandEventPayload;
80
+ }
81
+ };
82
+ CliEventHandler = __decorate([
83
+ tag(ServiceDefinitionTagEnum.EventHandler),
84
+ moduleScoped(CliModuleKeyname),
85
+ injectable(),
86
+ __param(0, inject("LogHandlerInterface")),
87
+ __param(3, injectAll(ServiceDefinitionTagEnum.Command)),
88
+ __metadata("design:paramtypes", [Object, Validator,
89
+ ConsoleManager, Array])
90
+ ], CliEventHandler);
91
+ export { CliEventHandler };
92
+ //# sourceMappingURL=cli.event-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.event-handler.js","sourceRoot":"","sources":["../../../../src/event-handlers/cli.event-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from "./cli.event-handler";
2
+ //# sourceMappingURL=event-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-handlers.js","sourceRoot":"","sources":["../../../../src/event-handlers/event-handlers.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,8 @@
1
+ export class CommandEventPayload {
2
+ constructor(name, scriptPath) {
3
+ this.name = name;
4
+ this.scriptPath = scriptPath;
5
+ this.arguments = {};
6
+ }
7
+ }
8
+ //# sourceMappingURL=command.event-payload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.event-payload.js","sourceRoot":"","sources":["../../../../src/event-payloads/command.event-payload.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,mBAAmB;IAG5B,YAAmB,IAAY,EAAS,UAAkB;QAAvC,SAAI,GAAJ,IAAI,CAAQ;QAAS,eAAU,GAAV,UAAU,CAAQ;QAF1D,cAAS,GAAiD,EAAE,CAAC;IAG7D,CAAC;CACJ"}
@@ -0,0 +1,2 @@
1
+ export * from "./command.event-payload";
2
+ //# sourceMappingURL=event-payloads.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-payloads.js","sourceRoot":"","sources":["../../../../src/event-payloads/event-payloads.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=command.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/command.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export * from "./command.interface";
2
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../src/interfaces/interfaces.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,23 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { injectable } from "tsyringe";
8
+ import { moduleScoped } from "@pristine-ts/common";
9
+ import { CliModuleKeyname } from "../cli.module.keyname";
10
+ let ConsoleManager = class ConsoleManager {
11
+ write(message) {
12
+ process.stdout.write(message);
13
+ }
14
+ writeLine(message) {
15
+ this.write(message + "\n");
16
+ }
17
+ };
18
+ ConsoleManager = __decorate([
19
+ injectable(),
20
+ moduleScoped(CliModuleKeyname)
21
+ ], ConsoleManager);
22
+ export { ConsoleManager };
23
+ //# sourceMappingURL=console.manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console.manager.js","sourceRoot":"","sources":["../../../../src/managers/console.manager.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AAIhD,IAAM,cAAc,GAApB,MAAM,cAAc;IACvB,KAAK,CAAC,OAAe;QACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAED,SAAS,CAAC,OAAe;QACrB,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAC/B,CAAC;CACJ,CAAA;AARY,cAAc;IAF1B,UAAU,EAAE;IACZ,YAAY,CAAC,gBAAgB,CAAC;GAClB,cAAc,CAQ1B;SARY,cAAc"}
@@ -0,0 +1,2 @@
1
+ export * from "./console.manager";
2
+ //# sourceMappingURL=managers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managers.js","sourceRoot":"","sources":["../../../../src/managers/managers.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,90 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { Event, ExecutionContextKeynameEnum } from "@pristine-ts/core";
8
+ import { injectable } from "tsyringe";
9
+ import { CommandEventPayload } from "../event-payloads/command.event-payload";
10
+ import { moduleScoped, ServiceDefinitionTagEnum, tag } from "@pristine-ts/common";
11
+ import { CliModuleKeyname } from "../cli.module.keyname";
12
+ let CommandEventMapper = class CommandEventMapper {
13
+ supportsMapping(rawEvent, executionContext) {
14
+ return executionContext.keyname === ExecutionContextKeynameEnum.Cli;
15
+ }
16
+ /**
17
+ * Inspired from: https://github.com/eveningkid/args-parser
18
+ * @param rawEvent
19
+ * @param executionContext
20
+ */
21
+ map(rawEvent, executionContext) {
22
+ if (Array.isArray(rawEvent) === false) {
23
+ throw new Error("If using the 'CLI', process.argv should be passed as the event.");
24
+ }
25
+ if (rawEvent.length < 3) {
26
+ throw new Error("If using the 'CLI', there must be at least one command passed");
27
+ }
28
+ const command = new CommandEventPayload(rawEvent[2], rawEvent[1]);
29
+ // if argument starts with - or --, then there is two options. Either there's an equal sign in the string and after the equal sign is the value or the next argument is actually the value
30
+ // for the value, we need to check if it can be a boolean and if not, if it can be a number. If yes, they should be transformed. Else, the value should be a string.
31
+ // If the argument doesn't start with --, then it's value is simply the true boolean
32
+ const passedArguments = rawEvent.slice(3);
33
+ for (let i = 0; i < passedArguments.length; i++) {
34
+ const arg = passedArguments[i];
35
+ if (arg.startsWith("-") === false) {
36
+ command.arguments[arg] = true;
37
+ continue;
38
+ }
39
+ const numberOfStartingDashes = arg.startsWith("--") ? 2 : 1;
40
+ const argumentName = arg.slice(numberOfStartingDashes);
41
+ // If there are no more passed arguments or the next one also starts with '-' or '--', then simply assign true.
42
+ if ((i + 1) >= passedArguments.length || passedArguments[i + 1].startsWith('-')) {
43
+ command.arguments[argumentName] = true;
44
+ continue;
45
+ }
46
+ const argumentValue = passedArguments[i + 1];
47
+ // Don't forget to increase the index by more than one since we have dealth with the value already.
48
+ i++;
49
+ let parsedValue = parseFloat(argumentValue);
50
+ if (!isNaN(parsedValue)) {
51
+ command.arguments[argumentName] = parsedValue;
52
+ continue;
53
+ }
54
+ parsedValue = argumentValue.toLowerCase();
55
+ if (parsedValue === "true") {
56
+ command.arguments[argumentName] = true;
57
+ continue;
58
+ }
59
+ else if (parsedValue === "false") {
60
+ command.arguments[argumentName] = false;
61
+ continue;
62
+ }
63
+ command.arguments[argumentName] = argumentValue;
64
+ }
65
+ return {
66
+ events: [new Event("command", command)],
67
+ executionOrder: "sequential",
68
+ };
69
+ }
70
+ supportsReverseMapping(eventResponse, response, executionContext) {
71
+ return executionContext.keyname === ExecutionContextKeynameEnum.Cli;
72
+ }
73
+ /**
74
+ * We want to support returning an exit code directly. This means that in the cli.ts file of the customers, they can directly do:
75
+ * process.exit(await kernel.handle(process.argv, {keyname:ExecutionContextKeynameEnum.Cli}));
76
+ * @param eventResponse
77
+ * @param response
78
+ * @param executionContext
79
+ */
80
+ reverseMap(eventResponse, response, executionContext) {
81
+ return eventResponse.response;
82
+ }
83
+ };
84
+ CommandEventMapper = __decorate([
85
+ tag(ServiceDefinitionTagEnum.EventMapper),
86
+ moduleScoped(CliModuleKeyname),
87
+ injectable()
88
+ ], CommandEventMapper);
89
+ export { CommandEventMapper };
90
+ //# sourceMappingURL=command-event.mapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-event.mapper.js","sourceRoot":"","sources":["../../../../src/mappers/command-event.mapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from "./command-event.mapper";
2
+ //# sourceMappingURL=mappers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mappers.js","sourceRoot":"","sources":["../../../../src/mappers/mappers.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { EventResponse } from "@pristine-ts/core";
2
+ export class CommandEventResponse extends EventResponse {
3
+ }
4
+ //# sourceMappingURL=command-event-response.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-event-response.type.js","sourceRoot":"","sources":["../../../../src/types/command-event-response.type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAIhD,MAAM,OAAO,oBAAqB,SAAQ,aAAyD;CAAG"}
@@ -0,0 +1,4 @@
1
+ import { Event } from "@pristine-ts/core";
2
+ export class CommandEvent extends Event {
3
+ }
4
+ //# sourceMappingURL=command-event.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-event.type.js","sourceRoot":"","sources":["../../../../src/types/command-event.type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,mBAAmB,CAAC;AAGxC,MAAM,OAAO,YAAa,SAAQ,KAA0B;CAAG"}
@@ -0,0 +1,3 @@
1
+ export * from "./command-event.type";
2
+ export * from "./command-event-response.type";
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/types/types.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC"}
@@ -0,0 +1 @@
1
+ #!/usr/bin/env node
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,11 @@
1
+ import { ModuleInterface } from "@pristine-ts/common";
2
+ export * from "./commands/commands";
3
+ export * from "./enums/enums";
4
+ export * from "./errors/errors";
5
+ export * from "./event-handlers/event-handlers";
6
+ export * from "./event-payloads/event-payloads";
7
+ export * from "./interfaces/interfaces";
8
+ export * from "./managers/managers";
9
+ export * from "./mappers/mappers";
10
+ export * from "./types/types";
11
+ export declare const CliModule: ModuleInterface;
@@ -0,0 +1 @@
1
+ export declare const CliModuleKeyname: string;
@@ -0,0 +1,2 @@
1
+ export * from "./help.command";
2
+ export * from "./list.command";
@@ -0,0 +1,10 @@
1
+ import { CommandInterface } from "../interfaces/command.interface";
2
+ import { ConsoleManager } from "../managers/console.manager";
3
+ import { ExitCodeEnum } from "../enums/exit-code.enum";
4
+ export declare class HelpCommand implements CommandInterface<null> {
5
+ private readonly consoleManager;
6
+ optionsType: null;
7
+ name: string;
8
+ constructor(consoleManager: ConsoleManager);
9
+ run(args: any): Promise<ExitCodeEnum | number>;
10
+ }
@@ -0,0 +1,12 @@
1
+ import { DependencyContainer } from "tsyringe";
2
+ import { CommandInterface } from "../interfaces/command.interface";
3
+ import { ConsoleManager } from "../managers/console.manager";
4
+ import { ExitCodeEnum } from "../enums/exit-code.enum";
5
+ export declare class ListCommand implements CommandInterface<null> {
6
+ private readonly consoleManager;
7
+ private readonly container;
8
+ constructor(consoleManager: ConsoleManager, container: DependencyContainer);
9
+ optionsType: null;
10
+ name: string;
11
+ run(args: any): Promise<ExitCodeEnum | number>;
12
+ }
@@ -0,0 +1 @@
1
+ export * from "./exit-code.enum";
@@ -0,0 +1,4 @@
1
+ export declare enum ExitCodeEnum {
2
+ Success = 0,
3
+ Error = 1
4
+ }
@@ -0,0 +1,12 @@
1
+ import { LoggableError } from "@pristine-ts/common";
2
+ /**
3
+ * The CommandNotFoundError error when the command specified is not implemented.
4
+ */
5
+ export declare class CommandNotFoundError extends LoggableError {
6
+ readonly commandName: string;
7
+ /**
8
+ * This Error is the base class for CommandNotFoundError errors.
9
+ * @param commandName The name of the command that could not be found
10
+ */
11
+ constructor(commandName: string);
12
+ }
@@ -0,0 +1 @@
1
+ export * from "./command-not-found.error";
@@ -0,0 +1,16 @@
1
+ import { Event, EventHandlerInterface } from "@pristine-ts/core";
2
+ import { CommandEvent } from "../types/command-event.type";
3
+ import { CommandEventResponse } from "../types/command-event-response.type";
4
+ import { CommandInterface } from "../interfaces/command.interface";
5
+ import { LogHandlerInterface } from "@pristine-ts/logging";
6
+ import { Validator } from "@pristine-ts/class-validator";
7
+ import { ConsoleManager } from "../managers/console.manager";
8
+ export declare class CliEventHandler implements EventHandlerInterface<any, any> {
9
+ private readonly logHandler;
10
+ private readonly validator;
11
+ private readonly consoleManager;
12
+ private readonly commands;
13
+ constructor(logHandler: LogHandlerInterface, validator: Validator, consoleManager: ConsoleManager, commands: CommandInterface<any>[]);
14
+ handle(event: CommandEvent): Promise<CommandEventResponse>;
15
+ supports(event: Event<any>): boolean;
16
+ }
@@ -0,0 +1 @@
1
+ export * from "./cli.event-handler";
@@ -0,0 +1,8 @@
1
+ export declare class CommandEventPayload {
2
+ name: string;
3
+ scriptPath: string;
4
+ arguments: {
5
+ [key in string]: string | number | boolean;
6
+ };
7
+ constructor(name: string, scriptPath: string);
8
+ }
@@ -0,0 +1 @@
1
+ export * from "./command.event-payload";
@@ -0,0 +1,8 @@
1
+ import { ExitCodeEnum } from "../enums/exit-code.enum";
2
+ export interface CommandInterface<ArgumentsOptionsType> {
3
+ name: string;
4
+ optionsType: ArgumentsOptionsType;
5
+ run(args: {
6
+ new (...args: any[]): ArgumentsOptionsType;
7
+ }): Promise<ExitCodeEnum | number>;
8
+ }
@@ -0,0 +1 @@
1
+ export * from "./command.interface";
@@ -0,0 +1,4 @@
1
+ export declare class ConsoleManager {
2
+ write(message: string): void;
3
+ writeLine(message: string): void;
4
+ }
@@ -0,0 +1 @@
1
+ export * from "./console.manager";
@@ -0,0 +1,20 @@
1
+ import { EventMapperInterface, EventResponse, EventsExecutionOptionsInterface, ExecutionContextInterface } from "@pristine-ts/core";
2
+ import { CommandEventPayload } from "../event-payloads/command.event-payload";
3
+ export declare class CommandEventMapper implements EventMapperInterface<CommandEventPayload, number> {
4
+ supportsMapping(rawEvent: any, executionContext: ExecutionContextInterface<any>): boolean;
5
+ /**
6
+ * Inspired from: https://github.com/eveningkid/args-parser
7
+ * @param rawEvent
8
+ * @param executionContext
9
+ */
10
+ map(rawEvent: any, executionContext: ExecutionContextInterface<any>): EventsExecutionOptionsInterface<CommandEventPayload>;
11
+ supportsReverseMapping(eventResponse: EventResponse<CommandEventPayload, number>, response: any, executionContext: ExecutionContextInterface<any>): boolean;
12
+ /**
13
+ * We want to support returning an exit code directly. This means that in the cli.ts file of the customers, they can directly do:
14
+ * process.exit(await kernel.handle(process.argv, {keyname:ExecutionContextKeynameEnum.Cli}));
15
+ * @param eventResponse
16
+ * @param response
17
+ * @param executionContext
18
+ */
19
+ reverseMap(eventResponse: EventResponse<CommandEventPayload, number>, response: any, executionContext: ExecutionContextInterface<any>): any;
20
+ }
@@ -0,0 +1 @@
1
+ export * from "./command-event.mapper";
@@ -0,0 +1,5 @@
1
+ import { EventResponse } from "@pristine-ts/core";
2
+ import { CommandEventPayload } from "../event-payloads/command.event-payload";
3
+ import { ExitCodeEnum } from "../enums/exit-code.enum";
4
+ export declare class CommandEventResponse extends EventResponse<CommandEventPayload, ExitCodeEnum | number> {
5
+ }
@@ -0,0 +1,4 @@
1
+ import { Event } from "@pristine-ts/core";
2
+ import { CommandEventPayload } from "../event-payloads/command.event-payload";
3
+ export declare class CommandEvent extends Event<CommandEventPayload> {
4
+ }
@@ -0,0 +1,2 @@
1
+ export * from "./command-event.type";
2
+ export * from "./command-event-response.type";
package/package.json ADDED
@@ -0,0 +1,67 @@
1
+ {
2
+ "name": "@pristine-ts/cli",
3
+ "version": "0.0.240",
4
+ "description": "",
5
+ "module": "dist/lib/esm/cli.module.js",
6
+ "main": "dist/lib/cjs/cli.module.js",
7
+ "types": "dist/types/cli.module.d.ts",
8
+ "bin": {
9
+ "pristine": "dist/lib/cjs/bin.js"
10
+ },
11
+ "scripts": {
12
+ "build": "tsc -p tsconfig.json && tsc -p tsconfig.cjs.json",
13
+ "prepublish": "npm run build",
14
+ "test": "jest",
15
+ "test:cov": "jest --coverage"
16
+ },
17
+ "files": [
18
+ "dist"
19
+ ],
20
+ "author": "",
21
+ "license": "ISC",
22
+ "publishConfig": {
23
+ "access": "public"
24
+ },
25
+ "dependencies": {
26
+ "@pristine-ts/common": "^0.0.240",
27
+ "@pristine-ts/core": "^0.0.240",
28
+ "@pristine-ts/logging": "^0.0.240",
29
+ "@pristine-ts/validation": "^0.0.240",
30
+ "class-transformer": "^0.5.1"
31
+ },
32
+ "jest": {
33
+ "transform": {
34
+ ".(ts|tsx)": "ts-jest"
35
+ },
36
+ "globals": {
37
+ "ts-jest": {
38
+ "tsconfig": {
39
+ "strictNullChecks": false
40
+ }
41
+ }
42
+ },
43
+ "testEnvironment": "node",
44
+ "testRegex": "(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js)$",
45
+ "moduleFileExtensions": [
46
+ "ts",
47
+ "tsx",
48
+ "js"
49
+ ],
50
+ "coveragePathIgnorePatterns": [
51
+ "/node_modules/",
52
+ "/test/"
53
+ ],
54
+ "coverageThreshold": {
55
+ "global": {
56
+ "branches": 90,
57
+ "functions": 95,
58
+ "lines": 95,
59
+ "statements": 95
60
+ }
61
+ },
62
+ "collectCoverageFrom": [
63
+ "src/*.{js,ts}"
64
+ ]
65
+ },
66
+ "gitHead": "75e0482907287f14cc70102e947fb6f04c2921ec"
67
+ }