mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-17 13:05:32 +09:00
feat(desktop): prefer the bundled renderer, own update prompts (#3341)
This commit is contained in:
1 parent
7a5b9a0ded
commit
5072488f1e
33 files changed
+2197
-113
No files matched your search
@@ -23,6 +23,7 @@ const SPLASH_DIST_DIR = path.join(DIST_DIR, 'splash');
|
||||
const SPLASH_PRELOAD_FILE_NAME = 'splash.cjs';
|
||||
const REQUIRED_RENDERER_ENTRIES = Object.freeze(['index.html', 'assets']);
|
||||
const BUNDLED_RENDERER_ENTRIES = Object.freeze([...REQUIRED_RENDERER_ENTRIES, 'version.json']);
|
||||
const BUNDLED_RENDERER_VERSION_PATTERN = /^\d+\.\d+\.\d+$/u;
|
||||
const FORBIDDEN_RENDERER_ENTRIES = Object.freeze(['sw.js', 'sw.js.map']);
|
||||
const SUPPORTED_BUILD_ARGUMENTS = Object.freeze(['--shared-assets', '--use-shared-renderer']);
|
||||
const MAIN_BOOTSTRAP_ENTRY_NAME = 'index';
|
||||
@@ -97,6 +98,24 @@ class BundledRendererMissingError extends Error {
|
||||
}
|
||||
}
|
||||
|
||||
class BundledRendererVersionError extends Error {
|
||||
constructor(bundledVersion, buildVersion) {
|
||||
super(
|
||||
`The bundled renderer reports version ${JSON.stringify(bundledVersion)} and this shell is ${JSON.stringify(buildVersion)}. A shell that loads modules must bundle the renderer built for the same numeric version, because it serves whichever of the two is newer.`,
|
||||
);
|
||||
this.name = 'BundledRendererVersionError';
|
||||
}
|
||||
}
|
||||
|
||||
function readBundledRendererVersion() {
|
||||
try {
|
||||
const parsed = JSON.parse(fs.readFileSync(path.join(RENDERER_DIST_DIR, 'version.json'), 'utf8'));
|
||||
return typeof parsed?.version === 'string' ? parsed.version : '';
|
||||
} catch {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
class RendererServiceWorkerPresentError extends Error {
|
||||
constructor(present) {
|
||||
super(
|
||||
@@ -847,6 +866,10 @@ function prunePackedRendererModules() {
|
||||
if (missing.length > 0) {
|
||||
throw new BundledRendererMissingError(RENDERER_DIST_DIR, missing);
|
||||
}
|
||||
const bundledVersion = readBundledRendererVersion();
|
||||
if (!BUNDLED_RENDERER_VERSION_PATTERN.test(bundledVersion) || bundledVersion !== embeddedBuildVersion) {
|
||||
throw new BundledRendererVersionError(bundledVersion, embeddedBuildVersion);
|
||||
}
|
||||
console.log(` Bundled renderer pruned in ${Date.now() - startedAt}ms`);
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user