@reliverse/relinka 1.1.2 → 1.1.3
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-npm/components/checkbox/index.js +8 -6
- package/dist-npm/components/confirm/index.js +7 -4
- package/dist-npm/components/core/Separator.d.ts +0 -4
- package/dist-npm/components/core/create-prompt.js +1 -1
- package/dist-npm/components/core/key.js +6 -6
- package/dist-npm/components/core/lines.d.ts +5 -17
- package/dist-npm/components/core/lines.js +6 -2
- package/dist-npm/components/core/make-theme.js +3 -1
- package/dist-npm/components/core/position.d.ts +0 -8
- package/dist-npm/components/core/position.js +9 -3
- package/dist-npm/components/core/promise-polyfill.js +2 -2
- package/dist-npm/components/core/screen-manager.js +2 -1
- package/dist-npm/components/core/theme.d.ts +12 -146
- package/dist-npm/components/core/theme.js +1 -1
- package/dist-npm/components/core/use-keypress.js +3 -1
- package/dist-npm/components/core/use-pagination.d.ts +4 -8
- package/dist-npm/components/core/use-prefix.js +1 -1
- package/dist-npm/components/core/useKeyPress.js +3 -1
- package/dist-npm/components/core/utils.d.ts +0 -11
- package/dist-npm/components/date/date.js +1 -1
- package/dist-npm/components/expand/index.js +4 -2
- package/dist-npm/components/figures/index.js +5 -5
- package/dist-npm/components/instance/basic.d.ts +0 -12
- package/dist-npm/components/instance/basic.js +1 -1
- package/dist-npm/components/instance/browser.d.ts +0 -14
- package/dist-npm/components/instance/reporter/browser.js +5 -5
- package/dist-npm/components/instance/reporter/fancy.d.ts +1 -1
- package/dist-npm/components/instance/reporter/fancy.js +1 -1
- package/dist-npm/components/mono/mono.js +9 -9
- package/dist-npm/components/mono/monoTwo.d.ts +13 -76
- package/dist-npm/components/password/password-main.js +1 -1
- package/dist-npm/components/progressbar/ProgressBar.d.ts +3 -14
- package/dist-npm/components/progressbar/ProgressBar.js +3 -14
- package/dist-npm/components/progressbar/helper.d.ts +2 -18
- package/dist-npm/components/prompts/create.d.ts +0 -13
- package/dist-npm/components/prompts/prompt.js +3 -3
- package/dist-npm/components/prompts/promptTwo.d.ts +34 -252
- package/dist-npm/components/prompts/promptTwo.js +6 -27
- package/dist-npm/components/prompts/relinka.d.ts +17 -114
- package/dist-npm/components/prompts/relinka.js +18 -103
- package/dist-npm/components/range/range.d.ts +12 -64
- package/dist-npm/components/range/range.js +36 -59
- package/dist-npm/components/rawlist/index.js +6 -4
- package/dist-npm/components/search/index.js +7 -5
- package/dist-npm/components/select/index.js +9 -3
- package/dist-npm/components/select/select-main.js +3 -1
- package/dist-npm/components/select/select-two.js +3 -1
- package/dist-npm/components/toggle/index.js +3 -1
- package/dist-npm/testing/index.js +1 -1
- package/dist-npm/types/general.d.ts +30 -141
- package/dist-npm/types/keypress.d.ts +0 -3
- package/dist-npm/types/keypress.js +1 -1
- package/dist-npm/types/readline.d.ts +1 -9
- package/dist-npm/types/relinka.d.ts +1 -9
- package/dist-npm/types/utils.d.ts +0 -12
- package/dist-npm/utils/box.d.ts +14 -104
- package/dist-npm/utils/color.d.ts +0 -20
- package/dist-npm/utils/colorize.js +2 -1
- package/dist-npm/utils/component.d.ts +5 -26
- package/dist-npm/utils/component.js +1 -2
- package/dist-npm/utils/constants.d.ts +0 -21
- package/dist-npm/utils/constants.js +8 -8
- package/dist-npm/utils/decoder.d.ts +2 -17
- package/dist-npm/utils/decoder.js +54 -25
- package/dist-npm/utils/error.d.ts +0 -5
- package/dist-npm/utils/errors.d.ts +1 -1
- package/dist-npm/utils/errors.js +8 -4
- package/dist-npm/utils/format.d.ts +0 -12
- package/dist-npm/utils/keypress.d.ts +0 -6
- package/dist-npm/utils/keypress.js +12 -23
- package/dist-npm/utils/log.d.ts +0 -11
- package/dist-npm/utils/prompt-tmp.js +2 -2
- package/dist-npm/utils/prompt-two.js +2 -2
- package/dist-npm/utils/skeleton.d.ts +0 -3
- package/dist-npm/utils/skeleton.js +66 -22
- package/dist-npm/utils/stream.d.ts +0 -13
- package/dist-npm/utils/string.d.ts +0 -45
- package/dist-npm/utils/tree.d.ts +5 -34
- package/dist-npm/utils/variants.js +9 -9
- package/package.json +9 -5
|
@@ -15,26 +15,26 @@ export const LogLevels = {
|
|
|
15
15
|
verbose: Number.POSITIVE_INFINITY
|
|
16
16
|
};
|
|
17
17
|
export const LogTypes = {
|
|
18
|
-
|
|
18
|
+
|
|
19
19
|
silent: {
|
|
20
20
|
level: -1
|
|
21
21
|
},
|
|
22
|
-
|
|
22
|
+
|
|
23
23
|
fatal: {
|
|
24
24
|
level: LogLevels.fatal
|
|
25
25
|
},
|
|
26
26
|
error: {
|
|
27
27
|
level: LogLevels.error
|
|
28
28
|
},
|
|
29
|
-
|
|
29
|
+
|
|
30
30
|
warn: {
|
|
31
31
|
level: LogLevels.warn
|
|
32
32
|
},
|
|
33
|
-
|
|
33
|
+
|
|
34
34
|
log: {
|
|
35
35
|
level: LogLevels.log
|
|
36
36
|
},
|
|
37
|
-
|
|
37
|
+
|
|
38
38
|
info: {
|
|
39
39
|
level: LogLevels.info
|
|
40
40
|
},
|
|
@@ -53,15 +53,15 @@ export const LogTypes = {
|
|
|
53
53
|
box: {
|
|
54
54
|
level: LogLevels.info
|
|
55
55
|
},
|
|
56
|
-
|
|
56
|
+
|
|
57
57
|
debug: {
|
|
58
58
|
level: LogLevels.debug
|
|
59
59
|
},
|
|
60
|
-
|
|
60
|
+
|
|
61
61
|
trace: {
|
|
62
62
|
level: LogLevels.trace
|
|
63
63
|
},
|
|
64
|
-
|
|
64
|
+
|
|
65
65
|
verbose: {
|
|
66
66
|
level: LogLevels.verbose
|
|
67
67
|
}
|
|
@@ -1,9 +1,4 @@
|
|
|
1
1
|
import { Buffer } from "safe-buffer";
|
|
2
|
-
/**
|
|
3
|
-
* StringDecoder provides an interface for efficiently splitting a series of
|
|
4
|
-
* buffers into a series of JS strings without breaking apart multi-byte
|
|
5
|
-
* characters.
|
|
6
|
-
*/
|
|
7
2
|
export declare class StringDecoder {
|
|
8
3
|
encoding: BufferEncoding;
|
|
9
4
|
lastNeed: number;
|
|
@@ -14,16 +9,6 @@ export declare class StringDecoder {
|
|
|
14
9
|
endFn?: (buf?: Buffer) => string;
|
|
15
10
|
writeFn: (buf: Buffer) => string;
|
|
16
11
|
constructor(encoding?: BufferEncoding | string);
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
* @param buf - The buffer to write.
|
|
20
|
-
* @returns The decoded string.
|
|
21
|
-
*/
|
|
22
|
-
write(buf: Buffer): string;
|
|
23
|
-
/**
|
|
24
|
-
* Ends the decoding and returns any remaining characters.
|
|
25
|
-
* @param buf - Optional buffer to write before ending.
|
|
26
|
-
* @returns The final decoded string.
|
|
27
|
-
*/
|
|
28
|
-
end(buf?: Buffer): string;
|
|
12
|
+
write(buf: Buffer): string;
|
|
13
|
+
end(buf?: Buffer): string;
|
|
29
14
|
}
|
|
@@ -19,7 +19,9 @@ const isEncoding = Buffer.isEncoding || function(encoding) {
|
|
|
19
19
|
}
|
|
20
20
|
};
|
|
21
21
|
function _normalizeEncoding(enc) {
|
|
22
|
-
if (!enc)
|
|
22
|
+
if (!enc) {
|
|
23
|
+
return "utf8";
|
|
24
|
+
}
|
|
23
25
|
let retried = false;
|
|
24
26
|
let encoding = String(enc);
|
|
25
27
|
while (true) {
|
|
@@ -40,7 +42,9 @@ function _normalizeEncoding(enc) {
|
|
|
40
42
|
case "hex":
|
|
41
43
|
return encoding;
|
|
42
44
|
default:
|
|
43
|
-
if (retried)
|
|
45
|
+
if (retried) {
|
|
46
|
+
return void 0;
|
|
47
|
+
}
|
|
44
48
|
encoding = encoding.toLowerCase();
|
|
45
49
|
retried = true;
|
|
46
50
|
}
|
|
@@ -90,18 +94,17 @@ export class StringDecoder {
|
|
|
90
94
|
this.lastChar = Buffer.allocUnsafe(nb);
|
|
91
95
|
this.writeFn = this.write.bind(this);
|
|
92
96
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
*/
|
|
98
|
-
write(buf) {
|
|
99
|
-
if (buf.length === 0) return "";
|
|
97
|
+
write(buf) {
|
|
98
|
+
if (buf.length === 0) {
|
|
99
|
+
return "";
|
|
100
|
+
}
|
|
100
101
|
let r;
|
|
101
102
|
let i;
|
|
102
103
|
if (this.lastNeed) {
|
|
103
104
|
r = this.fillLast(buf);
|
|
104
|
-
if (r === void 0)
|
|
105
|
+
if (r === void 0) {
|
|
106
|
+
return "";
|
|
107
|
+
}
|
|
105
108
|
i = this.lastNeed;
|
|
106
109
|
this.lastNeed = 0;
|
|
107
110
|
} else {
|
|
@@ -125,7 +128,9 @@ export class StringDecoder {
|
|
|
125
128
|
function utf8FillLast(buf) {
|
|
126
129
|
const p = this.lastTotal - this.lastNeed;
|
|
127
130
|
const r = utf8CheckExtraBytes(this, buf, p);
|
|
128
|
-
if (r !== void 0)
|
|
131
|
+
if (r !== void 0) {
|
|
132
|
+
return r;
|
|
133
|
+
}
|
|
129
134
|
if (this.lastNeed <= buf.length) {
|
|
130
135
|
buf.copy(this.lastChar, p, 0, this.lastNeed);
|
|
131
136
|
return this.lastChar.toString(this.encoding, 0, this.lastTotal);
|
|
@@ -135,7 +140,9 @@ function utf8FillLast(buf) {
|
|
|
135
140
|
}
|
|
136
141
|
function utf8Text(buf, i) {
|
|
137
142
|
const total = utf8CheckIncomplete(this, buf, i);
|
|
138
|
-
if (!this.lastNeed)
|
|
143
|
+
if (!this.lastNeed) {
|
|
144
|
+
return buf.toString("utf8", i);
|
|
145
|
+
}
|
|
139
146
|
this.lastTotal = total;
|
|
140
147
|
const end = buf.length - (total - this.lastNeed);
|
|
141
148
|
buf.copy(this.lastChar, 0, end);
|
|
@@ -143,36 +150,56 @@ function utf8Text(buf, i) {
|
|
|
143
150
|
}
|
|
144
151
|
function utf8End(buf) {
|
|
145
152
|
const r = buf?.length ? this.write(buf) : "";
|
|
146
|
-
if (this.lastNeed)
|
|
153
|
+
if (this.lastNeed) {
|
|
154
|
+
return r + "\uFFFD";
|
|
155
|
+
}
|
|
147
156
|
return r;
|
|
148
157
|
}
|
|
149
158
|
function utf8CheckByte(byte) {
|
|
150
|
-
if (byte <= 127)
|
|
151
|
-
|
|
152
|
-
else if (byte >>
|
|
153
|
-
|
|
159
|
+
if (byte <= 127) {
|
|
160
|
+
return 0;
|
|
161
|
+
} else if (byte >> 5 === 6) {
|
|
162
|
+
return 2;
|
|
163
|
+
} else if (byte >> 4 === 14) {
|
|
164
|
+
return 3;
|
|
165
|
+
} else if (byte >> 3 === 30) {
|
|
166
|
+
return 4;
|
|
167
|
+
}
|
|
154
168
|
return byte >> 6 === 2 ? -1 : -2;
|
|
155
169
|
}
|
|
156
170
|
function utf8CheckIncomplete(self, buf, i) {
|
|
157
171
|
let j = buf.length - 1;
|
|
158
|
-
if (j < i)
|
|
172
|
+
if (j < i) {
|
|
173
|
+
return 0;
|
|
174
|
+
}
|
|
159
175
|
let nb = utf8CheckByte(buf[j]);
|
|
160
176
|
if (nb >= 0) {
|
|
161
|
-
if (nb > 0)
|
|
177
|
+
if (nb > 0) {
|
|
178
|
+
self.lastNeed = nb - 1;
|
|
179
|
+
}
|
|
162
180
|
return nb;
|
|
163
181
|
}
|
|
164
|
-
if (--j < i || nb === -2)
|
|
182
|
+
if (--j < i || nb === -2) {
|
|
183
|
+
return 0;
|
|
184
|
+
}
|
|
165
185
|
nb = utf8CheckByte(buf[j]);
|
|
166
186
|
if (nb >= 0) {
|
|
167
|
-
if (nb > 0)
|
|
187
|
+
if (nb > 0) {
|
|
188
|
+
self.lastNeed = nb - 2;
|
|
189
|
+
}
|
|
168
190
|
return nb;
|
|
169
191
|
}
|
|
170
|
-
if (--j < i || nb === -2)
|
|
192
|
+
if (--j < i || nb === -2) {
|
|
193
|
+
return 0;
|
|
194
|
+
}
|
|
171
195
|
nb = utf8CheckByte(buf[j]);
|
|
172
196
|
if (nb >= 0) {
|
|
173
197
|
if (nb > 0) {
|
|
174
|
-
if (nb === 2)
|
|
175
|
-
|
|
198
|
+
if (nb === 2) {
|
|
199
|
+
nb = 0;
|
|
200
|
+
} else {
|
|
201
|
+
self.lastNeed = nb - 3;
|
|
202
|
+
}
|
|
176
203
|
}
|
|
177
204
|
return nb;
|
|
178
205
|
}
|
|
@@ -226,7 +253,9 @@ function utf16End(buf) {
|
|
|
226
253
|
}
|
|
227
254
|
function base64Text(buf, i) {
|
|
228
255
|
const n = (buf.length - i) % 3;
|
|
229
|
-
if (n === 0)
|
|
256
|
+
if (n === 0) {
|
|
257
|
+
return buf.toString("base64", i);
|
|
258
|
+
}
|
|
230
259
|
this.lastNeed = 3 - n;
|
|
231
260
|
this.lastTotal = 3;
|
|
232
261
|
if (n === 1) {
|
|
@@ -1,6 +1 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Parses a stack trace string and normalizes its paths by removing the current working directory and the "file://" protocol.
|
|
3
|
-
* @param {string} stack - The stack trace string.
|
|
4
|
-
* @returns {string[]} An array of stack trace lines with normalized paths.
|
|
5
|
-
*/
|
|
6
1
|
export declare function parseStack(stack: string): string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const errorHandler: (error: Error) => never;
|
|
1
|
+
export declare const errorHandler: (error: Error, customMessage?: string) => never;
|
package/dist-npm/utils/errors.js
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
|
-
export const errorHandler = (error) => {
|
|
1
|
+
export const errorHandler = (error, customMessage) => {
|
|
2
2
|
const separator = "\u2500".repeat(71);
|
|
3
3
|
console.error("\u2502" + separator);
|
|
4
4
|
console.error("\u2502 AN ERROR OCCURRED:\n\u2502 ", error.message);
|
|
5
5
|
console.error("\u2502" + separator);
|
|
6
|
-
|
|
7
|
-
"\u2502
|
|
8
|
-
|
|
6
|
+
if (customMessage) {
|
|
7
|
+
console.error("\u2502 " + customMessage);
|
|
8
|
+
} else {
|
|
9
|
+
console.error(
|
|
10
|
+
"\u2502 If this issue is related to @reliverse/relinka itself, please\n\u2502 report the details at https://github.com/reliverse/prompts/issues"
|
|
11
|
+
);
|
|
12
|
+
}
|
|
9
13
|
console.error("\u2570" + separator);
|
|
10
14
|
process.exit(1);
|
|
11
15
|
};
|
|
@@ -1,14 +1,2 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Compiles a format string by replacing placeholders with appropriate position indices.
|
|
3
|
-
* Caches compiled formats for efficiency.
|
|
4
|
-
* @param {string} format - The format string containing the placeholders to replace.
|
|
5
|
-
* @returns {string} The compiled format string with placeholders replaced by positional indices.
|
|
6
|
-
*/
|
|
7
1
|
export declare function compileFormat(format: string): any;
|
|
8
|
-
/**
|
|
9
|
-
* Formats a string according to a custom format, using vsprintf for string formatting.
|
|
10
|
-
* @param {string} format - The custom format string.
|
|
11
|
-
* @param {any[]} argv - The arguments to format into the string.
|
|
12
|
-
* @returns {string} The formatted string.
|
|
13
|
-
*/
|
|
14
2
|
export declare function formatString(format: string, argv: any): string;
|
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
import type { Readable } from "stream";
|
|
2
2
|
import type { Keypress } from "../types/keypress.js";
|
|
3
|
-
/**
|
|
4
|
-
* Listen for keypress events on a given stream
|
|
5
|
-
* @param stream - The input stream (e.g., process.stdin)
|
|
6
|
-
* @param callback - The callback to execute on keypress
|
|
7
|
-
* @returns A function to remove the keypress listener
|
|
8
|
-
*/
|
|
9
3
|
declare const listenForKeys: {
|
|
10
4
|
(stream: Readable, callback: (key: Keypress) => void): (() => void);
|
|
11
5
|
parse: (s: string | Buffer, enc?: BufferEncoding) => Keypress | Keypress[];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { StringDecoder } from "./decoder.js";
|
|
2
2
|
const metaKeyCodeRe = /^(?:\u001b)([a-zA-Z0-9])$/;
|
|
3
3
|
const functionKeyCodeRe = (
|
|
4
|
-
|
|
4
|
+
|
|
5
5
|
/^(?:\u001b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/
|
|
6
6
|
);
|
|
7
7
|
const parse = (s, enc) => {
|
|
@@ -58,8 +58,7 @@ const parse = (s, enc) => {
|
|
|
58
58
|
key.shift = !!(modifier & 1);
|
|
59
59
|
key.code = code;
|
|
60
60
|
switch (code) {
|
|
61
|
-
|
|
62
|
-
case "OP":
|
|
61
|
+
case "OP":
|
|
63
62
|
key.name = "f1";
|
|
64
63
|
break;
|
|
65
64
|
case "OQ":
|
|
@@ -71,8 +70,7 @@ const parse = (s, enc) => {
|
|
|
71
70
|
case "OS":
|
|
72
71
|
key.name = "f4";
|
|
73
72
|
break;
|
|
74
|
-
|
|
75
|
-
case "[11~":
|
|
73
|
+
case "[11~":
|
|
76
74
|
key.name = "f1";
|
|
77
75
|
break;
|
|
78
76
|
case "[12~":
|
|
@@ -84,8 +82,7 @@ const parse = (s, enc) => {
|
|
|
84
82
|
case "[14~":
|
|
85
83
|
key.name = "f4";
|
|
86
84
|
break;
|
|
87
|
-
|
|
88
|
-
case "[[A":
|
|
85
|
+
case "[[A":
|
|
89
86
|
key.name = "f1";
|
|
90
87
|
break;
|
|
91
88
|
case "[[B":
|
|
@@ -100,8 +97,7 @@ const parse = (s, enc) => {
|
|
|
100
97
|
case "[[E":
|
|
101
98
|
key.name = "f5";
|
|
102
99
|
break;
|
|
103
|
-
|
|
104
|
-
case "[15~":
|
|
100
|
+
case "[15~":
|
|
105
101
|
key.name = "f5";
|
|
106
102
|
break;
|
|
107
103
|
case "[17~":
|
|
@@ -125,8 +121,7 @@ const parse = (s, enc) => {
|
|
|
125
121
|
case "[24~":
|
|
126
122
|
key.name = "f12";
|
|
127
123
|
break;
|
|
128
|
-
|
|
129
|
-
case "[A":
|
|
124
|
+
case "[A":
|
|
130
125
|
key.name = "up";
|
|
131
126
|
break;
|
|
132
127
|
case "[B":
|
|
@@ -147,8 +142,7 @@ const parse = (s, enc) => {
|
|
|
147
142
|
case "[H":
|
|
148
143
|
key.name = "home";
|
|
149
144
|
break;
|
|
150
|
-
|
|
151
|
-
case "OA":
|
|
145
|
+
case "OA":
|
|
152
146
|
key.name = "up";
|
|
153
147
|
break;
|
|
154
148
|
case "OB":
|
|
@@ -169,8 +163,7 @@ const parse = (s, enc) => {
|
|
|
169
163
|
case "OH":
|
|
170
164
|
key.name = "home";
|
|
171
165
|
break;
|
|
172
|
-
|
|
173
|
-
case "[1~":
|
|
166
|
+
case "[1~":
|
|
174
167
|
key.name = "home";
|
|
175
168
|
break;
|
|
176
169
|
case "[2~":
|
|
@@ -188,22 +181,19 @@ const parse = (s, enc) => {
|
|
|
188
181
|
case "[6~":
|
|
189
182
|
key.name = "pagedown";
|
|
190
183
|
break;
|
|
191
|
-
|
|
192
|
-
case "[[5~":
|
|
184
|
+
case "[[5~":
|
|
193
185
|
key.name = "pageup";
|
|
194
186
|
break;
|
|
195
187
|
case "[[6~":
|
|
196
188
|
key.name = "pagedown";
|
|
197
189
|
break;
|
|
198
|
-
|
|
199
|
-
case "[7~":
|
|
190
|
+
case "[7~":
|
|
200
191
|
key.name = "home";
|
|
201
192
|
break;
|
|
202
193
|
case "[8~":
|
|
203
194
|
key.name = "end";
|
|
204
195
|
break;
|
|
205
|
-
|
|
206
|
-
case "[a":
|
|
196
|
+
case "[a":
|
|
207
197
|
key.name = "up";
|
|
208
198
|
key.shift = true;
|
|
209
199
|
break;
|
|
@@ -291,8 +281,7 @@ const parse = (s, enc) => {
|
|
|
291
281
|
key.name = "end";
|
|
292
282
|
key.ctrl = true;
|
|
293
283
|
break;
|
|
294
|
-
|
|
295
|
-
case "[Z":
|
|
284
|
+
case "[Z":
|
|
296
285
|
key.name = "tab";
|
|
297
286
|
key.shift = true;
|
|
298
287
|
break;
|
package/dist-npm/utils/log.d.ts
CHANGED
|
@@ -1,13 +1,2 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Checks if the given argument is a simple JavaScript object.
|
|
3
|
-
* @param {any} obj - The object to test.
|
|
4
|
-
* @returns {boolean} `true` if the argument is a plain object, otherwise `false`.
|
|
5
|
-
*/
|
|
6
1
|
export declare function isPlainObject(obj: any): boolean;
|
|
7
|
-
/**
|
|
8
|
-
* Determines whether the given argument is a protocol object. A log object must be a simple object and
|
|
9
|
-
* must contain either a 'message' or 'args' field, but not a 'stack' field.
|
|
10
|
-
* @param {any} arg - The argument to check.
|
|
11
|
-
* @returns {boolean} `true` if the argument is a log object according to the specified criteria, otherwise `false`.
|
|
12
|
-
*/
|
|
13
2
|
export declare function isLogObj(arg: any): boolean;
|
|
@@ -26,13 +26,13 @@ function setRawMode(input, value) {
|
|
|
26
26
|
input.setRawMode(value);
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
const aliases =
|
|
29
|
+
const aliases = new Map([
|
|
30
30
|
["k", "up"],
|
|
31
31
|
["j", "down"],
|
|
32
32
|
["h", "left"],
|
|
33
33
|
["l", "right"]
|
|
34
34
|
]);
|
|
35
|
-
const keys =
|
|
35
|
+
const keys = new Set(["up", "down", "left", "right", "space", "enter"]);
|
|
36
36
|
export function createPrompt({
|
|
37
37
|
render: renderFn,
|
|
38
38
|
input = stdin,
|
|
@@ -26,13 +26,13 @@ function setRawMode(input, value) {
|
|
|
26
26
|
input.setRawMode(value);
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
const aliases =
|
|
29
|
+
const aliases = new Map([
|
|
30
30
|
["k", "up"],
|
|
31
31
|
["j", "down"],
|
|
32
32
|
["h", "left"],
|
|
33
33
|
["l", "right"]
|
|
34
34
|
]);
|
|
35
|
-
const keys =
|
|
35
|
+
const keys = new Set(["up", "down", "left", "right", "space", "enter"]);
|
|
36
36
|
export function createPrompt({
|
|
37
37
|
render: renderFn,
|
|
38
38
|
input = stdin,
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
import type { RangePrompt } from "../components/range/range.js";
|
|
2
2
|
import type { Keypress } from "../types/keypress.js";
|
|
3
|
-
/**
|
|
4
|
-
* Action mapping based on keypress
|
|
5
|
-
*/
|
|
6
3
|
export declare const action: (key: Keypress) => string | false;
|
|
7
4
|
declare const _default: ((p: RangePrompt) => Promise<number | null>) & {
|
|
8
5
|
action: (key: Keypress) => string | false;
|
|
@@ -5,24 +5,58 @@ import listenForKeys from "../utils/keypress.js";
|
|
|
5
5
|
export const action = (key) => {
|
|
6
6
|
const code = key.raw.charCodeAt(0);
|
|
7
7
|
if (key.ctrl) {
|
|
8
|
-
if (key.name === "a")
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
if (key.name === "
|
|
12
|
-
|
|
8
|
+
if (key.name === "a") {
|
|
9
|
+
return "first";
|
|
10
|
+
}
|
|
11
|
+
if (key.name === "c") {
|
|
12
|
+
return "abort";
|
|
13
|
+
}
|
|
14
|
+
if (key.name === "d") {
|
|
15
|
+
return "abort";
|
|
16
|
+
}
|
|
17
|
+
if (key.name === "e") {
|
|
18
|
+
return "last";
|
|
19
|
+
}
|
|
20
|
+
if (key.name === "g") {
|
|
21
|
+
return "reset";
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
if (key.name === "return") {
|
|
25
|
+
return "submit";
|
|
26
|
+
}
|
|
27
|
+
if (key.name === "enter") {
|
|
28
|
+
return "submit";
|
|
29
|
+
}
|
|
30
|
+
if (key.name === "backspace") {
|
|
31
|
+
return "delete";
|
|
32
|
+
}
|
|
33
|
+
if (key.name === "abort") {
|
|
34
|
+
return "abort";
|
|
35
|
+
}
|
|
36
|
+
if (key.name === "escape") {
|
|
37
|
+
return "abort";
|
|
38
|
+
}
|
|
39
|
+
if (key.name === "tab") {
|
|
40
|
+
return "next";
|
|
41
|
+
}
|
|
42
|
+
if (key.name === "up") {
|
|
43
|
+
return "up";
|
|
44
|
+
}
|
|
45
|
+
if (key.name === "down") {
|
|
46
|
+
return "down";
|
|
47
|
+
}
|
|
48
|
+
if (key.name === "right") {
|
|
49
|
+
return "right";
|
|
50
|
+
}
|
|
51
|
+
if (key.name === "left") {
|
|
52
|
+
return "left";
|
|
53
|
+
}
|
|
54
|
+
if (code === 8747) {
|
|
55
|
+
return "left";
|
|
56
|
+
}
|
|
57
|
+
if (code === 402) {
|
|
58
|
+
return "right";
|
|
13
59
|
}
|
|
14
|
-
if (key.name === "return") return "submit";
|
|
15
|
-
if (key.name === "enter") return "submit";
|
|
16
|
-
if (key.name === "backspace") return "delete";
|
|
17
|
-
if (key.name === "abort") return "abort";
|
|
18
|
-
if (key.name === "escape") return "abort";
|
|
19
|
-
if (key.name === "tab") return "next";
|
|
20
|
-
if (key.name === "up") return "up";
|
|
21
|
-
if (key.name === "down") return "down";
|
|
22
|
-
if (key.name === "right") return "right";
|
|
23
|
-
if (key.name === "left") return "left";
|
|
24
|
-
if (code === 8747) return "left";
|
|
25
|
-
if (code === 402) return "right";
|
|
26
60
|
return false;
|
|
27
61
|
};
|
|
28
62
|
const onResize = (stream, cb) => {
|
|
@@ -44,8 +78,12 @@ const wrap = (p) => {
|
|
|
44
78
|
}
|
|
45
79
|
const onKey = (key) => {
|
|
46
80
|
const a = action(key);
|
|
47
|
-
if (a === "abort")
|
|
48
|
-
|
|
81
|
+
if (a === "abort") {
|
|
82
|
+
return wrappedPrompt.close();
|
|
83
|
+
}
|
|
84
|
+
if (a === false) {
|
|
85
|
+
return wrappedPrompt._(key.raw);
|
|
86
|
+
}
|
|
49
87
|
if (typeof wrappedPrompt[a] === "function") {
|
|
50
88
|
wrappedPrompt[a](key);
|
|
51
89
|
} else {
|
|
@@ -60,7 +98,9 @@ const wrap = (p) => {
|
|
|
60
98
|
let offKeypress = null;
|
|
61
99
|
let offResize = null;
|
|
62
100
|
const pause = () => {
|
|
63
|
-
if (!offKeypress)
|
|
101
|
+
if (!offKeypress) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
64
104
|
offKeypress();
|
|
65
105
|
offKeypress = null;
|
|
66
106
|
if (offResize) {
|
|
@@ -70,7 +110,9 @@ const wrap = (p) => {
|
|
|
70
110
|
process.stdout.write(esc.cursorShow);
|
|
71
111
|
};
|
|
72
112
|
const resume = () => {
|
|
73
|
-
if (offKeypress)
|
|
113
|
+
if (offKeypress) {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
74
116
|
offKeypress = listenForKeys(process.stdin, onKey);
|
|
75
117
|
offResize = onResize(process.stdout, onNewSize);
|
|
76
118
|
process.stdout.write(esc.cursorHide);
|
|
@@ -80,7 +122,9 @@ const wrap = (p) => {
|
|
|
80
122
|
return new Promise((resolve, reject) => {
|
|
81
123
|
let isClosed = false;
|
|
82
124
|
wrappedPrompt.close = () => {
|
|
83
|
-
if (isClosed)
|
|
125
|
+
if (isClosed) {
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
84
128
|
isClosed = true;
|
|
85
129
|
wrappedPrompt.out.unpipe(process.stdout);
|
|
86
130
|
pause();
|
|
@@ -1,14 +1 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Writes data to a specified NodeJS writable stream. This function supports streams that have a custom
|
|
3
|
-
* `__write' method, and will fall back to the default `write' method if `__write' is not present.
|
|
4
|
-
*
|
|
5
|
-
* @param {any} data - The data to write to the stream. This can be a string, a buffer, or any data type
|
|
6
|
-
* supported by the stream's `write' or `__write' method.
|
|
7
|
-
* @param {NodeJS.WriteStream} stream - The writable stream to write the data to. This stream
|
|
8
|
-
* must implement the `write' method, and can optionally implement a custom `__write' method.
|
|
9
|
-
* @returns {boolean} `true` if the data has been completely processed by the write operation,
|
|
10
|
-
* indicating that further writes can be performed immediately. Returns `false` if the data is
|
|
11
|
-
* buffered by the stream, indicating that the `drain` event should be waited for before writing
|
|
12
|
-
* more data.
|
|
13
|
-
*/
|
|
14
1
|
export declare function writeStream(data: any, stream: NodeJS.WriteStream): any;
|
|
@@ -1,50 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Removes ANSI escape codes from a given string. This is particularly useful for
|
|
3
|
-
* processing text that contains formatting codes, such as colors or styles, so that the
|
|
4
|
-
* the raw text without any visual formatting.
|
|
5
|
-
*
|
|
6
|
-
* @param {string} text - The text string from which to strip the ANSI escape codes.
|
|
7
|
-
* @returns {string} The text without ANSI escape codes.
|
|
8
|
-
*/
|
|
9
1
|
export declare function stripAnsi(text: string): string;
|
|
10
|
-
/**
|
|
11
|
-
* Centers a string within a specified total width, padding it with spaces or another specified character.
|
|
12
|
-
* If the string is longer than the total width, it is returned as is.
|
|
13
|
-
*
|
|
14
|
-
* @param {string} str - The string to centre.
|
|
15
|
-
* @param {number} len - The total width in which to centre the string.
|
|
16
|
-
* @param {string} [space=" "] - The character to use for padding. Defaults to a space.
|
|
17
|
-
* @returns {string} The centred string.
|
|
18
|
-
*/
|
|
19
2
|
export declare function centerAlign(str: string, len: number, space?: string): string;
|
|
20
|
-
/**
|
|
21
|
-
* Right-justifies a string within a given total width, padding it with whitespace or another specified character.
|
|
22
|
-
* If the string is longer than the total width, it is returned as is.
|
|
23
|
-
*
|
|
24
|
-
* @param {string} str - The string to right-justify.
|
|
25
|
-
* @param {number} len - The total width to align the string.
|
|
26
|
-
* @param {string} [space=" "] - The character to use for padding. Defaults to a space.
|
|
27
|
-
* @returns {string} The right-justified string.
|
|
28
|
-
*/
|
|
29
3
|
export declare function rightAlign(str: string, len: number, space?: string): string;
|
|
30
|
-
/**
|
|
31
|
-
* Left-aligns a string within a given total width, padding it with whitespace or another specified character on the right.
|
|
32
|
-
* If the string is longer than the total width, it is returned as is.
|
|
33
|
-
*
|
|
34
|
-
* @param {string} str - The string to align left.
|
|
35
|
-
* @param {number} len - The total width to align the string.
|
|
36
|
-
* @param {string} [space=" "] - The character to use for padding. Defaults to a space.
|
|
37
|
-
* @returns {string} The left-justified string.
|
|
38
|
-
*/
|
|
39
4
|
export declare function leftAlign(str: string, len: number, space?: string): string;
|
|
40
|
-
/**
|
|
41
|
-
* Aligns a string (left, right, or centre) within a given total width, padding it with spaces or another specified character.
|
|
42
|
-
* If the string is longer than the total width, it is returned as is. This function acts as a wrapper for individual alignment functions.
|
|
43
|
-
*
|
|
44
|
-
* @param {"left" | "right" | "centre"} alignment - The desired alignment of the string.
|
|
45
|
-
* @param {string} str - The string to align.
|
|
46
|
-
* @param {number} len - The total width in which to align the string.
|
|
47
|
-
* @param {string} [space=" "] - The character to use for padding. Defaults to a space.
|
|
48
|
-
* @returns {string} The aligned string, according to the given alignment.
|
|
49
|
-
*/
|
|
50
5
|
export declare function align(alignment: "left" | "right" | "center", str: string, len: number, space?: string): string;
|