@teambit/dependency-resolver 1.0.107 → 1.0.109
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.
- package/artifacts/__bit_junit.xml +55 -0
- package/artifacts/preview/teambit_dependencies_dependency_resolver-preview.js +1 -0
- package/dist/apply-updates.js +2 -4
- package/dist/apply-updates.js.map +1 -1
- package/dist/dependencies/base-dependency.d.ts +7 -7
- package/dist/dependencies/base-dependency.js +1 -2
- package/dist/dependencies/base-dependency.js.map +1 -1
- package/dist/dependencies/component-dependency/component-dependency.js +1 -2
- package/dist/dependencies/component-dependency/component-dependency.js.map +1 -1
- package/dist/dependencies/dependency-list-factory.js +2 -4
- package/dist/dependencies/dependency-list-factory.js.map +1 -1
- package/dist/dependencies/dependency-list.d.ts +2 -2
- package/dist/dependencies/dependency-list.js +1 -4
- package/dist/dependencies/dependency-list.js.map +1 -1
- package/dist/dependencies/dependency.d.ts +5 -5
- package/dist/dependencies.service.d.ts +4 -4
- package/dist/dependencies.service.js +3 -3
- package/dist/dependencies.service.js.map +1 -1
- package/dist/dependency-installer.d.ts +10 -9
- package/dist/dependency-installer.js +5 -8
- package/dist/dependency-installer.js.map +1 -1
- package/dist/dependency-linker.d.ts +10 -9
- package/dist/dependency-linker.js +7 -11
- package/dist/dependency-linker.js.map +1 -1
- package/dist/dependency-resolver.composition.d.ts +2 -2
- package/dist/dependency-resolver.main.runtime.d.ts +15 -15
- package/dist/dependency-resolver.main.runtime.js +33 -39
- package/dist/dependency-resolver.main.runtime.js.map +1 -1
- package/dist/dependency-version-resolver.d.ts +2 -1
- package/dist/get-all-policy-pkgs.d.ts +4 -4
- package/dist/manifest/deduping/dedupe-dependencies.d.ts +4 -4
- package/dist/manifest/deduping/dedupe-dependencies.js +1 -1
- package/dist/manifest/deduping/dedupe-dependencies.js.map +1 -1
- package/dist/manifest/deduping/hoist-dependencies.js +2 -3
- package/dist/manifest/deduping/hoist-dependencies.js.map +1 -1
- package/dist/manifest/deduping/hoist-dependencies.spec.js +6 -8
- package/dist/manifest/deduping/hoist-dependencies.spec.js.map +1 -1
- package/dist/manifest/deduping/index-by-dep-id.d.ts +4 -4
- package/dist/manifest/deduping/index-by-dep-id.js +1 -2
- package/dist/manifest/deduping/index-by-dep-id.js.map +1 -1
- package/dist/manifest/manifest.d.ts +4 -4
- package/dist/manifest/update-dependency-version.js +2 -2
- package/dist/manifest/update-dependency-version.js.map +1 -1
- package/dist/manifest/workspace-manifest-factory.d.ts +3 -3
- package/dist/manifest/workspace-manifest-factory.js +3 -5
- package/dist/manifest/workspace-manifest-factory.js.map +1 -1
- package/dist/manifest/workspace-manifest.js +1 -2
- package/dist/manifest/workspace-manifest.js.map +1 -1
- package/dist/package-manager-legacy.d.ts +1 -1
- package/dist/package-manager.d.ts +5 -5
- package/dist/policy/env-policy/env-policy.d.ts +7 -7
- package/dist/policy/policy.d.ts +9 -9
- package/dist/policy/variant-policy/variant-policy.d.ts +9 -9
- package/dist/policy/workspace-policy/workspace-policy.d.ts +11 -11
- package/dist/{preview-1703590665075.js → preview-1703698405864.js} +2 -2
- package/dist/registry/registry.d.ts +6 -6
- package/dist/show-fragments/serialize-by-lifecycle.js +1 -2
- package/dist/show-fragments/serialize-by-lifecycle.js.map +1 -1
- package/dist/types.d.ts +8 -8
- package/package.json +26 -33
- package/tsconfig.json +16 -21
- package/types/asset.d.ts +15 -3
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { PathAbsolute } from '@teambit/legacy/dist/utils/path';
|
|
1
2
|
import { PackageManager, PackageManagerResolveRemoteVersionOptions, ResolvedPackageVersion } from './package-manager';
|
|
2
3
|
export declare class DependencyVersionResolver {
|
|
3
4
|
/**
|
|
@@ -10,6 +11,6 @@ export declare class DependencyVersionResolver {
|
|
|
10
11
|
/**
|
|
11
12
|
* package manager instance.
|
|
12
13
|
*/
|
|
13
|
-
packageManager: PackageManager, cacheRootDir?: string |
|
|
14
|
+
packageManager: PackageManager, cacheRootDir?: string | PathAbsolute, networkConcurrency?: number);
|
|
14
15
|
resolveRemoteVersion(packageName: string, options: PackageManagerResolveRemoteVersionOptions): Promise<ResolvedPackageVersion>;
|
|
15
16
|
}
|
|
@@ -2,8 +2,8 @@ import { ComponentID } from '@teambit/component-id';
|
|
|
2
2
|
import { ManifestDependenciesKeysNames } from './manifest';
|
|
3
3
|
import { VariantPolicyConfigObject, WorkspacePolicy } from './policy';
|
|
4
4
|
import { DependencyLifecycleType } from './dependencies/dependency';
|
|
5
|
-
export
|
|
6
|
-
|
|
5
|
+
export type CurrentPkgSource = 'variants' | 'component' | 'rootPolicy' | 'component-model';
|
|
6
|
+
type CurrentPkg = {
|
|
7
7
|
name: string;
|
|
8
8
|
currentRange: string;
|
|
9
9
|
source: CurrentPkgSource;
|
|
@@ -12,10 +12,10 @@ declare type CurrentPkg = {
|
|
|
12
12
|
isAuto?: boolean;
|
|
13
13
|
targetField: ManifestDependenciesKeysNames;
|
|
14
14
|
};
|
|
15
|
-
export
|
|
15
|
+
export type OutdatedPkg = CurrentPkg & {
|
|
16
16
|
latestRange: string;
|
|
17
17
|
};
|
|
18
|
-
export
|
|
18
|
+
export type ComponentModelVersion = {
|
|
19
19
|
name: string;
|
|
20
20
|
version: string;
|
|
21
21
|
componentId: ComponentID;
|
|
@@ -3,19 +3,19 @@ import { WorkspacePolicy } from '../../policy';
|
|
|
3
3
|
import { PackageName, SemverVersion } from '../../dependencies';
|
|
4
4
|
import { ComponentDependenciesMap } from '../workspace-manifest-factory';
|
|
5
5
|
export { getEmptyDedupedDependencies } from './hoist-dependencies';
|
|
6
|
-
export
|
|
6
|
+
export type conflictedComponent = {
|
|
7
7
|
componentPackageName: PackageName;
|
|
8
8
|
range: SemverVersion;
|
|
9
9
|
};
|
|
10
|
-
export
|
|
10
|
+
export type DedupedDependenciesPeerConflicts = {
|
|
11
11
|
packageName: PackageName;
|
|
12
12
|
conflictedComponents: conflictedComponent[];
|
|
13
13
|
conflictMessage: string;
|
|
14
14
|
};
|
|
15
|
-
export
|
|
15
|
+
export type DedupedDependenciesIssues = {
|
|
16
16
|
peerConflicts: DedupedDependenciesPeerConflicts[];
|
|
17
17
|
};
|
|
18
|
-
export
|
|
18
|
+
export type DedupedDependencies = {
|
|
19
19
|
rootDependencies: Omit<ManifestDependenciesObject, 'peerDependenciesMeta'>;
|
|
20
20
|
componentDependenciesMap: ComponentDependenciesMap;
|
|
21
21
|
issus?: DedupedDependenciesIssues;
|
|
@@ -41,7 +41,7 @@ function _mergeWithRoot() {
|
|
|
41
41
|
* @returns {DedupedDependencies}
|
|
42
42
|
*/
|
|
43
43
|
function dedupeDependencies(rootPolicy, componentDependenciesMap, options) {
|
|
44
|
-
const indexedByDepId = (0, _indexByDepId().indexByDepId)(rootPolicy, componentDependenciesMap, options
|
|
44
|
+
const indexedByDepId = (0, _indexByDepId().indexByDepId)(rootPolicy, componentDependenciesMap, options?.hoistedDepFields);
|
|
45
45
|
const dedupedDependenciesWithoutRootOriginal = (0, _hoistDependencies().hoistDependencies)(indexedByDepId, options);
|
|
46
46
|
const result = (0, _mergeWithRoot().mergeWithRootDeps)(rootPolicy.toManifest(), dedupedDependenciesWithoutRootOriginal);
|
|
47
47
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_hoistDependencies","data","require","_indexByDepId","_mergeWithRoot","dedupeDependencies","rootPolicy","componentDependenciesMap","options","indexedByDepId","indexByDepId","hoistedDepFields","dedupedDependenciesWithoutRootOriginal","hoistDependencies","result","mergeWithRootDeps","toManifest"],"sources":["dedupe-dependencies.ts"],"sourcesContent":["import { ManifestDependenciesKeysNames, ManifestDependenciesObject } from '../manifest';\nimport { WorkspacePolicy } from '../../policy';\nimport { PackageName, SemverVersion } from '../../dependencies';\nimport { ComponentDependenciesMap } from '../workspace-manifest-factory';\nimport { hoistDependencies } from './hoist-dependencies';\nimport { indexByDepId } from './index-by-dep-id';\nimport { mergeWithRootDeps } from './merge-with-root';\n\nexport { getEmptyDedupedDependencies } from './hoist-dependencies';\n\nexport type conflictedComponent = {\n componentPackageName: PackageName;\n range: SemverVersion;\n};\n\nexport type DedupedDependenciesPeerConflicts = {\n packageName: PackageName;\n conflictedComponents: conflictedComponent[];\n conflictMessage: string;\n};\n\nexport type DedupedDependenciesIssues = {\n peerConflicts: DedupedDependenciesPeerConflicts[];\n};\n\nexport type DedupedDependencies = {\n rootDependencies: Omit<ManifestDependenciesObject, 'peerDependenciesMeta'>;\n componentDependenciesMap: ComponentDependenciesMap;\n issus?: DedupedDependenciesIssues;\n};\n\n/**\n * Main function to dedupe dependencies\n * It will optimized the dependencies structure to make sure there is minimum duplication of the same dependency (as a result of conflicted versions)\n * it will take everything possible to be defined in the root, and only conflicts in the components\n * it's similar to what happens when you use yarn workspaces\n *\n * @export\n * @returns {DedupedDependencies}\n */\nexport function dedupeDependencies(\n rootPolicy: WorkspacePolicy,\n componentDependenciesMap: ComponentDependenciesMap,\n options?: {\n hoistedDepFields?: ManifestDependenciesKeysNames[];\n dedupePeerDependencies?: boolean;\n }\n): DedupedDependencies {\n const indexedByDepId = indexByDepId(rootPolicy, componentDependenciesMap, options?.hoistedDepFields);\n const dedupedDependenciesWithoutRootOriginal = hoistDependencies(indexedByDepId, options);\n const result = mergeWithRootDeps(rootPolicy.toManifest(), dedupedDependenciesWithoutRootOriginal);\n return result;\n}\n"],"mappings":";;;;;;;;;;;;AAIA,SAAAA,mBAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,kBAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,cAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,aAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,eAAA;EAAA,MAAAH,IAAA,GAAAC,OAAA;EAAAE,cAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAyBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASI,kBAAkBA,CAChCC,UAA2B,EAC3BC,wBAAkD,EAClDC,OAGC,EACoB;EACrB,MAAMC,cAAc,GAAG,IAAAC,4BAAY,EAACJ,UAAU,EAAEC,wBAAwB,EAAEC,OAAO,
|
|
1
|
+
{"version":3,"names":["_hoistDependencies","data","require","_indexByDepId","_mergeWithRoot","dedupeDependencies","rootPolicy","componentDependenciesMap","options","indexedByDepId","indexByDepId","hoistedDepFields","dedupedDependenciesWithoutRootOriginal","hoistDependencies","result","mergeWithRootDeps","toManifest"],"sources":["dedupe-dependencies.ts"],"sourcesContent":["import { ManifestDependenciesKeysNames, ManifestDependenciesObject } from '../manifest';\nimport { WorkspacePolicy } from '../../policy';\nimport { PackageName, SemverVersion } from '../../dependencies';\nimport { ComponentDependenciesMap } from '../workspace-manifest-factory';\nimport { hoistDependencies } from './hoist-dependencies';\nimport { indexByDepId } from './index-by-dep-id';\nimport { mergeWithRootDeps } from './merge-with-root';\n\nexport { getEmptyDedupedDependencies } from './hoist-dependencies';\n\nexport type conflictedComponent = {\n componentPackageName: PackageName;\n range: SemverVersion;\n};\n\nexport type DedupedDependenciesPeerConflicts = {\n packageName: PackageName;\n conflictedComponents: conflictedComponent[];\n conflictMessage: string;\n};\n\nexport type DedupedDependenciesIssues = {\n peerConflicts: DedupedDependenciesPeerConflicts[];\n};\n\nexport type DedupedDependencies = {\n rootDependencies: Omit<ManifestDependenciesObject, 'peerDependenciesMeta'>;\n componentDependenciesMap: ComponentDependenciesMap;\n issus?: DedupedDependenciesIssues;\n};\n\n/**\n * Main function to dedupe dependencies\n * It will optimized the dependencies structure to make sure there is minimum duplication of the same dependency (as a result of conflicted versions)\n * it will take everything possible to be defined in the root, and only conflicts in the components\n * it's similar to what happens when you use yarn workspaces\n *\n * @export\n * @returns {DedupedDependencies}\n */\nexport function dedupeDependencies(\n rootPolicy: WorkspacePolicy,\n componentDependenciesMap: ComponentDependenciesMap,\n options?: {\n hoistedDepFields?: ManifestDependenciesKeysNames[];\n dedupePeerDependencies?: boolean;\n }\n): DedupedDependencies {\n const indexedByDepId = indexByDepId(rootPolicy, componentDependenciesMap, options?.hoistedDepFields);\n const dedupedDependenciesWithoutRootOriginal = hoistDependencies(indexedByDepId, options);\n const result = mergeWithRootDeps(rootPolicy.toManifest(), dedupedDependenciesWithoutRootOriginal);\n return result;\n}\n"],"mappings":";;;;;;;;;;;;AAIA,SAAAA,mBAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,kBAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,cAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,aAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,eAAA;EAAA,MAAAH,IAAA,GAAAC,OAAA;EAAAE,cAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAyBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASI,kBAAkBA,CAChCC,UAA2B,EAC3BC,wBAAkD,EAClDC,OAGC,EACoB;EACrB,MAAMC,cAAc,GAAG,IAAAC,4BAAY,EAACJ,UAAU,EAAEC,wBAAwB,EAAEC,OAAO,EAAEG,gBAAgB,CAAC;EACpG,MAAMC,sCAAsC,GAAG,IAAAC,sCAAiB,EAACJ,cAAc,EAAED,OAAO,CAAC;EACzF,MAAMM,MAAM,GAAG,IAAAC,kCAAiB,EAACT,UAAU,CAACU,UAAU,CAAC,CAAC,EAAEJ,sCAAsC,CAAC;EACjG,OAAOE,MAAM;AACf"}
|
|
@@ -82,7 +82,7 @@ function hoistDependencies(depIdIndex, options) {
|
|
|
82
82
|
toContinue = addOneOccurrenceToRoot(result, packageName, indexItem.componentItems);
|
|
83
83
|
if (!toContinue) return;
|
|
84
84
|
toContinue = handlePeersOnly(result, packageName, indexItem.componentItems);
|
|
85
|
-
if (!toContinue && !
|
|
85
|
+
if (!toContinue && !options?.dedupePeerDependencies) return;
|
|
86
86
|
const groupedByRangeOrVersion = groupByRangeOrVersion(indexItem.componentItems);
|
|
87
87
|
if (groupedByRangeOrVersion.versions.length > 0 && groupedByRangeOrVersion.ranges.length === 0) {
|
|
88
88
|
handleExactVersionsOnly(result, packageName, indexItem.componentItems);
|
|
@@ -163,7 +163,6 @@ function handlePeersOnly(dedupedDependencies, packageName, indexItems) {
|
|
|
163
163
|
// Add to peers for each component to make sure we are getting warning from the package manager about missing peers
|
|
164
164
|
indexItems.map(addToComponentDependenciesMapInDeduped(dedupedDependencies, packageName));
|
|
165
165
|
} else {
|
|
166
|
-
var _dedupedDependencies$;
|
|
167
166
|
indexItems.map(addToComponentDependenciesMapInDeduped(dedupedDependencies, packageName));
|
|
168
167
|
// There are peer version with conflicts, let the user know about it
|
|
169
168
|
const conflictedComponents = indexItems.map(item => {
|
|
@@ -178,7 +177,7 @@ function handlePeersOnly(dedupedDependencies, packageName, indexItems) {
|
|
|
178
177
|
conflictedComponents,
|
|
179
178
|
conflictMessage
|
|
180
179
|
};
|
|
181
|
-
|
|
180
|
+
dedupedDependencies.issus?.peerConflicts.push(issue);
|
|
182
181
|
}
|
|
183
182
|
return false;
|
|
184
183
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_forEachObjIndexed","data","_interopRequireDefault","require","_lodash","_semver","_semverIntersect","_semverRangeIntersect","_componentVersion","_constants","obj","__esModule","default","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","key","value","_toPropertyKey","configurable","writable","i","_toPrimitive","String","Symbol","toPrimitive","call","TypeError","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","_dedupedDependencies$","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","forEachObjIndexed","toFilter","compEntry","componentDependenciesMap","get","dependencies","optionalDependencies","devDependencies","peerDependencies","set","isVersionRange","isRange","compIdStr","validRange","semver","isHash","startsWith","Error","parsed","parseRange","condition","array","fn","n","src","got","all","j","slice","concat","Map"],"sources":["hoist-dependencies.ts"],"sourcesContent":["import forEachObjIndexed from 'ramda/src/forEachObjIndexed';\nimport { countBy, 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 forEachObjIndexed((count, version) => {\n if (count > result.count) {\n result.version = version;\n result.count = count;\n }\n }, counts);\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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"}
|
|
1
|
+
{"version":3,"names":["_forEachObjIndexed","data","_interopRequireDefault","require","_lodash","_semver","_semverIntersect","_semverRangeIntersect","_componentVersion","_constants","obj","__esModule","default","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","key","value","_toPropertyKey","configurable","writable","i","_toPrimitive","String","Symbol","toPrimitive","call","TypeError","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","forEachObjIndexed","toFilter","compEntry","componentDependenciesMap","get","dependencies","optionalDependencies","devDependencies","peerDependencies","set","isVersionRange","isRange","compIdStr","validRange","semver","isHash","startsWith","Error","parsed","parseRange","condition","array","fn","n","src","got","all","j","slice","concat","Map"],"sources":["hoist-dependencies.ts"],"sourcesContent":["import forEachObjIndexed from 'ramda/src/forEachObjIndexed';\nimport { countBy, 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 forEachObjIndexed((count, version) => {\n if (count > result.count) {\n result.version = version;\n result.count = count;\n }\n }, counts);\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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"}
|
|
@@ -67,8 +67,7 @@ const expectRootToNotHaveDependency = (dedupedDependencies, dependencyName) => {
|
|
|
67
67
|
(0, _chai().expect)(dedupedDependencies.rootDependencies.peerDependencies).to.not.have.property(dependencyName);
|
|
68
68
|
};
|
|
69
69
|
const expectPeerIssuesToBeEmpty = dedupedDependencies => {
|
|
70
|
-
|
|
71
|
-
(0, _chai().expect)((_dedupedDependencies$ = dedupedDependencies.issus) === null || _dedupedDependencies$ === void 0 ? void 0 : _dedupedDependencies$.peerConflicts).to.be.empty;
|
|
70
|
+
(0, _chai().expect)(dedupedDependencies.issus?.peerConflicts).to.be.empty;
|
|
72
71
|
};
|
|
73
72
|
describe('hoistDependencies', () => {
|
|
74
73
|
let index;
|
|
@@ -224,12 +223,11 @@ describe('hoistDependencies', () => {
|
|
|
224
223
|
expectRootToNotHaveDependency(dedupedDependencies, dependencyName);
|
|
225
224
|
});
|
|
226
225
|
it('should report about peer conflicts', () => {
|
|
227
|
-
|
|
228
|
-
(0, _chai().expect)(
|
|
229
|
-
(0, _chai().expect)(
|
|
230
|
-
(0, _chai().expect)(
|
|
231
|
-
(0, _chai().expect)(
|
|
232
|
-
(0, _chai().expect)((_dedupedDependencies$6 = dedupedDependencies.issus) === null || _dedupedDependencies$6 === void 0 ? void 0 : _dedupedDependencies$6.peerConflicts[1].conflictedComponents).to.have.lengthOf(2);
|
|
226
|
+
(0, _chai().expect)(dedupedDependencies.issus?.peerConflicts).to.have.lengthOf(2);
|
|
227
|
+
(0, _chai().expect)(dedupedDependencies.issus?.peerConflicts[0].packageName).to.equal(dependencyName1);
|
|
228
|
+
(0, _chai().expect)(dedupedDependencies.issus?.peerConflicts[0].conflictedComponents).to.have.lengthOf(2);
|
|
229
|
+
(0, _chai().expect)(dedupedDependencies.issus?.peerConflicts[1].packageName).to.equal(dependencyName2);
|
|
230
|
+
(0, _chai().expect)(dedupedDependencies.issus?.peerConflicts[1].conflictedComponents).to.have.lengthOf(2);
|
|
233
231
|
});
|
|
234
232
|
});
|
|
235
233
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_chai","data","require","_constants","_hoistDependencies","DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX","generateItemsFromArrays","dependentComponentNamePrefix","ranges","lifecycleTypes","size","Array","isArray","length","items","i","item","range","origin","lifecycleType","push","generateItems","numOfItems","RUNTIME_DEP_LIFECYCLE_TYPE","fill","expectAllComponentsDependenciesMapToBeEmpty","dedupedDependencies","expect","componentDependenciesMap","to","be","empty","expectComponentDependenciesMapToBeEmpty","dependentName","get","undefined","expectComponentDependenciesMapToHave","dependecyKeyName","dependencyName","dependencyVersion","comp","Error","have","property","expectRootToHave","rootDependencies","expectRootToNotHaveDependency","dependencies","not","devDependencies","peerDependencies","expectPeerIssuesToBeEmpty","_dedupedDependencies$","issus","peerConflicts","describe","index","dependentComponentName","preservedVersion","depKeyName","KEY_NAME_BY_LIFECYCLE_TYPE","beforeEach","Map","metadata","preservedLifecycleType","set","componentItems","hoistDependencies","it","PEER_DEP_LIFECYCLE_TYPE","equal","dependencyName1","dependencyName2","items1","items2","_dedupedDependencies$2","_dedupedDependencies$3","_dedupedDependencies$4","_dedupedDependencies$5","_dedupedDependencies$6","lengthOf","packageName","conflictedComponents","DEV_DEP_LIFECYCLE_TYPE"],"sources":["hoist-dependencies.spec.ts"],"sourcesContent":["import { expect } from 'chai';\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 } from '../../dependencies';\nimport { DedupedDependencies } from './dedupe-dependencies';\nimport { hoistDependencies } from './hoist-dependencies';\nimport { PackageNameIndex, PackageNameIndexComponentItem, PackageNameIndexItemMetadata } from './index-by-dep-id';\n\nconst DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX = 'dependent-component';\n\nconst generateItemsFromArrays = (\n dependentComponentNamePrefix = 'dependent-component',\n ranges: SemverVersion | SemverVersion[],\n lifecycleTypes: DependencyLifecycleType | DependencyLifecycleType[]\n): PackageNameIndexComponentItem[] => {\n let size = 1;\n if (Array.isArray(ranges)) {\n size = ranges.length;\n } else if (Array.isArray(lifecycleTypes)) {\n size = lifecycleTypes.length;\n }\n const items: PackageNameIndexComponentItem[] = [];\n for (let i = 0; i <= size - 1; i += 1) {\n const item: PackageNameIndexComponentItem = {\n range: Array.isArray(ranges) ? ranges[i] : ranges,\n origin: `${dependentComponentNamePrefix}-${i}`,\n lifecycleType: Array.isArray(lifecycleTypes) ? lifecycleTypes[i] : lifecycleTypes,\n };\n items.push(item);\n }\n return items;\n};\n\nconst generateItems = (\n numOfItems = 3,\n dependentComponentNamePrefix = DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX,\n range: SemverVersion = '1.0.0',\n lifecycleType: DependencyLifecycleType = RUNTIME_DEP_LIFECYCLE_TYPE\n): PackageNameIndexComponentItem[] => {\n const ranges = Array(numOfItems).fill(range);\n const lifecycleTypes = Array(numOfItems).fill(lifecycleType);\n return generateItemsFromArrays(dependentComponentNamePrefix, ranges, lifecycleTypes);\n};\n\nconst expectAllComponentsDependenciesMapToBeEmpty = (dedupedDependencies: DedupedDependencies) => {\n expect(dedupedDependencies.componentDependenciesMap).to.be.empty;\n};\n\nconst expectComponentDependenciesMapToBeEmpty = (dependentName: string, dedupedDependencies: DedupedDependencies) => {\n expect(dedupedDependencies.componentDependenciesMap.get(dependentName)).to.be.undefined;\n};\n\nconst expectComponentDependenciesMapToHave = (\n dedupedDependencies: DedupedDependencies,\n dependentName: string,\n dependecyKeyName: string,\n dependencyName: string,\n dependencyVersion: SemverVersion\n) => {\n const comp = dedupedDependencies.componentDependenciesMap.get(dependentName);\n if (!comp) {\n throw new Error(`component ${dependentName} does not found on dedupedDependencies components map`);\n }\n expect(comp[dependecyKeyName]).to.have.property(dependencyName, dependencyVersion);\n};\n\nconst expectRootToHave = (\n dedupedDependencies: DedupedDependencies,\n dependecyKeyName: string,\n dependencyName: string,\n dependencyVersion: SemverVersion\n) => {\n expect(dedupedDependencies.rootDependencies[dependecyKeyName]).to.have.property(dependencyName, dependencyVersion);\n};\n\nconst expectRootToNotHaveDependency = (dedupedDependencies: DedupedDependencies, dependencyName: string) => {\n expect(dedupedDependencies.rootDependencies.dependencies).to.not.have.property(dependencyName);\n expect(dedupedDependencies.rootDependencies.devDependencies).to.not.have.property(dependencyName);\n expect(dedupedDependencies.rootDependencies.peerDependencies).to.not.have.property(dependencyName);\n};\n\nconst expectPeerIssuesToBeEmpty = (dedupedDependencies: DedupedDependencies) => {\n expect(dedupedDependencies.issus?.peerConflicts).to.be.empty;\n};\n\ndescribe('hoistDependencies', () => {\n let index: PackageNameIndex;\n const dependentComponentName = 'dependent-component';\n let dedupedDependencies: DedupedDependencies;\n describe('preserved dependency', () => {\n describe('some component versions are intersect and some not', () => {\n const dependencyName = 'package-dependency';\n const preservedVersion = '^4.0.0';\n const depKeyName = KEY_NAME_BY_LIFECYCLE_TYPE[RUNTIME_DEP_LIFECYCLE_TYPE];\n beforeEach(() => {\n index = new Map();\n const metadata: PackageNameIndexItemMetadata = {\n preservedLifecycleType: RUNTIME_DEP_LIFECYCLE_TYPE,\n preservedVersion,\n };\n const items = generateItemsFromArrays(undefined, ['4.0.1', '5.0.0'], RUNTIME_DEP_LIFECYCLE_TYPE);\n index.set(dependencyName, { metadata, componentItems: items });\n dedupedDependencies = hoistDependencies(index);\n });\n it('the root manifest should have the preserved version', () => {\n expectRootToHave(dedupedDependencies, depKeyName, dependencyName, preservedVersion);\n });\n\n it('the component dependencies which intersects with the preserved should be empty', () => {\n expectComponentDependenciesMapToBeEmpty(`${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-0`, dedupedDependencies);\n });\n it('the component dependencies which not intersects with the preserved to have a proper version', () => {\n expectComponentDependenciesMapToHave(\n dedupedDependencies,\n `${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-1`,\n depKeyName,\n dependencyName,\n '5.0.0'\n );\n });\n });\n });\n\n describe('dependency that appears only once', () => {\n describe('item is exact version', () => {\n const dependencyName = 'package-dependency';\n const dependencyVersion = '1.0.0';\n beforeEach(() => {\n index = new Map();\n const item: PackageNameIndexComponentItem = {\n range: dependencyVersion,\n origin: dependentComponentName,\n lifecycleType: RUNTIME_DEP_LIFECYCLE_TYPE,\n };\n index.set(dependencyName, { metadata: {}, componentItems: [item] });\n dedupedDependencies = hoistDependencies(index);\n });\n it('the component dependencies should be empty', () => {\n expectAllComponentsDependenciesMapToBeEmpty(dedupedDependencies);\n });\n it('should hoist the dependency to the root', () => {\n expectRootToHave(\n dedupedDependencies,\n KEY_NAME_BY_LIFECYCLE_TYPE[RUNTIME_DEP_LIFECYCLE_TYPE],\n dependencyName,\n dependencyVersion\n );\n });\n });\n describe('item is range', () => {\n const dependencyName = 'package-dependency';\n const dependencyVersion = '^1.0.0';\n beforeEach(() => {\n index = new Map();\n const item: PackageNameIndexComponentItem = {\n range: dependencyVersion,\n origin: dependentComponentName,\n lifecycleType: RUNTIME_DEP_LIFECYCLE_TYPE,\n };\n index.set(dependencyName, { metadata: {}, componentItems: [item] });\n dedupedDependencies = hoistDependencies(index);\n });\n it('the component dependencies should be empty', () => {\n expectAllComponentsDependenciesMapToBeEmpty(dedupedDependencies);\n });\n it('should hoist the dependency to the root', () => {\n expectRootToHave(\n dedupedDependencies,\n KEY_NAME_BY_LIFECYCLE_TYPE[RUNTIME_DEP_LIFECYCLE_TYPE],\n dependencyName,\n dependencyVersion\n );\n });\n });\n describe('item is peer dependency with one version only', () => {\n const dependencyName = 'package-dependency';\n const dependencyVersion = '1.0.0';\n const depKeyName = KEY_NAME_BY_LIFECYCLE_TYPE[PEER_DEP_LIFECYCLE_TYPE];\n\n beforeEach(() => {\n index = new Map();\n const item: PackageNameIndexComponentItem = {\n range: dependencyVersion,\n origin: dependentComponentName,\n lifecycleType: PEER_DEP_LIFECYCLE_TYPE,\n };\n index.set(dependencyName, { metadata: {}, componentItems: [item] });\n dedupedDependencies = hoistDependencies(index);\n });\n it('the component dependencies should be empty', () => {\n expectAllComponentsDependenciesMapToBeEmpty(dedupedDependencies);\n });\n it('should not hoist the dependency to the root', () => {\n // Behavior was changed to hoist peers as well in case they are appear only with one version\n // expectRootToNotHaveDependency(dedupedDependencies, dependencyName);\n expectRootToHave(dedupedDependencies, depKeyName, dependencyName, '1.0.0');\n });\n });\n });\n\n describe('dependency that appears only as peer (in many components) with same version', () => {\n const dependencyName = 'package-dependency';\n const depKeyName = KEY_NAME_BY_LIFECYCLE_TYPE[PEER_DEP_LIFECYCLE_TYPE];\n\n describe('when there are no conflicts between versions', () => {\n beforeEach(() => {\n index = new Map();\n const items = generateItems(3, undefined, undefined, PEER_DEP_LIFECYCLE_TYPE);\n index.set(dependencyName, { metadata: {}, componentItems: items });\n dedupedDependencies = hoistDependencies(index);\n });\n it('should have the peers in each component', () => {\n expect(dedupedDependencies.componentDependenciesMap.size).to.equal(0);\n });\n it('should not hoist the dependency to the root', () => {\n expectRootToHave(dedupedDependencies, depKeyName, dependencyName, '1.0.0');\n });\n it('should not report about peer conflicts', () => {\n expectPeerIssuesToBeEmpty(dedupedDependencies);\n });\n });\n describe('when there conflicts between versions for few dependencies', () => {\n const dependencyName1 = 'package-dependency-1';\n const dependencyName2 = 'package-dependency-2';\n\n beforeEach(() => {\n index = new Map();\n const items1 = generateItemsFromArrays(undefined, ['4.0.0', '5.0.0'], PEER_DEP_LIFECYCLE_TYPE);\n const items2 = generateItemsFromArrays(undefined, ['^4.0.0', '^5.0.0'], PEER_DEP_LIFECYCLE_TYPE);\n index.set(dependencyName1, { metadata: {}, componentItems: items1 });\n index.set(dependencyName2, { metadata: {}, componentItems: items2 });\n dedupedDependencies = hoistDependencies(index);\n });\n it('should have the peers in each component', () => {\n expect(dedupedDependencies.componentDependenciesMap.size).to.equal(2);\n });\n it('should not hoist the dependency to the root', () => {\n expectRootToNotHaveDependency(dedupedDependencies, dependencyName);\n });\n it('should report about peer conflicts', () => {\n expect(dedupedDependencies.issus?.peerConflicts).to.have.lengthOf(2);\n expect(dedupedDependencies.issus?.peerConflicts[0].packageName).to.equal(dependencyName1);\n expect(dedupedDependencies.issus?.peerConflicts[0].conflictedComponents).to.have.lengthOf(2);\n expect(dedupedDependencies.issus?.peerConflicts[1].packageName).to.equal(dependencyName2);\n expect(dedupedDependencies.issus?.peerConflicts[1].conflictedComponents).to.have.lengthOf(2);\n });\n });\n });\n\n describe('dependency that appears only with exact versions', () => {\n const dependencyName = 'package-dependency';\n const depKeyName = KEY_NAME_BY_LIFECYCLE_TYPE[DEV_DEP_LIFECYCLE_TYPE];\n beforeEach(() => {\n index = new Map();\n const items = generateItemsFromArrays(\n undefined,\n ['4.0.0', '5.0.0', '4.0.0', '5.0.0', '4.0.1', '4.0.0'],\n DEV_DEP_LIFECYCLE_TYPE\n );\n index.set(dependencyName, { metadata: {}, componentItems: items });\n dedupedDependencies = hoistDependencies(index);\n });\n it('should hoist the most common version to the root', () => {\n expectRootToHave(dedupedDependencies, depKeyName, dependencyName, '4.0.0');\n });\n it('should not put the most common version in the components that has it', () => {\n expectComponentDependenciesMapToBeEmpty(`${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-0`, dedupedDependencies);\n expectComponentDependenciesMapToBeEmpty(`${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-2`, dedupedDependencies);\n expectComponentDependenciesMapToBeEmpty(`${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-5`, dedupedDependencies);\n });\n it('should put other versions in the components', () => {\n expectComponentDependenciesMapToHave(\n dedupedDependencies,\n `${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-1`,\n depKeyName,\n dependencyName,\n '5.0.0'\n );\n expectComponentDependenciesMapToHave(\n dedupedDependencies,\n `${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-3`,\n depKeyName,\n dependencyName,\n '5.0.0'\n );\n });\n });\n\n describe('dependency that appears only with ranges', () => {\n const dependencyName = 'package-dependency';\n const depKeyName = KEY_NAME_BY_LIFECYCLE_TYPE[DEV_DEP_LIFECYCLE_TYPE];\n beforeEach(() => {\n index = new Map();\n const items = generateItemsFromArrays(\n undefined,\n ['^4.0.0', '^5.0.0', '^4.0.0', '^5.0.0', '^5.0.1', '^4.0.1', '^4.0.4'],\n DEV_DEP_LIFECYCLE_TYPE\n );\n index.set(dependencyName, { metadata: {}, componentItems: items });\n dedupedDependencies = hoistDependencies(index);\n });\n it('should hoist the best range to the root', () => {\n expectRootToHave(dedupedDependencies, depKeyName, dependencyName, '>=4.0.4 <5.0.0');\n });\n it('should not put the dependency in components that matches the best range', () => {\n expectComponentDependenciesMapToBeEmpty(`${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-0`, dedupedDependencies);\n expectComponentDependenciesMapToBeEmpty(`${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-2`, dedupedDependencies);\n expectComponentDependenciesMapToBeEmpty(`${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-5`, dedupedDependencies);\n expectComponentDependenciesMapToBeEmpty(`${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-6`, dedupedDependencies);\n });\n it('should put other ranges in the components', () => {\n expectComponentDependenciesMapToHave(\n dedupedDependencies,\n `${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-1`,\n depKeyName,\n dependencyName,\n '^5.0.0'\n );\n expectComponentDependenciesMapToHave(\n dedupedDependencies,\n `${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-3`,\n depKeyName,\n dependencyName,\n '^5.0.0'\n );\n expectComponentDependenciesMapToHave(\n dedupedDependencies,\n `${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-4`,\n depKeyName,\n dependencyName,\n '^5.0.1'\n );\n });\n });\n\n describe('dependency that appears with both ranges and exact versions', () => {\n const dependencyName = 'package-dependency';\n const depKeyName = KEY_NAME_BY_LIFECYCLE_TYPE[DEV_DEP_LIFECYCLE_TYPE];\n describe('when there is a version which satisfy more components than the best range', () => {\n beforeEach(() => {\n index = new Map();\n const items = generateItemsFromArrays(\n undefined,\n ['^4.0.0', '5.0.0', '5.0.0', '5.0.0', '^4.0.4'],\n DEV_DEP_LIFECYCLE_TYPE\n );\n index.set(dependencyName, { metadata: {}, componentItems: items });\n dedupedDependencies = hoistDependencies(index);\n });\n it('should hoist the best version to the root', () => {\n expectRootToHave(dedupedDependencies, depKeyName, dependencyName, '5.0.0');\n });\n it('should not put the dependency in components that matches the best version', () => {\n expectComponentDependenciesMapToBeEmpty(`${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-1`, dedupedDependencies);\n expectComponentDependenciesMapToBeEmpty(`${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-2`, dedupedDependencies);\n expectComponentDependenciesMapToBeEmpty(`${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-3`, dedupedDependencies);\n });\n it('should put other ranges in the components', () => {\n expectComponentDependenciesMapToHave(\n dedupedDependencies,\n `${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-0`,\n depKeyName,\n dependencyName,\n '^4.0.0'\n );\n expectComponentDependenciesMapToHave(\n dedupedDependencies,\n `${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-4`,\n depKeyName,\n dependencyName,\n '^4.0.4'\n );\n });\n });\n describe('when there is a best range which satisfy more components than the most common version', () => {\n beforeEach(() => {\n index = new Map();\n const items = generateItemsFromArrays(\n undefined,\n ['^4.0.0', '^4.0.2', '5.0.0', '5.0.0', '^4.0.4'],\n DEV_DEP_LIFECYCLE_TYPE\n );\n index.set(dependencyName, { metadata: {}, componentItems: items });\n dedupedDependencies = hoistDependencies(index);\n });\n it('should hoist the best range to the root', () => {\n expectRootToHave(dedupedDependencies, depKeyName, dependencyName, '>=4.0.4 <5.0.0');\n });\n it('should not put the dependency in components that matches the best range', () => {\n expectComponentDependenciesMapToBeEmpty(`${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-0`, dedupedDependencies);\n expectComponentDependenciesMapToBeEmpty(`${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-1`, dedupedDependencies);\n expectComponentDependenciesMapToBeEmpty(`${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-4`, dedupedDependencies);\n });\n it('should put other ranges in the components', () => {\n expectComponentDependenciesMapToHave(\n dedupedDependencies,\n `${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-2`,\n depKeyName,\n dependencyName,\n '5.0.0'\n );\n expectComponentDependenciesMapToHave(\n dedupedDependencies,\n `${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-3`,\n depKeyName,\n dependencyName,\n '5.0.0'\n );\n });\n });\n describe('when there is a best range which is not the best alone but combine with version its the best', () => {\n // there is best version which matches 4 components (5.0.0)\n // there is best range which intersect 4 ranges (^4.0.5)\n // there is range that intersects 2 components and version that match 3 components (should return this version -\n // that practically matches 5 components. (^6.0.2(3) + 6.0.4(2))\n beforeEach(() => {\n index = new Map();\n const items = generateItemsFromArrays(\n undefined,\n [\n '^4.0.0',\n '^4.0.2',\n '5.0.0',\n '5.0.0',\n '^4.0.4',\n '^4.0.5',\n '5.0.0',\n '5.0.0',\n '^6.0.0',\n '^6.0.1',\n '^6.0.2',\n '6.0.4',\n '6.0.4',\n ],\n DEV_DEP_LIFECYCLE_TYPE\n );\n index.set(dependencyName, { metadata: {}, componentItems: items });\n dedupedDependencies = hoistDependencies(index);\n });\n it('should hoist the best range to the root', () => {\n expectRootToHave(dedupedDependencies, depKeyName, dependencyName, '6.0.4');\n });\n it('should not put the dependency in components that matches the best range or the combined version', () => {\n expectComponentDependenciesMapToBeEmpty(`${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-8`, dedupedDependencies);\n expectComponentDependenciesMapToBeEmpty(`${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-9`, dedupedDependencies);\n expectComponentDependenciesMapToBeEmpty(`${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-10`, dedupedDependencies);\n expectComponentDependenciesMapToBeEmpty(`${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-11`, dedupedDependencies);\n expectComponentDependenciesMapToBeEmpty(`${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-12`, dedupedDependencies);\n });\n it('should put other ranges in the components', () => {\n expectComponentDependenciesMapToHave(\n dedupedDependencies,\n `${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-0`,\n depKeyName,\n dependencyName,\n '^4.0.0'\n );\n expectComponentDependenciesMapToHave(\n dedupedDependencies,\n `${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-1`,\n depKeyName,\n dependencyName,\n '^4.0.2'\n );\n expectComponentDependenciesMapToHave(\n dedupedDependencies,\n `${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-2`,\n depKeyName,\n dependencyName,\n '5.0.0'\n );\n expectComponentDependenciesMapToHave(\n dedupedDependencies,\n `${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-3`,\n depKeyName,\n dependencyName,\n '5.0.0'\n );\n expectComponentDependenciesMapToHave(\n dedupedDependencies,\n `${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-4`,\n depKeyName,\n dependencyName,\n '^4.0.4'\n );\n expectComponentDependenciesMapToHave(\n dedupedDependencies,\n `${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-5`,\n depKeyName,\n dependencyName,\n '^4.0.5'\n );\n expectComponentDependenciesMapToHave(\n dedupedDependencies,\n `${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-6`,\n depKeyName,\n dependencyName,\n '5.0.0'\n );\n expectComponentDependenciesMapToHave(\n dedupedDependencies,\n `${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-7`,\n depKeyName,\n dependencyName,\n '5.0.0'\n );\n });\n });\n });\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_chai","data","require","_constants","_hoistDependencies","DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX","generateItemsFromArrays","dependentComponentNamePrefix","ranges","lifecycleTypes","size","Array","isArray","length","items","i","item","range","origin","lifecycleType","push","generateItems","numOfItems","RUNTIME_DEP_LIFECYCLE_TYPE","fill","expectAllComponentsDependenciesMapToBeEmpty","dedupedDependencies","expect","componentDependenciesMap","to","be","empty","expectComponentDependenciesMapToBeEmpty","dependentName","get","undefined","expectComponentDependenciesMapToHave","dependecyKeyName","dependencyName","dependencyVersion","comp","Error","have","property","expectRootToHave","rootDependencies","expectRootToNotHaveDependency","dependencies","not","devDependencies","peerDependencies","expectPeerIssuesToBeEmpty","issus","peerConflicts","describe","index","dependentComponentName","preservedVersion","depKeyName","KEY_NAME_BY_LIFECYCLE_TYPE","beforeEach","Map","metadata","preservedLifecycleType","set","componentItems","hoistDependencies","it","PEER_DEP_LIFECYCLE_TYPE","equal","dependencyName1","dependencyName2","items1","items2","lengthOf","packageName","conflictedComponents","DEV_DEP_LIFECYCLE_TYPE"],"sources":["hoist-dependencies.spec.ts"],"sourcesContent":["import { expect } from 'chai';\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 } from '../../dependencies';\nimport { DedupedDependencies } from './dedupe-dependencies';\nimport { hoistDependencies } from './hoist-dependencies';\nimport { PackageNameIndex, PackageNameIndexComponentItem, PackageNameIndexItemMetadata } from './index-by-dep-id';\n\nconst DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX = 'dependent-component';\n\nconst generateItemsFromArrays = (\n dependentComponentNamePrefix = 'dependent-component',\n ranges: SemverVersion | SemverVersion[],\n lifecycleTypes: DependencyLifecycleType | DependencyLifecycleType[]\n): PackageNameIndexComponentItem[] => {\n let size = 1;\n if (Array.isArray(ranges)) {\n size = ranges.length;\n } else if (Array.isArray(lifecycleTypes)) {\n size = lifecycleTypes.length;\n }\n const items: PackageNameIndexComponentItem[] = [];\n for (let i = 0; i <= size - 1; i += 1) {\n const item: PackageNameIndexComponentItem = {\n range: Array.isArray(ranges) ? ranges[i] : ranges,\n origin: `${dependentComponentNamePrefix}-${i}`,\n lifecycleType: Array.isArray(lifecycleTypes) ? lifecycleTypes[i] : lifecycleTypes,\n };\n items.push(item);\n }\n return items;\n};\n\nconst generateItems = (\n numOfItems = 3,\n dependentComponentNamePrefix = DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX,\n range: SemverVersion = '1.0.0',\n lifecycleType: DependencyLifecycleType = RUNTIME_DEP_LIFECYCLE_TYPE\n): PackageNameIndexComponentItem[] => {\n const ranges = Array(numOfItems).fill(range);\n const lifecycleTypes = Array(numOfItems).fill(lifecycleType);\n return generateItemsFromArrays(dependentComponentNamePrefix, ranges, lifecycleTypes);\n};\n\nconst expectAllComponentsDependenciesMapToBeEmpty = (dedupedDependencies: DedupedDependencies) => {\n expect(dedupedDependencies.componentDependenciesMap).to.be.empty;\n};\n\nconst expectComponentDependenciesMapToBeEmpty = (dependentName: string, dedupedDependencies: DedupedDependencies) => {\n expect(dedupedDependencies.componentDependenciesMap.get(dependentName)).to.be.undefined;\n};\n\nconst expectComponentDependenciesMapToHave = (\n dedupedDependencies: DedupedDependencies,\n dependentName: string,\n dependecyKeyName: string,\n dependencyName: string,\n dependencyVersion: SemverVersion\n) => {\n const comp = dedupedDependencies.componentDependenciesMap.get(dependentName);\n if (!comp) {\n throw new Error(`component ${dependentName} does not found on dedupedDependencies components map`);\n }\n expect(comp[dependecyKeyName]).to.have.property(dependencyName, dependencyVersion);\n};\n\nconst expectRootToHave = (\n dedupedDependencies: DedupedDependencies,\n dependecyKeyName: string,\n dependencyName: string,\n dependencyVersion: SemverVersion\n) => {\n expect(dedupedDependencies.rootDependencies[dependecyKeyName]).to.have.property(dependencyName, dependencyVersion);\n};\n\nconst expectRootToNotHaveDependency = (dedupedDependencies: DedupedDependencies, dependencyName: string) => {\n expect(dedupedDependencies.rootDependencies.dependencies).to.not.have.property(dependencyName);\n expect(dedupedDependencies.rootDependencies.devDependencies).to.not.have.property(dependencyName);\n expect(dedupedDependencies.rootDependencies.peerDependencies).to.not.have.property(dependencyName);\n};\n\nconst expectPeerIssuesToBeEmpty = (dedupedDependencies: DedupedDependencies) => {\n expect(dedupedDependencies.issus?.peerConflicts).to.be.empty;\n};\n\ndescribe('hoistDependencies', () => {\n let index: PackageNameIndex;\n const dependentComponentName = 'dependent-component';\n let dedupedDependencies: DedupedDependencies;\n describe('preserved dependency', () => {\n describe('some component versions are intersect and some not', () => {\n const dependencyName = 'package-dependency';\n const preservedVersion = '^4.0.0';\n const depKeyName = KEY_NAME_BY_LIFECYCLE_TYPE[RUNTIME_DEP_LIFECYCLE_TYPE];\n beforeEach(() => {\n index = new Map();\n const metadata: PackageNameIndexItemMetadata = {\n preservedLifecycleType: RUNTIME_DEP_LIFECYCLE_TYPE,\n preservedVersion,\n };\n const items = generateItemsFromArrays(undefined, ['4.0.1', '5.0.0'], RUNTIME_DEP_LIFECYCLE_TYPE);\n index.set(dependencyName, { metadata, componentItems: items });\n dedupedDependencies = hoistDependencies(index);\n });\n it('the root manifest should have the preserved version', () => {\n expectRootToHave(dedupedDependencies, depKeyName, dependencyName, preservedVersion);\n });\n\n it('the component dependencies which intersects with the preserved should be empty', () => {\n expectComponentDependenciesMapToBeEmpty(`${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-0`, dedupedDependencies);\n });\n it('the component dependencies which not intersects with the preserved to have a proper version', () => {\n expectComponentDependenciesMapToHave(\n dedupedDependencies,\n `${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-1`,\n depKeyName,\n dependencyName,\n '5.0.0'\n );\n });\n });\n });\n\n describe('dependency that appears only once', () => {\n describe('item is exact version', () => {\n const dependencyName = 'package-dependency';\n const dependencyVersion = '1.0.0';\n beforeEach(() => {\n index = new Map();\n const item: PackageNameIndexComponentItem = {\n range: dependencyVersion,\n origin: dependentComponentName,\n lifecycleType: RUNTIME_DEP_LIFECYCLE_TYPE,\n };\n index.set(dependencyName, { metadata: {}, componentItems: [item] });\n dedupedDependencies = hoistDependencies(index);\n });\n it('the component dependencies should be empty', () => {\n expectAllComponentsDependenciesMapToBeEmpty(dedupedDependencies);\n });\n it('should hoist the dependency to the root', () => {\n expectRootToHave(\n dedupedDependencies,\n KEY_NAME_BY_LIFECYCLE_TYPE[RUNTIME_DEP_LIFECYCLE_TYPE],\n dependencyName,\n dependencyVersion\n );\n });\n });\n describe('item is range', () => {\n const dependencyName = 'package-dependency';\n const dependencyVersion = '^1.0.0';\n beforeEach(() => {\n index = new Map();\n const item: PackageNameIndexComponentItem = {\n range: dependencyVersion,\n origin: dependentComponentName,\n lifecycleType: RUNTIME_DEP_LIFECYCLE_TYPE,\n };\n index.set(dependencyName, { metadata: {}, componentItems: [item] });\n dedupedDependencies = hoistDependencies(index);\n });\n it('the component dependencies should be empty', () => {\n expectAllComponentsDependenciesMapToBeEmpty(dedupedDependencies);\n });\n it('should hoist the dependency to the root', () => {\n expectRootToHave(\n dedupedDependencies,\n KEY_NAME_BY_LIFECYCLE_TYPE[RUNTIME_DEP_LIFECYCLE_TYPE],\n dependencyName,\n dependencyVersion\n );\n });\n });\n describe('item is peer dependency with one version only', () => {\n const dependencyName = 'package-dependency';\n const dependencyVersion = '1.0.0';\n const depKeyName = KEY_NAME_BY_LIFECYCLE_TYPE[PEER_DEP_LIFECYCLE_TYPE];\n\n beforeEach(() => {\n index = new Map();\n const item: PackageNameIndexComponentItem = {\n range: dependencyVersion,\n origin: dependentComponentName,\n lifecycleType: PEER_DEP_LIFECYCLE_TYPE,\n };\n index.set(dependencyName, { metadata: {}, componentItems: [item] });\n dedupedDependencies = hoistDependencies(index);\n });\n it('the component dependencies should be empty', () => {\n expectAllComponentsDependenciesMapToBeEmpty(dedupedDependencies);\n });\n it('should not hoist the dependency to the root', () => {\n // Behavior was changed to hoist peers as well in case they are appear only with one version\n // expectRootToNotHaveDependency(dedupedDependencies, dependencyName);\n expectRootToHave(dedupedDependencies, depKeyName, dependencyName, '1.0.0');\n });\n });\n });\n\n describe('dependency that appears only as peer (in many components) with same version', () => {\n const dependencyName = 'package-dependency';\n const depKeyName = KEY_NAME_BY_LIFECYCLE_TYPE[PEER_DEP_LIFECYCLE_TYPE];\n\n describe('when there are no conflicts between versions', () => {\n beforeEach(() => {\n index = new Map();\n const items = generateItems(3, undefined, undefined, PEER_DEP_LIFECYCLE_TYPE);\n index.set(dependencyName, { metadata: {}, componentItems: items });\n dedupedDependencies = hoistDependencies(index);\n });\n it('should have the peers in each component', () => {\n expect(dedupedDependencies.componentDependenciesMap.size).to.equal(0);\n });\n it('should not hoist the dependency to the root', () => {\n expectRootToHave(dedupedDependencies, depKeyName, dependencyName, '1.0.0');\n });\n it('should not report about peer conflicts', () => {\n expectPeerIssuesToBeEmpty(dedupedDependencies);\n });\n });\n describe('when there conflicts between versions for few dependencies', () => {\n const dependencyName1 = 'package-dependency-1';\n const dependencyName2 = 'package-dependency-2';\n\n beforeEach(() => {\n index = new Map();\n const items1 = generateItemsFromArrays(undefined, ['4.0.0', '5.0.0'], PEER_DEP_LIFECYCLE_TYPE);\n const items2 = generateItemsFromArrays(undefined, ['^4.0.0', '^5.0.0'], PEER_DEP_LIFECYCLE_TYPE);\n index.set(dependencyName1, { metadata: {}, componentItems: items1 });\n index.set(dependencyName2, { metadata: {}, componentItems: items2 });\n dedupedDependencies = hoistDependencies(index);\n });\n it('should have the peers in each component', () => {\n expect(dedupedDependencies.componentDependenciesMap.size).to.equal(2);\n });\n it('should not hoist the dependency to the root', () => {\n expectRootToNotHaveDependency(dedupedDependencies, dependencyName);\n });\n it('should report about peer conflicts', () => {\n expect(dedupedDependencies.issus?.peerConflicts).to.have.lengthOf(2);\n expect(dedupedDependencies.issus?.peerConflicts[0].packageName).to.equal(dependencyName1);\n expect(dedupedDependencies.issus?.peerConflicts[0].conflictedComponents).to.have.lengthOf(2);\n expect(dedupedDependencies.issus?.peerConflicts[1].packageName).to.equal(dependencyName2);\n expect(dedupedDependencies.issus?.peerConflicts[1].conflictedComponents).to.have.lengthOf(2);\n });\n });\n });\n\n describe('dependency that appears only with exact versions', () => {\n const dependencyName = 'package-dependency';\n const depKeyName = KEY_NAME_BY_LIFECYCLE_TYPE[DEV_DEP_LIFECYCLE_TYPE];\n beforeEach(() => {\n index = new Map();\n const items = generateItemsFromArrays(\n undefined,\n ['4.0.0', '5.0.0', '4.0.0', '5.0.0', '4.0.1', '4.0.0'],\n DEV_DEP_LIFECYCLE_TYPE\n );\n index.set(dependencyName, { metadata: {}, componentItems: items });\n dedupedDependencies = hoistDependencies(index);\n });\n it('should hoist the most common version to the root', () => {\n expectRootToHave(dedupedDependencies, depKeyName, dependencyName, '4.0.0');\n });\n it('should not put the most common version in the components that has it', () => {\n expectComponentDependenciesMapToBeEmpty(`${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-0`, dedupedDependencies);\n expectComponentDependenciesMapToBeEmpty(`${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-2`, dedupedDependencies);\n expectComponentDependenciesMapToBeEmpty(`${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-5`, dedupedDependencies);\n });\n it('should put other versions in the components', () => {\n expectComponentDependenciesMapToHave(\n dedupedDependencies,\n `${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-1`,\n depKeyName,\n dependencyName,\n '5.0.0'\n );\n expectComponentDependenciesMapToHave(\n dedupedDependencies,\n `${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-3`,\n depKeyName,\n dependencyName,\n '5.0.0'\n );\n });\n });\n\n describe('dependency that appears only with ranges', () => {\n const dependencyName = 'package-dependency';\n const depKeyName = KEY_NAME_BY_LIFECYCLE_TYPE[DEV_DEP_LIFECYCLE_TYPE];\n beforeEach(() => {\n index = new Map();\n const items = generateItemsFromArrays(\n undefined,\n ['^4.0.0', '^5.0.0', '^4.0.0', '^5.0.0', '^5.0.1', '^4.0.1', '^4.0.4'],\n DEV_DEP_LIFECYCLE_TYPE\n );\n index.set(dependencyName, { metadata: {}, componentItems: items });\n dedupedDependencies = hoistDependencies(index);\n });\n it('should hoist the best range to the root', () => {\n expectRootToHave(dedupedDependencies, depKeyName, dependencyName, '>=4.0.4 <5.0.0');\n });\n it('should not put the dependency in components that matches the best range', () => {\n expectComponentDependenciesMapToBeEmpty(`${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-0`, dedupedDependencies);\n expectComponentDependenciesMapToBeEmpty(`${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-2`, dedupedDependencies);\n expectComponentDependenciesMapToBeEmpty(`${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-5`, dedupedDependencies);\n expectComponentDependenciesMapToBeEmpty(`${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-6`, dedupedDependencies);\n });\n it('should put other ranges in the components', () => {\n expectComponentDependenciesMapToHave(\n dedupedDependencies,\n `${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-1`,\n depKeyName,\n dependencyName,\n '^5.0.0'\n );\n expectComponentDependenciesMapToHave(\n dedupedDependencies,\n `${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-3`,\n depKeyName,\n dependencyName,\n '^5.0.0'\n );\n expectComponentDependenciesMapToHave(\n dedupedDependencies,\n `${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-4`,\n depKeyName,\n dependencyName,\n '^5.0.1'\n );\n });\n });\n\n describe('dependency that appears with both ranges and exact versions', () => {\n const dependencyName = 'package-dependency';\n const depKeyName = KEY_NAME_BY_LIFECYCLE_TYPE[DEV_DEP_LIFECYCLE_TYPE];\n describe('when there is a version which satisfy more components than the best range', () => {\n beforeEach(() => {\n index = new Map();\n const items = generateItemsFromArrays(\n undefined,\n ['^4.0.0', '5.0.0', '5.0.0', '5.0.0', '^4.0.4'],\n DEV_DEP_LIFECYCLE_TYPE\n );\n index.set(dependencyName, { metadata: {}, componentItems: items });\n dedupedDependencies = hoistDependencies(index);\n });\n it('should hoist the best version to the root', () => {\n expectRootToHave(dedupedDependencies, depKeyName, dependencyName, '5.0.0');\n });\n it('should not put the dependency in components that matches the best version', () => {\n expectComponentDependenciesMapToBeEmpty(`${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-1`, dedupedDependencies);\n expectComponentDependenciesMapToBeEmpty(`${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-2`, dedupedDependencies);\n expectComponentDependenciesMapToBeEmpty(`${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-3`, dedupedDependencies);\n });\n it('should put other ranges in the components', () => {\n expectComponentDependenciesMapToHave(\n dedupedDependencies,\n `${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-0`,\n depKeyName,\n dependencyName,\n '^4.0.0'\n );\n expectComponentDependenciesMapToHave(\n dedupedDependencies,\n `${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-4`,\n depKeyName,\n dependencyName,\n '^4.0.4'\n );\n });\n });\n describe('when there is a best range which satisfy more components than the most common version', () => {\n beforeEach(() => {\n index = new Map();\n const items = generateItemsFromArrays(\n undefined,\n ['^4.0.0', '^4.0.2', '5.0.0', '5.0.0', '^4.0.4'],\n DEV_DEP_LIFECYCLE_TYPE\n );\n index.set(dependencyName, { metadata: {}, componentItems: items });\n dedupedDependencies = hoistDependencies(index);\n });\n it('should hoist the best range to the root', () => {\n expectRootToHave(dedupedDependencies, depKeyName, dependencyName, '>=4.0.4 <5.0.0');\n });\n it('should not put the dependency in components that matches the best range', () => {\n expectComponentDependenciesMapToBeEmpty(`${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-0`, dedupedDependencies);\n expectComponentDependenciesMapToBeEmpty(`${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-1`, dedupedDependencies);\n expectComponentDependenciesMapToBeEmpty(`${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-4`, dedupedDependencies);\n });\n it('should put other ranges in the components', () => {\n expectComponentDependenciesMapToHave(\n dedupedDependencies,\n `${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-2`,\n depKeyName,\n dependencyName,\n '5.0.0'\n );\n expectComponentDependenciesMapToHave(\n dedupedDependencies,\n `${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-3`,\n depKeyName,\n dependencyName,\n '5.0.0'\n );\n });\n });\n describe('when there is a best range which is not the best alone but combine with version its the best', () => {\n // there is best version which matches 4 components (5.0.0)\n // there is best range which intersect 4 ranges (^4.0.5)\n // there is range that intersects 2 components and version that match 3 components (should return this version -\n // that practically matches 5 components. (^6.0.2(3) + 6.0.4(2))\n beforeEach(() => {\n index = new Map();\n const items = generateItemsFromArrays(\n undefined,\n [\n '^4.0.0',\n '^4.0.2',\n '5.0.0',\n '5.0.0',\n '^4.0.4',\n '^4.0.5',\n '5.0.0',\n '5.0.0',\n '^6.0.0',\n '^6.0.1',\n '^6.0.2',\n '6.0.4',\n '6.0.4',\n ],\n DEV_DEP_LIFECYCLE_TYPE\n );\n index.set(dependencyName, { metadata: {}, componentItems: items });\n dedupedDependencies = hoistDependencies(index);\n });\n it('should hoist the best range to the root', () => {\n expectRootToHave(dedupedDependencies, depKeyName, dependencyName, '6.0.4');\n });\n it('should not put the dependency in components that matches the best range or the combined version', () => {\n expectComponentDependenciesMapToBeEmpty(`${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-8`, dedupedDependencies);\n expectComponentDependenciesMapToBeEmpty(`${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-9`, dedupedDependencies);\n expectComponentDependenciesMapToBeEmpty(`${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-10`, dedupedDependencies);\n expectComponentDependenciesMapToBeEmpty(`${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-11`, dedupedDependencies);\n expectComponentDependenciesMapToBeEmpty(`${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-12`, dedupedDependencies);\n });\n it('should put other ranges in the components', () => {\n expectComponentDependenciesMapToHave(\n dedupedDependencies,\n `${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-0`,\n depKeyName,\n dependencyName,\n '^4.0.0'\n );\n expectComponentDependenciesMapToHave(\n dedupedDependencies,\n `${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-1`,\n depKeyName,\n dependencyName,\n '^4.0.2'\n );\n expectComponentDependenciesMapToHave(\n dedupedDependencies,\n `${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-2`,\n depKeyName,\n dependencyName,\n '5.0.0'\n );\n expectComponentDependenciesMapToHave(\n dedupedDependencies,\n `${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-3`,\n depKeyName,\n dependencyName,\n '5.0.0'\n );\n expectComponentDependenciesMapToHave(\n dedupedDependencies,\n `${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-4`,\n depKeyName,\n dependencyName,\n '^4.0.4'\n );\n expectComponentDependenciesMapToHave(\n dedupedDependencies,\n `${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-5`,\n depKeyName,\n dependencyName,\n '^4.0.5'\n );\n expectComponentDependenciesMapToHave(\n dedupedDependencies,\n `${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-6`,\n depKeyName,\n dependencyName,\n '5.0.0'\n );\n expectComponentDependenciesMapToHave(\n dedupedDependencies,\n `${DEFAULT_DEPENDENT_COMPONENT_NAME_PREFIX}-7`,\n depKeyName,\n dependencyName,\n '5.0.0'\n );\n });\n });\n });\n});\n"],"mappings":";;AAAA,SAAAA,MAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,KAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAE,WAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,UAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAQA,SAAAG,mBAAA;EAAA,MAAAH,IAAA,GAAAC,OAAA;EAAAE,kBAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAGA,MAAMI,uCAAuC,GAAG,qBAAqB;AAErE,MAAMC,uBAAuB,GAAGA,CAC9BC,4BAA4B,GAAG,qBAAqB,EACpDC,MAAuC,EACvCC,cAAmE,KAC/B;EACpC,IAAIC,IAAI,GAAG,CAAC;EACZ,IAAIC,KAAK,CAACC,OAAO,CAACJ,MAAM,CAAC,EAAE;IACzBE,IAAI,GAAGF,MAAM,CAACK,MAAM;EACtB,CAAC,MAAM,IAAIF,KAAK,CAACC,OAAO,CAACH,cAAc,CAAC,EAAE;IACxCC,IAAI,GAAGD,cAAc,CAACI,MAAM;EAC9B;EACA,MAAMC,KAAsC,GAAG,EAAE;EACjD,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAIL,IAAI,GAAG,CAAC,EAAEK,CAAC,IAAI,CAAC,EAAE;IACrC,MAAMC,IAAmC,GAAG;MAC1CC,KAAK,EAAEN,KAAK,CAACC,OAAO,CAACJ,MAAM,CAAC,GAAGA,MAAM,CAACO,CAAC,CAAC,GAAGP,MAAM;MACjDU,MAAM,EAAG,GAAEX,4BAA6B,IAAGQ,CAAE,EAAC;MAC9CI,aAAa,EAAER,KAAK,CAACC,OAAO,CAACH,cAAc,CAAC,GAAGA,cAAc,CAACM,CAAC,CAAC,GAAGN;IACrE,CAAC;IACDK,KAAK,CAACM,IAAI,CAACJ,IAAI,CAAC;EAClB;EACA,OAAOF,KAAK;AACd,CAAC;AAED,MAAMO,aAAa,GAAGA,CACpBC,UAAU,GAAG,CAAC,EACdf,4BAA4B,GAAGF,uCAAuC,EACtEY,KAAoB,GAAG,OAAO,EAC9BE,aAAsC,GAAGI,uCAA0B,KAC/B;EACpC,MAAMf,MAAM,GAAGG,KAAK,CAACW,UAAU,CAAC,CAACE,IAAI,CAACP,KAAK,CAAC;EAC5C,MAAMR,cAAc,GAAGE,KAAK,CAACW,UAAU,CAAC,CAACE,IAAI,CAACL,aAAa,CAAC;EAC5D,OAAOb,uBAAuB,CAACC,4BAA4B,EAAEC,MAAM,EAAEC,cAAc,CAAC;AACtF,CAAC;AAED,MAAMgB,2CAA2C,GAAIC,mBAAwC,IAAK;EAChG,IAAAC,cAAM,EAACD,mBAAmB,CAACE,wBAAwB,CAAC,CAACC,EAAE,CAACC,EAAE,CAACC,KAAK;AAClE,CAAC;AAED,MAAMC,uCAAuC,GAAGA,CAACC,aAAqB,EAAEP,mBAAwC,KAAK;EACnH,IAAAC,cAAM,EAACD,mBAAmB,CAACE,wBAAwB,CAACM,GAAG,CAACD,aAAa,CAAC,CAAC,CAACJ,EAAE,CAACC,EAAE,CAACK,SAAS;AACzF,CAAC;AAED,MAAMC,oCAAoC,GAAGA,CAC3CV,mBAAwC,EACxCO,aAAqB,EACrBI,gBAAwB,EACxBC,cAAsB,EACtBC,iBAAgC,KAC7B;EACH,MAAMC,IAAI,GAAGd,mBAAmB,CAACE,wBAAwB,CAACM,GAAG,CAACD,aAAa,CAAC;EAC5E,IAAI,CAACO,IAAI,EAAE;IACT,MAAM,IAAIC,KAAK,CAAE,aAAYR,aAAc,uDAAsD,CAAC;EACpG;EACA,IAAAN,cAAM,EAACa,IAAI,CAACH,gBAAgB,CAAC,CAAC,CAACR,EAAE,CAACa,IAAI,CAACC,QAAQ,CAACL,cAAc,EAAEC,iBAAiB,CAAC;AACpF,CAAC;AAED,MAAMK,gBAAgB,GAAGA,CACvBlB,mBAAwC,EACxCW,gBAAwB,EACxBC,cAAsB,EACtBC,iBAAgC,KAC7B;EACH,IAAAZ,cAAM,EAACD,mBAAmB,CAACmB,gBAAgB,CAACR,gBAAgB,CAAC,CAAC,CAACR,EAAE,CAACa,IAAI,CAACC,QAAQ,CAACL,cAAc,EAAEC,iBAAiB,CAAC;AACpH,CAAC;AAED,MAAMO,6BAA6B,GAAGA,CAACpB,mBAAwC,EAAEY,cAAsB,KAAK;EAC1G,IAAAX,cAAM,EAACD,mBAAmB,CAACmB,gBAAgB,CAACE,YAAY,CAAC,CAAClB,EAAE,CAACmB,GAAG,CAACN,IAAI,CAACC,QAAQ,CAACL,cAAc,CAAC;EAC9F,IAAAX,cAAM,EAACD,mBAAmB,CAACmB,gBAAgB,CAACI,eAAe,CAAC,CAACpB,EAAE,CAACmB,GAAG,CAACN,IAAI,CAACC,QAAQ,CAACL,cAAc,CAAC;EACjG,IAAAX,cAAM,EAACD,mBAAmB,CAACmB,gBAAgB,CAACK,gBAAgB,CAAC,CAACrB,EAAE,CAACmB,GAAG,CAACN,IAAI,CAACC,QAAQ,CAACL,cAAc,CAAC;AACpG,CAAC;AAED,MAAMa,yBAAyB,GAAIzB,mBAAwC,IAAK;EAC9E,IAAAC,cAAM,EAACD,mBAAmB,CAAC0B,KAAK,EAAEC,aAAa,CAAC,CAACxB,EAAE,CAACC,EAAE,CAACC,KAAK;AAC9D,CAAC;AAEDuB,QAAQ,CAAC,mBAAmB,EAAE,MAAM;EAClC,IAAIC,KAAuB;EAC3B,MAAMC,sBAAsB,GAAG,qBAAqB;EACpD,IAAI9B,mBAAwC;EAC5C4B,QAAQ,CAAC,sBAAsB,EAAE,MAAM;IACrCA,QAAQ,CAAC,oDAAoD,EAAE,MAAM;MACnE,MAAMhB,cAAc,GAAG,oBAAoB;MAC3C,MAAMmB,gBAAgB,GAAG,QAAQ;MACjC,MAAMC,UAAU,GAAGC,uCAA0B,CAACpC,uCAA0B,CAAC;MACzEqC,UAAU,CAAC,MAAM;QACfL,KAAK,GAAG,IAAIM,GAAG,CAAC,CAAC;QACjB,MAAMC,QAAsC,GAAG;UAC7CC,sBAAsB,EAAExC,uCAA0B;UAClDkC;QACF,CAAC;QACD,MAAM3C,KAAK,GAAGR,uBAAuB,CAAC6B,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAEZ,uCAA0B,CAAC;QAChGgC,KAAK,CAACS,GAAG,CAAC1B,cAAc,EAAE;UAAEwB,QAAQ;UAAEG,cAAc,EAAEnD;QAAM,CAAC,CAAC;QAC9DY,mBAAmB,GAAG,IAAAwC,sCAAiB,EAACX,KAAK,CAAC;MAChD,CAAC,CAAC;MACFY,EAAE,CAAC,qDAAqD,EAAE,MAAM;QAC9DvB,gBAAgB,CAAClB,mBAAmB,EAAEgC,UAAU,EAAEpB,cAAc,EAAEmB,gBAAgB,CAAC;MACrF,CAAC,CAAC;MAEFU,EAAE,CAAC,gFAAgF,EAAE,MAAM;QACzFnC,uCAAuC,CAAE,GAAE3B,uCAAwC,IAAG,EAAEqB,mBAAmB,CAAC;MAC9G,CAAC,CAAC;MACFyC,EAAE,CAAC,6FAA6F,EAAE,MAAM;QACtG/B,oCAAoC,CAClCV,mBAAmB,EAClB,GAAErB,uCAAwC,IAAG,EAC9CqD,UAAU,EACVpB,cAAc,EACd,OACF,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFgB,QAAQ,CAAC,mCAAmC,EAAE,MAAM;IAClDA,QAAQ,CAAC,uBAAuB,EAAE,MAAM;MACtC,MAAMhB,cAAc,GAAG,oBAAoB;MAC3C,MAAMC,iBAAiB,GAAG,OAAO;MACjCqB,UAAU,CAAC,MAAM;QACfL,KAAK,GAAG,IAAIM,GAAG,CAAC,CAAC;QACjB,MAAM7C,IAAmC,GAAG;UAC1CC,KAAK,EAAEsB,iBAAiB;UACxBrB,MAAM,EAAEsC,sBAAsB;UAC9BrC,aAAa,EAAEI;QACjB,CAAC;QACDgC,KAAK,CAACS,GAAG,CAAC1B,cAAc,EAAE;UAAEwB,QAAQ,EAAE,CAAC,CAAC;UAAEG,cAAc,EAAE,CAACjD,IAAI;QAAE,CAAC,CAAC;QACnEU,mBAAmB,GAAG,IAAAwC,sCAAiB,EAACX,KAAK,CAAC;MAChD,CAAC,CAAC;MACFY,EAAE,CAAC,4CAA4C,EAAE,MAAM;QACrD1C,2CAA2C,CAACC,mBAAmB,CAAC;MAClE,CAAC,CAAC;MACFyC,EAAE,CAAC,yCAAyC,EAAE,MAAM;QAClDvB,gBAAgB,CACdlB,mBAAmB,EACnBiC,uCAA0B,CAACpC,uCAA0B,CAAC,EACtDe,cAAc,EACdC,iBACF,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;IACFe,QAAQ,CAAC,eAAe,EAAE,MAAM;MAC9B,MAAMhB,cAAc,GAAG,oBAAoB;MAC3C,MAAMC,iBAAiB,GAAG,QAAQ;MAClCqB,UAAU,CAAC,MAAM;QACfL,KAAK,GAAG,IAAIM,GAAG,CAAC,CAAC;QACjB,MAAM7C,IAAmC,GAAG;UAC1CC,KAAK,EAAEsB,iBAAiB;UACxBrB,MAAM,EAAEsC,sBAAsB;UAC9BrC,aAAa,EAAEI;QACjB,CAAC;QACDgC,KAAK,CAACS,GAAG,CAAC1B,cAAc,EAAE;UAAEwB,QAAQ,EAAE,CAAC,CAAC;UAAEG,cAAc,EAAE,CAACjD,IAAI;QAAE,CAAC,CAAC;QACnEU,mBAAmB,GAAG,IAAAwC,sCAAiB,EAACX,KAAK,CAAC;MAChD,CAAC,CAAC;MACFY,EAAE,CAAC,4CAA4C,EAAE,MAAM;QACrD1C,2CAA2C,CAACC,mBAAmB,CAAC;MAClE,CAAC,CAAC;MACFyC,EAAE,CAAC,yCAAyC,EAAE,MAAM;QAClDvB,gBAAgB,CACdlB,mBAAmB,EACnBiC,uCAA0B,CAACpC,uCAA0B,CAAC,EACtDe,cAAc,EACdC,iBACF,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;IACFe,QAAQ,CAAC,+CAA+C,EAAE,MAAM;MAC9D,MAAMhB,cAAc,GAAG,oBAAoB;MAC3C,MAAMC,iBAAiB,GAAG,OAAO;MACjC,MAAMmB,UAAU,GAAGC,uCAA0B,CAACS,oCAAuB,CAAC;MAEtER,UAAU,CAAC,MAAM;QACfL,KAAK,GAAG,IAAIM,GAAG,CAAC,CAAC;QACjB,MAAM7C,IAAmC,GAAG;UAC1CC,KAAK,EAAEsB,iBAAiB;UACxBrB,MAAM,EAAEsC,sBAAsB;UAC9BrC,aAAa,EAAEiD;QACjB,CAAC;QACDb,KAAK,CAACS,GAAG,CAAC1B,cAAc,EAAE;UAAEwB,QAAQ,EAAE,CAAC,CAAC;UAAEG,cAAc,EAAE,CAACjD,IAAI;QAAE,CAAC,CAAC;QACnEU,mBAAmB,GAAG,IAAAwC,sCAAiB,EAACX,KAAK,CAAC;MAChD,CAAC,CAAC;MACFY,EAAE,CAAC,4CAA4C,EAAE,MAAM;QACrD1C,2CAA2C,CAACC,mBAAmB,CAAC;MAClE,CAAC,CAAC;MACFyC,EAAE,CAAC,6CAA6C,EAAE,MAAM;QACtD;QACA;QACAvB,gBAAgB,CAAClB,mBAAmB,EAAEgC,UAAU,EAAEpB,cAAc,EAAE,OAAO,CAAC;MAC5E,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFgB,QAAQ,CAAC,6EAA6E,EAAE,MAAM;IAC5F,MAAMhB,cAAc,GAAG,oBAAoB;IAC3C,MAAMoB,UAAU,GAAGC,uCAA0B,CAACS,oCAAuB,CAAC;IAEtEd,QAAQ,CAAC,8CAA8C,EAAE,MAAM;MAC7DM,UAAU,CAAC,MAAM;QACfL,KAAK,GAAG,IAAIM,GAAG,CAAC,CAAC;QACjB,MAAM/C,KAAK,GAAGO,aAAa,CAAC,CAAC,EAAEc,SAAS,EAAEA,SAAS,EAAEiC,oCAAuB,CAAC;QAC7Eb,KAAK,CAACS,GAAG,CAAC1B,cAAc,EAAE;UAAEwB,QAAQ,EAAE,CAAC,CAAC;UAAEG,cAAc,EAAEnD;QAAM,CAAC,CAAC;QAClEY,mBAAmB,GAAG,IAAAwC,sCAAiB,EAACX,KAAK,CAAC;MAChD,CAAC,CAAC;MACFY,EAAE,CAAC,yCAAyC,EAAE,MAAM;QAClD,IAAAxC,cAAM,EAACD,mBAAmB,CAACE,wBAAwB,CAAClB,IAAI,CAAC,CAACmB,EAAE,CAACwC,KAAK,CAAC,CAAC,CAAC;MACvE,CAAC,CAAC;MACFF,EAAE,CAAC,6CAA6C,EAAE,MAAM;QACtDvB,gBAAgB,CAAClB,mBAAmB,EAAEgC,UAAU,EAAEpB,cAAc,EAAE,OAAO,CAAC;MAC5E,CAAC,CAAC;MACF6B,EAAE,CAAC,wCAAwC,EAAE,MAAM;QACjDhB,yBAAyB,CAACzB,mBAAmB,CAAC;MAChD,CAAC,CAAC;IACJ,CAAC,CAAC;IACF4B,QAAQ,CAAC,4DAA4D,EAAE,MAAM;MAC3E,MAAMgB,eAAe,GAAG,sBAAsB;MAC9C,MAAMC,eAAe,GAAG,sBAAsB;MAE9CX,UAAU,CAAC,MAAM;QACfL,KAAK,GAAG,IAAIM,GAAG,CAAC,CAAC;QACjB,MAAMW,MAAM,GAAGlE,uBAAuB,CAAC6B,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAEiC,oCAAuB,CAAC;QAC9F,MAAMK,MAAM,GAAGnE,uBAAuB,CAAC6B,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAEiC,oCAAuB,CAAC;QAChGb,KAAK,CAACS,GAAG,CAACM,eAAe,EAAE;UAAER,QAAQ,EAAE,CAAC,CAAC;UAAEG,cAAc,EAAEO;QAAO,CAAC,CAAC;QACpEjB,KAAK,CAACS,GAAG,CAACO,eAAe,EAAE;UAAET,QAAQ,EAAE,CAAC,CAAC;UAAEG,cAAc,EAAEQ;QAAO,CAAC,CAAC;QACpE/C,mBAAmB,GAAG,IAAAwC,sCAAiB,EAACX,KAAK,CAAC;MAChD,CAAC,CAAC;MACFY,EAAE,CAAC,yCAAyC,EAAE,MAAM;QAClD,IAAAxC,cAAM,EAACD,mBAAmB,CAACE,wBAAwB,CAAClB,IAAI,CAAC,CAACmB,EAAE,CAACwC,KAAK,CAAC,CAAC,CAAC;MACvE,CAAC,CAAC;MACFF,EAAE,CAAC,6CAA6C,EAAE,MAAM;QACtDrB,6BAA6B,CAACpB,mBAAmB,EAAEY,cAAc,CAAC;MACpE,CAAC,CAAC;MACF6B,EAAE,CAAC,oCAAoC,EAAE,MAAM;QAC7C,IAAAxC,cAAM,EAACD,mBAAmB,CAAC0B,KAAK,EAAEC,aAAa,CAAC,CAACxB,EAAE,CAACa,IAAI,CAACgC,QAAQ,CAAC,CAAC,CAAC;QACpE,IAAA/C,cAAM,EAACD,mBAAmB,CAAC0B,KAAK,EAAEC,aAAa,CAAC,CAAC,CAAC,CAACsB,WAAW,CAAC,CAAC9C,EAAE,CAACwC,KAAK,CAACC,eAAe,CAAC;QACzF,IAAA3C,cAAM,EAACD,mBAAmB,CAAC0B,KAAK,EAAEC,aAAa,CAAC,CAAC,CAAC,CAACuB,oBAAoB,CAAC,CAAC/C,EAAE,CAACa,IAAI,CAACgC,QAAQ,CAAC,CAAC,CAAC;QAC5F,IAAA/C,cAAM,EAACD,mBAAmB,CAAC0B,KAAK,EAAEC,aAAa,CAAC,CAAC,CAAC,CAACsB,WAAW,CAAC,CAAC9C,EAAE,CAACwC,KAAK,CAACE,eAAe,CAAC;QACzF,IAAA5C,cAAM,EAACD,mBAAmB,CAAC0B,KAAK,EAAEC,aAAa,CAAC,CAAC,CAAC,CAACuB,oBAAoB,CAAC,CAAC/C,EAAE,CAACa,IAAI,CAACgC,QAAQ,CAAC,CAAC,CAAC;MAC9F,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFpB,QAAQ,CAAC,kDAAkD,EAAE,MAAM;IACjE,MAAMhB,cAAc,GAAG,oBAAoB;IAC3C,MAAMoB,UAAU,GAAGC,uCAA0B,CAACkB,mCAAsB,CAAC;IACrEjB,UAAU,CAAC,MAAM;MACfL,KAAK,GAAG,IAAIM,GAAG,CAAC,CAAC;MACjB,MAAM/C,KAAK,GAAGR,uBAAuB,CACnC6B,SAAS,EACT,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EACtD0C,mCACF,CAAC;MACDtB,KAAK,CAACS,GAAG,CAAC1B,cAAc,EAAE;QAAEwB,QAAQ,EAAE,CAAC,CAAC;QAAEG,cAAc,EAAEnD;MAAM,CAAC,CAAC;MAClEY,mBAAmB,GAAG,IAAAwC,sCAAiB,EAACX,KAAK,CAAC;IAChD,CAAC,CAAC;IACFY,EAAE,CAAC,kDAAkD,EAAE,MAAM;MAC3DvB,gBAAgB,CAAClB,mBAAmB,EAAEgC,UAAU,EAAEpB,cAAc,EAAE,OAAO,CAAC;IAC5E,CAAC,CAAC;IACF6B,EAAE,CAAC,sEAAsE,EAAE,MAAM;MAC/EnC,uCAAuC,CAAE,GAAE3B,uCAAwC,IAAG,EAAEqB,mBAAmB,CAAC;MAC5GM,uCAAuC,CAAE,GAAE3B,uCAAwC,IAAG,EAAEqB,mBAAmB,CAAC;MAC5GM,uCAAuC,CAAE,GAAE3B,uCAAwC,IAAG,EAAEqB,mBAAmB,CAAC;IAC9G,CAAC,CAAC;IACFyC,EAAE,CAAC,6CAA6C,EAAE,MAAM;MACtD/B,oCAAoC,CAClCV,mBAAmB,EAClB,GAAErB,uCAAwC,IAAG,EAC9CqD,UAAU,EACVpB,cAAc,EACd,OACF,CAAC;MACDF,oCAAoC,CAClCV,mBAAmB,EAClB,GAAErB,uCAAwC,IAAG,EAC9CqD,UAAU,EACVpB,cAAc,EACd,OACF,CAAC;IACH,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFgB,QAAQ,CAAC,0CAA0C,EAAE,MAAM;IACzD,MAAMhB,cAAc,GAAG,oBAAoB;IAC3C,MAAMoB,UAAU,GAAGC,uCAA0B,CAACkB,mCAAsB,CAAC;IACrEjB,UAAU,CAAC,MAAM;MACfL,KAAK,GAAG,IAAIM,GAAG,CAAC,CAAC;MACjB,MAAM/C,KAAK,GAAGR,uBAAuB,CACnC6B,SAAS,EACT,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EACtE0C,mCACF,CAAC;MACDtB,KAAK,CAACS,GAAG,CAAC1B,cAAc,EAAE;QAAEwB,QAAQ,EAAE,CAAC,CAAC;QAAEG,cAAc,EAAEnD;MAAM,CAAC,CAAC;MAClEY,mBAAmB,GAAG,IAAAwC,sCAAiB,EAACX,KAAK,CAAC;IAChD,CAAC,CAAC;IACFY,EAAE,CAAC,yCAAyC,EAAE,MAAM;MAClDvB,gBAAgB,CAAClB,mBAAmB,EAAEgC,UAAU,EAAEpB,cAAc,EAAE,gBAAgB,CAAC;IACrF,CAAC,CAAC;IACF6B,EAAE,CAAC,yEAAyE,EAAE,MAAM;MAClFnC,uCAAuC,CAAE,GAAE3B,uCAAwC,IAAG,EAAEqB,mBAAmB,CAAC;MAC5GM,uCAAuC,CAAE,GAAE3B,uCAAwC,IAAG,EAAEqB,mBAAmB,CAAC;MAC5GM,uCAAuC,CAAE,GAAE3B,uCAAwC,IAAG,EAAEqB,mBAAmB,CAAC;MAC5GM,uCAAuC,CAAE,GAAE3B,uCAAwC,IAAG,EAAEqB,mBAAmB,CAAC;IAC9G,CAAC,CAAC;IACFyC,EAAE,CAAC,2CAA2C,EAAE,MAAM;MACpD/B,oCAAoC,CAClCV,mBAAmB,EAClB,GAAErB,uCAAwC,IAAG,EAC9CqD,UAAU,EACVpB,cAAc,EACd,QACF,CAAC;MACDF,oCAAoC,CAClCV,mBAAmB,EAClB,GAAErB,uCAAwC,IAAG,EAC9CqD,UAAU,EACVpB,cAAc,EACd,QACF,CAAC;MACDF,oCAAoC,CAClCV,mBAAmB,EAClB,GAAErB,uCAAwC,IAAG,EAC9CqD,UAAU,EACVpB,cAAc,EACd,QACF,CAAC;IACH,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFgB,QAAQ,CAAC,6DAA6D,EAAE,MAAM;IAC5E,MAAMhB,cAAc,GAAG,oBAAoB;IAC3C,MAAMoB,UAAU,GAAGC,uCAA0B,CAACkB,mCAAsB,CAAC;IACrEvB,QAAQ,CAAC,2EAA2E,EAAE,MAAM;MAC1FM,UAAU,CAAC,MAAM;QACfL,KAAK,GAAG,IAAIM,GAAG,CAAC,CAAC;QACjB,MAAM/C,KAAK,GAAGR,uBAAuB,CACnC6B,SAAS,EACT,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAC/C0C,mCACF,CAAC;QACDtB,KAAK,CAACS,GAAG,CAAC1B,cAAc,EAAE;UAAEwB,QAAQ,EAAE,CAAC,CAAC;UAAEG,cAAc,EAAEnD;QAAM,CAAC,CAAC;QAClEY,mBAAmB,GAAG,IAAAwC,sCAAiB,EAACX,KAAK,CAAC;MAChD,CAAC,CAAC;MACFY,EAAE,CAAC,2CAA2C,EAAE,MAAM;QACpDvB,gBAAgB,CAAClB,mBAAmB,EAAEgC,UAAU,EAAEpB,cAAc,EAAE,OAAO,CAAC;MAC5E,CAAC,CAAC;MACF6B,EAAE,CAAC,2EAA2E,EAAE,MAAM;QACpFnC,uCAAuC,CAAE,GAAE3B,uCAAwC,IAAG,EAAEqB,mBAAmB,CAAC;QAC5GM,uCAAuC,CAAE,GAAE3B,uCAAwC,IAAG,EAAEqB,mBAAmB,CAAC;QAC5GM,uCAAuC,CAAE,GAAE3B,uCAAwC,IAAG,EAAEqB,mBAAmB,CAAC;MAC9G,CAAC,CAAC;MACFyC,EAAE,CAAC,2CAA2C,EAAE,MAAM;QACpD/B,oCAAoC,CAClCV,mBAAmB,EAClB,GAAErB,uCAAwC,IAAG,EAC9CqD,UAAU,EACVpB,cAAc,EACd,QACF,CAAC;QACDF,oCAAoC,CAClCV,mBAAmB,EAClB,GAAErB,uCAAwC,IAAG,EAC9CqD,UAAU,EACVpB,cAAc,EACd,QACF,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;IACFgB,QAAQ,CAAC,uFAAuF,EAAE,MAAM;MACtGM,UAAU,CAAC,MAAM;QACfL,KAAK,GAAG,IAAIM,GAAG,CAAC,CAAC;QACjB,MAAM/C,KAAK,GAAGR,uBAAuB,CACnC6B,SAAS,EACT,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAChD0C,mCACF,CAAC;QACDtB,KAAK,CAACS,GAAG,CAAC1B,cAAc,EAAE;UAAEwB,QAAQ,EAAE,CAAC,CAAC;UAAEG,cAAc,EAAEnD;QAAM,CAAC,CAAC;QAClEY,mBAAmB,GAAG,IAAAwC,sCAAiB,EAACX,KAAK,CAAC;MAChD,CAAC,CAAC;MACFY,EAAE,CAAC,yCAAyC,EAAE,MAAM;QAClDvB,gBAAgB,CAAClB,mBAAmB,EAAEgC,UAAU,EAAEpB,cAAc,EAAE,gBAAgB,CAAC;MACrF,CAAC,CAAC;MACF6B,EAAE,CAAC,yEAAyE,EAAE,MAAM;QAClFnC,uCAAuC,CAAE,GAAE3B,uCAAwC,IAAG,EAAEqB,mBAAmB,CAAC;QAC5GM,uCAAuC,CAAE,GAAE3B,uCAAwC,IAAG,EAAEqB,mBAAmB,CAAC;QAC5GM,uCAAuC,CAAE,GAAE3B,uCAAwC,IAAG,EAAEqB,mBAAmB,CAAC;MAC9G,CAAC,CAAC;MACFyC,EAAE,CAAC,2CAA2C,EAAE,MAAM;QACpD/B,oCAAoC,CAClCV,mBAAmB,EAClB,GAAErB,uCAAwC,IAAG,EAC9CqD,UAAU,EACVpB,cAAc,EACd,OACF,CAAC;QACDF,oCAAoC,CAClCV,mBAAmB,EAClB,GAAErB,uCAAwC,IAAG,EAC9CqD,UAAU,EACVpB,cAAc,EACd,OACF,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;IACFgB,QAAQ,CAAC,8FAA8F,EAAE,MAAM;MAC7G;MACA;MACA;MACA;MACAM,UAAU,CAAC,MAAM;QACfL,KAAK,GAAG,IAAIM,GAAG,CAAC,CAAC;QACjB,MAAM/C,KAAK,GAAGR,uBAAuB,CACnC6B,SAAS,EACT,CACE,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,OAAO,CACR,EACD0C,mCACF,CAAC;QACDtB,KAAK,CAACS,GAAG,CAAC1B,cAAc,EAAE;UAAEwB,QAAQ,EAAE,CAAC,CAAC;UAAEG,cAAc,EAAEnD;QAAM,CAAC,CAAC;QAClEY,mBAAmB,GAAG,IAAAwC,sCAAiB,EAACX,KAAK,CAAC;MAChD,CAAC,CAAC;MACFY,EAAE,CAAC,yCAAyC,EAAE,MAAM;QAClDvB,gBAAgB,CAAClB,mBAAmB,EAAEgC,UAAU,EAAEpB,cAAc,EAAE,OAAO,CAAC;MAC5E,CAAC,CAAC;MACF6B,EAAE,CAAC,iGAAiG,EAAE,MAAM;QAC1GnC,uCAAuC,CAAE,GAAE3B,uCAAwC,IAAG,EAAEqB,mBAAmB,CAAC;QAC5GM,uCAAuC,CAAE,GAAE3B,uCAAwC,IAAG,EAAEqB,mBAAmB,CAAC;QAC5GM,uCAAuC,CAAE,GAAE3B,uCAAwC,KAAI,EAAEqB,mBAAmB,CAAC;QAC7GM,uCAAuC,CAAE,GAAE3B,uCAAwC,KAAI,EAAEqB,mBAAmB,CAAC;QAC7GM,uCAAuC,CAAE,GAAE3B,uCAAwC,KAAI,EAAEqB,mBAAmB,CAAC;MAC/G,CAAC,CAAC;MACFyC,EAAE,CAAC,2CAA2C,EAAE,MAAM;QACpD/B,oCAAoC,CAClCV,mBAAmB,EAClB,GAAErB,uCAAwC,IAAG,EAC9CqD,UAAU,EACVpB,cAAc,EACd,QACF,CAAC;QACDF,oCAAoC,CAClCV,mBAAmB,EAClB,GAAErB,uCAAwC,IAAG,EAC9CqD,UAAU,EACVpB,cAAc,EACd,QACF,CAAC;QACDF,oCAAoC,CAClCV,mBAAmB,EAClB,GAAErB,uCAAwC,IAAG,EAC9CqD,UAAU,EACVpB,cAAc,EACd,OACF,CAAC;QACDF,oCAAoC,CAClCV,mBAAmB,EAClB,GAAErB,uCAAwC,IAAG,EAC9CqD,UAAU,EACVpB,cAAc,EACd,OACF,CAAC;QACDF,oCAAoC,CAClCV,mBAAmB,EAClB,GAAErB,uCAAwC,IAAG,EAC9CqD,UAAU,EACVpB,cAAc,EACd,QACF,CAAC;QACDF,oCAAoC,CAClCV,mBAAmB,EAClB,GAAErB,uCAAwC,IAAG,EAC9CqD,UAAU,EACVpB,cAAc,EACd,QACF,CAAC;QACDF,oCAAoC,CAClCV,mBAAmB,EAClB,GAAErB,uCAAwC,IAAG,EAC9CqD,UAAU,EACVpB,cAAc,EACd,OACF,CAAC;QACDF,oCAAoC,CAClCV,mBAAmB,EAClB,GAAErB,uCAAwC,IAAG,EAC9CqD,UAAU,EACVpB,cAAc,EACd,OACF,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -2,20 +2,20 @@ import { ManifestDependenciesKeysNames } from '../manifest';
|
|
|
2
2
|
import { DependencyLifecycleType, SemverVersion, PackageName } from '../../dependencies';
|
|
3
3
|
import { ComponentDependenciesMap } from '../workspace-manifest-factory';
|
|
4
4
|
import { WorkspacePolicy } from '../../policy';
|
|
5
|
-
export
|
|
5
|
+
export type PackageNameIndexItem = {
|
|
6
6
|
metadata: PackageNameIndexItemMetadata;
|
|
7
7
|
componentItems: PackageNameIndexComponentItem[];
|
|
8
8
|
};
|
|
9
|
-
export
|
|
9
|
+
export type PackageNameIndexItemMetadata = {
|
|
10
10
|
preservedVersion?: string;
|
|
11
11
|
preservedLifecycleType?: DependencyLifecycleType;
|
|
12
12
|
};
|
|
13
|
-
export
|
|
13
|
+
export type PackageNameIndexComponentItem = {
|
|
14
14
|
range: SemverVersion;
|
|
15
15
|
origin: PackageName;
|
|
16
16
|
lifecycleType: DependencyLifecycleType;
|
|
17
17
|
};
|
|
18
|
-
export
|
|
18
|
+
export type PackageNameIndex = Map<PackageName, PackageNameIndexItem>;
|
|
19
19
|
/**
|
|
20
20
|
* This will get the map of dependencies for each component and will create a new index with the dependencyId (package name) as key
|
|
21
21
|
* and all components / ranges as value
|
|
@@ -96,7 +96,6 @@ function addSpecificLifeCycleDepsToIndex(index, origin) {
|
|
|
96
96
|
*/
|
|
97
97
|
function addComponentDepToDepIdIndex(index, origin, lifecycleType) {
|
|
98
98
|
return (range, depId) => {
|
|
99
|
-
var _index$get;
|
|
100
99
|
const componentItem = {
|
|
101
100
|
origin,
|
|
102
101
|
range,
|
|
@@ -110,7 +109,7 @@ function addComponentDepToDepIdIndex(index, origin, lifecycleType) {
|
|
|
110
109
|
index.set(depId, item);
|
|
111
110
|
return;
|
|
112
111
|
}
|
|
113
|
-
|
|
112
|
+
index.get(depId)?.componentItems.push(componentItem);
|
|
114
113
|
};
|
|
115
114
|
}
|
|
116
115
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_forEachObjIndexed","data","_interopRequireDefault","require","_pick","_omit","_constants","obj","__esModule","default","indexByDepId","rootPolicy","componentDependenciesMap","hoistedDepFields","result","Map","forEach","depsObject","compPackageName","pick","omit","forEachObjIndexed","addSpecificLifeCycleDepsToIndex","addPreservedFromRoot","index","preserved","filter","entry","value","preserve","metadata","preservedVersion","version","preservedLifecycleType","lifecycleType","setMetadataToExistingIndexItem","dependencyId","depId","existingItem","get","origin","deps","depKeyName","LIFECYCLE_TYPE_BY_KEY_NAME","addComponentDepToDepIdIndex","range","
|
|
1
|
+
{"version":3,"names":["_forEachObjIndexed","data","_interopRequireDefault","require","_pick","_omit","_constants","obj","__esModule","default","indexByDepId","rootPolicy","componentDependenciesMap","hoistedDepFields","result","Map","forEach","depsObject","compPackageName","pick","omit","forEachObjIndexed","addSpecificLifeCycleDepsToIndex","addPreservedFromRoot","index","preserved","filter","entry","value","preserve","metadata","preservedVersion","version","preservedLifecycleType","lifecycleType","setMetadataToExistingIndexItem","dependencyId","depId","existingItem","get","origin","deps","depKeyName","LIFECYCLE_TYPE_BY_KEY_NAME","addComponentDepToDepIdIndex","range","componentItem","has","item","componentItems","set","push"],"sources":["index-by-dep-id.ts"],"sourcesContent":["import forEachObjIndexed from 'ramda/src/forEachObjIndexed';\nimport pick from 'ramda/src/pick';\nimport omit from 'ramda/src/omit';\nimport { LIFECYCLE_TYPE_BY_KEY_NAME } from '../../dependencies/constants';\nimport { ManifestDependenciesKeysNames, DepObjectValue } from '../manifest';\nimport { DependencyLifecycleType, SemverVersion, PackageName } from '../../dependencies';\nimport { ComponentDependenciesMap } from '../workspace-manifest-factory';\nimport { WorkspacePolicy } from '../../policy';\n\nexport type PackageNameIndexItem = {\n metadata: PackageNameIndexItemMetadata;\n componentItems: PackageNameIndexComponentItem[];\n};\n\nexport type PackageNameIndexItemMetadata = {\n preservedVersion?: string;\n preservedLifecycleType?: DependencyLifecycleType;\n};\n\nexport type PackageNameIndexComponentItem = {\n range: SemverVersion;\n origin: PackageName;\n lifecycleType: DependencyLifecycleType;\n};\n\nexport type PackageNameIndex = Map<PackageName, PackageNameIndexItem>;\n\n/**\n * This will get the map of dependencies for each component and will create a new index with the dependencyId (package name) as key\n * and all components / ranges as value\n * It used as a pre processing as part of the deduping process\n *\n * @param {ComponentDependenciesMap} componentDependenciesMap\n * @returns {PackageNameIndex}\n */\nexport function indexByDepId(\n rootPolicy: WorkspacePolicy,\n componentDependenciesMap: ComponentDependenciesMap,\n hoistedDepFields?: ManifestDependenciesKeysNames[]\n): PackageNameIndex {\n const result: PackageNameIndex = new Map();\n componentDependenciesMap.forEach((depsObject, compPackageName) => {\n if (hoistedDepFields) {\n depsObject = pick(hoistedDepFields, depsObject);\n } else {\n depsObject = omit(['peerDependenciesMeta'], depsObject);\n }\n forEachObjIndexed(addSpecificLifeCycleDepsToIndex(result, compPackageName), depsObject);\n });\n addPreservedFromRoot(result, rootPolicy);\n return result;\n}\n\nfunction addPreservedFromRoot(index: PackageNameIndex, rootPolicy: WorkspacePolicy): void {\n const preserved = rootPolicy.filter((entry) => !!entry.value.preserve);\n preserved.forEach((entry) => {\n const metadata: PackageNameIndexItemMetadata = {\n preservedVersion: entry.value.version,\n preservedLifecycleType: entry.lifecycleType,\n };\n setMetadataToExistingIndexItem(index, entry.dependencyId, metadata);\n });\n}\n\nfunction setMetadataToExistingIndexItem(\n index: PackageNameIndex,\n depId: PackageName,\n metadata: PackageNameIndexItemMetadata\n): void {\n const existingItem = index.get(depId);\n // only change existing items\n if (existingItem) {\n existingItem.metadata = metadata;\n }\n}\n\n/**\n * Mutate the index and add all deps from specific lifecycle type to the index\n *\n * @param {PackageNameIndex} index\n * @param {PackageName} origin\n * @returns\n */\nfunction addSpecificLifeCycleDepsToIndex(index: PackageNameIndex, origin: PackageName) {\n return (deps: DepObjectValue, depKeyName: ManifestDependenciesKeysNames) => {\n const lifecycleType = LIFECYCLE_TYPE_BY_KEY_NAME[depKeyName] as DependencyLifecycleType;\n forEachObjIndexed(addComponentDepToDepIdIndex(index, origin, lifecycleType), deps);\n };\n}\n\n/**\n * Mutate the index and add specific package into it\n *\n * @param {PackageNameIndex} index\n * @param {PackageName} origin\n * @param {DependencyLifecycleType} lifecycleType\n * @returns\n */\nfunction addComponentDepToDepIdIndex(\n index: PackageNameIndex,\n origin: PackageName,\n lifecycleType: DependencyLifecycleType\n) {\n return (range: SemverVersion, depId: PackageName) => {\n const componentItem: PackageNameIndexComponentItem = {\n origin,\n range,\n lifecycleType,\n };\n if (!index.has(depId)) {\n const item: PackageNameIndexItem = {\n componentItems: [componentItem],\n metadata: {},\n };\n index.set(depId, item);\n return;\n }\n index.get(depId)?.componentItems.push(componentItem);\n };\n}\n"],"mappings":"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"}
|