mepcli 2.0.0-beta.2 → 2.0.0-beta.4

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 (358) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +20 -0
  3. package/dist/ansi.d.ts +36 -0
  4. package/dist/ansi.js +1 -0
  5. package/dist/base.d.ts +61 -0
  6. package/dist/base.js +1 -0
  7. package/dist/{src/core.js → core.d.ts} +181 -345
  8. package/dist/core.js +1 -0
  9. package/dist/data/countries.d.ts +2 -0
  10. package/dist/data/countries.js +1 -0
  11. package/dist/data/licenses.d.ts +2 -0
  12. package/dist/data/licenses.js +1 -0
  13. package/dist/highlight.d.ts +7 -0
  14. package/dist/highlight.js +1 -0
  15. package/dist/index.d.ts +52 -0
  16. package/dist/index.js +1 -0
  17. package/dist/input.d.ts +14 -0
  18. package/dist/input.js +1 -0
  19. package/dist/pipeline.d.ts +90 -0
  20. package/dist/pipeline.js +1 -0
  21. package/dist/prompts/autocomplete.d.ts +22 -0
  22. package/dist/prompts/autocomplete.js +1 -0
  23. package/dist/prompts/box.d.ts +21 -0
  24. package/dist/prompts/box.js +4 -0
  25. package/dist/prompts/breadcrumb-search.d.ts +14 -0
  26. package/dist/prompts/breadcrumb-search.js +2 -0
  27. package/dist/prompts/breadcrumb.d.ts +32 -0
  28. package/dist/prompts/breadcrumb.js +3 -0
  29. package/dist/prompts/byte.d.ts +13 -0
  30. package/dist/prompts/byte.js +5 -0
  31. package/dist/prompts/calculator.d.ts +17 -0
  32. package/dist/prompts/calculator.js +3 -0
  33. package/dist/prompts/calendar.d.ts +33 -0
  34. package/dist/prompts/calendar.js +3 -0
  35. package/dist/prompts/checkbox.d.ts +13 -0
  36. package/dist/prompts/checkbox.js +2 -0
  37. package/dist/prompts/code.d.ts +19 -0
  38. package/dist/prompts/code.js +4 -0
  39. package/dist/prompts/color.d.ts +14 -0
  40. package/dist/prompts/color.js +10 -0
  41. package/dist/prompts/confirm.d.ts +8 -0
  42. package/dist/prompts/confirm.js +1 -0
  43. package/dist/prompts/connection-string.d.ts +18 -0
  44. package/dist/prompts/connection-string.js +1 -0
  45. package/dist/prompts/cron.d.ts +13 -0
  46. package/dist/prompts/cron.js +4 -0
  47. package/dist/prompts/curl-utils.d.ts +25 -0
  48. package/dist/prompts/curl-utils.js +1 -0
  49. package/dist/prompts/curl.d.ts +41 -0
  50. package/dist/prompts/curl.js +12 -0
  51. package/dist/prompts/data-inspector.d.ts +22 -0
  52. package/dist/prompts/data-inspector.js +5 -0
  53. package/dist/prompts/date.d.ts +12 -0
  54. package/dist/prompts/date.js +2 -0
  55. package/dist/prompts/dependency.d.ts +16 -0
  56. package/dist/prompts/dependency.js +3 -0
  57. package/dist/prompts/dial.d.ts +10 -0
  58. package/dist/prompts/dial.js +3 -0
  59. package/dist/prompts/diff.d.ts +10 -0
  60. package/dist/prompts/diff.js +10 -0
  61. package/dist/prompts/draw.d.ts +20 -0
  62. package/dist/prompts/draw.js +6 -0
  63. package/dist/prompts/editor.d.ts +14 -0
  64. package/dist/prompts/editor.js +2 -0
  65. package/dist/prompts/emoji.d.ts +18 -0
  66. package/dist/prompts/emoji.js +5 -0
  67. package/dist/prompts/exec.d.ts +17 -0
  68. package/dist/prompts/exec.js +1 -0
  69. package/dist/prompts/file.d.ts +21 -0
  70. package/dist/prompts/file.js +2 -0
  71. package/dist/prompts/form.d.ts +18 -0
  72. package/dist/prompts/form.js +1 -0
  73. package/dist/prompts/fuzzy-multi-column.d.ts +12 -0
  74. package/dist/prompts/fuzzy-multi-column.js +2 -0
  75. package/dist/prompts/fuzzy.d.ts +12 -0
  76. package/dist/prompts/fuzzy.js +2 -0
  77. package/dist/prompts/gauge.d.ts +21 -0
  78. package/dist/prompts/gauge.js +4 -0
  79. package/dist/prompts/grid.d.ts +14 -0
  80. package/dist/prompts/grid.js +2 -0
  81. package/dist/prompts/heatmap.d.ts +13 -0
  82. package/dist/prompts/heatmap.js +2 -0
  83. package/dist/prompts/ip.d.ts +11 -0
  84. package/dist/prompts/ip.js +3 -0
  85. package/dist/prompts/kanban.d.ts +17 -0
  86. package/dist/prompts/kanban.js +4 -0
  87. package/dist/prompts/keypress.d.ts +7 -0
  88. package/dist/prompts/keypress.js +1 -0
  89. package/dist/prompts/license.d.ts +9 -0
  90. package/dist/prompts/license.js +13 -0
  91. package/dist/prompts/list.d.ts +9 -0
  92. package/dist/prompts/list.js +1 -0
  93. package/dist/prompts/map.d.ts +17 -0
  94. package/dist/prompts/map.js +5 -0
  95. package/dist/prompts/match.d.ts +19 -0
  96. package/dist/prompts/match.js +7 -0
  97. package/dist/prompts/miller.d.ts +15 -0
  98. package/dist/prompts/miller.js +2 -0
  99. package/dist/prompts/multi-column-select.d.ts +10 -0
  100. package/dist/prompts/multi-column-select.js +2 -0
  101. package/dist/prompts/multi-range.d.ts +9 -0
  102. package/dist/prompts/multi-range.js +3 -0
  103. package/dist/prompts/multi-select.d.ts +15 -0
  104. package/dist/prompts/multi-select.js +4 -0
  105. package/dist/prompts/number.d.ts +11 -0
  106. package/dist/prompts/number.js +2 -0
  107. package/dist/prompts/otp.d.ts +10 -0
  108. package/dist/prompts/otp.js +2 -0
  109. package/dist/prompts/pattern.d.ts +22 -0
  110. package/dist/prompts/pattern.js +4 -0
  111. package/dist/prompts/phone.d.ts +41 -0
  112. package/dist/prompts/phone.js +3 -0
  113. package/dist/prompts/quiz-select.d.ts +10 -0
  114. package/dist/prompts/quiz-select.js +7 -0
  115. package/dist/prompts/quiz-text.d.ts +11 -0
  116. package/dist/prompts/quiz-text.js +8 -0
  117. package/dist/prompts/range.d.ts +9 -0
  118. package/dist/prompts/range.js +1 -0
  119. package/dist/prompts/rating.d.ts +8 -0
  120. package/dist/prompts/rating.js +1 -0
  121. package/dist/prompts/regex.d.ts +13 -0
  122. package/dist/prompts/regex.js +5 -0
  123. package/dist/prompts/region.d.ts +11 -0
  124. package/dist/prompts/region.js +5 -0
  125. package/dist/prompts/schedule.d.ts +20 -0
  126. package/dist/prompts/schedule.js +5 -0
  127. package/dist/prompts/scroll.d.ts +13 -0
  128. package/dist/prompts/scroll.js +1 -0
  129. package/dist/prompts/seat.d.ts +17 -0
  130. package/dist/prompts/seat.js +5 -0
  131. package/dist/prompts/select-range.d.ts +8 -0
  132. package/dist/prompts/select-range.js +3 -0
  133. package/dist/prompts/select.d.ts +15 -0
  134. package/dist/prompts/select.js +2 -0
  135. package/dist/prompts/semver.d.ts +6 -0
  136. package/dist/prompts/semver.js +1 -0
  137. package/dist/prompts/shortcut.d.ts +9 -0
  138. package/dist/prompts/shortcut.js +1 -0
  139. package/dist/prompts/slider.d.ts +8 -0
  140. package/dist/prompts/slider.js +1 -0
  141. package/dist/prompts/slot.d.ts +16 -0
  142. package/dist/prompts/slot.js +8 -0
  143. package/dist/prompts/snippet.d.ts +19 -0
  144. package/dist/prompts/snippet.js +4 -0
  145. package/dist/prompts/sort-grid.d.ts +16 -0
  146. package/dist/prompts/sort-grid.js +2 -0
  147. package/dist/prompts/sort.d.ts +14 -0
  148. package/dist/prompts/sort.js +2 -0
  149. package/dist/prompts/spam.d.ts +17 -0
  150. package/dist/prompts/spam.js +2 -0
  151. package/dist/prompts/spreadsheet.d.ts +21 -0
  152. package/dist/prompts/spreadsheet.js +7 -0
  153. package/dist/prompts/table.d.ts +14 -0
  154. package/dist/prompts/table.js +3 -0
  155. package/dist/prompts/text.d.ts +17 -0
  156. package/dist/prompts/text.js +2 -0
  157. package/dist/prompts/time.d.ts +12 -0
  158. package/dist/prompts/time.js +2 -0
  159. package/dist/prompts/toggle.d.ts +8 -0
  160. package/dist/prompts/toggle.js +1 -0
  161. package/dist/prompts/transfer.d.ts +18 -0
  162. package/dist/prompts/transfer.js +5 -0
  163. package/dist/prompts/tree-select.d.ts +31 -0
  164. package/dist/prompts/tree-select.js +3 -0
  165. package/dist/prompts/tree.d.ts +20 -0
  166. package/dist/prompts/tree.js +3 -0
  167. package/dist/prompts/wait.d.ts +18 -0
  168. package/dist/prompts/wait.js +1 -0
  169. package/dist/spinner.d.ts +33 -0
  170. package/dist/spinner.js +3 -0
  171. package/dist/symbols.d.ts +33 -0
  172. package/dist/symbols.js +1 -0
  173. package/dist/tasks.d.ts +57 -0
  174. package/dist/tasks.js +1 -0
  175. package/dist/theme.d.ts +2 -0
  176. package/dist/theme.js +1 -0
  177. package/dist/types.d.ts +519 -0
  178. package/dist/types.js +1 -0
  179. package/dist/utils.d.ts +82 -0
  180. package/dist/utils.js +1 -0
  181. package/package.json +10 -10
  182. package/dist/src/ansi.js +0 -50
  183. package/dist/src/ansi.js.map +0 -1
  184. package/dist/src/base.js +0 -258
  185. package/dist/src/base.js.map +0 -1
  186. package/dist/src/core.js.map +0 -1
  187. package/dist/src/data/countries.js +0 -569
  188. package/dist/src/data/countries.js.map +0 -1
  189. package/dist/src/data/licenses.js +0 -480
  190. package/dist/src/data/licenses.js.map +0 -1
  191. package/dist/src/highlight.js +0 -185
  192. package/dist/src/highlight.js.map +0 -1
  193. package/dist/src/index.js +0 -66
  194. package/dist/src/index.js.map +0 -1
  195. package/dist/src/input.js +0 -158
  196. package/dist/src/input.js.map +0 -1
  197. package/dist/src/pipeline.js +0 -273
  198. package/dist/src/pipeline.js.map +0 -1
  199. package/dist/src/prompts/autocomplete.js +0 -171
  200. package/dist/src/prompts/autocomplete.js.map +0 -1
  201. package/dist/src/prompts/box.js +0 -225
  202. package/dist/src/prompts/box.js.map +0 -1
  203. package/dist/src/prompts/breadcrumb-search.js +0 -260
  204. package/dist/src/prompts/breadcrumb-search.js.map +0 -1
  205. package/dist/src/prompts/breadcrumb.js +0 -307
  206. package/dist/src/prompts/breadcrumb.js.map +0 -1
  207. package/dist/src/prompts/byte.js +0 -176
  208. package/dist/src/prompts/byte.js.map +0 -1
  209. package/dist/src/prompts/calculator.js +0 -243
  210. package/dist/src/prompts/calculator.js.map +0 -1
  211. package/dist/src/prompts/calendar.js +0 -430
  212. package/dist/src/prompts/calendar.js.map +0 -1
  213. package/dist/src/prompts/checkbox.js +0 -159
  214. package/dist/src/prompts/checkbox.js.map +0 -1
  215. package/dist/src/prompts/code.js +0 -271
  216. package/dist/src/prompts/code.js.map +0 -1
  217. package/dist/src/prompts/color.js +0 -165
  218. package/dist/src/prompts/color.js.map +0 -1
  219. package/dist/src/prompts/confirm.js +0 -55
  220. package/dist/src/prompts/confirm.js.map +0 -1
  221. package/dist/src/prompts/connection-string.js +0 -120
  222. package/dist/src/prompts/connection-string.js.map +0 -1
  223. package/dist/src/prompts/cron.js +0 -207
  224. package/dist/src/prompts/cron.js.map +0 -1
  225. package/dist/src/prompts/curl-utils.js +0 -71
  226. package/dist/src/prompts/curl-utils.js.map +0 -1
  227. package/dist/src/prompts/curl.js +0 -431
  228. package/dist/src/prompts/curl.js.map +0 -1
  229. package/dist/src/prompts/data-inspector.js +0 -261
  230. package/dist/src/prompts/data-inspector.js.map +0 -1
  231. package/dist/src/prompts/date.js +0 -185
  232. package/dist/src/prompts/date.js.map +0 -1
  233. package/dist/src/prompts/dependency.js +0 -283
  234. package/dist/src/prompts/dependency.js.map +0 -1
  235. package/dist/src/prompts/dial.js +0 -124
  236. package/dist/src/prompts/dial.js.map +0 -1
  237. package/dist/src/prompts/diff.js +0 -118
  238. package/dist/src/prompts/diff.js.map +0 -1
  239. package/dist/src/prompts/draw.js +0 -191
  240. package/dist/src/prompts/draw.js.map +0 -1
  241. package/dist/src/prompts/editor.js +0 -234
  242. package/dist/src/prompts/editor.js.map +0 -1
  243. package/dist/src/prompts/emoji.js +0 -226
  244. package/dist/src/prompts/emoji.js.map +0 -1
  245. package/dist/src/prompts/exec.js +0 -151
  246. package/dist/src/prompts/exec.js.map +0 -1
  247. package/dist/src/prompts/file.js +0 -217
  248. package/dist/src/prompts/file.js.map +0 -1
  249. package/dist/src/prompts/form.js +0 -241
  250. package/dist/src/prompts/form.js.map +0 -1
  251. package/dist/src/prompts/fuzzy-multi-column.js +0 -161
  252. package/dist/src/prompts/fuzzy-multi-column.js.map +0 -1
  253. package/dist/src/prompts/fuzzy.js +0 -147
  254. package/dist/src/prompts/fuzzy.js.map +0 -1
  255. package/dist/src/prompts/gauge.js +0 -137
  256. package/dist/src/prompts/gauge.js.map +0 -1
  257. package/dist/src/prompts/grid.js +0 -191
  258. package/dist/src/prompts/grid.js.map +0 -1
  259. package/dist/src/prompts/heatmap.js +0 -147
  260. package/dist/src/prompts/heatmap.js.map +0 -1
  261. package/dist/src/prompts/ip.js +0 -138
  262. package/dist/src/prompts/ip.js.map +0 -1
  263. package/dist/src/prompts/kanban.js +0 -233
  264. package/dist/src/prompts/kanban.js.map +0 -1
  265. package/dist/src/prompts/keypress.js +0 -54
  266. package/dist/src/prompts/keypress.js.map +0 -1
  267. package/dist/src/prompts/license.js +0 -144
  268. package/dist/src/prompts/license.js.map +0 -1
  269. package/dist/src/prompts/list.js +0 -124
  270. package/dist/src/prompts/list.js.map +0 -1
  271. package/dist/src/prompts/map.js +0 -262
  272. package/dist/src/prompts/map.js.map +0 -1
  273. package/dist/src/prompts/match.js +0 -271
  274. package/dist/src/prompts/match.js.map +0 -1
  275. package/dist/src/prompts/miller.js +0 -228
  276. package/dist/src/prompts/miller.js.map +0 -1
  277. package/dist/src/prompts/multi-column-select.js +0 -176
  278. package/dist/src/prompts/multi-column-select.js.map +0 -1
  279. package/dist/src/prompts/multi-range.js +0 -189
  280. package/dist/src/prompts/multi-range.js.map +0 -1
  281. package/dist/src/prompts/multi-select.js +0 -183
  282. package/dist/src/prompts/multi-select.js.map +0 -1
  283. package/dist/src/prompts/number.js +0 -166
  284. package/dist/src/prompts/number.js.map +0 -1
  285. package/dist/src/prompts/otp.js +0 -107
  286. package/dist/src/prompts/otp.js.map +0 -1
  287. package/dist/src/prompts/pattern.js +0 -252
  288. package/dist/src/prompts/pattern.js.map +0 -1
  289. package/dist/src/prompts/phone.js +0 -398
  290. package/dist/src/prompts/phone.js.map +0 -1
  291. package/dist/src/prompts/quiz-select.js +0 -114
  292. package/dist/src/prompts/quiz-select.js.map +0 -1
  293. package/dist/src/prompts/quiz-text.js +0 -98
  294. package/dist/src/prompts/quiz-text.js.map +0 -1
  295. package/dist/src/prompts/range.js +0 -164
  296. package/dist/src/prompts/range.js.map +0 -1
  297. package/dist/src/prompts/rating.js +0 -83
  298. package/dist/src/prompts/rating.js.map +0 -1
  299. package/dist/src/prompts/regex.js +0 -145
  300. package/dist/src/prompts/regex.js.map +0 -1
  301. package/dist/src/prompts/region.js +0 -170
  302. package/dist/src/prompts/region.js.map +0 -1
  303. package/dist/src/prompts/schedule.js +0 -270
  304. package/dist/src/prompts/schedule.js.map +0 -1
  305. package/dist/src/prompts/scroll.js +0 -155
  306. package/dist/src/prompts/scroll.js.map +0 -1
  307. package/dist/src/prompts/seat.js +0 -164
  308. package/dist/src/prompts/seat.js.map +0 -1
  309. package/dist/src/prompts/select-range.js +0 -148
  310. package/dist/src/prompts/select-range.js.map +0 -1
  311. package/dist/src/prompts/select.js +0 -163
  312. package/dist/src/prompts/select.js.map +0 -1
  313. package/dist/src/prompts/semver.js +0 -43
  314. package/dist/src/prompts/semver.js.map +0 -1
  315. package/dist/src/prompts/shortcut.js +0 -133
  316. package/dist/src/prompts/shortcut.js.map +0 -1
  317. package/dist/src/prompts/slider.js +0 -69
  318. package/dist/src/prompts/slider.js.map +0 -1
  319. package/dist/src/prompts/slot.js +0 -117
  320. package/dist/src/prompts/slot.js.map +0 -1
  321. package/dist/src/prompts/snippet.js +0 -228
  322. package/dist/src/prompts/snippet.js.map +0 -1
  323. package/dist/src/prompts/sort-grid.js +0 -151
  324. package/dist/src/prompts/sort-grid.js.map +0 -1
  325. package/dist/src/prompts/sort.js +0 -166
  326. package/dist/src/prompts/sort.js.map +0 -1
  327. package/dist/src/prompts/spam.js +0 -80
  328. package/dist/src/prompts/spam.js.map +0 -1
  329. package/dist/src/prompts/spreadsheet.js +0 -240
  330. package/dist/src/prompts/spreadsheet.js.map +0 -1
  331. package/dist/src/prompts/table.js +0 -120
  332. package/dist/src/prompts/table.js.map +0 -1
  333. package/dist/src/prompts/text.js +0 -317
  334. package/dist/src/prompts/text.js.map +0 -1
  335. package/dist/src/prompts/time.js +0 -211
  336. package/dist/src/prompts/time.js.map +0 -1
  337. package/dist/src/prompts/toggle.js +0 -53
  338. package/dist/src/prompts/toggle.js.map +0 -1
  339. package/dist/src/prompts/transfer.js +0 -207
  340. package/dist/src/prompts/transfer.js.map +0 -1
  341. package/dist/src/prompts/tree-select.js +0 -270
  342. package/dist/src/prompts/tree-select.js.map +0 -1
  343. package/dist/src/prompts/tree.js +0 -233
  344. package/dist/src/prompts/tree.js.map +0 -1
  345. package/dist/src/prompts/wait.js +0 -79
  346. package/dist/src/prompts/wait.js.map +0 -1
  347. package/dist/src/spinner.js +0 -105
  348. package/dist/src/spinner.js.map +0 -1
  349. package/dist/src/symbols.js +0 -66
  350. package/dist/src/symbols.js.map +0 -1
  351. package/dist/src/tasks.js +0 -231
  352. package/dist/src/tasks.js.map +0 -1
  353. package/dist/src/theme.js +0 -29
  354. package/dist/src/theme.js.map +0 -1
  355. package/dist/src/types.js +0 -8
  356. package/dist/src/types.js.map +0 -1
  357. package/dist/src/utils.js +0 -480
  358. package/dist/src/utils.js.map +0 -1
