@peteanderson/ansi 2.2.0 → 2.3.1
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 +12 -0
- package/dist/cjs/sgr/color/context.d.ts.map +1 -1
- package/dist/cjs/sgr/color/context.js +4 -2
- package/dist/cjs/sgr/color/context.js.map +1 -1
- package/dist/cjs/sgr/color/rgb.js +2 -2
- package/dist/cjs/sgr/color/rgb.js.map +1 -1
- package/dist/cjs/sgr/combine.d.ts +1 -1
- package/dist/cjs/sgr/combine.d.ts.map +1 -1
- package/dist/cjs/sgr/combine.js +3 -12
- package/dist/cjs/sgr/combine.js.map +1 -1
- package/dist/cjs/sgr/format-builder.d.ts +1 -1
- package/dist/cjs/sgr/format-builder.d.ts.map +1 -1
- package/dist/cjs/sgr/format-builder.js +22 -28
- 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 +1 -1
- package/dist/cjs/sgr/reset.js.map +1 -1
- package/dist/cjs/sgr/sgr.d.ts.map +1 -1
- package/dist/cjs/sgr/sgr.js +9 -10
- package/dist/cjs/sgr/sgr.js.map +1 -1
- package/dist/cjs/sgr/style.d.ts.map +1 -1
- package/dist/cjs/sgr/style.js +1 -1
- package/dist/cjs/sgr/style.js.map +1 -1
- package/dist/cjs/sgr/types.d.ts +2 -1
- package/dist/cjs/sgr/types.d.ts.map +1 -1
- package/dist/cjs/simplify/lookup.d.ts +2 -2
- package/dist/cjs/simplify/lookup.d.ts.map +1 -1
- package/dist/cjs/simplify/lookup.js +1 -0
- package/dist/cjs/simplify/lookup.js.map +1 -1
- package/dist/cjs/simplify/simplify.js +2 -2
- package/dist/cjs/simplify/simplify.js.map +1 -1
- package/dist/cjs/simplify/state.d.ts +3 -3
- package/dist/cjs/simplify/state.d.ts.map +1 -1
- package/dist/cjs/simplify/state.js.map +1 -1
- package/dist/cjs/simplify/types.d.ts +5 -4
- package/dist/cjs/simplify/types.d.ts.map +1 -1
- package/dist/cjs/simplify/utils.d.ts +3 -2
- package/dist/cjs/simplify/utils.d.ts.map +1 -1
- package/dist/cjs/simplify/utils.js.map +1 -1
- package/dist/esm/sgr/color/context.d.ts.map +1 -1
- package/dist/esm/sgr/color/context.js +4 -2
- package/dist/esm/sgr/color/context.js.map +1 -1
- package/dist/esm/sgr/color/rgb.js +2 -2
- package/dist/esm/sgr/color/rgb.js.map +1 -1
- package/dist/esm/sgr/combine.d.ts +1 -1
- package/dist/esm/sgr/combine.d.ts.map +1 -1
- package/dist/esm/sgr/combine.js +2 -12
- package/dist/esm/sgr/combine.js.map +1 -1
- package/dist/esm/sgr/format-builder.d.ts +1 -1
- package/dist/esm/sgr/format-builder.d.ts.map +1 -1
- package/dist/esm/sgr/format-builder.js +20 -27
- 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 +1 -1
- package/dist/esm/sgr/reset.js.map +1 -1
- package/dist/esm/sgr/sgr.d.ts.map +1 -1
- package/dist/esm/sgr/sgr.js +9 -10
- package/dist/esm/sgr/sgr.js.map +1 -1
- package/dist/esm/sgr/style.d.ts.map +1 -1
- package/dist/esm/sgr/style.js +1 -1
- package/dist/esm/sgr/style.js.map +1 -1
- package/dist/esm/sgr/types.d.ts +2 -1
- package/dist/esm/sgr/types.d.ts.map +1 -1
- package/dist/esm/simplify/lookup.d.ts +2 -2
- package/dist/esm/simplify/lookup.d.ts.map +1 -1
- package/dist/esm/simplify/lookup.js +1 -0
- package/dist/esm/simplify/lookup.js.map +1 -1
- package/dist/esm/simplify/simplify.js +2 -2
- package/dist/esm/simplify/simplify.js.map +1 -1
- package/dist/esm/simplify/state.d.ts +3 -3
- package/dist/esm/simplify/state.d.ts.map +1 -1
- package/dist/esm/simplify/state.js.map +1 -1
- package/dist/esm/simplify/types.d.ts +5 -4
- package/dist/esm/simplify/types.d.ts.map +1 -1
- package/dist/esm/simplify/utils.d.ts +3 -2
- package/dist/esm/simplify/utils.d.ts.map +1 -1
- package/dist/esm/simplify/utils.js.map +1 -1
- package/package.json +1 -1
- package/src/sgr/color/context.ts +4 -2
- package/src/sgr/color/rgb.ts +2 -2
- package/src/sgr/combine.ts +4 -13
- package/src/sgr/format-builder.ts +32 -39
- package/src/sgr/reset.ts +1 -1
- package/src/sgr/sgr.ts +10 -16
- package/src/sgr/style.ts +3 -3
- package/src/sgr/types.ts +2 -1
- package/src/simplify/lookup.ts +4 -3
- package/src/simplify/simplify.ts +3 -3
- package/src/simplify/state.ts +5 -5
- package/src/simplify/types.ts +7 -4
- package/src/simplify/utils.ts +7 -2
- package/src/utility-types.d.ts +5 -1
package/src/sgr/types.ts
CHANGED
|
@@ -22,7 +22,7 @@ export type ChainBuilder = <Keys extends ChainKey>(
|
|
|
22
22
|
baseFormat : FormatBase,
|
|
23
23
|
) => Chain<Keys>;
|
|
24
24
|
|
|
25
|
-
export type Code = number | number
|
|
25
|
+
export type Code = number | "" | ReadonlyArray<number | "">;
|
|
26
26
|
|
|
27
27
|
export interface FormatBase {
|
|
28
28
|
(text: string): string;
|
|
@@ -88,5 +88,6 @@ export interface SGR {
|
|
|
88
88
|
fg : Channel<Exclude<ChainKey, "fg">>;
|
|
89
89
|
bg : Channel<Exclude<ChainKey, "bg">>;
|
|
90
90
|
style : Style;
|
|
91
|
+
plain : Format<ChainKey>;
|
|
91
92
|
reset : string;
|
|
92
93
|
}
|
package/src/simplify/lookup.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import {buildExtendedColorAtom, buildIntensityAtom} from "./atom";
|
|
2
2
|
|
|
3
|
-
import type {Atom, Attribute, AttributeMap, BuildAtom} from "./types";
|
|
3
|
+
import type {Atom, Attribute, AttributeMap, BuildAtom, CodeArray} from "./types";
|
|
4
4
|
|
|
5
|
-
const codeMap: Record<number, [attribute: Attribute, buildAtom?: BuildAtom]> = {
|
|
5
|
+
const codeMap: Record<number | "", [attribute: Attribute, buildAtom?: BuildAtom]> = {
|
|
6
|
+
"" : ["reset"],
|
|
6
7
|
0 : ["reset"],
|
|
7
8
|
1 : ["intensity", buildIntensityAtom],
|
|
8
9
|
2 : ["intensity", buildIntensityAtom],
|
|
@@ -61,7 +62,7 @@ const codeMap: Record<number, [attribute: Attribute, buildAtom?: BuildAtom]> = {
|
|
|
61
62
|
107 : ["bg"],
|
|
62
63
|
};
|
|
63
64
|
|
|
64
|
-
export function lookUpAtom(codes:
|
|
65
|
+
export function lookUpAtom(codes: CodeArray, index: number, state: AttributeMap): Atom {
|
|
65
66
|
const code = codes[index];
|
|
66
67
|
const entry = codeMap[code];
|
|
67
68
|
|
package/src/simplify/simplify.ts
CHANGED
|
@@ -9,12 +9,12 @@ export function simplify(text: string): string {
|
|
|
9
9
|
let result = parts[0];
|
|
10
10
|
|
|
11
11
|
for (let i = 1; i < parts.length; ) {
|
|
12
|
-
|
|
13
|
-
let
|
|
12
|
+
const codes = parts[i++].split(";").map(s => s ? Number(s) : "");
|
|
13
|
+
let chunk = parts[i++];
|
|
14
14
|
|
|
15
15
|
while (!chunk && i < parts.length) {
|
|
16
16
|
// Merge consecutive SGR sequences with no text between them.
|
|
17
|
-
codes.push(...parts[i++].split(";").map(Number));
|
|
17
|
+
codes.push(...parts[i++].split(";").map(s => s ? Number(s) : ""));
|
|
18
18
|
chunk = parts[i++];
|
|
19
19
|
}
|
|
20
20
|
|
package/src/simplify/state.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {lookUpAtom} from "./lookup";
|
|
2
2
|
import {arraysEqual, transitionIntensity} from "./utils";
|
|
3
3
|
|
|
4
|
-
import type {Attribute, AttributeMap} from "./types";
|
|
4
|
+
import type {Attribute, AttributeMap, CodeArray} from "./types";
|
|
5
5
|
|
|
6
|
-
const defaultCodes: Map<Attribute,
|
|
6
|
+
const defaultCodes: Map<Attribute, CodeArray> = new Map([
|
|
7
7
|
["intensity", [22]],
|
|
8
8
|
["italic", [23]],
|
|
9
9
|
["underline", [24]],
|
|
@@ -16,7 +16,7 @@ const defaultCodes: Map<Attribute, number[]> = new Map([
|
|
|
16
16
|
["overline", [55]],
|
|
17
17
|
]);
|
|
18
18
|
|
|
19
|
-
export class State extends Map<Attribute,
|
|
19
|
+
export class State extends Map<Attribute, CodeArray> implements AttributeMap {
|
|
20
20
|
#isDefaultState(except?: Attribute): boolean {
|
|
21
21
|
for (const [attribute, defaultCode] of defaultCodes) {
|
|
22
22
|
if (attribute === except)
|
|
@@ -29,7 +29,7 @@ export class State extends Map<Attribute, number[]> implements AttributeMap {
|
|
|
29
29
|
return true;
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
update(codes:
|
|
32
|
+
update(codes: CodeArray): CodeArray {
|
|
33
33
|
let snapshot: AttributeMap = new Map(this);
|
|
34
34
|
|
|
35
35
|
const attributes = new Set<Attribute>();
|
|
@@ -58,7 +58,7 @@ export class State extends Map<Attribute, number[]> implements AttributeMap {
|
|
|
58
58
|
i += skip;
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
-
const rtn: Array<number |
|
|
61
|
+
const rtn: Array<number | ""> = [];
|
|
62
62
|
|
|
63
63
|
for (const attribute of attributes) {
|
|
64
64
|
if (attribute === "reset") {
|
package/src/simplify/types.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
export type CodeArray = ReadonlyArray<number | "">;
|
|
2
|
+
|
|
1
3
|
export type Attribute =
|
|
2
4
|
| "intensity"
|
|
3
5
|
| "italic"
|
|
@@ -10,19 +12,20 @@ export type Attribute =
|
|
|
10
12
|
| "frame"
|
|
11
13
|
| "overline"
|
|
12
14
|
| "reset"
|
|
13
|
-
| number
|
|
15
|
+
| number
|
|
16
|
+
| "";
|
|
14
17
|
|
|
15
|
-
export type AttributeMap = Map<Attribute,
|
|
18
|
+
export type AttributeMap = Map<Attribute, CodeArray>;
|
|
16
19
|
|
|
17
20
|
export interface Atom {
|
|
18
21
|
attribute : Attribute;
|
|
19
|
-
code :
|
|
22
|
+
code : CodeArray;
|
|
20
23
|
skip? : number;
|
|
21
24
|
}
|
|
22
25
|
|
|
23
26
|
export type BuildAtom = (
|
|
24
27
|
attribute : Attribute,
|
|
25
|
-
codes :
|
|
28
|
+
codes : CodeArray,
|
|
26
29
|
index : number,
|
|
27
30
|
state : AttributeMap,
|
|
28
31
|
) => Atom;
|
package/src/simplify/utils.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import type {CodeArray} from "./types";
|
|
2
|
+
|
|
3
|
+
export function arraysEqual<T>(a: readonly T[] | undefined, b: readonly T[] | undefined): boolean {
|
|
2
4
|
if (a === b)
|
|
3
5
|
return true;
|
|
4
6
|
|
|
@@ -13,7 +15,10 @@ export function arraysEqual<T>(a: T[] | undefined, b: T[] | undefined): boolean
|
|
|
13
15
|
return true;
|
|
14
16
|
}
|
|
15
17
|
|
|
16
|
-
export function transitionIntensity(
|
|
18
|
+
export function transitionIntensity(
|
|
19
|
+
previous : CodeArray | undefined,
|
|
20
|
+
current : CodeArray,
|
|
21
|
+
): CodeArray {
|
|
17
22
|
if (!previous || previous[0] === 22 || current[0] === 22)
|
|
18
23
|
return current;
|
|
19
24
|
|
package/src/utility-types.d.ts
CHANGED
|
@@ -15,4 +15,8 @@ type EntriesOf<T, K extends [...(keyof T)[]] = (keyof T)[]> = {
|
|
|
15
15
|
[P in keyof K]: K[P] extends keyof T ? EntryOf<T, K[P]> : never;
|
|
16
16
|
};
|
|
17
17
|
|
|
18
|
-
type SkipFirst<T> = T extends [infer First, ...infer Rest] ? Rest : [];
|
|
18
|
+
type SkipFirst<T> = T extends [infer First, ...infer Rest] ? Rest : [];
|
|
19
|
+
|
|
20
|
+
interface ArrayConstructor {
|
|
21
|
+
isArray(value: unknown): value is readonly unknown[];
|
|
22
|
+
}
|