@peteanderson/ansi 0.3.3 → 1.0.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/dist/ansi.d.ts +28 -37
- package/dist/ansi.d.ts.map +1 -0
- package/dist/ansi.js +29 -52
- package/dist/ansi.js.map +1 -0
- package/dist/caret.d.ts +5 -3
- package/dist/caret.d.ts.map +1 -0
- package/dist/caret.js +6 -8
- package/dist/caret.js.map +1 -0
- package/dist/erase.d.ts +5 -1
- package/dist/erase.d.ts.map +1 -0
- package/dist/erase.js +4 -2
- package/dist/erase.js.map +1 -0
- package/dist/features/build.d.ts +7 -11
- package/dist/features/build.d.ts.map +1 -0
- package/dist/features/build.js +12 -25
- package/dist/features/build.js.map +1 -0
- package/dist/features/detect.d.ts +4 -4
- package/dist/features/detect.d.ts.map +1 -0
- package/dist/features/detect.js +5 -6
- package/dist/features/detect.js.map +1 -0
- package/dist/features/features.d.ts +4 -4
- package/dist/features/features.d.ts.map +1 -0
- package/dist/features/features.js +24 -34
- package/dist/features/features.js.map +1 -0
- package/dist/features/index.d.ts +2 -2
- package/dist/features/index.d.ts.map +1 -0
- package/dist/features/index.js +17 -1
- package/dist/features/index.js.map +1 -0
- package/dist/features/types.d.ts +10 -0
- package/dist/features/types.d.ts.map +1 -0
- package/dist/features/types.js +3 -0
- package/dist/features/types.js.map +1 -0
- package/dist/index.d.ts +3 -81
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -1
- package/dist/index.js.map +1 -0
- package/dist/pad.d.ts +3 -12
- package/dist/pad.d.ts.map +1 -0
- package/dist/pad.js +8 -14
- package/dist/pad.js.map +1 -0
- package/dist/patterns.d.ts +4 -3
- package/dist/patterns.d.ts.map +1 -0
- package/dist/patterns.js +6 -4
- package/dist/patterns.js.map +1 -0
- package/dist/scroll.d.ts +5 -3
- package/dist/scroll.d.ts.map +1 -0
- package/dist/scroll.js +6 -6
- package/dist/scroll.js.map +1 -0
- package/dist/sgr/color/color.d.ts +5 -9
- package/dist/sgr/color/color.d.ts.map +1 -0
- package/dist/sgr/color/color.js +22 -29
- package/dist/sgr/color/color.js.map +1 -0
- package/dist/sgr/color/index.d.ts +2 -2
- package/dist/sgr/color/index.d.ts.map +1 -0
- package/dist/sgr/color/index.js +17 -1
- package/dist/sgr/color/index.js.map +1 -0
- package/dist/sgr/color/test-rgb.d.ts +3 -0
- package/dist/sgr/color/test-rgb.d.ts.map +1 -0
- package/dist/sgr/color/test-rgb.js +149 -0
- package/dist/sgr/color/test-rgb.js.map +1 -0
- package/dist/sgr/color/types.d.ts +30 -0
- package/dist/sgr/color/types.d.ts.map +1 -0
- package/dist/sgr/color/types.js +3 -0
- package/dist/sgr/color/types.js.map +1 -0
- package/dist/sgr/color/utils.d.ts +7 -27
- package/dist/sgr/color/utils.d.ts.map +1 -0
- package/dist/sgr/color/utils.js +17 -32
- package/dist/sgr/color/utils.js.map +1 -0
- package/dist/sgr/index.d.ts +4 -9
- package/dist/sgr/index.d.ts.map +1 -0
- package/dist/sgr/index.js +18 -4
- package/dist/sgr/index.js.map +1 -0
- package/dist/sgr/reset.d.ts +2 -1
- package/dist/sgr/reset.d.ts.map +1 -0
- package/dist/sgr/reset.js +4 -1
- package/dist/sgr/reset.js.map +1 -0
- package/dist/sgr/sgr.d.ts +4 -3
- package/dist/sgr/sgr.d.ts.map +1 -0
- package/dist/sgr/sgr.js +8 -22
- package/dist/sgr/sgr.js.map +1 -0
- package/dist/sgr/style.d.ts +3 -1
- package/dist/sgr/style.d.ts.map +1 -0
- package/dist/sgr/style.js +5 -3
- package/dist/sgr/style.js.map +1 -0
- package/dist/sgr/utils.d.ts +3 -2
- package/dist/sgr/utils.d.ts.map +1 -0
- package/dist/sgr/utils.js +3 -3
- package/dist/sgr/utils.js.map +1 -0
- package/dist/simplify/atom.d.ts +4 -3
- package/dist/simplify/atom.d.ts.map +1 -0
- package/dist/simplify/atom.js +10 -16
- package/dist/simplify/atom.js.map +1 -0
- package/dist/simplify/index.d.ts +2 -2
- package/dist/simplify/index.d.ts.map +1 -0
- package/dist/simplify/index.js +17 -1
- package/dist/simplify/index.js.map +1 -0
- package/dist/simplify/lookup.d.ts +3 -5
- package/dist/simplify/lookup.d.ts.map +1 -0
- package/dist/simplify/lookup.js +9 -13
- package/dist/simplify/lookup.js.map +1 -0
- package/dist/simplify/simplify.d.ts +2 -1
- package/dist/simplify/simplify.d.ts.map +1 -0
- package/dist/simplify/simplify.js +7 -7
- package/dist/simplify/simplify.js.map +1 -0
- package/dist/simplify/state.d.ts +3 -8
- package/dist/simplify/state.d.ts.map +1 -0
- package/dist/simplify/state.js +9 -13
- package/dist/simplify/state.js.map +1 -0
- package/dist/simplify/test.d.ts +2 -0
- package/dist/simplify/test.d.ts.map +1 -0
- package/dist/simplify/test.js +64 -0
- package/dist/simplify/test.js.map +1 -0
- package/dist/simplify/types.d.ts +9 -0
- package/dist/simplify/types.d.ts.map +1 -0
- package/dist/simplify/types.js +3 -0
- package/dist/simplify/types.js.map +1 -0
- package/dist/simplify/utils.d.ts +3 -2
- package/dist/simplify/utils.d.ts.map +1 -0
- package/dist/simplify/utils.js +4 -3
- package/dist/simplify/utils.js.map +1 -0
- package/dist/slice.d.ts +21 -1
- package/dist/slice.d.ts.map +1 -0
- package/dist/slice.js +10 -22
- package/dist/slice.js.map +1 -0
- package/dist/strip.d.ts +4 -15
- package/dist/strip.d.ts.map +1 -0
- package/dist/strip.js +10 -17
- package/dist/strip.js.map +1 -0
- package/dist/terminal.d.ts +5 -1
- package/dist/terminal.d.ts.map +1 -0
- package/dist/terminal.js +4 -2
- package/dist/terminal.js.map +1 -0
- package/package.json +9 -22
- package/src/ansi.ts +71 -0
- package/src/{caret.js → caret.ts} +9 -15
- package/src/{erase.js → erase.ts} +7 -10
- package/src/features/build.ts +52 -0
- package/src/features/detect.ts +33 -0
- package/src/features/features.ts +48 -0
- package/src/features/index.ts +1 -0
- package/src/features/{types.d.ts → types.ts} +1 -1
- package/src/index.ts +2 -0
- package/src/pad.ts +7 -0
- package/src/{patterns.js → patterns.ts} +3 -5
- package/src/scroll.ts +13 -0
- package/src/sgr/color/{color.js → color.ts} +26 -35
- package/src/sgr/color/index.ts +1 -0
- package/src/sgr/color/{types.d.ts → types.ts} +6 -2
- package/src/sgr/color/utils.ts +58 -0
- package/src/sgr/index.ts +3 -0
- package/src/sgr/reset.ts +1 -0
- package/src/sgr/sgr.ts +68 -0
- package/src/sgr/{style.js → style.ts} +3 -5
- package/src/sgr/{utils.js → utils.ts} +3 -6
- package/src/simplify/atom.ts +32 -0
- package/src/simplify/index.ts +1 -0
- package/src/simplify/{lookup.js → lookup.ts} +5 -14
- package/src/simplify/{simplify.js → simplify.ts} +4 -10
- package/src/simplify/state.ts +63 -0
- package/src/simplify/{types.d.ts → types.ts} +5 -5
- package/src/simplify/{utils.js → utils.ts} +4 -10
- package/src/{slice.js → slice.ts} +12 -26
- package/src/strip.ts +5 -0
- package/src/{terminal.js → terminal.ts} +4 -7
- package/LICENSE +0 -7
- package/README.md +0 -174
- package/src/ansi.js +0 -70
- package/src/features/build.js +0 -68
- package/src/features/detect.js +0 -40
- package/src/features/features.js +0 -53
- package/src/features/index.js +0 -1
- package/src/index.js +0 -1
- package/src/pad.js +0 -21
- package/src/scroll.js +0 -18
- package/src/sgr/color/index.js +0 -1
- package/src/sgr/color/utils.js +0 -81
- package/src/sgr/index.js +0 -5
- package/src/sgr/reset.js +0 -3
- package/src/sgr/sgr.js +0 -77
- package/src/simplify/atom.js +0 -44
- package/src/simplify/index.js +0 -1
- package/src/simplify/state.js +0 -73
- package/src/strip.js +0 -23
package/src/sgr/reset.js
DELETED
package/src/sgr/sgr.js
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
@typedef {number | number[]} Code
|
|
5
|
-
@typedef {{
|
|
6
|
-
(text: string): string;
|
|
7
|
-
open : string;
|
|
8
|
-
close : string;
|
|
9
|
-
codes : {open: Code, close: Code};
|
|
10
|
-
combine : (...styles: SGR[]) => SGR;
|
|
11
|
-
}} SGR
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
/** @type {(code: Code, codes: Code[]) => Code} */
|
|
15
|
-
function combine(code, codes, ) {
|
|
16
|
-
if (!codes.length)
|
|
17
|
-
return code;
|
|
18
|
-
|
|
19
|
-
const rtn = Array.isArray(code) ? [...code] : [code];
|
|
20
|
-
|
|
21
|
-
for (const c of codes) {
|
|
22
|
-
if (Array.isArray(c))
|
|
23
|
-
rtn.push(...c);
|
|
24
|
-
else
|
|
25
|
-
rtn.push(c);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
return rtn;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/** @type {(code: Code) => string | number} */
|
|
32
|
-
const codeSequence = code => Array.isArray(code) ? code.join(';') : code;
|
|
33
|
-
|
|
34
|
-
/** @type {(open: Code, close: Code, reset?: boolean) => SGR} */
|
|
35
|
-
function sgr(open, close, reset = false) {
|
|
36
|
-
const openCode = codeSequence(open);
|
|
37
|
-
const closeCode = codeSequence(close);
|
|
38
|
-
const openSequence = `\x1b[${openCode}m`;
|
|
39
|
-
const closeSequence = `\x1b[${closeCode}m`;
|
|
40
|
-
const reopenCode = reset ? `${closeCode};${openCode}` : openCode;
|
|
41
|
-
|
|
42
|
-
const rxClose = new RegExp(
|
|
43
|
-
`(?<start>\\x1b\\[(?:\\d+;)*)${closeCode}(?<end>(?:;\\d+)*m)`,
|
|
44
|
-
"g"
|
|
45
|
-
);
|
|
46
|
-
const replace = `$<start>${reopenCode}$<end>`;
|
|
47
|
-
|
|
48
|
-
/** @type {(text: string) => string} */
|
|
49
|
-
const func = s => s ? openSequence + s.replace(rxClose, replace) + closeSequence : s;
|
|
50
|
-
|
|
51
|
-
return Object.assign(func, {
|
|
52
|
-
codes : {open, close},
|
|
53
|
-
open : openSequence,
|
|
54
|
-
close : closeSequence,
|
|
55
|
-
|
|
56
|
-
/** @type {(...styles: SGR[]) => SGR} */
|
|
57
|
-
combine: (...styles) => sgr(
|
|
58
|
-
combine(open, styles.map(s => s.codes.open)),
|
|
59
|
-
combine(close, styles.map(s => s.codes.close)),
|
|
60
|
-
),
|
|
61
|
-
});
|
|
62
|
-
};
|
|
63
|
-
|
|
64
|
-
/** @type {SGR} */
|
|
65
|
-
const disabledSGR = Object.assign(/** @type {(text: string) => string} */ s => s, {
|
|
66
|
-
codes : {open: 0, close: 0},
|
|
67
|
-
open : "",
|
|
68
|
-
close : "",
|
|
69
|
-
combine : () => disabledSGR,
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
/** @type {typeof sgr} */
|
|
73
|
-
const disabled = () => disabledSGR;
|
|
74
|
-
|
|
75
|
-
const makeSGR = (enabled = true) => enabled ? sgr : disabled;
|
|
76
|
-
|
|
77
|
-
module.exports = {makeSGR};
|
package/src/simplify/atom.js
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
/** @typedef {import("./types").BuildAtom} BuildAtom */
|
|
4
|
-
|
|
5
|
-
/** @type {BuildAtom} */
|
|
6
|
-
function buildExtendedColorAtom(attribute, codes, index) {
|
|
7
|
-
switch (codes[index + 1]) {
|
|
8
|
-
case 2:
|
|
9
|
-
if (index + 5 >= codes.length)
|
|
10
|
-
return {attribute, code: codes.slice(index), skip: codes.length - index - 1};
|
|
11
|
-
return {attribute, code: codes.slice(index, index + 5), skip: 4};
|
|
12
|
-
case 5:
|
|
13
|
-
if (index + 3 >= codes.length)
|
|
14
|
-
return {attribute, code: codes.slice(index), skip: codes.length - index - 1};
|
|
15
|
-
return {attribute, code: codes.slice(index, index + 3), skip: 2};
|
|
16
|
-
default:
|
|
17
|
-
return {attribute, code: codes.slice(index, index + 2), skip: 1};
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
/** @type {BuildAtom} */
|
|
22
|
-
function buildIntensityAtom(attribute, codes, index, state) {
|
|
23
|
-
const code = codes[index];
|
|
24
|
-
if (code === 22)
|
|
25
|
-
return {attribute, code: [code]};
|
|
26
|
-
|
|
27
|
-
const current = state.get("intensity");
|
|
28
|
-
if (
|
|
29
|
-
// If there is no intensity currently in the state, then we can just set the new state.
|
|
30
|
-
!current ||
|
|
31
|
-
// If the current intensity is normal (22), then we can just set the new state.
|
|
32
|
-
// Note that while the ultimate transition may return a code sequence of `[22, 1]` or
|
|
33
|
-
// `[22, 2]`, in our state representation, the only two-code intensity is `[1, 2]`.
|
|
34
|
-
current[0] === 22 ||
|
|
35
|
-
// If the current intensity is equal to the new intensity, then return the same state.
|
|
36
|
-
current.length === 1 && current[0] === code
|
|
37
|
-
)
|
|
38
|
-
return {attribute, code: [code]};
|
|
39
|
-
|
|
40
|
-
// Otherwise, we need to set both intensity codes.
|
|
41
|
-
return {attribute, code: [1, 2]};
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
module.exports = {buildExtendedColorAtom, buildIntensityAtom};
|
package/src/simplify/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
module.exports = require("./simplify");
|
package/src/simplify/state.js
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
const {lookUpAtom} = require("./lookup");
|
|
4
|
-
const {arraysEqual, transitionIntensity} = require("./utils");
|
|
5
|
-
|
|
6
|
-
/** @typedef {import("./types").Attribute} Attribute */
|
|
7
|
-
/** @typedef {import("./types").AttributeMap} AttributeMap */
|
|
8
|
-
|
|
9
|
-
/** @type {Map<Attribute, number[]>} */
|
|
10
|
-
const defaultCodes = new Map([
|
|
11
|
-
["intensity", [22]],
|
|
12
|
-
["italic", [23]],
|
|
13
|
-
["underline", [24]],
|
|
14
|
-
["inverse", [27]],
|
|
15
|
-
["hidden", [28]],
|
|
16
|
-
["strikethrough",[29]],
|
|
17
|
-
["fg", [39]],
|
|
18
|
-
["bg", [49]],
|
|
19
|
-
["frame", [54]],
|
|
20
|
-
["overline", [55]],
|
|
21
|
-
]);
|
|
22
|
-
|
|
23
|
-
/** @type {AttributeMap} */
|
|
24
|
-
class State extends Map {
|
|
25
|
-
/** @type {(codes: number[]) => number[]} */
|
|
26
|
-
update(codes) {
|
|
27
|
-
/** @type {AttributeMap} */
|
|
28
|
-
let snapshot = new Map(this);
|
|
29
|
-
|
|
30
|
-
/** @type {Set<Attribute>} */
|
|
31
|
-
const attributes = new Set();
|
|
32
|
-
|
|
33
|
-
for (let i = 0; i < codes.length; i++) {
|
|
34
|
-
const {attribute, code, skip} = lookUpAtom(codes, i, this);
|
|
35
|
-
|
|
36
|
-
if (attribute === "reset") {
|
|
37
|
-
attributes.clear();
|
|
38
|
-
this.clear();
|
|
39
|
-
attributes.add("reset");
|
|
40
|
-
for (const [attr, defaultCode] of defaultCodes)
|
|
41
|
-
this.set(attr, defaultCode);
|
|
42
|
-
|
|
43
|
-
snapshot = new Map(this);
|
|
44
|
-
continue;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
attributes.add(attribute);
|
|
48
|
-
this.set(attribute, code);
|
|
49
|
-
|
|
50
|
-
if (skip)
|
|
51
|
-
i += skip;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
return Array.from(attributes).flatMap(attribute => {
|
|
55
|
-
if (attribute === "reset")
|
|
56
|
-
return [0];
|
|
57
|
-
|
|
58
|
-
const code = this.get(attribute);
|
|
59
|
-
|
|
60
|
-
if (arraysEqual(code, snapshot.get(attribute)))
|
|
61
|
-
return [];
|
|
62
|
-
|
|
63
|
-
if (attribute === "intensity") {
|
|
64
|
-
const previous = snapshot.get(attribute);
|
|
65
|
-
return transitionIntensity(previous, code);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
return code;
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
module.exports = {State};
|
package/src/strip.js
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
const {rxCSI, rxUnsafe} = require("./patterns");
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Remove all ANSI escape codes from the given text.
|
|
7
|
-
* @type {(text: string) => string}
|
|
8
|
-
*/
|
|
9
|
-
const strip = text => text.replace(new RegExp(rxCSI), "");
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Calculate the visible length of a string with ANSI escape codes stripped.
|
|
13
|
-
* @type {(text: string) => number}
|
|
14
|
-
*/
|
|
15
|
-
const visibleLength = text => strip(text).length;
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Remove all ANSI escape codes except SGR codes (m), which are used for color and styling.
|
|
19
|
-
* @type {(text: string) => string}
|
|
20
|
-
*/
|
|
21
|
-
const sanitize = text => text.replace(new RegExp(rxUnsafe), "");
|
|
22
|
-
|
|
23
|
-
module.exports = {strip, visibleLength, sanitize};
|