prismcast 1.4.1 → 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.
- package/dist/app.js +18 -1
- package/dist/app.js.map +1 -1
- package/dist/browser/cdp.d.ts +2 -1
- package/dist/browser/cdp.js +44 -23
- package/dist/browser/cdp.js.map +1 -1
- package/dist/browser/channelSelection.d.ts +45 -1
- package/dist/browser/channelSelection.js +164 -27
- package/dist/browser/channelSelection.js.map +1 -1
- package/dist/browser/display.d.ts +0 -4
- package/dist/browser/display.js +0 -7
- package/dist/browser/display.js.map +1 -1
- package/dist/browser/index.d.ts +5 -0
- package/dist/browser/index.js +14 -0
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/precaching.d.ts +5 -0
- package/dist/browser/precaching.js +112 -0
- package/dist/browser/precaching.js.map +1 -0
- package/dist/browser/tuning/directv.d.ts +2 -0
- package/dist/browser/tuning/directv.js +723 -0
- package/dist/browser/tuning/directv.js.map +1 -0
- package/dist/browser/tuning/fox.d.ts +2 -2
- package/dist/browser/tuning/fox.js +141 -22
- package/dist/browser/tuning/fox.js.map +1 -1
- package/dist/browser/tuning/hbo.d.ts +2 -2
- package/dist/browser/tuning/hbo.js +110 -41
- package/dist/browser/tuning/hbo.js.map +1 -1
- package/dist/browser/tuning/hulu.d.ts +2 -2
- package/dist/browser/tuning/hulu.js +537 -211
- package/dist/browser/tuning/hulu.js.map +1 -1
- package/dist/browser/tuning/sling.d.ts +2 -2
- package/dist/browser/tuning/sling.js +200 -56
- package/dist/browser/tuning/sling.js.map +1 -1
- package/dist/browser/tuning/youtubeTv.d.ts +2 -2
- package/dist/browser/tuning/youtubeTv.js +243 -57
- package/dist/browser/tuning/youtubeTv.js.map +1 -1
- package/dist/browser/video.d.ts +1 -1
- package/dist/browser/video.js +4 -2
- package/dist/browser/video.js.map +1 -1
- package/dist/channels/index.js +280 -34
- package/dist/channels/index.js.map +1 -1
- package/dist/config/health.d.ts +78 -0
- package/dist/config/health.js +202 -0
- package/dist/config/health.js.map +1 -0
- package/dist/config/paths.d.ts +10 -0
- package/dist/config/paths.js +14 -0
- package/dist/config/paths.js.map +1 -1
- package/dist/config/profiles.d.ts +6 -4
- package/dist/config/profiles.js +65 -14
- package/dist/config/profiles.js.map +1 -1
- package/dist/config/providerPacks.d.ts +46 -0
- package/dist/config/providerPacks.js +200 -0
- package/dist/config/providerPacks.js.map +1 -0
- package/dist/config/providers.d.ts +47 -6
- package/dist/config/providers.js +211 -17
- package/dist/config/providers.js.map +1 -1
- package/dist/config/sites.d.ts +1 -12
- package/dist/config/sites.js +40 -7
- package/dist/config/sites.js.map +1 -1
- package/dist/config/userChannels.d.ts +41 -19
- package/dist/config/userChannels.js +152 -35
- package/dist/config/userChannels.js.map +1 -1
- package/dist/config/userConfig.d.ts +5 -1
- package/dist/config/userConfig.js +58 -6
- package/dist/config/userConfig.js.map +1 -1
- package/dist/config/userProfiles.d.ts +81 -0
- package/dist/config/userProfiles.js +424 -0
- package/dist/config/userProfiles.js.map +1 -0
- package/dist/routes/config/channels/index.d.ts +3 -0
- package/dist/routes/config/channels/index.js +3 -0
- package/dist/routes/config/channels/index.js.map +1 -0
- package/dist/routes/config/channels/routes.d.ts +6 -0
- package/dist/routes/config/channels/routes.js +797 -0
- package/dist/routes/config/channels/routes.js.map +1 -0
- package/dist/routes/config/channels/table.d.ts +46 -0
- package/dist/routes/config/channels/table.js +811 -0
- package/dist/routes/config/channels/table.js.map +1 -0
- package/dist/routes/config/index.d.ts +37 -0
- package/dist/routes/config/index.js +81 -0
- package/dist/routes/config/index.js.map +1 -0
- package/dist/routes/config/providers.d.ts +18 -0
- package/dist/routes/config/providers.js +573 -0
- package/dist/routes/config/providers.js.map +1 -0
- package/dist/routes/config/settings.d.ts +39 -0
- package/dist/routes/config/settings.js +820 -0
- package/dist/routes/config/settings.js.map +1 -0
- package/dist/routes/index.d.ts +3 -2
- package/dist/routes/index.js +7 -4
- package/dist/routes/index.js.map +1 -1
- package/dist/routes/playlist.d.ts +5 -1
- package/dist/routes/playlist.js +32 -7
- package/dist/routes/playlist.js.map +1 -1
- package/dist/routes/providers.d.ts +6 -0
- package/dist/routes/providers.js +166 -0
- package/dist/routes/providers.js.map +1 -0
- package/dist/routes/root/content.d.ts +32 -0
- package/dist/routes/root/content.js +857 -0
- package/dist/routes/root/content.js.map +1 -0
- package/dist/routes/root/index.js +197 -0
- package/dist/routes/root/index.js.map +1 -0
- package/dist/routes/root/scripts/channels.d.ts +1 -0
- package/dist/routes/root/scripts/channels.js +745 -0
- package/dist/routes/root/scripts/channels.js.map +1 -0
- package/dist/routes/root/scripts/config.d.ts +1 -0
- package/dist/routes/root/scripts/config.js +1662 -0
- package/dist/routes/root/scripts/config.js.map +1 -0
- package/dist/routes/root/scripts/index.d.ts +3 -0
- package/dist/routes/root/scripts/index.js +8 -0
- package/dist/routes/root/scripts/index.js.map +1 -0
- package/dist/routes/root/scripts/status.d.ts +1 -0
- package/dist/routes/root/scripts/status.js +436 -0
- package/dist/routes/root/scripts/status.js.map +1 -0
- package/dist/routes/root/styles.d.ts +5 -0
- package/dist/routes/root/styles.js +447 -0
- package/dist/routes/root/styles.js.map +1 -0
- package/dist/routes/theme.js +7 -1
- package/dist/routes/theme.js.map +1 -1
- package/dist/routes/ui.js +8 -3
- package/dist/routes/ui.js.map +1 -1
- package/dist/service/commands.d.ts +5 -3
- package/dist/service/commands.js +117 -33
- package/dist/service/commands.js.map +1 -1
- package/dist/service/generators.d.ts +27 -0
- package/dist/service/generators.js +97 -6
- package/dist/service/generators.js.map +1 -1
- package/dist/streaming/hls.js +18 -1
- package/dist/streaming/hls.js.map +1 -1
- package/dist/streaming/lifecycle.js +1 -1
- package/dist/streaming/lifecycle.js.map +1 -1
- package/dist/streaming/monitor.d.ts +1 -38
- package/dist/streaming/monitor.js +2 -289
- package/dist/streaming/monitor.js.map +1 -1
- package/dist/streaming/recovery.d.ts +143 -0
- package/dist/streaming/recovery.js +286 -0
- package/dist/streaming/recovery.js.map +1 -0
- package/dist/streaming/registry.d.ts +1 -1
- package/dist/streaming/setup.d.ts +1 -1
- package/dist/streaming/setup.js +3 -1
- package/dist/streaming/setup.js.map +1 -1
- package/dist/streaming/showInfo.js +12 -14
- package/dist/streaming/showInfo.js.map +1 -1
- package/dist/streaming/statusEmitter.d.ts +4 -2
- package/dist/streaming/statusEmitter.js +5 -0
- package/dist/streaming/statusEmitter.js.map +1 -1
- package/dist/types/channels.d.ts +68 -0
- package/dist/types/channels.js +2 -0
- package/dist/types/channels.js.map +1 -0
- package/dist/types/config.d.ts +127 -0
- package/dist/types/config.js +2 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/index.d.ts +7 -406
- package/dist/types/index.js +1 -5
- package/dist/types/index.js.map +1 -1
- package/dist/types/profiles.d.ts +141 -0
- package/dist/types/profiles.js +2 -0
- package/dist/types/profiles.js.map +1 -0
- package/dist/types/selection.d.ts +101 -0
- package/dist/types/selection.js +6 -0
- package/dist/types/selection.js.map +1 -0
- package/dist/types/shared.d.ts +7 -0
- package/dist/types/shared.js +6 -0
- package/dist/types/shared.js.map +1 -0
- package/dist/types/streaming.d.ts +96 -0
- package/dist/types/streaming.js +2 -0
- package/dist/types/streaming.js.map +1 -0
- package/dist/utils/debugFilter.js +3 -1
- package/dist/utils/debugFilter.js.map +1 -1
- package/dist/utils/format.d.ts +7 -0
- package/dist/utils/format.js +22 -0
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/sanitize.d.ts +14 -0
- package/dist/utils/sanitize.js +37 -0
- package/dist/utils/sanitize.js.map +1 -0
- package/package.json +6 -4
- package/dist/routes/config.d.ts +0 -72
- package/dist/routes/config.js +0 -1987
- package/dist/routes/config.js.map +0 -1
- package/dist/routes/root.js +0 -2959
- package/dist/routes/root.js.map +0 -1
- /package/dist/routes/{root.d.ts → root/index.d.ts} +0 -0
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import type { Channel, ChannelListingEntry, ChannelMap } from "../types/index.js";
|
|
1
|
+
import type { Channel, ChannelListingEntry, ChannelMap, StoredChannel, StoredChannelMap } from "../types/index.js";
|
|
2
2
|
/**
|
|
3
3
|
* User-defined channel with all channel properties.
|
|
4
4
|
*/
|
|
5
5
|
export type UserChannel = Channel;
|
|
6
6
|
/**
|
|
7
|
-
* Map of channel keys to
|
|
7
|
+
* Map of channel keys to stored channel data (full definitions or deltas). This is the raw file format for channels.json.
|
|
8
8
|
*/
|
|
9
|
-
export type UserChannelMap =
|
|
9
|
+
export type UserChannelMap = StoredChannelMap;
|
|
10
10
|
/**
|
|
11
11
|
* Result of loading user channels from the file.
|
|
12
12
|
*/
|
|
13
13
|
export interface UserChannelsLoadResult {
|
|
14
|
-
channels:
|
|
14
|
+
channels: StoredChannelMap;
|
|
15
15
|
parseError: boolean;
|
|
16
16
|
parseErrorMessage?: string;
|
|
17
17
|
providerSelections: Record<string, string>;
|
|
@@ -39,11 +39,12 @@ export declare function getChannelsParseErrorMessage(): string | undefined;
|
|
|
39
39
|
export declare function loadUserChannels(): Promise<UserChannelsLoadResult>;
|
|
40
40
|
/**
|
|
41
41
|
* Saves user channels to the channels file and updates the in-memory cache. Changes take effect immediately for new stream requests without requiring a server
|
|
42
|
-
* restart. Creates the data directory if it doesn't exist. Provider selections are also saved if any exist.
|
|
43
|
-
*
|
|
42
|
+
* restart. Creates the data directory if it doesn't exist. Provider selections are also saved if any exist. Empty deltas (no overridden fields) for predefined
|
|
43
|
+
* channel keys are stripped before saving to avoid storing no-op entries.
|
|
44
|
+
* @param channels - The channels to save (full definitions or delta overrides).
|
|
44
45
|
* @throws If the file cannot be written.
|
|
45
46
|
*/
|
|
46
|
-
export declare function saveUserChannels(channels:
|
|
47
|
+
export declare function saveUserChannels(channels: StoredChannelMap): Promise<void>;
|
|
47
48
|
/**
|
|
48
49
|
* Deletes a user channel by key.
|
|
49
50
|
* @param key - The channel key to delete.
|
|
@@ -59,6 +60,15 @@ export declare function resetUserChannels(): Promise<void>;
|
|
|
59
60
|
* Initializes user channels by loading them from the file. This should be called once at server startup. Also builds provider groups and loads provider selections.
|
|
60
61
|
*/
|
|
61
62
|
export declare function initializeUserChannels(): Promise<void>;
|
|
63
|
+
/**
|
|
64
|
+
* Resolves a stored channel entry (full definition or delta) into a fully resolved Channel. For user-defined channels with no predefined equivalent, the stored
|
|
65
|
+
* entry is returned as-is (it must be a full Channel). For overrides of predefined channels, the predefined definition is used as a base and only allowlisted
|
|
66
|
+
* delta fields are overlaid. Fields set to null in the delta are removed from the result. Fields not in the allowlist are silently ignored.
|
|
67
|
+
* @param key - The channel key.
|
|
68
|
+
* @param stored - The stored channel data (full definition or delta).
|
|
69
|
+
* @returns A fully resolved Channel with all fields populated.
|
|
70
|
+
*/
|
|
71
|
+
export declare function resolveStoredChannel(key: string, stored: StoredChannel): Channel;
|
|
62
72
|
/**
|
|
63
73
|
* Returns the full channel listing with source classification and enabled status. This is the authoritative merge point for predefined and user channels — all
|
|
64
74
|
* code that needs a merged view of channels should use this function (or getAllChannels() which delegates to it).
|
|
@@ -73,8 +83,8 @@ export declare function initializeUserChannels(): Promise<void>;
|
|
|
73
83
|
*
|
|
74
84
|
* Provider variants (non-canonical keys in provider groups) are filtered out from this listing — they are accessed via the provider selection mechanism instead.
|
|
75
85
|
*
|
|
76
|
-
*
|
|
77
|
-
* to detect user overrides via
|
|
86
|
+
* Override entries produce a new resolved Channel object (via resolveStoredChannel()), which is a different reference from PREDEFINED_CHANNELS[key]. The provider
|
|
87
|
+
* system (providers.ts) relies on this reference difference to detect user overrides via isUserOverride(). Predefined-only entries preserve the original reference.
|
|
78
88
|
* @returns Sorted array of channel listing entries.
|
|
79
89
|
*/
|
|
80
90
|
export declare function getChannelListing(): ChannelListingEntry[];
|
|
@@ -85,10 +95,16 @@ export declare function getChannelListing(): ChannelListingEntry[];
|
|
|
85
95
|
*/
|
|
86
96
|
export declare function getAllChannels(): ChannelMap;
|
|
87
97
|
/**
|
|
88
|
-
* Returns the
|
|
89
|
-
* @returns The
|
|
98
|
+
* Returns the raw stored channel data (without predefined channels). Entries may be full Channel definitions or ChannelDelta overrides.
|
|
99
|
+
* @returns The stored channel map.
|
|
100
|
+
*/
|
|
101
|
+
export declare function getUserChannels(): StoredChannelMap;
|
|
102
|
+
/**
|
|
103
|
+
* Returns the predefined channel definition for a key.
|
|
104
|
+
* @param key - The channel key to look up.
|
|
105
|
+
* @returns The predefined channel, or undefined if the key is not predefined.
|
|
90
106
|
*/
|
|
91
|
-
export declare function
|
|
107
|
+
export declare function getPredefinedChannel(key: string): Channel | undefined;
|
|
92
108
|
/**
|
|
93
109
|
* Checks if a channel key exists in the predefined channels.
|
|
94
110
|
* @param key - The channel key to check.
|
|
@@ -101,12 +117,6 @@ export declare function isPredefinedChannel(key: string): boolean;
|
|
|
101
117
|
* @returns True if the channel is user-defined.
|
|
102
118
|
*/
|
|
103
119
|
export declare function isUserChannel(key: string): boolean;
|
|
104
|
-
/**
|
|
105
|
-
* Checks if a user channel overrides a predefined channel (same key exists in both).
|
|
106
|
-
* @param key - The channel key to check.
|
|
107
|
-
* @returns True if the user channel overrides a predefined channel.
|
|
108
|
-
*/
|
|
109
|
-
export declare function isOverrideChannel(key: string): boolean;
|
|
110
120
|
/**
|
|
111
121
|
* Checks if a predefined channel is disabled.
|
|
112
122
|
* @param key - The channel key to check.
|
|
@@ -123,6 +133,18 @@ export declare function getDisabledPredefinedChannels(): string[];
|
|
|
123
133
|
* @returns The predefined channel map.
|
|
124
134
|
*/
|
|
125
135
|
export declare function getPredefinedChannels(): ChannelMap;
|
|
136
|
+
/**
|
|
137
|
+
* Returns the keys of all predefined channels that are Pacific entries (both canonicals and provider variants). A key is Pacific if its canonical base ends
|
|
138
|
+
* in "p" and the East counterpart (base minus trailing "p") exists in PREDEFINED_CHANNELS.
|
|
139
|
+
* @returns Sorted array of Pacific predefined channel keys.
|
|
140
|
+
*/
|
|
141
|
+
export declare function getPacificPredefinedKeys(): string[];
|
|
142
|
+
/**
|
|
143
|
+
* Returns the keys of all predefined East channels that have Pacific counterparts (both canonicals and provider variants). A key qualifies if its canonical
|
|
144
|
+
* base does NOT end in "p" and the Pacific counterpart (base plus "p") exists in PREDEFINED_CHANNELS.
|
|
145
|
+
* @returns Sorted array of East predefined channel keys that have Pacific counterparts.
|
|
146
|
+
*/
|
|
147
|
+
export declare function getEastWithPacificPredefinedKeys(): string[];
|
|
126
148
|
/**
|
|
127
149
|
* Checks if a channel is available for streaming. A channel is available if it exists in the merged channel map returned by getAllChannels(), which already
|
|
128
150
|
* excludes disabled predefined channels (unless overridden by a user channel).
|
|
@@ -160,7 +182,7 @@ export declare function validateChannelProfile(profile: string | undefined, vali
|
|
|
160
182
|
* Result of validating imported channels.
|
|
161
183
|
*/
|
|
162
184
|
export interface ChannelsValidationResult {
|
|
163
|
-
channels:
|
|
185
|
+
channels: ChannelMap;
|
|
164
186
|
errors: string[];
|
|
165
187
|
valid: boolean;
|
|
166
188
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { LOG, containsNonPrintable, sanitizeString } from "../utils/index.js";
|
|
1
2
|
import { buildProviderGroups, getAllProviderTags, getProviderSelections, isChannelAvailableByProvider, isProviderVariant, setEnabledProviders, setProviderSelections } from "./providers.js";
|
|
2
3
|
import { getChannelsFilePath, getDataDir } from "./paths.js";
|
|
3
4
|
import { CONFIG } from "./index.js";
|
|
4
|
-
import { LOG } from "../utils/index.js";
|
|
5
5
|
import { PREDEFINED_CHANNELS } from "../channels/index.js";
|
|
6
6
|
import fs from "node:fs";
|
|
7
7
|
const { promises: fsPromises } = fs;
|
|
@@ -16,7 +16,8 @@ export function getUserChannelsFilePath() {
|
|
|
16
16
|
}
|
|
17
17
|
/* These functions handle reading and writing the channels file. All operations are async and handle errors gracefully.
|
|
18
18
|
*/
|
|
19
|
-
// Module-level storage for loaded user channels. This is populated at startup and used by getAllChannels().
|
|
19
|
+
// Module-level storage for loaded user channels. This is populated at startup and used by getAllChannels(). Entries can be full Channel definitions or
|
|
20
|
+
// ChannelDelta overrides for predefined channels.
|
|
20
21
|
let loadedUserChannels = {};
|
|
21
22
|
let userChannelsParseError = false;
|
|
22
23
|
let userChannelsParseErrorMessage;
|
|
@@ -59,7 +60,7 @@ export async function loadUserChannels() {
|
|
|
59
60
|
}
|
|
60
61
|
}
|
|
61
62
|
else if ((typeof value === "object") && (value !== null) && !Array.isArray(value)) {
|
|
62
|
-
// It's a channel definition.
|
|
63
|
+
// It's a channel definition or delta override.
|
|
63
64
|
channels[key] = value;
|
|
64
65
|
}
|
|
65
66
|
}
|
|
@@ -83,18 +84,27 @@ export async function loadUserChannels() {
|
|
|
83
84
|
}
|
|
84
85
|
/**
|
|
85
86
|
* Saves user channels to the channels file and updates the in-memory cache. Changes take effect immediately for new stream requests without requiring a server
|
|
86
|
-
* restart. Creates the data directory if it doesn't exist. Provider selections are also saved if any exist.
|
|
87
|
-
*
|
|
87
|
+
* restart. Creates the data directory if it doesn't exist. Provider selections are also saved if any exist. Empty deltas (no overridden fields) for predefined
|
|
88
|
+
* channel keys are stripped before saving to avoid storing no-op entries.
|
|
89
|
+
* @param channels - The channels to save (full definitions or delta overrides).
|
|
88
90
|
* @throws If the file cannot be written.
|
|
89
91
|
*/
|
|
90
92
|
export async function saveUserChannels(channels) {
|
|
91
93
|
// Ensure data directory exists.
|
|
92
94
|
await fsPromises.mkdir(getDataDir(), { recursive: true });
|
|
95
|
+
// Strip empty deltas for predefined keys — an empty delta means no changes were made.
|
|
96
|
+
const filtered = {};
|
|
97
|
+
for (const [key, stored] of Object.entries(channels)) {
|
|
98
|
+
if ((key in PREDEFINED_CHANNELS) && (Object.keys(stored).length === 0)) {
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
filtered[key] = stored;
|
|
102
|
+
}
|
|
93
103
|
// Sort channels by key for consistent output.
|
|
94
104
|
const sortedChannels = {};
|
|
95
|
-
const sortedKeys = Object.keys(
|
|
105
|
+
const sortedKeys = Object.keys(filtered).sort();
|
|
96
106
|
for (const key of sortedKeys) {
|
|
97
|
-
sortedChannels[key] =
|
|
107
|
+
sortedChannels[key] = filtered[key];
|
|
98
108
|
}
|
|
99
109
|
// Include provider selections if any exist.
|
|
100
110
|
const selections = getProviderSelections();
|
|
@@ -111,7 +121,7 @@ export async function saveUserChannels(channels) {
|
|
|
111
121
|
const content = JSON.stringify(sortedChannels, null, 2);
|
|
112
122
|
await fsPromises.writeFile(getChannelsFilePath(), content + "\n", "utf-8");
|
|
113
123
|
// Update in-memory cache so changes take effect immediately for new stream requests.
|
|
114
|
-
loadedUserChannels = { ...
|
|
124
|
+
loadedUserChannels = { ...filtered };
|
|
115
125
|
// Refresh provider groups so channelsRef reflects the new channel data. This ensures getResolvedChannel() returns correct data after modifications.
|
|
116
126
|
buildProviderGroups(getMergedChannelMap());
|
|
117
127
|
// Clear any previous parse error since we're writing valid data.
|
|
@@ -185,6 +195,14 @@ export async function initializeUserChannels() {
|
|
|
185
195
|
else {
|
|
186
196
|
setEnabledProviders(configuredProviders);
|
|
187
197
|
}
|
|
198
|
+
// Check for non-printable characters in loaded channel string values. These warnings are informational — loaded data is not modified.
|
|
199
|
+
for (const [channelKey, stored] of Object.entries(loadedUserChannels)) {
|
|
200
|
+
for (const [field, value] of Object.entries(stored)) {
|
|
201
|
+
if ((typeof value === "string") && containsNonPrintable(value)) {
|
|
202
|
+
LOG.warn("User channel '%s' field '%s' contains non-printable characters. Re-save the channel to clean it.", channelKey, field);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
188
206
|
const userCount = Object.keys(loadedUserChannels).length;
|
|
189
207
|
const predefinedCount = Object.keys(PREDEFINED_CHANNELS).length;
|
|
190
208
|
const totalCount = userCount + predefinedCount;
|
|
@@ -195,14 +213,51 @@ export async function initializeUserChannels() {
|
|
|
195
213
|
LOG.info("Loaded %d channels.", totalCount);
|
|
196
214
|
}
|
|
197
215
|
}
|
|
216
|
+
// Fields that users are allowed to override via delta. This allowlist prevents hand-edited channels.json from overriding fields like provider that are
|
|
217
|
+
// intentionally not user-editable. Matches the fields in the ChannelDelta interface.
|
|
218
|
+
const DELTA_ALLOWED_FIELDS = new Set(["channelNumber", "channelSelector", "name", "profile", "stationId", "tvgShift", "url"]);
|
|
219
|
+
/**
|
|
220
|
+
* Resolves a stored channel entry (full definition or delta) into a fully resolved Channel. For user-defined channels with no predefined equivalent, the stored
|
|
221
|
+
* entry is returned as-is (it must be a full Channel). For overrides of predefined channels, the predefined definition is used as a base and only allowlisted
|
|
222
|
+
* delta fields are overlaid. Fields set to null in the delta are removed from the result. Fields not in the allowlist are silently ignored.
|
|
223
|
+
* @param key - The channel key.
|
|
224
|
+
* @param stored - The stored channel data (full definition or delta).
|
|
225
|
+
* @returns A fully resolved Channel with all fields populated.
|
|
226
|
+
*/
|
|
227
|
+
export function resolveStoredChannel(key, stored) {
|
|
228
|
+
const predefined = PREDEFINED_CHANNELS[key];
|
|
229
|
+
// No predefined equivalent — this is a user-defined channel, return as-is. The caller is responsible for ensuring it has a url field.
|
|
230
|
+
// Runtime check needed — TypeScript thinks Record indexing always returns a value, but the key may not exist.
|
|
231
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
232
|
+
if (!predefined) {
|
|
233
|
+
return stored;
|
|
234
|
+
}
|
|
235
|
+
// Start with a copy of the predefined definition, then overlay allowlisted non-null delta fields.
|
|
236
|
+
const resolved = { ...predefined };
|
|
237
|
+
for (const [field, value] of Object.entries(stored)) {
|
|
238
|
+
if (!DELTA_ALLOWED_FIELDS.has(field)) {
|
|
239
|
+
continue;
|
|
240
|
+
}
|
|
241
|
+
if (value === null) {
|
|
242
|
+
// Explicit null means "clear this field" — delete it from the resolved object.
|
|
243
|
+
Reflect.deleteProperty(resolved, field);
|
|
244
|
+
}
|
|
245
|
+
else if (value !== undefined) {
|
|
246
|
+
// Non-null, non-undefined — override the predefined value.
|
|
247
|
+
resolved[field] = value;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
return resolved;
|
|
251
|
+
}
|
|
198
252
|
/**
|
|
199
253
|
* Returns the merged channel map (predefined + user) without filtering by enabled status or provider variants. Used internally for building provider groups.
|
|
254
|
+
* Resolves any delta overrides into full Channel objects so the result contains only complete definitions.
|
|
200
255
|
* @returns The complete merged channel map.
|
|
201
256
|
*/
|
|
202
257
|
function getMergedChannelMap() {
|
|
203
258
|
const result = { ...PREDEFINED_CHANNELS };
|
|
204
|
-
for (const [key,
|
|
205
|
-
result[key] =
|
|
259
|
+
for (const [key, stored] of Object.entries(loadedUserChannels)) {
|
|
260
|
+
result[key] = resolveStoredChannel(key, stored);
|
|
206
261
|
}
|
|
207
262
|
return result;
|
|
208
263
|
}
|
|
@@ -223,8 +278,8 @@ function getMergedChannelMap() {
|
|
|
223
278
|
*
|
|
224
279
|
* Provider variants (non-canonical keys in provider groups) are filtered out from this listing — they are accessed via the provider selection mechanism instead.
|
|
225
280
|
*
|
|
226
|
-
*
|
|
227
|
-
* to detect user overrides via
|
|
281
|
+
* Override entries produce a new resolved Channel object (via resolveStoredChannel()), which is a different reference from PREDEFINED_CHANNELS[key]. The provider
|
|
282
|
+
* system (providers.ts) relies on this reference difference to detect user overrides via isUserOverride(). Predefined-only entries preserve the original reference.
|
|
228
283
|
* @returns Sorted array of channel listing entries.
|
|
229
284
|
*/
|
|
230
285
|
export function getChannelListing() {
|
|
@@ -248,9 +303,12 @@ export function getChannelListing() {
|
|
|
248
303
|
else {
|
|
249
304
|
source = "predefined";
|
|
250
305
|
}
|
|
306
|
+
// For user entries (including overrides), resolve the stored delta/definition into a full Channel. The resolved object is a new reference, which preserves
|
|
307
|
+
// the isUserOverride() contract in providers.ts (reference comparison against PREDEFINED_CHANNELS[key]).
|
|
308
|
+
const channel = isUser ? resolveStoredChannel(key, loadedUserChannels[key]) : PREDEFINED_CHANNELS[key];
|
|
251
309
|
listing.push({
|
|
252
310
|
availableByProvider: isChannelAvailableByProvider(key),
|
|
253
|
-
channel
|
|
311
|
+
channel,
|
|
254
312
|
enabled: !isPredefinedChannelDisabled(key),
|
|
255
313
|
key,
|
|
256
314
|
source
|
|
@@ -275,12 +333,20 @@ export function getAllChannels() {
|
|
|
275
333
|
return result;
|
|
276
334
|
}
|
|
277
335
|
/**
|
|
278
|
-
* Returns the
|
|
279
|
-
* @returns The
|
|
336
|
+
* Returns the raw stored channel data (without predefined channels). Entries may be full Channel definitions or ChannelDelta overrides.
|
|
337
|
+
* @returns The stored channel map.
|
|
280
338
|
*/
|
|
281
339
|
export function getUserChannels() {
|
|
282
340
|
return { ...loadedUserChannels };
|
|
283
341
|
}
|
|
342
|
+
/**
|
|
343
|
+
* Returns the predefined channel definition for a key.
|
|
344
|
+
* @param key - The channel key to look up.
|
|
345
|
+
* @returns The predefined channel, or undefined if the key is not predefined.
|
|
346
|
+
*/
|
|
347
|
+
export function getPredefinedChannel(key) {
|
|
348
|
+
return PREDEFINED_CHANNELS[key];
|
|
349
|
+
}
|
|
284
350
|
/**
|
|
285
351
|
* Checks if a channel key exists in the predefined channels.
|
|
286
352
|
* @param key - The channel key to check.
|
|
@@ -297,14 +363,6 @@ export function isPredefinedChannel(key) {
|
|
|
297
363
|
export function isUserChannel(key) {
|
|
298
364
|
return key in loadedUserChannels;
|
|
299
365
|
}
|
|
300
|
-
/**
|
|
301
|
-
* Checks if a user channel overrides a predefined channel (same key exists in both).
|
|
302
|
-
* @param key - The channel key to check.
|
|
303
|
-
* @returns True if the user channel overrides a predefined channel.
|
|
304
|
-
*/
|
|
305
|
-
export function isOverrideChannel(key) {
|
|
306
|
-
return isPredefinedChannel(key) && isUserChannel(key);
|
|
307
|
-
}
|
|
308
366
|
/* Users can disable predefined channels to exclude them from the playlist and block streaming. Disabled channels appear grayed out in the UI with an option to
|
|
309
367
|
* re-enable. This is useful for users who don't want certain predefined channels cluttering their channel list.
|
|
310
368
|
*/
|
|
@@ -338,6 +396,54 @@ export function getDisabledPredefinedChannels() {
|
|
|
338
396
|
export function getPredefinedChannels() {
|
|
339
397
|
return { ...PREDEFINED_CHANNELS };
|
|
340
398
|
}
|
|
399
|
+
/* Pacific and East key identification share the same structural logic: iterate all predefined keys, extract the canonical base (before the first hyphen for
|
|
400
|
+
* provider variants, or the full key for canonicals), and test whether the base participates in the Pacific timezone naming convention. The helper below
|
|
401
|
+
* centralizes this so the two exported functions differ only in which side of the East/Pacific pair they select.
|
|
402
|
+
*/
|
|
403
|
+
/**
|
|
404
|
+
* Filters predefined channel keys by their relationship to the Pacific timezone naming convention. For "pacific" mode, returns keys whose base ends in "p"
|
|
405
|
+
* and whose East counterpart (base minus trailing "p") exists. For "east" mode, returns keys whose base does NOT end in "p" and whose Pacific counterpart
|
|
406
|
+
* (base plus "p") exists. Both modes include canonicals and provider variants.
|
|
407
|
+
* @param side - Which side of the East/Pacific pair to select.
|
|
408
|
+
* @returns Sorted array of matching predefined channel keys.
|
|
409
|
+
*/
|
|
410
|
+
function filterPredefinedKeysByTimezone(side) {
|
|
411
|
+
const keys = [];
|
|
412
|
+
for (const key of Object.keys(PREDEFINED_CHANNELS)) {
|
|
413
|
+
// Extract the canonical base: for provider variants like "animalp-hulu" the base is "animalp"; for canonicals like "animalp" the base is the full key.
|
|
414
|
+
const dashIndex = key.indexOf("-");
|
|
415
|
+
const base = (dashIndex === -1) ? key : key.substring(0, dashIndex);
|
|
416
|
+
if (side === "pacific") {
|
|
417
|
+
// Pacific: base ends in "p" and the East counterpart exists.
|
|
418
|
+
if (base.endsWith("p") && ((base.slice(0, -1)) in PREDEFINED_CHANNELS)) {
|
|
419
|
+
keys.push(key);
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
else {
|
|
423
|
+
// East: base does NOT end in "p" and the Pacific counterpart exists.
|
|
424
|
+
if (!base.endsWith("p") && ((base + "p") in PREDEFINED_CHANNELS)) {
|
|
425
|
+
keys.push(key);
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
return keys.sort();
|
|
430
|
+
}
|
|
431
|
+
/**
|
|
432
|
+
* Returns the keys of all predefined channels that are Pacific entries (both canonicals and provider variants). A key is Pacific if its canonical base ends
|
|
433
|
+
* in "p" and the East counterpart (base minus trailing "p") exists in PREDEFINED_CHANNELS.
|
|
434
|
+
* @returns Sorted array of Pacific predefined channel keys.
|
|
435
|
+
*/
|
|
436
|
+
export function getPacificPredefinedKeys() {
|
|
437
|
+
return filterPredefinedKeysByTimezone("pacific");
|
|
438
|
+
}
|
|
439
|
+
/**
|
|
440
|
+
* Returns the keys of all predefined East channels that have Pacific counterparts (both canonicals and provider variants). A key qualifies if its canonical
|
|
441
|
+
* base does NOT end in "p" and the Pacific counterpart (base plus "p") exists in PREDEFINED_CHANNELS.
|
|
442
|
+
* @returns Sorted array of East predefined channel keys that have Pacific counterparts.
|
|
443
|
+
*/
|
|
444
|
+
export function getEastWithPacificPredefinedKeys() {
|
|
445
|
+
return filterPredefinedKeysByTimezone("east");
|
|
446
|
+
}
|
|
341
447
|
/**
|
|
342
448
|
* Checks if a channel is available for streaming. A channel is available if it exists in the merged channel map returned by getAllChannels(), which already
|
|
343
449
|
* excludes disabled predefined channels (unless overridden by a user channel).
|
|
@@ -457,47 +563,49 @@ export function validateImportedChannels(data, validProfiles) {
|
|
|
457
563
|
continue;
|
|
458
564
|
}
|
|
459
565
|
const channelData = value;
|
|
460
|
-
// Validate required name field.
|
|
566
|
+
// Validate required name field. Sanitize after type check to strip non-printable characters from imported data.
|
|
461
567
|
if ((typeof channelData.name !== "string") || (channelData.name.trim() === "")) {
|
|
462
568
|
errors.push("Channel '" + key + "': name is required.");
|
|
463
569
|
continue;
|
|
464
570
|
}
|
|
465
|
-
const
|
|
571
|
+
const cleanName = sanitizeString(channelData.name);
|
|
572
|
+
const nameError = validateChannelName(cleanName);
|
|
466
573
|
if (nameError) {
|
|
467
574
|
errors.push("Channel '" + key + "': " + nameError);
|
|
468
575
|
continue;
|
|
469
576
|
}
|
|
470
|
-
// Validate required url field.
|
|
577
|
+
// Validate required url field. Sanitize after type check.
|
|
471
578
|
if ((typeof channelData.url !== "string") || (channelData.url.trim() === "")) {
|
|
472
579
|
errors.push("Channel '" + key + "': url is required.");
|
|
473
580
|
continue;
|
|
474
581
|
}
|
|
475
|
-
const
|
|
582
|
+
const cleanUrl = sanitizeString(channelData.url);
|
|
583
|
+
const urlError = validateChannelUrl(cleanUrl);
|
|
476
584
|
if (urlError) {
|
|
477
585
|
errors.push("Channel '" + key + "': " + urlError);
|
|
478
586
|
continue;
|
|
479
587
|
}
|
|
480
|
-
// Validate optional profile field.
|
|
481
|
-
const profile = (typeof channelData.profile === "string") ? channelData.profile : undefined;
|
|
588
|
+
// Validate optional profile field. Sanitize after type check.
|
|
589
|
+
const profile = (typeof channelData.profile === "string") ? sanitizeString(channelData.profile) : undefined;
|
|
482
590
|
const profileError = validateChannelProfile(profile, validProfiles);
|
|
483
591
|
if (profileError) {
|
|
484
592
|
errors.push("Channel '" + key + "': " + profileError);
|
|
485
593
|
continue;
|
|
486
594
|
}
|
|
487
|
-
// Build validated channel.
|
|
595
|
+
// Build validated channel with sanitized values.
|
|
488
596
|
const channel = {
|
|
489
|
-
name:
|
|
490
|
-
url:
|
|
597
|
+
name: cleanName,
|
|
598
|
+
url: cleanUrl
|
|
491
599
|
};
|
|
492
600
|
if (profile) {
|
|
493
601
|
channel.profile = profile;
|
|
494
602
|
}
|
|
495
|
-
// Include optional fields if present.
|
|
603
|
+
// Include optional fields if present. Sanitize string values to strip non-printable characters.
|
|
496
604
|
if (typeof channelData.stationId === "string") {
|
|
497
|
-
channel.stationId = channelData.stationId;
|
|
605
|
+
channel.stationId = sanitizeString(channelData.stationId);
|
|
498
606
|
}
|
|
499
607
|
if (typeof channelData.channelSelector === "string") {
|
|
500
|
-
channel.channelSelector = channelData.channelSelector;
|
|
608
|
+
channel.channelSelector = sanitizeString(channelData.channelSelector);
|
|
501
609
|
}
|
|
502
610
|
// Validate optional channelNumber field (range and type).
|
|
503
611
|
if (channelData.channelNumber !== undefined) {
|
|
@@ -508,6 +616,15 @@ export function validateImportedChannels(data, validProfiles) {
|
|
|
508
616
|
}
|
|
509
617
|
channel.channelNumber = num;
|
|
510
618
|
}
|
|
619
|
+
// Validate optional tvgShift field (must be a finite number). Negative values are valid (e.g., a West Coast feed viewed from the East).
|
|
620
|
+
if (channelData.tvgShift !== undefined) {
|
|
621
|
+
const shift = Number(channelData.tvgShift);
|
|
622
|
+
if (!Number.isFinite(shift)) {
|
|
623
|
+
errors.push("Channel '" + key + "': tvgShift must be a finite number.");
|
|
624
|
+
continue;
|
|
625
|
+
}
|
|
626
|
+
channel.tvgShift = shift;
|
|
627
|
+
}
|
|
511
628
|
channels[key] = channel;
|
|
512
629
|
}
|
|
513
630
|
// Validate channelNumber uniqueness across all imported channels. We check after building the full map so that all duplicates are reported.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"userChannels.js","sourceRoot":"","sources":["../../src/config/userChannels.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"userChannels.js","sourceRoot":"","sources":["../../src/config/userChannels.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,7 @@ export interface SettingMetadata {
|
|
|
16
16
|
max?: number;
|
|
17
17
|
min?: number;
|
|
18
18
|
path: string;
|
|
19
|
-
type: "boolean" | "float" | "host" | "integer" | "path" | "port" | "string";
|
|
19
|
+
type: "boolean" | "checkboxList" | "float" | "host" | "integer" | "path" | "port" | "string";
|
|
20
20
|
validValues?: string[];
|
|
21
21
|
unit?: string;
|
|
22
22
|
}
|
|
@@ -99,8 +99,12 @@ export interface UserStreamingConfig {
|
|
|
99
99
|
* Partial channels configuration for user config file.
|
|
100
100
|
*/
|
|
101
101
|
export interface UserChannelsConfig {
|
|
102
|
+
channelSortDirection?: string;
|
|
103
|
+
channelSortField?: string;
|
|
102
104
|
disabledPredefined?: string[];
|
|
103
105
|
enabledProviders?: string[];
|
|
106
|
+
precacheProviders?: string[];
|
|
107
|
+
visibleColumns?: string[];
|
|
104
108
|
}
|
|
105
109
|
/**
|
|
106
110
|
* Partial HDHomeRun configuration for user config file.
|