From e79e4c9e9bf879f9868052b8f4548b2823a41741 Mon Sep 17 00:00:00 2001 From: liuyi Date: Thu, 10 Apr 2025 19:12:49 +0800 Subject: [PATCH] refactor(core): add version in worker url (#11614) Co-authored-by: renovate <29139614+renovate@users.noreply.github.com> --- packages/common/env/src/worker.ts | 8 +++----- packages/frontend/apps/android/src/app.tsx | 2 +- packages/frontend/apps/ios/src/app.tsx | 2 +- packages/frontend/apps/mobile/src/app.tsx | 2 +- packages/frontend/apps/web/src/app.tsx | 6 ++++-- .../core/src/blocksuite/extensions/turbo-renderer.ts | 2 +- .../frontend/core/src/modules/pdf/renderer/renderer.ts | 2 +- .../core/src/modules/workspace-engine/impls/out-worker.ts | 2 +- tools/cli/src/webpack/index.ts | 7 ++----- 9 files changed, 15 insertions(+), 18 deletions(-) diff --git a/packages/common/env/src/worker.ts b/packages/common/env/src/worker.ts index e14724be7..41f79f465 100644 --- a/packages/common/env/src/worker.ts +++ b/packages/common/env/src/worker.ts @@ -1,7 +1,5 @@ export function getWorkerUrl(name: string) { - if (BUILD_CONFIG.debug && !name.endsWith('.worker.js')) { - throw new Error(`worker should be named with '.worker.js', get ${name}`); - } - - return environment.workerPath + name + '?v=' + BUILD_CONFIG.appVersion; + return ( + environment.workerPath + `${name}-${BUILD_CONFIG.appVersion}.worker.js` + ); } diff --git a/packages/frontend/apps/android/src/app.tsx b/packages/frontend/apps/android/src/app.tsx index 6e35931c1..a5f10231b 100644 --- a/packages/frontend/apps/android/src/app.tsx +++ b/packages/frontend/apps/android/src/app.tsx @@ -48,7 +48,7 @@ import { AffineTheme } from './plugins/affine-theme'; import { AIButton } from './plugins/ai-button'; const storeManagerClient = new StoreManagerClient( - new OpClient(new Worker(getWorkerUrl('nbstore.worker.js'))) + new OpClient(new Worker(getWorkerUrl('nbstore'))) ); window.addEventListener('beforeunload', () => { storeManagerClient.dispose(); diff --git a/packages/frontend/apps/ios/src/app.tsx b/packages/frontend/apps/ios/src/app.tsx index 9261da90c..416de87aa 100644 --- a/packages/frontend/apps/ios/src/app.tsx +++ b/packages/frontend/apps/ios/src/app.tsx @@ -407,7 +407,7 @@ export function App() { } function createStoreManagerClient() { - const worker = new Worker(getWorkerUrl('nbstore.worker.js')); + const worker = new Worker(getWorkerUrl('nbstore')); const { port1: nativeDBApiChannelServer, port2: nativeDBApiChannelClient } = new MessageChannel(); AsyncCall(NbStoreNativeDBApis, { diff --git a/packages/frontend/apps/mobile/src/app.tsx b/packages/frontend/apps/mobile/src/app.tsx index 6ccbbc85d..f078e08a5 100644 --- a/packages/frontend/apps/mobile/src/app.tsx +++ b/packages/frontend/apps/mobile/src/app.tsx @@ -23,7 +23,7 @@ import { RouterProvider } from 'react-router-dom'; let storeManagerClient: StoreManagerClient; -const workerUrl = getWorkerUrl('nbstore.worker.js'); +const workerUrl = getWorkerUrl('nbstore'); if (window.SharedWorker) { const worker = new SharedWorker(workerUrl, { name: 'affine-shared-worker' }); storeManagerClient = new StoreManagerClient(new OpClient(worker.port)); diff --git a/packages/frontend/apps/web/src/app.tsx b/packages/frontend/apps/web/src/app.tsx index 40d08c27c..8db03f263 100644 --- a/packages/frontend/apps/web/src/app.tsx +++ b/packages/frontend/apps/web/src/app.tsx @@ -24,13 +24,15 @@ const cache = createEmotionCache(); let storeManagerClient: StoreManagerClient; -const workerUrl = getWorkerUrl('nbstore.worker.js'); +const workerUrl = getWorkerUrl('nbstore'); if ( window.SharedWorker && 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)); } else { const worker = new Worker(workerUrl); diff --git a/packages/frontend/core/src/blocksuite/extensions/turbo-renderer.ts b/packages/frontend/core/src/blocksuite/extensions/turbo-renderer.ts index 76aa11abe..70478278c 100644 --- a/packages/frontend/core/src/blocksuite/extensions/turbo-renderer.ts +++ b/packages/frontend/core/src/blocksuite/extensions/turbo-renderer.ts @@ -8,7 +8,7 @@ import { } from '@blocksuite/affine/gfx/turbo-renderer'; function createPainterWorker() { - const worker = new Worker(getWorkerUrl('turbo-painter.worker.js')); + const worker = new Worker(getWorkerUrl('turbo-painter')); return worker; } diff --git a/packages/frontend/core/src/modules/pdf/renderer/renderer.ts b/packages/frontend/core/src/modules/pdf/renderer/renderer.ts index f25c41842..8029980f4 100644 --- a/packages/frontend/core/src/modules/pdf/renderer/renderer.ts +++ b/packages/frontend/core/src/modules/pdf/renderer/renderer.ts @@ -7,7 +7,7 @@ export class PDFRenderer extends OpClient { private readonly worker: Worker; constructor() { - const worker = new Worker(getWorkerUrl('pdf.worker.js')); + const worker = new Worker(getWorkerUrl('pdf')); super(worker); this.worker = worker; diff --git a/packages/frontend/core/src/modules/workspace-engine/impls/out-worker.ts b/packages/frontend/core/src/modules/workspace-engine/impls/out-worker.ts index 19f531c81..1b27f929b 100644 --- a/packages/frontend/core/src/modules/workspace-engine/impls/out-worker.ts +++ b/packages/frontend/core/src/modules/workspace-engine/impls/out-worker.ts @@ -10,7 +10,7 @@ export function getWorkspaceProfileWorker() { return worker; } - const rawWorker = new Worker(getWorkerUrl('workspace-profile.worker.js')); + const rawWorker = new Worker(getWorkerUrl('workspace-profile')); worker = new OpClient(rawWorker); return worker; diff --git a/tools/cli/src/webpack/index.ts b/tools/cli/src/webpack/index.ts index fccc6427e..976ee5c74 100644 --- a/tools/cli/src/webpack/index.ts +++ b/tools/cli/src/webpack/index.ts @@ -405,10 +405,7 @@ export function createWorkerTargetConfig( pkg: Package, entry: string ): Omit & { name: string } { - const workerName = path.basename(entry).replace(/\.([^.]+)$/, ''); - if (!workerName.endsWith('.worker')) { - throw new Error('Worker name must end with `.worker.[ext]`'); - } + const workerName = path.basename(entry).replace(/\.worker\.ts$/, ''); const buildConfig = getBuildConfigFromEnv(pkg); return { @@ -423,7 +420,7 @@ export function createWorkerTargetConfig( [workerName]: entry, }, output: { - filename: 'js/[name].js', + filename: `js/${workerName}-${buildConfig.appVersion}.worker.js`, path: pkg.distPath.value, clean: false, globalObject: 'globalThis',