@nbtca/prompt 1.0.20 → 1.0.21

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.
@@ -1,6 +1,8 @@
1
1
  /**
2
2
  * Vim keybindings support
3
- * Maps j/k/g/G/q to arrow keys and actions in clack menus.
3
+ * Intercepts raw data events and replaces vim keys with terminal escape sequences
4
+ * before readline processes them. This avoids patching the keypress layer which
5
+ * breaks in Node.js v25+ (emitKeys generator crash).
4
6
  */
5
7
  export declare function enableVimKeys(): void;
6
8
  //# sourceMappingURL=vim-keys.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vim-keys.d.ts","sourceRoot":"","sources":["../../src/core/vim-keys.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH,wBAAgB,aAAa,IAAI,IAAI,CAgBpC"}
1
+ {"version":3,"file":"vim-keys.d.ts","sourceRoot":"","sources":["../../src/core/vim-keys.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,wBAAgB,aAAa,IAAI,IAAI,CAgBpC"}
@@ -1,26 +1,29 @@
1
1
  /**
2
2
  * Vim keybindings support
3
- * Maps j/k/g/G/q to arrow keys and actions in clack menus.
3
+ * Intercepts raw data events and replaces vim keys with terminal escape sequences
4
+ * before readline processes them. This avoids patching the keypress layer which
5
+ * breaks in Node.js v25+ (emitKeys generator crash).
4
6
  */
5
- const KEY_MAP = [
6
- { match: k => k.name === 'j' && !k.ctrl && !k.meta, mapped: { name: 'down' } },
7
- { match: k => k.name === 'k' && !k.ctrl && !k.meta, mapped: { name: 'up' } },
8
- { match: k => k.name === 'g' && !k.shift && !k.ctrl && !k.meta, mapped: { name: 'home' } },
9
- { match: k => k.name === 'g' && !!k.shift && !k.ctrl && !k.meta, mapped: { name: 'end' } },
10
- { match: k => k.name === 'q' && !k.ctrl && !k.meta, mapped: { name: 'c', ctrl: true } },
11
- ];
7
+ // Maps single-byte vim keys to terminal escape sequences
8
+ const VIM_TO_SEQ = {
9
+ j: Buffer.from('\u001b[B'), // down arrow
10
+ k: Buffer.from('\u001b[A'), // up arrow
11
+ g: Buffer.from('\u001b[H'), // home
12
+ G: Buffer.from('\u001b[F'), // end
13
+ q: Buffer.from('\u0003'), // ctrl+c (cancel)
14
+ };
12
15
  export function enableVimKeys() {
13
16
  const stdin = process.stdin;
14
17
  if (!stdin.isTTY)
15
18
  return;
16
19
  const originalEmit = stdin.emit.bind(stdin);
17
20
  stdin.emit = function (event, ...args) {
18
- if (event === 'keypress') {
19
- const key = args[1];
20
- if (key?.name) {
21
- const mapping = KEY_MAP.find(m => m.match(key));
22
- if (mapping)
23
- return originalEmit('keypress', null, mapping.mapped);
21
+ if (event === 'data') {
22
+ const chunk = args[0];
23
+ if (Buffer.isBuffer(chunk) && chunk.length === 1) {
24
+ const seq = VIM_TO_SEQ[String.fromCharCode(chunk[0])];
25
+ if (seq)
26
+ return originalEmit('data', seq);
24
27
  }
25
28
  }
26
29
  return originalEmit(event, ...args);
@@ -1 +1 @@
1
- {"version":3,"file":"vim-keys.js","sourceRoot":"","sources":["../../src/core/vim-keys.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,OAAO,GAA0E;IACrF,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,EAAa,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;IACzF,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,EAAa,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;IACvF,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;IAC1F,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAC1F,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,EAAa,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;CACnG,CAAC;AAEF,MAAM,UAAU,aAAa;IAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC5B,IAAI,CAAC,KAAK,CAAC,KAAK;QAAE,OAAO;IAEzB,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAE3C,KAAK,CAAC,IAAY,GAAG,UAAU,KAAa,EAAE,GAAG,IAAW;QAC3D,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;YACzB,MAAM,GAAG,GAAa,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,GAAG,EAAE,IAAI,EAAE,CAAC;gBACd,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;gBAChD,IAAI,OAAO;oBAAE,OAAO,YAAY,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;QACD,OAAO,YAAY,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"vim-keys.js","sourceRoot":"","sources":["../../src/core/vim-keys.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,yDAAyD;AACzD,MAAM,UAAU,GAA2B;IACzC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,aAAa;IACzC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,WAAW;IACvC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,OAAO;IACnC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,MAAM;IAClC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAI,kBAAkB;CAC/C,CAAC;AAEF,MAAM,UAAU,aAAa;IAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC5B,IAAI,CAAC,KAAK,CAAC,KAAK;QAAE,OAAO;IAEzB,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAE3C,KAAK,CAAC,IAAY,GAAG,UAAU,KAAa,EAAE,GAAG,IAAW;QAC3D,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YACrB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjD,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAW,CAAC,CAAC,CAAC;gBAChE,IAAI,GAAG;oBAAE,OAAO,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;QACD,OAAO,YAAY,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nbtca/prompt",
3
- "version": "1.0.20",
3
+ "version": "1.0.21",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "bin": {