function mergeChunkMetadata()

in fusion-cli/build/merge-chunk-metadata.js [16:66]


function mergeChunkMetadata(
  arr /*: Array<ClientChunkMetadata> */
) /*: ClientChunkMetadata */ {
  const base = {
    fileManifest: new Map(),
    urlMap: new Map(),
    criticalPaths: [],
    criticalIds: [],
    chunks: new Map(),
    runtimeChunkIds: new Set(),
    initialChunkIds: new Set(),
  };
  arr = arr.reverse();

  return arr.reduce((acc, item) => {
    for (let [key, val] of item.fileManifest) {
      if (acc.fileManifest.has(key)) {
        let set = acc.fileManifest.get(key);
        for (let el of val) {
          // $FlowFixMe
          set.add(el);
        }
      } else {
        acc.fileManifest.set(key, val);
      }
    }
    for (let [key, val] of item.urlMap) {
      acc.urlMap.set(key, val);
    }
    for (let [key, val] of item.chunks) {
      acc.chunks.set(key, val);
    }
    for (let val of item.runtimeChunkIds) {
      acc.runtimeChunkIds.add(val);
    }
    for (let val of item.initialChunkIds) {
      acc.initialChunkIds.add(val);
    }
    for (let path of item.criticalPaths) {
      if (!acc.criticalPaths.includes(path)) {
        acc.criticalPaths.push(path);
      }
    }
    for (let id of item.criticalIds) {
      if (!acc.criticalIds.includes(id)) {
        acc.criticalIds.push(id);
      }
    }
    return acc;
  }, base);
}