"use strict"; const stream = require("../stream"); const isCss = require("../is-css"); module.exports = function createCssDepsStream() { let dependents = new Map(); let depsPhaseItems = []; function handleItem(item) { Object.values(item.deps).forEach((dependency) => { if (!dependents.has(dependency)) { dependents.set(dependency, new Set()); } dependents.get(dependency).add(item); }); depsPhaseItems.push(item); } function flush() { return depsPhaseItems.map((item) => { let selfIsCss = isCss(item); let dependentsForItem = dependents.get(item.id); let hasDependents = (dependentsForItem != null); let dependentsAreCss = hasDependents && Array.from(dependentsForItem).every((dependent) => isCss(dependent)); return { ... item, __icssify__discardable: (selfIsCss && dependentsAreCss) }; }); } return stream(handleItem, flush); };