mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-07-07 01:08:54 -07:00
chore: remove stale npm artifacts
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
# Dependencies
|
# Dependencies
|
||||||
node_modules/
|
node_modules/
|
||||||
|
/package-lock.json
|
||||||
|
|
||||||
# Superpowers brainstorming
|
# Superpowers brainstorming
|
||||||
.superpowers/
|
.superpowers/
|
||||||
@@ -16,6 +17,8 @@ coverage/
|
|||||||
|
|
||||||
# Launcher build artifact (produced by make build-launcher)
|
# Launcher build artifact (produced by make build-launcher)
|
||||||
/subminer
|
/subminer
|
||||||
|
/main-entry.js
|
||||||
|
/main-entry.js.map
|
||||||
|
|
||||||
# Logs
|
# Logs
|
||||||
*.log
|
*.log
|
||||||
|
|||||||
-233
@@ -1,233 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
||||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
||||||
};
|
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
|
||||||
const node_os_1 = __importDefault(require("node:os"));
|
|
||||||
const node_child_process_1 = require("node:child_process");
|
|
||||||
const electron_1 = require("electron");
|
|
||||||
const help_1 = require("./cli/help");
|
|
||||||
const main_entry_runtime_1 = require("./main-entry-runtime");
|
|
||||||
const early_single_instance_1 = require("./main/early-single-instance");
|
|
||||||
const main_entry_launch_config_1 = require("./main-entry-launch-config");
|
|
||||||
const app_control_client_1 = require("./shared/app-control-client");
|
|
||||||
const first_run_setup_plugin_1 = require("./main/runtime/first-run-setup-plugin");
|
|
||||||
const windows_mpv_launch_1 = require("./main/runtime/windows-mpv-launch");
|
|
||||||
const stats_daemon_entry_1 = require("./stats-daemon-entry");
|
|
||||||
const fatal_error_1 = require("./main/fatal-error");
|
|
||||||
const mpv_logging_args_1 = require("./shared/mpv-logging-args");
|
|
||||||
const log_files_1 = require("./shared/log-files");
|
|
||||||
const DEFAULT_TEXTHOOKER_PORT = 5174;
|
|
||||||
function appendWindowsMpvLaunchLog(message, logRotation) {
|
|
||||||
if (!(0, log_files_1.isLogFileEnabled)('app')) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const timestamp = new Date().toISOString().replace('T', ' ').slice(0, 19);
|
|
||||||
(0, log_files_1.appendLogLine)(process.env.SUBMINER_APP_LOG?.trim() || (0, log_files_1.resolveDefaultLogFilePath)('app'), `[subminer] - ${timestamp} - INFO - [main:windows-mpv-launch] ${message}`, { rotation: logRotation });
|
|
||||||
}
|
|
||||||
function applySanitizedEnv(sanitizedEnv) {
|
|
||||||
if (sanitizedEnv.NODE_NO_WARNINGS) {
|
|
||||||
process.env.NODE_NO_WARNINGS = sanitizedEnv.NODE_NO_WARNINGS;
|
|
||||||
}
|
|
||||||
if (sanitizedEnv.VK_INSTANCE_LAYERS) {
|
|
||||||
process.env.VK_INSTANCE_LAYERS = sanitizedEnv.VK_INSTANCE_LAYERS;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
delete process.env.VK_INSTANCE_LAYERS;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function resolveBundledWindowsMpvPluginEntrypoint() {
|
|
||||||
return ((0, first_run_setup_plugin_1.resolvePackagedRuntimePluginPath)({
|
|
||||||
dirname: __dirname,
|
|
||||||
appPath: electron_1.app.getAppPath(),
|
|
||||||
resourcesPath: process.resourcesPath,
|
|
||||||
}) ?? undefined);
|
|
||||||
}
|
|
||||||
function buildInstalledWindowsMpvPluginMessage(pathValue, version) {
|
|
||||||
return [
|
|
||||||
'SubMiner detected an installed mpv plugin at:',
|
|
||||||
pathValue,
|
|
||||||
'',
|
|
||||||
"This mpv session will use the installed plugin. Remove it to use SubMiner's bundled runtime plugin automatically.",
|
|
||||||
`Detected plugin version: ${version ?? 'unknown or legacy'}`,
|
|
||||||
].join('\n');
|
|
||||||
}
|
|
||||||
async function promptForWindowsLegacyMpvPluginRemoval(mpvPath, detection) {
|
|
||||||
const response = await electron_1.dialog.showMessageBox({
|
|
||||||
type: 'warning',
|
|
||||||
title: 'SubMiner mpv plugin detected',
|
|
||||||
message: buildInstalledWindowsMpvPluginMessage(detection.path ?? 'unknown path', detection.version),
|
|
||||||
detail: 'Remove the legacy SubMiner mpv plugin files from mpv before launching this video? This moves the files to the OS trash. SubMiner-managed playback will then use the bundled runtime plugin.',
|
|
||||||
buttons: ['Remove legacy plugin', 'Continue with installed plugin', 'Cancel'],
|
|
||||||
defaultId: 0,
|
|
||||||
cancelId: 2,
|
|
||||||
});
|
|
||||||
if (response.response === 2) {
|
|
||||||
return 'cancel';
|
|
||||||
}
|
|
||||||
if (response.response === 1) {
|
|
||||||
return 'continue';
|
|
||||||
}
|
|
||||||
const candidates = (0, first_run_setup_plugin_1.detectInstalledFirstRunPluginCandidates)({
|
|
||||||
platform: 'win32',
|
|
||||||
homeDir: node_os_1.default.homedir(),
|
|
||||||
appDataDir: electron_1.app.getPath('appData'),
|
|
||||||
mpvExecutablePath: mpvPath,
|
|
||||||
});
|
|
||||||
const result = await (0, first_run_setup_plugin_1.removeLegacyMpvPluginCandidates)({
|
|
||||||
candidates,
|
|
||||||
trashItem: (candidatePath) => electron_1.shell.trashItem(candidatePath),
|
|
||||||
});
|
|
||||||
if (result.ok) {
|
|
||||||
await electron_1.dialog.showMessageBox({
|
|
||||||
type: 'info',
|
|
||||||
title: 'Legacy mpv plugin removed',
|
|
||||||
message: 'Legacy mpv plugin removed. SubMiner-managed playback will use the bundled runtime plugin.',
|
|
||||||
});
|
|
||||||
return 'removed';
|
|
||||||
}
|
|
||||||
await electron_1.dialog.showMessageBox({
|
|
||||||
type: 'error',
|
|
||||||
title: 'Could not remove legacy mpv plugin',
|
|
||||||
message: 'Some legacy SubMiner mpv plugin files could not be moved to the trash.',
|
|
||||||
detail: result.failedPaths.map((failure) => `${failure.path}: ${failure.message}`).join('\n'),
|
|
||||||
});
|
|
||||||
return 'cancel';
|
|
||||||
}
|
|
||||||
function createWindowsRuntimePluginPolicy() {
|
|
||||||
return {
|
|
||||||
detectInstalledMpvPlugin: (mpvPath) => (0, first_run_setup_plugin_1.detectInstalledMpvPlugin)({
|
|
||||||
platform: 'win32',
|
|
||||||
homeDir: node_os_1.default.homedir(),
|
|
||||||
appDataDir: electron_1.app.getPath('appData'),
|
|
||||||
mpvExecutablePath: mpvPath,
|
|
||||||
}),
|
|
||||||
notifyInstalledPluginDetected: (detection) => {
|
|
||||||
if (!detection.installed || !detection.path)
|
|
||||||
return;
|
|
||||||
electron_1.dialog.showMessageBoxSync({
|
|
||||||
type: 'warning',
|
|
||||||
title: 'SubMiner mpv plugin detected',
|
|
||||||
message: buildInstalledWindowsMpvPluginMessage(detection.path, detection.version),
|
|
||||||
});
|
|
||||||
},
|
|
||||||
resolveInstalledPluginBeforeLaunch: (detection, mpvPath) => promptForWindowsLegacyMpvPluginRemoval(mpvPath, detection),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
process.argv = (0, main_entry_runtime_1.normalizeStartupArgv)(process.argv, process.env);
|
|
||||||
(0, main_entry_runtime_1.applyEarlyLinuxCommandLineSwitches)(electron_1.app.commandLine, process.argv);
|
|
||||||
applySanitizedEnv((0, main_entry_runtime_1.sanitizeStartupEnv)(process.env));
|
|
||||||
const userDataPath = (0, main_entry_runtime_1.configureEarlyAppPaths)(electron_1.app);
|
|
||||||
const reportFatalError = (0, fatal_error_1.createFatalErrorReporter)({
|
|
||||||
showErrorBox: (title, details) => electron_1.dialog.showErrorBox(title, details),
|
|
||||||
consoleError: (message, error) => console.error(message, error),
|
|
||||||
});
|
|
||||||
(0, fatal_error_1.registerFatalErrorHandlers)({
|
|
||||||
reportFatalError,
|
|
||||||
exit: (code) => electron_1.app.exit(code),
|
|
||||||
});
|
|
||||||
function startMainProcess() {
|
|
||||||
const gotSingleInstanceLock = (0, early_single_instance_1.requestSingleInstanceLockEarly)(electron_1.app);
|
|
||||||
if (!gotSingleInstanceLock) {
|
|
||||||
electron_1.app.exit(0);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
require('./main.js');
|
|
||||||
}
|
|
||||||
catch (error) {
|
|
||||||
reportFatalError(error, {
|
|
||||||
title: 'SubMiner startup failed',
|
|
||||||
context: 'SubMiner failed while loading the main process.',
|
|
||||||
});
|
|
||||||
electron_1.app.exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
async function forwardStartupArgvViaAppControlIfAvailable() {
|
|
||||||
if (!(0, main_entry_runtime_1.shouldForwardStartupArgvViaAppControl)(process.argv, process.env)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
const result = await (0, app_control_client_1.sendAppControlCommand)(process.argv, {
|
|
||||||
configDir: userDataPath,
|
|
||||||
timeoutMs: 500,
|
|
||||||
});
|
|
||||||
if (result.ok) {
|
|
||||||
electron_1.app.exit(0);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (!result.unavailable) {
|
|
||||||
console.error(`SubMiner app-control handoff failed: ${result.error ?? 'unknown error'}`);
|
|
||||||
electron_1.app.exit(1);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
async function runEntryProcess() {
|
|
||||||
if ((0, main_entry_runtime_1.shouldHandleHelpOnlyAtEntry)(process.argv, process.env)) {
|
|
||||||
const sanitizedEnv = (0, main_entry_runtime_1.sanitizeHelpEnv)(process.env);
|
|
||||||
process.env.NODE_NO_WARNINGS = sanitizedEnv.NODE_NO_WARNINGS;
|
|
||||||
if (!sanitizedEnv.VK_INSTANCE_LAYERS) {
|
|
||||||
delete process.env.VK_INSTANCE_LAYERS;
|
|
||||||
}
|
|
||||||
(0, help_1.printHelp)(DEFAULT_TEXTHOOKER_PORT);
|
|
||||||
process.exit(0);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if ((0, main_entry_runtime_1.shouldHandleLaunchMpvAtEntry)(process.argv, process.env)) {
|
|
||||||
const sanitizedEnv = (0, main_entry_runtime_1.sanitizeLaunchMpvEnv)(process.env);
|
|
||||||
applySanitizedEnv(sanitizedEnv);
|
|
||||||
await electron_1.app.whenReady();
|
|
||||||
const configuredMpvLaunch = (0, main_entry_launch_config_1.readConfiguredWindowsMpvLaunch)(userDataPath);
|
|
||||||
const extraArgs = (0, main_entry_runtime_1.normalizeLaunchMpvExtraArgs)(process.argv);
|
|
||||||
(0, log_files_1.applyLogFileTogglesToEnv)(configuredMpvLaunch.logFiles);
|
|
||||||
const mpvLogPath = (0, log_files_1.isLogFileEnabled)('mpv')
|
|
||||||
? process.env.SUBMINER_MPV_LOG?.trim() || (0, log_files_1.resolveDefaultLogFilePath)('mpv')
|
|
||||||
: '';
|
|
||||||
if (mpvLogPath) {
|
|
||||||
(0, log_files_1.pruneLogDirectoryForPath)(mpvLogPath, configuredMpvLaunch.logRotation);
|
|
||||||
}
|
|
||||||
const result = await (0, windows_mpv_launch_1.launchWindowsMpv)((0, main_entry_runtime_1.normalizeLaunchMpvTargets)(process.argv), (0, windows_mpv_launch_1.createWindowsMpvLaunchDeps)({
|
|
||||||
getEnv: (name) => process.env[name],
|
|
||||||
isAppControlServerAvailable: () => (0, app_control_client_1.isAppControlServerAvailable)({
|
|
||||||
configDir: userDataPath,
|
|
||||||
timeoutMs: 350,
|
|
||||||
}),
|
|
||||||
sendAppControlCommand: (argv) => (0, app_control_client_1.sendAppControlCommand)(argv, {
|
|
||||||
configDir: userDataPath,
|
|
||||||
timeoutMs: 1000,
|
|
||||||
}),
|
|
||||||
showError: (title, content) => {
|
|
||||||
electron_1.dialog.showErrorBox(title, content);
|
|
||||||
},
|
|
||||||
logInfo: (message) => appendWindowsMpvLaunchLog(message, configuredMpvLaunch.logRotation),
|
|
||||||
}), [...extraArgs, ...(0, mpv_logging_args_1.buildMpvLoggingArgs)(configuredMpvLaunch.logLevel, mpvLogPath, extraArgs)], process.execPath, resolveBundledWindowsMpvPluginEntrypoint(), configuredMpvLaunch.executablePath, configuredMpvLaunch.launchMode, createWindowsRuntimePluginPolicy(), configuredMpvLaunch.pluginRuntimeConfig);
|
|
||||||
electron_1.app.exit(result.ok ? 0 : 1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if ((0, main_entry_runtime_1.shouldHandleStatsDaemonCommandAtEntry)(process.argv, process.env)) {
|
|
||||||
await electron_1.app.whenReady();
|
|
||||||
const exitCode = await (0, stats_daemon_entry_1.runStatsDaemonControlFromProcess)(electron_1.app.getPath('userData'));
|
|
||||||
electron_1.app.exit(exitCode);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (await forwardStartupArgvViaAppControlIfAvailable()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if ((0, main_entry_runtime_1.shouldDetachBackgroundLaunch)(process.argv, process.env)) {
|
|
||||||
const childArgs = (0, main_entry_runtime_1.hasTransportedStartupArgs)(process.env) ? [] : process.argv.slice(1);
|
|
||||||
const child = (0, node_child_process_1.spawn)(process.execPath, childArgs, {
|
|
||||||
detached: true,
|
|
||||||
stdio: 'ignore',
|
|
||||||
env: (0, main_entry_runtime_1.sanitizeBackgroundEnv)(process.env),
|
|
||||||
});
|
|
||||||
child.unref();
|
|
||||||
process.exit(0);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
startMainProcess();
|
|
||||||
}
|
|
||||||
void runEntryProcess().catch((error) => {
|
|
||||||
console.error('SubMiner app-control handoff failed:', error);
|
|
||||||
startMainProcess();
|
|
||||||
});
|
|
||||||
//# sourceMappingURL=main-entry.js.map
|
|
||||||
Generated
-4095
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user