diff --git a/lib/addons/10x/loader.cjs b/lib/addons/10x/loader.cjs index d27036cce..b733cf833 100644 --- a/lib/addons/10x/loader.cjs +++ b/lib/addons/10x/loader.cjs @@ -11,8 +11,20 @@ module.exports = function (source) { .join("\n"); } - // add resource query to all import and export - return source.replace(/(import|export).+?from +['"`]\..+?['"`]/g, str => { - return str.slice(0, -1) + this.resourceQuery + str.slice(-1); - }); + const appendQuery = (specifier, query) => { + if (!specifier.startsWith(".")) return specifier; + if (specifier.includes(query)) return specifier; + return specifier.includes("?") ? `${specifier}&${query.slice(1)}` : `${specifier}${query}`; + }; + + // Add resource query to relative import/export specifiers, including multiline imports and side-effect imports. + const withFrom = source.replace( + /(from\s*['"`])([^'"`]+)(['"`])/g, + (_, prefix, specifier, suffix) => `${prefix}${appendQuery(specifier, this.resourceQuery)}${suffix}` + ); + + return withFrom.replace( + /(import\s*['"`])([^'"`]+)(['"`])/g, + (_, prefix, specifier, suffix) => `${prefix}${appendQuery(specifier, this.resourceQuery)}${suffix}` + ); };