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
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "connectionString", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return connectionString;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _select = require("./select");
|
|
12
|
-
const _text = require("./text");
|
|
13
|
-
const _number = require("./number");
|
|
14
|
-
const _confirm = require("./confirm");
|
|
15
|
-
const _file = require("./file");
|
|
16
|
-
const DEFAULT_PROTOCOLS = [
|
|
17
|
-
'postgres',
|
|
18
|
-
'mysql',
|
|
19
|
-
'mongodb',
|
|
20
|
-
'redis',
|
|
21
|
-
'amqp',
|
|
22
|
-
'sqlite'
|
|
23
|
-
];
|
|
24
|
-
const DEFAULT_PORTS = {
|
|
25
|
-
postgres: 5432,
|
|
26
|
-
mysql: 3306,
|
|
27
|
-
mongodb: 27017,
|
|
28
|
-
redis: 6379,
|
|
29
|
-
amqp: 5672
|
|
30
|
-
};
|
|
31
|
-
async function connectionString(options) {
|
|
32
|
-
const protocols = options.protocols || DEFAULT_PROTOCOLS;
|
|
33
|
-
const defaults = {
|
|
34
|
-
...DEFAULT_PORTS,
|
|
35
|
-
...options.defaults
|
|
36
|
-
};
|
|
37
|
-
// 1. Protocol Selection
|
|
38
|
-
const protocol = await new _select.SelectPrompt({
|
|
39
|
-
message: options.message,
|
|
40
|
-
choices: protocols.map((p)=>({
|
|
41
|
-
title: p,
|
|
42
|
-
value: p
|
|
43
|
-
}))
|
|
44
|
-
}).run();
|
|
45
|
-
const parts = {
|
|
46
|
-
protocol
|
|
47
|
-
};
|
|
48
|
-
let raw = '';
|
|
49
|
-
if (protocol === 'sqlite') {
|
|
50
|
-
// SQLite: File Path
|
|
51
|
-
const filePath = await new _file.FilePrompt({
|
|
52
|
-
message: 'Database file path'
|
|
53
|
-
}).run();
|
|
54
|
-
parts.filePath = filePath;
|
|
55
|
-
// Construct SQLite URI
|
|
56
|
-
raw = `sqlite://${filePath}`;
|
|
57
|
-
} else {
|
|
58
|
-
// Network Database
|
|
59
|
-
// 2. Host
|
|
60
|
-
const host = await new _text.TextPrompt({
|
|
61
|
-
message: 'Host',
|
|
62
|
-
initial: 'localhost',
|
|
63
|
-
placeholder: 'localhost'
|
|
64
|
-
}).run();
|
|
65
|
-
parts.host = host;
|
|
66
|
-
// 3. Port
|
|
67
|
-
const defaultPort = defaults[protocol];
|
|
68
|
-
const port = await new _number.NumberPrompt({
|
|
69
|
-
message: 'Port',
|
|
70
|
-
initial: defaultPort
|
|
71
|
-
}).run();
|
|
72
|
-
parts.port = port;
|
|
73
|
-
// 4. Auth
|
|
74
|
-
const hasAuth = await new _confirm.ConfirmPrompt({
|
|
75
|
-
message: 'Authentication required?',
|
|
76
|
-
initial: true
|
|
77
|
-
}).run();
|
|
78
|
-
if (hasAuth) {
|
|
79
|
-
const user = await new _text.TextPrompt({
|
|
80
|
-
message: 'Username',
|
|
81
|
-
initial: 'root'
|
|
82
|
-
}).run();
|
|
83
|
-
parts.user = user;
|
|
84
|
-
// Use TextPrompt with empty mask for secret handling
|
|
85
|
-
const password = await new _text.TextPrompt({
|
|
86
|
-
message: 'Password',
|
|
87
|
-
mask: '*'
|
|
88
|
-
}).run();
|
|
89
|
-
parts.password = password;
|
|
90
|
-
}
|
|
91
|
-
// 5. Database
|
|
92
|
-
const database = await new _text.TextPrompt({
|
|
93
|
-
message: 'Database name'
|
|
94
|
-
}).run();
|
|
95
|
-
parts.database = database;
|
|
96
|
-
// Construct URL
|
|
97
|
-
try {
|
|
98
|
-
// Use URL object for safe construction and encoding
|
|
99
|
-
const u = new URL(`${protocol}://${host}:${port}/${database}`);
|
|
100
|
-
if (parts.user) u.username = parts.user;
|
|
101
|
-
if (parts.password) u.password = parts.password;
|
|
102
|
-
raw = u.toString();
|
|
103
|
-
} catch (_e) {
|
|
104
|
-
// Fallback manual construction with encoding
|
|
105
|
-
const userEncoded = parts.user ? encodeURIComponent(parts.user) : '';
|
|
106
|
-
const passEncoded = parts.password ? encodeURIComponent(parts.password) : '';
|
|
107
|
-
let authPart = '';
|
|
108
|
-
if (userEncoded || passEncoded) {
|
|
109
|
-
authPart = `${userEncoded}:${passEncoded}@`;
|
|
110
|
-
}
|
|
111
|
-
raw = `${protocol}://${authPart}${host}:${port}/${parts.database}`;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
return {
|
|
115
|
-
raw,
|
|
116
|
-
parts
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
//# sourceMappingURL=connection-string.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/prompts/connection-string.ts"],"sourcesContent":["import { SelectPrompt } from './select';\nimport { TextPrompt } from './text';\nimport { NumberPrompt } from './number';\nimport { ConfirmPrompt } from './confirm';\nimport { FilePrompt } from './file';\n\nexport interface ConnectionStringOptions {\n message: string;\n protocols?: string[];\n defaults?: Record<string, number>;\n}\n\nexport interface ConnectionStringResult {\n raw: string;\n parts: {\n protocol: string;\n host?: string;\n port?: number;\n user?: string;\n password?: string;\n database?: string;\n filePath?: string;\n };\n}\n\nconst DEFAULT_PROTOCOLS = ['postgres', 'mysql', 'mongodb', 'redis', 'amqp', 'sqlite'];\n\nconst DEFAULT_PORTS: Record<string, number> = {\n postgres: 5432,\n mysql: 3306,\n mongodb: 27017,\n redis: 6379,\n amqp: 5672,\n};\n\nexport async function connectionString(options: ConnectionStringOptions): Promise<ConnectionStringResult> {\n const protocols = options.protocols || DEFAULT_PROTOCOLS;\n const defaults = { ...DEFAULT_PORTS, ...options.defaults };\n\n // 1. Protocol Selection\n const protocol = await new SelectPrompt({\n message: options.message,\n choices: protocols.map(p => ({ title: p, value: p })),\n }).run();\n\n const parts: ConnectionStringResult['parts'] = { protocol };\n let raw = '';\n\n if (protocol === 'sqlite') {\n // SQLite: File Path\n const filePath = await new FilePrompt({\n message: 'Database file path',\n }).run();\n parts.filePath = filePath;\n // Construct SQLite URI\n raw = `sqlite://${filePath}`;\n } else {\n // Network Database\n // 2. Host\n const host = await new TextPrompt({\n message: 'Host',\n initial: 'localhost',\n placeholder: 'localhost',\n }).run();\n parts.host = host;\n\n // 3. Port\n const defaultPort = defaults[protocol];\n const port = await new NumberPrompt({\n message: 'Port',\n initial: defaultPort,\n }).run();\n parts.port = port;\n\n // 4. Auth\n const hasAuth = await new ConfirmPrompt({\n message: 'Authentication required?',\n initial: true,\n }).run();\n\n if (hasAuth) {\n const user = await new TextPrompt({\n message: 'Username',\n initial: 'root', // Common default\n }).run();\n parts.user = user;\n\n // Use TextPrompt with empty mask for secret handling\n const password = await new TextPrompt({\n message: 'Password',\n mask: '*', // Mask with asterisks\n }).run();\n parts.password = password;\n }\n\n // 5. Database\n const database = await new TextPrompt({\n message: 'Database name',\n }).run();\n parts.database = database;\n\n // Construct URL\n try {\n // Use URL object for safe construction and encoding\n const u = new URL(`${protocol}://${host}:${port}/${database}`);\n if (parts.user) u.username = parts.user;\n if (parts.password) u.password = parts.password;\n raw = u.toString();\n } catch (_e) {\n // Fallback manual construction with encoding\n const userEncoded = parts.user ? encodeURIComponent(parts.user) : '';\n const passEncoded = parts.password ? encodeURIComponent(parts.password) : '';\n let authPart = '';\n if (userEncoded || passEncoded) {\n authPart = `${userEncoded}:${passEncoded}@`;\n }\n raw = `${protocol}://${authPart}${host}:${port}/${parts.database}`;\n }\n }\n\n return { raw, parts };\n}\n"],"names":["connectionString","DEFAULT_PROTOCOLS","DEFAULT_PORTS","postgres","mysql","mongodb","redis","amqp","options","protocols","defaults","protocol","SelectPrompt","message","choices","map","p","title","value","run","parts","raw","filePath","FilePrompt","host","TextPrompt","initial","placeholder","defaultPort","port","NumberPrompt","hasAuth","ConfirmPrompt","user","password","mask","database","u","URL","username","toString","_e","userEncoded","encodeURIComponent","passEncoded","authPart"],"mappings":"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"}
|
package/dist/src/prompts/cron.js
DELETED
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "CronPrompt", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return CronPrompt;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _ansi = require("../ansi");
|
|
12
|
-
const _base = require("../base");
|
|
13
|
-
const _theme = require("../theme");
|
|
14
|
-
function _define_property(obj, key, value) {
|
|
15
|
-
if (key in obj) {
|
|
16
|
-
Object.defineProperty(obj, key, {
|
|
17
|
-
value: value,
|
|
18
|
-
enumerable: true,
|
|
19
|
-
configurable: true,
|
|
20
|
-
writable: true
|
|
21
|
-
});
|
|
22
|
-
} else {
|
|
23
|
-
obj[key] = value;
|
|
24
|
-
}
|
|
25
|
-
return obj;
|
|
26
|
-
}
|
|
27
|
-
const FIELDS = [
|
|
28
|
-
{
|
|
29
|
-
label: 'Minute',
|
|
30
|
-
min: 0,
|
|
31
|
-
max: 59
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
label: 'Hour',
|
|
35
|
-
min: 0,
|
|
36
|
-
max: 23
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
label: 'Day',
|
|
40
|
-
min: 1,
|
|
41
|
-
max: 31
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
label: 'Month',
|
|
45
|
-
min: 1,
|
|
46
|
-
max: 12
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
label: 'Weekday',
|
|
50
|
-
min: 0,
|
|
51
|
-
max: 6
|
|
52
|
-
}
|
|
53
|
-
];
|
|
54
|
-
let CronPrompt = class CronPrompt extends _base.Prompt {
|
|
55
|
-
get currentConfig() {
|
|
56
|
-
return FIELDS[this.activeField];
|
|
57
|
-
}
|
|
58
|
-
render(_firstRender) {
|
|
59
|
-
let output = `${_theme.theme.success}?${_ansi.ANSI.RESET} ${_ansi.ANSI.BOLD}${_theme.theme.title}${this.options.message}${_ansi.ANSI.RESET}\n`;
|
|
60
|
-
// Render fields
|
|
61
|
-
let fieldsStr = '';
|
|
62
|
-
this.fields.forEach((val, index)=>{
|
|
63
|
-
const isSelected = index === this.activeField;
|
|
64
|
-
const displayVal = val.padStart(2, ' ');
|
|
65
|
-
if (isSelected) {
|
|
66
|
-
fieldsStr += `${_theme.theme.main}${_ansi.ANSI.UNDERLINE}${displayVal}${_ansi.ANSI.RESET} `;
|
|
67
|
-
} else {
|
|
68
|
-
fieldsStr += `${_ansi.ANSI.DIM}${displayVal}${_ansi.ANSI.RESET} `;
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
output += ` ${fieldsStr}\n`;
|
|
72
|
-
// Render Label and Hints
|
|
73
|
-
const config = this.currentConfig;
|
|
74
|
-
output += ` ${_theme.theme.muted}${config.label} (${config.min}-${config.max})${_ansi.ANSI.RESET}\n`;
|
|
75
|
-
output += ` ${_ansi.ANSI.DIM}(Arrows: Adjust | Space: Toggle * | 0-9: Type | Tab: Next)${_ansi.ANSI.RESET}`;
|
|
76
|
-
this.renderFrame(output);
|
|
77
|
-
}
|
|
78
|
-
validateCurrentField() {
|
|
79
|
-
const config = this.currentConfig;
|
|
80
|
-
const val = this.fields[this.activeField];
|
|
81
|
-
if (val === '*') return;
|
|
82
|
-
let num = parseInt(val);
|
|
83
|
-
if (isNaN(num)) {
|
|
84
|
-
this.fields[this.activeField] = config.min.toString();
|
|
85
|
-
} else {
|
|
86
|
-
num = Math.max(config.min, Math.min(num, config.max));
|
|
87
|
-
this.fields[this.activeField] = num.toString();
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
handleInput(char) {
|
|
91
|
-
if (char === '\r' || char === '\n') {
|
|
92
|
-
this.validateCurrentField();
|
|
93
|
-
this.submit(this.fields.join(' '));
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
if (char === '\t' || this.isRight(char)) {
|
|
97
|
-
this.validateCurrentField();
|
|
98
|
-
this.activeField = (this.activeField + 1) % 5;
|
|
99
|
-
this.buffer = '';
|
|
100
|
-
this.render(false);
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
|
-
// Shift+Tab detection is often '\x1b[Z'
|
|
104
|
-
if (char === '\x1b[Z' || this.isLeft(char)) {
|
|
105
|
-
this.validateCurrentField();
|
|
106
|
-
this.activeField = (this.activeField - 1 + 5) % 5;
|
|
107
|
-
this.buffer = '';
|
|
108
|
-
this.render(false);
|
|
109
|
-
return;
|
|
110
|
-
}
|
|
111
|
-
const config = this.currentConfig;
|
|
112
|
-
const currentVal = this.fields[this.activeField];
|
|
113
|
-
let numVal = parseInt(currentVal);
|
|
114
|
-
if (this.isUp(char)) {
|
|
115
|
-
if (currentVal === '*') {
|
|
116
|
-
this.fields[this.activeField] = config.min.toString();
|
|
117
|
-
} else if (!isNaN(numVal)) {
|
|
118
|
-
numVal++;
|
|
119
|
-
if (numVal > config.max) numVal = config.min;
|
|
120
|
-
this.fields[this.activeField] = numVal.toString();
|
|
121
|
-
}
|
|
122
|
-
this.buffer = '';
|
|
123
|
-
this.render(false);
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
if (this.isDown(char)) {
|
|
127
|
-
if (currentVal === '*') {
|
|
128
|
-
this.fields[this.activeField] = config.max.toString();
|
|
129
|
-
} else if (!isNaN(numVal)) {
|
|
130
|
-
numVal--;
|
|
131
|
-
if (numVal < config.min) numVal = config.max;
|
|
132
|
-
this.fields[this.activeField] = numVal.toString();
|
|
133
|
-
}
|
|
134
|
-
this.buffer = '';
|
|
135
|
-
this.render(false);
|
|
136
|
-
return;
|
|
137
|
-
}
|
|
138
|
-
if (char === ' ' || char.toLowerCase() === 'x') {
|
|
139
|
-
this.fields[this.activeField] = '*';
|
|
140
|
-
this.buffer = '';
|
|
141
|
-
this.render(false);
|
|
142
|
-
return;
|
|
143
|
-
}
|
|
144
|
-
// Direct Input
|
|
145
|
-
if (/^[0-9]$/.test(char)) {
|
|
146
|
-
const nextBuffer = this.buffer + char;
|
|
147
|
-
const nextNum = parseInt(nextBuffer);
|
|
148
|
-
// Check if valid
|
|
149
|
-
if (!isNaN(nextNum) && nextNum <= config.max) {
|
|
150
|
-
this.buffer = nextBuffer;
|
|
151
|
-
if (nextNum >= 0) {
|
|
152
|
-
this.fields[this.activeField] = nextNum.toString();
|
|
153
|
-
}
|
|
154
|
-
} else {
|
|
155
|
-
const freshNum = parseInt(char);
|
|
156
|
-
if (!isNaN(freshNum) && freshNum <= config.max) {
|
|
157
|
-
this.buffer = char;
|
|
158
|
-
this.fields[this.activeField] = freshNum.toString();
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
this.render(false);
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
handleMouse(event) {
|
|
165
|
-
if (event.action === 'scroll') {
|
|
166
|
-
const config = this.currentConfig;
|
|
167
|
-
const currentVal = this.fields[this.activeField];
|
|
168
|
-
let numVal = parseInt(currentVal);
|
|
169
|
-
if (event.scroll === 'up') {
|
|
170
|
-
if (currentVal === '*') {
|
|
171
|
-
this.fields[this.activeField] = config.min.toString();
|
|
172
|
-
} else if (!isNaN(numVal)) {
|
|
173
|
-
numVal++;
|
|
174
|
-
if (numVal > config.max) numVal = config.min;
|
|
175
|
-
this.fields[this.activeField] = numVal.toString();
|
|
176
|
-
}
|
|
177
|
-
} else {
|
|
178
|
-
if (currentVal === '*') {
|
|
179
|
-
this.fields[this.activeField] = config.max.toString();
|
|
180
|
-
} else if (!isNaN(numVal)) {
|
|
181
|
-
numVal--;
|
|
182
|
-
if (numVal < config.min) numVal = config.max;
|
|
183
|
-
this.fields[this.activeField] = numVal.toString();
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
this.buffer = '';
|
|
187
|
-
this.render(false);
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
constructor(options){
|
|
191
|
-
super(options), _define_property(this, "fields", [
|
|
192
|
-
'*',
|
|
193
|
-
'*',
|
|
194
|
-
'*',
|
|
195
|
-
'*',
|
|
196
|
-
'*'
|
|
197
|
-
]), _define_property(this, "activeField", 0), _define_property(this, "buffer", '');
|
|
198
|
-
if (options.initial) {
|
|
199
|
-
const parts = options.initial.split(' ');
|
|
200
|
-
if (parts.length === 5) {
|
|
201
|
-
this.fields = parts;
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
};
|
|
206
|
-
|
|
207
|
-
//# sourceMappingURL=cron.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/prompts/cron.ts"],"sourcesContent":["import { ANSI } from '../ansi';\nimport { Prompt } from '../base';\nimport { theme } from '../theme';\nimport { CronOptions, MouseEvent } from '../types';\n\ninterface FieldConfig {\n label: string;\n min: number;\n max: number;\n}\n\nconst FIELDS: FieldConfig[] = [\n { label: 'Minute', min: 0, max: 59 },\n { label: 'Hour', min: 0, max: 23 },\n { label: 'Day', min: 1, max: 31 },\n { label: 'Month', min: 1, max: 12 },\n { label: 'Weekday', min: 0, max: 6 }\n];\n\nexport class CronPrompt extends Prompt<string, CronOptions> {\n private fields: string[] = ['*', '*', '*', '*', '*'];\n private activeField: number = 0;\n private buffer: string = '';\n\n constructor(options: CronOptions) {\n super(options);\n if (options.initial) {\n const parts = options.initial.split(' ');\n if (parts.length === 5) {\n this.fields = parts;\n }\n }\n }\n\n private get currentConfig() {\n return FIELDS[this.activeField];\n }\n\n protected render(_firstRender: boolean): void {\n let output = `${theme.success}?${ANSI.RESET} ${ANSI.BOLD}${theme.title}${this.options.message}${ANSI.RESET}\\n`;\n\n // Render fields\n let fieldsStr = '';\n this.fields.forEach((val, index) => {\n const isSelected = index === this.activeField;\n const displayVal = val.padStart(2, ' ');\n\n if (isSelected) {\n fieldsStr += `${theme.main}${ANSI.UNDERLINE}${displayVal}${ANSI.RESET} `;\n } else {\n fieldsStr += `${ANSI.DIM}${displayVal}${ANSI.RESET} `;\n }\n });\n\n output += ` ${fieldsStr}\\n`;\n\n // Render Label and Hints\n const config = this.currentConfig;\n output += ` ${theme.muted}${config.label} (${config.min}-${config.max})${ANSI.RESET}\\n`;\n output += ` ${ANSI.DIM}(Arrows: Adjust | Space: Toggle * | 0-9: Type | Tab: Next)${ANSI.RESET}`;\n\n this.renderFrame(output);\n }\n\n private validateCurrentField() {\n const config = this.currentConfig;\n const val = this.fields[this.activeField];\n if (val === '*') return;\n\n let num = parseInt(val);\n if (isNaN(num)) {\n this.fields[this.activeField] = config.min.toString();\n } else {\n num = Math.max(config.min, Math.min(num, config.max));\n this.fields[this.activeField] = num.toString();\n }\n }\n\n protected handleInput(char: string) {\n if (char === '\\r' || char === '\\n') {\n this.validateCurrentField();\n this.submit(this.fields.join(' '));\n return;\n }\n\n if (char === '\\t' || this.isRight(char)) {\n this.validateCurrentField();\n this.activeField = (this.activeField + 1) % 5;\n this.buffer = '';\n this.render(false);\n return;\n }\n\n // Shift+Tab detection is often '\\x1b[Z'\n if (char === '\\x1b[Z' || this.isLeft(char)) {\n this.validateCurrentField();\n this.activeField = (this.activeField - 1 + 5) % 5;\n this.buffer = '';\n this.render(false);\n return;\n }\n\n const config = this.currentConfig;\n const currentVal = this.fields[this.activeField];\n let numVal = parseInt(currentVal);\n\n if (this.isUp(char)) {\n if (currentVal === '*') {\n this.fields[this.activeField] = config.min.toString();\n } else if (!isNaN(numVal)) {\n numVal++;\n if (numVal > config.max) numVal = config.min;\n this.fields[this.activeField] = numVal.toString();\n }\n this.buffer = '';\n this.render(false);\n return;\n }\n\n if (this.isDown(char)) {\n if (currentVal === '*') {\n this.fields[this.activeField] = config.max.toString();\n } else if (!isNaN(numVal)) {\n numVal--;\n if (numVal < config.min) numVal = config.max;\n this.fields[this.activeField] = numVal.toString();\n }\n this.buffer = '';\n this.render(false);\n return;\n }\n\n if (char === ' ' || char.toLowerCase() === 'x') {\n this.fields[this.activeField] = '*';\n this.buffer = '';\n this.render(false);\n return;\n }\n\n // Direct Input\n if (/^[0-9]$/.test(char)) {\n const nextBuffer = this.buffer + char;\n const nextNum = parseInt(nextBuffer);\n\n // Check if valid\n if (!isNaN(nextNum) && nextNum <= config.max) {\n this.buffer = nextBuffer;\n\n if (nextNum >= 0) { // Should be positive\n this.fields[this.activeField] = nextNum.toString();\n }\n } else {\n const freshNum = parseInt(char);\n if (!isNaN(freshNum) && freshNum <= config.max) {\n this.buffer = char;\n this.fields[this.activeField] = freshNum.toString();\n }\n }\n this.render(false);\n }\n }\n\n protected handleMouse(event: MouseEvent) {\n if (event.action === 'scroll') {\n const config = this.currentConfig;\n const currentVal = this.fields[this.activeField];\n let numVal = parseInt(currentVal);\n\n if (event.scroll === 'up') { // Increase\n if (currentVal === '*') {\n this.fields[this.activeField] = config.min.toString();\n } else if (!isNaN(numVal)) {\n numVal++;\n if (numVal > config.max) numVal = config.min;\n this.fields[this.activeField] = numVal.toString();\n }\n } else { // Decrease\n if (currentVal === '*') {\n this.fields[this.activeField] = config.max.toString();\n } else if (!isNaN(numVal)) {\n numVal--;\n if (numVal < config.min) numVal = config.max;\n this.fields[this.activeField] = numVal.toString();\n }\n }\n this.buffer = '';\n this.render(false);\n }\n }\n}\n"],"names":["CronPrompt","FIELDS","label","min","max","Prompt","currentConfig","activeField","render","_firstRender","output","theme","success","ANSI","RESET","BOLD","title","options","message","fieldsStr","fields","forEach","val","index","isSelected","displayVal","padStart","main","UNDERLINE","DIM","config","muted","renderFrame","validateCurrentField","num","parseInt","isNaN","toString","Math","handleInput","char","submit","join","isRight","buffer","isLeft","currentVal","numVal","isUp","isDown","toLowerCase","test","nextBuffer","nextNum","freshNum","handleMouse","event","action","scroll","initial","parts","split","length"],"mappings":"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"}
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
function _export(target, all) {
|
|
6
|
-
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
_export(exports, {
|
|
12
|
-
get BashStrategy () {
|
|
13
|
-
return BashStrategy;
|
|
14
|
-
},
|
|
15
|
-
get CmdStrategy () {
|
|
16
|
-
return CmdStrategy;
|
|
17
|
-
},
|
|
18
|
-
get PowerShellStrategy () {
|
|
19
|
-
return PowerShellStrategy;
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
function _define_property(obj, key, value) {
|
|
23
|
-
if (key in obj) {
|
|
24
|
-
Object.defineProperty(obj, key, {
|
|
25
|
-
value: value,
|
|
26
|
-
enumerable: true,
|
|
27
|
-
configurable: true,
|
|
28
|
-
writable: true
|
|
29
|
-
});
|
|
30
|
-
} else {
|
|
31
|
-
obj[key] = value;
|
|
32
|
-
}
|
|
33
|
-
return obj;
|
|
34
|
-
}
|
|
35
|
-
let BashStrategy = class BashStrategy {
|
|
36
|
-
escape(value) {
|
|
37
|
-
// e.g. "It's me" -> 'It'\''s me'
|
|
38
|
-
return `'${value.replace(/'/g, "'\\''")}'`;
|
|
39
|
-
}
|
|
40
|
-
constructor(){
|
|
41
|
-
_define_property(this, "binary", 'curl');
|
|
42
|
-
_define_property(this, "wrapper", "'");
|
|
43
|
-
_define_property(this, "continuation", ' \\');
|
|
44
|
-
}
|
|
45
|
-
};
|
|
46
|
-
let PowerShellStrategy = class PowerShellStrategy {
|
|
47
|
-
escape(value) {
|
|
48
|
-
// e.g. "It's me" -> 'It''s me'
|
|
49
|
-
return `'${value.replace(/'/g, "''")}'`;
|
|
50
|
-
}
|
|
51
|
-
constructor(){
|
|
52
|
-
_define_property(this, "binary", 'curl.exe');
|
|
53
|
-
_define_property(this, "wrapper", "'");
|
|
54
|
-
_define_property(this, "continuation", ' `');
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
|
-
let CmdStrategy = class CmdStrategy {
|
|
58
|
-
escape(value) {
|
|
59
|
-
// e.g. {"key": "value"} -> "{\"key\": \"value\"}"
|
|
60
|
-
// e.g. value with " -> "value with \""
|
|
61
|
-
const flattened = value.replace(/[\r\n]+/g, ' ');
|
|
62
|
-
return `"${flattened.replace(/\\/g, '\\\\').replace(/"/g, '\\"')}"`;
|
|
63
|
-
}
|
|
64
|
-
constructor(){
|
|
65
|
-
_define_property(this, "binary", 'curl');
|
|
66
|
-
_define_property(this, "wrapper", '"');
|
|
67
|
-
_define_property(this, "continuation", ' ^');
|
|
68
|
-
}
|
|
69
|
-
};
|
|
70
|
-
|
|
71
|
-
//# sourceMappingURL=curl-utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/prompts/curl-utils.ts"],"sourcesContent":["export type ShellType = 'bash' | 'powershell' | 'cmd';\n\nexport interface ShellStrategy {\n binary: string;\n wrapper: string;\n continuation: string;\n escape(value: string): string;\n}\n\nexport class BashStrategy implements ShellStrategy {\n readonly binary = 'curl';\n readonly wrapper = \"'\";\n readonly continuation = ' \\\\';\n\n escape(value: string): string {\n // e.g. \"It's me\" -> 'It'\\''s me'\n return `'${value.replace(/'/g, \"'\\\\''\")}'`;\n }\n}\n\nexport class PowerShellStrategy implements ShellStrategy {\n readonly binary = 'curl.exe';\n readonly wrapper = \"'\";\n readonly continuation = ' `';\n\n escape(value: string): string {\n // e.g. \"It's me\" -> 'It''s me'\n return `'${value.replace(/'/g, \"''\")}'`;\n }\n}\n\nexport class CmdStrategy implements ShellStrategy {\n readonly binary = 'curl';\n readonly wrapper = '\"';\n readonly continuation = ' ^';\n\n escape(value: string): string {\n // e.g. {\"key\": \"value\"} -> \"{\\\"key\\\": \\\"value\\\"}\"\n // e.g. value with \" -> \"value with \\\"\"\n const flattened = value.replace(/[\\r\\n]+/g, ' ');\n return `\"${flattened.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"')}\"`;\n }\n}\n"],"names":["BashStrategy","CmdStrategy","PowerShellStrategy","escape","value","replace","binary","wrapper","continuation","flattened"],"mappings":";;;;;;;;;;;QASaA;eAAAA;;QAsBAC;eAAAA;;QAXAC;eAAAA;;;;;;;;;;;;;;;;AAXN,IAAA,AAAMF,eAAN,MAAMA;IAKTG,OAAOC,KAAa,EAAU;QAC1B,iCAAiC;QACjC,OAAO,CAAC,CAAC,EAAEA,MAAMC,OAAO,CAAC,MAAM,SAAS,CAAC,CAAC;IAC9C;;QAPA,uBAASC,UAAS;QAClB,uBAASC,WAAU;QACnB,uBAASC,gBAAe;;AAM5B;AAEO,IAAA,AAAMN,qBAAN,MAAMA;IAKTC,OAAOC,KAAa,EAAU;QAC1B,+BAA+B;QAC/B,OAAO,CAAC,CAAC,EAAEA,MAAMC,OAAO,CAAC,MAAM,MAAM,CAAC,CAAC;IAC3C;;QAPA,uBAASC,UAAS;QAClB,uBAASC,WAAU;QACnB,uBAASC,gBAAe;;AAM5B;AAEO,IAAA,AAAMP,cAAN,MAAMA;IAKTE,OAAOC,KAAa,EAAU;QAC1B,kDAAkD;QAClD,uCAAuC;QACvC,MAAMK,YAAYL,MAAMC,OAAO,CAAC,YAAY;QAC5C,OAAO,CAAC,CAAC,EAAEI,UAAUJ,OAAO,CAAC,OAAO,QAAQA,OAAO,CAAC,MAAM,OAAO,CAAC,CAAC;IACvE;;QATA,uBAASC,UAAS;QAClB,uBAASC,WAAU;QACnB,uBAASC,gBAAe;;AAQ5B"}
|