@chainlink/external-adapter-framework 2.12.0 → 2.13.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 +1 -1
- package/config/index.d.ts +9 -0
- package/config/index.js +12 -1
- package/config/index.js.map +1 -1
- package/generator-adapter/generators/app/templates/src/config/index.ts.ejs +3 -0
- package/generator-adapter/node_modules/.yarn-integrity +31 -35
- package/generator-adapter/node_modules/@inquirer/ansi/package.json +28 -26
- package/generator-adapter/node_modules/@inquirer/checkbox/dist/index.d.ts +6 -1
- package/generator-adapter/node_modules/@inquirer/checkbox/dist/index.js +30 -10
- package/generator-adapter/node_modules/@inquirer/checkbox/package.json +23 -21
- package/generator-adapter/node_modules/@inquirer/confirm/package.json +21 -19
- package/generator-adapter/node_modules/@inquirer/core/dist/index.d.ts +1 -1
- package/generator-adapter/node_modules/@inquirer/core/dist/index.js +1 -1
- package/generator-adapter/node_modules/@inquirer/core/dist/lib/create-prompt.js +51 -25
- package/generator-adapter/node_modules/@inquirer/core/dist/lib/key.d.ts +2 -0
- package/generator-adapter/node_modules/@inquirer/core/dist/lib/key.js +1 -0
- package/generator-adapter/node_modules/@inquirer/core/dist/lib/utils.js +1 -1
- package/generator-adapter/node_modules/@inquirer/core/package.json +22 -20
- package/generator-adapter/node_modules/@inquirer/editor/dist/index.d.ts +3 -0
- package/generator-adapter/node_modules/@inquirer/editor/dist/index.js +5 -5
- package/generator-adapter/node_modules/@inquirer/editor/package.json +22 -20
- package/generator-adapter/node_modules/@inquirer/expand/package.json +21 -19
- package/generator-adapter/node_modules/@inquirer/external-editor/package.json +33 -31
- package/generator-adapter/node_modules/@inquirer/figures/package.json +18 -16
- package/generator-adapter/node_modules/@inquirer/input/dist/index.js +5 -3
- package/generator-adapter/node_modules/@inquirer/input/package.json +21 -19
- package/generator-adapter/node_modules/@inquirer/number/package.json +21 -19
- package/generator-adapter/node_modules/@inquirer/password/dist/index.d.ts +6 -1
- package/generator-adapter/node_modules/@inquirer/password/dist/index.js +7 -2
- package/generator-adapter/node_modules/@inquirer/password/package.json +22 -20
- package/generator-adapter/node_modules/@inquirer/prompts/README.md +15 -0
- package/generator-adapter/node_modules/@inquirer/prompts/package.json +31 -29
- package/generator-adapter/node_modules/@inquirer/rawlist/README.md +4 -0
- package/generator-adapter/node_modules/@inquirer/rawlist/dist/index.d.ts +9 -2
- package/generator-adapter/node_modules/@inquirer/rawlist/dist/index.js +24 -7
- package/generator-adapter/node_modules/@inquirer/rawlist/package.json +21 -19
- package/generator-adapter/node_modules/@inquirer/search/README.md +2 -1
- package/generator-adapter/node_modules/@inquirer/search/dist/index.d.ts +1 -0
- package/generator-adapter/node_modules/@inquirer/search/dist/index.js +11 -4
- package/generator-adapter/node_modules/@inquirer/search/package.json +22 -20
- package/generator-adapter/node_modules/@inquirer/select/dist/index.d.ts +5 -2
- package/generator-adapter/node_modules/@inquirer/select/dist/index.js +28 -11
- package/generator-adapter/node_modules/@inquirer/select/package.json +23 -21
- package/generator-adapter/node_modules/@inquirer/type/package.json +18 -16
- package/generator-adapter/node_modules/@types/node/README.md +1 -1
- package/generator-adapter/node_modules/@types/node/http.d.ts +1 -1
- package/generator-adapter/node_modules/@types/node/package.json +2 -2
- package/generator-adapter/node_modules/@types/node/stream/web.d.ts +1 -1
- package/generator-adapter/node_modules/@types/node/test.d.ts +2 -1
- package/generator-adapter/node_modules/@types/node/web-globals/fetch.d.ts +12 -0
- package/generator-adapter/node_modules/@yeoman/adapter/dist/adapter.d.ts +0 -3
- package/generator-adapter/node_modules/@yeoman/adapter/dist/adapter.js +1 -0
- package/generator-adapter/node_modules/@yeoman/adapter/dist/adapter.js.map +1 -1
- package/generator-adapter/node_modules/@yeoman/adapter/dist/log.d.ts +0 -2
- package/generator-adapter/node_modules/@yeoman/adapter/dist/log.js.map +1 -1
- package/generator-adapter/node_modules/@yeoman/adapter/dist/queued-adapter.d.ts +0 -1
- package/generator-adapter/node_modules/@yeoman/adapter/dist/queued-adapter.js.map +1 -1
- package/generator-adapter/node_modules/@yeoman/adapter/dist/testing/test-adapter.d.ts +0 -1
- package/generator-adapter/node_modules/@yeoman/adapter/dist/testing/test-adapter.js.map +1 -1
- package/generator-adapter/node_modules/@yeoman/adapter/package.json +11 -11
- package/generator-adapter/node_modules/ansi-styles/index.d.ts +341 -232
- package/generator-adapter/node_modules/ansi-styles/index.js +130 -190
- package/generator-adapter/node_modules/ansi-styles/license +1 -1
- package/generator-adapter/node_modules/ansi-styles/package.json +10 -8
- package/generator-adapter/node_modules/ansi-styles/readme.md +32 -53
- package/generator-adapter/node_modules/chalk/package.json +3 -3
- package/generator-adapter/node_modules/chalk/readme.md +25 -53
- package/generator-adapter/node_modules/chalk/source/index.d.ts +6 -1
- package/generator-adapter/node_modules/chalk/source/vendor/supports-color/browser.js +6 -2
- package/generator-adapter/node_modules/chalk/source/vendor/supports-color/index.js +10 -2
- package/generator-adapter/node_modules/fast-string-truncated-width/dist/index.d.ts +4 -0
- package/generator-adapter/node_modules/fast-string-truncated-width/dist/index.js +111 -0
- package/generator-adapter/node_modules/fast-string-truncated-width/dist/types.d.ts +19 -0
- package/generator-adapter/node_modules/{p-queue/dist/options copy.js → fast-string-truncated-width/dist/types.js} +1 -0
- package/generator-adapter/node_modules/fast-string-truncated-width/dist/utils.d.ts +4 -0
- package/generator-adapter/node_modules/fast-string-truncated-width/dist/utils.js +20 -0
- package/generator-adapter/node_modules/fast-string-truncated-width/license +21 -0
- package/generator-adapter/node_modules/fast-string-truncated-width/package.json +35 -0
- package/generator-adapter/node_modules/fast-string-truncated-width/readme.md +59 -0
- package/generator-adapter/node_modules/fast-string-width/dist/index.d.ts +4 -0
- package/generator-adapter/node_modules/fast-string-width/dist/index.js +14 -0
- package/generator-adapter/node_modules/fast-string-width/license +21 -0
- package/generator-adapter/node_modules/fast-string-width/package.json +34 -0
- package/generator-adapter/node_modules/fast-string-width/readme.md +42 -0
- package/generator-adapter/node_modules/fast-wrap-ansi/LICENSE +23 -0
- package/generator-adapter/node_modules/fast-wrap-ansi/README.md +26 -0
- package/generator-adapter/node_modules/fast-wrap-ansi/lib/main.d.ts +6 -0
- package/generator-adapter/node_modules/fast-wrap-ansi/lib/main.js +219 -0
- package/generator-adapter/node_modules/fast-wrap-ansi/lib/main.js.map +1 -0
- package/generator-adapter/node_modules/fast-wrap-ansi/package.json +51 -0
- package/generator-adapter/node_modules/iconv-lite/lib/index.d.ts +114 -26
- package/generator-adapter/node_modules/iconv-lite/lib/index.js +39 -40
- package/generator-adapter/node_modules/iconv-lite/package.json +13 -2
- package/generator-adapter/node_modules/iconv-lite/types/encodings.d.ts +423 -0
- package/generator-adapter/node_modules/inquirer/dist/types.d.ts +12 -11
- package/generator-adapter/node_modules/inquirer/dist/ui/prompt.js +9 -1
- package/generator-adapter/node_modules/inquirer/dist/ui/skipped-renderer.d.ts +13 -0
- package/generator-adapter/node_modules/inquirer/dist/ui/skipped-renderer.js +57 -0
- package/generator-adapter/node_modules/inquirer/package.json +21 -19
- package/generator-adapter/node_modules/log-symbols/package.json +1 -1
- package/generator-adapter/node_modules/log-symbols/symbols.js +1 -1
- package/generator-adapter/node_modules/mem-fs/dist/index.d.ts +0 -2
- package/generator-adapter/node_modules/mem-fs/node_modules/vinyl/LICENSE +21 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/vinyl/README.md +447 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/vinyl/index.js +346 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/vinyl/lib/inspect-stream.js +13 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/vinyl/lib/is-stream.js +15 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/vinyl/lib/normalize.js +9 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/vinyl/package.json +59 -0
- package/generator-adapter/node_modules/mem-fs/package.json +9 -9
- package/generator-adapter/node_modules/ora/index.d.ts +3 -1
- package/generator-adapter/node_modules/ora/index.js +299 -109
- package/generator-adapter/node_modules/ora/package.json +3 -4
- package/generator-adapter/node_modules/ora/readme.md +24 -0
- package/generator-adapter/node_modules/p-queue/dist/index.js +145 -22
- package/generator-adapter/node_modules/p-queue/dist/options.d.ts +17 -1
- package/generator-adapter/node_modules/p-queue/package.json +1 -1
- package/generator-adapter/node_modules/p-queue/readme.md +32 -1
- package/generator-adapter/node_modules/stdin-discarder/index.js +50 -22
- package/generator-adapter/node_modules/stdin-discarder/package.json +1 -1
- package/generator-adapter/node_modules/{ora → yeoman-generator}/node_modules/chalk/package.json +3 -3
- package/generator-adapter/node_modules/{ora → yeoman-generator}/node_modules/chalk/readme.md +53 -25
- package/generator-adapter/node_modules/{ora → yeoman-generator}/node_modules/chalk/source/index.d.ts +1 -6
- package/generator-adapter/node_modules/{ora → yeoman-generator}/node_modules/chalk/source/vendor/supports-color/browser.js +2 -6
- package/generator-adapter/node_modules/{ora → yeoman-generator}/node_modules/chalk/source/vendor/supports-color/index.js +2 -10
- package/generator-adapter/package.json +3 -3
- package/package.json +12 -12
- package/transports/websocket.d.ts +5 -0
- package/transports/websocket.js +25 -13
- package/transports/websocket.js.map +1 -1
- package/generator-adapter/node_modules/emoji-regex/LICENSE-MIT.txt +0 -20
- package/generator-adapter/node_modules/emoji-regex/README.md +0 -107
- package/generator-adapter/node_modules/emoji-regex/index.d.ts +0 -3
- package/generator-adapter/node_modules/emoji-regex/index.js +0 -4
- package/generator-adapter/node_modules/emoji-regex/index.mjs +0 -4
- package/generator-adapter/node_modules/emoji-regex/package.json +0 -45
- package/generator-adapter/node_modules/iconv-lite/Changelog.md +0 -236
- package/generator-adapter/node_modules/jake/node_modules/ansi-styles/index.d.ts +0 -345
- package/generator-adapter/node_modules/jake/node_modules/ansi-styles/index.js +0 -163
- package/generator-adapter/node_modules/jake/node_modules/ansi-styles/license +0 -9
- package/generator-adapter/node_modules/jake/node_modules/ansi-styles/package.json +0 -56
- package/generator-adapter/node_modules/jake/node_modules/ansi-styles/readme.md +0 -152
- package/generator-adapter/node_modules/ora/node_modules/log-symbols/browser-symbols.js +0 -4
- package/generator-adapter/node_modules/ora/node_modules/log-symbols/browser.js +0 -1
- package/generator-adapter/node_modules/ora/node_modules/log-symbols/index.d.ts +0 -22
- package/generator-adapter/node_modules/ora/node_modules/log-symbols/index.js +0 -1
- package/generator-adapter/node_modules/ora/node_modules/log-symbols/license +0 -9
- package/generator-adapter/node_modules/ora/node_modules/log-symbols/package.json +0 -60
- package/generator-adapter/node_modules/ora/node_modules/log-symbols/readme.md +0 -39
- package/generator-adapter/node_modules/ora/node_modules/log-symbols/symbols.js +0 -14
- package/generator-adapter/node_modules/ora/node_modules/strip-ansi/index.d.ts +0 -15
- package/generator-adapter/node_modules/ora/node_modules/strip-ansi/index.js +0 -14
- package/generator-adapter/node_modules/ora/node_modules/strip-ansi/license +0 -9
- package/generator-adapter/node_modules/ora/node_modules/strip-ansi/package.json +0 -59
- package/generator-adapter/node_modules/ora/node_modules/strip-ansi/readme.md +0 -37
- package/generator-adapter/node_modules/p-queue/dist/options copy.d.ts +0 -121
- package/generator-adapter/node_modules/wrap-ansi/index.d.ts +0 -41
- package/generator-adapter/node_modules/wrap-ansi/index.js +0 -222
- package/generator-adapter/node_modules/wrap-ansi/license +0 -9
- package/generator-adapter/node_modules/wrap-ansi/node_modules/string-width/index.d.ts +0 -39
- package/generator-adapter/node_modules/wrap-ansi/node_modules/string-width/index.js +0 -82
- package/generator-adapter/node_modules/wrap-ansi/node_modules/string-width/license +0 -9
- package/generator-adapter/node_modules/wrap-ansi/node_modules/string-width/package.json +0 -64
- package/generator-adapter/node_modules/wrap-ansi/node_modules/string-width/readme.md +0 -66
- package/generator-adapter/node_modules/wrap-ansi/package.json +0 -69
- package/generator-adapter/node_modules/wrap-ansi/readme.md +0 -75
- /package/generator-adapter/node_modules/{ora → yeoman-generator}/node_modules/chalk/license +0 -0
- /package/generator-adapter/node_modules/{ora → yeoman-generator}/node_modules/chalk/source/index.js +0 -0
- /package/generator-adapter/node_modules/{ora → yeoman-generator}/node_modules/chalk/source/utilities.js +0 -0
- /package/generator-adapter/node_modules/{ora → yeoman-generator}/node_modules/chalk/source/vendor/ansi-styles/index.d.ts +0 -0
- /package/generator-adapter/node_modules/{ora → yeoman-generator}/node_modules/chalk/source/vendor/ansi-styles/index.js +0 -0
- /package/generator-adapter/node_modules/{ora → yeoman-generator}/node_modules/chalk/source/vendor/supports-color/browser.d.ts +0 -0
- /package/generator-adapter/node_modules/{ora → yeoman-generator}/node_modules/chalk/source/vendor/supports-color/index.d.ts +0 -0
|
@@ -7,22 +7,28 @@ const checkboxTheme = {
|
|
|
7
7
|
checked: styleText('green', figures.circleFilled),
|
|
8
8
|
unchecked: figures.circle,
|
|
9
9
|
cursor: figures.pointer,
|
|
10
|
+
disabledChecked: styleText('green', figures.circleDouble),
|
|
11
|
+
disabledUnchecked: '-',
|
|
10
12
|
},
|
|
11
13
|
style: {
|
|
12
|
-
|
|
14
|
+
disabled: (text) => styleText('dim', text),
|
|
13
15
|
renderSelectedChoices: (selectedChoices) => selectedChoices.map((choice) => choice.short).join(', '),
|
|
14
16
|
description: (text) => styleText('cyan', text),
|
|
15
17
|
keysHelpTip: (keys) => keys
|
|
16
18
|
.map(([key, action]) => `${styleText('bold', key)} ${styleText('dim', action)}`)
|
|
17
19
|
.join(styleText('dim', ' • ')),
|
|
18
20
|
},
|
|
21
|
+
i18n: { disabledError: 'This option is disabled and cannot be toggled.' },
|
|
19
22
|
keybindings: [],
|
|
20
23
|
};
|
|
21
24
|
function isSelectable(item) {
|
|
22
25
|
return !Separator.isSeparator(item) && !item.disabled;
|
|
23
26
|
}
|
|
27
|
+
function isNavigable(item) {
|
|
28
|
+
return !Separator.isSeparator(item);
|
|
29
|
+
}
|
|
24
30
|
function isChecked(item) {
|
|
25
|
-
return
|
|
31
|
+
return !Separator.isSeparator(item) && item.checked;
|
|
26
32
|
}
|
|
27
33
|
function toggle(item) {
|
|
28
34
|
return isSelectable(item) ? { ...item, checked: !item.checked } : item;
|
|
@@ -70,8 +76,8 @@ export default createPrompt((config, done) => {
|
|
|
70
76
|
const prefix = usePrefix({ status, theme });
|
|
71
77
|
const [items, setItems] = useState(normalizeChoices(config.choices));
|
|
72
78
|
const bounds = useMemo(() => {
|
|
73
|
-
const first = items.findIndex(
|
|
74
|
-
const last = items.findLastIndex(
|
|
79
|
+
const first = items.findIndex(isNavigable);
|
|
80
|
+
const last = items.findLastIndex(isNavigable);
|
|
75
81
|
if (first === -1) {
|
|
76
82
|
throw new ValidationError('[checkbox prompt] No selectable choices. All choices are disabled.');
|
|
77
83
|
}
|
|
@@ -83,7 +89,7 @@ export default createPrompt((config, done) => {
|
|
|
83
89
|
if (isEnterKey(key)) {
|
|
84
90
|
const selection = items.filter(isChecked);
|
|
85
91
|
const isValid = await validate([...selection]);
|
|
86
|
-
if (required && !
|
|
92
|
+
if (required && !selection.length) {
|
|
87
93
|
setError('At least one choice must be selected');
|
|
88
94
|
}
|
|
89
95
|
else if (isValid === true) {
|
|
@@ -95,6 +101,9 @@ export default createPrompt((config, done) => {
|
|
|
95
101
|
}
|
|
96
102
|
}
|
|
97
103
|
else if (isUpKey(key, keybindings) || isDownKey(key, keybindings)) {
|
|
104
|
+
if (errorMsg) {
|
|
105
|
+
setError(undefined);
|
|
106
|
+
}
|
|
98
107
|
if (loop ||
|
|
99
108
|
(isUpKey(key, keybindings) && active !== bounds.first) ||
|
|
100
109
|
(isDownKey(key, keybindings) && active !== bounds.last)) {
|
|
@@ -102,13 +111,21 @@ export default createPrompt((config, done) => {
|
|
|
102
111
|
let next = active;
|
|
103
112
|
do {
|
|
104
113
|
next = (next + offset + items.length) % items.length;
|
|
105
|
-
} while (!
|
|
114
|
+
} while (!isNavigable(items[next]));
|
|
106
115
|
setActive(next);
|
|
107
116
|
}
|
|
108
117
|
}
|
|
109
118
|
else if (isSpaceKey(key)) {
|
|
110
|
-
|
|
111
|
-
|
|
119
|
+
const activeItem = items[active];
|
|
120
|
+
if (activeItem && !Separator.isSeparator(activeItem)) {
|
|
121
|
+
if (activeItem.disabled) {
|
|
122
|
+
setError(theme.i18n.disabledError);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
setError(undefined);
|
|
126
|
+
setItems(items.map((choice, i) => (i === active ? toggle(choice) : choice)));
|
|
127
|
+
}
|
|
128
|
+
}
|
|
112
129
|
}
|
|
113
130
|
else if (key.name === shortcuts.all) {
|
|
114
131
|
const selectAll = items.some((choice) => isSelectable(choice) && !choice.checked);
|
|
@@ -143,9 +160,13 @@ export default createPrompt((config, done) => {
|
|
|
143
160
|
if (Separator.isSeparator(item)) {
|
|
144
161
|
return ` ${item.separator}`;
|
|
145
162
|
}
|
|
163
|
+
const cursor = isActive ? theme.icon.cursor : ' ';
|
|
146
164
|
if (item.disabled) {
|
|
147
165
|
const disabledLabel = typeof item.disabled === 'string' ? item.disabled : '(disabled)';
|
|
148
|
-
|
|
166
|
+
const checkbox = item.checked
|
|
167
|
+
? theme.icon.disabledChecked
|
|
168
|
+
: theme.icon.disabledUnchecked;
|
|
169
|
+
return theme.style.disabled(`${cursor}${checkbox} ${item.name} ${disabledLabel}`);
|
|
149
170
|
}
|
|
150
171
|
if (isActive) {
|
|
151
172
|
description = item.description;
|
|
@@ -153,7 +174,6 @@ export default createPrompt((config, done) => {
|
|
|
153
174
|
const checkbox = item.checked ? theme.icon.checked : theme.icon.unchecked;
|
|
154
175
|
const name = item.checked ? item.checkedName : item.name;
|
|
155
176
|
const color = isActive ? theme.style.highlight : (x) => x;
|
|
156
|
-
const cursor = isActive ? theme.icon.cursor : ' ';
|
|
157
177
|
return color(`${cursor}${checkbox} ${name}`);
|
|
158
178
|
},
|
|
159
179
|
pageSize,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inquirer/checkbox",
|
|
3
|
-
"version": "5.0
|
|
3
|
+
"version": "5.1.0",
|
|
4
4
|
"description": "Inquirer checkbox prompt",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"answer",
|
|
@@ -42,43 +42,40 @@
|
|
|
42
42
|
"zsh"
|
|
43
43
|
],
|
|
44
44
|
"homepage": "https://github.com/SBoudrias/Inquirer.js/blob/main/packages/checkbox/README.md",
|
|
45
|
+
"license": "MIT",
|
|
46
|
+
"author": "Simon Boudrias <admin@simonboudrias.com>",
|
|
45
47
|
"repository": {
|
|
46
48
|
"type": "git",
|
|
47
49
|
"url": "https://github.com/SBoudrias/Inquirer.js.git"
|
|
48
50
|
},
|
|
49
|
-
"
|
|
50
|
-
|
|
51
|
-
|
|
51
|
+
"files": [
|
|
52
|
+
"dist"
|
|
53
|
+
],
|
|
52
54
|
"type": "module",
|
|
55
|
+
"sideEffects": false,
|
|
53
56
|
"exports": {
|
|
54
|
-
"./package.json": "./package.json",
|
|
55
57
|
".": {
|
|
56
58
|
"types": "./dist/index.d.ts",
|
|
57
59
|
"default": "./dist/index.js"
|
|
58
|
-
}
|
|
60
|
+
},
|
|
61
|
+
"./package.json": "./package.json"
|
|
62
|
+
},
|
|
63
|
+
"publishConfig": {
|
|
64
|
+
"access": "public"
|
|
59
65
|
},
|
|
60
|
-
"files": [
|
|
61
|
-
"dist"
|
|
62
|
-
],
|
|
63
66
|
"scripts": {
|
|
64
67
|
"tsc": "tsc"
|
|
65
68
|
},
|
|
66
69
|
"dependencies": {
|
|
67
|
-
"@inquirer/ansi": "^2.0.
|
|
68
|
-
"@inquirer/core": "^11.
|
|
69
|
-
"@inquirer/figures": "^2.0.
|
|
70
|
-
"@inquirer/type": "^4.0.
|
|
70
|
+
"@inquirer/ansi": "^2.0.3",
|
|
71
|
+
"@inquirer/core": "^11.1.5",
|
|
72
|
+
"@inquirer/figures": "^2.0.3",
|
|
73
|
+
"@inquirer/type": "^4.0.3"
|
|
71
74
|
},
|
|
72
75
|
"devDependencies": {
|
|
73
|
-
"@inquirer/testing": "^3.0
|
|
76
|
+
"@inquirer/testing": "^3.3.0",
|
|
74
77
|
"typescript": "^5.9.3"
|
|
75
78
|
},
|
|
76
|
-
"engines": {
|
|
77
|
-
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
|
|
78
|
-
},
|
|
79
|
-
"publishConfig": {
|
|
80
|
-
"access": "public"
|
|
81
|
-
},
|
|
82
79
|
"peerDependencies": {
|
|
83
80
|
"@types/node": ">=18"
|
|
84
81
|
},
|
|
@@ -87,5 +84,10 @@
|
|
|
87
84
|
"optional": true
|
|
88
85
|
}
|
|
89
86
|
},
|
|
90
|
-
"
|
|
87
|
+
"engines": {
|
|
88
|
+
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
|
|
89
|
+
},
|
|
90
|
+
"main": "./dist/index.js",
|
|
91
|
+
"types": "./dist/index.d.ts",
|
|
92
|
+
"gitHead": "526eca2e64853510821ffd457561840ec0cbfb93"
|
|
91
93
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inquirer/confirm",
|
|
3
|
-
"version": "6.0.
|
|
3
|
+
"version": "6.0.8",
|
|
4
4
|
"description": "Inquirer confirm prompt",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"answer",
|
|
@@ -42,41 +42,38 @@
|
|
|
42
42
|
"zsh"
|
|
43
43
|
],
|
|
44
44
|
"homepage": "https://github.com/SBoudrias/Inquirer.js/blob/main/packages/confirm/README.md",
|
|
45
|
+
"license": "MIT",
|
|
46
|
+
"author": "Simon Boudrias <admin@simonboudrias.com>",
|
|
45
47
|
"repository": {
|
|
46
48
|
"type": "git",
|
|
47
49
|
"url": "https://github.com/SBoudrias/Inquirer.js.git"
|
|
48
50
|
},
|
|
49
|
-
"
|
|
50
|
-
|
|
51
|
-
|
|
51
|
+
"files": [
|
|
52
|
+
"dist"
|
|
53
|
+
],
|
|
52
54
|
"type": "module",
|
|
55
|
+
"sideEffects": false,
|
|
53
56
|
"exports": {
|
|
54
|
-
"./package.json": "./package.json",
|
|
55
57
|
".": {
|
|
56
58
|
"types": "./dist/index.d.ts",
|
|
57
59
|
"default": "./dist/index.js"
|
|
58
|
-
}
|
|
60
|
+
},
|
|
61
|
+
"./package.json": "./package.json"
|
|
62
|
+
},
|
|
63
|
+
"publishConfig": {
|
|
64
|
+
"access": "public"
|
|
59
65
|
},
|
|
60
|
-
"files": [
|
|
61
|
-
"dist"
|
|
62
|
-
],
|
|
63
66
|
"scripts": {
|
|
64
67
|
"tsc": "tsc"
|
|
65
68
|
},
|
|
66
69
|
"dependencies": {
|
|
67
|
-
"@inquirer/core": "^11.
|
|
68
|
-
"@inquirer/type": "^4.0.
|
|
70
|
+
"@inquirer/core": "^11.1.5",
|
|
71
|
+
"@inquirer/type": "^4.0.3"
|
|
69
72
|
},
|
|
70
73
|
"devDependencies": {
|
|
71
|
-
"@inquirer/testing": "^3.0
|
|
74
|
+
"@inquirer/testing": "^3.3.0",
|
|
72
75
|
"typescript": "^5.9.3"
|
|
73
76
|
},
|
|
74
|
-
"engines": {
|
|
75
|
-
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
|
|
76
|
-
},
|
|
77
|
-
"publishConfig": {
|
|
78
|
-
"access": "public"
|
|
79
|
-
},
|
|
80
77
|
"peerDependencies": {
|
|
81
78
|
"@types/node": ">=18"
|
|
82
79
|
},
|
|
@@ -85,5 +82,10 @@
|
|
|
85
82
|
"optional": true
|
|
86
83
|
}
|
|
87
84
|
},
|
|
88
|
-
"
|
|
85
|
+
"engines": {
|
|
86
|
+
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
|
|
87
|
+
},
|
|
88
|
+
"main": "./dist/index.js",
|
|
89
|
+
"types": "./dist/index.d.ts",
|
|
90
|
+
"gitHead": "526eca2e64853510821ffd457561840ec0cbfb93"
|
|
89
91
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { isUpKey, isDownKey, isSpaceKey, isBackspaceKey, isTabKey, isNumberKey, isEnterKey, type KeypressEvent, type Keybinding, } from './lib/key.ts';
|
|
1
|
+
export { isUpKey, isDownKey, isSpaceKey, isBackspaceKey, isTabKey, isNumberKey, isEnterKey, isShiftKey, type KeypressEvent, type Keybinding, } from './lib/key.ts';
|
|
2
2
|
export * from './lib/errors.ts';
|
|
3
3
|
export { usePrefix } from './lib/use-prefix.ts';
|
|
4
4
|
export { useState } from './lib/use-state.ts';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { isUpKey, isDownKey, isSpaceKey, isBackspaceKey, isTabKey, isNumberKey, isEnterKey, } from "./lib/key.js";
|
|
1
|
+
export { isUpKey, isDownKey, isSpaceKey, isBackspaceKey, isTabKey, isNumberKey, isEnterKey, isShiftKey, } from "./lib/key.js";
|
|
2
2
|
export * from "./lib/errors.js";
|
|
3
3
|
export { usePrefix } from "./lib/use-prefix.js";
|
|
4
4
|
export { useState } from "./lib/use-state.js";
|
|
@@ -6,6 +6,9 @@ import ScreenManager from "./screen-manager.js";
|
|
|
6
6
|
import { PromisePolyfill } from "./promise-polyfill.js";
|
|
7
7
|
import { withHooks, effectScheduler } from "./hook-engine.js";
|
|
8
8
|
import { AbortPromptError, CancelPromptError, ExitPromptError } from "./errors.js";
|
|
9
|
+
// Capture the real setImmediate at module load time so it works even when test
|
|
10
|
+
// frameworks mock timers with vi.useFakeTimers() or similar.
|
|
11
|
+
const nativeSetImmediate = globalThis.setImmediate;
|
|
9
12
|
function getCallSites() {
|
|
10
13
|
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
11
14
|
const _prepareStackTrace = Error.prepareStackTrace;
|
|
@@ -36,6 +39,10 @@ export function createPrompt(view) {
|
|
|
36
39
|
// Add mute capabilities to the output
|
|
37
40
|
const output = new MuteStream();
|
|
38
41
|
output.pipe(context.output ?? process.stdout);
|
|
42
|
+
// Pre-mute the output so that readline doesn't echo stale keystrokes
|
|
43
|
+
// to the terminal before the first render. ScreenManager will unmute/mute
|
|
44
|
+
// the output around each render call as needed.
|
|
45
|
+
output.mute();
|
|
39
46
|
const rl = readline.createInterface({
|
|
40
47
|
terminal: true,
|
|
41
48
|
input,
|
|
@@ -62,13 +69,6 @@ export function createPrompt(view) {
|
|
|
62
69
|
const sigint = () => reject(new ExitPromptError(`User force closed the prompt with SIGINT`));
|
|
63
70
|
rl.on('SIGINT', sigint);
|
|
64
71
|
cleanups.add(() => rl.removeListener('SIGINT', sigint));
|
|
65
|
-
// Re-renders only happen when the state change; but the readline cursor could change position
|
|
66
|
-
// and that also requires a re-render (and a manual one because we mute the streams).
|
|
67
|
-
// We set the listener after the initial workLoop to avoid a double render if render triggered
|
|
68
|
-
// by a state change sets the cursor to the right position.
|
|
69
|
-
const checkCursorPos = () => screen.checkCursorPos();
|
|
70
|
-
rl.input.on('keypress', checkCursorPos);
|
|
71
|
-
cleanups.add(() => rl.input.removeListener('keypress', checkCursorPos));
|
|
72
72
|
return withHooks(rl, (cycle) => {
|
|
73
73
|
// The close event triggers immediately when the user press ctrl+c. SignalExit on the other hand
|
|
74
74
|
// triggers after the process is done (which happens after timeouts are done triggering.)
|
|
@@ -76,25 +76,51 @@ export function createPrompt(view) {
|
|
|
76
76
|
const hooksCleanup = AsyncResource.bind(() => effectScheduler.clearAll());
|
|
77
77
|
rl.on('close', hooksCleanup);
|
|
78
78
|
cleanups.add(() => rl.removeListener('close', hooksCleanup));
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
79
|
+
const startCycle = () => {
|
|
80
|
+
// Re-renders only happen when the state change; but the readline cursor could
|
|
81
|
+
// change position and that also requires a re-render (and a manual one because
|
|
82
|
+
// we mute the streams). We set the listener after the initial workLoop to avoid
|
|
83
|
+
// a double render if render triggered by a state change sets the cursor to the
|
|
84
|
+
// right position.
|
|
85
|
+
const checkCursorPos = () => screen.checkCursorPos();
|
|
86
|
+
rl.input.on('keypress', checkCursorPos);
|
|
87
|
+
cleanups.add(() => rl.input.removeListener('keypress', checkCursorPos));
|
|
88
|
+
cycle(() => {
|
|
89
|
+
try {
|
|
90
|
+
const nextView = view(config, (value) => {
|
|
91
|
+
setImmediate(() => resolve(value));
|
|
92
|
+
});
|
|
93
|
+
// Typescript won't allow this, but not all users rely on typescript.
|
|
94
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
95
|
+
if (nextView === undefined) {
|
|
96
|
+
const callerFilename = callSites[1]?.getFileName();
|
|
97
|
+
throw new Error(`Prompt functions must return a string.\n at ${callerFilename}`);
|
|
98
|
+
}
|
|
99
|
+
const [content, bottomContent] = typeof nextView === 'string' ? [nextView] : nextView;
|
|
100
|
+
screen.render(content, bottomContent);
|
|
101
|
+
effectScheduler.run();
|
|
89
102
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
103
|
+
catch (error) {
|
|
104
|
+
reject(error);
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
};
|
|
108
|
+
// Proper Readable streams (like process.stdin) may have OS-level buffered
|
|
109
|
+
// data that arrives in the poll phase when readline resumes the stream.
|
|
110
|
+
// Deferring the first render by one setImmediate tick (check phase, after
|
|
111
|
+
// poll) lets that stale data flow through readline harmlessly—no keypress
|
|
112
|
+
// handlers are registered yet and the output is muted, so the stale
|
|
113
|
+
// keystrokes are silently discarded.
|
|
114
|
+
// Old-style streams (like MuteStream) have no such buffering, so the
|
|
115
|
+
// render cycle starts immediately.
|
|
116
|
+
//
|
|
117
|
+
// @see https://github.com/SBoudrias/Inquirer.js/issues/1303
|
|
118
|
+
if ('readableFlowing' in input) {
|
|
119
|
+
nativeSetImmediate(startCycle);
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
startCycle();
|
|
123
|
+
}
|
|
98
124
|
return Object.assign(promise
|
|
99
125
|
.then((answer) => {
|
|
100
126
|
effectScheduler.clearAll();
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export type KeypressEvent = {
|
|
2
2
|
name: string;
|
|
3
3
|
ctrl: boolean;
|
|
4
|
+
shift: boolean;
|
|
4
5
|
};
|
|
5
6
|
export type Keybinding = 'emacs' | 'vim';
|
|
6
7
|
export declare const isUpKey: (key: KeypressEvent, keybindings?: ReadonlyArray<Keybinding>) => boolean;
|
|
@@ -10,3 +11,4 @@ export declare const isBackspaceKey: (key: KeypressEvent) => boolean;
|
|
|
10
11
|
export declare const isTabKey: (key: KeypressEvent) => boolean;
|
|
11
12
|
export declare const isNumberKey: (key: KeypressEvent) => boolean;
|
|
12
13
|
export declare const isEnterKey: (key: KeypressEvent) => boolean;
|
|
14
|
+
export declare const isShiftKey: (key: KeypressEvent) => boolean;
|
|
@@ -17,3 +17,4 @@ export const isBackspaceKey = (key) => key.name === 'backspace';
|
|
|
17
17
|
export const isTabKey = (key) => key.name === 'tab';
|
|
18
18
|
export const isNumberKey = (key) => '1234567890'.includes(key.name);
|
|
19
19
|
export const isEnterKey = (key) => key.name === 'enter' || key.name === 'return';
|
|
20
|
+
export const isShiftKey = (key) => key.shift;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inquirer/core",
|
|
3
|
-
"version": "11.
|
|
3
|
+
"version": "11.1.5",
|
|
4
4
|
"description": "Core Inquirer prompt API",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"answer",
|
|
@@ -42,40 +42,43 @@
|
|
|
42
42
|
"zsh"
|
|
43
43
|
],
|
|
44
44
|
"homepage": "https://github.com/SBoudrias/Inquirer.js/blob/main/packages/core/README.md",
|
|
45
|
+
"license": "MIT",
|
|
46
|
+
"author": "Simon Boudrias <admin@simonboudrias.com>",
|
|
45
47
|
"repository": {
|
|
46
48
|
"type": "git",
|
|
47
49
|
"url": "https://github.com/SBoudrias/Inquirer.js.git"
|
|
48
50
|
},
|
|
49
|
-
"
|
|
50
|
-
|
|
51
|
-
|
|
51
|
+
"files": [
|
|
52
|
+
"dist"
|
|
53
|
+
],
|
|
52
54
|
"type": "module",
|
|
55
|
+
"sideEffects": false,
|
|
53
56
|
"exports": {
|
|
54
|
-
"./package.json": "./package.json",
|
|
55
57
|
".": {
|
|
56
58
|
"types": "./dist/index.d.ts",
|
|
57
59
|
"default": "./dist/index.js"
|
|
58
|
-
}
|
|
60
|
+
},
|
|
61
|
+
"./package.json": "./package.json"
|
|
62
|
+
},
|
|
63
|
+
"publishConfig": {
|
|
64
|
+
"access": "public"
|
|
59
65
|
},
|
|
60
|
-
"files": [
|
|
61
|
-
"dist"
|
|
62
|
-
],
|
|
63
66
|
"scripts": {
|
|
64
67
|
"tsc": "tsc"
|
|
65
68
|
},
|
|
66
69
|
"dependencies": {
|
|
67
|
-
"@inquirer/ansi": "^2.0.
|
|
68
|
-
"@inquirer/figures": "^2.0.
|
|
69
|
-
"@inquirer/type": "^4.0.
|
|
70
|
+
"@inquirer/ansi": "^2.0.3",
|
|
71
|
+
"@inquirer/figures": "^2.0.3",
|
|
72
|
+
"@inquirer/type": "^4.0.3",
|
|
70
73
|
"cli-width": "^4.1.0",
|
|
74
|
+
"fast-wrap-ansi": "^0.2.0",
|
|
71
75
|
"mute-stream": "^3.0.0",
|
|
72
|
-
"signal-exit": "^4.1.0"
|
|
73
|
-
"wrap-ansi": "^9.0.2"
|
|
76
|
+
"signal-exit": "^4.1.0"
|
|
74
77
|
},
|
|
75
78
|
"devDependencies": {
|
|
76
|
-
"@inquirer/testing": "^3.0
|
|
79
|
+
"@inquirer/testing": "^3.3.0",
|
|
77
80
|
"@types/mute-stream": "^0.0.4",
|
|
78
|
-
"@types/node": "^
|
|
81
|
+
"@types/node": "^25.0.2",
|
|
79
82
|
"typescript": "^5.9.3"
|
|
80
83
|
},
|
|
81
84
|
"peerDependencies": {
|
|
@@ -89,8 +92,7 @@
|
|
|
89
92
|
"engines": {
|
|
90
93
|
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
|
|
91
94
|
},
|
|
92
|
-
"
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
"gitHead": "cce79ce3b9bbdfb4dbb798078cf3b94b9adc7d1b"
|
|
95
|
+
"main": "./dist/index.js",
|
|
96
|
+
"types": "./dist/index.d.ts",
|
|
97
|
+
"gitHead": "526eca2e64853510821ffd457561840ec0cbfb93"
|
|
96
98
|
}
|
|
@@ -3,6 +3,9 @@ import { type Theme } from '@inquirer/core';
|
|
|
3
3
|
import type { PartialDeep } from '@inquirer/type';
|
|
4
4
|
type EditorTheme = {
|
|
5
5
|
validationFailureMode: 'keep' | 'clear';
|
|
6
|
+
style: {
|
|
7
|
+
waitingMessage: (enterKey: string) => string;
|
|
8
|
+
};
|
|
6
9
|
};
|
|
7
10
|
type EditorConfig = {
|
|
8
11
|
message: string;
|
|
@@ -2,6 +2,9 @@ import { editAsync } from '@inquirer/external-editor';
|
|
|
2
2
|
import { createPrompt, useEffect, useState, useKeypress, usePrefix, isEnterKey, makeTheme, } from '@inquirer/core';
|
|
3
3
|
const editorTheme = {
|
|
4
4
|
validationFailureMode: 'keep',
|
|
5
|
+
style: {
|
|
6
|
+
waitingMessage: (enterKey) => `Press ${enterKey} to launch your preferred editor.`,
|
|
7
|
+
},
|
|
5
8
|
};
|
|
6
9
|
export default createPrompt((config, done) => {
|
|
7
10
|
const { waitForUserInput = true, file: { postfix = config.postfix ?? '.txt', ...fileProps } = {}, validate = () => true, } = config;
|
|
@@ -59,12 +62,9 @@ export default createPrompt((config, done) => {
|
|
|
59
62
|
});
|
|
60
63
|
const message = theme.style.message(config.message, status);
|
|
61
64
|
let helpTip = '';
|
|
62
|
-
if (status === '
|
|
63
|
-
helpTip = theme.style.help('Received');
|
|
64
|
-
}
|
|
65
|
-
else if (status === 'idle') {
|
|
65
|
+
if (status === 'idle') {
|
|
66
66
|
const enterKey = theme.style.key('enter');
|
|
67
|
-
helpTip = theme.style.help(
|
|
67
|
+
helpTip = theme.style.help(theme.style.waitingMessage(enterKey));
|
|
68
68
|
}
|
|
69
69
|
let error = '';
|
|
70
70
|
if (errorMsg) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inquirer/editor",
|
|
3
|
-
"version": "5.0.
|
|
3
|
+
"version": "5.0.8",
|
|
4
4
|
"description": "Inquirer multiline editor prompt",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"answer",
|
|
@@ -42,42 +42,39 @@
|
|
|
42
42
|
"zsh"
|
|
43
43
|
],
|
|
44
44
|
"homepage": "https://github.com/SBoudrias/Inquirer.js/blob/main/packages/editor/README.md",
|
|
45
|
+
"license": "MIT",
|
|
46
|
+
"author": "Simon Boudrias <admin@simonboudrias.com>",
|
|
45
47
|
"repository": {
|
|
46
48
|
"type": "git",
|
|
47
49
|
"url": "https://github.com/SBoudrias/Inquirer.js.git"
|
|
48
50
|
},
|
|
49
|
-
"
|
|
50
|
-
|
|
51
|
-
|
|
51
|
+
"files": [
|
|
52
|
+
"dist"
|
|
53
|
+
],
|
|
52
54
|
"type": "module",
|
|
55
|
+
"sideEffects": false,
|
|
53
56
|
"exports": {
|
|
54
|
-
"./package.json": "./package.json",
|
|
55
57
|
".": {
|
|
56
58
|
"types": "./dist/index.d.ts",
|
|
57
59
|
"default": "./dist/index.js"
|
|
58
|
-
}
|
|
60
|
+
},
|
|
61
|
+
"./package.json": "./package.json"
|
|
62
|
+
},
|
|
63
|
+
"publishConfig": {
|
|
64
|
+
"access": "public"
|
|
59
65
|
},
|
|
60
|
-
"files": [
|
|
61
|
-
"dist"
|
|
62
|
-
],
|
|
63
66
|
"scripts": {
|
|
64
67
|
"tsc": "tsc"
|
|
65
68
|
},
|
|
66
69
|
"dependencies": {
|
|
67
|
-
"@inquirer/core": "^11.
|
|
68
|
-
"@inquirer/external-editor": "^2.0.
|
|
69
|
-
"@inquirer/type": "^4.0.
|
|
70
|
+
"@inquirer/core": "^11.1.5",
|
|
71
|
+
"@inquirer/external-editor": "^2.0.3",
|
|
72
|
+
"@inquirer/type": "^4.0.3"
|
|
70
73
|
},
|
|
71
74
|
"devDependencies": {
|
|
72
|
-
"@inquirer/testing": "^3.0
|
|
75
|
+
"@inquirer/testing": "^3.3.0",
|
|
73
76
|
"typescript": "^5.9.3"
|
|
74
77
|
},
|
|
75
|
-
"engines": {
|
|
76
|
-
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
|
|
77
|
-
},
|
|
78
|
-
"publishConfig": {
|
|
79
|
-
"access": "public"
|
|
80
|
-
},
|
|
81
78
|
"peerDependencies": {
|
|
82
79
|
"@types/node": ">=18"
|
|
83
80
|
},
|
|
@@ -86,5 +83,10 @@
|
|
|
86
83
|
"optional": true
|
|
87
84
|
}
|
|
88
85
|
},
|
|
89
|
-
"
|
|
86
|
+
"engines": {
|
|
87
|
+
"node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
|
|
88
|
+
},
|
|
89
|
+
"main": "./dist/index.js",
|
|
90
|
+
"types": "./dist/index.d.ts",
|
|
91
|
+
"gitHead": "526eca2e64853510821ffd457561840ec0cbfb93"
|
|
90
92
|
}
|