@reliverse/rempts 1.7.65 → 2.2.7
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/LICENSE +21 -21
- package/README.md +1534 -1431
- package/cleanup.mjs +33 -0
- package/dist/cancel.d.ts +31 -0
- package/dist/cancel.js +28 -0
- package/dist/ffi.d.ts +1 -0
- package/dist/ffi.js +165 -0
- package/dist/group.d.ts +16 -0
- package/dist/group.js +22 -0
- package/dist/launcher/command.d.ts +8 -0
- package/dist/launcher/command.js +10 -0
- package/dist/launcher/discovery.d.ts +3 -0
- package/dist/launcher/discovery.js +207 -0
- package/dist/launcher/errors.d.ts +15 -0
- package/dist/launcher/errors.js +31 -0
- package/dist/launcher/help.d.ts +3 -0
- package/dist/launcher/help.js +145 -0
- package/dist/launcher/mod.d.ts +12 -0
- package/dist/launcher/mod.js +222 -0
- package/dist/launcher/parser.d.ts +14 -0
- package/dist/launcher/parser.js +255 -0
- package/dist/launcher/registry.d.ts +10 -0
- package/dist/launcher/registry.js +42 -0
- package/dist/launcher/types.d.ts +78 -0
- package/dist/launcher/validator.d.ts +3 -0
- package/dist/launcher/validator.js +39 -0
- package/dist/mod.d.ts +6 -0
- package/dist/mod.js +6 -0
- package/dist/prompt.d.ts +13 -0
- package/dist/prompt.js +53 -0
- package/dist/selection.d.ts +92 -0
- package/dist/selection.js +191 -0
- package/dist/spinner.d.ts +26 -0
- package/dist/spinner.js +141 -0
- package/dist/utils.d.ts +3 -0
- package/dist/utils.js +11 -0
- package/package.json +41 -47
- package/bin/libs/animate/animate-mod.ts.txt +0 -78
- package/bin/libs/anykey/anykey-mod.d.ts +0 -12
- package/bin/libs/anykey/anykey-mod.js +0 -125
- package/bin/libs/cancel/cancel.d.ts +0 -45
- package/bin/libs/cancel/cancel.js +0 -72
- package/bin/libs/confirm/confirm-alias.d.ts +0 -2
- package/bin/libs/confirm/confirm-alias.js +0 -2
- package/bin/libs/confirm/confirm-mod.d.ts +0 -5
- package/bin/libs/confirm/confirm-mod.js +0 -179
- package/bin/libs/date/date.d.ts +0 -2
- package/bin/libs/date/date.js +0 -254
- package/bin/libs/editor/editor-mod.d.ts +0 -25
- package/bin/libs/editor/editor-mod.js +0 -1133
- package/bin/libs/figures/figures-mod.d.ts +0 -461
- package/bin/libs/figures/figures-mod.js +0 -285
- package/bin/libs/group/group-mod.d.ts +0 -33
- package/bin/libs/group/group-mod.js +0 -89
- package/bin/libs/input/input-alias.d.ts +0 -5
- package/bin/libs/input/input-alias.js +0 -4
- package/bin/libs/input/input-mod.d.ts +0 -16
- package/bin/libs/input/input-mod.js +0 -370
- package/bin/libs/intro/intro-alias.d.ts +0 -3
- package/bin/libs/intro/intro-alias.js +0 -3
- package/bin/libs/intro/intro-mod.d.ts +0 -19
- package/bin/libs/intro/intro-mod.js +0 -71
- package/bin/libs/launcher/command-runner.d.ts +0 -31
- package/bin/libs/launcher/command-runner.js +0 -229
- package/bin/libs/launcher/launcher-alias.d.ts +0 -2
- package/bin/libs/launcher/launcher-alias.js +0 -2
- package/bin/libs/launcher/launcher-mod.d.ts +0 -66
- package/bin/libs/launcher/launcher-mod.js +0 -1037
- package/bin/libs/launcher/launcher-types.d.ts +0 -176
- package/bin/libs/launcher/launcher-types.js +0 -0
- package/bin/libs/log/log-alias.d.ts +0 -1
- package/bin/libs/log/log-alias.js +0 -2
- package/bin/libs/msg-fmt/colors.d.ts +0 -30
- package/bin/libs/msg-fmt/colors.js +0 -42
- package/bin/libs/msg-fmt/mapping.d.ts +0 -3
- package/bin/libs/msg-fmt/mapping.js +0 -41
- package/bin/libs/msg-fmt/messages.d.ts +0 -35
- package/bin/libs/msg-fmt/messages.js +0 -305
- package/bin/libs/msg-fmt/terminal.d.ts +0 -15
- package/bin/libs/msg-fmt/terminal.js +0 -60
- package/bin/libs/msg-fmt/variants.d.ts +0 -11
- package/bin/libs/msg-fmt/variants.js +0 -52
- package/bin/libs/multiselect/multiselect-alias.d.ts +0 -2
- package/bin/libs/multiselect/multiselect-alias.js +0 -2
- package/bin/libs/multiselect/multiselect-prompt.d.ts +0 -2
- package/bin/libs/multiselect/multiselect-prompt.js +0 -340
- package/bin/libs/next-steps/next-steps.d.ts +0 -13
- package/bin/libs/next-steps/next-steps.js +0 -24
- package/bin/libs/number/number-mod.d.ts +0 -28
- package/bin/libs/number/number-mod.js +0 -234
- package/bin/libs/outro/outro-alias.d.ts +0 -3
- package/bin/libs/outro/outro-alias.js +0 -3
- package/bin/libs/outro/outro-mod.d.ts +0 -7
- package/bin/libs/outro/outro-mod.js +0 -49
- package/bin/libs/reliarg/reliarg-mod.d.ts +0 -76
- package/bin/libs/reliarg/reliarg-mod.js +0 -276
- package/bin/libs/results/results.d.ts +0 -7
- package/bin/libs/results/results.js +0 -27
- package/bin/libs/select/nummultiselect-prompt.d.ts +0 -6
- package/bin/libs/select/nummultiselect-prompt.js +0 -141
- package/bin/libs/select/numselect-prompt.d.ts +0 -7
- package/bin/libs/select/numselect-prompt.js +0 -111
- package/bin/libs/select/select-alias.d.ts +0 -9
- package/bin/libs/select/select-alias.js +0 -9
- package/bin/libs/select/select-prompt.d.ts +0 -5
- package/bin/libs/select/select-prompt.js +0 -311
- package/bin/libs/select/toggle-prompt.d.ts +0 -5
- package/bin/libs/select/toggle-prompt.js +0 -207
- package/bin/libs/spinner/spinner-impl.d.ts +0 -70
- package/bin/libs/spinner/spinner-impl.js +0 -336
- package/bin/libs/spinner/spinner-mod.d.ts +0 -167
- package/bin/libs/spinner/spinner-mod.js +0 -447
- package/bin/libs/utils/colorize.d.ts +0 -2
- package/bin/libs/utils/colorize.js +0 -122
- package/bin/libs/utils/errors.d.ts +0 -1
- package/bin/libs/utils/errors.js +0 -17
- package/bin/libs/utils/prevent.d.ts +0 -8
- package/bin/libs/utils/prevent.js +0 -62
- package/bin/libs/utils/prompt-end.d.ts +0 -8
- package/bin/libs/utils/prompt-end.js +0 -36
- package/bin/libs/utils/stream-text.d.ts +0 -18
- package/bin/libs/utils/stream-text.js +0 -138
- package/bin/libs/utils/system.d.ts +0 -6
- package/bin/libs/utils/system.js +0 -7
- package/bin/libs/utils/validate.d.ts +0 -21
- package/bin/libs/utils/validate.js +0 -17
- package/bin/libs/visual/visual-mod.ts.txt +0 -19
- package/bin/mod.d.ts +0 -50
- package/bin/mod.js +0 -127
- package/bin/types.d.ts +0 -372
- /package/{bin → dist/launcher}/types.js +0 -0
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
import { re } from "@reliverse/relico";
|
|
2
|
-
import { relinka } from "@reliverse/relinka";
|
|
3
|
-
import gradient, { cristal, mind, passion, rainbow, vice } from "gradient-string";
|
|
4
|
-
function stripAnsi(text) {
|
|
5
|
-
return re.reset(text);
|
|
6
|
-
}
|
|
7
|
-
export function colorize(text, colorName, typography) {
|
|
8
|
-
if (!colorName) return text;
|
|
9
|
-
text = stripAnsi(text);
|
|
10
|
-
let result = text;
|
|
11
|
-
if (colorName.endsWith("Gradient")) {
|
|
12
|
-
switch (colorName) {
|
|
13
|
-
case "gradientGradient":
|
|
14
|
-
result = gradient(["red", "yellow", "green", "cyan", "blue", "magenta"])(result);
|
|
15
|
-
break;
|
|
16
|
-
case "rainbowGradient":
|
|
17
|
-
result = rainbow(result);
|
|
18
|
-
break;
|
|
19
|
-
case "cristalGradient":
|
|
20
|
-
result = cristal(result);
|
|
21
|
-
break;
|
|
22
|
-
case "mindGradient":
|
|
23
|
-
result = mind(result);
|
|
24
|
-
break;
|
|
25
|
-
case "passionGradient":
|
|
26
|
-
result = passion(result);
|
|
27
|
-
break;
|
|
28
|
-
case "viceGradient":
|
|
29
|
-
result = vice(result);
|
|
30
|
-
break;
|
|
31
|
-
case "retroGradient":
|
|
32
|
-
result = gradient(["#ff8a00", "#e52e71"])(result);
|
|
33
|
-
break;
|
|
34
|
-
default:
|
|
35
|
-
break;
|
|
36
|
-
}
|
|
37
|
-
return result;
|
|
38
|
-
}
|
|
39
|
-
switch (colorName) {
|
|
40
|
-
case "inverse":
|
|
41
|
-
result = re.inverse(` ${result} `);
|
|
42
|
-
break;
|
|
43
|
-
case "dim":
|
|
44
|
-
result = re.dim(result);
|
|
45
|
-
break;
|
|
46
|
-
case "black":
|
|
47
|
-
result = re.black(result);
|
|
48
|
-
break;
|
|
49
|
-
case "red":
|
|
50
|
-
result = re.red(result);
|
|
51
|
-
break;
|
|
52
|
-
case "redBright":
|
|
53
|
-
result = re.redBright(result);
|
|
54
|
-
break;
|
|
55
|
-
case "green":
|
|
56
|
-
result = re.green(result);
|
|
57
|
-
break;
|
|
58
|
-
case "greenBright":
|
|
59
|
-
result = re.greenBright(result);
|
|
60
|
-
break;
|
|
61
|
-
case "yellow":
|
|
62
|
-
result = re.yellow(result);
|
|
63
|
-
break;
|
|
64
|
-
case "yellowBright":
|
|
65
|
-
result = re.yellowBright(result);
|
|
66
|
-
break;
|
|
67
|
-
case "blue":
|
|
68
|
-
result = re.blue(result);
|
|
69
|
-
break;
|
|
70
|
-
case "blueBright":
|
|
71
|
-
result = re.blueBright(result);
|
|
72
|
-
break;
|
|
73
|
-
case "magenta":
|
|
74
|
-
result = re.magenta(result);
|
|
75
|
-
break;
|
|
76
|
-
case "magentaBright":
|
|
77
|
-
result = re.magentaBright(result);
|
|
78
|
-
break;
|
|
79
|
-
case "cyan":
|
|
80
|
-
result = re.cyan(result);
|
|
81
|
-
break;
|
|
82
|
-
case "cyanBright":
|
|
83
|
-
result = re.cyanBright(result);
|
|
84
|
-
break;
|
|
85
|
-
case "bgCyan":
|
|
86
|
-
result = re.bgCyan(` ${result} `);
|
|
87
|
-
break;
|
|
88
|
-
case "bgCyanBright":
|
|
89
|
-
result = re.bgCyanBright(` ${result} `);
|
|
90
|
-
break;
|
|
91
|
-
case "white":
|
|
92
|
-
result = re.white(result);
|
|
93
|
-
break;
|
|
94
|
-
case "gray":
|
|
95
|
-
result = re.gray(result);
|
|
96
|
-
break;
|
|
97
|
-
case "none":
|
|
98
|
-
break;
|
|
99
|
-
default:
|
|
100
|
-
relinka("warn", `Warning: Unknown color "${colorName}"`);
|
|
101
|
-
break;
|
|
102
|
-
}
|
|
103
|
-
if (typography) {
|
|
104
|
-
switch (typography) {
|
|
105
|
-
case "bold":
|
|
106
|
-
result = re.bold(result);
|
|
107
|
-
break;
|
|
108
|
-
case "strikethrough":
|
|
109
|
-
result = re.strikethrough(result);
|
|
110
|
-
break;
|
|
111
|
-
case "underline":
|
|
112
|
-
result = re.underline(result);
|
|
113
|
-
break;
|
|
114
|
-
case "italic":
|
|
115
|
-
result = re.italic(result);
|
|
116
|
-
break;
|
|
117
|
-
default:
|
|
118
|
-
break;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
return result;
|
|
122
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const errorHandler: (error: Error, customMessage?: string) => never;
|
package/bin/libs/utils/errors.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { relinka } from "@reliverse/relinka";
|
|
2
|
-
export const errorHandler = (error, customMessage) => {
|
|
3
|
-
const separator = "\u2500".repeat(71);
|
|
4
|
-
relinka("error", `\u2502${separator}`);
|
|
5
|
-
relinka("error", "\u2502 AN ERROR OCCURRED:\n\u2502 ", error.message);
|
|
6
|
-
relinka("error", `\u2502${separator}`);
|
|
7
|
-
if (customMessage) {
|
|
8
|
-
relinka("error", `\u2502 ${customMessage}`);
|
|
9
|
-
} else {
|
|
10
|
-
relinka(
|
|
11
|
-
"error",
|
|
12
|
-
"\u2502 If this issue is related to @reliverse/rempts itself, please\n\u2502 report the details at https://github.com/reliverse/rempts/issues"
|
|
13
|
-
);
|
|
14
|
-
}
|
|
15
|
-
relinka("error", `\u2570${separator}`);
|
|
16
|
-
process.exit(1);
|
|
17
|
-
};
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { PreventWrongTerminalSizeOptions } from "../../types";
|
|
2
|
-
export declare function preventUnsupportedTTY(): void;
|
|
3
|
-
/**
|
|
4
|
-
* Prevents EISDIR errors when trying to read Windows home directory as a file
|
|
5
|
-
* @param filePath The file path to check
|
|
6
|
-
*/
|
|
7
|
-
export declare function preventWindowsHomeDirRoot(filePath: string): never | undefined;
|
|
8
|
-
export declare function preventWrongTerminalSize({ isDev, shouldExit, minWidth, minHeight, sizeErrorDescription, }: PreventWrongTerminalSizeOptions): Promise<void>;
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { homedir } from "node:os";
|
|
2
|
-
import { re } from "@reliverse/relico";
|
|
3
|
-
import { relinka } from "@reliverse/relinka";
|
|
4
|
-
import terminalSize from "terminal-size";
|
|
5
|
-
import { msg } from "../msg-fmt/messages.js";
|
|
6
|
-
import { getExactTerminalWidth, getTerminalWidth } from "../msg-fmt/terminal.js";
|
|
7
|
-
export function preventUnsupportedTTY() {
|
|
8
|
-
if (!process.stdout.isTTY) {
|
|
9
|
-
relinka(
|
|
10
|
-
"warn",
|
|
11
|
-
"\u2502 Your terminal does not support terminal's cursor manipulations.\n\u2502 It's recommended to use a terminal which supports TTY."
|
|
12
|
-
);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
export function preventWindowsHomeDirRoot(filePath) {
|
|
16
|
-
if (process.platform !== "win32") {
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
const home = homedir();
|
|
20
|
-
if (filePath === home || filePath === `${home}\\`) {
|
|
21
|
-
msg({
|
|
22
|
-
type: "M_ERROR",
|
|
23
|
-
title: re.redBright("Cannot operate in Windows home directory root"),
|
|
24
|
-
content: `Please use a command like ${re.cyan(`cd ${home}\\Desktop`)} to move to a safe working directory first.`,
|
|
25
|
-
contentColor: "redBright"
|
|
26
|
-
});
|
|
27
|
-
process.exit(1);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
export async function preventWrongTerminalSize({
|
|
31
|
-
isDev = false,
|
|
32
|
-
shouldExit = true,
|
|
33
|
-
minWidth = 80,
|
|
34
|
-
minHeight = 12,
|
|
35
|
-
sizeErrorDescription = "Please increase the terminal size to run the application"
|
|
36
|
-
}) {
|
|
37
|
-
const size = terminalSize();
|
|
38
|
-
const exactTerminalWidth = getExactTerminalWidth();
|
|
39
|
-
const terminalWidth = getTerminalWidth();
|
|
40
|
-
const errors = [];
|
|
41
|
-
if (terminalWidth < minWidth) {
|
|
42
|
-
errors.push(
|
|
43
|
-
isDev ? `Oops! Terminal width is too small. Expected >${minWidth} | Current: ${terminalWidth} (Exact: ${exactTerminalWidth})` : `Oops! Terminal width is too small. Expected >${minWidth} | Current: ${terminalWidth}`
|
|
44
|
-
);
|
|
45
|
-
}
|
|
46
|
-
if (size.rows < minHeight) {
|
|
47
|
-
errors.push(
|
|
48
|
-
`Oops! Terminal height is too small. Expected >${minHeight} | Current: ${size.rows}`
|
|
49
|
-
);
|
|
50
|
-
}
|
|
51
|
-
if (errors.length > 0) {
|
|
52
|
-
msg({
|
|
53
|
-
type: "M_ERROR",
|
|
54
|
-
title: re.redBright(errors.join("\n\u2502\u2502 ")),
|
|
55
|
-
content: size.rows >= 7 && terminalWidth >= 70 ? sizeErrorDescription : "",
|
|
56
|
-
contentColor: "redBright"
|
|
57
|
-
});
|
|
58
|
-
if (shouldExit) {
|
|
59
|
-
process.exit(1);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { BorderColorName, ColorName, TypographyName, VariantName } from "../../types";
|
|
2
|
-
/**
|
|
3
|
-
* Ends the prompt by optionally displaying an end message and running the action if confirmed.
|
|
4
|
-
* Preserves the last prompt state unless there's an endTitle.
|
|
5
|
-
*/
|
|
6
|
-
export declare function completePrompt(prompt: "input" | "confirm" | "select" | "multiselect" | "toggle", isCtrlC: boolean, _endTitle: string | undefined, _endTitleColor: ColorName | undefined, _titleTypography: TypographyName | undefined, _titleVariant: VariantName | undefined, _border?: boolean, borderColor?: BorderColorName, action?: () => Promise<void>, value?: boolean): Promise<boolean>;
|
|
7
|
-
export declare function renderEndLine(): void;
|
|
8
|
-
export declare function renderEndLineInput(): void;
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { re } from "@reliverse/relico";
|
|
2
|
-
import { relinka } from "@reliverse/relinka";
|
|
3
|
-
import { msg, symbols } from "../msg-fmt/messages.js";
|
|
4
|
-
import { deleteLastLine, getExactTerminalWidth } from "../msg-fmt/terminal.js";
|
|
5
|
-
export async function completePrompt(prompt, isCtrlC, _endTitle = "", _endTitleColor = "dim", _titleTypography = "none", _titleVariant, _border = true, borderColor = "dim", action, value) {
|
|
6
|
-
if (action && value) {
|
|
7
|
-
await action();
|
|
8
|
-
}
|
|
9
|
-
if (prompt === "input") {
|
|
10
|
-
renderEndLineInput();
|
|
11
|
-
return value ?? false;
|
|
12
|
-
}
|
|
13
|
-
if (isCtrlC) {
|
|
14
|
-
renderEndLine();
|
|
15
|
-
} else {
|
|
16
|
-
deleteLastLine();
|
|
17
|
-
msg({
|
|
18
|
-
type: "M_BAR",
|
|
19
|
-
borderColor
|
|
20
|
-
});
|
|
21
|
-
renderEndLineInput();
|
|
22
|
-
}
|
|
23
|
-
return value ?? false;
|
|
24
|
-
}
|
|
25
|
-
export function renderEndLine() {
|
|
26
|
-
const lineLength = getExactTerminalWidth() - 6;
|
|
27
|
-
relinka("null", re.dim(symbols.middle));
|
|
28
|
-
relinka("null", re.dim(`${symbols.end}${symbols.line.repeat(lineLength)}\u22B1`));
|
|
29
|
-
relinka("null", "");
|
|
30
|
-
}
|
|
31
|
-
export function renderEndLineInput() {
|
|
32
|
-
const lineLength = getExactTerminalWidth() - 6;
|
|
33
|
-
relinka("null", "");
|
|
34
|
-
relinka("null", re.dim(`${symbols.end}${symbols.line.repeat(lineLength)}\u22B1`));
|
|
35
|
-
relinka("null", "");
|
|
36
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type { BorderColorName, StreamTextOptions } from "../../types";
|
|
2
|
-
/**
|
|
3
|
-
* Simulates streaming text output in the console, character by character
|
|
4
|
-
*/
|
|
5
|
-
export declare function streamText({ text, delay, showCursor, color, newline, clearLine, onProgress, }: StreamTextOptions): Promise<void>;
|
|
6
|
-
/**
|
|
7
|
-
* Simulates streaming text output in a message box
|
|
8
|
-
*/
|
|
9
|
-
export declare function streamTextBox({ text, delay, color, borderColor, }: Omit<StreamTextOptions, "showCursor" | "newline" | "clearLine"> & {
|
|
10
|
-
borderColor?: BorderColorName;
|
|
11
|
-
}): Promise<void>;
|
|
12
|
-
/**
|
|
13
|
-
* Simulates streaming text output with a loading spinner using ora
|
|
14
|
-
*/
|
|
15
|
-
export declare function streamTextWithSpinner({ text, delay, color, spinnerFrames, spinnerDelay, }: StreamTextOptions & {
|
|
16
|
-
spinnerFrames?: string[];
|
|
17
|
-
spinnerDelay?: number;
|
|
18
|
-
}): Promise<void>;
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
import { stdout } from "node:process";
|
|
2
|
-
import { re } from "@reliverse/relico";
|
|
3
|
-
import { cursor } from "sisteransi";
|
|
4
|
-
import terminalSize from "terminal-size";
|
|
5
|
-
import wrapAnsi from "wrap-ansi";
|
|
6
|
-
import { toBaseColor } from "../msg-fmt/colors.js";
|
|
7
|
-
import { colorMap } from "../msg-fmt/mapping.js";
|
|
8
|
-
import { msg } from "../msg-fmt/messages.js";
|
|
9
|
-
import { ora } from "../spinner/spinner-impl.js";
|
|
10
|
-
function getTerminalWidth() {
|
|
11
|
-
return terminalSize().columns;
|
|
12
|
-
}
|
|
13
|
-
let isStartOfLine = true;
|
|
14
|
-
let isFirstLine = true;
|
|
15
|
-
function stripAnsi(text) {
|
|
16
|
-
return text.replace(/\x1b\[[0-9;]*[a-zA-Z]/g, "");
|
|
17
|
-
}
|
|
18
|
-
function extractAnsi(text) {
|
|
19
|
-
return text.match(/\x1b\[[0-9;]*[a-zA-Z]/g) || [];
|
|
20
|
-
}
|
|
21
|
-
function wrapWithBar(text, isFirst, color) {
|
|
22
|
-
const prefix = isFirst ? re.green("\u25C6") : re.dim("\u2502");
|
|
23
|
-
const ansiCodes = extractAnsi(text);
|
|
24
|
-
const cleanText = stripAnsi(text);
|
|
25
|
-
const coloredText = color ? colorMap[color](cleanText) : re.dim(cleanText);
|
|
26
|
-
const finalText = ansiCodes.length > 0 ? ansiCodes.join("") + coloredText : coloredText;
|
|
27
|
-
return `${prefix} ${finalText}`;
|
|
28
|
-
}
|
|
29
|
-
function wrapText(text) {
|
|
30
|
-
const width = getTerminalWidth();
|
|
31
|
-
return wrapAnsi(text, width - 4, { hard: false, trim: true });
|
|
32
|
-
}
|
|
33
|
-
export async function streamText({
|
|
34
|
-
text,
|
|
35
|
-
delay = 50,
|
|
36
|
-
showCursor = false,
|
|
37
|
-
color,
|
|
38
|
-
newline = true,
|
|
39
|
-
clearLine = false,
|
|
40
|
-
onProgress
|
|
41
|
-
}) {
|
|
42
|
-
if (!showCursor) {
|
|
43
|
-
stdout.write(cursor.hide);
|
|
44
|
-
}
|
|
45
|
-
if (clearLine) {
|
|
46
|
-
stdout.write("\r\x1B[K");
|
|
47
|
-
}
|
|
48
|
-
const wrappedText = wrapText(text);
|
|
49
|
-
isFirstLine = true;
|
|
50
|
-
let buffer = "";
|
|
51
|
-
for (const char of wrappedText) {
|
|
52
|
-
if (char === "\n") {
|
|
53
|
-
if (buffer) {
|
|
54
|
-
const output = isStartOfLine ? wrapWithBar(buffer, isFirstLine, color) : color ? colorMap[color](buffer) : re.dim(buffer);
|
|
55
|
-
stdout.write(output);
|
|
56
|
-
buffer = "";
|
|
57
|
-
}
|
|
58
|
-
stdout.write(char);
|
|
59
|
-
isStartOfLine = true;
|
|
60
|
-
isFirstLine = false;
|
|
61
|
-
continue;
|
|
62
|
-
}
|
|
63
|
-
buffer += char;
|
|
64
|
-
if (!char.includes("\x1B[") && buffer) {
|
|
65
|
-
const output = isStartOfLine ? wrapWithBar(buffer, isFirstLine, color) : color ? colorMap[color](buffer) : re.dim(buffer);
|
|
66
|
-
stdout.write(output);
|
|
67
|
-
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
68
|
-
isStartOfLine = false;
|
|
69
|
-
buffer = "";
|
|
70
|
-
if (onProgress) {
|
|
71
|
-
onProgress(output);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
if (buffer) {
|
|
76
|
-
const output = isStartOfLine ? wrapWithBar(buffer, isFirstLine, color) : color ? colorMap[color](buffer) : re.dim(buffer);
|
|
77
|
-
stdout.write(output);
|
|
78
|
-
if (onProgress) {
|
|
79
|
-
onProgress(output);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
if (newline) {
|
|
83
|
-
stdout.write("\n");
|
|
84
|
-
}
|
|
85
|
-
if (!showCursor) {
|
|
86
|
-
stdout.write(cursor.show);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
export async function streamTextBox({
|
|
90
|
-
text,
|
|
91
|
-
delay = 50,
|
|
92
|
-
color,
|
|
93
|
-
borderColor = "dim"
|
|
94
|
-
}) {
|
|
95
|
-
stdout.write(cursor.hide);
|
|
96
|
-
msg({
|
|
97
|
-
type: "M_START",
|
|
98
|
-
title: "",
|
|
99
|
-
borderColor
|
|
100
|
-
});
|
|
101
|
-
await streamText({
|
|
102
|
-
text,
|
|
103
|
-
delay,
|
|
104
|
-
showCursor: false,
|
|
105
|
-
...color !== void 0 && { color },
|
|
106
|
-
newline: false,
|
|
107
|
-
clearLine: false
|
|
108
|
-
});
|
|
109
|
-
msg({
|
|
110
|
-
type: "M_END",
|
|
111
|
-
borderColor
|
|
112
|
-
});
|
|
113
|
-
stdout.write(cursor.show);
|
|
114
|
-
}
|
|
115
|
-
export async function streamTextWithSpinner({
|
|
116
|
-
text,
|
|
117
|
-
delay = 50,
|
|
118
|
-
color = "cyan",
|
|
119
|
-
spinnerFrames,
|
|
120
|
-
spinnerDelay
|
|
121
|
-
}) {
|
|
122
|
-
let currentText = "";
|
|
123
|
-
const baseColor = toBaseColor(color);
|
|
124
|
-
const spinner = ora({
|
|
125
|
-
text: currentText,
|
|
126
|
-
...baseColor !== void 0 && { color: baseColor },
|
|
127
|
-
spinner: spinnerFrames ? {
|
|
128
|
-
frames: spinnerFrames,
|
|
129
|
-
interval: spinnerDelay ?? 80
|
|
130
|
-
} : "dots"
|
|
131
|
-
}).start();
|
|
132
|
-
for (const char of text) {
|
|
133
|
-
currentText += char;
|
|
134
|
-
spinner.text = color ? colorMap[color](currentText) : currentText;
|
|
135
|
-
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
136
|
-
}
|
|
137
|
-
spinner.stop();
|
|
138
|
-
}
|
package/bin/libs/utils/system.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { getUserPkgManager } from "@reliverse/reltime";
|
|
2
|
-
export const pm = await getUserPkgManager();
|
|
3
|
-
export const reliversePrompts = {
|
|
4
|
-
name: "@reliverse/rempts",
|
|
5
|
-
version: "1.6.0",
|
|
6
|
-
description: "@reliverse/rempts is a powerful library that enables seamless, typesafe, and resilient prompts for command-line applications. Crafted with simplicity and elegance, it provides developers with an intuitive and robust way to build interactive CLIs."
|
|
7
|
-
};
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Checks if the terminal is interactive
|
|
3
|
-
*/
|
|
4
|
-
export declare function isTerminalInteractive(input?: NodeJS.ReadStream & {
|
|
5
|
-
fd: 0;
|
|
6
|
-
}): boolean;
|
|
7
|
-
/**
|
|
8
|
-
* Validates a name against allowed characters
|
|
9
|
-
*/
|
|
10
|
-
interface ValidationResult {
|
|
11
|
-
isValid: boolean;
|
|
12
|
-
message?: string;
|
|
13
|
-
}
|
|
14
|
-
export declare function isValidName(name: string): ValidationResult;
|
|
15
|
-
/**
|
|
16
|
-
* Cleans up project name from config by removing scope and invalid characters.
|
|
17
|
-
* For paths with multiple segments (e.g. "@org/subpath/cli"), takes the last segment.
|
|
18
|
-
* This also ensures complex cases (e.g. "@some@weird/path/the-name!" returns "the-name").
|
|
19
|
-
*/
|
|
20
|
-
export declare function normalizeName(name: string): string;
|
|
21
|
-
export {};
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export function isTerminalInteractive(input = process.stdin) {
|
|
2
|
-
return Boolean(input.isTTY);
|
|
3
|
-
}
|
|
4
|
-
export function isValidName(name) {
|
|
5
|
-
if (!/^[a-zA-Z0-9-]+$/.test(name)) {
|
|
6
|
-
return {
|
|
7
|
-
isValid: false,
|
|
8
|
-
message: "Project name can only contain latin letters, numbers and hyphens"
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
return { isValid: true };
|
|
12
|
-
}
|
|
13
|
-
export function normalizeName(name) {
|
|
14
|
-
const segments = name.split("/");
|
|
15
|
-
const lastSegment = segments[segments.length - 1] ?? name;
|
|
16
|
-
return lastSegment.replace(/[^a-zA-Z0-9-]/g, "");
|
|
17
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { relinka } from "@reliverse/relinka";
|
|
2
|
-
// import figlet, { type Fonts } from "figlet";
|
|
3
|
-
|
|
4
|
-
export async function createAsciiArt({
|
|
5
|
-
message,
|
|
6
|
-
font = "Standard",
|
|
7
|
-
clearConsole = false,
|
|
8
|
-
}: {
|
|
9
|
-
message: string;
|
|
10
|
-
font?: Fonts;
|
|
11
|
-
clearConsole?: boolean;
|
|
12
|
-
}): Promise<void> {
|
|
13
|
-
if (clearConsole) {
|
|
14
|
-
relinka("clear", "");
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
const asciiArt = figlet.textSync(message, { font });
|
|
18
|
-
relinka("log", asciiArt);
|
|
19
|
-
}
|
package/bin/mod.d.ts
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
export { anykeyPrompt } from "./libs/anykey/anykey-mod";
|
|
2
|
-
export type { CancelValue } from "./libs/cancel/cancel";
|
|
3
|
-
export { block, CANCEL, cancel, createCancel, getColumns, isCancel, isWindows, setRawMode, } from "./libs/cancel/cancel";
|
|
4
|
-
export { confirm } from "./libs/confirm/confirm-alias";
|
|
5
|
-
export { confirmPrompt } from "./libs/confirm/confirm-mod";
|
|
6
|
-
export { datePrompt } from "./libs/date/date";
|
|
7
|
-
export { startEditor } from "./libs/editor/editor-mod";
|
|
8
|
-
export { fallbackSymbols, figures, mainSymbols, } from "./libs/figures/figures-mod";
|
|
9
|
-
export type { GroupContext, GroupOptions, GroupStep, GroupSteps, } from "./libs/group/group-mod";
|
|
10
|
-
export { createMultiStep, createStep, group } from "./libs/group/group-mod";
|
|
11
|
-
export { input, password, text } from "./libs/input/input-alias";
|
|
12
|
-
export { inputPrompt } from "./libs/input/input-mod";
|
|
13
|
-
export { intro, startPrompt } from "./libs/intro/intro-alias";
|
|
14
|
-
export { introPrompt } from "./libs/intro/intro-mod";
|
|
15
|
-
export type { CallCmdOptions } from "./libs/launcher/command-runner";
|
|
16
|
-
export { callCmd } from "./libs/launcher/command-runner";
|
|
17
|
-
export { runMain } from "./libs/launcher/launcher-alias";
|
|
18
|
-
export { createCli, defineArgs, defineCommand, showUsage, } from "./libs/launcher/launcher-mod";
|
|
19
|
-
export type { ArgDefinition, ArgDefinitions, ArrayArgDefinition, BaseArgDefinition, BaseArgProps, BooleanArgDefinition, Command, CommandContext, CommandHook, CommandMeta, CommandRun, CommandSpec, CommandsMap, DefineCommandOptions, EmptyArgs, FileBasedOptions, InferArgTypes, NumberArgDefinition, PositionalArgDefinition, StringArgDefinition, } from "./libs/launcher/launcher-types";
|
|
20
|
-
export { log } from "./libs/log/log-alias";
|
|
21
|
-
export { toBaseColor, toSolidColor } from "./libs/msg-fmt/colors";
|
|
22
|
-
export { colorMap, typographyMap } from "./libs/msg-fmt/mapping";
|
|
23
|
-
export { bar, fmt, msg, msgUndo, msgUndoAll, printLineBar, symbols, } from "./libs/msg-fmt/messages";
|
|
24
|
-
export { breakLines, countLines, deleteLastLine, deleteLastLines, getExactTerminalWidth, getTerminalHeight, getTerminalWidth, removeCursor, restoreCursor, } from "./libs/msg-fmt/terminal";
|
|
25
|
-
export { applyVariant, isValidVariant, variantMap, } from "./libs/msg-fmt/variants";
|
|
26
|
-
export { multiselect } from "./libs/multiselect/multiselect-alias";
|
|
27
|
-
export { multiselectPrompt } from "./libs/multiselect/multiselect-prompt";
|
|
28
|
-
export { nextStepsPrompt } from "./libs/next-steps/next-steps";
|
|
29
|
-
export { numberPrompt } from "./libs/number/number-mod";
|
|
30
|
-
export { endPrompt, outro } from "./libs/outro/outro-alias";
|
|
31
|
-
export { outroPrompt } from "./libs/outro/outro-mod";
|
|
32
|
-
export type { ResultsType } from "./libs/results/results";
|
|
33
|
-
export { resultPrompt } from "./libs/results/results";
|
|
34
|
-
export { numMultiSelectPrompt } from "./libs/select/nummultiselect-prompt";
|
|
35
|
-
export { numSelectPrompt } from "./libs/select/numselect-prompt";
|
|
36
|
-
export { select, selectSimple } from "./libs/select/select-alias";
|
|
37
|
-
export { selectPrompt } from "./libs/select/select-prompt";
|
|
38
|
-
export { togglePrompt } from "./libs/select/toggle-prompt";
|
|
39
|
-
export type { Ora, OraOptions, OraPromiseOptions, StopAndPersistOptions, } from "./libs/spinner/spinner-impl";
|
|
40
|
-
export { error, info, ora, oraPromise, randomSpinner, spinners, success, warning, } from "./libs/spinner/spinner-impl";
|
|
41
|
-
export type { FileProgressOptions, SimpleSpinner, SpinnerGroupOptions, SpinnerOptions, } from "./libs/spinner/spinner-mod";
|
|
42
|
-
export { createBuildSpinner, createFileProgressSpinner, createMultiStepSpinner, createSpinner, createSpinnerGroup, createTimedSpinner, createTransferSpinner, defaultSpinnerOptions, formatSpinnerBytes, formatSpinnerElapsed, formatSpinnerTiming, isSpinnerEnabled, isSpinnerRunning, safeStopSpinner, stopAndPersist, updateSpinnerText, withEnhancedSpinner, withSpinner, withSpinnerPromise, } from "./libs/spinner/spinner-mod";
|
|
43
|
-
export { colorize } from "./libs/utils/colorize";
|
|
44
|
-
export { errorHandler } from "./libs/utils/errors";
|
|
45
|
-
export { preventUnsupportedTTY, preventWindowsHomeDirRoot, preventWrongTerminalSize, } from "./libs/utils/prevent";
|
|
46
|
-
export { completePrompt, renderEndLine, renderEndLineInput, } from "./libs/utils/prompt-end";
|
|
47
|
-
export { streamText, streamTextBox, streamTextWithSpinner, } from "./libs/utils/stream-text";
|
|
48
|
-
export { pm, reliversePrompts } from "./libs/utils/system";
|
|
49
|
-
export { isTerminalInteractive, isValidName, normalizeName, } from "./libs/utils/validate";
|
|
50
|
-
export type { AllKinds, BorderColorName, ChoiceOptions, ColorName, ConfirmPromptOptions, DatePromptOptions, EditorExitResult, FmtMsgOptions, InputPromptOptions, MessageConfig, MessageKind, MsgConfig, MsgType, MultiselectPromptParams, OutputColor, PreventWrongTerminalSizeOptions, ProgressBar, ProgressBarOptions, PromptOptions, PromptType, RenderParams, SelectOption, SelectPromptParams, SeparatorOption, StandardColor, StreamOptions, StreamTextOptions, SymbolName, Symbols, TogglePromptParams, TypographyName, VariantName, } from "./types";
|
package/bin/mod.js
DELETED
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
export { anykeyPrompt } from "./libs/anykey/anykey-mod.js";
|
|
2
|
-
export {
|
|
3
|
-
block,
|
|
4
|
-
CANCEL,
|
|
5
|
-
cancel,
|
|
6
|
-
createCancel,
|
|
7
|
-
getColumns,
|
|
8
|
-
isCancel,
|
|
9
|
-
isWindows,
|
|
10
|
-
setRawMode
|
|
11
|
-
} from "./libs/cancel/cancel.js";
|
|
12
|
-
export { confirm } from "./libs/confirm/confirm-alias.js";
|
|
13
|
-
export { confirmPrompt } from "./libs/confirm/confirm-mod.js";
|
|
14
|
-
export { datePrompt } from "./libs/date/date.js";
|
|
15
|
-
export { startEditor } from "./libs/editor/editor-mod.js";
|
|
16
|
-
export {
|
|
17
|
-
fallbackSymbols,
|
|
18
|
-
figures,
|
|
19
|
-
mainSymbols
|
|
20
|
-
} from "./libs/figures/figures-mod.js";
|
|
21
|
-
export { createMultiStep, createStep, group } from "./libs/group/group-mod.js";
|
|
22
|
-
export { input, password, text } from "./libs/input/input-alias.js";
|
|
23
|
-
export { inputPrompt } from "./libs/input/input-mod.js";
|
|
24
|
-
export { intro, startPrompt } from "./libs/intro/intro-alias.js";
|
|
25
|
-
export { introPrompt } from "./libs/intro/intro-mod.js";
|
|
26
|
-
export { callCmd } from "./libs/launcher/command-runner.js";
|
|
27
|
-
export { runMain } from "./libs/launcher/launcher-alias.js";
|
|
28
|
-
export {
|
|
29
|
-
createCli,
|
|
30
|
-
defineArgs,
|
|
31
|
-
defineCommand,
|
|
32
|
-
showUsage
|
|
33
|
-
} from "./libs/launcher/launcher-mod.js";
|
|
34
|
-
export { log } from "./libs/log/log-alias.js";
|
|
35
|
-
export { toBaseColor, toSolidColor } from "./libs/msg-fmt/colors.js";
|
|
36
|
-
export { colorMap, typographyMap } from "./libs/msg-fmt/mapping.js";
|
|
37
|
-
export {
|
|
38
|
-
bar,
|
|
39
|
-
fmt,
|
|
40
|
-
msg,
|
|
41
|
-
msgUndo,
|
|
42
|
-
msgUndoAll,
|
|
43
|
-
printLineBar,
|
|
44
|
-
symbols
|
|
45
|
-
} from "./libs/msg-fmt/messages.js";
|
|
46
|
-
export {
|
|
47
|
-
breakLines,
|
|
48
|
-
countLines,
|
|
49
|
-
deleteLastLine,
|
|
50
|
-
deleteLastLines,
|
|
51
|
-
getExactTerminalWidth,
|
|
52
|
-
getTerminalHeight,
|
|
53
|
-
getTerminalWidth,
|
|
54
|
-
removeCursor,
|
|
55
|
-
restoreCursor
|
|
56
|
-
} from "./libs/msg-fmt/terminal.js";
|
|
57
|
-
export {
|
|
58
|
-
applyVariant,
|
|
59
|
-
isValidVariant,
|
|
60
|
-
variantMap
|
|
61
|
-
} from "./libs/msg-fmt/variants.js";
|
|
62
|
-
export { multiselect } from "./libs/multiselect/multiselect-alias.js";
|
|
63
|
-
export { multiselectPrompt } from "./libs/multiselect/multiselect-prompt.js";
|
|
64
|
-
export { nextStepsPrompt } from "./libs/next-steps/next-steps.js";
|
|
65
|
-
export { numberPrompt } from "./libs/number/number-mod.js";
|
|
66
|
-
export { endPrompt, outro } from "./libs/outro/outro-alias.js";
|
|
67
|
-
export { outroPrompt } from "./libs/outro/outro-mod.js";
|
|
68
|
-
export { resultPrompt } from "./libs/results/results.js";
|
|
69
|
-
export { numMultiSelectPrompt } from "./libs/select/nummultiselect-prompt.js";
|
|
70
|
-
export { numSelectPrompt } from "./libs/select/numselect-prompt.js";
|
|
71
|
-
export { select, selectSimple } from "./libs/select/select-alias.js";
|
|
72
|
-
export { selectPrompt } from "./libs/select/select-prompt.js";
|
|
73
|
-
export { togglePrompt } from "./libs/select/toggle-prompt.js";
|
|
74
|
-
export {
|
|
75
|
-
error,
|
|
76
|
-
info,
|
|
77
|
-
ora,
|
|
78
|
-
oraPromise,
|
|
79
|
-
randomSpinner,
|
|
80
|
-
spinners,
|
|
81
|
-
success,
|
|
82
|
-
warning
|
|
83
|
-
} from "./libs/spinner/spinner-impl.js";
|
|
84
|
-
export {
|
|
85
|
-
createBuildSpinner,
|
|
86
|
-
createFileProgressSpinner,
|
|
87
|
-
createMultiStepSpinner,
|
|
88
|
-
createSpinner,
|
|
89
|
-
createSpinnerGroup,
|
|
90
|
-
createTimedSpinner,
|
|
91
|
-
createTransferSpinner,
|
|
92
|
-
defaultSpinnerOptions,
|
|
93
|
-
formatSpinnerBytes,
|
|
94
|
-
formatSpinnerElapsed,
|
|
95
|
-
formatSpinnerTiming,
|
|
96
|
-
isSpinnerEnabled,
|
|
97
|
-
isSpinnerRunning,
|
|
98
|
-
safeStopSpinner,
|
|
99
|
-
stopAndPersist,
|
|
100
|
-
updateSpinnerText,
|
|
101
|
-
withEnhancedSpinner,
|
|
102
|
-
withSpinner,
|
|
103
|
-
withSpinnerPromise
|
|
104
|
-
} from "./libs/spinner/spinner-mod.js";
|
|
105
|
-
export { colorize } from "./libs/utils/colorize.js";
|
|
106
|
-
export { errorHandler } from "./libs/utils/errors.js";
|
|
107
|
-
export {
|
|
108
|
-
preventUnsupportedTTY,
|
|
109
|
-
preventWindowsHomeDirRoot,
|
|
110
|
-
preventWrongTerminalSize
|
|
111
|
-
} from "./libs/utils/prevent.js";
|
|
112
|
-
export {
|
|
113
|
-
completePrompt,
|
|
114
|
-
renderEndLine,
|
|
115
|
-
renderEndLineInput
|
|
116
|
-
} from "./libs/utils/prompt-end.js";
|
|
117
|
-
export {
|
|
118
|
-
streamText,
|
|
119
|
-
streamTextBox,
|
|
120
|
-
streamTextWithSpinner
|
|
121
|
-
} from "./libs/utils/stream-text.js";
|
|
122
|
-
export { pm, reliversePrompts } from "./libs/utils/system.js";
|
|
123
|
-
export {
|
|
124
|
-
isTerminalInteractive,
|
|
125
|
-
isValidName,
|
|
126
|
-
normalizeName
|
|
127
|
-
} from "./libs/utils/validate.js";
|