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.
- package/dist/app.d.ts +5 -3
- package/dist/app.js +42 -41
- package/dist/app.js.map +1 -1
- package/dist/browser/hlsPlaylistObserver.d.ts +38 -0
- package/dist/browser/hlsPlaylistObserver.js +113 -0
- package/dist/browser/hlsPlaylistObserver.js.map +1 -0
- package/dist/browser/index.d.ts +26 -16
- package/dist/browser/index.js +95 -70
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/manifestInterceptor.d.ts +29 -29
- package/dist/browser/manifestInterceptor.js +106 -212
- package/dist/browser/manifestInterceptor.js.map +1 -1
- package/dist/browser/tabNetworkObserver.d.ts +48 -0
- package/dist/browser/tabNetworkObserver.js +140 -0
- package/dist/browser/tabNetworkObserver.js.map +1 -0
- package/dist/config/consistencyProbe.js +13 -11
- package/dist/config/consistencyProbe.js.map +1 -1
- package/dist/config/paths.d.ts +3 -8
- package/dist/config/paths.js +3 -10
- package/dist/config/paths.js.map +1 -1
- package/dist/config/profiles.d.ts +1 -1
- package/dist/config/profiles.js +6 -6
- package/dist/config/profiles.js.map +1 -1
- package/dist/config/services.d.ts +5 -5
- package/dist/config/services.js +8 -8
- package/dist/config/services.js.map +1 -1
- package/dist/config/sites.d.ts +2 -2
- package/dist/config/sites.js +6 -6
- package/dist/config/sites.js.map +1 -1
- package/dist/config/userChannels.d.ts +108 -14
- package/dist/config/userChannels.js +291 -37
- package/dist/config/userChannels.js.map +1 -1
- package/dist/config/userConfig.js +1 -1
- package/dist/config/userConfig.js.map +1 -1
- package/dist/config/userProfiles.d.ts +3 -3
- package/dist/config/userProfiles.js +19 -19
- package/dist/config/userProfiles.js.map +1 -1
- package/dist/index.js +7 -9
- package/dist/index.js.map +1 -1
- package/dist/native/index.d.ts +1 -1
- package/dist/native/index.js +9 -18
- package/dist/native/index.js.map +1 -1
- package/dist/native/proxy.d.ts +1 -4
- package/dist/native/proxy.js +0 -9
- package/dist/native/proxy.js.map +1 -1
- package/dist/routes/clientActions.d.ts +97 -0
- package/dist/routes/clientActions.js +113 -0
- package/dist/routes/clientActions.js.map +1 -0
- package/dist/routes/components.d.ts +4 -3
- package/dist/routes/components.js +36 -39
- package/dist/routes/components.js.map +1 -1
- package/dist/routes/config/channels/endpoints/browse.js.map +1 -1
- package/dist/routes/config/channels/endpoints/crud.js +37 -72
- package/dist/routes/config/channels/endpoints/crud.js.map +1 -1
- package/dist/routes/config/channels/endpoints/importExport.js.map +1 -1
- package/dist/routes/config/channels/healthBridge.d.ts +23 -0
- package/dist/routes/config/channels/healthBridge.js +71 -0
- package/dist/routes/config/channels/healthBridge.js.map +1 -0
- package/dist/routes/config/channels/table.js +97 -84
- package/dist/routes/config/channels/table.js.map +1 -1
- package/dist/routes/config/services.js +25 -22
- package/dist/routes/config/services.js.map +1 -1
- package/dist/routes/config/settings.js +9 -6
- package/dist/routes/config/settings.js.map +1 -1
- package/dist/routes/debug.js +277 -139
- package/dist/routes/debug.js.map +1 -1
- package/dist/routes/logs.js +1 -1
- package/dist/routes/logs.js.map +1 -1
- package/dist/routes/root/content.js +18 -14
- package/dist/routes/root/content.js.map +1 -1
- package/dist/routes/root/index.js +17 -14
- package/dist/routes/root/index.js.map +1 -1
- package/dist/routes/root/scripts/channels.js +50 -21
- package/dist/routes/root/scripts/channels.js.map +1 -1
- package/dist/routes/root/scripts/config.js +72 -3
- package/dist/routes/root/scripts/config.js.map +1 -1
- package/dist/routes/root/scripts/shared.js +60 -0
- package/dist/routes/root/scripts/shared.js.map +1 -1
- package/dist/routes/root/scripts/status.handlers.d.ts +5 -27
- package/dist/routes/root/scripts/status.handlers.js +8 -60
- package/dist/routes/root/scripts/status.handlers.js.map +1 -1
- package/dist/routes/root/scripts/status.js +6 -1
- package/dist/routes/root/scripts/status.js.map +1 -1
- package/dist/routes/streams.js +5 -3
- package/dist/routes/streams.js.map +1 -1
- package/dist/service/commands.context.js +1 -1
- package/dist/service/commands.context.js.map +1 -1
- package/dist/service/generators.context.js +1 -1
- package/dist/service/generators.context.js.map +1 -1
- package/dist/service/generators.d.ts +1 -1
- package/dist/service/generators.js +3 -11
- package/dist/service/generators.js.map +1 -1
- package/dist/streaming/hls.js +1 -5
- package/dist/streaming/hls.js.map +1 -1
- package/dist/streaming/hlsSegments.d.ts +1 -1
- package/dist/streaming/hlsSegments.js.map +1 -1
- package/dist/streaming/preroll.d.ts +1 -1
- package/dist/streaming/preroll.js +1 -5
- package/dist/streaming/preroll.js.map +1 -1
- package/dist/streaming/statusEmitter.d.ts +5 -8
- package/dist/streaming/statusEmitter.js +0 -5
- package/dist/streaming/statusEmitter.js.map +1 -1
- package/dist/types/channels.d.ts +9 -0
- package/dist/types/channels.js.map +1 -1
- package/dist/types/profiles.d.ts +2 -2
- package/dist/upgrade/commands.context.js +14 -10
- package/dist/upgrade/commands.context.js.map +1 -1
- package/dist/upgrade/commands.d.ts +7 -15
- package/dist/upgrade/commands.js +27 -28
- package/dist/upgrade/commands.js.map +1 -1
- package/dist/upgrade/detection.context.js +2 -1
- package/dist/upgrade/detection.context.js.map +1 -1
- package/dist/upgrade/detection.d.ts +2 -1
- package/dist/upgrade/detection.js +20 -51
- package/dist/upgrade/detection.js.map +1 -1
- package/dist/upgrade/index.d.ts +1 -0
- package/dist/upgrade/index.js +1 -0
- package/dist/upgrade/index.js.map +1 -1
- package/dist/upgrade/lifecycle.context.d.ts +19 -0
- package/dist/upgrade/lifecycle.context.js +47 -0
- package/dist/upgrade/lifecycle.context.js.map +1 -0
- package/dist/upgrade/lifecycle.d.ts +72 -0
- package/dist/upgrade/lifecycle.js +176 -0
- package/dist/upgrade/lifecycle.js.map +1 -0
- package/dist/upgrade/pathHandle.d.ts +28 -0
- package/dist/upgrade/pathHandle.js +101 -0
- package/dist/upgrade/pathHandle.js.map +1 -0
- package/dist/utils/bootSession.context.d.ts +15 -0
- package/dist/utils/bootSession.context.js +59 -0
- package/dist/utils/bootSession.context.js.map +1 -0
- package/dist/utils/bootSession.d.ts +16 -0
- package/dist/utils/bootSession.js +20 -0
- package/dist/utils/bootSession.js.map +1 -0
- package/dist/utils/clock.js +1 -1
- package/dist/utils/ffmpeg.js +1 -1
- package/dist/utils/ffmpeg.js.map +1 -1
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/markup.d.ts +10 -0
- package/dist/utils/markup.js +23 -0
- package/dist/utils/markup.js.map +1 -1
- package/dist/utils/pid.d.ts +2 -25
- package/dist/utils/pid.js +10 -49
- package/dist/utils/pid.js.map +1 -1
- package/dist/utils/processInspector.context.d.ts +7 -0
- package/dist/utils/processInspector.context.js +104 -0
- package/dist/utils/processInspector.context.js.map +1 -0
- package/dist/utils/processInspector.d.ts +54 -0
- package/dist/utils/processInspector.js +125 -0
- package/dist/utils/processInspector.js.map +1 -0
- package/dist/utils/retry.d.ts +1 -1
- package/dist/utils/retry.js +1 -1
- package/dist/utils/retry.js.map +1 -1
- package/dist/utils/runtimeIdentity.context.d.ts +6 -0
- package/dist/utils/runtimeIdentity.context.js +13 -0
- package/dist/utils/runtimeIdentity.context.js.map +1 -0
- package/dist/utils/runtimeIdentity.d.ts +96 -0
- package/dist/utils/runtimeIdentity.js +171 -0
- package/dist/utils/runtimeIdentity.js.map +1 -0
- package/dist/utils/timing.d.ts +1 -1
- package/dist/utils/timing.js +0 -5
- package/dist/utils/timing.js.map +1 -1
- package/dist/utils/version.js +40 -10
- package/dist/utils/version.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ChannelTablePatch } from "./table.ts";
|
|
2
|
+
import type { HealthEvent } from "../../../config/health.ts";
|
|
3
|
+
/**
|
|
4
|
+
* Resolves the channel keys whose rendered state would change as a consequence of a health event. The event's channelKey is included when present (it is empty
|
|
5
|
+
* for markDomainAuth which has no channel context). Every channel whose currently-selected service variant resolves to the event's domain is also included, since
|
|
6
|
+
* the domain auth indicator on those rows reflects shared state across the service.
|
|
7
|
+
* @param event - The health event.
|
|
8
|
+
* @returns The set of channel keys that should be re-rendered, deduplicated and order-independent.
|
|
9
|
+
*/
|
|
10
|
+
export declare function resolveAffectedKeys(event: HealthEvent): string[];
|
|
11
|
+
/**
|
|
12
|
+
* Installs the health-to-patch bridge. Subscribes to health events from config/health.ts and, for each one, emits a channel table patch via emitChannelUpdate.
|
|
13
|
+
* Returns the unsubscribe function so callers can tear down the subscription if needed (production never does - the bridge lives for the process lifetime).
|
|
14
|
+
* @returns The unsubscribe function from subscribeToHealth.
|
|
15
|
+
*/
|
|
16
|
+
export declare function installHealthBridge(): () => void;
|
|
17
|
+
/**
|
|
18
|
+
* Builds a channel table patch covering every row whose visible state is influenced by the current in-memory health/auth state. Used by the SSE snapshot to
|
|
19
|
+
* catch reconnecting clients up to any health changes that may have occurred while their EventSource was disconnected - the patch is bounded by the size of the
|
|
20
|
+
* health snapshot rather than the total channel count, so a fresh install with no recorded state emits an empty patch.
|
|
21
|
+
* @returns A channel table patch covering all rows with current health or domain auth entries.
|
|
22
|
+
*/
|
|
23
|
+
export declare function buildSnapshotChannelPatch(): ChannelTablePatch;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/* Copyright(C) 2024-2026, HJD (https://github.com/hjdhjd). All rights reserved.
|
|
2
|
+
*
|
|
3
|
+
* healthBridge.ts: Reactive bridge between the health emitter and the channel table patch stream. Listens for every health/auth state change and emits a channel
|
|
4
|
+
* table patch covering the rows whose rendered state the change can affect: the channel whose health was recorded, plus every other channel whose currently-selected
|
|
5
|
+
* service variant resolves to the event's domain (the domain-verification indicator on those rows reflects shared state).
|
|
6
|
+
*
|
|
7
|
+
* Enforces the invariant that channel row presentation has a single source of truth - generateChannelRowHtml on the server. Client code never composes channel
|
|
8
|
+
* row HTML, classes, or titles imperatively; every change flows through buildChannelTablePatch...emitChannelUpdate...channelTable.applyPatch.
|
|
9
|
+
*/
|
|
10
|
+
import { getAuthDomainForChannel, resolveServiceKey } from "../../../config/services.js";
|
|
11
|
+
import { getHealthSnapshot, subscribeToHealth } from "../../../config/health.js";
|
|
12
|
+
import { buildChannelTablePatch } from "./table.js";
|
|
13
|
+
import { emitChannelUpdate } from "../../../streaming/statusEmitter.js";
|
|
14
|
+
import { getAllChannels } from "../../../config/userChannels.js";
|
|
15
|
+
import { getProfiles } from "../../../config/profiles.js";
|
|
16
|
+
/**
|
|
17
|
+
* Resolves the channel keys whose rendered state would change as a consequence of a health event. The event's channelKey is included when present (it is empty
|
|
18
|
+
* for markDomainAuth which has no channel context). Every channel whose currently-selected service variant resolves to the event's domain is also included, since
|
|
19
|
+
* the domain auth indicator on those rows reflects shared state across the service.
|
|
20
|
+
* @param event - The health event.
|
|
21
|
+
* @returns The set of channel keys that should be re-rendered, deduplicated and order-independent.
|
|
22
|
+
*/
|
|
23
|
+
export function resolveAffectedKeys(event) {
|
|
24
|
+
const keys = new Set();
|
|
25
|
+
if (event.channelKey) {
|
|
26
|
+
keys.add(event.channelKey);
|
|
27
|
+
}
|
|
28
|
+
if (event.domain) {
|
|
29
|
+
for (const key of Object.keys(getAllChannels())) {
|
|
30
|
+
const variantKey = resolveServiceKey(key);
|
|
31
|
+
if (getAuthDomainForChannel(variantKey) === event.domain) {
|
|
32
|
+
keys.add(key);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return Array.from(keys);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Installs the health-to-patch bridge. Subscribes to health events from config/health.ts and, for each one, emits a channel table patch via emitChannelUpdate.
|
|
40
|
+
* Returns the unsubscribe function so callers can tear down the subscription if needed (production never does - the bridge lives for the process lifetime).
|
|
41
|
+
* @returns The unsubscribe function from subscribeToHealth.
|
|
42
|
+
*/
|
|
43
|
+
export function installHealthBridge() {
|
|
44
|
+
return subscribeToHealth((event) => {
|
|
45
|
+
const affectedKeys = resolveAffectedKeys(event);
|
|
46
|
+
if (affectedKeys.length === 0) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
emitChannelUpdate(buildChannelTablePatch(affectedKeys, getProfiles()));
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Builds a channel table patch covering every row whose visible state is influenced by the current in-memory health/auth state. Used by the SSE snapshot to
|
|
54
|
+
* catch reconnecting clients up to any health changes that may have occurred while their EventSource was disconnected - the patch is bounded by the size of the
|
|
55
|
+
* health snapshot rather than the total channel count, so a fresh install with no recorded state emits an empty patch.
|
|
56
|
+
* @returns A channel table patch covering all rows with current health or domain auth entries.
|
|
57
|
+
*/
|
|
58
|
+
export function buildSnapshotChannelPatch() {
|
|
59
|
+
const snapshot = getHealthSnapshot();
|
|
60
|
+
const keys = new Set(Object.keys(snapshot.channels));
|
|
61
|
+
for (const domain of Object.keys(snapshot.domains)) {
|
|
62
|
+
for (const key of Object.keys(getAllChannels())) {
|
|
63
|
+
const variantKey = resolveServiceKey(key);
|
|
64
|
+
if (getAuthDomainForChannel(variantKey) === domain) {
|
|
65
|
+
keys.add(key);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return buildChannelTablePatch(Array.from(keys), getProfiles());
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=healthBridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"healthBridge.js","sourceRoot":"","sources":["../../../../src/routes/config/channels/healthBridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACzF,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAGjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAkB;IAEpD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,IAAG,KAAK,CAAC,UAAU,EAAE,CAAC;QAEpB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC7B,CAAC;IAED,IAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAEhB,KAAI,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC;YAE/C,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;YAE1C,IAAG,uBAAuB,CAAC,UAAU,CAAC,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;gBAExD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB;IAEjC,OAAO,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;QAEjC,MAAM,YAAY,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAEhD,IAAG,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAE7B,OAAO;QACT,CAAC;QAED,iBAAiB,CAAC,sBAAsB,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB;IAEvC,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAC;IACrC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAS,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE7D,KAAI,MAAM,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAElD,KAAI,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC;YAE/C,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;YAE1C,IAAG,uBAAuB,CAAC,UAAU,CAAC,KAAK,MAAM,EAAE,CAAC;gBAElD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;AACjE,CAAC"}
|