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,25 +1,32 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CalculatorPrompt = void 0;
4
- const ansi_1 = require("../ansi");
5
- const base_1 = require("../base");
6
- const theme_1 = require("../theme");
7
- const symbols_1 = require("../symbols");
8
- const utils_1 = require("../utils");
9
- class CalculatorPrompt extends base_1.Prompt {
10
- constructor(options) {
11
- super(options);
12
- this.errorMsg = '';
13
- this.cursor = 0;
14
- this.hasTyped = false;
15
- this.segments = [];
16
- this.lastLinesUp = 0;
17
- this.previewValue = '';
18
- this.value = options.initial ? String(options.initial) : '';
19
- this.segments = (0, utils_1.safeSplit)(this.value);
20
- this.cursor = this.segments.length;
21
- this.updatePreview();
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "CalculatorPrompt", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return CalculatorPrompt;
9
+ }
10
+ });
11
+ const _ansi = require("../ansi");
12
+ const _base = require("../base");
13
+ const _theme = require("../theme");
14
+ const _symbols = require("../symbols");
15
+ const _utils = require("../utils");
16
+ function _define_property(obj, key, value) {
17
+ if (key in obj) {
18
+ Object.defineProperty(obj, key, {
19
+ value: value,
20
+ enumerable: true,
21
+ configurable: true,
22
+ writable: true
23
+ });
24
+ } else {
25
+ obj[key] = value;
22
26
  }
27
+ return obj;
28
+ }
29
+ let CalculatorPrompt = class CalculatorPrompt extends _base.Prompt {
23
30
  updatePreview() {
24
31
  const input = this.segments.join('');
25
32
  if (!input.trim()) {
@@ -32,16 +39,13 @@ class CalculatorPrompt extends base_1.Prompt {
32
39
  // Format precision if needed
33
40
  if (this.options.precision !== undefined) {
34
41
  this.previewValue = parseFloat(result.toFixed(this.options.precision)).toString();
35
- }
36
- else {
42
+ } else {
37
43
  this.previewValue = result.toString();
38
44
  }
39
- }
40
- else {
45
+ } else {
41
46
  this.previewValue = '';
42
47
  }
43
- }
44
- catch (_e) {
48
+ } catch (_e) {
45
49
  this.previewValue = '';
46
50
  }
47
51
  }
@@ -50,8 +54,8 @@ class CalculatorPrompt extends base_1.Prompt {
50
54
  // 1. Substitute variables
51
55
  if (this.options.variables) {
52
56
  // Sort keys by length desc to avoid partial replacement issues (e.g. 'var11' vs 'var1')
53
- const keys = Object.keys(this.options.variables).sort((a, b) => b.length - a.length);
54
- for (const key of keys) {
57
+ const keys = Object.keys(this.options.variables).sort((a, b)=>b.length - a.length);
58
+ for (const key of keys){
55
59
  const val = this.options.variables[key];
56
60
  const regex = new RegExp(`\\b${key}\\b`, 'g');
57
61
  expr = expr.replace(regex, String(val));
@@ -60,23 +64,38 @@ class CalculatorPrompt extends base_1.Prompt {
60
64
  // 2. Validate characters
61
65
  if (/[a-zA-Z_]/.test(expr)) {
62
66
  // Support basic Math functions: sin, cos, tan, log, sqrt, abs, pow, floor, ceil, round
63
- const allowedMath = ['sin', 'cos', 'tan', 'log', 'sqrt', 'abs', 'pow', 'floor', 'ceil', 'round', 'PI', 'E'];
67
+ const allowedMath = [
68
+ 'sin',
69
+ 'cos',
70
+ 'tan',
71
+ 'log',
72
+ 'sqrt',
73
+ 'abs',
74
+ 'pow',
75
+ 'floor',
76
+ 'ceil',
77
+ 'round',
78
+ 'PI',
79
+ 'E'
80
+ ];
64
81
  // We can prefix them with Math.
65
82
  let checkStr = expr;
66
- allowedMath.forEach(k => {
83
+ allowedMath.forEach((k)=>{
67
84
  checkStr = checkStr.replace(new RegExp(k, 'g'), '');
68
85
  });
69
86
  if (/[a-zA-Z_]/.test(checkStr)) {
70
87
  return null; // Contains unknown variables or functions
71
88
  }
72
89
  // Now prefix Math functions in the real expr
73
- allowedMath.forEach(k => {
90
+ allowedMath.forEach((k)=>{
74
91
  // Replace 'sin(' with 'Math.sin('
75
92
  // Be careful with PI and E
76
- if (['PI', 'E'].includes(k)) {
93
+ if ([
94
+ 'PI',
95
+ 'E'
96
+ ].includes(k)) {
77
97
  expr = expr.replace(new RegExp(`\\b${k}\\b`, 'g'), `Math.${k}`);
78
- }
79
- else {
98
+ } else {
80
99
  expr = expr.replace(new RegExp(`\\b${k}\\(`, 'g'), `Math.${k}(`);
81
100
  }
82
101
  });
@@ -86,8 +105,7 @@ class CalculatorPrompt extends base_1.Prompt {
86
105
  const func = new Function(`return (${expr})`);
87
106
  const res = func();
88
107
  return typeof res === 'number' ? res : null;
89
- }
90
- catch (_err) {
108
+ } catch (_err) {
91
109
  return null;
92
110
  }
93
111
  }
@@ -96,37 +114,34 @@ class CalculatorPrompt extends base_1.Prompt {
96
114
  this.print(`\x1b[${this.lastLinesUp}B`);
97
115
  }
98
116
  this.lastLinesUp = 0;
99
- const icon = this.errorMsg ? `${theme_1.theme.error}${symbols_1.symbols.cross}` : `${theme_1.theme.success}?`;
100
- const prefix = `${icon} ${ansi_1.ANSI.BOLD}${theme_1.theme.title}${this.options.message}${ansi_1.ANSI.RESET} `;
117
+ const icon = this.errorMsg ? `${_theme.theme.error}${_symbols.symbols.cross}` : `${_theme.theme.success}?`;
118
+ const prefix = `${icon} ${_ansi.ANSI.BOLD}${_theme.theme.title}${this.options.message}${_ansi.ANSI.RESET} `;
101
119
  const prefixVisualLen = this.stripAnsi(prefix).length;
102
120
  // Render Input Line
103
121
  let displayValue = '';
104
122
  const inputStr = this.segments.join('');
105
123
  if (!inputStr && this.options.placeholder && !this.errorMsg && !this.hasTyped) {
106
- displayValue = `${theme_1.theme.muted}${this.options.placeholder}${ansi_1.ANSI.RESET}`;
107
- }
108
- else {
109
- displayValue = theme_1.theme.main + inputStr + ansi_1.ANSI.RESET;
124
+ displayValue = `${_theme.theme.muted}${this.options.placeholder}${_ansi.ANSI.RESET}`;
125
+ } else {
126
+ displayValue = _theme.theme.main + inputStr + _ansi.ANSI.RESET;
110
127
  }
111
128
  let output = `${prefix}${displayValue}`;
112
129
  // Add Preview Line (if available and no error)
113
130
  let previewStr = '';
114
131
  if (this.previewValue && !this.errorMsg) {
115
132
  // Display as "= Result" in muted color
116
- previewStr = `\n${theme_1.theme.muted}= ${this.previewValue}${ansi_1.ANSI.RESET}`;
133
+ previewStr = `\n${_theme.theme.muted}= ${this.previewValue}${_ansi.ANSI.RESET}`;
117
134
  output += previewStr;
118
135
  }
119
136
  if (this.errorMsg) {
120
- output += `\n${theme_1.theme.error}>> ${this.errorMsg}${ansi_1.ANSI.RESET}`;
137
+ output += `\n${_theme.theme.error}>> ${this.errorMsg}${_ansi.ANSI.RESET}`;
121
138
  }
122
139
  this.renderFrame(output);
123
- this.print(ansi_1.ANSI.SHOW_CURSOR);
140
+ this.print(_ansi.ANSI.SHOW_CURSOR);
124
141
  let totalRows = 1;
125
- if (previewStr)
126
- totalRows++;
127
- if (this.errorMsg)
128
- totalRows++;
129
- const linesUp = (totalRows - 1);
142
+ if (previewStr) totalRows++;
143
+ if (this.errorMsg) totalRows++;
144
+ const linesUp = totalRows - 1;
130
145
  if (linesUp > 0) {
131
146
  this.print(`\x1b[${linesUp}A`);
132
147
  }
@@ -135,15 +150,15 @@ class CalculatorPrompt extends base_1.Prompt {
135
150
  // We assume single line input for now
136
151
  const cursorVisualCol = this.getVisualCursorPosition();
137
152
  const targetCol = prefixVisualLen + cursorVisualCol;
138
- this.print(ansi_1.ANSI.CURSOR_LEFT);
153
+ this.print(_ansi.ANSI.CURSOR_LEFT);
139
154
  if (targetCol > 0) {
140
155
  this.print(`\x1b[${targetCol}C`);
141
156
  }
142
157
  }
143
158
  getVisualCursorPosition() {
144
159
  let width = 0;
145
- for (let i = 0; i < this.cursor; i++) {
146
- width += (0, utils_1.stringWidth)(this.segments[i]);
160
+ for(let i = 0; i < this.cursor; i++){
161
+ width += (0, _utils.stringWidth)(this.segments[i]);
147
162
  }
148
163
  return width;
149
164
  }
@@ -208,7 +223,7 @@ class CalculatorPrompt extends base_1.Prompt {
208
223
  // Normal typing
209
224
  if (!/^[\x00-\x1F]/.test(char) && !char.startsWith('\x1b')) {
210
225
  this.hasTyped = true;
211
- const newSegments = (0, utils_1.safeSplit)(char);
226
+ const newSegments = (0, _utils.safeSplit)(char);
212
227
  this.segments.splice(this.cursor, 0, ...newSegments);
213
228
  this.cursor += newSegments.length;
214
229
  this.errorMsg = '';
@@ -216,5 +231,13 @@ class CalculatorPrompt extends base_1.Prompt {
216
231
  this.render(false);
217
232
  }
218
233
  }
219
- }
220
- exports.CalculatorPrompt = CalculatorPrompt;
234
+ constructor(options){
235
+ super(options), _define_property(this, "errorMsg", ''), _define_property(this, "cursor", 0), _define_property(this, "hasTyped", false), _define_property(this, "segments", []), _define_property(this, "lastLinesUp", 0), _define_property(this, "previewValue", '');
236
+ this.value = options.initial ? String(options.initial) : '';
237
+ this.segments = (0, _utils.safeSplit)(this.value);
238
+ this.cursor = this.segments.length;
239
+ this.updatePreview();
240
+ }
241
+ };
242
+
243
+ //# sourceMappingURL=calculator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/prompts/calculator.ts"],"sourcesContent":["import { ANSI } from '../ansi';\nimport { Prompt } from '../base';\nimport { theme } from '../theme';\nimport { symbols } from '../symbols';\nimport { CalculatorOptions } from '../types';\nimport { safeSplit, stringWidth } from '../utils';\n\nexport class CalculatorPrompt extends Prompt<number, CalculatorOptions> {\n protected errorMsg: string = '';\n protected cursor: number = 0;\n protected hasTyped: boolean = false;\n protected segments: string[] = [];\n protected lastLinesUp: number = 0;\n protected previewValue: string = '';\n\n constructor(options: CalculatorOptions) {\n super(options);\n this.value = options.initial ? String(options.initial) : '';\n this.segments = safeSplit(this.value);\n this.cursor = this.segments.length;\n this.updatePreview();\n }\n\n private updatePreview() {\n const input = this.segments.join('');\n if (!input.trim()) {\n this.previewValue = '';\n return;\n }\n\n try {\n const result = this.evaluate(input);\n if (result !== null && !isNaN(result) && isFinite(result)) {\n // Format precision if needed\n if (this.options.precision !== undefined) {\n this.previewValue = parseFloat(result.toFixed(this.options.precision)).toString();\n } else {\n this.previewValue = result.toString();\n }\n } else {\n this.previewValue = '';\n }\n } catch (_e) {\n this.previewValue = '';\n }\n }\n\n private evaluate(expression: string): number | null {\n let expr = expression;\n\n // 1. Substitute variables\n if (this.options.variables) {\n // Sort keys by length desc to avoid partial replacement issues (e.g. 'var11' vs 'var1')\n const keys = Object.keys(this.options.variables).sort((a, b) => b.length - a.length);\n for (const key of keys) {\n const val = this.options.variables[key];\n const regex = new RegExp(`\\\\b${key}\\\\b`, 'g');\n expr = expr.replace(regex, String(val));\n }\n }\n\n // 2. Validate characters\n if (/[a-zA-Z_]/.test(expr)) {\n // Support basic Math functions: sin, cos, tan, log, sqrt, abs, pow, floor, ceil, round\n const allowedMath = ['sin', 'cos', 'tan', 'log', 'sqrt', 'abs', 'pow', 'floor', 'ceil', 'round', 'PI', 'E'];\n // We can prefix them with Math.\n\n let checkStr = expr;\n allowedMath.forEach(k => {\n checkStr = checkStr.replace(new RegExp(k, 'g'), '');\n });\n\n if (/[a-zA-Z_]/.test(checkStr)) {\n return null; // Contains unknown variables or functions\n }\n\n // Now prefix Math functions in the real expr\n allowedMath.forEach(k => {\n // Replace 'sin(' with 'Math.sin('\n // Be careful with PI and E\n if (['PI', 'E'].includes(k)) {\n expr = expr.replace(new RegExp(`\\\\b${k}\\\\b`, 'g'), `Math.${k}`);\n } else {\n expr = expr.replace(new RegExp(`\\\\b${k}\\\\(`, 'g'), `Math.${k}(`);\n }\n });\n }\n\n // 3. Safe Eval using Function\n try {\n const func = new Function(`return (${expr})`);\n const res = func();\n return typeof res === 'number' ? res : null;\n } catch (_err) {\n return null;\n }\n }\n\n protected render(firstRender: boolean) {\n if (!firstRender && this.lastLinesUp > 0) {\n this.print(`\\x1b[${this.lastLinesUp}B`);\n }\n this.lastLinesUp = 0;\n\n const icon = this.errorMsg ? `${theme.error}${symbols.cross}` : `${theme.success}?`;\n const prefix = `${icon} ${ANSI.BOLD}${theme.title}${this.options.message}${ANSI.RESET} `;\n const prefixVisualLen = this.stripAnsi(prefix).length;\n\n // Render Input Line\n let displayValue = '';\n const inputStr = this.segments.join('');\n\n if (!inputStr && this.options.placeholder && !this.errorMsg && !this.hasTyped) {\n displayValue = `${theme.muted}${this.options.placeholder}${ANSI.RESET}`;\n } else {\n displayValue = theme.main + inputStr + ANSI.RESET;\n }\n\n let output = `${prefix}${displayValue}`;\n\n // Add Preview Line (if available and no error)\n let previewStr = '';\n if (this.previewValue && !this.errorMsg) {\n // Display as \"= Result\" in muted color\n previewStr = `\\n${theme.muted}= ${this.previewValue}${ANSI.RESET}`;\n output += previewStr;\n }\n\n if (this.errorMsg) {\n output += `\\n${theme.error}>> ${this.errorMsg}${ANSI.RESET}`;\n }\n\n this.renderFrame(output);\n this.print(ANSI.SHOW_CURSOR);\n\n let totalRows = 1;\n if (previewStr) totalRows++;\n if (this.errorMsg) totalRows++;\n\n const linesUp = (totalRows - 1);\n if (linesUp > 0) {\n this.print(`\\x1b[${linesUp}A`);\n }\n this.lastLinesUp = linesUp;\n\n // Move cursor to correct column\n // We assume single line input for now\n const cursorVisualCol = this.getVisualCursorPosition();\n const targetCol = prefixVisualLen + cursorVisualCol;\n\n this.print(ANSI.CURSOR_LEFT);\n if (targetCol > 0) {\n this.print(`\\x1b[${targetCol}C`);\n }\n }\n\n private getVisualCursorPosition(): number {\n let width = 0;\n for (let i = 0; i < this.cursor; i++) {\n width += stringWidth(this.segments[i]);\n }\n return width;\n }\n\n protected cleanup() {\n if (this.lastLinesUp > 0) {\n this.print(`\\x1b[${this.lastLinesUp}B`);\n this.lastLinesUp = 0;\n }\n super.cleanup();\n }\n\n protected handleInput(char: string) {\n // Enter\n if (char === '\\r' || char === '\\n') {\n const input = this.segments.join('');\n const result = this.evaluate(input);\n if (result === null || isNaN(result)) {\n this.errorMsg = 'Invalid expression';\n this.render(false);\n return;\n }\n\n this.submit(result);\n return;\n }\n\n // Backspace\n if (char === '\\u0008' || char === '\\x7f') {\n this.hasTyped = true;\n if (this.cursor > 0) {\n this.segments.splice(this.cursor - 1, 1);\n this.cursor--;\n this.errorMsg = '';\n this.updatePreview();\n this.render(false);\n }\n return;\n }\n\n // Arrows\n if (this.isLeft(char)) {\n if (this.cursor > 0) {\n this.cursor--;\n this.render(false);\n }\n return;\n }\n if (this.isRight(char)) {\n if (this.cursor < this.segments.length) {\n this.cursor++;\n this.render(false);\n }\n return;\n }\n\n // Delete\n if (char === '\\u001b[3~') {\n this.hasTyped = true;\n if (this.cursor < this.segments.length) {\n this.segments.splice(this.cursor, 1);\n this.errorMsg = '';\n this.updatePreview();\n this.render(false);\n }\n return;\n }\n\n // Normal typing\n if (!/^[\\x00-\\x1F]/.test(char) && !char.startsWith('\\x1b')) {\n this.hasTyped = true;\n const newSegments = safeSplit(char);\n this.segments.splice(this.cursor, 0, ...newSegments);\n this.cursor += newSegments.length;\n this.errorMsg = '';\n this.updatePreview();\n this.render(false);\n }\n }\n}\n"],"names":["CalculatorPrompt","Prompt","updatePreview","input","segments","join","trim","previewValue","result","evaluate","isNaN","isFinite","options","precision","undefined","parseFloat","toFixed","toString","_e","expression","expr","variables","keys","Object","sort","a","b","length","key","val","regex","RegExp","replace","String","test","allowedMath","checkStr","forEach","k","includes","func","Function","res","_err","render","firstRender","lastLinesUp","print","icon","errorMsg","theme","error","symbols","cross","success","prefix","ANSI","BOLD","title","message","RESET","prefixVisualLen","stripAnsi","displayValue","inputStr","placeholder","hasTyped","muted","main","output","previewStr","renderFrame","SHOW_CURSOR","totalRows","linesUp","cursorVisualCol","getVisualCursorPosition","targetCol","CURSOR_LEFT","width","i","cursor","stringWidth","cleanup","handleInput","char","submit","splice","isLeft","isRight","startsWith","newSegments","safeSplit","value","initial"],"mappings":"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"}