prismcast 1.3.3 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/dist/app.d.ts +3 -2
  2. package/dist/app.js +32 -17
  3. package/dist/app.js.map +1 -1
  4. package/dist/browser/channelSelection.d.ts +3 -2
  5. package/dist/browser/channelSelection.js +43 -19
  6. package/dist/browser/channelSelection.js.map +1 -1
  7. package/dist/browser/index.d.ts +9 -13
  8. package/dist/browser/index.js +65 -75
  9. package/dist/browser/index.js.map +1 -1
  10. package/dist/browser/tuning/hulu.js +613 -13
  11. package/dist/browser/tuning/hulu.js.map +1 -1
  12. package/dist/browser/tuning/sling.js +1 -1
  13. package/dist/browser/tuning/thumbnailRow.js +69 -71
  14. package/dist/browser/tuning/thumbnailRow.js.map +1 -1
  15. package/dist/browser/tuning/tileClick.js +111 -77
  16. package/dist/browser/tuning/tileClick.js.map +1 -1
  17. package/dist/browser/tuning/youtubeTv.js +5 -5
  18. package/dist/browser/tuning/youtubeTv.js.map +1 -1
  19. package/dist/browser/video.d.ts +3 -10
  20. package/dist/browser/video.js +91 -10
  21. package/dist/browser/video.js.map +1 -1
  22. package/dist/config/index.d.ts +9 -3
  23. package/dist/config/index.js +28 -28
  24. package/dist/config/index.js.map +1 -1
  25. package/dist/config/paths.d.ts +41 -0
  26. package/dist/config/paths.js +88 -0
  27. package/dist/config/paths.js.map +1 -0
  28. package/dist/config/providers.js +1 -1
  29. package/dist/config/sites.js +30 -13
  30. package/dist/config/sites.js.map +1 -1
  31. package/dist/config/userChannels.d.ts +1 -1
  32. package/dist/config/userChannels.js +10 -13
  33. package/dist/config/userChannels.js.map +1 -1
  34. package/dist/config/userConfig.d.ts +14 -7
  35. package/dist/config/userConfig.js +59 -34
  36. package/dist/config/userConfig.js.map +1 -1
  37. package/dist/index.d.ts +11 -1
  38. package/dist/index.js +187 -25
  39. package/dist/index.js.map +1 -1
  40. package/dist/routes/config.js +15 -7
  41. package/dist/routes/config.js.map +1 -1
  42. package/dist/routes/debug.js +41 -6
  43. package/dist/routes/debug.js.map +1 -1
  44. package/dist/routes/index.d.ts +1 -0
  45. package/dist/routes/index.js +3 -0
  46. package/dist/routes/index.js.map +1 -1
  47. package/dist/routes/logs.js +3 -3
  48. package/dist/routes/logs.js.map +1 -1
  49. package/dist/routes/playlist.d.ts +2 -2
  50. package/dist/routes/playlist.js +11 -9
  51. package/dist/routes/playlist.js.map +1 -1
  52. package/dist/routes/root.js +149 -6
  53. package/dist/routes/root.js.map +1 -1
  54. package/dist/routes/theme.js +4 -0
  55. package/dist/routes/theme.js.map +1 -1
  56. package/dist/routes/ui.js +2 -0
  57. package/dist/routes/ui.js.map +1 -1
  58. package/dist/routes/upgrade.d.ts +6 -0
  59. package/dist/routes/upgrade.js +68 -0
  60. package/dist/routes/upgrade.js.map +1 -0
  61. package/dist/service/commands.js +9 -7
  62. package/dist/service/commands.js.map +1 -1
  63. package/dist/service/generators.js +10 -15
  64. package/dist/service/generators.js.map +1 -1
  65. package/dist/streaming/fmp4Segmenter.d.ts +28 -0
  66. package/dist/streaming/fmp4Segmenter.js +140 -47
  67. package/dist/streaming/fmp4Segmenter.js.map +1 -1
  68. package/dist/streaming/hls.js +3 -1
  69. package/dist/streaming/hls.js.map +1 -1
  70. package/dist/streaming/lifecycle.js +13 -6
  71. package/dist/streaming/lifecycle.js.map +1 -1
  72. package/dist/streaming/mp4Parser.d.ts +19 -10
  73. package/dist/streaming/mp4Parser.js +39 -29
  74. package/dist/streaming/mp4Parser.js.map +1 -1
  75. package/dist/streaming/setup.d.ts +2 -0
  76. package/dist/streaming/setup.js +4 -1
  77. package/dist/streaming/setup.js.map +1 -1
  78. package/dist/types/index.d.ts +10 -7
  79. package/dist/types/index.js.map +1 -1
  80. package/dist/upgrade/commands.d.ts +6 -0
  81. package/dist/upgrade/commands.js +210 -0
  82. package/dist/upgrade/commands.js.map +1 -0
  83. package/dist/upgrade/detection.d.ts +15 -0
  84. package/dist/upgrade/detection.js +75 -0
  85. package/dist/upgrade/detection.js.map +1 -0
  86. package/dist/upgrade/index.d.ts +2 -0
  87. package/dist/upgrade/index.js +7 -0
  88. package/dist/upgrade/index.js.map +1 -0
  89. package/dist/utils/fileLogger.d.ts +2 -1
  90. package/dist/utils/fileLogger.js +10 -8
  91. package/dist/utils/fileLogger.js.map +1 -1
  92. package/dist/utils/logger.js +1 -1
  93. package/dist/utils/m3u.js +1 -7
  94. package/dist/utils/m3u.js.map +1 -1
  95. package/dist/utils/platform.d.ts +8 -2
  96. package/dist/utils/platform.js +26 -6
  97. package/dist/utils/platform.js.map +1 -1
  98. package/dist/utils/version.d.ts +18 -0
  99. package/dist/utils/version.js +3 -3
  100. package/dist/utils/version.js.map +1 -1
  101. package/package.json +6 -6
@@ -1,8 +1,7 @@
1
+ import { getConfigFilePath, getDataDir } from "./paths.js";
1
2
  import { LOG } from "../utils/index.js";
2
3
  import fs from "node:fs";
3
4
  import { getValidPresetIds } from "./presets.js";
4
- import os from "node:os";
5
- import path from "node:path";
6
5
  const { promises: fsPromises } = fs;
7
6
  /**
8
7
  * Metadata for all configurable settings, organized by category.
@@ -116,6 +115,23 @@ export const CONFIG_METADATA = {
116
115
  unit: "bytes"
117
116
  }
118
117
  ],
118
+ paths: [
119
+ {
120
+ description: "Absolute path override for Chrome's user data directory. When set, Chrome profile data is stored at this path instead of the default " +
121
+ "location inside the data directory. Useful for placing Chrome data on a different volume.",
122
+ envVar: "PRISMCAST_CHROME_DATA_DIR",
123
+ label: "Chrome Data Directory",
124
+ path: "paths.chromeDataDir",
125
+ type: "path"
126
+ },
127
+ {
128
+ description: "Absolute path override for the log file. When set, logs are written to this path instead of the default location inside the data directory.",
129
+ envVar: "PRISMCAST_LOG_FILE",
130
+ label: "Log File Path",
131
+ path: "paths.logFile",
132
+ type: "path"
133
+ }
134
+ ],
119
135
  playback: [
120
136
  {
121
137
  description: "Grace period for buffering before declaring a stall. Prevents false positives from brief network hiccups.",
@@ -442,17 +458,8 @@ export const CONFIG_METADATA = {
442
458
  }
443
459
  ]
444
460
  };
445
- /* The config file is stored in the same data directory as the Chrome profile (~/.prismcast).
446
- */
447
- const dataDir = path.join(os.homedir(), ".prismcast");
448
- const configFilePath = path.join(dataDir, "config.json");
449
- /**
450
- * Returns the path to the user configuration file.
451
- * @returns The absolute path to ~/.prismcast/config.json.
461
+ /* The config file path is resolved via the centralized paths module (config/paths.ts). The data directory is initialized at startup before config loading.
452
462
  */
