@teambit/dependency-resolver 1.0.666 → 1.0.668

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.
Files changed (105) hide show
  1. package/dependencies/base-dependency.ts +2 -2
  2. package/dependencies/component-dependency/component-dependency-factory.ts +6 -5
  3. package/dependencies/component-dependency/component-dependency.ts +2 -2
  4. package/dependencies/constants.ts +1 -1
  5. package/dependencies/dependency-factory.ts +3 -3
  6. package/dependencies/dependency-list-factory.ts +3 -3
  7. package/dependencies/dependency-list.ts +7 -1
  8. package/dist/apply-updates.d.ts +3 -3
  9. package/dist/apply-updates.js.map +1 -1
  10. package/dist/dependencies/base-dependency.d.ts +2 -2
  11. package/dist/dependencies/base-dependency.js.map +1 -1
  12. package/dist/dependencies/component-dependency/component-dependency-factory.d.ts +4 -4
  13. package/dist/dependencies/component-dependency/component-dependency-factory.js.map +1 -1
  14. package/dist/dependencies/component-dependency/component-dependency.d.ts +2 -2
  15. package/dist/dependencies/component-dependency/component-dependency.js.map +1 -1
  16. package/dist/dependencies/constants.d.ts +1 -1
  17. package/dist/dependencies/constants.js.map +1 -1
  18. package/dist/dependencies/dependency-factory.d.ts +3 -3
  19. package/dist/dependencies/dependency-factory.js.map +1 -1
  20. package/dist/dependencies/dependency-list-factory.d.ts +3 -3
  21. package/dist/dependencies/dependency-list-factory.js.map +1 -1
  22. package/dist/dependencies/dependency-list.d.ts +1 -1
  23. package/dist/dependencies/dependency-list.js.map +1 -1
  24. package/dist/dependencies.service.d.ts +2 -2
  25. package/dist/dependencies.service.js.map +1 -1
  26. package/dist/dependency-env.d.ts +2 -2
  27. package/dist/dependency-env.js.map +1 -1
  28. package/dist/dependency-installer.d.ts +8 -8
  29. package/dist/dependency-installer.js.map +1 -1
  30. package/dist/dependency-linker.d.ts +6 -6
  31. package/dist/dependency-linker.js.map +1 -1
  32. package/dist/dependency-resolver-workspace-config.d.ts +3 -3
  33. package/dist/dependency-resolver-workspace-config.js.map +1 -1
  34. package/dist/dependency-resolver.graphql.d.ts +2 -2
  35. package/dist/dependency-resolver.graphql.js.map +1 -1
  36. package/dist/dependency-resolver.main.runtime.d.ts +27 -23
  37. package/dist/dependency-resolver.main.runtime.js.map +1 -1
  38. package/dist/dependency-version-resolver.d.ts +2 -2
  39. package/dist/dependency-version-resolver.js.map +1 -1
  40. package/dist/get-all-policy-pkgs.d.ts +4 -4
  41. package/dist/get-all-policy-pkgs.js.map +1 -1
  42. package/dist/manifest/component-manifest.d.ts +5 -4
  43. package/dist/manifest/component-manifest.js.map +1 -1
  44. package/dist/manifest/deduping/dedupe-dependencies.d.ts +4 -4
  45. package/dist/manifest/deduping/dedupe-dependencies.js.map +1 -1
  46. package/dist/manifest/deduping/hoist-dependencies.d.ts +2 -2
  47. package/dist/manifest/deduping/hoist-dependencies.js.map +1 -1
  48. package/dist/manifest/deduping/hoist-dependencies.spec.js.map +1 -1
  49. package/dist/manifest/deduping/index-by-dep-id.d.ts +4 -4
  50. package/dist/manifest/deduping/index-by-dep-id.js.map +1 -1
  51. package/dist/manifest/deduping/merge-with-root.d.ts +2 -2
  52. package/dist/manifest/deduping/merge-with-root.js.map +1 -1
  53. package/dist/manifest/manifest.d.ts +3 -3
  54. package/dist/manifest/manifest.js.map +1 -1
  55. package/dist/manifest/update-dependency-version.d.ts +2 -2
  56. package/dist/manifest/update-dependency-version.js.map +1 -1
  57. package/dist/manifest/update-dependency-version.spec.js.map +1 -1
  58. package/dist/manifest/workspace-manifest-factory.d.ts +8 -8
  59. package/dist/manifest/workspace-manifest-factory.js.map +1 -1
  60. package/dist/manifest/workspace-manifest.d.ts +5 -4
  61. package/dist/manifest/workspace-manifest.js.map +1 -1
  62. package/dist/package-manager.d.ts +5 -5
  63. package/dist/package-manager.js.map +1 -1
  64. package/dist/policy/env-policy/env-policy.d.ts +2 -1
  65. package/dist/policy/env-policy/env-policy.js.map +1 -1
  66. package/dist/policy/policy.d.ts +1 -1
  67. package/dist/policy/policy.js.map +1 -1
  68. package/dist/policy/variant-policy/variant-policy.d.ts +3 -3
  69. package/dist/policy/variant-policy/variant-policy.js.map +1 -1
  70. package/dist/policy/workspace-policy/exceptions/entry-already-exist.d.ts +1 -1
  71. package/dist/policy/workspace-policy/exceptions/entry-already-exist.js.map +1 -1
  72. package/dist/policy/workspace-policy/workspace-policy-factory.d.ts +2 -1
  73. package/dist/policy/workspace-policy/workspace-policy-factory.js.map +1 -1
  74. package/dist/policy/workspace-policy/workspace-policy.d.ts +2 -2
  75. package/dist/policy/workspace-policy/workspace-policy.js.map +1 -1
  76. package/dist/{preview-1753803956605.js → preview-1753833698619.js} +2 -2
  77. package/dist/show-fragments/dependencies.fragment.d.ts +2 -2
  78. package/dist/show-fragments/dependencies.fragment.js.map +1 -1
  79. package/dist/show-fragments/dev-dependencies.fragment.d.ts +2 -2
  80. package/dist/show-fragments/dev-dependencies.fragment.js.map +1 -1
  81. package/dist/show-fragments/peer-dependencies.fragment.d.ts +2 -2
  82. package/dist/show-fragments/peer-dependencies.fragment.js.map +1 -1
  83. package/dist/types.d.ts +4 -4
  84. package/dist/types.js.map +1 -1
  85. package/manifest/component-manifest.ts +5 -4
  86. package/manifest/deduping/dedupe-dependencies.ts +4 -4
  87. package/manifest/deduping/hoist-dependencies.spec.ts +3 -3
  88. package/manifest/deduping/hoist-dependencies.ts +3 -3
  89. package/manifest/deduping/index-by-dep-id.ts +4 -4
  90. package/manifest/deduping/merge-with-root.ts +4 -4
  91. package/manifest/manifest.ts +3 -3
  92. package/manifest/update-dependency-version.spec.ts +1 -1
  93. package/manifest/update-dependency-version.ts +2 -2
  94. package/manifest/workspace-manifest-factory.ts +12 -8
  95. package/manifest/workspace-manifest.ts +5 -4
  96. package/package.json +23 -23
  97. package/policy/env-policy/env-policy.ts +3 -4
  98. package/policy/policy.ts +1 -1
  99. package/policy/variant-policy/variant-policy.ts +4 -3
  100. package/policy/workspace-policy/exceptions/entry-already-exist.ts +1 -1
  101. package/policy/workspace-policy/workspace-policy-factory.ts +4 -3
  102. package/policy/workspace-policy/workspace-policy.ts +3 -2
  103. package/show-fragments/dependencies.fragment.ts +2 -2
  104. package/show-fragments/dev-dependencies.fragment.ts +2 -2
  105. package/show-fragments/peer-dependencies.fragment.ts +2 -2
