From b52bfb40d72b3dd0d51582a20e9cadc8aeb20f05 Mon Sep 17 00:00:00 2001 From: bluwy Date: Fri, 23 Sep 2022 14:32:28 +0800 Subject: [PATCH] fix(worker): support trailing comma --- packages/vite/src/node/plugins/workerImportMetaUrl.ts | 10 +++++++--- playground/worker/worker/main-classic.js | 4 +++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/vite/src/node/plugins/workerImportMetaUrl.ts b/packages/vite/src/node/plugins/workerImportMetaUrl.ts index 5fbd7d4883382f..6a0201a9a53707 100644 --- a/packages/vite/src/node/plugins/workerImportMetaUrl.ts +++ b/packages/vite/src/node/plugins/workerImportMetaUrl.ts @@ -38,7 +38,11 @@ function getWorkerType(raw: string, clean: string, i: number): WorkerType { } // need to find in comment code - const workerOptString = raw.substring(commaIndex + 1, endIndex) + let workerOptString = raw.substring(commaIndex + 1, endIndex).trim() + // strip trailing comma for parsing + if (workerOptString.endsWith(',')) { + workerOptString = workerOptString.slice(0, -1) + } const hasViteIgnore = ignoreFlagRE.test(workerOptString) if (hasViteIgnore) { @@ -46,8 +50,8 @@ function getWorkerType(raw: string, clean: string, i: number): WorkerType { } // need to find in no comment code - const cleanWorkerOptString = clean.substring(commaIndex + 1, endIndex) - if (!cleanWorkerOptString.trim().length) { + const cleanWorkerOptString = clean.substring(commaIndex + 1, endIndex).trim() + if (!cleanWorkerOptString.length) { return 'classic' } diff --git a/playground/worker/worker/main-classic.js b/playground/worker/worker/main-classic.js index 4ef7776a56876e..1adbd45f08d3aa 100644 --- a/playground/worker/worker/main-classic.js +++ b/playground/worker/worker/main-classic.js @@ -16,11 +16,13 @@ classicWorker.addEventListener('message', ({ data }) => { }) classicWorker.postMessage('ping') +// prettier-ignore +// test trailing comma const classicSharedWorker = new SharedWorker( new URL('../classic-shared-worker.js', import.meta.url), { type: 'classic' - } + }, ) classicSharedWorker.port.addEventListener('message', (ev) => { text('.classic-shared-worker', JSON.stringify(ev.data))