| '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; |