@reliverse/relinka 1.1.7 → 1.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/dist-npm/components/anykey/index.js +57 -77
  2. package/dist-npm/components/block/block.js +48 -61
  3. package/dist-npm/components/checkbox/index.js +178 -211
  4. package/dist-npm/components/confirm/confirm-main.js +85 -122
  5. package/dist-npm/components/confirm/confirm-three.js +24 -27
  6. package/dist-npm/components/confirm/index.js +36 -45
  7. package/dist-npm/components/core/Separator.js +15 -17
  8. package/dist-npm/components/core/create-prompt.js +101 -124
  9. package/dist-npm/components/core/errors.js +19 -15
  10. package/dist-npm/components/core/hook-engine.js +91 -120
  11. package/dist-npm/components/core/index.js +12 -12
  12. package/dist-npm/components/core/key.js +16 -6
  13. package/dist-npm/components/core/lines.js +45 -54
  14. package/dist-npm/components/core/make-theme.js +21 -30
  15. package/dist-npm/components/core/position.js +27 -23
  16. package/dist-npm/components/core/promise-polyfill.js +11 -14
  17. package/dist-npm/components/core/screen-manager.js +59 -74
  18. package/dist-npm/components/core/theme.js +22 -32
  19. package/dist-npm/components/core/use-effect.js +9 -15
  20. package/dist-npm/components/core/use-keypress.js +19 -23
  21. package/dist-npm/components/core/use-memo.js +10 -16
  22. package/dist-npm/components/core/use-pagination.js +33 -32
  23. package/dist-npm/components/core/use-prefix.js +40 -38
  24. package/dist-npm/components/core/use-ref.js +2 -5
  25. package/dist-npm/components/core/use-state.js +15 -23
  26. package/dist-npm/components/core/useKeyPress.js +14 -17
  27. package/dist-npm/components/core/usePromptState.js +8 -14
  28. package/dist-npm/components/core/utils.js +7 -16
  29. package/dist-npm/components/date/date.js +173 -204
  30. package/dist-npm/components/editor/index.js +71 -92
  31. package/dist-npm/components/expand/index.js +96 -124
  32. package/dist-npm/components/figures/index.js +283 -294
  33. package/dist-npm/components/input/index.js +61 -87
  34. package/dist-npm/components/input/text-main.js +97 -124
  35. package/dist-npm/components/input/text.js +24 -28
  36. package/dist-npm/components/instance/basic.js +17 -25
  37. package/dist-npm/components/instance/browser.js +14 -18
  38. package/dist-npm/components/instance/reporter/basic.js +46 -65
  39. package/dist-npm/components/instance/reporter/browser.js +44 -47
  40. package/dist-npm/components/instance/reporter/fancy.js +83 -96
  41. package/dist-npm/components/instance/shared.js +2 -2
  42. package/dist-npm/components/mono/mono.js +52 -62
  43. package/dist-npm/components/mono/monoTwo.js +35 -49
  44. package/dist-npm/components/multiselect/group-multiselect.js +55 -71
  45. package/dist-npm/components/multiselect/multi-select-two.js +97 -130
  46. package/dist-npm/components/multiselect/multi-select.js +43 -49
  47. package/dist-npm/components/multiselect/multiselect-main.d.ts +1 -0
  48. package/dist-npm/components/multiselect/multiselect-main.js +158 -145
  49. package/dist-npm/components/multiselect/num-multi-select.js +97 -130
  50. package/dist-npm/components/multiselect/num-multiselect-main.js +24 -35
  51. package/dist-npm/components/next-steps/next-steps.js +23 -25
  52. package/dist-npm/components/number/index.js +78 -112
  53. package/dist-npm/components/number/number-main.js +95 -2
  54. package/dist-npm/components/password/index.js +54 -73
  55. package/dist-npm/components/password/password-main.js +119 -2
  56. package/dist-npm/components/password/password-three.js +26 -30
  57. package/dist-npm/components/progressbar/ProgressBar.js +45 -64
  58. package/dist-npm/components/progressbar/helper.js +33 -40
  59. package/dist-npm/components/progressbar/index.js +1 -1
  60. package/dist-npm/components/prompts/create.js +29 -44
  61. package/dist-npm/components/prompts/index.d.ts +1 -0
  62. package/dist-npm/components/prompts/index.js +46 -45
  63. package/dist-npm/components/prompts/prompt.js +211 -260
  64. package/dist-npm/components/prompts/promptTwo.js +561 -605
  65. package/dist-npm/components/prompts/relinka.js +237 -295
  66. package/dist-npm/components/range/range.js +247 -294
  67. package/dist-npm/components/rawlist/index.js +87 -107
  68. package/dist-npm/components/results/results.js +31 -37
  69. package/dist-npm/components/search/index.js +148 -193
  70. package/dist-npm/components/select/index.js +148 -186
  71. package/dist-npm/components/select/num-select-main.js +27 -27
  72. package/dist-npm/components/select/num-select.js +124 -5
  73. package/dist-npm/components/select/select-key.js +24 -25
  74. package/dist-npm/components/select/select-main.d.ts +1 -0
  75. package/dist-npm/components/select/select-main.js +143 -133
  76. package/dist-npm/components/select/select-three.js +32 -36
  77. package/dist-npm/components/select/select-two.js +94 -87
  78. package/dist-npm/components/spinner/index.js +107 -136
  79. package/dist-npm/components/st-end/end.js +34 -26
  80. package/dist-npm/components/st-end/start.js +29 -15
  81. package/dist-npm/components/toggle/index.js +113 -137
  82. package/dist-npm/components/visual/animate/animate.js +53 -10
  83. package/dist-npm/components/visual/ascii-art/ascii-art.js +12 -1
  84. package/dist-npm/main.js +1 -0
  85. package/dist-npm/testing/index.js +58 -83
  86. package/dist-npm/types/general.d.ts +1 -1
  87. package/dist-npm/types/general.js +0 -1
  88. package/dist-npm/types/index.js +2 -3
  89. package/dist-npm/types/keypress.js +35 -36
  90. package/dist-npm/types/readline.js +0 -1
  91. package/dist-npm/types/relinka.js +0 -1
  92. package/dist-npm/types/utils.js +0 -1
  93. package/dist-npm/utils/box.js +135 -137
  94. package/dist-npm/utils/color.js +65 -74
  95. package/dist-npm/utils/colorize.js +124 -156
  96. package/dist-npm/utils/component.js +532 -657
  97. package/dist-npm/utils/constants.js +64 -63
  98. package/dist-npm/utils/core.js +2 -3
  99. package/dist-npm/utils/decoder.js +244 -223
  100. package/dist-npm/utils/error.js +4 -9
  101. package/dist-npm/utils/errors.js +14 -4
  102. package/dist-npm/utils/format.js +19 -24
  103. package/dist-npm/utils/keypress.js +316 -414
  104. package/dist-npm/utils/log.js +11 -15
  105. package/dist-npm/utils/mapping.js +45 -52
  106. package/dist-npm/utils/messages.js +196 -183
  107. package/dist-npm/utils/platforms.js +16 -20
  108. package/dist-npm/utils/prompt-tmp.js +235 -286
  109. package/dist-npm/utils/prompt-two.js +235 -286
  110. package/dist-npm/utils/readline.js +5 -7
  111. package/dist-npm/utils/skeleton.js +130 -170
  112. package/dist-npm/utils/stream.js +2 -2
  113. package/dist-npm/utils/string.js +44 -58
  114. package/dist-npm/utils/terminal.js +23 -34
  115. package/dist-npm/utils/tree.js +30 -41
  116. package/dist-npm/utils/types.js +0 -1
  117. package/dist-npm/utils/utils.js +8 -8
  118. package/dist-npm/utils/variants.js +36 -44
  119. package/package.json +14 -14
  120. package/dist-npm/mod.js +0 -2
  121. /package/dist-npm/{mod.d.ts → main.d.ts} +0 -0
