mepcli 1.3.2 → 2.0.0-beta.1

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 (291) hide show
  1. package/README.md +11 -2
  2. package/dist/{ansi.js → src/ansi.js} +17 -9
  3. package/dist/src/ansi.js.map +1 -0
  4. package/dist/{base.js → src/base.js} +82 -70
  5. package/dist/src/base.js.map +1 -0
  6. package/dist/{core.js → src/core.js} +266 -320
  7. package/dist/src/core.js.map +1 -0
  8. package/dist/src/data/countries.js +569 -0
  9. package/dist/src/data/countries.js.map +1 -0
  10. package/dist/src/data/licenses.js +480 -0
  11. package/dist/src/data/licenses.js.map +1 -0
  12. package/dist/{highlight.js → src/highlight.js} +77 -69
  13. package/dist/src/highlight.js.map +1 -0
  14. package/dist/src/index.js +66 -0
  15. package/dist/src/index.js.map +1 -0
  16. package/dist/{input.js → src/input.js} +47 -41
  17. package/dist/src/input.js.map +1 -0
  18. package/dist/src/pipeline.js +273 -0
  19. package/dist/src/pipeline.js.map +1 -0
  20. package/dist/{prompts → src/prompts}/autocomplete.js +58 -57
  21. package/dist/src/prompts/autocomplete.js.map +1 -0
  22. package/dist/{prompts → src/prompts}/box.js +86 -53
  23. package/dist/src/prompts/box.js.map +1 -0
  24. package/dist/{prompts → src/prompts}/breadcrumb-search.js +110 -98
  25. package/dist/src/prompts/breadcrumb-search.js.map +1 -0
  26. package/dist/{prompts → src/prompts}/breadcrumb.js +126 -121
  27. package/dist/src/prompts/breadcrumb.js.map +1 -0
  28. package/dist/{prompts → src/prompts}/byte.js +69 -52
  29. package/dist/src/prompts/byte.js.map +1 -0
  30. package/dist/{prompts → src/prompts}/calculator.js +79 -56
  31. package/dist/src/prompts/calculator.js.map +1 -0
  32. package/dist/{prompts → src/prompts}/calendar.js +167 -127
  33. package/dist/src/prompts/calendar.js.map +1 -0
  34. package/dist/{prompts → src/prompts}/checkbox.js +53 -49
  35. package/dist/src/prompts/checkbox.js.map +1 -0
  36. package/dist/{prompts → src/prompts}/code.js +88 -76
  37. package/dist/src/prompts/code.js.map +1 -0
  38. package/dist/{prompts → src/prompts}/color.js +68 -50
  39. package/dist/src/prompts/color.js.map +1 -0
  40. package/dist/{prompts → src/prompts}/confirm.js +22 -15
  41. package/dist/src/prompts/confirm.js.map +1 -0
  42. package/dist/{prompts → src/prompts}/connection-string.js +59 -36
  43. package/dist/src/prompts/connection-string.js.map +1 -0
  44. package/dist/{prompts → src/prompts}/cron.js +90 -59
  45. package/dist/src/prompts/cron.js.map +1 -0
  46. package/dist/src/prompts/curl-utils.js +71 -0
  47. package/dist/src/prompts/curl-utils.js.map +1 -0
  48. package/dist/{prompts → src/prompts}/curl.js +153 -132
  49. package/dist/src/prompts/curl.js.map +1 -0
  50. package/dist/{prompts → src/prompts}/data-inspector.js +96 -91
  51. package/dist/src/prompts/data-inspector.js.map +1 -0
  52. package/dist/{prompts → src/prompts}/date.js +64 -57
  53. package/dist/src/prompts/date.js.map +1 -0
  54. package/dist/{prompts → src/prompts}/dependency.js +84 -80
  55. package/dist/src/prompts/dependency.js.map +1 -0
  56. package/dist/{prompts → src/prompts}/dial.js +49 -35
  57. package/dist/src/prompts/dial.js.map +1 -0
  58. package/dist/src/prompts/diff.js +118 -0
  59. package/dist/src/prompts/diff.js.map +1 -0
  60. package/dist/{prompts → src/prompts}/draw.js +83 -80
  61. package/dist/src/prompts/draw.js.map +1 -0
  62. package/dist/src/prompts/editor.js +234 -0
  63. package/dist/src/prompts/editor.js.map +1 -0
  64. package/dist/{prompts → src/prompts}/emoji.js +80 -82
  65. package/dist/src/prompts/emoji.js.map +1 -0
  66. package/dist/{prompts → src/prompts}/exec.js +60 -46
  67. package/dist/src/prompts/exec.js.map +1 -0
  68. package/dist/src/prompts/file.js +217 -0
  69. package/dist/src/prompts/file.js.map +1 -0
  70. package/dist/{prompts → src/prompts}/form.js +63 -54
  71. package/dist/src/prompts/form.js.map +1 -0
  72. package/dist/{prompts → src/prompts}/fuzzy-multi-column.js +65 -53
  73. package/dist/src/prompts/fuzzy-multi-column.js.map +1 -0
  74. package/dist/{prompts → src/prompts}/fuzzy.js +66 -55
  75. package/dist/src/prompts/fuzzy.js.map +1 -0
  76. package/dist/src/prompts/gauge.js +137 -0
  77. package/dist/src/prompts/gauge.js.map +1 -0
  78. package/dist/{prompts → src/prompts}/grid.js +70 -57
  79. package/dist/src/prompts/grid.js.map +1 -0
  80. package/dist/{prompts → src/prompts}/heatmap.js +70 -64
  81. package/dist/src/prompts/heatmap.js.map +1 -0
  82. package/dist/{prompts → src/prompts}/ip.js +56 -36
  83. package/dist/src/prompts/ip.js.map +1 -0
  84. package/dist/{prompts → src/prompts}/kanban.js +63 -58
  85. package/dist/src/prompts/kanban.js.map +1 -0
  86. package/dist/src/prompts/keypress.js +54 -0
  87. package/dist/src/prompts/keypress.js.map +1 -0
  88. package/dist/src/prompts/license.js +144 -0
  89. package/dist/src/prompts/license.js.map +1 -0
  90. package/dist/{prompts → src/prompts}/list.js +46 -31
  91. package/dist/src/prompts/list.js.map +1 -0
  92. package/dist/{prompts → src/prompts}/map.js +93 -77
  93. package/dist/src/prompts/map.js.map +1 -0
  94. package/dist/{prompts → src/prompts}/match.js +91 -95
  95. package/dist/src/prompts/match.js.map +1 -0
  96. package/dist/{prompts → src/prompts}/miller.js +74 -67
  97. package/dist/src/prompts/miller.js.map +1 -0
  98. package/dist/{prompts → src/prompts}/multi-column-select.js +54 -44
  99. package/dist/src/prompts/multi-column-select.js.map +1 -0
  100. package/dist/{prompts → src/prompts}/multi-range.js +70 -52
  101. package/dist/src/prompts/multi-range.js.map +1 -0
  102. package/dist/{prompts → src/prompts}/multi-select.js +67 -58
  103. package/dist/src/prompts/multi-select.js.map +1 -0
  104. package/dist/{prompts → src/prompts}/number.js +51 -39
  105. package/dist/src/prompts/number.js.map +1 -0
  106. package/dist/{prompts → src/prompts}/otp.js +43 -27
  107. package/dist/src/prompts/otp.js.map +1 -0
  108. package/dist/{prompts → src/prompts}/pattern.js +74 -71
  109. package/dist/src/prompts/pattern.js.map +1 -0
  110. package/dist/{prompts → src/prompts}/phone.js +107 -118
  111. package/dist/src/prompts/phone.js.map +1 -0
  112. package/dist/src/prompts/quiz-select.js +114 -0
  113. package/dist/src/prompts/quiz-select.js.map +1 -0
  114. package/dist/src/prompts/quiz-text.js +98 -0
  115. package/dist/src/prompts/quiz-text.js.map +1 -0
  116. package/dist/{prompts → src/prompts}/range.js +85 -61
  117. package/dist/src/prompts/range.js.map +1 -0
  118. package/dist/{prompts → src/prompts}/rating.js +29 -24
  119. package/dist/src/prompts/rating.js.map +1 -0
  120. package/dist/{prompts → src/prompts}/regex.js +50 -36
  121. package/dist/src/prompts/regex.js.map +1 -0
  122. package/dist/{prompts → src/prompts}/region.js +62 -56
  123. package/dist/src/prompts/region.js.map +1 -0
  124. package/dist/{prompts → src/prompts}/schedule.js +82 -75
  125. package/dist/src/prompts/schedule.js.map +1 -0
  126. package/dist/{prompts → src/prompts}/scroll.js +61 -58
  127. package/dist/src/prompts/scroll.js.map +1 -0
  128. package/dist/src/prompts/seat.js +164 -0
  129. package/dist/src/prompts/seat.js.map +1 -0
  130. package/dist/{prompts → src/prompts}/select-range.js +58 -46
  131. package/dist/src/prompts/select-range.js.map +1 -0
  132. package/dist/{prompts → src/prompts}/select.js +65 -66
  133. package/dist/src/prompts/select.js.map +1 -0
  134. package/dist/{prompts → src/prompts}/semver.js +24 -13
  135. package/dist/src/prompts/semver.js.map +1 -0
  136. package/dist/src/prompts/shortcut.js +133 -0
  137. package/dist/src/prompts/shortcut.js.map +1 -0
  138. package/dist/{prompts → src/prompts}/slider.js +28 -23
  139. package/dist/src/prompts/slider.js.map +1 -0
  140. package/dist/src/prompts/slot.js +117 -0
  141. package/dist/src/prompts/slot.js.map +1 -0
  142. package/dist/{prompts → src/prompts}/snippet.js +82 -61
  143. package/dist/src/prompts/snippet.js.map +1 -0
  144. package/dist/{prompts → src/prompts}/sort-grid.js +64 -59
  145. package/dist/src/prompts/sort-grid.js.map +1 -0
  146. package/dist/{prompts → src/prompts}/sort.js +59 -49
  147. package/dist/src/prompts/sort.js.map +1 -0
  148. package/dist/src/prompts/spam.js +80 -0
  149. package/dist/src/prompts/spam.js.map +1 -0
  150. package/dist/{prompts → src/prompts}/spreadsheet.js +71 -70
  151. package/dist/src/prompts/spreadsheet.js.map +1 -0
  152. package/dist/{prompts → src/prompts}/table.js +52 -38
  153. package/dist/src/prompts/table.js.map +1 -0
  154. package/dist/{prompts → src/prompts}/text.js +74 -70
  155. package/dist/src/prompts/text.js.map +1 -0
  156. package/dist/{prompts → src/prompts}/time.js +105 -96
  157. package/dist/src/prompts/time.js.map +1 -0
  158. package/dist/src/prompts/toggle.js +53 -0
  159. package/dist/src/prompts/toggle.js.map +1 -0
  160. package/dist/{prompts → src/prompts}/transfer.js +71 -67
  161. package/dist/src/prompts/transfer.js.map +1 -0
  162. package/dist/{prompts → src/prompts}/tree-select.js +83 -86
  163. package/dist/src/prompts/tree-select.js.map +1 -0
  164. package/dist/{prompts → src/prompts}/tree.js +69 -67
  165. package/dist/src/prompts/tree.js.map +1 -0
  166. package/dist/src/prompts/wait.js +79 -0
  167. package/dist/src/prompts/wait.js.map +1 -0
  168. package/dist/src/spinner.js +105 -0
  169. package/dist/src/spinner.js.map +1 -0
  170. package/dist/{symbols.js → src/symbols.js} +32 -7
  171. package/dist/src/symbols.js.map +1 -0
  172. package/dist/{tasks.js → src/tasks.js} +104 -79
  173. package/dist/src/tasks.js.map +1 -0
  174. package/dist/src/theme.js +29 -0
  175. package/dist/src/theme.js.map +1 -0
  176. package/dist/src/types.js +8 -0
  177. package/dist/src/types.js.map +1 -0
  178. package/dist/{utils.js → src/utils.js} +196 -152
  179. package/dist/src/utils.js.map +1 -0
  180. package/package.json +16 -13
  181. package/dist/ansi.d.ts +0 -36
  182. package/dist/base.d.ts +0 -60
  183. package/dist/core.d.ts +0 -1072
  184. package/dist/data/countries.d.ts +0 -2
  185. package/dist/data/countries.js +0 -105
  186. package/dist/data/licenses.d.ts +0 -2
  187. package/dist/data/licenses.js +0 -109
  188. package/dist/highlight.d.ts +0 -7
  189. package/dist/index.d.ts +0 -48
  190. package/dist/index.js +0 -64
  191. package/dist/input.d.ts +0 -14
  192. package/dist/pipeline.d.ts +0 -39
  193. package/dist/pipeline.js +0 -54
  194. package/dist/prompts/autocomplete.d.ts +0 -22
  195. package/dist/prompts/box.d.ts +0 -21
  196. package/dist/prompts/breadcrumb-search.d.ts +0 -14
  197. package/dist/prompts/breadcrumb.d.ts +0 -32
  198. package/dist/prompts/byte.d.ts +0 -13
  199. package/dist/prompts/calculator.d.ts +0 -17
  200. package/dist/prompts/calendar.d.ts +0 -33
  201. package/dist/prompts/checkbox.d.ts +0 -13
  202. package/dist/prompts/code.d.ts +0 -19
  203. package/dist/prompts/color.d.ts +0 -14
  204. package/dist/prompts/confirm.d.ts +0 -8
  205. package/dist/prompts/connection-string.d.ts +0 -18
  206. package/dist/prompts/cron.d.ts +0 -13
  207. package/dist/prompts/curl-utils.d.ts +0 -25
  208. package/dist/prompts/curl-utils.js +0 -41
  209. package/dist/prompts/curl.d.ts +0 -41
  210. package/dist/prompts/data-inspector.d.ts +0 -22
  211. package/dist/prompts/date.d.ts +0 -12
  212. package/dist/prompts/dependency.d.ts +0 -16
  213. package/dist/prompts/dial.d.ts +0 -10
  214. package/dist/prompts/diff.d.ts +0 -10
  215. package/dist/prompts/diff.js +0 -101
  216. package/dist/prompts/draw.d.ts +0 -20
  217. package/dist/prompts/editor.d.ts +0 -14
  218. package/dist/prompts/editor.js +0 -203
  219. package/dist/prompts/emoji.d.ts +0 -18
  220. package/dist/prompts/exec.d.ts +0 -17
  221. package/dist/prompts/file.d.ts +0 -21
  222. package/dist/prompts/file.js +0 -210
  223. package/dist/prompts/form.d.ts +0 -18
  224. package/dist/prompts/fuzzy-multi-column.d.ts +0 -12
  225. package/dist/prompts/fuzzy.d.ts +0 -12
  226. package/dist/prompts/gauge.d.ts +0 -21
  227. package/dist/prompts/gauge.js +0 -130
  228. package/dist/prompts/grid.d.ts +0 -14
  229. package/dist/prompts/heatmap.d.ts +0 -13
  230. package/dist/prompts/ip.d.ts +0 -11
  231. package/dist/prompts/kanban.d.ts +0 -17
  232. package/dist/prompts/keypress.d.ts +0 -7
  233. package/dist/prompts/keypress.js +0 -55
  234. package/dist/prompts/license.d.ts +0 -9
  235. package/dist/prompts/license.js +0 -105
  236. package/dist/prompts/list.d.ts +0 -9
  237. package/dist/prompts/map.d.ts +0 -17
  238. package/dist/prompts/match.d.ts +0 -19
  239. package/dist/prompts/miller.d.ts +0 -15
  240. package/dist/prompts/multi-column-select.d.ts +0 -10
  241. package/dist/prompts/multi-range.d.ts +0 -9
  242. package/dist/prompts/multi-select.d.ts +0 -15
  243. package/dist/prompts/number.d.ts +0 -11
  244. package/dist/prompts/otp.d.ts +0 -10
  245. package/dist/prompts/pattern.d.ts +0 -22
  246. package/dist/prompts/phone.d.ts +0 -41
  247. package/dist/prompts/quiz-select.d.ts +0 -10
  248. package/dist/prompts/quiz-select.js +0 -104
  249. package/dist/prompts/quiz-text.d.ts +0 -11
  250. package/dist/prompts/quiz-text.js +0 -82
  251. package/dist/prompts/range.d.ts +0 -9
  252. package/dist/prompts/rating.d.ts +0 -8
  253. package/dist/prompts/regex.d.ts +0 -13
  254. package/dist/prompts/region.d.ts +0 -11
  255. package/dist/prompts/schedule.d.ts +0 -20
  256. package/dist/prompts/scroll.d.ts +0 -13
  257. package/dist/prompts/seat.d.ts +0 -17
  258. package/dist/prompts/seat.js +0 -165
  259. package/dist/prompts/select-range.d.ts +0 -8
  260. package/dist/prompts/select.d.ts +0 -15
  261. package/dist/prompts/semver.d.ts +0 -6
  262. package/dist/prompts/shortcut.d.ts +0 -9
  263. package/dist/prompts/shortcut.js +0 -135
  264. package/dist/prompts/slider.d.ts +0 -8
  265. package/dist/prompts/slot.d.ts +0 -16
  266. package/dist/prompts/slot.js +0 -107
  267. package/dist/prompts/snippet.d.ts +0 -19
  268. package/dist/prompts/sort-grid.d.ts +0 -16
  269. package/dist/prompts/sort.d.ts +0 -14
  270. package/dist/prompts/spam.d.ts +0 -17
  271. package/dist/prompts/spam.js +0 -62
  272. package/dist/prompts/spreadsheet.d.ts +0 -21
  273. package/dist/prompts/table.d.ts +0 -14
  274. package/dist/prompts/text.d.ts +0 -17
  275. package/dist/prompts/time.d.ts +0 -12
  276. package/dist/prompts/toggle.d.ts +0 -8
  277. package/dist/prompts/toggle.js +0 -47
  278. package/dist/prompts/transfer.d.ts +0 -18
  279. package/dist/prompts/tree-select.d.ts +0 -31
  280. package/dist/prompts/tree.d.ts +0 -20
  281. package/dist/prompts/wait.d.ts +0 -18
  282. package/dist/prompts/wait.js +0 -62
  283. package/dist/spinner.d.ts +0 -33
  284. package/dist/spinner.js +0 -89
  285. package/dist/symbols.d.ts +0 -33
  286. package/dist/tasks.d.ts +0 -57
  287. package/dist/theme.d.ts +0 -2
  288. package/dist/theme.js +0 -20
  289. package/dist/types.d.ts +0 -503
  290. package/dist/types.js +0 -5
  291. package/dist/utils.d.ts +0 -81
