mirror of
https://github.com/Pandipipas/scoreko-electron-dev.git
synced 2026-06-06 05:32:06 +00:00
Refactor NodeCG runtime preparation and update handling
- Updated paths and configurations in doctor.mjs and prepare-nodecg-runtime.mjs to use new build-config.mjs imports. - Enhanced runtime installation checks and permissions validation. - Introduced new update configuration management in update-config.ts, including loading and validating update settings. - Implemented update service for managing update checks and downloads in update-service.ts. - Replaced update-utils.ts with update-schema.ts for better structure and clarity in update handling. - Added comprehensive tests for update download and settings management. - Ensured secure handling of download URLs and improved error handling in update processes.
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
import path from "node:path";
|
||||
|
||||
export const electronRoot = process.cwd();
|
||||
export const bundleRoot = path.resolve(electronRoot, "..");
|
||||
export const nodecgRuntimeRoot = path.join(electronRoot, "lib", "nodecg");
|
||||
export const nodecgRuntimeNodeModules = path.join(nodecgRuntimeRoot, "node_modules");
|
||||
export const bundleName = process.env.NODECG_BUNDLE_NAME?.trim() || "scoreko-dev";
|
||||
export const runtimeBundleRoot = path.join(nodecgRuntimeRoot, "bundles", bundleName);
|
||||
export const runtimeNpmCache = process.env.npm_config_cache ?? path.join(electronRoot, ".npm-runtime-cache");
|
||||
export const electronCache = process.env.ELECTRON_CACHE ?? path.join(electronRoot, ".electron-cache");
|
||||
|
||||
export const bundleRootMarkers = ["package.json", "pnpm-lock.yaml"];
|
||||
export const generatedBundleEntries = ["extension", "node_modules/.vite", "shared/dist", "dashboard", "graphics"];
|
||||
export const preparedBundleEntries = [
|
||||
"assets",
|
||||
"dashboard",
|
||||
"extension",
|
||||
"graphics",
|
||||
"nodecg",
|
||||
"schemas",
|
||||
"shared",
|
||||
"configschema.json",
|
||||
"LICENSE",
|
||||
"package.json",
|
||||
"README.md",
|
||||
];
|
||||
export const requiredPreparedBundleEntries = [
|
||||
"dashboard",
|
||||
"extension",
|
||||
"graphics",
|
||||
"nodecg",
|
||||
"schemas",
|
||||
"shared",
|
||||
"package.json",
|
||||
];
|
||||
|
||||
export function getNpmCommand() {
|
||||
return process.platform === "win32" ? "npm.cmd" : "npm";
|
||||
}
|
||||
|
||||
export function getLocalBinPath(commandName) {
|
||||
const extension = process.platform === "win32" ? ".CMD" : "";
|
||||
return path.join(bundleRoot, "node_modules", ".bin", `${commandName}${extension}`);
|
||||
}
|
||||
|
||||
export function getPathInside(rootPath, relativePath) {
|
||||
const resolvedRoot = path.resolve(rootPath);
|
||||
const targetPath = path.resolve(resolvedRoot, relativePath);
|
||||
const pathFromRoot = path.relative(resolvedRoot, targetPath);
|
||||
|
||||
if (!pathFromRoot || pathFromRoot.startsWith("..") || path.isAbsolute(pathFromRoot)) {
|
||||
throw new Error(`Refusing to access path outside ${resolvedRoot}: ${targetPath}`);
|
||||
}
|
||||
|
||||
return targetPath;
|
||||
}
|
||||
Reference in New Issue
Block a user