UNPKG

@web/dev-server-legacy

Version:
48 lines 1.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.findJsScripts = void 0; const valid_url_1 = require("valid-url"); const dom5_1 = require("@web/dev-server-core/dist/dom5"); function isDeferred(script) { return (0, dom5_1.getAttribute)(script, 'type') === 'module' || (0, dom5_1.hasAttribute)(script, 'defer'); } function isAsync(script) { return (0, dom5_1.hasAttribute)(script, 'async'); } function sortByLoadingPriority(a, b) { if (isAsync(a)) { return 0; } const aDeferred = isDeferred(a); const bDeferred = isDeferred(b); if (aDeferred && bDeferred) { return 0; } if (aDeferred) { return 1; } if (bDeferred) { return -1; } return 0; } function findJsScripts(document) { const allScripts = (0, dom5_1.queryAll)(document, dom5_1.predicates.hasTagName('script')); return allScripts .filter(script => { var _a; const inline = !(0, dom5_1.hasAttribute)(script, 'src'); const type = (0, dom5_1.getAttribute)(script, 'type'); // we don't handle scripts which import from a URL (ex. a CDN) if (!inline && (0, valid_url_1.isUri)((_a = (0, dom5_1.getAttribute)(script, 'src')) !== null && _a !== void 0 ? _a : '')) { return false; } if (!type || ['application/javascript', 'text/javascript', 'module'].includes(type)) { return true; } return false; }) .sort(sortByLoadingPriority); } exports.findJsScripts = findJsScripts; //# sourceMappingURL=findJsScripts.js.map