JezK
Edit File: get-transitive-dev-dependencies.js.map
{"version":3,"file":"get-transitive-dev-dependencies.js","names":["dependenciesObjectToPatterns","dependencies","Object","keys","map","name","getTransitiveDependencies","lockfile","roots","queue","patterns","Set","enqueue","pattern","has","add","push","forEach","transitiveDependencies","length","shift","lockManifest","getLocked","version","dependencyPatterns","optionalDependencyPatterns","optionalDependencies","setDifference","x","y","filter","value","getTransitiveDevDependencies","packageManifest","workspaceLayout","manifests","workspaces","manifest","productionRoots","developmentRoots","concat","devDependencies","productionDependencies","developmentDependencies"],"sourceRoot":"../../src","sources":["util/get-transitive-dev-dependencies.js"],"sourcesContent":["/* @flow */\n\nimport type Lockfile from '../lockfile';\nimport type WorkspaceLayout from '../workspace-layout';\n\nfunction dependenciesObjectToPatterns(dependencies: ?Object): Array<string> {\n if (!dependencies) {\n return [];\n }\n return Object.keys(dependencies).map(name => `${name}@${(dependencies || {})[name]}`);\n}\n\n// Enumerate all the transitive dependencies of a set of top-level packages\nfunction getTransitiveDependencies(lockfile: Lockfile, roots: Array<string>): Set<string> {\n // Queue of dependency patterns to visit; set of already-visited patterns\n const queue = [];\n const patterns = new Set();\n\n const enqueue = (pattern: string) => {\n if (patterns.has(pattern)) {\n return;\n }\n patterns.add(pattern);\n queue.push(pattern);\n };\n\n roots.forEach(enqueue);\n\n // Final result set\n const transitiveDependencies = new Set();\n\n while (queue.length > 0) {\n const pattern = queue.shift();\n const lockManifest = lockfile.getLocked(pattern);\n\n if (!lockManifest) {\n continue;\n }\n\n // Add the dependency to the result set\n transitiveDependencies.add(`${lockManifest.name}@${lockManifest.version}`);\n\n // Enqueue any dependencies of the dependency for processing\n\n const dependencyPatterns = dependenciesObjectToPatterns(lockManifest.dependencies);\n dependencyPatterns.forEach(enqueue);\n\n const optionalDependencyPatterns = dependenciesObjectToPatterns(lockManifest.optionalDependencies);\n optionalDependencyPatterns.forEach(enqueue);\n }\n\n return transitiveDependencies;\n}\n\nfunction setDifference<T>(x: Set<T>, y: Set<T>): Set<T> {\n return new Set([...x].filter(value => !y.has(value)));\n}\n\n// Given a manifest, an optional workspace layout, and a lockfile, enumerate\n// all package versions that:\n// i) are present in the lockfile\n// ii) are a transitive dependency of some top-level devDependency\n// iii) are not a transitive dependency of some top-level production dependency\nexport function getTransitiveDevDependencies(\n packageManifest: Object,\n workspaceLayout: ?WorkspaceLayout,\n lockfile: Lockfile,\n): Set<string> {\n // Enumerate the top-level package manifest as well as any workspace manifests\n const manifests = [packageManifest];\n if (workspaceLayout) {\n for (const name of Object.keys(workspaceLayout.workspaces)) {\n manifests.push(workspaceLayout.workspaces[name].manifest);\n }\n }\n\n // Collect all the top-level production and development dependencies across all manifests\n let productionRoots = [];\n let developmentRoots = [];\n for (const manifest of manifests) {\n productionRoots = productionRoots.concat(dependenciesObjectToPatterns(manifest.dependencies));\n productionRoots = productionRoots.concat(dependenciesObjectToPatterns(manifest.optionalDependencies));\n developmentRoots = developmentRoots.concat(dependenciesObjectToPatterns(manifest.devDependencies));\n }\n\n // Enumerate all the transitive production and development dependencies\n const productionDependencies = getTransitiveDependencies(lockfile, productionRoots);\n const developmentDependencies = getTransitiveDependencies(lockfile, developmentRoots);\n\n // Exclude any development dependencies that are also production dependencies\n return setDifference(developmentDependencies, productionDependencies);\n}\n"],"mappings":";;;;;;;;;;;;;;AAKA,SAASA,4BAA4B,CAACC,YAAqB,EAAiB;EAC1E,IAAI,CAACA,YAAY,EAAE;IACjB,OAAO,EAAE;EACX;EACA,OAAOC,MAAM,CAACC,IAAI,CAACF,YAAY,CAAC,CAACG,GAAG,CAAC,UAAAC,IAAI;IAAA,iBAAOA,IAAI,cAAI,CAACJ,YAAY,IAAI,CAAC,CAAC,EAAEI,IAAI,CAAC;EAAA,CAAE,CAAC;AACvF;;AAEA;AACA,SAASC,yBAAyB,CAACC,QAAkB,EAAEC,KAAoB,EAAe;EACxF;EACA,IAAMC,KAAK,GAAG,EAAE;EAChB,IAAMC,QAAQ,GAAG,IAAIC,GAAG,EAAE;EAE1B,IAAMC,OAAO,GAAG,SAAVA,OAAO,CAAIC,OAAe,EAAK;IACnC,IAAIH,QAAQ,CAACI,GAAG,CAACD,OAAO,CAAC,EAAE;MACzB;IACF;IACAH,QAAQ,CAACK,GAAG,CAACF,OAAO,CAAC;IACrBJ,KAAK,CAACO,IAAI,CAACH,OAAO,CAAC;EACrB,CAAC;EAEDL,KAAK,CAACS,OAAO,CAACL,OAAO,CAAC;;EAEtB;EACA,IAAMM,sBAAsB,GAAG,IAAIP,GAAG,EAAE;EAExC,OAAOF,KAAK,CAACU,MAAM,GAAG,CAAC,EAAE;IACvB,IAAMN,OAAO,GAAGJ,KAAK,CAACW,KAAK,EAAE;IAC7B,IAAMC,YAAY,GAAGd,QAAQ,CAACe,SAAS,CAACT,OAAO,CAAC;IAEhD,IAAI,CAACQ,YAAY,EAAE;MACjB;IACF;;IAEA;IACAH,sBAAsB,CAACH,GAAG,WAAIM,YAAY,CAAChB,IAAI,cAAIgB,YAAY,CAACE,OAAO,EAAG;;IAE1E;;IAEA,IAAMC,kBAAkB,GAAGxB,4BAA4B,CAACqB,YAAY,CAACpB,YAAY,CAAC;IAClFuB,kBAAkB,CAACP,OAAO,CAACL,OAAO,CAAC;IAEnC,IAAMa,0BAA0B,GAAGzB,4BAA4B,CAACqB,YAAY,CAACK,oBAAoB,CAAC;IAClGD,0BAA0B,CAACR,OAAO,CAACL,OAAO,CAAC;EAC7C;EAEA,OAAOM,sBAAsB;AAC/B;AAEA,SAASS,aAAa,CAAIC,CAAS,EAAEC,CAAS,EAAU;EACtD,OAAO,IAAIlB,GAAG,CAAC,sCAAIiB,CAAC,EAAEE,MAAM,CAAC,UAAAC,KAAK;IAAA,OAAI,CAACF,CAAC,CAACf,GAAG,CAACiB,KAAK,CAAC;EAAA,EAAC,CAAC;AACvD;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASC,4BAA4B,CAC1CC,eAAuB,EACvBC,eAAiC,EACjC3B,QAAkB,EACL;EACb;EACA,IAAM4B,SAAS,GAAG,CAACF,eAAe,CAAC;EACnC,IAAIC,eAAe,EAAE;IACnB,gCAAmBhC,MAAM,CAACC,IAAI,CAAC+B,eAAe,CAACE,UAAU,CAAC,kCAAE;MAAvD,IAAM/B,IAAI;MACb8B,SAAS,CAACnB,IAAI,CAACkB,eAAe,CAACE,UAAU,CAAC/B,IAAI,CAAC,CAACgC,QAAQ,CAAC;IAC3D;EACF;;EAEA;EACA,IAAIC,eAAe,GAAG,EAAE;EACxB,IAAIC,gBAAgB,GAAG,EAAE;EACzB,+BAAuBJ,SAAS,kCAAE;IAA7B,IAAME,QAAQ;IACjBC,eAAe,GAAGA,eAAe,CAACE,MAAM,CAACxC,4BAA4B,CAACqC,QAAQ,CAACpC,YAAY,CAAC,CAAC;IAC7FqC,eAAe,GAAGA,eAAe,CAACE,MAAM,CAACxC,4BAA4B,CAACqC,QAAQ,CAACX,oBAAoB,CAAC,CAAC;IACrGa,gBAAgB,GAAGA,gBAAgB,CAACC,MAAM,CAACxC,4BAA4B,CAACqC,QAAQ,CAACI,eAAe,CAAC,CAAC;EACpG;;EAEA;EACA,IAAMC,sBAAsB,GAAGpC,yBAAyB,CAACC,QAAQ,EAAE+B,eAAe,CAAC;EACnF,IAAMK,uBAAuB,GAAGrC,yBAAyB,CAACC,QAAQ,EAAEgC,gBAAgB,CAAC;;EAErF;EACA,OAAOZ,aAAa,CAACgB,uBAAuB,EAAED,sBAAsB,CAAC;AACvE"}