'use strict'; const CHUNK_OPTIONS = ['all', 'initial']; const createResourceHint = require('./resource-hints.js').createResourceHint; const common = require('./common.js'); const matches = common.matches; const getScriptName = common.getScriptName; const getRawScriptName = common.getRawScriptName; const hasScriptName = common.hasScriptName; const optionsMatch = (option, scriptName) => { return matches(option.chunks, CHUNK_OPTIONS) && matches(scriptName, option.test); }; const addInitialChunkResourceHints = (options, tags) => { return tags .filter(hasScriptName) .reduce((hints, tag) => { const scriptName = getScriptName(options, tag); if (optionsMatch(options.preload, scriptName)) { hints.push(createResourceHint('preload', getRawScriptName(tag))); } else if (optionsMatch(options.prefetch, scriptName)) { hints.push(createResourceHint('prefetch', getRawScriptName(tag))); } return hints; }, [] ); }; module.exports = addInitialChunkResourceHints;