@mudah-cli/terminal 0.8.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +35 -0
- package/dist/capabilities.d.ts +25 -0
- package/dist/capabilities.js +41 -12
- package/dist/capabilities.js.map +1 -1
- package/dist/index.d.ts +8 -6
- package/dist/index.js +7 -5
- package/dist/index.js.map +1 -1
- package/dist/keys.d.ts +40 -3
- package/dist/keys.js +158 -44
- package/dist/keys.js.map +1 -1
- package/dist/mouse.js +10 -6
- package/dist/mouse.js.map +1 -1
- package/dist/osc.d.ts +18 -0
- package/dist/osc.js +27 -0
- package/dist/osc.js.map +1 -1
- package/dist/size.d.ts +25 -0
- package/dist/size.js +50 -0
- package/dist/size.js.map +1 -0
- package/dist/theme-query.d.ts +2 -0
- package/dist/theme-query.js +6 -4
- package/dist/theme-query.js.map +1 -1
- package/dist/theme-watch.d.ts +20 -0
- package/dist/theme-watch.js +46 -0
- package/dist/theme-watch.js.map +1 -0
- package/package.json +16 -1
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Mudah Contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# @mudah-cli/terminal
|
|
2
|
+
|
|
3
|
+
Terminal capability detection, OSC emitters, Kitty graphics, Kitty keyboard (key-up), and
|
|
4
|
+
key/mouse parsing.
|
|
5
|
+
|
|
6
|
+
Part of [Mudah](https://github.com/thesimonharms/mudah) — an ergonomic, animation-rich CLI
|
|
7
|
+
framework. Standalone: no Mudah dependencies.
|
|
8
|
+
|
|
9
|
+
## Install
|
|
10
|
+
|
|
11
|
+
```sh
|
|
12
|
+
npm install @mudah-cli/terminal
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Usage
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
import { detectCapabilities, KeyParser, osc } from '@mudah-cli/terminal';
|
|
19
|
+
|
|
20
|
+
const caps = detectCapabilities();
|
|
21
|
+
if (caps.trueColor) {
|
|
22
|
+
// 24-bit color is available
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
osc.notify(process.stdout, 'Build finished', caps);
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Capability detection covers truecolor, unicode, OSC 9 desktop notifications, OSC 10/11 theme
|
|
29
|
+
query, OSC 133 semantic prompts, and reduced-motion. `KeyParser` handles Kitty and legacy
|
|
30
|
+
escape sequences, including key-up; `parseMouseEvents` decodes SGR mouse reports.
|
|
31
|
+
|
|
32
|
+
## Links
|
|
33
|
+
|
|
34
|
+
- [Full documentation](https://github.com/thesimonharms/mudah#readme)
|
|
35
|
+
- [License: MIT](LICENSE)
|
package/dist/capabilities.d.ts
CHANGED
|
@@ -18,6 +18,8 @@ export interface TerminalCapabilities {
|
|
|
18
18
|
readonly osc9: boolean;
|
|
19
19
|
/** OSC 133 semantic prompt markers (Kitty, WezTerm, iTerm2, VS Code, foot). */
|
|
20
20
|
readonly osc133: boolean;
|
|
21
|
+
/** OSC 7 working-directory tracking (cwd announcements). Widely supported; emitted on a TTY. */
|
|
22
|
+
readonly osc7: boolean;
|
|
21
23
|
/**
|
|
22
24
|
* The terminal answers OSC 10/11 color queries, so its theme can be read
|
|
23
25
|
* at runtime. Everything modern does; dumb terminals and CI do not.
|
|
@@ -62,3 +64,26 @@ export interface DetectCapabilitiesOptions {
|
|
|
62
64
|
* options — pass `env` in tests. Explicit overrides win over detection.
|
|
63
65
|
*/
|
|
64
66
|
export declare function detectCapabilities(options?: DetectCapabilitiesOptions): TerminalCapabilities;
|
|
67
|
+
export interface SniffPaletteOptions {
|
|
68
|
+
/** Environment map (defaults to `process.env`). */
|
|
69
|
+
env?: NodeJS.ProcessEnv;
|
|
70
|
+
/** Explicit COLORTERM override, merged into `env` when set. */
|
|
71
|
+
colorterm?: string;
|
|
72
|
+
/** Explicit FORCE_COLOR override, merged into `env` when set. */
|
|
73
|
+
forceColor?: string;
|
|
74
|
+
/** Whether output is a TTY (defaults to `process.stdout.isTTY`). */
|
|
75
|
+
isTty?: boolean;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Sniff the effective color palette. Wraps the same detection `detectCapabilities`
|
|
79
|
+
* uses; extra `colorterm` / `forceColor` fields override the corresponding env
|
|
80
|
+
* keys without mutating the caller's map.
|
|
81
|
+
*/
|
|
82
|
+
export declare function sniffPalette(options?: SniffPaletteOptions): ColorLevel;
|
|
83
|
+
/**
|
|
84
|
+
* Pick the richest palette that is both desired and available.
|
|
85
|
+
* Levels are totally ordered: 0 < 1 (16-color) < 8 (256) < 24 (truecolor).
|
|
86
|
+
*/
|
|
87
|
+
export declare function pickColorFallback(desired: ColorLevel, available: ColorLevel): ColorLevel;
|
|
88
|
+
/** Detect color level from a TTY flag and environment. Default sniff path. */
|
|
89
|
+
export declare function detectColorLevel(isTty: boolean, env: NodeJS.ProcessEnv): ColorLevel;
|
package/dist/capabilities.js
CHANGED
|
@@ -7,18 +7,21 @@ export function detectCapabilities(options = {}) {
|
|
|
7
7
|
const isTty = options.isTty ?? process.stdout.isTTY === true;
|
|
8
8
|
const overrides = options.overrides ?? {};
|
|
9
9
|
const brand = detectBrand(env);
|
|
10
|
-
const colorLevel =
|
|
11
|
-
const
|
|
10
|
+
const colorLevel = sniffPalette({ env, isTty });
|
|
11
|
+
const headless = env['MUDAH_HEADLESS'] === '1' || env['MUDAH_HEADLESS'] === 'true';
|
|
12
|
+
const reducedMotion = overrides.reducedMotion ??
|
|
13
|
+
(headless || env['MUDAH_REDUCED_MOTION'] === '1' || env['NO_ANIMATION'] === '1');
|
|
12
14
|
return {
|
|
13
|
-
isTty,
|
|
15
|
+
isTty: headless ? false : isTty,
|
|
14
16
|
color: overrides.color ?? colorLevel > 0,
|
|
15
17
|
colorLevel,
|
|
16
18
|
trueColor: colorLevel === 24,
|
|
17
19
|
unicode: overrides.unicode ?? env['TERM'] !== 'dumb',
|
|
18
|
-
animations: isTty && !reducedMotion && env['CI'] !== 'true' && env['CI'] !== '1',
|
|
20
|
+
animations: isTty && !headless && !reducedMotion && env['CI'] !== 'true' && env['CI'] !== '1',
|
|
19
21
|
reducedMotion,
|
|
20
22
|
osc9: brand === 'ghostty' || brand === 'wezterm',
|
|
21
23
|
osc133: brand === 'kitty' || brand === 'wezterm' || brand === 'iterm' || brand === 'vscode' || brand === 'foot',
|
|
24
|
+
osc7: isTty,
|
|
22
25
|
themeQuery: isTty && brand !== 'apple-terminal' && env['TERM'] !== 'dumb',
|
|
23
26
|
kittyGraphics: isTty && (brand === 'ghostty' || brand === 'kitty' || brand === 'wezterm'),
|
|
24
27
|
kittyKeyboard: isTty && (brand === 'ghostty' || brand === 'kitty' || brand === 'wezterm'),
|
|
@@ -52,19 +55,45 @@ function detectBrand(env) {
|
|
|
52
55
|
return 'xterm';
|
|
53
56
|
return 'unknown';
|
|
54
57
|
}
|
|
55
|
-
|
|
58
|
+
/**
|
|
59
|
+
* Sniff the effective color palette. Wraps the same detection `detectCapabilities`
|
|
60
|
+
* uses; extra `colorterm` / `forceColor` fields override the corresponding env
|
|
61
|
+
* keys without mutating the caller's map.
|
|
62
|
+
*/
|
|
63
|
+
export function sniffPalette(options = {}) {
|
|
64
|
+
const base = options.env ?? process.env;
|
|
65
|
+
const env = options.colorterm !== undefined || options.forceColor !== undefined
|
|
66
|
+
? {
|
|
67
|
+
...base,
|
|
68
|
+
...(options.colorterm !== undefined ? { COLORTERM: options.colorterm } : {}),
|
|
69
|
+
...(options.forceColor !== undefined ? { FORCE_COLOR: options.forceColor } : {}),
|
|
70
|
+
}
|
|
71
|
+
: base;
|
|
72
|
+
const isTty = options.isTty ?? process.stdout.isTTY === true;
|
|
73
|
+
return detectColorLevel(isTty, env);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Pick the richest palette that is both desired and available.
|
|
77
|
+
* Levels are totally ordered: 0 < 1 (16-color) < 8 (256) < 24 (truecolor).
|
|
78
|
+
*/
|
|
79
|
+
export function pickColorFallback(desired, available) {
|
|
80
|
+
return desired <= available ? desired : available;
|
|
81
|
+
}
|
|
82
|
+
/** Detect color level from a TTY flag and environment. Default sniff path. */
|
|
83
|
+
export function detectColorLevel(isTty, env) {
|
|
56
84
|
if (env['NO_COLOR'] !== undefined)
|
|
57
85
|
return 0;
|
|
58
86
|
const forced = env['FORCE_COLOR'];
|
|
59
87
|
if (forced !== undefined) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
if (forced === '2')
|
|
63
|
-
return 8;
|
|
64
|
-
if (forced === '3')
|
|
65
|
-
return 24;
|
|
66
|
-
if (forced === '0' || forced === 'false')
|
|
88
|
+
const value = forced.toLowerCase().trim();
|
|
89
|
+
if (value === '0' || value === 'false')
|
|
67
90
|
return 0;
|
|
91
|
+
if (value === '3')
|
|
92
|
+
return 24; // truecolor
|
|
93
|
+
if (value === '2')
|
|
94
|
+
return 8; // 256-color
|
|
95
|
+
// '' , 'true', '1', and any other truthy value force basic color on.
|
|
96
|
+
return 1;
|
|
68
97
|
}
|
|
69
98
|
if (env['CLICOLOR_FORCE'] === '1')
|
|
70
99
|
return 8;
|
package/dist/capabilities.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
export { ansi } from './ansi.js';
|
|
2
|
-
export {
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
6
|
-
export {
|
|
7
|
-
export {
|
|
2
|
+
export { type CapabilityOverrides, type ColorLevel, type DetectCapabilitiesOptions, detectCapabilities, detectColorLevel, pickColorFallback, type SniffPaletteOptions, sniffPalette, type TerminalBrand, type TerminalCapabilities, } from './capabilities.js';
|
|
3
|
+
export { encodeHalfBlocks, encodeKittyDelete, encodeKittyImage, KittyGraphics, type KittyImageOptions, type PixelFormat, } from './graphics.js';
|
|
4
|
+
export { disableBracketedPaste, disableKittyKeyboard, enableBracketedPaste, enableKittyKeyboard, enterRawMode, type KeyEvent, type KeyKind, type KeyName, KeyParser, KITTY_KEYBOARD, KITTY_KEYBOARD_KEYUP, type NormalizedKey, normalizeKey, normalizeKeys, type ParseKeysOptions, parseKeys, } from './keys.js';
|
|
5
|
+
export { disableMouse, enableMouse, isMouseEvent, type MouseButtons, type MouseEvent, type MouseModeOptions, parseMouseEvents, } from './mouse.js';
|
|
6
|
+
export { guardedOsc, hyperlinkWrap, type OscWriter, osc } from './osc.js';
|
|
7
|
+
export { type PollTerminalSizeOptions, pollTerminalSize, type TerminalSize } from './size.js';
|
|
8
|
+
export { parseOscColor, parseThemeResponses, queryTerminalTheme, type Rgb, relativeLuminance, type TerminalTheme, type ThemeQueryFailure, type ThemeQueryInput, type ThemeQueryOptions, type ThemeQueryResult, themeFromBackground, } from './theme-query.js';
|
|
9
|
+
export { type WatchThemeOptions, type WatchThemeProcess, watchTheme } from './theme-watch.js';
|
|
8
10
|
export { Ticker, type TickerOptions } from './ticker.js';
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
export { ansi } from './ansi.js';
|
|
2
|
-
export { detectCapabilities, } from './capabilities.js';
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
5
|
-
export { enterRawMode, KeyParser, parseKeys, enableKittyKeyboard, disableKittyKeyboard, enableBracketedPaste, disableBracketedPaste, KITTY_KEYBOARD, KITTY_KEYBOARD_KEYUP } from './keys.js';
|
|
6
|
-
export { KittyGraphics, encodeHalfBlocks, encodeKittyDelete, encodeKittyImage, } from './graphics.js';
|
|
2
|
+
export { detectCapabilities, detectColorLevel, pickColorFallback, sniffPalette, } from './capabilities.js';
|
|
3
|
+
export { encodeHalfBlocks, encodeKittyDelete, encodeKittyImage, KittyGraphics, } from './graphics.js';
|
|
4
|
+
export { disableBracketedPaste, disableKittyKeyboard, enableBracketedPaste, enableKittyKeyboard, enterRawMode, KeyParser, KITTY_KEYBOARD, KITTY_KEYBOARD_KEYUP, normalizeKey, normalizeKeys, parseKeys, } from './keys.js';
|
|
7
5
|
export { disableMouse, enableMouse, isMouseEvent, parseMouseEvents, } from './mouse.js';
|
|
6
|
+
export { guardedOsc, hyperlinkWrap, osc } from './osc.js';
|
|
7
|
+
export { pollTerminalSize } from './size.js';
|
|
8
|
+
export { parseOscColor, parseThemeResponses, queryTerminalTheme, relativeLuminance, themeFromBackground, } from './theme-query.js';
|
|
9
|
+
export { watchTheme } from './theme-watch.js';
|
|
8
10
|
export { Ticker } from './ticker.js';
|
|
9
11
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAIL,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EAEjB,YAAY,GAGb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,GAGd,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,YAAY,EAIZ,SAAS,EACT,cAAc,EACd,oBAAoB,EAEpB,YAAY,EACZ,aAAa,EAEb,SAAS,GACV,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,YAAY,EACZ,WAAW,EACX,YAAY,EAIZ,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAkB,GAAG,EAAE,MAAM,UAAU,CAAC;AAC1E,OAAO,EAAgC,gBAAgB,EAAqB,MAAM,WAAW,CAAC;AAC9F,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAElB,iBAAiB,EAMjB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAkD,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9F,OAAO,EAAE,MAAM,EAAsB,MAAM,aAAa,CAAC"}
|
package/dist/keys.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ReadStream } from 'node:tty';
|
|
2
|
-
export type KeyName = 'up' | 'down' | 'left' | 'right' | 'home' | 'end' | 'page-up' | 'page-down' | 'enter' | 'escape' | 'backspace' | 'delete' | 'tab' | 'shift-tab' | 'space' | `ctrl+${string}` | `alt+${string}` | string;
|
|
2
|
+
export type KeyName = 'up' | 'down' | 'left' | 'right' | 'home' | 'end' | 'page-up' | 'page-down' | 'enter' | 'escape' | 'backspace' | 'delete' | 'insert' | 'tab' | 'shift-tab' | 'space' | `ctrl+${string}` | `alt+${string}` | string;
|
|
3
3
|
export type KeyKind = 'press' | 'repeat' | 'release';
|
|
4
4
|
export interface KeyEvent {
|
|
5
5
|
name: KeyName;
|
|
@@ -16,6 +16,22 @@ export interface KeyEvent {
|
|
|
16
16
|
readonly shift?: boolean;
|
|
17
17
|
readonly alt?: boolean;
|
|
18
18
|
readonly ctrl?: boolean;
|
|
19
|
+
readonly meta?: boolean;
|
|
20
|
+
/** Present when `parseKeys` is called with `{ normalize: true }`. */
|
|
21
|
+
readonly normalized?: NormalizedKey;
|
|
22
|
+
}
|
|
23
|
+
/** Modifier-stripped key shared by Kitty CSI-u and legacy ESC+letter. */
|
|
24
|
+
export interface NormalizedKey {
|
|
25
|
+
name: string;
|
|
26
|
+
shift: boolean;
|
|
27
|
+
alt: boolean;
|
|
28
|
+
ctrl: boolean;
|
|
29
|
+
meta: boolean;
|
|
30
|
+
ch?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface ParseKeysOptions {
|
|
33
|
+
/** Attach a `normalized` field on each event and treat ESC+letter as alt. */
|
|
34
|
+
normalize?: boolean;
|
|
19
35
|
}
|
|
20
36
|
/** Progressive-enhancement bits for the Kitty keyboard protocol. */
|
|
21
37
|
export declare const KITTY_KEYBOARD: {
|
|
@@ -49,15 +65,36 @@ export declare function disableBracketedPaste(): string;
|
|
|
49
65
|
* keyboard releases, bare escape, alt+char, control characters, and
|
|
50
66
|
* printable text. APC (Kitty graphics replies) is skipped.
|
|
51
67
|
*/
|
|
52
|
-
|
|
68
|
+
/**
|
|
69
|
+
* Collapse a KeyEvent into a modifier-stripped shape. Kitty CSI-u events
|
|
70
|
+
* (name `alt+a`, flags set) and legacy `alt+a` names land on the same object.
|
|
71
|
+
*/
|
|
72
|
+
export declare function normalizeKey(event: KeyEvent): NormalizedKey;
|
|
73
|
+
/**
|
|
74
|
+
* Merge a run of events so a bare `escape` followed by a printable letter
|
|
75
|
+
* becomes a single alt+letter NormalizedKey (legacy ESC+char).
|
|
76
|
+
*/
|
|
77
|
+
export declare function normalizeKeys(events: readonly KeyEvent[]): NormalizedKey[];
|
|
78
|
+
export declare function parseKeys(buffer: string, options?: ParseKeysOptions): KeyEvent[];
|
|
53
79
|
/**
|
|
54
80
|
* Incremental key parser: feed raw chunks as they arrive, receive complete
|
|
55
81
|
* key events. Partial escape sequences are held until the next chunk.
|
|
56
82
|
*/
|
|
57
83
|
export declare class KeyParser {
|
|
58
84
|
private pending;
|
|
85
|
+
private readonly options;
|
|
86
|
+
constructor(options?: ParseKeysOptions);
|
|
59
87
|
feed(chunk: string): KeyEvent[];
|
|
60
|
-
/**
|
|
88
|
+
/**
|
|
89
|
+
* Index up to which the buffer can be split without cutting a sequence.
|
|
90
|
+
*
|
|
91
|
+
* Everything before the last ESC is guaranteed free of partial sequences, so
|
|
92
|
+
* the buffer is either parsed whole (the tail is complete) or only the tail
|
|
93
|
+
* is held back. Returning -1 for the whole buffer — as an earlier version
|
|
94
|
+
* did — meant a complete sequence followed by ordinary bytes (e.g.
|
|
95
|
+
* `a ESC [ B b`) stalled the parser until the next read, which looks like
|
|
96
|
+
* frozen input while typing.
|
|
97
|
+
*/
|
|
61
98
|
private safeSplitIndex;
|
|
62
99
|
}
|
|
63
100
|
/** Enter raw mode on a TTY and return a cleanup function. */
|
package/dist/keys.js
CHANGED
|
@@ -41,10 +41,79 @@ const PASTE_END = '\x1b[201~';
|
|
|
41
41
|
* keyboard releases, bare escape, alt+char, control characters, and
|
|
42
42
|
* printable text. APC (Kitty graphics replies) is skipped.
|
|
43
43
|
*/
|
|
44
|
-
|
|
44
|
+
/**
|
|
45
|
+
* Collapse a KeyEvent into a modifier-stripped shape. Kitty CSI-u events
|
|
46
|
+
* (name `alt+a`, flags set) and legacy `alt+a` names land on the same object.
|
|
47
|
+
*/
|
|
48
|
+
export function normalizeKey(event) {
|
|
49
|
+
let name = String(event.name);
|
|
50
|
+
let alt = event.alt === true;
|
|
51
|
+
let ctrl = event.ctrl === true;
|
|
52
|
+
let shift = event.shift === true;
|
|
53
|
+
let meta = event.meta === true;
|
|
54
|
+
if (name.startsWith('ctrl+alt+')) {
|
|
55
|
+
name = name.slice('ctrl+alt+'.length);
|
|
56
|
+
ctrl = true;
|
|
57
|
+
alt = true;
|
|
58
|
+
}
|
|
59
|
+
else if (name.startsWith('ctrl+')) {
|
|
60
|
+
name = name.slice('ctrl+'.length);
|
|
61
|
+
ctrl = true;
|
|
62
|
+
}
|
|
63
|
+
else if (name.startsWith('alt+')) {
|
|
64
|
+
name = name.slice('alt+'.length);
|
|
65
|
+
alt = true;
|
|
66
|
+
}
|
|
67
|
+
else if (name.startsWith('meta+')) {
|
|
68
|
+
name = name.slice('meta+'.length);
|
|
69
|
+
meta = true;
|
|
70
|
+
}
|
|
71
|
+
if (name === 'shift-tab') {
|
|
72
|
+
name = 'tab';
|
|
73
|
+
shift = true;
|
|
74
|
+
}
|
|
75
|
+
return event.ch === undefined
|
|
76
|
+
? { name, shift, alt, ctrl, meta }
|
|
77
|
+
: { name, shift, alt, ctrl, meta, ch: event.ch };
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Merge a run of events so a bare `escape` followed by a printable letter
|
|
81
|
+
* becomes a single alt+letter NormalizedKey (legacy ESC+char).
|
|
82
|
+
*/
|
|
83
|
+
export function normalizeKeys(events) {
|
|
84
|
+
const out = [];
|
|
85
|
+
for (let i = 0; i < events.length; i++) {
|
|
86
|
+
const event = events[i];
|
|
87
|
+
const next = events[i + 1];
|
|
88
|
+
if (event.name === 'escape' && next && isLegacyAltChar(next)) {
|
|
89
|
+
out.push({
|
|
90
|
+
name: next.ch ?? String(next.name),
|
|
91
|
+
shift: next.shift === true,
|
|
92
|
+
alt: true,
|
|
93
|
+
ctrl: next.ctrl === true,
|
|
94
|
+
meta: next.meta === true,
|
|
95
|
+
...(next.ch !== undefined ? { ch: next.ch } : {}),
|
|
96
|
+
});
|
|
97
|
+
i += 1;
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
out.push(normalizeKey(event));
|
|
101
|
+
}
|
|
102
|
+
return out;
|
|
103
|
+
}
|
|
104
|
+
function isLegacyAltChar(event) {
|
|
105
|
+
if (event.alt || event.ctrl || event.meta)
|
|
106
|
+
return false;
|
|
107
|
+
if (event.name === 'paste' || event.name === 'escape')
|
|
108
|
+
return false;
|
|
109
|
+
const ch = event.ch ?? (event.name.length === 1 ? event.name : undefined);
|
|
110
|
+
return ch !== undefined && ch >= ' ' && ch <= '~';
|
|
111
|
+
}
|
|
112
|
+
export function parseKeys(buffer, options) {
|
|
45
113
|
const events = [];
|
|
46
114
|
if (isMouseEvent(buffer))
|
|
47
115
|
return events;
|
|
116
|
+
const asAlt = options?.normalize === true;
|
|
48
117
|
let i = 0;
|
|
49
118
|
while (i < buffer.length) {
|
|
50
119
|
const char = buffer[i];
|
|
@@ -79,11 +148,20 @@ export function parseKeys(buffer) {
|
|
|
79
148
|
break;
|
|
80
149
|
}
|
|
81
150
|
if (rest.startsWith(' ')) {
|
|
82
|
-
|
|
83
|
-
events.push({ name: `alt+${ch}`, ch, alt: true, kind: 'press' });
|
|
151
|
+
events.push({ name: 'alt+space', ch: ' ', alt: true, kind: 'press' });
|
|
84
152
|
i += 2;
|
|
85
153
|
continue;
|
|
86
154
|
}
|
|
155
|
+
// Legacy alt+letter (ESC + printable) when normalize is requested.
|
|
156
|
+
// Default path keeps ESC as its own event so existing consumers hold.
|
|
157
|
+
if (asAlt && rest.length > 0) {
|
|
158
|
+
const ch = rest[0];
|
|
159
|
+
if (ch >= ' ' && ch !== '[' && ch !== 'O') {
|
|
160
|
+
events.push({ name: `alt+${ch}`, ch, alt: true, kind: 'press' });
|
|
161
|
+
i += 2;
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
87
165
|
events.push({ name: 'escape', kind: 'press' });
|
|
88
166
|
i += 1;
|
|
89
167
|
continue;
|
|
@@ -121,6 +199,9 @@ export function parseKeys(buffer) {
|
|
|
121
199
|
events.push({ name: char, ch: char, kind: 'press' });
|
|
122
200
|
i += 1;
|
|
123
201
|
}
|
|
202
|
+
if (options?.normalize) {
|
|
203
|
+
return events.map((event) => ({ ...event, normalized: normalizeKey(event) }));
|
|
204
|
+
}
|
|
124
205
|
return events;
|
|
125
206
|
}
|
|
126
207
|
function parseModField(field) {
|
|
@@ -132,9 +213,13 @@ function parseModField(field) {
|
|
|
132
213
|
shift: (mod & 1) !== 0,
|
|
133
214
|
alt: (mod & 2) !== 0,
|
|
134
215
|
ctrl: (mod & 4) !== 0,
|
|
216
|
+
meta: (mod & 8) !== 0,
|
|
135
217
|
kind,
|
|
136
218
|
};
|
|
137
219
|
}
|
|
220
|
+
function withMeta(event, meta) {
|
|
221
|
+
return meta ? { ...event, meta: true } : event;
|
|
222
|
+
}
|
|
138
223
|
function namedKey(base, mods, ch) {
|
|
139
224
|
let name = base;
|
|
140
225
|
if (mods.ctrl && mods.alt)
|
|
@@ -143,22 +228,32 @@ function namedKey(base, mods, ch) {
|
|
|
143
228
|
name = `ctrl+${base}`;
|
|
144
229
|
else if (mods.alt)
|
|
145
230
|
name = `alt+${base}`;
|
|
146
|
-
|
|
231
|
+
else if (mods.meta)
|
|
232
|
+
name = `meta+${base}`;
|
|
233
|
+
return {
|
|
234
|
+
name,
|
|
235
|
+
ch,
|
|
236
|
+
kind: mods.kind,
|
|
237
|
+
shift: mods.shift,
|
|
238
|
+
alt: mods.alt,
|
|
239
|
+
ctrl: mods.ctrl,
|
|
240
|
+
...(mods.meta ? { meta: true } : {}),
|
|
241
|
+
};
|
|
147
242
|
}
|
|
148
243
|
/** CSI u / functional-key mapping for the Kitty keyboard protocol. */
|
|
149
244
|
function fromKeyCode(code, mods) {
|
|
150
245
|
switch (code) {
|
|
151
246
|
case 27:
|
|
152
|
-
return { name: 'escape', kind: mods.kind, shift: mods.shift, alt: mods.alt, ctrl: mods.ctrl };
|
|
247
|
+
return withMeta({ name: 'escape', kind: mods.kind, shift: mods.shift, alt: mods.alt, ctrl: mods.ctrl }, mods.meta);
|
|
153
248
|
case 13:
|
|
154
|
-
return { name: 'enter', ch: '\r', kind: mods.kind, shift: mods.shift, alt: mods.alt, ctrl: mods.ctrl };
|
|
249
|
+
return withMeta({ name: 'enter', ch: '\r', kind: mods.kind, shift: mods.shift, alt: mods.alt, ctrl: mods.ctrl }, mods.meta);
|
|
155
250
|
case 9:
|
|
156
|
-
return mods.shift
|
|
251
|
+
return withMeta(mods.shift
|
|
157
252
|
? { name: 'shift-tab', kind: mods.kind, shift: true, alt: mods.alt, ctrl: mods.ctrl }
|
|
158
|
-
: { name: 'tab', kind: mods.kind, shift: mods.shift, alt: mods.alt, ctrl: mods.ctrl };
|
|
253
|
+
: { name: 'tab', kind: mods.kind, shift: mods.shift, alt: mods.alt, ctrl: mods.ctrl }, mods.meta);
|
|
159
254
|
case 127:
|
|
160
255
|
case 8:
|
|
161
|
-
return { name: 'backspace', kind: mods.kind, shift: mods.shift, alt: mods.alt, ctrl: mods.ctrl };
|
|
256
|
+
return withMeta({ name: 'backspace', kind: mods.kind, shift: mods.shift, alt: mods.alt, ctrl: mods.ctrl }, mods.meta);
|
|
162
257
|
case 32:
|
|
163
258
|
return namedKey('space', mods, ' ');
|
|
164
259
|
default:
|
|
@@ -184,13 +279,13 @@ function escapeSequence(code, letter) {
|
|
|
184
279
|
return null;
|
|
185
280
|
return fromKeyCode(keyCode, mods);
|
|
186
281
|
}
|
|
187
|
-
const nav = (name) => ({
|
|
282
|
+
const nav = (name) => withMeta({
|
|
188
283
|
name,
|
|
189
284
|
kind: mods.kind,
|
|
190
285
|
shift: mods.shift,
|
|
191
286
|
alt: mods.alt,
|
|
192
287
|
ctrl: mods.ctrl,
|
|
193
|
-
});
|
|
288
|
+
}, mods.meta);
|
|
194
289
|
switch (letter) {
|
|
195
290
|
case 'A':
|
|
196
291
|
return nav('up');
|
|
@@ -205,7 +300,7 @@ function escapeSequence(code, letter) {
|
|
|
205
300
|
case 'F':
|
|
206
301
|
return nav('end');
|
|
207
302
|
case 'Z':
|
|
208
|
-
return { name: 'shift-tab', kind: mods.kind, shift: true, alt: mods.alt, ctrl: mods.ctrl };
|
|
303
|
+
return withMeta({ name: 'shift-tab', kind: mods.kind, shift: true, alt: mods.alt, ctrl: mods.ctrl }, mods.meta);
|
|
209
304
|
case '~': {
|
|
210
305
|
const param = first.split(':')[0] ?? '';
|
|
211
306
|
switch (param) {
|
|
@@ -213,7 +308,7 @@ function escapeSequence(code, letter) {
|
|
|
213
308
|
case '7':
|
|
214
309
|
return nav('home');
|
|
215
310
|
case '2':
|
|
216
|
-
return nav('
|
|
311
|
+
return nav('insert');
|
|
217
312
|
case '3':
|
|
218
313
|
return nav('delete');
|
|
219
314
|
case '4':
|
|
@@ -237,6 +332,10 @@ function escapeSequence(code, letter) {
|
|
|
237
332
|
*/
|
|
238
333
|
export class KeyParser {
|
|
239
334
|
pending = '';
|
|
335
|
+
options;
|
|
336
|
+
constructor(options = {}) {
|
|
337
|
+
this.options = options;
|
|
338
|
+
}
|
|
240
339
|
feed(chunk) {
|
|
241
340
|
this.pending += chunk;
|
|
242
341
|
const safe = this.safeSplitIndex(this.pending);
|
|
@@ -244,52 +343,67 @@ export class KeyParser {
|
|
|
244
343
|
return [];
|
|
245
344
|
const ready = this.pending.slice(0, safe);
|
|
246
345
|
this.pending = this.pending.slice(safe);
|
|
247
|
-
|
|
346
|
+
// Drop mouse reports, but keep any keys that shared the same read —
|
|
347
|
+
// discarding the whole buffer would lose a keystroke typed right after a
|
|
348
|
+
// click or scroll.
|
|
349
|
+
const keysOnly = stripMouseSequences(ready);
|
|
350
|
+
if (keysOnly === '')
|
|
248
351
|
return [];
|
|
249
|
-
return parseKeys(
|
|
352
|
+
return parseKeys(keysOnly, this.options);
|
|
250
353
|
}
|
|
251
|
-
/**
|
|
354
|
+
/**
|
|
355
|
+
* Index up to which the buffer can be split without cutting a sequence.
|
|
356
|
+
*
|
|
357
|
+
* Everything before the last ESC is guaranteed free of partial sequences, so
|
|
358
|
+
* the buffer is either parsed whole (the tail is complete) or only the tail
|
|
359
|
+
* is held back. Returning -1 for the whole buffer — as an earlier version
|
|
360
|
+
* did — meant a complete sequence followed by ordinary bytes (e.g.
|
|
361
|
+
* `a ESC [ B b`) stalled the parser until the next read, which looks like
|
|
362
|
+
* frozen input while typing.
|
|
363
|
+
*/
|
|
252
364
|
safeSplitIndex(text) {
|
|
253
365
|
const esc = text.lastIndexOf('\x1b');
|
|
254
366
|
if (esc < 0)
|
|
255
367
|
return text.length;
|
|
256
368
|
const rest = text.slice(esc + 1);
|
|
257
|
-
//
|
|
258
|
-
|
|
259
|
-
return esc + 2;
|
|
260
|
-
if (rest.startsWith('_')) {
|
|
261
|
-
return rest.includes('\x1b\\') ? text.length : -1;
|
|
262
|
-
}
|
|
369
|
+
// Bracketed paste: hold the whole buffer until the terminator arrives,
|
|
370
|
+
// since the payload may contain anything (including ESC).
|
|
263
371
|
if (text.includes('\x1b[200~')) {
|
|
264
372
|
const lastStart = text.lastIndexOf('\x1b[200~');
|
|
265
373
|
const lastEnd = text.lastIndexOf('\x1b[201~');
|
|
266
374
|
if (lastEnd < lastStart)
|
|
267
375
|
return -1;
|
|
268
376
|
}
|
|
269
|
-
|
|
270
|
-
return /^\[<\d+;\d+;\d+[Mm]$/.test(rest) ? text.length : -1;
|
|
271
|
-
}
|
|
272
|
-
if (rest.startsWith('[') && /\d+;\d+;\d+M$/.test(rest)) {
|
|
273
|
-
return text.length;
|
|
274
|
-
}
|
|
275
|
-
if (rest.startsWith('M')) {
|
|
276
|
-
return /^M[\x20-\x7f]{3}$/.test(rest) ? text.length : -1;
|
|
277
|
-
}
|
|
278
|
-
if (rest.length === 0) {
|
|
279
|
-
return esc + 1;
|
|
280
|
-
}
|
|
281
|
-
if (rest[0] === '[') {
|
|
282
|
-
return /^\[[0-9;:?]*[\x40-\x7e]$/.test(rest) ? text.length : -1;
|
|
283
|
-
}
|
|
284
|
-
if (rest[0] === 'O') {
|
|
285
|
-
return /^O[\x40-\x7e]$/.test(rest) ? text.length : -1;
|
|
286
|
-
}
|
|
287
|
-
if (rest[0] === ' ') {
|
|
288
|
-
return rest.length >= 2 ? text.length : -1;
|
|
289
|
-
}
|
|
290
|
-
return esc + 1;
|
|
377
|
+
return tailIsComplete(rest) ? text.length : esc;
|
|
291
378
|
}
|
|
292
379
|
}
|
|
380
|
+
/** SGR 1006 and X10 mouse reports, removed before key parsing. */
|
|
381
|
+
const MOUSE_SEQUENCE = /\x1b\[(?:<\d+;\d+;\d+[Mm]|M[\x20-\x7f]{3})/g;
|
|
382
|
+
/** Remove mouse reports so keys sharing the same read are still delivered. */
|
|
383
|
+
function stripMouseSequences(text) {
|
|
384
|
+
return text.replace(MOUSE_SEQUENCE, '');
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Whether the text following an ESC forms a complete sequence. Anything after
|
|
388
|
+
* a complete sequence is ordinary input and safe to parse in the same pass.
|
|
389
|
+
*/
|
|
390
|
+
function tailIsComplete(rest) {
|
|
391
|
+
if (rest.length === 0)
|
|
392
|
+
return true; // a lone ESC is the escape key
|
|
393
|
+
const first = rest[0];
|
|
394
|
+
if (first === '\\')
|
|
395
|
+
return true; // ST terminator of an APC
|
|
396
|
+
if (first === '_')
|
|
397
|
+
return false; // APC still open (its ST would be the last ESC)
|
|
398
|
+
if (rest.startsWith('[M'))
|
|
399
|
+
return rest.length >= 5; // X10 mouse: ESC [ M + 3 bytes
|
|
400
|
+
// CSI: parameter/intermediate bytes (0x20-0x3f) then a final byte (0x40-0x7e).
|
|
401
|
+
if (first === '[')
|
|
402
|
+
return /^\[[\x20-\x3f]*[\x40-\x7e]/.test(rest);
|
|
403
|
+
if (first === 'O')
|
|
404
|
+
return /^O[\x40-\x7e]/.test(rest);
|
|
405
|
+
return true; // ESC + printable = alt+key
|
|
406
|
+
}
|
|
293
407
|
/** Enter raw mode on a TTY and return a cleanup function. */
|
|
294
408
|
export function enterRawMode(input) {
|
|
295
409
|
if (!input.isTTY)
|
package/dist/keys.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"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"}
|
package/dist/mouse.js
CHANGED
|
@@ -51,9 +51,12 @@ export function isMouseEvent(buffer) {
|
|
|
51
51
|
* shift/alt/ctrl modifiers, and 64/65 are the wheel.
|
|
52
52
|
*/
|
|
53
53
|
function decode(code, x, y, release) {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
const
|
|
54
|
+
// Modifiers are OR-ed on top of the button/wheel code, so mask them off
|
|
55
|
+
// before classifying: shift+wheel-up arrives as 64|4 = 68, not 64.
|
|
56
|
+
const base = code & ~(0b100 | 0b1000 | 0b10000);
|
|
57
|
+
const wheel = wheelDirection(base);
|
|
58
|
+
const button = base & 0b11;
|
|
59
|
+
const motion = (base & 0b100000) !== 0;
|
|
57
60
|
return {
|
|
58
61
|
x,
|
|
59
62
|
y,
|
|
@@ -70,10 +73,11 @@ function decode(code, x, y, release) {
|
|
|
70
73
|
};
|
|
71
74
|
}
|
|
72
75
|
function wheelDirection(code) {
|
|
73
|
-
// 64 = wheel up, 65 = wheel down (button codes 4 and 5).
|
|
74
|
-
|
|
76
|
+
// 64 = wheel up, 65 = wheel down (button codes 4 and 5). 128/129 are the
|
|
77
|
+
// horizontal wheel; they are reported as up/down rather than a button press.
|
|
78
|
+
if (code === 64 || code === 128)
|
|
75
79
|
return 'up';
|
|
76
|
-
if (code === 65)
|
|
80
|
+
if (code === 65 || code === 129)
|
|
77
81
|
return 'down';
|
|
78
82
|
return undefined;
|
|
79
83
|
}
|
package/dist/mouse.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mouse.js","sourceRoot":"","sources":["../src/mouse.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"mouse.js","sourceRoot":"","sources":["../src/mouse.ts"],"names":[],"mappings":"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"}
|
package/dist/osc.d.ts
CHANGED
|
@@ -17,6 +17,17 @@ export declare const osc: {
|
|
|
17
17
|
* the legacy xterm OSC 777 form so at least one lands.
|
|
18
18
|
*/
|
|
19
19
|
notify(stream: OscWriter, title: string, message: string): void;
|
|
20
|
+
/**
|
|
21
|
+
* OSC 9;1 progress. `percent` is clamped to 0–100.
|
|
22
|
+
* Terminals that understand the 9.1 variant treat this as a determinate
|
|
23
|
+
* progress indicator; others ignore it.
|
|
24
|
+
*/
|
|
25
|
+
progress(stream: OscWriter, percent: number): void;
|
|
26
|
+
/**
|
|
27
|
+
* OSC 9;2 bell variant. A notification-channel bell, distinct from
|
|
28
|
+
* the ASCII BEL used by `osc.notify`.
|
|
29
|
+
*/
|
|
30
|
+
bell(stream: OscWriter): void;
|
|
20
31
|
/** OSC 8 hyperlink: `text` renders as a clickable link to `uri`. */
|
|
21
32
|
hyperlink(stream: OscWriter, uri: string, text: string): void;
|
|
22
33
|
/** Mark the start of a prompt line (OSC 133 A). */
|
|
@@ -25,6 +36,8 @@ export declare const osc: {
|
|
|
25
36
|
promptEnd(stream: OscWriter): void;
|
|
26
37
|
/** Mark command output end, with exit status (OSC 133 D;status). */
|
|
27
38
|
commandEnd(stream: OscWriter, status?: number): void;
|
|
39
|
+
/** OSC 7: announce the working directory so the terminal tracks cwd. */
|
|
40
|
+
workingDir(stream: OscWriter, cwd: string): void;
|
|
28
41
|
};
|
|
29
42
|
/**
|
|
30
43
|
* Wrap a stream with OSC capability guards: emitters become no-ops when the
|
|
@@ -33,10 +46,15 @@ export declare const osc: {
|
|
|
33
46
|
export declare function guardedOsc(stream: OscWriter, caps: {
|
|
34
47
|
osc9: boolean;
|
|
35
48
|
osc133: boolean;
|
|
49
|
+
osc7: boolean;
|
|
36
50
|
}): {
|
|
37
51
|
title: (title: string) => void;
|
|
38
52
|
notify: (title: string, message: string) => void;
|
|
53
|
+
/** No dedicated 9.1/9.2 capability — always emit. */
|
|
54
|
+
progress: (percent: number) => void;
|
|
55
|
+
bell: () => void;
|
|
39
56
|
hyperlink: (uri: string, text: string) => void;
|
|
57
|
+
workingDir: (cwd: string) => void;
|
|
40
58
|
promptStart: () => void;
|
|
41
59
|
promptEnd: () => void;
|
|
42
60
|
commandEnd: (status?: number) => void;
|
package/dist/osc.js
CHANGED
|
@@ -28,6 +28,22 @@ export const osc = {
|
|
|
28
28
|
stream.write(oscSequence(9, `${title}${SEP}${message}`));
|
|
29
29
|
stream.write(oscSequence(777, `notify;${title};${message}`));
|
|
30
30
|
},
|
|
31
|
+
/**
|
|
32
|
+
* OSC 9;1 progress. `percent` is clamped to 0–100.
|
|
33
|
+
* Terminals that understand the 9.1 variant treat this as a determinate
|
|
34
|
+
* progress indicator; others ignore it.
|
|
35
|
+
*/
|
|
36
|
+
progress(stream, percent) {
|
|
37
|
+
const clamped = Math.max(0, Math.min(100, Math.round(percent)));
|
|
38
|
+
stream.write(oscSequence(9, `1;${clamped}`));
|
|
39
|
+
},
|
|
40
|
+
/**
|
|
41
|
+
* OSC 9;2 bell variant. A notification-channel bell, distinct from
|
|
42
|
+
* the ASCII BEL used by `osc.notify`.
|
|
43
|
+
*/
|
|
44
|
+
bell(stream) {
|
|
45
|
+
stream.write(oscSequence(9, '2'));
|
|
46
|
+
},
|
|
31
47
|
/** OSC 8 hyperlink: `text` renders as a clickable link to `uri`. */
|
|
32
48
|
hyperlink(stream, uri, text) {
|
|
33
49
|
stream.write(hyperlinkWrap(uri, text));
|
|
@@ -44,6 +60,10 @@ export const osc = {
|
|
|
44
60
|
commandEnd(stream, status = 0) {
|
|
45
61
|
stream.write(oscSequence(133, `D;${status}`));
|
|
46
62
|
},
|
|
63
|
+
/** OSC 7: announce the working directory so the terminal tracks cwd. */
|
|
64
|
+
workingDir(stream, cwd) {
|
|
65
|
+
stream.write(oscSequence(7, `file://${encodeURI(cwd)}`));
|
|
66
|
+
},
|
|
47
67
|
};
|
|
48
68
|
/**
|
|
49
69
|
* Wrap a stream with OSC capability guards: emitters become no-ops when the
|
|
@@ -56,7 +76,14 @@ export function guardedOsc(stream, caps) {
|
|
|
56
76
|
if (caps.osc9)
|
|
57
77
|
osc.notify(stream, title, message);
|
|
58
78
|
},
|
|
79
|
+
/** No dedicated 9.1/9.2 capability — always emit. */
|
|
80
|
+
progress: (percent) => osc.progress(stream, percent),
|
|
81
|
+
bell: () => osc.bell(stream),
|
|
59
82
|
hyperlink: (uri, text) => osc.hyperlink(stream, uri, text),
|
|
83
|
+
workingDir: (cwd) => {
|
|
84
|
+
if (caps.osc7)
|
|
85
|
+
osc.workingDir(stream, cwd);
|
|
86
|
+
},
|
|
60
87
|
promptStart: () => {
|
|
61
88
|
if (caps.osc133)
|
|
62
89
|
osc.promptStart(stream);
|
package/dist/osc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"osc.js","sourceRoot":"","sources":["../src/osc.ts"],"names":[],"mappings":"AAAA,MAAM,GAAG,GAAG,MAAM,CAAC;AACnB,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,uBAAuB;AAE3C,SAAS,WAAW,CAAC,IAAY,EAAE,OAAe;IAChD,OAAO,QAAQ,IAAI,IAAI,OAAO,GAAG,GAAG,EAAE,CAAC;AACzC,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,IAAY;IACrD,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC5B,OAAO,WAAW,GAAG,SAAS,IAAI,gBAAgB,CAAC;AACrD,CAAC;AAMD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,yCAAyC;IACzC,KAAK,CAAC,MAAiB,EAAE,KAAa;QACpC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IACtC,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,MAAiB,EAAE,KAAa,EAAE,OAAe;QACtD,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,GAAG,KAAK,GAAG,GAAG,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC;QACzD,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,oEAAoE;IACpE,SAAS,CAAC,MAAiB,EAAE,GAAW,EAAE,IAAY;QACpD,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,mDAAmD;IACnD,WAAW,CAAC,MAAiB;QAC3B,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,mEAAmE;IACnE,SAAS,CAAC,MAAiB;QACzB,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,oEAAoE;IACpE,UAAU,CAAC,MAAiB,EAAE,MAAM,GAAW,CAAC;QAC9C,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,MAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"osc.js","sourceRoot":"","sources":["../src/osc.ts"],"names":[],"mappings":"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"}
|
package/dist/size.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export interface TerminalSize {
|
|
2
|
+
cols: number;
|
|
3
|
+
rows: number;
|
|
4
|
+
}
|
|
5
|
+
export interface PollTerminalSizeOptions {
|
|
6
|
+
/** Injectable `process.stdout.columns`. */
|
|
7
|
+
columns?: number;
|
|
8
|
+
/** Injectable `process.stdout.rows`. */
|
|
9
|
+
rows?: number;
|
|
10
|
+
/** Optional ioctl(TIOCGWINSZ)-style probe. Return null/undefined to skip. */
|
|
11
|
+
ioctl?: () => TerminalSize | null | undefined;
|
|
12
|
+
/**
|
|
13
|
+
* Optional `tput` probe. Called with `cols` and `lines`. Return a positive
|
|
14
|
+
* number (or numeric string) for each; null/undefined skips this source.
|
|
15
|
+
*/
|
|
16
|
+
tput?: (name: 'cols' | 'lines') => number | string | null | undefined;
|
|
17
|
+
/** Environment map used for `COLUMNS` / `LINES` (defaults to `process.env`). */
|
|
18
|
+
env?: NodeJS.ProcessEnv;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Best-effort terminal size. Tries (in order):
|
|
22
|
+
* explicit / `process.stdout` columns+rows, an injectable ioctl, an injectable
|
|
23
|
+
* `tput cols` / `tput lines`, `COLUMNS`/`LINES` in `env`, then 80×24.
|
|
24
|
+
*/
|
|
25
|
+
export declare function pollTerminalSize(options?: PollTerminalSizeOptions): TerminalSize;
|
package/dist/size.js
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
function positive(value) {
|
|
2
|
+
const n = typeof value === 'number' ? value : typeof value === 'string' ? Number.parseInt(value, 10) : Number.NaN;
|
|
3
|
+
if (!Number.isFinite(n) || n <= 0)
|
|
4
|
+
return undefined;
|
|
5
|
+
return Math.floor(n);
|
|
6
|
+
}
|
|
7
|
+
function pair(cols, rows) {
|
|
8
|
+
const c = positive(cols);
|
|
9
|
+
const r = positive(rows);
|
|
10
|
+
if (c === undefined || r === undefined)
|
|
11
|
+
return undefined;
|
|
12
|
+
return { cols: c, rows: r };
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Best-effort terminal size. Tries (in order):
|
|
16
|
+
* explicit / `process.stdout` columns+rows, an injectable ioctl, an injectable
|
|
17
|
+
* `tput cols` / `tput lines`, `COLUMNS`/`LINES` in `env`, then 80×24.
|
|
18
|
+
*/
|
|
19
|
+
export function pollTerminalSize(options = {}) {
|
|
20
|
+
const stdout = pair(options.columns ?? process.stdout.columns, options.rows ?? process.stdout.rows);
|
|
21
|
+
if (stdout)
|
|
22
|
+
return stdout;
|
|
23
|
+
if (options.ioctl) {
|
|
24
|
+
try {
|
|
25
|
+
const size = options.ioctl();
|
|
26
|
+
const fromIoctl = pair(size?.cols, size?.rows);
|
|
27
|
+
if (fromIoctl)
|
|
28
|
+
return fromIoctl;
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
// ioctl is best-effort
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
if (options.tput) {
|
|
35
|
+
try {
|
|
36
|
+
const fromTput = pair(options.tput('cols'), options.tput('lines'));
|
|
37
|
+
if (fromTput)
|
|
38
|
+
return fromTput;
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
// tput is best-effort
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
const env = options.env ?? process.env;
|
|
45
|
+
const fromEnv = pair(env['COLUMNS'], env['LINES']);
|
|
46
|
+
if (fromEnv)
|
|
47
|
+
return fromEnv;
|
|
48
|
+
return { cols: 80, rows: 24 };
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=size.js.map
|
package/dist/size.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"size.js","sourceRoot":"","sources":["../src/size.ts"],"names":[],"mappings":"AAqBA,SAAS,QAAQ,CAAC,KAAc;IAC9B,MAAM,CAAC,GACL,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;IAC1G,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IACpD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,IAAI,CAAC,IAAa,EAAE,IAAa;IACxC,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACzB,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACzB,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACzD,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAC9B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAO,GAA4B,EAAE;IACpE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpG,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAC/C,IAAI,SAAS;gBAAE,OAAO,SAAS,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,uBAAuB;QACzB,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YACnE,IAAI,QAAQ;gBAAE,OAAO,QAAQ,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,sBAAsB;QACxB,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IACnD,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAE5B,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AAChC,CAAC"}
|
package/dist/theme-query.d.ts
CHANGED
|
@@ -23,6 +23,8 @@ export interface ThemeQueryResult {
|
|
|
23
23
|
export interface ThemeQueryInput {
|
|
24
24
|
readonly isTTY?: boolean;
|
|
25
25
|
readonly isRaw?: boolean;
|
|
26
|
+
/** Whether the stream currently has no active read. */
|
|
27
|
+
isPaused?(): boolean;
|
|
26
28
|
setRawMode?(enabled: boolean): unknown;
|
|
27
29
|
resume?(): unknown;
|
|
28
30
|
pause?(): unknown;
|
package/dist/theme-query.js
CHANGED
|
@@ -57,7 +57,7 @@ export function relativeLuminance(color) {
|
|
|
57
57
|
const c = raw / 255;
|
|
58
58
|
return c <= 0.03928 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;
|
|
59
59
|
};
|
|
60
|
-
return
|
|
60
|
+
return 0.2126 * channel(color.r) + 0.7152 * channel(color.g) + 0.0722 * channel(color.b);
|
|
61
61
|
}
|
|
62
62
|
/**
|
|
63
63
|
* Classify a background as light or dark. `threshold` is the relative
|
|
@@ -84,8 +84,7 @@ export async function queryTerminalTheme(options = {}) {
|
|
|
84
84
|
}
|
|
85
85
|
let buffer = '';
|
|
86
86
|
let found = {};
|
|
87
|
-
const isSettled = () => found.background !== undefined &&
|
|
88
|
-
(!includeForeground || found.foreground !== undefined);
|
|
87
|
+
const isSettled = () => found.background !== undefined && (!includeForeground || found.foreground !== undefined);
|
|
89
88
|
let done;
|
|
90
89
|
const finished = new Promise((resolve) => {
|
|
91
90
|
done = resolve;
|
|
@@ -116,7 +115,10 @@ export async function queryTerminalTheme(options = {}) {
|
|
|
116
115
|
};
|
|
117
116
|
const canRaw = stdin.setRawMode !== undefined;
|
|
118
117
|
const wasRaw = stdin.isRaw === true;
|
|
119
|
-
|
|
118
|
+
// Only start (and later stop) the flow ourselves: if the caller already had
|
|
119
|
+
// stdin flowing, leaving it paused afterwards would break their reads.
|
|
120
|
+
const wasPaused = stdin.isPaused?.() ?? true;
|
|
121
|
+
const didResume = stdin.resume !== undefined && wasPaused;
|
|
120
122
|
const timer = setTimeout(settle, timeoutMs);
|
|
121
123
|
stdin.on('data', listener);
|
|
122
124
|
if (canRaw && !wasRaw)
|
package/dist/theme-query.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme-query.js","sourceRoot":"","sources":["../src/theme-query.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"theme-query.js","sourceRoot":"","sources":["../src/theme-query.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { queryTerminalTheme, type ThemeQueryResult } from './theme-query.js';
|
|
2
|
+
/** Minimal process surface used to subscribe to SIGWINCH. */
|
|
3
|
+
export interface WatchThemeProcess {
|
|
4
|
+
on(event: string, listener: () => void): unknown;
|
|
5
|
+
off(event: string, listener: () => void): unknown;
|
|
6
|
+
}
|
|
7
|
+
export interface WatchThemeOptions {
|
|
8
|
+
/** Theme query. Defaults to `queryTerminalTheme`. Injectable in tests. */
|
|
9
|
+
query?: typeof queryTerminalTheme;
|
|
10
|
+
/** Called when a query reports different foreground/background colors. */
|
|
11
|
+
onChange: (theme: ThemeQueryResult) => void;
|
|
12
|
+
/** Process to listen on (default `process`). Injectable in tests. */
|
|
13
|
+
process?: WatchThemeProcess;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Re-query OSC 10/11 whenever the terminal is resized (SIGWINCH). Many
|
|
17
|
+
* terminals only restyle on a window change, so this is the practical
|
|
18
|
+
* hook for a live theme listener. Returns an unsubscribe function.
|
|
19
|
+
*/
|
|
20
|
+
export declare function watchTheme(options: WatchThemeOptions): () => void;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { queryTerminalTheme } from './theme-query.js';
|
|
2
|
+
function rgbEqual(a, b) {
|
|
3
|
+
if (a === undefined && b === undefined)
|
|
4
|
+
return true;
|
|
5
|
+
if (a === undefined || b === undefined)
|
|
6
|
+
return false;
|
|
7
|
+
return a.r === b.r && a.g === b.g && a.b === b.b;
|
|
8
|
+
}
|
|
9
|
+
/** True when `next` has colors that differ from `previous`. */
|
|
10
|
+
function colorsChanged(previous, next) {
|
|
11
|
+
if (!next.ok)
|
|
12
|
+
return false;
|
|
13
|
+
if (previous === undefined)
|
|
14
|
+
return true;
|
|
15
|
+
return !rgbEqual(previous.background, next.background) || !rgbEqual(previous.foreground, next.foreground);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Re-query OSC 10/11 whenever the terminal is resized (SIGWINCH). Many
|
|
19
|
+
* terminals only restyle on a window change, so this is the practical
|
|
20
|
+
* hook for a live theme listener. Returns an unsubscribe function.
|
|
21
|
+
*/
|
|
22
|
+
export function watchTheme(options) {
|
|
23
|
+
const query = options.query ?? queryTerminalTheme;
|
|
24
|
+
const proc = options.process ?? process;
|
|
25
|
+
let previous;
|
|
26
|
+
let inflight = false;
|
|
27
|
+
const onWinch = () => {
|
|
28
|
+
if (inflight)
|
|
29
|
+
return;
|
|
30
|
+
inflight = true;
|
|
31
|
+
void Promise.resolve(query()).then((result) => {
|
|
32
|
+
if (colorsChanged(previous, result)) {
|
|
33
|
+
options.onChange(result);
|
|
34
|
+
}
|
|
35
|
+
previous = result;
|
|
36
|
+
inflight = false;
|
|
37
|
+
}, () => {
|
|
38
|
+
inflight = false;
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
proc.on('SIGWINCH', onWinch);
|
|
42
|
+
return () => {
|
|
43
|
+
proc.off('SIGWINCH', onWinch);
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=theme-watch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-watch.js","sourceRoot":"","sources":["../src/theme-watch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAmC,MAAM,kBAAkB,CAAC;AAiBvF,SAAS,QAAQ,CAAC,CAAkB,EAAE,CAAkB;IACtD,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACpD,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACrD,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,+DAA+D;AAC/D,SAAS,aAAa,CAAC,QAAsC,EAAE,IAAsB;IACnF,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,KAAK,CAAC;IAC3B,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAC5G,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,OAA0B;IACnD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,kBAAkB,CAAC;IAClD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC;IACxC,IAAI,QAAsC,CAAC;IAC3C,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,MAAM,OAAO,GAAG,GAAS,EAAE;QACzB,IAAI,QAAQ;YAAE,OAAO;QACrB,QAAQ,GAAG,IAAI,CAAC;QAChB,KAAK,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAChC,CAAC,MAAM,EAAE,EAAE;YACT,IAAI,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;gBACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC3B,CAAC;YACD,QAAQ,GAAG,MAAM,CAAC;YAClB,QAAQ,GAAG,KAAK,CAAC;QACnB,CAAC,EACD,GAAG,EAAE;YACH,QAAQ,GAAG,KAAK,CAAC;QACnB,CAAC,CACF,CAAC;IACJ,CAAC,CAAC;IAEF,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC7B,OAAO,GAAG,EAAE;QACV,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mudah-cli/terminal",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Terminal capability detection, OSC emitters, Kitty graphics, Kitty keyboard (key-up), and key/mouse parsing.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
|
+
"author": "Mudah Contributors",
|
|
8
|
+
"homepage": "https://github.com/thesimonharms/mudah#readme",
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "git+https://github.com/thesimonharms/mudah.git",
|
|
12
|
+
"directory": "packages/terminal"
|
|
13
|
+
},
|
|
14
|
+
"keywords": [
|
|
15
|
+
"terminal",
|
|
16
|
+
"ansi",
|
|
17
|
+
"osc",
|
|
18
|
+
"kitty",
|
|
19
|
+
"capabilities",
|
|
20
|
+
"typescript"
|
|
21
|
+
],
|
|
7
22
|
"engines": {
|
|
8
23
|
"node": ">=26"
|
|
9
24
|
},
|