mepcli 2.0.0-beta.2 → 2.0.0-beta.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.
Files changed (356) hide show
  1. package/dist/ansi.d.ts +36 -0
  2. package/dist/ansi.js +1 -0
  3. package/dist/base.d.ts +60 -0
  4. package/dist/base.js +1 -0
  5. package/dist/{src/core.js → core.d.ts} +175 -345
  6. package/dist/core.js +1 -0
  7. package/dist/data/countries.d.ts +2 -0
  8. package/dist/data/countries.js +1 -0
  9. package/dist/data/licenses.d.ts +2 -0
  10. package/dist/data/licenses.js +1 -0
  11. package/dist/highlight.d.ts +7 -0
  12. package/dist/highlight.js +1 -0
  13. package/dist/index.d.ts +48 -0
  14. package/dist/index.js +1 -0
  15. package/dist/input.d.ts +14 -0
  16. package/dist/input.js +1 -0
  17. package/dist/pipeline.d.ts +90 -0
  18. package/dist/pipeline.js +1 -0
  19. package/dist/prompts/autocomplete.d.ts +22 -0
  20. package/dist/prompts/autocomplete.js +1 -0
  21. package/dist/prompts/box.d.ts +21 -0
  22. package/dist/prompts/box.js +4 -0
  23. package/dist/prompts/breadcrumb-search.d.ts +14 -0
  24. package/dist/prompts/breadcrumb-search.js +2 -0
  25. package/dist/prompts/breadcrumb.d.ts +32 -0
  26. package/dist/prompts/breadcrumb.js +3 -0
  27. package/dist/prompts/byte.d.ts +13 -0
  28. package/dist/prompts/byte.js +5 -0
  29. package/dist/prompts/calculator.d.ts +17 -0
  30. package/dist/prompts/calculator.js +3 -0
  31. package/dist/prompts/calendar.d.ts +33 -0
  32. package/dist/prompts/calendar.js +3 -0
  33. package/dist/prompts/checkbox.d.ts +13 -0
  34. package/dist/prompts/checkbox.js +2 -0
  35. package/dist/prompts/code.d.ts +19 -0
  36. package/dist/prompts/code.js +4 -0
  37. package/dist/prompts/color.d.ts +14 -0
  38. package/dist/prompts/color.js +10 -0
  39. package/dist/prompts/confirm.d.ts +8 -0
  40. package/dist/prompts/confirm.js +1 -0
  41. package/dist/prompts/connection-string.d.ts +18 -0
  42. package/dist/prompts/connection-string.js +1 -0
  43. package/dist/prompts/cron.d.ts +13 -0
  44. package/dist/prompts/cron.js +4 -0
  45. package/dist/prompts/curl-utils.d.ts +25 -0
  46. package/dist/prompts/curl-utils.js +1 -0
  47. package/dist/prompts/curl.d.ts +41 -0
  48. package/dist/prompts/curl.js +12 -0
  49. package/dist/prompts/data-inspector.d.ts +22 -0
  50. package/dist/prompts/data-inspector.js +5 -0
  51. package/dist/prompts/date.d.ts +12 -0
  52. package/dist/prompts/date.js +2 -0
  53. package/dist/prompts/dependency.d.ts +16 -0
  54. package/dist/prompts/dependency.js +3 -0
  55. package/dist/prompts/dial.d.ts +10 -0
  56. package/dist/prompts/dial.js +3 -0
  57. package/dist/prompts/diff.d.ts +10 -0
  58. package/dist/prompts/diff.js +10 -0
  59. package/dist/prompts/draw.d.ts +20 -0
  60. package/dist/prompts/draw.js +6 -0
  61. package/dist/prompts/editor.d.ts +14 -0
  62. package/dist/prompts/editor.js +2 -0
  63. package/dist/prompts/emoji.d.ts +18 -0
  64. package/dist/prompts/emoji.js +5 -0
  65. package/dist/prompts/exec.d.ts +17 -0
  66. package/dist/prompts/exec.js +1 -0
  67. package/dist/prompts/file.d.ts +21 -0
  68. package/dist/prompts/file.js +2 -0
  69. package/dist/prompts/form.d.ts +18 -0
  70. package/dist/prompts/form.js +1 -0
  71. package/dist/prompts/fuzzy-multi-column.d.ts +12 -0
  72. package/dist/prompts/fuzzy-multi-column.js +2 -0
  73. package/dist/prompts/fuzzy.d.ts +12 -0
  74. package/dist/prompts/fuzzy.js +2 -0
  75. package/dist/prompts/gauge.d.ts +21 -0
  76. package/dist/prompts/gauge.js +4 -0
  77. package/dist/prompts/grid.d.ts +14 -0
  78. package/dist/prompts/grid.js +2 -0
  79. package/dist/prompts/heatmap.d.ts +13 -0
  80. package/dist/prompts/heatmap.js +2 -0
  81. package/dist/prompts/ip.d.ts +11 -0
  82. package/dist/prompts/ip.js +3 -0
  83. package/dist/prompts/kanban.d.ts +17 -0
  84. package/dist/prompts/kanban.js +4 -0
  85. package/dist/prompts/keypress.d.ts +7 -0
  86. package/dist/prompts/keypress.js +1 -0
  87. package/dist/prompts/license.d.ts +9 -0
  88. package/dist/prompts/license.js +13 -0
  89. package/dist/prompts/list.d.ts +9 -0
  90. package/dist/prompts/list.js +1 -0
  91. package/dist/prompts/map.d.ts +17 -0
  92. package/dist/prompts/map.js +5 -0
  93. package/dist/prompts/match.d.ts +19 -0
  94. package/dist/prompts/match.js +7 -0
  95. package/dist/prompts/miller.d.ts +15 -0
  96. package/dist/prompts/miller.js +2 -0
  97. package/dist/prompts/multi-column-select.d.ts +10 -0
  98. package/dist/prompts/multi-column-select.js +2 -0
  99. package/dist/prompts/multi-range.d.ts +9 -0
  100. package/dist/prompts/multi-range.js +3 -0
  101. package/dist/prompts/multi-select.d.ts +15 -0
  102. package/dist/prompts/multi-select.js +4 -0
  103. package/dist/prompts/number.d.ts +11 -0
  104. package/dist/prompts/number.js +2 -0
  105. package/dist/prompts/otp.d.ts +10 -0
  106. package/dist/prompts/otp.js +2 -0
  107. package/dist/prompts/pattern.d.ts +22 -0
  108. package/dist/prompts/pattern.js +4 -0
  109. package/dist/prompts/phone.d.ts +41 -0
  110. package/dist/prompts/phone.js +3 -0
  111. package/dist/prompts/quiz-select.d.ts +10 -0
  112. package/dist/prompts/quiz-select.js +7 -0
  113. package/dist/prompts/quiz-text.d.ts +11 -0
  114. package/dist/prompts/quiz-text.js +8 -0
  115. package/dist/prompts/range.d.ts +9 -0
  116. package/dist/prompts/range.js +1 -0
  117. package/dist/prompts/rating.d.ts +8 -0
  118. package/dist/prompts/rating.js +1 -0
  119. package/dist/prompts/regex.d.ts +13 -0
  120. package/dist/prompts/regex.js +5 -0
  121. package/dist/prompts/region.d.ts +11 -0
  122. package/dist/prompts/region.js +5 -0
  123. package/dist/prompts/schedule.d.ts +20 -0
  124. package/dist/prompts/schedule.js +5 -0
  125. package/dist/prompts/scroll.d.ts +13 -0
  126. package/dist/prompts/scroll.js +1 -0
  127. package/dist/prompts/seat.d.ts +17 -0
  128. package/dist/prompts/seat.js +5 -0
  129. package/dist/prompts/select-range.d.ts +8 -0
  130. package/dist/prompts/select-range.js +3 -0
  131. package/dist/prompts/select.d.ts +15 -0
  132. package/dist/prompts/select.js +2 -0
  133. package/dist/prompts/semver.d.ts +6 -0
  134. package/dist/prompts/semver.js +1 -0
  135. package/dist/prompts/shortcut.d.ts +9 -0
  136. package/dist/prompts/shortcut.js +1 -0
  137. package/dist/prompts/slider.d.ts +8 -0
  138. package/dist/prompts/slider.js +1 -0
  139. package/dist/prompts/slot.d.ts +16 -0
  140. package/dist/prompts/slot.js +8 -0
  141. package/dist/prompts/snippet.d.ts +19 -0
  142. package/dist/prompts/snippet.js +4 -0
  143. package/dist/prompts/sort-grid.d.ts +16 -0
  144. package/dist/prompts/sort-grid.js +2 -0
  145. package/dist/prompts/sort.d.ts +14 -0
  146. package/dist/prompts/sort.js +2 -0
  147. package/dist/prompts/spam.d.ts +17 -0
  148. package/dist/prompts/spam.js +2 -0
  149. package/dist/prompts/spreadsheet.d.ts +21 -0
  150. package/dist/prompts/spreadsheet.js +7 -0
  151. package/dist/prompts/table.d.ts +14 -0
  152. package/dist/prompts/table.js +3 -0
  153. package/dist/prompts/text.d.ts +17 -0
  154. package/dist/prompts/text.js +2 -0
  155. package/dist/prompts/time.d.ts +12 -0
  156. package/dist/prompts/time.js +2 -0
  157. package/dist/prompts/toggle.d.ts +8 -0
  158. package/dist/prompts/toggle.js +1 -0
  159. package/dist/prompts/transfer.d.ts +18 -0
  160. package/dist/prompts/transfer.js +5 -0
  161. package/dist/prompts/tree-select.d.ts +31 -0
  162. package/dist/prompts/tree-select.js +3 -0
  163. package/dist/prompts/tree.d.ts +20 -0
  164. package/dist/prompts/tree.js +3 -0
  165. package/dist/prompts/wait.d.ts +18 -0
  166. package/dist/prompts/wait.js +1 -0
  167. package/dist/spinner.d.ts +33 -0
  168. package/dist/spinner.js +3 -0
  169. package/dist/symbols.d.ts +33 -0
  170. package/dist/symbols.js +1 -0
  171. package/dist/tasks.d.ts +57 -0
  172. package/dist/tasks.js +1 -0
  173. package/dist/theme.d.ts +2 -0
  174. package/dist/theme.js +1 -0
  175. package/dist/types.d.ts +503 -0
  176. package/dist/types.js +1 -0
  177. package/dist/utils.d.ts +81 -0
  178. package/dist/utils.js +1 -0
  179. package/package.json +8 -9
  180. package/dist/src/ansi.js +0 -50
  181. package/dist/src/ansi.js.map +0 -1
  182. package/dist/src/base.js +0 -258
  183. package/dist/src/base.js.map +0 -1
  184. package/dist/src/core.js.map +0 -1
  185. package/dist/src/data/countries.js +0 -569
  186. package/dist/src/data/countries.js.map +0 -1
  187. package/dist/src/data/licenses.js +0 -480
  188. package/dist/src/data/licenses.js.map +0 -1
  189. package/dist/src/highlight.js +0 -185
  190. package/dist/src/highlight.js.map +0 -1
  191. package/dist/src/index.js +0 -66
  192. package/dist/src/index.js.map +0 -1
  193. package/dist/src/input.js +0 -158
  194. package/dist/src/input.js.map +0 -1
  195. package/dist/src/pipeline.js +0 -273
  196. package/dist/src/pipeline.js.map +0 -1
  197. package/dist/src/prompts/autocomplete.js +0 -171
  198. package/dist/src/prompts/autocomplete.js.map +0 -1
  199. package/dist/src/prompts/box.js +0 -225
  200. package/dist/src/prompts/box.js.map +0 -1
  201. package/dist/src/prompts/breadcrumb-search.js +0 -260
  202. package/dist/src/prompts/breadcrumb-search.js.map +0 -1
  203. package/dist/src/prompts/breadcrumb.js +0 -307
  204. package/dist/src/prompts/breadcrumb.js.map +0 -1
  205. package/dist/src/prompts/byte.js +0 -176
  206. package/dist/src/prompts/byte.js.map +0 -1
  207. package/dist/src/prompts/calculator.js +0 -243
  208. package/dist/src/prompts/calculator.js.map +0 -1
  209. package/dist/src/prompts/calendar.js +0 -430
  210. package/dist/src/prompts/calendar.js.map +0 -1
  211. package/dist/src/prompts/checkbox.js +0 -159
  212. package/dist/src/prompts/checkbox.js.map +0 -1
  213. package/dist/src/prompts/code.js +0 -271
  214. package/dist/src/prompts/code.js.map +0 -1
  215. package/dist/src/prompts/color.js +0 -165
  216. package/dist/src/prompts/color.js.map +0 -1
  217. package/dist/src/prompts/confirm.js +0 -55
  218. package/dist/src/prompts/confirm.js.map +0 -1
  219. package/dist/src/prompts/connection-string.js +0 -120
  220. package/dist/src/prompts/connection-string.js.map +0 -1
  221. package/dist/src/prompts/cron.js +0 -207
  222. package/dist/src/prompts/cron.js.map +0 -1
  223. package/dist/src/prompts/curl-utils.js +0 -71
  224. package/dist/src/prompts/curl-utils.js.map +0 -1
  225. package/dist/src/prompts/curl.js +0 -431
  226. package/dist/src/prompts/curl.js.map +0 -1
  227. package/dist/src/prompts/data-inspector.js +0 -261
  228. package/dist/src/prompts/data-inspector.js.map +0 -1
  229. package/dist/src/prompts/date.js +0 -185
  230. package/dist/src/prompts/date.js.map +0 -1
  231. package/dist/src/prompts/dependency.js +0 -283
  232. package/dist/src/prompts/dependency.js.map +0 -1
  233. package/dist/src/prompts/dial.js +0 -124
  234. package/dist/src/prompts/dial.js.map +0 -1
  235. package/dist/src/prompts/diff.js +0 -118
  236. package/dist/src/prompts/diff.js.map +0 -1
  237. package/dist/src/prompts/draw.js +0 -191
  238. package/dist/src/prompts/draw.js.map +0 -1
  239. package/dist/src/prompts/editor.js +0 -234
  240. package/dist/src/prompts/editor.js.map +0 -1
  241. package/dist/src/prompts/emoji.js +0 -226
  242. package/dist/src/prompts/emoji.js.map +0 -1
  243. package/dist/src/prompts/exec.js +0 -151
  244. package/dist/src/prompts/exec.js.map +0 -1
  245. package/dist/src/prompts/file.js +0 -217
  246. package/dist/src/prompts/file.js.map +0 -1
  247. package/dist/src/prompts/form.js +0 -241
  248. package/dist/src/prompts/form.js.map +0 -1
  249. package/dist/src/prompts/fuzzy-multi-column.js +0 -161
  250. package/dist/src/prompts/fuzzy-multi-column.js.map +0 -1
  251. package/dist/src/prompts/fuzzy.js +0 -147
  252. package/dist/src/prompts/fuzzy.js.map +0 -1
  253. package/dist/src/prompts/gauge.js +0 -137
  254. package/dist/src/prompts/gauge.js.map +0 -1
  255. package/dist/src/prompts/grid.js +0 -191
  256. package/dist/src/prompts/grid.js.map +0 -1
  257. package/dist/src/prompts/heatmap.js +0 -147
  258. package/dist/src/prompts/heatmap.js.map +0 -1
  259. package/dist/src/prompts/ip.js +0 -138
  260. package/dist/src/prompts/ip.js.map +0 -1
  261. package/dist/src/prompts/kanban.js +0 -233
  262. package/dist/src/prompts/kanban.js.map +0 -1
  263. package/dist/src/prompts/keypress.js +0 -54
  264. package/dist/src/prompts/keypress.js.map +0 -1
  265. package/dist/src/prompts/license.js +0 -144
  266. package/dist/src/prompts/license.js.map +0 -1
  267. package/dist/src/prompts/list.js +0 -124
  268. package/dist/src/prompts/list.js.map +0 -1
  269. package/dist/src/prompts/map.js +0 -262
  270. package/dist/src/prompts/map.js.map +0 -1
  271. package/dist/src/prompts/match.js +0 -271
  272. package/dist/src/prompts/match.js.map +0 -1
  273. package/dist/src/prompts/miller.js +0 -228
  274. package/dist/src/prompts/miller.js.map +0 -1
  275. package/dist/src/prompts/multi-column-select.js +0 -176
  276. package/dist/src/prompts/multi-column-select.js.map +0 -1
  277. package/dist/src/prompts/multi-range.js +0 -189
  278. package/dist/src/prompts/multi-range.js.map +0 -1
  279. package/dist/src/prompts/multi-select.js +0 -183
  280. package/dist/src/prompts/multi-select.js.map +0 -1
  281. package/dist/src/prompts/number.js +0 -166
  282. package/dist/src/prompts/number.js.map +0 -1
  283. package/dist/src/prompts/otp.js +0 -107
  284. package/dist/src/prompts/otp.js.map +0 -1
  285. package/dist/src/prompts/pattern.js +0 -252
  286. package/dist/src/prompts/pattern.js.map +0 -1
  287. package/dist/src/prompts/phone.js +0 -398
  288. package/dist/src/prompts/phone.js.map +0 -1
  289. package/dist/src/prompts/quiz-select.js +0 -114
  290. package/dist/src/prompts/quiz-select.js.map +0 -1
  291. package/dist/src/prompts/quiz-text.js +0 -98
  292. package/dist/src/prompts/quiz-text.js.map +0 -1
  293. package/dist/src/prompts/range.js +0 -164
  294. package/dist/src/prompts/range.js.map +0 -1
  295. package/dist/src/prompts/rating.js +0 -83
  296. package/dist/src/prompts/rating.js.map +0 -1
  297. package/dist/src/prompts/regex.js +0 -145
  298. package/dist/src/prompts/regex.js.map +0 -1
  299. package/dist/src/prompts/region.js +0 -170
  300. package/dist/src/prompts/region.js.map +0 -1
  301. package/dist/src/prompts/schedule.js +0 -270
  302. package/dist/src/prompts/schedule.js.map +0 -1
  303. package/dist/src/prompts/scroll.js +0 -155
  304. package/dist/src/prompts/scroll.js.map +0 -1
  305. package/dist/src/prompts/seat.js +0 -164
  306. package/dist/src/prompts/seat.js.map +0 -1
  307. package/dist/src/prompts/select-range.js +0 -148
  308. package/dist/src/prompts/select-range.js.map +0 -1
  309. package/dist/src/prompts/select.js +0 -163
  310. package/dist/src/prompts/select.js.map +0 -1
  311. package/dist/src/prompts/semver.js +0 -43
  312. package/dist/src/prompts/semver.js.map +0 -1
  313. package/dist/src/prompts/shortcut.js +0 -133
  314. package/dist/src/prompts/shortcut.js.map +0 -1
  315. package/dist/src/prompts/slider.js +0 -69
  316. package/dist/src/prompts/slider.js.map +0 -1
  317. package/dist/src/prompts/slot.js +0 -117
  318. package/dist/src/prompts/slot.js.map +0 -1
  319. package/dist/src/prompts/snippet.js +0 -228
  320. package/dist/src/prompts/snippet.js.map +0 -1
  321. package/dist/src/prompts/sort-grid.js +0 -151
  322. package/dist/src/prompts/sort-grid.js.map +0 -1
  323. package/dist/src/prompts/sort.js +0 -166
  324. package/dist/src/prompts/sort.js.map +0 -1
  325. package/dist/src/prompts/spam.js +0 -80
  326. package/dist/src/prompts/spam.js.map +0 -1
  327. package/dist/src/prompts/spreadsheet.js +0 -240
  328. package/dist/src/prompts/spreadsheet.js.map +0 -1
  329. package/dist/src/prompts/table.js +0 -120
  330. package/dist/src/prompts/table.js.map +0 -1
  331. package/dist/src/prompts/text.js +0 -317
  332. package/dist/src/prompts/text.js.map +0 -1
  333. package/dist/src/prompts/time.js +0 -211
  334. package/dist/src/prompts/time.js.map +0 -1
  335. package/dist/src/prompts/toggle.js +0 -53
  336. package/dist/src/prompts/toggle.js.map +0 -1
  337. package/dist/src/prompts/transfer.js +0 -207
  338. package/dist/src/prompts/transfer.js.map +0 -1
  339. package/dist/src/prompts/tree-select.js +0 -270
  340. package/dist/src/prompts/tree-select.js.map +0 -1
  341. package/dist/src/prompts/tree.js +0 -233
  342. package/dist/src/prompts/tree.js.map +0 -1
  343. package/dist/src/prompts/wait.js +0 -79
  344. package/dist/src/prompts/wait.js.map +0 -1
  345. package/dist/src/spinner.js +0 -105
  346. package/dist/src/spinner.js.map +0 -1
  347. package/dist/src/symbols.js +0 -66
  348. package/dist/src/symbols.js.map +0 -1
  349. package/dist/src/tasks.js +0 -231
  350. package/dist/src/tasks.js.map +0 -1
  351. package/dist/src/theme.js +0 -29
  352. package/dist/src/theme.js.map +0 -1
  353. package/dist/src/types.js +0 -8
  354. package/dist/src/types.js.map +0 -1
  355. package/dist/src/utils.js +0 -480
  356. package/dist/src/utils.js.map +0 -1
