prismcast 1.10.2 → 1.10.3

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 (166) hide show
  1. package/dist/app.d.ts +5 -3
  2. package/dist/app.js +42 -41
  3. package/dist/app.js.map +1 -1
  4. package/dist/browser/hlsPlaylistObserver.d.ts +38 -0
  5. package/dist/browser/hlsPlaylistObserver.js +113 -0
  6. package/dist/browser/hlsPlaylistObserver.js.map +1 -0
  7. package/dist/browser/index.d.ts +26 -16
  8. package/dist/browser/index.js +95 -70
  9. package/dist/browser/index.js.map +1 -1
  10. package/dist/browser/manifestInterceptor.d.ts +29 -29
  11. package/dist/browser/manifestInterceptor.js +106 -212
  12. package/dist/browser/manifestInterceptor.js.map +1 -1
  13. package/dist/browser/tabNetworkObserver.d.ts +48 -0
  14. package/dist/browser/tabNetworkObserver.js +140 -0
  15. package/dist/browser/tabNetworkObserver.js.map +1 -0
  16. package/dist/config/consistencyProbe.js +13 -11
  17. package/dist/config/consistencyProbe.js.map +1 -1
  18. package/dist/config/paths.d.ts +3 -8
  19. package/dist/config/paths.js +3 -10
  20. package/dist/config/paths.js.map +1 -1
  21. package/dist/config/profiles.d.ts +1 -1
  22. package/dist/config/profiles.js +6 -6
  23. package/dist/config/profiles.js.map +1 -1
  24. package/dist/config/services.d.ts +5 -5
  25. package/dist/config/services.js +8 -8
  26. package/dist/config/services.js.map +1 -1
  27. package/dist/config/sites.d.ts +2 -2
  28. package/dist/config/sites.js +6 -6
  29. package/dist/config/sites.js.map +1 -1
  30. package/dist/config/userChannels.d.ts +108 -14
  31. package/dist/config/userChannels.js +291 -37
  32. package/dist/config/userChannels.js.map +1 -1
  33. package/dist/config/userConfig.js +1 -1
  34. package/dist/config/userConfig.js.map +1 -1
  35. package/dist/config/userProfiles.d.ts +3 -3
  36. package/dist/config/userProfiles.js +19 -19
  37. package/dist/config/userProfiles.js.map +1 -1
  38. package/dist/index.js +7 -9
  39. package/dist/index.js.map +1 -1
  40. package/dist/native/index.d.ts +1 -1
  41. package/dist/native/index.js +9 -18
  42. package/dist/native/index.js.map +1 -1
  43. package/dist/native/proxy.d.ts +1 -4
  44. package/dist/native/proxy.js +0 -9
  45. package/dist/native/proxy.js.map +1 -1
  46. package/dist/routes/clientActions.d.ts +97 -0
  47. package/dist/routes/clientActions.js +113 -0
  48. package/dist/routes/clientActions.js.map +1 -0
  49. package/dist/routes/components.d.ts +4 -3
  50. package/dist/routes/components.js +36 -39
  51. package/dist/routes/components.js.map +1 -1
  52. package/dist/routes/config/channels/endpoints/browse.js.map +1 -1
  53. package/dist/routes/config/channels/endpoints/crud.js +37 -72
  54. package/dist/routes/config/channels/endpoints/crud.js.map +1 -1
  55. package/dist/routes/config/channels/endpoints/importExport.js.map +1 -1
  56. package/dist/routes/config/channels/healthBridge.d.ts +23 -0
  57. package/dist/routes/config/channels/healthBridge.js +71 -0
  58. package/dist/routes/config/channels/healthBridge.js.map +1 -0
  59. package/dist/routes/config/channels/table.js +97 -84
  60. package/dist/routes/config/channels/table.js.map +1 -1
  61. package/dist/routes/config/services.js +25 -22
  62. package/dist/routes/config/services.js.map +1 -1
  63. package/dist/routes/config/settings.js +9 -6
  64. package/dist/routes/config/settings.js.map +1 -1
  65. package/dist/routes/debug.js +277 -139
  66. package/dist/routes/debug.js.map +1 -1
  67. package/dist/routes/logs.js +1 -1
  68. package/dist/routes/logs.js.map +1 -1
  69. package/dist/routes/root/content.js +18 -14
  70. package/dist/routes/root/content.js.map +1 -1
  71. package/dist/routes/root/index.js +17 -14
  72. package/dist/routes/root/index.js.map +1 -1
  73. package/dist/routes/root/scripts/channels.js +50 -21
  74. package/dist/routes/root/scripts/channels.js.map +1 -1
  75. package/dist/routes/root/scripts/config.js +72 -3
  76. package/dist/routes/root/scripts/config.js.map +1 -1
  77. package/dist/routes/root/scripts/shared.js +60 -0
  78. package/dist/routes/root/scripts/shared.js.map +1 -1
  79. package/dist/routes/root/scripts/status.handlers.d.ts +5 -27
  80. package/dist/routes/root/scripts/status.handlers.js +8 -60
  81. package/dist/routes/root/scripts/status.handlers.js.map +1 -1
  82. package/dist/routes/root/scripts/status.js +6 -1
  83. package/dist/routes/root/scripts/status.js.map +1 -1
  84. package/dist/routes/streams.js +5 -3
  85. package/dist/routes/streams.js.map +1 -1
  86. package/dist/service/commands.context.js +1 -1
  87. package/dist/service/commands.context.js.map +1 -1
  88. package/dist/service/generators.context.js +1 -1
  89. package/dist/service/generators.context.js.map +1 -1
  90. package/dist/service/generators.d.ts +1 -1
  91. package/dist/service/generators.js +3 -11
  92. package/dist/service/generators.js.map +1 -1
  93. package/dist/streaming/hls.js +1 -5
  94. package/dist/streaming/hls.js.map +1 -1
  95. package/dist/streaming/hlsSegments.d.ts +1 -1
  96. package/dist/streaming/hlsSegments.js.map +1 -1
  97. package/dist/streaming/preroll.d.ts +1 -1
  98. package/dist/streaming/preroll.js +1 -5
  99. package/dist/streaming/preroll.js.map +1 -1
  100. package/dist/streaming/statusEmitter.d.ts +5 -8
  101. package/dist/streaming/statusEmitter.js +0 -5
  102. package/dist/streaming/statusEmitter.js.map +1 -1
  103. package/dist/types/channels.d.ts +9 -0
  104. package/dist/types/channels.js.map +1 -1
  105. package/dist/types/profiles.d.ts +2 -2
  106. package/dist/upgrade/commands.context.js +14 -10
  107. package/dist/upgrade/commands.context.js.map +1 -1
  108. package/dist/upgrade/commands.d.ts +7 -15
  109. package/dist/upgrade/commands.js +27 -28
  110. package/dist/upgrade/commands.js.map +1 -1
  111. package/dist/upgrade/detection.context.js +2 -1
  112. package/dist/upgrade/detection.context.js.map +1 -1
  113. package/dist/upgrade/detection.d.ts +2 -1
  114. package/dist/upgrade/detection.js +20 -51
  115. package/dist/upgrade/detection.js.map +1 -1
  116. package/dist/upgrade/index.d.ts +1 -0
  117. package/dist/upgrade/index.js +1 -0
  118. package/dist/upgrade/index.js.map +1 -1
  119. package/dist/upgrade/lifecycle.context.d.ts +19 -0
  120. package/dist/upgrade/lifecycle.context.js +47 -0
  121. package/dist/upgrade/lifecycle.context.js.map +1 -0
  122. package/dist/upgrade/lifecycle.d.ts +72 -0
  123. package/dist/upgrade/lifecycle.js +176 -0
  124. package/dist/upgrade/lifecycle.js.map +1 -0
  125. package/dist/upgrade/pathHandle.d.ts +28 -0
  126. package/dist/upgrade/pathHandle.js +101 -0
  127. package/dist/upgrade/pathHandle.js.map +1 -0
  128. package/dist/utils/bootSession.context.d.ts +15 -0
  129. package/dist/utils/bootSession.context.js +59 -0
  130. package/dist/utils/bootSession.context.js.map +1 -0
  131. package/dist/utils/bootSession.d.ts +16 -0
  132. package/dist/utils/bootSession.js +20 -0
  133. package/dist/utils/bootSession.js.map +1 -0
  134. package/dist/utils/clock.js +1 -1
  135. package/dist/utils/ffmpeg.js +1 -1
  136. package/dist/utils/ffmpeg.js.map +1 -1
  137. package/dist/utils/index.d.ts +3 -0
  138. package/dist/utils/index.js +3 -0
  139. package/dist/utils/index.js.map +1 -1
  140. package/dist/utils/markup.d.ts +10 -0
  141. package/dist/utils/markup.js +23 -0
  142. package/dist/utils/markup.js.map +1 -1
  143. package/dist/utils/pid.d.ts +2 -25
  144. package/dist/utils/pid.js +10 -49
  145. package/dist/utils/pid.js.map +1 -1
  146. package/dist/utils/processInspector.context.d.ts +7 -0
  147. package/dist/utils/processInspector.context.js +104 -0
  148. package/dist/utils/processInspector.context.js.map +1 -0
  149. package/dist/utils/processInspector.d.ts +54 -0
  150. package/dist/utils/processInspector.js +125 -0
  151. package/dist/utils/processInspector.js.map +1 -0
  152. package/dist/utils/retry.d.ts +1 -1
  153. package/dist/utils/retry.js +1 -1
  154. package/dist/utils/retry.js.map +1 -1
  155. package/dist/utils/runtimeIdentity.context.d.ts +6 -0
  156. package/dist/utils/runtimeIdentity.context.js +13 -0
  157. package/dist/utils/runtimeIdentity.context.js.map +1 -0
  158. package/dist/utils/runtimeIdentity.d.ts +96 -0
  159. package/dist/utils/runtimeIdentity.js +171 -0
  160. package/dist/utils/runtimeIdentity.js.map +1 -0
  161. package/dist/utils/timing.d.ts +1 -1
  162. package/dist/utils/timing.js +0 -5
  163. package/dist/utils/timing.js.map +1 -1
  164. package/dist/utils/version.js +40 -10
  165. package/dist/utils/version.js.map +1 -1
  166. package/package.json +2 -2
