@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.
Files changed (173) hide show
  1. package/README.md +1 -1
  2. package/config/index.d.ts +9 -0
  3. package/config/index.js +12 -1
  4. package/config/index.js.map +1 -1
  5. package/generator-adapter/generators/app/templates/src/config/index.ts.ejs +3 -0
  6. package/generator-adapter/node_modules/.yarn-integrity +31 -35
  7. package/generator-adapter/node_modules/@inquirer/ansi/package.json +28 -26
  8. package/generator-adapter/node_modules/@inquirer/checkbox/dist/index.d.ts +6 -1
  9. package/generator-adapter/node_modules/@inquirer/checkbox/dist/index.js +30 -10
  10. package/generator-adapter/node_modules/@inquirer/checkbox/package.json +23 -21
  11. package/generator-adapter/node_modules/@inquirer/confirm/package.json +21 -19
  12. package/generator-adapter/node_modules/@inquirer/core/dist/index.d.ts +1 -1
  13. package/generator-adapter/node_modules/@inquirer/core/dist/index.js +1 -1
  14. package/generator-adapter/node_modules/@inquirer/core/dist/lib/create-prompt.js +51 -25
  15. package/generator-adapter/node_modules/@inquirer/core/dist/lib/key.d.ts +2 -0
  16. package/generator-adapter/node_modules/@inquirer/core/dist/lib/key.js +1 -0
  17. package/generator-adapter/node_modules/@inquirer/core/dist/lib/utils.js +1 -1
  18. package/generator-adapter/node_modules/@inquirer/core/package.json +22 -20
  19. package/generator-adapter/node_modules/@inquirer/editor/dist/index.d.ts +3 -0
  20. package/generator-adapter/node_modules/@inquirer/editor/dist/index.js +5 -5
  21. package/generator-adapter/node_modules/@inquirer/editor/package.json +22 -20
  22. package/generator-adapter/node_modules/@inquirer/expand/package.json +21 -19
  23. package/generator-adapter/node_modules/@inquirer/external-editor/package.json +33 -31
  24. package/generator-adapter/node_modules/@inquirer/figures/package.json +18 -16
  25. package/generator-adapter/node_modules/@inquirer/input/dist/index.js +5 -3
  26. package/generator-adapter/node_modules/@inquirer/input/package.json +21 -19
  27. package/generator-adapter/node_modules/@inquirer/number/package.json +21 -19
  28. package/generator-adapter/node_modules/@inquirer/password/dist/index.d.ts +6 -1
  29. package/generator-adapter/node_modules/@inquirer/password/dist/index.js +7 -2
  30. package/generator-adapter/node_modules/@inquirer/password/package.json +22 -20
  31. package/generator-adapter/node_modules/@inquirer/prompts/README.md +15 -0
  32. package/generator-adapter/node_modules/@inquirer/prompts/package.json +31 -29
  33. package/generator-adapter/node_modules/@inquirer/rawlist/README.md +4 -0
  34. package/generator-adapter/node_modules/@inquirer/rawlist/dist/index.d.ts +9 -2
  35. package/generator-adapter/node_modules/@inquirer/rawlist/dist/index.js +24 -7
  36. package/generator-adapter/node_modules/@inquirer/rawlist/package.json +21 -19
  37. package/generator-adapter/node_modules/@inquirer/search/README.md +2 -1
  38. package/generator-adapter/node_modules/@inquirer/search/dist/index.d.ts +1 -0
  39. package/generator-adapter/node_modules/@inquirer/search/dist/index.js +11 -4
  40. package/generator-adapter/node_modules/@inquirer/search/package.json +22 -20
  41. package/generator-adapter/node_modules/@inquirer/select/dist/index.d.ts +5 -2
  42. package/generator-adapter/node_modules/@inquirer/select/dist/index.js +28 -11
  43. package/generator-adapter/node_modules/@inquirer/select/package.json +23 -21
  44. package/generator-adapter/node_modules/@inquirer/type/package.json +18 -16
  45. package/generator-adapter/node_modules/@types/node/README.md +1 -1
  46. package/generator-adapter/node_modules/@types/node/http.d.ts +1 -1
  47. package/generator-adapter/node_modules/@types/node/package.json +2 -2
  48. package/generator-adapter/node_modules/@types/node/stream/web.d.ts +1 -1
  49. package/generator-adapter/node_modules/@types/node/test.d.ts +2 -1
  50. package/generator-adapter/node_modules/@types/node/web-globals/fetch.d.ts +12 -0
  51. package/generator-adapter/node_modules/@yeoman/adapter/dist/adapter.d.ts +0 -3
  52. package/generator-adapter/node_modules/@yeoman/adapter/dist/adapter.js +1 -0
  53. package/generator-adapter/node_modules/@yeoman/adapter/dist/adapter.js.map +1 -1
  54. package/generator-adapter/node_modules/@yeoman/adapter/dist/log.d.ts +0 -2
  55. package/generator-adapter/node_modules/@yeoman/adapter/dist/log.js.map +1 -1
  56. package/generator-adapter/node_modules/@yeoman/adapter/dist/queued-adapter.d.ts +0 -1
  57. package/generator-adapter/node_modules/@yeoman/adapter/dist/queued-adapter.js.map +1 -1
  58. package/generator-adapter/node_modules/@yeoman/adapter/dist/testing/test-adapter.d.ts +0 -1
  59. package/generator-adapter/node_modules/@yeoman/adapter/dist/testing/test-adapter.js.map +1 -1
  60. package/generator-adapter/node_modules/@yeoman/adapter/package.json +11 -11
  61. package/generator-adapter/node_modules/ansi-styles/index.d.ts +341 -232
  62. package/generator-adapter/node_modules/ansi-styles/index.js +130 -190
  63. package/generator-adapter/node_modules/ansi-styles/license +1 -1
  64. package/generator-adapter/node_modules/ansi-styles/package.json +10 -8
  65. package/generator-adapter/node_modules/ansi-styles/readme.md +32 -53
  66. package/generator-adapter/node_modules/chalk/package.json +3 -3
  67. package/generator-adapter/node_modules/chalk/readme.md +25 -53
  68. package/generator-adapter/node_modules/chalk/source/index.d.ts +6 -1
  69. package/generator-adapter/node_modules/chalk/source/vendor/supports-color/browser.js +6 -2
  70. package/generator-adapter/node_modules/chalk/source/vendor/supports-color/index.js +10 -2
  71. package/generator-adapter/node_modules/fast-string-truncated-width/dist/index.d.ts +4 -0
  72. package/generator-adapter/node_modules/fast-string-truncated-width/dist/index.js +111 -0
  73. package/generator-adapter/node_modules/fast-string-truncated-width/dist/types.d.ts +19 -0
  74. package/generator-adapter/node_modules/{p-queue/dist/options copy.js → fast-string-truncated-width/dist/types.js} +1 -0
  75. package/generator-adapter/node_modules/fast-string-truncated-width/dist/utils.d.ts +4 -0
  76. package/generator-adapter/node_modules/fast-string-truncated-width/dist/utils.js +20 -0
  77. package/generator-adapter/node_modules/fast-string-truncated-width/license +21 -0
  78. package/generator-adapter/node_modules/fast-string-truncated-width/package.json +35 -0
  79. package/generator-adapter/node_modules/fast-string-truncated-width/readme.md +59 -0
  80. package/generator-adapter/node_modules/fast-string-width/dist/index.d.ts +4 -0
  81. package/generator-adapter/node_modules/fast-string-width/dist/index.js +14 -0
  82. package/generator-adapter/node_modules/fast-string-width/license +21 -0
  83. package/generator-adapter/node_modules/fast-string-width/package.json +34 -0
  84. package/generator-adapter/node_modules/fast-string-width/readme.md +42 -0
  85. package/generator-adapter/node_modules/fast-wrap-ansi/LICENSE +23 -0
  86. package/generator-adapter/node_modules/fast-wrap-ansi/README.md +26 -0
  87. package/generator-adapter/node_modules/fast-wrap-ansi/lib/main.d.ts +6 -0
  88. package/generator-adapter/node_modules/fast-wrap-ansi/lib/main.js +219 -0
  89. package/generator-adapter/node_modules/fast-wrap-ansi/lib/main.js.map +1 -0
  90. package/generator-adapter/node_modules/fast-wrap-ansi/package.json +51 -0
  91. package/generator-adapter/node_modules/iconv-lite/lib/index.d.ts +114 -26
  92. package/generator-adapter/node_modules/iconv-lite/lib/index.js +39 -40
  93. package/generator-adapter/node_modules/iconv-lite/package.json +13 -2
  94. package/generator-adapter/node_modules/iconv-lite/types/encodings.d.ts +423 -0
  95. package/generator-adapter/node_modules/inquirer/dist/types.d.ts +12 -11
  96. package/generator-adapter/node_modules/inquirer/dist/ui/prompt.js +9 -1
  97. package/generator-adapter/node_modules/inquirer/dist/ui/skipped-renderer.d.ts +13 -0
  98. package/generator-adapter/node_modules/inquirer/dist/ui/skipped-renderer.js +57 -0
  99. package/generator-adapter/node_modules/inquirer/package.json +21 -19
  100. package/generator-adapter/node_modules/log-symbols/package.json +1 -1
  101. package/generator-adapter/node_modules/log-symbols/symbols.js +1 -1
  102. package/generator-adapter/node_modules/mem-fs/dist/index.d.ts +0 -2
  103. package/generator-adapter/node_modules/mem-fs/node_modules/vinyl/LICENSE +21 -0
  104. package/generator-adapter/node_modules/mem-fs/node_modules/vinyl/README.md +447 -0
  105. package/generator-adapter/node_modules/mem-fs/node_modules/vinyl/index.js +346 -0
  106. package/generator-adapter/node_modules/mem-fs/node_modules/vinyl/lib/inspect-stream.js +13 -0
  107. package/generator-adapter/node_modules/mem-fs/node_modules/vinyl/lib/is-stream.js +15 -0
  108. package/generator-adapter/node_modules/mem-fs/node_modules/vinyl/lib/normalize.js +9 -0
  109. package/generator-adapter/node_modules/mem-fs/node_modules/vinyl/package.json +59 -0
  110. package/generator-adapter/node_modules/mem-fs/package.json +9 -9
  111. package/generator-adapter/node_modules/ora/index.d.ts +3 -1
  112. package/generator-adapter/node_modules/ora/index.js +299 -109
  113. package/generator-adapter/node_modules/ora/package.json +3 -4
  114. package/generator-adapter/node_modules/ora/readme.md +24 -0
  115. package/generator-adapter/node_modules/p-queue/dist/index.js +145 -22
  116. package/generator-adapter/node_modules/p-queue/dist/options.d.ts +17 -1
  117. package/generator-adapter/node_modules/p-queue/package.json +1 -1
  118. package/generator-adapter/node_modules/p-queue/readme.md +32 -1
  119. package/generator-adapter/node_modules/stdin-discarder/index.js +50 -22
  120. package/generator-adapter/node_modules/stdin-discarder/package.json +1 -1
  121. package/generator-adapter/node_modules/{ora → yeoman-generator}/node_modules/chalk/package.json +3 -3
  122. package/generator-adapter/node_modules/{ora → yeoman-generator}/node_modules/chalk/readme.md +53 -25
  123. package/generator-adapter/node_modules/{ora → yeoman-generator}/node_modules/chalk/source/index.d.ts +1 -6
  124. package/generator-adapter/node_modules/{ora → yeoman-generator}/node_modules/chalk/source/vendor/supports-color/browser.js +2 -6
  125. package/generator-adapter/node_modules/{ora → yeoman-generator}/node_modules/chalk/source/vendor/supports-color/index.js +2 -10
  126. package/generator-adapter/package.json +3 -3
  127. package/package.json +12 -12
  128. package/transports/websocket.d.ts +5 -0
  129. package/transports/websocket.js +25 -13
  130. package/transports/websocket.js.map +1 -1
  131. package/generator-adapter/node_modules/emoji-regex/LICENSE-MIT.txt +0 -20
  132. package/generator-adapter/node_modules/emoji-regex/README.md +0 -107
  133. package/generator-adapter/node_modules/emoji-regex/index.d.ts +0 -3
  134. package/generator-adapter/node_modules/emoji-regex/index.js +0 -4
  135. package/generator-adapter/node_modules/emoji-regex/index.mjs +0 -4
  136. package/generator-adapter/node_modules/emoji-regex/package.json +0 -45
  137. package/generator-adapter/node_modules/iconv-lite/Changelog.md +0 -236
  138. package/generator-adapter/node_modules/jake/node_modules/ansi-styles/index.d.ts +0 -345
  139. package/generator-adapter/node_modules/jake/node_modules/ansi-styles/index.js +0 -163
  140. package/generator-adapter/node_modules/jake/node_modules/ansi-styles/license +0 -9
  141. package/generator-adapter/node_modules/jake/node_modules/ansi-styles/package.json +0 -56
  142. package/generator-adapter/node_modules/jake/node_modules/ansi-styles/readme.md +0 -152
  143. package/generator-adapter/node_modules/ora/node_modules/log-symbols/browser-symbols.js +0 -4
  144. package/generator-adapter/node_modules/ora/node_modules/log-symbols/browser.js +0 -1
  145. package/generator-adapter/node_modules/ora/node_modules/log-symbols/index.d.ts +0 -22
  146. package/generator-adapter/node_modules/ora/node_modules/log-symbols/index.js +0 -1
  147. package/generator-adapter/node_modules/ora/node_modules/log-symbols/license +0 -9
  148. package/generator-adapter/node_modules/ora/node_modules/log-symbols/package.json +0 -60
  149. package/generator-adapter/node_modules/ora/node_modules/log-symbols/readme.md +0 -39
  150. package/generator-adapter/node_modules/ora/node_modules/log-symbols/symbols.js +0 -14
  151. package/generator-adapter/node_modules/ora/node_modules/strip-ansi/index.d.ts +0 -15
  152. package/generator-adapter/node_modules/ora/node_modules/strip-ansi/index.js +0 -14
  153. package/generator-adapter/node_modules/ora/node_modules/strip-ansi/license +0 -9
  154. package/generator-adapter/node_modules/ora/node_modules/strip-ansi/package.json +0 -59
  155. package/generator-adapter/node_modules/ora/node_modules/strip-ansi/readme.md +0 -37
  156. package/generator-adapter/node_modules/p-queue/dist/options copy.d.ts +0 -121
  157. package/generator-adapter/node_modules/wrap-ansi/index.d.ts +0 -41
  158. package/generator-adapter/node_modules/wrap-ansi/index.js +0 -222
  159. package/generator-adapter/node_modules/wrap-ansi/license +0 -9
  160. package/generator-adapter/node_modules/wrap-ansi/node_modules/string-width/index.d.ts +0 -39
  161. package/generator-adapter/node_modules/wrap-ansi/node_modules/string-width/index.js +0 -82
  162. package/generator-adapter/node_modules/wrap-ansi/node_modules/string-width/license +0 -9
  163. package/generator-adapter/node_modules/wrap-ansi/node_modules/string-width/package.json +0 -64
  164. package/generator-adapter/node_modules/wrap-ansi/node_modules/string-width/readme.md +0 -66
  165. package/generator-adapter/node_modules/wrap-ansi/package.json +0 -69
  166. package/generator-adapter/node_modules/wrap-ansi/readme.md +0 -75
  167. /package/generator-adapter/node_modules/{ora → yeoman-generator}/node_modules/chalk/license +0 -0
  168. /package/generator-adapter/node_modules/{ora → yeoman-generator}/node_modules/chalk/source/index.js +0 -0
  169. /package/generator-adapter/node_modules/{ora → yeoman-generator}/node_modules/chalk/source/utilities.js +0 -0
  170. /package/generator-adapter/node_modules/{ora → yeoman-generator}/node_modules/chalk/source/vendor/ansi-styles/index.d.ts +0 -0
  171. /package/generator-adapter/node_modules/{ora → yeoman-generator}/node_modules/chalk/source/vendor/ansi-styles/index.js +0 -0
  172. /package/generator-adapter/node_modules/{ora → yeoman-generator}/node_modules/chalk/source/vendor/supports-color/browser.d.ts +0 -0
  173. /package/generator-adapter/node_modules/{ora → yeoman-generator}/node_modules/chalk/source/vendor/supports-color/index.d.ts +0 -0
