vike
Version:
The Framework *You* Control - Next.js & Nuxt alternative for unprecedented flexibility and dependability.
35 lines (34 loc) • 1.09 kB
JavaScript
export { sortPageAssetsForEarlyHintsHeader };
import { higherFirst } from '../../utils.js';
async function sortPageAssetsForEarlyHintsHeader(pageAssets, isProduction) {
pageAssets.sort(higherFirst(({ assetType }) => {
// In dev, we load scripts first in order to parallelize I/O and CPU
if (!isProduction && assetType === 'script') {
return 1;
}
let priority = 0;
// CSS has highest priority
if (assetType === 'style')
return priority;
priority--;
// Visual assets have high priority
if (assetType === 'font')
return priority;
priority--;
if (assetType === 'image')
return priority;
priority--;
if (assetType === 'video')
return priority;
priority--;
if (assetType === 'audio')
return priority;
priority--;
// Others
if (assetType !== 'script')
return priority;
priority--;
// JavaScript has lowest priority
return priority;
}));
}