@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.
Files changed (152) hide show
  1. package/README.md +68 -1
  2. package/dist/core/box.d.ts +93 -39
  3. package/dist/core/box.d.ts.map +1 -1
  4. package/dist/core/box.js +348 -490
  5. package/dist/core/box.js.map +1 -1
  6. package/dist/core/color.d.ts.map +1 -1
  7. package/dist/core/color.js +22 -8
  8. package/dist/core/color.js.map +1 -1
  9. package/dist/core/console.d.ts +2 -4
  10. package/dist/core/console.d.ts.map +1 -1
  11. package/dist/core/console.js +35 -24
  12. package/dist/core/console.js.map +1 -1
  13. package/dist/core/highlighter.d.ts +2 -1
  14. package/dist/core/highlighter.d.ts.map +1 -1
  15. package/dist/core/highlighter.js +28 -6
  16. package/dist/core/highlighter.js.map +1 -1
  17. package/dist/{renderables → core}/json.d.ts +8 -3
  18. package/dist/core/json.d.ts.map +1 -0
  19. package/dist/{renderables → core}/json.js +7 -2
  20. package/dist/core/json.js.map +1 -0
  21. package/dist/core/markup.d.ts +6 -7
  22. package/dist/core/markup.d.ts.map +1 -1
  23. package/dist/core/markup.js +124 -32
  24. package/dist/core/markup.js.map +1 -1
  25. package/dist/core/pretty.d.ts +56 -21
  26. package/dist/core/pretty.d.ts.map +1 -1
  27. package/dist/core/pretty.js +210 -116
  28. package/dist/core/pretty.js.map +1 -1
  29. package/dist/core/protocol.d.ts +16 -0
  30. package/dist/core/protocol.d.ts.map +1 -1
  31. package/dist/core/protocol.js +13 -0
  32. package/dist/core/protocol.js.map +1 -1
  33. package/dist/core/segment.d.ts +5 -0
  34. package/dist/core/segment.d.ts.map +1 -1
  35. package/dist/core/segment.js +9 -3
  36. package/dist/core/segment.js.map +1 -1
  37. package/dist/core/strip.d.ts +9 -5
  38. package/dist/core/strip.d.ts.map +1 -1
  39. package/dist/core/strip.js +39 -41
  40. package/dist/core/strip.js.map +1 -1
  41. package/dist/core/style.d.ts +19 -0
  42. package/dist/core/style.d.ts.map +1 -1
  43. package/dist/core/style.js +46 -38
  44. package/dist/core/style.js.map +1 -1
  45. package/dist/core/text.d.ts +102 -4
  46. package/dist/core/text.d.ts.map +1 -1
  47. package/dist/core/text.js +322 -184
  48. package/dist/core/text.js.map +1 -1
  49. package/dist/core/wrap.d.ts +42 -0
  50. package/dist/core/wrap.d.ts.map +1 -0
  51. package/dist/core/wrap.js +128 -0
  52. package/dist/core/wrap.js.map +1 -0
  53. package/dist/index.d.ts +3 -3
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +2 -1
  56. package/dist/index.js.map +1 -1
  57. package/dist/renderables/markdown.d.ts +1 -1
  58. package/dist/renderables/markdown.d.ts.map +1 -1
  59. package/dist/renderables/markdown.js +7 -14
  60. package/dist/renderables/markdown.js.map +1 -1
  61. package/dist/renderables/padding.d.ts +1 -1
  62. package/dist/renderables/padding.d.ts.map +1 -1
  63. package/dist/renderables/padding.js +5 -11
  64. package/dist/renderables/padding.js.map +1 -1
  65. package/dist/renderables/panel.d.ts +4 -4
  66. package/dist/renderables/panel.d.ts.map +1 -1
  67. package/dist/renderables/panel.js +39 -39
  68. package/dist/renderables/panel.js.map +1 -1
  69. package/dist/renderables/progress.d.ts +3 -3
  70. package/dist/renderables/progress.d.ts.map +1 -1
  71. package/dist/renderables/progress.js +11 -9
  72. package/dist/renderables/progress.js.map +1 -1
  73. package/dist/renderables/progressBar.d.ts +3 -3
  74. package/dist/renderables/progressBar.d.ts.map +1 -1
  75. package/dist/renderables/progressBar.js +9 -15
  76. package/dist/renderables/progressBar.js.map +1 -1
  77. package/dist/renderables/prompt.js +1 -1
  78. package/dist/renderables/prompt.js.map +1 -1
  79. package/dist/renderables/rule.d.ts +1 -1
  80. package/dist/renderables/rule.d.ts.map +1 -1
  81. package/dist/renderables/rule.js +5 -10
  82. package/dist/renderables/rule.js.map +1 -1
  83. package/dist/renderables/spinner.d.ts +2 -2
  84. package/dist/renderables/spinner.d.ts.map +1 -1
  85. package/dist/renderables/spinner.js +6 -11
  86. package/dist/renderables/spinner.js.map +1 -1
  87. package/dist/renderables/status.d.ts.map +1 -1
  88. package/dist/renderables/status.js +5 -11
  89. package/dist/renderables/status.js.map +1 -1
  90. package/dist/renderables/table.d.ts +54 -16
  91. package/dist/renderables/table.d.ts.map +1 -1
  92. package/dist/renderables/table.js +239 -99
  93. package/dist/renderables/table.js.map +1 -1
  94. package/dist/renderables/traceback.d.ts +1 -1
  95. package/dist/renderables/traceback.d.ts.map +1 -1
  96. package/dist/renderables/traceback.js +9 -8
  97. package/dist/renderables/traceback.js.map +1 -1
  98. package/dist/renderables/tree.d.ts +2 -2
  99. package/dist/renderables/tree.d.ts.map +1 -1
  100. package/dist/renderables/tree.js +16 -22
  101. package/dist/renderables/tree.js.map +1 -1
  102. package/dist/template-bindings/helpers.d.ts.map +1 -1
  103. package/dist/template-bindings/helpers.js +19 -1
  104. package/dist/template-bindings/helpers.js.map +1 -1
  105. package/dist/widgets/button.d.ts.map +1 -1
  106. package/dist/widgets/button.js +4 -5
  107. package/dist/widgets/button.js.map +1 -1
  108. package/dist/widgets/checkbox.d.ts.map +1 -1
  109. package/dist/widgets/checkbox.js +3 -4
  110. package/dist/widgets/checkbox.js.map +1 -1
  111. package/dist/widgets/dropdown.d.ts.map +1 -1
  112. package/dist/widgets/dropdown.js +4 -5
  113. package/dist/widgets/dropdown.js.map +1 -1
  114. package/dist/widgets/focus-manager.d.ts +0 -1
  115. package/dist/widgets/focus-manager.d.ts.map +1 -1
  116. package/dist/widgets/focus-manager.js +3 -7
  117. package/dist/widgets/focus-manager.js.map +1 -1
  118. package/dist/widgets/screen.d.ts.map +1 -1
  119. package/dist/widgets/screen.js +2 -4
  120. package/dist/widgets/screen.js.map +1 -1
  121. package/dist/widgets/slider.d.ts.map +1 -1
  122. package/dist/widgets/slider.js +7 -8
  123. package/dist/widgets/slider.js.map +1 -1
  124. package/dist/widgets/text-input.d.ts.map +1 -1
  125. package/dist/widgets/text-input.js +5 -6
  126. package/dist/widgets/text-input.js.map +1 -1
  127. package/dist/widgets/toggle.d.ts.map +1 -1
  128. package/dist/widgets/toggle.js +4 -5
  129. package/dist/widgets/toggle.js.map +1 -1
  130. package/dist/widgets/widget-base.d.ts +3 -3
  131. package/dist/widgets/widget-base.d.ts.map +1 -1
  132. package/dist/widgets/widget-base.js +4 -6
  133. package/dist/widgets/widget-base.js.map +1 -1
  134. package/package.json +26 -10
  135. package/dist/renderables/json.d.ts.map +0 -1
  136. package/dist/renderables/json.js.map +0 -1
  137. package/dist/renderables/pretty.d.ts +0 -29
  138. package/dist/renderables/pretty.d.ts.map +0 -1
  139. package/dist/renderables/pretty.js +0 -141
  140. package/dist/renderables/pretty.js.map +0 -1
  141. package/dist/themes/paletteResolver.d.ts +0 -35
  142. package/dist/themes/paletteResolver.d.ts.map +0 -1
  143. package/dist/themes/paletteResolver.js +0 -88
  144. package/dist/themes/paletteResolver.js.map +0 -1
  145. package/dist/widgets/host-stream.d.ts +0 -31
  146. package/dist/widgets/host-stream.d.ts.map +0 -1
  147. package/dist/widgets/host-stream.js +0 -36
  148. package/dist/widgets/host-stream.js.map +0 -1
  149. package/dist/widgets/terminal-host.d.ts +0 -138
  150. package/dist/widgets/terminal-host.d.ts.map +0 -1
  151. package/dist/widgets/terminal-host.js +0 -127
  152. package/dist/widgets/terminal-host.js.map +0 -1
