@pristine-ts/cli 2.0.7 → 2.0.16
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/bin.js +0 -0
- package/dist/lib/cjs/bootstrap/app-module-cache.js +71 -0
- package/dist/lib/cjs/bootstrap/app-module-cache.js.map +1 -0
- package/dist/lib/cjs/bootstrap/app-module-discoverer.js +119 -0
- package/dist/lib/cjs/bootstrap/app-module-discoverer.js.map +1 -0
- package/dist/lib/cjs/bootstrap/app-module-discovery-candidate.js +21 -0
- package/dist/lib/cjs/bootstrap/app-module-discovery-candidate.js.map +1 -0
- package/dist/lib/cjs/bootstrap/app-module-discovery-reason.enum.js +15 -0
- package/dist/lib/cjs/bootstrap/app-module-discovery-reason.enum.js.map +1 -0
- package/dist/lib/cjs/bootstrap/app-module-prompt.js +78 -0
- package/dist/lib/cjs/bootstrap/app-module-prompt.js.map +1 -0
- 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/config-init.command.js +133 -0
- package/dist/lib/cjs/commands/config-init.command.js.map +1 -0
- 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/exit-code.enum.js +9 -0
- package/dist/lib/cjs/enums/exit-code.enum.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/console.manager.js +277 -0
- package/dist/lib/cjs/managers/console.manager.js.map +1 -0
- package/dist/lib/cjs/managers/managers.js +1 -0
- package/dist/lib/cjs/managers/managers.js.map +1 -1
- package/dist/lib/cjs/managers/repl-session.js +251 -0
- package/dist/lib/cjs/managers/repl-session.js.map +1 -0
- 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/app-module-cache.js +65 -0
- package/dist/lib/esm/bootstrap/app-module-cache.js.map +1 -0
- package/dist/lib/esm/bootstrap/app-module-discoverer.js +113 -0
- package/dist/lib/esm/bootstrap/app-module-discoverer.js.map +1 -0
- package/dist/lib/esm/bootstrap/app-module-discovery-candidate.js +17 -0
- package/dist/lib/esm/bootstrap/app-module-discovery-candidate.js.map +1 -0
- package/dist/lib/esm/bootstrap/app-module-discovery-reason.enum.js +12 -0
- package/dist/lib/esm/bootstrap/app-module-discovery-reason.enum.js.map +1 -0
- package/dist/lib/esm/bootstrap/app-module-prompt.js +75 -0
- package/dist/lib/esm/bootstrap/app-module-prompt.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/config-init.command.js +127 -0
- package/dist/lib/esm/commands/config-init.command.js.map +1 -0
- 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/exit-code.enum.js +6 -0
- package/dist/lib/esm/enums/exit-code.enum.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/console.manager.js +241 -0
- package/dist/lib/esm/managers/console.manager.js.map +1 -0
- package/dist/lib/esm/managers/managers.js +1 -0
- package/dist/lib/esm/managers/managers.js.map +1 -1
- package/dist/lib/esm/managers/repl-session.js +215 -0
- package/dist/lib/esm/managers/repl-session.js.map +1 -0
- 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/app-module-cache.d.ts +15 -0
- package/dist/types/bootstrap/app-module-discoverer.d.ts +30 -0
- package/dist/types/bootstrap/app-module-discovery-candidate.d.ts +18 -0
- package/dist/types/bootstrap/app-module-discovery-reason.enum.d.ts +10 -0
- package/dist/types/bootstrap/app-module-prompt.d.ts +20 -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/config-init.command.d.ts +18 -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/exit-code.enum.d.ts +4 -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/console.manager.d.ts +93 -0
- package/dist/types/managers/managers.d.ts +1 -0
- package/dist/types/managers/repl-session.d.ts +62 -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
|
@@ -4,6 +4,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
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
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
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
|
+
};
|
|
7
10
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
8
11
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
9
12
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -13,18 +16,32 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
13
16
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
14
17
|
});
|
|
15
18
|
};
|
|
19
|
+
var CliPrompt_1;
|
|
16
20
|
import { injectable } from "tsyringe";
|
|
17
21
|
import { moduleScoped } from "@pristine-ts/common";
|
|
18
22
|
import { CliModuleKeyname } from "../cli.module.keyname";
|
|
19
23
|
import * as readline from "node:readline/promises";
|
|
20
|
-
import { moveCursor, clearLine } from "node:readline";
|
|
24
|
+
import { moveCursor, clearLine, cursorTo } from "node:readline";
|
|
21
25
|
import { stdin as input, stdout as output } from "node:process";
|
|
22
26
|
import { ConsoleReadlineOptions } from "../options/console-readline.options";
|
|
27
|
+
import { TerminalKeyReader } from "./terminal-key-reader.manager";
|
|
28
|
+
import { TerminalKeyName } from "../enums/terminal-key-name.enum";
|
|
29
|
+
import { BooleanAnswerParser } from "../utils/boolean-answer-parser";
|
|
30
|
+
import { PromptCancelledError } from "../errors/prompt-cancelled.error";
|
|
23
31
|
/**
|
|
24
|
-
* Interactive
|
|
25
|
-
*
|
|
32
|
+
* Interactive terminal prompts for CLI commands, implemented entirely on Node's `readline`
|
|
33
|
+
* and raw-mode stdin — no third-party prompt library. Line-based prompts (`readLine`,
|
|
34
|
+
* `input`, `confirm`) go through `readline/promises`; the keystroke-level prompts (`select`
|
|
35
|
+
* arrow menu, masked `readSecret`) go through {@link TerminalKeyReader}.
|
|
36
|
+
*
|
|
37
|
+
* `Ctrl+C` rejects with {@link PromptCancelledError} across all of them — the line prompts
|
|
38
|
+
* via a `readline` SIGINT handler, the raw-mode prompts via the key reader — so callers get
|
|
39
|
+
* one consistent cancellation signal.
|
|
26
40
|
*/
|
|
27
|
-
let CliPrompt = class CliPrompt {
|
|
41
|
+
let CliPrompt = CliPrompt_1 = class CliPrompt {
|
|
42
|
+
constructor(terminalKeyReader) {
|
|
43
|
+
this.terminalKeyReader = terminalKeyReader;
|
|
44
|
+
}
|
|
28
45
|
/**
|
|
29
46
|
* Reads a string from stdin synchronously. Returns whatever `process.stdin.read()`
|
|
30
47
|
* gives back (which may be `null` when no data is buffered).
|
|
@@ -35,29 +52,178 @@ let CliPrompt = class CliPrompt {
|
|
|
35
52
|
/**
|
|
36
53
|
* Reads a line from stdin after displaying a prompt. When
|
|
37
54
|
* `options.showCharactersOnTyping` is false, the answered line is cleared and replaced
|
|
38
|
-
* with a masked echo so the typed value isn't left visible on screen
|
|
55
|
+
* with a masked echo so the typed value isn't left visible on screen (a post-input clear,
|
|
56
|
+
* not true keystroke suppression — use {@link readSecret} for real masking).
|
|
39
57
|
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
58
|
+
* `Ctrl+C` rejects with {@link PromptCancelledError}: registering a `SIGINT` listener on
|
|
59
|
+
* the readline interface overrides Node's default interrupt handling, turning it into a
|
|
60
|
+
* clean rejection rather than a hung promise.
|
|
43
61
|
*/
|
|
44
62
|
readLine(question_1) {
|
|
45
63
|
return __awaiter(this, arguments, void 0, function* (question, options = new ConsoleReadlineOptions()) {
|
|
46
64
|
const rl = readline.createInterface({ input, output });
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
65
|
+
try {
|
|
66
|
+
const answer = yield new Promise((resolve, reject) => {
|
|
67
|
+
rl.on("SIGINT", () => reject(new PromptCancelledError()));
|
|
68
|
+
rl.question(question).then(resolve, reject);
|
|
69
|
+
});
|
|
70
|
+
if (!options.showCharactersOnTyping) {
|
|
71
|
+
moveCursor(output, 0, -1);
|
|
72
|
+
clearLine(output, 0);
|
|
73
|
+
process.stdout.write(`${question} [******]\n`);
|
|
74
|
+
}
|
|
75
|
+
return answer;
|
|
76
|
+
}
|
|
77
|
+
finally {
|
|
78
|
+
rl.close();
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Asks a free-text question, optionally with a default. The default is shown as a hint and
|
|
84
|
+
* returned verbatim when the user submits an empty line. The answer is trimmed.
|
|
85
|
+
*/
|
|
86
|
+
input(message, defaultValue) {
|
|
87
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
88
|
+
const suffix = defaultValue !== undefined && defaultValue !== ""
|
|
89
|
+
? ` ${CliPrompt_1.DIM}(${defaultValue})${CliPrompt_1.RESET}`
|
|
90
|
+
: "";
|
|
91
|
+
const answer = (yield this.readLine(`${message}${suffix} `)).trim();
|
|
92
|
+
if (answer.length === 0 && defaultValue !== undefined) {
|
|
93
|
+
return defaultValue;
|
|
52
94
|
}
|
|
53
|
-
rl.close();
|
|
54
95
|
return answer;
|
|
55
96
|
});
|
|
56
97
|
}
|
|
98
|
+
/**
|
|
99
|
+
* Asks a yes/no question. An empty answer takes the default; anything `BooleanAnswerParser`
|
|
100
|
+
* understands (`y`/`yes`/`true`/`1`, `n`/`no`/`false`/`0`) is accepted; anything else is
|
|
101
|
+
* re-asked. The default is shown capitalized in the `(Y/n)` / `(y/N)` hint.
|
|
102
|
+
*/
|
|
103
|
+
confirm(message_1) {
|
|
104
|
+
return __awaiter(this, arguments, void 0, function* (message, defaultValue = true) {
|
|
105
|
+
const hint = defaultValue ? "(Y/n)" : "(y/N)";
|
|
106
|
+
for (;;) {
|
|
107
|
+
const raw = (yield this.readLine(`${message} ${hint} `)).trim();
|
|
108
|
+
if (raw.length === 0) {
|
|
109
|
+
return defaultValue;
|
|
110
|
+
}
|
|
111
|
+
const parsed = BooleanAnswerParser.parse(raw);
|
|
112
|
+
if (parsed !== undefined) {
|
|
113
|
+
return parsed;
|
|
114
|
+
}
|
|
115
|
+
process.stdout.write("Please answer yes (y) or no (n).\n");
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Presents an arrow-key menu and returns the chosen choice's `value`. `↑`/`↓` move the
|
|
121
|
+
* highlight (wrapping at the ends), `Enter` selects, `Ctrl+C` cancels. When `defaultValue`
|
|
122
|
+
* matches a choice, the menu starts on it. The cursor is hidden while the menu is active
|
|
123
|
+
* and restored afterward.
|
|
124
|
+
*/
|
|
125
|
+
select(message, choices, defaultValue) {
|
|
126
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
127
|
+
if (choices.length === 0) {
|
|
128
|
+
throw new Error("CliPrompt.select requires at least one choice.");
|
|
129
|
+
}
|
|
130
|
+
const defaultIndex = choices.findIndex((choice) => choice.value === defaultValue);
|
|
131
|
+
let active = defaultIndex >= 0 ? defaultIndex : 0;
|
|
132
|
+
process.stdout.write(CliPrompt_1.HIDE_CURSOR);
|
|
133
|
+
process.stdout.write(`${CliPrompt_1.CYAN}?${CliPrompt_1.RESET} ${message}\n`);
|
|
134
|
+
this.renderChoices(choices, active);
|
|
135
|
+
try {
|
|
136
|
+
return yield this.terminalKeyReader.read((key, resolve) => {
|
|
137
|
+
if (key.name === TerminalKeyName.Up) {
|
|
138
|
+
active = (active - 1 + choices.length) % choices.length;
|
|
139
|
+
this.repaintChoices(choices, active);
|
|
140
|
+
}
|
|
141
|
+
else if (key.name === TerminalKeyName.Down) {
|
|
142
|
+
active = (active + 1) % choices.length;
|
|
143
|
+
this.repaintChoices(choices, active);
|
|
144
|
+
}
|
|
145
|
+
else if (key.name === TerminalKeyName.Enter) {
|
|
146
|
+
resolve(choices[active].value);
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
finally {
|
|
151
|
+
process.stdout.write(CliPrompt_1.SHOW_CURSOR);
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Reads a secret (password, token, …) from stdin with the typed characters masked as `*`.
|
|
157
|
+
* Real keystroke suppression via raw mode (unlike {@link readLine}'s post-input clear):
|
|
158
|
+
* each character echoes a `*`, `Backspace` erases one, `Enter` submits, `Ctrl+C` cancels.
|
|
159
|
+
* The value is returned untrimmed — a secret may legitimately contain surrounding
|
|
160
|
+
* whitespace.
|
|
161
|
+
*/
|
|
162
|
+
readSecret(question) {
|
|
163
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
164
|
+
process.stdout.write(question);
|
|
165
|
+
let value = "";
|
|
166
|
+
try {
|
|
167
|
+
yield this.terminalKeyReader.read((key, resolve) => {
|
|
168
|
+
if (key.name === TerminalKeyName.Enter) {
|
|
169
|
+
resolve(undefined);
|
|
170
|
+
}
|
|
171
|
+
else if (key.name === TerminalKeyName.Backspace) {
|
|
172
|
+
if (value.length > 0) {
|
|
173
|
+
value = value.slice(0, -1);
|
|
174
|
+
process.stdout.write("\b \b");
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
else if (key.name === TerminalKeyName.Character) {
|
|
178
|
+
value += key.sequence;
|
|
179
|
+
process.stdout.write("*");
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
finally {
|
|
184
|
+
process.stdout.write("\n");
|
|
185
|
+
}
|
|
186
|
+
return value;
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Writes the choice rows, highlighting the active one with a colored pointer. Each row is
|
|
191
|
+
* cleared before it's written so a repaint never leaves a longer previous label behind.
|
|
192
|
+
* @private
|
|
193
|
+
*/
|
|
194
|
+
renderChoices(choices, active) {
|
|
195
|
+
choices.forEach((choice, index) => {
|
|
196
|
+
clearLine(process.stdout, 0);
|
|
197
|
+
cursorTo(process.stdout, 0);
|
|
198
|
+
if (index === active) {
|
|
199
|
+
process.stdout.write(`${CliPrompt_1.CYAN}${CliPrompt_1.POINTER} ${choice.name}${CliPrompt_1.RESET}\n`);
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
process.stdout.write(` ${choice.name}\n`);
|
|
203
|
+
}
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Moves the cursor back up over the previously-rendered choice rows and rewrites them, so
|
|
208
|
+
* the menu updates in place as the selection moves.
|
|
209
|
+
* @private
|
|
210
|
+
*/
|
|
211
|
+
repaintChoices(choices, active) {
|
|
212
|
+
moveCursor(process.stdout, 0, -choices.length);
|
|
213
|
+
this.renderChoices(choices, active);
|
|
214
|
+
}
|
|
57
215
|
};
|
|
58
|
-
|
|
216
|
+
// ANSI constants, matching the conventions used by CliSpinner / CliProgressBar.
|
|
217
|
+
CliPrompt.CYAN = "\x1b[36m";
|
|
218
|
+
CliPrompt.DIM = "\x1b[2m";
|
|
219
|
+
CliPrompt.RESET = "\x1b[0m";
|
|
220
|
+
CliPrompt.HIDE_CURSOR = "\x1B[?25l";
|
|
221
|
+
CliPrompt.SHOW_CURSOR = "\x1B[?25h";
|
|
222
|
+
CliPrompt.POINTER = "❯";
|
|
223
|
+
CliPrompt = CliPrompt_1 = __decorate([
|
|
59
224
|
injectable(),
|
|
60
|
-
moduleScoped(CliModuleKeyname)
|
|
225
|
+
moduleScoped(CliModuleKeyname),
|
|
226
|
+
__metadata("design:paramtypes", [TerminalKeyReader])
|
|
61
227
|
], CliPrompt);
|
|
62
228
|
export { CliPrompt };
|
|
63
229
|
//# sourceMappingURL=cli-prompt.manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-prompt.manager.js","sourceRoot":"","sources":["../../../../src/managers/cli-prompt.manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli-prompt.manager.js","sourceRoot":"","sources":["../../../../src/managers/cli-prompt.manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,241 @@
|
|
|
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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
8
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
9
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
10
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
11
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
12
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
13
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
import { injectable } from "tsyringe";
|
|
17
|
+
import { moduleScoped } from "@pristine-ts/common";
|
|
18
|
+
import { CliModuleKeyname } from "../cli.module.keyname";
|
|
19
|
+
import * as readline from 'node:readline/promises';
|
|
20
|
+
import { moveCursor, clearLine, cursorTo } from 'node:readline';
|
|
21
|
+
import { stdin as input, stdout as output } from 'node:process';
|
|
22
|
+
import { ConsoleReadlineOptions } from "../options/console-readline.options";
|
|
23
|
+
/**
|
|
24
|
+
* ANSI Escape Codes for formatting
|
|
25
|
+
*/
|
|
26
|
+
const Colors = {
|
|
27
|
+
Reset: "\x1b[0m",
|
|
28
|
+
Bright: "\x1b[1m",
|
|
29
|
+
Dim: "\x1b[2m",
|
|
30
|
+
Underscore: "\x1b[4m",
|
|
31
|
+
Blink: "\x1b[5m",
|
|
32
|
+
Reverse: "\x1b[7m",
|
|
33
|
+
Hidden: "\x1b[8m",
|
|
34
|
+
FgBlack: "\x1b[30m",
|
|
35
|
+
FgRed: "\x1b[31m",
|
|
36
|
+
FgGreen: "\x1b[32m",
|
|
37
|
+
FgYellow: "\x1b[33m",
|
|
38
|
+
FgBlue: "\x1b[34m",
|
|
39
|
+
FgMagenta: "\x1b[35m",
|
|
40
|
+
FgCyan: "\x1b[36m",
|
|
41
|
+
FgWhite: "\x1b[37m",
|
|
42
|
+
};
|
|
43
|
+
let ConsoleManager = class ConsoleManager {
|
|
44
|
+
constructor() {
|
|
45
|
+
this.spinnerInterval = null;
|
|
46
|
+
this.isSpinning = false;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Writes a message to stdout without a newline.
|
|
50
|
+
* @param message The message to write.
|
|
51
|
+
*/
|
|
52
|
+
write(message) {
|
|
53
|
+
process.stdout.write(message);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Writes a message to stdout with a newline.
|
|
57
|
+
* @param message The message to write.
|
|
58
|
+
*/
|
|
59
|
+
writeLine(message) {
|
|
60
|
+
this.write(message + "\n");
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Writes a table to stdout.
|
|
64
|
+
* @param table The array of objects to display as a table.
|
|
65
|
+
*/
|
|
66
|
+
writeTable(table) {
|
|
67
|
+
console.table(table);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Writes an error message in red with an 'Error:' prefix.
|
|
71
|
+
* @param message The error message to display.
|
|
72
|
+
*/
|
|
73
|
+
writeError(message) {
|
|
74
|
+
this.writeLine(`${Colors.FgRed}✖ Error:${Colors.Reset} ${message}`);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Writes a success message in green with a 'Success:' prefix.
|
|
78
|
+
* @param message The success message to display.
|
|
79
|
+
*/
|
|
80
|
+
writeSuccess(message) {
|
|
81
|
+
this.writeLine(`${Colors.FgGreen}✔ Success:${Colors.Reset} ${message}`);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Writes a warning message in yellow with a 'Warning:' prefix.
|
|
85
|
+
* @param message The warning message to display.
|
|
86
|
+
*/
|
|
87
|
+
writeWarning(message) {
|
|
88
|
+
this.writeLine(`${Colors.FgYellow}⚠ Warning:${Colors.Reset} ${message}`);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Writes an info message in cyan with an 'Info:' prefix.
|
|
92
|
+
* @param message The info message to display.
|
|
93
|
+
*/
|
|
94
|
+
writeInfo(message) {
|
|
95
|
+
this.writeLine(`${Colors.FgCyan}ℹ Info:${Colors.Reset} ${message}`);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Starts a loading spinner with a message.
|
|
99
|
+
*
|
|
100
|
+
* @param message The message to display next to the spinner.
|
|
101
|
+
* @remarks
|
|
102
|
+
* This method hides the cursor and continuously updates the current line.
|
|
103
|
+
* Avoid calling other write methods while the spinner is active as they may conflict with the spinner's line clearing.
|
|
104
|
+
*/
|
|
105
|
+
startSpinner(message) {
|
|
106
|
+
if (this.isSpinning)
|
|
107
|
+
return;
|
|
108
|
+
this.isSpinning = true;
|
|
109
|
+
const frames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
|
|
110
|
+
let i = 0;
|
|
111
|
+
process.stdout.write('\x1B[?25l'); // Hide cursor
|
|
112
|
+
this.spinnerInterval = setInterval(() => {
|
|
113
|
+
clearLine(process.stdout, 0);
|
|
114
|
+
cursorTo(process.stdout, 0);
|
|
115
|
+
const frame = frames[i = (i + 1) % frames.length];
|
|
116
|
+
process.stdout.write(`${Colors.FgCyan}${frame}${Colors.Reset} ${message}`);
|
|
117
|
+
}, 80);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Stops the loading spinner and optionally prints a completion message.
|
|
121
|
+
*
|
|
122
|
+
* @param message Optional completion message to display.
|
|
123
|
+
* @param success Whether the operation was successful. Defaults to true.
|
|
124
|
+
* @remarks
|
|
125
|
+
* Stops the spinner, shows the cursor, and prints a final success or error message on the same line.
|
|
126
|
+
*/
|
|
127
|
+
stopSpinner(message, success = true) {
|
|
128
|
+
if (!this.isSpinning)
|
|
129
|
+
return;
|
|
130
|
+
if (this.spinnerInterval) {
|
|
131
|
+
clearInterval(this.spinnerInterval);
|
|
132
|
+
this.spinnerInterval = null;
|
|
133
|
+
}
|
|
134
|
+
this.isSpinning = false;
|
|
135
|
+
clearLine(process.stdout, 0);
|
|
136
|
+
cursorTo(process.stdout, 0);
|
|
137
|
+
process.stdout.write('\x1B[?25h'); // Show cursor
|
|
138
|
+
if (message) {
|
|
139
|
+
if (success) {
|
|
140
|
+
this.writeSuccess(message);
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
this.writeError(message);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Displays or updates a progress bar.
|
|
149
|
+
*
|
|
150
|
+
* @param current The current progress value.
|
|
151
|
+
* @param total The total value to reach (100%).
|
|
152
|
+
* @param message Optional message to display next to the bar.
|
|
153
|
+
* @param width The visual width of the progress bar in characters. Defaults to 30.
|
|
154
|
+
*
|
|
155
|
+
* @remarks
|
|
156
|
+
* This method clears the *current* line and writes the progress bar.
|
|
157
|
+
*
|
|
158
|
+
* **Important:** If you call `writeLine()` (or any other method that outputs a newline) between calls to `updateProgressBar()`,
|
|
159
|
+
* the next call to `updateProgressBar()` will start on the *new* line, leaving the previous progress bar state on the line above.
|
|
160
|
+
*
|
|
161
|
+
* **Example of creating artifacts:**
|
|
162
|
+
* ```typescript
|
|
163
|
+
* manager.updateProgressBar(10, 100); // Draws bar at line N
|
|
164
|
+
* manager.writeLine("Log message"); // Moves cursor to line N+1
|
|
165
|
+
* manager.updateProgressBar(20, 100); // Draws bar at line N+1 (Line N has the old bar)
|
|
166
|
+
* ```
|
|
167
|
+
*/
|
|
168
|
+
updateProgressBar(current, total, message = '', width = 30) {
|
|
169
|
+
const percentage = Math.min(Math.max(current / total, 0), 1);
|
|
170
|
+
const filledWidth = Math.round(width * percentage);
|
|
171
|
+
const emptyWidth = width - filledWidth;
|
|
172
|
+
const filledBar = '█'.repeat(filledWidth);
|
|
173
|
+
const emptyBar = '░'.repeat(emptyWidth);
|
|
174
|
+
clearLine(process.stdout, 0);
|
|
175
|
+
cursorTo(process.stdout, 0);
|
|
176
|
+
process.stdout.write(`${Colors.FgCyan}[${filledBar}${emptyBar}]${Colors.Reset} ${Math.round(percentage * 100)}% ${message}`);
|
|
177
|
+
if (current >= total) {
|
|
178
|
+
this.writeLine(''); // New line on completion
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Reads a string from stdin.
|
|
183
|
+
* @returns The raw string read from stdin.
|
|
184
|
+
*/
|
|
185
|
+
read() {
|
|
186
|
+
return process.stdin.read();
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Reads a line from stdin with a prompt.
|
|
190
|
+
*
|
|
191
|
+
* @param question The prompt text to display.
|
|
192
|
+
* @param options Configuration options for the input (e.g., masking characters).
|
|
193
|
+
* @returns A promise resolving to the user's input string.
|
|
194
|
+
*/
|
|
195
|
+
readLine(question_1) {
|
|
196
|
+
return __awaiter(this, arguments, void 0, function* (question, options = new ConsoleReadlineOptions()) {
|
|
197
|
+
const rl = readline.createInterface({ input, output });
|
|
198
|
+
// If we want to hide characters (e.g. for password), we need to handle output manually-ish,
|
|
199
|
+
// but readline.question prints the prompt and then echoes input.
|
|
200
|
+
// A simple hack for passwords with standard readline is tricky without a dedicated library.
|
|
201
|
+
// However, we can use the 'mute' approach or simple overwriting if we accept some limitations.
|
|
202
|
+
// For now, adhering to the basic 'question' promise but supporting the 'showCharactersOnTyping' flag logic.
|
|
203
|
+
let queryPromise;
|
|
204
|
+
if (!options.showCharactersOnTyping) {
|
|
205
|
+
// Simple implementation: Ask question, but when user types, we can't easily intercept 'echo' with just createInterface
|
|
206
|
+
// unless we use a custom input stream or 'muted-stdout' pattern.
|
|
207
|
+
// Given constraint of no external libraries, we will use a basic workaround:
|
|
208
|
+
// We will output the question, set stdin to raw mode if possible (for true hiding)
|
|
209
|
+
// OR just use the moveCursor trick the previous code had, although that is flaky.
|
|
210
|
+
//
|
|
211
|
+
// Let's rely on the previous implementation's logic:
|
|
212
|
+
// The previous code did `moveCursor(output, 0, -1)` AFTER the answer was received.
|
|
213
|
+
// This clears the line AFTER typing. It doesn't hide it WHILE typing.
|
|
214
|
+
// Real password masking is complex in Node without libs.
|
|
215
|
+
// We will stick to the previous logic but ensure it's robust.
|
|
216
|
+
queryPromise = rl.question(question);
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
queryPromise = rl.question(question);
|
|
220
|
+
}
|
|
221
|
+
const answer = yield queryPromise;
|
|
222
|
+
if (!options.showCharactersOnTyping) {
|
|
223
|
+
// Move up one line and clear it to hide the password typed
|
|
224
|
+
moveCursor(output, 0, -1);
|
|
225
|
+
clearLine(output, 0);
|
|
226
|
+
// We might want to re-print the question without the answer?
|
|
227
|
+
// Or just leave it cleared. The previous code just moved cursor.
|
|
228
|
+
// Let's just print a confirmation.
|
|
229
|
+
this.writeLine(`${question} [******]`);
|
|
230
|
+
}
|
|
231
|
+
rl.close();
|
|
232
|
+
return answer;
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
};
|
|
236
|
+
ConsoleManager = __decorate([
|
|
237
|
+
injectable(),
|
|
238
|
+
moduleScoped(CliModuleKeyname)
|
|
239
|
+
], ConsoleManager);
|
|
240
|
+
export { ConsoleManager };
|
|
241
|
+
//# sourceMappingURL=console.manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console.manager.js","sourceRoot":"","sources":["../../../../src/managers/console.manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,5 +2,6 @@ export * from "./cli-output.manager";
|
|
|
2
2
|
export * from "./cli-progress-bar.manager";
|
|
3
3
|
export * from "./cli-prompt.manager";
|
|
4
4
|
export * from "./cli-spinner.manager";
|
|
5
|
+
export * from "./terminal-key-reader.manager";
|
|
5
6
|
export * from "./shell.manager";
|
|
6
7
|
//# sourceMappingURL=managers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"managers.js","sourceRoot":"","sources":["../../../../src/managers/managers.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"managers.js","sourceRoot":"","sources":["../../../../src/managers/managers.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iBAAiB,CAAC"}
|