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.
- package/dist/app.d.ts +3 -2
- package/dist/app.js +32 -17
- package/dist/app.js.map +1 -1
- package/dist/browser/channelSelection.d.ts +3 -2
- package/dist/browser/channelSelection.js +43 -19
- package/dist/browser/channelSelection.js.map +1 -1
- package/dist/browser/index.d.ts +9 -13
- package/dist/browser/index.js +65 -75
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/tuning/hulu.js +613 -13
- package/dist/browser/tuning/hulu.js.map +1 -1
- package/dist/browser/tuning/sling.js +1 -1
- package/dist/browser/tuning/thumbnailRow.js +69 -71
- package/dist/browser/tuning/thumbnailRow.js.map +1 -1
- package/dist/browser/tuning/tileClick.js +111 -77
- package/dist/browser/tuning/tileClick.js.map +1 -1
- package/dist/browser/tuning/youtubeTv.js +5 -5
- package/dist/browser/tuning/youtubeTv.js.map +1 -1
- package/dist/browser/video.d.ts +3 -10
- package/dist/browser/video.js +91 -10
- package/dist/browser/video.js.map +1 -1
- package/dist/config/index.d.ts +9 -3
- package/dist/config/index.js +28 -28
- package/dist/config/index.js.map +1 -1
- package/dist/config/paths.d.ts +41 -0
- package/dist/config/paths.js +88 -0
- package/dist/config/paths.js.map +1 -0
- package/dist/config/providers.js +1 -1
- package/dist/config/sites.js +30 -13
- package/dist/config/sites.js.map +1 -1
- package/dist/config/userChannels.d.ts +1 -1
- package/dist/config/userChannels.js +10 -13
- package/dist/config/userChannels.js.map +1 -1
- package/dist/config/userConfig.d.ts +14 -7
- package/dist/config/userConfig.js +59 -34
- package/dist/config/userConfig.js.map +1 -1
- package/dist/index.d.ts +11 -1
- package/dist/index.js +187 -25
- package/dist/index.js.map +1 -1
- package/dist/routes/config.js +15 -7
- package/dist/routes/config.js.map +1 -1
- package/dist/routes/debug.js +41 -6
- package/dist/routes/debug.js.map +1 -1
- package/dist/routes/index.d.ts +1 -0
- package/dist/routes/index.js +3 -0
- package/dist/routes/index.js.map +1 -1
- package/dist/routes/logs.js +3 -3
- package/dist/routes/logs.js.map +1 -1
- package/dist/routes/playlist.d.ts +2 -2
- package/dist/routes/playlist.js +11 -9
- package/dist/routes/playlist.js.map +1 -1
- package/dist/routes/root.js +149 -6
- package/dist/routes/root.js.map +1 -1
- package/dist/routes/theme.js +4 -0
- package/dist/routes/theme.js.map +1 -1
- package/dist/routes/ui.js +2 -0
- package/dist/routes/ui.js.map +1 -1
- package/dist/routes/upgrade.d.ts +6 -0
- package/dist/routes/upgrade.js +68 -0
- package/dist/routes/upgrade.js.map +1 -0
- package/dist/service/commands.js +9 -7
- package/dist/service/commands.js.map +1 -1
- package/dist/service/generators.js +10 -15
- package/dist/service/generators.js.map +1 -1
- package/dist/streaming/fmp4Segmenter.d.ts +28 -0
- package/dist/streaming/fmp4Segmenter.js +140 -47
- package/dist/streaming/fmp4Segmenter.js.map +1 -1
- package/dist/streaming/hls.js +3 -1
- package/dist/streaming/hls.js.map +1 -1
- package/dist/streaming/lifecycle.js +13 -6
- package/dist/streaming/lifecycle.js.map +1 -1
- package/dist/streaming/mp4Parser.d.ts +19 -10
- package/dist/streaming/mp4Parser.js +39 -29
- package/dist/streaming/mp4Parser.js.map +1 -1
- package/dist/streaming/setup.d.ts +2 -0
- package/dist/streaming/setup.js +4 -1
- package/dist/streaming/setup.js.map +1 -1
- package/dist/types/index.d.ts +10 -7
- package/dist/types/index.js.map +1 -1
- package/dist/upgrade/commands.d.ts +6 -0
- package/dist/upgrade/commands.js +210 -0
- package/dist/upgrade/commands.js.map +1 -0
- package/dist/upgrade/detection.d.ts +15 -0
- package/dist/upgrade/detection.js +75 -0
- package/dist/upgrade/detection.js.map +1 -0
- package/dist/upgrade/index.d.ts +2 -0
- package/dist/upgrade/index.js +7 -0
- package/dist/upgrade/index.js.map +1 -0
- package/dist/utils/fileLogger.d.ts +2 -1
- package/dist/utils/fileLogger.js +10 -8
- package/dist/utils/fileLogger.js.map +1 -1
- package/dist/utils/logger.js +1 -1
- package/dist/utils/m3u.js +1 -7
- package/dist/utils/m3u.js.map +1 -1
- package/dist/utils/platform.d.ts +8 -2
- package/dist/utils/platform.js +26 -6
- package/dist/utils/platform.js.map +1 -1
- package/dist/utils/version.d.ts +18 -0
- package/dist/utils/version.js +3 -3
- package/dist/utils/version.js.map +1 -1
- package/package.json +6 -6
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/upgrade/commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type InstallMethod = "docker" | "homebrew" | "npm-global" | "npm-local" | "unknown";
|
|
2
|
+
/**
|
|
3
|
+
* Information about the detected installation method and how to upgrade.
|
|
4
|
+
*/
|
|
5
|
+
export interface InstallInfo {
|
|
6
|
+
method: InstallMethod;
|
|
7
|
+
packageDir?: string;
|
|
8
|
+
upgradeCommand: string;
|
|
9
|
+
upgradeable: boolean;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Detects how PrismCast was installed by examining the path of the running code. Detection order: Docker container, Homebrew, npm global, npm local, unknown.
|
|
13
|
+
* @returns Installation information including method, whether it is upgradeable, and the appropriate upgrade command.
|
|
14
|
+
*/
|
|
15
|
+
export declare function detectInstallMethod(): InstallInfo;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { execSync } from "node:child_process";
|
|
2
|
+
import { existsSync } from "node:fs";
|
|
3
|
+
import { isRunningInContainer } from "../utils/platform.js";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import url from "node:url";
|
|
6
|
+
// Docker image name for display in upgrade instructions.
|
|
7
|
+
const DOCKER_IMAGE = "ghcr.io/hjdhjd/prismcast";
|
|
8
|
+
/**
|
|
9
|
+
* Resolves the npm global prefix directory via `npm prefix -g` with a short timeout.
|
|
10
|
+
* @returns The global prefix path, or null if the command fails or npm is not available.
|
|
11
|
+
*/
|
|
12
|
+
function resolveNpmGlobalPrefix() {
|
|
13
|
+
try {
|
|
14
|
+
return execSync("npm prefix -g", { encoding: "utf-8", timeout: 5000 }).trim();
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Detects how PrismCast was installed by examining the path of the running code. Detection order: Docker container, Homebrew, npm global, npm local, unknown.
|
|
22
|
+
* @returns Installation information including method, whether it is upgradeable, and the appropriate upgrade command.
|
|
23
|
+
*/
|
|
24
|
+
export function detectInstallMethod() {
|
|
25
|
+
// Docker detection comes first — inside a container, path-based detection is irrelevant.
|
|
26
|
+
if (isRunningInContainer()) {
|
|
27
|
+
return {
|
|
28
|
+
method: "docker",
|
|
29
|
+
upgradeCommand: "docker pull " + DOCKER_IMAGE + ":latest && docker compose up -d",
|
|
30
|
+
upgradeable: false
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
// Resolve the path of the currently running code via import.meta.url. At runtime this file is dist/upgrade/detection.js.
|
|
34
|
+
const currentFile = url.fileURLToPath(import.meta.url);
|
|
35
|
+
// Homebrew detection: Homebrew formula installs live under /Cellar/prismcast/. We check specifically for /Cellar/prismcast/ rather than a broad /homebrew/ match
|
|
36
|
+
// because npm global installs on Homebrew-managed Node also live under /opt/homebrew/ (e.g., /opt/homebrew/lib/node_modules/prismcast/).
|
|
37
|
+
if (currentFile.includes("/Cellar/prismcast/")) {
|
|
38
|
+
return {
|
|
39
|
+
method: "homebrew",
|
|
40
|
+
upgradeCommand: "brew update && brew upgrade prismcast",
|
|
41
|
+
upgradeable: true
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
// npm global detection: the code path starts with the global prefix (e.g., /usr/local/lib/node_modules/prismcast/...).
|
|
45
|
+
const globalPrefix = resolveNpmGlobalPrefix();
|
|
46
|
+
if (globalPrefix && currentFile.startsWith(globalPrefix)) {
|
|
47
|
+
return {
|
|
48
|
+
method: "npm-global",
|
|
49
|
+
upgradeCommand: "npm install -g prismcast@latest",
|
|
50
|
+
upgradeable: true
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
// npm local detection: the path contains /node_modules/prismcast/ indicating a local project install.
|
|
54
|
+
const localMarker = "/node_modules/prismcast/";
|
|
55
|
+
const localIndex = currentFile.indexOf(localMarker);
|
|
56
|
+
if (localIndex !== -1) {
|
|
57
|
+
// Extract the package directory (the project root containing package.json) from the path before node_modules.
|
|
58
|
+
const projectRoot = currentFile.slice(0, localIndex);
|
|
59
|
+
// Verify the project root actually has a package.json.
|
|
60
|
+
const packageDir = existsSync(path.join(projectRoot, "package.json")) ? projectRoot : undefined;
|
|
61
|
+
return {
|
|
62
|
+
method: "npm-local",
|
|
63
|
+
packageDir,
|
|
64
|
+
upgradeCommand: "npm install prismcast@latest",
|
|
65
|
+
upgradeable: true
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
// Unknown: development build, npx, or an unrecognized installation layout.
|
|
69
|
+
return {
|
|
70
|
+
method: "unknown",
|
|
71
|
+
upgradeCommand: "npm install -g prismcast@latest",
|
|
72
|
+
upgradeable: false
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=detection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detection.js","sourceRoot":"","sources":["../../src/upgrade/detection.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,GAAG,MAAM,UAAU,CAAC;AAgB3B,yDAAyD;AACzD,MAAM,YAAY,GAAG,0BAA0B,CAAC;AAEhD;;;GAGG;AACH,SAAS,sBAAsB;IAE7B,IAAI,CAAC;QAEH,OAAO,QAAQ,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAChF,CAAC;IAAC,MAAM,CAAC;QAEP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IAEjC,yFAAyF;IACzF,IAAG,oBAAoB,EAAE,EAAE,CAAC;QAE1B,OAAO;YAEL,MAAM,EAAE,QAAQ;YAChB,cAAc,EAAE,cAAc,GAAG,YAAY,GAAG,iCAAiC;YACjF,WAAW,EAAE,KAAK;SACnB,CAAC;IACJ,CAAC;IAED,yHAAyH;IACzH,MAAM,WAAW,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEvD,iKAAiK;IACjK,yIAAyI;IACzI,IAAG,WAAW,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;QAE9C,OAAO;YAEL,MAAM,EAAE,UAAU;YAClB,cAAc,EAAE,uCAAuC;YACvD,WAAW,EAAE,IAAI;SAClB,CAAC;IACJ,CAAC;IAED,uHAAuH;IACvH,MAAM,YAAY,GAAG,sBAAsB,EAAE,CAAC;IAE9C,IAAG,YAAY,IAAI,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAExD,OAAO;YAEL,MAAM,EAAE,YAAY;YACpB,cAAc,EAAE,iCAAiC;YACjD,WAAW,EAAE,IAAI;SAClB,CAAC;IACJ,CAAC;IAED,sGAAsG;IACtG,MAAM,WAAW,GAAG,0BAA0B,CAAC;IAC/C,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAEpD,IAAG,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;QAErB,8GAA8G;QAC9G,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QAErD,uDAAuD;QACvD,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;QAEhG,OAAO;YAEL,MAAM,EAAE,WAAW;YACnB,UAAU;YACV,cAAc,EAAE,8BAA8B;YAC9C,WAAW,EAAE,IAAI;SAClB,CAAC;IACJ,CAAC;IAED,2EAA2E;IAC3E,OAAO;QAEL,MAAM,EAAE,SAAS;QACjB,cAAc,EAAE,iCAAiC;QACjD,WAAW,EAAE,KAAK;KACnB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/upgrade/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Initializes the file logger. Creates the log file if it does not exist. Must be called after the data directory is ensured to exist.
|
|
3
|
+
* @param logPath - Absolute path to the log file, resolved by the caller via getLogFilePath().
|
|
3
4
|
* @param maxSize - Maximum log file size in bytes from CONFIG.logging.maxSize.
|
|
4
5
|
*/
|
|
5
|
-
export declare function initializeFileLogger(maxSize: number): Promise<void>;
|
|
6
|
+
export declare function initializeFileLogger(logPath: string, maxSize: number): Promise<void>;
|
|
6
7
|
/**
|
|
7
8
|
* Writes a log entry to the buffer. Entries are flushed to disk periodically.
|
|
8
9
|
* @param level - Log level ("info", "warn", "error", "debug").
|
package/dist/utils/fileLogger.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import df from "dateformat";
|
|
2
2
|
import fs from "node:fs";
|
|
3
|
-
import
|
|
3
|
+
import { isAnyDebugEnabled } from "./debugFilter.js";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
const { promises: fsPromises } = fs;
|
|
6
|
-
/* The file logger provides persistent logging to
|
|
6
|
+
/* The file logger provides persistent logging to a configurable log file with automatic size-based trimming. When the log file exceeds the configured maximum
|
|
7
7
|
* size, it is trimmed to half the maximum size, keeping only complete lines (the most recent logs are preserved). This approach prevents unbounded log growth while
|
|
8
8
|
* maintaining recent history for troubleshooting.
|
|
9
9
|
*
|
|
@@ -49,15 +49,15 @@ const ANSI_RESET = "\x1b[0m";
|
|
|
49
49
|
// Initialization.
|
|
50
50
|
/**
|
|
51
51
|
* Initializes the file logger. Creates the log file if it does not exist. Must be called after the data directory is ensured to exist.
|
|
52
|
+
* @param logPath - Absolute path to the log file, resolved by the caller via getLogFilePath().
|
|
52
53
|
* @param maxSize - Maximum log file size in bytes from CONFIG.logging.maxSize.
|
|
53
54
|
*/
|
|
54
|
-
export async function initializeFileLogger(maxSize) {
|
|
55
|
-
|
|
56
|
-
logFilePath = path.join(dataDir, "prismcast.log");
|
|
55
|
+
export async function initializeFileLogger(logPath, maxSize) {
|
|
56
|
+
logFilePath = logPath;
|
|
57
57
|
maxLogSize = maxSize;
|
|
58
58
|
try {
|
|
59
|
-
// Ensure the
|
|
60
|
-
await fsPromises.mkdir(
|
|
59
|
+
// Ensure the parent directory of the log file exists.
|
|
60
|
+
await fsPromises.mkdir(path.dirname(logFilePath), { recursive: true });
|
|
61
61
|
// Check if log file exists and get its size.
|
|
62
62
|
try {
|
|
63
63
|
const stats = await fsPromises.stat(logFilePath);
|
|
@@ -174,7 +174,9 @@ async function checkAndTrimFile() {
|
|
|
174
174
|
try {
|
|
175
175
|
const stats = await fsPromises.stat(logFilePath);
|
|
176
176
|
approximateSize = stats.size;
|
|
177
|
-
|
|
177
|
+
// Skip trimming when debug logging is active. Debug sessions generate high-volume output that is valuable for diagnosis — trimming mid-session would discard
|
|
178
|
+
// the very data we are trying to capture.
|
|
179
|
+
if ((approximateSize > maxLogSize) && !isAnyDebugEnabled()) {
|
|
178
180
|
await trimLogFile();
|
|
179
181
|
}
|
|
180
182
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileLogger.js","sourceRoot":"","sources":["../../src/utils/fileLogger.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"fileLogger.js","sourceRoot":"","sources":["../../src/utils/fileLogger.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/logger.js
CHANGED
|
@@ -16,7 +16,7 @@ const ANSI_COLORS = {
|
|
|
16
16
|
reset: "\x1b[0m",
|
|
17
17
|
yellow: "\x1b[33m"
|
|
18
18
|
};
|
|
19
|
-
/* The logger can operate in two modes: console mode (output to stdout/stderr with colors) or file mode (output to
|
|
19
|
+
/* The logger can operate in two modes: console mode (output to stdout/stderr with colors) or file mode (output to the configured log file). By default, file mode
|
|
20
20
|
* is used. Console mode is enabled via the --console CLI flag for Docker deployments or interactive debugging.
|
|
21
21
|
*/
|
|
22
22
|
// Flag indicating whether to use console logging instead of file logging.
|
package/dist/utils/m3u.js
CHANGED
|
@@ -19,13 +19,7 @@ const MAX_KEY_LENGTH = 50;
|
|
|
19
19
|
* - " Spaces Everywhere " → "spaces-everywhere"
|
|
20
20
|
*/
|
|
21
21
|
export function generateChannelKey(name) {
|
|
22
|
-
return name
|
|
23
|
-
.toLowerCase()
|
|
24
|
-
.replace(/\s+/g, "-")
|
|
25
|
-
.replace(/[^a-z0-9-]/g, "")
|
|
26
|
-
.replace(/-+/g, "-")
|
|
27
|
-
.replace(/^-+|-+$/g, "")
|
|
28
|
-
.slice(0, MAX_KEY_LENGTH);
|
|
22
|
+
return name.toLowerCase().replace(/\s+/g, "-").replace(/[^a-z0-9-]/g, "").replace(/-+/g, "-").replace(/^-+|-+$/g, "").slice(0, MAX_KEY_LENGTH);
|
|
29
23
|
}
|
|
30
24
|
/**
|
|
31
25
|
* Extracts an attribute value from an #EXTINF line. Handles both quoted and unquoted attribute values.
|
package/dist/utils/m3u.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"m3u.js","sourceRoot":"","sources":["../../src/utils/m3u.ts"],"names":[],"mappings":"AAMA;;;;;;;GAOG;AAEH,6CAA6C;AAC7C,MAAM,cAAc,GAAG,EAAE,CAAC;AA6B1B;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAE7C,OAAO,IAAI
|
|
1
|
+
{"version":3,"file":"m3u.js","sourceRoot":"","sources":["../../src/utils/m3u.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/platform.d.ts
CHANGED
|
@@ -20,6 +20,12 @@ export declare function getServiceManager(): Nullable<ServiceManager>;
|
|
|
20
20
|
* @returns True if running as a managed service, false otherwise.
|
|
21
21
|
*/
|
|
22
22
|
export declare function isRunningAsService(): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Checks whether PrismCast is running inside a Docker container. Two-tier detection: the explicit PRISMCAST_CONTAINER environment variable set in our Dockerfile is
|
|
25
|
+
* the primary signal; the /.dockerenv marker file (created by Docker in every container) is the backup for custom images that omit the environment variable.
|
|
26
|
+
* @returns True if running inside a container, false otherwise.
|
|
27
|
+
*/
|
|
28
|
+
export declare function isRunningInContainer(): boolean;
|
|
23
29
|
/**
|
|
24
30
|
* Returns the path where the service file should be installed for the current platform.
|
|
25
31
|
* @returns The absolute path to the service file location.
|
|
@@ -48,12 +54,12 @@ export declare function getPrismCastEntryPoint(): string;
|
|
|
48
54
|
*/
|
|
49
55
|
export declare function getPrismCastWorkingDirectory(): string;
|
|
50
56
|
/**
|
|
51
|
-
* Returns the data directory path for PrismCast
|
|
57
|
+
* Returns the data directory path for PrismCast. Delegates to the centralized paths module.
|
|
52
58
|
* @returns The absolute path to the data directory.
|
|
53
59
|
*/
|
|
54
60
|
export declare function getDataDirectory(): string;
|
|
55
61
|
/**
|
|
56
|
-
* Returns the directory path for service stdout/stderr output. This is the same as the data directory
|
|
62
|
+
* Returns the directory path for service stdout/stderr output. This is the same as the data directory to keep all PrismCast files in one place.
|
|
57
63
|
* @returns The absolute path to the service logs directory.
|
|
58
64
|
*/
|
|
59
65
|
export declare function getLogsDirectory(): string;
|
package/dist/utils/platform.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
|
+
import { getDataDir } from "../config/paths.js";
|
|
2
3
|
import os from "node:os";
|
|
3
4
|
import path from "node:path";
|
|
4
5
|
import url from "node:url";
|
|
6
|
+
// Environment variable name used to detect container mode.
|
|
7
|
+
const CONTAINER_ENV_VAR = "PRISMCAST_CONTAINER";
|
|
5
8
|
// Environment variable name used to detect service mode.
|
|
6
9
|
const SERVICE_ENV_VAR = "PRISMCAST_SERVICE";
|
|
7
10
|
// Service identifier used in service files.
|
|
@@ -54,6 +57,23 @@ export function getServiceManager() {
|
|
|
54
57
|
export function isRunningAsService() {
|
|
55
58
|
return process.env[SERVICE_ENV_VAR] === "1";
|
|
56
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Checks whether PrismCast is running inside a Docker container. Two-tier detection: the explicit PRISMCAST_CONTAINER environment variable set in our Dockerfile is
|
|
62
|
+
* the primary signal; the /.dockerenv marker file (created by Docker in every container) is the backup for custom images that omit the environment variable.
|
|
63
|
+
* @returns True if running inside a container, false otherwise.
|
|
64
|
+
*/
|
|
65
|
+
export function isRunningInContainer() {
|
|
66
|
+
if (process.env[CONTAINER_ENV_VAR] === "1") {
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
// Backup: Docker creates /.dockerenv in every container. This catches custom images that don't set PRISMCAST_CONTAINER.
|
|
70
|
+
try {
|
|
71
|
+
return fs.existsSync("/.dockerenv");
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
57
77
|
/**
|
|
58
78
|
* Returns the path where the service file should be installed for the current platform.
|
|
59
79
|
* @returns The absolute path to the service file location.
|
|
@@ -68,8 +88,8 @@ export function getServiceFilePath() {
|
|
|
68
88
|
return path.join(homeDir, ".config", "systemd", "user", "prismcast.service");
|
|
69
89
|
}
|
|
70
90
|
case "windows": {
|
|
71
|
-
// Windows Task Scheduler doesn't use a file path in the same way. We return a marker path for consistency.
|
|
72
|
-
return path.join(
|
|
91
|
+
// Windows Task Scheduler doesn't use a file path in the same way. We return a marker path inside the data directory for consistency.
|
|
92
|
+
return path.join(getDataDir(), "service-installed.marker");
|
|
73
93
|
}
|
|
74
94
|
default: {
|
|
75
95
|
return "";
|
|
@@ -134,18 +154,18 @@ export function getPrismCastWorkingDirectory() {
|
|
|
134
154
|
return path.dirname(path.dirname(entryPoint));
|
|
135
155
|
}
|
|
136
156
|
/**
|
|
137
|
-
* Returns the data directory path for PrismCast
|
|
157
|
+
* Returns the data directory path for PrismCast. Delegates to the centralized paths module.
|
|
138
158
|
* @returns The absolute path to the data directory.
|
|
139
159
|
*/
|
|
140
160
|
export function getDataDirectory() {
|
|
141
|
-
return
|
|
161
|
+
return getDataDir();
|
|
142
162
|
}
|
|
143
163
|
/**
|
|
144
|
-
* Returns the directory path for service stdout/stderr output. This is the same as the data directory
|
|
164
|
+
* Returns the directory path for service stdout/stderr output. This is the same as the data directory to keep all PrismCast files in one place.
|
|
145
165
|
* @returns The absolute path to the service logs directory.
|
|
146
166
|
*/
|
|
147
167
|
export function getLogsDirectory() {
|
|
148
|
-
return
|
|
168
|
+
return getDataDir();
|
|
149
169
|
}
|
|
150
170
|
/**
|
|
151
171
|
* Checks if a service file exists at the expected location.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/utils/platform.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,GAAG,MAAM,UAAU,CAAC;AAY3B,yDAAyD;AACzD,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAE5C,4CAA4C;AAC5C,MAAM,CAAC,MAAM,UAAU,GAAG,6BAA6B,CAAC;AAExD,qCAAqC;AACrC,MAAM,CAAC,MAAM,YAAY,GAAG,WAAW,CAAC;AAExC;;;GAGG;AACH,MAAM,UAAU,WAAW;IAEzB,QAAO,OAAO,CAAC,QAAQ,EAAE,CAAC;QAExB,KAAK,QAAQ,CAAC,CAAC,CAAC;YAEd,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YAEb,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,CAAC,CAAC,CAAC;YAER,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAE/B,QAAO,WAAW,EAAE,EAAE,CAAC;QAErB,KAAK,QAAQ,CAAC,CAAC,CAAC;YAEd,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YAEb,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,KAAK,SAAS,CAAC,CAAC,CAAC;YAEf,OAAO,mBAAmB,CAAC;QAC7B,CAAC;QAED,OAAO,CAAC,CAAC,CAAC;YAER,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB;IAEhC,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,GAAG,CAAC;AAC9C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB;IAEhC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAE7B,QAAO,WAAW,EAAE,EAAE,CAAC;QAErB,KAAK,QAAQ,CAAC,CAAC,CAAC;YAEd,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,GAAG,QAAQ,CAAC,CAAC;QAC9E,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YAEb,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC;QAC/E,CAAC;QAED,KAAK,SAAS,CAAC,CAAC,CAAC;YAEf,
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/utils/platform.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/version.d.ts
CHANGED
|
@@ -4,6 +4,24 @@ import type { Nullable } from "../types/index.js";
|
|
|
4
4
|
* @returns The current version string (e.g., "1.0.7").
|
|
5
5
|
*/
|
|
6
6
|
export declare function getPackageVersion(): string;
|
|
7
|
+
/**
|
|
8
|
+
* Normalizes a version string by stripping the leading 'v' prefix if present.
|
|
9
|
+
* @param version - Version string (e.g., "v1.0.7" or "1.0.7").
|
|
10
|
+
* @returns Normalized version without 'v' prefix (e.g., "1.0.7").
|
|
11
|
+
*/
|
|
12
|
+
export declare function normalizeVersion(version: string): string;
|
|
13
|
+
/**
|
|
14
|
+
* Compares two semver version strings. Returns true if version a is less than version b. Assumes versions are already normalized (no 'v' prefix).
|
|
15
|
+
* @param a - First version string (e.g., "1.0.7").
|
|
16
|
+
* @param b - Second version string (e.g., "1.0.8").
|
|
17
|
+
* @returns True if a < b.
|
|
18
|
+
*/
|
|
19
|
+
export declare function isVersionLessThan(a: string, b: string): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Fetches the latest version from the npm registry.
|
|
22
|
+
* @returns The latest version string, or null if the fetch failed.
|
|
23
|
+
*/
|
|
24
|
+
export declare function fetchLatestVersion(): Promise<Nullable<string>>;
|
|
7
25
|
/**
|
|
8
26
|
* Checks for updates and caches the results.
|
|
9
27
|
* @param currentVersion - The currently running version.
|
package/dist/utils/version.js
CHANGED
|
@@ -45,7 +45,7 @@ let updateCheckInterval = null;
|
|
|
45
45
|
* @param version - Version string (e.g., "v1.0.7" or "1.0.7").
|
|
46
46
|
* @returns Normalized version without 'v' prefix (e.g., "1.0.7").
|
|
47
47
|
*/
|
|
48
|
-
function normalizeVersion(version) {
|
|
48
|
+
export function normalizeVersion(version) {
|
|
49
49
|
return version.replace(/^v/, "");
|
|
50
50
|
}
|
|
51
51
|
/**
|
|
@@ -54,7 +54,7 @@ function normalizeVersion(version) {
|
|
|
54
54
|
* @param b - Second version string (e.g., "1.0.8").
|
|
55
55
|
* @returns True if a < b.
|
|
56
56
|
*/
|
|
57
|
-
function isVersionLessThan(a, b) {
|
|
57
|
+
export function isVersionLessThan(a, b) {
|
|
58
58
|
const partsA = a.split(".").map(Number);
|
|
59
59
|
const partsB = b.split(".").map(Number);
|
|
60
60
|
for (let i = 0; i < Math.max(partsA.length, partsB.length); i++) {
|
|
@@ -73,7 +73,7 @@ function isVersionLessThan(a, b) {
|
|
|
73
73
|
* Fetches the latest version from the npm registry.
|
|
74
74
|
* @returns The latest version string, or null if the fetch failed.
|
|
75
75
|
*/
|
|
76
|
-
async function fetchLatestVersion() {
|
|
76
|
+
export async function fetchLatestVersion() {
|
|
77
77
|
try {
|
|
78
78
|
const response = await fetch("https://registry.npmjs.org/" + NPM_PACKAGE_NAME);
|
|
79
79
|
if (!response.ok) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/utils/version.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,yCAAyC;AACzC,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAErC,0BAA0B;AAC1B,IAAI,oBAAoB,GAAqB,IAAI,CAAC;AAElD;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAE/B,IAAG,oBAAoB,EAAE,CAAC;QAExB,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED,IAAI,CAAC;QAEH,8IAA8I;QAC9I,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAChE,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;QAC9D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAwB,CAAC;QAE1F,oBAAoB,GAAG,WAAW,CAAC,OAAO,CAAC;QAE3C,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QAEP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,yCAAyC;AACzC,MAAM,aAAa,GAAG,sEAAsE,CAAC;AAE7F,4DAA4D;AAC5D,MAAM,qBAAqB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEjD,8BAA8B;AAC9B,IAAI,mBAAmB,GAAqB,IAAI,CAAC;AACjD,IAAI,eAAe,GAAqB,IAAI,CAAC;AAC7C,IAAI,aAAa,GAAG,CAAC,CAAC;AACtB,IAAI,mBAAmB,GAA6C,IAAI,CAAC;AAEzE;;;;GAIG;AACH,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/utils/version.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "prismcast",
|
|
3
3
|
"displayName": "PrismCast",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.4.0",
|
|
5
5
|
"description": "Browser-based live TV capture server for Channels DVR, Plex, and other streaming clients.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "HJD",
|
|
@@ -67,20 +67,20 @@
|
|
|
67
67
|
"express": "5.2.1",
|
|
68
68
|
"ffmpeg-for-homebridge": "2.2.1",
|
|
69
69
|
"morgan": "1.10.1",
|
|
70
|
-
"puppeteer-core": "24.37.
|
|
70
|
+
"puppeteer-core": "24.37.5",
|
|
71
71
|
"puppeteer-stream": "3.0.21"
|
|
72
72
|
},
|
|
73
73
|
"devDependencies": {
|
|
74
|
-
"@stylistic/eslint-plugin": "5.
|
|
74
|
+
"@stylistic/eslint-plugin": "5.9.0",
|
|
75
75
|
"@types/dateformat": "5.0.3",
|
|
76
76
|
"@types/express": "5.0.6",
|
|
77
77
|
"@types/morgan": "1.9.10",
|
|
78
|
-
"@types/node": "25.
|
|
78
|
+
"@types/node": "25.3.0",
|
|
79
79
|
"eslint": "9.39.2",
|
|
80
80
|
"homebridge-plugin-utils": "1.32.0",
|
|
81
|
-
"nodemon": "3.1.
|
|
81
|
+
"nodemon": "3.1.13",
|
|
82
82
|
"shx": "0.4.0",
|
|
83
83
|
"typescript": "5.9.3",
|
|
84
|
-
"typescript-eslint": "8.
|
|
84
|
+
"typescript-eslint": "8.56.0"
|
|
85
85
|
}
|
|
86
86
|
}
|