@peteanderson/ansi 3.2.0 → 3.4.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 +15 -0
- package/dist/cjs/ansi.d.ts +4 -1
- package/dist/cjs/ansi.d.ts.map +1 -1
- package/dist/cjs/ansi.js +4 -2
- package/dist/cjs/ansi.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 +17 -3
- package/dist/cjs/features/build.js.map +1 -1
- package/dist/cjs/features/detect.d.ts.map +1 -1
- package/dist/cjs/features/detect.js +2 -0
- 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 +2 -0
- package/dist/cjs/features/types.d.ts.map +1 -1
- package/dist/cjs/index.d.ts +4 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/ins-del.d.ts +30 -0
- package/dist/cjs/ins-del.d.ts.map +1 -0
- package/dist/cjs/{erase.js → ins-del.js} +23 -4
- package/dist/cjs/ins-del.js.map +1 -0
- package/dist/cjs/slice.d.ts +8 -0
- package/dist/cjs/slice.d.ts.map +1 -1
- package/dist/cjs/slice.js +8 -0
- package/dist/cjs/slice.js.map +1 -1
- package/dist/cjs/split-at.d.ts.map +1 -1
- package/dist/cjs/split-at.js +2 -1
- package/dist/cjs/split-at.js.map +1 -1
- package/dist/cjs/types.d.ts +3 -1
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/esm/ansi.d.ts +4 -1
- package/dist/esm/ansi.d.ts.map +1 -1
- package/dist/esm/ansi.js +3 -1
- package/dist/esm/ansi.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 +17 -3
- package/dist/esm/features/build.js.map +1 -1
- package/dist/esm/features/detect.d.ts.map +1 -1
- package/dist/esm/features/detect.js +2 -0
- 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 +2 -0
- package/dist/esm/features/types.d.ts.map +1 -1
- package/dist/esm/ins-del.d.ts +30 -0
- package/dist/esm/ins-del.d.ts.map +1 -0
- package/dist/esm/ins-del.js +46 -0
- package/dist/esm/ins-del.js.map +1 -0
- package/dist/esm/slice.d.ts +8 -0
- package/dist/esm/slice.d.ts.map +1 -1
- package/dist/esm/slice.js +8 -0
- package/dist/esm/slice.js.map +1 -1
- package/dist/esm/split-at.d.ts.map +1 -1
- package/dist/esm/split-at.js +2 -1
- package/dist/esm/split-at.js.map +1 -1
- package/dist/esm/types.d.ts +3 -1
- package/dist/esm/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/ansi.ts +13 -11
- package/src/features/build.ts +18 -2
- package/src/features/detect.ts +2 -0
- package/src/features/features.ts +4 -4
- package/src/features/types.ts +2 -0
- package/src/ins-del.ts +58 -0
- package/src/slice.ts +8 -0
- package/src/split-at.ts +2 -1
- package/src/types.ts +3 -1
- package/dist/cjs/erase.d.ts +0 -17
- package/dist/cjs/erase.d.ts.map +0 -1
- package/dist/cjs/erase.js.map +0 -1
- package/dist/esm/erase.d.ts +0 -17
- package/dist/esm/erase.d.ts.map +0 -1
- package/dist/esm/erase.js +0 -29
- package/dist/esm/erase.js.map +0 -1
- package/src/erase.ts +0 -33
|
@@ -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,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAC,GAAG,QAAQ,CAAC;
|
|
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,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAC,GAAG,QAAQ,CAAC;IAE3F,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC;IAE1B,IAAI,UAAU;QACb,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAE7F,IAAI,MAAM,CAAC,KAAK;QACf,OAAO,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAEhG,OAAO,KAAK,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC3F,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,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"}
|
|
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,MAAM,EAAO,OAAO,CAAC;IACrB,KAAK,EAAQ,OAAO,CAAC;IACrB,MAAM,EAAO,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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
declare const erase: {
|
|
2
|
+
char: (count?: number | undefined) => string;
|
|
3
|
+
line: {
|
|
4
|
+
toStart: string;
|
|
5
|
+
toEnd: string;
|
|
6
|
+
full: string;
|
|
7
|
+
};
|
|
8
|
+
screen: {
|
|
9
|
+
toStart: string;
|
|
10
|
+
toEnd: string;
|
|
11
|
+
full: string;
|
|
12
|
+
scrollback: string;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
declare const insert: {
|
|
16
|
+
char: (count?: number | undefined) => string;
|
|
17
|
+
line: (count?: number | undefined) => string;
|
|
18
|
+
};
|
|
19
|
+
declare const del: {
|
|
20
|
+
char: (count?: number | undefined) => string;
|
|
21
|
+
line: (count?: number | undefined) => string;
|
|
22
|
+
};
|
|
23
|
+
export type Erase = typeof erase;
|
|
24
|
+
export type Insert = typeof insert;
|
|
25
|
+
export type Delete = typeof del;
|
|
26
|
+
export declare const makeErase: (enabled?: boolean) => Erase;
|
|
27
|
+
export declare const makeInsert: (enabled?: boolean) => Insert;
|
|
28
|
+
export declare const makeDelete: (enabled?: boolean) => Delete;
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=ins-del.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ins-del.d.ts","sourceRoot":"","sources":["../../src/ins-del.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,KAAK;;;;;;;;;;;;;CAcV,CAAC;AAEF,QAAA,MAAM,MAAM;;;CAGX,CAAC;AAEF,QAAA,MAAM,GAAG;;;CAGR,CAAC;AAEF,MAAM,MAAM,KAAK,GAAI,OAAO,KAAK,CAAC;AAClC,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC;AACnC,MAAM,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC;AAyBhC,eAAO,MAAM,SAAS,GAAK,iBAAc,KAAG,KAA0C,CAAC;AACvF,eAAO,MAAM,UAAU,GAAI,iBAAc,KAAG,MAA2C,CAAC;AACxF,eAAO,MAAM,UAAU,GAAI,iBAAc,KAAG,MAA2C,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { count, csi, noop } from "./utils.js";
|
|
2
|
+
const erase = {
|
|
3
|
+
char: count("X"),
|
|
4
|
+
line: {
|
|
5
|
+
toStart: csi("1K"),
|
|
6
|
+
toEnd: csi("0K"),
|
|
7
|
+
full: csi("2K"),
|
|
8
|
+
},
|
|
9
|
+
screen: {
|
|
10
|
+
toStart: csi("1J"),
|
|
11
|
+
toEnd: csi("0J"),
|
|
12
|
+
full: csi("2J"),
|
|
13
|
+
scrollback: csi("3J"),
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
const insert = {
|
|
17
|
+
char: count("@"),
|
|
18
|
+
line: count("L"),
|
|
19
|
+
};
|
|
20
|
+
const del = {
|
|
21
|
+
char: count("P"),
|
|
22
|
+
line: count("M"),
|
|
23
|
+
};
|
|
24
|
+
const disabledErase = {
|
|
25
|
+
char: noop,
|
|
26
|
+
line: {
|
|
27
|
+
toStart: "",
|
|
28
|
+
toEnd: "",
|
|
29
|
+
full: "",
|
|
30
|
+
},
|
|
31
|
+
screen: {
|
|
32
|
+
toStart: "",
|
|
33
|
+
toEnd: "",
|
|
34
|
+
full: "",
|
|
35
|
+
scrollback: "",
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
const disabledInsert = {
|
|
39
|
+
char: noop,
|
|
40
|
+
line: noop,
|
|
41
|
+
};
|
|
42
|
+
const disabledDelete = disabledInsert;
|
|
43
|
+
export const makeErase = (enabled = true) => enabled ? erase : disabledErase;
|
|
44
|
+
export const makeInsert = (enabled = true) => enabled ? insert : disabledInsert;
|
|
45
|
+
export const makeDelete = (enabled = true) => enabled ? del : disabledDelete;
|
|
46
|
+
//# sourceMappingURL=ins-del.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ins-del.js","sourceRoot":"","sources":["../../src/ins-del.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAC,MAAM,SAAS,CAAC;AAEzC,MAAM,KAAK,GAAG;IACb,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;IAEhB,IAAI,EAAE;QACL,OAAO,EAAG,GAAG,CAAC,IAAI,CAAC;QACnB,KAAK,EAAK,GAAG,CAAC,IAAI,CAAC;QACnB,IAAI,EAAM,GAAG,CAAC,IAAI,CAAC;KACnB;IACD,MAAM,EAAE;QACP,OAAO,EAAM,GAAG,CAAC,IAAI,CAAC;QACtB,KAAK,EAAQ,GAAG,CAAC,IAAI,CAAC;QACtB,IAAI,EAAS,GAAG,CAAC,IAAI,CAAC;QACtB,UAAU,EAAG,GAAG,CAAC,IAAI,CAAC;KACtB;CACD,CAAC;AAEF,MAAM,MAAM,GAAG;IACd,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;IAChB,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;CAChB,CAAC;AAEF,MAAM,GAAG,GAAG;IACX,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;IAChB,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;CAChB,CAAC;AAMF,MAAM,aAAa,GAAU;IAC5B,IAAI,EAAE,IAAI;IAEV,IAAI,EAAE;QACL,OAAO,EAAG,EAAE;QACZ,KAAK,EAAK,EAAE;QACZ,IAAI,EAAM,EAAE;KACZ;IACD,MAAM,EAAE;QACP,OAAO,EAAM,EAAE;QACf,KAAK,EAAQ,EAAE;QACf,IAAI,EAAS,EAAE;QACf,UAAU,EAAG,EAAE;KACf;CACD,CAAC;AAEF,MAAM,cAAc,GAAW;IAC9B,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;CACV,CAAC;AAEF,MAAM,cAAc,GAAW,cAAc,CAAC;AAE9C,MAAM,CAAC,MAAM,SAAS,GAAI,CAAC,OAAO,GAAG,IAAI,EAAU,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAE,CAAC,CAAC,aAAa,CAAC;AACvF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAO,GAAG,IAAI,EAAU,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC;AACxF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAO,GAAG,IAAI,EAAU,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAI,CAAC,CAAC,cAAc,CAAC"}
|
package/dist/esm/slice.d.ts
CHANGED
|
@@ -11,6 +11,14 @@ export declare function skippedSequences(text: string, start: number, end?: numb
|
|
|
11
11
|
* printed. If you compose two or more slices together, there may be redundant SGR sequences at the
|
|
12
12
|
* boundaries, but the result will be correct. You can use `simplify` to remove the redundancies.
|
|
13
13
|
*
|
|
14
|
+
* Negative indices for `start` or `end` are interpreted as offsets from the end of the string,
|
|
15
|
+
* counting only visible characters. For example, `slice(text, -1)` returns a string containing only
|
|
16
|
+
* the last visible character of `text`, as well as any SGR codes from before and after that
|
|
17
|
+
* character.
|
|
18
|
+
*
|
|
19
|
+
* This function is analogous to `String.prototype.slice`. If the given string contains no ANSI
|
|
20
|
+
* sequences, the result will be the same as `text.slice(start, end)`.
|
|
21
|
+
*
|
|
14
22
|
* Note the following caveats:
|
|
15
23
|
*
|
|
16
24
|
* * Any non-SGR ANSI codes prior to or after the slice will be ignored.
|
package/dist/esm/slice.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAGlF;AAED
|
|
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;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAGlF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CA8BvE;AAED,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC"}
|
package/dist/esm/slice.js
CHANGED
|
@@ -32,6 +32,14 @@ export function skippedSequences(text, start, end) {
|
|
|
32
32
|
* printed. If you compose two or more slices together, there may be redundant SGR sequences at the
|
|
33
33
|
* boundaries, but the result will be correct. You can use `simplify` to remove the redundancies.
|
|
34
34
|
*
|
|
35
|
+
* Negative indices for `start` or `end` are interpreted as offsets from the end of the string,
|
|
36
|
+
* counting only visible characters. For example, `slice(text, -1)` returns a string containing only
|
|
37
|
+
* the last visible character of `text`, as well as any SGR codes from before and after that
|
|
38
|
+
* character.
|
|
39
|
+
*
|
|
40
|
+
* This function is analogous to `String.prototype.slice`. If the given string contains no ANSI
|
|
41
|
+
* sequences, the result will be the same as `text.slice(start, end)`.
|
|
42
|
+
*
|
|
35
43
|
* Note the following caveats:
|
|
36
44
|
*
|
|
37
45
|
* * Any non-SGR ANSI codes prior to or after the slice will be ignored.
|
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,MAAM,UAAU,OAAO,CACtB,IAAwB,EACxB,eAAwB,EACxB,YAAwB;IAExB,gEAAgE;IAChE,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;IAE7B,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,KAAK,GAAI,eAAe,CAAC;IAE7B,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,GAAG,YAAY,EAAE,CAAC;QACrD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,MAAM,EAAE,CAAC;YAC5B,EAAE,CAAC,SAAS,GAAG,KAAK,CAAC;YACrB,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5B,IAAI,KAAK,EAAE,KAAK,KAAK,KAAK,EAAE,CAAC;gBAC5B,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBACzB,SAAS;YACV,CAAC;QACF,CAAC;QAED,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,CAAC;IACV,CAAC;IAED,OAAO,EAAC,KAAK,EAAE,MAAM,EAAC,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,KAAa,EAAE,GAAY;IACzE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAClE,OAAO,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACtD,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"slice.js","sourceRoot":"","sources":["../../src/slice.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"split-at.d.ts","sourceRoot":"","sources":["../../src/split-at.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"split-at.d.ts","sourceRoot":"","sources":["../../src/split-at.ts"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CACtB,IAAI,EAAa,MAAM,EACvB,YAAY,EAAK,MAAM,EACvB,cAAc,GAAG,OAAe,GAC9B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAwB9B;AAED,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC"}
|
package/dist/esm/split-at.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { scanCSI, skippedSequences } from "./slice.js";
|
|
2
|
+
import { visibleLength } from "./strip.js";
|
|
2
3
|
/**
|
|
3
4
|
* Split a string into two parts at the given visible index (i.e., the given visible character,
|
|
4
5
|
* ignoring ANSI escape codes). The returned strings will include any ANSI escape codes from within
|
|
@@ -12,7 +13,7 @@ export function splitAt(text, visibleIndex, includeSkipped = false) {
|
|
|
12
13
|
if (!visibleIndex)
|
|
13
14
|
return ["", text];
|
|
14
15
|
if (visibleIndex < 0)
|
|
15
|
-
|
|
16
|
+
visibleIndex = Math.max(0, visibleLength(text) + visibleIndex);
|
|
16
17
|
if (visibleIndex > text.length)
|
|
17
18
|
return [text, ""];
|
|
18
19
|
const { index } = scanCSI(text, 0, visibleIndex);
|
package/dist/esm/split-at.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"split-at.js","sourceRoot":"","sources":["../../src/split-at.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,gBAAgB,EAAC,MAAM,SAAS,CAAC;AAIlD;;;;;;;;GAQG;AACH,MAAM,UAAU,OAAO,CACtB,IAAuB,EACvB,YAAuB,EACvB,iBAA2B,KAAK;IAEhC,IAAI,CAAC,YAAY;QAChB,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAEnB,IAAI,YAAY,GAAG,CAAC;QACnB,
|
|
1
|
+
{"version":3,"file":"split-at.js","sourceRoot":"","sources":["../../src/split-at.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,gBAAgB,EAAC,MAAM,SAAS,CAAC;AAClD,OAAO,EAAC,aAAa,EAAC,MAAkB,SAAS,CAAC;AAIlD;;;;;;;;GAQG;AACH,MAAM,UAAU,OAAO,CACtB,IAAuB,EACvB,YAAuB,EACvB,iBAA2B,KAAK;IAEhC,IAAI,CAAC,YAAY;QAChB,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAEnB,IAAI,YAAY,GAAG,CAAC;QACnB,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;IAEhE,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,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACjC,IAAI,GAAG,GAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAE9B,IAAI,cAAc,EAAE,CAAC;QACpB,KAAK,IAAI,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACvC,GAAG,GAAM,gBAAgB,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC;IACjD,CAAC;IAED,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACrB,CAAC"}
|
package/dist/esm/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Cursor } from "./cursor.js";
|
|
2
|
-
import type { Erase } from "./
|
|
2
|
+
import type { Delete, Erase, Insert } from "./ins-del.js";
|
|
3
3
|
import type { Features } from "./features/index.js";
|
|
4
4
|
import type { PadEnd, PadStart } from "./pad.js";
|
|
5
5
|
import type { Scroll } from "./scroll.js";
|
|
@@ -11,7 +11,9 @@ import type { Sanitize, Strip, VisibleLength } from "./strip.js";
|
|
|
11
11
|
import type { Terminal } from "./terminal.js";
|
|
12
12
|
export type Ansi = SGR & {
|
|
13
13
|
cursor: Cursor;
|
|
14
|
+
delete: Delete;
|
|
14
15
|
erase: Erase;
|
|
16
|
+
insert: Insert;
|
|
15
17
|
scroll: Scroll;
|
|
16
18
|
terminal: Terminal;
|
|
17
19
|
padEnd: PadEnd;
|
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,MAAM,EAAC,MAA8B,UAAU,CAAC;AAC7D,OAAO,KAAK,EAAC,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,MAAM,EAAE,KAAK,EAAE,MAAM,EAAC,MAAe,WAAW,CAAC;AAC9D,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,MAAM,EAAK,MAAM,CAAC;IAClB,KAAK,EAAM,KAAK,CAAC;IACjB,MAAM,EAAK,MAAM,CAAC;IAClB,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"}
|
package/package.json
CHANGED
package/src/ansi.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import {makeCursor}
|
|
2
|
-
import {makeErase}
|
|
3
|
-
import {getFeatures}
|
|
4
|
-
import {padEnd, padStart}
|
|
5
|
-
import {makeScroll}
|
|
6
|
-
import {makeSGR}
|
|
7
|
-
import {simplify}
|
|
8
|
-
import {slice}
|
|
9
|
-
import {splitAt}
|
|
10
|
-
import {sanitize, strip, visibleLength}
|
|
11
|
-
import {makeTerminal}
|
|
1
|
+
import {makeCursor} from "./cursor";
|
|
2
|
+
import {makeDelete, makeErase, makeInsert} from "./ins-del";
|
|
3
|
+
import {getFeatures} from "./features";
|
|
4
|
+
import {padEnd, padStart} from "./pad";
|
|
5
|
+
import {makeScroll} from "./scroll";
|
|
6
|
+
import {makeSGR} from "./sgr";
|
|
7
|
+
import {simplify} from "./simplify";
|
|
8
|
+
import {slice} from "./slice";
|
|
9
|
+
import {splitAt} from "./split-at";
|
|
10
|
+
import {sanitize, strip, visibleLength} from "./strip";
|
|
11
|
+
import {makeTerminal} from "./terminal";
|
|
12
12
|
|
|
13
13
|
import type {Args} from "./features";
|
|
14
14
|
import type {Ansi} from "./types";
|
|
@@ -20,7 +20,9 @@ export function makeAnsi(...args: Args): Ansi {
|
|
|
20
20
|
...makeSGR(features),
|
|
21
21
|
|
|
22
22
|
cursor : makeCursor(features.cursor),
|
|
23
|
+
delete : makeDelete(features.erase),
|
|
23
24
|
erase : makeErase(features.erase),
|
|
25
|
+
insert : makeInsert(features.erase),
|
|
24
26
|
scroll : makeScroll(features.scroll),
|
|
25
27
|
|
|
26
28
|
terminal: makeTerminal(features.terminal),
|
package/src/features/build.ts
CHANGED
|
@@ -16,25 +16,41 @@ export function build(
|
|
|
16
16
|
colorDepth : ColorDepth,
|
|
17
17
|
style? : boolean,
|
|
18
18
|
cursor? : boolean,
|
|
19
|
+
del? : boolean,
|
|
19
20
|
erase? : boolean,
|
|
21
|
+
insert? : boolean,
|
|
20
22
|
scroll? : boolean,
|
|
21
23
|
terminal? : boolean,
|
|
22
24
|
): Features {
|
|
23
25
|
if (
|
|
24
26
|
style !== undefined &&
|
|
25
27
|
cursor !== undefined &&
|
|
28
|
+
del !== undefined &&
|
|
26
29
|
erase !== undefined &&
|
|
30
|
+
insert !== undefined &&
|
|
27
31
|
scroll !== undefined &&
|
|
28
32
|
terminal !== undefined
|
|
29
|
-
)
|
|
30
|
-
return {
|
|
33
|
+
) {
|
|
34
|
+
return {
|
|
35
|
+
colorDepth: normalizeColorDepth(colorDepth),
|
|
36
|
+
style,
|
|
37
|
+
cursor,
|
|
38
|
+
delete: del,
|
|
39
|
+
erase,
|
|
40
|
+
insert,
|
|
41
|
+
scroll,
|
|
42
|
+
terminal,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
31
45
|
|
|
32
46
|
const support = detectFeatureSupport(isTTY, colorDepth);
|
|
33
47
|
return {
|
|
34
48
|
colorDepth : normalizeColorDepth(colorDepth),
|
|
35
49
|
style : style ?? support.style,
|
|
36
50
|
cursor : cursor ?? support.cursor,
|
|
51
|
+
delete : del ?? support.delete,
|
|
37
52
|
erase : erase ?? support.erase,
|
|
53
|
+
insert : insert ?? support.insert,
|
|
38
54
|
scroll : scroll ?? support.scroll,
|
|
39
55
|
terminal : terminal ?? support.terminal,
|
|
40
56
|
};
|
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, cursor, erase, scroll, terminal} = features;
|
|
26
|
+
const {colorDepth, style, cursor, delete: del, erase, insert, scroll, terminal} = features;
|
|
27
27
|
|
|
28
28
|
stream ??= process.stdout;
|
|
29
29
|
|
|
30
30
|
if (colorDepth)
|
|
31
|
-
return build(stream.isTTY, colorDepth, style, cursor, erase, scroll, terminal);
|
|
31
|
+
return build(stream.isTTY, colorDepth, style, cursor, del, erase, insert, scroll, terminal);
|
|
32
32
|
|
|
33
33
|
if (stream.isTTY)
|
|
34
|
-
return build(true, getColorDepth(stream), style, cursor, erase, scroll, terminal);
|
|
34
|
+
return build(true, getColorDepth(stream), style, cursor, del, erase, insert, scroll, terminal);
|
|
35
35
|
|
|
36
|
-
return build(false, getColorDepth(), style, cursor, erase, scroll, terminal);
|
|
36
|
+
return build(false, getColorDepth(), style, cursor, del, erase, insert, scroll, terminal);
|
|
37
37
|
}
|
package/src/features/types.ts
CHANGED
package/src/ins-del.ts
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import {count, csi, noop} from "./utils";
|
|
2
|
+
|
|
3
|
+
const erase = {
|
|
4
|
+
char: count("X"),
|
|
5
|
+
|
|
6
|
+
line: {
|
|
7
|
+
toStart : csi("1K"),
|
|
8
|
+
toEnd : csi("0K"),
|
|
9
|
+
full : csi("2K"),
|
|
10
|
+
},
|
|
11
|
+
screen: {
|
|
12
|
+
toStart : csi("1J"),
|
|
13
|
+
toEnd : csi("0J"),
|
|
14
|
+
full : csi("2J"),
|
|
15
|
+
scrollback : csi("3J"),
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
const insert = {
|
|
20
|
+
char: count("@"),
|
|
21
|
+
line: count("L"),
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const del = {
|
|
25
|
+
char: count("P"),
|
|
26
|
+
line: count("M"),
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
export type Erase = typeof erase;
|
|
30
|
+
export type Insert = typeof insert;
|
|
31
|
+
export type Delete = typeof del;
|
|
32
|
+
|
|
33
|
+
const disabledErase: Erase = {
|
|
34
|
+
char: noop,
|
|
35
|
+
|
|
36
|
+
line: {
|
|
37
|
+
toStart : "",
|
|
38
|
+
toEnd : "",
|
|
39
|
+
full : "",
|
|
40
|
+
},
|
|
41
|
+
screen: {
|
|
42
|
+
toStart : "",
|
|
43
|
+
toEnd : "",
|
|
44
|
+
full : "",
|
|
45
|
+
scrollback : "",
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const disabledInsert: Insert = {
|
|
50
|
+
char: noop,
|
|
51
|
+
line: noop,
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
const disabledDelete: Delete = disabledInsert;
|
|
55
|
+
|
|
56
|
+
export const makeErase = (enabled = true): Erase => enabled ? erase : disabledErase;
|
|
57
|
+
export const makeInsert = (enabled = true): Insert => enabled ? insert : disabledInsert;
|
|
58
|
+
export const makeDelete = (enabled = true): Delete => enabled ? del : disabledDelete;
|
package/src/slice.ts
CHANGED
|
@@ -43,6 +43,14 @@ export function skippedSequences(text: string, start: number, end?: number): str
|
|
|
43
43
|
* printed. If you compose two or more slices together, there may be redundant SGR sequences at the
|
|
44
44
|
* boundaries, but the result will be correct. You can use `simplify` to remove the redundancies.
|
|
45
45
|
*
|
|
46
|
+
* Negative indices for `start` or `end` are interpreted as offsets from the end of the string,
|
|
47
|
+
* counting only visible characters. For example, `slice(text, -1)` returns a string containing only
|
|
48
|
+
* the last visible character of `text`, as well as any SGR codes from before and after that
|
|
49
|
+
* character.
|
|
50
|
+
*
|
|
51
|
+
* This function is analogous to `String.prototype.slice`. If the given string contains no ANSI
|
|
52
|
+
* sequences, the result will be the same as `text.slice(start, end)`.
|
|
53
|
+
*
|
|
46
54
|
* Note the following caveats:
|
|
47
55
|
*
|
|
48
56
|
* * Any non-SGR ANSI codes prior to or after the slice will be ignored.
|
package/src/split-at.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import {scanCSI, skippedSequences} from "./slice";
|
|
2
|
+
import {visibleLength} from "./strip";
|
|
2
3
|
|
|
3
4
|
import type {slice} from "./slice";
|
|
4
5
|
|
|
@@ -20,7 +21,7 @@ export function splitAt(
|
|
|
20
21
|
return ["", text];
|
|
21
22
|
|
|
22
23
|
if (visibleIndex < 0)
|
|
23
|
-
|
|
24
|
+
visibleIndex = Math.max(0, visibleLength(text) + visibleIndex);
|
|
24
25
|
|
|
25
26
|
if (visibleIndex > text.length)
|
|
26
27
|
return [text, ""];
|
package/src/types.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type {Cursor} from "./cursor";
|
|
2
|
-
import type {Erase}
|
|
2
|
+
import type {Delete, Erase, Insert} from "./ins-del";
|
|
3
3
|
import type {Features} from "./features";
|
|
4
4
|
import type {PadEnd, PadStart} from "./pad";
|
|
5
5
|
import type {Scroll} from "./scroll";
|
|
@@ -12,7 +12,9 @@ import type {Terminal} from "./terminal";
|
|
|
12
12
|
|
|
13
13
|
export type Ansi = SGR & {
|
|
14
14
|
cursor : Cursor;
|
|
15
|
+
delete : Delete;
|
|
15
16
|
erase : Erase;
|
|
17
|
+
insert : Insert;
|
|
16
18
|
scroll : Scroll;
|
|
17
19
|
terminal : Terminal;
|
|
18
20
|
|
package/dist/cjs/erase.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
declare const erase: {
|
|
2
|
-
line: {
|
|
3
|
-
toStart: string;
|
|
4
|
-
toEnd: string;
|
|
5
|
-
full: string;
|
|
6
|
-
};
|
|
7
|
-
screen: {
|
|
8
|
-
toStart: string;
|
|
9
|
-
toEnd: string;
|
|
10
|
-
full: string;
|
|
11
|
-
scrollback: string;
|
|
12
|
-
};
|
|
13
|
-
};
|
|
14
|
-
export type Erase = typeof erase;
|
|
15
|
-
export declare const makeErase: (enabled?: boolean) => Erase;
|
|
16
|
-
export {};
|
|
17
|
-
//# sourceMappingURL=erase.d.ts.map
|
package/dist/cjs/erase.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"erase.d.ts","sourceRoot":"","sources":["../../src/erase.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,KAAK;;;;;;;;;;;;CAYV,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC;AAgBjC,eAAO,MAAM,SAAS,GAAI,iBAAc,KAAG,KAAmC,CAAC"}
|
package/dist/cjs/erase.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"erase.js","sourceRoot":"","sources":["../../src/erase.ts"],"names":[],"mappings":";;;AAAA,mCAA4B;AAE5B,MAAM,KAAK,GAAG;IACb,IAAI,EAAE;QACL,OAAO,EAAG,IAAA,WAAG,EAAC,IAAI,CAAC;QACnB,KAAK,EAAK,IAAA,WAAG,EAAC,IAAI,CAAC;QACnB,IAAI,EAAM,IAAA,WAAG,EAAC,IAAI,CAAC;KACnB;IACD,MAAM,EAAE;QACP,OAAO,EAAM,IAAA,WAAG,EAAC,IAAI,CAAC;QACtB,KAAK,EAAQ,IAAA,WAAG,EAAC,IAAI,CAAC;QACtB,IAAI,EAAS,IAAA,WAAG,EAAC,IAAI,CAAC;QACtB,UAAU,EAAG,IAAA,WAAG,EAAC,IAAI,CAAC;KACtB;CACD,CAAC;AAIF,MAAM,QAAQ,GAAU;IACvB,IAAI,EAAE;QACL,OAAO,EAAG,EAAE;QACZ,KAAK,EAAK,EAAE;QACZ,IAAI,EAAM,EAAE;KACZ;IACD,MAAM,EAAE;QACP,OAAO,EAAM,EAAE;QACf,KAAK,EAAQ,EAAE;QACf,IAAI,EAAS,EAAE;QACf,UAAU,EAAG,EAAE;KACf;CACD,CAAC;AAEK,MAAM,SAAS,GAAG,CAAC,OAAO,GAAG,IAAI,EAAS,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;AAAlE,QAAA,SAAS,aAAyD"}
|
package/dist/esm/erase.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
declare const erase: {
|
|
2
|
-
line: {
|
|
3
|
-
toStart: string;
|
|
4
|
-
toEnd: string;
|
|
5
|
-
full: string;
|
|
6
|
-
};
|
|
7
|
-
screen: {
|
|
8
|
-
toStart: string;
|
|
9
|
-
toEnd: string;
|
|
10
|
-
full: string;
|
|
11
|
-
scrollback: string;
|
|
12
|
-
};
|
|
13
|
-
};
|
|
14
|
-
export type Erase = typeof erase;
|
|
15
|
-
export declare const makeErase: (enabled?: boolean) => Erase;
|
|
16
|
-
export {};
|
|
17
|
-
//# sourceMappingURL=erase.d.ts.map
|
package/dist/esm/erase.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"erase.d.ts","sourceRoot":"","sources":["../../src/erase.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,KAAK;;;;;;;;;;;;CAYV,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC;AAgBjC,eAAO,MAAM,SAAS,GAAI,iBAAc,KAAG,KAAmC,CAAC"}
|
package/dist/esm/erase.js
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { csi } from "./utils.js";
|
|
2
|
-
const erase = {
|
|
3
|
-
line: {
|
|
4
|
-
toStart: csi("1K"),
|
|
5
|
-
toEnd: csi("0K"),
|
|
6
|
-
full: csi("2K"),
|
|
7
|
-
},
|
|
8
|
-
screen: {
|
|
9
|
-
toStart: csi("1J"),
|
|
10
|
-
toEnd: csi("0J"),
|
|
11
|
-
full: csi("2J"),
|
|
12
|
-
scrollback: csi("3J"),
|
|
13
|
-
},
|
|
14
|
-
};
|
|
15
|
-
const disabled = {
|
|
16
|
-
line: {
|
|
17
|
-
toStart: "",
|
|
18
|
-
toEnd: "",
|
|
19
|
-
full: "",
|
|
20
|
-
},
|
|
21
|
-
screen: {
|
|
22
|
-
toStart: "",
|
|
23
|
-
toEnd: "",
|
|
24
|
-
full: "",
|
|
25
|
-
scrollback: "",
|
|
26
|
-
},
|
|
27
|
-
};
|
|
28
|
-
export const makeErase = (enabled = true) => enabled ? erase : disabled;
|
|
29
|
-
//# sourceMappingURL=erase.js.map
|
package/dist/esm/erase.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"erase.js","sourceRoot":"","sources":["../../src/erase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,SAAS,CAAC;AAE5B,MAAM,KAAK,GAAG;IACb,IAAI,EAAE;QACL,OAAO,EAAG,GAAG,CAAC,IAAI,CAAC;QACnB,KAAK,EAAK,GAAG,CAAC,IAAI,CAAC;QACnB,IAAI,EAAM,GAAG,CAAC,IAAI,CAAC;KACnB;IACD,MAAM,EAAE;QACP,OAAO,EAAM,GAAG,CAAC,IAAI,CAAC;QACtB,KAAK,EAAQ,GAAG,CAAC,IAAI,CAAC;QACtB,IAAI,EAAS,GAAG,CAAC,IAAI,CAAC;QACtB,UAAU,EAAG,GAAG,CAAC,IAAI,CAAC;KACtB;CACD,CAAC;AAIF,MAAM,QAAQ,GAAU;IACvB,IAAI,EAAE;QACL,OAAO,EAAG,EAAE;QACZ,KAAK,EAAK,EAAE;QACZ,IAAI,EAAM,EAAE;KACZ;IACD,MAAM,EAAE;QACP,OAAO,EAAM,EAAE;QACf,KAAK,EAAQ,EAAE;QACf,IAAI,EAAS,EAAE;QACf,UAAU,EAAG,EAAE;KACf;CACD,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAO,GAAG,IAAI,EAAS,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC"}
|
package/src/erase.ts
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import {csi} from "./utils";
|
|
2
|
-
|
|
3
|
-
const erase = {
|
|
4
|
-
line: {
|
|
5
|
-
toStart : csi("1K"),
|
|
6
|
-
toEnd : csi("0K"),
|
|
7
|
-
full : csi("2K"),
|
|
8
|
-
},
|
|
9
|
-
screen: {
|
|
10
|
-
toStart : csi("1J"),
|
|
11
|
-
toEnd : csi("0J"),
|
|
12
|
-
full : csi("2J"),
|
|
13
|
-
scrollback : csi("3J"),
|
|
14
|
-
},
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
export type Erase = typeof erase;
|
|
18
|
-
|
|
19
|
-
const disabled: Erase = {
|
|
20
|
-
line: {
|
|
21
|
-
toStart : "",
|
|
22
|
-
toEnd : "",
|
|
23
|
-
full : "",
|
|
24
|
-
},
|
|
25
|
-
screen: {
|
|
26
|
-
toStart : "",
|
|
27
|
-
toEnd : "",
|
|
28
|
-
full : "",
|
|
29
|
-
scrollback : "",
|
|
30
|
-
},
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
export const makeErase = (enabled = true): Erase => enabled ? erase : disabled;
|