UNPKG

1.03 kBJavaScriptView Raw
1'use strict';
2
3const CHUNK_OPTIONS = ['all', 'initial'];
4
5const createResourceHint = require('./resource-hints.js').createResourceHint;
6const common = require('./common.js');
7const matches = common.matches;
8const getScriptName = common.getScriptName;
9const getRawScriptName = common.getRawScriptName;
10const hasScriptName = common.hasScriptName;
11
12const optionsMatch = (option, scriptName) => {
13 return matches(option.chunks, CHUNK_OPTIONS) && matches(scriptName, option.test);
14};
15
16const addInitialChunkResourceHints = (options, tags) => {
17 return tags
18 .filter(hasScriptName)
19 .reduce((hints, tag) => {
20 const scriptName = getScriptName(options, tag);
21 if (optionsMatch(options.preload, scriptName)) {
22 hints.push(createResourceHint('preload', getRawScriptName(tag)));
23 } else if (optionsMatch(options.prefetch, scriptName)) {
24 hints.push(createResourceHint('prefetch', getRawScriptName(tag)));
25 }
26 return hints;
27 },
28 []
29 );
30};
31
32module.exports = addInitialChunkResourceHints;