diff --git a/packages/qwik-router/src/buildtime/vite/plugin.ts b/packages/qwik-router/src/buildtime/vite/plugin.ts index 2adb4f399cf..b313b15a417 100644 --- a/packages/qwik-router/src/buildtime/vite/plugin.ts +++ b/packages/qwik-router/src/buildtime/vite/plugin.ts @@ -260,7 +260,8 @@ function qwikRouterPlugin(userOpts?: QwikRouterVitePluginOptions): any { }, async transform(code, id) { - if (id.startsWith('\0')) { + const isVirtualId = id.startsWith('\0'); + if (isVirtualId) { return; } const ext = extname(id).toLowerCase(); diff --git a/packages/qwik/src/optimizer/src/plugins/plugin.ts b/packages/qwik/src/optimizer/src/plugins/plugin.ts index 0ef94577b74..a0fb8b18031 100644 --- a/packages/qwik/src/optimizer/src/plugins/plugin.ts +++ b/packages/qwik/src/optimizer/src/plugins/plugin.ts @@ -21,7 +21,7 @@ import type { } from '../types'; import { convertManifestToBundleGraph } from './bundle-graph'; import { createLinter, type QwikLinter } from './eslint-plugin'; -import { isWin, parseId } from './vite-utils'; +import { isVirtualId, isWin, parseId } from './vite-utils'; const REG_CTX_NAME = ['server']; @@ -448,7 +448,7 @@ export function createQwikPlugin(optimizerOptions: OptimizerOptions = {}) { importerId: string | undefined, resolveOpts?: Parameters>[2] ) => { - if (id.startsWith('\0')) { + if (isVirtualId(id)) { return; } @@ -638,7 +638,7 @@ export function createQwikPlugin(optimizerOptions: OptimizerOptions = {}) { // This doesn't get used, but we need to return something return '"opening in editor"'; } - if (id.startsWith('\0') || id.startsWith('/@fs/')) { + if (isVirtualId(id) || id.startsWith('/@fs/')) { return; } const count = loadCount++; @@ -724,7 +724,7 @@ export function createQwikPlugin(optimizerOptions: OptimizerOptions = {}) { id: string, transformOpts = {} as Parameters>[2] ): Promise { - if (id.startsWith('\0')) { + if (isVirtualId(id)) { return; } const count = transformCount++; diff --git a/packages/qwik/src/optimizer/src/plugins/rollup.ts b/packages/qwik/src/optimizer/src/plugins/rollup.ts index 555c305b10b..c637a190711 100644 --- a/packages/qwik/src/optimizer/src/plugins/rollup.ts +++ b/packages/qwik/src/optimizer/src/plugins/rollup.ts @@ -18,6 +18,7 @@ import { type QwikPluginOptions, } from './plugin'; import { findDepPkgJsonPath } from './utils'; +import { isVirtualId } from './vite-utils'; type QwikRollupPluginApi = { getOptimizer: () => Optimizer; @@ -94,21 +95,21 @@ export function qwikRollup(qwikRollupOpts: QwikRollupPluginOptions = {}): any { }, resolveId(id, importer) { - if (id.startsWith('\0')) { + if (isVirtualId(id)) { return null; } return qwikPlugin.resolveId(this, id, importer); }, load(id) { - if (id.startsWith('\0')) { + if (isVirtualId(id)) { return null; } return qwikPlugin.load(this, id); }, transform(code, id) { - if (id.startsWith('\0')) { + if (isVirtualId(id)) { return null; } return qwikPlugin.transform(this, code, id); diff --git a/packages/qwik/src/optimizer/src/plugins/vite-utils.ts b/packages/qwik/src/optimizer/src/plugins/vite-utils.ts index 6c1c8c3de58..a0d452cecee 100644 --- a/packages/qwik/src/optimizer/src/plugins/vite-utils.ts +++ b/packages/qwik/src/optimizer/src/plugins/vite-utils.ts @@ -77,6 +77,8 @@ export const findLocation = (e: Error): Loc | undefined => { return undefined; }; +export const isVirtualId = (id: string) => id.startsWith('\0'); + const safeParseInt = (nu: string) => { try { return parseInt(nu, 10); diff --git a/packages/qwik/src/optimizer/src/plugins/vite.ts b/packages/qwik/src/optimizer/src/plugins/vite.ts index fc33d4ed2de..3869130cddc 100644 --- a/packages/qwik/src/optimizer/src/plugins/vite.ts +++ b/packages/qwik/src/optimizer/src/plugins/vite.ts @@ -27,6 +27,7 @@ import { } from './plugin'; import { createRollupError, normalizeRollupOutputOptions } from './rollup'; import { configurePreviewServer, getViteIndexTags } from './dev'; +import { isVirtualId } from './vite-utils'; const DEDUPE = [ QWIK_CORE_ID, @@ -383,14 +384,16 @@ export function qwikVite(qwikViteOpts: QwikVitePluginOptions = {}): any { }, resolveId(id, importer, resolveIdOpts) { - if (id.startsWith('\0') || !fileFilter(id, 'resolveId')) { + const shouldResolveFile = fileFilter(id, 'resolveId'); + if (isVirtualId(id) || !shouldResolveFile) { return null; } return qwikPlugin.resolveId(this, id, importer, resolveIdOpts); }, load(id, loadOpts) { - if (id.startsWith('\0') || !fileFilter(id, 'load')) { + const shouldLoadFile = fileFilter(id, 'load'); + if (isVirtualId(id) || !shouldLoadFile) { return null; } @@ -405,7 +408,9 @@ export function qwikVite(qwikViteOpts: QwikVitePluginOptions = {}): any { }, transform(code, id, transformOpts) { - if (id.startsWith('\0') || !fileFilter(id, 'transform') || id.includes('?raw')) { + const shouldTransformFile = fileFilter(id, 'transform'); + const isStringImportId = id.includes('?raw'); + if (isVirtualId(id) || !shouldTransformFile || isStringImportId) { return null; } if ( @@ -801,7 +806,7 @@ interface QwikVitePluginCommonOptions { * Predicate function to filter out files from the optimizer. hook for resolveId, load, and * transform */ - fileFilter?: (id: string, hook: string) => boolean; + fileFilter?: (id: string, hook: keyof VitePlugin) => boolean; /** * Run eslint on the source files for the ssr build or dev server. This can slow down startup on * large projects. Defaults to `true`