453
- export function getConfigFilePath() {
454
- return configFilePath;
455
- }
456
463
  /* These functions handle reading and writing the config file. All operations are async and handle errors gracefully.
457
464
  */
458
465
  /**
@@ -462,14 +469,14 @@ export function getConfigFilePath() {
462
469
  */
463
470
  export async function loadUserConfig() {
464
471
  try {
465
- const content = await fsPromises.readFile(configFilePath, "utf-8");
472
+ const content = await fsPromises.readFile(getConfigFilePath(), "utf-8");
466
473
  try {
467
474
  const config = JSON.parse(content);
468
475
  return { config, parseError: false };
469
476
  }
470
477
  catch (parseError) {
471
478
  const message = (parseError instanceof Error) ? parseError.message : String(parseError);
472
- LOG.warn("Invalid JSON in configuration file %s: %s. Using defaults.", configFilePath, message);
479
+ LOG.warn("Invalid JSON in configuration file %s: %s. Using defaults.", getConfigFilePath(), message);
473
480
  return { config: {}, parseError: true, parseErrorMessage: message };
474
481
  }
475
482
  }
@@ -479,7 +486,7 @@ export async function loadUserConfig() {
479
486
  return { config: {}, parseError: false };
480
487
  }
481
488
  // Other read errors - log and use defaults.
482
- LOG.warn("Failed to read configuration file %s: %s. Using defaults.", configFilePath, (error instanceof Error) ? error.message : String(error));
489
+ LOG.warn("Failed to read configuration file %s: %s. Using defaults.", getConfigFilePath(), (error instanceof Error) ? error.message : String(error));
483
490
  return { config: {}, parseError: false };
484
491
  }
485
492
  }
