vike
Version:
The Framework *You* Control - Next.js & Nuxt alternative for unprecedented flexibility and dependability.
30 lines (29 loc) • 1.32 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.isFontFallback = isFontFallback;
const assert_js_1 = require("../../../utils/assert.js");
function isFontFallback(asset, pageAssets) {
if (asset.assetType !== 'font') {
return false;
}
const fontUrlBase = removeFileExtensionAndHash(asset.src);
return pageAssets.some((assetOther) => {
return assetOther.assetType === 'font' && removeFileExtensionAndHash(assetOther.src) === fontUrlBase;
});
}
function removeFileExtensionAndHash(assetUrl) {
(0, assert_js_1.assert)(!assetUrl.includes('\\'));
// The logic below doesn't work for '/assets/chunk-0e184ced.js'
(0, assert_js_1.assert)(!assetUrl.endsWith('.js'));
const paths = assetUrl.split('/');
{
const filename = paths[paths.length - 1];
const filenameParts = filename.split('.');
(0, assert_js_1.assert)(filenameParts.length >= 2);
// User may set config.build.rollupOptions.output.assetFileNames => we can't assume the filename to be `*.${hash}.${ext}`
const filenameBase = filenameParts.slice(0, filenameParts.length === 2 ? -1 : -2);
(0, assert_js_1.assert)(filenameBase.length >= 1);
paths[paths.length - 1] = filenameBase.join('.');
}
return paths.join('/');
}