@@ -2,45 +2,93 @@
2
2
  *
3
3
  * debug.ts: Debug logging configuration endpoint for PrismCast.
4
4
  */
5
- import { DEBUG_CATEGORIES, LOG, escapeHtml, formatError, getCurrentPattern, initDebugFilter, isCategoryEnabled } from "../utils/index.js";
5
+ import { DEBUG_CATEGORIES, LOG, escapeHtml, formatError, getCurrentPattern, initDebugFilter, isCategoryEnabled, serializeAttrs } from "../utils/index.js";
6
6
  import { generateBaseStyles, generatePageWrapper } from "./ui.js";
7
7
  import { CONFIG } from "../config/index.js";
8
8
  import { getDebugEnv } from "../config/paths.js";
9
9
  import { mutateConfig } from "../config/userConfig.js";
10
+ /* This module provides a hidden (undocumented) web page at /debug for runtime control of debug logging categories. Toggling a category enables or disables its
11
+ * debug output immediately; the runtime filter is updated in place and the canonical form is persisted to config.json so the change survives restarts.
12
+ *
13
+ * The page is laid out as a vertical stack of cards (".debug-section"), each holding one or more rows (".debug-row"). The row is the only visual primitive on
14
+ * the page, and every variant - group header, grouped leaf, standalone leaf - emits the same DOM shape; the variants differ only in which named tracks of a
15
+ * shared CSS Grid each cell occupies. ".debug-section" owns the grid template; ".debug-row" inherits the column tracks via subgrid, so the column geometry
16
+ * exists in exactly one CSS rule and every row participates in the same coordinate system.
17
+ *
18
+ * Identifier conventions (ID prefixes, data-attribute names) are hoisted to module constants and templated into both the server-side HTML emission and the
19
+ * client-side script string. Renaming any of them is a one-line change and the server and client stay in lockstep. The client uses delegated change-event
20
+ * handling, so the rendered HTML carries no inline onchange handlers - the only function-name surface between the two sides is the constants themselves.
21
+ */
22
+ // Identifier Conventions.
23
+ /* ID prefixes, data-attribute names, and action values referenced by both the server-side renderer (when emitting markup) and the client-side script string
24
+ * (when querying or matching against it). Both sides interpolate these constants rather than hard-coding the literals, so renaming any of them is a one-line
25
+ * change and the server and client stay in lockstep.
26
+ */
27
+ // HTML id prefixes: leaves and section parent toggles.
28
+ const LEAF_ID_PREFIX = "cat-";
29
+ const SECTION_ID_PREFIX = "group-";
30
+ // Data-attribute names carried by leaf and action elements.
31
+ const ATTR_ACTION = "data-debug-action";
32
+ const ATTR_CATEGORY = "data-category";
33
+ const ATTR_GROUP = "data-group";
34
+ const ATTR_INDETERMINATE = "data-indeterminate";
35
+ // Action values for the data-debug-action attribute on the action-bar buttons.
36
+ const ACTION_APPLY = "apply";
37
+ const ACTION_DESELECT_ALL = "deselect-all";
38
+ const ACTION_SELECT_ALL = "select-all";
10
39
  // Helpers.
