UNPKG

every-plugin

Version:
43 lines (42 loc) 1.32 kB
//#region src/build/rspack/fix-mf-data-uri-plugin.ts const MF_DATA_URI_MARKER = "data:text/javascript,"; var FixMfDataUriPlugin = class { name = "FixMfDataUriPlugin"; apply(compiler) { compiler.hooks.compilation.tap(this.name, (_compilation, { normalModuleFactory }) => { normalModuleFactory.hooks.beforeResolve.tap(this.name, (resolveData) => { if (!resolveData?.request) return; if (!resolveData.request.includes(MF_DATA_URI_MARKER)) return; this.reencodeDataUri(resolveData); }); }); } reencodeDataUri(resolveData) { const { request } = resolveData; const idx = request.indexOf(MF_DATA_URI_MARKER); if (idx === -1) return; const contentStart = idx + 21; const prefix = request.substring(0, contentStart); const rawContent = request.substring(contentStart); if (isAlreadyEncoded(rawContent)) return; const decoded = safeDecode(rawContent); resolveData.request = prefix + encodeURIComponent(decoded); } }; function isAlreadyEncoded(content) { try { return decodeURIComponent(content) !== content; } catch { return false; } } function safeDecode(content) { try { return decodeURIComponent(content); } catch { return content.replace(/%(?![0-9A-Fa-f]{2})/g, "%25"); } } //#endregion export { FixMfDataUriPlugin }; //# sourceMappingURL=fix-mf-data-uri-plugin.mjs.map