@promptctl/rich-js 0.7.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 +99 -31
- package/dist/core/box.d.ts +96 -42
- 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/cells.d.ts +46 -1
- package/dist/core/cells.d.ts.map +1 -1
- package/dist/core/cells.js +55 -14
- package/dist/core/cells.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 +30 -14
- package/dist/core/console.d.ts.map +1 -1
- package/dist/core/console.js +176 -104
- 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 -9
- package/dist/core/markup.d.ts.map +1 -1
- package/dist/core/markup.js +153 -47
- package/dist/core/markup.js.map +1 -1
- package/dist/core/measure.d.ts +11 -0
- package/dist/core/measure.d.ts.map +1 -1
- package/dist/core/measure.js +15 -3
- package/dist/core/measure.js.map +1 -1
- package/dist/core/oklch.d.ts +22 -0
- package/dist/core/oklch.d.ts.map +1 -1
- package/dist/core/oklch.js +62 -18
- package/dist/core/oklch.js.map +1 -1
- package/dist/core/pretty.d.ts +122 -0
- package/dist/core/pretty.d.ts.map +1 -0
- package/dist/core/pretty.js +398 -0
- package/dist/core/pretty.js.map +1 -0
- package/dist/core/protocol.d.ts +80 -0
- package/dist/core/protocol.d.ts.map +1 -1
- package/dist/core/protocol.js +85 -0
- package/dist/core/protocol.js.map +1 -1
- package/dist/core/segment.d.ts +26 -0
- package/dist/core/segment.d.ts.map +1 -1
- package/dist/core/segment.js +45 -0
- 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/subscription.d.ts +13 -0
- package/dist/core/subscription.d.ts.map +1 -0
- package/dist/core/subscription.js +13 -0
- package/dist/core/subscription.js.map +1 -0
- package/dist/core/text.d.ts +102 -4
- package/dist/core/text.d.ts.map +1 -1
- package/dist/core/text.js +332 -162
- 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/host/host-stream.d.ts.map +1 -0
- package/dist/host/host-stream.js.map +1 -0
- package/dist/host/index.d.ts +4 -0
- package/dist/host/index.d.ts.map +1 -0
- package/dist/host/index.js +3 -0
- package/dist/host/index.js.map +1 -0
- package/dist/{widgets → host}/terminal-host.d.ts +20 -64
- package/dist/host/terminal-host.d.ts.map +1 -0
- package/dist/host/terminal-host.js +133 -0
- package/dist/host/terminal-host.js.map +1 -0
- package/dist/index.d.ts +13 -36
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +35 -22
- package/dist/index.js.map +1 -1
- package/dist/node/terminal-host.d.ts +85 -0
- package/dist/node/terminal-host.d.ts.map +1 -0
- package/dist/node/terminal-host.js +161 -0
- package/dist/node/terminal-host.js.map +1 -0
- package/dist/node/traceback.d.ts +28 -0
- package/dist/node/traceback.d.ts.map +1 -0
- package/dist/node/traceback.js +113 -0
- package/dist/node/traceback.js.map +1 -0
- package/dist/renderables/columns.d.ts +24 -2
- package/dist/renderables/columns.d.ts.map +1 -1
- package/dist/renderables/columns.js +91 -32
- package/dist/renderables/columns.js.map +1 -1
- package/dist/renderables/layout.d.ts +61 -5
- package/dist/renderables/layout.d.ts.map +1 -1
- package/dist/renderables/layout.js +191 -19
- package/dist/renderables/layout.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 +16 -3
- package/dist/renderables/padding.d.ts.map +1 -1
- package/dist/renderables/padding.js +96 -47
- package/dist/renderables/padding.js.map +1 -1
- package/dist/renderables/panel.d.ts +48 -7
- package/dist/renderables/panel.d.ts.map +1 -1
- package/dist/renderables/panel.js +175 -106
- 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 +90 -16
- package/dist/renderables/table.d.ts.map +1 -1
- package/dist/renderables/table.js +481 -223
- package/dist/renderables/table.js.map +1 -1
- package/dist/renderables/traceback.d.ts +7 -3
- package/dist/renderables/traceback.d.ts.map +1 -1
- package/dist/renderables/traceback.js +15 -18
- package/dist/renderables/traceback.js.map +1 -1
- package/dist/renderables/tree.d.ts +29 -4
- package/dist/renderables/tree.d.ts.map +1 -1
- package/dist/renderables/tree.js +86 -33
- package/dist/renderables/tree.js.map +1 -1
- package/dist/template-bindings/color-funcs.d.ts +3 -3
- package/dist/template-bindings/color-funcs.js +3 -3
- 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/dist/template-bindings/index.d.ts +6 -7
- package/dist/template-bindings/index.d.ts.map +1 -1
- package/dist/template-bindings/index.js +6 -7
- package/dist/template-bindings/index.js.map +1 -1
- package/dist/template-bindings/palette-funcs.d.ts +17 -5
- package/dist/template-bindings/palette-funcs.d.ts.map +1 -1
- package/dist/template-bindings/palette-funcs.js +69 -6
- package/dist/template-bindings/palette-funcs.js.map +1 -1
- package/dist/template-bindings/style-funcs.d.ts +1 -1
- package/dist/template-bindings/style-funcs.js +1 -1
- package/dist/themes/ramp.d.ts +84 -0
- package/dist/themes/ramp.d.ts.map +1 -0
- package/dist/themes/ramp.js +123 -0
- package/dist/themes/ramp.js.map +1 -0
- package/dist/widgets/dropdown.d.ts +1 -1
- package/dist/widgets/dropdown.js +1 -1
- package/dist/widgets/event-router.d.ts +3 -2
- package/dist/widgets/event-router.d.ts.map +1 -1
- package/dist/widgets/focus-manager.d.ts +2 -1
- package/dist/widgets/focus-manager.d.ts.map +1 -1
- package/dist/widgets/index.d.ts +3 -6
- package/dist/widgets/index.d.ts.map +1 -1
- package/dist/widgets/index.js +4 -3
- package/dist/widgets/index.js.map +1 -1
- package/dist/widgets/screen.d.ts +1 -1
- package/dist/widgets/screen.d.ts.map +1 -1
- package/dist/widgets/text-input.d.ts +2 -3
- package/dist/widgets/text-input.d.ts.map +1 -1
- package/dist/widgets/text-input.js +4 -12
- package/dist/widgets/text-input.js.map +1 -1
- package/dist/widgets/types.d.ts +1 -1
- package/dist/widgets/types.d.ts.map +1 -1
- package/dist/widgets/types.js.map +1 -1
- package/dist/widgets/widget-base.d.ts +2 -1
- package/dist/widgets/widget-base.d.ts.map +1 -1
- package/package.json +38 -6
- 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.map +0 -1
- package/dist/widgets/host-stream.js.map +0 -1
- package/dist/widgets/terminal-host.d.ts.map +0 -1
- package/dist/widgets/terminal-host.js +0 -258
- package/dist/widgets/terminal-host.js.map +0 -1
- /package/dist/{widgets → host}/host-stream.d.ts +0 -0
- /package/dist/{widgets → host}/host-stream.js +0 -0
package/dist/core/console.js
CHANGED
|
@@ -2,77 +2,94 @@
|
|
|
2
2
|
* Console — the central orchestrator for rendering styled output to the terminal.
|
|
3
3
|
*/
|
|
4
4
|
import { Segment } from "./segment.js";
|
|
5
|
-
import {
|
|
5
|
+
import { NULL_STYLE, DEFAULT_THEME } from "./style.js";
|
|
6
6
|
import { resolveColorSystem } from "./color.js";
|
|
7
7
|
import { RichText } from "./text.js";
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
8
|
+
import { renderMarkup } from "./markup.js";
|
|
9
|
+
import { Pretty } from "./pretty.js";
|
|
10
|
+
import { JSONRenderable } from "./json.js";
|
|
11
|
+
import { ReprHighlighter, NullHighlighter } from "./highlighter.js";
|
|
12
|
+
// [LAW:one-way-deps] exception: one of the two sanctioned upward edges out of
|
|
13
|
+
// `core/`, named in CLAUDE.md and pinned by `test/seam/layering.test.ts` — the
|
|
14
|
+
// orchestrator reaching down for `Rule`. `RuleOptions` rides the same edge
|
|
15
|
+
// rather than being restated here; see `rule()`.
|
|
10
16
|
import { Rule } from "../renderables/rule.js";
|
|
11
17
|
import { segmentsToString } from "./render.js";
|
|
12
18
|
import { isRenderable } from "./protocol.js";
|
|
13
|
-
function resolveStyle(style) {
|
|
14
|
-
if (style === undefined)
|
|
15
|
-
return NULL_STYLE;
|
|
16
|
-
if (typeof style === "string")
|
|
17
|
-
return Style.parse(style);
|
|
18
|
-
return style;
|
|
19
|
-
}
|
|
20
19
|
// [LAW:single-enforcer] Color spec → ColorDepth resolution lives in
|
|
21
20
|
// `resolveColorSystem`. This helper just normalizes the option shape (string |
|
|
22
21
|
// enum | null) into the cached `_colorSystem` field. WINDOWS has no string
|
|
23
22
|
// spec; callers reach it via the enum directly.
|
|
24
23
|
//
|
|
25
|
-
// [LAW:dataflow-not-control-flow] `isTTY`
|
|
26
|
-
// `resolveColorSystem` ignores
|
|
27
|
-
//
|
|
28
|
-
//
|
|
29
|
-
//
|
|
30
|
-
|
|
24
|
+
// [LAW:dataflow-not-control-flow] `isTTY` and `env` are forwarded
|
|
25
|
+
// unconditionally; `resolveColorSystem` ignores them for non-`"auto"` specs.
|
|
26
|
+
// Passing both is what keeps detection inside the console's injected
|
|
27
|
+
// environment — left to its own defaults, `detectColorSystem` would consult
|
|
28
|
+
// the ambient `process.env` and `process.stdout.isTTY` even for a console
|
|
29
|
+
// bound to a different stream.
|
|
30
|
+
function resolveOptionColorSystem(spec, detect) {
|
|
31
31
|
if (spec === null)
|
|
32
32
|
return null;
|
|
33
33
|
if (spec === undefined)
|
|
34
|
-
return resolveColorSystem("auto",
|
|
34
|
+
return resolveColorSystem("auto", detect);
|
|
35
35
|
if (typeof spec === "string")
|
|
36
|
-
return resolveColorSystem(spec,
|
|
36
|
+
return resolveColorSystem(spec, detect);
|
|
37
37
|
return spec;
|
|
38
38
|
}
|
|
39
|
-
//
|
|
40
|
-
//
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
39
|
+
// A host with an environment but no streams — what a browser looks like from
|
|
40
|
+
// here. Frozen so the shared instance cannot be mutated into a fake terminal.
|
|
41
|
+
const DETACHED_ENVIRONMENT = Object.freeze({
|
|
42
|
+
env: Object.freeze({}),
|
|
43
|
+
});
|
|
44
|
+
// [LAW:single-enforcer] The only read of the ambient `process` global in this
|
|
45
|
+
// module, and the reason every other function below takes its environment as
|
|
46
|
+
// an argument. `process` satisfies `ConsoleEnvironment` structurally, so the
|
|
47
|
+
// node path needs no adapter; the browser path degrades to a host that answers
|
|
48
|
+
// "no streams" rather than throwing at the reference.
|
|
49
|
+
function ambientEnvironment() {
|
|
50
|
+
return typeof process === "undefined" ? DETACHED_ENVIRONMENT : process;
|
|
51
|
+
}
|
|
52
|
+
// [LAW:one-source-of-truth] A console talks to exactly one stream, and every
|
|
53
|
+
// question it asks the host — are you a terminal, how wide are you, where do
|
|
54
|
+
// bytes go — is a question about *that* stream. Selecting it once, here, is
|
|
55
|
+
// what makes the three answers agree. When each site re-selected for itself,
|
|
56
|
+
// one of them (size) silently didn't, and a `Console({ stderr: true })` keyed
|
|
57
|
+
// its colour to stderr and its width to stdout.
|
|
58
|
+
function boundStream(environment, useStderr) {
|
|
59
|
+
return useStderr ? environment.stderr : environment.stdout;
|
|
60
|
+
}
|
|
61
|
+
// [LAW:single-enforcer] Effective TTY status of the console's output target is
|
|
62
|
+
// computed once, at construction, and cached — an explicit `file` is not a
|
|
63
|
+
// terminal, `forceTerminal` says it is regardless, and otherwise the bound
|
|
64
|
+
// stream answers. Every input is fixed at construction, so recomputing per
|
|
65
|
+
// read could only ever return the same answer twice.
|
|
66
|
+
function effectiveIsTTY(options, stream) {
|
|
44
67
|
if (options?.forceTerminal)
|
|
45
68
|
return true;
|
|
46
69
|
if (options?.file)
|
|
47
70
|
return false;
|
|
48
|
-
|
|
49
|
-
return false;
|
|
50
|
-
return (options?.stderr ? process.stderr : process.stdout)?.isTTY ?? false;
|
|
71
|
+
return stream?.isTTY ?? false;
|
|
51
72
|
}
|
|
52
|
-
function
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
return { width: w || 80, height: h || 24 };
|
|
59
|
-
}
|
|
60
|
-
return { width: 80, height: 24 };
|
|
73
|
+
function terminalSize(environment, stream) {
|
|
74
|
+
const cols = environment.env["COLUMNS"];
|
|
75
|
+
const lines = environment.env["LINES"];
|
|
76
|
+
const w = cols ? parseInt(cols, 10) : (stream?.columns ?? 80);
|
|
77
|
+
const h = lines ? parseInt(lines, 10) : (stream?.rows ?? 24);
|
|
78
|
+
return { width: w || 80, height: h || 24 };
|
|
61
79
|
}
|
|
62
80
|
// [LAW:single-enforcer] One trust-boundary check: when no `file:` was
|
|
63
|
-
// provided, the console
|
|
64
|
-
//
|
|
65
|
-
//
|
|
66
|
-
//
|
|
67
|
-
//
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
"
|
|
73
|
-
"ConsoleSink so output has somewhere to go.");
|
|
81
|
+
// provided, the console writes to the stream it is bound to — which a browser
|
|
82
|
+
// host does not have. Without this, the absence would surface as a `TypeError`
|
|
83
|
+
// deep inside `_write`. Centralizing it here keeps both consumers (`file`
|
|
84
|
+
// getter, `_write`) behaving identically — no second copy of the check to
|
|
85
|
+
// drift.
|
|
86
|
+
function defaultSink(stream) {
|
|
87
|
+
if (stream === undefined) {
|
|
88
|
+
throw new Error("Console: no `file` provided and the environment has no stream to " +
|
|
89
|
+
"write to (e.g. running in a browser). Pass `file: hostStream(host)` " +
|
|
90
|
+
"or any other ConsoleSink so output has somewhere to go.");
|
|
74
91
|
}
|
|
75
|
-
return
|
|
92
|
+
return stream;
|
|
76
93
|
}
|
|
77
94
|
// [LAW:dataflow-not-control-flow] Build one size-reading function at
|
|
78
95
|
// construction time from whichever options the caller supplied. The width
|
|
@@ -82,10 +99,10 @@ function defaultSink(useStderr) {
|
|
|
82
99
|
//
|
|
83
100
|
// The all-static and mixed cases get *different* closures: when both
|
|
84
101
|
// dimensions are fixed, the returned function is a constant — no
|
|
85
|
-
// `
|
|
102
|
+
// `terminalSize` call on every read, since neither value can change.
|
|
86
103
|
// When at least one dimension is dynamic, the closure consults
|
|
87
|
-
// `
|
|
88
|
-
function resolveGetSize(options) {
|
|
104
|
+
// `terminalSize` to fill in the missing side.
|
|
105
|
+
function resolveGetSize(options, environment, stream) {
|
|
89
106
|
if (options?.getSize)
|
|
90
107
|
return options.getSize;
|
|
91
108
|
const staticWidth = options?.width;
|
|
@@ -99,7 +116,7 @@ function resolveGetSize(options) {
|
|
|
99
116
|
return () => fixed;
|
|
100
117
|
}
|
|
101
118
|
return () => {
|
|
102
|
-
const term =
|
|
119
|
+
const term = terminalSize(environment, stream);
|
|
103
120
|
return {
|
|
104
121
|
width: staticWidth ?? term.width,
|
|
105
122
|
height: staticHeight ?? term.height,
|
|
@@ -107,6 +124,27 @@ function resolveGetSize(options) {
|
|
|
107
124
|
};
|
|
108
125
|
}
|
|
109
126
|
// --- Console ---
|
|
127
|
+
/** Shared because it is stateless: highlighting nothing has nothing to own. */
|
|
128
|
+
const NO_HIGHLIGHT = new NullHighlighter();
|
|
129
|
+
/**
|
|
130
|
+
* What `print` bounds a data argument by when the caller said nothing.
|
|
131
|
+
*
|
|
132
|
+
* `print` formats whatever it is handed, so it is the one place that has to
|
|
133
|
+
* assume nothing about the value's size, in any of the three ways a value can
|
|
134
|
+
* be large. Unbounded, `print(buffer)` emits a line per byte,
|
|
135
|
+
* `print(deeplyNested)` descends until the stack gives out, and a single
|
|
136
|
+
* response body assigned to a field arrives in full — each of them a debug line
|
|
137
|
+
* that costs megabytes or hangs the terminal. All three bounds announce
|
|
138
|
+
* themselves in the output (`... +N`, `{...}`, `+N` inside the quotes), so this
|
|
139
|
+
* truncates visibly and never silently. [LAW:no-silent-failure]
|
|
140
|
+
*
|
|
141
|
+
* `maxString` reaches only strings nested inside data; a string argument is
|
|
142
|
+
* printed by the arm above, where the caller asked for that string by name.
|
|
143
|
+
*
|
|
144
|
+
* A caller constructing a `Pretty` has seen their data and gets no defaults;
|
|
145
|
+
* these belong to the convenience path, not to the formatter.
|
|
146
|
+
*/
|
|
147
|
+
const PRINT_DATA_BOUNDS = { maxLength: 100, maxDepth: 16, maxString: 1000 };
|
|
110
148
|
export class Console {
|
|
111
149
|
_colorSystem;
|
|
112
150
|
// [LAW:one-source-of-truth] Size flows through a single function. Static
|
|
@@ -115,10 +153,13 @@ export class Console {
|
|
|
115
153
|
// through `_getSize()` — no second path, no second source to drift.
|
|
116
154
|
_getSize;
|
|
117
155
|
_style;
|
|
118
|
-
|
|
156
|
+
_isTerminal;
|
|
119
157
|
_forceInteractive;
|
|
120
158
|
_file;
|
|
121
|
-
|
|
159
|
+
// [LAW:one-source-of-truth] The resolved output stream, not the `stderr`
|
|
160
|
+
// flag that selected it. Storing the answer instead of the question is what
|
|
161
|
+
// stops `isTerminal`, `size`, and `file` from re-deriving it three ways.
|
|
162
|
+
_stream;
|
|
122
163
|
_record;
|
|
123
164
|
_markup;
|
|
124
165
|
_highlight;
|
|
@@ -132,17 +173,24 @@ export class Console {
|
|
|
132
173
|
// non-empty" — `string | null` makes that unrepresentable.
|
|
133
174
|
_capture;
|
|
134
175
|
constructor(options) {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
this.
|
|
138
|
-
this.
|
|
176
|
+
const environment = options?.environment ?? ambientEnvironment();
|
|
177
|
+
const stream = boundStream(environment, options?.stderr ?? false);
|
|
178
|
+
this._stream = stream;
|
|
179
|
+
this._isTerminal = effectiveIsTTY(options, stream);
|
|
180
|
+
this._colorSystem = resolveOptionColorSystem(options?.colorSystem, {
|
|
181
|
+
isTTY: this._isTerminal,
|
|
182
|
+
env: environment.env,
|
|
183
|
+
});
|
|
184
|
+
this._getSize = resolveGetSize(options, environment, stream);
|
|
185
|
+
// [LAW:no-ambient-temporal-coupling] The theme is assigned before the
|
|
186
|
+
// style, because the console's own style may be one of the theme's names.
|
|
187
|
+
this._theme = options?.theme ?? DEFAULT_THEME;
|
|
188
|
+
this._style = this._theme.resolve(options?.style ?? NULL_STYLE);
|
|
139
189
|
this._forceInteractive = options?.forceInteractive;
|
|
140
190
|
this._file = options?.file;
|
|
141
|
-
this._stderr = options?.stderr ?? false;
|
|
142
191
|
this._record = options?.record ?? false;
|
|
143
192
|
this._markup = options?.markup !== false;
|
|
144
193
|
this._highlight = options?.highlight !== false;
|
|
145
|
-
this._theme = options?.theme ?? new Theme();
|
|
146
194
|
this._highlighter = options?.highlighter ?? new ReprHighlighter();
|
|
147
195
|
this._recorded = [];
|
|
148
196
|
this._capture = null;
|
|
@@ -161,14 +209,7 @@ export class Console {
|
|
|
161
209
|
return "utf-8";
|
|
162
210
|
}
|
|
163
211
|
get isTerminal() {
|
|
164
|
-
|
|
165
|
-
return true;
|
|
166
|
-
if (this._file)
|
|
167
|
-
return false;
|
|
168
|
-
if (typeof process !== "undefined") {
|
|
169
|
-
return (this._stderr ? process.stderr : process.stdout)?.isTTY ?? false;
|
|
170
|
-
}
|
|
171
|
-
return false;
|
|
212
|
+
return this._isTerminal;
|
|
172
213
|
}
|
|
173
214
|
get isInteractive() {
|
|
174
215
|
if (this._forceInteractive !== undefined)
|
|
@@ -179,14 +220,14 @@ export class Console {
|
|
|
179
220
|
return this._colorSystem;
|
|
180
221
|
}
|
|
181
222
|
// [LAW:one-source-of-truth] Output target lookup matches `_write`'s:
|
|
182
|
-
// explicit `file` wins, otherwise `defaultSink`
|
|
183
|
-
// (or throws clearly
|
|
223
|
+
// explicit `file` wins, otherwise `defaultSink` returns the bound stream
|
|
224
|
+
// (or throws clearly when the environment has none). Exposed
|
|
184
225
|
// so renderables that bypass the segment pipeline (e.g. Live's raw control
|
|
185
226
|
// sequences) still write to the caller's configured stream. Return type is
|
|
186
227
|
// the narrow `ConsoleSink` — Live (and any external consumer) only needs
|
|
187
228
|
// `.write()`, so the type tells the truth about what the surface guarantees.
|
|
188
229
|
get file() {
|
|
189
|
-
return this._file ?? defaultSink(this.
|
|
230
|
+
return this._file ?? defaultSink(this._stream);
|
|
190
231
|
}
|
|
191
232
|
get theme() {
|
|
192
233
|
return this._theme;
|
|
@@ -197,6 +238,7 @@ export class Console {
|
|
|
197
238
|
isTerminal: this.isTerminal,
|
|
198
239
|
encoding: this.encoding,
|
|
199
240
|
asciiOnly: false,
|
|
241
|
+
theme: this._theme,
|
|
200
242
|
};
|
|
201
243
|
}
|
|
202
244
|
// --- Print ---
|
|
@@ -204,12 +246,17 @@ export class Console {
|
|
|
204
246
|
// Extract options from last arg if it's a PrintOptions
|
|
205
247
|
let opts = {};
|
|
206
248
|
let items;
|
|
249
|
+
// The trailing options object is only recognised when something precedes
|
|
250
|
+
// it. A lone object is data — `print({ style: "..." })` reads as a value to
|
|
251
|
+
// format, and treating it as options would emit an empty line, which is the
|
|
252
|
+
// one outcome this method must never produce. Nothing is given up: options
|
|
253
|
+
// configure the rendering of content, so a call carrying options and no
|
|
254
|
+
// content had nothing to render either way. [LAW:no-silent-failure]
|
|
207
255
|
const lastArg = args[args.length - 1];
|
|
208
|
-
if (args.length >
|
|
256
|
+
if (args.length > 1 &&
|
|
209
257
|
typeof lastArg === "object" &&
|
|
210
258
|
lastArg !== null &&
|
|
211
259
|
!isRenderable(lastArg) &&
|
|
212
|
-
!(lastArg instanceof RichText) &&
|
|
213
260
|
("style" in lastArg || "justify" in lastArg || "markup" in lastArg ||
|
|
214
261
|
"highlight" in lastArg || "overflow" in lastArg || "end" in lastArg ||
|
|
215
262
|
"softWrap" in lastArg || "crop" in lastArg || "sep" in lastArg)) {
|
|
@@ -223,45 +270,62 @@ export class Console {
|
|
|
223
270
|
const doHighlight = opts.highlight ?? this._highlight;
|
|
224
271
|
const sep = opts.sep ?? " ";
|
|
225
272
|
const end = opts.end ?? "\n";
|
|
226
|
-
const
|
|
273
|
+
const softWrap = opts.softWrap ?? false;
|
|
274
|
+
const printStyle = this._theme.resolve(opts.style ?? NULL_STYLE);
|
|
227
275
|
// Convert items to renderables
|
|
228
276
|
const renderables = [];
|
|
229
277
|
for (let i = 0; i < items.length; i++) {
|
|
230
278
|
if (i > 0 && sep) {
|
|
231
279
|
renderables.push(new RichText(sep, { end: "" }));
|
|
232
280
|
}
|
|
281
|
+
// Three arms, and they are the whole domain. A renderable draws itself.
|
|
282
|
+
// A string is the only kind of argument that can *contain* markup, so it
|
|
283
|
+
// is the only kind the markup dialect is applied to. Everything else is
|
|
284
|
+
// data, and `Pretty` is the single authority on how a JavaScript value
|
|
285
|
+
// displays — `String(value)` was a second, weaker one that answered
|
|
286
|
+
// `[object Object]` for every object and let the markup parser eat it.
|
|
287
|
+
// [LAW:one-source-of-truth]
|
|
233
288
|
const item = items[i];
|
|
234
289
|
if (isRenderable(item)) {
|
|
235
290
|
renderables.push(item);
|
|
236
291
|
}
|
|
237
|
-
else if (item
|
|
238
|
-
|
|
239
|
-
}
|
|
240
|
-
else {
|
|
241
|
-
const text = String(item);
|
|
242
|
-
let richText;
|
|
243
|
-
if (doMarkup) {
|
|
244
|
-
richText = renderMarkup(text);
|
|
245
|
-
}
|
|
246
|
-
else {
|
|
247
|
-
richText = new RichText(text);
|
|
248
|
-
}
|
|
292
|
+
else if (typeof item === "string") {
|
|
293
|
+
const richText = doMarkup ? renderMarkup(item) : new RichText(item);
|
|
249
294
|
richText.end = "";
|
|
250
295
|
if (doHighlight) {
|
|
251
296
|
this._highlighter.highlight(richText);
|
|
252
297
|
}
|
|
253
298
|
renderables.push(richText);
|
|
254
299
|
}
|
|
300
|
+
else {
|
|
301
|
+
// The highlighter travels with the value. `highlight` and a custom
|
|
302
|
+
// `highlighter` are console-wide settings, so they have to reach a
|
|
303
|
+
// formatted object the same way they reach a printed string; a `Pretty`
|
|
304
|
+
// left to its own default would outrank both. [LAW:dataflow-not-control-flow]
|
|
305
|
+
// the disabled case is an identity highlighter, not a skipped call.
|
|
306
|
+
// Indent guides are styling too, and travel with the same decision —
|
|
307
|
+
// the console owns what `highlight` means for everything it emits,
|
|
308
|
+
// rather than `Pretty` inferring it back out of the highlighter.
|
|
309
|
+
renderables.push(new Pretty(item, {
|
|
310
|
+
...PRINT_DATA_BOUNDS,
|
|
311
|
+
highlighter: doHighlight ? this._highlighter : NO_HIGHLIGHT,
|
|
312
|
+
indentGuides: doHighlight,
|
|
313
|
+
}));
|
|
314
|
+
}
|
|
255
315
|
}
|
|
256
316
|
// Render all items
|
|
257
317
|
const allSegments = [];
|
|
318
|
+
// [LAW:parse-dont-validate] `"ignore"` is not a way of cutting a line but
|
|
319
|
+
// the absence of an edge to cut at: no break, and nothing cut at the width.
|
|
320
|
+
// That is what `noWrap` already means to `RichText`, so it crosses into the
|
|
321
|
+
// render as `noWrap`, and `overflow` carries only the methods a renderable
|
|
322
|
+
// applies. Soft wrap is the same request — the reference defaults it to
|
|
323
|
+
// `"ignore"` — which is why the two arrive at one field.
|
|
258
324
|
const renderOpts = {
|
|
259
|
-
|
|
260
|
-
isTerminal: this.isTerminal,
|
|
261
|
-
encoding: this.encoding,
|
|
325
|
+
...this.options,
|
|
262
326
|
justify: opts.justify === "default" ? undefined : opts.justify,
|
|
263
327
|
overflow: opts.overflow === "ignore" ? undefined : opts.overflow,
|
|
264
|
-
noWrap: opts.
|
|
328
|
+
noWrap: softWrap || opts.overflow === "ignore",
|
|
265
329
|
};
|
|
266
330
|
for (const renderable of renderables) {
|
|
267
331
|
allSegments.push(...renderable.render(renderOpts));
|
|
@@ -278,11 +342,17 @@ export class Console {
|
|
|
278
342
|
// every other emitted text so it survives recording — otherwise
|
|
279
343
|
// `exportText` and `exportHtml` would join consecutive prints onto a
|
|
280
344
|
// single line. [LAW:single-enforcer]
|
|
281
|
-
this._writeSegments(final);
|
|
282
345
|
// The common default end is "\n" — reuse Segment's cached newline rather
|
|
283
346
|
// than allocating one per print; only a non-default end needs a fresh one.
|
|
284
|
-
|
|
285
|
-
|
|
347
|
+
const terminator = end === "\n" ? Segment.line() : new Segment(end);
|
|
348
|
+
// Crop last, and crop the line-end with the rest: in the reference `end` is
|
|
349
|
+
// the tail of the printed line, so a line cut at the edge loses it too.
|
|
350
|
+
// Soft wrap turns cropping off whatever `crop` says, because a line it left
|
|
351
|
+
// whole is meant to reach the terminal whole. [LAW:dataflow-not-control-flow]
|
|
352
|
+
// Not cropping is an unbounded width rather than a skipped step — the same
|
|
353
|
+
// spelling `RichText` uses for `noWrap`.
|
|
354
|
+
const cropWidth = !softWrap && (opts.crop ?? true) ? this.width : Infinity;
|
|
355
|
+
this._writeSegments([...Segment.cropLines([...final, terminator], cropWidth)]);
|
|
286
356
|
}
|
|
287
357
|
log(...args) {
|
|
288
358
|
// Simple log implementation — adds timestamp
|
|
@@ -292,21 +362,23 @@ export class Console {
|
|
|
292
362
|
timeText.stylize("log.time");
|
|
293
363
|
this.print(timeText, ...args);
|
|
294
364
|
}
|
|
365
|
+
// [LAW:one-source-of-truth] `RuleOptions` is `Rule`'s, not a restatement of
|
|
366
|
+
// it. `console.ts` used to declare its own copy and field-by-field forward
|
|
367
|
+
// into this constructor, which made a second map of one shape — identical
|
|
368
|
+
// then, free to drift the moment `Rule` grew an option.
|
|
295
369
|
rule(title, options) {
|
|
296
|
-
const
|
|
297
|
-
characters: options?.characters,
|
|
298
|
-
align: options?.align,
|
|
299
|
-
style: options?.style,
|
|
300
|
-
});
|
|
301
|
-
const segments = [...rule.render(this.options)];
|
|
370
|
+
const segments = [...new Rule(title, options).render(this.options)];
|
|
302
371
|
this._writeSegments(segments);
|
|
303
372
|
}
|
|
373
|
+
// [LAW:one-source-of-truth] `JSONRenderable` is the one formatter for JSON and
|
|
374
|
+
// `JSONOptions` is its option set; this method only picks the constructor. It
|
|
375
|
+
// prints with soft wrap, as the reference does, so a line wider than the
|
|
376
|
+
// console reaches the terminal whole and the output stays valid JSON.
|
|
304
377
|
printJson(json, options) {
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
this.print(text);
|
|
378
|
+
const renderable = typeof json === "string"
|
|
379
|
+
? JSONRenderable.fromString(json, options)
|
|
380
|
+
: JSONRenderable.fromData(json, options);
|
|
381
|
+
this.print(renderable, { softWrap: true });
|
|
310
382
|
}
|
|
311
383
|
// --- Capture ---
|
|
312
384
|
// [LAW:one-source-of-truth] Redirect semantics match Python Rich's
|
|
@@ -406,7 +478,7 @@ export class Console {
|
|
|
406
478
|
this._capture += text;
|
|
407
479
|
return;
|
|
408
480
|
}
|
|
409
|
-
const target = this._file ?? defaultSink(this.
|
|
481
|
+
const target = this._file ?? defaultSink(this._stream);
|
|
410
482
|
target.write(text);
|
|
411
483
|
}
|
|
412
484
|
}
|
package/dist/core/console.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"console.js","sourceRoot":"","sources":["../../src/core/console.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"console.js","sourceRoot":"","sources":["../../src/core/console.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,8 @@ export declare class ReprHighlighter extends RegexHighlighter {
|
|
|
24
24
|
}
|
|
25
25
|
export declare class JSONHighlighter extends RegexHighlighter {
|
|
26
26
|
static baseStyle: string;
|
|
27
|
-
static highlights:
|
|
27
|
+
static highlights: string[];
|
|
28
|
+
highlight(text: RichText): void;
|
|
28
29
|
}
|
|
29
30
|
export declare class ISO8601Highlighter extends RegexHighlighter {
|
|
30
31
|
static baseStyle: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"highlighter.d.ts","sourceRoot":"","sources":["../../src/core/highlighter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAIrC,8BAAsB,WAAW;IAC/B,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAExC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;CAK9B;AAID,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;CAGjC;AAID,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,MAAM,CAAC,UAAU,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAM;IAC5C;;;qEAGiE;IACjE,MAAM,CAAC,SAAS,SAAM;IAEtB,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;CAuChC;AAKD,qBAAa,eAAgB,SAAQ,gBAAgB;IACnD,OAAgB,SAAS,SAAW;IACpC,OAAgB,UAAU,WAaxB;CACH;
|
|
1
|
+
{"version":3,"file":"highlighter.d.ts","sourceRoot":"","sources":["../../src/core/highlighter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAIrC,8BAAsB,WAAW;IAC/B,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAExC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;CAK9B;AAID,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;CAGjC;AAID,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,MAAM,CAAC,UAAU,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAM;IAC5C;;;qEAGiE;IACjE,MAAM,CAAC,SAAS,SAAM;IAEtB,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;CAuChC;AAKD,qBAAa,eAAgB,SAAQ,gBAAgB;IACnD,OAAgB,SAAS,SAAW;IACpC,OAAgB,UAAU,WAaxB;CACH;AASD,qBAAa,eAAgB,SAAQ,gBAAgB;IACnD,OAAgB,SAAS,SAAW;IAIpC,OAAgB,UAAU,WAOxB;IAOO,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;CASzC;AAID,qBAAa,kBAAmB,SAAQ,gBAAgB;IACtD,OAAgB,SAAS,SAAc;IACvC,OAAgB,UAAU,WAIxB;CACH"}
|
package/dist/core/highlighter.js
CHANGED
|
@@ -80,16 +80,38 @@ export class ReprHighlighter extends RegexHighlighter {
|
|
|
80
80
|
];
|
|
81
81
|
}
|
|
82
82
|
// --- JSONHighlighter ---
|
|
83
|
+
// A JSON string as Python Rich 9d8f9a3 matches one, `b` bytes prefix included:
|
|
84
|
+
// an opening quote with no backslash or word character before it, through the
|
|
85
|
+
// first quote with no backslash before it, so an escaped quote stays inside.
|
|
86
|
+
const JSON_STR = String.raw `(?<![\\\w])(?<str>b?".*?(?<!\\)")`;
|
|
83
87
|
export class JSONHighlighter extends RegexHighlighter {
|
|
84
88
|
static baseStyle = "json.";
|
|
89
|
+
// [LAW:dataflow-not-control-flow] One alternation, scanned once, as Rich's
|
|
90
|
+
// `_combine_regex` joins it. A token claims its characters where the scan
|
|
91
|
+
// meets it, so the `true` and `12` inside `"true 12"` belong to the string.
|
|
85
92
|
static highlights = [
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
93
|
+
[
|
|
94
|
+
String.raw `(?<brace>[\{\[\(\)\]\}])`,
|
|
95
|
+
String.raw `\b(?<bool_true>true)\b|\b(?<bool_false>false)\b|\b(?<null>null)\b`,
|
|
96
|
+
String.raw `(?<number>(?<!\w)\-?[0-9]+\.?[0-9]*(e[\-\+]?\d+?)?\b|0x[0-9a-fA-F]*)`,
|
|
97
|
+
JSON_STR,
|
|
98
|
+
].join("|"),
|
|
92
99
|
];
|
|
100
|
+
// A string followed by a colon is also a key. Its `json.key` span comes after
|
|
101
|
+
// its `json.str` span, so the key style lands on top. Each string is found on
|
|
102
|
+
// its own and then checked for a colon. One `string(?=:)` pattern would get
|
|
103
|
+
// this wrong: its lazy body can stretch past a value's closing quote to the
|
|
104
|
+
// next key's, marking `"b", "c"` in `{"a": "b", "c": 1}` as one key.
|
|
105
|
+
highlight(text) {
|
|
106
|
+
super.highlight(text);
|
|
107
|
+
const colon = /[ \n\r\t]*:/y;
|
|
108
|
+
for (const { index, 0: str } of text.plain.matchAll(new RegExp(JSON_STR, "g"))) {
|
|
109
|
+
const end = index + str.length;
|
|
110
|
+
colon.lastIndex = end;
|
|
111
|
+
if (colon.test(text.plain))
|
|
112
|
+
text.stylize("json.key", index, end);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
93
115
|
}
|
|
94
116
|
// --- ISO8601Highlighter ---
|
|
95
117
|
export class ISO8601Highlighter extends RegexHighlighter {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"highlighter.js","sourceRoot":"","sources":["../../src/core/highlighter.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"highlighter.js","sourceRoot":"","sources":["../../src/core/highlighter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* JSON — renders JSON data with syntax highlighting and pretty-printing.
|
|
3
|
+
*
|
|
4
|
+
* Lives in `core/` for the reason `pretty.ts` does, argued in its header: it
|
|
5
|
+
* turns foreign input into `RichText`, composes no other renderable, and
|
|
6
|
+
* imports core primitives only. `Console.printJson` delegates here, so this is
|
|
7
|
+
* where the console can reach it without an upward edge. [LAW:one-way-deps]
|
|
3
8
|
*/
|
|
4
|
-
import { Segment } from "
|
|
5
|
-
import { RichText } from "
|
|
6
|
-
import type { Renderable, Measurable, RenderOptions } from "
|
|
9
|
+
import { Segment } from "./segment.js";
|
|
10
|
+
import { RichText } from "./text.js";
|
|
11
|
+
import type { Renderable, Measurable, RenderOptions } from "./protocol.js";
|
|
7
12
|
export interface JSONOptions {
|
|
8
13
|
indent?: number;
|
|
9
14
|
sortKeys?: boolean;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../src/core/json.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,aAAa,EACd,MAAM,eAAe,CAAC;AAEvB,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,8 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* JSON — renders JSON data with syntax highlighting and pretty-printing.
|
|
3
|
+
*
|
|
4
|
+
* Lives in `core/` for the reason `pretty.ts` does, argued in its header: it
|
|
5
|
+
* turns foreign input into `RichText`, composes no other renderable, and
|
|
6
|
+
* imports core primitives only. `Console.printJson` delegates here, so this is
|
|
7
|
+
* where the console can reach it without an upward edge. [LAW:one-way-deps]
|
|
3
8
|
*/
|
|
4
|
-
import { RichText } from "
|
|
5
|
-
import { JSONHighlighter } from "
|
|
9
|
+
import { RichText } from "./text.js";
|
|
10
|
+
import { JSONHighlighter } from "./highlighter.js";
|
|
6
11
|
const highlighter = new JSONHighlighter();
|
|
7
12
|
export class JSONRenderable {
|
|
8
13
|
text;
|