@@ -1,120 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "connectionString", {
6
- enumerable: true,
7
- get: function() {
8
- return connectionString;
9
- }
10
- });
11
- const _select = require("./select");
12
- const _text = require("./text");
13
- const _number = require("./number");
14
- const _confirm = require("./confirm");
15
- const _file = require("./file");
16
- const DEFAULT_PROTOCOLS = [
17
- 'postgres',
18
- 'mysql',
19
- 'mongodb',
20
- 'redis',
21
- 'amqp',
22
- 'sqlite'
23
- ];
24
- const DEFAULT_PORTS = {
25
- postgres: 5432,
26
- mysql: 3306,
27
- mongodb: 27017,
28
- redis: 6379,
29
- amqp: 5672
30
- };
31
- async function connectionString(options) {
32
- const protocols = options.protocols || DEFAULT_PROTOCOLS;
33
- const defaults = {
34
- ...DEFAULT_PORTS,
35
- ...options.defaults
36
- };
37
- // 1. Protocol Selection
38
- const protocol = await new _select.SelectPrompt({
39
- message: options.message,
40
- choices: protocols.map((p)=>({
41
- title: p,
42
- value: p
43
- }))
44
- }).run();
45
- const parts = {
46
- protocol
47
- };
48
- let raw = '';
49
- if (protocol === 'sqlite') {
50
- // SQLite: File Path
51
- const filePath = await new _file.FilePrompt({
52
- message: 'Database file path'
53
- }).run();
54
- parts.filePath = filePath;
55
- // Construct SQLite URI
56
- raw = `sqlite://${filePath}`;
57
- } else {
58
- // Network Database
59
- // 2. Host
60
- const host = await new _text.TextPrompt({
61
- message: 'Host',
62
- initial: 'localhost',
63
- placeholder: 'localhost'
64
- }).run();
65
- parts.host = host;
66
- // 3. Port
67
- const defaultPort = defaults[protocol];
68
- const port = await new _number.NumberPrompt({
69
- message: 'Port',
70
- initial: defaultPort
71
- }).run();
72
- parts.port = port;
73
- // 4. Auth
74
- const hasAuth = await new _confirm.ConfirmPrompt({
75
- message: 'Authentication required?',
76
- initial: true
77
- }).run();
78
- if (hasAuth) {
79
- const user = await new _text.TextPrompt({
80
- message: 'Username',
81
- initial: 'root'
82
- }).run();
83
- parts.user = user;
84
- // Use TextPrompt with empty mask for secret handling
85
- const password = await new _text.TextPrompt({
86
- message: 'Password',
87
- mask: '*'
88
- }).run();
89
- parts.password = password;
90
- }
91
- // 5. Database
92
- const database = await new _text.TextPrompt({
93
- message: 'Database name'
94
- }).run();
95
- parts.database = database;
96
- // Construct URL
97
- try {
98
- // Use URL object for safe construction and encoding
99
- const u = new URL(`${protocol}://${host}:${port}/${database}`);
100
- if (parts.user) u.username = parts.user;
101
- if (parts.password) u.password = parts.password;
102
- raw = u.toString();
103
- } catch (_e) {
104
- // Fallback manual construction with encoding
105
- const userEncoded = parts.user ? encodeURIComponent(parts.user) : '';
106
- const passEncoded = parts.password ? encodeURIComponent(parts.password) : '';
107
- let authPart = '';
108
- if (userEncoded || passEncoded) {
109
- authPart = `${userEncoded}:${passEncoded}@`;
110
- }
111
- raw = `${protocol}://${authPart}${host}:${port}/${parts.database}`;
112
- }
113
- }
114
- return {
115
- raw,
116
- parts
117
- };
118
- }
119
-
120
- //# sourceMappingURL=connection-string.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/prompts/connection-string.ts"],"sourcesContent":["import { SelectPrompt } from './select';\nimport { TextPrompt } from './text';\nimport { NumberPrompt } from './number';\nimport { ConfirmPrompt } from './confirm';\nimport { FilePrompt } from './file';\n\nexport interface ConnectionStringOptions {\n message: string;\n protocols?: string[];\n defaults?: Record<string, number>;\n}\n\nexport interface ConnectionStringResult {\n raw: string;\n parts: {\n protocol: string;\n host?: string;\n port?: number;\n user?: string;\n password?: string;\n database?: string;\n filePath?: string;\n };\n}\n\nconst DEFAULT_PROTOCOLS = ['postgres', 'mysql', 'mongodb', 'redis', 'amqp', 'sqlite'];\n\nconst DEFAULT_PORTS: Record<string, number> = {\n postgres: 5432,\n mysql: 3306,\n mongodb: 27017,\n redis: 6379,\n amqp: 5672,\n};\n\nexport async function connectionString(options: ConnectionStringOptions): Promise<ConnectionStringResult> {\n const protocols = options.protocols || DEFAULT_PROTOCOLS;\n const defaults = { ...DEFAULT_PORTS, ...options.defaults };\n\n // 1. Protocol Selection\n const protocol = await new SelectPrompt({\n message: options.message,\n choices: protocols.map(p => ({ title: p, value: p })),\n }).run();\n\n const parts: ConnectionStringResult['parts'] = { protocol };\n let raw = '';\n\n if (protocol === 'sqlite') {\n // SQLite: File Path\n const filePath = await new FilePrompt({\n message: 'Database file path',\n }).run();\n parts.filePath = filePath;\n // Construct SQLite URI\n raw = `sqlite://${filePath}`;\n } else {\n // Network Database\n // 2. Host\n const host = await new TextPrompt({\n message: 'Host',\n initial: 'localhost',\n placeholder: 'localhost',\n }).run();\n parts.host = host;\n\n // 3. Port\n const defaultPort = defaults[protocol];\n const port = await new NumberPrompt({\n message: 'Port',\n initial: defaultPort,\n }).run();\n parts.port = port;\n\n // 4. Auth\n const hasAuth = await new ConfirmPrompt({\n message: 'Authentication required?',\n initial: true,\n }).run();\n\n if (hasAuth) {\n const user = await new TextPrompt({\n message: 'Username',\n initial: 'root', // Common default\n }).run();\n parts.user = user;\n\n // Use TextPrompt with empty mask for secret handling\n const password = await new TextPrompt({\n message: 'Password',\n mask: '*', // Mask with asterisks\n }).run();\n parts.password = password;\n }\n\n // 5. Database\n const database = await new TextPrompt({\n message: 'Database name',\n }).run();\n parts.database = database;\n\n // Construct URL\n try {\n // Use URL object for safe construction and encoding\n const u = new URL(`${protocol}://${host}:${port}/${database}`);\n if (parts.user) u.username = parts.user;\n if (parts.password) u.password = parts.password;\n raw = u.toString();\n } catch (_e) {\n // Fallback manual construction with encoding\n const userEncoded = parts.user ? encodeURIComponent(parts.user) : '';\n const passEncoded = parts.password ? encodeURIComponent(parts.password) : '';\n let authPart = '';\n if (userEncoded || passEncoded) {\n authPart = `${userEncoded}:${passEncoded}@`;\n }\n raw = `${protocol}://${authPart}${host}:${port}/${parts.database}`;\n }\n }\n\n return { raw, parts };\n}\n"],"names":["connectionString","DEFAULT_PROTOCOLS","DEFAULT_PORTS","postgres","mysql","mongodb","redis","amqp","options","protocols","defaults","protocol","SelectPrompt","message","choices","map","p","title","value","run","parts","raw","filePath","FilePrompt","host","TextPrompt","initial","placeholder","defaultPort","port","NumberPrompt","hasAuth","ConfirmPrompt","user","password","mask","database","u","URL","username","toString","_e","userEncoded","encodeURIComponent","passEncoded","authPart"],"mappings":"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"}
@@ -1,207 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "CronPrompt", {
6
- enumerable: true,
7
- get: function() {
8
- return CronPrompt;
9
- }
10
- });
11
- const _ansi = require("../ansi");
12
- const _base = require("../base");
13
- const _theme = require("../theme");
14
- function _define_property(obj, key, value) {
15
- if (key in obj) {
16
- Object.defineProperty(obj, key, {
17
- value: value,
18
- enumerable: true,
19
- configurable: true,
20
- writable: true
21
- });
22
- } else {
23
- obj[key] = value;
24
- }
25
- return obj;
26
- }
27
- const FIELDS = [
28
- {
29
- label: 'Minute',
30
- min: 0,
31
- max: 59
32
- },
33
- {
34
- label: 'Hour',
35
- min: 0,
36
- max: 23
37
- },
38
- {
39
- label: 'Day',
40
- min: 1,
41
- max: 31
42
- },
43
- {
44
- label: 'Month',
45
- min: 1,
46
- max: 12
47
- },
48
- {
49
- label: 'Weekday',
50
- min: 0,
51
- max: 6
52
- }
53
- ];
54
- let CronPrompt = class CronPrompt extends _base.Prompt {
55
- get currentConfig() {
56
- return FIELDS[this.activeField];
57
- }
58
- render(_firstRender) {
59
- let output = `${_theme.theme.success}?${_ansi.ANSI.RESET} ${_ansi.ANSI.BOLD}${_theme.theme.title}${this.options.message}${_ansi.ANSI.RESET}\n`;
60
- // Render fields
61
- let fieldsStr = '';
62
- this.fields.forEach((val, index)=>{
63
- const isSelected = index === this.activeField;
64
- const displayVal = val.padStart(2, ' ');
65
- if (isSelected) {
66
- fieldsStr += `${_theme.theme.main}${_ansi.ANSI.UNDERLINE}${displayVal}${_ansi.ANSI.RESET} `;
67
- } else {
68
- fieldsStr += `${_ansi.ANSI.DIM}${displayVal}${_ansi.ANSI.RESET} `;
69
- }
70
- });
71
- output += ` ${fieldsStr}\n`;
72
- // Render Label and Hints
73
- const config = this.currentConfig;
74
- output += ` ${_theme.theme.muted}${config.label} (${config.min}-${config.max})${_ansi.ANSI.RESET}\n`;
75
- output += ` ${_ansi.ANSI.DIM}(Arrows: Adjust | Space: Toggle * | 0-9: Type | Tab: Next)${_ansi.ANSI.RESET}`;
76
- this.renderFrame(output);
77
- }
78
- validateCurrentField() {
79
- const config = this.currentConfig;
80
- const val = this.fields[this.activeField];
81
- if (val === '*') return;
82
- let num = parseInt(val);
83
- if (isNaN(num)) {
84
- this.fields[this.activeField] = config.min.toString();
85
- } else {
86
- num = Math.max(config.min, Math.min(num, config.max));
87
- this.fields[this.activeField] = num.toString();
88
- }
89
- }
90
- handleInput(char) {
91
- if (char === '\r' || char === '\n') {
92
- this.validateCurrentField();
93
- this.submit(this.fields.join(' '));
94
- return;
95
- }
96
- if (char === '\t' || this.isRight(char)) {
97
- this.validateCurrentField();
98
- this.activeField = (this.activeField + 1) % 5;
99
- this.buffer = '';
100
- this.render(false);
101
- return;
102
- }
103
- // Shift+Tab detection is often '\x1b[Z'
104
- if (char === '\x1b[Z' || this.isLeft(char)) {
105
- this.validateCurrentField();
106
- this.activeField = (this.activeField - 1 + 5) % 5;
107
- this.buffer = '';
108
- this.render(false);
109
- return;
110
- }
111
- const config = this.currentConfig;
112
- const currentVal = this.fields[this.activeField];
113
- let numVal = parseInt(currentVal);
114
- if (this.isUp(char)) {
115
- if (currentVal === '*') {
116
- this.fields[this.activeField] = config.min.toString();
117
- } else if (!isNaN(numVal)) {
118
- numVal++;
119
- if (numVal > config.max) numVal = config.min;
120
- this.fields[this.activeField] = numVal.toString();
121
- }
122
- this.buffer = '';
123
- this.render(false);
124
- return;
125
- }
126
- if (this.isDown(char)) {
127
- if (currentVal === '*') {
128
- this.fields[this.activeField] = config.max.toString();
129
- } else if (!isNaN(numVal)) {
130
- numVal--;
131
- if (numVal < config.min) numVal = config.max;
132
- this.fields[this.activeField] = numVal.toString();
133
- }
134
- this.buffer = '';
135
- this.render(false);
136
- return;
137
- }
138
- if (char === ' ' || char.toLowerCase() === 'x') {
139
- this.fields[this.activeField] = '*';
140
- this.buffer = '';
141
- this.render(false);
142
- return;
143
- }
144
- // Direct Input
145
- if (/^[0-9]$/.test(char)) {
146
- const nextBuffer = this.buffer + char;
147
- const nextNum = parseInt(nextBuffer);
148
- // Check if valid
149
- if (!isNaN(nextNum) && nextNum <= config.max) {
150
- this.buffer = nextBuffer;
151
- if (nextNum >= 0) {
152
- this.fields[this.activeField] = nextNum.toString();
153
- }
154
- } else {
155
- const freshNum = parseInt(char);
156
- if (!isNaN(freshNum) && freshNum <= config.max) {
157
- this.buffer = char;
158
- this.fields[this.activeField] = freshNum.toString();
159
- }
160
- }
161
- this.render(false);
162
- }
163
- }
164
- handleMouse(event) {
165
- if (event.action === 'scroll') {
166
- const config = this.currentConfig;
167
- const currentVal = this.fields[this.activeField];
168
- let numVal = parseInt(currentVal);
169
- if (event.scroll === 'up') {
170
- if (currentVal === '*') {
171
- this.fields[this.activeField] = config.min.toString();
172
- } else if (!isNaN(numVal)) {
173
- numVal++;
174
- if (numVal > config.max) numVal = config.min;
175
- this.fields[this.activeField] = numVal.toString();
176
- }
177
- } else {
178
- if (currentVal === '*') {
179
- this.fields[this.activeField] = config.max.toString();
180
- } else if (!isNaN(numVal)) {
181
- numVal--;
182
- if (numVal < config.min) numVal = config.max;
183
- this.fields[this.activeField] = numVal.toString();
184
- }
185
- }
186
- this.buffer = '';
187
- this.render(false);
188
- }
189
- }
190
- constructor(options){
191
- super(options), _define_property(this, "fields", [
192
- '*',
193
- '*',
194
- '*',
195
- '*',
196
- '*'
197
- ]), _define_property(this, "activeField", 0), _define_property(this, "buffer", '');
198
- if (options.initial) {
199
- const parts = options.initial.split(' ');
200
- if (parts.length === 5) {
201
- this.fields = parts;
202
- }
203
- }
204
- }
205
- };
206
-
207
- //# sourceMappingURL=cron.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/prompts/cron.ts"],"sourcesContent":["import { ANSI } from '../ansi';\nimport { Prompt } from '../base';\nimport { theme } from '../theme';\nimport { CronOptions, MouseEvent } from '../types';\n\ninterface FieldConfig {\n label: string;\n min: number;\n max: number;\n}\n\nconst FIELDS: FieldConfig[] = [\n { label: 'Minute', min: 0, max: 59 },\n { label: 'Hour', min: 0, max: 23 },\n { label: 'Day', min: 1, max: 31 },\n { label: 'Month', min: 1, max: 12 },\n { label: 'Weekday', min: 0, max: 6 }\n];\n\nexport class CronPrompt extends Prompt<string, CronOptions> {\n private fields: string[] = ['*', '*', '*', '*', '*'];\n private activeField: number = 0;\n private buffer: string = '';\n\n constructor(options: CronOptions) {\n super(options);\n if (options.initial) {\n const parts = options.initial.split(' ');\n if (parts.length === 5) {\n this.fields = parts;\n }\n }\n }\n\n private get currentConfig() {\n return FIELDS[this.activeField];\n }\n\n protected render(_firstRender: boolean): void {\n let output = `${theme.success}?${ANSI.RESET} ${ANSI.BOLD}${theme.title}${this.options.message}${ANSI.RESET}\\n`;\n\n // Render fields\n let fieldsStr = '';\n this.fields.forEach((val, index) => {\n const isSelected = index === this.activeField;\n const displayVal = val.padStart(2, ' ');\n\n if (isSelected) {\n fieldsStr += `${theme.main}${ANSI.UNDERLINE}${displayVal}${ANSI.RESET} `;\n } else {\n fieldsStr += `${ANSI.DIM}${displayVal}${ANSI.RESET} `;\n }\n });\n\n output += ` ${fieldsStr}\\n`;\n\n // Render Label and Hints\n const config = this.currentConfig;\n output += ` ${theme.muted}${config.label} (${config.min}-${config.max})${ANSI.RESET}\\n`;\n output += ` ${ANSI.DIM}(Arrows: Adjust | Space: Toggle * | 0-9: Type | Tab: Next)${ANSI.RESET}`;\n\n this.renderFrame(output);\n }\n\n private validateCurrentField() {\n const config = this.currentConfig;\n const val = this.fields[this.activeField];\n if (val === '*') return;\n\n let num = parseInt(val);\n if (isNaN(num)) {\n this.fields[this.activeField] = config.min.toString();\n } else {\n num = Math.max(config.min, Math.min(num, config.max));\n this.fields[this.activeField] = num.toString();\n }\n }\n\n protected handleInput(char: string) {\n if (char === '\\r' || char === '\\n') {\n this.validateCurrentField();\n this.submit(this.fields.join(' '));\n return;\n }\n\n if (char === '\\t' || this.isRight(char)) {\n this.validateCurrentField();\n this.activeField = (this.activeField + 1) % 5;\n this.buffer = '';\n this.render(false);\n return;\n }\n\n // Shift+Tab detection is often '\\x1b[Z'\n if (char === '\\x1b[Z' || this.isLeft(char)) {\n this.validateCurrentField();\n this.activeField = (this.activeField - 1 + 5) % 5;\n this.buffer = '';\n this.render(false);\n return;\n }\n\n const config = this.currentConfig;\n const currentVal = this.fields[this.activeField];\n let numVal = parseInt(currentVal);\n\n if (this.isUp(char)) {\n if (currentVal === '*') {\n this.fields[this.activeField] = config.min.toString();\n } else if (!isNaN(numVal)) {\n numVal++;\n if (numVal > config.max) numVal = config.min;\n this.fields[this.activeField] = numVal.toString();\n }\n this.buffer = '';\n this.render(false);\n return;\n }\n\n if (this.isDown(char)) {\n if (currentVal === '*') {\n this.fields[this.activeField] = config.max.toString();\n } else if (!isNaN(numVal)) {\n numVal--;\n if (numVal < config.min) numVal = config.max;\n this.fields[this.activeField] = numVal.toString();\n }\n this.buffer = '';\n this.render(false);\n return;\n }\n\n if (char === ' ' || char.toLowerCase() === 'x') {\n this.fields[this.activeField] = '*';\n this.buffer = '';\n this.render(false);\n return;\n }\n\n // Direct Input\n if (/^[0-9]$/.test(char)) {\n const nextBuffer = this.buffer + char;\n const nextNum = parseInt(nextBuffer);\n\n // Check if valid\n if (!isNaN(nextNum) && nextNum <= config.max) {\n this.buffer = nextBuffer;\n\n if (nextNum >= 0) { // Should be positive\n this.fields[this.activeField] = nextNum.toString();\n }\n } else {\n const freshNum = parseInt(char);\n if (!isNaN(freshNum) && freshNum <= config.max) {\n this.buffer = char;\n this.fields[this.activeField] = freshNum.toString();\n }\n }\n this.render(false);\n }\n }\n\n protected handleMouse(event: MouseEvent) {\n if (event.action === 'scroll') {\n const config = this.currentConfig;\n const currentVal = this.fields[this.activeField];\n let numVal = parseInt(currentVal);\n\n if (event.scroll === 'up') { // Increase\n if (currentVal === '*') {\n this.fields[this.activeField] = config.min.toString();\n } else if (!isNaN(numVal)) {\n numVal++;\n if (numVal > config.max) numVal = config.min;\n this.fields[this.activeField] = numVal.toString();\n }\n } else { // Decrease\n if (currentVal === '*') {\n this.fields[this.activeField] = config.max.toString();\n } else if (!isNaN(numVal)) {\n numVal--;\n if (numVal < config.min) numVal = config.max;\n this.fields[this.activeField] = numVal.toString();\n }\n }\n this.buffer = '';\n this.render(false);\n }\n }\n}\n"],"names":["CronPrompt","FIELDS","label","min","max","Prompt","currentConfig","activeField","render","_firstRender","output","theme","success","ANSI","RESET","BOLD","title","options","message","fieldsStr","fields","forEach","val","index","isSelected","displayVal","padStart","main","UNDERLINE","DIM","config","muted","renderFrame","validateCurrentField","num","parseInt","isNaN","toString","Math","handleInput","char","submit","join","isRight","buffer","isLeft","currentVal","numVal","isUp","isDown","toLowerCase","test","nextBuffer","nextNum","freshNum","handleMouse","event","action","scroll","initial","parts","split","length"],"mappings":"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"}
@@ -1,71 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: Object.getOwnPropertyDescriptor(all, name).get
9
- });
10
- }
11
- _export(exports, {
12
- get BashStrategy () {
13
- return BashStrategy;
14
- },
15
- get CmdStrategy () {
16
- return CmdStrategy;
17
- },
18
- get PowerShellStrategy () {
19
- return PowerShellStrategy;
20
- }
21
- });
22
- function _define_property(obj, key, value) {
23
- if (key in obj) {
24
- Object.defineProperty(obj, key, {
25
- value: value,
26
- enumerable: true,
27
- configurable: true,
28
- writable: true
29
- });
30
- } else {
31
- obj[key] = value;
32
- }
33
- return obj;
34
- }
35
- let BashStrategy = class BashStrategy {
36
- escape(value) {
37
- // e.g. "It's me" -> 'It'\''s me'
38
- return `'${value.replace(/'/g, "'\\''")}'`;
39
- }
40
- constructor(){
41
- _define_property(this, "binary", 'curl');
42
- _define_property(this, "wrapper", "'");
43
- _define_property(this, "continuation", ' \\');
44
- }
45
- };
46
- let PowerShellStrategy = class PowerShellStrategy {
47
- escape(value) {
48
- // e.g. "It's me" -> 'It''s me'
49
- return `'${value.replace(/'/g, "''")}'`;
50
- }
51
- constructor(){
52
- _define_property(this, "binary", 'curl.exe');
53
- _define_property(this, "wrapper", "'");
54
- _define_property(this, "continuation", ' `');
55
- }
56
- };
57
- let CmdStrategy = class CmdStrategy {
58
- escape(value) {
59
- // e.g. {"key": "value"} -> "{\"key\": \"value\"}"
60
- // e.g. value with " -> "value with \""
61
- const flattened = value.replace(/[\r\n]+/g, ' ');
62
- return `"${flattened.replace(/\\/g, '\\\\').replace(/"/g, '\\"')}"`;
63
- }
64
- constructor(){
65
- _define_property(this, "binary", 'curl');
66
- _define_property(this, "wrapper", '"');
67
- _define_property(this, "continuation", ' ^');
68
- }
69
- };
70
-
71
- //# sourceMappingURL=curl-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/prompts/curl-utils.ts"],"sourcesContent":["export type ShellType = 'bash' | 'powershell' | 'cmd';\n\nexport interface ShellStrategy {\n binary: string;\n wrapper: string;\n continuation: string;\n escape(value: string): string;\n}\n\nexport class BashStrategy implements ShellStrategy {\n readonly binary = 'curl';\n readonly wrapper = \"'\";\n readonly continuation = ' \\\\';\n\n escape(value: string): string {\n // e.g. \"It's me\" -> 'It'\\''s me'\n return `'${value.replace(/'/g, \"'\\\\''\")}'`;\n }\n}\n\nexport class PowerShellStrategy implements ShellStrategy {\n readonly binary = 'curl.exe';\n readonly wrapper = \"'\";\n readonly continuation = ' `';\n\n escape(value: string): string {\n // e.g. \"It's me\" -> 'It''s me'\n return `'${value.replace(/'/g, \"''\")}'`;\n }\n}\n\nexport class CmdStrategy implements ShellStrategy {\n readonly binary = 'curl';\n readonly wrapper = '\"';\n readonly continuation = ' ^';\n\n escape(value: string): string {\n // e.g. {\"key\": \"value\"} -> \"{\\\"key\\\": \\\"value\\\"}\"\n // e.g. value with \" -> \"value with \\\"\"\n const flattened = value.replace(/[\\r\\n]+/g, ' ');\n return `\"${flattened.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"')}\"`;\n }\n}\n"],"names":["BashStrategy","CmdStrategy","PowerShellStrategy","escape","value","replace","binary","wrapper","continuation","flattened"],"mappings":";;;;;;;;;;;QASaA;eAAAA;;QAsBAC;eAAAA;;QAXAC;eAAAA;;;;;;;;;;;;;;;;AAXN,IAAA,AAAMF,eAAN,MAAMA;IAKTG,OAAOC,KAAa,EAAU;QAC1B,iCAAiC;QACjC,OAAO,CAAC,CAAC,EAAEA,MAAMC,OAAO,CAAC,MAAM,SAAS,CAAC,CAAC;IAC9C;;QAPA,uBAASC,UAAS;QAClB,uBAASC,WAAU;QACnB,uBAASC,gBAAe;;AAM5B;AAEO,IAAA,AAAMN,qBAAN,MAAMA;IAKTC,OAAOC,KAAa,EAAU;QAC1B,+BAA+B;QAC/B,OAAO,CAAC,CAAC,EAAEA,MAAMC,OAAO,CAAC,MAAM,MAAM,CAAC,CAAC;IAC3C;;QAPA,uBAASC,UAAS;QAClB,uBAASC,WAAU;QACnB,uBAASC,gBAAe;;AAM5B;AAEO,IAAA,AAAMP,cAAN,MAAMA;IAKTE,OAAOC,KAAa,EAAU;QAC1B,kDAAkD;QAClD,uCAAuC;QACvC,MAAMK,YAAYL,MAAMC,OAAO,CAAC,YAAY;QAC5C,OAAO,CAAC,CAAC,EAAEI,UAAUJ,OAAO,CAAC,OAAO,QAAQA,OAAO,CAAC,MAAM,OAAO,CAAC,CAAC;IACvE;;QATA,uBAASC,UAAS;QAClB,uBAASC,WAAU;QACnB,uBAASC,gBAAe;;AAQ5B"}