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.
- package/README.md +11 -2
- package/dist/{ansi.js → src/ansi.js} +17 -9
- package/dist/src/ansi.js.map +1 -0
- package/dist/{base.js → src/base.js} +82 -70
- package/dist/src/base.js.map +1 -0
- package/dist/{core.js → src/core.js} +266 -320
- package/dist/src/core.js.map +1 -0
- package/dist/src/data/countries.js +569 -0
- package/dist/src/data/countries.js.map +1 -0
- package/dist/src/data/licenses.js +480 -0
- package/dist/src/data/licenses.js.map +1 -0
- package/dist/{highlight.js → src/highlight.js} +77 -69
- package/dist/src/highlight.js.map +1 -0
- package/dist/src/index.js +66 -0
- package/dist/src/index.js.map +1 -0
- package/dist/{input.js → src/input.js} +47 -41
- package/dist/src/input.js.map +1 -0
- package/dist/src/pipeline.js +273 -0
- package/dist/src/pipeline.js.map +1 -0
- package/dist/{prompts → src/prompts}/autocomplete.js +58 -57
- package/dist/src/prompts/autocomplete.js.map +1 -0
- package/dist/{prompts → src/prompts}/box.js +86 -53
- package/dist/src/prompts/box.js.map +1 -0
- package/dist/{prompts → src/prompts}/breadcrumb-search.js +110 -98
- package/dist/src/prompts/breadcrumb-search.js.map +1 -0
- package/dist/{prompts → src/prompts}/breadcrumb.js +126 -121
- package/dist/src/prompts/breadcrumb.js.map +1 -0
- package/dist/{prompts → src/prompts}/byte.js +69 -52
- package/dist/src/prompts/byte.js.map +1 -0
- package/dist/{prompts → src/prompts}/calculator.js +79 -56
- package/dist/src/prompts/calculator.js.map +1 -0
- package/dist/{prompts → src/prompts}/calendar.js +167 -127
- package/dist/src/prompts/calendar.js.map +1 -0
- package/dist/{prompts → src/prompts}/checkbox.js +53 -49
- package/dist/src/prompts/checkbox.js.map +1 -0
- package/dist/{prompts → src/prompts}/code.js +88 -76
- package/dist/src/prompts/code.js.map +1 -0
- package/dist/{prompts → src/prompts}/color.js +68 -50
- package/dist/src/prompts/color.js.map +1 -0
- package/dist/{prompts → src/prompts}/confirm.js +22 -15
- package/dist/src/prompts/confirm.js.map +1 -0
- package/dist/{prompts → src/prompts}/connection-string.js +59 -36
- package/dist/src/prompts/connection-string.js.map +1 -0
- package/dist/{prompts → src/prompts}/cron.js +90 -59
- package/dist/src/prompts/cron.js.map +1 -0
- package/dist/src/prompts/curl-utils.js +71 -0
- package/dist/src/prompts/curl-utils.js.map +1 -0
- package/dist/{prompts → src/prompts}/curl.js +153 -132
- package/dist/src/prompts/curl.js.map +1 -0
- package/dist/{prompts → src/prompts}/data-inspector.js +96 -91
- package/dist/src/prompts/data-inspector.js.map +1 -0
- package/dist/{prompts → src/prompts}/date.js +64 -57
- package/dist/src/prompts/date.js.map +1 -0
- package/dist/{prompts → src/prompts}/dependency.js +84 -80
- package/dist/src/prompts/dependency.js.map +1 -0
- package/dist/{prompts → src/prompts}/dial.js +49 -35
- package/dist/src/prompts/dial.js.map +1 -0
- package/dist/src/prompts/diff.js +118 -0
- package/dist/src/prompts/diff.js.map +1 -0
- package/dist/{prompts → src/prompts}/draw.js +83 -80
- package/dist/src/prompts/draw.js.map +1 -0
- package/dist/src/prompts/editor.js +234 -0
- package/dist/src/prompts/editor.js.map +1 -0
- package/dist/{prompts → src/prompts}/emoji.js +80 -82
- package/dist/src/prompts/emoji.js.map +1 -0
- package/dist/{prompts → src/prompts}/exec.js +60 -46
- package/dist/src/prompts/exec.js.map +1 -0
- package/dist/src/prompts/file.js +217 -0
- package/dist/src/prompts/file.js.map +1 -0
- package/dist/{prompts → src/prompts}/form.js +63 -54
- package/dist/src/prompts/form.js.map +1 -0
- package/dist/{prompts → src/prompts}/fuzzy-multi-column.js +65 -53
- package/dist/src/prompts/fuzzy-multi-column.js.map +1 -0
- package/dist/{prompts → src/prompts}/fuzzy.js +66 -55
- package/dist/src/prompts/fuzzy.js.map +1 -0
- package/dist/src/prompts/gauge.js +137 -0
- package/dist/src/prompts/gauge.js.map +1 -0
- package/dist/{prompts → src/prompts}/grid.js +70 -57
- package/dist/src/prompts/grid.js.map +1 -0
- package/dist/{prompts → src/prompts}/heatmap.js +70 -64
- package/dist/src/prompts/heatmap.js.map +1 -0
- package/dist/{prompts → src/prompts}/ip.js +56 -36
- package/dist/src/prompts/ip.js.map +1 -0
- package/dist/{prompts → src/prompts}/kanban.js +63 -58
- package/dist/src/prompts/kanban.js.map +1 -0
- package/dist/src/prompts/keypress.js +54 -0
- package/dist/src/prompts/keypress.js.map +1 -0
- package/dist/src/prompts/license.js +144 -0
- package/dist/src/prompts/license.js.map +1 -0
- package/dist/{prompts → src/prompts}/list.js +46 -31
- package/dist/src/prompts/list.js.map +1 -0
- package/dist/{prompts → src/prompts}/map.js +93 -77
- package/dist/src/prompts/map.js.map +1 -0
- package/dist/{prompts → src/prompts}/match.js +91 -95
- package/dist/src/prompts/match.js.map +1 -0
- package/dist/{prompts → src/prompts}/miller.js +74 -67
- package/dist/src/prompts/miller.js.map +1 -0
- package/dist/{prompts → src/prompts}/multi-column-select.js +54 -44
- package/dist/src/prompts/multi-column-select.js.map +1 -0
- package/dist/{prompts → src/prompts}/multi-range.js +70 -52
- package/dist/src/prompts/multi-range.js.map +1 -0
- package/dist/{prompts → src/prompts}/multi-select.js +67 -58
- package/dist/src/prompts/multi-select.js.map +1 -0
- package/dist/{prompts → src/prompts}/number.js +51 -39
- package/dist/src/prompts/number.js.map +1 -0
- package/dist/{prompts → src/prompts}/otp.js +43 -27
- package/dist/src/prompts/otp.js.map +1 -0
- package/dist/{prompts → src/prompts}/pattern.js +74 -71
- package/dist/src/prompts/pattern.js.map +1 -0
- package/dist/{prompts → src/prompts}/phone.js +107 -118
- package/dist/src/prompts/phone.js.map +1 -0
- package/dist/src/prompts/quiz-select.js +114 -0
- package/dist/src/prompts/quiz-select.js.map +1 -0
- package/dist/src/prompts/quiz-text.js +98 -0
- package/dist/src/prompts/quiz-text.js.map +1 -0
- package/dist/{prompts → src/prompts}/range.js +85 -61
- package/dist/src/prompts/range.js.map +1 -0
- package/dist/{prompts → src/prompts}/rating.js +29 -24
- package/dist/src/prompts/rating.js.map +1 -0
- package/dist/{prompts → src/prompts}/regex.js +50 -36
- package/dist/src/prompts/regex.js.map +1 -0
- package/dist/{prompts → src/prompts}/region.js +62 -56
- package/dist/src/prompts/region.js.map +1 -0
- package/dist/{prompts → src/prompts}/schedule.js +82 -75
- package/dist/src/prompts/schedule.js.map +1 -0
- package/dist/{prompts → src/prompts}/scroll.js +61 -58
- package/dist/src/prompts/scroll.js.map +1 -0
- package/dist/src/prompts/seat.js +164 -0
- package/dist/src/prompts/seat.js.map +1 -0
- package/dist/{prompts → src/prompts}/select-range.js +58 -46
- package/dist/src/prompts/select-range.js.map +1 -0
- package/dist/{prompts → src/prompts}/select.js +65 -66
- package/dist/src/prompts/select.js.map +1 -0
- package/dist/{prompts → src/prompts}/semver.js +24 -13
- package/dist/src/prompts/semver.js.map +1 -0
- package/dist/src/prompts/shortcut.js +133 -0
- package/dist/src/prompts/shortcut.js.map +1 -0
- package/dist/{prompts → src/prompts}/slider.js +28 -23
- package/dist/src/prompts/slider.js.map +1 -0
- package/dist/src/prompts/slot.js +117 -0
- package/dist/src/prompts/slot.js.map +1 -0
- package/dist/{prompts → src/prompts}/snippet.js +82 -61
- package/dist/src/prompts/snippet.js.map +1 -0
- package/dist/{prompts → src/prompts}/sort-grid.js +64 -59
- package/dist/src/prompts/sort-grid.js.map +1 -0
- package/dist/{prompts → src/prompts}/sort.js +59 -49
- package/dist/src/prompts/sort.js.map +1 -0
- package/dist/src/prompts/spam.js +80 -0
- package/dist/src/prompts/spam.js.map +1 -0
- package/dist/{prompts → src/prompts}/spreadsheet.js +71 -70
- package/dist/src/prompts/spreadsheet.js.map +1 -0
- package/dist/{prompts → src/prompts}/table.js +52 -38
- package/dist/src/prompts/table.js.map +1 -0
- package/dist/{prompts → src/prompts}/text.js +74 -70
- package/dist/src/prompts/text.js.map +1 -0
- package/dist/{prompts → src/prompts}/time.js +105 -96
- package/dist/src/prompts/time.js.map +1 -0
- package/dist/src/prompts/toggle.js +53 -0
- package/dist/src/prompts/toggle.js.map +1 -0
- package/dist/{prompts → src/prompts}/transfer.js +71 -67
- package/dist/src/prompts/transfer.js.map +1 -0
- package/dist/{prompts → src/prompts}/tree-select.js +83 -86
- package/dist/src/prompts/tree-select.js.map +1 -0
- package/dist/{prompts → src/prompts}/tree.js +69 -67
- package/dist/src/prompts/tree.js.map +1 -0
- package/dist/src/prompts/wait.js +79 -0
- package/dist/src/prompts/wait.js.map +1 -0
- package/dist/src/spinner.js +105 -0
- package/dist/src/spinner.js.map +1 -0
- package/dist/{symbols.js → src/symbols.js} +32 -7
- package/dist/src/symbols.js.map +1 -0
- package/dist/{tasks.js → src/tasks.js} +104 -79
- package/dist/src/tasks.js.map +1 -0
- package/dist/src/theme.js +29 -0
- package/dist/src/theme.js.map +1 -0
- package/dist/src/types.js +8 -0
- package/dist/src/types.js.map +1 -0
- package/dist/{utils.js → src/utils.js} +196 -152
- package/dist/src/utils.js.map +1 -0
- package/package.json +16 -13
- package/dist/ansi.d.ts +0 -36
- package/dist/base.d.ts +0 -60
- package/dist/core.d.ts +0 -1072
- package/dist/data/countries.d.ts +0 -2
- package/dist/data/countries.js +0 -105
- package/dist/data/licenses.d.ts +0 -2
- package/dist/data/licenses.js +0 -109
- package/dist/highlight.d.ts +0 -7
- package/dist/index.d.ts +0 -48
- package/dist/index.js +0 -64
- package/dist/input.d.ts +0 -14
- package/dist/pipeline.d.ts +0 -39
- package/dist/pipeline.js +0 -54
- package/dist/prompts/autocomplete.d.ts +0 -22
- package/dist/prompts/box.d.ts +0 -21
- package/dist/prompts/breadcrumb-search.d.ts +0 -14
- package/dist/prompts/breadcrumb.d.ts +0 -32
- package/dist/prompts/byte.d.ts +0 -13
- package/dist/prompts/calculator.d.ts +0 -17
- package/dist/prompts/calendar.d.ts +0 -33
- package/dist/prompts/checkbox.d.ts +0 -13
- package/dist/prompts/code.d.ts +0 -19
- package/dist/prompts/color.d.ts +0 -14
- package/dist/prompts/confirm.d.ts +0 -8
- package/dist/prompts/connection-string.d.ts +0 -18
- package/dist/prompts/cron.d.ts +0 -13
- package/dist/prompts/curl-utils.d.ts +0 -25
- package/dist/prompts/curl-utils.js +0 -41
- package/dist/prompts/curl.d.ts +0 -41
- package/dist/prompts/data-inspector.d.ts +0 -22
- package/dist/prompts/date.d.ts +0 -12
- package/dist/prompts/dependency.d.ts +0 -16
- package/dist/prompts/dial.d.ts +0 -10
- package/dist/prompts/diff.d.ts +0 -10
- package/dist/prompts/diff.js +0 -101
- package/dist/prompts/draw.d.ts +0 -20
- package/dist/prompts/editor.d.ts +0 -14
- package/dist/prompts/editor.js +0 -203
- package/dist/prompts/emoji.d.ts +0 -18
- package/dist/prompts/exec.d.ts +0 -17
- package/dist/prompts/file.d.ts +0 -21
- package/dist/prompts/file.js +0 -210
- package/dist/prompts/form.d.ts +0 -18
- package/dist/prompts/fuzzy-multi-column.d.ts +0 -12
- package/dist/prompts/fuzzy.d.ts +0 -12
- package/dist/prompts/gauge.d.ts +0 -21
- package/dist/prompts/gauge.js +0 -130
- package/dist/prompts/grid.d.ts +0 -14
- package/dist/prompts/heatmap.d.ts +0 -13
- package/dist/prompts/ip.d.ts +0 -11
- package/dist/prompts/kanban.d.ts +0 -17
- package/dist/prompts/keypress.d.ts +0 -7
- package/dist/prompts/keypress.js +0 -55
- package/dist/prompts/license.d.ts +0 -9
- package/dist/prompts/license.js +0 -105
- package/dist/prompts/list.d.ts +0 -9
- package/dist/prompts/map.d.ts +0 -17
- package/dist/prompts/match.d.ts +0 -19
- package/dist/prompts/miller.d.ts +0 -15
- package/dist/prompts/multi-column-select.d.ts +0 -10
- package/dist/prompts/multi-range.d.ts +0 -9
- package/dist/prompts/multi-select.d.ts +0 -15
- package/dist/prompts/number.d.ts +0 -11
- package/dist/prompts/otp.d.ts +0 -10
- package/dist/prompts/pattern.d.ts +0 -22
- package/dist/prompts/phone.d.ts +0 -41
- package/dist/prompts/quiz-select.d.ts +0 -10
- package/dist/prompts/quiz-select.js +0 -104
- package/dist/prompts/quiz-text.d.ts +0 -11
- package/dist/prompts/quiz-text.js +0 -82
- package/dist/prompts/range.d.ts +0 -9
- package/dist/prompts/rating.d.ts +0 -8
- package/dist/prompts/regex.d.ts +0 -13
- package/dist/prompts/region.d.ts +0 -11
- package/dist/prompts/schedule.d.ts +0 -20
- package/dist/prompts/scroll.d.ts +0 -13
- package/dist/prompts/seat.d.ts +0 -17
- package/dist/prompts/seat.js +0 -165
- package/dist/prompts/select-range.d.ts +0 -8
- package/dist/prompts/select.d.ts +0 -15
- package/dist/prompts/semver.d.ts +0 -6
- package/dist/prompts/shortcut.d.ts +0 -9
- package/dist/prompts/shortcut.js +0 -135
- package/dist/prompts/slider.d.ts +0 -8
- package/dist/prompts/slot.d.ts +0 -16
- package/dist/prompts/slot.js +0 -107
- package/dist/prompts/snippet.d.ts +0 -19
- package/dist/prompts/sort-grid.d.ts +0 -16
- package/dist/prompts/sort.d.ts +0 -14
- package/dist/prompts/spam.d.ts +0 -17
- package/dist/prompts/spam.js +0 -62
- package/dist/prompts/spreadsheet.d.ts +0 -21
- package/dist/prompts/table.d.ts +0 -14
- package/dist/prompts/text.d.ts +0 -17
- package/dist/prompts/time.d.ts +0 -12
- package/dist/prompts/toggle.d.ts +0 -8
- package/dist/prompts/toggle.js +0 -47
- package/dist/prompts/transfer.d.ts +0 -18
- package/dist/prompts/tree-select.d.ts +0 -31
- package/dist/prompts/tree.d.ts +0 -20
- package/dist/prompts/wait.d.ts +0 -18
- package/dist/prompts/wait.js +0 -62
- package/dist/spinner.d.ts +0 -33
- package/dist/spinner.js +0 -89
- package/dist/symbols.d.ts +0 -33
- package/dist/tasks.d.ts +0 -57
- package/dist/theme.d.ts +0 -2
- package/dist/theme.js +0 -20
- package/dist/types.d.ts +0 -503
- package/dist/types.js +0 -5
- package/dist/utils.d.ts +0 -81
|
@@ -1,25 +1,32 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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)
|
|
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 = [
|
|
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 ([
|
|
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 ? `${
|
|
100
|
-
const prefix = `${icon} ${
|
|
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 = `${
|
|
107
|
-
}
|
|
108
|
-
|
|
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${
|
|
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${
|
|
137
|
+
output += `\n${_theme.theme.error}>> ${this.errorMsg}${_ansi.ANSI.RESET}`;
|
|
121
138
|
}
|
|
122
139
|
this.renderFrame(output);
|
|
123
|
-
this.print(
|
|
140
|
+
this.print(_ansi.ANSI.SHOW_CURSOR);
|
|
124
141
|
let totalRows = 1;
|
|
125
|
-
if (previewStr)
|
|
126
|
-
|
|
127
|
-
|
|
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(
|
|
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
|
|
146
|
-
width += (0,
|
|
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,
|
|
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
|
-
|
|
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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"}
|