@@ -1,425 +1,327 @@
1
- import {StringDecoder} from './decoder.js';
2
-
3
- const isFn = (a) => typeof a === 'function';
4
- const isBool = (a) => typeof a === 'boolean';
5
- const isString = (a) => typeof a === 'string';
6
- const metaKeyCodeRe = /^\u001b([\dA-Za-z])$/;
7
-
8
- const functionKeyCodeRe = /^\u001b+(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([$^~])|(?:1;)?(\d+)?([A-Za-z]))/;
9
-
1
+ import { StringDecoder } from "./decoder.js";
2
+ const metaKeyCodeRe = /^(?:\u001b)([a-zA-Z0-9])$/;
3
+ const functionKeyCodeRe = (
4
+
5
+ /^(?:\u001b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/
6
+ );
10
7
  const parse = (s, enc) => {
11
- let parts;
12
- const key = {
13
- name: void 0,
14
- ctrl: false,
15
- meta: false,
16
- shift: false,
17
- sequence: s.toString(enc || 'utf-8'),
18
- raw: '',
19
- };
20
-
21
- if (Buffer.isBuffer(s)) {
22
- if (s[0] > 127 && s[1] === void 0) {
23
- s[0] -= 128;
24
- s = Buffer.from('\x1B' + s.toString(enc || 'utf-8'));
25
- } else {
26
- s = s.toString(enc || 'utf-8');
27
- }
8
+ let parts;
9
+ const key = {
10
+ name: void 0,
11
+ ctrl: false,
12
+ meta: false,
13
+ shift: false,
14
+ sequence: s.toString(enc || "utf-8"),
15
+ raw: ""
16
+ };
17
+ if (Buffer.isBuffer(s)) {
18
+ if (s[0] > 127 && s[1] === void 0) {
19
+ s[0] -= 128;
20
+ s = Buffer.from("\x1B" + s.toString(enc || "utf-8"));
21
+ } else {
22
+ s = s.toString(enc || "utf-8");
28
23
  }
29
-
30
- const input = isString(s) ? s : s.toString(enc || 'utf-8');
31
-
32
- if (input === '\r') {
33
- key.name = 'return';
34
- } else if (input === '\n') {
35
- key.name = 'enter';
36
- } else if (input === ' ') {
37
- key.name = 'tab';
38
- } else if (input === '\b' || input === '\x7F' || input === '\x1B\x7F' || input === '\x1B\b') {
39
- key.name = 'backspace';
40
- key.meta = input.startsWith('\x1B');
41
- } else if (input === '\x1B' || input === '\x1B\x1B') {
42
- key.name = 'escape';
43
- key.meta = input.length === 2;
44
- } else if (input === ' ' || input === '\x1B ') {
45
- key.name = 'space';
46
- key.meta = input.length === 2;
47
- } else if (input <= '') {
48
- key.name = String.fromCharCode(input.charCodeAt(0) + 'a'.charCodeAt(0) - 1);
24
+ }
25
+ const input = typeof s === "string" ? s : s.toString(enc || "utf-8");
26
+ if (input === "\r") {
27
+ key.name = "return";
28
+ } else if (input === "\n") {
29
+ key.name = "enter";
30
+ } else if (input === " ") {
31
+ key.name = "tab";
32
+ } else if (input === "\b" || input === "\x7F" || input === "\x1B\x7F" || input === "\x1B\b") {
33
+ key.name = "backspace";
34
+ key.meta = input.startsWith("\x1B");
35
+ } else if (input === "\x1B" || input === "\x1B\x1B") {
36
+ key.name = "escape";
37
+ key.meta = input.length === 2;
38
+ } else if (input === " " || input === "\x1B ") {
39
+ key.name = "space";
40
+ key.meta = input.length === 2;
41
+ } else if (input <= "") {
42
+ key.name = String.fromCharCode(input.charCodeAt(0) + "a".charCodeAt(0) - 1);
43
+ key.ctrl = true;
44
+ } else if (input.length === 1 && input >= "a" && input <= "z") {
45
+ key.name = input;
46
+ } else if (input.length === 1 && input >= "A" && input <= "Z") {
47
+ key.name = input.toLowerCase();
48
+ key.shift = true;
49
+ } else if (parts = metaKeyCodeRe.exec(input)) {
50
+ key.name = parts[1].toLowerCase();
51
+ key.meta = true;
52
+ key.shift = /^[A-Z]$/.test(parts[1]);
53
+ } else if (parts = functionKeyCodeRe.exec(input)) {
54
+ const code = (parts[1] || "") + (parts[2] || "") + (parts[4] || "") + (parts[6] || "");
55
+ const modifier = parseInt(parts[3] || parts[5] || "1", 10) - 1 || 0;
56
+ key.ctrl = !!(modifier & 4);
57
+ key.meta = !!(modifier & 10);
58
+ key.shift = !!(modifier & 1);
59
+ key.code = code;
60
+ switch (code) {
61
+ case "OP":
62
+ key.name = "f1";
63
+ break;
64
+ case "OQ":
65
+ key.name = "f2";
66
+ break;
67
+ case "OR":
68
+ key.name = "f3";
69
+ break;
70
+ case "OS":
71
+ key.name = "f4";
72
+ break;
73
+ case "[11~":
74
+ key.name = "f1";
75
+ break;
76
+ case "[12~":
77
+ key.name = "f2";
78
+ break;
79
+ case "[13~":
80
+ key.name = "f3";
81
+ break;
82
+ case "[14~":
83
+ key.name = "f4";
84
+ break;
85
+ case "[[A":
86
+ key.name = "f1";
87
+ break;
88
+ case "[[B":
89
+ key.name = "f2";
90
+ break;
91
+ case "[[C":
92
+ key.name = "f3";
93
+ break;
94
+ case "[[D":
95
+ key.name = "f4";
96
+ break;
97
+ case "[[E":
98
+ key.name = "f5";
99
+ break;
100
+ case "[15~":
101
+ key.name = "f5";
102
+ break;
103
+ case "[17~":
104
+ key.name = "f6";
105
+ break;
106
+ case "[18~":
107
+ key.name = "f7";
108
+ break;
109
+ case "[19~":
110
+ key.name = "f8";
111
+ break;
112
+ case "[20~":
113
+ key.name = "f9";
114
+ break;
115
+ case "[21~":
116
+ key.name = "f10";
117
+ break;
118
+ case "[23~":
119
+ key.name = "f11";
120
+ break;
121
+ case "[24~":
122
+ key.name = "f12";
123
+ break;
124
+ case "[A":
125
+ key.name = "up";
126
+ break;
127
+ case "[B":
128
+ key.name = "down";
129
+ break;
130
+ case "[C":
131
+ key.name = "right";
132
+ break;
133
+ case "[D":
134
+ key.name = "left";
135
+ break;
136
+ case "[E":
137
+ key.name = "clear";
138
+ break;
139
+ case "[F":
140
+ key.name = "end";
141
+ break;
142
+ case "[H":
143
+ key.name = "home";
144
+ break;
145
+ case "OA":
146
+ key.name = "up";
147
+ break;
148
+ case "OB":
149
+ key.name = "down";
150
+ break;
151
+ case "OC":
152
+ key.name = "right";
153
+ break;
154
+ case "OD":
155
+ key.name = "left";
156
+ break;
157
+ case "OE":
158
+ key.name = "clear";
159
+ break;
160
+ case "OF":
161
+ key.name = "end";
162
+ break;
163
+ case "OH":
164
+ key.name = "home";
165
+ break;
166
+ case "[1~":
167
+ key.name = "home";
168
+ break;
169
+ case "[2~":
170
+ key.name = "insert";
171
+ break;
172
+ case "[3~":
173
+ key.name = "delete";
174
+ break;
175
+ case "[4~":
176
+ key.name = "end";
177
+ break;
178
+ case "[5~":
179
+ key.name = "pageup";
180
+ break;
181
+ case "[6~":
182
+ key.name = "pagedown";
183
+ break;
184
+ case "[[5~":
185
+ key.name = "pageup";
186
+ break;
187
+ case "[[6~":
188
+ key.name = "pagedown";
189
+ break;
190
+ case "[7~":
191
+ key.name = "home";
192
+ break;
193
+ case "[8~":
194
+ key.name = "end";
195
+ break;
196
+ case "[a":
197
+ key.name = "up";
198
+ key.shift = true;
199
+ break;
200
+ case "[b":
201
+ key.name = "down";
202
+ key.shift = true;
203
+ break;
204
+ case "[c":
205
+ key.name = "right";
206
+ key.shift = true;
207
+ break;
208
+ case "[d":
209
+ key.name = "left";
210
+ key.shift = true;
211
+ break;
212
+ case "[e":
213
+ key.name = "clear";
214
+ key.shift = true;
215
+ break;
216
+ case "[2$":
217
+ key.name = "insert";
218
+ key.shift = true;
219
+ break;
220
+ case "[3$":
221
+ key.name = "delete";
222
+ key.shift = true;
223
+ break;
224
+ case "[5$":
225
+ key.name = "pageup";
226
+ key.shift = true;
227
+ break;
228
+ case "[6$":
229
+ key.name = "pagedown";
230
+ key.shift = true;
231
+ break;
232
+ case "[7$":
233
+ key.name = "home";
234
+ key.shift = true;
235
+ break;
236
+ case "[8$":
237
+ key.name = "end";
238
+ key.shift = true;
239
+ break;
240
+ case "Oa":
241
+ key.name = "up";
49
242
  key.ctrl = true;
50
- } else if (input.length === 1 && input >= 'a' && input <= 'z') {
51
- key.name = input;
52
- } else if (input.length === 1 && input >= 'A' && input <= 'Z') {
53
- key.name = input.toLowerCase();
243
+ break;
244
+ case "Ob":
245
+ key.name = "down";
246
+ key.ctrl = true;
247
+ break;
248
+ case "Oc":
249
+ key.name = "right";
250
+ key.ctrl = true;
251
+ break;
252
+ case "Od":
253
+ key.name = "left";
254
+ key.ctrl = true;
255
+ break;
256
+ case "Oe":
257
+ key.name = "clear";
258
+ key.ctrl = true;
259
+ break;
260
+ case "[2^":
261
+ key.name = "insert";
262
+ key.ctrl = true;
263
+ break;
264
+ case "[3^":
265
+ key.name = "delete";
266
+ key.ctrl = true;
267
+ break;
268
+ case "[5^":
269
+ key.name = "pageup";
270
+ key.ctrl = true;
271
+ break;
272
+ case "[6^":
273
+ key.name = "pagedown";
274
+ key.ctrl = true;
275
+ break;
276
+ case "[7^":
277
+ key.name = "home";
278
+ key.ctrl = true;
279
+ break;
280
+ case "[8^":
281
+ key.name = "end";
282
+ key.ctrl = true;
283
+ break;
284
+ case "[Z":
285
+ key.name = "tab";
54
286
  key.shift = true;
55
- } else if (parts = metaKeyCodeRe.exec(input)) {
56
- key.name = parts[1].toLowerCase();
57
- key.meta = true;
58
- key.shift = /^[A-Z]$/.test(parts[1]);
59
- } else if (parts = functionKeyCodeRe.exec(input)) {
60
- const code = (parts[1] || '') + (parts[2] || '') + (parts[4] || '') + (parts[6] || '');
61
- const modifier = parseInt(parts[3] || parts[5] || '1', 10) - 1 || 0;
62
-
63
- key.ctrl = !!(modifier & 4);
64
- key.meta = !!(modifier & 10);
65
- key.shift = !!(modifier & 1);
66
- key.code = code;
67
- switch(code) {
68
- case 'OP':
69
- key.name = 'f1';
70
- break;
71
-
72
- case 'OQ':
73
- key.name = 'f2';
74
- break;
75
-
76
- case 'OR':
77
- key.name = 'f3';
78
- break;
79
-
80
- case 'OS':
81
- key.name = 'f4';
82
- break;
83
-
84
- case '[11~':
85
- key.name = 'f1';
86
- break;
87
-
88
- case '[12~':
89
- key.name = 'f2';
90
- break;
91
-
92
- case '[13~':
93
- key.name = 'f3';
94
- break;
95
-
96
- case '[14~':
97
- key.name = 'f4';
98
- break;
99
-
100
- case '[[A':
101
- key.name = 'f1';
102
- break;
103
-
104
- case '[[B':
105
- key.name = 'f2';
106
- break;
107
-
108
- case '[[C':
109
- key.name = 'f3';
110
- break;
111
-
112
- case '[[D':
113
- key.name = 'f4';
114
- break;
115
-
116
- case '[[E':
117
- key.name = 'f5';
118
- break;
119
-
120
- case '[15~':
121
- key.name = 'f5';
122
- break;
123
-
124
- case '[17~':
125
- key.name = 'f6';
126
- break;
127
-
128
- case '[18~':
129
- key.name = 'f7';
130
- break;
131
-
132
- case '[19~':
133
- key.name = 'f8';
134
- break;
135
-
136
- case '[20~':
137
- key.name = 'f9';
138
- break;
139
-
140
- case '[21~':
141
- key.name = 'f10';
142
- break;
143
-
144
- case '[23~':
145
- key.name = 'f11';
146
- break;
147
-
148
- case '[24~':
149
- key.name = 'f12';
150
- break;
151
-
152
- case '[A':
153
- key.name = 'up';
154
- break;
155
-
156
- case '[B':
157
- key.name = 'down';
158
- break;
159
-
160
- case '[C':
161
- key.name = 'right';
162
- break;
163
-
164
- case '[D':
165
- key.name = 'left';
166
- break;
167
-
168
- case '[E':
169
- key.name = 'clear';
170
- break;
171
-
172
- case '[F':
173
- key.name = 'end';
174
- break;
175
-
176
- case '[H':
177
- key.name = 'home';
178
- break;
179
-
180
- case 'OA':
181
- key.name = 'up';
182
- break;
183
-
184
- case 'OB':
185
- key.name = 'down';
186
- break;
187
-
188
- case 'OC':
189
- key.name = 'right';
190
- break;
191
-
192
- case 'OD':
193
- key.name = 'left';
194
- break;
195
-
196
- case 'OE':
197
- key.name = 'clear';
198
- break;
199
-
200
- case 'OF':
201
- key.name = 'end';
202
- break;
203
-
204
- case 'OH':
205
- key.name = 'home';
206
- break;
207
-
208
- case '[1~':
209
- key.name = 'home';
210
- break;
211
-
212
- case '[2~':
213
- key.name = 'insert';
214
- break;
215
-
216
- case '[3~':
217
- key.name = 'delete';
218
- break;
219
-
220
- case '[4~':
221
- key.name = 'end';
222
- break;
223
-
224
- case '[5~':
225
- key.name = 'pageup';
226
- break;
227
-
228
- case '[6~':
229
- key.name = 'pagedown';
230
- break;
231
-
232
- case '[[5~':
233
- key.name = 'pageup';
234
- break;
235
-
236
- case '[[6~':
237
- key.name = 'pagedown';
238
- break;
239
-
240
- case '[7~':
241
- key.name = 'home';
242
- break;
243
-
244
- case '[8~':
245
- key.name = 'end';
246
- break;
247
-
248
- case '[a':
249
- key.name = 'up';
250
- key.shift = true;
251
- break;
252
-
253
- case '[b':
254
- key.name = 'down';
255
- key.shift = true;
256
- break;
257
-
258
- case '[c':
259
- key.name = 'right';
260
- key.shift = true;
261
- break;
262
-
263
- case '[d':
264
- key.name = 'left';
265
- key.shift = true;
266
- break;
267
-
268
- case '[e':
269
- key.name = 'clear';
270
- key.shift = true;
271
- break;
272
-
273
- case '[2$':
274
- key.name = 'insert';
275
- key.shift = true;
276
- break;
277
-
278
- case '[3$':
279
- key.name = 'delete';
280
- key.shift = true;
281
- break;
282
-
283
- case '[5$':
284
- key.name = 'pageup';
285
- key.shift = true;
286
- break;
287
-
288
- case '[6$':
289
- key.name = 'pagedown';
290
- key.shift = true;
291
- break;
292
-
293
- case '[7$':
294
- key.name = 'home';
295
- key.shift = true;
296
- break;
297
-
298
- case '[8$':
299
- key.name = 'end';
300
- key.shift = true;
301
- break;
302
-
303
- case 'Oa':
304
- key.name = 'up';
305
- key.ctrl = true;
306
- break;
307
-
308
- case 'Ob':
309
- key.name = 'down';
310
- key.ctrl = true;
311
- break;
312
-
313
- case 'Oc':
314
- key.name = 'right';
315
- key.ctrl = true;
316
- break;
317
-
318
- case 'Od':
319
- key.name = 'left';
320
- key.ctrl = true;
321
- break;
322
-
323
- case 'Oe':
324
- key.name = 'clear';
325
- key.ctrl = true;
326
- break;
327
-
328
- case '[2^':
329
- key.name = 'insert';
330
- key.ctrl = true;
331
- break;
332
-
333
- case '[3^':
334
- key.name = 'delete';
335
- key.ctrl = true;
336
- break;
337
-
338
- case '[5^':
339
- key.name = 'pageup';
340
- key.ctrl = true;
341
- break;
342
-
343
- case '[6^':
344
- key.name = 'pagedown';
345
- key.ctrl = true;
346
- break;
347
-
348
- case '[7^':
349
- key.name = 'home';
350
- key.ctrl = true;
351
- break;
352
-
353
- case '[8^':
354
- key.name = 'end';
355
- key.ctrl = true;
356
- break;
357
-
358
- case '[Z':
359
- key.name = 'tab';
360
- key.shift = true;
361
- break;
362
-
363
- default:
364
- key.name = 'undefined';
365
- break;
366
- }
367
- } else if (input.length > 1 && !input.startsWith('\x1B')) {
368
- return Array
369
- .from(input)
370
- .flatMap((c) => parse(c, enc));
287
+ break;
288
+ default:
289
+ key.name = "undefined";
290
+ break;
371
291
  }
372
-
373
-
374
-
375
-
376
-
377
-
378
-
379
-
380
-
381
-
382
-
383
- key.raw = input;
384
- return key;
292
+ } else if (input.length > 1 && !input.startsWith("\x1B")) {
293
+ return Array.from(input).map((c) => parse(c, enc)).flat();
294
+ }
295
+ key.raw = input;
296
+ return key;
385
297
  };
386
-
387
298
  const listenForKeys = (stream, callback) => {
388
- if (!stream || !isBool(stream.isRaw)) {
389
- throw Error('Invalid stream passed.');
390
- }
391
-
392
- if (!isFn(callback)) {
393
- throw Error('Invalid callback passed.');
299
+ if (!stream || typeof stream.isRaw !== "boolean") {
300
+ throw new Error("Invalid stream passed.");
301
+ }
302
+ if (typeof callback !== "function") {
303
+ throw new Error("Invalid callback passed.");
304
+ }
305
+ const decoder = new StringDecoder("utf8");
306
+ const onData = (raw) => {
307
+ const data = decoder.write(raw);
308
+ const keys = parse(data, "utf8");
309
+ if (Array.isArray(keys)) {
310
+ keys.forEach((key) => callback(key));
311
+ } else {
312
+ callback(keys);
394
313
  }
395
-
396
- const decoder = new StringDecoder('utf8');
397
-
398
- const onData = (raw) => {
399
- const data = decoder.write(raw);
400
- const keys = parse(data, 'utf8');
401
-
402
- if (Array.isArray(keys)) {
403
- for (const key of keys)
404
- callback(key);
405
- } else {
406
- callback(keys);
407
- }
408
- };
409
-
410
- const oldRawMode = stream.isRaw;
411
-
412
- stream.setRawMode(true);
413
- stream.on('data', onData);
414
- stream.resume();
415
- const stopListening = () => {
416
- stream.setRawMode(oldRawMode);
417
- stream.pause();
418
- stream.removeListener('data', onData);
419
- };
420
-
421
- return stopListening;
314
+ };
315
+ const oldRawMode = stream.isRaw;
316
+ stream.setRawMode(true);
317
+ stream.on("data", onData);
318
+ stream.resume();
319
+ const stopListening = () => {
320
+ stream.setRawMode(oldRawMode);
321
+ stream.pause();
322
+ stream.removeListener("data", onData);
323
+ };
324
+ return stopListening;
422
325
  };
423
-
424
326
  listenForKeys.parse = parse;
425
327
  export default listenForKeys;