@pristine-ts/cli 2.0.7 → 2.0.17
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/dist/lib/cjs/bootstrap/build-staleness-prompt.js +12 -13
- package/dist/lib/cjs/bootstrap/build-staleness-prompt.js.map +1 -1
- package/dist/lib/cjs/bootstrap/init-prompt.js +16 -47
- package/dist/lib/cjs/bootstrap/init-prompt.js.map +1 -1
- package/dist/lib/cjs/cli.configuration-keys.js +24 -0
- package/dist/lib/cjs/cli.configuration-keys.js.map +1 -0
- package/dist/lib/cjs/cli.js +23 -10
- package/dist/lib/cjs/cli.js.map +1 -1
- package/dist/lib/cjs/cli.module.js +29 -1
- package/dist/lib/cjs/cli.module.js.map +1 -1
- package/dist/lib/cjs/commands/commands.js +6 -0
- package/dist/lib/cjs/commands/commands.js.map +1 -1
- package/dist/lib/cjs/commands/logs-alias.command.js +49 -0
- package/dist/lib/cjs/commands/logs-alias.command.js.map +1 -0
- package/dist/lib/cjs/commands/logs.command-options.js +72 -0
- package/dist/lib/cjs/commands/logs.command-options.js.map +1 -0
- package/dist/lib/cjs/commands/logs.command.js +102 -0
- package/dist/lib/cjs/commands/logs.command.js.map +1 -0
- package/dist/lib/cjs/commands/requests-alias.command.js +49 -0
- package/dist/lib/cjs/commands/requests-alias.command.js.map +1 -0
- package/dist/lib/cjs/commands/requests.command-options.js +26 -0
- package/dist/lib/cjs/commands/requests.command-options.js.map +1 -0
- package/dist/lib/cjs/commands/requests.command.js +88 -0
- package/dist/lib/cjs/commands/requests.command.js.map +1 -0
- package/dist/lib/cjs/commands/trace-alias.command.js +49 -0
- package/dist/lib/cjs/commands/trace-alias.command.js.map +1 -0
- package/dist/lib/cjs/commands/trace.command-options.js +59 -0
- package/dist/lib/cjs/commands/trace.command-options.js.map +1 -0
- package/dist/lib/cjs/commands/trace.command.js +84 -0
- package/dist/lib/cjs/commands/trace.command.js.map +1 -0
- package/dist/lib/cjs/config/config-loader.js +34 -13
- package/dist/lib/cjs/config/config-loader.js.map +1 -1
- package/dist/lib/cjs/decorators/command-parameter.decorator.js +40 -0
- package/dist/lib/cjs/decorators/command-parameter.decorator.js.map +1 -0
- package/dist/lib/cjs/decorators/decorators.js +18 -0
- package/dist/lib/cjs/decorators/decorators.js.map +1 -0
- package/dist/lib/cjs/enums/cli-decorator-metadata-keyname.enum.js +14 -0
- package/dist/lib/cjs/enums/cli-decorator-metadata-keyname.enum.js.map +1 -0
- package/dist/lib/cjs/enums/enums.js +19 -0
- package/dist/lib/cjs/enums/enums.js.map +1 -0
- package/dist/lib/cjs/enums/terminal-key-name.enum.js +21 -0
- package/dist/lib/cjs/enums/terminal-key-name.enum.js.map +1 -0
- package/dist/lib/cjs/errors/cli-error-code.enum.js +11 -1
- package/dist/lib/cjs/errors/cli-error-code.enum.js.map +1 -1
- package/dist/lib/cjs/errors/errors.js +1 -0
- package/dist/lib/cjs/errors/errors.js.map +1 -1
- package/dist/lib/cjs/errors/prompt-cancelled.error.js +25 -0
- package/dist/lib/cjs/errors/prompt-cancelled.error.js.map +1 -0
- package/dist/lib/cjs/event-handlers/cli.event-handler.js +21 -65
- package/dist/lib/cjs/event-handlers/cli.event-handler.js.map +1 -1
- package/dist/lib/cjs/event-handlers/event-handlers.js +1 -0
- package/dist/lib/cjs/event-handlers/event-handlers.js.map +1 -1
- package/dist/lib/cjs/event-handlers/repl-start.event-handler.js +280 -0
- package/dist/lib/cjs/event-handlers/repl-start.event-handler.js.map +1 -0
- package/dist/lib/cjs/event-payloads/event-payloads.js +1 -0
- package/dist/lib/cjs/event-payloads/event-payloads.js.map +1 -1
- package/dist/lib/cjs/event-payloads/start-repl.event-payload.js +19 -0
- package/dist/lib/cjs/event-payloads/start-repl.event-payload.js.map +1 -0
- package/dist/lib/cjs/interfaces/interfaces.js +1 -0
- package/dist/lib/cjs/interfaces/interfaces.js.map +1 -1
- package/dist/lib/cjs/interfaces/terminal-key.interface.js +3 -0
- package/dist/lib/cjs/interfaces/terminal-key.interface.js.map +1 -0
- package/dist/lib/cjs/managers/cli-prompt.manager.js +181 -15
- package/dist/lib/cjs/managers/cli-prompt.manager.js.map +1 -1
- package/dist/lib/cjs/managers/managers.js +1 -0
- package/dist/lib/cjs/managers/managers.js.map +1 -1
- package/dist/lib/cjs/managers/terminal-key-reader.manager.js +99 -0
- package/dist/lib/cjs/managers/terminal-key-reader.manager.js.map +1 -0
- package/dist/lib/cjs/mappers/command-event.mapper.js +48 -8
- package/dist/lib/cjs/mappers/command-event.mapper.js.map +1 -1
- package/dist/lib/cjs/mappers/mappers.js +1 -0
- package/dist/lib/cjs/mappers/mappers.js.map +1 -1
- package/dist/lib/cjs/mappers/repl-start-event.mapper.js +80 -0
- package/dist/lib/cjs/mappers/repl-start-event.mapper.js.map +1 -0
- package/dist/lib/cjs/options/command-parameter.options.js +3 -0
- package/dist/lib/cjs/options/command-parameter.options.js.map +1 -0
- package/dist/lib/cjs/options/options.js +1 -0
- package/dist/lib/cjs/options/options.js.map +1 -1
- package/dist/lib/cjs/services/command-argument-resolver.js +62 -0
- package/dist/lib/cjs/services/command-argument-resolver.js.map +1 -0
- package/dist/lib/cjs/services/command-options-resolver.js +114 -0
- package/dist/lib/cjs/services/command-options-resolver.js.map +1 -0
- package/dist/lib/cjs/services/command-parameter-prompter.js +311 -0
- package/dist/lib/cjs/services/command-parameter-prompter.js.map +1 -0
- package/dist/lib/cjs/services/services.js +20 -0
- package/dist/lib/cjs/services/services.js.map +1 -0
- package/dist/lib/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/lib/cjs/types/start-repl-event-response.type.js +13 -0
- package/dist/lib/cjs/types/start-repl-event-response.type.js.map +1 -0
- package/dist/lib/cjs/types/types.js +1 -0
- package/dist/lib/cjs/types/types.js.map +1 -1
- package/dist/lib/cjs/utils/boolean-answer-parser.js +25 -0
- package/dist/lib/cjs/utils/boolean-answer-parser.js.map +1 -0
- package/dist/lib/cjs/utils/pristine-argv.js +87 -0
- package/dist/lib/cjs/utils/pristine-argv.js.map +1 -0
- package/dist/lib/cjs/utils/terminal-key-decoder.js +71 -0
- package/dist/lib/cjs/utils/terminal-key-decoder.js.map +1 -0
- package/dist/lib/esm/bootstrap/build-staleness-prompt.js +12 -13
- package/dist/lib/esm/bootstrap/build-staleness-prompt.js.map +1 -1
- package/dist/lib/esm/bootstrap/init-prompt.js +16 -47
- package/dist/lib/esm/bootstrap/init-prompt.js.map +1 -1
- package/dist/lib/esm/cli.configuration-keys.js +21 -0
- package/dist/lib/esm/cli.configuration-keys.js.map +1 -0
- package/dist/lib/esm/cli.js +23 -10
- package/dist/lib/esm/cli.js.map +1 -1
- package/dist/lib/esm/cli.module.js +29 -1
- package/dist/lib/esm/cli.module.js.map +1 -1
- package/dist/lib/esm/commands/commands.js +6 -0
- package/dist/lib/esm/commands/commands.js.map +1 -1
- package/dist/lib/esm/commands/logs-alias.command.js +46 -0
- package/dist/lib/esm/commands/logs-alias.command.js.map +1 -0
- package/dist/lib/esm/commands/logs.command-options.js +68 -0
- package/dist/lib/esm/commands/logs.command-options.js.map +1 -0
- package/dist/lib/esm/commands/logs.command.js +99 -0
- package/dist/lib/esm/commands/logs.command.js.map +1 -0
- package/dist/lib/esm/commands/requests-alias.command.js +46 -0
- package/dist/lib/esm/commands/requests-alias.command.js.map +1 -0
- package/dist/lib/esm/commands/requests.command-options.js +22 -0
- package/dist/lib/esm/commands/requests.command-options.js.map +1 -0
- package/dist/lib/esm/commands/requests.command.js +85 -0
- package/dist/lib/esm/commands/requests.command.js.map +1 -0
- package/dist/lib/esm/commands/trace-alias.command.js +46 -0
- package/dist/lib/esm/commands/trace-alias.command.js.map +1 -0
- package/dist/lib/esm/commands/trace.command-options.js +55 -0
- package/dist/lib/esm/commands/trace.command-options.js.map +1 -0
- package/dist/lib/esm/commands/trace.command.js +81 -0
- package/dist/lib/esm/commands/trace.command.js.map +1 -0
- package/dist/lib/esm/config/config-loader.js +34 -13
- package/dist/lib/esm/config/config-loader.js.map +1 -1
- package/dist/lib/esm/decorators/command-parameter.decorator.js +36 -0
- package/dist/lib/esm/decorators/command-parameter.decorator.js.map +1 -0
- package/dist/lib/esm/decorators/decorators.js +2 -0
- package/dist/lib/esm/decorators/decorators.js.map +1 -0
- package/dist/lib/esm/enums/cli-decorator-metadata-keyname.enum.js +11 -0
- package/dist/lib/esm/enums/cli-decorator-metadata-keyname.enum.js.map +1 -0
- package/dist/lib/esm/enums/enums.js +3 -0
- package/dist/lib/esm/enums/enums.js.map +1 -0
- package/dist/lib/esm/enums/terminal-key-name.enum.js +18 -0
- package/dist/lib/esm/enums/terminal-key-name.enum.js.map +1 -0
- package/dist/lib/esm/errors/cli-error-code.enum.js +11 -1
- package/dist/lib/esm/errors/cli-error-code.enum.js.map +1 -1
- package/dist/lib/esm/errors/errors.js +1 -0
- package/dist/lib/esm/errors/errors.js.map +1 -1
- package/dist/lib/esm/errors/prompt-cancelled.error.js +21 -0
- package/dist/lib/esm/errors/prompt-cancelled.error.js.map +1 -0
- package/dist/lib/esm/event-handlers/cli.event-handler.js +22 -66
- package/dist/lib/esm/event-handlers/cli.event-handler.js.map +1 -1
- package/dist/lib/esm/event-handlers/event-handlers.js +1 -0
- package/dist/lib/esm/event-handlers/event-handlers.js.map +1 -1
- package/dist/lib/esm/event-handlers/repl-start.event-handler.js +244 -0
- package/dist/lib/esm/event-handlers/repl-start.event-handler.js.map +1 -0
- package/dist/lib/esm/event-payloads/event-payloads.js +1 -0
- package/dist/lib/esm/event-payloads/event-payloads.js.map +1 -1
- package/dist/lib/esm/event-payloads/start-repl.event-payload.js +15 -0
- package/dist/lib/esm/event-payloads/start-repl.event-payload.js.map +1 -0
- package/dist/lib/esm/interfaces/interfaces.js +1 -0
- package/dist/lib/esm/interfaces/interfaces.js.map +1 -1
- package/dist/lib/esm/interfaces/terminal-key.interface.js +2 -0
- package/dist/lib/esm/interfaces/terminal-key.interface.js.map +1 -0
- package/dist/lib/esm/managers/cli-prompt.manager.js +182 -16
- package/dist/lib/esm/managers/cli-prompt.manager.js.map +1 -1
- package/dist/lib/esm/managers/managers.js +1 -0
- package/dist/lib/esm/managers/managers.js.map +1 -1
- package/dist/lib/esm/managers/terminal-key-reader.manager.js +96 -0
- package/dist/lib/esm/managers/terminal-key-reader.manager.js.map +1 -0
- package/dist/lib/esm/mappers/command-event.mapper.js +49 -9
- package/dist/lib/esm/mappers/command-event.mapper.js.map +1 -1
- package/dist/lib/esm/mappers/mappers.js +1 -0
- package/dist/lib/esm/mappers/mappers.js.map +1 -1
- package/dist/lib/esm/mappers/repl-start-event.mapper.js +77 -0
- package/dist/lib/esm/mappers/repl-start-event.mapper.js.map +1 -0
- package/dist/lib/esm/options/command-parameter.options.js +2 -0
- package/dist/lib/esm/options/command-parameter.options.js.map +1 -0
- package/dist/lib/esm/options/options.js +1 -0
- package/dist/lib/esm/options/options.js.map +1 -1
- package/dist/lib/esm/services/command-argument-resolver.js +59 -0
- package/dist/lib/esm/services/command-argument-resolver.js.map +1 -0
- package/dist/lib/esm/services/command-options-resolver.js +111 -0
- package/dist/lib/esm/services/command-options-resolver.js.map +1 -0
- package/dist/lib/esm/services/command-parameter-prompter.js +308 -0
- package/dist/lib/esm/services/command-parameter-prompter.js.map +1 -0
- package/dist/lib/esm/services/services.js +4 -0
- package/dist/lib/esm/services/services.js.map +1 -0
- package/dist/lib/esm/tsconfig.tsbuildinfo +1 -1
- package/dist/lib/esm/types/start-repl-event-response.type.js +9 -0
- package/dist/lib/esm/types/start-repl-event-response.type.js.map +1 -0
- package/dist/lib/esm/types/types.js +1 -0
- package/dist/lib/esm/types/types.js.map +1 -1
- package/dist/lib/esm/utils/boolean-answer-parser.js +21 -0
- package/dist/lib/esm/utils/boolean-answer-parser.js.map +1 -0
- package/dist/lib/esm/utils/pristine-argv.js +50 -0
- package/dist/lib/esm/utils/pristine-argv.js.map +1 -0
- package/dist/lib/esm/utils/terminal-key-decoder.js +67 -0
- package/dist/lib/esm/utils/terminal-key-decoder.js.map +1 -0
- package/dist/types/bootstrap/build-staleness-prompt.d.ts +3 -3
- package/dist/types/bootstrap/init-prompt.d.ts +5 -5
- package/dist/types/cli.configuration-keys.d.ts +32 -0
- package/dist/types/cli.d.ts +8 -4
- package/dist/types/cli.module.d.ts +4 -0
- package/dist/types/commands/commands.d.ts +6 -0
- package/dist/types/commands/logs-alias.command.d.ts +14 -0
- package/dist/types/commands/logs.command-options.d.ts +38 -0
- package/dist/types/commands/logs.command.d.ts +31 -0
- package/dist/types/commands/requests-alias.command.d.ts +14 -0
- package/dist/types/commands/requests.command-options.d.ts +8 -0
- package/dist/types/commands/requests.command.d.ts +25 -0
- package/dist/types/commands/trace-alias.command.d.ts +14 -0
- package/dist/types/commands/trace.command-options.d.ts +31 -0
- package/dist/types/commands/trace.command.d.ts +21 -0
- package/dist/types/config/config-loader.d.ts +15 -3
- package/dist/types/decorators/command-parameter.decorator.d.ts +30 -0
- package/dist/types/decorators/decorators.d.ts +1 -0
- package/dist/types/enums/cli-decorator-metadata-keyname.enum.d.ts +9 -0
- package/dist/types/enums/enums.d.ts +2 -0
- package/dist/types/enums/terminal-key-name.enum.d.ts +16 -0
- package/dist/types/errors/cli-error-code.enum.d.ts +12 -2
- package/dist/types/errors/errors.d.ts +1 -0
- package/dist/types/errors/prompt-cancelled.error.d.ts +13 -0
- package/dist/types/event-handlers/cli.event-handler.d.ts +16 -13
- package/dist/types/event-handlers/event-handlers.d.ts +1 -0
- package/dist/types/event-handlers/repl-start.event-handler.d.ts +70 -0
- package/dist/types/event-payloads/event-payloads.d.ts +1 -0
- package/dist/types/event-payloads/start-repl.event-payload.d.ts +13 -0
- package/dist/types/interfaces/interfaces.d.ts +1 -0
- package/dist/types/interfaces/terminal-key.interface.d.ts +11 -0
- package/dist/types/managers/cli-prompt.manager.d.ts +63 -6
- package/dist/types/managers/managers.d.ts +1 -0
- package/dist/types/managers/terminal-key-reader.manager.d.ts +31 -0
- package/dist/types/mappers/command-event.mapper.d.ts +10 -1
- package/dist/types/mappers/mappers.d.ts +1 -0
- package/dist/types/mappers/repl-start-event.mapper.d.ts +28 -0
- package/dist/types/options/command-parameter.options.d.ts +29 -0
- package/dist/types/options/options.d.ts +1 -0
- package/dist/types/services/command-argument-resolver.d.ts +24 -0
- package/dist/types/services/command-options-resolver.d.ts +35 -0
- package/dist/types/services/command-parameter-prompter.d.ts +113 -0
- package/dist/types/services/services.d.ts +3 -0
- package/dist/types/types/start-repl-event-response.type.d.ts +10 -0
- package/dist/types/types/types.d.ts +1 -0
- package/dist/types/utils/boolean-answer-parser.d.ts +11 -0
- package/dist/types/utils/pristine-argv.d.ts +33 -0
- package/dist/types/utils/terminal-key-decoder.d.ts +28 -0
- package/package.json +16 -12
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repl-start-event.mapper.js","sourceRoot":"","sources":["../../../../src/mappers/repl-start-event.mapper.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4CAQ2B;AAC3B,uCAAoC;AACpC,gDAAgF;AAChF,yFAAiF;AACjF,8DAAuD;AACvD,0DAAoD;AAEpD;;;;;;;;;;;;;GAaG;AAII,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAC/B,YAA6B,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;IAC3D,CAAC;IAED,eAAe,CAAC,QAAa,EAAE,gBAAgD;QAC7E,IAAI,gBAAgB,CAAC,OAAO,KAAK,kCAA2B,CAAC,GAAG,EAAE,CAAC;YACjE,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,KAAK,EAAE,CAAC;YACtC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,4BAAY,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,oFAAoF;QACpF,uCAAuC;QACvC,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC;IACnE,CAAC;IAED,GAAG,CAAC,QAAa,EAAE,gBAAgD;QACjE,MAAM,IAAI,GAAG,IAAI,4BAAY,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACvE,MAAM,OAAO,GAAG,IAAI,gDAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3D,OAAO;YACL,MAAM,EAAE,CAAC,IAAI,YAAK,CAAwB,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC;YACxG,cAAc,EAAE,YAAY;SAC7B,CAAC;IACJ,CAAC;IAED,sBAAsB,CAAC,aAA2D,EAAE,QAAa,EAAE,gBAAgD;;QACjJ,OAAO,gBAAgB,CAAC,OAAO,KAAK,kCAA2B,CAAC,GAAG;eAC9D,CAAA,MAAA,aAAa,CAAC,KAAK,0CAAE,OAAO,aAAY,gDAAqB,CAAC;IACrE,CAAC;IAED;;;OAGG;IACH,UAAU,CAAC,aAA2D,EAAE,QAAa,EAAE,gBAAgD;QACrI,OAAO,aAAa,CAAC,QAAQ,CAAC;IAChC,CAAC;CACF,CAAA;AAzCY,oDAAoB;+BAApB,oBAAoB;IAHhC,IAAA,YAAG,EAAC,iCAAwB,CAAC,WAAW,CAAC;IACzC,IAAA,qBAAY,EAAC,qCAAgB,CAAC;IAC9B,IAAA,qBAAU,GAAE;qCAEkC,qBAAc;GADhD,oBAAoB,CAyChC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-parameter.options.js","sourceRoot":"","sources":["../../../../src/options/command-parameter.options.ts"],"names":[],"mappings":""}
|
|
@@ -14,5 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./command-parameter.options"), exports);
|
|
17
18
|
__exportStar(require("./console-readline.options"), exports);
|
|
18
19
|
//# sourceMappingURL=options.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../../../src/options/options.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6DAA2C"}
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../../../src/options/options.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA4C;AAC5C,6DAA2C"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
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;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
12
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
13
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
14
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
15
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
16
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
17
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
exports.CommandArgumentResolver = void 0;
|
|
22
|
+
const tsyringe_1 = require("tsyringe");
|
|
23
|
+
const common_1 = require("@pristine-ts/common");
|
|
24
|
+
const cli_module_keyname_1 = require("../cli.module.keyname");
|
|
25
|
+
const command_options_resolver_1 = require("./command-options-resolver");
|
|
26
|
+
/**
|
|
27
|
+
* Maps a command's raw parsed arguments onto a typed, validated instance of its
|
|
28
|
+
* `optionsType`. Used by both the one-shot dispatch path (`CliEventHandler.resolveArgs`)
|
|
29
|
+
* and the interactive REPL (which dispatches via that same handler), so command
|
|
30
|
+
* arguments are resolved through identical logic everywhere.
|
|
31
|
+
*
|
|
32
|
+
* Thin wrapper over `CommandOptionsResolver`: it passes the raw argv straight through for
|
|
33
|
+
* commands that opt out of typed options (`optionsType === null`) and otherwise delegates
|
|
34
|
+
* the prompt → map → validate pipeline. Commands (or dynamic flows) that need to fill an
|
|
35
|
+
* options class directly can inject `CommandOptionsResolver` instead.
|
|
36
|
+
*/
|
|
37
|
+
let CommandArgumentResolver = class CommandArgumentResolver {
|
|
38
|
+
constructor(commandOptionsResolver) {
|
|
39
|
+
this.commandOptionsResolver = commandOptionsResolver;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* For commands that opt out of typed options (`optionsType === null`), passes the raw
|
|
43
|
+
* args through unchanged. Otherwise delegates to `CommandOptionsResolver`, which fills any
|
|
44
|
+
* missing `@commandParameter` values by prompting, maps the result onto `optionsType`, and
|
|
45
|
+
* validates it.
|
|
46
|
+
*/
|
|
47
|
+
resolve(command, rawArgs) {
|
|
48
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
49
|
+
if (command.optionsType === null) {
|
|
50
|
+
return rawArgs;
|
|
51
|
+
}
|
|
52
|
+
return this.commandOptionsResolver.resolve(command.optionsType, rawArgs);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
exports.CommandArgumentResolver = CommandArgumentResolver;
|
|
57
|
+
exports.CommandArgumentResolver = CommandArgumentResolver = __decorate([
|
|
58
|
+
(0, tsyringe_1.injectable)(),
|
|
59
|
+
(0, common_1.moduleScoped)(cli_module_keyname_1.CliModuleKeyname),
|
|
60
|
+
__metadata("design:paramtypes", [command_options_resolver_1.CommandOptionsResolver])
|
|
61
|
+
], CommandArgumentResolver);
|
|
62
|
+
//# sourceMappingURL=command-argument-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-argument-resolver.js","sourceRoot":"","sources":["../../../../src/services/command-argument-resolver.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,uCAAoC;AACpC,gDAAiD;AAEjD,8DAAuD;AACvD,yEAAkE;AAElE;;;;;;;;;;GAUG;AAGI,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAClC,YACmB,sBAA8C;QAA9C,2BAAsB,GAAtB,sBAAsB,CAAwB;IAEjE,CAAC;IAED;;;;;OAKG;IACG,OAAO,CAAC,OAA8B,EAAE,OAAY;;YACxD,IAAI,OAAO,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;gBACjC,OAAO,OAAO,CAAC;YACjB,CAAC;YACD,OAAO,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC3E,CAAC;KAAA;CACF,CAAA;AAlBY,0DAAuB;kCAAvB,uBAAuB;IAFnC,IAAA,qBAAU,GAAE;IACZ,IAAA,qBAAY,EAAC,qCAAgB,CAAC;qCAGc,iDAAsB;GAFtD,uBAAuB,CAkBnC"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
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;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
12
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
13
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
14
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
15
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
16
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
17
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
exports.CommandOptionsResolver = void 0;
|
|
22
|
+
const tsyringe_1 = require("tsyringe");
|
|
23
|
+
const common_1 = require("@pristine-ts/common");
|
|
24
|
+
const class_validator_1 = require("@pristine-ts/class-validator");
|
|
25
|
+
const data_mapping_1 = require("@pristine-ts/data-mapping");
|
|
26
|
+
const cli_module_keyname_1 = require("../cli.module.keyname");
|
|
27
|
+
const cli_error_code_enum_1 = require("../errors/cli-error-code.enum");
|
|
28
|
+
const command_parameter_prompter_1 = require("./command-parameter-prompter");
|
|
29
|
+
/**
|
|
30
|
+
* Resolves a typed, validated options instance from raw arguments: it fills any missing
|
|
31
|
+
* `@commandParameter` values by prompting, maps the result onto a real `optionsType`
|
|
32
|
+
* instance (prototype + decorator metadata intact, so `class-validator` finds its rules),
|
|
33
|
+
* and validates it.
|
|
34
|
+
*
|
|
35
|
+
* This is the reusable core behind command dispatch — `CommandArgumentResolver` delegates
|
|
36
|
+
* here — exposed so commands and dynamic flows can fill an options class from prompts on
|
|
37
|
+
* demand, including ones not tied to a registered command:
|
|
38
|
+
*
|
|
39
|
+
* ```ts
|
|
40
|
+
* constructor(private readonly optionsResolver: CommandOptionsResolver) {}
|
|
41
|
+
* // ...later, possibly choosing the class at runtime:
|
|
42
|
+
* const options = await this.optionsResolver.resolve(MyOptions, {region: "us"});
|
|
43
|
+
* ```
|
|
44
|
+
*
|
|
45
|
+
* Throws `UsageError` for mapping failures and `ValidationError` for validation failures —
|
|
46
|
+
* both carry structured `details` for `CliErrorReporter`.
|
|
47
|
+
*/
|
|
48
|
+
let CommandOptionsResolver = class CommandOptionsResolver {
|
|
49
|
+
constructor(validator, dataMapper, commandParameterPrompter) {
|
|
50
|
+
this.validator = validator;
|
|
51
|
+
this.dataMapper = dataMapper;
|
|
52
|
+
this.commandParameterPrompter = commandParameterPrompter;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Prompts for any missing parameters declared on `optionsType`, then maps `rawArgs` (plus
|
|
56
|
+
* the prompted answers) onto a real instance and validates it. `rawArgs` seeds the values
|
|
57
|
+
* already known — anything absent that carries a `question` is asked for interactively.
|
|
58
|
+
*/
|
|
59
|
+
resolve(optionsType_1) {
|
|
60
|
+
return __awaiter(this, arguments, void 0, function* (optionsType, rawArgs = {}) {
|
|
61
|
+
const preparedArgs = yield this.commandParameterPrompter.fillMissingParameters(optionsType, rawArgs);
|
|
62
|
+
let mapped;
|
|
63
|
+
try {
|
|
64
|
+
// `throwOnErrors: true` so a normalizer failure surfaces here instead of `autoMap`
|
|
65
|
+
// silently returning the source object (which would defeat validation downstream).
|
|
66
|
+
mapped = yield this.dataMapper.autoMap(preparedArgs, optionsType, new data_mapping_1.AutoDataMappingBuilderOptions({ throwOnErrors: true }));
|
|
67
|
+
}
|
|
68
|
+
catch (cause) {
|
|
69
|
+
throw new common_1.UsageError(`Failed to map arguments to '${optionsType.name}': ${cause.message}`, {
|
|
70
|
+
code: cli_error_code_enum_1.CliErrorCode.ArgumentMappingFailed,
|
|
71
|
+
cause: cause,
|
|
72
|
+
details: { targetType: optionsType.name },
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
const validationErrors = yield this.validator.validate(mapped);
|
|
76
|
+
if (validationErrors.length === 0) {
|
|
77
|
+
return mapped;
|
|
78
|
+
}
|
|
79
|
+
// Reshape the class-validator output into structured `details` the reporter can render
|
|
80
|
+
// line-by-line. Keeps the throw single-pass and the reporter format-agnostic.
|
|
81
|
+
const failures = {};
|
|
82
|
+
for (const error of validationErrors) {
|
|
83
|
+
const messages = [];
|
|
84
|
+
for (const constraintKey in error.constraints) {
|
|
85
|
+
// `@pristine-ts/class-validator` stores constraints as `{keyname, message}` objects
|
|
86
|
+
// rather than the plain strings vanilla class-validator uses. Extract the message
|
|
87
|
+
// when present, falling back to JSON for unknown shapes so we never print
|
|
88
|
+
// `[object Object]`.
|
|
89
|
+
const constraint = error.constraints[constraintKey];
|
|
90
|
+
const message = typeof constraint === "string"
|
|
91
|
+
? constraint
|
|
92
|
+
: (constraint && typeof constraint === "object" && typeof constraint.message === "string")
|
|
93
|
+
? constraint.message
|
|
94
|
+
: JSON.stringify(constraint);
|
|
95
|
+
messages.push(`[${constraintKey}] ${message}`);
|
|
96
|
+
}
|
|
97
|
+
failures[error.property] = messages;
|
|
98
|
+
}
|
|
99
|
+
throw new common_1.ValidationError("Argument validation failed", {
|
|
100
|
+
code: cli_error_code_enum_1.CliErrorCode.ArgumentValidationFailed,
|
|
101
|
+
details: failures,
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
exports.CommandOptionsResolver = CommandOptionsResolver;
|
|
107
|
+
exports.CommandOptionsResolver = CommandOptionsResolver = __decorate([
|
|
108
|
+
(0, tsyringe_1.injectable)(),
|
|
109
|
+
(0, common_1.moduleScoped)(cli_module_keyname_1.CliModuleKeyname),
|
|
110
|
+
__metadata("design:paramtypes", [class_validator_1.Validator,
|
|
111
|
+
data_mapping_1.DataMapper,
|
|
112
|
+
command_parameter_prompter_1.CommandParameterPrompter])
|
|
113
|
+
], CommandOptionsResolver);
|
|
114
|
+
//# sourceMappingURL=command-options-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-options-resolver.js","sourceRoot":"","sources":["../../../../src/services/command-options-resolver.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,uCAAoC;AAEpC,gDAA8E;AAC9E,kEAAuD;AACvD,4DAAoF;AACpF,8DAAuD;AACvD,uEAA2D;AAC3D,6EAAsE;AAEtE;;;;;;;;;;;;;;;;;;GAkBG;AAGI,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IACjC,YACmB,SAAoB,EACpB,UAAsB,EACtB,wBAAkD;QAFlD,cAAS,GAAT,SAAS,CAAW;QACpB,eAAU,GAAV,UAAU,CAAY;QACtB,6BAAwB,GAAxB,wBAAwB,CAA0B;IAErE,CAAC;IAED;;;;OAIG;IACG,OAAO;6DAAI,WAAgC,EAAE,UAA+B,EAAE;YAClF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,qBAAqB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAErG,IAAI,MAAS,CAAC;YACd,IAAI,CAAC;gBACH,mFAAmF;gBACnF,mFAAmF;gBACnF,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,EAAE,WAAW,EAAE,IAAI,4CAA6B,CAAC,EAAC,aAAa,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC;YAC9H,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,mBAAU,CAClB,+BAA+B,WAAW,CAAC,IAAI,MAAO,KAAe,CAAC,OAAO,EAAE,EAC/E;oBACE,IAAI,EAAE,kCAAY,CAAC,qBAAqB;oBACxC,KAAK,EAAE,KAAc;oBACrB,OAAO,EAAE,EAAC,UAAU,EAAE,WAAW,CAAC,IAAI,EAAC;iBACxC,CACF,CAAC;YACJ,CAAC;YAED,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC/D,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClC,OAAO,MAAM,CAAC;YAChB,CAAC;YAED,uFAAuF;YACvF,8EAA8E;YAC9E,MAAM,QAAQ,GAA6B,EAAE,CAAC;YAC9C,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;gBACrC,MAAM,QAAQ,GAAa,EAAE,CAAC;gBAC9B,KAAK,MAAM,aAAa,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;oBAC9C,oFAAoF;oBACpF,kFAAkF;oBAClF,0EAA0E;oBAC1E,qBAAqB;oBACrB,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;oBACpD,MAAM,OAAO,GAAG,OAAO,UAAU,KAAK,QAAQ;wBAC5C,CAAC,CAAC,UAAU;wBACZ,CAAC,CAAC,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,OAAQ,UAAkB,CAAC,OAAO,KAAK,QAAQ,CAAC;4BACjG,CAAC,CAAE,UAAkB,CAAC,OAAO;4BAC7B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;oBACjC,QAAQ,CAAC,IAAI,CAAC,IAAI,aAAa,KAAK,OAAO,EAAE,CAAC,CAAC;gBACjD,CAAC;gBACD,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;YACtC,CAAC;YACD,MAAM,IAAI,wBAAe,CAAC,4BAA4B,EAAE;gBACtD,IAAI,EAAE,kCAAY,CAAC,wBAAwB;gBAC3C,OAAO,EAAE,QAAQ;aAClB,CAAC,CAAC;QACL,CAAC;KAAA;CACF,CAAA;AA9DY,wDAAsB;iCAAtB,sBAAsB;IAFlC,IAAA,qBAAU,GAAE;IACZ,IAAA,qBAAY,EAAC,qCAAgB,CAAC;qCAGC,2BAAS;QACR,yBAAU;QACI,qDAAwB;GAJ1D,sBAAsB,CA8DlC"}
|
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
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;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
15
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
16
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
17
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
18
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
19
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
20
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
var CommandParameterPrompter_1;
|
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
+
exports.CommandParameterPrompter = void 0;
|
|
26
|
+
require("reflect-metadata");
|
|
27
|
+
const tsyringe_1 = require("tsyringe");
|
|
28
|
+
const common_1 = require("@pristine-ts/common");
|
|
29
|
+
const metadata_1 = require("@pristine-ts/metadata");
|
|
30
|
+
const class_validator_1 = require("@pristine-ts/class-validator");
|
|
31
|
+
const data_mapping_1 = require("@pristine-ts/data-mapping");
|
|
32
|
+
const cli_module_keyname_1 = require("../cli.module.keyname");
|
|
33
|
+
const cli_configuration_keys_1 = require("../cli.configuration-keys");
|
|
34
|
+
const cli_prompt_manager_1 = require("../managers/cli-prompt.manager");
|
|
35
|
+
const cli_output_manager_1 = require("../managers/cli-output.manager");
|
|
36
|
+
const cli_decorator_metadata_keyname_enum_1 = require("../enums/cli-decorator-metadata-keyname.enum");
|
|
37
|
+
const cli_error_code_enum_1 = require("../errors/cli-error-code.enum");
|
|
38
|
+
const boolean_answer_parser_1 = require("../utils/boolean-answer-parser");
|
|
39
|
+
/**
|
|
40
|
+
* Applies a command's `@commandParameter` metadata to its raw, parsed arguments before they
|
|
41
|
+
* are mapped onto the options instance and validated. Two things happen here:
|
|
42
|
+
*
|
|
43
|
+
* 1. **Flag binding** — a parameter whose `flag` differs from its property name is copied
|
|
44
|
+
* from the flag key onto the property key, so the by-property-name data mapper picks it
|
|
45
|
+
* up. Two parameters resolving to the same flag is a programming error and throws.
|
|
46
|
+
* 2. **Interactive fill** — a parameter that is absent and declares a `question` is asked
|
|
47
|
+
* for interactively. Answers are rendered and checked against the property's declared
|
|
48
|
+
* type (booleans as `(y/n)`, enum-constrained values list their choices) and coerced +
|
|
49
|
+
* validated through the same mapper/validator the command pipeline uses, re-asking on an
|
|
50
|
+
* invalid answer. Gated by the `InteractiveParameters` configuration and only run against
|
|
51
|
+
* an interactive terminal; otherwise the absent value is left for validation to report.
|
|
52
|
+
*
|
|
53
|
+
* Parameters without a `@commandParameter` decorator are untouched, so commands that don't
|
|
54
|
+
* use it pay nothing.
|
|
55
|
+
*/
|
|
56
|
+
let CommandParameterPrompter = CommandParameterPrompter_1 = class CommandParameterPrompter {
|
|
57
|
+
constructor(cliPrompt, cliOutput, validator, dataMapper, interactiveParametersEnabled) {
|
|
58
|
+
this.cliPrompt = cliPrompt;
|
|
59
|
+
this.cliOutput = cliOutput;
|
|
60
|
+
this.validator = validator;
|
|
61
|
+
this.dataMapper = dataMapper;
|
|
62
|
+
this.interactiveParametersEnabled = interactiveParametersEnabled;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Returns a copy of `rawArgs` with aliased flags bound to their property and any missing,
|
|
66
|
+
* question-carrying parameters filled in interactively. The input object is never mutated
|
|
67
|
+
* — the original command event payload stays intact.
|
|
68
|
+
*/
|
|
69
|
+
fillMissingParameters(optionsType, rawArgs) {
|
|
70
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
71
|
+
const args = Object.assign({}, rawArgs);
|
|
72
|
+
const parameters = this.collectParameters(optionsType);
|
|
73
|
+
if (parameters.length === 0) {
|
|
74
|
+
return args;
|
|
75
|
+
}
|
|
76
|
+
for (const { propertyKey, flag, options } of parameters) {
|
|
77
|
+
// Bind an aliased flag (`--flag`) onto the property name so the data mapper, which maps
|
|
78
|
+
// by property name, resolves it. Only when the flag was actually passed.
|
|
79
|
+
if (flag !== propertyKey && args[flag] !== undefined) {
|
|
80
|
+
args[propertyKey] = args[flag];
|
|
81
|
+
}
|
|
82
|
+
const isPassed = args[propertyKey] !== undefined || args[flag] !== undefined;
|
|
83
|
+
if (isPassed || options.question === undefined) {
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
// Absent + a question to ask. Skip silently when prompting is turned off or there is no
|
|
87
|
+
// interactive terminal to ask on — the missing value then falls through to validation.
|
|
88
|
+
if (this.interactiveParametersEnabled !== true || this.isInputInteractive() === false) {
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
const value = yield this.promptForValue(optionsType, propertyKey, options);
|
|
92
|
+
if (value !== undefined) {
|
|
93
|
+
args[propertyKey] = value;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return args;
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Reads every `@commandParameter` off `optionsType`, resolving each to its effective flag
|
|
101
|
+
* and detecting two parameters that would claim the same flag (a programming error).
|
|
102
|
+
* @private
|
|
103
|
+
*/
|
|
104
|
+
collectParameters(optionsType) {
|
|
105
|
+
var _a;
|
|
106
|
+
const properties = metadata_1.ClassMetadata.getInformation(optionsType).properties;
|
|
107
|
+
const parameters = [];
|
|
108
|
+
const propertyByFlag = new Map();
|
|
109
|
+
for (const propertyKey of properties) {
|
|
110
|
+
const options = metadata_1.PropertyMetadata.getMetadata(optionsType.prototype, propertyKey, cli_decorator_metadata_keyname_enum_1.CliDecoratorMetadataKeynameEnum.CommandParameter);
|
|
111
|
+
if (options === undefined) {
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
const flag = (_a = options.flag) !== null && _a !== void 0 ? _a : propertyKey;
|
|
115
|
+
const existing = propertyByFlag.get(flag);
|
|
116
|
+
if (existing !== undefined) {
|
|
117
|
+
throw new common_1.UsageError(`Command parameters '${existing}' and '${propertyKey}' on '${optionsType.name}' both bind to the flag '--${flag}'. Give one of them a distinct 'flag'.`, {
|
|
118
|
+
code: cli_error_code_enum_1.CliErrorCode.CommandParameterFlagConflict,
|
|
119
|
+
details: { targetType: optionsType.name, flag, properties: [existing, propertyKey] },
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
propertyByFlag.set(flag, propertyKey);
|
|
123
|
+
parameters.push({ propertyKey, flag, options });
|
|
124
|
+
}
|
|
125
|
+
return parameters;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Asks for a single parameter's value, rendering and validating it according to the
|
|
129
|
+
* property's declared type:
|
|
130
|
+
*
|
|
131
|
+
* - sensitive values are read with the input masked and never trimmed;
|
|
132
|
+
* - booleans render as `(y/n)` and accept y/yes/true/1 & n/no/false/0;
|
|
133
|
+
* - enum-constrained values (`@IsIn` / `@IsEnum`) list their choices;
|
|
134
|
+
* - every other answer is coerced (via the data mapper) and validated (via the validator)
|
|
135
|
+
* exactly as a typed flag would be, re-asking with the real constraint message when it
|
|
136
|
+
* doesn't pass.
|
|
137
|
+
*
|
|
138
|
+
* Returns the coerced value, or `undefined` when the user enters nothing or the attempt
|
|
139
|
+
* budget is exhausted — in which case the absent value falls through to validation.
|
|
140
|
+
* @private
|
|
141
|
+
*/
|
|
142
|
+
promptForValue(optionsType, propertyKey, options) {
|
|
143
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
144
|
+
var _a, _b;
|
|
145
|
+
const sensitive = options.sensitive === true;
|
|
146
|
+
const isBoolean = sensitive === false && Reflect.getMetadata("design:type", optionsType.prototype, propertyKey) === Boolean;
|
|
147
|
+
const choices = (sensitive || isBoolean) ? undefined : this.getChoices(optionsType, propertyKey);
|
|
148
|
+
const prompt = this.formatQuestion(this.decorateQuestion((_a = options.question) !== null && _a !== void 0 ? _a : "", isBoolean, choices));
|
|
149
|
+
for (let attempt = 0; attempt < CommandParameterPrompter_1.MaxAttempts; attempt++) {
|
|
150
|
+
// Secrets go through the masked reader and are never trimmed (a password may legitimately
|
|
151
|
+
// contain surrounding whitespace); ordinary answers are trimmed.
|
|
152
|
+
const raw = sensitive
|
|
153
|
+
? yield this.cliPrompt.readSecret(prompt)
|
|
154
|
+
: (yield this.cliPrompt.readLine(prompt)).trim();
|
|
155
|
+
// Nothing entered → leave the value unset so validation reports it (and a required
|
|
156
|
+
// field surfaces the same way it would have without a prompt).
|
|
157
|
+
if (raw.length === 0) {
|
|
158
|
+
return undefined;
|
|
159
|
+
}
|
|
160
|
+
if (isBoolean) {
|
|
161
|
+
const parsed = boolean_answer_parser_1.BooleanAnswerParser.parse(raw);
|
|
162
|
+
if (parsed === undefined) {
|
|
163
|
+
this.cliOutput.writeLine("Please answer yes (y) or no (n).");
|
|
164
|
+
continue;
|
|
165
|
+
}
|
|
166
|
+
return parsed;
|
|
167
|
+
}
|
|
168
|
+
const outcome = yield this.coerceAndValidate(optionsType, propertyKey, raw);
|
|
169
|
+
if (outcome.valid) {
|
|
170
|
+
return outcome.value;
|
|
171
|
+
}
|
|
172
|
+
for (const message of (_b = outcome.messages) !== null && _b !== void 0 ? _b : []) {
|
|
173
|
+
this.cliOutput.writeLine(message);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
this.cliOutput.writeLine(`No valid value provided after ${CommandParameterPrompter_1.MaxAttempts} attempts.`);
|
|
177
|
+
return undefined;
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Maps a single raw answer onto a probe instance of `optionsType` and validates just that
|
|
182
|
+
* property, returning the coerced value when it passes or the constraint messages when it
|
|
183
|
+
* doesn't. Reuses the same mapper + validator the command pipeline uses, so coercion and
|
|
184
|
+
* constraints behave identically whether a value was typed as a flag or answered here.
|
|
185
|
+
* @private
|
|
186
|
+
*/
|
|
187
|
+
coerceAndValidate(optionsType, propertyKey, raw) {
|
|
188
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
189
|
+
let probe;
|
|
190
|
+
try {
|
|
191
|
+
probe = yield this.dataMapper.autoMap({ [propertyKey]: raw }, optionsType, new data_mapping_1.AutoDataMappingBuilderOptions({ throwOnErrors: false }));
|
|
192
|
+
}
|
|
193
|
+
catch (_a) {
|
|
194
|
+
return { valid: false, messages: [`'${raw}' could not be interpreted — please try again.`] };
|
|
195
|
+
}
|
|
196
|
+
const validationErrors = yield this.validator.validate(probe);
|
|
197
|
+
const propertyErrors = validationErrors.filter((error) => error.property === propertyKey);
|
|
198
|
+
if (propertyErrors.length === 0) {
|
|
199
|
+
return { valid: true, value: probe[propertyKey] };
|
|
200
|
+
}
|
|
201
|
+
return { valid: false, messages: this.describeErrors(propertyErrors) };
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Flattens `class-validator`'s per-property constraint objects into plain, user-facing
|
|
206
|
+
* lines. `@pristine-ts/class-validator` stores each constraint as `{keyname, message}`
|
|
207
|
+
* rather than a bare string, so prefer `.message`, falling back so we never print
|
|
208
|
+
* `[object Object]`.
|
|
209
|
+
* @private
|
|
210
|
+
*/
|
|
211
|
+
describeErrors(errors) {
|
|
212
|
+
const messages = [];
|
|
213
|
+
for (const error of errors) {
|
|
214
|
+
for (const key in error.constraints) {
|
|
215
|
+
const constraint = error.constraints[key];
|
|
216
|
+
const message = typeof constraint === "string"
|
|
217
|
+
? constraint
|
|
218
|
+
: (constraint && typeof constraint === "object" && typeof constraint.message === "string")
|
|
219
|
+
? constraint.message
|
|
220
|
+
: JSON.stringify(constraint);
|
|
221
|
+
messages.push(message);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
return messages.length > 0 ? messages : ["Invalid value — please try again."];
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* The allowed values declared by an `@IsIn([...])` or `@IsEnum(Enum)` on the property, for
|
|
228
|
+
* display in the prompt. Reads `@pristine-ts/class-validator`'s stored validator instances
|
|
229
|
+
* defensively — any shape mismatch just yields no menu (validation still rejects bad input
|
|
230
|
+
* and re-asks). Returns undefined when the property isn't enum-constrained.
|
|
231
|
+
* @private
|
|
232
|
+
*/
|
|
233
|
+
getChoices(optionsType, propertyKey) {
|
|
234
|
+
const validators = metadata_1.PropertyMetadata.getMetadata(optionsType.prototype, propertyKey, CommandParameterPrompter_1.ClassValidatorMetadataKey);
|
|
235
|
+
if (Array.isArray(validators) === false) {
|
|
236
|
+
return undefined;
|
|
237
|
+
}
|
|
238
|
+
for (const validator of validators) {
|
|
239
|
+
if (validator === null || validator === undefined || typeof validator.getConstraints !== "function") {
|
|
240
|
+
continue;
|
|
241
|
+
}
|
|
242
|
+
let constraints;
|
|
243
|
+
try {
|
|
244
|
+
constraints = validator.getConstraints();
|
|
245
|
+
}
|
|
246
|
+
catch (_a) {
|
|
247
|
+
continue;
|
|
248
|
+
}
|
|
249
|
+
if (Array.isArray(constraints === null || constraints === void 0 ? void 0 : constraints.possibleValues)) {
|
|
250
|
+
return constraints.possibleValues.map((value) => String(value));
|
|
251
|
+
}
|
|
252
|
+
if ((constraints === null || constraints === void 0 ? void 0 : constraints.entity) !== null && typeof (constraints === null || constraints === void 0 ? void 0 : constraints.entity) === "object") {
|
|
253
|
+
return Object.keys(constraints.entity).map((key) => String(constraints.entity[key]));
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
return undefined;
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Appends a type hint to the question: `(y/n)` for booleans, `(a/b/c)` for enum choices.
|
|
260
|
+
* @private
|
|
261
|
+
*/
|
|
262
|
+
decorateQuestion(question, isBoolean, choices) {
|
|
263
|
+
if (isBoolean) {
|
|
264
|
+
return `${question} (y/n)`;
|
|
265
|
+
}
|
|
266
|
+
if (choices !== undefined && choices.length > 0) {
|
|
267
|
+
return `${question} (${choices.join("/")})`;
|
|
268
|
+
}
|
|
269
|
+
return question;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Whether stdin is an interactive terminal. Pulled out so the gate is easy to reason about
|
|
273
|
+
* (and to stub in tests) — there is no point asking a question when input is piped or runs
|
|
274
|
+
* under CI, where a read would either hang or return EOF.
|
|
275
|
+
* @private
|
|
276
|
+
*/
|
|
277
|
+
isInputInteractive() {
|
|
278
|
+
return process.stdin.isTTY === true;
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Ensures the rendered question ends with a trailing space so the typed answer doesn't butt
|
|
282
|
+
* up against the prompt text.
|
|
283
|
+
* @private
|
|
284
|
+
*/
|
|
285
|
+
formatQuestion(question) {
|
|
286
|
+
return question.endsWith(" ") ? question : `${question} `;
|
|
287
|
+
}
|
|
288
|
+
};
|
|
289
|
+
exports.CommandParameterPrompter = CommandParameterPrompter;
|
|
290
|
+
/**
|
|
291
|
+
* `@pristine-ts/class-validator` stores its instantiated validators (one per `@IsX`
|
|
292
|
+
* decorator) as an array under this property-metadata key. We read it only to surface enum
|
|
293
|
+
* choices in the prompt; all actual validation goes through `Validator`.
|
|
294
|
+
*/
|
|
295
|
+
CommandParameterPrompter.ClassValidatorMetadataKey = "pristine-validator:validator";
|
|
296
|
+
/**
|
|
297
|
+
* How many times a single value is re-asked before giving up and letting the missing /
|
|
298
|
+
* invalid value fall through to the normal validation error. A bound (rather than an
|
|
299
|
+
* unbounded loop) keeps a misconfigured validator that can never pass from hanging the CLI.
|
|
300
|
+
*/
|
|
301
|
+
CommandParameterPrompter.MaxAttempts = 5;
|
|
302
|
+
exports.CommandParameterPrompter = CommandParameterPrompter = CommandParameterPrompter_1 = __decorate([
|
|
303
|
+
(0, tsyringe_1.injectable)(),
|
|
304
|
+
(0, common_1.moduleScoped)(cli_module_keyname_1.CliModuleKeyname),
|
|
305
|
+
__param(4, (0, common_1.injectConfig)(cli_configuration_keys_1.CliConfigurationKeys.InteractiveParameters)),
|
|
306
|
+
__metadata("design:paramtypes", [cli_prompt_manager_1.CliPrompt,
|
|
307
|
+
cli_output_manager_1.CliOutput,
|
|
308
|
+
class_validator_1.Validator,
|
|
309
|
+
data_mapping_1.DataMapper, Boolean])
|
|
310
|
+
], CommandParameterPrompter);
|
|
311
|
+
//# sourceMappingURL=command-parameter-prompter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-parameter-prompter.js","sourceRoot":"","sources":["../../../../src/services/command-parameter-prompter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./command-argument-resolver"), exports);
|
|
18
|
+
__exportStar(require("./command-options-resolver"), exports);
|
|
19
|
+
__exportStar(require("./command-parameter-prompter"), exports);
|
|
20
|
+
//# sourceMappingURL=services.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"services.js","sourceRoot":"","sources":["../../../../src/services/services.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA4C;AAC5C,6DAA2C;AAC3C,+DAA6C"}
|