package/dist/ansi.d.ts ADDED
@@ -0,0 +1,36 @@
1
+ /**
2
+ * ANSI Escape Codes
3
+ * Manual definitions to maintain zero-dependency status.
4
+ */
5
+ export declare const ANSI: {
6
+ RESET: string;
7
+ BOLD: string;
8
+ DIM: string;
9
+ ITALIC: string;
10
+ UNDERLINE: string;
11
+ REVERSE: string;
12
+ FG_GREEN: string;
13
+ FG_CYAN: string;
14
+ FG_YELLOW: string;
15
+ FG_RED: string;
16
+ FG_GRAY: string;
17
+ FG_WHITE: string;
18
+ FG_BLUE: string;
19
+ FG_MAGENTA: string;
20
+ FG_BLACK: string;
21
+ BG_YELLOW: string;
22
+ BG_BLUE: string;
23
+ BG_CYAN: string;
24
+ BG_GREEN: string;
25
+ BG_RED: string;
26
+ ERASE_LINE: string;
27
+ ERASE_DOWN: string;
28
+ CURSOR_LEFT: string;
29
+ HIDE_CURSOR: string;
30
+ SHOW_CURSOR: string;
31
+ UP: string;
32
+ DOWN: string;
33
+ SET_ANY_EVENT_MOUSE: string;
34
+ SET_SGR_EXT_MODE_MOUSE: string;
35
+ DISABLE_MOUSE: string;
36
+ };
package/dist/ansi.js ADDED
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"ANSI",{enumerable:true,get:function(){return ANSI}});const ANSI={RESET:"\x1b[0m",BOLD:"\x1b[1m",DIM:"\x1b[2m",ITALIC:"\x1b[3m",UNDERLINE:"\x1b[4m",REVERSE:"\x1b[7m",FG_GREEN:"\x1b[32m",FG_CYAN:"\x1b[36m",FG_YELLOW:"\x1b[33m",FG_RED:"\x1b[31m",FG_GRAY:"\x1b[90m",FG_WHITE:"\x1b[37m",FG_BLUE:"\x1b[34m",FG_MAGENTA:"\x1b[35m",FG_BLACK:"\x1b[30m",BG_YELLOW:"\x1b[43m",BG_BLUE:"\x1b[44m",BG_CYAN:"\x1b[46m",BG_GREEN:"\x1b[42m",BG_RED:"\x1b[41m",ERASE_LINE:"\x1b[2K",ERASE_DOWN:"\x1b[J",CURSOR_LEFT:"\x1b[1000D",HIDE_CURSOR:"\x1b[?25l",SHOW_CURSOR:"\x1b[?25h",UP:"\x1b[A",DOWN:"\x1b[B",SET_ANY_EVENT_MOUSE:"\x1b[?1003h",SET_SGR_EXT_MODE_MOUSE:"\x1b[?1006h",DISABLE_MOUSE:"\x1b[?1003l\x1b[?1006l"};
package/dist/base.d.ts ADDED
@@ -0,0 +1,60 @@
1
+ import { MouseEvent } from './types';
2
+ import { detectCapabilities } from './utils';
3
+ /**
4
+ * Abstract base class for all prompts.
5
+ * Implements a Robust Linear Scan Diffing Engine.
6
+ */
7
+ export declare abstract class Prompt<T, O> {
8
+ protected options: O;
9
+ protected value: any;
10
+ protected stdin: NodeJS.ReadStream;
11
+ protected stdout: NodeJS.WriteStream;
12
+ private _resolve?;
13
+ private _reject?;
14
+ private _inputParser;
15
+ private _onKeyHandler?;
16
+ private _onDataHandler?;
17
+ private static warnedComponents;
18
+ protected lastRenderLines: string[];
19
+ protected lastRenderHeight: number;
20
+ protected capabilities: ReturnType<typeof detectCapabilities>;
21
+ constructor(options: O);
22
+ /**
23
+ * Checks if running on Windows and logs a warning message once per component type.
24
+ * Call this in the constructor of problematic prompts.
25
+ */
26
+ protected checkWindowsAttention(): void;
27
+ /**
28
+ * Warn about experimental prompts.
29
+ * Call this in the constructor of experimental prompts.
30
+ */
31
+ protected warnExperimental(): void;
32
+ protected abstract render(firstRender: boolean): void;
33
+ protected abstract handleInput(char: string, key: Buffer): void;
34
+ protected handleMouse(_event: MouseEvent): void;
35
+ protected print(text: string): void;
36
+ run(): Promise<T>;
37
+ /**
38
+ * Pauses the input stream and removes listeners.
39
+ * Useful for yielding control to child processes.
40
+ */
41
+ protected pauseInput(): void;
42
+ /**
43
+ * Resumes the input stream and re-attaches listeners.
44
+ */
45
+ protected resumeInput(): void;
46
+ protected cleanup(): void;
47
+ protected submit(result: T): void;
48
+ protected cancel(reason: any): void;
49
+ /**
50
+ * Renders the frame using a linear scan diffing algorithm.
51
+ * Prevents flicker and handles height changes (expand/collapse) robustly.
52
+ */
53
+ protected renderFrame(content: string): void;
54
+ protected stripAnsi(str: string): string;
55
+ protected truncate(str: string, width: number): string;
56
+ protected isUp(char: string): boolean;
57
+ protected isDown(char: string): boolean;
58
+ protected isRight(char: string): boolean;
59
+ protected isLeft(char: string): boolean;
60
+ }
package/dist/base.js ADDED
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"Prompt",{enumerable:true,get:function(){return Prompt}});const _ansi=require("./ansi");const _input=require("./input");const _utils=require("./utils");function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}let Prompt=class Prompt{checkWindowsAttention(){const componentName=this.constructor.name;if(process.platform==="win32"&&!Prompt.warnedComponents.has(componentName)){console.warn(`${_ansi.ANSI.FG_YELLOW}Warning:${_ansi.ANSI.RESET} ${componentName} may hang on Windows TTY after multiple cycles. `+`Press 'Enter' if unresponsive.`);Prompt.warnedComponents.add(componentName)}}warnExperimental(){const componentName=this.constructor.name;if(!Prompt.warnedComponents.has(componentName)){console.warn(`${_ansi.ANSI.FG_YELLOW}Warning:${_ansi.ANSI.RESET} ${componentName} is an experimental prompt and may have bugs or unexpected behavior. `+`Use with caution.`);Prompt.warnedComponents.add(componentName)}}handleMouse(_event){}print(text){this.stdout.write(text)}run(){return new Promise((resolve,reject)=>{this._resolve=resolve;this._reject=reject;if(typeof this.stdin.setRawMode==="function"){this.stdin.setRawMode(true)}this.stdin.resume();this.stdin.setEncoding("utf8");const shouldEnableMouse=this.options.mouse!==false&&this.capabilities.hasMouse;if(shouldEnableMouse){this.print(_ansi.ANSI.SET_ANY_EVENT_MOUSE+_ansi.ANSI.SET_SGR_EXT_MODE_MOUSE)}this.print(_ansi.ANSI.HIDE_CURSOR);this.render(true);this._onKeyHandler=(char,buffer)=>{if(char==="\x03"){this.cleanup();this.print(_ansi.ANSI.SHOW_CURSOR+"\n");if(this._reject)this._reject(new Error("User force closed"));return}this.handleInput(char,buffer)};this._inputParser.on("keypress",this._onKeyHandler);this._inputParser.on("mouse",event=>{this.handleMouse(event)});this._onDataHandler=buffer=>{this._inputParser.feed(buffer)};this.stdin.on("data",this._onDataHandler)})}pauseInput(){if(this._onDataHandler){this.stdin.removeListener("data",this._onDataHandler)}if(typeof this.stdin.setRawMode==="function"){this.stdin.setRawMode(false)}this.stdin.pause()}resumeInput(){if(typeof this.stdin.setRawMode==="function"){this.stdin.setRawMode(true)}this.stdin.resume();if(this._onDataHandler){this.stdin.on("data",this._onDataHandler)}}cleanup(){if(this._onDataHandler){this.stdin.removeListener("data",this._onDataHandler)}if(this._onKeyHandler){this._inputParser.removeListener("keypress",this._onKeyHandler)}this.print(_ansi.ANSI.DISABLE_MOUSE);if(typeof this.stdin.setRawMode==="function"){this.stdin.setRawMode(false)}this.stdin.pause();this.print(_ansi.ANSI.SHOW_CURSOR)}submit(result){this.cleanup();this.print("\n");if(this._resolve)this._resolve(result)}cancel(reason){this.cleanup();this.print("\n");if(this._reject)this._reject(reason)}renderFrame(content){const width=this.stdout.columns||80;const rawLines=content.split("\n");const newLines=rawLines.map(line=>this.truncate(line,width));if(this.lastRenderLines.length===0){this.print(newLines.join("\n"));this.lastRenderLines=newLines;this.lastRenderHeight=newLines.length;return}let outputBuffer="";if(this.lastRenderHeight>1){outputBuffer+=`\x1b[${this.lastRenderHeight-1}A`}outputBuffer+="\r";for(let i=0;i<newLines.length;i++){const newLine=newLines[i];if(i>0){if(i<this.lastRenderLines.length){outputBuffer+="\x1b[B\r"}else{outputBuffer+="\n"}}if(i<this.lastRenderLines.length){const oldLine=this.lastRenderLines[i];if(newLine!==oldLine){outputBuffer+=_ansi.ANSI.ERASE_LINE+newLine}}else{outputBuffer+=newLine}}if(newLines.length<this.lastRenderLines.length){outputBuffer+="\n";outputBuffer+=_ansi.ANSI.ERASE_DOWN;outputBuffer+=`\x1b[A`}this.print(outputBuffer);this.lastRenderLines=newLines;this.lastRenderHeight=newLines.length}stripAnsi(str){return(0,_utils.stripAnsi)(str)}truncate(str,width){const visualWidth=(0,_utils.stringWidth)(str);if(visualWidth<=width){return str}let currentWidth=0;let cutIndex=0;let inAnsi=false;for(let i=0;i<str.length;i++){if(str[i]==="\x1b")inAnsi=true;if(!inAnsi){const code=str.charCodeAt(i);const charWidth=code>255?2:1;if(currentWidth+charWidth>width-3){break}currentWidth+=charWidth}else{if(str[i]==="m"||str[i]>="A"&&str[i]<="Z")inAnsi=false}cutIndex=i+1}return str.substring(0,cutIndex)+"..."+_ansi.ANSI.RESET}isUp(char){return char==="\x1b[A"||char==="\x1bOA"}isDown(char){return char==="\x1b[B"||char==="\x1bOB"}isRight(char){return char==="\x1b[C"||char==="\x1bOC"}isLeft(char){return char==="\x1b[D"||char==="\x1bOD"}constructor(options){_define_property(this,"options",void 0);_define_property(this,"value",void 0);_define_property(this,"stdin",void 0);_define_property(this,"stdout",void 0);_define_property(this,"_resolve",void 0);_define_property(this,"_reject",void 0);_define_property(this,"_inputParser",void 0);_define_property(this,"_onKeyHandler",void 0);_define_property(this,"_onDataHandler",void 0);_define_property(this,"lastRenderLines",[]);_define_property(this,"lastRenderHeight",0);_define_property(this,"capabilities",void 0);this.options=options;this.stdin=process.stdin;this.stdout=process.stdout;this._inputParser=new _input.InputParser;this.capabilities=(0,_utils.detectCapabilities)()}};_define_property(Prompt,"warnedComponents",new Set);