refactor(core): add version in worker url (#11614)

Co-authored-by: renovate <29139614+renovate@users.noreply.github.com>
This commit is contained in:
liuyi
2025-04-10 19:12:49 +08:00
committed by GitHub
parent a6ddfdd85e
commit e79e4c9e9b
9 changed files with 15 additions and 18 deletions

View File

@@ -1,7 +1,5 @@
export function getWorkerUrl(name: string) { export function getWorkerUrl(name: string) {
if (BUILD_CONFIG.debug && !name.endsWith('.worker.js')) { return (
throw new Error(`worker should be named with '.worker.js', get ${name}`); environment.workerPath + `${name}-${BUILD_CONFIG.appVersion}.worker.js`
} );
return environment.workerPath + name + '?v=' + BUILD_CONFIG.appVersion;
} }

View File

@@ -48,7 +48,7 @@ import { AffineTheme } from './plugins/affine-theme';
import { AIButton } from './plugins/ai-button'; import { AIButton } from './plugins/ai-button';
const storeManagerClient = new StoreManagerClient( const storeManagerClient = new StoreManagerClient(
new OpClient(new Worker(getWorkerUrl('nbstore.worker.js'))) new OpClient(new Worker(getWorkerUrl('nbstore')))
); );
window.addEventListener('beforeunload', () => { window.addEventListener('beforeunload', () => {
storeManagerClient.dispose(); storeManagerClient.dispose();

View File

@@ -407,7 +407,7 @@ export function App() {
} }
function createStoreManagerClient() { function createStoreManagerClient() {
const worker = new Worker(getWorkerUrl('nbstore.worker.js')); const worker = new Worker(getWorkerUrl('nbstore'));
const { port1: nativeDBApiChannelServer, port2: nativeDBApiChannelClient } = const { port1: nativeDBApiChannelServer, port2: nativeDBApiChannelClient } =
new MessageChannel(); new MessageChannel();
AsyncCall<typeof NbStoreNativeDBApis>(NbStoreNativeDBApis, { AsyncCall<typeof NbStoreNativeDBApis>(NbStoreNativeDBApis, {

View File

@@ -23,7 +23,7 @@ import { RouterProvider } from 'react-router-dom';
let storeManagerClient: StoreManagerClient; let storeManagerClient: StoreManagerClient;
const workerUrl = getWorkerUrl('nbstore.worker.js'); const workerUrl = getWorkerUrl('nbstore');
if (window.SharedWorker) { if (window.SharedWorker) {
const worker = new SharedWorker(workerUrl, { name: 'affine-shared-worker' }); const worker = new SharedWorker(workerUrl, { name: 'affine-shared-worker' });
storeManagerClient = new StoreManagerClient(new OpClient(worker.port)); storeManagerClient = new StoreManagerClient(new OpClient(worker.port));

View File

@@ -24,13 +24,15 @@ const cache = createEmotionCache();
let storeManagerClient: StoreManagerClient; let storeManagerClient: StoreManagerClient;
const workerUrl = getWorkerUrl('nbstore.worker.js'); const workerUrl = getWorkerUrl('nbstore');
if ( if (
window.SharedWorker && window.SharedWorker &&
localStorage.getItem('disableSharedWorker') !== 'true' localStorage.getItem('disableSharedWorker') !== 'true'
) { ) {
const worker = new SharedWorker(workerUrl); const worker = new SharedWorker(workerUrl, {
name: 'affine-shared-worker',
});
storeManagerClient = new StoreManagerClient(new OpClient(worker.port)); storeManagerClient = new StoreManagerClient(new OpClient(worker.port));
} else { } else {
const worker = new Worker(workerUrl); const worker = new Worker(workerUrl);

View File

@@ -8,7 +8,7 @@ import {
} from '@blocksuite/affine/gfx/turbo-renderer'; } from '@blocksuite/affine/gfx/turbo-renderer';
function createPainterWorker() { function createPainterWorker() {
const worker = new Worker(getWorkerUrl('turbo-painter.worker.js')); const worker = new Worker(getWorkerUrl('turbo-painter'));
return worker; return worker;
} }

View File

@@ -7,7 +7,7 @@ export class PDFRenderer extends OpClient<ClientOps> {
private readonly worker: Worker; private readonly worker: Worker;
constructor() { constructor() {
const worker = new Worker(getWorkerUrl('pdf.worker.js')); const worker = new Worker(getWorkerUrl('pdf'));
super(worker); super(worker);
this.worker = worker; this.worker = worker;

View File

@@ -10,7 +10,7 @@ export function getWorkspaceProfileWorker() {
return worker; return worker;
} }
const rawWorker = new Worker(getWorkerUrl('workspace-profile.worker.js')); const rawWorker = new Worker(getWorkerUrl('workspace-profile'));
worker = new OpClient<WorkerOps>(rawWorker); worker = new OpClient<WorkerOps>(rawWorker);
return worker; return worker;

View File

@@ -405,10 +405,7 @@ export function createWorkerTargetConfig(
pkg: Package, pkg: Package,
entry: string entry: string
): Omit<webpack.Configuration, 'name'> & { name: string } { ): Omit<webpack.Configuration, 'name'> & { name: string } {
const workerName = path.basename(entry).replace(/\.([^.]+)$/, ''); const workerName = path.basename(entry).replace(/\.worker\.ts$/, '');
if (!workerName.endsWith('.worker')) {
throw new Error('Worker name must end with `.worker.[ext]`');
}
const buildConfig = getBuildConfigFromEnv(pkg); const buildConfig = getBuildConfigFromEnv(pkg);
return { return {
@@ -423,7 +420,7 @@ export function createWorkerTargetConfig(
[workerName]: entry, [workerName]: entry,
}, },
output: { output: {
filename: 'js/[name].js', filename: `js/${workerName}-${buildConfig.appVersion}.worker.js`,
path: pkg.distPath.value, path: pkg.distPath.value,
clean: false, clean: false,
globalObject: 'globalThis', globalObject: 'globalThis',