@@ -72,6 +72,7 @@ const answer = await rawlist({
72
72
  | message | `string` | yes | The question to ask |
73
73
  | choices | `Choice[]` | yes | List of the available choices. |
74
74
  | loop | `boolean` | no | Defaults to `true`. When set to `false`, the cursor will be constrained to the top and bottom of the choice list without looping. |
75
+ | default | `Value` | no | The value of the choice to preselect. If the value is not found, no choice is preselected. |
75
76
  | theme | [See Theming](#Theming) | no | Customize look of the prompt. |
76
77
 
77
78
  `Separator` objects can be used in the `choices` array to render non-selectable lines in the choice list. By default it'll render a line, but you can provide the text as argument (`new Separator('-- Dependencies --')`). This option is often used to add labels to groups within long list of options.
@@ -86,6 +87,7 @@ type Choice<Value> = {
86
87
  name?: string;
87
88
  short?: string;
88
89
  key?: string;
90
+ description?: string;
89
91
  };
90
92
  ```
91
93
 
@@ -95,6 +97,7 @@ Here's each property:
95
97
  - `name`: This is the string displayed in the choice list.
96
98
  - `short`: Once the prompt is done (press enter), we'll use `short` if defined to render next to the question. By default we'll use `name`.
97
99
  - `key`: The key of the choice. Displayed as `key) name`.
100
+ - `description`: Option description which appears below the list when the choice is selected.
98
101
 
99
102
  `choices` can also be an array of string, in which case the string will be used both as the `value` and the `name`.
100
103
 
@@ -114,6 +117,7 @@ type Theme = {
114
117
  message: (text: string, status: 'idle' | 'done' | 'loading') => string;
115
118
  error: (text: string) => string;
116
119
  highlight: (text: string) => string;
120
+ description: (text: string) => string;
117
121
  };
118
122
  };
119
123
  ```
@@ -1,16 +1,23 @@
1
1
  import { Separator, type Theme } from '@inquirer/core';
2
2
  import type { PartialDeep } from '@inquirer/type';
3
+ type RawlistTheme = {
4
+ style: {
5
+ description: (text: string) => string;
6
+ };
7
+ };
3
8
  type Choice<Value> = {
4
9
  value: Value;
5
10
  name?: string;
6
11
  short?: string;
7
12
  key?: string;
13
+ description?: string;
8
14
  };
9
15
  declare const _default: <Value>(config: {
10
16
  message: string;
11
- choices: readonly (string | Separator)[] | readonly (Separator | Choice<Value>)[];
17
+ choices: readonly (Separator | Value | Choice<Value>)[];
12
18
  loop?: boolean | undefined;
13
- theme?: PartialDeep<Theme> | undefined;
19
+ theme?: PartialDeep<Theme<RawlistTheme>> | undefined;
20
+ default?: NoInfer<Value> | undefined;
14
21
  }, context?: import("@inquirer/type").Context) => Promise<Value>;
15
22
  export default _default;
16
23
  export { Separator } from '@inquirer/core';
@@ -1,6 +1,11 @@
1
1
  import { createPrompt, useMemo, useState, useKeypress, usePrefix, isDownKey, isEnterKey, isUpKey, Separator, makeTheme, ValidationError, } from '@inquirer/core';
2
2
  import { styleText } from 'node:util';
3
3
  const numberRegex = /\d+/;
4
+ const rawlistTheme = {
5
+ style: {
6
+ description: (text) => styleText('cyan', text),
7
+ },
8
+ };
4
9
  function isSelectableChoice(choice) {
5
10
  return choice != null && !Separator.isSeparator(choice);
6
11
  }
@@ -10,11 +15,12 @@ function normalizeChoices(choices) {
10
15
  if (Separator.isSeparator(choice))
11
16
  return choice;
12
17
  index += 1;
13
- if (typeof choice === 'string') {
18
+ if (typeof choice !== 'object' || choice === null || !('value' in choice)) {
19
+ const name = String(choice);
14
20
  return {
15
21
  value: choice,
16
- name: choice,
17
- short: choice,
22
+ name,
23
+ short: name,
18
24
  key: String(index),
19
25
  };
20
26
  }
@@ -24,6 +30,7 @@ function normalizeChoices(choices) {
24
30
  name,
25
31
  short: choice.short ?? name,
26
32
  key: choice.key ?? String(index),
33
+ description: choice.description,
27
34
  };
28
35
  });
29
36
  }
@@ -45,9 +52,14 @@ export default createPrompt((config, done) => {
45
52
  const { loop = true } = config;
46
53
  const choices = useMemo(() => normalizeChoices(config.choices), [config.choices]);
47
54
  const [status, setStatus] = useState('idle');
48
- const [value, setValue] = useState('');
55
+ const [value, setValue] = useState(() => {
56
+ const defaultChoice = config.default == null
57
+ ? undefined
58
+ : choices.find((choice) => isSelectableChoice(choice) && choice.value === config.default);
59
+ return defaultChoice?.key ?? '';
60
+ });
49
61
  const [errorMsg, setError] = useState();
50
- const theme = makeTheme(config.theme);
62
+ const theme = makeTheme(rawlistTheme, config.theme);
51
63
  const prefix = usePrefix({ status, theme });
52
64
  const bounds = useMemo(() => {
53
65
  const first = choices.findIndex(isSelectableChoice);
@@ -107,7 +119,7 @@ export default createPrompt((config, done) => {
107
119
  return ` ${choice.separator}`;
108
120
  }
109
121
  const line = ` ${choice.key}) ${choice.name}`;
110
- if (choice.key === value.toLowerCase()) {
122
+ if (choice.key === value) {
111
123
  return theme.style.highlight(line);
112
124
  }
113
125
  return line;
@@ -117,9 +129,14 @@ export default createPrompt((config, done) => {
117
129
  if (errorMsg) {
118
130
  error = theme.style.error(errorMsg);
119
131
  }
132
+ const [selectedChoice] = getSelectedChoice(value, choices);
133
+ let description = '';
134
+ if (!errorMsg && selectedChoice?.description) {
135
+ description = theme.style.description(selectedChoice.description);
136
+ }
120
137
  return [
121
138
  `${prefix} ${message} ${value}`,
122
- [choicesStr, error].filter(Boolean).join('\n'),
139
+ [choicesStr, error, description].filter(Boolean).join('\n'),
123
140
  ];
124
141
  });
125
142
  export { Separator } from '@inquirer/core';
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inquirer/rawlist",
3
- "version": "5.0.1",
3
+ "version": "5.2.4",
4
4
  "description": "Inquirer rawlist 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/rawlist/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
- "license": "MIT",
50
- "author": "Simon Boudrias <admin@simonboudrias.com>",
51
- "sideEffects": false,
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.0.1",
68
- "@inquirer/type": "^4.0.1"
70
+ "@inquirer/core": "^11.1.5",
71
+ "@inquirer/type": "^4.0.3"
69
72
  },
70
73
  "devDependencies": {
71
- "@inquirer/testing": "^3.0.1",
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
- "gitHead": "cce79ce3b9bbdfb4dbb798078cf3b94b9adc7d1b"
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
  }
@@ -81,6 +81,7 @@ const answer = await search({
81
81
  | message | `string` | yes | The question to ask |
82
82
  | source | `(term: string \| void) => Promise<Choice[]>` | yes | This function returns the choices relevant to the search term. |
83
83
  | pageSize | `number` | no | By default, lists of choice longer than 7 will be paginated. Use this option to control how many choices will appear on the screen at once. |
84
+ | default | `Value` | no | Defines in front of which item the cursor will initially appear. When omitted, the cursor will appear on the first selectable item. |
84
85
  | validate | `Value => boolean \| string \| Promise<boolean \| string>` | no | On submit, validate the answer. When returning a string, it'll be used as the error message displayed to the user. Note: returning a rejected promise, we'll assume a code error happened and crash. |
85
86
  | theme | [See Theming](#Theming) | no | Customize look of the prompt. |
86
87
 
@@ -136,7 +137,7 @@ You can rely on this behavior to implement progressive autocomplete searches. Wh
136
137
 
137
138
  Pressing `tab` also triggers the term autocomplete.
138
139
 
139
- You can see this behavior in action in [our search demo](https://github.com/SBoudrias/Inquirer.js/blob/main/packages/demo/demos/search.mjs).
140
+ You can see this behavior in action in [our search demo](https://github.com/SBoudrias/Inquirer.js/blob/main/packages/demo/src/demos/search.ts).
140
141
 
141
142
  ## Theming
142
143
 
@@ -26,6 +26,7 @@ declare const _default: <Value>(config: {
26
26
  }) => readonly (string | Separator)[] | readonly (Separator | Choice<Value>)[] | Promise<readonly (string | Separator)[]> | Promise<readonly (Separator | Choice<Value>)[]>;
27
27
  validate?: ((value: Value) => boolean | string | Promise<string | boolean>) | undefined;
28
28
  pageSize?: number | undefined;
29
+ default?: NoInfer<Value> | undefined;
29
30
  theme?: PartialDeep<Theme<SearchTheme>> | undefined;
30
31
  }, context?: import("@inquirer/type").Context) => Promise<Value>;
31
32
  export default _default;
@@ -1,4 +1,4 @@
1
- import { createPrompt, useState, useKeypress, usePrefix, usePagination, useEffect, useMemo, isDownKey, isEnterKey, isTabKey, isUpKey, Separator, makeTheme, } from '@inquirer/core';
1
+ import { createPrompt, useState, useKeypress, usePrefix, usePagination, useEffect, useMemo, useRef, isDownKey, isEnterKey, isTabKey, isUpKey, Separator, makeTheme, } from '@inquirer/core';
2
2
  import { styleText } from 'node:util';
3
3
  import figures from '@inquirer/figures';
4
4
  const searchTheme = {
@@ -47,6 +47,7 @@ export default createPrompt((config, done) => {
47
47
  const [searchTerm, setSearchTerm] = useState('');
48
48
  const [searchResults, setSearchResults] = useState([]);
49
49
  const [searchError, setSearchError] = useState();
50
+ const defaultApplied = useRef(false);
50
51
  const prefix = usePrefix({ status, theme });
51
52
  const bounds = useMemo(() => {
52
53
  const first = searchResults.findIndex(isSelectable);
@@ -64,10 +65,16 @@ export default createPrompt((config, done) => {
64
65
  signal: controller.signal,
65
66
  });
66
67
  if (!controller.signal.aborted) {
67
- // Reset the pointer
68
- setActive(undefined);
68
+ const normalized = normalizeChoices(results);
69
+ let initialActive;
70
+ if (!defaultApplied.current && 'default' in config) {
71
+ const defaultIndex = normalized.findIndex((item) => isSelectable(item) && item.value === config.default);
72
+ initialActive = defaultIndex === -1 ? undefined : defaultIndex;
73
+ defaultApplied.current = true;
74
+ }
75
+ setActive(initialActive);
69
76
  setSearchError(undefined);
70
- setSearchResults(normalizeChoices(results));
77
+ setSearchResults(normalized);
71
78
  setStatus('idle');
72
79
  }
73
80
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inquirer/search",
3
- "version": "4.0.1",
3
+ "version": "4.1.4",
4
4
  "description": "Inquirer search 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/search/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
- "license": "MIT",
50
- "author": "Simon Boudrias <admin@simonboudrias.com>",
51
- "sideEffects": false,
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.0.1",
68
- "@inquirer/figures": "^2.0.1",
69
- "@inquirer/type": "^4.0.1"
70
+ "@inquirer/core": "^11.1.5",
71
+ "@inquirer/figures": "^2.0.3",
72
+ "@inquirer/type": "^4.0.3"
70
73
  },
71
74
  "devDependencies": {
72
- "@inquirer/testing": "^3.0.1",
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
- "gitHead": "cce79ce3b9bbdfb4dbb798078cf3b94b9adc7d1b"
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
  }
@@ -9,6 +9,9 @@ type SelectTheme = {
9
9
  description: (text: string) => string;
10
10
  keysHelpTip: (keys: [key: string, action: string][]) => string | undefined;
11
11
  };
12
+ i18n: {
13
+ disabledError: string;
14
+ };
12
15
  indexMode: 'hidden' | 'number';
13
16
  keybindings: ReadonlyArray<Keybinding>;
14
17
  };
@@ -22,10 +25,10 @@ type Choice<Value> = {
22
25
  };
23
26
  declare const _default: <Value>(config: {
24
27
  message: string;
25
- choices: readonly (string | Separator)[] | readonly (Separator | Choice<Value>)[];
28
+ choices: readonly (Separator | Value | Choice<Value>)[];
26
29
  pageSize?: number | undefined;
27
30
  loop?: boolean | undefined;
28
- default?: unknown;
31
+ default?: NoInfer<Value> | undefined;
29
32
  theme?: PartialDeep<Theme<SelectTheme>> | undefined;
30
33
  }, context?: import("@inquirer/type").Context) => Promise<Value>;
31
34
  export default _default;
@@ -5,27 +5,33 @@ import figures from '@inquirer/figures';
5
5
  const selectTheme = {
6
6
  icon: { cursor: figures.pointer },
7
7
  style: {
8
- disabled: (text) => styleText('dim', `- ${text}`),
8
+ disabled: (text) => styleText('dim', text),
9
9
  description: (text) => styleText('cyan', text),
10
10
  keysHelpTip: (keys) => keys
11
11
  .map(([key, action]) => `${styleText('bold', key)} ${styleText('dim', action)}`)
12
12
  .join(styleText('dim', ' • ')),
13
13
  },
14
+ i18n: { disabledError: 'This option is disabled and cannot be selected.' },
14
15
  indexMode: 'hidden',
15
16
  keybindings: [],
16
17
  };
17
18
  function isSelectable(item) {
18
19
  return !Separator.isSeparator(item) && !item.disabled;
19
20
  }
21
+ function isNavigable(item) {
22
+ return !Separator.isSeparator(item);
23
+ }
20
24
  function normalizeChoices(choices) {
21
25
  return choices.map((choice) => {
22
26
  if (Separator.isSeparator(choice))
23
27
  return choice;
24
- if (typeof choice === 'string') {
28
+ if (typeof choice !== 'object' || choice === null || !('value' in choice)) {
29
+ // It's a raw value (string, number, etc.)
30
+ const name = String(choice);
25
31
  return {
26
32
  value: choice,
27
- name: choice,
28
- short: choice,
33
+ name,
34
+ short: name,
29
35
  disabled: false,
30
36
  };
31
37
  }
@@ -54,8 +60,8 @@ export default createPrompt((config, done) => {
54
60
  const searchEnabled = !keybindings.includes('vim');
55
61
  const items = useMemo(() => normalizeChoices(config.choices), [config.choices]);
56
62
  const bounds = useMemo(() => {
57
- const first = items.findIndex(isSelectable);
58
- const last = items.findLastIndex(isSelectable);
63
+ const first = items.findIndex(isNavigable);
64
+ const last = items.findLastIndex(isNavigable);
59
65
  if (first === -1) {
60
66
  throw new ValidationError('[select prompt] No selectable choices. All choices are disabled.');
61
67
  }
@@ -69,11 +75,20 @@ export default createPrompt((config, done) => {
69
75
  const [active, setActive] = useState(defaultItemIndex === -1 ? bounds.first : defaultItemIndex);
70
76
  // Safe to assume the cursor position always point to a Choice.
71
77
  const selectedChoice = items[active];
78
+ const [errorMsg, setError] = useState();
72
79
  useKeypress((key, rl) => {
73
80
  clearTimeout(searchTimeoutRef.current);
81
+ if (errorMsg) {
82
+ setError(undefined);
83
+ }
74
84
  if (isEnterKey(key)) {
75
- setStatus('done');
76
- done(selectedChoice.value);
85
+ if (selectedChoice.disabled) {
86
+ setError(theme.i18n.disabledError);
87
+ }
88
+ else {
89
+ setStatus('done');
90
+ done(selectedChoice.value);
91
+ }
77
92
  }
78
93
  else if (isUpKey(key, keybindings) || isDownKey(key, keybindings)) {
79
94
  rl.clearLine(0);
@@ -84,7 +99,7 @@ export default createPrompt((config, done) => {
84
99
  let next = active;
85
100
  do {
86
101
  next = (next + offset + items.length) % items.length;
87
- } while (!isSelectable(items[next]));
102
+ } while (!isNavigable(items[next]));
88
103
  setActive(next);
89
104
  }
90
105
  }
@@ -141,13 +156,14 @@ export default createPrompt((config, done) => {
141
156
  separatorCount++;
142
157
  return ` ${item.separator}`;
143
158
  }
159
+ const cursor = isActive ? theme.icon.cursor : ' ';
144
160
  const indexLabel = theme.indexMode === 'number' ? `${index + 1 - separatorCount}. ` : '';
145
161
  if (item.disabled) {
146
162
  const disabledLabel = typeof item.disabled === 'string' ? item.disabled : '(disabled)';
147
- return theme.style.disabled(`${indexLabel}${item.name} ${disabledLabel}`);
163
+ const disabledCursor = isActive ? theme.icon.cursor : '-';
164
+ return theme.style.disabled(`${disabledCursor} ${indexLabel}${item.name} ${disabledLabel}`);
148
165
  }
149
166
  const color = isActive ? theme.style.highlight : (x) => x;
150
- const cursor = isActive ? theme.icon.cursor : ` `;
151
167
  return color(`${cursor} ${indexLabel}${item.name}`);
152
168
  },
153
169
  pageSize,
@@ -164,6 +180,7 @@ export default createPrompt((config, done) => {
164
180
  page,
165
181
  ' ',
166
182
  description ? theme.style.description(description) : '',
183
+ errorMsg ? theme.style.error(errorMsg) : '',
167
184
  helpLine,
168
185
  ]
169
186
  .filter(Boolean)
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inquirer/select",
3
- "version": "5.0.1",
3
+ "version": "5.1.0",
4
4
  "description": "Inquirer select/list 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/select/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
- "license": "MIT",
50
- "author": "Simon Boudrias <admin@simonboudrias.com>",
51
- "sideEffects": false,
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.1",
68
- "@inquirer/core": "^11.0.1",
69
- "@inquirer/figures": "^2.0.1",
70
- "@inquirer/type": "^4.0.1"
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.1",
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
- "gitHead": "cce79ce3b9bbdfb4dbb798078cf3b94b9adc7d1b"
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/type",
3
- "version": "4.0.1",
3
+ "version": "4.0.3",
4
4
  "description": "Inquirer core TS types",
5
5
  "keywords": [
6
6
  "answer",
@@ -36,31 +36,34 @@
36
36
  "stdout",
37
37
  "terminal",
38
38
  "tty",
39
+ "types",
40
+ "typescript",
39
41
  "ui",
40
42
  "yeoman",
41
43
  "yo",
42
- "zsh",
43
- "types",
44
- "typescript"
44
+ "zsh"
45
45
  ],
46
+ "license": "MIT",
47
+ "author": "Simon Boudrias <admin@simonboudrias.com>",
46
48
  "repository": {
47
49
  "type": "git",
48
50
  "url": "https://github.com/SBoudrias/Inquirer.js.git"
49
51
  },
50
- "license": "MIT",
51
- "author": "Simon Boudrias <admin@simonboudrias.com>",
52
- "sideEffects": false,
52
+ "files": [
53
+ "dist"
54
+ ],
53
55
  "type": "module",
56
+ "sideEffects": false,
54
57
  "exports": {
55
- "./package.json": "./package.json",
56
58
  ".": {
57
59
  "types": "./dist/index.d.ts",
58
60
  "default": "./dist/index.js"
59
- }
61
+ },
62
+ "./package.json": "./package.json"
63
+ },
64
+ "publishConfig": {
65
+ "access": "public"
60
66
  },
61
- "files": [
62
- "dist"
63
- ],
64
67
  "scripts": {
65
68
  "tsc": "tsc"
66
69
  },
@@ -78,8 +81,7 @@
78
81
  "engines": {
79
82
  "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
80
83
  },
81
- "publishConfig": {
82
- "access": "public"
83
- },
84
- "gitHead": "cce79ce3b9bbdfb4dbb798078cf3b94b9adc7d1b"
84
+ "main": "./dist/index.js",
85
+ "types": "./dist/index.d.ts",
86
+ "gitHead": "99d00a9adc53be8b7edf5926b2ec4ba0b792f68f"
85
87
  }
@@ -8,7 +8,7 @@ This package contains type definitions for node (https://nodejs.org/).
8
8
  Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node/v24.
9
9
 
10
10
  ### Additional Details
11
- * Last updated: Thu, 15 Jan 2026 17:09:03 GMT
11
+ * Last updated: Tue, 10 Feb 2026 14:48:58 GMT
12
12
  * Dependencies: [undici-types](https://npmjs.com/package/undici-types)
13
13
 
14
14
  # Credits
@@ -1645,7 +1645,7 @@ declare module "http" {
1645
1645
  * sockets. Do not modify.
1646
1646
  * @since v0.5.9
1647
1647
  */
1648
- readonly requests: NodeJS.ReadOnlyDict<IncomingMessage[]>;
1648
+ readonly requests: NodeJS.ReadOnlyDict<ClientRequest[]>;
1649
1649
  constructor(opts?: AgentOptions);
1650
1650
  /**
1651
1651
  * Destroy any sockets that are currently in use by the agent.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@types/node",
3
- "version": "24.10.9",
3
+ "version": "24.10.13",
4
4
  "description": "TypeScript definitions for node",
5
5
  "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node",
6
6
  "license": "MIT",
@@ -150,6 +150,6 @@
150
150
  "undici-types": "~7.16.0"
151
151
  },
152
152
  "peerDependencies": {},
153
- "typesPublisherContentHash": "954a409903f39d045c638dd3e8f4973e9d11ba4e21d517cd13a5b104a47e1c47",
153
+ "typesPublisherContentHash": "2ec3065bf306401d19db2ee65619ca53b48d5461db1133c7eeb53d407b8dcbc8",
154
154
  "typeScriptVersion": "5.2"
155
155
  }