@@ -9,6 +9,12 @@
9
9
  * handler — splicing the handler's returned Renderable into the output. The
10
10
  * built-in style dialect and the plugin dialect are routed by the registry,
11
11
  * which is the single trust boundary between them.
12
+ *
13
+ * Plugin pairs must nest. The built-in dialect admits non-strict nesting
14
+ * (`[bold]a[italic]b[/bold]c[/italic]`) because a style is an annotation and
15
+ * annotations may overlap freely; a plugin tag is a replacement whose handler
16
+ * takes one contiguous `inner`, so an overlapping pair has no slice to hand it
17
+ * and is rejected with a `MarkupError`.
12
18
  */
13
19
  import { Style } from "./style.js";
14
20
  import { RichText } from "./text.js";
@@ -26,13 +32,6 @@ export declare class MarkupError extends Error {
26
32
  * Escapes markup characters so they render as literal text.
27
33
  */
28
34
  export declare function escape(text: string): string;
29
- export interface RenderOptions {
30
- emoji?: boolean;
31
- }
32
- /**
33
- * Parses markup text and returns a RichText with appropriate spans.
34
- */
35
- export declare function render(markup: string, baseStyle?: string | Style, options?: RenderOptions): RichText;
36
35
  export interface MarkupTagContext {
37
36
  /** Parsed `key=value` attributes from the opening tag. */
38
37
  attrs: Record<string, string>;
@@ -1 +1 @@
1
- {"version":3,"file":"markup.d.ts","sourceRoot":"","sources":["../../src/core/markup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,KAAK,EAAoB,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAQ,MAAM,WAAW,CAAC;AAK3C,qBAAa,GAAG;IACd,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;gBAE5B,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;IAK7C,QAAQ,IAAI,MAAM;IAMlB,IAAI,MAAM,IAAI,MAAM,CAInB;CACF;AAID,qBAAa,WAAY,SAAQ,KAAK;gBACxB,OAAO,EAAE,MAAM;CAI5B;AAID;;GAEG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3C;AA0DD,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,MAAM,CACpB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,EAC1B,OAAO,CAAC,EAAE,aAAa,GACtB,QAAQ,CA6FV;AAwBD,MAAM,WAAW,gBAAgB;IAC/B,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,uEAAuE;IACvE,QAAQ,EAAE,QAAQ,CAAC;IACnB,uFAAuF;IACvF,GAAG,EAAE,MAAM,CAAC;CACb;AAOD,MAAM,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,gBAAgB,KAAK,QAAQ,CAAC;AAYnE,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuC;IAEjE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAiBvD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI9B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;CAGhD;AAqBD,eAAO,MAAM,oBAAoB,gBAAuB,CAAC;AAmEzD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,mBAAmB,GAC5B,QAAQ,CA+CV"}
1
+ {"version":3,"file":"markup.d.ts","sourceRoot":"","sources":["../../src/core/markup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,KAAK,EAAoB,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAQ,MAAM,WAAW,CAAC;AAK3C,qBAAa,GAAG;IACd,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;gBAE5B,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;IAK7C,QAAQ,IAAI,MAAM;IAMlB,IAAI,MAAM,IAAI,MAAM,CAInB;CACF;AAID,qBAAa,WAAY,SAAQ,KAAK;gBACxB,OAAO,EAAE,MAAM;CAI5B;AAID;;GAEG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3C;AA0PD,MAAM,WAAW,gBAAgB;IAC/B,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,uEAAuE;IACvE,QAAQ,EAAE,QAAQ,CAAC;IACnB,uFAAuF;IACvF,GAAG,EAAE,MAAM,CAAC;CACb;AAOD,MAAM,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,gBAAgB,KAAK,QAAQ,CAAC;AAkBnE,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuC;IAEjE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAiBvD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI9B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;CAGhD;AAqBD,eAAO,MAAM,oBAAoB,gBAAuB,CAAC;AAmEzD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,mBAAmB,GAC5B,QAAQ,CA+CV"}
@@ -9,6 +9,12 @@
9
9
  * handler — splicing the handler's returned Renderable into the output. The
10
10
  * built-in style dialect and the plugin dialect are routed by the registry,
11
11
  * which is the single trust boundary between them.
12
+ *
13
+ * Plugin pairs must nest. The built-in dialect admits non-strict nesting
14
+ * (`[bold]a[italic]b[/bold]c[/italic]`) because a style is an annotation and
15
+ * annotations may overlap freely; a plugin tag is a replacement whose handler
16
+ * takes one contiguous `inner`, so an overlapping pair has no slice to hand it
17
+ * and is rejected with a `MarkupError`.
12
18
  */
13
19
  import { Style, StyleSyntaxError } from "./style.js";
14
20
  import { RichText, Span } from "./text.js";
@@ -49,9 +55,19 @@ export function escape(text) {
49
55
  // --- render ---
50
56
  // Fast path: if no `[` in text, skip parsing entirely
51
57
  const HAS_TAG_RE = /\[/;
52
- // Match tags: [style], [/style], [/], [name=params]
53
- // Also handles escaped brackets: \[
54
- const TAG_RE = /(?:\\\[)|(\[(?:\/?)(?:[a-zA-Z#][a-zA-Z0-9_.# -]*(?:=[^\]]*)?|\/)\])/g;
58
+ // [LAW:one-source-of-truth] The authority for this grammar is `RE_TAGS` in
59
+ // `rich/markup.py`, and this is deliberately its expression rather than a
60
+ // re-derivation, so the two can be read side by side; `[^[]*?` is lazy against
61
+ // the following `]`, which is what stops the body at the first one.
62
+ //
63
+ // The enumeration it replaced — `[a-zA-Z#][a-zA-Z0-9_.# -]*` — was a second
64
+ // drawing of the same territory and had drifted both ways at once: it invented
65
+ // uppercase, so `[INFO]` was taken as an opening tag and its text vanished from
66
+ // every `Console.print` with no error, and it omitted `@` and the punctuation
67
+ // the reference admits, so `[a+b]` stayed literal (rich-markup-sec).
68
+ // `markup-grammar.golden.txt` pins both directions.
69
+ // The leading alternative handles an escaped bracket: \[
70
+ const TAG_RE = /(?:\\\[)|(\[[a-z#/@][^[]*?\])/g;
55
71
  function parseTags(markup) {
56
72
  const tags = [];
57
73
  const re = new RegExp(TAG_RE.source, TAG_RE.flags);
@@ -64,13 +80,20 @@ function parseTags(markup) {
64
80
  if (!captured)
65
81
  continue;
66
82
  const inner = captured.slice(1, -1); // Remove [ ]
67
- const isImplicitClose = inner === "/";
68
- const isClosing = inner.startsWith("/") && !isImplicitClose;
69
- const stylePart = isClosing ? inner.slice(1) : inner;
83
+ const isClose = inner.startsWith("/");
84
+ const stylePart = isClose ? inner.slice(1) : inner;
70
85
  // Check for parameters (name=value)
71
86
  const eqIdx = stylePart.indexOf("=");
72
87
  const styleName = eqIdx >= 0 ? stylePart.slice(0, eqIdx).trim() : stylePart.trim();
73
88
  const parameters = eqIdx >= 0 ? stylePart.slice(eqIdx + 1) : undefined;
89
+ // [LAW:types-are-the-program] What separates `[/]` from `[/red]` is whether
90
+ // a name survives the slash, which is how the reference asks it too
91
+ // (`style_name = tag.name[1:].strip()`). Testing the raw tag text against
92
+ // the literal `"/"` answered a narrower question, and the widened grammar
93
+ // is what exposed the gap: `[/ ]` reaches here now, and under the old test
94
+ // it was an explicit close of the empty style rather than an implicit one.
95
+ const isImplicitClose = isClose && styleName === "";
96
+ const isClosing = isClose && !isImplicitClose;
74
97
  tags.push({
75
98
  fullMatch: captured,
76
99
  isClosing,
@@ -84,9 +107,27 @@ function parseTags(markup) {
84
107
  return tags;
85
108
  }
86
109
  /**
87
- * Parses markup text and returns a RichText with appropriate spans.
110
+ * Parses the built-in style dialect — `[bold red]text[/bold red]` — into a
111
+ * `RichText` with styled spans. Module-private on purpose: `renderMarkup` is
112
+ * this module's one crossing, and it delegates straight here the moment a
113
+ * string carries no paired plugin tag.
114
+ *
115
+ * [LAW:single-enforcer] Exporting this is what let a caller bind to the inner
116
+ * layer, and two of them did — `console.ts` and `prompt.ts` imported it as
117
+ * `render as renderMarkup`, so the import line read identically to the
118
+ * plugin-aware sites and the difference was invisible at every point of use. A
119
+ * tag registered on `globalMarkupRegistry` resolved in a table cell and was
120
+ * silently eaten by `console.print`, the path almost every consumer takes
121
+ * (rich-markup-pcp). Unexported, that drift is a compile error rather than a
122
+ * rule someone has to keep remembering.
123
+ *
124
+ * [LAW:dataflow-not-control-flow] Rendering *without* plugins stays reachable
125
+ * as a value rather than a second name: `renderMarkup(s, { registry: new
126
+ * MarkupRegistry() })`. Two exported functions put that variability in the
127
+ * function names; an empty registry puts it in the data, where the one
128
+ * boundary admits both.
88
129
  */
89
- export function render(markup, baseStyle, options) {
130
+ function render(markup, baseStyle, options) {
90
131
  // Fast path: no brackets at all
91
132
  if (!HAS_TAG_RE.test(markup)) {
92
133
  let text = markup;
@@ -116,10 +157,7 @@ export function render(markup, baseStyle, options) {
116
157
  throw new MarkupError("Closing tag [/] has nothing to close");
117
158
  }
118
159
  const opened = openStack.pop();
119
- const styleStr = opened.parameters !== undefined
120
- ? `${opened.styleName} ${opened.parameters}`
121
- : opened.styleName;
122
- spans.push(new Span(opened.textStart, plainText.length, styleStr));
160
+ spans.push(new Span(opened.textStart, plainText.length, openTagStyle(opened)));
123
161
  }
124
162
  else if (tag.isClosing) {
125
163
  // [/style] — find and close matching open tag
@@ -128,10 +166,7 @@ export function render(markup, baseStyle, options) {
128
166
  throw new MarkupError(`Closing tag [/${tag.styleName}] doesn't match any open tag`);
129
167
  }
130
168
  const opened = openStack[idx];
131
- const styleStr = opened.parameters !== undefined
132
- ? `${opened.styleName} ${opened.parameters}`
133
- : opened.styleName;
134
- spans.push(new Span(opened.textStart, plainText.length, styleStr));
169
+ spans.push(new Span(opened.textStart, plainText.length, openTagStyle(opened)));
135
170
  openStack.splice(idx, 1);
136
171
  }
137
172
  else {
@@ -148,13 +183,31 @@ export function render(markup, baseStyle, options) {
148
183
  const trailing = markup.slice(lastEnd);
149
184
  const processedTrailing = unescapeBrackets(doEmoji ? emojiReplace(trailing) : trailing);
150
185
  plainText += processedTrailing;
151
- // Auto-close any remaining open tags
152
- for (const opened of openStack) {
153
- const styleStr = opened.parameters !== undefined
154
- ? `${opened.styleName} ${opened.parameters}`
155
- : opened.styleName;
156
- spans.push(new Span(opened.textStart, plainText.length, styleStr));
186
+ // Auto-close what is still open, innermost first. The reference pops its
187
+ // stack here (`while style_stack: start, tag = style_stack.pop()`), and
188
+ // popping is what keeps every span in this list in the order its tag closed
189
+ // — the one order the sort below is defined against. Walking the stack
190
+ // forwards instead put the outermost unclosed tag in first, and that lone
191
+ // disagreement was invisible while nothing sorted: it cancelled the missing
192
+ // sort, so `[red][blue]x` was the one nesting this port already got right.
193
+ while (openStack.length > 0) {
194
+ const opened = openStack.pop();
195
+ spans.push(new Span(opened.textStart, plainText.length, openTagStyle(opened)));
157
196
  }
197
+ // [LAW:one-source-of-truth] The paint order is the reference's, expressed
198
+ // rather than re-derived: `sorted(spans[::-1], key=attrgetter("start"))` in
199
+ // `rich/markup.py`. `RichText` applies spans in list order and each one adds
200
+ // over the last, so this list's order *is* which style wins where two
201
+ // overlap; sorting by start lays the outer span down first and lets the
202
+ // inner one repaint the run it sits in.
203
+ //
204
+ // The reversal is the whole of the tie-break, not decoration.
205
+ // `[red][blue]x[/blue][/red]` yields two spans that both start at 0, and a
206
+ // stable sort leaves those in the order they arrived — closing order,
207
+ // innermost first — which is the outer colour winning. Reversed first, the
208
+ // outer arrives first and the inner repaints it (rich-markup-krk).
209
+ spans.reverse();
210
+ spans.sort((a, b) => a.start - b.start);
158
211
  const result = new RichText(plainText);
159
212
  if (baseStyle)
160
213
  result.stylize(baseStyle);
@@ -172,15 +225,27 @@ export function render(markup, baseStyle, options) {
172
225
  }
173
226
  return result;
174
227
  }
228
+ /**
229
+ * The style string an open tag closes into — `name`, or `name parameters` when
230
+ * the tag carried an `=`.
231
+ *
232
+ * [LAW:one-source-of-truth] One answer for the four sites that ask it: the three
233
+ * ways a tag can close (`[/name]`, `[/]`, and end of input) and the search that
234
+ * matches `[/red on blue]` back to `[red on blue]`. It was written out at each,
235
+ * which is how the three closing paths could — and did — drift apart on
236
+ * something none of the four copies was about.
237
+ */
238
+ function openTagStyle(opened) {
239
+ return opened.parameters !== undefined
240
+ ? `${opened.styleName} ${opened.parameters}`
241
+ : opened.styleName;
242
+ }
175
243
  function findLastOpen(stack, name) {
176
244
  // Handle "on" in style names for closing: [/red on blue] should match [red on blue]
177
245
  const normalized = name.trim();
178
246
  for (let i = stack.length - 1; i >= 0; i--) {
179
247
  const entry = stack[i];
180
- const entryFull = entry.parameters !== undefined
181
- ? `${entry.styleName} ${entry.parameters}`
182
- : entry.styleName;
183
- if (entryFull === normalized || entry.styleName === normalized)
248
+ if (openTagStyle(entry) === normalized || entry.styleName === normalized)
184
249
  return i;
185
250
  }
186
251
  return -1;
@@ -195,7 +260,13 @@ function unescapeBrackets(text) {
195
260
  // boundary lookahead. When those two disagreed, registering `table` silently
196
261
  // destroyed every `table.*` built-in style and a name containing a dot could
197
262
  // never fire.
198
- const PLUGIN_TAG_NAME_SRC = "[A-Za-z][A-Za-z0-9_-]*";
263
+ //
264
+ // It opens on `a-z` because a plugin name has to be a name `TAG_RE` can reach,
265
+ // and that is strictly narrower than "a letter": nothing lowercases the tag
266
+ // text on the way in, so `[Foo]` is literal and a handler registered as `Foo`
267
+ // could never fire. This tracked `[A-Za-z]` while `TAG_RE` wrongly admitted
268
+ // uppercase, which is the same drift, one subset down (rich-markup-sec).
269
+ const PLUGIN_TAG_NAME_SRC = "[a-z][A-Za-z0-9_-]*";
199
270
  const LEGAL_PLUGIN_TAG_NAME = new RegExp(`^${PLUGIN_TAG_NAME_SRC}$`);
200
271
  export class MarkupRegistry {
201
272
  _handlers = new Map();
@@ -204,7 +275,7 @@ export class MarkupRegistry {
204
275
  // names markup can never address (`a.b` stops the tag scan at the dot), and
205
276
  // install a handler that could never fire.
206
277
  if (!LEGAL_PLUGIN_TAG_NAME.test(name)) {
207
- throw new MarkupError(`Cannot register markup tag "${name}": a tag name must be a letter followed by letters, digits, "_" or "-", so markup could never address this name.`);
278
+ throw new MarkupError(`Cannot register markup tag "${name}": a tag name must be a lowercase letter followed by letters, digits, "_" or "-", so markup could never address this name.`);
208
279
  }
209
280
  if (isReservedTagName(name)) {
210
281
  throw new MarkupError(`Cannot register markup tag "${name}": name is reserved by a built-in style.`);
@@ -387,15 +458,36 @@ function pairPluginTags(tags, registry) {
387
458
  stack.push(i);
388
459
  }
389
460
  }
390
- // Filter pairs to top-level only.
461
+ // Filter pairs to top-level only. A pair that opens inside the current one is
462
+ // either contained — re-discovered when the recursion renders the outer
463
+ // pair's inner slice — or overlapping, and only its *closing* position tells
464
+ // the two apart. Testing the open position alone conflated them and dropped
465
+ // the overlapping pair, which orphaned its closing tag into the trailing
466
+ // slice, where the built-in parser blamed the wrong tag for the wrong reason.
391
467
  const topLevel = new Map();
392
468
  let outerEnd = -1;
469
+ let outerOpenIdx = -1;
393
470
  const sortedOpens = [...pairs.keys()].sort((a, b) => a - b);
394
471
  for (const openIdx of sortedOpens) {
395
- if (annotated[openIdx].start < outerEnd)
472
+ const closeIdx = pairs.get(openIdx);
473
+ if (annotated[openIdx].start < outerEnd) {
474
+ // [LAW:no-silent-failure] Overlap is unrepresentable here rather than
475
+ // unimplemented: a handler receives `children` as one contiguous slice,
476
+ // so a region straddling another pair's closing boundary has nothing to
477
+ // hand it. A style span may overlap because it annotates; a plugin pair
478
+ // may not because it replaces.
479
+ if (annotated[closeIdx].end > outerEnd) {
480
+ const inner = annotated[openIdx].pluginName;
481
+ const outer = annotated[outerOpenIdx].pluginName;
482
+ throw new MarkupError(`Plugin tag [${inner}] overlaps [${outer}]: plugin tags must nest, ` +
483
+ `because a handler receives one contiguous slice. ` +
484
+ `Close [/${inner}] before [/${outer}].`);
485
+ }
396
486
  continue;
397
- topLevel.set(openIdx, pairs.get(openIdx));
398
- outerEnd = annotated[pairs.get(openIdx)].end;
487
+ }
488
+ topLevel.set(openIdx, closeIdx);
489
+ outerOpenIdx = openIdx;
490
+ outerEnd = annotated[closeIdx].end;
399
491
  }
400
492
  return { annotated, topLevel };
401
493
  }
@@ -1 +1 @@
1
- {"version":3,"file":"markup.js","sourceRoot":"","sources":["../../src/core/markup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"markup.js","sourceRoot":"","sources":["../../src/core/markup.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,14 @@
7
7
  * are core primitives only. `Console.print` accepts `unknown` and must turn any
8
8
  * of it into something renderable, so the formatter has to sit where `console`
9
9
  * can reach it without an upward edge. [LAW:one-way-deps]
10
+ *
11
+ * Two traversals share this file, and the split is the whole design. `_format`
12
+ * lays a value out across lines; `_oneLine` answers only "does this fit on one
13
+ * line, and if so what is it?". They meet at `_shape`, which describes a
14
+ * container without committing to either layout. One traversal answering both
15
+ * questions is what made this formatter exponential: every child was rendered
16
+ * once to probe it and again to place it, so a node at depth d was visited 2^d
17
+ * times.
10
18
  */
11
19
  import { Segment } from "./segment.js";
12
20
  import type { Highlighter } from "./highlighter.js";
@@ -53,35 +61,62 @@ export declare class Pretty implements Renderable, Measurable {
53
61
  maximum: number;
54
62
  };
55
63
  /**
56
- * Where the traversal is, in the two senses that differ.
64
+ * The text a value shows without being reflected on, or `null` when it is an
65
+ * object and the shape arms own it.
57
66
  *
58
- * `inset` is how far the output is indented; it resets to 0 whenever a value
59
- * is measured for a single line, because a compact form carries no
60
- * indentation. `level` is how deep in the data we are, and only ever
61
- * increases. Collapsing the two into one number is the mistake this pair
62
- * exists to make unrepresentable: the depth cap read the layout number, so
63
- * every compact probe reset it and the cap never fired at all.
67
+ * Every kind answered here renders the same wherever it sits — no
68
+ * indentation, no width to fit — which is why one method serves both
69
+ * traversals.
70
+ */
71
+ private _scalar;
72
+ /**
73
+ * A container, or the text standing in for one that is empty or past the
74
+ * depth cap.
64
75
  *
65
- * `open` holds the objects between the root and here, not every object seen.
66
- * A value joins on the way down and leaves on the way back up, so a cycle is
67
- * caught while a DAG — one object reached twice through sibling positions —
68
- * still renders both times. A never-emptied set would call the second sibling
69
- * circular. [LAW:no-ambient-temporal-coupling] the traversal owns its state
70
- * explicitly; a field on the instance would leak between renders.
76
+ * `positions` is a thunk because both of those answers are reachable from
77
+ * `size` alone, and reaching a position is not free: a `Map` or `Set` reaches
78
+ * its own through an iterator, so enumerating one only to elide it drains a
79
+ * container to print `Set {...}`. `size` also says how many positions were
80
+ * dropped, which is where the elision marker comes from — one derivation, so
81
+ * the count and the bound cannot disagree.
71
82
  */
72
- private _format;
83
+ private _container;
73
84
  /**
74
- * One position's value, or the marker for why reading it failed.
85
+ * The brackets and positions of an object, layout-free. See `Shape`.
75
86
  *
76
- * A key and an index are the same job — read one slot of a container someone
77
- * else built — so they share one method rather than two that must agree.
78
- * [LAW:one-type-per-behavior] This is also the read that costs the least when
79
- * it fails: neighbours are unaffected, so `{ a: 1, b: [Threw: …], c: 3 }`
80
- * still shows everything that could be read.
87
+ * `bound` is the most positions the caller could ever use. Laying out passes
88
+ * `Infinity`, because it prints every position it is handed. A probe passes
89
+ * what is left of its line, which is already more positions than a fitting
90
+ * one could hold — `SEPARATOR` charges two cells apiece, so a container with
91
+ * more positions than `budget` overruns however narrow its contents are.
92
+ * Reaching past it only ever feeds a join that returns `null`, and reaching a
93
+ * position is what drains a `Map` or `Set`.
81
94
  */
82
- private _at;
95
+ private _shape;
96
+ /** The laid-out form of a value, expanded across lines wherever one line will not do. */
97
+ private _format;
83
98
  /** The arms for a non-null object, with `value` already on the open path. */
84
99
  private _formatObject;
100
+ /** One position, with every value in it laid out. */
101
+ private _expandSlot;
102
+ /** The one-line form of a value, or `null` when it will not fit `at.budget`. */
103
+ private _oneLine;
104
+ /**
105
+ * A container's positions on one line, or `null` as soon as they overrun.
106
+ *
107
+ * The budget is spent as it goes and each position is asked for only what is
108
+ * left, so a subtree that has already outgrown the line is abandoned where it
109
+ * outgrew it rather than formatted in full and then measured.
110
+ *
111
+ * The brackets are charged before anything is read, and that ordering is what
112
+ * bounds the traversal: a budget checked only against the finished text still
113
+ * reads the whole subtree to produce text it then throws away. Charged first,
114
+ * every level costs at least the two cells of its own brackets, so a probe
115
+ * descends at most `budget / 2` levels however deep the data goes.
116
+ */
117
+ private _joinOneLine;
118
+ /** One position on one line, or `null` when any value in it will not fit. */
119
+ private _slotOneLine;
85
120
  private _addIndentGuides;
86
121
  }
87
122
  //# sourceMappingURL=pretty.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pretty.d.ts","sourceRoot":"","sources":["../../src/core/pretty.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAIvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,aAAa,EACd,MAAM,eAAe,CAAC;AAEvB,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;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AA6FD,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,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;gBAEtB,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,aAAa;IAWjD,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;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,OAAO;IAqCf;;;;;;;;OAQG;IACH,OAAO,CAAC,GAAG;IAQX,6EAA6E;IAC7E,OAAO,CAAC,aAAa;IAoFrB,OAAO,CAAC,gBAAgB;CAczB"}
1
+ {"version":3,"file":"pretty.d.ts","sourceRoot":"","sources":["../../src/core/pretty.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,aAAa,EACd,MAAM,eAAe,CAAC;AAEvB,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;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAsMD,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,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;gBAEtB,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,aAAa;IAWjD,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;;;;;;;OAOG;IACH,OAAO,CAAC,OAAO;IAyBf;;;;;;;;;;OAUG;IACH,OAAO,CAAC,UAAU;IAelB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,MAAM;IAqDd,yFAAyF;IACzF,OAAO,CAAC,OAAO;IAmBf,6EAA6E;IAC7E,OAAO,CAAC,aAAa;IAoBrB,qDAAqD;IACrD,OAAO,CAAC,WAAW;IAgBnB,gFAAgF;IAChF,OAAO,CAAC,QAAQ;IAkBhB;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,YAAY;IAepB,6EAA6E;IAC7E,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,gBAAgB;CAazB"}