@@ -1,5 +1,5 @@
1
- import { PathAbsolute } from '@teambit/toolbox.path.path';
2
- import { PackageManager, PackageManagerResolveRemoteVersionOptions, ResolvedPackageVersion } from './package-manager';
1
+ import type { PathAbsolute } from '@teambit/toolbox.path.path';
2
+ import type { PackageManager, PackageManagerResolveRemoteVersionOptions, ResolvedPackageVersion } from './package-manager';
3
3
  export declare class DependencyVersionResolver {
4
4
  /**
5
5
  * package manager instance.
@@ -1 +1 @@
1
- {"version":3,"names":["_pLimit","data","_interopRequireDefault","require","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","DEFAULT_REMOTE_RESOLVE_VERSIONS","fetchToCache","update","DependencyVersionResolver","constructor","packageManager","cacheRootDir","networkConcurrency","limitRequests","pLimit","resolveRemoteVersion","packageName","options","calculatedOpts","assign","resolved","exports"],"sources":["dependency-version-resolver.ts"],"sourcesContent":["import { PathAbsolute } from '@teambit/toolbox.path.path';\nimport pLimit from 'p-limit';\n\nimport { PackageManager, PackageManagerResolveRemoteVersionOptions, ResolvedPackageVersion } from './package-manager';\n\nconst DEFAULT_REMOTE_RESOLVE_VERSIONS = {\n fetchToCache: true,\n update: true,\n};\n\nexport class DependencyVersionResolver {\n private limitRequests: pLimit.Limit;\n\n constructor(\n /**\n * package manager instance.\n */\n private packageManager: PackageManager,\n\n private cacheRootDir?: string | PathAbsolute,\n\n networkConcurrency?: number\n ) {\n this.limitRequests = pLimit(networkConcurrency ?? 16);\n }\n\n async resolveRemoteVersion(\n packageName: string,\n options: PackageManagerResolveRemoteVersionOptions\n ): Promise<ResolvedPackageVersion> {\n // Make sure to take other default if passed options with only one option\n const calculatedOpts = Object.assign(\n {},\n DEFAULT_REMOTE_RESOLVE_VERSIONS,\n { cacheRootDir: this.cacheRootDir },\n options\n );\n // TODO: the cache should be probably passed to the package manager constructor not to the install function\n const resolved = this.limitRequests(() => this.packageManager.resolveRemoteVersion(packageName, calculatedOpts));\n return resolved;\n }\n}\n"],"mappings":";;;;;;AACA,SAAAA,QAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,OAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA6B,SAAAC,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,gBAAAH,CAAA,EAAAI,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAE,cAAA,CAAAF,CAAA,MAAAJ,CAAA,GAAAO,MAAA,CAAAC,cAAA,CAAAR,CAAA,EAAAI,CAAA,IAAAK,KAAA,EAAAJ,CAAA,EAAAK,UAAA,MAAAC,YAAA,MAAAC,QAAA,UAAAZ,CAAA,CAAAI,CAAA,IAAAC,CAAA,EAAAL,CAAA;AAAA,SAAAM,eAAAD,CAAA,QAAAQ,CAAA,GAAAC,YAAA,CAAAT,CAAA,uCAAAQ,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAT,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAL,CAAA,GAAAK,CAAA,CAAAU,MAAA,CAAAC,WAAA,kBAAAhB,CAAA,QAAAa,CAAA,GAAAb,CAAA,CAAAiB,IAAA,CAAAZ,CAAA,EAAAD,CAAA,uCAAAS,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAAd,CAAA,GAAAe,MAAA,GAAAC,MAAA,EAAAf,CAAA;AAI7B,MAAMgB,+BAA+B,GAAG;EACtCC,YAAY,EAAE,IAAI;EAClBC,MAAM,EAAE;AACV,CAAC;AAEM,MAAMC,yBAAyB,CAAC;EAGrCC,WAAWA;EACT;AACJ;AACA;EACYC,cAA8B,EAE9BC,YAAoC,EAE5CC,kBAA2B,EAC3B;IAAA,KALQF,cAA8B,GAA9BA,cAA8B;IAAA,KAE9BC,YAAoC,GAApCA,YAAoC;IAAAxB,eAAA;IAI5C,IAAI,CAAC0B,aAAa,GAAG,IAAAC,iBAAM,EAACF,kBAAkB,IAAI,EAAE,CAAC;EACvD;EAEA,MAAMG,oBAAoBA,CACxBC,WAAmB,EACnBC,OAAkD,EACjB;IACjC;IACA,MAAMC,cAAc,GAAG3B,MAAM,CAAC4B,MAAM,CAClC,CAAC,CAAC,EACFd,+BAA+B,EAC/B;MAAEM,YAAY,EAAE,IAAI,CAACA;IAAa,CAAC,EACnCM,OACF,CAAC;IACD;IACA,MAAMG,QAAQ,GAAG,IAAI,CAACP,aAAa,CAAC,MAAM,IAAI,CAACH,cAAc,CAACK,oBAAoB,CAACC,WAAW,EAAEE,cAAc,CAAC,CAAC;IAChH,OAAOE,QAAQ;EACjB;AACF;AAACC,OAAA,CAAAb,yBAAA,GAAAA,yBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_pLimit","data","_interopRequireDefault","require","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","DEFAULT_REMOTE_RESOLVE_VERSIONS","fetchToCache","update","DependencyVersionResolver","constructor","packageManager","cacheRootDir","networkConcurrency","limitRequests","pLimit","resolveRemoteVersion","packageName","options","calculatedOpts","assign","resolved","exports"],"sources":["dependency-version-resolver.ts"],"sourcesContent":["import type { PathAbsolute } from '@teambit/toolbox.path.path';\nimport pLimit from 'p-limit';\n\nimport type {\n PackageManager,\n PackageManagerResolveRemoteVersionOptions,\n ResolvedPackageVersion,\n} from './package-manager';\n\nconst DEFAULT_REMOTE_RESOLVE_VERSIONS = {\n fetchToCache: true,\n update: true,\n};\n\nexport class DependencyVersionResolver {\n private limitRequests: pLimit.Limit;\n\n constructor(\n /**\n * package manager instance.\n */\n private packageManager: PackageManager,\n\n private cacheRootDir?: string | PathAbsolute,\n\n networkConcurrency?: number\n ) {\n this.limitRequests = pLimit(networkConcurrency ?? 16);\n }\n\n async resolveRemoteVersion(\n packageName: string,\n options: PackageManagerResolveRemoteVersionOptions\n ): Promise<ResolvedPackageVersion> {\n // Make sure to take other default if passed options with only one option\n const calculatedOpts = Object.assign(\n {},\n DEFAULT_REMOTE_RESOLVE_VERSIONS,\n { cacheRootDir: this.cacheRootDir },\n options\n );\n // TODO: the cache should be probably passed to the package manager constructor not to the install function\n const resolved = this.limitRequests(() => this.packageManager.resolveRemoteVersion(packageName, calculatedOpts));\n return resolved;\n }\n}\n"],"mappings":";;;;;;AACA,SAAAA,QAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,OAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA6B,SAAAC,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,gBAAAH,CAAA,EAAAI,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAE,cAAA,CAAAF,CAAA,MAAAJ,CAAA,GAAAO,MAAA,CAAAC,cAAA,CAAAR,CAAA,EAAAI,CAAA,IAAAK,KAAA,EAAAJ,CAAA,EAAAK,UAAA,MAAAC,YAAA,MAAAC,QAAA,UAAAZ,CAAA,CAAAI,CAAA,IAAAC,CAAA,EAAAL,CAAA;AAAA,SAAAM,eAAAD,CAAA,QAAAQ,CAAA,GAAAC,YAAA,CAAAT,CAAA,uCAAAQ,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAT,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAL,CAAA,GAAAK,CAAA,CAAAU,MAAA,CAAAC,WAAA,kBAAAhB,CAAA,QAAAa,CAAA,GAAAb,CAAA,CAAAiB,IAAA,CAAAZ,CAAA,EAAAD,CAAA,uCAAAS,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAAd,CAAA,GAAAe,MAAA,GAAAC,MAAA,EAAAf,CAAA;AAQ7B,MAAMgB,+BAA+B,GAAG;EACtCC,YAAY,EAAE,IAAI;EAClBC,MAAM,EAAE;AACV,CAAC;AAEM,MAAMC,yBAAyB,CAAC;EAGrCC,WAAWA;EACT;AACJ;AACA;EACYC,cAA8B,EAE9BC,YAAoC,EAE5CC,kBAA2B,EAC3B;IAAA,KALQF,cAA8B,GAA9BA,cAA8B;IAAA,KAE9BC,YAAoC,GAApCA,YAAoC;IAAAxB,eAAA;IAI5C,IAAI,CAAC0B,aAAa,GAAG,IAAAC,iBAAM,EAACF,kBAAkB,IAAI,EAAE,CAAC;EACvD;EAEA,MAAMG,oBAAoBA,CACxBC,WAAmB,EACnBC,OAAkD,EACjB;IACjC;IACA,MAAMC,cAAc,GAAG3B,MAAM,CAAC4B,MAAM,CAClC,CAAC,CAAC,EACFd,+BAA+B,EAC/B;MAAEM,YAAY,EAAE,IAAI,CAACA;IAAa,CAAC,EACnCM,OACF,CAAC;IACD;IACA,MAAMG,QAAQ,GAAG,IAAI,CAACP,aAAa,CAAC,MAAM,IAAI,CAACH,cAAc,CAACK,oBAAoB,CAACC,WAAW,EAAEE,cAAc,CAAC,CAAC;IAChH,OAAOE,QAAQ;EACjB;AACF;AAACC,OAAA,CAAAb,yBAAA,GAAAA,yBAAA","ignoreList":[]}
@@ -1,7 +1,7 @@
1
- import { ComponentID } from '@teambit/component-id';
2
- import { ManifestDependenciesKeysNames } from './manifest';
3
- import { VariantPolicyConfigObject, WorkspacePolicy } from './policy';
4
- import { DependencyLifecycleType } from './dependencies/dependency';
1
+ import type { ComponentID } from '@teambit/component-id';
2
+ import type { ManifestDependenciesKeysNames } from './manifest';
3
+ import type { VariantPolicyConfigObject, WorkspacePolicy } from './policy';
4
+ import type { DependencyLifecycleType } from './dependencies/dependency';
5
5
  export type CurrentPkgSource = 'variants' | 'component' | 'rootPolicy' | 'component-model';
6
6
  export type CurrentPkg = {
7
7
  name: string;
@@ -1 +1 @@
1
- {"version":3,"names":["_dependencies","data","require","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","getAllPolicyPkgs","rootPolicy","variantPoliciesByPatterns","componentPolicies","componentModelVersions","pkgsFromPolicies","getPkgsFromRootPolicy","pkgsNamesFromPolicies","Set","map","name","getPkgsFromVariants","getPkgsFromComponents","has","componentDep","currentRange","version","source","isAuto","componentId","targetField","KEY_NAME_BY_LIFECYCLE_TYPE","lifecycleType","entries","entry","dependencyId","variantPattern","variant","readAllDependenciesFromPolicyObject","flat","policy","context","pkgs"],"sources":["get-all-policy-pkgs.ts"],"sourcesContent":["import { ComponentID } from '@teambit/component-id';\nimport { ManifestDependenciesKeysNames } from './manifest';\nimport { VariantPolicyConfigObject, VariantPolicyEntryValue, WorkspacePolicy } from './policy';\nimport { DependencyLifecycleType } from './dependencies/dependency';\nimport { KEY_NAME_BY_LIFECYCLE_TYPE } from './dependencies';\n\nexport type CurrentPkgSource =\n // the variants section of \"workspace.jsonc\"\n | 'variants'\n // these are dependencies set via \"bit deps set\" or \"component.json\"\n | 'component'\n // these are dependencies from the dependencies policy in \"workspace.jsonc\"\n | 'rootPolicy'\n // these are dependencies stored in the component object (snapped/tagged version)\n | 'component-model';\n\nexport type CurrentPkg = {\n name: string;\n currentRange: string;\n source: CurrentPkgSource;\n variantPattern?: string | null;\n componentId?: ComponentID;\n isAuto?: boolean;\n\n targetField: ManifestDependenciesKeysNames;\n};\n\nexport type OutdatedPkg = CurrentPkg & {\n latestRange: string;\n};\n\nexport type ComponentModelVersion = {\n name: string;\n version: string;\n componentId: ComponentID;\n lifecycleType: DependencyLifecycleType;\n isAuto: boolean;\n};\n\n/**\n * Get packages from root policy, variants, and component config files (component.json files).\n */\nexport function getAllPolicyPkgs({\n rootPolicy,\n variantPoliciesByPatterns,\n componentPolicies,\n componentModelVersions,\n}: {\n rootPolicy: WorkspacePolicy;\n variantPoliciesByPatterns: Record<string, VariantPolicyConfigObject>;\n componentPolicies: Array<{ componentId: ComponentID; policy: any }>;\n componentModelVersions: ComponentModelVersion[];\n}): CurrentPkg[] {\n const pkgsFromPolicies = getPkgsFromRootPolicy(rootPolicy);\n const pkgsNamesFromPolicies = new Set(pkgsFromPolicies.map(({ name }) => name));\n return [\n ...pkgsFromPolicies,\n ...getPkgsFromVariants(variantPoliciesByPatterns),\n ...getPkgsFromComponents(componentPolicies),\n ...componentModelVersions\n .filter(({ name }) => !pkgsNamesFromPolicies.has(name))\n .map((componentDep) => ({\n name: componentDep.name,\n currentRange: componentDep.version,\n source: 'component-model' as const,\n isAuto: componentDep.isAuto,\n componentId: componentDep.componentId,\n targetField: KEY_NAME_BY_LIFECYCLE_TYPE[componentDep.lifecycleType] as ManifestDependenciesKeysNames,\n })),\n ];\n}\n\nfunction getPkgsFromRootPolicy(rootPolicy: WorkspacePolicy): CurrentPkg[] {\n return rootPolicy.entries.map((entry) => ({\n name: entry.dependencyId,\n currentRange: entry.value.version,\n source: 'rootPolicy',\n variantPattern: null as string | null,\n targetField: KEY_NAME_BY_LIFECYCLE_TYPE[entry.lifecycleType] as ManifestDependenciesKeysNames,\n }));\n}\n\nfunction getPkgsFromVariants(variantPoliciesByPatterns: Record<string, VariantPolicyConfigObject>): CurrentPkg[] {\n return Object.entries(variantPoliciesByPatterns)\n .filter(([, variant]) => variant != null)\n .map(([variantPattern, variant]) => {\n return readAllDependenciesFromPolicyObject({ source: 'variants', variantPattern }, variant);\n })\n .flat();\n}\n\nfunction getPkgsFromComponents(\n componentPolicies: Array<{ componentId: ComponentID; policy: VariantPolicyConfigObject }>\n): CurrentPkg[] {\n return componentPolicies\n .map(({ componentId, policy }) => {\n return readAllDependenciesFromPolicyObject({ source: 'component', componentId }, policy);\n })\n .flat();\n}\n\nfunction readAllDependenciesFromPolicyObject(\n context: Pick<CurrentPkg, 'source' | 'componentId' | 'variantPattern'>,\n policy: VariantPolicyConfigObject\n): CurrentPkg[] {\n if (!policy) return [];\n const pkgs: CurrentPkg[] = [];\n for (const targetField of [\n 'dependencies',\n 'devDependencies',\n 'peerDependencies',\n ] as ManifestDependenciesKeysNames[]) {\n for (const [name, currentRange] of Object.entries(policy[targetField] ?? {})) {\n if (currentRange !== '-') {\n pkgs.push({\n ...context,\n name,\n currentRange:\n typeof currentRange === 'string' ? currentRange : (currentRange as VariantPolicyEntryValue).version,\n targetField,\n });\n }\n }\n }\n return pkgs;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_dependencies","data","require","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","getAllPolicyPkgs","rootPolicy","variantPoliciesByPatterns","componentPolicies","componentModelVersions","pkgsFromPolicies","getPkgsFromRootPolicy","pkgsNamesFromPolicies","Set","map","name","getPkgsFromVariants","getPkgsFromComponents","has","componentDep","currentRange","version","source","isAuto","componentId","targetField","KEY_NAME_BY_LIFECYCLE_TYPE","lifecycleType","entries","entry","dependencyId","variantPattern","variant","readAllDependenciesFromPolicyObject","flat","policy","context","pkgs"],"sources":["get-all-policy-pkgs.ts"],"sourcesContent":["import type { ComponentID } from '@teambit/component-id';\nimport type { ManifestDependenciesKeysNames } from './manifest';\nimport type { VariantPolicyConfigObject, VariantPolicyEntryValue, WorkspacePolicy } from './policy';\nimport type { DependencyLifecycleType } from './dependencies/dependency';\nimport { KEY_NAME_BY_LIFECYCLE_TYPE } from './dependencies';\n\nexport type CurrentPkgSource =\n // the variants section of \"workspace.jsonc\"\n | 'variants'\n // these are dependencies set via \"bit deps set\" or \"component.json\"\n | 'component'\n // these are dependencies from the dependencies policy in \"workspace.jsonc\"\n | 'rootPolicy'\n // these are dependencies stored in the component object (snapped/tagged version)\n | 'component-model';\n\nexport type CurrentPkg = {\n name: string;\n currentRange: string;\n source: CurrentPkgSource;\n variantPattern?: string | null;\n componentId?: ComponentID;\n isAuto?: boolean;\n\n targetField: ManifestDependenciesKeysNames;\n};\n\nexport type OutdatedPkg = CurrentPkg & {\n latestRange: string;\n};\n\nexport type ComponentModelVersion = {\n name: string;\n version: string;\n componentId: ComponentID;\n lifecycleType: DependencyLifecycleType;\n isAuto: boolean;\n};\n\n/**\n * Get packages from root policy, variants, and component config files (component.json files).\n */\nexport function getAllPolicyPkgs({\n rootPolicy,\n variantPoliciesByPatterns,\n componentPolicies,\n componentModelVersions,\n}: {\n rootPolicy: WorkspacePolicy;\n variantPoliciesByPatterns: Record<string, VariantPolicyConfigObject>;\n componentPolicies: Array<{ componentId: ComponentID; policy: any }>;\n componentModelVersions: ComponentModelVersion[];\n}): CurrentPkg[] {\n const pkgsFromPolicies = getPkgsFromRootPolicy(rootPolicy);\n const pkgsNamesFromPolicies = new Set(pkgsFromPolicies.map(({ name }) => name));\n return [\n ...pkgsFromPolicies,\n ...getPkgsFromVariants(variantPoliciesByPatterns),\n ...getPkgsFromComponents(componentPolicies),\n ...componentModelVersions\n .filter(({ name }) => !pkgsNamesFromPolicies.has(name))\n .map((componentDep) => ({\n name: componentDep.name,\n currentRange: componentDep.version,\n source: 'component-model' as const,\n isAuto: componentDep.isAuto,\n componentId: componentDep.componentId,\n targetField: KEY_NAME_BY_LIFECYCLE_TYPE[componentDep.lifecycleType] as ManifestDependenciesKeysNames,\n })),\n ];\n}\n\nfunction getPkgsFromRootPolicy(rootPolicy: WorkspacePolicy): CurrentPkg[] {\n return rootPolicy.entries.map((entry) => ({\n name: entry.dependencyId,\n currentRange: entry.value.version,\n source: 'rootPolicy',\n variantPattern: null as string | null,\n targetField: KEY_NAME_BY_LIFECYCLE_TYPE[entry.lifecycleType] as ManifestDependenciesKeysNames,\n }));\n}\n\nfunction getPkgsFromVariants(variantPoliciesByPatterns: Record<string, VariantPolicyConfigObject>): CurrentPkg[] {\n return Object.entries(variantPoliciesByPatterns)\n .filter(([, variant]) => variant != null)\n .map(([variantPattern, variant]) => {\n return readAllDependenciesFromPolicyObject({ source: 'variants', variantPattern }, variant);\n })\n .flat();\n}\n\nfunction getPkgsFromComponents(\n componentPolicies: Array<{ componentId: ComponentID; policy: VariantPolicyConfigObject }>\n): CurrentPkg[] {\n return componentPolicies\n .map(({ componentId, policy }) => {\n return readAllDependenciesFromPolicyObject({ source: 'component', componentId }, policy);\n })\n .flat();\n}\n\nfunction readAllDependenciesFromPolicyObject(\n context: Pick<CurrentPkg, 'source' | 'componentId' | 'variantPattern'>,\n policy: VariantPolicyConfigObject\n): CurrentPkg[] {\n if (!policy) return [];\n const pkgs: CurrentPkg[] = [];\n for (const targetField of [\n 'dependencies',\n 'devDependencies',\n 'peerDependencies',\n ] as ManifestDependenciesKeysNames[]) {\n for (const [name, currentRange] of Object.entries(policy[targetField] ?? {})) {\n if (currentRange !== '-') {\n pkgs.push({\n ...context,\n name,\n currentRange:\n typeof currentRange === 'string' ? currentRange : (currentRange as VariantPolicyEntryValue).version,\n targetField,\n });\n }\n }\n }\n return pkgs;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,8 @@
1
- import { Component } from '@teambit/component';
2
- import { SemVer } from 'semver';
3
- import { EnvPolicy } from '../policy/env-policy';
4
- import { Manifest, ManifestDependenciesObject } from './manifest';
1
+ import type { Component } from '@teambit/component';
2
+ import type { SemVer } from 'semver';
3
+ import type { EnvPolicy } from '../policy/env-policy';
4
+ import type { ManifestDependenciesObject } from './manifest';
5
+ import { Manifest } from './manifest';
5
6
  export declare class ComponentManifest extends Manifest {
6
7
  name: string;
7
8
  version: SemVer;
@@ -1 +1 @@
1
- {"version":3,"names":["_manifest","data","require","ComponentManifest","Manifest","constructor","name","version","dependencies","component","envPolicy","exports"],"sources":["component-manifest.ts"],"sourcesContent":["import { Component } from '@teambit/component';\nimport { SemVer } from 'semver';\nimport { EnvPolicy } from '../policy/env-policy';\n\nimport { Manifest, ManifestDependenciesObject } from './manifest';\n\nexport class ComponentManifest extends Manifest {\n constructor(\n public name: string,\n public version: SemVer,\n public dependencies: ManifestDependenciesObject,\n public component: Component,\n public envPolicy: EnvPolicy\n ) {\n super(name, version, dependencies);\n }\n\n // get dir() {\n // // TODO: take the dir from the component\n // }\n}\n"],"mappings":";;;;;;AAIA,SAAAA,UAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,SAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEO,MAAME,iBAAiB,SAASC,oBAAQ,CAAC;EAC9CC,WAAWA,CACFC,IAAY,EACZC,OAAe,EACfC,YAAwC,EACxCC,SAAoB,EACpBC,SAAoB,EAC3B;IACA,KAAK,CAACJ,IAAI,EAAEC,OAAO,EAAEC,YAAY,CAAC;IAAC,KAN5BF,IAAY,GAAZA,IAAY;IAAA,KACZC,OAAe,GAAfA,OAAe;IAAA,KACfC,YAAwC,GAAxCA,YAAwC;IAAA,KACxCC,SAAoB,GAApBA,SAAoB;IAAA,KACpBC,SAAoB,GAApBA,SAAoB;EAG7B;;EAEA;EACA;EACA;AACF;AAACC,OAAA,CAAAR,iBAAA,GAAAA,iBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_manifest","data","require","ComponentManifest","Manifest","constructor","name","version","dependencies","component","envPolicy","exports"],"sources":["component-manifest.ts"],"sourcesContent":["import type { Component } from '@teambit/component';\nimport type { SemVer } from 'semver';\nimport type { EnvPolicy } from '../policy/env-policy';\n\nimport type { ManifestDependenciesObject } from './manifest';\nimport { Manifest } from './manifest';\n\nexport class ComponentManifest extends Manifest {\n constructor(\n public name: string,\n public version: SemVer,\n public dependencies: ManifestDependenciesObject,\n public component: Component,\n public envPolicy: EnvPolicy\n ) {\n super(name, version, dependencies);\n }\n\n // get dir() {\n // // TODO: take the dir from the component\n // }\n}\n"],"mappings":";;;;;;AAKA,SAAAA,UAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,SAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEO,MAAME,iBAAiB,SAASC,oBAAQ,CAAC;EAC9CC,WAAWA,CACFC,IAAY,EACZC,OAAe,EACfC,YAAwC,EACxCC,SAAoB,EACpBC,SAAoB,EAC3B;IACA,KAAK,CAACJ,IAAI,EAAEC,OAAO,EAAEC,YAAY,CAAC;IAAC,KAN5BF,IAAY,GAAZA,IAAY;IAAA,KACZC,OAAe,GAAfA,OAAe;IAAA,KACfC,YAAwC,GAAxCA,YAAwC;IAAA,KACxCC,SAAoB,GAApBA,SAAoB;IAAA,KACpBC,SAAoB,GAApBA,SAAoB;EAG7B;;EAEA;EACA;EACA;AACF;AAACC,OAAA,CAAAR,iBAAA,GAAAA,iBAAA","ignoreList":[]}
@@ -1,7 +1,7 @@
1
- import { ManifestDependenciesKeysNames, ManifestDependenciesObject } from '../manifest';
2
- import { WorkspacePolicy } from '../../policy';
3
- import { PackageName, SemverVersion } from '../../dependencies';
4
- import { ComponentDependenciesMap } from '../workspace-manifest-factory';
1
+ import type { ManifestDependenciesKeysNames, ManifestDependenciesObject } from '../manifest';
2
+ import type { WorkspacePolicy } from '../../policy';
3
+ import type { PackageName, SemverVersion } from '../../dependencies';
4
+ import type { ComponentDependenciesMap } from '../workspace-manifest-factory';
5
5
  export { getEmptyDedupedDependencies } from './hoist-dependencies';
6
6
  export type conflictedComponent = {
7
7
  componentPackageName: PackageName;
@@ -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,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","ignoreList":[]}
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 type { ManifestDependenciesKeysNames, ManifestDependenciesObject } from '../manifest';\nimport type { WorkspacePolicy } from '../../policy';\nimport type { PackageName, SemverVersion } from '../../dependencies';\nimport type { 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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- import { DedupedDependencies } from './dedupe-dependencies';
2
- import { PackageNameIndex } from './index-by-dep-id';
1
+ import type { DedupedDependencies } from './dedupe-dependencies';
2
+ import type { PackageNameIndex } from './index-by-dep-id';
3
3
  /**
4
4
  * This is the second phase of the deduping process.
5
5
  * It will get the index calculated in the first phase (with dep id as key)
@@ -1 +1 @@
1
- {"version":3,"names":["_lodash","data","require","_semver","_interopRequireDefault","_semverIntersect","_semverRangeIntersect","_componentVersion","_constants","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","hoistDependencies","depIdIndex","options","result","getEmptyDedupedDependencies","indexItem","packageName","toContinue","handlePreserved","addOneOccurrenceToRoot","componentItems","handlePeersOnly","dedupePeerDependencies","groupedByRangeOrVersion","groupByRangeOrVersion","versions","ranges","handleExactVersionsOnly","handleRangesOnly","handleRangesAndVersions","dedupedDependencies","preservedVersion","metadata","preservedLifecycleType","keyName","KEY_NAME_BY_LIFECYCLE_TYPE","rootDependencies","filterFunc","item","intersect","range","map","addToComponentDependenciesMapInDeduped","indexItems","uniqVersions","uniq","lifecycleType","nonPeerItems","PEER_DEP_LIFECYCLE_TYPE","allRanges","intersected","conflictedComponents","componentPackageName","origin","conflictMessage","c","join","issue","issus","peerConflicts","allVersions","mostCommonVersion","findMostCommonVersion","version","lifeCycleType","getLifecycleType","depKeyName","rangesVersions","bestRange","findBestRange","intersectedRange","includes","groups","count","sortedByTotal","getSortedRangesCombination","combinationWithTotal","combination","total","counts","countBy","uniqRanges","rangesCombinations","arrayCombinations","countMultipleRanges","items","reduce","acc","curr","rangesCombinationsWithTotalCount","sortBy","property","reverse","DEV_DEP_LIFECYCLE_TYPE","RUNTIME_DEP_LIFECYCLE_TYPE","semver","gt","toFilter","compEntry","componentDependenciesMap","get","dependencies","optionalDependencies","devDependencies","peerDependencies","set","isVersionRange","isRange","compIdStr","validRange","isHash","startsWith","Error","parsed","parseRange","condition","array","fn","n","src","got","all","j","slice","concat","Map"],"sources":["hoist-dependencies.ts"],"sourcesContent":["import { countBy, forEach, property, sortBy, uniq } from 'lodash';\nimport semver from 'semver';\nimport { parseRange } from 'semver-intersect';\nimport { intersect } from 'semver-range-intersect';\nimport { isHash } from '@teambit/component-version';\n\nimport {\n DEV_DEP_LIFECYCLE_TYPE,\n KEY_NAME_BY_LIFECYCLE_TYPE,\n PEER_DEP_LIFECYCLE_TYPE,\n RUNTIME_DEP_LIFECYCLE_TYPE,\n} from '../../dependencies/constants';\nimport { DependencyLifecycleType, SemverVersion, PackageName } from '../../dependencies';\nimport { DedupedDependencies, DedupedDependenciesPeerConflicts } from './dedupe-dependencies';\nimport { PackageNameIndex, PackageNameIndexItem, PackageNameIndexComponentItem } from './index-by-dep-id';\n\ntype ItemsGroupedByRangeOrVersion = {\n ranges: PackageNameIndexComponentItem[];\n versions: PackageNameIndexComponentItem[];\n};\n\ntype MostCommonVersion = {\n version: SemverVersion;\n count: number;\n};\n\ntype BestRange = {\n count: number;\n ranges: SemverVersion[];\n intersectedRange: SemverVersion;\n};\n\ntype CombinationWithTotal = {\n combination: SemverVersion[];\n total: number;\n};\n\n/**\n * This is the second phase of the deduping process.\n * It will get the index calculated in the first phase (with dep id as key)\n * and will find the most intersect range for each dep and move it to the root\n * it will also move deps which are both dev deps and runtime deps to be runtime deps\n *\n * @param {PackageNameIndex} depIdIndex\n * @returns {DedupedDependencies}\n */\nexport function hoistDependencies(\n depIdIndex: PackageNameIndex,\n options?: { dedupePeerDependencies?: boolean }\n): DedupedDependencies {\n const result: DedupedDependencies = getEmptyDedupedDependencies();\n\n // TODO: handle git urls\n\n depIdIndex.forEach((indexItem, packageName) => {\n let toContinue;\n toContinue = handlePreserved(result, packageName, indexItem);\n if (!toContinue) return;\n toContinue = addOneOccurrenceToRoot(result, packageName, indexItem.componentItems);\n if (!toContinue) return;\n toContinue = handlePeersOnly(result, packageName, indexItem.componentItems);\n if (!toContinue && !options?.dedupePeerDependencies) return;\n const groupedByRangeOrVersion = groupByRangeOrVersion(indexItem.componentItems);\n if (groupedByRangeOrVersion.versions.length > 0 && groupedByRangeOrVersion.ranges.length === 0) {\n handleExactVersionsOnly(result, packageName, indexItem.componentItems);\n } else if (groupedByRangeOrVersion.versions.length === 0 && groupedByRangeOrVersion.ranges.length > 0) {\n handleRangesOnly(result, packageName, indexItem.componentItems);\n } else {\n handleRangesAndVersions(result, packageName, indexItem.componentItems, groupedByRangeOrVersion);\n }\n });\n\n return result;\n}\n\nfunction handlePreserved(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n indexItem: PackageNameIndexItem\n): boolean {\n const preservedVersion = indexItem.metadata.preservedVersion;\n // Not preserved, move on\n if (!preservedVersion) {\n return true;\n }\n\n const preservedLifecycleType = indexItem.metadata.preservedLifecycleType;\n\n const keyName = KEY_NAME_BY_LIFECYCLE_TYPE[preservedLifecycleType || 'dependencies'];\n dedupedDependencies.rootDependencies[keyName][packageName] = preservedVersion;\n\n const filterFunc = (item: PackageNameIndexComponentItem) => {\n // items which are intersect with the preserved version won't needed to be installed nested in the component\n // this in very rare cases might create bugs in case the version are intersects, but the real version in the registry\n // which satisfies the preserved not satisfy the item range.\n // In such case I would expect to get version not exist when coming to install the version in the nested component\n return !!intersect(item.range, preservedVersion);\n };\n\n indexItem.componentItems.map(addToComponentDependenciesMapInDeduped(dedupedDependencies, packageName, filterFunc));\n return false;\n}\n\n/**\n * In case there is only one component with a specific dependency,\n * OR\n * all the components have the same version of the dependency\n * add it to the root\n * (it used to check also if it's not peer, but we remove it for bit sign support)\n *\n * @param {DedupedDependencies} dedupedDependencies\n * @param {PackageName} packageName\n * @param {PackageNameIndexComponentItem} indexItem\n */\nfunction addOneOccurrenceToRoot(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n indexItems: PackageNameIndexComponentItem[]\n): boolean {\n if (indexItems.length > 1) {\n const uniqVersions = uniq(indexItems.map((item) => item.range));\n if (uniqVersions.length > 1) {\n return true;\n }\n }\n const indexItem = indexItems[0];\n // if (indexItem.lifecycleType !== PEER_DEP_LIFECYCLE_TYPE) {\n const keyName = KEY_NAME_BY_LIFECYCLE_TYPE[indexItem.lifecycleType];\n dedupedDependencies.rootDependencies[keyName][packageName] = indexItem.range;\n return false;\n // }\n // return true;\n}\n\n/**\n * Handle a case where the package appear as a peer for all its deponents\n * in that case we won't hoist it to the root, we will only notify about conflicts\n *\n * @param {DedupedDependencies} dedupedDependencies\n * @param {PackageName} packageName\n * @param {PackageNameIndexComponentItem[]} indexItems\n * @returns {boolean}\n */\nfunction handlePeersOnly(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n indexItems: PackageNameIndexComponentItem[]\n): boolean {\n const nonPeerItems = indexItems.filter((item) => {\n return item.lifecycleType !== PEER_DEP_LIFECYCLE_TYPE;\n });\n if (nonPeerItems.length > 0) {\n return true;\n }\n const allRanges = indexItems.map((item) => item.range);\n const intersected = intersect(...allRanges);\n if (intersected) {\n // Add to peers for each component to make sure we are getting warning from the package manager about missing peers\n indexItems.map(addToComponentDependenciesMapInDeduped(dedupedDependencies, packageName));\n } else {\n indexItems.map(addToComponentDependenciesMapInDeduped(dedupedDependencies, packageName));\n // There are peer version with conflicts, let the user know about it\n const conflictedComponents = indexItems.map((item) => {\n return {\n componentPackageName: item.origin,\n range: item.range,\n };\n });\n const conflictMessage = `The following components has conflicted peer dependencies: ${conflictedComponents\n .map((c) => c.componentPackageName)\n .join(',')} for the dependency: ${packageName}`;\n const issue: DedupedDependenciesPeerConflicts = {\n packageName,\n conflictedComponents,\n conflictMessage,\n };\n dedupedDependencies.issus?.peerConflicts.push(issue);\n }\n return false;\n}\n\n/**\n * This will handle a case when there is only exact version in the index\n * In such case it will take the most common version and hoist it to the root\n * It will set all the other version in the corresponding components\n * This assume the items has been already checked to contain only exact versions\n *\n * @param {DedupedDependencies} dedupedDependencies\n * @param {PackageName} packageName\n * @param {PackageNameIndexComponentItem[]} indexItems\n */\nfunction handleExactVersionsOnly(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n indexItems: PackageNameIndexComponentItem[]\n): void {\n const allVersions = indexItems.map((item) => item.range);\n\n // Add most common version to root\n const mostCommonVersion = findMostCommonVersion(allVersions).version;\n const lifeCycleType = getLifecycleType(indexItems);\n const depKeyName = KEY_NAME_BY_LIFECYCLE_TYPE[lifeCycleType];\n dedupedDependencies.rootDependencies[depKeyName][packageName] = mostCommonVersion;\n\n const filterFunc = (item) => {\n if (item.range === mostCommonVersion) return true;\n return false;\n };\n\n indexItems.forEach(addToComponentDependenciesMapInDeduped(dedupedDependencies, packageName, filterFunc));\n}\n\n/**\n * This will handle a case when there is only ranges in the index\n * In such case it will search for an intersection with the most components and hoist it to the root\n * It will set all the other ranges in the corresponding components\n * This assume the items has been already checked to contain only ranges\n *\n * @param {DedupedDependencies} dedupedDependencies\n * @param {PackageName} packageName\n * @param {PackageNameIndexComponentItem[]} indexItems\n */\nfunction handleRangesOnly(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n indexItems: PackageNameIndexComponentItem[]\n): void {\n const rangesVersions = indexItems.map((item) => item.range);\n const bestRange = findBestRange(rangesVersions);\n const lifeCycleType = getLifecycleType(indexItems);\n const depKeyName = KEY_NAME_BY_LIFECYCLE_TYPE[lifeCycleType];\n dedupedDependencies.rootDependencies[depKeyName][packageName] = bestRange.intersectedRange;\n\n const filterFunc = (item) => {\n if (bestRange.ranges.includes(item.range)) return true;\n return false;\n };\n\n indexItems.forEach(addToComponentDependenciesMapInDeduped(dedupedDependencies, packageName, filterFunc));\n}\n\n/**\n * This will handle a case when there is both ranges and exact versions in the index\n * it will find the best range and see how many components it fits\n * it will find the most common version and see how many components it fits\n * Then it will take the best of them and hoist into the root and put others in the components\n * TODO: this can be improved by adding to the ranges count the satisfying exact versions\n *\n * @param {DedupedDependencies} dedupedDependencies\n * @param {PackageName} packageName\n * @param {PackageNameIndexComponentItem[]} indexItems\n * @param {ItemsGroupedByRangeOrVersion} groups\n */\nfunction handleRangesAndVersions(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n indexItems: PackageNameIndexComponentItem[],\n groups: ItemsGroupedByRangeOrVersion\n): void {\n const allVersions = groups.versions.map((item) => item.range);\n const mostCommonVersion = findMostCommonVersion(allVersions);\n // Include versions here since we might have a specific version which match the best version as well\n const rangesVersions = indexItems.map((item) => item.range);\n const bestRange = findBestRange(rangesVersions);\n const lifeCycleType = getLifecycleType(indexItems);\n const depKeyName = KEY_NAME_BY_LIFECYCLE_TYPE[lifeCycleType];\n\n let filterFunc = (item) => {\n if (bestRange.ranges.includes(item.range)) return true;\n return false;\n };\n\n if (bestRange.count < mostCommonVersion.count) {\n dedupedDependencies.rootDependencies[depKeyName][packageName] = mostCommonVersion.version;\n filterFunc = (item) => {\n if (item.range === mostCommonVersion) return true;\n return false;\n };\n } else {\n dedupedDependencies.rootDependencies[depKeyName][packageName] = bestRange.intersectedRange;\n }\n indexItems.forEach(addToComponentDependenciesMapInDeduped(dedupedDependencies, packageName, filterFunc));\n}\n\n/**\n * Finding the best range - a range the intersect as many ranges as possible\n * it will work by create all the possible combination of the ranges\n * then try to intersect them based on the number of the ranges (items) and how many times they appear in the original array\n *\n * @param {SemverVersion[]} ranges\n * @returns {BestRange}\n */\nfunction findBestRange(ranges: SemverVersion[]): BestRange {\n const result: BestRange = {\n ranges: [],\n intersectedRange: '0.0.0',\n count: 0,\n };\n\n const sortedByTotal = getSortedRangesCombination(ranges);\n let i = 0;\n // Since it's already sorted by count, once we found match we can stop looping\n while (result.count === 0 && i < sortedByTotal.length) {\n const combinationWithTotal = sortedByTotal[i];\n const intersectedRange = intersect(...combinationWithTotal.combination);\n if (intersectedRange) {\n result.intersectedRange = intersectedRange;\n result.ranges = combinationWithTotal.combination;\n result.count = combinationWithTotal.total;\n } else {\n i += 1;\n }\n }\n return result;\n}\n\n// function getSortedVersionsWithTotal(versions: SemverVersion[]): VersionWithTotal[] {\n// const counts = countBy((item) => item)(versions);\n// const uniqVersions = uniq(versions);\n// const versionsWithTotalCount = uniqVersions.map((version) => {\n// return {\n// version,\n// total: counts[version],\n// };\n// });\n\n// const sortByTotal = sortBy(prop('total'));\n// const sortedByTotal = sortByTotal(versionsWithTotalCount).reverse();\n// return sortedByTotal;\n// }\n\nfunction getSortedRangesCombination(ranges: SemverVersion[]): CombinationWithTotal[] {\n const counts = countBy(ranges, (item) => item);\n const uniqRanges = uniq(ranges);\n const rangesCombinations = arrayCombinations<SemverVersion>(uniqRanges);\n const countMultipleRanges = (items: SemverVersion[]): number => {\n return items.reduce((acc, curr) => {\n return acc + counts[curr];\n }, 0);\n };\n // The count is count of the items and for each item how many times it appear in the original ranges\n // Since there might be same range multiple time in the original ranges array.\n\n const rangesCombinationsWithTotalCount = rangesCombinations.map((combination) => {\n return {\n combination,\n total: countMultipleRanges(combination),\n };\n });\n\n const sortedByTotal = sortBy(rangesCombinationsWithTotalCount, property('total')).reverse();\n return sortedByTotal;\n}\n\n/**\n * Check if a package should be a dev dependency or runtime dependency by checking if it appears as runtime dependency at least once\n *\n * @param {PackageNameIndexComponentItem[]} indexItems\n * @returns {DependencyLifecycleType}\n */\nfunction getLifecycleType(indexItems: PackageNameIndexComponentItem[]): DependencyLifecycleType {\n let result: DependencyLifecycleType = DEV_DEP_LIFECYCLE_TYPE;\n indexItems.forEach((item) => {\n if (item.lifecycleType === RUNTIME_DEP_LIFECYCLE_TYPE) {\n result = RUNTIME_DEP_LIFECYCLE_TYPE;\n }\n });\n return result;\n}\n\n/**\n * Find the version that appears the most\n *\n * @param {SemverVersion[]} versions\n * @returns {MostCommonVersion}\n */\nfunction findMostCommonVersion(versions: SemverVersion[]): MostCommonVersion {\n const counts = countBy(versions, (item) => item);\n const result: MostCommonVersion = {\n version: '0.0.0',\n count: 0,\n };\n forEach(counts, (count, version) => {\n if (count > result.count || (count === result.count && semver.gt(version, result.version))) {\n result.version = version;\n result.count = count;\n }\n });\n return result;\n}\n\n/**\n * A wrapper function used to be passed to map on index items and add it to a component dependency in the deduped dependencies if it's filter function return false\n *\n * @param {DedupedDependencies} dedupedDependencies\n * @param {PackageName} packageName\n * @param {(item: PackageNameIndexComponentItem) => boolean} [filterFunc]\n * @returns\n */\nfunction addToComponentDependenciesMapInDeduped(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n filterFunc?: (item: PackageNameIndexComponentItem) => boolean\n) {\n return (indexItem: PackageNameIndexComponentItem) => {\n if (filterFunc && typeof filterFunc === 'function') {\n const toFilter = filterFunc(indexItem);\n if (toFilter) return;\n }\n let compEntry = dedupedDependencies.componentDependenciesMap.get(indexItem.origin);\n const depKeyName = KEY_NAME_BY_LIFECYCLE_TYPE[indexItem.lifecycleType];\n if (!compEntry) {\n compEntry = {\n dependencies: {},\n optionalDependencies: {},\n devDependencies: {},\n peerDependencies: {},\n };\n }\n compEntry[depKeyName] = {\n ...compEntry[depKeyName],\n [packageName]: indexItem.range,\n };\n dedupedDependencies.componentDependenciesMap.set(indexItem.origin, compEntry);\n };\n}\n\n/**\n * Get an array of index items and group them to items with ranges and items with exact version\n *\n * @param {PackageNameIndexComponentItem[]} indexItems\n * @returns {ItemsGroupedByRangeOrVersion}\n */\nfunction groupByRangeOrVersion(indexItems: PackageNameIndexComponentItem[]): ItemsGroupedByRangeOrVersion {\n const result: ItemsGroupedByRangeOrVersion = {\n ranges: [],\n versions: [],\n };\n indexItems.forEach((item) => {\n const isVersionRange = isRange(item.range, item.origin);\n if (isVersionRange) {\n result.ranges.push(item);\n } else {\n result.versions.push(item);\n }\n });\n return result;\n}\n\nexport function isRange(version: string, compIdStr: string) {\n const validRange = semver.validRange(version);\n if (!validRange) {\n if (!isHash(version) && !version.startsWith('workspace:') && !version.startsWith('npm:')) {\n throw new Error(\n `fatal: the version \"${version}\" originated from a dependent \"${compIdStr}\" is invalid semver range and not a hash`\n );\n }\n return false;\n }\n // parseRange does not support `*` as version\n // `*` does not affect resulted version, it might be just ignored\n if (validRange === '*') {\n return true;\n }\n const parsed = parseRange(validRange);\n if (parsed.condition === '=') {\n return false;\n }\n return true;\n}\n\n// Taken from https://web.archive.org/web/20140418004051/http://dzone.com/snippets/calculate-all-combinations\n/**\n * Return all combinations of array items. for example:\n * arrayCombinations([1,2]) == [[1], [2], [1,2]];\n *\n * @param {Array<T>} array\n * @returns {Array<T[]>}\n */\nfunction arrayCombinations<T>(array: Array<T>): Array<T[]> {\n const fn = function (n, src, got, all) {\n if (n === 0) {\n if (got.length > 0) {\n all[all.length] = got;\n }\n return;\n }\n // eslint-disable-next-line\n for (let j = 0; j < src.length; j++) {\n fn(n - 1, src.slice(j + 1), got.concat([src[j]]), all);\n }\n };\n const all: Array<T[]> = [];\n // eslint-disable-next-line\n for (let i = 0; i < array.length; i++) {\n fn(i, array, [], all);\n }\n all.push(array);\n return all;\n}\n\nexport function getEmptyDedupedDependencies(): DedupedDependencies {\n const result: DedupedDependencies = {\n rootDependencies: {\n dependencies: {},\n optionalDependencies: {},\n devDependencies: {},\n peerDependencies: {},\n },\n componentDependenciesMap: new Map(),\n issus: {\n peerConflicts: [],\n },\n };\n return result;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_lodash","data","require","_semver","_interopRequireDefault","_semverIntersect","_semverRangeIntersect","_componentVersion","_constants","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","hoistDependencies","depIdIndex","options","result","getEmptyDedupedDependencies","indexItem","packageName","toContinue","handlePreserved","addOneOccurrenceToRoot","componentItems","handlePeersOnly","dedupePeerDependencies","groupedByRangeOrVersion","groupByRangeOrVersion","versions","ranges","handleExactVersionsOnly","handleRangesOnly","handleRangesAndVersions","dedupedDependencies","preservedVersion","metadata","preservedLifecycleType","keyName","KEY_NAME_BY_LIFECYCLE_TYPE","rootDependencies","filterFunc","item","intersect","range","map","addToComponentDependenciesMapInDeduped","indexItems","uniqVersions","uniq","lifecycleType","nonPeerItems","PEER_DEP_LIFECYCLE_TYPE","allRanges","intersected","conflictedComponents","componentPackageName","origin","conflictMessage","c","join","issue","issus","peerConflicts","allVersions","mostCommonVersion","findMostCommonVersion","version","lifeCycleType","getLifecycleType","depKeyName","rangesVersions","bestRange","findBestRange","intersectedRange","includes","groups","count","sortedByTotal","getSortedRangesCombination","combinationWithTotal","combination","total","counts","countBy","uniqRanges","rangesCombinations","arrayCombinations","countMultipleRanges","items","reduce","acc","curr","rangesCombinationsWithTotalCount","sortBy","property","reverse","DEV_DEP_LIFECYCLE_TYPE","RUNTIME_DEP_LIFECYCLE_TYPE","semver","gt","toFilter","compEntry","componentDependenciesMap","get","dependencies","optionalDependencies","devDependencies","peerDependencies","set","isVersionRange","isRange","compIdStr","validRange","isHash","startsWith","Error","parsed","parseRange","condition","array","fn","n","src","got","all","j","slice","concat","Map"],"sources":["hoist-dependencies.ts"],"sourcesContent":["import { countBy, forEach, property, sortBy, uniq } from 'lodash';\nimport semver from 'semver';\nimport { parseRange } from 'semver-intersect';\nimport { intersect } from 'semver-range-intersect';\nimport { isHash } from '@teambit/component-version';\n\nimport {\n DEV_DEP_LIFECYCLE_TYPE,\n KEY_NAME_BY_LIFECYCLE_TYPE,\n PEER_DEP_LIFECYCLE_TYPE,\n RUNTIME_DEP_LIFECYCLE_TYPE,\n} from '../../dependencies/constants';\nimport type { DependencyLifecycleType, SemverVersion, PackageName } from '../../dependencies';\nimport type { DedupedDependencies, DedupedDependenciesPeerConflicts } from './dedupe-dependencies';\nimport type { PackageNameIndex, PackageNameIndexItem, PackageNameIndexComponentItem } from './index-by-dep-id';\n\ntype ItemsGroupedByRangeOrVersion = {\n ranges: PackageNameIndexComponentItem[];\n versions: PackageNameIndexComponentItem[];\n};\n\ntype MostCommonVersion = {\n version: SemverVersion;\n count: number;\n};\n\ntype BestRange = {\n count: number;\n ranges: SemverVersion[];\n intersectedRange: SemverVersion;\n};\n\ntype CombinationWithTotal = {\n combination: SemverVersion[];\n total: number;\n};\n\n/**\n * This is the second phase of the deduping process.\n * It will get the index calculated in the first phase (with dep id as key)\n * and will find the most intersect range for each dep and move it to the root\n * it will also move deps which are both dev deps and runtime deps to be runtime deps\n *\n * @param {PackageNameIndex} depIdIndex\n * @returns {DedupedDependencies}\n */\nexport function hoistDependencies(\n depIdIndex: PackageNameIndex,\n options?: { dedupePeerDependencies?: boolean }\n): DedupedDependencies {\n const result: DedupedDependencies = getEmptyDedupedDependencies();\n\n // TODO: handle git urls\n\n depIdIndex.forEach((indexItem, packageName) => {\n let toContinue;\n toContinue = handlePreserved(result, packageName, indexItem);\n if (!toContinue) return;\n toContinue = addOneOccurrenceToRoot(result, packageName, indexItem.componentItems);\n if (!toContinue) return;\n toContinue = handlePeersOnly(result, packageName, indexItem.componentItems);\n if (!toContinue && !options?.dedupePeerDependencies) return;\n const groupedByRangeOrVersion = groupByRangeOrVersion(indexItem.componentItems);\n if (groupedByRangeOrVersion.versions.length > 0 && groupedByRangeOrVersion.ranges.length === 0) {\n handleExactVersionsOnly(result, packageName, indexItem.componentItems);\n } else if (groupedByRangeOrVersion.versions.length === 0 && groupedByRangeOrVersion.ranges.length > 0) {\n handleRangesOnly(result, packageName, indexItem.componentItems);\n } else {\n handleRangesAndVersions(result, packageName, indexItem.componentItems, groupedByRangeOrVersion);\n }\n });\n\n return result;\n}\n\nfunction handlePreserved(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n indexItem: PackageNameIndexItem\n): boolean {\n const preservedVersion = indexItem.metadata.preservedVersion;\n // Not preserved, move on\n if (!preservedVersion) {\n return true;\n }\n\n const preservedLifecycleType = indexItem.metadata.preservedLifecycleType;\n\n const keyName = KEY_NAME_BY_LIFECYCLE_TYPE[preservedLifecycleType || 'dependencies'];\n dedupedDependencies.rootDependencies[keyName][packageName] = preservedVersion;\n\n const filterFunc = (item: PackageNameIndexComponentItem) => {\n // items which are intersect with the preserved version won't needed to be installed nested in the component\n // this in very rare cases might create bugs in case the version are intersects, but the real version in the registry\n // which satisfies the preserved not satisfy the item range.\n // In such case I would expect to get version not exist when coming to install the version in the nested component\n return !!intersect(item.range, preservedVersion);\n };\n\n indexItem.componentItems.map(addToComponentDependenciesMapInDeduped(dedupedDependencies, packageName, filterFunc));\n return false;\n}\n\n/**\n * In case there is only one component with a specific dependency,\n * OR\n * all the components have the same version of the dependency\n * add it to the root\n * (it used to check also if it's not peer, but we remove it for bit sign support)\n *\n * @param {DedupedDependencies} dedupedDependencies\n * @param {PackageName} packageName\n * @param {PackageNameIndexComponentItem} indexItem\n */\nfunction addOneOccurrenceToRoot(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n indexItems: PackageNameIndexComponentItem[]\n): boolean {\n if (indexItems.length > 1) {\n const uniqVersions = uniq(indexItems.map((item) => item.range));\n if (uniqVersions.length > 1) {\n return true;\n }\n }\n const indexItem = indexItems[0];\n // if (indexItem.lifecycleType !== PEER_DEP_LIFECYCLE_TYPE) {\n const keyName = KEY_NAME_BY_LIFECYCLE_TYPE[indexItem.lifecycleType];\n dedupedDependencies.rootDependencies[keyName][packageName] = indexItem.range;\n return false;\n // }\n // return true;\n}\n\n/**\n * Handle a case where the package appear as a peer for all its deponents\n * in that case we won't hoist it to the root, we will only notify about conflicts\n *\n * @param {DedupedDependencies} dedupedDependencies\n * @param {PackageName} packageName\n * @param {PackageNameIndexComponentItem[]} indexItems\n * @returns {boolean}\n */\nfunction handlePeersOnly(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n indexItems: PackageNameIndexComponentItem[]\n): boolean {\n const nonPeerItems = indexItems.filter((item) => {\n return item.lifecycleType !== PEER_DEP_LIFECYCLE_TYPE;\n });\n if (nonPeerItems.length > 0) {\n return true;\n }\n const allRanges = indexItems.map((item) => item.range);\n const intersected = intersect(...allRanges);\n if (intersected) {\n // Add to peers for each component to make sure we are getting warning from the package manager about missing peers\n indexItems.map(addToComponentDependenciesMapInDeduped(dedupedDependencies, packageName));\n } else {\n indexItems.map(addToComponentDependenciesMapInDeduped(dedupedDependencies, packageName));\n // There are peer version with conflicts, let the user know about it\n const conflictedComponents = indexItems.map((item) => {\n return {\n componentPackageName: item.origin,\n range: item.range,\n };\n });\n const conflictMessage = `The following components has conflicted peer dependencies: ${conflictedComponents\n .map((c) => c.componentPackageName)\n .join(',')} for the dependency: ${packageName}`;\n const issue: DedupedDependenciesPeerConflicts = {\n packageName,\n conflictedComponents,\n conflictMessage,\n };\n dedupedDependencies.issus?.peerConflicts.push(issue);\n }\n return false;\n}\n\n/**\n * This will handle a case when there is only exact version in the index\n * In such case it will take the most common version and hoist it to the root\n * It will set all the other version in the corresponding components\n * This assume the items has been already checked to contain only exact versions\n *\n * @param {DedupedDependencies} dedupedDependencies\n * @param {PackageName} packageName\n * @param {PackageNameIndexComponentItem[]} indexItems\n */\nfunction handleExactVersionsOnly(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n indexItems: PackageNameIndexComponentItem[]\n): void {\n const allVersions = indexItems.map((item) => item.range);\n\n // Add most common version to root\n const mostCommonVersion = findMostCommonVersion(allVersions).version;\n const lifeCycleType = getLifecycleType(indexItems);\n const depKeyName = KEY_NAME_BY_LIFECYCLE_TYPE[lifeCycleType];\n dedupedDependencies.rootDependencies[depKeyName][packageName] = mostCommonVersion;\n\n const filterFunc = (item) => {\n if (item.range === mostCommonVersion) return true;\n return false;\n };\n\n indexItems.forEach(addToComponentDependenciesMapInDeduped(dedupedDependencies, packageName, filterFunc));\n}\n\n/**\n * This will handle a case when there is only ranges in the index\n * In such case it will search for an intersection with the most components and hoist it to the root\n * It will set all the other ranges in the corresponding components\n * This assume the items has been already checked to contain only ranges\n *\n * @param {DedupedDependencies} dedupedDependencies\n * @param {PackageName} packageName\n * @param {PackageNameIndexComponentItem[]} indexItems\n */\nfunction handleRangesOnly(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n indexItems: PackageNameIndexComponentItem[]\n): void {\n const rangesVersions = indexItems.map((item) => item.range);\n const bestRange = findBestRange(rangesVersions);\n const lifeCycleType = getLifecycleType(indexItems);\n const depKeyName = KEY_NAME_BY_LIFECYCLE_TYPE[lifeCycleType];\n dedupedDependencies.rootDependencies[depKeyName][packageName] = bestRange.intersectedRange;\n\n const filterFunc = (item) => {\n if (bestRange.ranges.includes(item.range)) return true;\n return false;\n };\n\n indexItems.forEach(addToComponentDependenciesMapInDeduped(dedupedDependencies, packageName, filterFunc));\n}\n\n/**\n * This will handle a case when there is both ranges and exact versions in the index\n * it will find the best range and see how many components it fits\n * it will find the most common version and see how many components it fits\n * Then it will take the best of them and hoist into the root and put others in the components\n * TODO: this can be improved by adding to the ranges count the satisfying exact versions\n *\n * @param {DedupedDependencies} dedupedDependencies\n * @param {PackageName} packageName\n * @param {PackageNameIndexComponentItem[]} indexItems\n * @param {ItemsGroupedByRangeOrVersion} groups\n */\nfunction handleRangesAndVersions(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n indexItems: PackageNameIndexComponentItem[],\n groups: ItemsGroupedByRangeOrVersion\n): void {\n const allVersions = groups.versions.map((item) => item.range);\n const mostCommonVersion = findMostCommonVersion(allVersions);\n // Include versions here since we might have a specific version which match the best version as well\n const rangesVersions = indexItems.map((item) => item.range);\n const bestRange = findBestRange(rangesVersions);\n const lifeCycleType = getLifecycleType(indexItems);\n const depKeyName = KEY_NAME_BY_LIFECYCLE_TYPE[lifeCycleType];\n\n let filterFunc = (item) => {\n if (bestRange.ranges.includes(item.range)) return true;\n return false;\n };\n\n if (bestRange.count < mostCommonVersion.count) {\n dedupedDependencies.rootDependencies[depKeyName][packageName] = mostCommonVersion.version;\n filterFunc = (item) => {\n if (item.range === mostCommonVersion) return true;\n return false;\n };\n } else {\n dedupedDependencies.rootDependencies[depKeyName][packageName] = bestRange.intersectedRange;\n }\n indexItems.forEach(addToComponentDependenciesMapInDeduped(dedupedDependencies, packageName, filterFunc));\n}\n\n/**\n * Finding the best range - a range the intersect as many ranges as possible\n * it will work by create all the possible combination of the ranges\n * then try to intersect them based on the number of the ranges (items) and how many times they appear in the original array\n *\n * @param {SemverVersion[]} ranges\n * @returns {BestRange}\n */\nfunction findBestRange(ranges: SemverVersion[]): BestRange {\n const result: BestRange = {\n ranges: [],\n intersectedRange: '0.0.0',\n count: 0,\n };\n\n const sortedByTotal = getSortedRangesCombination(ranges);\n let i = 0;\n // Since it's already sorted by count, once we found match we can stop looping\n while (result.count === 0 && i < sortedByTotal.length) {\n const combinationWithTotal = sortedByTotal[i];\n const intersectedRange = intersect(...combinationWithTotal.combination);\n if (intersectedRange) {\n result.intersectedRange = intersectedRange;\n result.ranges = combinationWithTotal.combination;\n result.count = combinationWithTotal.total;\n } else {\n i += 1;\n }\n }\n return result;\n}\n\n// function getSortedVersionsWithTotal(versions: SemverVersion[]): VersionWithTotal[] {\n// const counts = countBy((item) => item)(versions);\n// const uniqVersions = uniq(versions);\n// const versionsWithTotalCount = uniqVersions.map((version) => {\n// return {\n// version,\n// total: counts[version],\n// };\n// });\n\n// const sortByTotal = sortBy(prop('total'));\n// const sortedByTotal = sortByTotal(versionsWithTotalCount).reverse();\n// return sortedByTotal;\n// }\n\nfunction getSortedRangesCombination(ranges: SemverVersion[]): CombinationWithTotal[] {\n const counts = countBy(ranges, (item) => item);\n const uniqRanges = uniq(ranges);\n const rangesCombinations = arrayCombinations<SemverVersion>(uniqRanges);\n const countMultipleRanges = (items: SemverVersion[]): number => {\n return items.reduce((acc, curr) => {\n return acc + counts[curr];\n }, 0);\n };\n // The count is count of the items and for each item how many times it appear in the original ranges\n // Since there might be same range multiple time in the original ranges array.\n\n const rangesCombinationsWithTotalCount = rangesCombinations.map((combination) => {\n return {\n combination,\n total: countMultipleRanges(combination),\n };\n });\n\n const sortedByTotal = sortBy(rangesCombinationsWithTotalCount, property('total')).reverse();\n return sortedByTotal;\n}\n\n/**\n * Check if a package should be a dev dependency or runtime dependency by checking if it appears as runtime dependency at least once\n *\n * @param {PackageNameIndexComponentItem[]} indexItems\n * @returns {DependencyLifecycleType}\n */\nfunction getLifecycleType(indexItems: PackageNameIndexComponentItem[]): DependencyLifecycleType {\n let result: DependencyLifecycleType = DEV_DEP_LIFECYCLE_TYPE;\n indexItems.forEach((item) => {\n if (item.lifecycleType === RUNTIME_DEP_LIFECYCLE_TYPE) {\n result = RUNTIME_DEP_LIFECYCLE_TYPE;\n }\n });\n return result;\n}\n\n/**\n * Find the version that appears the most\n *\n * @param {SemverVersion[]} versions\n * @returns {MostCommonVersion}\n */\nfunction findMostCommonVersion(versions: SemverVersion[]): MostCommonVersion {\n const counts = countBy(versions, (item) => item);\n const result: MostCommonVersion = {\n version: '0.0.0',\n count: 0,\n };\n forEach(counts, (count, version) => {\n if (count > result.count || (count === result.count && semver.gt(version, result.version))) {\n result.version = version;\n result.count = count;\n }\n });\n return result;\n}\n\n/**\n * A wrapper function used to be passed to map on index items and add it to a component dependency in the deduped dependencies if it's filter function return false\n *\n * @param {DedupedDependencies} dedupedDependencies\n * @param {PackageName} packageName\n * @param {(item: PackageNameIndexComponentItem) => boolean} [filterFunc]\n * @returns\n */\nfunction addToComponentDependenciesMapInDeduped(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n filterFunc?: (item: PackageNameIndexComponentItem) => boolean\n) {\n return (indexItem: PackageNameIndexComponentItem) => {\n if (filterFunc && typeof filterFunc === 'function') {\n const toFilter = filterFunc(indexItem);\n if (toFilter) return;\n }\n let compEntry = dedupedDependencies.componentDependenciesMap.get(indexItem.origin);\n const depKeyName = KEY_NAME_BY_LIFECYCLE_TYPE[indexItem.lifecycleType];\n if (!compEntry) {\n compEntry = {\n dependencies: {},\n optionalDependencies: {},\n devDependencies: {},\n peerDependencies: {},\n };\n }\n compEntry[depKeyName] = {\n ...compEntry[depKeyName],\n [packageName]: indexItem.range,\n };\n dedupedDependencies.componentDependenciesMap.set(indexItem.origin, compEntry);\n };\n}\n\n/**\n * Get an array of index items and group them to items with ranges and items with exact version\n *\n * @param {PackageNameIndexComponentItem[]} indexItems\n * @returns {ItemsGroupedByRangeOrVersion}\n */\nfunction groupByRangeOrVersion(indexItems: PackageNameIndexComponentItem[]): ItemsGroupedByRangeOrVersion {\n const result: ItemsGroupedByRangeOrVersion = {\n ranges: [],\n versions: [],\n };\n indexItems.forEach((item) => {\n const isVersionRange = isRange(item.range, item.origin);\n if (isVersionRange) {\n result.ranges.push(item);\n } else {\n result.versions.push(item);\n }\n });\n return result;\n}\n\nexport function isRange(version: string, compIdStr: string) {\n const validRange = semver.validRange(version);\n if (!validRange) {\n if (!isHash(version) && !version.startsWith('workspace:') && !version.startsWith('npm:')) {\n throw new Error(\n `fatal: the version \"${version}\" originated from a dependent \"${compIdStr}\" is invalid semver range and not a hash`\n );\n }\n return false;\n }\n // parseRange does not support `*` as version\n // `*` does not affect resulted version, it might be just ignored\n if (validRange === '*') {\n return true;\n }\n const parsed = parseRange(validRange);\n if (parsed.condition === '=') {\n return false;\n }\n return true;\n}\n\n// Taken from https://web.archive.org/web/20140418004051/http://dzone.com/snippets/calculate-all-combinations\n/**\n * Return all combinations of array items. for example:\n * arrayCombinations([1,2]) == [[1], [2], [1,2]];\n *\n * @param {Array<T>} array\n * @returns {Array<T[]>}\n */\nfunction arrayCombinations<T>(array: Array<T>): Array<T[]> {\n const fn = function (n, src, got, all) {\n if (n === 0) {\n if (got.length > 0) {\n all[all.length] = got;\n }\n return;\n }\n // eslint-disable-next-line\n for (let j = 0; j < src.length; j++) {\n fn(n - 1, src.slice(j + 1), got.concat([src[j]]), all);\n }\n };\n const all: Array<T[]> = [];\n // eslint-disable-next-line\n for (let i = 0; i < array.length; i++) {\n fn(i, array, [], all);\n }\n all.push(array);\n return all;\n}\n\nexport function getEmptyDedupedDependencies(): DedupedDependencies {\n const result: DedupedDependencies = {\n rootDependencies: {\n dependencies: {},\n optionalDependencies: {},\n devDependencies: {},\n peerDependencies: {},\n },\n componentDependenciesMap: new Map(),\n issus: {\n peerConflicts: [],\n },\n };\n return result;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +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","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":"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","ignoreList":[]}
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 type { DependencyLifecycleType, SemverVersion } from '../../dependencies';\nimport type { DedupedDependencies } from './dedupe-dependencies';\nimport { hoistDependencies } from './hoist-dependencies';\nimport type { 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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","ignoreList":[]}
@@ -1,7 +1,7 @@
1
- import { ManifestDependenciesKeysNames } from '../manifest';
2
- import { DependencyLifecycleType, SemverVersion, PackageName } from '../../dependencies';
3
- import { ComponentDependenciesMap } from '../workspace-manifest-factory';
4
- import { WorkspacePolicy } from '../../policy';
1
+ import type { ManifestDependenciesKeysNames } from '../manifest';
2
+ import type { DependencyLifecycleType, SemverVersion, PackageName } from '../../dependencies';
3
+ import type { ComponentDependenciesMap } from '../workspace-manifest-factory';
4
+ import type { WorkspacePolicy } from '../../policy';
5
5
  export type PackageNameIndexItem = {
6
6
  metadata: PackageNameIndexItemMetadata;
7
7
  componentItems: PackageNameIndexComponentItem[];
@@ -1 +1 @@
1
- {"version":3,"names":["_lodash","data","require","_constants","indexByDepId","rootPolicy","componentDependenciesMap","hoistedDepFields","result","Map","forEach","depsObject","compPackageName","pick","omit","deps","depKeyName","lifecycleType","LIFECYCLE_TYPE_BY_KEY_NAME","addComponentDepToDepIdIndex","addPreservedFromRoot","index","preserved","filter","entry","value","preserve","metadata","preservedVersion","version","preservedLifecycleType","setMetadataToExistingIndexItem","dependencyId","depId","existingItem","get","origin","range","componentItem","has","item","componentItems","set","push"],"sources":["index-by-dep-id.ts"],"sourcesContent":["import { forEach, omit, pick } from 'lodash';\nimport { LIFECYCLE_TYPE_BY_KEY_NAME } from '../../dependencies/constants';\nimport { ManifestDependenciesKeysNames, DepObjectValue, ManifestDependenciesObject } 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 /**\n * Record<ManifestDependenciesKeysNames, DepObjectValue>\n * depsObject: {\n * dependencies: { depId: version },\n * devDependencies: { depId: version },\n * }\n */\n componentDependenciesMap.forEach((depsObject: ManifestDependenciesObject, compPackageName) => {\n if (hoistedDepFields) {\n depsObject = pick(depsObject, hoistedDepFields);\n } else {\n depsObject = omit(depsObject, ['peerDependenciesMeta']);\n }\n forEach(\n depsObject as Record<ManifestDependenciesKeysNames, DepObjectValue>,\n (deps: DepObjectValue, depKeyName: string) => {\n const lifecycleType = LIFECYCLE_TYPE_BY_KEY_NAME[depKeyName] as DependencyLifecycleType;\n forEach(deps, addComponentDepToDepIdIndex(result, compPackageName, lifecycleType));\n }\n );\n });\n addPreservedFromRoot(result, rootPolicy);\n return result;\n}\n\nfunction addPreservedFromRoot(index: PackageNameIndex, rootPolicy: WorkspacePolicy): void {\n // In case the preserve is undefined we want it to be true by default\n // to ensure workspace root policy versions are installed in the root node_modules by default\n const preserved = rootPolicy.filter((entry) => entry.value.preserve ?? true);\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 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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","ignoreList":[]}
1
+ {"version":3,"names":["_lodash","data","require","_constants","indexByDepId","rootPolicy","componentDependenciesMap","hoistedDepFields","result","Map","forEach","depsObject","compPackageName","pick","omit","deps","depKeyName","lifecycleType","LIFECYCLE_TYPE_BY_KEY_NAME","addComponentDepToDepIdIndex","addPreservedFromRoot","index","preserved","filter","entry","value","preserve","metadata","preservedVersion","version","preservedLifecycleType","setMetadataToExistingIndexItem","dependencyId","depId","existingItem","get","origin","range","componentItem","has","item","componentItems","set","push"],"sources":["index-by-dep-id.ts"],"sourcesContent":["import { forEach, omit, pick } from 'lodash';\nimport { LIFECYCLE_TYPE_BY_KEY_NAME } from '../../dependencies/constants';\nimport type { ManifestDependenciesKeysNames, DepObjectValue, ManifestDependenciesObject } from '../manifest';\nimport type { DependencyLifecycleType, SemverVersion, PackageName } from '../../dependencies';\nimport type { ComponentDependenciesMap } from '../workspace-manifest-factory';\nimport type { 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 /**\n * Record<ManifestDependenciesKeysNames, DepObjectValue>\n * depsObject: {\n * dependencies: { depId: version },\n * devDependencies: { depId: version },\n * }\n */\n componentDependenciesMap.forEach((depsObject: ManifestDependenciesObject, compPackageName) => {\n if (hoistedDepFields) {\n depsObject = pick(depsObject, hoistedDepFields);\n } else {\n depsObject = omit(depsObject, ['peerDependenciesMeta']);\n }\n forEach(\n depsObject as Record<ManifestDependenciesKeysNames, DepObjectValue>,\n (deps: DepObjectValue, depKeyName: string) => {\n const lifecycleType = LIFECYCLE_TYPE_BY_KEY_NAME[depKeyName] as DependencyLifecycleType;\n forEach(deps, addComponentDepToDepIdIndex(result, compPackageName, lifecycleType));\n }\n );\n });\n addPreservedFromRoot(result, rootPolicy);\n return result;\n}\n\nfunction addPreservedFromRoot(index: PackageNameIndex, rootPolicy: WorkspacePolicy): void {\n // In case the preserve is undefined we want it to be true by default\n // to ensure workspace root policy versions are installed in the root node_modules by default\n const preserved = rootPolicy.filter((entry) => entry.value.preserve ?? true);\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 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":";;;;;;AAAA,SAAAA,QAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,OAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,WAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,UAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAwBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASG,YAAYA,CAC1BC,UAA2B,EAC3BC,wBAAkD,EAClDC,gBAAkD,EAChC;EAClB,MAAMC,MAAwB,GAAG,IAAIC,GAAG,CAAC,CAAC;EAC1C;AACF;AACA;AACA;AACA;AACA;AACA;EACEH,wBAAwB,CAACI,OAAO,CAAC,CAACC,UAAsC,EAAEC,eAAe,KAAK;IAC5F,IAAIL,gBAAgB,EAAE;MACpBI,UAAU,GAAG,IAAAE,cAAI,EAACF,UAAU,EAAEJ,gBAAgB,CAAC;IACjD,CAAC,MAAM;MACLI,UAAU,GAAG,IAAAG,cAAI,EAACH,UAAU,EAAE,CAAC,sBAAsB,CAAC,CAAC;IACzD;IACA,IAAAD,iBAAO,EACLC,UAAU,EACV,CAACI,IAAoB,EAAEC,UAAkB,KAAK;MAC5C,MAAMC,aAAa,GAAGC,uCAA0B,CAACF,UAAU,CAA4B;MACvF,IAAAN,iBAAO,EAACK,IAAI,EAAEI,2BAA2B,CAACX,MAAM,EAAEI,eAAe,EAAEK,aAAa,CAAC,CAAC;IACpF,CACF,CAAC;EACH,CAAC,CAAC;EACFG,oBAAoB,CAACZ,MAAM,EAAEH,UAAU,CAAC;EACxC,OAAOG,MAAM;AACf;AAEA,SAASY,oBAAoBA,CAACC,KAAuB,EAAEhB,UAA2B,EAAQ;EACxF;EACA;EACA,MAAMiB,SAAS,GAAGjB,UAAU,CAACkB,MAAM,CAAEC,KAAK,IAAKA,KAAK,CAACC,KAAK,CAACC,QAAQ,IAAI,IAAI,CAAC;EAC5EJ,SAAS,CAACZ,OAAO,CAAEc,KAAK,IAAK;IAC3B,MAAMG,QAAsC,GAAG;MAC7CC,gBAAgB,EAAEJ,KAAK,CAACC,KAAK,CAACI,OAAO;MACrCC,sBAAsB,EAAEN,KAAK,CAACP;IAChC,CAAC;IACDc,8BAA8B,CAACV,KAAK,EAAEG,KAAK,CAACQ,YAAY,EAAEL,QAAQ,CAAC;EACrE,CAAC,CAAC;AACJ;AAEA,SAASI,8BAA8BA,CACrCV,KAAuB,EACvBY,KAAkB,EAClBN,QAAsC,EAChC;EACN,MAAMO,YAAY,GAAGb,KAAK,CAACc,GAAG,CAACF,KAAK,CAAC;EACrC;EACA,IAAIC,YAAY,EAAE;IAChBA,YAAY,CAACP,QAAQ,GAAGA,QAAQ;EAClC;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASR,2BAA2BA,CAClCE,KAAuB,EACvBe,MAAmB,EACnBnB,aAAsC,EACtC;EACA,OAAO,CAACoB,KAAoB,EAAEJ,KAAkB,KAAK;IACnD,MAAMK,aAA4C,GAAG;MACnDF,MAAM;MACNC,KAAK;MACLpB;IACF,CAAC;IACD,IAAI,CAACI,KAAK,CAACkB,GAAG,CAACN,KAAK,CAAC,EAAE;MACrB,MAAMO,IAA0B,GAAG;QACjCC,cAAc,EAAE,CAACH,aAAa,CAAC;QAC/BX,QAAQ,EAAE,CAAC;MACb,CAAC;MACDN,KAAK,CAACqB,GAAG,CAACT,KAAK,EAAEO,IAAI,CAAC;MACtB;IACF;IACAnB,KAAK,CAACc,GAAG,CAACF,KAAK,CAAC,EAAEQ,cAAc,CAACE,IAAI,CAACL,aAAa,CAAC;EACtD,CAAC;AACH","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- import { ManifestDependenciesObject } from '../manifest';
2
- import { DedupedDependencies } from './dedupe-dependencies';
1
+ import type { ManifestDependenciesObject } from '../manifest';
2
+ import type { DedupedDependencies } from './dedupe-dependencies';
3
3
  /**
4
4
  * This is the third phase of the deduping process
5
5
  * It's not exactly part of the dedupe process but its required for the bit install to work properly