/**
 * Creates a bundle object that is stored on req.bundle.
 */
function createBundle(webpackStats) {
  const { publicPath, assetsByChunkName } = webpackStats;

  const createURL = asset => publicPath + asset;

  const getAssets = (chunks = ["main"]) =>
    (Array.isArray(chunks) ? chunks : [chunks])
      .reduce((memo, chunk) => memo.concat(assetsByChunkName[chunk] || []), [])
      .map(createURL);

  const getScripts = (...args) =>
    getAssets(...args).filter(asset => /\.js$/.test(asset));

  const getStyles = (...args) =>
    getAssets(...args).filter(asset => /\.css$/.test(asset));

  return {
    createURL,
    getAssets,
    getScripts,
    getStyles
  };
}

module.exports = createBundle;