@teambit/dependency-resolver 1.0.624 → 1.0.626
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -419,7 +419,7 @@ function groupByRangeOrVersion(indexItems) {
|
|
|
419
419
|
function isRange(version, compIdStr) {
|
|
420
420
|
const validRange = _semver().default.validRange(version);
|
|
421
421
|
if (!validRange) {
|
|
422
|
-
if (!(0, _componentVersion().isHash)(version) && !version.startsWith('workspace:')) {
|
|
422
|
+
if (!(0, _componentVersion().isHash)(version) && !version.startsWith('workspace:') && !version.startsWith('npm:')) {
|
|
423
423
|
throw new Error(`fatal: the version "${version}" originated from a dependent "${compIdStr}" is invalid semver range and not a hash`);
|
|
424
424
|
}
|
|
425
425
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_lodash","data","require","_semver","_interopRequireDefault","_semverIntersect","_semverRangeIntersect","_componentVersion","_constants","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","hoistDependencies","depIdIndex","options","result","getEmptyDedupedDependencies","indexItem","packageName","toContinue","handlePreserved","addOneOccurrenceToRoot","componentItems","handlePeersOnly","dedupePeerDependencies","groupedByRangeOrVersion","groupByRangeOrVersion","versions","ranges","handleExactVersionsOnly","handleRangesOnly","handleRangesAndVersions","dedupedDependencies","preservedVersion","metadata","preservedLifecycleType","keyName","KEY_NAME_BY_LIFECYCLE_TYPE","rootDependencies","filterFunc","item","intersect","range","map","addToComponentDependenciesMapInDeduped","indexItems","uniqVersions","uniq","lifecycleType","nonPeerItems","PEER_DEP_LIFECYCLE_TYPE","allRanges","intersected","conflictedComponents","componentPackageName","origin","conflictMessage","c","join","issue","issus","peerConflicts","allVersions","mostCommonVersion","findMostCommonVersion","version","lifeCycleType","getLifecycleType","depKeyName","rangesVersions","bestRange","findBestRange","intersectedRange","includes","groups","count","sortedByTotal","getSortedRangesCombination","combinationWithTotal","combination","total","counts","countBy","uniqRanges","rangesCombinations","arrayCombinations","countMultipleRanges","items","reduce","acc","curr","rangesCombinationsWithTotalCount","sortBy","property","reverse","DEV_DEP_LIFECYCLE_TYPE","RUNTIME_DEP_LIFECYCLE_TYPE","semver","gt","toFilter","compEntry","componentDependenciesMap","get","dependencies","optionalDependencies","devDependencies","peerDependencies","set","isVersionRange","isRange","compIdStr","validRange","isHash","startsWith","Error","parsed","parseRange","condition","array","fn","n","src","got","all","j","slice","concat","Map"],"sources":["hoist-dependencies.ts"],"sourcesContent":["import { countBy, forEach, property, sortBy, uniq } from 'lodash';\nimport semver from 'semver';\nimport { parseRange } from 'semver-intersect';\nimport { intersect } from 'semver-range-intersect';\nimport { isHash } from '@teambit/component-version';\n\nimport {\n DEV_DEP_LIFECYCLE_TYPE,\n KEY_NAME_BY_LIFECYCLE_TYPE,\n PEER_DEP_LIFECYCLE_TYPE,\n RUNTIME_DEP_LIFECYCLE_TYPE,\n} from '../../dependencies/constants';\nimport { DependencyLifecycleType, SemverVersion, PackageName } from '../../dependencies';\nimport { DedupedDependencies, DedupedDependenciesPeerConflicts } from './dedupe-dependencies';\nimport { PackageNameIndex, PackageNameIndexItem, PackageNameIndexComponentItem } from './index-by-dep-id';\n\ntype ItemsGroupedByRangeOrVersion = {\n ranges: PackageNameIndexComponentItem[];\n versions: PackageNameIndexComponentItem[];\n};\n\ntype MostCommonVersion = {\n version: SemverVersion;\n count: number;\n};\n\ntype BestRange = {\n count: number;\n ranges: SemverVersion[];\n intersectedRange: SemverVersion;\n};\n\ntype CombinationWithTotal = {\n combination: SemverVersion[];\n total: number;\n};\n\n/**\n * This is the second phase of the deduping process.\n * It will get the index calculated in the first phase (with dep id as key)\n * and will find the most intersect range for each dep and move it to the root\n * it will also move deps which are both dev deps and runtime deps to be runtime deps\n *\n * @param {PackageNameIndex} depIdIndex\n * @returns {DedupedDependencies}\n */\nexport function hoistDependencies(\n depIdIndex: PackageNameIndex,\n options?: { dedupePeerDependencies?: boolean }\n): DedupedDependencies {\n const result: DedupedDependencies = getEmptyDedupedDependencies();\n\n // TODO: handle git urls\n\n depIdIndex.forEach((indexItem, packageName) => {\n let toContinue;\n toContinue = handlePreserved(result, packageName, indexItem);\n if (!toContinue) return;\n toContinue = addOneOccurrenceToRoot(result, packageName, indexItem.componentItems);\n if (!toContinue) return;\n toContinue = handlePeersOnly(result, packageName, indexItem.componentItems);\n if (!toContinue && !options?.dedupePeerDependencies) return;\n const groupedByRangeOrVersion = groupByRangeOrVersion(indexItem.componentItems);\n if (groupedByRangeOrVersion.versions.length > 0 && groupedByRangeOrVersion.ranges.length === 0) {\n handleExactVersionsOnly(result, packageName, indexItem.componentItems);\n } else if (groupedByRangeOrVersion.versions.length === 0 && groupedByRangeOrVersion.ranges.length > 0) {\n handleRangesOnly(result, packageName, indexItem.componentItems);\n } else {\n handleRangesAndVersions(result, packageName, indexItem.componentItems, groupedByRangeOrVersion);\n }\n });\n\n return result;\n}\n\nfunction handlePreserved(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n indexItem: PackageNameIndexItem\n): boolean {\n const preservedVersion = indexItem.metadata.preservedVersion;\n // Not preserved, move on\n if (!preservedVersion) {\n return true;\n }\n\n const preservedLifecycleType = indexItem.metadata.preservedLifecycleType;\n\n const keyName = KEY_NAME_BY_LIFECYCLE_TYPE[preservedLifecycleType || 'dependencies'];\n dedupedDependencies.rootDependencies[keyName][packageName] = preservedVersion;\n\n const filterFunc = (item: PackageNameIndexComponentItem) => {\n // items which are intersect with the preserved version won't needed to be installed nested in the component\n // this in very rare cases might create bugs in case the version are intersects, but the real version in the registry\n // which satisfies the preserved not satisfy the item range.\n // In such case I would expect to get version not exist when coming to install the version in the nested component\n return !!intersect(item.range, preservedVersion);\n };\n\n indexItem.componentItems.map(addToComponentDependenciesMapInDeduped(dedupedDependencies, packageName, filterFunc));\n return false;\n}\n\n/**\n * In case there is only one component with a specific dependency,\n * OR\n * all the components have the same version of the dependency\n * add it to the root\n * (it used to check also if it's not peer, but we remove it for bit sign support)\n *\n * @param {DedupedDependencies} dedupedDependencies\n * @param {PackageName} packageName\n * @param {PackageNameIndexComponentItem} indexItem\n */\nfunction addOneOccurrenceToRoot(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n indexItems: PackageNameIndexComponentItem[]\n): boolean {\n if (indexItems.length > 1) {\n const uniqVersions = uniq(indexItems.map((item) => item.range));\n if (uniqVersions.length > 1) {\n return true;\n }\n }\n const indexItem = indexItems[0];\n // if (indexItem.lifecycleType !== PEER_DEP_LIFECYCLE_TYPE) {\n const keyName = KEY_NAME_BY_LIFECYCLE_TYPE[indexItem.lifecycleType];\n dedupedDependencies.rootDependencies[keyName][packageName] = indexItem.range;\n return false;\n // }\n // return true;\n}\n\n/**\n * Handle a case where the package appear as a peer for all its deponents\n * in that case we won't hoist it to the root, we will only notify about conflicts\n *\n * @param {DedupedDependencies} dedupedDependencies\n * @param {PackageName} packageName\n * @param {PackageNameIndexComponentItem[]} indexItems\n * @returns {boolean}\n */\nfunction handlePeersOnly(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n indexItems: PackageNameIndexComponentItem[]\n): boolean {\n const nonPeerItems = indexItems.filter((item) => {\n return item.lifecycleType !== PEER_DEP_LIFECYCLE_TYPE;\n });\n if (nonPeerItems.length > 0) {\n return true;\n }\n const allRanges = indexItems.map((item) => item.range);\n const intersected = intersect(...allRanges);\n if (intersected) {\n // Add to peers for each component to make sure we are getting warning from the package manager about missing peers\n indexItems.map(addToComponentDependenciesMapInDeduped(dedupedDependencies, packageName));\n } else {\n indexItems.map(addToComponentDependenciesMapInDeduped(dedupedDependencies, packageName));\n // There are peer version with conflicts, let the user know about it\n const conflictedComponents = indexItems.map((item) => {\n return {\n componentPackageName: item.origin,\n range: item.range,\n };\n });\n const conflictMessage = `The following components has conflicted peer dependencies: ${conflictedComponents\n .map((c) => c.componentPackageName)\n .join(',')} for the dependency: ${packageName}`;\n const issue: DedupedDependenciesPeerConflicts = {\n packageName,\n conflictedComponents,\n conflictMessage,\n };\n dedupedDependencies.issus?.peerConflicts.push(issue);\n }\n return false;\n}\n\n/**\n * This will handle a case when there is only exact version in the index\n * In such case it will take the most common version and hoist it to the root\n * It will set all the other version in the corresponding components\n * This assume the items has been already checked to contain only exact versions\n *\n * @param {DedupedDependencies} dedupedDependencies\n * @param {PackageName} packageName\n * @param {PackageNameIndexComponentItem[]} indexItems\n */\nfunction handleExactVersionsOnly(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n indexItems: PackageNameIndexComponentItem[]\n): void {\n const allVersions = indexItems.map((item) => item.range);\n\n // Add most common version to root\n const mostCommonVersion = findMostCommonVersion(allVersions).version;\n const lifeCycleType = getLifecycleType(indexItems);\n const depKeyName = KEY_NAME_BY_LIFECYCLE_TYPE[lifeCycleType];\n dedupedDependencies.rootDependencies[depKeyName][packageName] = mostCommonVersion;\n\n const filterFunc = (item) => {\n if (item.range === mostCommonVersion) return true;\n return false;\n };\n\n indexItems.forEach(addToComponentDependenciesMapInDeduped(dedupedDependencies, packageName, filterFunc));\n}\n\n/**\n * This will handle a case when there is only ranges in the index\n * In such case it will search for an intersection with the most components and hoist it to the root\n * It will set all the other ranges in the corresponding components\n * This assume the items has been already checked to contain only ranges\n *\n * @param {DedupedDependencies} dedupedDependencies\n * @param {PackageName} packageName\n * @param {PackageNameIndexComponentItem[]} indexItems\n */\nfunction handleRangesOnly(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n indexItems: PackageNameIndexComponentItem[]\n): void {\n const rangesVersions = indexItems.map((item) => item.range);\n const bestRange = findBestRange(rangesVersions);\n const lifeCycleType = getLifecycleType(indexItems);\n const depKeyName = KEY_NAME_BY_LIFECYCLE_TYPE[lifeCycleType];\n dedupedDependencies.rootDependencies[depKeyName][packageName] = bestRange.intersectedRange;\n\n const filterFunc = (item) => {\n if (bestRange.ranges.includes(item.range)) return true;\n return false;\n };\n\n indexItems.forEach(addToComponentDependenciesMapInDeduped(dedupedDependencies, packageName, filterFunc));\n}\n\n/**\n * This will handle a case when there is both ranges and exact versions in the index\n * it will find the best range and see how many components it fits\n * it will find the most common version and see how many components it fits\n * Then it will take the best of them and hoist into the root and put others in the components\n * TODO: this can be improved by adding to the ranges count the satisfying exact versions\n *\n * @param {DedupedDependencies} dedupedDependencies\n * @param {PackageName} packageName\n * @param {PackageNameIndexComponentItem[]} indexItems\n * @param {ItemsGroupedByRangeOrVersion} groups\n */\nfunction handleRangesAndVersions(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n indexItems: PackageNameIndexComponentItem[],\n groups: ItemsGroupedByRangeOrVersion\n): void {\n const allVersions = groups.versions.map((item) => item.range);\n const mostCommonVersion = findMostCommonVersion(allVersions);\n // Include versions here since we might have a specific version which match the best version as well\n const rangesVersions = indexItems.map((item) => item.range);\n const bestRange = findBestRange(rangesVersions);\n const lifeCycleType = getLifecycleType(indexItems);\n const depKeyName = KEY_NAME_BY_LIFECYCLE_TYPE[lifeCycleType];\n\n let filterFunc = (item) => {\n if (bestRange.ranges.includes(item.range)) return true;\n return false;\n };\n\n if (bestRange.count < mostCommonVersion.count) {\n dedupedDependencies.rootDependencies[depKeyName][packageName] = mostCommonVersion.version;\n filterFunc = (item) => {\n if (item.range === mostCommonVersion) return true;\n return false;\n };\n } else {\n dedupedDependencies.rootDependencies[depKeyName][packageName] = bestRange.intersectedRange;\n }\n indexItems.forEach(addToComponentDependenciesMapInDeduped(dedupedDependencies, packageName, filterFunc));\n}\n\n/**\n * Finding the best range - a range the intersect as many ranges as possible\n * it will work by create all the possible combination of the ranges\n * then try to intersect them based on the number of the ranges (items) and how many times they appear in the original array\n *\n * @param {SemverVersion[]} ranges\n * @returns {BestRange}\n */\nfunction findBestRange(ranges: SemverVersion[]): BestRange {\n const result: BestRange = {\n ranges: [],\n intersectedRange: '0.0.0',\n count: 0,\n };\n\n const sortedByTotal = getSortedRangesCombination(ranges);\n let i = 0;\n // Since it's already sorted by count, once we found match we can stop looping\n while (result.count === 0 && i < sortedByTotal.length) {\n const combinationWithTotal = sortedByTotal[i];\n const intersectedRange = intersect(...combinationWithTotal.combination);\n if (intersectedRange) {\n result.intersectedRange = intersectedRange;\n result.ranges = combinationWithTotal.combination;\n result.count = combinationWithTotal.total;\n } else {\n i += 1;\n }\n }\n return result;\n}\n\n// function getSortedVersionsWithTotal(versions: SemverVersion[]): VersionWithTotal[] {\n// const counts = countBy((item) => item)(versions);\n// const uniqVersions = uniq(versions);\n// const versionsWithTotalCount = uniqVersions.map((version) => {\n// return {\n// version,\n// total: counts[version],\n// };\n// });\n\n// const sortByTotal = sortBy(prop('total'));\n// const sortedByTotal = sortByTotal(versionsWithTotalCount).reverse();\n// return sortedByTotal;\n// }\n\nfunction getSortedRangesCombination(ranges: SemverVersion[]): CombinationWithTotal[] {\n const counts = countBy(ranges, (item) => item);\n const uniqRanges = uniq(ranges);\n const rangesCombinations = arrayCombinations<SemverVersion>(uniqRanges);\n const countMultipleRanges = (items: SemverVersion[]): number => {\n return items.reduce((acc, curr) => {\n return acc + counts[curr];\n }, 0);\n };\n // The count is count of the items and for each item how many times it appear in the original ranges\n // Since there might be same range multiple time in the original ranges array.\n\n const rangesCombinationsWithTotalCount = rangesCombinations.map((combination) => {\n return {\n combination,\n total: countMultipleRanges(combination),\n };\n });\n\n const sortedByTotal = sortBy(rangesCombinationsWithTotalCount, property('total')).reverse();\n return sortedByTotal;\n}\n\n/**\n * Check if a package should be a dev dependency or runtime dependency by checking if it appears as runtime dependency at least once\n *\n * @param {PackageNameIndexComponentItem[]} indexItems\n * @returns {DependencyLifecycleType}\n */\nfunction getLifecycleType(indexItems: PackageNameIndexComponentItem[]): DependencyLifecycleType {\n let result: DependencyLifecycleType = DEV_DEP_LIFECYCLE_TYPE;\n indexItems.forEach((item) => {\n if (item.lifecycleType === RUNTIME_DEP_LIFECYCLE_TYPE) {\n result = RUNTIME_DEP_LIFECYCLE_TYPE;\n }\n });\n return result;\n}\n\n/**\n * Find the version that appears the most\n *\n * @param {SemverVersion[]} versions\n * @returns {MostCommonVersion}\n */\nfunction findMostCommonVersion(versions: SemverVersion[]): MostCommonVersion {\n const counts = countBy(versions, (item) => item);\n const result: MostCommonVersion = {\n version: '0.0.0',\n count: 0,\n };\n forEach(counts, (count, version) => {\n if (count > result.count || (count === result.count && semver.gt(version, result.version))) {\n result.version = version;\n result.count = count;\n }\n });\n return result;\n}\n\n/**\n * A wrapper function used to be passed to map on index items and add it to a component dependency in the deduped dependencies if it's filter function return false\n *\n * @param {DedupedDependencies} dedupedDependencies\n * @param {PackageName} packageName\n * @param {(item: PackageNameIndexComponentItem) => boolean} [filterFunc]\n * @returns\n */\nfunction addToComponentDependenciesMapInDeduped(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n filterFunc?: (item: PackageNameIndexComponentItem) => boolean\n) {\n return (indexItem: PackageNameIndexComponentItem) => {\n if (filterFunc && typeof filterFunc === 'function') {\n const toFilter = filterFunc(indexItem);\n if (toFilter) return;\n }\n let compEntry = dedupedDependencies.componentDependenciesMap.get(indexItem.origin);\n const depKeyName = KEY_NAME_BY_LIFECYCLE_TYPE[indexItem.lifecycleType];\n if (!compEntry) {\n compEntry = {\n dependencies: {},\n optionalDependencies: {},\n devDependencies: {},\n peerDependencies: {},\n };\n }\n compEntry[depKeyName] = {\n ...compEntry[depKeyName],\n [packageName]: indexItem.range,\n };\n dedupedDependencies.componentDependenciesMap.set(indexItem.origin, compEntry);\n };\n}\n\n/**\n * Get an array of index items and group them to items with ranges and items with exact version\n *\n * @param {PackageNameIndexComponentItem[]} indexItems\n * @returns {ItemsGroupedByRangeOrVersion}\n */\nfunction groupByRangeOrVersion(indexItems: PackageNameIndexComponentItem[]): ItemsGroupedByRangeOrVersion {\n const result: ItemsGroupedByRangeOrVersion = {\n ranges: [],\n versions: [],\n };\n indexItems.forEach((item) => {\n const isVersionRange = isRange(item.range, item.origin);\n if (isVersionRange) {\n result.ranges.push(item);\n } else {\n result.versions.push(item);\n }\n });\n return result;\n}\n\nexport function isRange(version: string, compIdStr: string) {\n const validRange = semver.validRange(version);\n if (!validRange) {\n if (!isHash(version) && !version.startsWith('workspace:')) {\n throw new Error(\n `fatal: the version \"${version}\" originated from a dependent \"${compIdStr}\" is invalid semver range and not a hash`\n );\n }\n return false;\n }\n // parseRange does not support `*` as version\n // `*` does not affect resulted version, it might be just ignored\n if (validRange === '*') {\n return true;\n }\n const parsed = parseRange(validRange);\n if (parsed.condition === '=') {\n return false;\n }\n return true;\n}\n\n// Taken from https://web.archive.org/web/20140418004051/http://dzone.com/snippets/calculate-all-combinations\n/**\n * Return all combinations of array items. for example:\n * arrayCombinations([1,2]) == [[1], [2], [1,2]];\n *\n * @param {Array<T>} array\n * @returns {Array<T[]>}\n */\nfunction arrayCombinations<T>(array: Array<T>): Array<T[]> {\n const fn = function (n, src, got, all) {\n if (n === 0) {\n if (got.length > 0) {\n all[all.length] = got;\n }\n return;\n }\n // eslint-disable-next-line\n for (let j = 0; j < src.length; j++) {\n fn(n - 1, src.slice(j + 1), got.concat([src[j]]), all);\n }\n };\n const all: Array<T[]> = [];\n // eslint-disable-next-line\n for (let i = 0; i < array.length; i++) {\n fn(i, array, [], all);\n }\n all.push(array);\n return all;\n}\n\nexport function getEmptyDedupedDependencies(): DedupedDependencies {\n const result: DedupedDependencies = {\n rootDependencies: {\n dependencies: {},\n optionalDependencies: {},\n devDependencies: {},\n peerDependencies: {},\n },\n componentDependenciesMap: new Map(),\n issus: {\n peerConflicts: [],\n },\n };\n return result;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_lodash","data","require","_semver","_interopRequireDefault","_semverIntersect","_semverRangeIntersect","_componentVersion","_constants","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","hoistDependencies","depIdIndex","options","result","getEmptyDedupedDependencies","indexItem","packageName","toContinue","handlePreserved","addOneOccurrenceToRoot","componentItems","handlePeersOnly","dedupePeerDependencies","groupedByRangeOrVersion","groupByRangeOrVersion","versions","ranges","handleExactVersionsOnly","handleRangesOnly","handleRangesAndVersions","dedupedDependencies","preservedVersion","metadata","preservedLifecycleType","keyName","KEY_NAME_BY_LIFECYCLE_TYPE","rootDependencies","filterFunc","item","intersect","range","map","addToComponentDependenciesMapInDeduped","indexItems","uniqVersions","uniq","lifecycleType","nonPeerItems","PEER_DEP_LIFECYCLE_TYPE","allRanges","intersected","conflictedComponents","componentPackageName","origin","conflictMessage","c","join","issue","issus","peerConflicts","allVersions","mostCommonVersion","findMostCommonVersion","version","lifeCycleType","getLifecycleType","depKeyName","rangesVersions","bestRange","findBestRange","intersectedRange","includes","groups","count","sortedByTotal","getSortedRangesCombination","combinationWithTotal","combination","total","counts","countBy","uniqRanges","rangesCombinations","arrayCombinations","countMultipleRanges","items","reduce","acc","curr","rangesCombinationsWithTotalCount","sortBy","property","reverse","DEV_DEP_LIFECYCLE_TYPE","RUNTIME_DEP_LIFECYCLE_TYPE","semver","gt","toFilter","compEntry","componentDependenciesMap","get","dependencies","optionalDependencies","devDependencies","peerDependencies","set","isVersionRange","isRange","compIdStr","validRange","isHash","startsWith","Error","parsed","parseRange","condition","array","fn","n","src","got","all","j","slice","concat","Map"],"sources":["hoist-dependencies.ts"],"sourcesContent":["import { countBy, forEach, property, sortBy, uniq } from 'lodash';\nimport semver from 'semver';\nimport { parseRange } from 'semver-intersect';\nimport { intersect } from 'semver-range-intersect';\nimport { isHash } from '@teambit/component-version';\n\nimport {\n DEV_DEP_LIFECYCLE_TYPE,\n KEY_NAME_BY_LIFECYCLE_TYPE,\n PEER_DEP_LIFECYCLE_TYPE,\n RUNTIME_DEP_LIFECYCLE_TYPE,\n} from '../../dependencies/constants';\nimport { DependencyLifecycleType, SemverVersion, PackageName } from '../../dependencies';\nimport { DedupedDependencies, DedupedDependenciesPeerConflicts } from './dedupe-dependencies';\nimport { PackageNameIndex, PackageNameIndexItem, PackageNameIndexComponentItem } from './index-by-dep-id';\n\ntype ItemsGroupedByRangeOrVersion = {\n ranges: PackageNameIndexComponentItem[];\n versions: PackageNameIndexComponentItem[];\n};\n\ntype MostCommonVersion = {\n version: SemverVersion;\n count: number;\n};\n\ntype BestRange = {\n count: number;\n ranges: SemverVersion[];\n intersectedRange: SemverVersion;\n};\n\ntype CombinationWithTotal = {\n combination: SemverVersion[];\n total: number;\n};\n\n/**\n * This is the second phase of the deduping process.\n * It will get the index calculated in the first phase (with dep id as key)\n * and will find the most intersect range for each dep and move it to the root\n * it will also move deps which are both dev deps and runtime deps to be runtime deps\n *\n * @param {PackageNameIndex} depIdIndex\n * @returns {DedupedDependencies}\n */\nexport function hoistDependencies(\n depIdIndex: PackageNameIndex,\n options?: { dedupePeerDependencies?: boolean }\n): DedupedDependencies {\n const result: DedupedDependencies = getEmptyDedupedDependencies();\n\n // TODO: handle git urls\n\n depIdIndex.forEach((indexItem, packageName) => {\n let toContinue;\n toContinue = handlePreserved(result, packageName, indexItem);\n if (!toContinue) return;\n toContinue = addOneOccurrenceToRoot(result, packageName, indexItem.componentItems);\n if (!toContinue) return;\n toContinue = handlePeersOnly(result, packageName, indexItem.componentItems);\n if (!toContinue && !options?.dedupePeerDependencies) return;\n const groupedByRangeOrVersion = groupByRangeOrVersion(indexItem.componentItems);\n if (groupedByRangeOrVersion.versions.length > 0 && groupedByRangeOrVersion.ranges.length === 0) {\n handleExactVersionsOnly(result, packageName, indexItem.componentItems);\n } else if (groupedByRangeOrVersion.versions.length === 0 && groupedByRangeOrVersion.ranges.length > 0) {\n handleRangesOnly(result, packageName, indexItem.componentItems);\n } else {\n handleRangesAndVersions(result, packageName, indexItem.componentItems, groupedByRangeOrVersion);\n }\n });\n\n return result;\n}\n\nfunction handlePreserved(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n indexItem: PackageNameIndexItem\n): boolean {\n const preservedVersion = indexItem.metadata.preservedVersion;\n // Not preserved, move on\n if (!preservedVersion) {\n return true;\n }\n\n const preservedLifecycleType = indexItem.metadata.preservedLifecycleType;\n\n const keyName = KEY_NAME_BY_LIFECYCLE_TYPE[preservedLifecycleType || 'dependencies'];\n dedupedDependencies.rootDependencies[keyName][packageName] = preservedVersion;\n\n const filterFunc = (item: PackageNameIndexComponentItem) => {\n // items which are intersect with the preserved version won't needed to be installed nested in the component\n // this in very rare cases might create bugs in case the version are intersects, but the real version in the registry\n // which satisfies the preserved not satisfy the item range.\n // In such case I would expect to get version not exist when coming to install the version in the nested component\n return !!intersect(item.range, preservedVersion);\n };\n\n indexItem.componentItems.map(addToComponentDependenciesMapInDeduped(dedupedDependencies, packageName, filterFunc));\n return false;\n}\n\n/**\n * In case there is only one component with a specific dependency,\n * OR\n * all the components have the same version of the dependency\n * add it to the root\n * (it used to check also if it's not peer, but we remove it for bit sign support)\n *\n * @param {DedupedDependencies} dedupedDependencies\n * @param {PackageName} packageName\n * @param {PackageNameIndexComponentItem} indexItem\n */\nfunction addOneOccurrenceToRoot(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n indexItems: PackageNameIndexComponentItem[]\n): boolean {\n if (indexItems.length > 1) {\n const uniqVersions = uniq(indexItems.map((item) => item.range));\n if (uniqVersions.length > 1) {\n return true;\n }\n }\n const indexItem = indexItems[0];\n // if (indexItem.lifecycleType !== PEER_DEP_LIFECYCLE_TYPE) {\n const keyName = KEY_NAME_BY_LIFECYCLE_TYPE[indexItem.lifecycleType];\n dedupedDependencies.rootDependencies[keyName][packageName] = indexItem.range;\n return false;\n // }\n // return true;\n}\n\n/**\n * Handle a case where the package appear as a peer for all its deponents\n * in that case we won't hoist it to the root, we will only notify about conflicts\n *\n * @param {DedupedDependencies} dedupedDependencies\n * @param {PackageName} packageName\n * @param {PackageNameIndexComponentItem[]} indexItems\n * @returns {boolean}\n */\nfunction handlePeersOnly(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n indexItems: PackageNameIndexComponentItem[]\n): boolean {\n const nonPeerItems = indexItems.filter((item) => {\n return item.lifecycleType !== PEER_DEP_LIFECYCLE_TYPE;\n });\n if (nonPeerItems.length > 0) {\n return true;\n }\n const allRanges = indexItems.map((item) => item.range);\n const intersected = intersect(...allRanges);\n if (intersected) {\n // Add to peers for each component to make sure we are getting warning from the package manager about missing peers\n indexItems.map(addToComponentDependenciesMapInDeduped(dedupedDependencies, packageName));\n } else {\n indexItems.map(addToComponentDependenciesMapInDeduped(dedupedDependencies, packageName));\n // There are peer version with conflicts, let the user know about it\n const conflictedComponents = indexItems.map((item) => {\n return {\n componentPackageName: item.origin,\n range: item.range,\n };\n });\n const conflictMessage = `The following components has conflicted peer dependencies: ${conflictedComponents\n .map((c) => c.componentPackageName)\n .join(',')} for the dependency: ${packageName}`;\n const issue: DedupedDependenciesPeerConflicts = {\n packageName,\n conflictedComponents,\n conflictMessage,\n };\n dedupedDependencies.issus?.peerConflicts.push(issue);\n }\n return false;\n}\n\n/**\n * This will handle a case when there is only exact version in the index\n * In such case it will take the most common version and hoist it to the root\n * It will set all the other version in the corresponding components\n * This assume the items has been already checked to contain only exact versions\n *\n * @param {DedupedDependencies} dedupedDependencies\n * @param {PackageName} packageName\n * @param {PackageNameIndexComponentItem[]} indexItems\n */\nfunction handleExactVersionsOnly(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n indexItems: PackageNameIndexComponentItem[]\n): void {\n const allVersions = indexItems.map((item) => item.range);\n\n // Add most common version to root\n const mostCommonVersion = findMostCommonVersion(allVersions).version;\n const lifeCycleType = getLifecycleType(indexItems);\n const depKeyName = KEY_NAME_BY_LIFECYCLE_TYPE[lifeCycleType];\n dedupedDependencies.rootDependencies[depKeyName][packageName] = mostCommonVersion;\n\n const filterFunc = (item) => {\n if (item.range === mostCommonVersion) return true;\n return false;\n };\n\n indexItems.forEach(addToComponentDependenciesMapInDeduped(dedupedDependencies, packageName, filterFunc));\n}\n\n/**\n * This will handle a case when there is only ranges in the index\n * In such case it will search for an intersection with the most components and hoist it to the root\n * It will set all the other ranges in the corresponding components\n * This assume the items has been already checked to contain only ranges\n *\n * @param {DedupedDependencies} dedupedDependencies\n * @param {PackageName} packageName\n * @param {PackageNameIndexComponentItem[]} indexItems\n */\nfunction handleRangesOnly(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n indexItems: PackageNameIndexComponentItem[]\n): void {\n const rangesVersions = indexItems.map((item) => item.range);\n const bestRange = findBestRange(rangesVersions);\n const lifeCycleType = getLifecycleType(indexItems);\n const depKeyName = KEY_NAME_BY_LIFECYCLE_TYPE[lifeCycleType];\n dedupedDependencies.rootDependencies[depKeyName][packageName] = bestRange.intersectedRange;\n\n const filterFunc = (item) => {\n if (bestRange.ranges.includes(item.range)) return true;\n return false;\n };\n\n indexItems.forEach(addToComponentDependenciesMapInDeduped(dedupedDependencies, packageName, filterFunc));\n}\n\n/**\n * This will handle a case when there is both ranges and exact versions in the index\n * it will find the best range and see how many components it fits\n * it will find the most common version and see how many components it fits\n * Then it will take the best of them and hoist into the root and put others in the components\n * TODO: this can be improved by adding to the ranges count the satisfying exact versions\n *\n * @param {DedupedDependencies} dedupedDependencies\n * @param {PackageName} packageName\n * @param {PackageNameIndexComponentItem[]} indexItems\n * @param {ItemsGroupedByRangeOrVersion} groups\n */\nfunction handleRangesAndVersions(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n indexItems: PackageNameIndexComponentItem[],\n groups: ItemsGroupedByRangeOrVersion\n): void {\n const allVersions = groups.versions.map((item) => item.range);\n const mostCommonVersion = findMostCommonVersion(allVersions);\n // Include versions here since we might have a specific version which match the best version as well\n const rangesVersions = indexItems.map((item) => item.range);\n const bestRange = findBestRange(rangesVersions);\n const lifeCycleType = getLifecycleType(indexItems);\n const depKeyName = KEY_NAME_BY_LIFECYCLE_TYPE[lifeCycleType];\n\n let filterFunc = (item) => {\n if (bestRange.ranges.includes(item.range)) return true;\n return false;\n };\n\n if (bestRange.count < mostCommonVersion.count) {\n dedupedDependencies.rootDependencies[depKeyName][packageName] = mostCommonVersion.version;\n filterFunc = (item) => {\n if (item.range === mostCommonVersion) return true;\n return false;\n };\n } else {\n dedupedDependencies.rootDependencies[depKeyName][packageName] = bestRange.intersectedRange;\n }\n indexItems.forEach(addToComponentDependenciesMapInDeduped(dedupedDependencies, packageName, filterFunc));\n}\n\n/**\n * Finding the best range - a range the intersect as many ranges as possible\n * it will work by create all the possible combination of the ranges\n * then try to intersect them based on the number of the ranges (items) and how many times they appear in the original array\n *\n * @param {SemverVersion[]} ranges\n * @returns {BestRange}\n */\nfunction findBestRange(ranges: SemverVersion[]): BestRange {\n const result: BestRange = {\n ranges: [],\n intersectedRange: '0.0.0',\n count: 0,\n };\n\n const sortedByTotal = getSortedRangesCombination(ranges);\n let i = 0;\n // Since it's already sorted by count, once we found match we can stop looping\n while (result.count === 0 && i < sortedByTotal.length) {\n const combinationWithTotal = sortedByTotal[i];\n const intersectedRange = intersect(...combinationWithTotal.combination);\n if (intersectedRange) {\n result.intersectedRange = intersectedRange;\n result.ranges = combinationWithTotal.combination;\n result.count = combinationWithTotal.total;\n } else {\n i += 1;\n }\n }\n return result;\n}\n\n// function getSortedVersionsWithTotal(versions: SemverVersion[]): VersionWithTotal[] {\n// const counts = countBy((item) => item)(versions);\n// const uniqVersions = uniq(versions);\n// const versionsWithTotalCount = uniqVersions.map((version) => {\n// return {\n// version,\n// total: counts[version],\n// };\n// });\n\n// const sortByTotal = sortBy(prop('total'));\n// const sortedByTotal = sortByTotal(versionsWithTotalCount).reverse();\n// return sortedByTotal;\n// }\n\nfunction getSortedRangesCombination(ranges: SemverVersion[]): CombinationWithTotal[] {\n const counts = countBy(ranges, (item) => item);\n const uniqRanges = uniq(ranges);\n const rangesCombinations = arrayCombinations<SemverVersion>(uniqRanges);\n const countMultipleRanges = (items: SemverVersion[]): number => {\n return items.reduce((acc, curr) => {\n return acc + counts[curr];\n }, 0);\n };\n // The count is count of the items and for each item how many times it appear in the original ranges\n // Since there might be same range multiple time in the original ranges array.\n\n const rangesCombinationsWithTotalCount = rangesCombinations.map((combination) => {\n return {\n combination,\n total: countMultipleRanges(combination),\n };\n });\n\n const sortedByTotal = sortBy(rangesCombinationsWithTotalCount, property('total')).reverse();\n return sortedByTotal;\n}\n\n/**\n * Check if a package should be a dev dependency or runtime dependency by checking if it appears as runtime dependency at least once\n *\n * @param {PackageNameIndexComponentItem[]} indexItems\n * @returns {DependencyLifecycleType}\n */\nfunction getLifecycleType(indexItems: PackageNameIndexComponentItem[]): DependencyLifecycleType {\n let result: DependencyLifecycleType = DEV_DEP_LIFECYCLE_TYPE;\n indexItems.forEach((item) => {\n if (item.lifecycleType === RUNTIME_DEP_LIFECYCLE_TYPE) {\n result = RUNTIME_DEP_LIFECYCLE_TYPE;\n }\n });\n return result;\n}\n\n/**\n * Find the version that appears the most\n *\n * @param {SemverVersion[]} versions\n * @returns {MostCommonVersion}\n */\nfunction findMostCommonVersion(versions: SemverVersion[]): MostCommonVersion {\n const counts = countBy(versions, (item) => item);\n const result: MostCommonVersion = {\n version: '0.0.0',\n count: 0,\n };\n forEach(counts, (count, version) => {\n if (count > result.count || (count === result.count && semver.gt(version, result.version))) {\n result.version = version;\n result.count = count;\n }\n });\n return result;\n}\n\n/**\n * A wrapper function used to be passed to map on index items and add it to a component dependency in the deduped dependencies if it's filter function return false\n *\n * @param {DedupedDependencies} dedupedDependencies\n * @param {PackageName} packageName\n * @param {(item: PackageNameIndexComponentItem) => boolean} [filterFunc]\n * @returns\n */\nfunction addToComponentDependenciesMapInDeduped(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n filterFunc?: (item: PackageNameIndexComponentItem) => boolean\n) {\n return (indexItem: PackageNameIndexComponentItem) => {\n if (filterFunc && typeof filterFunc === 'function') {\n const toFilter = filterFunc(indexItem);\n if (toFilter) return;\n }\n let compEntry = dedupedDependencies.componentDependenciesMap.get(indexItem.origin);\n const depKeyName = KEY_NAME_BY_LIFECYCLE_TYPE[indexItem.lifecycleType];\n if (!compEntry) {\n compEntry = {\n dependencies: {},\n optionalDependencies: {},\n devDependencies: {},\n peerDependencies: {},\n };\n }\n compEntry[depKeyName] = {\n ...compEntry[depKeyName],\n [packageName]: indexItem.range,\n };\n dedupedDependencies.componentDependenciesMap.set(indexItem.origin, compEntry);\n };\n}\n\n/**\n * Get an array of index items and group them to items with ranges and items with exact version\n *\n * @param {PackageNameIndexComponentItem[]} indexItems\n * @returns {ItemsGroupedByRangeOrVersion}\n */\nfunction groupByRangeOrVersion(indexItems: PackageNameIndexComponentItem[]): ItemsGroupedByRangeOrVersion {\n const result: ItemsGroupedByRangeOrVersion = {\n ranges: [],\n versions: [],\n };\n indexItems.forEach((item) => {\n const isVersionRange = isRange(item.range, item.origin);\n if (isVersionRange) {\n result.ranges.push(item);\n } else {\n result.versions.push(item);\n }\n });\n return result;\n}\n\nexport function isRange(version: string, compIdStr: string) {\n const validRange = semver.validRange(version);\n if (!validRange) {\n if (!isHash(version) && !version.startsWith('workspace:') && !version.startsWith('npm:')) {\n throw new Error(\n `fatal: the version \"${version}\" originated from a dependent \"${compIdStr}\" is invalid semver range and not a hash`\n );\n }\n return false;\n }\n // parseRange does not support `*` as version\n // `*` does not affect resulted version, it might be just ignored\n if (validRange === '*') {\n return true;\n }\n const parsed = parseRange(validRange);\n if (parsed.condition === '=') {\n return false;\n }\n return true;\n}\n\n// Taken from https://web.archive.org/web/20140418004051/http://dzone.com/snippets/calculate-all-combinations\n/**\n * Return all combinations of array items. for example:\n * arrayCombinations([1,2]) == [[1], [2], [1,2]];\n *\n * @param {Array<T>} array\n * @returns {Array<T[]>}\n */\nfunction arrayCombinations<T>(array: Array<T>): Array<T[]> {\n const fn = function (n, src, got, all) {\n if (n === 0) {\n if (got.length > 0) {\n all[all.length] = got;\n }\n return;\n }\n // eslint-disable-next-line\n for (let j = 0; j < src.length; j++) {\n fn(n - 1, src.slice(j + 1), got.concat([src[j]]), all);\n }\n };\n const all: Array<T[]> = [];\n // eslint-disable-next-line\n for (let i = 0; i < array.length; i++) {\n fn(i, array, [], all);\n }\n all.push(array);\n return all;\n}\n\nexport function getEmptyDedupedDependencies(): DedupedDependencies {\n const result: DedupedDependencies = {\n rootDependencies: {\n dependencies: {},\n optionalDependencies: {},\n devDependencies: {},\n peerDependencies: {},\n },\n componentDependenciesMap: new Map(),\n issus: {\n peerConflicts: [],\n },\n };\n return result;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.dependencies_dependency-resolver@1.0.
|
|
2
|
-
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.dependencies_dependency-resolver@1.0.
|
|
1
|
+
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.dependencies_dependency-resolver@1.0.626/dist/dependency-resolver.composition.js';
|
|
2
|
+
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.dependencies_dependency-resolver@1.0.626/dist/dependency-resolver.docs.mdx';
|
|
3
3
|
|
|
4
4
|
export const compositions = [compositions_0];
|
|
5
5
|
export const overview = [overview_0];
|
|
@@ -450,7 +450,7 @@ function groupByRangeOrVersion(indexItems: PackageNameIndexComponentItem[]): Ite
|
|
|
450
450
|
export function isRange(version: string, compIdStr: string) {
|
|
451
451
|
const validRange = semver.validRange(version);
|
|
452
452
|
if (!validRange) {
|
|
453
|
-
if (!isHash(version) && !version.startsWith('workspace:')) {
|
|
453
|
+
if (!isHash(version) && !version.startsWith('workspace:') && !version.startsWith('npm:')) {
|
|
454
454
|
throw new Error(
|
|
455
455
|
`fatal: the version "${version}" originated from a dependent "${compIdStr}" is invalid semver range and not a hash`
|
|
456
456
|
);
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/dependency-resolver",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.626",
|
|
4
4
|
"homepage": "https://bit.cloud/teambit/dependencies/dependency-resolver",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.dependencies",
|
|
8
8
|
"name": "dependency-resolver",
|
|
9
|
-
"version": "1.0.
|
|
9
|
+
"version": "1.0.626"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"chalk": "4.1.2",
|
|
@@ -34,19 +34,19 @@
|
|
|
34
34
|
"@teambit/workspace.root-components": "1.0.0",
|
|
35
35
|
"@teambit/legacy-bit-id": "1.1.3",
|
|
36
36
|
"@teambit/toolbox.object.sorter": "0.0.2",
|
|
37
|
-
"@teambit/component": "1.0.
|
|
38
|
-
"@teambit/envs": "1.0.
|
|
39
|
-
"@teambit/dependencies": "1.0.
|
|
40
|
-
"@teambit/aspect-loader": "1.0.
|
|
41
|
-
"@teambit/logger": "0.0.
|
|
42
|
-
"@teambit/objects": "0.0.
|
|
37
|
+
"@teambit/component": "1.0.626",
|
|
38
|
+
"@teambit/envs": "1.0.626",
|
|
39
|
+
"@teambit/dependencies": "1.0.626",
|
|
40
|
+
"@teambit/aspect-loader": "1.0.626",
|
|
41
|
+
"@teambit/logger": "0.0.1296",
|
|
42
|
+
"@teambit/objects": "0.0.133",
|
|
43
43
|
"@teambit/toolbox.path.path": "0.0.8",
|
|
44
44
|
"@teambit/pkg.modules.component-package-name": "0.0.57",
|
|
45
|
-
"@teambit/graphql": "1.0.
|
|
46
|
-
"@teambit/cli": "0.0.
|
|
45
|
+
"@teambit/graphql": "1.0.626",
|
|
46
|
+
"@teambit/cli": "0.0.1203",
|
|
47
47
|
"@teambit/component.sources": "0.0.102",
|
|
48
|
-
"@teambit/config-store": "0.0.
|
|
49
|
-
"@teambit/config": "0.0.
|
|
48
|
+
"@teambit/config-store": "0.0.83",
|
|
49
|
+
"@teambit/config": "0.0.1377",
|
|
50
50
|
"@teambit/harmony.modules.feature-toggle": "0.0.19",
|
|
51
51
|
"@teambit/harmony.modules.requireable-component": "0.0.502",
|
|
52
52
|
"@teambit/legacy.constants": "0.0.11",
|