prismcast 1.9.0 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app.d.ts +1 -1
- package/dist/app.js +27 -9
- package/dist/app.js.map +1 -1
- package/dist/browser/cdp.js +7 -7
- package/dist/browser/cdp.js.map +1 -1
- package/dist/browser/channelSelection.d.ts +41 -11
- package/dist/browser/channelSelection.js +75 -24
- package/dist/browser/channelSelection.js.map +1 -1
- package/dist/browser/display.d.ts +1 -1
- package/dist/browser/index.d.ts +8 -8
- package/dist/browser/index.js +42 -43
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/login.d.ts +2 -2
- package/dist/browser/login.js +1 -1
- package/dist/browser/manifestInterceptor.d.ts +77 -0
- package/dist/browser/manifestInterceptor.js +323 -0
- package/dist/browser/manifestInterceptor.js.map +1 -0
- package/dist/browser/precaching.js +4 -4
- package/dist/browser/tuning/comcastPolymer.d.ts +1 -1
- package/dist/browser/tuning/cox.d.ts +1 -1
- package/dist/browser/tuning/directv.d.ts +1 -1
- package/dist/browser/tuning/directv.js +61 -62
- package/dist/browser/tuning/directv.js.map +1 -1
- package/dist/browser/tuning/fox.d.ts +1 -1
- package/dist/browser/tuning/fox.js +171 -14
- package/dist/browser/tuning/fox.js.map +1 -1
- package/dist/browser/tuning/hbo.d.ts +1 -1
- package/dist/browser/tuning/hbo.js +6 -6
- package/dist/browser/tuning/hbo.js.map +1 -1
- package/dist/browser/tuning/hulu.d.ts +1 -1
- package/dist/browser/tuning/hulu.js +117 -110
- package/dist/browser/tuning/hulu.js.map +1 -1
- package/dist/browser/tuning/shared.d.ts +3 -3
- package/dist/browser/tuning/shared.js +5 -5
- package/dist/browser/tuning/sling.d.ts +1 -1
- package/dist/browser/tuning/sling.js +28 -28
- package/dist/browser/tuning/sling.js.map +1 -1
- package/dist/browser/tuning/spectrum.d.ts +1 -1
- package/dist/browser/tuning/spectrum.js +21 -22
- package/dist/browser/tuning/spectrum.js.map +1 -1
- package/dist/browser/tuning/thumbnailRow.d.ts +1 -1
- package/dist/browser/tuning/thumbnailRow.js +1 -1
- package/dist/browser/tuning/tileClick.d.ts +1 -1
- package/dist/browser/tuning/tileClick.js +5 -5
- package/dist/browser/tuning/xfinity.d.ts +1 -1
- package/dist/browser/tuning/youtubeTv.d.ts +1 -1
- package/dist/browser/tuning/youtubeTv.js +17 -18
- package/dist/browser/tuning/youtubeTv.js.map +1 -1
- package/dist/browser/video.d.ts +20 -6
- package/dist/browser/video.js +30 -38
- package/dist/browser/video.js.map +1 -1
- package/dist/channels/index.d.ts +1 -2
- package/dist/channels/index.js +73 -40
- package/dist/channels/index.js.map +1 -1
- package/dist/config/channelForm.d.ts +58 -0
- package/dist/config/channelForm.js +129 -0
- package/dist/config/channelForm.js.map +1 -0
- package/dist/config/consistencyProbe.d.ts +7 -0
- package/dist/config/consistencyProbe.js +143 -0
- package/dist/config/consistencyProbe.js.map +1 -0
- package/dist/config/health.d.ts +4 -3
- package/dist/config/health.js +75 -62
- package/dist/config/health.js.map +1 -1
- package/dist/config/index.d.ts +1 -1
- package/dist/config/index.js +19 -12
- package/dist/config/index.js.map +1 -1
- package/dist/config/paths.d.ts +9 -3
- package/dist/config/paths.js +12 -4
- package/dist/config/paths.js.map +1 -1
- package/dist/config/persistence.context.d.ts +8 -0
- package/dist/config/persistence.context.js +30 -0
- package/dist/config/persistence.context.js.map +1 -0
- package/dist/config/persistence.d.ts +110 -12
- package/dist/config/persistence.js +351 -32
- package/dist/config/persistence.js.map +1 -1
- package/dist/config/presets.d.ts +14 -4
- package/dist/config/presets.js +84 -75
- package/dist/config/presets.js.map +1 -1
- package/dist/config/profiles.d.ts +2 -2
- package/dist/config/profiles.js +7 -9
- package/dist/config/profiles.js.map +1 -1
- package/dist/config/servicePacks.d.ts +2 -2
- package/dist/config/servicePacks.js +28 -28
- package/dist/config/servicePacks.js.map +1 -1
- package/dist/config/services.d.ts +62 -36
- package/dist/config/services.js +150 -136
- package/dist/config/services.js.map +1 -1
- package/dist/config/sites.d.ts +3 -3
- package/dist/config/sites.js +16 -16
- package/dist/config/sites.js.map +1 -1
- package/dist/config/userChannels.d.ts +500 -41
- package/dist/config/userChannels.js +1201 -312
- package/dist/config/userChannels.js.map +1 -1
- package/dist/config/userConfig.d.ts +103 -10
- package/dist/config/userConfig.js +277 -117
- package/dist/config/userConfig.js.map +1 -1
- package/dist/config/userProfiles.d.ts +4 -2
- package/dist/config/userProfiles.js +72 -26
- package/dist/config/userProfiles.js.map +1 -1
- package/dist/hdhr/channelMap.js +8 -11
- package/dist/hdhr/channelMap.js.map +1 -1
- package/dist/hdhr/deviceId.js +10 -9
- package/dist/hdhr/deviceId.js.map +1 -1
- package/dist/hdhr/discover.js +4 -5
- package/dist/hdhr/discover.js.map +1 -1
- package/dist/hdhr/index.js +6 -10
- package/dist/hdhr/index.js.map +1 -1
- package/dist/index.js +12 -12
- package/dist/index.js.map +1 -1
- package/dist/native/codecInference.d.ts +44 -0
- package/dist/native/codecInference.js +327 -0
- package/dist/native/codecInference.js.map +1 -0
- package/dist/native/decrypt.d.ts +1 -1
- package/dist/native/index.d.ts +5 -5
- package/dist/native/index.js +42 -64
- package/dist/native/index.js.map +1 -1
- package/dist/native/probe.d.ts +27 -9
- package/dist/native/probe.js +158 -67
- package/dist/native/probe.js.map +1 -1
- package/dist/native/proxy.d.ts +4 -2
- package/dist/native/proxy.js +52 -49
- package/dist/native/proxy.js.map +1 -1
- package/dist/native/tokenExpiry.d.ts +22 -0
- package/dist/native/tokenExpiry.js +153 -0
- package/dist/native/tokenExpiry.js.map +1 -0
- package/dist/routes/auth.js +6 -10
- package/dist/routes/auth.js.map +1 -1
- package/dist/routes/components.js +2 -2
- package/dist/routes/components.js.map +1 -1
- package/dist/routes/config/channels/endpoints/browse.d.ts +6 -0
- package/dist/routes/config/channels/endpoints/browse.js +195 -0
- package/dist/routes/config/channels/endpoints/browse.js.map +1 -0
- package/dist/routes/config/channels/endpoints/bulk.d.ts +6 -0
- package/dist/routes/config/channels/endpoints/bulk.js +128 -0
- package/dist/routes/config/channels/endpoints/bulk.js.map +1 -0
- package/dist/routes/config/channels/endpoints/crud.d.ts +6 -0
- package/dist/routes/config/channels/endpoints/crud.js +504 -0
- package/dist/routes/config/channels/endpoints/crud.js.map +1 -0
- package/dist/routes/config/channels/endpoints/importExport.d.ts +6 -0
- package/dist/routes/config/channels/endpoints/importExport.js +131 -0
- package/dist/routes/config/channels/endpoints/importExport.js.map +1 -0
- package/dist/routes/config/channels/endpoints/predefined.d.ts +6 -0
- package/dist/routes/config/channels/endpoints/predefined.js +78 -0
- package/dist/routes/config/channels/endpoints/predefined.js.map +1 -0
- package/dist/routes/config/channels/endpoints/prefs.d.ts +6 -0
- package/dist/routes/config/channels/endpoints/prefs.js +58 -0
- package/dist/routes/config/channels/endpoints/prefs.js.map +1 -0
- package/dist/routes/config/channels/endpoints/service.d.ts +6 -0
- package/dist/routes/config/channels/endpoints/service.js +149 -0
- package/dist/routes/config/channels/endpoints/service.js.map +1 -0
- package/dist/routes/config/channels/endpoints/tags.d.ts +6 -0
- package/dist/routes/config/channels/endpoints/tags.js +185 -0
- package/dist/routes/config/channels/endpoints/tags.js.map +1 -0
- package/dist/routes/config/channels/http/handler.d.ts +10 -0
- package/dist/routes/config/channels/http/handler.js +20 -0
- package/dist/routes/config/channels/http/handler.js.map +1 -0
- package/dist/routes/config/channels/http/playlistHint.d.ts +25 -0
- package/dist/routes/config/channels/http/playlistHint.js +40 -0
- package/dist/routes/config/channels/http/playlistHint.js.map +1 -0
- package/dist/routes/config/channels/http/serviceWarning.d.ts +10 -0
- package/dist/routes/config/channels/http/serviceWarning.js +28 -0
- package/dist/routes/config/channels/http/serviceWarning.js.map +1 -0
- package/dist/routes/config/channels/index.d.ts +3 -3
- package/dist/routes/config/channels/index.js +1 -1
- package/dist/routes/config/channels/index.js.map +1 -1
- package/dist/routes/config/channels/{routes.d.ts → setup.d.ts} +1 -1
- package/dist/routes/config/channels/setup.js +23 -0
- package/dist/routes/config/channels/setup.js.map +1 -0
- package/dist/routes/config/channels/table.d.ts +9 -9
- package/dist/routes/config/channels/table.js +124 -76
- package/dist/routes/config/channels/table.js.map +1 -1
- package/dist/routes/config/http/envelope.d.ts +111 -0
- package/dist/routes/config/http/envelope.js +103 -0
- package/dist/routes/config/http/envelope.js.map +1 -0
- package/dist/routes/config/index.d.ts +9 -9
- package/dist/routes/config/index.js +2 -2
- package/dist/routes/config/index.js.map +1 -1
- package/dist/routes/config/services.js +69 -68
- package/dist/routes/config/services.js.map +1 -1
- package/dist/routes/config/settings.d.ts +1 -1
- package/dist/routes/config/settings.js +45 -38
- package/dist/routes/config/settings.js.map +1 -1
- package/dist/routes/debug.js +12 -11
- package/dist/routes/debug.js.map +1 -1
- package/dist/routes/icons.js +2 -2
- package/dist/routes/icons.js.map +1 -1
- package/dist/routes/logs.js +19 -30
- package/dist/routes/logs.js.map +1 -1
- package/dist/routes/mpegts.js +1 -1
- package/dist/routes/playlist.d.ts +1 -1
- package/dist/routes/playlist.js +37 -26
- package/dist/routes/playlist.js.map +1 -1
- package/dist/routes/root/content.js +27 -6
- package/dist/routes/root/content.js.map +1 -1
- package/dist/routes/root/index.js +2 -5
- package/dist/routes/root/index.js.map +1 -1
- package/dist/routes/root/scripts/channels.js +16 -16
- package/dist/routes/root/scripts/channels.js.map +1 -1
- package/dist/routes/root/scripts/config.js +59 -59
- package/dist/routes/root/scripts/config.js.map +1 -1
- package/dist/routes/root/scripts/index.d.ts +4 -4
- package/dist/routes/root/scripts/shared.js +24 -10
- package/dist/routes/root/scripts/shared.js.map +1 -1
- package/dist/routes/root/scripts/status.d.ts +4 -0
- package/dist/routes/root/scripts/status.handlers.d.ts +182 -0
- package/dist/routes/root/scripts/status.handlers.js +713 -0
- package/dist/routes/root/scripts/status.handlers.js.map +1 -0
- package/dist/routes/root/scripts/status.js +86 -488
- package/dist/routes/root/scripts/status.js.map +1 -1
- package/dist/routes/root/styles.js +5 -5
- package/dist/routes/services.js +18 -15
- package/dist/routes/services.js.map +1 -1
- package/dist/routes/sse.d.ts +16 -0
- package/dist/routes/sse.js +29 -0
- package/dist/routes/sse.js.map +1 -0
- package/dist/routes/streams.js +10 -23
- package/dist/routes/streams.js.map +1 -1
- package/dist/routes/ui.d.ts +2 -2
- package/dist/routes/upgrade.js +6 -7
- package/dist/routes/upgrade.js.map +1 -1
- package/dist/service/commands.context.d.ts +6 -0
- package/dist/service/commands.context.js +47 -0
- package/dist/service/commands.context.js.map +1 -0
- package/dist/service/commands.d.ts +53 -8
- package/dist/service/commands.js +171 -188
- package/dist/service/commands.js.map +1 -1
- package/dist/service/generators.context.d.ts +6 -0
- package/dist/service/generators.context.js +45 -0
- package/dist/service/generators.context.js.map +1 -0
- package/dist/service/generators.d.ts +56 -16
- package/dist/service/generators.js +499 -383
- package/dist/service/generators.js.map +1 -1
- package/dist/service/index.d.ts +2 -2
- package/dist/streaming/clients.d.ts +2 -2
- package/dist/streaming/clients.js +2 -2
- package/dist/streaming/codec.d.ts +2 -2
- package/dist/streaming/codec.js +0 -1
- package/dist/streaming/codec.js.map +1 -1
- package/dist/streaming/fmp4Segmenter.d.ts +2 -2
- package/dist/streaming/fmp4Segmenter.js +12 -12
- package/dist/streaming/hls.d.ts +3 -3
- package/dist/streaming/hls.js +81 -70
- package/dist/streaming/hls.js.map +1 -1
- package/dist/streaming/hlsResume.d.ts +3 -3
- package/dist/streaming/hlsResume.js +5 -5
- package/dist/streaming/hlsSegments.d.ts +5 -2
- package/dist/streaming/hlsSegments.js +14 -9
- package/dist/streaming/hlsSegments.js.map +1 -1
- package/dist/streaming/monitor.d.ts +12 -12
- package/dist/streaming/monitor.js +80 -54
- package/dist/streaming/monitor.js.map +1 -1
- package/dist/streaming/mp4Parser.d.ts +34 -4
- package/dist/streaming/mp4Parser.js +111 -29
- package/dist/streaming/mp4Parser.js.map +1 -1
- package/dist/streaming/mpegts.d.ts +1 -1
- package/dist/streaming/mpegts.js +13 -10
- package/dist/streaming/mpegts.js.map +1 -1
- package/dist/streaming/playlistBuilder.d.ts +1 -1
- package/dist/streaming/playlistBuilder.js +2 -2
- package/dist/streaming/preroll.d.ts +9 -9
- package/dist/streaming/preroll.js +39 -41
- package/dist/streaming/preroll.js.map +1 -1
- package/dist/streaming/pretune.js +4 -4
- package/dist/streaming/pretune.js.map +1 -1
- package/dist/streaming/recovery.d.ts +3 -3
- package/dist/streaming/recovery.js +4 -4
- package/dist/streaming/registry.d.ts +6 -6
- package/dist/streaming/setup.d.ts +9 -8
- package/dist/streaming/setup.js +97 -49
- package/dist/streaming/setup.js.map +1 -1
- package/dist/streaming/showInfo.d.ts +9 -3
- package/dist/streaming/showInfo.js +26 -18
- package/dist/streaming/showInfo.js.map +1 -1
- package/dist/streaming/statusEmitter.d.ts +4 -4
- package/dist/streaming/statusEmitter.js +2 -2
- package/dist/types/channels.d.ts +133 -34
- package/dist/types/channels.js +39 -1
- package/dist/types/channels.js.map +1 -1
- package/dist/types/config.d.ts +20 -1
- package/dist/types/index.d.ts +9 -8
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/profiles.d.ts +5 -4
- package/dist/types/selection.d.ts +48 -4
- package/dist/types/streaming.d.ts +1 -1
- package/dist/upgrade/commands.context.d.ts +6 -0
- package/dist/upgrade/commands.context.js +29 -0
- package/dist/upgrade/commands.context.js.map +1 -0
- package/dist/upgrade/commands.d.ts +29 -2
- package/dist/upgrade/commands.js +87 -134
- package/dist/upgrade/commands.js.map +1 -1
- package/dist/upgrade/detection.context.d.ts +6 -0
- package/dist/upgrade/detection.context.js +24 -0
- package/dist/upgrade/detection.context.js.map +1 -0
- package/dist/upgrade/detection.d.ts +140 -10
- package/dist/upgrade/detection.js +153 -66
- package/dist/upgrade/detection.js.map +1 -1
- package/dist/upgrade/index.d.ts +2 -2
- package/dist/utils/chromeFetch.d.ts +1 -1
- package/dist/utils/chromeFetch.js +1 -1
- package/dist/utils/clock.d.ts +14 -0
- package/dist/utils/clock.js +28 -0
- package/dist/utils/clock.js.map +1 -0
- package/dist/utils/debugFilter.d.ts +1 -1
- package/dist/utils/debugFilter.js +6 -4
- package/dist/utils/debugFilter.js.map +1 -1
- package/dist/utils/delay.d.ts +2 -3
- package/dist/utils/delay.js +10 -16
- package/dist/utils/delay.js.map +1 -1
- package/dist/utils/evaluate.js +12 -14
- package/dist/utils/evaluate.js.map +1 -1
- package/dist/utils/ffmpeg.context.d.ts +6 -0
- package/dist/utils/ffmpeg.context.js +31 -0
- package/dist/utils/ffmpeg.context.js.map +1 -0
- package/dist/utils/ffmpeg.d.ts +85 -29
- package/dist/utils/ffmpeg.js +126 -129
- package/dist/utils/ffmpeg.js.map +1 -1
- package/dist/utils/fileLogger.d.ts +18 -2
- package/dist/utils/fileLogger.js +58 -30
- package/dist/utils/fileLogger.js.map +1 -1
- package/dist/utils/format.d.ts +1 -1
- package/dist/utils/format.js +2 -2
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/html.js +1 -3
- package/dist/utils/html.js.map +1 -1
- package/dist/utils/index.d.ts +21 -20
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/logger.js +16 -20
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/m3u.d.ts +18 -3
- package/dist/utils/m3u.js +28 -14
- package/dist/utils/m3u.js.map +1 -1
- package/dist/utils/memo.d.ts +19 -0
- package/dist/utils/memo.js +53 -0
- package/dist/utils/memo.js.map +1 -0
- package/dist/utils/morganStream.js +2 -2
- package/dist/utils/morganStream.js.map +1 -1
- package/dist/utils/pid.d.ts +2 -2
- package/dist/utils/pid.js +2 -2
- package/dist/utils/platform.d.ts +1 -1
- package/dist/utils/platform.js +3 -3
- package/dist/utils/platform.js.map +1 -1
- package/dist/utils/retry.d.ts +2 -0
- package/dist/utils/retry.js +9 -7
- package/dist/utils/retry.js.map +1 -1
- package/dist/utils/sanitize.d.ts +2 -2
- package/dist/utils/sanitize.js +4 -4
- package/dist/utils/timing.d.ts +6 -3
- package/dist/utils/timing.js +10 -6
- package/dist/utils/timing.js.map +1 -1
- package/dist/utils/version.d.ts +3 -2
- package/dist/utils/version.js +14 -27
- package/dist/utils/version.js.map +1 -1
- package/package.json +13 -7
- package/dist/native/intercept.d.ts +0 -35
- package/dist/native/intercept.js +0 -181
- package/dist/native/intercept.js.map +0 -1
- package/dist/routes/config/channels/routes.js +0 -1505
- package/dist/routes/config/channels/routes.js.map +0 -1
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { createFileStore } from "./persistence.js";
|
|
2
|
+
import { LOG } from "../utils/index.js";
|
|
2
3
|
import { getConfigFilePath } from "./paths.js";
|
|
3
4
|
import { getValidPresetIds } from "./presets.js";
|
|
5
|
+
import { isDeepStrictEqual } from "node:util";
|
|
4
6
|
/**
|
|
5
7
|
* Metadata for all configurable settings, organized by category.
|
|
6
8
|
*/
|
|
@@ -39,6 +41,18 @@ export const CONFIG_METADATA = {
|
|
|
39
41
|
type: "checkboxList"
|
|
40
42
|
}
|
|
41
43
|
],
|
|
44
|
+
channelsDvr: [
|
|
45
|
+
{
|
|
46
|
+
description: "TCP port for the user's Channels DVR API. PrismCast polls Channels DVR over HTTP for show-info, device-mapping discovery, and pretune " +
|
|
47
|
+
"scheduling. Defaults to 8089, which is the canonical Channels DVR port. Override only when the user has changed the DVR's listen port from its default.",
|
|
48
|
+
envVar: "CHANNELS_DVR_PORT",
|
|
49
|
+
label: "Channels DVR Port",
|
|
50
|
+
max: 65535,
|
|
51
|
+
min: 1,
|
|
52
|
+
path: "channelsDvr.port",
|
|
53
|
+
type: "port"
|
|
54
|
+
}
|
|
55
|
+
],
|
|
42
56
|
hdhr: [
|
|
43
57
|
{
|
|
44
58
|
description: "Enable HDHomeRun emulation for Plex integration. When enabled, PrismCast runs a second HTTP server that emulates an HDHomeRun tuner, " +
|
|
@@ -468,30 +482,158 @@ export const CONFIG_METADATA = {
|
|
|
468
482
|
* Configuration persistence uses a transactional file store that provides atomic writes, serialized mutations, corruption protection, and backup rotation.
|
|
469
483
|
* All config modifications go through mutateConfig(), which prevents the class of bugs where a corrupt file gets silently overwritten with nearly-empty data.
|
|
470
484
|
*/
|
|
471
|
-
|
|
472
|
-
|
|
485
|
+
/* Current schema version for config.json. Migrations are declared in configMigrations below; the framework runs them in order from the file's stored version
|
|
486
|
+
* up to this constant, stamps the new version after each, and records the audit trail in migrationsApplied.
|
|
487
|
+
*
|
|
488
|
+
* Version history:
|
|
489
|
+
* 1 - Original. Provider-themed channel field names ("enabledProviders", "precacheProviders") and "foxcom" service tag still present.
|
|
490
|
+
* 2 - Service-themed naming. Renames "enabledProviders" -> "enabledServices", "precacheProviders" -> "precacheServices", and "foxcom" -> "foxone" inside
|
|
491
|
+
* the channels.enabledServices array. Companion to channels.json v3 which renames foxcom in channel keys and selections.
|
|
492
|
+
* 3 - DVR connection namespace. Moves the top-level `dvrHost` field into `channelsDvr.host`, splitting any legacy `host:port` value so the host portion
|
|
493
|
+
* lands at `channelsDvr.host` (host-only) and the port portion lands at `channelsDvr.port` only when the user has not already customized the port.
|
|
494
|
+
*/
|
|
495
|
+
const CURRENT_CONFIG_SCHEMA_VERSION = 3;
|
|
496
|
+
/* Declarative schema migrations. The file store framework runs these in order from the file's stored schemaVersion up to CURRENT_CONFIG_SCHEMA_VERSION,
|
|
497
|
+
* stamping the new version and recording the description in migrationsApplied after each application. Apply functions mutate the data in place.
|
|
498
|
+
*/
|
|
499
|
+
const configMigrations = {
|
|
500
|
+
2: {
|
|
501
|
+
apply: applyChannelsProviderRenameMigration,
|
|
502
|
+
description: "Rename legacy provider-themed channel field names and foxcom service tag to foxone"
|
|
503
|
+
},
|
|
504
|
+
3: {
|
|
505
|
+
apply: applyDvrHostNamespaceMigration,
|
|
506
|
+
description: "Move dvrHost into channelsDvr.host (split legacy host:port format)"
|
|
507
|
+
}
|
|
508
|
+
};
|
|
509
|
+
/**
|
|
510
|
+
* Renames the legacy provider-themed channel fields to their current service-themed names: `enabledProviders` -> `enabledServices`,
|
|
511
|
+
* `precacheProviders` -> `precacheServices`, and the `"foxcom"` tag -> `"foxone"` inside `enabledServices`. When both legacy and current names coexist on disk
|
|
512
|
+
* (a rare hand-edited collision), the current name wins and the legacy key is deleted - operator intent on the new name takes precedence over the auto-rename.
|
|
513
|
+
*
|
|
514
|
+
* Behavioral contract: this is a pure transformation on the on-disk shape. Configs without a `channels` block are left untouched (early return); configs that
|
|
515
|
+
* already have the v2 shape (no legacy keys present) are unchanged at the field level (idempotent), though the foxcom-to-foxone map runs unconditionally over
|
|
516
|
+
* the present `enabledServices` array because that operation is itself a no-op for already-migrated tags.
|
|
517
|
+
*
|
|
518
|
+
* Exported for unit-test coverage of the rename cases (each rename, collision wins, foxcom remap, no-channels early return). Production callers reach this
|
|
519
|
+
* only through the schema migration runner, never directly.
|
|
520
|
+
*
|
|
521
|
+
* @param data - The pre-migration UserConfig data, mutated in place.
|
|
522
|
+
*/
|
|
523
|
+
export function applyChannelsProviderRenameMigration(data) {
|
|
524
|
+
// Cast to a permissive shape because the legacy provider-themed keys are not declared on UserChannelsConfig - they only exist on older on-disk files.
|
|
525
|
+
const channels = data.channels;
|
|
526
|
+
if (!channels) {
|
|
527
|
+
return;
|
|
528
|
+
}
|
|
529
|
+
// Rename enabledProviders -> enabledServices. If both are present (rare hand-edited case) the current name wins.
|
|
530
|
+
if (Array.isArray(channels["enabledProviders"])) {
|
|
531
|
+
if (!Array.isArray(channels["enabledServices"])) {
|
|
532
|
+
channels["enabledServices"] = channels["enabledProviders"];
|
|
533
|
+
}
|
|
534
|
+
delete channels["enabledProviders"];
|
|
535
|
+
}
|
|
536
|
+
// Rename precacheProviders -> precacheServices.
|
|
537
|
+
if (Array.isArray(channels["precacheProviders"])) {
|
|
538
|
+
if (!Array.isArray(channels["precacheServices"])) {
|
|
539
|
+
channels["precacheServices"] = channels["precacheProviders"];
|
|
540
|
+
}
|
|
541
|
+
delete channels["precacheProviders"];
|
|
542
|
+
}
|
|
543
|
+
// Rename "foxcom" -> "foxone" inside the enabledServices service-tag filter.
|
|
544
|
+
if (Array.isArray(channels["enabledServices"])) {
|
|
545
|
+
channels["enabledServices"] = channels["enabledServices"].map((tag) => (tag === "foxcom") ? "foxone" : tag);
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
/**
|
|
549
|
+
* Splits a legacy `dvrHost` value into the new `channelsDvr.host` / `channelsDvr.port` namespace. The host portion is host-only by invariant; legacy values
|
|
550
|
+
* carrying an embedded port (e.g., `192.168.1.5:8089`) are split so the host lands at `channelsDvr.host` and the port lands at `channelsDvr.port` IFF the
|
|
551
|
+
* user has not already customized the port. When both an embedded port and an explicit user-set port exist, the explicit port wins (a warning is logged) and
|
|
552
|
+
* the embedded port is discarded - the user's deliberate choice takes precedence over implicit legacy data.
|
|
553
|
+
*
|
|
554
|
+
* Splits at the LAST colon so bracket-wrapped IPv6 forms like `[::1]:8089` survive (the production setDvrHost invariant rejects bare-colon values, but disk
|
|
555
|
+
* files may carry hand-edited content the framework cannot vet). When the trailing portion does not parse as a valid port number (1..65535), the entire input
|
|
556
|
+
* is treated as a host-only value rather than fabricating a bogus port.
|
|
557
|
+
*
|
|
558
|
+
* Exported for unit-test coverage of the splitting cases (host-only, host+default-port, host+non-default-port collision). Production callers reach this only
|
|
559
|
+
* through the schema migration runner, never directly.
|
|
560
|
+
*
|
|
561
|
+
* @param data - The pre-migration UserConfig data, mutated in place.
|
|
562
|
+
*/
|
|
563
|
+
export function applyDvrHostNamespaceMigration(data) {
|
|
564
|
+
// The legacy field is not declared on the current UserConfig; we read it through a permissive cast to access the on-disk pre-migration shape. After migration
|
|
565
|
+
// the field is deleted so it cannot leak into the post-migration write path.
|
|
566
|
+
const legacy = data;
|
|
567
|
+
const dvrHost = legacy.dvrHost;
|
|
568
|
+
if (typeof dvrHost !== "string") {
|
|
569
|
+
return;
|
|
570
|
+
}
|
|
571
|
+
let host = dvrHost;
|
|
572
|
+
let embeddedPort;
|
|
573
|
+
// Split at the last colon so bracket-wrapped IPv6 (e.g., [::1]:8089) survives. If the trailing portion does not parse as a valid TCP port, treat the whole
|
|
574
|
+
// input as host-only - avoid fabricating a port from a malformed string.
|
|
575
|
+
const colonIdx = dvrHost.lastIndexOf(":");
|
|
576
|
+
if (colonIdx >= 0) {
|
|
577
|
+
const tail = dvrHost.slice(colonIdx + 1);
|
|
578
|
+
const parsed = Number(tail);
|
|
579
|
+
if (Number.isInteger(parsed) && (parsed >= 1) && (parsed <= 65535)) {
|
|
580
|
+
host = dvrHost.slice(0, colonIdx);
|
|
581
|
+
embeddedPort = parsed;
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
data.channelsDvr ??= {};
|
|
585
|
+
data.channelsDvr.host = host;
|
|
586
|
+
// Migrate the embedded port only when the user has not customized the port already. A user-set port reflects an explicit choice that overrides whatever the
|
|
587
|
+
// legacy host:port string encoded - prefer the explicit value and log the conflict so it is auditable.
|
|
588
|
+
if (embeddedPort !== undefined) {
|
|
589
|
+
const userPort = data.channelsDvr.port;
|
|
590
|
+
if (userPort === undefined) {
|
|
591
|
+
data.channelsDvr.port = embeddedPort;
|
|
592
|
+
}
|
|
593
|
+
else if (userPort !== embeddedPort) {
|
|
594
|
+
LOG.warn("Schema migration v3: legacy dvrHost \"%s\" carried embedded port %d but channelsDvr.port is already set to %d. " +
|
|
595
|
+
"Keeping the explicit port; embedded port discarded.", dvrHost, embeddedPort, userPort);
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
delete legacy.dvrHost;
|
|
599
|
+
}
|
|
600
|
+
// Transactional store instance for config.json. The beforeWrite hook is the single chokepoint where the persisted shape is normalized: filterDefaults() runs on
|
|
601
|
+
// every save so the file on disk contains only non-default values, regardless of which call site initiated the write. Schema migrations run automatically via
|
|
602
|
+
// the file store framework's migration runner before the data reaches mergeConfiguration.
|
|
473
603
|
const configStore = createFileStore({
|
|
474
604
|
beforeWrite: (data) => filterDefaults(data),
|
|
475
|
-
|
|
605
|
+
currentSchemaVersion: CURRENT_CONFIG_SCHEMA_VERSION,
|
|
606
|
+
defaultValue: () => ({ schemaVersion: CURRENT_CONFIG_SCHEMA_VERSION }),
|
|
607
|
+
getSchemaVersion: (data) => data.schemaVersion ?? 1,
|
|
476
608
|
label: "configuration",
|
|
609
|
+
migrations: configMigrations,
|
|
477
610
|
parse: (raw) => JSON.parse(raw),
|
|
478
|
-
path: getConfigFilePath
|
|
611
|
+
path: getConfigFilePath,
|
|
612
|
+
recordMigration: (data, description) => {
|
|
613
|
+
data.migrationsApplied ??= [];
|
|
614
|
+
data.migrationsApplied.push(description);
|
|
615
|
+
},
|
|
616
|
+
setSchemaVersion: (data, version) => { data.schemaVersion = version; }
|
|
479
617
|
});
|
|
480
618
|
/**
|
|
481
|
-
* Reads the current configuration from disk without acquiring the serialization lock. Returns the parsed config with parse status. Use this for
|
|
482
|
-
* access (export endpoints, startup initialization). For modifications, use mutateConfig() instead.
|
|
619
|
+
* Reads the current configuration from disk without acquiring the serialization lock. Returns the parsed (and migrated) config with parse status. Use this for
|
|
620
|
+
* read-only access (export endpoints, startup initialization). For modifications, use mutateConfig() instead.
|
|
483
621
|
* @returns The loaded configuration with parse status.
|
|
484
622
|
*/
|
|
485
623
|
export async function readConfig() {
|
|
486
624
|
const result = await configStore.read();
|
|
487
|
-
return {
|
|
625
|
+
return {
|
|
626
|
+
config: result.data,
|
|
627
|
+
parseError: result.parseError,
|
|
628
|
+
parseErrorMessage: result.parseErrorMessage,
|
|
629
|
+
recoveredFromBackup: result.recoveredFromBackup
|
|
630
|
+
};
|
|
488
631
|
}
|
|
489
632
|
/**
|
|
490
|
-
* Serialized read-modify-write operation on config.json. The mutation function receives the current config
|
|
491
|
-
*
|
|
492
|
-
* (beforeWrite hook).
|
|
633
|
+
* Serialized read-modify-write operation on config.json. The mutation function receives the current config (already migrated to the latest schema version) and
|
|
634
|
+
* modifies it in place. The store handles atomicity, serialization, corruption guard, backup, schema migration, and filterDefaults via the framework.
|
|
493
635
|
* @param fn - Mutation function. Receives current config. Modify in place; return value is ignored.
|
|
494
|
-
* @throws FileStoreParseError if config.json contains invalid JSON.
|
|
636
|
+
* @throws FileStoreParseError if config.json contains invalid JSON and no usable backup exists.
|
|
495
637
|
*/
|
|
496
638
|
export async function mutateConfig(fn) {
|
|
497
639
|
await configStore.mutate(fn);
|
|
@@ -533,6 +675,10 @@ export const DEFAULTS = {
|
|
|
533
675
|
setupCompleted: false,
|
|
534
676
|
visibleColumns: []
|
|
535
677
|
},
|
|
678
|
+
channelsDvr: {
|
|
679
|
+
host: "",
|
|
680
|
+
port: 8089
|
|
681
|
+
},
|
|
536
682
|
hdhr: {
|
|
537
683
|
deviceId: "",
|
|
538
684
|
enabled: true,
|
|
@@ -623,7 +769,7 @@ function parseEnvValue(value, type) {
|
|
|
623
769
|
return value.split(",").map((v) => v.trim()).filter((v) => v.length > 0);
|
|
624
770
|
}
|
|
625
771
|
case "path": {
|
|
626
|
-
// An empty path env var means "use default"
|
|
772
|
+
// An empty path env var means "use default" - return null so the downstream code sees the same sentinel as an unset config field.
|
|
627
773
|
return (value.trim() === "") ? null : value;
|
|
628
774
|
}
|
|
629
775
|
default: {
|
|
@@ -657,11 +803,8 @@ export function getNestedValue(obj, settingPath) {
|
|
|
657
803
|
export function setNestedValue(obj, settingPath, value) {
|
|
658
804
|
const parts = settingPath.split(".");
|
|
659
805
|
let current = obj;
|
|
660
|
-
for (
|
|
661
|
-
|
|
662
|
-
if (current[part] === undefined) {
|
|
663
|
-
current[part] = {};
|
|
664
|
-
}
|
|
806
|
+
for (const part of parts.slice(0, -1)) {
|
|
807
|
+
current[part] ??= {};
|
|
665
808
|
current = current[part];
|
|
666
809
|
}
|
|
667
810
|
current[parts.at(-1) ?? ""] = value;
|
|
@@ -685,47 +828,18 @@ export function mergeConfiguration(userConfig, cliOverrides) {
|
|
|
685
828
|
}
|
|
686
829
|
}
|
|
687
830
|
}
|
|
688
|
-
/*
|
|
689
|
-
*
|
|
690
|
-
*
|
|
691
|
-
*
|
|
692
|
-
*
|
|
693
|
-
*
|
|
831
|
+
/* Hydrate fields that live outside CONFIG_METADATA (auto-discovery results like channelsDvr.host, separately-managed lists like channels.disabledPredefined,
|
|
832
|
+
* the persisted debug filter pattern) and array fields whose CONFIG_METADATA hydration would alias the parsed UserConfig blob into runtime CONFIG. The
|
|
833
|
+
* registry pairs each path with a predicate (ignored when undefined) and an optional defensive-copy hook. Adding a new field here is one HYDRATED_FIELDS
|
|
834
|
+
* entry; the drift-check test in userConfig.merge.test.ts asserts that PRESERVED_FIELDS partitions exactly into HYDRATED_FIELDS plus PERSISTENCE_ONLY_FIELDS,
|
|
835
|
+
* so a future preservation entry cannot be added without an explicit hydration classification. See the section comment above HYDRATED_FIELDS for the full
|
|
836
|
+
* design intent.
|
|
694
837
|
*/
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
if (Array.isArray(userConfig.channels?.enabledServices)) {
|
|
701
|
-
config.channels.enabledServices = [...userConfig.channels.enabledServices];
|
|
702
|
-
}
|
|
703
|
-
else if (Array.isArray(channelsRaw?.enabledProviders)) {
|
|
704
|
-
config.channels.enabledServices = [...channelsRaw.enabledProviders];
|
|
705
|
-
}
|
|
706
|
-
if (Array.isArray(userConfig.channels?.precacheServices)) {
|
|
707
|
-
config.channels.precacheServices = [...userConfig.channels.precacheServices];
|
|
708
|
-
}
|
|
709
|
-
else if (Array.isArray(channelsRaw?.precacheProviders)) {
|
|
710
|
-
config.channels.precacheServices = [...channelsRaw.precacheProviders];
|
|
711
|
-
}
|
|
712
|
-
if (Array.isArray(userConfig.channels?.visibleColumns)) {
|
|
713
|
-
config.channels.visibleColumns = [...userConfig.channels.visibleColumns];
|
|
714
|
-
}
|
|
715
|
-
if (Array.isArray(userConfig.streaming?.captureCodecs)) {
|
|
716
|
-
config.streaming.captureCodecs = [...userConfig.streaming.captureCodecs];
|
|
717
|
-
}
|
|
718
|
-
if ((typeof userConfig.channels?.channelSortField === "string") && (userConfig.channels.channelSortField.length > 0)) {
|
|
719
|
-
config.channels.channelSortField = userConfig.channels.channelSortField;
|
|
720
|
-
}
|
|
721
|
-
if ((typeof userConfig.channels?.channelSortDirection === "string") && (userConfig.channels.channelSortDirection.length > 0)) {
|
|
722
|
-
config.channels.channelSortDirection = userConfig.channels.channelSortDirection;
|
|
723
|
-
}
|
|
724
|
-
if ((typeof userConfig.hdhr?.deviceId === "string") && (userConfig.hdhr.deviceId.length > 0)) {
|
|
725
|
-
config.hdhr.deviceId = userConfig.hdhr.deviceId;
|
|
726
|
-
}
|
|
727
|
-
if ((typeof userConfig.logging?.debugFilter === "string") && (userConfig.logging.debugFilter.length > 0)) {
|
|
728
|
-
config.logging.debugFilter = userConfig.logging.debugFilter;
|
|
838
|
+
for (const field of HYDRATED_FIELDS) {
|
|
839
|
+
const userValue = getNestedValue(userConfig, field.path);
|
|
840
|
+
if (field.shouldHydrate(userValue, undefined)) {
|
|
841
|
+
setNestedValue(config, field.path, field.copy ? field.copy(userValue) : userValue);
|
|
842
|
+
}
|
|
729
843
|
}
|
|
730
844
|
// Apply environment variable overrides.
|
|
731
845
|
for (const settings of Object.values(CONFIG_METADATA)) {
|
|
@@ -783,6 +897,7 @@ const SETTINGS_TAB_SECTIONS = [
|
|
|
783
897
|
/* Display metadata for Advanced tab sections. The category field must match a key in CONFIG_METADATA. Entries are sorted alphabetically by category.
|
|
784
898
|
*/
|
|
785
899
|
const ADVANCED_SECTION_META = [
|
|
900
|
+
{ category: "channelsDvr", displayName: "Channels DVR" },
|
|
786
901
|
{ category: "hls", displayName: "HLS" },
|
|
787
902
|
{ category: "logging", displayName: "Logging" },
|
|
788
903
|
{ category: "paths", displayName: "Paths" },
|
|
@@ -858,25 +973,20 @@ export function getAdvancedSections() {
|
|
|
858
973
|
const settingsTabPaths = SETTINGS_TAB_SECTIONS.flatMap((s) => s.paths);
|
|
859
974
|
// Get all paths that belong in Advanced (not in Settings).
|
|
860
975
|
const advancedPaths = getAllSettingPaths().filter((p) => !settingsTabPaths.includes(p));
|
|
861
|
-
//
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
byCategory.set(category, []);
|
|
869
|
-
}
|
|
870
|
-
byCategory.get(category)?.push(setting);
|
|
871
|
-
}
|
|
872
|
-
}
|
|
976
|
+
// Pair every advanced path with its resolved setting and category prefix, then drop entries whose category is empty or whose setting lookup failed. The
|
|
977
|
+
// surviving pairs feed Map.groupBy below for the actual grouping.
|
|
978
|
+
const settingsByPath = advancedPaths
|
|
979
|
+
.map((path) => ({ category: path.split(".")[0] ?? "", setting: getSettingByPath(path) }))
|
|
980
|
+
.filter((entry) => Boolean(entry.category && entry.setting));
|
|
981
|
+
// Group by category (first path segment) using the standard ESNext.Collection grouper.
|
|
982
|
+
const byCategory = Map.groupBy(settingsByPath, (entry) => entry.category);
|
|
873
983
|
// Return sections in the defined order with display names.
|
|
874
984
|
return ADVANCED_SECTION_META
|
|
875
985
|
.filter((meta) => byCategory.has(meta.category))
|
|
876
986
|
.map((meta) => ({
|
|
877
987
|
displayName: meta.displayName,
|
|
878
988
|
id: meta.category,
|
|
879
|
-
settings: byCategory.get(meta.category) ?? []
|
|
989
|
+
settings: byCategory.get(meta.category)?.map((entry) => entry.setting) ?? []
|
|
880
990
|
}));
|
|
881
991
|
}
|
|
882
992
|
/* When saving user configuration, we only want to persist values that differ from defaults. This keeps the config file clean and makes it easy to see what the user has
|
|
@@ -922,8 +1032,84 @@ export function isEqualToDefault(value, defaultValue) {
|
|
|
922
1032
|
return false;
|
|
923
1033
|
}
|
|
924
1034
|
// Compare as strings for consistent comparison across types (handles number/string coercion). Config values are always primitives.
|
|
925
|
-
|
|
1035
|
+
const primitive = value;
|
|
1036
|
+
const defaultPrimitive = defaultValue;
|
|
1037
|
+
return String(primitive) === String(defaultPrimitive);
|
|
926
1038
|
}
|
|
1039
|
+
// Predicate: any array, including empty. Used by HYDRATED_FIELDS to mirror the historical mergeConfiguration() inline-block behavior of unconditionally
|
|
1040
|
+
// hydrating any array-typed value present on disk; downstream validateConfiguration() normalizes empty-array edge cases (e.g., captureCodecs forces h264).
|
|
1041
|
+
const isArrayValue = (value) => Array.isArray(value);
|
|
1042
|
+
// Predicate: any non-empty array. Used for fields where the user's empty-array state coincides with the default-empty-array state (disabledPredefined,
|
|
1043
|
+
// enabledServices, precacheServices, visibleColumns, migrationsApplied). The defaultValue argument is intentionally unused.
|
|
1044
|
+
const isNonEmptyArray = (value) => Array.isArray(value) && (value.length > 0);
|
|
1045
|
+
// Predicate: any non-empty string. Used for fields whose default is the empty string and whose presence-on-disk should follow the same rule (hdhr.deviceId,
|
|
1046
|
+
// logging.debugFilter, channelsDvr.host).
|
|
1047
|
+
const isNonEmptyString = (value) => (typeof value === "string") && (value.length > 0);
|
|
1048
|
+
// Predicate: any number. Used for schemaVersion - the framework-managed integer that any non-undefined value must round-trip through filterDefaults.
|
|
1049
|
+
// Predicate: any number including NaN. Number.isFinite() would tighten the contract if NaN must be rejected.
|
|
1050
|
+
const isNumber = (value) => typeof value === "number";
|
|
1051
|
+
// Predicate: a string that differs from the default by simple equality. Used for channelSortField / channelSortDirection - both have meaningful default
|
|
1052
|
+
// values ("name", "asc") that should be stripped on save while any other valid string is preserved.
|
|
1053
|
+
const differsFromStringDefault = (value, defaultValue) => (typeof value === "string") && (value !== defaultValue);
|
|
1054
|
+
// Predicate: an array whose contents differ from the default by SORTED-element comparison. Used for streaming.captureCodecs - the default ["h264", "hevc"]
|
|
1055
|
+
// reordered by the user (["hevc", "h264"]) is semantically the same configuration and should not write to disk; only a different SET of codecs counts as a
|
|
1056
|
+
// customization worth preserving.
|
|
1057
|
+
const differsFromSortedArrayDefault = (value, defaultValue) => {
|
|
1058
|
+
return Array.isArray(value) && Array.isArray(defaultValue) && !isDeepStrictEqual(value.toSorted(), defaultValue.toSorted());
|
|
1059
|
+
};
|
|
1060
|
+
/**
|
|
1061
|
+
* Allowlist of config paths that filterDefaults() preserves outside the CONFIG_METADATA-driven loop. See the section comment above for the two distinct
|
|
1062
|
+
* reasons a path lives here rather than in CONFIG_METADATA. The list is alphabetized by path so a future maintainer can locate any entry by paging through
|
|
1063
|
+
* the registry; ordering does not affect runtime semantics because each entry's preserve check is independent.
|
|
1064
|
+
*/
|
|
1065
|
+
export const PRESERVED_FIELDS = [
|
|
1066
|
+
{ path: "channels.channelSortDirection", shouldPreserve: differsFromStringDefault },
|
|
1067
|
+
{ path: "channels.channelSortField", shouldPreserve: differsFromStringDefault },
|
|
1068
|
+
{ path: "channels.disabledPredefined", shouldPreserve: isNonEmptyArray },
|
|
1069
|
+
{ path: "channels.enabledServices", shouldPreserve: isNonEmptyArray },
|
|
1070
|
+
{ path: "channels.precacheServices", shouldPreserve: isNonEmptyArray },
|
|
1071
|
+
{ path: "channels.visibleColumns", shouldPreserve: isNonEmptyArray },
|
|
1072
|
+
{ path: "channelsDvr.host", shouldPreserve: isNonEmptyString },
|
|
1073
|
+
{ path: "hdhr.deviceId", shouldPreserve: isNonEmptyString },
|
|
1074
|
+
{ path: "logging.debugFilter", shouldPreserve: isNonEmptyString },
|
|
1075
|
+
{ path: "migrationsApplied", shouldPreserve: isNonEmptyArray },
|
|
1076
|
+
{ path: "schemaVersion", shouldPreserve: isNumber },
|
|
1077
|
+
{ path: "streaming.captureCodecs", shouldPreserve: differsFromSortedArrayDefault }
|
|
1078
|
+
];
|
|
1079
|
+
// Defensive spread copy for array fields. Pulled out as a const so the registry below reads as a declarative table.
|
|
1080
|
+
const spreadArray = (value) => [...value];
|
|
1081
|
+
/**
|
|
1082
|
+
* Allowlist of config paths that mergeConfiguration() hydrates from the persisted UserConfig into the runtime CONFIG outside the CONFIG_METADATA-driven loop.
|
|
1083
|
+
* Each entry corresponds to a PRESERVED_FIELDS entry that lives on the runtime Config type (the persistence-only entries schemaVersion / migrationsApplied are
|
|
1084
|
+
* declared in PERSISTENCE_ONLY_FIELDS instead). The list is alphabetized by path; ordering does not affect runtime semantics. A drift-check test in
|
|
1085
|
+
* userConfig.merge.test.ts asserts that PRESERVED_FIELDS partitions exactly into HYDRATED_FIELDS plus PERSISTENCE_ONLY_FIELDS, so a future preservation entry
|
|
1086
|
+
* cannot be added without explicitly classifying it as runtime-hydrated or persistence-only.
|
|
1087
|
+
*/
|
|
1088
|
+
export const HYDRATED_FIELDS = [
|
|
1089
|
+
{ path: "channels.channelSortDirection", shouldHydrate: isNonEmptyString },
|
|
1090
|
+
{ path: "channels.channelSortField", shouldHydrate: isNonEmptyString },
|
|
1091
|
+
{ copy: spreadArray, path: "channels.disabledPredefined", shouldHydrate: isArrayValue },
|
|
1092
|
+
{ copy: spreadArray, path: "channels.enabledServices", shouldHydrate: isArrayValue },
|
|
1093
|
+
{ copy: spreadArray, path: "channels.precacheServices", shouldHydrate: isArrayValue },
|
|
1094
|
+
{ copy: spreadArray, path: "channels.visibleColumns", shouldHydrate: isArrayValue },
|
|
1095
|
+
{ path: "channelsDvr.host", shouldHydrate: isNonEmptyString },
|
|
1096
|
+
{ path: "hdhr.deviceId", shouldHydrate: isNonEmptyString },
|
|
1097
|
+
{ path: "logging.debugFilter", shouldHydrate: isNonEmptyString },
|
|
1098
|
+
{ copy: spreadArray, path: "streaming.captureCodecs", shouldHydrate: isArrayValue }
|
|
1099
|
+
];
|
|
1100
|
+
/**
|
|
1101
|
+
* Allowlist of PRESERVED_FIELDS entries that exist only on the persisted UserConfig shape and have NO runtime CONFIG counterpart. These are framework-managed
|
|
1102
|
+
* file-store metadata - the schema-migration runner owns schemaVersion (so the file-store framework can decide whether migrations have run) and migrationsApplied
|
|
1103
|
+
* (the audit trail of which migrations have applied). Neither belongs in runtime CONFIG; both must round-trip through filterDefaults so saves do not strip them.
|
|
1104
|
+
*
|
|
1105
|
+
* The drift-check test consumes this constant to assert that every PRESERVED_FIELDS entry is classified as either runtime-hydrated (HYDRATED_FIELDS) or
|
|
1106
|
+
* persistence-only (here), and that the two sets are disjoint. Adding a new PRESERVED_FIELDS entry without classifying it here or in HYDRATED_FIELDS fails the
|
|
1107
|
+
* drift check at test time, surfacing the architectural intent that every preserved field has a declared destination.
|
|
1108
|
+
*/
|
|
1109
|
+
export const PERSISTENCE_ONLY_FIELDS = [
|
|
1110
|
+
"migrationsApplied",
|
|
1111
|
+
"schemaVersion"
|
|
1112
|
+
];
|
|
927
1113
|
/**
|
|
928
1114
|
* Filters a user configuration object to remove values that match the defaults. This produces a minimal config file containing only the settings the user has actually
|
|
929
1115
|
* customized. Empty nested objects are also removed.
|
|
@@ -932,9 +1118,20 @@ export function isEqualToDefault(value, defaultValue) {
|
|
|
932
1118
|
*/
|
|
933
1119
|
export function filterDefaults(config) {
|
|
934
1120
|
const filtered = {};
|
|
935
|
-
//
|
|
1121
|
+
// Build the set of paths owned by PRESERVED_FIELDS so the metadata-driven loop can skip them. The PRESERVED_FIELDS predicate is the sole arbiter for those
|
|
1122
|
+
// paths because String() coercion in isEqualToDefault produces false positives for array-shaped values (e.g., a reordered captureCodecs list coerces to a
|
|
1123
|
+
// different comma-joined string than the default and would survive the loop, even when the predicate would correctly classify it as default-equal).
|
|
1124
|
+
// Skipping the loop for those paths and letting the predicate decide is the only way to make the predicate authoritative without restructuring either
|
|
1125
|
+
// registry. Paths in PRESERVED_FIELDS that are NOT in CONFIG_METADATA (channelsDvr.host, hdhr.deviceId, etc.) are unaffected - the loop never visited them
|
|
1126
|
+
// before either.
|
|
1127
|
+
const preservedPaths = new Set(PRESERVED_FIELDS.map((field) => field.path));
|
|
1128
|
+
// Iterate over all known settings and check if the value differs from the default. Paths managed by PRESERVED_FIELDS are skipped here so the predicate below
|
|
1129
|
+
// has unilateral control over their inclusion.
|
|
936
1130
|
for (const settings of Object.values(CONFIG_METADATA)) {
|
|
937
1131
|
for (const setting of settings) {
|
|
1132
|
+
if (preservedPaths.has(setting.path)) {
|
|
1133
|
+
continue;
|
|
1134
|
+
}
|
|
938
1135
|
const value = getNestedValue(config, setting.path);
|
|
939
1136
|
// Skip undefined values (setting not present in config).
|
|
940
1137
|
if (value === undefined) {
|
|
@@ -947,51 +1144,14 @@ export function filterDefaults(config) {
|
|
|
947
1144
|
}
|
|
948
1145
|
}
|
|
949
1146
|
}
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
const configEnabledServices = getNestedValue(config, "channels.enabledServices");
|
|
959
|
-
if (Array.isArray(configEnabledServices) && (configEnabledServices.length > 0)) {
|
|
960
|
-
setNestedValue(filtered, "channels.enabledServices", configEnabledServices);
|
|
961
|
-
}
|
|
962
|
-
const configPrecacheServices = getNestedValue(config, "channels.precacheServices");
|
|
963
|
-
if (Array.isArray(configPrecacheServices) && (configPrecacheServices.length > 0)) {
|
|
964
|
-
setNestedValue(filtered, "channels.precacheServices", configPrecacheServices);
|
|
965
|
-
}
|
|
966
|
-
const configVisibleColumns = getNestedValue(config, "channels.visibleColumns");
|
|
967
|
-
if (Array.isArray(configVisibleColumns) && (configVisibleColumns.length > 0)) {
|
|
968
|
-
setNestedValue(filtered, "channels.visibleColumns", configVisibleColumns);
|
|
969
|
-
}
|
|
970
|
-
// Preserve captureCodecs when it differs from the default. The default includes all recognized codecs, so a shorter list means the user has disabled one.
|
|
971
|
-
const configCaptureCodecs = getNestedValue(config, "streaming.captureCodecs");
|
|
972
|
-
const defaultCaptureCodecs = getNestedValue(DEFAULTS, "streaming.captureCodecs");
|
|
973
|
-
if (Array.isArray(configCaptureCodecs) && (JSON.stringify(configCaptureCodecs.toSorted()) !== JSON.stringify(defaultCaptureCodecs.toSorted()))) {
|
|
974
|
-
setNestedValue(filtered, "streaming.captureCodecs", configCaptureCodecs);
|
|
975
|
-
}
|
|
976
|
-
const configSortField = getNestedValue(config, "channels.channelSortField");
|
|
977
|
-
if ((typeof configSortField === "string") && (configSortField !== "name")) {
|
|
978
|
-
setNestedValue(filtered, "channels.channelSortField", configSortField);
|
|
979
|
-
}
|
|
980
|
-
const configSortDirection = getNestedValue(config, "channels.channelSortDirection");
|
|
981
|
-
if ((typeof configSortDirection === "string") && (configSortDirection !== "asc")) {
|
|
982
|
-
setNestedValue(filtered, "channels.channelSortDirection", configSortDirection);
|
|
983
|
-
}
|
|
984
|
-
const configDeviceId = getNestedValue(config, "hdhr.deviceId");
|
|
985
|
-
if ((typeof configDeviceId === "string") && (configDeviceId.length > 0)) {
|
|
986
|
-
setNestedValue(filtered, "hdhr.deviceId", configDeviceId);
|
|
987
|
-
}
|
|
988
|
-
const configDebugFilter = getNestedValue(config, "logging.debugFilter");
|
|
989
|
-
if ((typeof configDebugFilter === "string") && (configDebugFilter.length > 0)) {
|
|
990
|
-
setNestedValue(filtered, "logging.debugFilter", configDebugFilter);
|
|
991
|
-
}
|
|
992
|
-
// Preserve the auto-discovered DVR host across settings saves.
|
|
993
|
-
if ((typeof config.dvrHost === "string") && (config.dvrHost.length > 0)) {
|
|
994
|
-
filtered.dvrHost = config.dvrHost;
|
|
1147
|
+
// Apply the explicit preservation registry. Each entry is consulted with its current value plus the default-at-path; the predicate decides whether to
|
|
1148
|
+
// write through. See PRESERVED_FIELDS above for the entries and their rationale.
|
|
1149
|
+
for (const field of PRESERVED_FIELDS) {
|
|
1150
|
+
const value = getNestedValue(config, field.path);
|
|
1151
|
+
const defaultValue = getNestedValue(DEFAULTS, field.path);
|
|
1152
|
+
if (field.shouldPreserve(value, defaultValue)) {
|
|
1153
|
+
setNestedValue(filtered, field.path, value);
|
|
1154
|
+
}
|
|
995
1155
|
}
|
|
996
1156
|
// Remove any empty nested objects that resulted from filtering.
|
|
997
1157
|
return removeEmptyObjects(filtered);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"userConfig.js","sourceRoot":"","sources":["../../src/config/userConfig.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"userConfig.js","sourceRoot":"","sources":["../../src/config/userConfig.ts"],"names":[],"mappings":"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"}
|