@promptctl/rich-js 0.8.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +68 -1
- package/dist/core/box.d.ts +93 -39
- package/dist/core/box.d.ts.map +1 -1
- package/dist/core/box.js +348 -490
- package/dist/core/box.js.map +1 -1
- package/dist/core/color.d.ts.map +1 -1
- package/dist/core/color.js +22 -8
- package/dist/core/color.js.map +1 -1
- package/dist/core/console.d.ts +2 -4
- package/dist/core/console.d.ts.map +1 -1
- package/dist/core/console.js +35 -24
- package/dist/core/console.js.map +1 -1
- package/dist/core/highlighter.d.ts +2 -1
- package/dist/core/highlighter.d.ts.map +1 -1
- package/dist/core/highlighter.js +28 -6
- package/dist/core/highlighter.js.map +1 -1
- package/dist/{renderables → core}/json.d.ts +8 -3
- package/dist/core/json.d.ts.map +1 -0
- package/dist/{renderables → core}/json.js +7 -2
- package/dist/core/json.js.map +1 -0
- package/dist/core/markup.d.ts +6 -7
- package/dist/core/markup.d.ts.map +1 -1
- package/dist/core/markup.js +124 -32
- package/dist/core/markup.js.map +1 -1
- package/dist/core/pretty.d.ts +56 -21
- package/dist/core/pretty.d.ts.map +1 -1
- package/dist/core/pretty.js +210 -116
- package/dist/core/pretty.js.map +1 -1
- package/dist/core/protocol.d.ts +16 -0
- package/dist/core/protocol.d.ts.map +1 -1
- package/dist/core/protocol.js +13 -0
- package/dist/core/protocol.js.map +1 -1
- package/dist/core/segment.d.ts +5 -0
- package/dist/core/segment.d.ts.map +1 -1
- package/dist/core/segment.js +9 -3
- package/dist/core/segment.js.map +1 -1
- package/dist/core/strip.d.ts +9 -5
- package/dist/core/strip.d.ts.map +1 -1
- package/dist/core/strip.js +39 -41
- package/dist/core/strip.js.map +1 -1
- package/dist/core/style.d.ts +19 -0
- package/dist/core/style.d.ts.map +1 -1
- package/dist/core/style.js +46 -38
- package/dist/core/style.js.map +1 -1
- package/dist/core/text.d.ts +102 -4
- package/dist/core/text.d.ts.map +1 -1
- package/dist/core/text.js +322 -184
- package/dist/core/text.js.map +1 -1
- package/dist/core/wrap.d.ts +42 -0
- package/dist/core/wrap.d.ts.map +1 -0
- package/dist/core/wrap.js +128 -0
- package/dist/core/wrap.js.map +1 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/renderables/markdown.d.ts +1 -1
- package/dist/renderables/markdown.d.ts.map +1 -1
- package/dist/renderables/markdown.js +7 -14
- package/dist/renderables/markdown.js.map +1 -1
- package/dist/renderables/padding.d.ts +1 -1
- package/dist/renderables/padding.d.ts.map +1 -1
- package/dist/renderables/padding.js +5 -11
- package/dist/renderables/padding.js.map +1 -1
- package/dist/renderables/panel.d.ts +4 -4
- package/dist/renderables/panel.d.ts.map +1 -1
- package/dist/renderables/panel.js +39 -39
- package/dist/renderables/panel.js.map +1 -1
- package/dist/renderables/progress.d.ts +3 -3
- package/dist/renderables/progress.d.ts.map +1 -1
- package/dist/renderables/progress.js +11 -9
- package/dist/renderables/progress.js.map +1 -1
- package/dist/renderables/progressBar.d.ts +3 -3
- package/dist/renderables/progressBar.d.ts.map +1 -1
- package/dist/renderables/progressBar.js +9 -15
- package/dist/renderables/progressBar.js.map +1 -1
- package/dist/renderables/prompt.js +1 -1
- package/dist/renderables/prompt.js.map +1 -1
- package/dist/renderables/rule.d.ts +1 -1
- package/dist/renderables/rule.d.ts.map +1 -1
- package/dist/renderables/rule.js +5 -10
- package/dist/renderables/rule.js.map +1 -1
- package/dist/renderables/spinner.d.ts +2 -2
- package/dist/renderables/spinner.d.ts.map +1 -1
- package/dist/renderables/spinner.js +6 -11
- package/dist/renderables/spinner.js.map +1 -1
- package/dist/renderables/status.d.ts.map +1 -1
- package/dist/renderables/status.js +5 -11
- package/dist/renderables/status.js.map +1 -1
- package/dist/renderables/table.d.ts +54 -16
- package/dist/renderables/table.d.ts.map +1 -1
- package/dist/renderables/table.js +239 -99
- package/dist/renderables/table.js.map +1 -1
- package/dist/renderables/traceback.d.ts +1 -1
- package/dist/renderables/traceback.d.ts.map +1 -1
- package/dist/renderables/traceback.js +9 -8
- package/dist/renderables/traceback.js.map +1 -1
- package/dist/renderables/tree.d.ts +2 -2
- package/dist/renderables/tree.d.ts.map +1 -1
- package/dist/renderables/tree.js +16 -22
- package/dist/renderables/tree.js.map +1 -1
- package/dist/template-bindings/helpers.d.ts.map +1 -1
- package/dist/template-bindings/helpers.js +19 -1
- package/dist/template-bindings/helpers.js.map +1 -1
- package/package.json +20 -4
- package/dist/renderables/json.d.ts.map +0 -1
- package/dist/renderables/json.js.map +0 -1
- package/dist/renderables/pretty.d.ts +0 -29
- package/dist/renderables/pretty.d.ts.map +0 -1
- package/dist/renderables/pretty.js +0 -141
- package/dist/renderables/pretty.js.map +0 -1
- package/dist/themes/paletteResolver.d.ts +0 -35
- package/dist/themes/paletteResolver.d.ts.map +0 -1
- package/dist/themes/paletteResolver.js +0 -88
- package/dist/themes/paletteResolver.js.map +0 -1
- package/dist/widgets/host-stream.d.ts +0 -31
- package/dist/widgets/host-stream.d.ts.map +0 -1
- package/dist/widgets/host-stream.js +0 -36
- package/dist/widgets/host-stream.js.map +0 -1
- package/dist/widgets/terminal-host.d.ts +0 -138
- package/dist/widgets/terminal-host.d.ts.map +0 -1
- package/dist/widgets/terminal-host.js +0 -127
- package/dist/widgets/terminal-host.js.map +0 -1
|
@@ -24,7 +24,7 @@ export declare class Traceback implements Renderable {
|
|
|
24
24
|
readonly width: number | undefined;
|
|
25
25
|
readonly theme: string | undefined;
|
|
26
26
|
constructor(error: Error, options?: TracebackOptions);
|
|
27
|
-
render(
|
|
27
|
+
render(options: RenderOptions): Iterable<Segment>;
|
|
28
28
|
private _renderFrame;
|
|
29
29
|
}
|
|
30
30
|
//# sourceMappingURL=traceback.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traceback.d.ts","sourceRoot":"","sources":["../../src/renderables/traceback.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"traceback.d.ts","sourceRoot":"","sources":["../../src/renderables/traceback.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGrE,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAkCD,qBAAa,SAAU,YAAW,UAAU;IAC1C,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;gBAEvB,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,gBAAgB;IASnD,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC;IA6ClD,OAAO,CAAE,YAAY;CAiBtB"}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { Segment } from "../core/segment.js";
|
|
11
11
|
import { Style } from "../core/style.js";
|
|
12
|
+
import { getStyle } from "../core/protocol.js";
|
|
12
13
|
function parseStack(error) {
|
|
13
14
|
const stack = error.stack ?? "";
|
|
14
15
|
const lines = stack.split("\n");
|
|
@@ -44,9 +45,9 @@ export class Traceback {
|
|
|
44
45
|
this.width = options?.width;
|
|
45
46
|
this.theme = options?.theme;
|
|
46
47
|
}
|
|
47
|
-
*render(
|
|
48
|
-
const excTypeStyle =
|
|
49
|
-
const textStyle =
|
|
48
|
+
*render(options) {
|
|
49
|
+
const excTypeStyle = getStyle(options, "traceback.exc_type");
|
|
50
|
+
const textStyle = getStyle(options, "traceback.text");
|
|
50
51
|
// Error type and message
|
|
51
52
|
const errorName = this.error.name || "Error";
|
|
52
53
|
const errorMessage = this.error.message || "";
|
|
@@ -70,23 +71,23 @@ export class Traceback {
|
|
|
70
71
|
const last = displayFrames.slice(-half);
|
|
71
72
|
const omitted = displayFrames.length - this.maxFrames;
|
|
72
73
|
for (const frame of first) {
|
|
73
|
-
yield* this._renderFrame(frame);
|
|
74
|
+
yield* this._renderFrame(frame, options);
|
|
74
75
|
}
|
|
75
76
|
yield new Segment(` ... ${omitted} frames omitted ...`, textStyle);
|
|
76
77
|
yield Segment.line();
|
|
77
78
|
for (const frame of last) {
|
|
78
|
-
yield* this._renderFrame(frame);
|
|
79
|
+
yield* this._renderFrame(frame, options);
|
|
79
80
|
}
|
|
80
81
|
}
|
|
81
82
|
else {
|
|
82
83
|
for (const frame of displayFrames) {
|
|
83
|
-
yield* this._renderFrame(frame);
|
|
84
|
+
yield* this._renderFrame(frame, options);
|
|
84
85
|
}
|
|
85
86
|
}
|
|
86
87
|
}
|
|
87
|
-
*_renderFrame(frame) {
|
|
88
|
+
*_renderFrame(frame, options) {
|
|
88
89
|
const pathStyle = Style.parse("dim");
|
|
89
|
-
const lineNoStyle =
|
|
90
|
+
const lineNoStyle = getStyle(options, "traceback.offset");
|
|
90
91
|
yield new Segment(" ");
|
|
91
92
|
// Spec: suppressed frames show file and line only — no function name
|
|
92
93
|
if (frame.function && !frame.suppressed) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traceback.js","sourceRoot":"","sources":["../../src/renderables/traceback.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"traceback.js","sourceRoot":"","sources":["../../src/renderables/traceback.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,8 +16,8 @@ export declare class Tree implements Renderable, Measurable {
|
|
|
16
16
|
readonly children: Tree[];
|
|
17
17
|
expanded: boolean;
|
|
18
18
|
readonly hideRoot: boolean;
|
|
19
|
-
readonly guideStyle: Style;
|
|
20
|
-
readonly style: Style;
|
|
19
|
+
readonly guideStyle: string | Style;
|
|
20
|
+
readonly style: string | Style;
|
|
21
21
|
constructor(label: string | RichText | Renderable, options?: TreeOptions);
|
|
22
22
|
add(label: string | RichText | Renderable, options?: TreeOptions): Tree;
|
|
23
23
|
render(rawOptions: RenderOptions): Iterable<Segment>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../src/renderables/tree.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,KAAK,EAAc,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,aAAa,EACd,MAAM,qBAAqB,CAAC;AAe7B,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CACxB;
|
|
1
|
+
{"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../src/renderables/tree.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,KAAK,EAAc,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,aAAa,EACd,MAAM,qBAAqB,CAAC;AAe7B,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CACxB;AAkCD,qBAAa,IAAK,YAAW,UAAU,EAAE,UAAU;IACjD,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,KAAK,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC;gBAG7B,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,EACrC,OAAO,CAAC,EAAE,WAAW;IAUvB,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI;IAUtE,MAAM,CAAC,UAAU,EAAE,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC;IAOrD;;;;;;;;OAQG;IACH,OAAO,CAAE,KAAK;IAwCd;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAE,UAAU;IAkBnB,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;CAqBtE"}
|
package/dist/renderables/tree.js
CHANGED
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { Segment } from "../core/segment.js";
|
|
5
5
|
import { cellFit, cellLen, asCellCol } from "../core/cells.js";
|
|
6
|
-
import {
|
|
6
|
+
import { NULL_STYLE } from "../core/style.js";
|
|
7
7
|
import { RichText } from "../core/text.js";
|
|
8
|
-
import { isMeasurable, withBoundedWidth, withCellWidth } from "../core/protocol.js";
|
|
8
|
+
import { getStyle, isMeasurable, withBoundedWidth, withCellWidth } from "../core/protocol.js";
|
|
9
9
|
import { Measurement } from "../core/measure.js";
|
|
10
10
|
// Guide characters
|
|
11
11
|
const GUIDE_BRANCH = "├── ";
|
|
@@ -16,13 +16,6 @@ const GUIDE_SPACE = " ";
|
|
|
16
16
|
const GUIDE_BRANCH_ASCII = "+-- ";
|
|
17
17
|
const GUIDE_LAST_ASCII = "+-- ";
|
|
18
18
|
const GUIDE_VERT_ASCII = "| ";
|
|
19
|
-
function resolveStyle(style) {
|
|
20
|
-
if (style === undefined)
|
|
21
|
-
return NULL_STYLE;
|
|
22
|
-
if (typeof style === "string")
|
|
23
|
-
return Style.parse(style);
|
|
24
|
-
return style;
|
|
25
|
-
}
|
|
26
19
|
function toRenderable(label) {
|
|
27
20
|
if (typeof label === "string")
|
|
28
21
|
return new RichText(label, { end: "" });
|
|
@@ -56,8 +49,8 @@ export class Tree {
|
|
|
56
49
|
this.children = [];
|
|
57
50
|
this.expanded = options?.expanded !== false;
|
|
58
51
|
this.hideRoot = options?.hideRoot ?? false;
|
|
59
|
-
this.guideStyle =
|
|
60
|
-
this.style =
|
|
52
|
+
this.guideStyle = options?.guide_style ?? NULL_STYLE;
|
|
53
|
+
this.style = options?.style ?? NULL_STYLE;
|
|
61
54
|
}
|
|
62
55
|
add(label, options) {
|
|
63
56
|
const child = new Tree(label, {
|
|
@@ -70,7 +63,7 @@ export class Tree {
|
|
|
70
63
|
}
|
|
71
64
|
*render(rawOptions) {
|
|
72
65
|
const options = withBoundedWidth(rawOptions, this);
|
|
73
|
-
for (const row of this._rows(options
|
|
66
|
+
for (const row of this._rows(options, [], !this.hideRoot)) {
|
|
74
67
|
yield* this._renderRow(options, row);
|
|
75
68
|
}
|
|
76
69
|
}
|
|
@@ -83,10 +76,10 @@ export class Tree {
|
|
|
83
76
|
* come to disagree about how many rows there are or how wide the guides on
|
|
84
77
|
* them run — which they would the moment a second walk existed.
|
|
85
78
|
*/
|
|
86
|
-
*_rows(
|
|
87
|
-
const
|
|
79
|
+
*_rows(options, prefixes, showLabel) {
|
|
80
|
+
const ascii = options.asciiOnly ?? false;
|
|
88
81
|
if (showLabel) {
|
|
89
|
-
yield { guides: prefixes
|
|
82
|
+
yield { guides: prefixes, guideStyles: [this.guideStyle], label: this.label };
|
|
90
83
|
}
|
|
91
84
|
if (!this.expanded)
|
|
92
85
|
return;
|
|
@@ -100,16 +93,16 @@ export class Tree {
|
|
|
100
93
|
? (isLast ? GUIDE_SPACE : GUIDE_VERT_ASCII)
|
|
101
94
|
: (isLast ? GUIDE_SPACE : GUIDE_VERT);
|
|
102
95
|
// Child label with branch guide
|
|
103
|
-
const childGuideStyle = child.guideStyle.isNull ? guideStyle : child.guideStyle;
|
|
104
96
|
yield {
|
|
105
|
-
guides: [...prefixes, branch]
|
|
97
|
+
guides: [...prefixes, branch],
|
|
98
|
+
guideStyles: [child.guideStyle, this.guideStyle],
|
|
106
99
|
label: child.label,
|
|
107
100
|
};
|
|
108
101
|
// Grandchildren with continuation prefix
|
|
109
102
|
if (child.expanded && child.children.length > 0) {
|
|
110
103
|
const grandPrefixes = [...prefixes, continuation];
|
|
111
104
|
for (let j = 0; j < child.children.length; j++) {
|
|
112
|
-
yield* child.children[j]._rows(
|
|
105
|
+
yield* child.children[j]._rows(options, grandPrefixes, true);
|
|
113
106
|
}
|
|
114
107
|
}
|
|
115
108
|
}
|
|
@@ -130,11 +123,12 @@ export class Tree {
|
|
|
130
123
|
* depending on label renderables to invent trailing newlines.
|
|
131
124
|
*/
|
|
132
125
|
*_renderRow(options, row) {
|
|
126
|
+
const guideStyle = row.guideStyles.map((style) => getStyle(options, style)).find((style) => !style.isNull);
|
|
133
127
|
let left = options.maxWidth;
|
|
134
|
-
for (const
|
|
128
|
+
for (const text of row.guides) {
|
|
135
129
|
const piece = cellFit(text, asCellCol(left));
|
|
136
130
|
if (piece.length > 0)
|
|
137
|
-
yield new Segment(piece,
|
|
131
|
+
yield new Segment(piece, guideStyle);
|
|
138
132
|
left -= cellLen(piece);
|
|
139
133
|
}
|
|
140
134
|
// The guides above are cropped by `cellFit`; the label was not, so a label
|
|
@@ -153,8 +147,8 @@ export class Tree {
|
|
|
153
147
|
// mode drew a 40-cell frame around nine cells of tree, and an unbounded
|
|
154
148
|
// offer came back unbounded.
|
|
155
149
|
let natural = 0;
|
|
156
|
-
for (const row of this._rows(parsed
|
|
157
|
-
const guideWidth = row.guides.reduce((sum,
|
|
150
|
+
for (const row of this._rows(parsed, [], !this.hideRoot)) {
|
|
151
|
+
const guideWidth = row.guides.reduce((sum, text) => sum + cellLen(text), 0);
|
|
158
152
|
natural = Math.max(natural, guideWidth + labelWidth(parsed, row.label));
|
|
159
153
|
}
|
|
160
154
|
const maximum = Math.min(natural, ceiling);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree.js","sourceRoot":"","sources":["../../src/renderables/tree.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,
|
|
1
|
+
{"version":3,"file":"tree.js","sourceRoot":"","sources":["../../src/renderables/tree.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAS,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAM3C,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC9F,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,mBAAmB;AACnB,MAAM,YAAY,GAAG,MAAM,CAAC;AAC5B,MAAM,UAAU,GAAG,MAAM,CAAC;AAC1B,MAAM,UAAU,GAAG,MAAM,CAAC;AAC1B,MAAM,WAAW,GAAG,MAAM,CAAC;AAE3B,iBAAiB;AACjB,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAClC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAChC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAShC,SAAS,YAAY,CAAC,KAAqC;IACzD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,QAAQ,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IACvE,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;QAC9B,4CAA4C;QAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAaD;;;;GAIG;AACH,SAAS,UAAU,CAAC,OAAsB,EAAE,KAAiB;IAC3D,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC,QAAQ,CAAC;IAClD,OAAO,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC;AACjD,CAAC;AAED,MAAM,OAAO,IAAI;IACN,KAAK,CAAa;IAClB,QAAQ,CAAS;IAC1B,QAAQ,CAAU;IACT,QAAQ,CAAU;IAClB,UAAU,CAAiB;IAC3B,KAAK,CAAiB;IAE/B,YACE,KAAqC,EACrC,OAAqB;QAErB,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,OAAO,EAAE,QAAQ,KAAK,KAAK,CAAC;QAC5C,IAAI,CAAC,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,KAAK,CAAC;QAC3C,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,WAAW,IAAI,UAAU,CAAC;QACrD,IAAI,CAAC,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,UAAU,CAAC;IAC5C,CAAC;IAED,GAAG,CAAC,KAAqC,EAAE,OAAqB;QAC9D,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE;YAC5B,WAAW,EAAE,OAAO,EAAE,WAAW;YACjC,KAAK,EAAE,OAAO,EAAE,KAAK;YACrB,QAAQ,EAAE,OAAO,EAAE,QAAQ;SAC5B,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,CAAC,MAAM,CAAC,UAAyB;QAC/B,MAAM,OAAO,GAAG,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACnD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1D,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACK,CAAC,KAAK,CACZ,OAAsB,EACtB,QAAkB,EAClB,SAAkB;QAElB,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;QAEzC,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAChF,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAE3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;YAChC,MAAM,MAAM,GAAG,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,KAAK;gBAClB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,kBAAkB,CAAC;gBAClD,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;YACzC,MAAM,YAAY,GAAG,KAAK;gBACxB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC;gBAC3C,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YAExC,gCAAgC;YAChC,MAAM;gBACJ,MAAM,EAAE,CAAC,GAAG,QAAQ,EAAE,MAAM,CAAC;gBAC7B,WAAW,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC;gBAChD,KAAK,EAAE,KAAK,CAAC,KAAK;aACnB,CAAC;YAEF,yCAAyC;YACzC,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChD,MAAM,aAAa,GAAG,CAAC,GAAG,QAAQ,EAAE,YAAY,CAAC,CAAC;gBAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC/C,KAAK,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;gBAChE,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACK,CAAC,UAAU,CACjB,OAAsB,EACtB,GAAY;QAEZ,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3G,IAAI,IAAI,GAAW,OAAO,CAAC,QAAQ,CAAC;QACpC,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,IAAI,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;YAC3D,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;QACD,2EAA2E;QAC3E,wEAAwE;QACxE,oCAAoC;QACpC,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QACjF,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAED,OAAO,CAAC,OAAsB;QAC5B,0EAA0E;QAC1E,sDAAsD;QACtD,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,OAAO,GAAW,MAAM,CAAC,QAAQ,CAAC;QAExC,yEAAyE;QACzE,yEAAyE;QACzE,wEAAwE;QACxE,6BAA6B;QAC7B,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzD,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5E,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3C,4EAA4E;QAC5E,8EAA8E;QAC9E,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IACpD,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/template-bindings/helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/template-bindings/helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,EAAoB,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG,QAAQ,CAS3E"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* registrations and the palette-function registrations use this same operation;
|
|
7
7
|
* keeping one copy prevents the two from drifting.
|
|
8
8
|
*/
|
|
9
|
+
import { Style, StyleSyntaxError } from "../core/style.js";
|
|
9
10
|
import { RichText } from "../core/text.js";
|
|
10
11
|
/**
|
|
11
12
|
* Apply a style on top of an already-styled RichText fragment.
|
|
@@ -25,7 +26,24 @@ export function applyStyleToFragment(child, style) {
|
|
|
25
26
|
throw new TypeError(`template function expected a RichText fragment, got ${typeof child === "object" ? Object.prototype.toString.call(child) : typeof child}`);
|
|
26
27
|
}
|
|
27
28
|
const result = child.copy();
|
|
28
|
-
result.style = child.style.add(style);
|
|
29
|
+
result.style = baseStyleOf(child.style).add(style);
|
|
29
30
|
return result;
|
|
30
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* A fragment's base style as a `Style`. A string must parse as a definition: a
|
|
34
|
+
* name resolves only against the theme of the render that draws it, and a
|
|
35
|
+
* template runs before any render exists.
|
|
36
|
+
*/
|
|
37
|
+
function baseStyleOf(style) {
|
|
38
|
+
if (style instanceof Style)
|
|
39
|
+
return style;
|
|
40
|
+
try {
|
|
41
|
+
return Style.parse(style);
|
|
42
|
+
}
|
|
43
|
+
catch (err) {
|
|
44
|
+
if (!(err instanceof StyleSyntaxError))
|
|
45
|
+
throw err;
|
|
46
|
+
throw new TypeError(`template function cannot style a fragment whose base style "${style}" is not a style definition: a style name resolves only against the theme of a render`, { cause: err });
|
|
47
|
+
}
|
|
48
|
+
}
|
|
31
49
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/template-bindings/helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/template-bindings/helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAc,EAAE,KAAY;IAC/D,IAAI,CAAC,CAAC,KAAK,YAAY,QAAQ,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,SAAS,CACjB,uDAAuD,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,EAAE,CAC1I,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC5B,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACnD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,SAAS,WAAW,CAAC,KAAqB;IACxC,IAAI,KAAK,YAAY,KAAK;QAAE,OAAO,KAAK,CAAC;IACzC,IAAI,CAAC;QACH,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,CAAC,GAAG,YAAY,gBAAgB,CAAC;YAAE,MAAM,GAAG,CAAC;QAClD,MAAM,IAAI,SAAS,CACjB,+DAA+D,KAAK,uFAAuF,EAC3J,EAAE,KAAK,EAAE,GAAG,EAAE,CACf,CAAC;IACJ,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@promptctl/rich-js",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Rich text and beautiful formatting in the terminal — a TypeScript port of Python's Rich",
|
|
5
5
|
"type": "module",
|
|
6
|
+
"sideEffects": false,
|
|
6
7
|
"main": "dist/index.js",
|
|
7
8
|
"types": "dist/index.d.ts",
|
|
8
9
|
"exports": {
|
|
@@ -51,6 +52,7 @@
|
|
|
51
52
|
"dist"
|
|
52
53
|
],
|
|
53
54
|
"scripts": {
|
|
55
|
+
"prepublishOnly": "node scripts/verify-release-tag.mjs",
|
|
54
56
|
"build": "tsc",
|
|
55
57
|
"test": "vitest run",
|
|
56
58
|
"test:watch": "vitest",
|
|
@@ -89,11 +91,15 @@
|
|
|
89
91
|
],
|
|
90
92
|
"license": "MIT",
|
|
91
93
|
"engines": {
|
|
92
|
-
"node": "
|
|
94
|
+
"node": ">=20"
|
|
93
95
|
},
|
|
94
96
|
"devDependencies": {
|
|
95
97
|
"@playwright/test": "^1.60.0",
|
|
98
|
+
"@promptctl/go-template-js": "^0.5.0",
|
|
96
99
|
"@types/node": "^25.5.0",
|
|
100
|
+
"@types/semver": "^7.8.0",
|
|
101
|
+
"mobx": "^6.15.0",
|
|
102
|
+
"semver": "^7.8.5",
|
|
97
103
|
"strip-ansi": "^7.2.0",
|
|
98
104
|
"typescript": "^5.7.0",
|
|
99
105
|
"vite": "^7.3.3",
|
|
@@ -101,8 +107,18 @@
|
|
|
101
107
|
"vitest": "^3.0.0"
|
|
102
108
|
},
|
|
103
109
|
"dependencies": {
|
|
104
|
-
"@promptctl/go-template-js": "^0.5.0",
|
|
105
|
-
"mobx": "^6.15.0",
|
|
106
110
|
"string-width": "^8.2.0"
|
|
111
|
+
},
|
|
112
|
+
"peerDependencies": {
|
|
113
|
+
"@promptctl/go-template-js": "^0.5.0",
|
|
114
|
+
"mobx": "^6.15.0"
|
|
115
|
+
},
|
|
116
|
+
"peerDependenciesMeta": {
|
|
117
|
+
"@promptctl/go-template-js": {
|
|
118
|
+
"optional": true
|
|
119
|
+
},
|
|
120
|
+
"mobx": {
|
|
121
|
+
"optional": true
|
|
122
|
+
}
|
|
107
123
|
}
|
|
108
124
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../src/renderables/json.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,aAAa,EACd,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAID,qBAAa,cAAe,YAAW,UAAU,EAAE,UAAU;IAC3D,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAExB,OAAO;IAIP,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,cAAc;IAS5E,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,cAAc;IA4BpE,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC;IAIlD,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;CAGtE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/renderables/json.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAazD,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE,CAAC;AAE1C,MAAM,OAAO,cAAc;IAChB,IAAI,CAAW;IAExB,YAAoB,IAAc;QAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,UAAkB,EAAE,OAAqB;QACzD,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,KAAK,CAAC;QAE5C,mDAAmD;QACnD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAY,CAAC;QAC/C,OAAO,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAa,EAAE,OAAqB;QAClD,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,KAAK,CAAC;QAC5C,MAAM,WAAW,GAAG,OAAO,EAAE,SAAS,KAAK,KAAK,CAAC;QAEjD,MAAM,QAAQ,GAAG,QAAQ;YACvB,CAAC,CAAC,CAAC,IAAY,EAAE,KAAc,EAAE,EAAE;gBAC/B,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzE,MAAM,MAAM,GAA4B,EAAE,CAAC;oBAC3C,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAgC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;wBACrE,MAAM,CAAC,CAAC,CAAC,GAAI,KAAiC,CAAC,CAAC,CAAC,CAAC;oBACpD,CAAC;oBACD,OAAO,MAAM,CAAC;gBAChB,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;YACH,CAAC,CAAC,SAAS,CAAC;QAEd,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACvD,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;QAEhD,IAAI,WAAW,EAAE,CAAC;YAChB,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;QAED,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,CAAC,MAAM,CAAC,OAAsB;QAC5B,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,CAAC,OAAsB;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;CACF"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Pretty — formats JavaScript data structures with highlighting.
|
|
3
|
-
*/
|
|
4
|
-
import { Segment } from "../core/segment.js";
|
|
5
|
-
import type { Renderable, Measurable, RenderOptions } from "../core/protocol.js";
|
|
6
|
-
export interface PrettyOptions {
|
|
7
|
-
indent?: number;
|
|
8
|
-
expandAll?: boolean;
|
|
9
|
-
maxLength?: number;
|
|
10
|
-
maxString?: number;
|
|
11
|
-
indentGuides?: boolean;
|
|
12
|
-
}
|
|
13
|
-
export declare class Pretty implements Renderable, Measurable {
|
|
14
|
-
readonly data: unknown;
|
|
15
|
-
readonly indent: number;
|
|
16
|
-
readonly expandAll: boolean;
|
|
17
|
-
readonly maxLength: number | undefined;
|
|
18
|
-
readonly maxString: number | undefined;
|
|
19
|
-
readonly indentGuides: boolean;
|
|
20
|
-
constructor(data: unknown, options?: PrettyOptions);
|
|
21
|
-
render(options: RenderOptions): Iterable<Segment>;
|
|
22
|
-
measure(_options: RenderOptions): {
|
|
23
|
-
minimum: number;
|
|
24
|
-
maximum: number;
|
|
25
|
-
};
|
|
26
|
-
private _format;
|
|
27
|
-
private _addIndentGuides;
|
|
28
|
-
}
|
|
29
|
-
//# sourceMappingURL=pretty.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pretty.d.ts","sourceRoot":"","sources":["../../src/renderables/pretty.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAI7C,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,aAAa,EACd,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAID,qBAAa,MAAO,YAAW,UAAU,EAAE,UAAU;IACnD,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;gBAEnB,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,aAAa;IASjD,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC;IAYlD,OAAO,CAAC,QAAQ,EAAE,aAAa,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAUtE,OAAO,CAAC,OAAO;IA6Ff,OAAO,CAAC,gBAAgB;CAczB"}
|
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Pretty — formats JavaScript data structures with highlighting.
|
|
3
|
-
*/
|
|
4
|
-
import { cellLen } from "../core/cells.js";
|
|
5
|
-
import { Style } from "../core/style.js";
|
|
6
|
-
import { RichText } from "../core/text.js";
|
|
7
|
-
import { ReprHighlighter } from "../core/highlighter.js";
|
|
8
|
-
const reprHighlighter = new ReprHighlighter();
|
|
9
|
-
export class Pretty {
|
|
10
|
-
data;
|
|
11
|
-
indent;
|
|
12
|
-
expandAll;
|
|
13
|
-
maxLength;
|
|
14
|
-
maxString;
|
|
15
|
-
indentGuides;
|
|
16
|
-
constructor(data, options) {
|
|
17
|
-
this.data = data;
|
|
18
|
-
this.indent = options?.indent ?? 4;
|
|
19
|
-
this.expandAll = options?.expandAll ?? false;
|
|
20
|
-
this.maxLength = options?.maxLength;
|
|
21
|
-
this.maxString = options?.maxString;
|
|
22
|
-
this.indentGuides = options?.indentGuides !== false;
|
|
23
|
-
}
|
|
24
|
-
*render(options) {
|
|
25
|
-
const formatted = this._format(this.data, 0, options.maxWidth);
|
|
26
|
-
const text = new RichText(formatted, { end: "" });
|
|
27
|
-
reprHighlighter.highlight(text);
|
|
28
|
-
if (this.indentGuides) {
|
|
29
|
-
this._addIndentGuides(text);
|
|
30
|
-
}
|
|
31
|
-
yield* text.render(options);
|
|
32
|
-
}
|
|
33
|
-
measure(_options) {
|
|
34
|
-
const formatted = this._format(this.data, 0, _options.maxWidth);
|
|
35
|
-
const lines = formatted.split("\n");
|
|
36
|
-
let max = 0;
|
|
37
|
-
for (const line of lines) {
|
|
38
|
-
max = Math.max(max, cellLen(line));
|
|
39
|
-
}
|
|
40
|
-
return { minimum: 1, maximum: Math.min(max, _options.maxWidth) };
|
|
41
|
-
}
|
|
42
|
-
_format(value, depth, maxWidth) {
|
|
43
|
-
const indentStr = " ".repeat(this.indent * depth);
|
|
44
|
-
const innerIndent = " ".repeat(this.indent * (depth + 1));
|
|
45
|
-
if (value === null)
|
|
46
|
-
return "null";
|
|
47
|
-
if (value === undefined)
|
|
48
|
-
return "undefined";
|
|
49
|
-
switch (typeof value) {
|
|
50
|
-
case "string": {
|
|
51
|
-
let str = value;
|
|
52
|
-
if (this.maxString !== undefined && str.length > this.maxString) {
|
|
53
|
-
str = str.slice(0, this.maxString) + `+${value.length - this.maxString}`;
|
|
54
|
-
}
|
|
55
|
-
return JSON.stringify(str);
|
|
56
|
-
}
|
|
57
|
-
case "number":
|
|
58
|
-
case "bigint":
|
|
59
|
-
return String(value);
|
|
60
|
-
case "boolean":
|
|
61
|
-
return String(value);
|
|
62
|
-
case "symbol":
|
|
63
|
-
return value.toString();
|
|
64
|
-
case "function":
|
|
65
|
-
return `[Function: ${value.name || "anonymous"}]`;
|
|
66
|
-
}
|
|
67
|
-
if (Array.isArray(value)) {
|
|
68
|
-
if (value.length === 0)
|
|
69
|
-
return "[]";
|
|
70
|
-
const items = this.maxLength !== undefined
|
|
71
|
-
? value.slice(0, this.maxLength)
|
|
72
|
-
: value;
|
|
73
|
-
const remaining = this.maxLength !== undefined
|
|
74
|
-
? Math.max(0, value.length - this.maxLength)
|
|
75
|
-
: 0;
|
|
76
|
-
// Try compact first
|
|
77
|
-
if (!this.expandAll) {
|
|
78
|
-
const compact = "[" + items.map((v) => this._format(v, 0, maxWidth)).join(", ") +
|
|
79
|
-
(remaining > 0 ? `, ... +${remaining}` : "") + "]";
|
|
80
|
-
if (cellLen(indentStr + compact) <= maxWidth)
|
|
81
|
-
return compact;
|
|
82
|
-
}
|
|
83
|
-
const parts = items.map((v) => innerIndent + this._format(v, depth + 1, maxWidth));
|
|
84
|
-
if (remaining > 0)
|
|
85
|
-
parts.push(innerIndent + `... +${remaining}`);
|
|
86
|
-
return "[\n" + parts.join(",\n") + "\n" + indentStr + "]";
|
|
87
|
-
}
|
|
88
|
-
if (value instanceof Map) {
|
|
89
|
-
if (value.size === 0)
|
|
90
|
-
return "Map {}";
|
|
91
|
-
const entries = [...value.entries()];
|
|
92
|
-
const items = this.maxLength !== undefined ? entries.slice(0, this.maxLength) : entries;
|
|
93
|
-
const parts = items.map(([k, v]) => innerIndent + this._format(k, depth + 1, maxWidth) + " => " + this._format(v, depth + 1, maxWidth));
|
|
94
|
-
return "Map {\n" + parts.join(",\n") + "\n" + indentStr + "}";
|
|
95
|
-
}
|
|
96
|
-
if (value instanceof Set) {
|
|
97
|
-
if (value.size === 0)
|
|
98
|
-
return "Set {}";
|
|
99
|
-
const items = [...value];
|
|
100
|
-
const bounded = this.maxLength !== undefined ? items.slice(0, this.maxLength) : items;
|
|
101
|
-
const parts = bounded.map((v) => innerIndent + this._format(v, depth + 1, maxWidth));
|
|
102
|
-
return "Set {\n" + parts.join(",\n") + "\n" + indentStr + "}";
|
|
103
|
-
}
|
|
104
|
-
// Plain objects
|
|
105
|
-
if (typeof value === "object") {
|
|
106
|
-
const obj = value;
|
|
107
|
-
const keys = Object.keys(obj);
|
|
108
|
-
if (keys.length === 0)
|
|
109
|
-
return "{}";
|
|
110
|
-
const items = this.maxLength !== undefined ? keys.slice(0, this.maxLength) : keys;
|
|
111
|
-
const remaining = this.maxLength !== undefined ? Math.max(0, keys.length - this.maxLength) : 0;
|
|
112
|
-
// Try compact
|
|
113
|
-
if (!this.expandAll) {
|
|
114
|
-
const compact = "{ " + items.map((k) => `${k}: ${this._format(obj[k], 0, maxWidth)}`).join(", ") +
|
|
115
|
-
(remaining > 0 ? `, ... +${remaining}` : "") + " }";
|
|
116
|
-
if (cellLen(indentStr + compact) <= maxWidth)
|
|
117
|
-
return compact;
|
|
118
|
-
}
|
|
119
|
-
const parts = items.map((k) => innerIndent + `${k}: ${this._format(obj[k], depth + 1, maxWidth)}`);
|
|
120
|
-
if (remaining > 0)
|
|
121
|
-
parts.push(innerIndent + `... +${remaining}`);
|
|
122
|
-
return "{\n" + parts.join(",\n") + "\n" + indentStr + "}";
|
|
123
|
-
}
|
|
124
|
-
return String(value);
|
|
125
|
-
}
|
|
126
|
-
_addIndentGuides(text) {
|
|
127
|
-
const guideStyle = Style.parse("repr.indent");
|
|
128
|
-
const lines = text.plain.split("\n");
|
|
129
|
-
let offset = 0;
|
|
130
|
-
for (const line of lines) {
|
|
131
|
-
const leadingSpaces = line.length - line.trimStart().length;
|
|
132
|
-
for (let i = 0; i < leadingSpaces; i += this.indent) {
|
|
133
|
-
if (i + offset < text.length) {
|
|
134
|
-
text.stylize(guideStyle, offset + i, offset + i + 1);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
offset += line.length + 1; // +1 for newline
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
//# sourceMappingURL=pretty.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pretty.js","sourceRoot":"","sources":["../../src/renderables/pretty.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import type { ColorRgba } from "../core/color.js";
|
|
2
|
-
import { Palette } from "./palette.js";
|
|
3
|
-
export interface ResolveContext {
|
|
4
|
-
/**
|
|
5
|
-
* The background the result will be painted on. Required for specs whose
|
|
6
|
-
* meaning depends on a target: alpha (`primary 50%`) and auto-contrast
|
|
7
|
-
* (`auto`, `auto 33%`). Bare names and modifiers do not need it.
|
|
8
|
-
*/
|
|
9
|
-
against?: ColorRgba;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Resolves Textual-style spec strings against a Palette into ColorRgba values.
|
|
13
|
-
*
|
|
14
|
-
* Spec grammar:
|
|
15
|
-
* spec = name ("-darken-" N | "-lighten-" N)? (" " NN "%")?
|
|
16
|
-
* name = "auto" | <palette var name>
|
|
17
|
-
*
|
|
18
|
-
* Examples (against gruvbox):
|
|
19
|
-
* "primary" → palette["primary"]
|
|
20
|
-
* "primary-background" → palette["primary-background"] (name has hyphens)
|
|
21
|
-
* "primary-darken-3" → darken(palette["primary"], 3)
|
|
22
|
-
* "primary 50%" → alphaBlend(palette["primary"], against, 0.5)
|
|
23
|
-
* "auto 33%" → alphaBlend(contrastFor(against), against, 0.33)
|
|
24
|
-
* "primary-darken-3 50%" → alphaBlend(darken(palette["primary"], 3), against, 0.5)
|
|
25
|
-
*
|
|
26
|
-
* Returns null on: invalid syntax, missing var, or missing required `against`.
|
|
27
|
-
* Pure: same inputs always yield the same output, no internal state.
|
|
28
|
-
*/
|
|
29
|
-
export declare class PaletteResolver {
|
|
30
|
-
readonly palette: Palette;
|
|
31
|
-
constructor(palette: Palette);
|
|
32
|
-
resolve(spec: string, ctx?: ResolveContext): ColorRgba | null;
|
|
33
|
-
private lookupBase;
|
|
34
|
-
}
|
|
35
|
-
//# sourceMappingURL=paletteResolver.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"paletteResolver.d.ts","sourceRoot":"","sources":["../../src/themes/paletteResolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAiDvC,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,eAAe;IACd,QAAQ,CAAC,OAAO,EAAE,OAAO;gBAAhB,OAAO,EAAE,OAAO;IAErC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,cAAc,GAAG,SAAS,GAAG,IAAI;IAoB7D,OAAO,CAAC,UAAU;CASnB"}
|