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.
- package/LICENSE +1 -1
- package/README.md +20 -0
- package/dist/ansi.d.ts +36 -0
- package/dist/ansi.js +1 -0
- package/dist/base.d.ts +61 -0
- package/dist/base.js +1 -0
- package/dist/{src/core.js → core.d.ts} +181 -345
- package/dist/core.js +1 -0
- package/dist/data/countries.d.ts +2 -0
- package/dist/data/countries.js +1 -0
- package/dist/data/licenses.d.ts +2 -0
- package/dist/data/licenses.js +1 -0
- package/dist/highlight.d.ts +7 -0
- package/dist/highlight.js +1 -0
- package/dist/index.d.ts +52 -0
- package/dist/index.js +1 -0
- package/dist/input.d.ts +14 -0
- package/dist/input.js +1 -0
- package/dist/pipeline.d.ts +90 -0
- package/dist/pipeline.js +1 -0
- package/dist/prompts/autocomplete.d.ts +22 -0
- package/dist/prompts/autocomplete.js +1 -0
- package/dist/prompts/box.d.ts +21 -0
- package/dist/prompts/box.js +4 -0
- package/dist/prompts/breadcrumb-search.d.ts +14 -0
- package/dist/prompts/breadcrumb-search.js +2 -0
- package/dist/prompts/breadcrumb.d.ts +32 -0
- package/dist/prompts/breadcrumb.js +3 -0
- package/dist/prompts/byte.d.ts +13 -0
- package/dist/prompts/byte.js +5 -0
- package/dist/prompts/calculator.d.ts +17 -0
- package/dist/prompts/calculator.js +3 -0
- package/dist/prompts/calendar.d.ts +33 -0
- package/dist/prompts/calendar.js +3 -0
- package/dist/prompts/checkbox.d.ts +13 -0
- package/dist/prompts/checkbox.js +2 -0
- package/dist/prompts/code.d.ts +19 -0
- package/dist/prompts/code.js +4 -0
- package/dist/prompts/color.d.ts +14 -0
- package/dist/prompts/color.js +10 -0
- package/dist/prompts/confirm.d.ts +8 -0
- package/dist/prompts/confirm.js +1 -0
- package/dist/prompts/connection-string.d.ts +18 -0
- package/dist/prompts/connection-string.js +1 -0
- package/dist/prompts/cron.d.ts +13 -0
- package/dist/prompts/cron.js +4 -0
- package/dist/prompts/curl-utils.d.ts +25 -0
- package/dist/prompts/curl-utils.js +1 -0
- package/dist/prompts/curl.d.ts +41 -0
- package/dist/prompts/curl.js +12 -0
- package/dist/prompts/data-inspector.d.ts +22 -0
- package/dist/prompts/data-inspector.js +5 -0
- package/dist/prompts/date.d.ts +12 -0
- package/dist/prompts/date.js +2 -0
- package/dist/prompts/dependency.d.ts +16 -0
- package/dist/prompts/dependency.js +3 -0
- package/dist/prompts/dial.d.ts +10 -0
- package/dist/prompts/dial.js +3 -0
- package/dist/prompts/diff.d.ts +10 -0
- package/dist/prompts/diff.js +10 -0
- package/dist/prompts/draw.d.ts +20 -0
- package/dist/prompts/draw.js +6 -0
- package/dist/prompts/editor.d.ts +14 -0
- package/dist/prompts/editor.js +2 -0
- package/dist/prompts/emoji.d.ts +18 -0
- package/dist/prompts/emoji.js +5 -0
- package/dist/prompts/exec.d.ts +17 -0
- package/dist/prompts/exec.js +1 -0
- package/dist/prompts/file.d.ts +21 -0
- package/dist/prompts/file.js +2 -0
- package/dist/prompts/form.d.ts +18 -0
- package/dist/prompts/form.js +1 -0
- package/dist/prompts/fuzzy-multi-column.d.ts +12 -0
- package/dist/prompts/fuzzy-multi-column.js +2 -0
- package/dist/prompts/fuzzy.d.ts +12 -0
- package/dist/prompts/fuzzy.js +2 -0
- package/dist/prompts/gauge.d.ts +21 -0
- package/dist/prompts/gauge.js +4 -0
- package/dist/prompts/grid.d.ts +14 -0
- package/dist/prompts/grid.js +2 -0
- package/dist/prompts/heatmap.d.ts +13 -0
- package/dist/prompts/heatmap.js +2 -0
- package/dist/prompts/ip.d.ts +11 -0
- package/dist/prompts/ip.js +3 -0
- package/dist/prompts/kanban.d.ts +17 -0
- package/dist/prompts/kanban.js +4 -0
- package/dist/prompts/keypress.d.ts +7 -0
- package/dist/prompts/keypress.js +1 -0
- package/dist/prompts/license.d.ts +9 -0
- package/dist/prompts/license.js +13 -0
- package/dist/prompts/list.d.ts +9 -0
- package/dist/prompts/list.js +1 -0
- package/dist/prompts/map.d.ts +17 -0
- package/dist/prompts/map.js +5 -0
- package/dist/prompts/match.d.ts +19 -0
- package/dist/prompts/match.js +7 -0
- package/dist/prompts/miller.d.ts +15 -0
- package/dist/prompts/miller.js +2 -0
- package/dist/prompts/multi-column-select.d.ts +10 -0
- package/dist/prompts/multi-column-select.js +2 -0
- package/dist/prompts/multi-range.d.ts +9 -0
- package/dist/prompts/multi-range.js +3 -0
- package/dist/prompts/multi-select.d.ts +15 -0
- package/dist/prompts/multi-select.js +4 -0
- package/dist/prompts/number.d.ts +11 -0
- package/dist/prompts/number.js +2 -0
- package/dist/prompts/otp.d.ts +10 -0
- package/dist/prompts/otp.js +2 -0
- package/dist/prompts/pattern.d.ts +22 -0
- package/dist/prompts/pattern.js +4 -0
- package/dist/prompts/phone.d.ts +41 -0
- package/dist/prompts/phone.js +3 -0
- package/dist/prompts/quiz-select.d.ts +10 -0
- package/dist/prompts/quiz-select.js +7 -0
- package/dist/prompts/quiz-text.d.ts +11 -0
- package/dist/prompts/quiz-text.js +8 -0
- package/dist/prompts/range.d.ts +9 -0
- package/dist/prompts/range.js +1 -0
- package/dist/prompts/rating.d.ts +8 -0
- package/dist/prompts/rating.js +1 -0
- package/dist/prompts/regex.d.ts +13 -0
- package/dist/prompts/regex.js +5 -0
- package/dist/prompts/region.d.ts +11 -0
- package/dist/prompts/region.js +5 -0
- package/dist/prompts/schedule.d.ts +20 -0
- package/dist/prompts/schedule.js +5 -0
- package/dist/prompts/scroll.d.ts +13 -0
- package/dist/prompts/scroll.js +1 -0
- package/dist/prompts/seat.d.ts +17 -0
- package/dist/prompts/seat.js +5 -0
- package/dist/prompts/select-range.d.ts +8 -0
- package/dist/prompts/select-range.js +3 -0
- package/dist/prompts/select.d.ts +15 -0
- package/dist/prompts/select.js +2 -0
- package/dist/prompts/semver.d.ts +6 -0
- package/dist/prompts/semver.js +1 -0
- package/dist/prompts/shortcut.d.ts +9 -0
- package/dist/prompts/shortcut.js +1 -0
- package/dist/prompts/slider.d.ts +8 -0
- package/dist/prompts/slider.js +1 -0
- package/dist/prompts/slot.d.ts +16 -0
- package/dist/prompts/slot.js +8 -0
- package/dist/prompts/snippet.d.ts +19 -0
- package/dist/prompts/snippet.js +4 -0
- package/dist/prompts/sort-grid.d.ts +16 -0
- package/dist/prompts/sort-grid.js +2 -0
- package/dist/prompts/sort.d.ts +14 -0
- package/dist/prompts/sort.js +2 -0
- package/dist/prompts/spam.d.ts +17 -0
- package/dist/prompts/spam.js +2 -0
- package/dist/prompts/spreadsheet.d.ts +21 -0
- package/dist/prompts/spreadsheet.js +7 -0
- package/dist/prompts/table.d.ts +14 -0
- package/dist/prompts/table.js +3 -0
- package/dist/prompts/text.d.ts +17 -0
- package/dist/prompts/text.js +2 -0
- package/dist/prompts/time.d.ts +12 -0
- package/dist/prompts/time.js +2 -0
- package/dist/prompts/toggle.d.ts +8 -0
- package/dist/prompts/toggle.js +1 -0
- package/dist/prompts/transfer.d.ts +18 -0
- package/dist/prompts/transfer.js +5 -0
- package/dist/prompts/tree-select.d.ts +31 -0
- package/dist/prompts/tree-select.js +3 -0
- package/dist/prompts/tree.d.ts +20 -0
- package/dist/prompts/tree.js +3 -0
- package/dist/prompts/wait.d.ts +18 -0
- package/dist/prompts/wait.js +1 -0
- package/dist/spinner.d.ts +33 -0
- package/dist/spinner.js +3 -0
- package/dist/symbols.d.ts +33 -0
- package/dist/symbols.js +1 -0
- package/dist/tasks.d.ts +57 -0
- package/dist/tasks.js +1 -0
- package/dist/theme.d.ts +2 -0
- package/dist/theme.js +1 -0
- package/dist/types.d.ts +519 -0
- package/dist/types.js +1 -0
- package/dist/utils.d.ts +82 -0
- package/dist/utils.js +1 -0
- package/package.json +10 -10
- package/dist/src/ansi.js +0 -50
- package/dist/src/ansi.js.map +0 -1
- package/dist/src/base.js +0 -258
- package/dist/src/base.js.map +0 -1
- package/dist/src/core.js.map +0 -1
- package/dist/src/data/countries.js +0 -569
- package/dist/src/data/countries.js.map +0 -1
- package/dist/src/data/licenses.js +0 -480
- package/dist/src/data/licenses.js.map +0 -1
- package/dist/src/highlight.js +0 -185
- package/dist/src/highlight.js.map +0 -1
- package/dist/src/index.js +0 -66
- package/dist/src/index.js.map +0 -1
- package/dist/src/input.js +0 -158
- package/dist/src/input.js.map +0 -1
- package/dist/src/pipeline.js +0 -273
- package/dist/src/pipeline.js.map +0 -1
- package/dist/src/prompts/autocomplete.js +0 -171
- package/dist/src/prompts/autocomplete.js.map +0 -1
- package/dist/src/prompts/box.js +0 -225
- package/dist/src/prompts/box.js.map +0 -1
- package/dist/src/prompts/breadcrumb-search.js +0 -260
- package/dist/src/prompts/breadcrumb-search.js.map +0 -1
- package/dist/src/prompts/breadcrumb.js +0 -307
- package/dist/src/prompts/breadcrumb.js.map +0 -1
- package/dist/src/prompts/byte.js +0 -176
- package/dist/src/prompts/byte.js.map +0 -1
- package/dist/src/prompts/calculator.js +0 -243
- package/dist/src/prompts/calculator.js.map +0 -1
- package/dist/src/prompts/calendar.js +0 -430
- package/dist/src/prompts/calendar.js.map +0 -1
- package/dist/src/prompts/checkbox.js +0 -159
- package/dist/src/prompts/checkbox.js.map +0 -1
- package/dist/src/prompts/code.js +0 -271
- package/dist/src/prompts/code.js.map +0 -1
- package/dist/src/prompts/color.js +0 -165
- package/dist/src/prompts/color.js.map +0 -1
- package/dist/src/prompts/confirm.js +0 -55
- package/dist/src/prompts/confirm.js.map +0 -1
- package/dist/src/prompts/connection-string.js +0 -120
- package/dist/src/prompts/connection-string.js.map +0 -1
- package/dist/src/prompts/cron.js +0 -207
- package/dist/src/prompts/cron.js.map +0 -1
- package/dist/src/prompts/curl-utils.js +0 -71
- package/dist/src/prompts/curl-utils.js.map +0 -1
- package/dist/src/prompts/curl.js +0 -431
- package/dist/src/prompts/curl.js.map +0 -1
- package/dist/src/prompts/data-inspector.js +0 -261
- package/dist/src/prompts/data-inspector.js.map +0 -1
- package/dist/src/prompts/date.js +0 -185
- package/dist/src/prompts/date.js.map +0 -1
- package/dist/src/prompts/dependency.js +0 -283
- package/dist/src/prompts/dependency.js.map +0 -1
- package/dist/src/prompts/dial.js +0 -124
- package/dist/src/prompts/dial.js.map +0 -1
- package/dist/src/prompts/diff.js +0 -118
- package/dist/src/prompts/diff.js.map +0 -1
- package/dist/src/prompts/draw.js +0 -191
- package/dist/src/prompts/draw.js.map +0 -1
- package/dist/src/prompts/editor.js +0 -234
- package/dist/src/prompts/editor.js.map +0 -1
- package/dist/src/prompts/emoji.js +0 -226
- package/dist/src/prompts/emoji.js.map +0 -1
- package/dist/src/prompts/exec.js +0 -151
- package/dist/src/prompts/exec.js.map +0 -1
- package/dist/src/prompts/file.js +0 -217
- package/dist/src/prompts/file.js.map +0 -1
- package/dist/src/prompts/form.js +0 -241
- package/dist/src/prompts/form.js.map +0 -1
- package/dist/src/prompts/fuzzy-multi-column.js +0 -161
- package/dist/src/prompts/fuzzy-multi-column.js.map +0 -1
- package/dist/src/prompts/fuzzy.js +0 -147
- package/dist/src/prompts/fuzzy.js.map +0 -1
- package/dist/src/prompts/gauge.js +0 -137
- package/dist/src/prompts/gauge.js.map +0 -1
- package/dist/src/prompts/grid.js +0 -191
- package/dist/src/prompts/grid.js.map +0 -1
- package/dist/src/prompts/heatmap.js +0 -147
- package/dist/src/prompts/heatmap.js.map +0 -1
- package/dist/src/prompts/ip.js +0 -138
- package/dist/src/prompts/ip.js.map +0 -1
- package/dist/src/prompts/kanban.js +0 -233
- package/dist/src/prompts/kanban.js.map +0 -1
- package/dist/src/prompts/keypress.js +0 -54
- package/dist/src/prompts/keypress.js.map +0 -1
- package/dist/src/prompts/license.js +0 -144
- package/dist/src/prompts/license.js.map +0 -1
- package/dist/src/prompts/list.js +0 -124
- package/dist/src/prompts/list.js.map +0 -1
- package/dist/src/prompts/map.js +0 -262
- package/dist/src/prompts/map.js.map +0 -1
- package/dist/src/prompts/match.js +0 -271
- package/dist/src/prompts/match.js.map +0 -1
- package/dist/src/prompts/miller.js +0 -228
- package/dist/src/prompts/miller.js.map +0 -1
- package/dist/src/prompts/multi-column-select.js +0 -176
- package/dist/src/prompts/multi-column-select.js.map +0 -1
- package/dist/src/prompts/multi-range.js +0 -189
- package/dist/src/prompts/multi-range.js.map +0 -1
- package/dist/src/prompts/multi-select.js +0 -183
- package/dist/src/prompts/multi-select.js.map +0 -1
- package/dist/src/prompts/number.js +0 -166
- package/dist/src/prompts/number.js.map +0 -1
- package/dist/src/prompts/otp.js +0 -107
- package/dist/src/prompts/otp.js.map +0 -1
- package/dist/src/prompts/pattern.js +0 -252
- package/dist/src/prompts/pattern.js.map +0 -1
- package/dist/src/prompts/phone.js +0 -398
- package/dist/src/prompts/phone.js.map +0 -1
- package/dist/src/prompts/quiz-select.js +0 -114
- package/dist/src/prompts/quiz-select.js.map +0 -1
- package/dist/src/prompts/quiz-text.js +0 -98
- package/dist/src/prompts/quiz-text.js.map +0 -1
- package/dist/src/prompts/range.js +0 -164
- package/dist/src/prompts/range.js.map +0 -1
- package/dist/src/prompts/rating.js +0 -83
- package/dist/src/prompts/rating.js.map +0 -1
- package/dist/src/prompts/regex.js +0 -145
- package/dist/src/prompts/regex.js.map +0 -1
- package/dist/src/prompts/region.js +0 -170
- package/dist/src/prompts/region.js.map +0 -1
- package/dist/src/prompts/schedule.js +0 -270
- package/dist/src/prompts/schedule.js.map +0 -1
- package/dist/src/prompts/scroll.js +0 -155
- package/dist/src/prompts/scroll.js.map +0 -1
- package/dist/src/prompts/seat.js +0 -164
- package/dist/src/prompts/seat.js.map +0 -1
- package/dist/src/prompts/select-range.js +0 -148
- package/dist/src/prompts/select-range.js.map +0 -1
- package/dist/src/prompts/select.js +0 -163
- package/dist/src/prompts/select.js.map +0 -1
- package/dist/src/prompts/semver.js +0 -43
- package/dist/src/prompts/semver.js.map +0 -1
- package/dist/src/prompts/shortcut.js +0 -133
- package/dist/src/prompts/shortcut.js.map +0 -1
- package/dist/src/prompts/slider.js +0 -69
- package/dist/src/prompts/slider.js.map +0 -1
- package/dist/src/prompts/slot.js +0 -117
- package/dist/src/prompts/slot.js.map +0 -1
- package/dist/src/prompts/snippet.js +0 -228
- package/dist/src/prompts/snippet.js.map +0 -1
- package/dist/src/prompts/sort-grid.js +0 -151
- package/dist/src/prompts/sort-grid.js.map +0 -1
- package/dist/src/prompts/sort.js +0 -166
- package/dist/src/prompts/sort.js.map +0 -1
- package/dist/src/prompts/spam.js +0 -80
- package/dist/src/prompts/spam.js.map +0 -1
- package/dist/src/prompts/spreadsheet.js +0 -240
- package/dist/src/prompts/spreadsheet.js.map +0 -1
- package/dist/src/prompts/table.js +0 -120
- package/dist/src/prompts/table.js.map +0 -1
- package/dist/src/prompts/text.js +0 -317
- package/dist/src/prompts/text.js.map +0 -1
- package/dist/src/prompts/time.js +0 -211
- package/dist/src/prompts/time.js.map +0 -1
- package/dist/src/prompts/toggle.js +0 -53
- package/dist/src/prompts/toggle.js.map +0 -1
- package/dist/src/prompts/transfer.js +0 -207
- package/dist/src/prompts/transfer.js.map +0 -1
- package/dist/src/prompts/tree-select.js +0 -270
- package/dist/src/prompts/tree-select.js.map +0 -1
- package/dist/src/prompts/tree.js +0 -233
- package/dist/src/prompts/tree.js.map +0 -1
- package/dist/src/prompts/wait.js +0 -79
- package/dist/src/prompts/wait.js.map +0 -1
- package/dist/src/spinner.js +0 -105
- package/dist/src/spinner.js.map +0 -1
- package/dist/src/symbols.js +0 -66
- package/dist/src/symbols.js.map +0 -1
- package/dist/src/tasks.js +0 -231
- package/dist/src/tasks.js.map +0 -1
- package/dist/src/theme.js +0 -29
- package/dist/src/theme.js.map +0 -1
- package/dist/src/types.js +0 -8
- package/dist/src/types.js.map +0 -1
- package/dist/src/utils.js +0 -480
- package/dist/src/utils.js.map +0 -1
package/dist/src/tasks.js
DELETED
|
@@ -1,231 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "TaskRunner", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return TaskRunner;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _ansi = require("./ansi");
|
|
12
|
-
const _symbols = require("./symbols");
|
|
13
|
-
const _utils = require("./utils");
|
|
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
|
-
let TaskRunner = class TaskRunner {
|
|
28
|
-
/**
|
|
29
|
-
* Registers a new task.
|
|
30
|
-
*/ add(id, config) {
|
|
31
|
-
this.tasks.set(id, {
|
|
32
|
-
id,
|
|
33
|
-
...config,
|
|
34
|
-
status: 'pending',
|
|
35
|
-
current: 0
|
|
36
|
-
});
|
|
37
|
-
return this;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Updates an existing task.
|
|
41
|
-
*/ update(id, updates) {
|
|
42
|
-
const task = this.tasks.get(id);
|
|
43
|
-
if (task) {
|
|
44
|
-
Object.assign(task, updates);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Starts a task (sets status to loading).
|
|
49
|
-
*/ start(id, message) {
|
|
50
|
-
this.update(id, {
|
|
51
|
-
status: 'loading',
|
|
52
|
-
message
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Mark task as success.
|
|
57
|
-
*/ success(id, message) {
|
|
58
|
-
this.update(id, {
|
|
59
|
-
status: 'success',
|
|
60
|
-
message
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Mark task as error.
|
|
65
|
-
*/ error(id, message) {
|
|
66
|
-
this.update(id, {
|
|
67
|
-
status: 'error',
|
|
68
|
-
message
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Mark task as warning.
|
|
73
|
-
*/ warning(id, message) {
|
|
74
|
-
this.update(id, {
|
|
75
|
-
status: 'warning',
|
|
76
|
-
message
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Starts the rendering loop.
|
|
81
|
-
*/ run() {
|
|
82
|
-
if (this.isRunning) return;
|
|
83
|
-
this.isRunning = true;
|
|
84
|
-
this.stdout.write(_ansi.ANSI.HIDE_CURSOR);
|
|
85
|
-
this.hijackConsole();
|
|
86
|
-
// Handle Ctrl+C gracefully to restore cursor
|
|
87
|
-
process.on('SIGINT', this.handleSigInt);
|
|
88
|
-
// Initial render
|
|
89
|
-
this.render();
|
|
90
|
-
this.timer = setInterval(()=>{
|
|
91
|
-
this.frameIndex++;
|
|
92
|
-
this.render();
|
|
93
|
-
}, 80);
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Stops the rendering loop and finalizes output.
|
|
97
|
-
*/ stop() {
|
|
98
|
-
if (!this.isRunning) return;
|
|
99
|
-
if (this.timer) {
|
|
100
|
-
clearInterval(this.timer);
|
|
101
|
-
this.timer = undefined;
|
|
102
|
-
}
|
|
103
|
-
// Final render to ensure static state (ticks/crosses instead of spinner)
|
|
104
|
-
this.render();
|
|
105
|
-
this.isRunning = false;
|
|
106
|
-
this.restoreConsole();
|
|
107
|
-
this.stdout.write(_ansi.ANSI.SHOW_CURSOR + '\n');
|
|
108
|
-
if (this.logBuffer.length > 0) {
|
|
109
|
-
this.stdout.write(this.logBuffer.join('\n') + '\n');
|
|
110
|
-
this.logBuffer = [];
|
|
111
|
-
}
|
|
112
|
-
process.removeListener('SIGINT', this.handleSigInt);
|
|
113
|
-
}
|
|
114
|
-
hijackConsole() {
|
|
115
|
-
this.originalConsole = {
|
|
116
|
-
log: console.log,
|
|
117
|
-
warn: console.warn,
|
|
118
|
-
error: console.error
|
|
119
|
-
};
|
|
120
|
-
const logger = (_type)=>(...args)=>{
|
|
121
|
-
// Use util.format for proper string interpolation
|
|
122
|
-
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
123
|
-
const util = require('util');
|
|
124
|
-
const msg = util.format(...args);
|
|
125
|
-
this.logBuffer.push(msg);
|
|
126
|
-
};
|
|
127
|
-
console.log = logger('log');
|
|
128
|
-
console.warn = logger('warn');
|
|
129
|
-
console.error = logger('error');
|
|
130
|
-
}
|
|
131
|
-
restoreConsole() {
|
|
132
|
-
if (this.originalConsole) {
|
|
133
|
-
console.log = this.originalConsole.log;
|
|
134
|
-
console.warn = this.originalConsole.warn;
|
|
135
|
-
console.error = this.originalConsole.error;
|
|
136
|
-
this.originalConsole = null;
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* The core rendering logic using Linear Scan Diffing.
|
|
141
|
-
*/ render() {
|
|
142
|
-
const lines = this.buildLines();
|
|
143
|
-
// 1. First Render
|
|
144
|
-
if (this.lastOutputLines.length === 0) {
|
|
145
|
-
this.stdout.write(lines.join('\n'));
|
|
146
|
-
this.lastOutputLines = lines;
|
|
147
|
-
this.lastOutputHeight = lines.length;
|
|
148
|
-
return;
|
|
149
|
-
}
|
|
150
|
-
let output = '';
|
|
151
|
-
// 2. Return Cursor to Top
|
|
152
|
-
if (this.lastOutputHeight > 1) {
|
|
153
|
-
output += `\x1b[${this.lastOutputHeight - 1}A`; // Move up N-1 lines
|
|
154
|
-
}
|
|
155
|
-
output += '\r'; // Move to start of line
|
|
156
|
-
for(let i = 0; i < lines.length; i++){
|
|
157
|
-
const newLine = lines[i];
|
|
158
|
-
// Write line
|
|
159
|
-
output += _ansi.ANSI.ERASE_LINE + newLine;
|
|
160
|
-
if (i < lines.length - 1) {
|
|
161
|
-
output += '\n';
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
// Clear garbage if shrunk
|
|
165
|
-
if (lines.length < this.lastOutputLines.length) {
|
|
166
|
-
output += _ansi.ANSI.ERASE_DOWN;
|
|
167
|
-
}
|
|
168
|
-
this.stdout.write(output);
|
|
169
|
-
this.lastOutputLines = lines;
|
|
170
|
-
this.lastOutputHeight = lines.length;
|
|
171
|
-
}
|
|
172
|
-
buildLines() {
|
|
173
|
-
const lines = [];
|
|
174
|
-
for (const task of this.tasks.values()){
|
|
175
|
-
const icon = this.getIcon(task);
|
|
176
|
-
const title = task.title;
|
|
177
|
-
let line = `${icon} ${title}`;
|
|
178
|
-
if (task.type === 'progress' && task.total) {
|
|
179
|
-
const bar = (0, _utils.generateProgressBar)(task.current, task.total);
|
|
180
|
-
line += ` ${_ansi.ANSI.FG_GRAY}${bar}${_ansi.ANSI.RESET}`;
|
|
181
|
-
}
|
|
182
|
-
if (task.message) {
|
|
183
|
-
line += ` ${_ansi.ANSI.DIM}- ${task.message}${_ansi.ANSI.RESET}`;
|
|
184
|
-
}
|
|
185
|
-
lines.push(line);
|
|
186
|
-
}
|
|
187
|
-
return lines;
|
|
188
|
-
}
|
|
189
|
-
getIcon(task) {
|
|
190
|
-
switch(task.status){
|
|
191
|
-
case 'pending':
|
|
192
|
-
return `${_ansi.ANSI.FG_GRAY}${_symbols.symbols.unchecked}${_ansi.ANSI.RESET}`;
|
|
193
|
-
case 'loading':
|
|
194
|
-
{
|
|
195
|
-
const frame = _symbols.symbols.spinner[this.frameIndex % _symbols.symbols.spinner.length];
|
|
196
|
-
return `${_ansi.ANSI.FG_CYAN}${frame}${_ansi.ANSI.RESET}`;
|
|
197
|
-
}
|
|
198
|
-
case 'success':
|
|
199
|
-
return `${_ansi.ANSI.FG_GREEN}${_symbols.symbols.tick}${_ansi.ANSI.RESET}`;
|
|
200
|
-
case 'error':
|
|
201
|
-
return `${_ansi.ANSI.FG_RED}${_symbols.symbols.cross}${_ansi.ANSI.RESET}`;
|
|
202
|
-
case 'warning':
|
|
203
|
-
return `${_ansi.ANSI.FG_YELLOW}!${_ansi.ANSI.RESET}`;
|
|
204
|
-
default:
|
|
205
|
-
return ' ';
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
constructor(options = {}){
|
|
209
|
-
_define_property(this, "tasks", new Map());
|
|
210
|
-
_define_property(this, "options", void 0);
|
|
211
|
-
_define_property(this, "timer", void 0);
|
|
212
|
-
_define_property(this, "frameIndex", 0);
|
|
213
|
-
_define_property(this, "isRunning", false);
|
|
214
|
-
_define_property(this, "lastOutputLines", []);
|
|
215
|
-
_define_property(this, "lastOutputHeight", 0);
|
|
216
|
-
// Explicitly using stdout
|
|
217
|
-
_define_property(this, "stdout", process.stdout);
|
|
218
|
-
// Console Hijacking
|
|
219
|
-
_define_property(this, "originalConsole", null);
|
|
220
|
-
_define_property(this, "logBuffer", []);
|
|
221
|
-
_define_property(this, "handleSigInt", ()=>{
|
|
222
|
-
this.restoreConsole();
|
|
223
|
-
this.stdout.write(_ansi.ANSI.SHOW_CURSOR + '\n');
|
|
224
|
-
process.exit(0);
|
|
225
|
-
});
|
|
226
|
-
this.options = options;
|
|
227
|
-
this.handleSigInt = this.handleSigInt.bind(this);
|
|
228
|
-
}
|
|
229
|
-
};
|
|
230
|
-
|
|
231
|
-
//# sourceMappingURL=tasks.js.map
|
package/dist/src/tasks.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/tasks.ts"],"sourcesContent":["import { ANSI } from './ansi';\nimport { symbols } from './symbols';\nimport { TaskConfig, TaskGroupOptions, TaskState } from './types';\nimport { generateProgressBar } from './utils';\n\nexport class TaskRunner {\n private tasks: Map<string, TaskState> = new Map();\n private options: TaskGroupOptions;\n private timer?: NodeJS.Timeout;\n private frameIndex: number = 0;\n private isRunning: boolean = false;\n private lastOutputLines: string[] = [];\n private lastOutputHeight: number = 0;\n\n // Explicitly using stdout\n private stdout: NodeJS.WriteStream = process.stdout;\n\n // Console Hijacking\n private originalConsole: { log: any, warn: any, error: any } | null = null;\n private logBuffer: string[] = [];\n\n constructor(options: TaskGroupOptions = {}) {\n this.options = options;\n this.handleSigInt = this.handleSigInt.bind(this);\n }\n\n /**\n * Registers a new task.\n */\n public add(id: string, config: Omit<TaskConfig, 'id'>): TaskRunner {\n this.tasks.set(id, {\n id,\n ...config,\n status: 'pending',\n current: 0,\n });\n return this;\n }\n\n /**\n * Updates an existing task.\n */\n public update(id: string, updates: Partial<Omit<TaskState, 'id' | 'type' | 'title'>> & { title?: string }): void {\n const task = this.tasks.get(id);\n if (task) {\n Object.assign(task, updates);\n }\n }\n\n /**\n * Starts a task (sets status to loading).\n */\n public start(id: string, message?: string): void {\n this.update(id, { status: 'loading', message });\n }\n\n /**\n * Mark task as success.\n */\n public success(id: string, message?: string): void {\n this.update(id, { status: 'success', message });\n }\n\n /**\n * Mark task as error.\n */\n public error(id: string, message?: string): void {\n this.update(id, { status: 'error', message });\n }\n\n /**\n * Mark task as warning.\n */\n public warning(id: string, message?: string): void {\n this.update(id, { status: 'warning', message });\n }\n\n /**\n * Starts the rendering loop.\n */\n public run(): void {\n if (this.isRunning) return;\n this.isRunning = true;\n\n this.stdout.write(ANSI.HIDE_CURSOR);\n this.hijackConsole();\n\n // Handle Ctrl+C gracefully to restore cursor\n process.on('SIGINT', this.handleSigInt);\n\n // Initial render\n this.render();\n\n this.timer = setInterval(() => {\n this.frameIndex++;\n this.render();\n }, 80);\n }\n\n /**\n * Stops the rendering loop and finalizes output.\n */\n public stop(): void {\n if (!this.isRunning) return;\n\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = undefined;\n }\n\n // Final render to ensure static state (ticks/crosses instead of spinner)\n this.render();\n\n this.isRunning = false;\n this.restoreConsole();\n this.stdout.write(ANSI.SHOW_CURSOR + '\\n');\n\n if (this.logBuffer.length > 0) {\n this.stdout.write(this.logBuffer.join('\\n') + '\\n');\n this.logBuffer = [];\n }\n\n process.removeListener('SIGINT', this.handleSigInt);\n }\n\n private handleSigInt = () => {\n this.restoreConsole();\n this.stdout.write(ANSI.SHOW_CURSOR + '\\n');\n process.exit(0);\n };\n\n private hijackConsole() {\n this.originalConsole = {\n log: console.log,\n warn: console.warn,\n error: console.error\n };\n\n const logger = (_type: string) => (...args: any[]) => {\n // Use util.format for proper string interpolation\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const util = require('util');\n const msg = util.format(...args);\n this.logBuffer.push(msg);\n };\n\n console.log = logger('log');\n console.warn = logger('warn');\n console.error = logger('error');\n }\n\n private restoreConsole() {\n if (this.originalConsole) {\n console.log = this.originalConsole.log;\n console.warn = this.originalConsole.warn;\n console.error = this.originalConsole.error;\n this.originalConsole = null;\n }\n }\n\n /**\n * The core rendering logic using Linear Scan Diffing.\n */\n private render(): void {\n const lines = this.buildLines();\n\n // 1. First Render\n if (this.lastOutputLines.length === 0) {\n this.stdout.write(lines.join('\\n'));\n this.lastOutputLines = lines;\n this.lastOutputHeight = lines.length;\n return;\n }\n\n let output = '';\n\n // 2. Return Cursor to Top\n if (this.lastOutputHeight > 1) {\n output += `\\x1b[${this.lastOutputHeight - 1}A`; // Move up N-1 lines\n }\n output += '\\r'; // Move to start of line\n\n for (let i = 0; i < lines.length; i++) {\n const newLine = lines[i];\n // Write line\n output += ANSI.ERASE_LINE + newLine;\n if (i < lines.length - 1) {\n output += '\\n';\n }\n }\n\n // Clear garbage if shrunk\n if (lines.length < this.lastOutputLines.length) {\n output += ANSI.ERASE_DOWN;\n }\n\n this.stdout.write(output);\n this.lastOutputLines = lines;\n this.lastOutputHeight = lines.length;\n }\n\n private buildLines(): string[] {\n const lines: string[] = [];\n\n for (const task of this.tasks.values()) {\n const icon = this.getIcon(task);\n const title = task.title;\n\n let line = `${icon} ${title}`;\n\n if (task.type === 'progress' && task.total) {\n const bar = generateProgressBar(task.current, task.total);\n line += ` ${ANSI.FG_GRAY}${bar}${ANSI.RESET}`;\n }\n\n if (task.message) {\n line += ` ${ANSI.DIM}- ${task.message}${ANSI.RESET}`;\n }\n\n lines.push(line);\n }\n\n return lines;\n }\n\n private getIcon(task: TaskState): string {\n switch (task.status) {\n case 'pending':\n return `${ANSI.FG_GRAY}${symbols.unchecked}${ANSI.RESET}`;\n case 'loading': {\n const frame = symbols.spinner[this.frameIndex % symbols.spinner.length];\n return `${ANSI.FG_CYAN}${frame}${ANSI.RESET}`;\n }\n case 'success':\n return `${ANSI.FG_GREEN}${symbols.tick}${ANSI.RESET}`;\n case 'error':\n return `${ANSI.FG_RED}${symbols.cross}${ANSI.RESET}`;\n case 'warning':\n return `${ANSI.FG_YELLOW}!${ANSI.RESET}`;\n default:\n return ' ';\n }\n }\n}\n"],"names":["TaskRunner","add","id","config","tasks","set","status","current","update","updates","task","get","Object","assign","start","message","success","error","warning","run","isRunning","stdout","write","ANSI","HIDE_CURSOR","hijackConsole","process","on","handleSigInt","render","timer","setInterval","frameIndex","stop","clearInterval","undefined","restoreConsole","SHOW_CURSOR","logBuffer","length","join","removeListener","originalConsole","log","console","warn","logger","_type","args","util","require","msg","format","push","lines","buildLines","lastOutputLines","lastOutputHeight","output","i","newLine","ERASE_LINE","ERASE_DOWN","values","icon","getIcon","title","line","type","total","bar","generateProgressBar","FG_GRAY","RESET","DIM","symbols","unchecked","frame","spinner","FG_CYAN","FG_GREEN","tick","FG_RED","cross","FG_YELLOW","options","Map","exit","bind"],"mappings":"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"}
|
package/dist/src/theme.js
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "theme", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return theme;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _ansi = require("./ansi");
|
|
12
|
-
const theme = {
|
|
13
|
-
main: _ansi.ANSI.FG_CYAN,
|
|
14
|
-
success: _ansi.ANSI.FG_GREEN,
|
|
15
|
-
error: _ansi.ANSI.FG_RED,
|
|
16
|
-
muted: _ansi.ANSI.FG_GRAY,
|
|
17
|
-
title: _ansi.ANSI.RESET,
|
|
18
|
-
// Add specific syntax colors
|
|
19
|
-
syntax: {
|
|
20
|
-
key: _ansi.ANSI.FG_CYAN,
|
|
21
|
-
string: _ansi.ANSI.FG_GREEN,
|
|
22
|
-
number: _ansi.ANSI.FG_YELLOW,
|
|
23
|
-
boolean: _ansi.ANSI.FG_MAGENTA,
|
|
24
|
-
null: _ansi.ANSI.FG_RED,
|
|
25
|
-
punctuation: _ansi.ANSI.FG_WHITE
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
//# sourceMappingURL=theme.js.map
|
package/dist/src/theme.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/theme.ts"],"sourcesContent":["import { ANSI } from './ansi';\nimport { ThemeConfig } from './types';\n\nexport const theme: ThemeConfig = {\n main: ANSI.FG_CYAN,\n success: ANSI.FG_GREEN,\n error: ANSI.FG_RED,\n muted: ANSI.FG_GRAY,\n title: ANSI.RESET,\n // Add specific syntax colors\n syntax: {\n key: ANSI.FG_CYAN,\n string: ANSI.FG_GREEN,\n number: ANSI.FG_YELLOW,\n boolean: ANSI.FG_MAGENTA,\n null: ANSI.FG_RED,\n punctuation: ANSI.FG_WHITE,\n }\n};"],"names":["theme","main","ANSI","FG_CYAN","success","FG_GREEN","error","FG_RED","muted","FG_GRAY","title","RESET","syntax","key","string","number","FG_YELLOW","boolean","FG_MAGENTA","null","punctuation","FG_WHITE"],"mappings":";;;;+BAGaA;;;eAAAA;;;sBAHQ;AAGd,MAAMA,QAAqB;IAC9BC,MAAMC,UAAI,CAACC,OAAO;IAClBC,SAASF,UAAI,CAACG,QAAQ;IACtBC,OAAOJ,UAAI,CAACK,MAAM;IAClBC,OAAON,UAAI,CAACO,OAAO;IACnBC,OAAOR,UAAI,CAACS,KAAK;IACjB,6BAA6B;IAC7BC,QAAQ;QACJC,KAAKX,UAAI,CAACC,OAAO;QACjBW,QAAQZ,UAAI,CAACG,QAAQ;QACrBU,QAAQb,UAAI,CAACc,SAAS;QACtBC,SAASf,UAAI,CAACgB,UAAU;QACxBC,MAAMjB,UAAI,CAACK,MAAM;QACjBa,aAAalB,UAAI,CAACmB,QAAQ;IAC9B;AACJ"}
|
package/dist/src/types.js
DELETED
package/dist/src/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/types.ts"],"sourcesContent":["/**\n * Type definitions for Mep CLI interactions.\n */\n\nexport interface ThemeConfig {\n main: string; // Primary branding color (e.g., cursor, selected item, values)\n success: string; // Success messages, checkmarks\n error: string; // Error messages, cross marks\n muted: string; // Placeholders, help text, unselected items\n title: string; // Questions/Titles\n syntax: {\n key: string; // JSON Key color\n string: string; // JSON String value color\n number: string; // JSON Number value color\n boolean: string; // JSON Boolean value color\n null: string; // JSON Null value color\n punctuation: string; // JSON Punctuation color\n };\n}\n\nexport interface BaseOptions {\n message: string;\n mouse?: boolean;\n}\n\nexport interface MouseEvent {\n name: 'mouse';\n x: number;\n y: number;\n button: number;\n action: 'press' | 'release' | 'move' | 'scroll';\n scroll?: 'up' | 'down';\n shift?: boolean;\n ctrl?: boolean;\n meta?: boolean;\n}\n\nexport interface TextOptions extends BaseOptions {\n placeholder?: string;\n initial?: string;\n validate?: (value: string) => string | boolean | Promise<string | boolean>;\n isPassword?: boolean;\n multiline?: boolean;\n mask?: string;\n suggest?: (input: string) => string | Promise<string>;\n}\n\nexport interface Separator {\n separator: true;\n text?: string;\n}\n\nexport interface SelectChoice<V> {\n title: string;\n value: V;\n description?: string; // Optional hint\n}\n\nexport interface SelectOptions<V> extends BaseOptions {\n choices: (SelectChoice<V> | Separator)[];\n}\n\nexport interface TransferOptions<V> extends BaseOptions {\n source: (string | SelectChoice<V>)[];\n target?: (string | SelectChoice<V>)[];\n}\n\nexport interface CronOptions extends BaseOptions {\n initial?: string;\n placeholder?: string;\n}\n\n// --- Checkbox Types ---\nexport interface CheckboxChoice<V> extends SelectChoice<V> {\n selected?: boolean; // Default checked state\n}\n\nexport interface CheckboxOptions<V> extends BaseOptions {\n choices: CheckboxChoice<V>[];\n min?: number; // Minimum selections required (optional)\n max?: number; // Maximum selections allowed (optional)\n}\n\nexport interface ConfirmOptions extends BaseOptions {\n initial?: boolean;\n}\n\nexport interface NumberOptions extends BaseOptions {\n initial?: number;\n min?: number;\n max?: number;\n step?: number;\n placeholder?: string;\n}\n\nexport interface ToggleOptions extends BaseOptions {\n initial?: boolean;\n activeText?: string;\n inactiveText?: string;\n}\n\nexport interface ListOptions extends BaseOptions {\n placeholder?: string;\n initial?: string[];\n validate?: (value: string[]) => string | boolean | Promise<string | boolean>;\n}\n\nexport interface SliderOptions extends BaseOptions {\n min: number;\n max: number;\n initial?: number;\n step?: number;\n unit?: string;\n}\n\nexport interface RangeOptions extends BaseOptions {\n min: number;\n max: number;\n initial?: [number, number];\n step?: number;\n unit?: string;\n}\n\nexport interface SelectRangeOptions<V> extends Omit<SelectOptions<V>, 'initial'> {\n initial?: [number, number]; // Start and End indices\n}\n\nexport interface RatingOptions extends BaseOptions {\n min?: number;\n max?: number;\n initial?: number;\n}\n\nexport interface DateOptions extends BaseOptions {\n initial?: Date;\n min?: Date;\n max?: Date;\n}\n\nexport interface FileOptions extends BaseOptions {\n basePath?: string;\n extensions?: string[];\n onlyDirectories?: boolean;\n}\n\nexport interface MultiSelectOptions<V> extends CheckboxOptions<V> {\n // Inherits choices, min, max\n}\n\nexport interface AutocompleteOptions<V> extends BaseOptions {\n suggest: (input: string) => Promise<SelectChoice<V>[]>;\n limit?: number; // defaults to 10\n fallback?: string; // Message when no results\n initial?: string; // Initial query\n}\n\nexport interface SortOptions extends BaseOptions {\n items: string[];\n}\n\nexport interface EditorOptions extends BaseOptions {\n initial?: string;\n extension?: string;\n waitUserInput?: boolean;\n}\n\nexport interface TableRow<V> {\n value: V;\n row: string[];\n}\n\nexport interface TableOptions<V> extends BaseOptions {\n columns: string[];\n data: TableRow<V>[];\n rows?: number; // display rows\n}\n\nexport interface TreeNode<V> {\n title: string;\n value: V;\n children?: TreeNode<V>[];\n expanded?: boolean;\n disabled?: boolean;\n selected?: boolean | 'indeterminate';\n}\n\nexport interface TreeOptions<V> extends BaseOptions {\n data: TreeNode<V>[];\n initial?: V;\n indent?: number;\n}\n\nexport interface KeypressOptions extends BaseOptions {\n keys?: string[];\n showInvisible?: boolean;\n}\n\nexport interface FormField {\n name: string;\n message: string;\n initial?: string;\n validate?: (value: string) => string | boolean | Promise<string | boolean>;\n}\n\nexport interface FormOptions extends BaseOptions {\n fields: FormField[];\n}\n\nexport interface SnippetOptions extends BaseOptions {\n template: string;\n values?: Record<string, string>;\n fields?: Record<string, {\n message?: string;\n validate?: (value: string) => string | boolean;\n }>;\n}\n\nexport interface SpamOptions extends BaseOptions {\n threshold: number;\n spamKey?: string;\n decay?: boolean;\n}\n\nexport interface WaitOptions extends BaseOptions {\n seconds: number;\n autoSubmit?: boolean;\n}\n\nexport interface CodeOptions extends BaseOptions {\n template: string;\n language?: 'json' | 'env' | 'toml' | 'csv' | 'sh' | 'bash' | 'zsh' | 'properties' | 'props' | 'conf';\n /**\n * Enable syntax highlighting (Experimental).\n * @default true\n */\n highlight?: boolean;\n /**\n * Initial values for variables in the template.\n */\n values?: Record<string, string>;\n}\n\nexport interface TreeSelectNode<V> {\n title: string;\n value: V;\n children?: TreeSelectNode<V>[];\n expanded?: boolean;\n disabled?: boolean;\n selected?: boolean | 'indeterminate';\n}\n\nexport interface TreeSelectOptions<V> extends BaseOptions {\n data: TreeSelectNode<V>[];\n initial?: V[];\n indent?: number;\n}\n\nexport interface ColorOptions extends BaseOptions {\n initial?: string; // Hex support (e.g. \"#3B82F6\")\n format?: 'hex' | 'rgb' | 'hsl';\n}\n\nexport interface GridOptions extends BaseOptions {\n rows: string[];\n columns: string[];\n initial?: boolean[][]; // Initial selected state\n}\n\nexport interface SortGridOptions extends BaseOptions {\n data: string[][];\n}\n\nexport interface CalendarOptions extends BaseOptions {\n mode?: 'single' | 'range';\n multiple?: boolean; // Allow picking multiple dates or multiple ranges\n initial?: Date | [Date, Date]; // Single date or Range tuple\n min?: Date;\n max?: Date;\n weekStart?: 0 | 1; // 0 = Sunday, 1 = Monday\n}\n\n// --- New Prompts ---\nexport interface MapOptions extends BaseOptions {\n initial?: Record<string, string>;\n suggestions?: string[];\n}\n\nexport interface SemVerOptions extends BaseOptions {\n currentVersion: string;\n}\n\nexport interface IPOptions extends BaseOptions {\n initial?: string;\n}\n\nexport interface OTPOptions extends BaseOptions {\n length?: number;\n mask?: string;\n secure?: boolean;\n placeholder?: string;\n}\n\nexport interface QuizSelectOptions<V> extends SelectOptions<V> {\n correctValue: V;\n explanation?: string;\n}\n\nexport interface QuizTextOptions extends TextOptions {\n verify?: (value: string) => boolean | Promise<boolean>;\n correctAnswer: string;\n explanation?: string;\n}\n\n// --- Kanban Types ---\nexport interface KanbanItem {\n id: string;\n title: string;\n [key: string]: any;\n}\n\nexport interface KanbanColumn<V extends KanbanItem> {\n id: string;\n title: string;\n items: V[];\n}\n\nexport interface KanbanOptions<V extends KanbanItem> extends BaseOptions {\n columns: KanbanColumn<V>[];\n}\n\n// --- Time Scroller Types ---\nexport interface TimeOptions extends BaseOptions {\n format?: '12h' | '24h';\n step?: number;\n initial?: Date | string;\n}\n\n// --- Heatmap Types ---\nexport interface HeatmapLegend {\n value: number;\n char: string;\n color: (str: string) => string;\n}\n\nexport interface HeatmapOptions extends BaseOptions {\n rows: string[];\n columns: string[];\n legend: HeatmapLegend[];\n initial?: number[][];\n}\n\nexport interface ByteOptions extends BaseOptions {\n initial?: number; // Field initial in bytes\n min?: number; // Min bytes\n max?: number; // Max bytes\n}\n\n// --- Slot Machine Types ---\nexport interface SlotOptions extends BaseOptions {\n choices: string[];\n rows?: number; // Default: 3\n initial?: number; // Default: 0\n}\n\n// --- Rhythm Gauge Types ---\nexport interface GaugeOptions extends BaseOptions {\n theme?: Partial<ThemeConfig>;\n width?: number; // Default: 40\n /** Safe zone width as a percentage (0-1) or absolute character count (>1). Default: 0.2 (20%) */\n safeZone?: number;\n}\n\n// --- Calculator Types ---\nexport interface CalculatorOptions extends BaseOptions {\n initial?: string;\n variables?: Record<string, number>;\n precision?: number;\n placeholder?: string;\n}\n\n// --- Emoji Types ---\nexport interface EmojiItem {\n char: string;\n name: string;\n description?: string;\n}\n\nexport interface EmojiOptions extends BaseOptions {\n emojis: EmojiItem[];\n recent?: string[]; // Array of emoji names\n cols?: number;\n}\n\n// --- Match Types ---\nexport interface MatchItem {\n id: string;\n label: string;\n value?: any;\n}\n\nexport interface MatchOptions extends BaseOptions {\n source: (string | MatchItem)[];\n target: (string | MatchItem)[];\n constraints?: {\n required?: boolean; // Must link all source items?\n oneToMany?: boolean; // Can a target receive multiple sources?\n };\n}\n\n// --- Diff Types ---\nexport interface DiffOptions extends BaseOptions {\n original: string;\n modified: string;\n context?: number;\n mode?: 'inline' | 'split';\n}\n\n// --- Dial Types ---\nexport interface DialOptions extends BaseOptions {\n min: number;\n max: number;\n step?: number;\n radius?: number;\n pointerSymbol?: string;\n initial?: number;\n}\n\n// --- Draw Types ---\nexport interface DrawOptions extends BaseOptions {\n width: number; // Width in characters\n height: number; // Height in characters\n exportType?: 'matrix' | 'text';\n initial?: boolean[][];\n}\n\n// --- Multi-Column Select Types ---\nexport interface MultiColumnSelectOptions<V> extends SelectOptions<V> {\n cols?: number | 'auto';\n}\n\n// --- Fuzzy Match Types ---\nexport interface FuzzySelectOptions<V> extends SelectOptions<V> {\n // Inherits choices\n}\n\n// --- Miller Columns Types ---\nexport interface MillerOptions<V> extends BaseOptions {\n data: TreeNode<V>[];\n initial?: V[]; // Path of values to pre-select\n separator?: string;\n}\n\n// --- Pattern Lock Types ---\nexport interface PatternOptions extends BaseOptions {\n rows?: number; // Default 3\n cols?: number; // Default 3\n nodeChar?: string; // Default ●\n lineChar?: string; // Default based on symbols\n}\n\n// --- Region/Map Selector Types ---\nexport interface MapRegion {\n id: string;\n label: string;\n x: number;\n y: number;\n description?: string;\n}\n\nexport interface RegionOptions extends BaseOptions {\n mapArt: string;\n regions: MapRegion[];\n initial?: string; // Initial selected region ID\n}\n\n// --- Spreadsheet Types ---\nexport interface SpreadsheetColumn {\n name: string;\n key: string;\n width?: number; // Fixed width, or auto if undefined\n editable?: boolean;\n}\n\nexport interface SpreadsheetOptions extends BaseOptions {\n columns: SpreadsheetColumn[];\n data: Record<string, any>[];\n rows?: number; // Viewport height\n keyBindings?: {\n save?: string[];\n cancel?: string[];\n };\n}\n\n// --- Scroll Prompt Types ---\nexport interface ScrollOptions extends BaseOptions {\n content: string;\n height?: number; // Default: 10-15\n requireScrollToBottom?: boolean;\n}\n\n// --- Breadcrumb Types ---\nexport interface BreadcrumbOptions extends BaseOptions {\n root?: string;\n separator?: string;\n showHidden?: boolean;\n}\n\n// --- Schedule Types ---\nexport interface ScheduleTask {\n name: string;\n start: Date;\n end: Date;\n metadata?: any;\n}\n\nexport interface ScheduleOptions extends BaseOptions {\n data: ScheduleTask[];\n}\n\n// --- Data Inspector Types ---\nexport interface DataInspectorOptions extends BaseOptions {\n data: any;\n maxDepth?: number;\n}\n\n// --- Exec Types ---\nexport interface ExecOptions extends BaseOptions {\n command: string;\n timeout?: number; // ms, default 0 (infinite)\n cwd?: string;\n streamOutput?: boolean; // default false\n}\n\n// --- Shortcut Types ---\nexport interface ShortcutResult {\n name: string;\n ctrl: boolean;\n shift: boolean;\n meta: boolean;\n sequence: string;\n}\n\nexport interface ShortcutOptions extends BaseOptions {\n initial?: ShortcutResult;\n}\n\n// --- Seat Types ---\nexport interface SeatOptions extends BaseOptions {\n layout: string[];\n rows?: string[];\n cols?: string[];\n initial?: string[];\n multiple?: boolean;\n}\n\n// --- Dependency Types ---\nexport interface DependencyItem<V> extends CheckboxChoice<V> {\n dependsOn?: V[]; // Values this item depends on\n triggers?: V[]; // Values this item triggers ON\n conflictsWith?: V[]; // Values this item forces OFF\n}\n\nexport interface DependencyOptions<V> extends BaseOptions {\n choices: DependencyItem<V>[];\n min?: number;\n max?: number;\n autoResolve?: boolean; // Default true: automatically check dependencies\n}\n\n// --- License Types ---\nexport interface License {\n id: string; // SPDX\n name: string;\n description: string;\n permissions: string[];\n conditions: string[];\n limitations: string[];\n}\n\nexport interface LicenseOptions extends BaseOptions {\n defaultLicense?: string;\n}\n\n// --- Regex Types ---\nexport interface RegexOptions extends BaseOptions {\n tests: string[];\n flags?: string;\n}\n\n// --- Box Model Types ---\nexport interface BoxOptions extends BaseOptions {\n initial?: number | { top: number; right: number; bottom: number; left: number };\n min?: number;\n max?: number;\n step?: number;\n}\n\n// --- Phone Types ---\nexport interface PhoneOptions extends BaseOptions {\n defaultCountry?: string; // ISO Code (e.g., 'VN')\n placeholder?: string; // Custom placeholder if no default mask\n strict?: boolean; // Enforce strict mask length\n validate?: (value: string) => string | boolean | Promise<string | boolean>;\n}\n\n// --- TaskRunner Types ---\n\nexport type TaskStatus = 'pending' | 'loading' | 'success' | 'error' | 'warning';\n\nexport interface TaskConfig {\n id: string;\n title: string;\n type?: 'spinner' | 'progress'; // Defaults to spinner\n total?: number; // Only used for progress bar\n}\n\n// Internal state of each Task\nexport interface TaskState extends TaskConfig {\n status: TaskStatus;\n current: number; // Progress value\n message?: string; // Secondary message (e.g. \"Downloading 5MB/s...\")\n}\n\nexport interface TaskGroupOptions {\n concurrency?: number; // (Optional) Limit concurrent tasks (for Pipeline)\n renderer?: 'default' | 'minimal'; // Minimal for CI environments\n}\n"],"names":[],"mappings":"AAAA;;CAEC"}
|