prismcast 1.4.2 → 1.5.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 (178) hide show
  1. package/dist/app.js +18 -1
  2. package/dist/app.js.map +1 -1
  3. package/dist/browser/cdp.d.ts +2 -1
  4. package/dist/browser/cdp.js +44 -23
  5. package/dist/browser/cdp.js.map +1 -1
  6. package/dist/browser/channelSelection.d.ts +45 -1
  7. package/dist/browser/channelSelection.js +164 -27
  8. package/dist/browser/channelSelection.js.map +1 -1
  9. package/dist/browser/display.d.ts +0 -4
  10. package/dist/browser/display.js +0 -7
  11. package/dist/browser/display.js.map +1 -1
  12. package/dist/browser/index.d.ts +5 -0
  13. package/dist/browser/index.js +14 -0
  14. package/dist/browser/index.js.map +1 -1
  15. package/dist/browser/precaching.d.ts +5 -0
  16. package/dist/browser/precaching.js +112 -0
  17. package/dist/browser/precaching.js.map +1 -0
  18. package/dist/browser/tuning/directv.d.ts +2 -0
  19. package/dist/browser/tuning/directv.js +723 -0
  20. package/dist/browser/tuning/directv.js.map +1 -0
  21. package/dist/browser/tuning/fox.d.ts +2 -2
  22. package/dist/browser/tuning/fox.js +141 -22
  23. package/dist/browser/tuning/fox.js.map +1 -1
  24. package/dist/browser/tuning/hbo.d.ts +2 -2
  25. package/dist/browser/tuning/hbo.js +110 -41
  26. package/dist/browser/tuning/hbo.js.map +1 -1
  27. package/dist/browser/tuning/hulu.d.ts +2 -2
  28. package/dist/browser/tuning/hulu.js +442 -168
  29. package/dist/browser/tuning/hulu.js.map +1 -1
  30. package/dist/browser/tuning/sling.d.ts +2 -2
  31. package/dist/browser/tuning/sling.js +200 -56
  32. package/dist/browser/tuning/sling.js.map +1 -1
  33. package/dist/browser/tuning/youtubeTv.d.ts +2 -2
  34. package/dist/browser/tuning/youtubeTv.js +243 -57
  35. package/dist/browser/tuning/youtubeTv.js.map +1 -1
  36. package/dist/browser/video.d.ts +1 -1
  37. package/dist/browser/video.js +4 -2
  38. package/dist/browser/video.js.map +1 -1
  39. package/dist/channels/index.js +280 -34
  40. package/dist/channels/index.js.map +1 -1
  41. package/dist/config/health.d.ts +78 -0
  42. package/dist/config/health.js +202 -0
  43. package/dist/config/health.js.map +1 -0
  44. package/dist/config/paths.d.ts +10 -0
  45. package/dist/config/paths.js +14 -0
  46. package/dist/config/paths.js.map +1 -1
  47. package/dist/config/profiles.d.ts +6 -4
  48. package/dist/config/profiles.js +65 -14
  49. package/dist/config/profiles.js.map +1 -1
  50. package/dist/config/providerPacks.d.ts +46 -0
  51. package/dist/config/providerPacks.js +200 -0
  52. package/dist/config/providerPacks.js.map +1 -0
  53. package/dist/config/providers.d.ts +36 -3
  54. package/dist/config/providers.js +168 -8
  55. package/dist/config/providers.js.map +1 -1
  56. package/dist/config/sites.d.ts +1 -12
  57. package/dist/config/sites.js +38 -5
  58. package/dist/config/sites.js.map +1 -1
  59. package/dist/config/userChannels.d.ts +12 -0
  60. package/dist/config/userChannels.js +81 -14
  61. package/dist/config/userChannels.js.map +1 -1
  62. package/dist/config/userConfig.d.ts +5 -1
  63. package/dist/config/userConfig.js +58 -6
  64. package/dist/config/userConfig.js.map +1 -1
  65. package/dist/config/userProfiles.d.ts +81 -0
  66. package/dist/config/userProfiles.js +424 -0
  67. package/dist/config/userProfiles.js.map +1 -0
  68. package/dist/routes/config/channels/index.d.ts +3 -0
  69. package/dist/routes/config/channels/index.js +3 -0
  70. package/dist/routes/config/channels/index.js.map +1 -0
  71. package/dist/routes/config/channels/routes.d.ts +6 -0
  72. package/dist/routes/config/channels/routes.js +797 -0
  73. package/dist/routes/config/channels/routes.js.map +1 -0
  74. package/dist/routes/config/channels/table.d.ts +46 -0
  75. package/dist/routes/config/channels/table.js +811 -0
  76. package/dist/routes/config/channels/table.js.map +1 -0
  77. package/dist/routes/config/index.d.ts +37 -0
  78. package/dist/routes/config/index.js +81 -0
  79. package/dist/routes/config/index.js.map +1 -0
  80. package/dist/routes/config/providers.d.ts +18 -0
  81. package/dist/routes/config/providers.js +573 -0
  82. package/dist/routes/config/providers.js.map +1 -0
  83. package/dist/routes/config/settings.d.ts +39 -0
  84. package/dist/routes/config/settings.js +820 -0
  85. package/dist/routes/config/settings.js.map +1 -0
  86. package/dist/routes/index.d.ts +3 -2
  87. package/dist/routes/index.js +7 -4
  88. package/dist/routes/index.js.map +1 -1
  89. package/dist/routes/playlist.d.ts +5 -1
  90. package/dist/routes/playlist.js +32 -7
  91. package/dist/routes/playlist.js.map +1 -1
  92. package/dist/routes/providers.d.ts +6 -0
  93. package/dist/routes/providers.js +166 -0
  94. package/dist/routes/providers.js.map +1 -0
  95. package/dist/routes/root/content.d.ts +32 -0
  96. package/dist/routes/root/content.js +857 -0
  97. package/dist/routes/root/content.js.map +1 -0
  98. package/dist/routes/root/index.js +197 -0
  99. package/dist/routes/root/index.js.map +1 -0
  100. package/dist/routes/root/scripts/channels.d.ts +1 -0
  101. package/dist/routes/root/scripts/channels.js +745 -0
  102. package/dist/routes/root/scripts/channels.js.map +1 -0
  103. package/dist/routes/root/scripts/config.d.ts +1 -0
  104. package/dist/routes/root/scripts/config.js +1662 -0
  105. package/dist/routes/root/scripts/config.js.map +1 -0
  106. package/dist/routes/root/scripts/index.d.ts +3 -0
  107. package/dist/routes/root/scripts/index.js +8 -0
  108. package/dist/routes/root/scripts/index.js.map +1 -0
  109. package/dist/routes/root/scripts/status.d.ts +1 -0
  110. package/dist/routes/root/scripts/status.js +436 -0
  111. package/dist/routes/root/scripts/status.js.map +1 -0
  112. package/dist/routes/root/styles.d.ts +5 -0
  113. package/dist/routes/root/styles.js +447 -0
  114. package/dist/routes/root/styles.js.map +1 -0
  115. package/dist/routes/ui.js +8 -3
  116. package/dist/routes/ui.js.map +1 -1
  117. package/dist/service/commands.d.ts +5 -3
  118. package/dist/service/commands.js +117 -33
  119. package/dist/service/commands.js.map +1 -1
  120. package/dist/service/generators.d.ts +27 -0
  121. package/dist/service/generators.js +97 -6
  122. package/dist/service/generators.js.map +1 -1
  123. package/dist/streaming/hls.js +18 -1
  124. package/dist/streaming/hls.js.map +1 -1
  125. package/dist/streaming/lifecycle.js +1 -1
  126. package/dist/streaming/lifecycle.js.map +1 -1
  127. package/dist/streaming/monitor.d.ts +1 -38
  128. package/dist/streaming/monitor.js +2 -289
  129. package/dist/streaming/monitor.js.map +1 -1
  130. package/dist/streaming/recovery.d.ts +143 -0
  131. package/dist/streaming/recovery.js +286 -0
  132. package/dist/streaming/recovery.js.map +1 -0
  133. package/dist/streaming/registry.d.ts +1 -1
  134. package/dist/streaming/setup.d.ts +1 -1
  135. package/dist/streaming/setup.js +3 -1
  136. package/dist/streaming/setup.js.map +1 -1
  137. package/dist/streaming/statusEmitter.d.ts +4 -2
  138. package/dist/streaming/statusEmitter.js +5 -0
  139. package/dist/streaming/statusEmitter.js.map +1 -1
  140. package/dist/types/channels.d.ts +68 -0
  141. package/dist/types/channels.js +2 -0
  142. package/dist/types/channels.js.map +1 -0
  143. package/dist/types/config.d.ts +127 -0
  144. package/dist/types/config.js +2 -0
  145. package/dist/types/config.js.map +1 -0
  146. package/dist/types/index.d.ts +7 -429
  147. package/dist/types/index.js +1 -5
  148. package/dist/types/index.js.map +1 -1
  149. package/dist/types/profiles.d.ts +141 -0
  150. package/dist/types/profiles.js +2 -0
  151. package/dist/types/profiles.js.map +1 -0
  152. package/dist/types/selection.d.ts +101 -0
  153. package/dist/types/selection.js +6 -0
  154. package/dist/types/selection.js.map +1 -0
  155. package/dist/types/shared.d.ts +7 -0
  156. package/dist/types/shared.js +6 -0
  157. package/dist/types/shared.js.map +1 -0
  158. package/dist/types/streaming.d.ts +96 -0
  159. package/dist/types/streaming.js +2 -0
  160. package/dist/types/streaming.js.map +1 -0
  161. package/dist/utils/debugFilter.js +3 -1
  162. package/dist/utils/debugFilter.js.map +1 -1
  163. package/dist/utils/format.d.ts +7 -0
  164. package/dist/utils/format.js +22 -0
  165. package/dist/utils/format.js.map +1 -1
  166. package/dist/utils/index.d.ts +1 -0
  167. package/dist/utils/index.js +1 -0
  168. package/dist/utils/index.js.map +1 -1
  169. package/dist/utils/sanitize.d.ts +14 -0
  170. package/dist/utils/sanitize.js +37 -0
  171. package/dist/utils/sanitize.js.map +1 -0
  172. package/package.json +5 -3
  173. package/dist/routes/config.d.ts +0 -76
  174. package/dist/routes/config.js +0 -2187
  175. package/dist/routes/config.js.map +0 -1
  176. package/dist/routes/root.js +0 -3158
  177. package/dist/routes/root.js.map +0 -1
  178. /package/dist/routes/{root.d.ts → root/index.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/routes/root/scripts/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { generateChannelsSubtabScript } from "./channels.js";
2
+ export { generateConfigSubtabScript } from "./config.js";
3
+ export { generateStatusScript } from "./status.js";
@@ -0,0 +1,8 @@
1
+ /* Copyright(C) 2024-2026, HJD (https://github.com/hjdhjd). All rights reserved.
2
+ *
3
+ * index.ts: Barrel re-export for client-side JavaScript generators.
4
+ */
5
+ export { generateChannelsSubtabScript } from "./channels.js";
6
+ export { generateConfigSubtabScript } from "./config.js";
7
+ export { generateStatusScript } from "./status.js";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/routes/root/scripts/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function generateStatusScript(): string;
@@ -0,0 +1,436 @@
1
+ /* Copyright(C) 2024-2026, HJD (https://github.com/hjdhjd). All rights reserved.
2
+ *
3
+ * status.ts: Client-side JavaScript generator for the PrismCast status display.
4
+ */
5
+ export function generateStatusScript() {
6
+ return [
7
+ "<script>",
8
+ "var statusEventSource = null;",
9
+ "var streamData = {};",
10
+ "var systemData = null;",
11
+ "var expandedStreams = {};",
12
+ "var healthColorVars = { healthy: 'var(--stream-healthy)', buffering: 'var(--stream-buffering)', recovering: 'var(--stream-recovering)', ",
13
+ " stalled: 'var(--stream-stalled)', error: 'var(--stream-error)' };",
14
+ // Format duration in human readable format.
15
+ "function formatDuration(seconds) {",
16
+ " if (seconds < 60) return seconds + 's';",
17
+ " if (seconds < 3600) return Math.floor(seconds / 60) + 'm ' + (seconds % 60) + 's';",
18
+ " var h = Math.floor(seconds / 3600);",
19
+ " var m = Math.floor((seconds % 3600) / 60);",
20
+ " return h + 'h ' + m + 'm';",
21
+ "}",
22
+ // Format bytes in human readable format.
23
+ "function formatBytes(bytes) {",
24
+ " if (bytes === 0) return '0 B';",
25
+ " if (bytes < 1024) return bytes + ' B';",
26
+ " if (bytes < 1048576) return (bytes / 1024).toFixed(1) + ' KB';",
27
+ " return (bytes / 1048576).toFixed(1) + ' MB';",
28
+ "}",
29
+ // Format absolute time (e.g., "6:54 AM" or "Jan 14, 6:54 AM" if different day).
30
+ "function formatTime(isoString) {",
31
+ " var date = new Date(isoString);",
32
+ " var now = new Date();",
33
+ " var hours = date.getHours();",
34
+ " var minutes = date.getMinutes();",
35
+ " var ampm = hours >= 12 ? 'PM' : 'AM';",
36
+ " hours = hours % 12;",
37
+ " hours = hours ? hours : 12;",
38
+ " var timeStr = hours + ':' + (minutes < 10 ? '0' : '') + minutes + ' ' + ampm;",
39
+ " if (date.toDateString() !== now.toDateString()) {",
40
+ " var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];",
41
+ " timeStr = months[date.getMonth()] + ' ' + date.getDate() + ', ' + timeStr;",
42
+ " }",
43
+ " return timeStr;",
44
+ "}",
45
+ // Extract concise domain from URL for display (last two hostname parts). Mirrors the server-side extractDomain() in utils/format.ts.
46
+ "function getDomain(url) {",
47
+ " try {",
48
+ " var parts = new URL(url).hostname.split('.');",
49
+ " return parts.length > 2 ? parts.slice(-2).join('.') : parts.join('.');",
50
+ " } catch (e) {",
51
+ " return url;",
52
+ " }",
53
+ "}",
54
+ // Build channel display HTML with an optional logo image. When a logo URL is available, renders an img element with an onerror fallback that hides the
55
+ // image and reveals a text span. The logoClass and textClass parameters allow callers to apply context-specific sizing.
56
+ "function channelDisplayHtml(logoUrl, name, logoClass, textClass) {",
57
+ " if(logoUrl) {",
58
+ " return '<img src=\"' + logoUrl + '\" class=\"' + logoClass + '\" alt=\"' + name + '\" title=\"' + name + '\" ' +",
59
+ " 'onerror=\"this.style.display=\\'none\\';this.nextElementSibling.style.display=\\'inline\\'\">' +",
60
+ " '<span class=\"' + textClass + '\" style=\"display:none\">' + name + '</span>';",
61
+ " }",
62
+ " return '<span class=\"' + textClass + '\">' + name + '</span>';",
63
+ "}",
64
+ // Get row background color based on health status. Uses CSS variables for theme support.
65
+ "function getRowTint(health) {",
66
+ " var tints = {",
67
+ " healthy: 'transparent',",
68
+ " buffering: 'var(--stream-tint-buffering)',",
69
+ " stalled: 'var(--stream-tint-stalled)',",
70
+ " recovering: 'var(--stream-tint-recovering)',",
71
+ " error: 'var(--stream-tint-error)'",
72
+ " };",
73
+ " return tints[health] || 'transparent';",
74
+ "}",
75
+ // Get health badge HTML using CSS variables for theme-aware colors. NOTE: Escalation level semantics defined in monitor.ts.
76
+ // L1=play/unmute, L2=seek, L3=source reload, L4=page navigation.
77
+ "function getHealthBadge(health, level) {",
78
+ " var label = '';",
79
+ " if (health === 'healthy') { label = 'Healthy'; }",
80
+ " else if (health === 'buffering') { label = 'Buffering'; }",
81
+ " else if (health === 'stalled') { label = 'Stalled'; }",
82
+ " else if (health === 'error') { label = 'Error'; }",
83
+ " else if (health === 'recovering') {",
84
+ " if (level === 1) { label = 'Resuming playback'; }",
85
+ " else if (level === 2) { label = 'Syncing to live'; }",
86
+ " else if (level === 3) { label = 'Reloading player'; }",
87
+ " else if (level >= 4) { label = 'Reloading page'; }",
88
+ " else { label = 'Recovering'; }",
89
+ " }",
90
+ " else { label = health; }",
91
+ " return '<span class=\"status-dot\" style=\"color: ' + (healthColorVars[health] || 'var(--text-muted)') + ';\">&#9679;</span> ' +",
92
+ " '<span style=\"color: var(--text-secondary);\">' + label + '</span>';",
93
+ "}",
94
+ // Update system status display in header. Shows system health (green dot when connected, red with label when not) and stream count.
95
+ "function updateSystemStatus() {",
96
+ " if(!systemData) return;",
97
+ " var healthEl = document.getElementById('system-health');",
98
+ " var streamEl = document.getElementById('stream-count');",
99
+ " if(systemData.browser.connected) {",
100
+ " healthEl.innerHTML = '<span class=\"status-dot\" style=\"color: var(--stream-healthy);\">&#9679;</span>';",
101
+ " } else {",
102
+ " healthEl.innerHTML = '<span class=\"status-dot\" style=\"color: var(--stream-error);\">&#9679;</span> Browser offline';",
103
+ " }",
104
+ " var active = systemData.streams.active;",
105
+ " var limit = systemData.streams.limit;",
106
+ " if(active === 0) {",
107
+ " streamEl.textContent = '0 streams';",
108
+ " streamEl.classList.remove('clickable');",
109
+ " var popMenu = document.getElementById('stream-popover-menu');",
110
+ " if(popMenu) popMenu.classList.remove('show');",
111
+ " } else {",
112
+ " streamEl.textContent = active + '/' + limit + ' streams';",
113
+ " streamEl.classList.add('clickable');",
114
+ " }",
115
+ "}",
116
+ // Build the popover content from streamData. Populates the given menu element with one row per active stream.
117
+ "function buildStreamPopoverContent(menu) {",
118
+ " var ids = Object.keys(streamData);",
119
+ " var html = '';",
120
+ " var now = Date.now();",
121
+ " for(var i = 0; i < ids.length; i++) {",
122
+ " var s = streamData[ids[i]];",
123
+ " var color = healthColorVars[s.health] || 'var(--text-muted)';",
124
+ " var name = s.channel || s.providerName || getDomain(s.url);",
125
+ " var dur = Math.floor((now - new Date(s.startTime).getTime()) / 1000);",
126
+ " var showSuffix = s.showName ? ' <span class=\"stream-popover-show\">' + s.showName + '</span>' : '';",
127
+ " html += '<div class=\"stream-popover-row\">';",
128
+ " html += '<span class=\"status-dot\" style=\"color: ' + color + ';\">&#9679;</span>';",
129
+ " html += channelDisplayHtml(s.logoUrl, name, 'stream-popover-logo', 'stream-popover-channel');",
130
+ " html += showSuffix;",
131
+ " html += '<span class=\"stream-popover-duration\">' + formatDuration(dur) + '</span>';",
132
+ " html += '</div>';",
133
+ " }",
134
+ " menu.innerHTML = html;",
135
+ "}",
136
+ // Update an already-open stream popover with current data. Called from SSE handlers and the duration interval.
137
+ "function updateStreamPopover() {",
138
+ " var menu = document.getElementById('stream-popover-menu');",
139
+ " if(!menu || !menu.classList.contains('show')) return;",
140
+ " var ids = Object.keys(streamData);",
141
+ " if(ids.length === 0) {",
142
+ " menu.classList.remove('show');",
143
+ " return;",
144
+ " }",
145
+ " buildStreamPopoverContent(menu);",
146
+ "}",
147
+ // Toggle the stream popover open or closed.
148
+ "window.toggleStreamPopover = function() {",
149
+ " var ids = Object.keys(streamData);",
150
+ " if(ids.length === 0) return;",
151
+ " var menu = document.getElementById('stream-popover-menu');",
152
+ " if(!menu) return;",
153
+ " var isOpen = menu.classList.contains('show');",
154
+ " closeDropdowns();",
155
+ " if(!isOpen) {",
156
+ " buildStreamPopoverContent(menu);",
157
+ " menu.classList.add('show');",
158
+ " }",
159
+ "};",
160
+ // Format last issue for display.
161
+ "function formatLastIssue(s) {",
162
+ " if (!s.lastIssueType || !s.lastIssueTime) { return 'None'; }",
163
+ " var issueLabel = s.lastIssueType.charAt(0).toUpperCase() + s.lastIssueType.slice(1);",
164
+ " var timeStr = formatTime(new Date(s.lastIssueTime).toISOString());",
165
+ " var status = (s.health === 'healthy') ? ' (recovered)' : ' (recovering)';",
166
+ " return issueLabel + ' at ' + timeStr + status;",
167
+ "}",
168
+ // Format auto-recovery info for display.
169
+ "function formatAutoRecovery(s) {",
170
+ " var attempts = s.recoveryAttempts;",
171
+ " var reloads = s.pageReloadsInWindow;",
172
+ " if (attempts === 0) { return 'N/A'; }",
173
+ " var str = attempts + (attempts === 1 ? ' attempt' : ' attempts');",
174
+ " if (reloads > 0) { str += ', ' + reloads + (reloads === 1 ? ' page reload' : ' page reloads'); }",
175
+ " return str;",
176
+ "}",
177
+ // Format client type breakdown for the detail row.
178
+ "function formatClients(s) {",
179
+ " if (s.clientCount === 0) { return 'None'; }",
180
+ " var labels = { 'hls': 'HLS', 'mpegts': 'MPEG-TS' };",
181
+ " var parts = [];",
182
+ " for (var i = 0; i < s.clients.length; i++) {",
183
+ " var c = s.clients[i];",
184
+ " parts.push(c.count + ' ' + (labels[c.type] || c.type));",
185
+ " }",
186
+ " return parts.join(', ');",
187
+ "}",
188
+ // Render the streams table.
189
+ "function renderStreamsTable() {",
190
+ " var tbody = document.getElementById('streams-tbody');",
191
+ " if (!tbody) return;",
192
+ " var streamIds = Object.keys(streamData);",
193
+ " if (streamIds.length === 0) {",
194
+ " tbody.innerHTML = '<tr class=\"empty-row\"><td colspan=\"4\">No active streams</td></tr>';",
195
+ " return;",
196
+ " }",
197
+ " var html = '';",
198
+ " for (var i = 0; i < streamIds.length; i++) {",
199
+ " var id = streamIds[i];",
200
+ " var s = streamData[id];",
201
+ " var isExpanded = expandedStreams[id];",
202
+ " var chevron = isExpanded ? '&#9660;' : '&#9654;';",
203
+ " var rowTint = getRowTint(s.health);",
204
+ " var channelText = s.channel || s.providerName || getDomain(s.url);",
205
+ " var channelDisplay = channelDisplayHtml(s.logoUrl, channelText, 'channel-logo', 'channel-text');",
206
+ " html += '<tr class=\"stream-row\" data-id=\"' + id + '\" onclick=\"toggleStreamDetails(' + id + ')\" style=\"background-color: ' + rowTint + ';\">';",
207
+ " html += '<td class=\"chevron\">' + chevron + '</td>';",
208
+ " var durationSpan = '<span class=\"stream-duration\" id=\"duration-' + id + '\">\\u00b7 ' + formatDuration(s.duration) + '</span>';",
209
+ " html += '<td class=\"stream-info\">' + channelDisplay + ' ' + durationSpan + '</td>';",
210
+ " var showDisplay = s.showName ? s.showName : '';",
211
+ " html += '<td class=\"stream-show\">' + showDisplay + '</td>';",
212
+ " var clientIndicator = '';",
213
+ " if (s.clientCount > 0) {",
214
+ " var title = s.clientCount + (s.clientCount !== 1 ? ' clients' : ' client');",
215
+ " clientIndicator = '<span class=\"client-count\" title=\"' + title + '\">&#9673; ' + s.clientCount + '</span> ';",
216
+ " }",
217
+ " html += '<td class=\"stream-health\">' + clientIndicator + getHealthBadge(s.health, s.escalationLevel) + '</td>';",
218
+ " html += '</tr>';",
219
+ " if (isExpanded) {",
220
+ " html += '<tr class=\"stream-details\" data-id=\"' + id + '\">';",
221
+ " html += '<td colspan=\"4\">';",
222
+ " html += '<div class=\"details-content\">';",
223
+ " html += '<div class=\"details-header\">';",
224
+ " html += '<div class=\"details-url\">' + s.url + '</div>';",
225
+ " var clientSuffix = s.clientCount > 0 ? ' &middot; ' + formatClients(s) : '';",
226
+ " html += '<div class=\"details-started\"><strong>Started:</strong> ' + formatTime(s.startTime) + clientSuffix + '</div>';",
227
+ " html += '</div>';",
228
+ " html += '<div class=\"details-metrics\">';",
229
+ " html += '<div class=\"details-issue\"><strong>Last issue:</strong> ' + formatLastIssue(s) + '</div>';",
230
+ " html += '<div class=\"details-recovery\"><strong>Recovery:</strong> ' + formatAutoRecovery(s) + '</div>';",
231
+ " html += '<div class=\"details-memory\"><strong>Memory:</strong> ' + formatBytes(s.memoryBytes) + '</div>';",
232
+ " html += '</div>';",
233
+ " html += '</div>';",
234
+ " html += '</td></tr>';",
235
+ " }",
236
+ " }",
237
+ " tbody.innerHTML = html;",
238
+ "}",
239
+ // Toggle stream details.
240
+ "function toggleStreamDetails(id) {",
241
+ " expandedStreams[id] = !expandedStreams[id];",
242
+ " renderStreamsTable();",
243
+ "}",
244
+ // Update stream durations every second. We calculate duration from the immutable startTime rather than incrementing a counter, ensuring the displayed duration is
245
+ // always accurate regardless of any staleness in server-sent updates.
246
+ "function updateDurations() {",
247
+ " var now = Date.now();",
248
+ " var streamIds = Object.keys(streamData);",
249
+ " for (var i = 0; i < streamIds.length; i++) {",
250
+ " var id = streamIds[i];",
251
+ " var s = streamData[id];",
252
+ " var durationSec = Math.floor((now - new Date(s.startTime).getTime()) / 1000);",
253
+ " var el = document.getElementById('duration-' + id);",
254
+ " if (el) el.textContent = '\\u00b7 ' + formatDuration(durationSec);",
255
+ " }",
256
+ " updateStreamPopover();",
257
+ "}",
258
+ // Track the last time any SSE event was received from the status stream. Used by the staleness checker to detect silently dead connections.
259
+ "var lastStatusEventTime = Date.now();",
260
+ "var hiddenSince = 0;",
261
+ // Real-time health indicator updates. These functions update channel health icons and provider login icons in the Channels tab without a page refresh.
262
+ "function formatTimeAgo(ts) {",
263
+ " var seconds = Math.floor((Date.now() - ts) / 1000);",
264
+ " if(seconds < 60) { return 'just now'; }",
265
+ " var minutes = Math.floor(seconds / 60);",
266
+ " if(minutes < 60) { return minutes + (minutes === 1 ? ' minute ago' : ' minutes ago'); }",
267
+ " var hours = Math.floor(minutes / 60);",
268
+ " if(hours < 24) { return hours + (hours === 1 ? ' hour ago' : ' hours ago'); }",
269
+ " var days = Math.floor(hours / 24);",
270
+ " return days + (days === 1 ? ' day ago' : ' days ago');",
271
+ "}",
272
+ "function updateChannelHealth(channelKey, status, timestamp, providerTag) {",
273
+ " var row = document.getElementById('display-row-' + channelKey);",
274
+ " if(!row) { return; }",
275
+ // If a providerTag was supplied (snapshot and real-time events both include it), verify it matches the currently selected provider for this channel. The login
276
+ // button carries a data-provider-tag attribute with the selected provider. If the tags differ the health entry is from a previous provider and should be ignored.
277
+ " if(providerTag) {",
278
+ " var loginBtn = row.querySelector('.btn-icon-login');",
279
+ " if(loginBtn && loginBtn.getAttribute('data-provider-tag') !== providerTag) { return; }",
280
+ " }",
281
+ " var icon = row.querySelector('.btn-icon-health');",
282
+ " if(!icon) { return; }",
283
+ " icon.classList.remove('health-success', 'health-failed');",
284
+ " if(status === 'success') { icon.classList.add('health-success'); }",
285
+ " else if(status === 'failed') { icon.classList.add('health-failed'); }",
286
+ " icon.title = (status === 'success' ? 'Succeeded ' : 'Failed ') + formatTimeAgo(timestamp);",
287
+ "}",
288
+ "function updateProviderAuth(providerTag, timestamp) {",
289
+ " var buttons = document.querySelectorAll('.btn-icon-login[data-provider-tag=\"' + providerTag + '\"]');",
290
+ " for(var i = 0; i < buttons.length; i++) {",
291
+ " buttons[i].classList.add('health-success');",
292
+ " buttons[i].title = 'Verified ' + formatTimeAgo(timestamp);",
293
+ " }",
294
+ "}",
295
+ "function applyHealthSnapshot(data) {",
296
+ " var key;",
297
+ " for(key in data.channels) {",
298
+ " var entry = data.channels[key];",
299
+ " updateChannelHealth(key, entry.status, entry.timestamp, entry.providerTag);",
300
+ " }",
301
+ " for(key in data.providers) {",
302
+ " updateProviderAuth(key, data.providers[key]);",
303
+ " }",
304
+ "}",
305
+ // Connect (or reconnect) to the status SSE stream. Closes any existing connection first so this is safe to call repeatedly.
306
+ "function connectStatusSSE() {",
307
+ " if(statusEventSource) { statusEventSource.close(); }",
308
+ " statusEventSource = new EventSource('/streams/status');",
309
+ " lastStatusEventTime = Date.now();",
310
+ // Local helper that registers an event listener and updates the staleness timestamp on every event. Handlers are optional so heartbeat can
311
+ // be registered with just on('heartbeat') for pure keepalive tracking. The onerror handler stays outside this wrapper because errors must
312
+ // not reset the staleness timer — a connection that only fires errors is still dead.
313
+ " function on(event, handler) {",
314
+ " statusEventSource.addEventListener(event, function(e) {",
315
+ " lastStatusEventTime = Date.now();",
316
+ " if(handler) { handler(e); }",
317
+ " });",
318
+ " }",
319
+ " on('heartbeat');",
320
+ " on('snapshot', function(e) {",
321
+ " var data = JSON.parse(e.data);",
322
+ " systemData = data.system;",
323
+ " streamData = {};",
324
+ " for (var i = 0; i < data.streams.length; i++) {",
325
+ " streamData[data.streams[i].id] = data.streams[i];",
326
+ " }",
327
+ " updateSystemStatus();",
328
+ " renderStreamsTable();",
329
+ " updateStreamPopover();",
330
+ " if(data.health) { applyHealthSnapshot(data.health); }",
331
+ " });",
332
+ " on('streamAdded', function(e) {",
333
+ " var s = JSON.parse(e.data);",
334
+ " streamData[s.id] = s;",
335
+ " renderStreamsTable();",
336
+ " updateStreamPopover();",
337
+ " });",
338
+ " on('streamRemoved', function(e) {",
339
+ " var data = JSON.parse(e.data);",
340
+ " delete streamData[data.id];",
341
+ " delete expandedStreams[data.id];",
342
+ " renderStreamsTable();",
343
+ " updateStreamPopover();",
344
+ " if (typeof updateRestartDialogStatus === 'function') {",
345
+ " updateRestartDialogStatus();",
346
+ " }",
347
+ " });",
348
+ " on('streamHealthChanged', function(e) {",
349
+ " var s = JSON.parse(e.data);",
350
+ " if (streamData[s.id]) {",
351
+ " streamData[s.id] = s;",
352
+ " renderStreamsTable();",
353
+ " updateStreamPopover();",
354
+ " }",
355
+ " });",
356
+ " on('systemStatusChanged', function(e) {",
357
+ " systemData = JSON.parse(e.data);",
358
+ " updateSystemStatus();",
359
+ " });",
360
+ " on('healthChanged', function(e) {",
361
+ " var event = JSON.parse(e.data);",
362
+ " updateChannelHealth(event.channelKey, event.status, event.timestamp, event.providerTag);",
363
+ " if(event.status === 'success') { updateProviderAuth(event.providerTag, event.timestamp); }",
364
+ " });",
365
+ " statusEventSource.onerror = function() {",
366
+ " document.getElementById('system-health').innerHTML = '<span class=\"status-dot\" style=\"color: var(--stream-stalled);\">&#9679;</span> Updates paused';",
367
+ " };",
368
+ "}",
369
+ // Initial connection and periodic timers.
370
+ "connectStatusSSE();",
371
+ "setInterval(updateDurations, 1000);",
372
+ // Staleness detection: if no SSE event has arrived in 45 seconds, the connection is likely dead. Reconnect proactively.
373
+ "setInterval(function() {",
374
+ " if((Date.now() - lastStatusEventTime) > 45000) { connectStatusSSE(); }",
375
+ "}, 45000);",
376
+ // Visibility-driven reconnect. When the page returns from being hidden for more than 30 seconds, reconnect the status stream and re-activate
377
+ // the current tab so the logs stream reconnects naturally through its existing tabactivated listener.
378
+ "document.addEventListener('visibilitychange', function() {",
379
+ " if(document.hidden) {",
380
+ " hiddenSince = Date.now();",
381
+ " } else if((hiddenSince > 0) && ((Date.now() - hiddenSince) > 30000)) {",
382
+ " hiddenSince = 0;",
383
+ " connectStatusSSE();",
384
+ " var activeTab = document.querySelector('.tab-btn.active');",
385
+ " if(activeTab) {",
386
+ " document.dispatchEvent(new CustomEvent('tabactivated', { detail: { category: activeTab.getAttribute('data-category') } }));",
387
+ " }",
388
+ " } else {",
389
+ " hiddenSince = 0;",
390
+ " }",
391
+ "});",
392
+ // Copy playlist URL function for Overview tab Quick Start section.
393
+ "window.copyOverviewPlaylistUrl = function() {",
394
+ " var urlEl = document.getElementById('overview-playlist-url');",
395
+ " if (urlEl) {",
396
+ " navigator.clipboard.writeText(urlEl.textContent).then(function() {",
397
+ " var feedback = document.getElementById('overview-copy-feedback');",
398
+ " if (feedback) {",
399
+ " feedback.style.display = 'inline';",
400
+ " setTimeout(function() { feedback.style.display = 'none'; }, 2000);",
401
+ " }",
402
+ " });",
403
+ " }",
404
+ "};",
405
+ // JS-based tooltips for devices where the primary input can't hover (iPadOS). Safari on iPadOS doesn't show native title tooltips, so we use
406
+ // a single <div> appended to <body> and positioned via getBoundingClientRect(). This is immune to overflow containers and stacking contexts.
407
+ // On pure-touch devices without a trackpad, mouseenter never fires so the tooltip stays hidden. Desktop skips initialization entirely.
408
+ "(function() {",
409
+ " if(!window.matchMedia('(hover: none)').matches) return;",
410
+ " var tip = document.createElement('div');",
411
+ " tip.className = 'btn-icon-tooltip';",
412
+ " document.body.appendChild(tip);",
413
+ " document.addEventListener('mouseenter', function(e) {",
414
+ " var btn = e.target.closest('.btn-icon[aria-label]');",
415
+ " if(!btn) return;",
416
+ " var label = btn.getAttribute('title') || btn.getAttribute('aria-label');",
417
+ " if(!label) return;",
418
+ " var rect = btn.getBoundingClientRect();",
419
+ " tip.textContent = label;",
420
+ " tip.classList.add('visible');",
421
+ " tip.style.top = (rect.bottom + 6) + 'px';",
422
+ " tip.style.left = (rect.left + rect.width / 2) + 'px';",
423
+ " tip.style.transform = 'translateX(-50%)';",
424
+ " }, true);",
425
+ " document.addEventListener('mouseleave', function(e) {",
426
+ " var src = e.target.closest('.btn-icon[aria-label]');",
427
+ " if(!src) return;",
428
+ " var dest = e.relatedTarget && e.relatedTarget.closest && e.relatedTarget.closest('.btn-icon[aria-label]');",
429
+ " if(dest === src) return;",
430
+ " tip.classList.remove('visible');",
431
+ " }, true);",
432
+ "})();",
433
+ "</script>"
434
+ ].join("\n");
435
+ }
436
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../../src/routes/root/scripts/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generates additional CSS styles specific to the landing page. Uses CSS custom properties for theme support.
3
+ * @returns CSS styles as a string.
4
+ */
5
+ export declare function generateLandingPageStyles(): string;