@@ -1,19 +0,0 @@
1
- import { Prompt } from '../base';
2
- import { MatchOptions, MouseEvent } from '../types';
3
- export declare class MatchPrompt extends Prompt<Record<string, any[]>, MatchOptions> {
4
- private source;
5
- private target;
6
- private links;
7
- private cursorSource;
8
- private cursorTarget;
9
- private scrollTopSource;
10
- private scrollTopTarget;
11
- private activeSide;
12
- private pickedSourceIndex;
13
- private readonly pageSize;
14
- constructor(options: MatchOptions);
15
- private normalize;
16
- protected render(_firstRender: boolean): void;
17
- protected handleInput(char: string): void;
18
- protected handleMouse(event: MouseEvent): void;
19
- }
@@ -1,15 +0,0 @@
1
- import { Prompt } from '../base';
2
- import { MillerOptions, MouseEvent } from '../types';
3
- export declare class MillerPrompt<V> extends Prompt<V[], MillerOptions<V>> {
4
- private selections;
5
- private activeCol;
6
- private scrollTops;
7
- private colWidth;
8
- private visibleCols;
9
- constructor(options: MillerOptions<V>);
10
- private calculateLayout;
11
- private getColumnData;
12
- protected render(_firstRender: boolean): void;
13
- protected handleInput(char: string): void;
14
- protected handleMouse(event: MouseEvent): void;
15
- }
@@ -1,10 +0,0 @@
1
- import { SelectPrompt } from './select';
2
- import { MultiColumnSelectOptions } from '../types';
3
- export declare class MultiColumnSelectPrompt<V> extends SelectPrompt<V, MultiColumnSelectOptions<V>> {
4
- protected cols: number;
5
- protected colWidth: number;
6
- constructor(options: MultiColumnSelectOptions<V>);
7
- private calculateLayout;
8
- protected render(_firstRender: boolean): void;
9
- protected handleInput(char: string): void;
10
- }
@@ -1,9 +0,0 @@
1
- import { SelectRangePrompt } from './select-range';
2
- import { SelectRangeOptions } from '../types';
3
- export declare class MultiRangePrompt<V> extends SelectRangePrompt<V> {
4
- private committedRanges;
5
- constructor(options: SelectRangeOptions<V>);
6
- private mergeRanges;
7
- protected handleInput(char: string, key?: Buffer): void;
8
- protected render(_firstRender: boolean): void;
9
- }
@@ -1,15 +0,0 @@
1
- import { Prompt } from '../base';
2
- import { MultiSelectOptions, MouseEvent } from '../types';
3
- export declare class MultiSelectPrompt<V> extends Prompt<any[], MultiSelectOptions<V>> {
4
- private selectedIndex;
5
- private checkedState;
6
- private searchBuffer;
7
- private scrollTop;
8
- private readonly pageSize;
9
- private errorMsg;
10
- constructor(options: MultiSelectOptions<V>);
11
- private getFilteredChoices;
12
- protected render(_firstRender: boolean): void;
13
- protected handleInput(char: string): void;
14
- protected handleMouse(event: MouseEvent): void;
15
- }
@@ -1,11 +0,0 @@
1
- import { Prompt } from '../base';
2
- import { NumberOptions, MouseEvent } from '../types';
3
- export declare class NumberPrompt extends Prompt<number, NumberOptions> {
4
- private stringValue;
5
- private cursor;
6
- private errorMsg;
7
- constructor(options: NumberOptions);
8
- protected render(_firstRender: boolean): void;
9
- protected handleInput(char: string): void;
10
- protected handleMouse(event: MouseEvent): void;
11
- }
@@ -1,10 +0,0 @@
1
- import { Prompt } from '../base';
2
- import { OTPOptions } from '../types';
3
- export declare class OTPPrompt extends Prompt<string, OTPOptions> {
4
- private slots;
5
- private cursor;
6
- private readonly length;
7
- constructor(options: OTPOptions);
8
- protected render(_firstRender: boolean): void;
9
- protected handleInput(char: string): void;
10
- }
@@ -1,22 +0,0 @@
1
- import { Prompt } from '../base';
2
- import { PatternOptions, MouseEvent } from '../types';
3
- export declare class PatternPrompt extends Prompt<number[], PatternOptions> {
4
- private path;
5
- private cursor;
6
- private isDragging;
7
- private errorMsg;
8
- private rows;
9
- private cols;
10
- private nodeChar;
11
- private nodeSpacingX;
12
- private nodeSpacingY;
13
- private lastMouse;
14
- constructor(options: PatternOptions);
15
- private getIndex;
16
- private getPoint;
17
- protected render(firstRender: boolean): void;
18
- private drawLine;
19
- protected handleInput(char: string, _key: Buffer): void;
20
- private addToPath;
21
- protected handleMouse(event: MouseEvent): void;
22
- }
@@ -1,41 +0,0 @@
1
- import { Prompt } from '../base';
2
- import { PhoneOptions } from '../types';
3
- export declare class PhonePrompt extends Prompt<string, PhoneOptions> {
4
- protected activeSection: 'country' | 'number';
5
- protected selectedCountryIndex: number;
6
- protected rawNumber: string;
7
- protected cursor: number;
8
- protected searchBuffer: string;
9
- protected lastLinesUp: number;
10
- protected errorMsg: string;
11
- protected filteredIndices: number[];
12
- constructor(options: PhoneOptions);
13
- private get currentCountry();
14
- private get mask();
15
- private get dialCode();
16
- /**
17
- * Maps a raw index (index in the digit-only string) to a visual index in the formatted string.
18
- */
19
- private getVisualIndex;
20
- /**
21
- * Maps rawIndex to visual index, handling skipping of static characters.
22
- */
23
- private getVisualPosition;
24
- /**
25
- * Formats the raw number according to the mask.
26
- */
27
- private formatNumber;
28
- /**
29
- * Renders the formatted number with highlighting.
30
- */
31
- private renderFormattedNumber;
32
- protected render(firstRender: boolean): void;
33
- protected cleanup(): void;
34
- protected handleInput(char: string): void;
35
- private filterCountries;
36
- private cycleCountry;
37
- private getMaxRawLength;
38
- private enforceMaxLen;
39
- private validateAndSubmit;
40
- protected handleMouse(event: any): void;
41
- }
@@ -1,10 +0,0 @@
1
- import { QuizSelectOptions } from '../types';
2
- import { SelectPrompt } from './select';
3
- export declare class QuizSelectPrompt<V> extends SelectPrompt<V, QuizSelectOptions<V>> {
4
- private status;
5
- private isCorrect;
6
- private userSelectionIndex;
7
- constructor(options: QuizSelectOptions<V>);
8
- protected handleInput(char: string): void;
9
- protected render(firstRender: boolean): void;
10
- }
@@ -1,104 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.QuizSelectPrompt = void 0;
4
- const ansi_1 = require("../ansi");
5
- const theme_1 = require("../theme");
6
- const symbols_1 = require("../symbols");
7
- const select_1 = require("./select");
8
- class QuizSelectPrompt extends select_1.SelectPrompt {
9
- constructor(options) {
10
- super(options);
11
- this.status = 'pending';
12
- this.isCorrect = false;
13
- this.userSelectionIndex = -1;
14
- }
15
- handleInput(char) {
16
- if (this.status === 'revealed') {
17
- // Wait for Enter to submit
18
- if (char === '\r' || char === '\n') {
19
- const choices = this.getFilteredChoices();
20
- // Ensure index is valid, though it should be captured
21
- const value = choices[this.userSelectionIndex]
22
- ? choices[this.userSelectionIndex].value
23
- : null;
24
- this.submit(value);
25
- }
26
- return;
27
- }
28
- if (this.status === 'pending') {
29
- // Intercept Enter
30
- if (char === '\r' || char === '\n') {
31
- const choices = this.getFilteredChoices();
32
- if (choices.length === 0)
33
- return;
34
- if (this.isSeparator(choices[this.selectedIndex]))
35
- return;
36
- this.userSelectionIndex = this.selectedIndex;
37
- const selectedChoice = choices[this.userSelectionIndex];
38
- // Check correctness
39
- this.isCorrect = selectedChoice.value === this.options.correctValue;
40
- this.status = 'revealed';
41
- this.render(false);
42
- return;
43
- }
44
- // Delegate navigation to super
45
- super.handleInput(char);
46
- }
47
- }
48
- render(firstRender) {
49
- if (this.status === 'pending') {
50
- super.render(firstRender);
51
- return;
52
- }
53
- // Revealed State
54
- let output = '';
55
- const choices = this.getFilteredChoices();
56
- // Header
57
- const icon = this.isCorrect ? `${theme_1.theme.success}${symbols_1.symbols.tick}` : `${theme_1.theme.error}${symbols_1.symbols.cross}`;
58
- output += `${icon} ${ansi_1.ANSI.BOLD}${theme_1.theme.title}${this.options.message}${ansi_1.ANSI.RESET}\n`;
59
- const visibleChoices = choices.slice(this.scrollTop, this.scrollTop + this.pageSize);
60
- visibleChoices.forEach((choice, index) => {
61
- if (index > 0)
62
- output += '\n';
63
- if (this.isSeparator(choice)) {
64
- output += ` ${ansi_1.ANSI.DIM}${choice.text || symbols_1.symbols.line.repeat(8)}${ansi_1.ANSI.RESET}`;
65
- }
66
- else {
67
- // Determine absolute index to match with user selection
68
- const actualIndex = this.scrollTop + index;
69
- const isSelected = actualIndex === this.userSelectionIndex;
70
- const isCorrectAnswer = choice.value === this.options.correctValue;
71
- let prefix = ' ';
72
- let style = ansi_1.ANSI.RESET;
73
- if (isSelected) {
74
- if (this.isCorrect) {
75
- prefix = `${theme_1.theme.success}${symbols_1.symbols.pointer} `;
76
- style = theme_1.theme.success;
77
- }
78
- else {
79
- prefix = `${theme_1.theme.error}${symbols_1.symbols.cross} `;
80
- style = theme_1.theme.error;
81
- }
82
- }
83
- else if (isCorrectAnswer) {
84
- prefix = `${theme_1.theme.success}${symbols_1.symbols.pointer} `;
85
- style = theme_1.theme.success;
86
- }
87
- output += `${prefix}${style}${choice.title}${ansi_1.ANSI.RESET}`;
88
- if (isSelected && !this.isCorrect) {
89
- output += ` ${theme_1.theme.error}(Your Answer)${ansi_1.ANSI.RESET}`;
90
- }
91
- if (isCorrectAnswer && !isSelected) {
92
- output += ` ${theme_1.theme.success}(Correct)${ansi_1.ANSI.RESET}`;
93
- }
94
- }
95
- });
96
- // Explanation
97
- if (this.options.explanation) {
98
- output += `\n\n${ansi_1.ANSI.BOLD}Explanation:${ansi_1.ANSI.RESET}\n${theme_1.theme.muted}${this.options.explanation}${ansi_1.ANSI.RESET}`;
99
- }
100
- output += `\n\n${ansi_1.ANSI.DIM}(Press Enter to continue)${ansi_1.ANSI.RESET}`;
101
- this.renderFrame(output);
102
- }
103
- }
104
- exports.QuizSelectPrompt = QuizSelectPrompt;
@@ -1,11 +0,0 @@
1
- import { QuizTextOptions } from '../types';
2
- import { TextPrompt } from './text';
3
- export declare class QuizTextPrompt extends TextPrompt<QuizTextOptions> {
4
- private status;
5
- private isCorrect;
6
- constructor(options: QuizTextOptions);
7
- protected handleInput(char: string): void;
8
- protected submit(value: string): void;
9
- private checkCorrectness;
10
- protected render(firstRender: boolean): void;
11
- }
@@ -1,82 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.QuizTextPrompt = void 0;
4
- const ansi_1 = require("../ansi");
5
- const theme_1 = require("../theme");
6
- const symbols_1 = require("../symbols");
7
- const text_1 = require("./text");
8
- class QuizTextPrompt extends text_1.TextPrompt {
9
- constructor(options) {
10
- super(options);
11
- this.status = 'pending';
12
- this.isCorrect = false;
13
- }
14
- handleInput(char) {
15
- if (this.status === 'revealed') {
16
- if (char === '\r' || char === '\n') {
17
- this.submit(this.value);
18
- }
19
- return;
20
- }
21
- super.handleInput(char);
22
- }
23
- submit(value) {
24
- if (this.status === 'pending') {
25
- // We caught the submission from TextPrompt logic.
26
- // Now verify correctness.
27
- this.checkCorrectness(value).then(correct => {
28
- this.isCorrect = correct;
29
- this.status = 'revealed';
30
- this.render(false);
31
- });
32
- }
33
- else {
34
- // If revealed (or anything else), we proceed to final submission.
35
- // This calls Prompt.submit
36
- super.submit(value);
37
- }
38
- }
39
- async checkCorrectness(value) {
40
- try {
41
- if (this.options.verify) {
42
- return await this.options.verify(value);
43
- }
44
- if (this.options.correctAnswer) {
45
- return value.trim().toLowerCase() === this.options.correctAnswer.trim().toLowerCase();
46
- }
47
- return false;
48
- }
49
- catch (_e) {
50
- return false;
51
- }
52
- }
53
- render(firstRender) {
54
- if (this.status === 'pending') {
55
- super.render(firstRender);
56
- return;
57
- }
58
- // Revealed State
59
- let output = '';
60
- const icon = this.isCorrect ? `${theme_1.theme.success}${symbols_1.symbols.tick}` : `${theme_1.theme.error}${symbols_1.symbols.cross}`;
61
- output += `${icon} ${ansi_1.ANSI.BOLD}${theme_1.theme.title}${this.options.message}${ansi_1.ANSI.RESET}\n`;
62
- const userValue = this.segments.join('');
63
- // Display user input
64
- if (this.isCorrect) {
65
- output += ` ${theme_1.theme.success}${userValue}${ansi_1.ANSI.RESET} ${theme_1.theme.success}(Correct)${ansi_1.ANSI.RESET}`;
66
- }
67
- else {
68
- output += ` ${theme_1.theme.error}${userValue}${ansi_1.ANSI.RESET} ${theme_1.theme.error}(Wrong)${ansi_1.ANSI.RESET}`;
69
- }
70
- // Show correct answer if wrong
71
- if (!this.isCorrect && this.options.correctAnswer) {
72
- output += `\n ${theme_1.theme.success}Correct Answer: ${this.options.correctAnswer}${ansi_1.ANSI.RESET}`;
73
- }
74
- // Explanation
75
- if (this.options.explanation) {
76
- output += `\n\n${ansi_1.ANSI.BOLD}Explanation:${ansi_1.ANSI.RESET}\n${theme_1.theme.muted}${this.options.explanation}${ansi_1.ANSI.RESET}`;
77
- }
78
- output += `\n\n${ansi_1.ANSI.DIM}(Press Enter to continue)${ansi_1.ANSI.RESET}`;
79
- this.renderFrame(output);
80
- }
81
- }
82
- exports.QuizTextPrompt = QuizTextPrompt;
@@ -1,9 +0,0 @@
1
- import { Prompt } from '../base';
2
- import { RangeOptions, MouseEvent } from '../types';
3
- export declare class RangePrompt extends Prompt<[number, number], RangeOptions> {
4
- private activeHandle;
5
- constructor(options: RangeOptions);
6
- protected render(_firstRender: boolean): void;
7
- protected handleInput(char: string): void;
8
- protected handleMouse(event: MouseEvent): void;
9
- }
@@ -1,8 +0,0 @@
1
- import { Prompt } from '../base';
2
- import { RatingOptions, MouseEvent } from '../types';
3
- export declare class RatingPrompt extends Prompt<number, RatingOptions> {
4
- constructor(options: RatingOptions);
5
- protected render(_firstRender: boolean): void;
6
- protected handleInput(char: string): void;
7
- protected handleMouse(event: MouseEvent): void;
8
- }
@@ -1,13 +0,0 @@
1
- import { Prompt } from '../base';
2
- import { RegexOptions } from '../types';
3
- export declare class RegexPrompt extends Prompt<RegExp, RegexOptions> {
4
- private input;
5
- private cursor;
6
- private segments;
7
- private error;
8
- private regex;
9
- constructor(options: RegexOptions);
10
- private validateRegex;
11
- protected render(_firstRender: boolean): void;
12
- protected handleInput(char: string, _key: Buffer): void;
13
- }
@@ -1,11 +0,0 @@
1
- import { Prompt } from '../base';
2
- import { RegionOptions, MouseEvent } from '../types';
3
- export declare class RegionPrompt extends Prompt<string, RegionOptions> {
4
- private cursorIndex;
5
- private errorMsg;
6
- constructor(options: RegionOptions);
7
- protected render(_firstRender: boolean): void;
8
- protected handleInput(char: string, _key: Buffer): void;
9
- private navigate;
10
- protected handleMouse(event: MouseEvent): void;
11
- }
@@ -1,20 +0,0 @@
1
- import { Prompt } from '../base';
2
- import { ScheduleOptions, ScheduleTask, MouseEvent } from '../types';
3
- export declare class SchedulePrompt extends Prompt<ScheduleTask[], ScheduleOptions> {
4
- private cursor;
5
- private tasks;
6
- private scrollTop;
7
- private readonly pageSize;
8
- private viewStartDate;
9
- private msPerChar;
10
- private minViewDate?;
11
- private nameColWidth;
12
- constructor(options: ScheduleOptions);
13
- private get maxNameWidth();
14
- protected render(_firstRender: boolean): void;
15
- private formatDateCompact;
16
- private formatDuration;
17
- protected handleInput(char: string, key: Buffer): void;
18
- protected handleMouse(event: MouseEvent): void;
19
- private scrollView;
20
- }
@@ -1,13 +0,0 @@
1
- import { Prompt } from '../base';
2
- import { ScrollOptions } from '../types';
3
- export declare class ScrollPrompt extends Prompt<boolean, ScrollOptions> {
4
- private lines;
5
- private scrollTop;
6
- private height;
7
- private hasReachedBottom;
8
- private showError;
9
- constructor(options: ScrollOptions);
10
- protected render(_firstRender: boolean): void;
11
- protected handleInput(char: string, key: Buffer): void;
12
- protected handleMouse(event: import('../types').MouseEvent): void;
13
- }
@@ -1,17 +0,0 @@
1
- import { Prompt } from '../base';
2
- import { SeatOptions, MouseEvent } from '../types';
3
- export declare class SeatPrompt extends Prompt<string[], SeatOptions> {
4
- private grid;
5
- private cursorX;
6
- private cursorY;
7
- private selected;
8
- private height;
9
- private width;
10
- private initializedCursor;
11
- constructor(options: SeatOptions);
12
- private parseLayout;
13
- protected render(_firstRender: boolean): void;
14
- protected handleInput(char: string): void;
15
- protected handleMouse(event: MouseEvent): void;
16
- private move;
17
- }
@@ -1,165 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SeatPrompt = void 0;
4
- const base_1 = require("../base");
5
- const ansi_1 = require("../ansi");
6
- const theme_1 = require("../theme");
7
- class SeatPrompt extends base_1.Prompt {
8
- constructor(options) {
9
- super(options);
10
- this.grid = [];
11
- this.cursorX = 0;
12
- this.cursorY = 0;
13
- this.selected = new Set();
14
- this.height = 0;
15
- this.width = 0;
16
- this.initializedCursor = false;
17
- this.parseLayout();
18
- if (options.initial) {
19
- options.initial.forEach(id => this.selected.add(id));
20
- }
21
- this.checkWindowsAttention();
22
- }
23
- parseLayout() {
24
- this.height = this.options.layout.length;
25
- this.width = 0;
26
- this.grid = this.options.layout.map((line, y) => {
27
- if (line.length > this.width)
28
- this.width = line.length;
29
- return line.split('').map((char, x) => {
30
- const isGap = char === '_' || char === ' ';
31
- // Convention: 'X' is occupied.
32
- const isOccupied = char.toUpperCase() === 'X';
33
- // Label generation: Rows (A, B...), Cols (1, 2...)
34
- const rowLabel = this.options.rows ? (this.options.rows[y] || String(y + 1)) : String.fromCharCode(65 + y);
35
- const colLabel = this.options.cols ? (this.options.cols[x] || String(x + 1)) : String(x + 1);
36
- const label = `${rowLabel}${colLabel}`;
37
- const selectable = !isGap;
38
- let status = 'available';
39
- if (isOccupied)
40
- status = 'occupied';
41
- if (this.selected.has(label))
42
- status = 'selected'; // Though this is dynamic state
43
- // Initialize cursor to first available seat
44
- if (selectable && status !== 'occupied' && !this.initializedCursor) {
45
- this.cursorX = x;
46
- this.cursorY = y;
47
- this.initializedCursor = true;
48
- }
49
- return {
50
- x, y, char, label, selectable, status
51
- };
52
- });
53
- });
54
- }
55
- render(_firstRender) {
56
- let output = `${theme_1.theme.title}${this.options.message}${ansi_1.ANSI.RESET}\n`;
57
- output += `${theme_1.theme.muted}(Use arrows to move, Space to select, Enter to confirm)${ansi_1.ANSI.RESET}\n\n`;
58
- this.grid.forEach((row, y) => {
59
- let lineStr = '';
60
- row.forEach((node, x) => {
61
- const isCursor = x === this.cursorX && y === this.cursorY;
62
- const isSelected = this.selected.has(node.label);
63
- const charDisplay = node.char;
64
- // If occupied, maybe show a different char or color
65
- let style = ansi_1.ANSI.RESET;
66
- if (node.status === 'occupied') {
67
- style = ansi_1.ANSI.FG_RED;
68
- }
69
- else if (!node.selectable) {
70
- style = theme_1.theme.muted;
71
- }
72
- else {
73
- style = theme_1.theme.main; // Available seats
74
- }
75
- if (isSelected) {
76
- style = ansi_1.ANSI.BG_GREEN + ansi_1.ANSI.FG_BLACK;
77
- }
78
- if (isCursor) {
79
- // Combine styles? Cursor overrides everything usually
80
- style = ansi_1.ANSI.BG_CYAN + ansi_1.ANSI.FG_BLACK;
81
- }
82
- lineStr += style + charDisplay + ansi_1.ANSI.RESET + ' ';
83
- });
84
- output += lineStr + '\n';
85
- });
86
- // Show Legend or Current Selection
87
- if (this.selected.size > 0) {
88
- output += `\n${theme_1.theme.success}Selected: ${Array.from(this.selected).join(', ')}${ansi_1.ANSI.RESET}`;
89
- }
90
- this.renderFrame(output);
91
- }
92
- handleInput(char) {
93
- if (char === '\r' || char === '\n') {
94
- this.submit(Array.from(this.selected));
95
- return;
96
- }
97
- if (char === ' ') {
98
- const row = this.grid[this.cursorY];
99
- if (!row)
100
- return;
101
- const node = row[this.cursorX];
102
- if (node && node.selectable && node.status !== 'occupied') {
103
- if (this.selected.has(node.label)) {
104
- this.selected.delete(node.label);
105
- }
106
- else {
107
- if (!this.options.multiple)
108
- this.selected.clear();
109
- this.selected.add(node.label);
110
- }
111
- this.render(false);
112
- }
113
- return;
114
- }
115
- if (this.isUp(char))
116
- this.move(0, -1);
117
- else if (this.isDown(char))
118
- this.move(0, 1);
119
- else if (this.isLeft(char))
120
- this.move(-1, 0);
121
- else if (this.isRight(char))
122
- this.move(1, 0);
123
- // Tab / Shift+Tab
124
- else if (char === '\t')
125
- this.move(1, 0);
126
- else if (char === '\u001b[Z')
127
- this.move(-1, 0);
128
- }
129
- handleMouse(event) {
130
- if (event.action === 'scroll') {
131
- if (event.scroll === 'up')
132
- this.move(0, -1);
133
- else if (event.scroll === 'down')
134
- this.move(0, 1);
135
- }
136
- }
137
- move(dx, dy) {
138
- let nx = this.cursorX;
139
- let ny = this.cursorY;
140
- let limit = Math.max(this.width, this.height) + 10;
141
- do {
142
- nx += dx;
143
- ny += dy;
144
- limit--;
145
- // Boundary Check
146
- if (ny < 0 || ny >= this.height)
147
- return;
148
- const row = this.grid[ny];
149
- if (!row)
150
- return;
151
- if (nx < 0 || nx >= row.length)
152
- return;
153
- const node = row[nx];
154
- // Stop if node is selectable (seat or occupied seat)
155
- // Skip gaps ('_' or ' ')
156
- if (node.selectable) {
157
- this.cursorX = nx;
158
- this.cursorY = ny;
159
- this.render(false);
160
- return;
161
- }
162
- } while (limit > 0);
163
- }
164
- }
165
- exports.SeatPrompt = SeatPrompt;
@@ -1,8 +0,0 @@
1
- import { SelectRangeOptions } from '../types';
2
- import { SelectPrompt } from './select';
3
- export declare class SelectRangePrompt<V> extends SelectPrompt<V, SelectRangeOptions<V>> {
4
- protected anchorIndex: number | null;
5
- constructor(options: SelectRangeOptions<V>);
6
- protected handleInput(char: string, _key?: Buffer): void;
7
- protected render(_firstRender: boolean): void;
8
- }
@@ -1,15 +0,0 @@
1
- import { Prompt } from '../base';
2
- import { SelectOptions, MouseEvent } from '../types';
3
- export declare class SelectPrompt<V, O extends SelectOptions<V> = SelectOptions<V>> extends Prompt<any, O> {
4
- protected selectedIndex: number;
5
- protected searchBuffer: string;
6
- protected scrollTop: number;
7
- protected readonly pageSize: number;
8
- constructor(options: O);
9
- protected isSeparator(item: any): boolean;
10
- protected findNextSelectableIndex(currentIndex: number, direction: 1 | -1): number;
11
- protected getFilteredChoices(): (import("../types").Separator | import("../types").SelectChoice<V>)[];
12
- protected render(_firstRender: boolean): void;
13
- protected handleInput(char: string): void;
14
- protected handleMouse(event: MouseEvent): void;
15
- }