| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 | 'use strict';const CHUNK_OPTIONS = ['all', 'async'];const getPublicPath = require('./common.js').getPublicPath;const createResourceHint = require('./resource-hints.js').createResourceHint;const matches = require('./common.js').matches;const addAsyncChunkResourceHints = (chunks, options) => {  const getRef = generateRef(options);  const hints = [];  chunks    .filter(chunk => !isInitial(chunk))    .reduce(      (files, chunk) => files.concat(chunk.files),      [])    .forEach(file => {      if (optionsMatch(options.preload, file)) {        hints.push(createResourceHint('preload', getRef(file)));      } else if (optionsMatch(options.prefetch, file)) {        hints.push(createResourceHint('prefetch', getRef(file)));      }    });  return hints;};const isInitial = chunk =>  chunk.canBeInitial    ? chunk.canBeInitial()    : chunk.isInitial      ? chunk.isInitial()      : chunk.isInitial;const optionsMatch = (option, file) => {  return matches(option.chunks, CHUNK_OPTIONS) && matches(file, option.test);};const generateRef = options => {  const publicPath = getPublicPath(options);  return publicPath    ? file => publicPath + file    : file => file;};module.exports = addAsyncChunkResourceHints;
 |