UNPKG

preload-links-by-lighthouse

Version:

Generate html with embedded preload links using lighthouse

42 lines 1.71 kB
(function (factory) { if (typeof module === "object" && typeof module.exports === "object") { var v = factory(require, exports); if (v !== undefined) module.exports = v; } else if (typeof define === "function" && define.amd) { define(["require", "exports"], factory); } })(function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.generatePreloadLinks = exports.DEFAULT_AS_MAPPER = exports.DEFAULT_HREF_MAPPER = void 0; const DEFAULT_HREF_MAPPER = (networkRecord) => networkRecord.url; exports.DEFAULT_HREF_MAPPER = DEFAULT_HREF_MAPPER; const DEFAULT_AS_MAPPER = (networkRecord) => { if (networkRecord.resourceType === 'Script') return 'script'; return undefined; }; exports.DEFAULT_AS_MAPPER = DEFAULT_AS_MAPPER; function generatePreloadLinks(args) { const hrefMapper = args.hrefMapper ?? exports.DEFAULT_HREF_MAPPER; const asMapper = args.asMapper ?? exports.DEFAULT_AS_MAPPER; return args.networkRecords .map((networkRecord) => { const href = hrefMapper(networkRecord); const as = asMapper(networkRecord); if (href.startsWith('data')) { console.log(networkRecord); } let preloadLink = `<link rel="preload"`; preloadLink += ` href="${href}"`; if (as) preloadLink += ` as="${as}"`; preloadLink += `>`; return preloadLink; }) .join('\n'); } exports.generatePreloadLinks = generatePreloadLinks; }); //# sourceMappingURL=preload-link-generator.js.map