@chainlink/external-adapter-framework 2.13.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 (163) hide show
  1. package/README.md +1 -1
  2. package/generator-adapter/node_modules/.yarn-integrity +29 -33
  3. package/generator-adapter/node_modules/@inquirer/ansi/package.json +28 -26
  4. package/generator-adapter/node_modules/@inquirer/checkbox/dist/index.d.ts +6 -1
  5. package/generator-adapter/node_modules/@inquirer/checkbox/dist/index.js +30 -10
  6. package/generator-adapter/node_modules/@inquirer/checkbox/package.json +23 -21
  7. package/generator-adapter/node_modules/@inquirer/confirm/package.json +21 -19
  8. package/generator-adapter/node_modules/@inquirer/core/dist/index.d.ts +1 -1
  9. package/generator-adapter/node_modules/@inquirer/core/dist/index.js +1 -1
  10. package/generator-adapter/node_modules/@inquirer/core/dist/lib/create-prompt.js +51 -25
  11. package/generator-adapter/node_modules/@inquirer/core/dist/lib/key.d.ts +2 -0
  12. package/generator-adapter/node_modules/@inquirer/core/dist/lib/key.js +1 -0
  13. package/generator-adapter/node_modules/@inquirer/core/dist/lib/utils.js +1 -1
  14. package/generator-adapter/node_modules/@inquirer/core/package.json +22 -20
  15. package/generator-adapter/node_modules/@inquirer/editor/dist/index.d.ts +3 -0
  16. package/generator-adapter/node_modules/@inquirer/editor/dist/index.js +5 -5
  17. package/generator-adapter/node_modules/@inquirer/editor/package.json +22 -20
  18. package/generator-adapter/node_modules/@inquirer/expand/package.json +21 -19
  19. package/generator-adapter/node_modules/@inquirer/external-editor/package.json +33 -31
  20. package/generator-adapter/node_modules/@inquirer/figures/package.json +18 -16
  21. package/generator-adapter/node_modules/@inquirer/input/dist/index.js +5 -3
  22. package/generator-adapter/node_modules/@inquirer/input/package.json +21 -19
  23. package/generator-adapter/node_modules/@inquirer/number/package.json +21 -19
  24. package/generator-adapter/node_modules/@inquirer/password/dist/index.d.ts +6 -1
  25. package/generator-adapter/node_modules/@inquirer/password/dist/index.js +7 -2
  26. package/generator-adapter/node_modules/@inquirer/password/package.json +22 -20
  27. package/generator-adapter/node_modules/@inquirer/prompts/README.md +15 -0
  28. package/generator-adapter/node_modules/@inquirer/prompts/package.json +31 -29
  29. package/generator-adapter/node_modules/@inquirer/rawlist/README.md +4 -0
  30. package/generator-adapter/node_modules/@inquirer/rawlist/dist/index.d.ts +9 -2
  31. package/generator-adapter/node_modules/@inquirer/rawlist/dist/index.js +24 -7
  32. package/generator-adapter/node_modules/@inquirer/rawlist/package.json +21 -19
  33. package/generator-adapter/node_modules/@inquirer/search/README.md +2 -1
  34. package/generator-adapter/node_modules/@inquirer/search/dist/index.d.ts +1 -0
  35. package/generator-adapter/node_modules/@inquirer/search/dist/index.js +11 -4
  36. package/generator-adapter/node_modules/@inquirer/search/package.json +22 -20
  37. package/generator-adapter/node_modules/@inquirer/select/dist/index.d.ts +5 -2
  38. package/generator-adapter/node_modules/@inquirer/select/dist/index.js +28 -11
  39. package/generator-adapter/node_modules/@inquirer/select/package.json +23 -21
  40. package/generator-adapter/node_modules/@inquirer/type/package.json +18 -16
  41. package/generator-adapter/node_modules/@yeoman/adapter/dist/adapter.d.ts +0 -3
  42. package/generator-adapter/node_modules/@yeoman/adapter/dist/adapter.js +1 -0
  43. package/generator-adapter/node_modules/@yeoman/adapter/dist/adapter.js.map +1 -1
  44. package/generator-adapter/node_modules/@yeoman/adapter/dist/log.d.ts +0 -2
  45. package/generator-adapter/node_modules/@yeoman/adapter/dist/log.js.map +1 -1
  46. package/generator-adapter/node_modules/@yeoman/adapter/dist/queued-adapter.d.ts +0 -1
  47. package/generator-adapter/node_modules/@yeoman/adapter/dist/queued-adapter.js.map +1 -1
  48. package/generator-adapter/node_modules/@yeoman/adapter/dist/testing/test-adapter.d.ts +0 -1
  49. package/generator-adapter/node_modules/@yeoman/adapter/dist/testing/test-adapter.js.map +1 -1
  50. package/generator-adapter/node_modules/@yeoman/adapter/package.json +11 -11
  51. package/generator-adapter/node_modules/ansi-styles/index.d.ts +341 -232
  52. package/generator-adapter/node_modules/ansi-styles/index.js +130 -190
  53. package/generator-adapter/node_modules/ansi-styles/license +1 -1
  54. package/generator-adapter/node_modules/ansi-styles/package.json +10 -8
  55. package/generator-adapter/node_modules/ansi-styles/readme.md +32 -53
  56. package/generator-adapter/node_modules/chalk/package.json +3 -3
  57. package/generator-adapter/node_modules/chalk/readme.md +25 -53
  58. package/generator-adapter/node_modules/chalk/source/index.d.ts +6 -1
  59. package/generator-adapter/node_modules/chalk/source/vendor/supports-color/browser.js +6 -2
  60. package/generator-adapter/node_modules/chalk/source/vendor/supports-color/index.js +10 -2
  61. package/generator-adapter/node_modules/fast-string-truncated-width/dist/index.d.ts +4 -0
  62. package/generator-adapter/node_modules/fast-string-truncated-width/dist/index.js +111 -0
  63. package/generator-adapter/node_modules/fast-string-truncated-width/dist/types.d.ts +19 -0
  64. package/generator-adapter/node_modules/{p-queue/dist/options copy.js → fast-string-truncated-width/dist/types.js} +1 -0
  65. package/generator-adapter/node_modules/fast-string-truncated-width/dist/utils.d.ts +4 -0
  66. package/generator-adapter/node_modules/fast-string-truncated-width/dist/utils.js +20 -0
  67. package/generator-adapter/node_modules/fast-string-truncated-width/license +21 -0
  68. package/generator-adapter/node_modules/fast-string-truncated-width/package.json +35 -0
  69. package/generator-adapter/node_modules/fast-string-truncated-width/readme.md +59 -0
  70. package/generator-adapter/node_modules/fast-string-width/dist/index.d.ts +4 -0
  71. package/generator-adapter/node_modules/fast-string-width/dist/index.js +14 -0
  72. package/generator-adapter/node_modules/fast-string-width/license +21 -0
  73. package/generator-adapter/node_modules/fast-string-width/package.json +34 -0
  74. package/generator-adapter/node_modules/fast-string-width/readme.md +42 -0
  75. package/generator-adapter/node_modules/fast-wrap-ansi/LICENSE +23 -0
  76. package/generator-adapter/node_modules/fast-wrap-ansi/README.md +26 -0
  77. package/generator-adapter/node_modules/fast-wrap-ansi/lib/main.d.ts +6 -0
  78. package/generator-adapter/node_modules/fast-wrap-ansi/lib/main.js +219 -0
  79. package/generator-adapter/node_modules/fast-wrap-ansi/lib/main.js.map +1 -0
  80. package/generator-adapter/node_modules/fast-wrap-ansi/package.json +51 -0
  81. package/generator-adapter/node_modules/iconv-lite/lib/index.d.ts +114 -26
  82. package/generator-adapter/node_modules/iconv-lite/lib/index.js +39 -40
  83. package/generator-adapter/node_modules/iconv-lite/package.json +13 -2
  84. package/generator-adapter/node_modules/iconv-lite/types/encodings.d.ts +423 -0
  85. package/generator-adapter/node_modules/inquirer/dist/types.d.ts +12 -11
  86. package/generator-adapter/node_modules/inquirer/dist/ui/prompt.js +9 -1
  87. package/generator-adapter/node_modules/inquirer/dist/ui/skipped-renderer.d.ts +13 -0
  88. package/generator-adapter/node_modules/inquirer/dist/ui/skipped-renderer.js +57 -0
  89. package/generator-adapter/node_modules/inquirer/package.json +21 -19
  90. package/generator-adapter/node_modules/log-symbols/package.json +1 -1
  91. package/generator-adapter/node_modules/log-symbols/symbols.js +1 -1
  92. package/generator-adapter/node_modules/mem-fs/dist/index.d.ts +0 -2
  93. package/generator-adapter/node_modules/mem-fs/node_modules/vinyl/LICENSE +21 -0
  94. package/generator-adapter/node_modules/mem-fs/node_modules/vinyl/README.md +447 -0
  95. package/generator-adapter/node_modules/mem-fs/node_modules/vinyl/index.js +346 -0
  96. package/generator-adapter/node_modules/mem-fs/node_modules/vinyl/lib/inspect-stream.js +13 -0
  97. package/generator-adapter/node_modules/mem-fs/node_modules/vinyl/lib/is-stream.js +15 -0
  98. package/generator-adapter/node_modules/mem-fs/node_modules/vinyl/lib/normalize.js +9 -0
  99. package/generator-adapter/node_modules/mem-fs/node_modules/vinyl/package.json +59 -0
  100. package/generator-adapter/node_modules/mem-fs/package.json +9 -9
  101. package/generator-adapter/node_modules/ora/index.d.ts +3 -1
  102. package/generator-adapter/node_modules/ora/index.js +299 -109
  103. package/generator-adapter/node_modules/ora/package.json +3 -4
  104. package/generator-adapter/node_modules/ora/readme.md +24 -0
  105. package/generator-adapter/node_modules/p-queue/dist/index.js +145 -22
  106. package/generator-adapter/node_modules/p-queue/dist/options.d.ts +17 -1
  107. package/generator-adapter/node_modules/p-queue/package.json +1 -1
  108. package/generator-adapter/node_modules/p-queue/readme.md +32 -1
  109. package/generator-adapter/node_modules/stdin-discarder/index.js +50 -22
  110. package/generator-adapter/node_modules/stdin-discarder/package.json +1 -1
  111. package/generator-adapter/node_modules/{ora → yeoman-generator}/node_modules/chalk/package.json +3 -3
  112. package/generator-adapter/node_modules/{ora → yeoman-generator}/node_modules/chalk/readme.md +53 -25
  113. package/generator-adapter/node_modules/{ora → yeoman-generator}/node_modules/chalk/source/index.d.ts +1 -6
  114. package/generator-adapter/node_modules/{ora → yeoman-generator}/node_modules/chalk/source/vendor/supports-color/browser.js +2 -6
  115. package/generator-adapter/node_modules/{ora → yeoman-generator}/node_modules/chalk/source/vendor/supports-color/index.js +2 -10
  116. package/generator-adapter/package.json +2 -2
  117. package/package.json +4 -4
  118. package/transports/websocket.d.ts +5 -0
  119. package/transports/websocket.js +25 -13
  120. package/transports/websocket.js.map +1 -1
  121. package/generator-adapter/node_modules/emoji-regex/LICENSE-MIT.txt +0 -20
  122. package/generator-adapter/node_modules/emoji-regex/README.md +0 -107
  123. package/generator-adapter/node_modules/emoji-regex/index.d.ts +0 -3
  124. package/generator-adapter/node_modules/emoji-regex/index.js +0 -4
  125. package/generator-adapter/node_modules/emoji-regex/index.mjs +0 -4
  126. package/generator-adapter/node_modules/emoji-regex/package.json +0 -45
  127. package/generator-adapter/node_modules/iconv-lite/Changelog.md +0 -236
  128. package/generator-adapter/node_modules/jake/node_modules/ansi-styles/index.d.ts +0 -345
  129. package/generator-adapter/node_modules/jake/node_modules/ansi-styles/index.js +0 -163
  130. package/generator-adapter/node_modules/jake/node_modules/ansi-styles/license +0 -9
  131. package/generator-adapter/node_modules/jake/node_modules/ansi-styles/package.json +0 -56
  132. package/generator-adapter/node_modules/jake/node_modules/ansi-styles/readme.md +0 -152
  133. package/generator-adapter/node_modules/ora/node_modules/log-symbols/browser-symbols.js +0 -4
  134. package/generator-adapter/node_modules/ora/node_modules/log-symbols/browser.js +0 -1
  135. package/generator-adapter/node_modules/ora/node_modules/log-symbols/index.d.ts +0 -22
  136. package/generator-adapter/node_modules/ora/node_modules/log-symbols/index.js +0 -1
  137. package/generator-adapter/node_modules/ora/node_modules/log-symbols/license +0 -9
  138. package/generator-adapter/node_modules/ora/node_modules/log-symbols/package.json +0 -60
  139. package/generator-adapter/node_modules/ora/node_modules/log-symbols/readme.md +0 -39
  140. package/generator-adapter/node_modules/ora/node_modules/log-symbols/symbols.js +0 -14
  141. package/generator-adapter/node_modules/ora/node_modules/strip-ansi/index.d.ts +0 -15
  142. package/generator-adapter/node_modules/ora/node_modules/strip-ansi/index.js +0 -14
  143. package/generator-adapter/node_modules/ora/node_modules/strip-ansi/license +0 -9
  144. package/generator-adapter/node_modules/ora/node_modules/strip-ansi/package.json +0 -59
  145. package/generator-adapter/node_modules/ora/node_modules/strip-ansi/readme.md +0 -37
  146. package/generator-adapter/node_modules/p-queue/dist/options copy.d.ts +0 -121
  147. package/generator-adapter/node_modules/wrap-ansi/index.d.ts +0 -41
  148. package/generator-adapter/node_modules/wrap-ansi/index.js +0 -222
  149. package/generator-adapter/node_modules/wrap-ansi/license +0 -9
  150. package/generator-adapter/node_modules/wrap-ansi/node_modules/string-width/index.d.ts +0 -39
  151. package/generator-adapter/node_modules/wrap-ansi/node_modules/string-width/index.js +0 -82
  152. package/generator-adapter/node_modules/wrap-ansi/node_modules/string-width/license +0 -9
  153. package/generator-adapter/node_modules/wrap-ansi/node_modules/string-width/package.json +0 -64
  154. package/generator-adapter/node_modules/wrap-ansi/node_modules/string-width/readme.md +0 -66
  155. package/generator-adapter/node_modules/wrap-ansi/package.json +0 -69
  156. package/generator-adapter/node_modules/wrap-ansi/readme.md +0 -75
  157. /package/generator-adapter/node_modules/{ora → yeoman-generator}/node_modules/chalk/license +0 -0
  158. /package/generator-adapter/node_modules/{ora → yeoman-generator}/node_modules/chalk/source/index.js +0 -0
  159. /package/generator-adapter/node_modules/{ora → yeoman-generator}/node_modules/chalk/source/utilities.js +0 -0
  160. /package/generator-adapter/node_modules/{ora → yeoman-generator}/node_modules/chalk/source/vendor/ansi-styles/index.d.ts +0 -0
  161. /package/generator-adapter/node_modules/{ora → yeoman-generator}/node_modules/chalk/source/vendor/ansi-styles/index.js +0 -0
  162. /package/generator-adapter/node_modules/{ora → yeoman-generator}/node_modules/chalk/source/vendor/supports-color/browser.d.ts +0 -0
  163. /package/generator-adapter/node_modules/{ora → yeoman-generator}/node_modules/chalk/source/vendor/supports-color/index.d.ts +0 -0