11
40
  /**
12
- * Organizes the flat category list into hierarchical groups by splitting on the first colon. Categories without a colon that are also a prefix of other categories
13
- * are treated as both a group parent and a child within that group. Standalone categories with no colon and no sub-categories form single-child groups.
14
- * @returns Sorted array of category groups.
41
+ * Builds the view model from the flat DEBUG_CATEGORIES list. Categories with a colon are grouped under the substring preceding the colon; categories without
42
+ * a colon become standalone leaves. The resulting list is sorted alphabetically by display key (section prefix for groups, category name for standalones) so
43
+ * the page renders deterministically regardless of registry insertion order.
44
+ * @returns Sorted array of top-level category nodes.
15
45
  */
16
- function buildCategoryGroups() {
17
- const groupMap = new Map();
46
+ function buildCategoryNodes() {
47
+ const sections = new Map();
48
+ const standalones = [];
18
49
  for (const entry of DEBUG_CATEGORIES) {
19
50
  const colonIndex = entry.category.indexOf(":");
20
- const prefix = (colonIndex === -1) ? entry.category : entry.category.substring(0, colonIndex);
21
- let group = groupMap.get(prefix);
22
- if (!group) {
23
- group = [];
24
- groupMap.set(prefix, group);
51
+ if (colonIndex === -1) {
52
+ standalones.push({ category: entry.category, description: entry.description });
53
+ continue;
54
+ }
55
+ const prefix = entry.category.substring(0, colonIndex);
56
+ let leaves = sections.get(prefix);
57
+ if (!leaves) {
58
+ leaves = [];
59
+ sections.set(prefix, leaves);
25
60
  }
26
- group.push({ category: entry.category, description: entry.description });
61
+ leaves.push({ category: entry.category, description: entry.description });
27
62
  }
28
- // Sort groups alphabetically by prefix, and children alphabetically within each group.
29
- const groups = [];
30
- for (const [prefix, children] of groupMap) {
31
- children.sort((a, b) => a.category.localeCompare(b.category));
32
- groups.push({ children, prefix });
63
+ const nodes = [];
64
+ for (const [prefix, leaves] of sections) {
65
+ leaves.sort((a, b) => a.category.localeCompare(b.category));
66
+ nodes.push({ kind: "section", leaves, prefix });
33
67
  }
34
- groups.sort((a, b) => a.prefix.localeCompare(b.prefix));
35
- return groups;
68
+ for (const leaf of standalones) {
69
+ nodes.push({ kind: "standalone", leaf });
70
+ }
71
+ nodes.sort((a, b) => {
72
+ const aKey = (a.kind === "section") ? a.prefix : a.leaf.category;
73
+ const bKey = (b.kind === "section") ? b.prefix : b.leaf.category;
74
+ return aKey.localeCompare(bKey);
75
+ });
76
+ return nodes;
36
77
  }
37
78
  /**
38
- * Generates the page-specific CSS styles for the debug endpoint.
79
+ * Generates the page-specific CSS styles for the debug endpoint. Layout is owned by ".debug-section" - a CSS Grid with four named tracks. Each ".debug-row"
80
+ * inherits those tracks via subgrid, so the column geometry exists in exactly one rule and every row participates in the same coordinate system. Variants
81
+ * (header, leaf, standalone) place their cells into the appropriate named tracks via modifier classes; description-column alignment falls out of the grid
82
+ * template itself rather than depending on per-row CSS staying in sync.
39
83
  * @returns CSS string for the debug page.
40
84
  */
41
85
  function generateDebugStyles() {
42
86
  return [
43
- ".debug-container { max-width: 800px; margin: 0 auto; padding: 24px; }",
87
+ // Column geometry. These five variables are the sole source of truth for the grid's column widths and gaps; the rules below reference them rather than
88
+ // restating numeric values, so tuning the layout means editing this one line. Scoped to ".debug-container" - the only consumer subtree - so they don't
89
+ // leak into the rest of the document's cascade.
90
+ ".debug-container { max-width: 800px; margin: 0 auto; padding: 24px;",
91
+ " --debug-indent-col: 28px; --debug-checkbox-col: 14px; --debug-label-col: 11rem; --debug-col-gap: 8px; --debug-row-gap: 6px; }",
44
92
  ".debug-header { margin-bottom: 24px; }",
45
93
  ".debug-header h1 { margin: 0 0 8px 0; font-size: 1.5rem; color: var(--text-heading); }",
46
94
  ".debug-header p { margin: 0; color: var(--text-secondary); font-size: 0.9rem; }",
@@ -49,16 +97,27 @@ function generateDebugStyles() {
49
97
  " margin-bottom: 24px; font-family: 'SF Mono', 'Fira Code', 'Cascadia Code', monospace; font-size: 0.85rem; color: var(--text-primary);",
50
98
  " word-break: break-all; }",
51
99
  ".debug-status-label { color: var(--text-muted); font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 4px; }",
52
- // Category groups.
53
- ".debug-groups { display: flex; flex-direction: column; gap: 16px; margin-bottom: 24px; }",
54
- ".debug-group { background: var(--surface-elevated); border: 1px solid var(--border-default); border-radius: 8px; padding: 16px; }",
55
- ".debug-group-header { display: flex; align-items: baseline; gap: 8px; margin-bottom: 8px; }",
56
- ".debug-group-header label { font-weight: 600; font-size: 0.95rem; color: var(--text-heading); cursor: pointer; min-width: 150px; }",
57
- ".debug-group-children { padding-left: 28px; display: flex; flex-direction: column; gap: 6px; }",
58
- ".debug-child { display: flex; align-items: baseline; gap: 8px; }",
59
- ".debug-child label { cursor: pointer; font-size: 0.9rem; color: var(--text-primary); min-width: 150px; }",
60
- ".debug-child-desc { color: var(--text-muted); font-size: 0.8rem; margin-left: 4px; }",
61
- // Checkbox styling.
100
+ // Section cards. ".debug-section" is the grid container that owns the four-track column template; every row inside it inherits these tracks via subgrid,
101
+ // so the column x-positions are computed once per card and shared across all of the card's rows.
102
+ ".debug-pane { display: flex; flex-direction: column; gap: 16px; margin-bottom: 24px; }",
103
+ ".debug-section { background: var(--surface-elevated); border: 1px solid var(--border-default); border-radius: 8px; padding: 16px;",
104
+ " display: grid; column-gap: var(--debug-col-gap); row-gap: var(--debug-row-gap);",
105
+ " grid-template-columns: [indent] var(--debug-indent-col) [checkbox] var(--debug-checkbox-col) [label] var(--debug-label-col) [desc] 1fr; }",
106
+ // The row template. Rows span all four section columns and inherit those tracks via "grid-template-columns: subgrid", so every cell across every row
107
+ // (across every section) lives in the same coordinate system. There is no second column declaration anywhere.
108
+ ".debug-row { display: grid; grid-column: 1 / -1; grid-template-columns: subgrid; align-items: baseline; }",
109
+ // Default cell placement is the grouped-leaf shape: checkbox in [checkbox], label in [label], description in [desc]. Visually this is the indented child
110
+ // sitting under a parent header row inside the same section card.
111
+ ".debug-row > input[type=\"checkbox\"] { grid-column: checkbox; }",
112
+ ".debug-row > label { grid-column: label; cursor: pointer; font-size: 0.9rem; color: var(--text-primary); }",
113
+ ".debug-row > .debug-row__desc { grid-column: desc; color: var(--text-muted); font-size: 0.8rem; }",
114
+ // Header and standalone variants share the same column slotting: the checkbox sits in [indent] (visually at the section's left edge), and the label spans
115
+ // the [checkbox] and [label] tracks so the bold prefix label can stretch wider than a regular leaf label. The description, when present (standalone only -
116
+ // header rows leave it empty), still lands in [desc], which is what aligns it with every other description on the page.
117
+ ".debug-row--header > input[type=\"checkbox\"], .debug-row--standalone > input[type=\"checkbox\"] { grid-column: indent; }",
118
+ ".debug-row--header > label, .debug-row--standalone > label { grid-column: checkbox / desc; font-weight: 600; font-size: 0.95rem;",
119
+ " color: var(--text-heading); }",
120
+ // Checkbox styling. Shared by every checkbox on the page (group headers, leaves, standalones).
62
121
  "input[type='checkbox'] { cursor: pointer; accent-color: var(--interactive-primary); position: relative; top: 2px; }",
63
122
  // Action bar.
64
123
  ".debug-actions { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; margin-bottom: 24px; }",
@@ -83,98 +142,188 @@ function generateDebugStyles() {
83
142
  ].join("\n");
84
143
  }
85
144
  /**
86
- * Generates the client-side JavaScript for checkbox behavior: parent toggles all children, child changes update parent state, select all / deselect all, and
87
- * synchronization between checkboxes and the raw pattern input.
145
+ * Generates the client-side JavaScript for checkbox and action-button behavior. Two delegated listeners cover the whole page: one "change" listener on
146
+ * ".debug-pane" dispatches checkbox events by identity (id prefix vs. presence of the group data-attribute), and one "click" listener on ".debug-actions"
147
+ * dispatches button clicks by the data-debug-action attribute. The rendered HTML therefore carries no inline event handlers, so the JS function names are
148
+ * only referenced from inside this script. The ID prefixes, attribute names, and action values are templated in from the module constants above, so the
149
+ * server-side renderer and the client-side script cannot drift.
88
150
  * @returns JavaScript string (without script tags).
89
151
  */
90
152
  function generateDebugScript() {
91
153
  return [
154
+ // Initial state. The HTML "checked" attribute cannot express the indeterminate state, so we apply it from JS once the rows have rendered. Matches by
155
+ // attribute presence (no value), aligned with the HTML5 boolean-attribute form the renderer emits.
156
+ "for(const el of document.querySelectorAll('[" + ATTR_INDETERMINATE + "]')) el.indeterminate = true;",
92
157
  "function updateParentState(prefix) {",
93
- " var parent = document.getElementById('group-' + prefix);",
158
+ " const parent = document.getElementById('" + SECTION_ID_PREFIX + "' + prefix);",
94
159
  " if(!parent) return;",
95
- " var children = document.querySelectorAll('input[data-group=\"' + prefix + '\"]');",
96
- " var checked = 0;",
97
- " for(var i = 0; i < children.length; i++) { if(children[i].checked) checked++; }",
160
+ " const children = document.querySelectorAll('input[" + ATTR_GROUP + "=\"' + prefix + '\"]');",
161
+ " const checked = Array.from(children).filter((child) => child.checked).length;",
98
162
  " parent.checked = (checked === children.length);",
99
163
  " parent.indeterminate = (checked > 0) && (checked < children.length);",
100
164
  "}",
101
- "function onParentToggle(prefix) {",
102
- " var parent = document.getElementById('group-' + prefix);",
103
- " var children = document.querySelectorAll('input[data-group=\"' + prefix + '\"]');",
104
- " for(var i = 0; i < children.length; i++) { children[i].checked = parent.checked; }",
105
- " parent.indeterminate = false;",
106
- " syncRawFromCheckboxes();",
107
- "}",
108
- "function onChildToggle(prefix) {",
109
- " updateParentState(prefix);",
110
- " syncRawFromCheckboxes();",
111
- "}",
112
165
  "function selectAll(checked) {",
113
- " var boxes = document.querySelectorAll('input[type=\"checkbox\"]');",
114
- " for(var i = 0; i < boxes.length; i++) { boxes[i].checked = checked; boxes[i].indeterminate = false; }",
166
+ " const boxes = document.querySelectorAll('input[type=\"checkbox\"]');",
167
+ " for(const box of boxes) { box.checked = checked; box.indeterminate = false; }",
115
168
  " syncRawFromCheckboxes();",
116
169
  "}",
117
170
  "function syncRawFromCheckboxes() {",
118
- " var all = document.querySelectorAll('input[data-category]');",
119
- " var selected = [];",
120
- " var total = all.length;",
121
- " for(var i = 0; i < all.length; i++) { if(all[i].checked) selected.push(all[i].getAttribute('data-category')); }",
122
- " var input = document.getElementById('raw-pattern');",
123
- " if(selected.length === total) { input.value = '*'; }",
171
+ " const all = document.querySelectorAll('input[" + ATTR_CATEGORY + "]');",
172
+ " const selected = Array.from(all).filter((cb) => cb.checked).map((cb) => cb.getAttribute('" + ATTR_CATEGORY + "'));",
173
+ " const input = document.getElementById('raw-pattern');",
174
+ " if(selected.length === all.length) { input.value = '*'; }",
124
175
  " else if(selected.length === 0) { input.value = ''; }",
125
176
  " else { input.value = selected.join(','); }",
126
177
  "}",
127
178
  "function syncCheckboxesFromRaw() {",
128
- " var raw = document.getElementById('raw-pattern').value.trim();",
129
- " var all = document.querySelectorAll('input[data-category]');",
130
- " if(raw === '') { for(var i = 0; i < all.length; i++) { all[i].checked = false; } }",
131
- " else {",
132
- " var rawParts = raw.split(',').map(function(p) { return p.trim(); }).filter(function(p) { return p.length > 0; });",
133
- " var hasWildcard = rawParts.includes('*');",
134
- " var includes = rawParts.filter(function(p) { return p !== '*' && p[0] !== '-'; });",
135
- " var excludes = rawParts.filter(function(p) { return p[0] === '-'; }).map(function(p) { return p.substring(1); });",
136
- " for(var i = 0; i < all.length; i++) {",
137
- " var cat = all[i].getAttribute('data-category');",
138
- " var excluded = false;",
139
- " for(var j = 0; j < excludes.length; j++) {",
140
- " if(cat === excludes[j] || cat.indexOf(excludes[j] + ':') === 0) { excluded = true; break; }",
141
- " }",
142
- " if(excluded) { all[i].checked = false; continue; }",
143
- " if(hasWildcard) { all[i].checked = true; continue; }",
144
- " var match = false;",
145
- " for(var j = 0; j < includes.length; j++) {",
146
- " if(cat === includes[j] || cat.indexOf(includes[j] + ':') === 0) { match = true; break; }",
147
- " }",
148
- " all[i].checked = match;",
179
+ " const raw = document.getElementById('raw-pattern').value.trim();",
180
+ " const all = document.querySelectorAll('input[" + ATTR_CATEGORY + "]');",
181
+ " if(raw === '') {",
182
+ " for(const cb of all) cb.checked = false;",
183
+ " } else {",
184
+ " const rawParts = raw.split(',').map((p) => p.trim()).filter((p) => p.length > 0);",
185
+ " const hasWildcard = rawParts.includes('*');",
186
+ " const includes = rawParts.filter((p) => (p !== '*') && (p[0] !== '-'));",
187
+ " const excludes = rawParts.filter((p) => p[0] === '-').map((p) => p.substring(1));",
188
+ " for(const cb of all) {",
189
+ " const cat = cb.getAttribute('" + ATTR_CATEGORY + "');",
190
+ " const isExcluded = excludes.some((ex) => (cat === ex) || cat.startsWith(ex + ':'));",
191
+ " if(isExcluded) { cb.checked = false; continue; }",
192
+ " if(hasWildcard) { cb.checked = true; continue; }",
193
+ " cb.checked = includes.some((inc) => (cat === inc) || cat.startsWith(inc + ':'));",
149
194
  " }",
150
195
  " }",
151
- " var prefixes = {};",
152
- " for(var i = 0; i < all.length; i++) {",
153
- " var g = all[i].getAttribute('data-group');",
154
- " if(g) prefixes[g] = true;",
196
+ " const prefixes = new Set();",
197
+ " for(const cb of all) {",
198
+ " const g = cb.getAttribute('" + ATTR_GROUP + "');",
199
+ " if(g) prefixes.add(g);",
155
200
  " }",
156
- " for(var p in prefixes) { updateParentState(p); }",
201
+ " for(const p of prefixes) updateParentState(p);",
157
202
  "}",
158
203
  "function applyPattern() {",
159
- " var input = document.getElementById('raw-pattern');",
204
+ " const input = document.getElementById('raw-pattern');",
160
205
  " document.getElementById('debug-form-pattern').value = input.value;",
161
206
  " document.getElementById('debug-form').submit();",
162
207
  "}",
163
- "document.getElementById('raw-pattern').addEventListener('keydown', function(e) {",
164
- " if(e.key === 'Enter') { e.preventDefault(); applyPattern(); }",
208
+ // Delegated change listener for every checkbox on the page. The handler dispatches on identity: id starting with the section prefix means a parent
209
+ // toggle, presence of the group data-attribute means a grouped child, neither means a standalone. Any change syncs the raw pattern input afterward.
210
+ "const pane = document.querySelector('.debug-pane');",
211
+ "pane.addEventListener('change', (e) => {",
212
+ " const target = e.target;",
213
+ " if((target.tagName !== 'INPUT') || (target.type !== 'checkbox')) return;",
214
+ " if(target.id.startsWith('" + SECTION_ID_PREFIX + "')) {",
215
+ " const prefix = target.id.substring(" + String(SECTION_ID_PREFIX.length) + ");",
216
+ " const children = document.querySelectorAll('input[" + ATTR_GROUP + "=\"' + prefix + '\"]');",
217
+ " for(const child of children) child.checked = target.checked;",
218
+ " target.indeterminate = false;",
219
+ " } else if(target.hasAttribute('" + ATTR_GROUP + "')) {",
220
+ " updateParentState(target.getAttribute('" + ATTR_GROUP + "'));",
221
+ " }",
222
+ " syncRawFromCheckboxes();",
223
+ "});",
224
+ // Delegated click listener for the action bar. Buttons declare their intent via data-debug-action; the handler closest()-walks to find the nearest
225
+ // ancestor carrying the attribute, so clicks landing on child elements of a button still resolve correctly.
226
+ "const actions = document.querySelector('.debug-actions');",
227
+ "actions.addEventListener('click', (e) => {",
228
+ " const button = e.target.closest('[" + ATTR_ACTION + "]');",
229
+ " if(!button) return;",
230
+ " switch(button.getAttribute('" + ATTR_ACTION + "')) {",
231
+ " case '" + ACTION_APPLY + "': applyPattern(); break;",
232
+ " case '" + ACTION_SELECT_ALL + "': selectAll(true); break;",
233
+ " case '" + ACTION_DESELECT_ALL + "': selectAll(false); break;",
234
+ " }",
165
235
  "});",
166
- "document.getElementById('raw-pattern').addEventListener('input', function() {",
167
- " syncCheckboxesFromRaw();",
168
- "});"
236
+ "const rawPattern = document.getElementById('raw-pattern');",
237
+ "rawPattern.addEventListener('keydown', (e) => { if(e.key === 'Enter') { e.preventDefault(); applyPattern(); } });",
238
+ "rawPattern.addEventListener('input', syncCheckboxesFromRaw);"
169
239
  ].join("\n");
170
240
  }
241
+ /**
242
+ * Emits one row of the page from a typed RowSpec. Every visual variant (group header, grouped leaf, standalone leaf) flows through this single template; the
243
+ * variant's modifier class and per-cell content are all that change between calls. All HTML escaping happens here, so the variant builders pass raw values
244
+ * and stay declarative.
245
+ * @param spec - Row data description.
246
+ * @returns The row HTML.
247
+ */
248
+ function renderRow(spec) {
249
+ const variantSuffix = (spec.variant === "leaf") ? "" : " debug-row--" + spec.variant;
250
+ const escapedId = escapeHtml(spec.inputId);
251
+ return [
252
+ "<div class=\"debug-row" + variantSuffix + "\">",
253
+ "<input type=\"checkbox\" id=\"" + escapedId + "\"" + serializeAttrs(spec.inputAttrs) + ">",
254
+ "<label for=\"" + escapedId + "\">" + escapeHtml(spec.labelText) + "</label>",
255
+ "<span class=\"debug-row__desc\">" + escapeHtml(spec.description) + "</span>",
256
+ "</div>"
257
+ ].join("\n");
258
+ }
259
+ /**
260
+ * Renders a section's parent-toggle header row. The checkbox toggles every leaf below it via the delegated change handler; its checked/indeterminate state
261
+ * mirrors how many children are currently enabled.
262
+ * @param prefix - The namespace prefix shared by the section's leaves (also the displayed label text).
263
+ * @param allChecked - True when every child leaf is currently enabled.
264
+ * @param someChecked - True when at least one child leaf is currently enabled; combined with !allChecked this surfaces as the checkbox's indeterminate state.
265
+ * @returns The header row HTML.
266
+ */
267
+ function renderHeaderRow(prefix, allChecked, someChecked) {
268
+ return renderRow({
269
+ description: "",
270
+ inputAttrs: {
271
+ // HTML5 boolean attribute form: emit a bare "data-indeterminate" (no value) when the row is partially checked, otherwise omit the attribute entirely.
272
+ // The init script in the script blob below matches on presence ([data-indeterminate]), so the "true" literal lives in exactly zero places.
273
+ [ATTR_INDETERMINATE]: (!allChecked) && someChecked,
274
+ checked: allChecked
275
+ },
276
+ inputId: SECTION_ID_PREFIX + prefix,
277
+ labelText: prefix,
278
+ variant: "header"
279
+ });
280
+ }
281
+ /**
282
+ * Renders a grouped leaf row inside a section. The leaf carries data-group so the delegated handler can route the change to the section's parent header at
283
+ * "group-<prefix>".
284
+ * @param prefix - The section prefix owning this leaf.
285
+ * @param leaf - The leaf category to render.
286
+ * @returns The leaf row HTML.
287
+ */
288
+ function renderLeafRow(prefix, leaf) {
289
+ return renderRow({
290
+ description: leaf.description,
291
+ inputAttrs: {
292
+ [ATTR_CATEGORY]: leaf.category,
293
+ [ATTR_GROUP]: prefix,
294
+ checked: isCategoryEnabled(leaf.category)
295
+ },
296
+ inputId: LEAF_ID_PREFIX + leaf.category,
297
+ labelText: leaf.category,
298
+ variant: "leaf"
299
+ });
300
+ }
301
+ /**
302
+ * Renders a standalone (namespaceless) leaf row. Standalones have no parent group, so the row carries no data-group; the modifier class makes it visually
303
+ * match a section header (bold, left-aligned at the section's edge) while the description still lands in the shared [desc] track, so it aligns with every
304
+ * other description on the page.
305
+ * @param leaf - The standalone leaf category to render.
306
+ * @returns The standalone row HTML.
307
+ */
308
+ function renderStandaloneRow(leaf) {
309
+ return renderRow({
310
+ description: leaf.description,
311
+ inputAttrs: {
312
+ [ATTR_CATEGORY]: leaf.category,
313
+ checked: isCategoryEnabled(leaf.category)
314
+ },
315
+ inputId: LEAF_ID_PREFIX + leaf.category,
316
+ labelText: leaf.category,
317
+ variant: "standalone"
318
+ });
319
+ }
171
320
  /**
172
321
  * Generates the HTML body content for the debug page.
173
322
  * @returns HTML string for the page body.
174
323
  */
175
324
  function generateDebugBody() {
176
325
  const currentPattern = getCurrentPattern();
177
- const groups = buildCategoryGroups();
326
+ const nodes = buildCategoryNodes();
178
327
  const parts = [];
179
328
  parts.push("<div class=\"debug-container\">");
180
329
  // Header.
@@ -197,11 +346,25 @@ function generateDebugBody() {
197
346
  parts.push("<div class=\"debug-status-label\">Current Filter</div>");
198
347
  parts.push(currentPattern ? escapeHtml(currentPattern) : "<em style=\"color: var(--text-muted);\">No debug categories enabled.</em>");
199
348
  parts.push("</div>");
200
- // Action buttons.
349
+ // Action buttons. Each entry carries the semantic intent ("primary" vs. the default secondary visual treatment), the action identifier dispatched by the
350
+ // delegated click listener on ".debug-actions", and the display label. The "primary"-to-class-name mapping lives in exactly one place below, so changing
351
+ // the CSS class scheme is a one-line edit rather than three. No inline onclick handlers, so the JS function names are not referenced from the HTML.
352
+ const actionButtons = [
353
+ { action: ACTION_APPLY, label: "Apply", primary: true },
354
+ { action: ACTION_SELECT_ALL, label: "Select All" },
355
+ { action: ACTION_DESELECT_ALL, label: "Deselect All" }
356
+ ];
201
357
  parts.push("<div class=\"debug-actions\">");
202
- parts.push("<button type=\"button\" class=\"debug-btn-apply\" onclick=\"applyPattern()\">Apply</button>");
203
- parts.push("<button type=\"button\" class=\"debug-btn-secondary\" onclick=\"selectAll(true)\">Select All</button>");
204
- parts.push("<button type=\"button\" class=\"debug-btn-secondary\" onclick=\"selectAll(false)\">Deselect All</button>");
358
+ for (const button of actionButtons) {
359
+ // Routed through serializeAttrs so the leading-space contract, HTML escaping, and conditional emission live in exactly one place - same shape the row
360
+ // renderer uses below. Keys are listed in the source-name alphabetical order the project's sort-keys rule expects; serializeAttrs emits in insertion
361
+ // order, so the rendered output mirrors that ordering and tests assert on attribute presence rather than positional layout.
362
+ parts.push("<button" + serializeAttrs({
363
+ [ATTR_ACTION]: button.action,
364
+ "class": button.primary ? "debug-btn-apply" : "debug-btn-secondary",
365
+ type: "button"
366
+ }) + ">" + escapeHtml(button.label) + "</button>");
367
+ }
205
368
  parts.push("</div>");
206
369
  // Raw pattern input.
207
370
  parts.push("<div class=\"debug-raw\">");
@@ -210,49 +373,28 @@ function generateDebugBody() {
210
373
  parts.push(" placeholder=\"e.g. *,-streaming:ffmpeg or tuning:hulu,recovery\">");
211
374
  parts.push("<div class=\"debug-raw-hint\">Comma-separated. Use * for all, prefix with - to exclude.</div>");
212
375
  parts.push("</div>");
213
- // Category groups with checkboxes.
214
- parts.push("<div class=\"debug-groups\">");
215
- for (const group of groups) {
216
- const groupId = "group-" + group.prefix;
217
- const firstChild = group.children[0];
218
- const isSingleChild = (group.children.length === 1) && (firstChild?.category === group.prefix);
219
- parts.push("<div class=\"debug-group\">");
220
- if (isSingleChild) {
221
- // Standalone category (no colon, no sub-categories). Render as a single checkbox.
222
- const checked = isCategoryEnabled(firstChild.category) ? " checked" : "";
223
- parts.push("<div class=\"debug-group-header\">");
224
- parts.push("<input type=\"checkbox\" id=\"cat-" + escapeHtml(firstChild.category) + "\" data-category=\"" + escapeHtml(firstChild.category) + "\"");
225
- parts.push(" data-group=\"" + escapeHtml(group.prefix) + "\"" + checked);
226
- parts.push(" onchange=\"syncRawFromCheckboxes()\">");
227
- parts.push("<label for=\"cat-" + escapeHtml(firstChild.category) + "\">" + escapeHtml(firstChild.category) + "</label>");
228
- parts.push("<span class=\"debug-child-desc\">" + escapeHtml(firstChild.description) + "</span>");
229
- parts.push("</div>");
230
- }
231
- else {
232
- // Group with children. Render parent checkbox and indented children.
233
- const allChecked = group.children.every((c) => isCategoryEnabled(c.category));
234
- const someChecked = group.children.some((c) => isCategoryEnabled(c.category));
235
- const parentChecked = allChecked ? " checked" : "";
236
- const parentIndeterminate = (!allChecked && someChecked) ? " data-indeterminate=\"true\"" : "";
237
- parts.push("<div class=\"debug-group-header\">");
238
- parts.push("<input type=\"checkbox\" id=\"" + groupId + "\"" + parentChecked + parentIndeterminate);
239
- parts.push(" onchange=\"onParentToggle('" + escapeHtml(group.prefix) + "')\">");
240
- parts.push("<label for=\"" + groupId + "\">" + escapeHtml(group.prefix) + "</label>");
241
- parts.push("</div>");
242
- parts.push("<div class=\"debug-group-children\">");
243
- for (const child of group.children) {
244
- const checked = isCategoryEnabled(child.category) ? " checked" : "";
245
- parts.push("<div class=\"debug-child\">");
246
- parts.push("<input type=\"checkbox\" id=\"cat-" + escapeHtml(child.category) + "\" data-category=\"" + escapeHtml(child.category) + "\"");
247
- parts.push(" data-group=\"" + escapeHtml(group.prefix) + "\"" + checked);
248
- parts.push(" onchange=\"onChildToggle('" + escapeHtml(group.prefix) + "')\">");
249
- parts.push("<label for=\"cat-" + escapeHtml(child.category) + "\">" + escapeHtml(child.category) + "</label>");
250
- parts.push("<span class=\"debug-child-desc\">" + escapeHtml(child.description) + "</span>");
251
- parts.push("</div>");
376
+ // Category sections. Every top-level CategoryNode produces one ".debug-section" card; sections expand into a header row plus one leaf row per child,
377
+ // standalones into a single row. The renderer is an exhaustive switch over the discriminated union, so adding a new variant means adding a case here and
378
+ // a small builder above - no branch in the HTML emission itself.
379
+ parts.push("<div class=\"debug-pane\">");
380
+ for (const node of nodes) {
381
+ parts.push("<section class=\"debug-section\">");
382
+ switch (node.kind) {
383
+ case "section": {
384
+ const allChecked = node.leaves.every((leaf) => isCategoryEnabled(leaf.category));
385
+ const someChecked = node.leaves.some((leaf) => isCategoryEnabled(leaf.category));
386
+ parts.push(renderHeaderRow(node.prefix, allChecked, someChecked));
387
+ for (const leaf of node.leaves) {
388
+ parts.push(renderLeafRow(node.prefix, leaf));
389
+ }
390
+ break;
391
+ }
392
+ case "standalone": {
393
+ parts.push(renderStandaloneRow(node.leaf));
394
+ break;
252
395
  }
253
- parts.push("</div>");
254
396
  }
255
- parts.push("</div>");
397
+ parts.push("</section>");
256
398
  }
257
399
  parts.push("</div>");
258
400
  // Hidden form for POST submission.
@@ -260,11 +402,7 @@ function generateDebugBody() {
260
402
  parts.push("<input type=\"hidden\" id=\"debug-form-pattern\" name=\"pattern\" value=\"\">");
261
403
  parts.push("</form>");
262
404
  parts.push("</div>");
263
- // Script to set initial indeterminate state on page load. The HTML checked attribute cannot express the indeterminate state, so we set it via JavaScript.
264
- const initScript = [
265
- "document.querySelectorAll('[data-indeterminate=\"true\"]').forEach(function(el) { el.indeterminate = true; });"
266
- ].join("\n");
267
- parts.push("<script>" + initScript + "\n" + generateDebugScript() + "</script>");
405
+ parts.push("<script>" + generateDebugScript() + "</script>");
268
406
  return parts.join("\n");
269
407
  }
270
408
  // Endpoint Setup.
@@ -1 +1 @@
1
- {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/routes/debug.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/routes/debug.ts"],"names":[],"mappings":"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"}
@@ -111,7 +111,7 @@ export function setupLogsEndpoint(app) {
111
111
  app.get("/logs", async (req, res) => {
112
112
  // Parse query parameters.
113
113
  const linesParam = parseInt(req.query["lines"], 10);
114
- const lines = (!isNaN(linesParam) && (linesParam > 0) && (linesParam <= 1000)) ? linesParam : 100;
114
+ const lines = (!Number.isNaN(linesParam) && (linesParam > 0) && (linesParam <= 1000)) ? linesParam : 100;
115
115
  const level = req.query["level"];
116
116
  try {
117
117
  const logsResponse = await readLogEntries(lines, level);
@@ -1 +1 @@
1
- {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/routes/logs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/routes/logs.ts"],"names":[],"mappings":"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"}