@promptctl/rich-js 0.8.0 → 0.10.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/dist/widgets/button.d.ts.map +1 -1
- package/dist/widgets/button.js +4 -5
- package/dist/widgets/button.js.map +1 -1
- package/dist/widgets/checkbox.d.ts.map +1 -1
- package/dist/widgets/checkbox.js +3 -4
- package/dist/widgets/checkbox.js.map +1 -1
- package/dist/widgets/dropdown.d.ts.map +1 -1
- package/dist/widgets/dropdown.js +4 -5
- package/dist/widgets/dropdown.js.map +1 -1
- package/dist/widgets/focus-manager.d.ts +0 -1
- package/dist/widgets/focus-manager.d.ts.map +1 -1
- package/dist/widgets/focus-manager.js +3 -7
- package/dist/widgets/focus-manager.js.map +1 -1
- package/dist/widgets/screen.d.ts.map +1 -1
- package/dist/widgets/screen.js +2 -4
- package/dist/widgets/screen.js.map +1 -1
- package/dist/widgets/slider.d.ts.map +1 -1
- package/dist/widgets/slider.js +7 -8
- package/dist/widgets/slider.js.map +1 -1
- package/dist/widgets/text-input.d.ts.map +1 -1
- package/dist/widgets/text-input.js +5 -6
- package/dist/widgets/text-input.js.map +1 -1
- package/dist/widgets/toggle.d.ts.map +1 -1
- package/dist/widgets/toggle.js +4 -5
- package/dist/widgets/toggle.js.map +1 -1
- package/dist/widgets/widget-base.d.ts +3 -3
- package/dist/widgets/widget-base.d.ts.map +1 -1
- package/dist/widgets/widget-base.js +4 -6
- package/dist/widgets/widget-base.js.map +1 -1
- package/package.json +26 -10
- 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
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TerminalHost — the capability seam between the interactive runtime and its
|
|
3
|
-
* I/O environment.
|
|
4
|
-
*
|
|
5
|
-
* [LAW:locality-or-seam] The missing seam *was* the missing type. Before this
|
|
6
|
-
* type existed, Screen and EventRouter reached for ambient `process.stdin`/
|
|
7
|
-
* `process.stdout`, which crystallised them to node. With a `TerminalHost`
|
|
8
|
-
* value flowing across one boundary, the same runtime code runs against any
|
|
9
|
-
* implementation — node's TTY (`NodeTerminalHost`, on the `node/terminal-host`
|
|
10
|
-
* subpath) or a browser xterm.js terminal (`BrowserTerminalHost`, below).
|
|
11
|
-
*
|
|
12
|
-
* [LAW:dataflow-not-control-flow] The runtime never branches on "am I in
|
|
13
|
-
* node or browser." The host is the value that differs; the code path is
|
|
14
|
-
* the same. Variability lives in which host is constructed at the program
|
|
15
|
-
* entry, not in any `if` inside the runtime.
|
|
16
|
-
*
|
|
17
|
-
* [LAW:one-way-deps] The interface and the browser host live here, in the
|
|
18
|
-
* barrel; the node host lives in `src/node/terminal-host.ts`, behind an
|
|
19
|
-
* explicit subpath, because it reads `process.stdin` / `process.stdout`. The
|
|
20
|
-
* dependency runs one way — the node adapter imports this seam; nothing here
|
|
21
|
-
* imports the adapter — so importing the main barrel in a browser cannot
|
|
22
|
-
* reach the ambient `process` global by any path, rather than merely not
|
|
23
|
-
* reaching it in practice. `test/seam/browser-safe.test.ts` is what holds
|
|
24
|
-
* that direction; who reads the host at all is `HOST_ACCESS` in
|
|
25
|
-
* `test/seam/ambient-process.ts`, and neither list is repeated here.
|
|
26
|
-
*
|
|
27
|
-
* [boundaries: capabilities over context] A `TerminalHost` grants exactly
|
|
28
|
-
* the I/O capabilities the runtime needs: write bytes, read input, query
|
|
29
|
-
* size, observe resize, switch raw mode, lifecycle. It is not an
|
|
30
|
-
* omniscient handle to "the process."
|
|
31
|
-
*/
|
|
32
|
-
export class BrowserTerminalHost {
|
|
33
|
-
terminal;
|
|
34
|
-
dataHandlers = new Set();
|
|
35
|
-
resizeHandlers = new Set();
|
|
36
|
-
dataSubscription;
|
|
37
|
-
resizeSubscription;
|
|
38
|
-
constructor(options) {
|
|
39
|
-
this.terminal = options.terminal;
|
|
40
|
-
}
|
|
41
|
-
// [LAW:dataflow-not-control-flow] xterm.js is always an interactive
|
|
42
|
-
// terminal — there is no "non-TTY" code path in the browser. The
|
|
43
|
-
// runtime never branches on the value; this is the only sensible
|
|
44
|
-
// constant for this host.
|
|
45
|
-
get isTTY() {
|
|
46
|
-
return true;
|
|
47
|
-
}
|
|
48
|
-
write(data) {
|
|
49
|
-
this.terminal.write(data);
|
|
50
|
-
}
|
|
51
|
-
size() {
|
|
52
|
-
return { cols: this.terminal.cols, rows: this.terminal.rows };
|
|
53
|
-
}
|
|
54
|
-
// [LAW:dataflow-not-control-flow] xterm.js delivers keystrokes raw
|
|
55
|
-
// unconditionally — there is no cooked mode to toggle. The no-op
|
|
56
|
-
// matches the TerminalHost contract's documented "silently no-op when
|
|
57
|
-
// the transport has no cooked mode," so callers stay uniform across
|
|
58
|
-
// hosts. (Mirror: NodeTerminalHost on a non-TTY stream takes the same
|
|
59
|
-
// no-op path via the optional-chain in `applyRawMode`.)
|
|
60
|
-
setRawMode(_raw) { }
|
|
61
|
-
// [LAW:single-enforcer] One underlying `terminal.onData` subscription
|
|
62
|
-
// fans out to every host-level handler — the same lazy-attach,
|
|
63
|
-
// last-unsubscribe-detaches shape as NodeTerminalHost.onData. The
|
|
64
|
-
// runtime never sees the underlying subscription; it sees a single
|
|
65
|
-
// uniform `(handler) => Unsubscribe` API across hosts.
|
|
66
|
-
onData(handler) {
|
|
67
|
-
this.dataHandlers.add(handler);
|
|
68
|
-
if (!this.dataSubscription) {
|
|
69
|
-
this.dataSubscription = this.terminal.onData((chunk) => {
|
|
70
|
-
for (const h of this.dataHandlers)
|
|
71
|
-
h(chunk);
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
return () => {
|
|
75
|
-
this.dataHandlers.delete(handler);
|
|
76
|
-
if (this.dataHandlers.size === 0 && this.dataSubscription) {
|
|
77
|
-
this.dataSubscription.dispose();
|
|
78
|
-
this.dataSubscription = undefined;
|
|
79
|
-
}
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
onResize(handler) {
|
|
83
|
-
this.resizeHandlers.add(handler);
|
|
84
|
-
if (!this.resizeSubscription) {
|
|
85
|
-
this.resizeSubscription = this.terminal.onResize((size) => {
|
|
86
|
-
const snapshot = { cols: size.cols, rows: size.rows };
|
|
87
|
-
for (const h of this.resizeHandlers)
|
|
88
|
-
h(snapshot);
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
return () => {
|
|
92
|
-
this.resizeHandlers.delete(handler);
|
|
93
|
-
if (this.resizeHandlers.size === 0 && this.resizeSubscription) {
|
|
94
|
-
this.resizeSubscription.dispose();
|
|
95
|
-
this.resizeSubscription = undefined;
|
|
96
|
-
}
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
start() {
|
|
100
|
-
// [LAW:one-source-of-truth] The host does NOT own the terminal's DOM
|
|
101
|
-
// lifecycle (`terminal.open` / `terminal.dispose`). That is the
|
|
102
|
-
// caller's responsibility, exactly as NodeTerminalHost does not own
|
|
103
|
-
// `process.stdin`/`process.stdout`. start() is here so the runtime
|
|
104
|
-
// can call it uniformly across hosts; for this host there is
|
|
105
|
-
// nothing to do at this seam.
|
|
106
|
-
}
|
|
107
|
-
stop() {
|
|
108
|
-
// [LAW:one-source-of-truth] Symmetric teardown mirroring
|
|
109
|
-
// NodeTerminalHost.stop: drop every host-level subscriber and
|
|
110
|
-
// dispose the underlying terminal subscriptions. The terminal
|
|
111
|
-
// itself stays alive — re-subscribing via onData/onResize after
|
|
112
|
-
// stop() works, since the lazy-attach path re-creates the
|
|
113
|
-
// subscription on next subscribe. Calling stop() repeatedly is
|
|
114
|
-
// safe — the subscription guards make later calls no-ops.
|
|
115
|
-
if (this.dataSubscription) {
|
|
116
|
-
this.dataSubscription.dispose();
|
|
117
|
-
this.dataSubscription = undefined;
|
|
118
|
-
}
|
|
119
|
-
if (this.resizeSubscription) {
|
|
120
|
-
this.resizeSubscription.dispose();
|
|
121
|
-
this.resizeSubscription = undefined;
|
|
122
|
-
}
|
|
123
|
-
this.dataHandlers.clear();
|
|
124
|
-
this.resizeHandlers.clear();
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
//# sourceMappingURL=terminal-host.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-host.js","sourceRoot":"","sources":["../../src/widgets/terminal-host.ts"],"names":[],"mappings":"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"}
|