@@ -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
- cycle(() => {
80
- try {
81
- const nextView = view(config, (value) => {
82
- setImmediate(() => resolve(value));
83
- });
84
- // Typescript won't allow this, but not all users rely on typescript.
85
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
86
- if (nextView === undefined) {
87
- const callerFilename = callSites[1]?.getFileName();
88
- throw new Error(`Prompt functions must return a string.\n at ${callerFilename}`);
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
- const [content, bottomContent] = typeof nextView === 'string' ? [nextView] : nextView;
91
- screen.render(content, bottomContent);
92
- effectScheduler.run();
93
- }
94
- catch (error) {
95
- reject(error);
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,5 +1,5 @@
1
1
  import cliWidth from 'cli-width';
2
- import wrapAnsi from 'wrap-ansi';
2
+ import { wrapAnsi } from 'fast-wrap-ansi';
3
3
  import { readline } from "./hook-engine.js";
4
4
  /**
5
5
  * Force line returns at specific width. This function is ANSI code friendly and it'll
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inquirer/core",
3
- "version": "11.0.1",
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
- "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/figures": "^2.0.1",
69
- "@inquirer/type": "^4.0.1",
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.1",
79
+ "@inquirer/testing": "^3.3.0",
77
80
  "@types/mute-stream": "^0.0.4",
78
- "@types/node": "^24.10.1",
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
- "publishConfig": {
93
- "access": "public"
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 === 'loading') {
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(`Press ${enterKey} to launch your preferred editor.`);
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.1",
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
- "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/external-editor": "^2.0.1",
69
- "@inquirer/type": "^4.0.1"
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.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
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inquirer/expand",
3
- "version": "5.0.1",
3
+ "version": "5.0.8",
4
4
  "description": "Inquirer checkbox 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/expand/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
  }
@@ -1,19 +1,7 @@
1
1
  {
2
2
  "name": "@inquirer/external-editor",
3
- "version": "2.0.1",
3
+ "version": "2.0.3",
4
4
  "description": "Edit a string with the users preferred text editor using $VISUAL or $ENVIRONMENT",
5
- "type": "module",
6
- "exports": {
7
- "./package.json": "./package.json",
8
- ".": {
9
- "types": "./dist/index.d.ts",
10
- "default": "./dist/index.js"
11
- }
12
- },
13
- "repository": {
14
- "type": "git",
15
- "url": "https://github.com/SBoudrias/Inquirer.js.git"
16
- },
17
5
  "keywords": [
18
6
  "answer",
19
7
  "answers",
@@ -23,7 +11,10 @@
23
11
  "command",
24
12
  "command-line",
25
13
  "confirm",
14
+ "editor",
26
15
  "enquirer",
16
+ "external",
17
+ "external-editor",
27
18
  "generate",
28
19
  "generator",
29
20
  "hyper",
@@ -49,31 +40,40 @@
49
40
  "terminal",
50
41
  "tty",
51
42
  "ui",
43
+ "user",
44
+ "visual",
52
45
  "yeoman",
53
46
  "yo",
54
- "zsh",
55
- "editor",
56
- "external",
57
- "external-editor",
58
- "user",
59
- "visual"
47
+ "zsh"
60
48
  ],
61
- "publishConfig": {
62
- "access": "public"
49
+ "homepage": "https://github.com/SBoudrias/Inquirer.js/blob/main/packages/external-editor/README.md",
50
+ "license": "MIT",
51
+ "author": "Simon Boudrias <admin@simonboudrias.com>",
52
+ "repository": {
53
+ "type": "git",
54
+ "url": "https://github.com/SBoudrias/Inquirer.js.git"
63
55
  },
64
56
  "files": [
65
57
  "dist"
66
58
  ],
67
- "engines": {
68
- "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
69
- },
70
- "author": "Simon Boudrias <admin@simonboudrias.com>",
71
- "license": "MIT",
59
+ "type": "module",
72
60
  "sideEffects": false,
73
- "homepage": "https://github.com/SBoudrias/Inquirer.js/blob/main/packages/external-editor/README.md",
61
+ "exports": {
62
+ ".": {
63
+ "types": "./dist/index.d.ts",
64
+ "default": "./dist/index.js"
65
+ },
66
+ "./package.json": "./package.json"
67
+ },
68
+ "publishConfig": {
69
+ "access": "public"
70
+ },
71
+ "scripts": {
72
+ "tsc": "tsc"
73
+ },
74
74
  "dependencies": {
75
75
  "chardet": "^2.1.1",
76
- "iconv-lite": "^0.7.0"
76
+ "iconv-lite": "^0.7.2"
77
77
  },
78
78
  "devDependencies": {
79
79
  "@types/chardet": "^1.0.0",
@@ -87,8 +87,10 @@
87
87
  "optional": true
88
88
  }
89
89
  },
90
- "scripts": {
91
- "tsc": "tsc"
90
+ "engines": {
91
+ "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
92
92
  },
93
- "gitHead": "cce79ce3b9bbdfb4dbb798078cf3b94b9adc7d1b"
93
+ "main": "./dist/index.js",
94
+ "types": "./dist/index.d.ts",
95
+ "gitHead": "99d00a9adc53be8b7edf5926b2ec4ba0b792f68f"
94
96
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inquirer/figures",
3
- "version": "2.0.1",
3
+ "version": "2.0.3",
4
4
  "description": "Vendored version of figures, for CJS compatibility",
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
  },
@@ -70,8 +73,7 @@
70
73
  "engines": {
71
74
  "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
72
75
  },
73
- "publishConfig": {
74
- "access": "public"
75
- },
76
- "gitHead": "cce79ce3b9bbdfb4dbb798078cf3b94b9adc7d1b"
76
+ "main": "./dist/index.js",
77
+ "types": "./dist/index.d.ts",
78
+ "gitHead": "99d00a9adc53be8b7edf5926b2ec4ba0b792f68f"
77
79
  }
@@ -6,7 +6,9 @@ export default createPrompt((config, done) => {
6
6
  const { prefill = 'tab' } = config;
7
7
  const theme = makeTheme(inputTheme, config.theme);
8
8
  const [status, setStatus] = useState('idle');
9
- const [defaultValue = '', setDefaultValue] = useState(config.default);
9
+ // Coerce to string to handle runtime values that may be numbers despite TypeScript types
10
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-conversion
11
+ const [defaultValue, setDefaultValue] = useState(String(config.default ?? ''));
10
12
  const [errorMsg, setError] = useState();
11
13
  const [value, setValue] = useState('');
12
14
  const prefix = usePrefix({ status, theme });
@@ -51,10 +53,10 @@ export default createPrompt((config, done) => {
51
53
  }
52
54
  }
53
55
  else if (isBackspaceKey(key) && !value) {
54
- setDefaultValue(undefined);
56
+ setDefaultValue('');
55
57
  }
56
58
  else if (isTabKey(key) && !value) {
57
- setDefaultValue(undefined);
59
+ setDefaultValue('');
58
60
  rl.clearLine(0); // Remove the tab character.
59
61
  rl.write(defaultValue);
60
62
  setValue(defaultValue);