@peteanderson/ansi 2.3.1 → 3.1.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/README.md +16 -12
- package/dist/cjs/ansi.d.ts +13 -11
- package/dist/cjs/ansi.d.ts.map +1 -1
- package/dist/cjs/ansi.js +7 -4
- package/dist/cjs/ansi.js.map +1 -1
- package/dist/cjs/cursor.d.ts +30 -0
- package/dist/cjs/cursor.d.ts.map +1 -0
- package/dist/cjs/cursor.js +70 -0
- package/dist/cjs/cursor.js.map +1 -0
- package/dist/cjs/erase.d.ts.map +1 -1
- package/dist/cjs/erase.js +8 -7
- package/dist/cjs/erase.js.map +1 -1
- package/dist/cjs/features/build.d.ts +1 -1
- package/dist/cjs/features/build.d.ts.map +1 -1
- package/dist/cjs/features/build.js +4 -4
- package/dist/cjs/features/build.js.map +1 -1
- package/dist/cjs/features/detect.js +1 -1
- package/dist/cjs/features/detect.js.map +1 -1
- package/dist/cjs/features/features.js +4 -4
- package/dist/cjs/features/features.js.map +1 -1
- package/dist/cjs/features/types.d.ts +1 -1
- package/dist/cjs/features/types.d.ts.map +1 -1
- package/dist/cjs/index.d.ts +12 -10
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/scroll.d.ts +2 -2
- package/dist/cjs/scroll.d.ts.map +1 -1
- package/dist/cjs/scroll.js +5 -4
- package/dist/cjs/scroll.js.map +1 -1
- package/dist/cjs/sgr/color/channel.d.ts.map +1 -1
- package/dist/cjs/sgr/color/channel.js +2 -1
- package/dist/cjs/sgr/color/channel.js.map +1 -1
- package/dist/cjs/sgr/format-builder.d.ts.map +1 -1
- package/dist/cjs/sgr/format-builder.js +3 -2
- package/dist/cjs/sgr/format-builder.js.map +1 -1
- package/dist/cjs/sgr/reset.d.ts.map +1 -1
- package/dist/cjs/sgr/reset.js +2 -1
- package/dist/cjs/sgr/reset.js.map +1 -1
- package/dist/cjs/simplify/simplify.d.ts.map +1 -1
- package/dist/cjs/simplify/simplify.js +2 -1
- package/dist/cjs/simplify/simplify.js.map +1 -1
- package/dist/cjs/slice.d.ts +4 -0
- package/dist/cjs/slice.d.ts.map +1 -1
- package/dist/cjs/slice.js +1 -0
- package/dist/cjs/slice.js.map +1 -1
- package/dist/cjs/split-at.d.ts +12 -0
- package/dist/cjs/split-at.d.ts.map +1 -0
- package/dist/cjs/split-at.js +26 -0
- package/dist/cjs/split-at.js.map +1 -0
- package/dist/cjs/terminal.d.ts.map +1 -1
- package/dist/cjs/terminal.js +13 -12
- package/dist/cjs/terminal.js.map +1 -1
- package/dist/cjs/types.d.ts +4 -2
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/utils.d.ts +5 -0
- package/dist/cjs/utils.d.ts.map +1 -0
- package/dist/cjs/utils.js +14 -0
- package/dist/cjs/utils.js.map +1 -0
- package/dist/esm/ansi.d.ts +13 -11
- package/dist/esm/ansi.d.ts.map +1 -1
- package/dist/esm/ansi.js +6 -4
- package/dist/esm/ansi.js.map +1 -1
- package/dist/esm/cursor.d.ts +30 -0
- package/dist/esm/cursor.d.ts.map +1 -0
- package/dist/esm/{caret.js → cursor.js} +21 -19
- package/dist/esm/cursor.js.map +1 -0
- package/dist/esm/erase.d.ts.map +1 -1
- package/dist/esm/erase.js +8 -7
- package/dist/esm/erase.js.map +1 -1
- package/dist/esm/features/build.d.ts +1 -1
- package/dist/esm/features/build.d.ts.map +1 -1
- package/dist/esm/features/build.js +4 -4
- package/dist/esm/features/build.js.map +1 -1
- package/dist/esm/features/detect.js +1 -1
- package/dist/esm/features/detect.js.map +1 -1
- package/dist/esm/features/features.js +4 -4
- package/dist/esm/features/features.js.map +1 -1
- package/dist/esm/features/types.d.ts +1 -1
- package/dist/esm/features/types.d.ts.map +1 -1
- package/dist/esm/scroll.d.ts +2 -2
- package/dist/esm/scroll.d.ts.map +1 -1
- package/dist/esm/scroll.js +5 -4
- package/dist/esm/scroll.js.map +1 -1
- package/dist/esm/sgr/color/channel.d.ts.map +1 -1
- package/dist/esm/sgr/color/channel.js +2 -1
- package/dist/esm/sgr/color/channel.js.map +1 -1
- package/dist/esm/sgr/format-builder.d.ts.map +1 -1
- package/dist/esm/sgr/format-builder.js +3 -2
- package/dist/esm/sgr/format-builder.js.map +1 -1
- package/dist/esm/sgr/reset.d.ts.map +1 -1
- package/dist/esm/sgr/reset.js +2 -1
- package/dist/esm/sgr/reset.js.map +1 -1
- package/dist/esm/simplify/simplify.d.ts.map +1 -1
- package/dist/esm/simplify/simplify.js +2 -1
- package/dist/esm/simplify/simplify.js.map +1 -1
- package/dist/esm/slice.d.ts +4 -0
- package/dist/esm/slice.d.ts.map +1 -1
- package/dist/esm/slice.js +1 -1
- package/dist/esm/slice.js.map +1 -1
- package/dist/esm/split-at.d.ts +12 -0
- package/dist/esm/split-at.d.ts.map +1 -0
- package/dist/esm/split-at.js +23 -0
- package/dist/esm/split-at.js.map +1 -0
- package/dist/esm/terminal.d.ts.map +1 -1
- package/dist/esm/terminal.js +13 -12
- package/dist/esm/terminal.js.map +1 -1
- package/dist/esm/types.d.ts +4 -2
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/utils.d.ts +5 -0
- package/dist/esm/utils.d.ts.map +1 -0
- package/dist/esm/utils.js +8 -0
- package/dist/esm/utils.js.map +1 -0
- package/package.json +1 -1
- package/src/ansi.ts +6 -4
- package/src/cursor.ts +80 -0
- package/src/erase.ts +9 -7
- package/src/features/build.ts +4 -4
- package/src/features/detect.ts +1 -1
- package/src/features/features.ts +4 -4
- package/src/features/types.ts +1 -1
- package/src/scroll.ts +6 -4
- package/src/sgr/color/channel.ts +2 -1
- package/src/sgr/format-builder.ts +3 -2
- package/src/sgr/reset.ts +3 -1
- package/src/simplify/simplify.ts +2 -1
- package/src/slice.ts +1 -1
- package/src/split-at.ts +32 -0
- package/src/terminal.ts +14 -12
- package/src/types.ts +4 -2
- package/src/utils.ts +15 -0
- package/dist/cjs/caret.d.ts +0 -30
- package/dist/cjs/caret.d.ts.map +0 -1
- package/dist/cjs/caret.js +0 -68
- package/dist/cjs/caret.js.map +0 -1
- package/dist/esm/caret.d.ts +0 -30
- package/dist/esm/caret.d.ts.map +0 -1
- package/dist/esm/caret.js.map +0 -1
- package/src/caret.ts +0 -80
|
@@ -14,12 +14,12 @@ export function getFeatures(...args) {
|
|
|
14
14
|
return tty(features);
|
|
15
15
|
if (features instanceof Socket)
|
|
16
16
|
return pipe();
|
|
17
|
-
const { colorDepth, style,
|
|
17
|
+
const { colorDepth, style, cursor, erase, scroll, terminal } = features;
|
|
18
18
|
stream ??= process.stdout;
|
|
19
19
|
if (colorDepth)
|
|
20
|
-
return build(stream.isTTY, colorDepth, style,
|
|
20
|
+
return build(stream.isTTY, colorDepth, style, cursor, erase, scroll, terminal);
|
|
21
21
|
if (stream.isTTY)
|
|
22
|
-
return build(true, getColorDepth(stream), style,
|
|
23
|
-
return build(false, getColorDepth(), style,
|
|
22
|
+
return build(true, getColorDepth(stream), style, cursor, erase, scroll, terminal);
|
|
23
|
+
return build(false, getColorDepth(), style, cursor, erase, scroll, terminal);
|
|
24
24
|
}
|
|
25
25
|
//# sourceMappingURL=features.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features.js","sourceRoot":"","sources":["../../../src/features/features.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAiC,UAAU,CAAC;AAC3D,OAAO,EAAC,WAAW,EAAC,MAA4B,UAAU,CAAC;AAC3D,OAAO,EAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAC,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAC,aAAa,EAAC,MAA0B,UAAU,CAAC;AAI3D,MAAM,UAAU,WAAW,CAAC,GAAG,IAAU;IACxC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAE9B,IAAI,OAAO,QAAQ,KAAK,SAAS;QAChC,OAAO,OAAO,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAE5D,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAC/B,OAAO,MAAM,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAE3D,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAC5C,QAAQ,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEvC,IAAI,QAAQ,YAAY,WAAW;QAClC,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEtB,IAAI,QAAQ,YAAY,MAAM;QAC7B,OAAO,IAAI,EAAE,CAAC;IAEf,MAAM,EAAC,UAAU,EAAE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"features.js","sourceRoot":"","sources":["../../../src/features/features.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAiC,UAAU,CAAC;AAC3D,OAAO,EAAC,WAAW,EAAC,MAA4B,UAAU,CAAC;AAC3D,OAAO,EAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAC,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAC,aAAa,EAAC,MAA0B,UAAU,CAAC;AAI3D,MAAM,UAAU,WAAW,CAAC,GAAG,IAAU;IACxC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAE9B,IAAI,OAAO,QAAQ,KAAK,SAAS;QAChC,OAAO,OAAO,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAE5D,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAC/B,OAAO,MAAM,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAE3D,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAC5C,QAAQ,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEvC,IAAI,QAAQ,YAAY,WAAW;QAClC,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEtB,IAAI,QAAQ,YAAY,MAAM;QAC7B,OAAO,IAAI,EAAE,CAAC;IAEf,MAAM,EAAC,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAC,GAAG,QAAQ,CAAC;IAEtE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC;IAE1B,IAAI,UAAU;QACb,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAEhF,IAAI,MAAM,CAAC,KAAK;QACf,OAAO,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAEnF,OAAO,KAAK,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC9E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/features/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAErC,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AAE5C,MAAM,WAAW,QAAQ;IACxB,UAAU,EAAG,UAAU,CAAC;IACxB,KAAK,EAAQ,OAAO,CAAC;IACrB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/features/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAErC,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AAE5C,MAAM,WAAW,QAAQ;IACxB,UAAU,EAAG,UAAU,CAAC;IACxB,KAAK,EAAQ,OAAO,CAAC;IACrB,MAAM,EAAO,OAAO,CAAC;IACrB,KAAK,EAAQ,OAAO,CAAC;IACrB,MAAM,EAAO,OAAO,CAAC;IACrB,QAAQ,EAAK,OAAO,CAAC;CACrB;AAED,MAAM,MAAM,IAAI,GACb,CAAC,OAAO,EAAM,OAAO,EAAY,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,GAC7D,CAAC,UAAU,EAAG,UAAU,EAAS,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,GAC7D,CAAC,QAAQ,EAAK,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,GAC7D,CAAC,MAAM,EAAO,MAAM,CAAC,GACrB,CAAC,MAAM,CAAC,EAAM,MAAM,CAAC,WAAW,CAAC,CAAC"}
|
package/dist/esm/scroll.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
declare const scroll: {
|
|
2
|
-
up: (lines?: number) => string;
|
|
3
|
-
down: (lines?: number) => string;
|
|
2
|
+
up: (lines?: number | undefined) => string;
|
|
3
|
+
down: (lines?: number | undefined) => string;
|
|
4
4
|
};
|
|
5
5
|
export type Scroll = typeof scroll;
|
|
6
6
|
export declare const makeScroll: (enabled?: boolean) => Scroll;
|
package/dist/esm/scroll.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scroll.d.ts","sourceRoot":"","sources":["../../src/scroll.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"scroll.d.ts","sourceRoot":"","sources":["../../src/scroll.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,MAAM;;;CAGX,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC;AAOnC,eAAO,MAAM,UAAU,GAAI,iBAAc,KAAG,MAAqC,CAAC"}
|
package/dist/esm/scroll.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import { count, noop } from "./utils.js";
|
|
1
2
|
const scroll = {
|
|
2
|
-
up: (
|
|
3
|
-
down: (
|
|
3
|
+
up: count("S"),
|
|
4
|
+
down: count("T"),
|
|
4
5
|
};
|
|
5
6
|
const disabled = {
|
|
6
|
-
up:
|
|
7
|
-
down:
|
|
7
|
+
up: noop,
|
|
8
|
+
down: noop,
|
|
8
9
|
};
|
|
9
10
|
export const makeScroll = (enabled = true) => enabled ? scroll : disabled;
|
|
10
11
|
//# sourceMappingURL=scroll.js.map
|
package/dist/esm/scroll.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scroll.js","sourceRoot":"","sources":["../../src/scroll.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"scroll.js","sourceRoot":"","sources":["../../src/scroll.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,IAAI,EAAC,MAAM,SAAS,CAAC;AAEpC,MAAM,MAAM,GAAG;IACd,EAAE,EAAK,KAAK,CAAmB,GAAG,CAAC;IACnC,IAAI,EAAG,KAAK,CAAmB,GAAG,CAAC;CACnC,CAAC;AAIF,MAAM,QAAQ,GAAW;IACxB,EAAE,EAAK,IAAI;IACX,IAAI,EAAG,IAAI;CACX,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAO,GAAG,IAAI,EAAU,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../../../src/sgr/color/channel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../../../src/sgr/color/channel.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,UAAU,EAAC,MAA6C,gBAAgB,CAAC;AACtF,OAAO,KAAK,EAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAC,MAAM,UAAU,CAAC;AAahF,wBAAgB,WAAW,CAC1B,IAAI,EAAY,WAAW,CAAC,QAAQ,CAAC,EACrC,aAAa,EAAG,aAAa,EAC7B,KAAK,EAAW,KAAK,EACrB,UAAU,EAAM,UAAU,EAC1B,OAAO,EAAS,QAAQ,GACtB,OAAO,CAmBT"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { csi } from "../../utils.js";
|
|
1
2
|
import { lazy } from "../lazy.js";
|
|
2
3
|
import { buildContext } from "./context.js";
|
|
3
4
|
import { makeRGB, makeX256 } from "./rgb.js";
|
|
@@ -17,7 +18,7 @@ export function makeChannel(keys, makeFormatter, style, colorDepth, channel) {
|
|
|
17
18
|
const rtn = {
|
|
18
19
|
rgb: makeRGB(ctx),
|
|
19
20
|
x256: makeX256(ctx),
|
|
20
|
-
default: colorDepth > 1 ?
|
|
21
|
+
default: colorDepth > 1 ? csi(close, "m") : "",
|
|
21
22
|
};
|
|
22
23
|
for (let i = 0; i < colors.length; i++) {
|
|
23
24
|
const color = colors[i];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel.js","sourceRoot":"","sources":["../../../../src/sgr/color/channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAmB,SAAS,CAAC;AAC1C,OAAO,EAAC,YAAY,EAAC,MAAW,WAAW,CAAC;AAC5C,OAAO,EAAC,OAAO,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAKxC,MAAM,MAAM,GAAG;IACd,OAAO;IACP,KAAK;IACL,OAAO;IACP,QAAQ;IACR,MAAM;IACN,SAAS;IACT,MAAM;IACN,OAAO;CACE,CAAC;AAEX,MAAM,UAAU,WAAW,CAC1B,IAAqC,EACrC,aAA6B,EAC7B,KAAqB,EACrB,UAA0B,EAC1B,OAAwB;IAExB,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAC1E,MAAM,EAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAC,GAAG,GAAG,CAAC;IAEzC,MAAM,GAAG,GAAG;QACX,GAAG,EAAO,OAAO,CAAC,GAAG,CAAC;QACtB,IAAI,EAAM,QAAQ,CAAC,GAAG,CAAC;QACvB,OAAO,EAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"channel.js","sourceRoot":"","sources":["../../../../src/sgr/color/channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAoB,aAAa,CAAC;AAC9C,OAAO,EAAC,IAAI,EAAC,MAAmB,SAAS,CAAC;AAC1C,OAAO,EAAC,YAAY,EAAC,MAAW,WAAW,CAAC;AAC5C,OAAO,EAAC,OAAO,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAKxC,MAAM,MAAM,GAAG;IACd,OAAO;IACP,KAAK;IACL,OAAO;IACP,QAAQ;IACR,MAAM;IACN,SAAS;IACT,MAAM;IACN,OAAO;CACE,CAAC;AAEX,MAAM,UAAU,WAAW,CAC1B,IAAqC,EACrC,aAA6B,EAC7B,KAAqB,EACrB,UAA0B,EAC1B,OAAwB;IAExB,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAC1E,MAAM,EAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAC,GAAG,GAAG,CAAC;IAEzC,MAAM,GAAG,GAAG;QACX,GAAG,EAAO,OAAO,CAAC,GAAG,CAAC;QACtB,IAAI,EAAM,QAAQ,CAAC,GAAG,CAAC;QACvB,OAAO,EAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;KACpC,CAAC;IAEb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,KAAK,GAAS,MAAM,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,WAAW,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAEvE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;QAClD,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,GAAG,CAAC;AACZ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format-builder.d.ts","sourceRoot":"","sources":["../../../src/sgr/format-builder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"format-builder.d.ts","sourceRoot":"","sources":["../../../src/sgr/format-builder.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,YAAY,EAAsC,aAAa,EAAC,MAAM,SAAS,CAAC;AAY7F,eAAO,MAAM,iBAAiB,GAAI,WAAW,YAAY,KAAG,aAkC1D,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { define } from "@peteanderson/props";
|
|
2
|
+
import { csi } from "../utils.js";
|
|
2
3
|
import { combineCodes } from "./combine.js";
|
|
3
4
|
import { lazy } from "./lazy.js";
|
|
4
5
|
const codeSequence = (code) => Array.isArray(code) ? code.join(';') : code;
|
|
@@ -9,8 +10,8 @@ export const makeFormatBuilder = (makeChain) => function format(keys, open, clos
|
|
|
9
10
|
const empty = Array.isArray(open) && !open.length;
|
|
10
11
|
const openCode = empty ? "" : codeSequence(open);
|
|
11
12
|
const closeCode = empty ? "" : codeSequence(close);
|
|
12
|
-
const openSequence = empty ? "" :
|
|
13
|
-
const closeSequence = empty ? "" :
|
|
13
|
+
const openSequence = empty ? "" : csi(openCode, "m");
|
|
14
|
+
const closeSequence = empty ? "" : csi(closeCode, "m");
|
|
14
15
|
const reopenCode = reset && !empty ? `${closeCode};${openCode}` : openCode;
|
|
15
16
|
const rxClose = new RegExp(`(?<start>\\x1b\\[(?:\\d+;)*)${closeCode}(?<end>(?:;\\d+)*m)`, "g");
|
|
16
17
|
const replace = `$<start>${reopenCode}$<end>`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format-builder.js","sourceRoot":"","sources":["../../../src/sgr/format-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAY,qBAAqB,CAAC;AACjD,OAAO,EAAC,YAAY,EAAC,MAAM,WAAW,CAAC;AACvC,OAAO,EAAC,IAAI,EAAC,MAAc,QAAQ,CAAC;AAIpC,MAAM,YAAY,GAAG,CAAC,IAAU,EAAmB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAElG,MAAM,KAAK,GAAG,CACb,SAAyB,EACzB,IAA8B,EAC9B,UAAuB,EACR,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI;IAC5B,CAAC,CAAC,UAA0B;IAC5B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;AAElE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,SAAuB,EAAiB,EAAE,CAC3E,SAAS,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK;IACvC,MAAM,KAAK,GAAW,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IAC1D,MAAM,QAAQ,GAAQ,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACtD,MAAM,SAAS,GAAO,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACvD,MAAM,YAAY,GAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"format-builder.js","sourceRoot":"","sources":["../../../src/sgr/format-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reset.d.ts","sourceRoot":"","sources":["../../../src/sgr/reset.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reset.d.ts","sourceRoot":"","sources":["../../../src/sgr/reset.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,GAAI,iBAAc,KAAG,MAAiC,CAAC"}
|
package/dist/esm/sgr/reset.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reset.js","sourceRoot":"","sources":["../../../src/sgr/reset.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAO,GAAG,IAAI,EAAU,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"reset.js","sourceRoot":"","sources":["../../../src/sgr/reset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,UAAU,CAAC;AAE7B,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAO,GAAG,IAAI,EAAU,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simplify.d.ts","sourceRoot":"","sources":["../../../src/simplify/simplify.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"simplify.d.ts","sourceRoot":"","sources":["../../../src/simplify/simplify.ts"],"names":[],"mappings":"AAIA,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAwB7C;AAED,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { rxSGR } from "../patterns.js";
|
|
2
|
+
import { csi } from "../utils.js";
|
|
2
3
|
import { State } from "./state.js";
|
|
3
4
|
export function simplify(text) {
|
|
4
5
|
// `.split` doesn't modify `lastIndex`, so no clone is necessary here.
|
|
@@ -15,7 +16,7 @@ export function simplify(text) {
|
|
|
15
16
|
}
|
|
16
17
|
const newCodes = state.update(codes);
|
|
17
18
|
if (newCodes.length)
|
|
18
|
-
result +=
|
|
19
|
+
result += csi(newCodes.join(";"), "m");
|
|
19
20
|
result += chunk;
|
|
20
21
|
}
|
|
21
22
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simplify.js","sourceRoot":"","sources":["../../../src/simplify/simplify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,aAAa,CAAC;AAClC,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC;AAE9B,MAAM,UAAU,QAAQ,CAAC,IAAY;IACpC,sEAAsE;IACtE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAEhC,MAAM,KAAK,GAAI,IAAI,KAAK,EAAE,CAAC;IAC3B,IAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAExB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAI,CAAC;QACpC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACjE,IAAM,KAAK,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QAEzB,OAAO,CAAC,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YACnC,6DAA6D;YAC7D,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAClE,KAAK,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QACpB,CAAC;QAED,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,QAAQ,CAAC,MAAM;YAClB,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"simplify.js","sourceRoot":"","sources":["../../../src/simplify/simplify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,aAAa,CAAC;AAClC,OAAO,EAAC,GAAG,EAAC,MAAQ,UAAU,CAAC;AAC/B,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC;AAE9B,MAAM,UAAU,QAAQ,CAAC,IAAY;IACpC,sEAAsE;IACtE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAEhC,MAAM,KAAK,GAAI,IAAI,KAAK,EAAE,CAAC;IAC3B,IAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAExB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAI,CAAC;QACpC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACjE,IAAM,KAAK,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QAEzB,OAAO,CAAC,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YACnC,6DAA6D;YAC7D,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAClE,KAAK,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QACpB,CAAC;QAED,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,QAAQ,CAAC,MAAM;YAClB,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC"}
|
package/dist/esm/slice.d.ts
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
export declare function scanCSI(text: string, fromStringIndex: number, visibleCount: number): {
|
|
2
|
+
index: number;
|
|
3
|
+
length: number;
|
|
4
|
+
};
|
|
1
5
|
/**
|
|
2
6
|
* Return a slice of the given text, counting only visible characters (i.e. ignoring ANSI escape
|
|
3
7
|
* codes). The returned slice will include any ANSI escape codes from within the slice. In addition,
|
package/dist/esm/slice.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slice.d.ts","sourceRoot":"","sources":["../../src/slice.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"slice.d.ts","sourceRoot":"","sources":["../../src/slice.ts"],"names":[],"mappings":"AAIA,wBAAgB,OAAO,CACtB,IAAI,EAAc,MAAM,EACxB,eAAe,EAAG,MAAM,EACxB,YAAY,EAAM,MAAM,GACtB;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,CAsBjC;AAOD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CA6BtE;AAED,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC"}
|
package/dist/esm/slice.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { rxCSI, rxSGR } from "./patterns.js";
|
|
2
2
|
import { simplify } from "./simplify/index.js";
|
|
3
3
|
import { visibleLength } from "./strip.js";
|
|
4
|
-
function scanCSI(text, fromStringIndex, visibleCount) {
|
|
4
|
+
export function scanCSI(text, fromStringIndex, visibleCount) {
|
|
5
5
|
// We intentionally mutate `lastIndex` here, so we need a clone.
|
|
6
6
|
const rx = new RegExp(rxCSI);
|
|
7
7
|
let length = 0;
|
package/dist/esm/slice.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slice.js","sourceRoot":"","sources":["../../src/slice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,KAAK,EAAC,MAAO,YAAY,CAAC;AACzC,OAAO,EAAC,QAAQ,EAAC,MAAW,YAAY,CAAC;AACzC,OAAO,EAAC,aAAa,EAAC,MAAM,SAAS,CAAC;AAEtC,
|
|
1
|
+
{"version":3,"file":"slice.js","sourceRoot":"","sources":["../../src/slice.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Split a string into two parts at the given visible index (i.e., the given visible character,
|
|
3
|
+
* ignoring ANSI escape codes). The returned strings will include any ANSI escape codes from within
|
|
4
|
+
* each slice.
|
|
5
|
+
*
|
|
6
|
+
* Note that unlike {@linkcode slice}, this function does not include any SGR codes (m) from before
|
|
7
|
+
* or after the split point. If you need to preserve the terminal state before and after the split,
|
|
8
|
+
* use {@linkcode slice} instead.
|
|
9
|
+
*/
|
|
10
|
+
export declare function splitAt(text: string, visibleIndex: number): [start: string, end: string];
|
|
11
|
+
export type SplitAt = typeof splitAt;
|
|
12
|
+
//# sourceMappingURL=split-at.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"split-at.d.ts","sourceRoot":"","sources":["../../src/split-at.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAgBxF;AAED,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { scanCSI } from "./slice.js";
|
|
2
|
+
/**
|
|
3
|
+
* Split a string into two parts at the given visible index (i.e., the given visible character,
|
|
4
|
+
* ignoring ANSI escape codes). The returned strings will include any ANSI escape codes from within
|
|
5
|
+
* each slice.
|
|
6
|
+
*
|
|
7
|
+
* Note that unlike {@linkcode slice}, this function does not include any SGR codes (m) from before
|
|
8
|
+
* or after the split point. If you need to preserve the terminal state before and after the split,
|
|
9
|
+
* use {@linkcode slice} instead.
|
|
10
|
+
*/
|
|
11
|
+
export function splitAt(text, visibleIndex) {
|
|
12
|
+
if (!visibleIndex)
|
|
13
|
+
return ["", text];
|
|
14
|
+
if (visibleIndex < 0)
|
|
15
|
+
throw new Error("visibleIndex must be non-negative");
|
|
16
|
+
if (visibleIndex > text.length)
|
|
17
|
+
return [text, ""];
|
|
18
|
+
const { index } = scanCSI(text, 0, visibleIndex);
|
|
19
|
+
if (index === text.length)
|
|
20
|
+
return [text, ""];
|
|
21
|
+
return [text.slice(0, index), text.slice(index)];
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=split-at.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"split-at.js","sourceRoot":"","sources":["../../src/split-at.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,SAAS,CAAC;AAIhC;;;;;;;;GAQG;AACH,MAAM,UAAU,OAAO,CAAC,IAAY,EAAE,YAAoB;IACzD,IAAI,CAAC,YAAY;QAChB,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAEnB,IAAI,YAAY,GAAG,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAEtD,IAAI,YAAY,GAAG,IAAI,CAAC,MAAM;QAC7B,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAEnB,MAAM,EAAC,KAAK,EAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;IAE/C,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM;QACxB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAEnB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAClD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../../src/terminal.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../../src/terminal.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;CAwBb,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC;AA4BvC,eAAO,MAAM,YAAY,GAAI,iBAAc,KAAG,QAAyC,CAAC"}
|
package/dist/esm/terminal.js
CHANGED
|
@@ -1,23 +1,24 @@
|
|
|
1
|
+
import { csi } from "./utils.js";
|
|
1
2
|
const terminal = {
|
|
2
3
|
focusReporting: {
|
|
3
|
-
enable: "
|
|
4
|
-
disable: "
|
|
5
|
-
focus: "
|
|
6
|
-
blur: "
|
|
4
|
+
enable: csi("?1004h"),
|
|
5
|
+
disable: csi("?1004l"),
|
|
6
|
+
focus: csi("I"),
|
|
7
|
+
blur: csi("O"),
|
|
7
8
|
},
|
|
8
9
|
alternateScreen: {
|
|
9
|
-
enable: "
|
|
10
|
-
disable: "
|
|
10
|
+
enable: csi("?1049h"),
|
|
11
|
+
disable: csi("?1049l"),
|
|
11
12
|
legacy: {
|
|
12
|
-
enable: "
|
|
13
|
-
disable: "
|
|
13
|
+
enable: csi("?47h"),
|
|
14
|
+
disable: csi("?47l"),
|
|
14
15
|
},
|
|
15
16
|
},
|
|
16
17
|
bracketedPaste: {
|
|
17
|
-
enable: "
|
|
18
|
-
disable: "
|
|
19
|
-
start: "
|
|
20
|
-
end: "
|
|
18
|
+
enable: csi("?2004h"),
|
|
19
|
+
disable: csi("?2004l"),
|
|
20
|
+
start: csi("200~"),
|
|
21
|
+
end: csi("201~"),
|
|
21
22
|
},
|
|
22
23
|
};
|
|
23
24
|
const disabled = {
|
package/dist/esm/terminal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../src/terminal.ts"],"names":[],"mappings":"AAAA,MAAM,QAAQ,GAAG;IAChB,cAAc,EAAE;QACf,MAAM,EAAI,
|
|
1
|
+
{"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../src/terminal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,SAAS,CAAC;AAE5B,MAAM,QAAQ,GAAG;IAChB,cAAc,EAAE;QACf,MAAM,EAAI,GAAG,CAAC,QAAQ,CAAC;QACvB,OAAO,EAAG,GAAG,CAAC,QAAQ,CAAC;QACvB,KAAK,EAAK,GAAG,CAAC,GAAG,CAAC;QAClB,IAAI,EAAM,GAAG,CAAC,GAAG,CAAC;KAClB;IAED,eAAe,EAAE;QAChB,MAAM,EAAI,GAAG,CAAC,QAAQ,CAAC;QACvB,OAAO,EAAG,GAAG,CAAC,QAAQ,CAAC;QAEvB,MAAM,EAAE;YACP,MAAM,EAAI,GAAG,CAAC,MAAM,CAAC;YACrB,OAAO,EAAG,GAAG,CAAC,MAAM,CAAC;SACrB;KACD;IAED,cAAc,EAAE;QACf,MAAM,EAAI,GAAG,CAAC,QAAQ,CAAC;QACvB,OAAO,EAAG,GAAG,CAAC,QAAQ,CAAC;QACvB,KAAK,EAAK,GAAG,CAAC,MAAM,CAAC;QACrB,GAAG,EAAO,GAAG,CAAC,MAAM,CAAC;KACrB;CACD,CAAC;AAIF,MAAM,QAAQ,GAAa;IAC1B,cAAc,EAAE;QACf,MAAM,EAAI,EAAE;QACZ,OAAO,EAAG,EAAE;QACZ,KAAK,EAAK,EAAE;QACZ,IAAI,EAAM,EAAE;KACZ;IAED,eAAe,EAAE;QAChB,MAAM,EAAI,EAAE;QACZ,OAAO,EAAG,EAAE;QAEZ,MAAM,EAAE;YACP,MAAM,EAAI,EAAE;YACZ,OAAO,EAAG,EAAE;SACZ;KACD;IAED,cAAc,EAAE;QACf,MAAM,EAAI,EAAE;QACZ,OAAO,EAAG,EAAE;QACZ,KAAK,EAAK,EAAE;QACZ,GAAG,EAAO,EAAE;KACZ;CACD,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAO,GAAG,IAAI,EAAY,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC"}
|
package/dist/esm/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Cursor } from "./cursor.js";
|
|
2
2
|
import type { Erase } from "./erase.js";
|
|
3
3
|
import type { Features } from "./features/index.js";
|
|
4
4
|
import type { PadEnd, PadStart } from "./pad.js";
|
|
@@ -6,10 +6,11 @@ import type { Scroll } from "./scroll.js";
|
|
|
6
6
|
import type { SGR } from "./sgr/index.js";
|
|
7
7
|
import type { Simplify } from "./simplify/index.js";
|
|
8
8
|
import type { Slice } from "./slice.js";
|
|
9
|
+
import type { SplitAt } from "./split-at.js";
|
|
9
10
|
import type { Sanitize, Strip, VisibleLength } from "./strip.js";
|
|
10
11
|
import type { Terminal } from "./terminal.js";
|
|
11
12
|
export type Ansi = SGR & {
|
|
12
|
-
|
|
13
|
+
cursor: Cursor;
|
|
13
14
|
erase: Erase;
|
|
14
15
|
scroll: Scroll;
|
|
15
16
|
terminal: Terminal;
|
|
@@ -19,6 +20,7 @@ export type Ansi = SGR & {
|
|
|
19
20
|
visibleLength: VisibleLength;
|
|
20
21
|
sanitize: Sanitize;
|
|
21
22
|
slice: Slice;
|
|
23
|
+
splitAt: SplitAt;
|
|
22
24
|
simplify: Simplify;
|
|
23
25
|
features: Features;
|
|
24
26
|
};
|
package/dist/esm/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAA8B,UAAU,CAAC;AAC7D,OAAO,KAAK,EAAC,KAAK,EAAC,MAA+B,SAAS,CAAC;AAC5D,OAAO,KAAK,EAAC,QAAQ,EAAC,MAA4B,YAAY,CAAC;AAC/D,OAAO,KAAK,EAAC,MAAM,EAAE,QAAQ,EAAC,MAAoB,OAAO,CAAC;AAC1D,OAAO,KAAK,EAAC,MAAM,EAAC,MAA8B,UAAU,CAAC;AAC7D,OAAO,KAAK,EAAC,GAAG,EAAC,MAAiC,OAAO,CAAC;AAC1D,OAAO,KAAK,EAAC,QAAQ,EAAC,MAA4B,YAAY,CAAC;AAC/D,OAAO,KAAK,EAAC,KAAK,EAAC,MAA+B,SAAS,CAAC;AAC5D,OAAO,KAAK,EAAC,OAAO,EAAC,MAA6B,YAAY,CAAC;AAC/D,OAAO,KAAK,EAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAC,MAAM,SAAS,CAAC;AAC5D,OAAO,KAAK,EAAC,QAAQ,EAAC,MAA4B,YAAY,CAAC;AAE/D,MAAM,MAAM,IAAI,GAAG,GAAG,GAAG;IACxB,MAAM,EAAK,MAAM,CAAC;IAClB,KAAK,EAAM,KAAK,CAAC;IACjB,MAAM,EAAK,MAAM,CAAC;IAClB,QAAQ,EAAG,QAAQ,CAAC;IAEpB,MAAM,EAAK,MAAM,CAAC;IAClB,QAAQ,EAAG,QAAQ,CAAC;IAEpB,KAAK,EAAW,KAAK,CAAC;IACtB,aAAa,EAAG,aAAa,CAAC;IAC9B,QAAQ,EAAQ,QAAQ,CAAC;IACzB,KAAK,EAAW,KAAK,CAAC;IACtB,OAAO,EAAS,OAAO,CAAC;IACxB,QAAQ,EAAQ,QAAQ,CAAC;IAEzB,QAAQ,EAAG,QAAQ,CAAC;CACpB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function csi(command: string): string;
|
|
2
|
+
export declare function csi(params: string | number | undefined, command: string): string;
|
|
3
|
+
export declare const count: <Param extends [number?] = [count?: number]>(code: string) => (...args: Param) => string;
|
|
4
|
+
export declare const noop: () => string;
|
|
5
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;AAC7C,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;AAQlF,eAAO,MAAM,KAAK,GAAI,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,EAC/D,MAAM,MAAM,KACV,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,MACmE,CAAC;AAE3F,eAAO,MAAM,IAAI,cAAW,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export function csi(...args) {
|
|
2
|
+
const command = args.pop();
|
|
3
|
+
const params = args.pop();
|
|
4
|
+
return `\x1b[${params === undefined ? "" : params}${command}`;
|
|
5
|
+
}
|
|
6
|
+
export const count = (code) => (count) => count === 0 ? "" : csi(count === 1 ? undefined : count, code);
|
|
7
|
+
export const noop = () => "";
|
|
8
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,GAAG,CAAC,GAAG,IAAsD;IAC5E,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAY,CAAC;IACrC,MAAM,MAAM,GAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IAE3B,OAAO,QAAQ,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC;AAC/D,CAAC;AAED,MAAM,CAAC,MAAM,KAAK,GAAG,CACpB,IAAY,EACiB,EAAE,CAC/B,CAAC,KAAc,EAAU,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAE3F,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC"}
|
package/package.json
CHANGED
package/src/ansi.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {makeCursor} from "./cursor";
|
|
2
2
|
import {makeErase} from "./erase";
|
|
3
3
|
import {getFeatures} from "./features";
|
|
4
4
|
import {padEnd, padStart} from "./pad";
|
|
@@ -6,6 +6,7 @@ import {makeScroll} from "./scroll";
|
|
|
6
6
|
import {makeSGR} from "./sgr";
|
|
7
7
|
import {simplify} from "./simplify";
|
|
8
8
|
import {slice} from "./slice";
|
|
9
|
+
import {splitAt} from "./split-at";
|
|
9
10
|
import {sanitize, strip, visibleLength} from "./strip";
|
|
10
11
|
import {makeTerminal} from "./terminal";
|
|
11
12
|
|
|
@@ -18,7 +19,7 @@ export function makeAnsi(...args: Args): Ansi {
|
|
|
18
19
|
return {
|
|
19
20
|
...makeSGR(features),
|
|
20
21
|
|
|
21
|
-
|
|
22
|
+
cursor : makeCursor(features.cursor),
|
|
22
23
|
erase : makeErase(features.erase),
|
|
23
24
|
scroll : makeScroll(features.scroll),
|
|
24
25
|
|
|
@@ -32,6 +33,7 @@ export function makeAnsi(...args: Args): Ansi {
|
|
|
32
33
|
sanitize,
|
|
33
34
|
slice,
|
|
34
35
|
simplify,
|
|
36
|
+
splitAt,
|
|
35
37
|
|
|
36
38
|
features,
|
|
37
39
|
};
|
|
@@ -39,9 +41,9 @@ export function makeAnsi(...args: Args): Ansi {
|
|
|
39
41
|
|
|
40
42
|
export const ansi = makeAnsi();
|
|
41
43
|
|
|
42
|
-
export const {fg, bg, style, reset,
|
|
44
|
+
export const {fg, bg, style, reset, cursor, erase, scroll, terminal} = ansi;
|
|
43
45
|
|
|
44
|
-
export {padEnd, padStart, strip, visibleLength}
|
|
46
|
+
export {padEnd, padStart, splitAt, strip, visibleLength}
|
|
45
47
|
|
|
46
48
|
export default Object.assign(
|
|
47
49
|
Object.defineProperty(makeAnsi.bind(undefined), "name", {value: "ansi"}),
|
package/src/cursor.ts
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import {csi, count as move, noop} from "./utils";
|
|
2
|
+
|
|
3
|
+
const cursor = {
|
|
4
|
+
up : move("A"),
|
|
5
|
+
down : move("B"),
|
|
6
|
+
forward : move("C"),
|
|
7
|
+
backward : move("D"),
|
|
8
|
+
nextLine : move("E"),
|
|
9
|
+
prevLine : move("F"),
|
|
10
|
+
|
|
11
|
+
// Don't use `move`/`count` here, because it will output an empty string if `x` is `0`, but the
|
|
12
|
+
// terminal accepts `\x1b[0G` and will process it the same as `\x1b[1G`/`x1b[G`. Also, the
|
|
13
|
+
// parameter for `move`/`count` is optional, but the parameter for `x` is required.
|
|
14
|
+
x: (x: number) => csi(x, "G"),
|
|
15
|
+
|
|
16
|
+
// These are the old VT100 codes, but they're widely supported by old and new terminals. The
|
|
17
|
+
// newer VT220 codes are standardized by ECMA and ISO, and are also widely supported, but might
|
|
18
|
+
// not work in some older terminals. The VT220 codes are:
|
|
19
|
+
//
|
|
20
|
+
// ```
|
|
21
|
+
// save : csi("s"),
|
|
22
|
+
// restore : csi("u"),
|
|
23
|
+
// ```
|
|
24
|
+
save : "\x1b7",
|
|
25
|
+
restore : "\x1b8",
|
|
26
|
+
|
|
27
|
+
hide : csi("?25l"),
|
|
28
|
+
show : csi("?25h"),
|
|
29
|
+
|
|
30
|
+
position: {
|
|
31
|
+
get: csi("6n"),
|
|
32
|
+
set: (x: number, y: number): string => csi(`${y};${x}H`),
|
|
33
|
+
},
|
|
34
|
+
|
|
35
|
+
shape: {
|
|
36
|
+
steadyBlock : csi("2 q"),
|
|
37
|
+
steadyBar : csi("6 q"),
|
|
38
|
+
steadyUnderline : csi("4 q"),
|
|
39
|
+
blinkingBlock : csi("1 q"),
|
|
40
|
+
blinkingBar : csi("5 q"),
|
|
41
|
+
blinkingUnderline : csi("3 q"),
|
|
42
|
+
default : csi("0 q"),
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
export type Cursor = typeof cursor;
|
|
47
|
+
|
|
48
|
+
const disabled: Cursor = {
|
|
49
|
+
up : noop,
|
|
50
|
+
down : noop,
|
|
51
|
+
forward : noop,
|
|
52
|
+
backward : noop,
|
|
53
|
+
nextLine : noop,
|
|
54
|
+
prevLine : noop,
|
|
55
|
+
|
|
56
|
+
x: noop,
|
|
57
|
+
|
|
58
|
+
save : "",
|
|
59
|
+
restore : "",
|
|
60
|
+
|
|
61
|
+
hide : "",
|
|
62
|
+
show : "",
|
|
63
|
+
|
|
64
|
+
position: {
|
|
65
|
+
get: "",
|
|
66
|
+
set: noop,
|
|
67
|
+
},
|
|
68
|
+
|
|
69
|
+
shape: {
|
|
70
|
+
steadyBlock : "",
|
|
71
|
+
steadyBar : "",
|
|
72
|
+
steadyUnderline : "",
|
|
73
|
+
blinkingBlock : "",
|
|
74
|
+
blinkingBar : "",
|
|
75
|
+
blinkingUnderline : "",
|
|
76
|
+
default : "",
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
export const makeCursor = (enabled = true): Cursor => enabled ? cursor : disabled;
|
package/src/erase.ts
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
|
+
import {csi} from "./utils";
|
|
2
|
+
|
|
1
3
|
const erase = {
|
|
2
4
|
line: {
|
|
3
|
-
toStart : "
|
|
4
|
-
toEnd : "
|
|
5
|
-
full : "
|
|
5
|
+
toStart : csi("1K"),
|
|
6
|
+
toEnd : csi("0K"),
|
|
7
|
+
full : csi("2K"),
|
|
6
8
|
},
|
|
7
9
|
screen: {
|
|
8
|
-
toStart : "
|
|
9
|
-
toEnd : "
|
|
10
|
-
full : "
|
|
11
|
-
scrollback : "
|
|
10
|
+
toStart : csi("1J"),
|
|
11
|
+
toEnd : csi("0J"),
|
|
12
|
+
full : csi("2J"),
|
|
13
|
+
scrollback : csi("3J"),
|
|
12
14
|
},
|
|
13
15
|
};
|
|
14
16
|
|
package/src/features/build.ts
CHANGED
|
@@ -15,25 +15,25 @@ export function build(
|
|
|
15
15
|
isTTY : boolean,
|
|
16
16
|
colorDepth : ColorDepth,
|
|
17
17
|
style? : boolean,
|
|
18
|
-
|
|
18
|
+
cursor? : boolean,
|
|
19
19
|
erase? : boolean,
|
|
20
20
|
scroll? : boolean,
|
|
21
21
|
terminal? : boolean,
|
|
22
22
|
): Features {
|
|
23
23
|
if (
|
|
24
24
|
style !== undefined &&
|
|
25
|
-
|
|
25
|
+
cursor !== undefined &&
|
|
26
26
|
erase !== undefined &&
|
|
27
27
|
scroll !== undefined &&
|
|
28
28
|
terminal !== undefined
|
|
29
29
|
)
|
|
30
|
-
return {colorDepth: normalizeColorDepth(colorDepth), style,
|
|
30
|
+
return {colorDepth: normalizeColorDepth(colorDepth), style, cursor, erase, scroll, terminal};
|
|
31
31
|
|
|
32
32
|
const support = detectFeatureSupport(isTTY, colorDepth);
|
|
33
33
|
return {
|
|
34
34
|
colorDepth : normalizeColorDepth(colorDepth),
|
|
35
35
|
style : style ?? support.style,
|
|
36
|
-
|
|
36
|
+
cursor : cursor ?? support.cursor,
|
|
37
37
|
erase : erase ?? support.erase,
|
|
38
38
|
scroll : scroll ?? support.scroll,
|
|
39
39
|
terminal : terminal ?? support.terminal,
|
package/src/features/detect.ts
CHANGED
package/src/features/features.ts
CHANGED
|
@@ -23,15 +23,15 @@ export function getFeatures(...args: Args): Features {
|
|
|
23
23
|
if (features instanceof Socket)
|
|
24
24
|
return pipe();
|
|
25
25
|
|
|
26
|
-
const {colorDepth, style,
|
|
26
|
+
const {colorDepth, style, cursor, erase, scroll, terminal} = features;
|
|
27
27
|
|
|
28
28
|
stream ??= process.stdout;
|
|
29
29
|
|
|
30
30
|
if (colorDepth)
|
|
31
|
-
return build(stream.isTTY, colorDepth, style,
|
|
31
|
+
return build(stream.isTTY, colorDepth, style, cursor, erase, scroll, terminal);
|
|
32
32
|
|
|
33
33
|
if (stream.isTTY)
|
|
34
|
-
return build(true, getColorDepth(stream), style,
|
|
34
|
+
return build(true, getColorDepth(stream), style, cursor, erase, scroll, terminal);
|
|
35
35
|
|
|
36
|
-
return build(false, getColorDepth(), style,
|
|
36
|
+
return build(false, getColorDepth(), style, cursor, erase, scroll, terminal);
|
|
37
37
|
}
|