@@ -490,11 +497,11 @@ export async function loadUserConfig() {
490
497
  */
491
498
  export async function saveUserConfig(config) {
492
499
  // Ensure data directory exists.
493
- await fsPromises.mkdir(dataDir, { recursive: true });
500
+ await fsPromises.mkdir(getDataDir(), { recursive: true });
494
501
  // Write config with pretty formatting for readability.
495
502
  const content = JSON.stringify(config, null, 2);
496
- await fsPromises.writeFile(configFilePath, content + "\n", "utf-8");
497
- LOG.info("Configuration saved to %s.", configFilePath);
503
+ await fsPromises.writeFile(getConfigFilePath(), content + "\n", "utf-8");
504
+ LOG.info("Configuration saved to %s.", getConfigFilePath());
498
505
  }
499
506
  /* These functions detect which settings are overridden by environment variables, so the UI can disable those fields and show appropriate warnings.
500
507
  */
@@ -540,12 +547,15 @@ export const DEFAULTS = {
540
547
  segmentDuration: 2
541
548
  },
542
549
  logging: {
550
+ debugFilter: "",
543
551
  httpLogLevel: "errors",
544
552
  maxSize: 1048576
545
553
  },
546
554
  paths: {
555
+ chromeDataDir: null,
547
556
  chromeProfileName: "chromedata",
548
- extensionDirName: "extension"
557
+ extensionDirName: "extension",
558
+ logFile: null
549
559
  },
550
560
  playback: {
551
561
  bufferingGracePeriod: 10000,
@@ -582,7 +592,7 @@ export const DEFAULTS = {
582
592
  navigationTimeout: 10000,
583
593
  qualityPreset: "720p-high",
584
594
  videoBitsPerSecond: 12000000,
585
- videoTimeout: 10000
595
+ videoTimeout: 11000
586
596
  }
587
597
  };
588
598
  /**
@@ -607,10 +617,13 @@ function parseEnvValue(value, type) {
607
617
  const num = parseInt(value, 10);
608
618
  return Number.isNaN(num) ? undefined : num;
609
619
  }
610
- case "host":
611
- case "path": {
620
+ case "host": {
612
621
  return value;
613
622
  }
623
+ case "path": {
624
+ // An empty path env var means "use default" — return null so the downstream code sees the same sentinel as an unset config field.
625
+ return (value.trim() === "") ? null : value;
626
+ }
614
627
  default: {
615
628
  return value;
616
629
  }
@@ -652,11 +665,13 @@ export function setNestedValue(obj, settingPath, value) {
652
665
  current[parts[parts.length - 1]] = value;
653
666
  }
654
667
  /**
655
- * Merges user configuration with defaults and environment overrides to produce the final configuration. Priority: env vars > user config > defaults.
668
+ * Merges user configuration with defaults, environment overrides, and CLI overrides to produce the final configuration.
669
+ * Priority (highest to lowest): CLI overrides > env vars > user config > defaults.
656
670
  * @param userConfig - User configuration from the config file.
671
+ * @param cliOverrides - Optional CLI flag overrides, applied at the highest priority level.
657
672
  * @returns The merged configuration.
658
673
  */
659
- export function mergeConfiguration(userConfig) {
674
+ export function mergeConfiguration(userConfig, cliOverrides) {
660
675
  // Start with a deep copy of defaults.
661
676
  const config = JSON.parse(JSON.stringify(DEFAULTS));
662
677
  // Apply user config values.
@@ -681,7 +696,10 @@ export function mergeConfiguration(userConfig) {
681
696
  if ((typeof userConfig.hdhr?.deviceId === "string") && (userConfig.hdhr.deviceId.length > 0)) {
682
697
  config.hdhr.deviceId = userConfig.hdhr.deviceId;
683
698
  }
684
- // Apply environment variable overrides (highest priority).
699
+ if ((typeof userConfig.logging?.debugFilter === "string") && (userConfig.logging.debugFilter.length > 0)) {
700
+ config.logging.debugFilter = userConfig.logging.debugFilter;
701
+ }
702
+ // Apply environment variable overrides.
685
703
  for (const settings of Object.values(CONFIG_METADATA)) {
686
704
  for (const setting of settings) {
687
705
  const envValue = setting.envVar ? process.env[setting.envVar] : undefined;
@@ -693,6 +711,14 @@ export function mergeConfiguration(userConfig) {
693
711
  }
694
712
  }
695
713
  }
714
+ // Apply CLI overrides (highest priority). These are already parsed values keyed by CONFIG_METADATA paths.
715
+ if (cliOverrides) {
716
+ for (const [overridePath, value] of Object.entries(cliOverrides)) {
717
+ if (value !== undefined) {
718
+ setNestedValue(config, overridePath, value);
719
+ }
720
+ }
721
+ }
696
722
  return config;
697
723
  }
698
724
  /* The settings "promoted" to the main Settings tab, organized into visual sections. These are the options most users might actually change. Everything else goes to
@@ -725,6 +751,7 @@ const SETTINGS_TAB_SECTIONS = [
725
751
  const ADVANCED_SECTION_META = [
726
752
  { category: "hls", displayName: "HLS" },
727
753
  { category: "logging", displayName: "Logging" },
754
+ { category: "paths", displayName: "Paths" },
728
755
  { category: "playback", displayName: "Playback" },
729
756
  { category: "recovery", displayName: "Recovery" },
730
757
  { category: "streaming", displayName: "Streaming" }
@@ -758,9 +785,7 @@ export function getSettingsTabSections() {
758
785
  return SETTINGS_TAB_SECTIONS.map((section) => ({
759
786
  displayName: section.displayName,
760
787
  id: section.id,
761
- settings: section.paths
762
- .map((p) => getSettingByPath(p))
763
- .filter((s) => s !== undefined)
788
+ settings: section.paths.map((p) => getSettingByPath(p)).filter((s) => s !== undefined)
764
789
  }));
765
790
  }
766
791
  /**
@@ -771,14 +796,10 @@ export function getUITabs() {
771
796
  // Derive settings tab paths from sections.
772
797
  const settingsTabPaths = SETTINGS_TAB_SECTIONS.flatMap((s) => s.paths);
773
798
  // Build Settings tab from sections.
774
- const settingsTabSettings = settingsTabPaths
775
- .map((p) => getSettingByPath(p))
776
- .filter((s) => s !== undefined);
799
+ const settingsTabSettings = settingsTabPaths.map((p) => getSettingByPath(p)).filter((s) => s !== undefined);
777
800
  // Build Advanced tab from everything not in Settings.
778
801
  const advancedPaths = getAllSettingPaths().filter((p) => !settingsTabPaths.includes(p));
779
- const advancedSettings = advancedPaths
780
- .map((p) => getSettingByPath(p))
781
- .filter((s) => s !== undefined);
802
+ const advancedSettings = advancedPaths.map((p) => getSettingByPath(p)).filter((s) => s !== undefined);
782
803
  return [
783
804
  {
784
805
  description: "Configure common server and streaming options.",
@@ -907,6 +928,10 @@ export function filterDefaults(config) {
907
928
  if ((typeof configDeviceId === "string") && (configDeviceId.length > 0)) {
908
929
  setNestedValue(filtered, "hdhr.deviceId", configDeviceId);
909
930
  }
931
+ const configDebugFilter = getNestedValue(config, "logging.debugFilter");
932
+ if ((typeof configDebugFilter === "string") && (configDebugFilter.length > 0)) {
933
+ setNestedValue(filtered, "logging.debugFilter", configDebugFilter);
934
+ }
910
935
  // Remove any empty nested objects that resulted from filtering.
911
936
  return removeEmptyObjects(filtered);
912
937
  }
@@ -1 +1 @@
1
- {"version":3,"file":"userConfig.js","sourceRoot":"","sources":["../../src/config/userConfig.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;AAqEpC;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAsC;IAEhE,OAAO,EAAE;QACP;YAEE,WAAW,EAAE,uDAAuD;YACpE,MAAM,EAAE,YAAY;YACpB,KAAK,EAAE,wBAAwB;YAC/B,IAAI,EAAE,wBAAwB;YAC9B,IAAI,EAAE,MAAM;SACb;QACD;YAEE,WAAW,EAAE,kIAAkI;gBAC7I,gEAAgE;YAClE,cAAc,EAAE,IAAI;YACpB,WAAW,EAAE,SAAS;YACtB,MAAM,EAAE,sBAAsB;YAC9B,KAAK,EAAE,sBAAsB;YAC7B,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,GAAG;YACR,IAAI,EAAE,qBAAqB;YAC3B,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,IAAI;SACX;KACF;IAED,IAAI,EAAE;QACJ;YAEE,WAAW,EAAE,uIAAuI;gBAClJ,gJAAgJ;gBAChJ,iDAAiD;YACnD,MAAM,EAAE,cAAc;YACtB,KAAK,EAAE,4BAA4B;YACnC,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,SAAS;SAChB;QACD;YAEE,SAAS,EAAE,cAAc;YACzB,WAAW,EAAE,4IAA4I;YACzJ,MAAM,EAAE,WAAW;YACnB,KAAK,EAAE,gBAAgB;YACvB,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,MAAM;SACb;QACD;YAEE,SAAS,EAAE,cAAc;YACzB,WAAW,EAAE,+GAA+G;YAC5H,MAAM,EAAE,oBAAoB;YAC5B,KAAK,EAAE,eAAe;YACtB,IAAI,EAAE,mBAAmB;YACzB,IAAI,EAAE,QAAQ;SACf;KACF;IAED,GAAG,EAAE;QACH;YAEE,WAAW,EAAE,8FAA8F;YAC3G,MAAM,EAAE,sBAAsB;YAC9B,KAAK,EAAE,kBAAkB;YACzB,GAAG,EAAE,EAAE;YACP,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,qBAAqB;YAC3B,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS;SAChB;QACD;YAEE,WAAW,EAAE,wFAAwF;YACrG,MAAM,EAAE,kBAAkB;YAC1B,KAAK,EAAE,cAAc;YACrB,GAAG,EAAE,EAAE;YACP,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,iBAAiB;YACvB,IAAI,EAAE,SAAS;SAChB;QACD;YAEE,WAAW,EAAE,8FAA8F;YAC3G,cAAc,EAAE,IAAI;YACpB,WAAW,EAAE,SAAS;YACtB,MAAM,EAAE,kBAAkB;YAC1B,KAAK,EAAE,cAAc;YACrB,GAAG,EAAE,MAAM;YACX,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,iBAAiB;YACvB,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,IAAI;SACX;KACF;IAED,OAAO,EAAE;QACP;YAEE,WAAW,EAAE,4IAA4I;gBACvJ,6DAA6D;YAC/D,MAAM,EAAE,gBAAgB;YACxB,KAAK,EAAE,gBAAgB;YACvB,IAAI,EAAE,sBAAsB;YAC5B,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,CAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAE;SACrD;QACD;YAEE,WAAW,EAAE,oHAAoH;YACjI,cAAc,EAAE,OAAO;YACvB,gBAAgB,EAAE,CAAC;YACnB,WAAW,EAAE,IAAI;YACjB,MAAM,EAAE,cAAc;YACtB,KAAK,EAAE,cAAc;YACrB,GAAG,EAAE,SAAS;YACd,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,iBAAiB;YACvB,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,OAAO;SACd;KACF;IAED,QAAQ,EAAE;QACR;YAEE,WAAW,EAAE,2GAA2G;YACxH,cAAc,EAAE,IAAI;YACpB,WAAW,EAAE,SAAS;YACtB,MAAM,EAAE,wBAAwB;YAChC,KAAK,EAAE,wBAAwB;YAC/B,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,IAAI;YACT,IAAI,EAAE,+BAA+B;YACrC,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,IAAI;SACX;QACD;YAEE,WAAW,EAAE,oEAAoE;YACjF,cAAc,EAAE,IAAI;YACpB,WAAW,EAAE,SAAS;YACtB,MAAM,EAAE,wBAAwB;YAChC,KAAK,EAAE,wBAAwB;YAC/B,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,GAAG;YACR,IAAI,EAAE,+BAA+B;YACrC,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,IAAI;SACX;QACD;YAEE,WAAW,EAAE,qFAAqF;YAClG,cAAc,EAAE,IAAI;YACpB,WAAW,EAAE,SAAS;YACtB,MAAM,EAAE,sBAAsB;YAC9B,KAAK,EAAE,sBAAsB;YAC7B,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,GAAG;YACR,IAAI,EAAE,6BAA6B;YACnC,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,IAAI;SACX;QACD;YAEE,WAAW,EAAE,8HAA8H;gBACzI,iCAAiC;YACnC,cAAc,EAAE,IAAI;YACpB,WAAW,EAAE,SAAS;YACtB,MAAM,EAAE,qBAAqB;YAC7B,KAAK,EAAE,qBAAqB;YAC5B,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,GAAG;YACR,IAAI,EAAE,2BAA2B;YACjC,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,IAAI;SACX;QACD;YAEE,WAAW,EAAE,6EAA6E;YAC1F,cAAc,EAAE,IAAI;YACpB,WAAW,EAAE,SAAS;YACtB,MAAM,EAAE,mBAAmB;YAC3B,KAAK,EAAE,mBAAmB;YAC1B,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,GAAG;YACR,IAAI,EAAE,0BAA0B;YAChC,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,IAAI;SACX;QACD;YAEE,WAAW,EAAE,0GAA0G;YACvH,MAAM,EAAE,kBAAkB;YAC1B,KAAK,EAAE,kBAAkB;YACzB,GAAG,EAAE,EAAE;YACP,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,yBAAyB;YAC/B,IAAI,EAAE,SAAS;SAChB;QACD;YAEE,WAAW,EAAE,qGAAqG;YAClH,cAAc,EAAE,IAAI;YACpB,WAAW,EAAE,SAAS;YACtB,MAAM,EAAE,kBAAkB;YAC1B,KAAK,EAAE,kBAAkB;YACzB,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,GAAG;YACR,IAAI,EAAE,0BAA0B;YAChC,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,IAAI;SACX;QACD;YAEE,WAAW,EAAE,+FAA+F;YAC5G,cAAc,EAAE,KAAK;YACrB,WAAW,EAAE,SAAS;YACtB,MAAM,EAAE,oBAAoB;YAC5B,KAAK,EAAE,oBAAoB;YAC3B,GAAG,EAAE,OAAO;YACZ,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,2BAA2B;YACjC,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,IAAI;SACX;QACD;YAEE,WAAW,EAAE,gEAAgE;YAC7E,cAAc,EAAE,IAAI;YACpB,WAAW,EAAE,SAAS;YACtB,MAAM,EAAE,qBAAqB;YAC7B,KAAK,EAAE,qBAAqB;YAC5B,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,GAAG;YACR,IAAI,EAAE,4BAA4B;YAClC,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,IAAI;SACX;QACD;YAEE,WAAW,EAAE,wDAAwD;YACrE,MAAM,EAAE,uBAAuB;YAC/B,KAAK,EAAE,uBAAuB;YAC9B,GAAG,EAAE,EAAE;YACP,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,8BAA8B;YACpC,IAAI,EAAE,SAAS;SAChB;QACD;YAEE,WAAW,EAAE,iFAAiF;YAC9F,MAAM,EAAE,iBAAiB;YACzB,KAAK,EAAE,iBAAiB;YACxB,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,IAAI;YACT,IAAI,EAAE,yBAAyB;YAC/B,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,SAAS;SAChB;QACD;YAEE,WAAW,EAAE,kGAAkG;YAC/G,cAAc,EAAE,IAAI;YACpB,WAAW,EAAE,SAAS;YACtB,MAAM,EAAE,6BAA6B;YACrC,KAAK,EAAE,6BAA6B;YACpC,GAAG,EAAE,MAAM;YACX,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,oCAAoC;YAC1C,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,IAAI;SACX;KACF;IAED,QAAQ,EAAE;QACR;YAEE,WAAW,EAAE,2EAA2E;YACxF,cAAc,EAAE,IAAI;YACpB,WAAW,EAAE,SAAS;YACtB,MAAM,EAAE,gBAAgB;YACxB,KAAK,EAAE,gBAAgB;YACvB,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,wBAAwB;YAC9B,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,IAAI;SACX;QACD;YAEE,WAAW,EAAE,yEAAyE;YACtF,MAAM,EAAE,2BAA2B;YACnC,KAAK,EAAE,2BAA2B;YAClC,GAAG,EAAE,GAAG;YACR,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,kCAAkC;YACxC,IAAI,EAAE,SAAS;SAChB;QACD;YAEE,WAAW,EAAE,2DAA2D;YACxE,cAAc,EAAE,KAAK;YACrB,WAAW,EAAE,SAAS;YACtB,MAAM,EAAE,wBAAwB;YAChC,KAAK,EAAE,wBAAwB;YAC/B,GAAG,EAAE,OAAO;YACZ,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,+BAA+B;YACrC,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,IAAI;SACX;QACD;YAEE,WAAW,EAAE,oFAAoF;YACjG,cAAc,EAAE,IAAI;YACpB,WAAW,EAAE,SAAS;YACtB,MAAM,EAAE,mBAAmB;YAC3B,KAAK,EAAE,mBAAmB;YAC1B,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,IAAI;YACT,IAAI,EAAE,0BAA0B;YAChC,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,IAAI;SACX;QACD;YAEE,WAAW,EAAE,yFAAyF;YACtG,cAAc,EAAE,IAAI;YACpB,WAAW,EAAE,SAAS;YACtB,MAAM,EAAE,6BAA6B;YACrC,KAAK,EAAE,6BAA6B;YACpC,GAAG,EAAE,MAAM;YACX,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,mCAAmC;YACzC,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,IAAI;SACX;QACD;YAEE,WAAW,EAAE,wGAAwG;YACrH,cAAc,EAAE,IAAI;YACpB,WAAW,EAAE,SAAS;YACtB,MAAM,EAAE,yBAAyB;YACjC,KAAK,EAAE,yBAAyB;YAChC,GAAG,EAAE,MAAM;YACX,GAAG,EAAE,IAAI;YACT,IAAI,EAAE,+BAA+B;YACrC,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,IAAI;SACX;KACF;IAED,MAAM,EAAE;QACN;YAEE,WAAW,EAAE,+FAA+F;YAC5G,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,MAAM;SACb;QACD;YAEE,WAAW,EAAE,4EAA4E;YACzF,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,MAAM;YACb,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,MAAM;SACb;KACF;IAED,SAAS,EAAE;QACT;YAEE,WAAW,EAAE,oIAAoI;gBAC/I,iFAAiF;YACnF,cAAc,EAAE,iIAAiI;gBAC/I,mHAAmH;YACrH,MAAM,EAAE,cAAc;YACtB,KAAK,EAAE,cAAc;YACrB,IAAI,EAAE,uBAAuB;YAC7B,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,CAAE,QAAQ,EAAE,QAAQ,CAAE;SACpC;QACD;YAEE,WAAW,EAAE,wGAAwG;YACrH,MAAM,EAAE,gBAAgB;YACxB,KAAK,EAAE,gBAAgB;YACvB,IAAI,EAAE,yBAAyB;YAC/B,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,iBAAiB,EAAE;SACjC;QACD;YAEE,WAAW,EAAE,kIAAkI;YAC/I,cAAc,EAAE,IAAI;YACpB,WAAW,EAAE,MAAM;YACnB,MAAM,EAAE,eAAe;YACvB,KAAK,EAAE,eAAe;YACtB,GAAG,EAAE,MAAM;YACX,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,8BAA8B;YACpC,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,KAAK;SACZ;QACD;YAEE,WAAW,EAAE,gFAAgF;YAC7F,MAAM,EAAE,YAAY;YACpB,KAAK,EAAE,YAAY;YACnB,GAAG,EAAE,EAAE;YACP,GAAG,EAAE,EAAE;YACP,IAAI,EAAE,qBAAqB;YAC3B,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,KAAK;SACZ;QACD;YAEE,WAAW,EAAE,6EAA6E;YAC1F,MAAM,EAAE,wBAAwB;YAChC,KAAK,EAAE,wBAAwB;YAC/B,GAAG,EAAE,GAAG;YACR,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,gCAAgC;YACtC,IAAI,EAAE,SAAS;SAChB;QACD;YAEE,WAAW,EAAE,qDAAqD;YAClE,MAAM,EAAE,iBAAiB;YACzB,KAAK,EAAE,wBAAwB;YAC/B,GAAG,EAAE,EAAE;YACP,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,gCAAgC;YACtC,IAAI,EAAE,SAAS;SAChB;QACD;YAEE,WAAW,EAAE,yEAAyE;YACtF,cAAc,EAAE,IAAI;YACpB,WAAW,EAAE,SAAS;YACtB,MAAM,EAAE,aAAa;YACrB,KAAK,EAAE,oBAAoB;YAC3B,GAAG,EAAE,MAAM;YACX,GAAG,EAAE,IAAI;YACT,IAAI,EAAE,6BAA6B;YACnC,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,IAAI;SACX;QACD;YAEE,WAAW,EAAE,6HAA6H;YAC1I,cAAc,EAAE,OAAO;YACvB,WAAW,EAAE,MAAM;YACnB,MAAM,EAAE,eAAe;YACvB,KAAK,EAAE,eAAe;YACtB,GAAG,EAAE,QAAQ;YACb,GAAG,EAAE,MAAM;YACX,IAAI,EAAE,8BAA8B;YACpC,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,KAAK;SACZ;QACD;YAEE,WAAW,EAAE,6DAA6D;YAC1E,cAAc,EAAE,IAAI;YACpB,WAAW,EAAE,SAAS;YACtB,MAAM,EAAE,eAAe;YACvB,KAAK,EAAE,eAAe;YACtB,GAAG,EAAE,MAAM;YACX,GAAG,EAAE,IAAI;YACT,IAAI,EAAE,wBAAwB;YAC9B,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,IAAI;SACX;KACF;CACF,CAAC;AA+IF;GACG;AAEH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;AACtD,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AAEzD;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAE/B,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;GACG;AAEH;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAElC,IAAI,CAAC;QAEH,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAEnE,IAAI,CAAC;YAEH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAe,CAAC;YAEjD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;QACvC,CAAC;QAAC,OAAM,UAAU,EAAE,CAAC;YAEnB,MAAM,OAAO,GAAG,CAAC,UAAU,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAExF,GAAG,CAAC,IAAI,CAAC,4DAA4D,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;YAEhG,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC;QACtE,CAAC;IACH,CAAC;IAAC,OAAM,KAAK,EAAE,CAAC;QAEd,qDAAqD;QACrD,IAAI,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAEtD,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;QAC3C,CAAC;QAED,4CAA4C;QAC5C,GAAG,CAAC,IAAI,CAAC,2DAA2D,EAAE,cAAc,EAAE,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAEhJ,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IAC3C,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAkB;IAErD,gCAAgC;IAChC,MAAM,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAErD,uDAAuD;IACvD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAEhD,MAAM,UAAU,CAAC,SAAS,CAAC,cAAc,EAAE,OAAO,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;IAEpE,GAAG,CAAC,IAAI,CAAC,4BAA4B,EAAE,cAAc,CAAC,CAAC;AACzD,CAAC;AAED;GACG;AAEH;;;GAGG;AACH,MAAM,UAAU,eAAe;IAE7B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE5C,KAAI,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;QAErD,KAAI,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAE9B,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAE1E,IAAG,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAE1B,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;GACG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAW;IAE9B,OAAO,EAAE;QAEP,cAAc,EAAE,IAAI;QACpB,WAAW,EAAE,IAAI;KAClB;IAED,QAAQ,EAAE;QAER,kBAAkB,EAAE,EAAE;QACtB,gBAAgB,EAAE,EAAE;KACrB;IAED,IAAI,EAAE;QAEJ,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,IAAI;QACb,YAAY,EAAE,WAAW;QACzB,IAAI,EAAE,IAAI;KACX;IAED,GAAG,EAAE;QAEH,WAAW,EAAE,KAAK;QAClB,WAAW,EAAE,EAAE;QACf,eAAe,EAAE,CAAC;KACnB;IAED,OAAO,EAAE;QAEP,YAAY,EAAE,QAAQ;QACtB,OAAO,EAAE,OAAO;KACjB;IAED,KAAK,EAAE;QAGL,iBAAiB,EAAE,YAAY;QAC/B,gBAAgB,EAAE,WAAW;KAC9B;IAED,QAAQ,EAAE;QAGR,oBAAoB,EAAE,KAAK;QAC3B,oBAAoB,EAAE,IAAI;QAC1B,kBAAkB,EAAE,IAAI;QACxB,gBAAgB,EAAE,IAAI;QACtB,eAAe,EAAE,IAAI;QACrB,cAAc,EAAE,CAAC;QACjB,eAAe,EAAE,IAAI;QACrB,gBAAgB,EAAE,MAAM;QACxB,iBAAiB,EAAE,IAAI;QACvB,mBAAmB,EAAE,CAAC;QACtB,cAAc,EAAE,GAAG;QACnB,yBAAyB,EAAE,KAAK;KACjC;IAED,QAAQ,EAAE;QAGR,aAAa,EAAE,IAAI;QACnB,uBAAuB,EAAE,EAAE;QAC3B,oBAAoB,EAAE,MAAM;QAC5B,eAAe,EAAE,IAAI;QACrB,wBAAwB,EAAE,KAAK;QAC/B,oBAAoB,EAAE,KAAK;KAC5B;IAED,MAAM,EAAE;QAGN,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,IAAI;KACX;IAED,SAAS,EAAE;QAET,kBAAkB,EAAE,MAAM;QAC1B,WAAW,EAAE,QAAQ;QACrB,SAAS,EAAE,EAAE;QACb,oBAAoB,EAAE,EAAE;QACxB,oBAAoB,EAAE,CAAC;QACvB,iBAAiB,EAAE,KAAK;QACxB,aAAa,EAAE,WAAW;QAC1B,kBAAkB,EAAE,QAAQ;QAC5B,YAAY,EAAE,KAAK;KACpB;CACF,CAAC;AAEF;;;;;GAKG;AACH,SAAS,aAAa,CAAC,KAAa,EAAE,IAA6B;IAEjE,QAAO,IAAI,EAAE,CAAC;QAEZ,KAAK,SAAS,CAAC,CAAC,CAAC;YAEf,yDAAyD;YACzD,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;YAElC,OAAO,CAAC,KAAK,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;QACpE,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YAEb,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;YAE9B,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;QAC7C,CAAC;QAED,KAAK,SAAS,CAAC;QACf,KAAK,MAAM,CAAC,CAAC,CAAC;YAEZ,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAEhC,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;QAC7C,CAAC;QAED,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC,CAAC,CAAC;YAEZ,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,CAAC,CAAC,CAAC;YAER,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,GAAY,EAAE,WAAmB;IAE9D,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,OAAO,GAAY,GAAG,CAAC;IAE3B,KAAI,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAExB,IAAG,CAAC,OAAO,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,IAAI,CAAC,OAAO,OAAO,KAAK,QAAQ,CAAC,EAAE,CAAC;YAElF,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,GAAI,OAAmC,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,GAA4B,EAAE,WAAmB,EAAE,KAAc;IAE9F,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,OAAO,GAAG,GAAG,CAAC;IAElB,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAE3C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAEtB,IAAG,OAAO,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YAE/B,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACrB,CAAC;QAED,OAAO,GAAG,OAAO,CAAC,IAAI,CAA4B,CAAC;IACrD,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAC3C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAsB;IAEvD,sCAAsC;IACtC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAW,CAAC;IAE9D,4BAA4B;IAC5B,KAAI,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;QAErD,KAAI,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAE9B,MAAM,SAAS,GAAG,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YAE3D,IAAG,SAAS,KAAK,SAAS,EAAE,CAAC;gBAE3B,cAAc,CAAC,MAA4C,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACxF,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,IAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,kBAAkB,CAAC,EAAE,CAAC;QAE1D,MAAM,CAAC,QAAQ,CAAC,kBAAkB,GAAG,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IACnF,CAAC;IAED,IAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,gBAAgB,CAAC,EAAE,CAAC;QAExD,MAAM,CAAC,QAAQ,CAAC,gBAAgB,GAAG,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAC/E,CAAC;IAED,IAAG,CAAC,OAAO,UAAU,CAAC,IAAI,EAAE,QAAQ,KAAK,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;QAE5F,MAAM,CAAC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;IAClD,CAAC;IAED,2DAA2D;IAC3D,KAAI,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;QAErD,KAAI,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAE9B,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAE1E,IAAG,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAE1B,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBAE1D,IAAG,WAAW,KAAK,SAAS,EAAE,CAAC;oBAE7B,cAAc,CAAC,MAA4C,EAAE,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBAC1F,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AA6DD;;GAEG;AACH,MAAM,qBAAqB,GAA2D;IAEpF;QAEE,WAAW,EAAE,QAAQ;QACrB,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,CAAE,aAAa,EAAE,aAAa,CAAE;KACxC;IACD;QAEE,WAAW,EAAE,SAAS;QACtB,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,CAAE,wBAAwB,EAAE,qBAAqB,CAAE;KAC3D;IACD;QAEE,WAAW,EAAE,SAAS;QACtB,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,CAAE,uBAAuB,EAAE,yBAAyB,EAAE,8BAA8B,EAAE,8BAA8B,EAAE,qBAAqB,CAAE;KACrJ;IACD;QAEE,WAAW,EAAE,kBAAkB;QAC/B,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,CAAE,cAAc,EAAE,WAAW,EAAE,mBAAmB,CAAE;KAC5D;CACF,CAAC;AAEF;GACG;AACH,MAAM,qBAAqB,GAAgD;IAEzE,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE;IACvC,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE;IAC/C,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE;IACjD,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE;IACjD,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE;CACpD,CAAC;AAEF;;;GAGG;AACH,SAAS,kBAAkB;IAEzB,OAAO,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAClE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,WAAmB;IAElD,KAAI,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;QAErD,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;QAE3D,IAAG,KAAK,EAAE,CAAC;YAET,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB;IAEpC,OAAO,qBAAqB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAE7C,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,QAAQ,EAAE,OAAO,CAAC,KAAK;aACpB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;aAC/B,MAAM,CAAC,CAAC,CAAC,EAAwB,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC;KACxD,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS;IAEvB,2CAA2C;IAC3C,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAEvE,oCAAoC;IACpC,MAAM,mBAAmB,GAAG,gBAAgB;SACzC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;SAC/B,MAAM,CAAC,CAAC,CAAC,EAAwB,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IAExD,sDAAsD;IACtD,MAAM,aAAa,GAAG,kBAAkB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACxF,MAAM,gBAAgB,GAAG,aAAa;SACnC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;SAC/B,MAAM,CAAC,CAAC,CAAC,EAAwB,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IAExD,OAAO;QACL;YAEE,WAAW,EAAE,gDAAgD;YAC7D,WAAW,EAAE,UAAU;YACvB,EAAE,EAAE,UAAU;YACd,QAAQ,EAAE,mBAAmB;SAC9B;QACD;YAEE,WAAW,EAAE,gEAAgE;YAC7E,WAAW,EAAE,UAAU;YACvB,EAAE,EAAE,UAAU;YACd,QAAQ,EAAE,gBAAgB;SAC3B;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IAEjC,2CAA2C;IAC3C,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAEvE,2DAA2D;IAC3D,MAAM,aAAa,GAAG,kBAAkB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAExF,0CAA0C;IAC1C,MAAM,UAAU,GAAG,IAAI,GAAG,EAA6B,CAAC;IAExD,KAAI,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QAEhC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAEvC,IAAG,OAAO,EAAE,CAAC;YAEX,IAAG,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAE7B,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC/B,CAAC;YAED,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,2DAA2D;IAC3D,OAAO,qBAAqB;SACzB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC/C,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAEd,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,EAAE,EAAE,IAAI,CAAC,QAAQ;QACjB,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;KAC9C,CAAC,CAAC,CAAC;AACR,CAAC;AAED;;GAEG;AAEH;;;;;GAKG;AACH,SAAS,kBAAkB,CAAC,GAA4B;IAEtD,MAAM,MAAM,GAA4B,EAAE,CAAC;IAE3C,KAAI,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAElC,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAEvB,oCAAoC;QACpC,IAAG,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAE5E,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAgC,CAAC,CAAC;YAErE,mDAAmD;YACnD,IAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAEnC,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;YACxB,CAAC;QACH,CAAC;aAAM,CAAC;YAEN,mCAAmC;YACnC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc,EAAE,YAAqB;IAEpE,+BAA+B;IAC/B,IAAG,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,EAAE,CAAC;QAE7C,OAAO,CAAC,YAAY,KAAK,IAAI,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC;IACjE,CAAC;IAED,IAAG,CAAC,YAAY,KAAK,IAAI,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS,CAAC,EAAE,CAAC;QAE3D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,mIAAmI;IACnI,OAAO,MAAM,CAAC,KAAkC,CAAC,KAAK,MAAM,CAAC,YAAyC,CAAC,CAAC;AAC1G,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,MAAkB;IAE/C,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAE7C,mFAAmF;IACnF,KAAI,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;QAErD,KAAI,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAE9B,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YAEnD,yDAAyD;YACzD,IAAG,KAAK,KAAK,SAAS,EAAE,CAAC;gBAEvB,SAAS;YACX,CAAC;YAED,MAAM,YAAY,GAAG,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YAE5D,sDAAsD;YACtD,IAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,CAAC;gBAE1C,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,sBAAsB,GAAG,cAAc,CAAC,MAAM,EAAE,6BAA6B,CAAyB,CAAC;IAE7G,IAAG,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,sBAAsB,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;QAEhF,cAAc,CAAC,QAAQ,EAAE,6BAA6B,EAAE,sBAAsB,CAAC,CAAC;IAClF,CAAC;IAED,MAAM,sBAAsB,GAAG,cAAc,CAAC,MAAM,EAAE,2BAA2B,CAAyB,CAAC;IAE3G,IAAG,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,sBAAsB,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;QAEhF,cAAc,CAAC,QAAQ,EAAE,2BAA2B,EAAE,sBAAsB,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,cAAc,GAAG,cAAc,CAAC,MAAM,EAAE,eAAe,CAAuB,CAAC;IAErF,IAAG,CAAC,OAAO,cAAc,KAAK,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;QAEvE,cAAc,CAAC,QAAQ,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;IAC5D,CAAC;IAED,gEAAgE;IAChE,OAAO,kBAAkB,CAAC,QAAQ,CAAe,CAAC;AACpD,CAAC"}
1
+ {"version":3,"file":"userConfig.js","sourceRoot":"","sources":["../../src/config/userConfig.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1 +1,11 @@
1
- export {};
1
+ /**
2
+ * Result of parsing command-line arguments. CLI flags have the highest priority in the configuration merge order.
3
+ */
4
+ export interface ParsedArgs {
5
+ chromeDataDir?: string;
6
+ consoleLogging: boolean;
7
+ dataDir?: string;
8
+ debugLogging: boolean;
9
+ logFile?: string;
10
+ port?: number;
11
+ }
package/dist/index.js CHANGED
@@ -3,10 +3,11 @@
3
3
  * index.ts: Entry point for PrismCast.
4
4
  */
5
5
  import { LOG, formatError, getPackageVersion, initDebugFilter, setDebugLogging } from "./utils/index.js";
6
- import { CONFIG } from "./config/index.js";
7
6
  import { flushLogBufferSync } from "./utils/fileLogger.js";
8
7
  import { handleServiceCommand } from "./service/index.js";
8
+ import { initializeDataDir } from "./config/paths.js";
9
9
  import { killStaleChrome } from "./browser/index.js";
10
+ import path from "node:path";
10
11
  import { startServer } from "./app.js";
11
12
  /* These handlers catch unhandled promise rejections and uncaught exceptions to prevent the process from crashing. For a livestreaming server, process stability is
12
13
  * critical - a single unhandled error should not terminate all active streams. The handlers log the error and allow the process to continue. Individual stream
@@ -28,38 +29,158 @@ function printUsage() {
28
29
  console.log("Usage: prismcast [command] [options]");
29
30
  console.log("");
30
31
  console.log("Commands:");
31
- console.log(" service Manage PrismCast as a system service");
32
- console.log(" Run 'prismcast service --help' for details");
32
+ console.log(" service Manage PrismCast as a system service");
33
+ console.log(" Run 'prismcast service --help' for details");
34
+ console.log(" upgrade Upgrade PrismCast to the latest version");
35
+ console.log(" Run 'prismcast upgrade --help' for details");
33
36
  console.log("");
34
37
  console.log("Options:");
35
- console.log(" -c, --console Log to console instead of file (for Docker or debugging)");
36
- console.log(" -d, --debug Enable debug logging (verbose output for troubleshooting)");
37
- console.log(" -h, --help Show this help message");
38
- console.log(" -p, --port <port> Set server port (default: 5589)");
39
- console.log(" -v, --version Show version number");
38
+ console.log(" -c, --console Log to console instead of file (for Docker or debugging)");
39
+ console.log(" -d, --debug Enable debug logging (verbose output for troubleshooting)");
40
+ console.log(" -h, --help Show this help message");
41
+ console.log(" -p, --port <port> Set server port (default: 5589)");
42
+ console.log(" -v, --version Show version number");
43
+ console.log(" --chrome-data-dir <path> Set Chrome profile data directory (default: <data-dir>/chromedata)");
44
+ console.log(" --data-dir <path> Set data directory (default: ~/.prismcast)");
45
+ console.log(" --list-env List all environment variables");
46
+ console.log(" --log-file <path> Set log file path (default: <data-dir>/prismcast.log)");
40
47
  console.log("");
41
48
  console.log("If no command is specified, starts the PrismCast server.");
42
49
  console.log("");
43
- console.log("Environment Variables:");
44
- console.log(" PORT HTTP server port");
45
- console.log(" HOST HTTP server bind address");
46
- console.log(" QUALITY_PRESET Video quality preset (480p, 720p, 1080p, 1080p-high, 4k)");
47
- console.log(" VIDEO_BITRATE Video bitrate (bps)");
48
- console.log(" AUDIO_BITRATE Audio bitrate (bps)");
49
- console.log(" FRAME_RATE Target frame rate");
50
- console.log(" CHROME_BIN Path to Chrome executable");
51
- console.log(" LOG_MAX_SIZE Maximum log file size in bytes (default: 1048576)");
52
- console.log(" PRISMCAST_DEBUG Debug category filter (e.g., 'tuning:hulu', 'recovery', '*,-streaming:segmenter')");
50
+ console.log("Common Environment Variables:");
51
+ console.log(" AUDIO_BITRATE Audio bitrate (bps)");
52
+ console.log(" CAPTURE_MODE Capture mode: ffmpeg (recommended) or native");
53
+ console.log(" CHROME_BIN Path to Chrome executable");
54
+ console.log(" FRAME_RATE Target frame rate");
55
+ console.log(" HOST HTTP server bind address");
56
+ console.log(" LOG_MAX_SIZE Maximum log file size in bytes (default: 1048576)");
57
+ console.log(" PORT HTTP server port");
58
+ console.log(" PRISMCAST_CHROME_DATA_DIR Chrome profile data directory path");
59
+ console.log(" PRISMCAST_DATA_DIR Data directory path (default: ~/.prismcast)");
60
+ console.log(" PRISMCAST_DEBUG Debug category filter (e.g., 'tuning:hulu', 'recovery', '*,-streaming:segmenter')");
61
+ console.log(" PRISMCAST_LOG_FILE Log file path");
62
+ console.log(" QUALITY_PRESET Video quality preset (480p, 720p, 720p-high, 1080p, 1080p-high, 4k)");
63
+ console.log(" VIDEO_BITRATE Video bitrate (bps)");
64
+ console.log("");
65
+ console.log(" Run 'prismcast --list-env' for a complete list of all environment variables.");
66
+ /* eslint-enable no-console */
67
+ }
68
+ /**
69
+ * Prints a complete listing of all environment variables organized by category. Generates output dynamically from CONFIG_METADATA so it is always accurate. Uses a
70
+ * dynamic import to avoid the circular dependency: index.ts -> config/userConfig.js -> utils/index.js -> utils/retry.js -> config/index.js -> config/userConfig.js.
71
+ */
72
+ async function printEnvironmentVariables() {
73
+ const { CONFIG_METADATA, DEFAULTS, getNestedValue } = await import("./config/userConfig.js");
74
+ /* eslint-disable no-console */
75
+ // Category ordering: server first (most commonly configured), then alphabetical, with Special last.
76
+ const categoryOrder = [
77
+ { displayName: "Server", key: "server" },
78
+ { displayName: "Browser", key: "browser" },
79
+ { displayName: "HDHomeRun", key: "hdhr" },
80
+ { displayName: "HLS", key: "hls" },
81
+ { displayName: "Logging", key: "logging" },
82
+ { displayName: "Paths", key: "paths" },
83
+ { displayName: "Playback", key: "playback" },
84
+ { displayName: "Recovery", key: "recovery" },
85
+ { displayName: "Streaming", key: "streaming" }
86
+ ];
87
+ // Dynamic default descriptions for null path settings that resolve at runtime rather than from DEFAULTS.
88
+ const dynamicDefaults = {
89
+ "browser.executablePath": "autodetect",
90
+ "paths.chromeDataDir": "<data-dir>/chromedata",
91
+ "paths.logFile": "<data-dir>/prismcast.log"
92
+ };
93
+ console.log("PrismCast Environment Variables");
94
+ console.log("");
95
+ console.log("All settings can also be configured via the web UI at /config or config.json.");
96
+ console.log("Priority: CLI flags > environment variables > config.json > defaults.");
97
+ for (const category of categoryOrder) {
98
+ const settings = CONFIG_METADATA[category.key];
99
+ // Filter to settings that have an environment variable.
100
+ const envSettings = settings.filter((s) => s.envVar !== null);
101
+ if (envSettings.length === 0) {
102
+ continue;
103
+ }
104
+ console.log("");
105
+ console.log(category.displayName + ":");
106
+ let first = true;
107
+ for (const setting of envSettings) {
108
+ // Type narrowing: envSettings is already filtered to non-null envVar values, but TypeScript can't narrow through .filter() callbacks.
109
+ const envVar = setting.envVar;
110
+ if (!envVar) {
111
+ continue;
112
+ }
113
+ if (!first) {
114
+ console.log("");
115
+ }
116
+ first = false;
117
+ console.log(" " + envVar);
118
+ // Truncate description to first sentence for brevity. Full descriptions are available in the web UI.
119
+ const desc = setting.description;
120
+ const periodSpace = desc.indexOf(". ");
121
+ const firstSentence = (periodSpace !== -1) ? desc.slice(0, periodSpace + 1) : desc;
122
+ console.log(" " + firstSentence);
123
+ // Format default value with appropriate context for the setting type.
124
+ const dynamicDefault = dynamicDefaults[setting.path];
125
+ let defaultStr;
126
+ if (dynamicDefault) {
127
+ defaultStr = dynamicDefault;
128
+ }
129
+ else {
130
+ const defaultValue = getNestedValue(DEFAULTS, setting.path);
131
+ defaultStr = String(defaultValue);
132
+ if ((typeof defaultValue === "number") && setting.unit) {
133
+ defaultStr = defaultStr + " (" + setting.unit + ")";
134
+ }
135
+ }
136
+ console.log(" Default: " + defaultStr);
137
+ }
138
+ }
139
+ // Special environment variables that are not part of CONFIG_METADATA. PRISMCAST_DATA_DIR is resolved before config.json is loaded (chicken-and-egg), so it cannot
140
+ // be in config.json. PRISMCAST_DEBUG is a runtime-only setting parsed in the entry point.
141
+ console.log("");
142
+ console.log("Special:");
143
+ console.log(" PRISMCAST_DATA_DIR");
144
+ console.log(" Data directory path. Must be an absolute path.");
145
+ console.log(" Default: ~/.prismcast");
146
+ console.log("");
147
+ console.log(" PRISMCAST_DEBUG");
148
+ console.log(" Debug category filter (e.g., 'tuning:hulu', 'recovery', '*,-streaming:segmenter').");
149
+ console.log(" Default: (disabled)");
53
150
  /* eslint-enable no-console */
54
151
  }
55
152
  /**
56
- * Parses command-line arguments and applies overrides to the configuration.
57
- * @returns Parsed argument flags.
153
+ * Validates that a path argument is absolute. Prints an error and exits if relative.
154
+ * @param flag - The CLI flag name for the error message.
155
+ * @param value - The path value to validate.
156
+ */
157
+ function requireAbsolutePath(flag, value) {
158
+ // Guard against missing values when the flag is the last argument. TypeScript types array index access as `string`, but at runtime `args[++i]` returns `undefined`
159
+ // when out of bounds. Checking for falsy catches both `undefined` and empty string.
160
+ if (!value) {
161
+ // eslint-disable-next-line no-console
162
+ console.error("Error: " + flag + " requires a path argument.");
163
+ process.exit(1);
164
+ }
165
+ if (!path.isAbsolute(value)) {
166
+ // eslint-disable-next-line no-console
167
+ console.error("Error: " + flag + " requires an absolute path, got: " + value);
168
+ process.exit(1);
169
+ }
170
+ }
171
+ /**
172
+ * Parses command-line arguments into a structured result. Values are stored in ParsedArgs rather than written directly to CONFIG, so that the configuration merge
173
+ * system can apply CLI overrides at the correct priority level (CLI > env > config.json > defaults).
174
+ * @returns Parsed argument flags and values.
58
175
  */
59
176
  function parseArgs() {
60
177
  const args = process.argv.slice(2);
178
+ let chromeDataDir;
61
179
  let consoleLogging = false;
180
+ let dataDir;
62
181
  let debugLogging = false;
182
+ let logFile;
183
+ let port;
63
184
  for (let i = 0; i < args.length; i++) {
64
185
  const arg = args[i];
65
186
  if ((arg === "-c") || (arg === "--console")) {
@@ -73,23 +194,38 @@ function parseArgs() {
73
194
  process.exit(0);
74
195
  }
75
196
  if ((arg === "-p") || (arg === "--port")) {
76
- const port = parseInt(args[++i]);
77
- if (!isNaN(port)) {
78
- CONFIG.server.port = port;
197
+ const parsed = parseInt(args[++i]);
198
+ if (!isNaN(parsed)) {
199
+ port = parsed;
79
200
  }
80
201
  }
202
+ if (arg === "--data-dir") {
203
+ dataDir = args[++i];
204
+ requireAbsolutePath("--data-dir", dataDir);
205
+ }
206
+ if (arg === "--chrome-data-dir") {
207
+ chromeDataDir = args[++i];
208
+ requireAbsolutePath("--chrome-data-dir", chromeDataDir);
209
+ }
210
+ if (arg === "--log-file") {
211
+ logFile = args[++i];
212
+ requireAbsolutePath("--log-file", logFile);
213
+ }
81
214
  if ((arg === "-v") || (arg === "--version")) {
82
215
  // eslint-disable-next-line no-console
83
216
  console.log("PrismCast v" + getPackageVersion());
84
217
  process.exit(0);
85
218
  }
86
219
  }
87
- return { consoleLogging, debugLogging };
220
+ return { chromeDataDir, consoleLogging, dataDir, debugLogging, logFile, port };
88
221
  }
89
222
  /* Check for subcommands before parsing flags. Subcommands are handled separately and exit after completion.
90
223
  */
91
224
  const rawArgs = process.argv.slice(2);
92
225
  const subcommand = rawArgs[0];
226
+ // Initialize the data directory early so that all code paths (server and service subcommands) can resolve paths. For service subcommands, only the env var and
227
+ // default are available since --data-dir is a server flag. For the server path, parseArgs() may override this with a CLI flag.
228
+ initializeDataDir();
93
229
  // Handle the 'service' subcommand for managing PrismCast as a system service.
94
230
  if (subcommand === "service") {
95
231
  handleServiceCommand(rawArgs.slice(1)).then((exitCode) => {
@@ -100,11 +236,37 @@ if (subcommand === "service") {
100
236
  process.exit(1);
101
237
  });
102
238
  }
239
+ else if (subcommand === "upgrade") {
240
+ // Handle the 'upgrade' subcommand for self-upgrading PrismCast. Uses a dynamic import to keep the upgrade module out of the main server's import graph.
241
+ import("./upgrade/index.js").then(async ({ handleUpgradeCommand }) => handleUpgradeCommand(rawArgs.slice(1))).then((exitCode) => {
242
+ process.exit(exitCode);
243
+ }).catch((error) => {
244
+ // eslint-disable-next-line no-console
245
+ console.error("Upgrade command failed: " + formatError(error));
246
+ process.exit(1);
247
+ });
248
+ }
249
+ else if (rawArgs.includes("--list-env")) {
250
+ // Handle --list-env at the top level (like the service subcommand) to avoid starting the server. The dynamic import inside printEnvironmentVariables() is
251
+ // required because a static import of config/userConfig.js creates a circular dependency through the utils barrel.
252
+ printEnvironmentVariables().then(() => {
253
+ process.exit(0);
254
+ }).catch((error) => {
255
+ // eslint-disable-next-line no-console
256
+ console.error("Error: " + formatError(error));
257
+ process.exit(1);
258
+ });
259
+ }
103
260
  else {
104
261
  /* The main entry point parses command-line arguments, starts the server, and handles any fatal errors that occur during initialization. If startup fails, we exit
105
262
  * with a non-zero code to signal the failure to process managers.
106
263
  */
107
264
  const parsedArgs = parseArgs();
265
+ // Re-initialize the data directory with the CLI flag if provided. The initial initializeDataDir() call above used only the env var / default, but the CLI
266
+ // --data-dir flag takes precedence over both.
267
+ if (parsedArgs.dataDir) {
268
+ initializeDataDir(parsedArgs.dataDir);
269
+ }
108
270
  // Enable debug logging before starting the server so debug messages during startup are captured. The PRISMCAST_DEBUG environment variable takes precedence over
109
271
  // the --debug CLI flag, allowing fine-grained category selection.
110
272
  const debugEnv = process.env.PRISMCAST_DEBUG;
@@ -136,7 +298,7 @@ else {
136
298
  // Best-effort cleanup. If pkill fails for any reason, the process is exiting anyway.
137
299
  }
138
300
  });
139
- startServer(parsedArgs.consoleLogging).catch((error) => {
301
+ startServer(parsedArgs).catch((error) => {
140
302
  LOG.error("Fatal startup error occurred: %s.", formatError(error));
141
303
  process.exit(1);
142
304
  });