@teambit/dependency-resolver 0.0.1166 → 0.0.1167
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/apply-updates.js +2 -2
- package/dist/apply-updates.js.map +1 -1
- package/dist/dependencies/dependency-list-factory.js +2 -2
- package/dist/dependencies/dependency-list-factory.js.map +1 -1
- package/dist/dependency-resolver.main.runtime.js +2 -2
- package/dist/dependency-resolver.main.runtime.js.map +1 -1
- package/dist/manifest/deduping/hoist-dependencies.js +1 -1
- package/dist/manifest/deduping/hoist-dependencies.js.map +1 -1
- package/dist/manifest/deduping/index-by-dep-id.js +1 -1
- package/dist/manifest/deduping/index-by-dep-id.js.map +1 -1
- package/dist/{preview-1695027337942.js → preview-1695053895626.js} +2 -2
- package/package.json +15 -15
package/dist/apply-updates.js
CHANGED
|
@@ -49,7 +49,7 @@ function applyUpdates(outdatedPkgs, {
|
|
|
49
49
|
break;
|
|
50
50
|
case 'variants':
|
|
51
51
|
if (outdatedPkg.variantPattern) {
|
|
52
|
-
var _variantPoliciesByPat;
|
|
52
|
+
var _variantPoliciesByPat, _variantPoliciesByPat2, _variantPoliciesByPat3;
|
|
53
53
|
const {
|
|
54
54
|
variantPattern,
|
|
55
55
|
targetField,
|
|
@@ -57,7 +57,7 @@ function applyUpdates(outdatedPkgs, {
|
|
|
57
57
|
} = outdatedPkg;
|
|
58
58
|
updatedVariants.add(outdatedPkg.variantPattern);
|
|
59
59
|
// eslint-disable-next-line dot-notation
|
|
60
|
-
if ((_variantPoliciesByPat = variantPoliciesByPatterns[variantPattern]) !== null && _variantPoliciesByPat !== void 0 && (
|
|
60
|
+
if ((_variantPoliciesByPat = variantPoliciesByPatterns[variantPattern]) !== null && _variantPoliciesByPat !== void 0 && (_variantPoliciesByPat2 = _variantPoliciesByPat[targetField]) !== null && _variantPoliciesByPat2 !== void 0 && (_variantPoliciesByPat3 = _variantPoliciesByPat2[name]) !== null && _variantPoliciesByPat3 !== void 0 && _variantPoliciesByPat3['version']) {
|
|
61
61
|
// eslint-disable-line
|
|
62
62
|
variantPoliciesByPatterns[variantPattern][targetField][name]['version'] = outdatedPkg.latestRange; // eslint-disable-line
|
|
63
63
|
} else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["applyUpdates","outdatedPkgs","variantPoliciesByPatterns","updatedWorkspacePolicyEntries","updatedVariants","Set","updatedComponents","Map","outdatedPkg","_outdatedPkg$dependen","source","dependentComponents","length","isAuto","componentId","forEach","id","toString","has","set","config","policy","get","targetField","name","latestRange","push","dependencyId","value","version","lifecycleType","variantPattern","_variantPoliciesByPat","add","Error","Array","from","values"],"sources":["apply-updates.ts"],"sourcesContent":["import { ComponentID } from '@teambit/component';\nimport { MergedOutdatedPkg } from './dependency-resolver.main.runtime';\nimport { VariantPolicyConfigObject, WorkspacePolicyEntry } from './policy';\n\nexport interface UpdatedComponent {\n componentId: ComponentID;\n config: Record<string, any>;\n}\n\n/**\n * Applies updates to policies.\n */\nexport function applyUpdates(\n outdatedPkgs: Array<Omit<MergedOutdatedPkg, 'currentRange'>>,\n {\n variantPoliciesByPatterns,\n }: {\n variantPoliciesByPatterns: Record<string, VariantPolicyConfigObject>;\n }\n): {\n updatedVariants: string[];\n updatedComponents: UpdatedComponent[];\n updatedWorkspacePolicyEntries: WorkspacePolicyEntry[];\n} {\n const updatedWorkspacePolicyEntries: WorkspacePolicyEntry[] = [];\n const updatedVariants = new Set<string>();\n const updatedComponents = new Map<string, UpdatedComponent>();\n\n for (const outdatedPkg of outdatedPkgs) {\n if (\n outdatedPkg.source === 'component' ||\n (outdatedPkg.source === 'rootPolicy' && outdatedPkg.dependentComponents?.length && !outdatedPkg.isAuto)\n ) {\n // eslint-disable-next-line\n (outdatedPkg.dependentComponents ?? [outdatedPkg.componentId!]).forEach((componentId) => {\n const id = componentId.toString();\n if (!updatedComponents.has(id)) {\n updatedComponents.set(id, { componentId, config: { policy: {} } });\n }\n const { config } = updatedComponents.get(id)!; // eslint-disable-line\n if (!config.policy[outdatedPkg.targetField]) {\n config.policy[outdatedPkg.targetField] = {};\n }\n config.policy[outdatedPkg.targetField][outdatedPkg.name] = outdatedPkg.latestRange;\n });\n } else {\n switch (outdatedPkg.source) {\n case 'rootPolicy':\n case 'component-model':\n updatedWorkspacePolicyEntries.push({\n dependencyId: outdatedPkg.name,\n value: {\n version: outdatedPkg.latestRange,\n },\n lifecycleType: outdatedPkg.targetField === 'peerDependencies' ? 'peer' : 'runtime',\n });\n break;\n case 'variants':\n if (outdatedPkg.variantPattern) {\n const { variantPattern, targetField, name } = outdatedPkg;\n updatedVariants.add(outdatedPkg.variantPattern);\n // eslint-disable-next-line dot-notation\n if (variantPoliciesByPatterns[variantPattern]?.[targetField]?.[name]?.['version']) {\n // eslint-disable-line\n variantPoliciesByPatterns[variantPattern][targetField]![name]['version'] = outdatedPkg.latestRange; // eslint-disable-line\n } else {\n variantPoliciesByPatterns[variantPattern][targetField]![name] = outdatedPkg.latestRange; // eslint-disable-line\n }\n }\n break;\n default:\n throw new Error(`Unsupported policy source for update: ${outdatedPkg.source}`);\n }\n }\n }\n return {\n updatedVariants: Array.from(updatedVariants),\n updatedComponents: Array.from(updatedComponents.values()),\n updatedWorkspacePolicyEntries,\n };\n}\n"],"mappings":";;;;;;AASA;AACA;AACA;AACO,SAASA,YAAYA,CAC1BC,YAA4D,EAC5D;EACEC;AAGF,CAAC,EAKD;EACA,MAAMC,6BAAqD,GAAG,EAAE;EAChE,MAAMC,eAAe,GAAG,IAAIC,GAAG,CAAS,CAAC;EACzC,MAAMC,iBAAiB,GAAG,IAAIC,GAAG,CAA2B,CAAC;EAE7D,KAAK,MAAMC,WAAW,IAAIP,YAAY,EAAE;IAAA,IAAAQ,qBAAA;IACtC,IACED,WAAW,CAACE,MAAM,KAAK,WAAW,IACjCF,WAAW,CAACE,MAAM,KAAK,YAAY,KAAAD,qBAAA,GAAID,WAAW,CAACG,mBAAmB,cAAAF,qBAAA,eAA/BA,qBAAA,CAAiCG,MAAM,IAAI,CAACJ,WAAW,CAACK,MAAO,EACvG;MACA;MACA,CAACL,WAAW,CAACG,mBAAmB,IAAI,CAACH,WAAW,CAACM,WAAW,CAAE,EAAEC,OAAO,CAAED,WAAW,IAAK;QACvF,MAAME,EAAE,GAAGF,WAAW,CAACG,QAAQ,CAAC,CAAC;QACjC,IAAI,CAACX,iBAAiB,CAACY,GAAG,CAACF,EAAE,CAAC,EAAE;UAC9BV,iBAAiB,CAACa,GAAG,CAACH,EAAE,EAAE;YAAEF,WAAW;YAAEM,MAAM,EAAE;cAAEC,MAAM,EAAE,CAAC;YAAE;UAAE,CAAC,CAAC;QACpE;QACA,MAAM;UAAED;QAAO,CAAC,GAAGd,iBAAiB,CAACgB,GAAG,CAACN,EAAE,CAAE,CAAC,CAAC;QAC/C,IAAI,CAACI,MAAM,CAACC,MAAM,CAACb,WAAW,CAACe,WAAW,CAAC,EAAE;UAC3CH,MAAM,CAACC,MAAM,CAACb,WAAW,CAACe,WAAW,CAAC,GAAG,CAAC,CAAC;QAC7C;QACAH,MAAM,CAACC,MAAM,CAACb,WAAW,CAACe,WAAW,CAAC,CAACf,WAAW,CAACgB,IAAI,CAAC,GAAGhB,WAAW,CAACiB,WAAW;MACpF,CAAC,CAAC;IACJ,CAAC,MAAM;MACL,QAAQjB,WAAW,CAACE,MAAM;QACxB,KAAK,YAAY;QACjB,KAAK,iBAAiB;UACpBP,6BAA6B,CAACuB,IAAI,CAAC;YACjCC,YAAY,EAAEnB,WAAW,CAACgB,IAAI;YAC9BI,KAAK,EAAE;cACLC,OAAO,EAAErB,WAAW,CAACiB;YACvB,CAAC;YACDK,aAAa,EAAEtB,WAAW,CAACe,WAAW,KAAK,kBAAkB,GAAG,MAAM,GAAG;UAC3E,CAAC,CAAC;UACF;QACF,KAAK,UAAU;UACb,IAAIf,WAAW,CAACuB,cAAc,EAAE;YAAA,IAAAC,qBAAA;YAC9B,MAAM;
|
|
1
|
+
{"version":3,"names":["applyUpdates","outdatedPkgs","variantPoliciesByPatterns","updatedWorkspacePolicyEntries","updatedVariants","Set","updatedComponents","Map","outdatedPkg","_outdatedPkg$dependen","source","dependentComponents","length","isAuto","componentId","forEach","id","toString","has","set","config","policy","get","targetField","name","latestRange","push","dependencyId","value","version","lifecycleType","variantPattern","_variantPoliciesByPat","_variantPoliciesByPat2","_variantPoliciesByPat3","add","Error","Array","from","values"],"sources":["apply-updates.ts"],"sourcesContent":["import { ComponentID } from '@teambit/component';\nimport { MergedOutdatedPkg } from './dependency-resolver.main.runtime';\nimport { VariantPolicyConfigObject, WorkspacePolicyEntry } from './policy';\n\nexport interface UpdatedComponent {\n componentId: ComponentID;\n config: Record<string, any>;\n}\n\n/**\n * Applies updates to policies.\n */\nexport function applyUpdates(\n outdatedPkgs: Array<Omit<MergedOutdatedPkg, 'currentRange'>>,\n {\n variantPoliciesByPatterns,\n }: {\n variantPoliciesByPatterns: Record<string, VariantPolicyConfigObject>;\n }\n): {\n updatedVariants: string[];\n updatedComponents: UpdatedComponent[];\n updatedWorkspacePolicyEntries: WorkspacePolicyEntry[];\n} {\n const updatedWorkspacePolicyEntries: WorkspacePolicyEntry[] = [];\n const updatedVariants = new Set<string>();\n const updatedComponents = new Map<string, UpdatedComponent>();\n\n for (const outdatedPkg of outdatedPkgs) {\n if (\n outdatedPkg.source === 'component' ||\n (outdatedPkg.source === 'rootPolicy' && outdatedPkg.dependentComponents?.length && !outdatedPkg.isAuto)\n ) {\n // eslint-disable-next-line\n (outdatedPkg.dependentComponents ?? [outdatedPkg.componentId!]).forEach((componentId) => {\n const id = componentId.toString();\n if (!updatedComponents.has(id)) {\n updatedComponents.set(id, { componentId, config: { policy: {} } });\n }\n const { config } = updatedComponents.get(id)!; // eslint-disable-line\n if (!config.policy[outdatedPkg.targetField]) {\n config.policy[outdatedPkg.targetField] = {};\n }\n config.policy[outdatedPkg.targetField][outdatedPkg.name] = outdatedPkg.latestRange;\n });\n } else {\n switch (outdatedPkg.source) {\n case 'rootPolicy':\n case 'component-model':\n updatedWorkspacePolicyEntries.push({\n dependencyId: outdatedPkg.name,\n value: {\n version: outdatedPkg.latestRange,\n },\n lifecycleType: outdatedPkg.targetField === 'peerDependencies' ? 'peer' : 'runtime',\n });\n break;\n case 'variants':\n if (outdatedPkg.variantPattern) {\n const { variantPattern, targetField, name } = outdatedPkg;\n updatedVariants.add(outdatedPkg.variantPattern);\n // eslint-disable-next-line dot-notation\n if (variantPoliciesByPatterns[variantPattern]?.[targetField]?.[name]?.['version']) {\n // eslint-disable-line\n variantPoliciesByPatterns[variantPattern][targetField]![name]['version'] = outdatedPkg.latestRange; // eslint-disable-line\n } else {\n variantPoliciesByPatterns[variantPattern][targetField]![name] = outdatedPkg.latestRange; // eslint-disable-line\n }\n }\n break;\n default:\n throw new Error(`Unsupported policy source for update: ${outdatedPkg.source}`);\n }\n }\n }\n return {\n updatedVariants: Array.from(updatedVariants),\n updatedComponents: Array.from(updatedComponents.values()),\n updatedWorkspacePolicyEntries,\n };\n}\n"],"mappings":"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"}
|
|
@@ -80,10 +80,10 @@ class DependencyListFactory {
|
|
|
80
80
|
* @param legacyComponent
|
|
81
81
|
*/
|
|
82
82
|
async getMissingDependenciesByComponentFromModel(legacyComponent) {
|
|
83
|
-
var _legacyComponent$issu;
|
|
83
|
+
var _legacyComponent$issu, _legacyComponent$issu2;
|
|
84
84
|
const missingPackages = (0, _lodash().flatten)(
|
|
85
85
|
// Use getIssueByName to prevent issues when getting different instances while using both bit from bvm and from the repo
|
|
86
|
-
Object.values(((_legacyComponent$issu = legacyComponent.issues) === null || _legacyComponent$issu === void 0
|
|
86
|
+
Object.values(((_legacyComponent$issu = legacyComponent.issues) === null || _legacyComponent$issu === void 0 ? void 0 : (_legacyComponent$issu2 = _legacyComponent$issu.getIssueByName('MissingPackagesDependenciesOnFs')) === null || _legacyComponent$issu2 === void 0 ? void 0 : _legacyComponent$issu2.data) || {}));
|
|
87
87
|
const componentFromModel = legacyComponent.componentFromModel;
|
|
88
88
|
if (!missingPackages || !missingPackages.length || !componentFromModel) {
|
|
89
89
|
return _dependencyList().DependencyList.fromArray([]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_pMapSeries","data","_interopRequireDefault","require","_lodash","_dependencyList","_exceptions","_dependencyResolver","obj","__esModule","default","DependencyListFactory","constructor","factories","fromSerializedDependencies","serializedDependencies","dependencies","mapSeries","serializedDependency","type","__type","factory","UnknownDepType","dependency","parse","DependencyList","fromLegacyComponent","legacyComponent","lists","Object","values","missingDepsFromModel","getMissingDependenciesByComponentFromModel","push","merge","_legacyComponent$issu","missingPackages","flatten","issues","getIssueByName","componentFromModel","length","fromArray","depListFromModel","getDependenciesFromLegacyModelComponent","filteredDepList","filter","dep","_dep$getPackageName","packageName","getPackageName","call","includes","entry","extensions","findCoreExtension","DependencyResolverAspect","id","get","exports"],"sources":["dependency-list-factory.ts"],"sourcesContent":["import mapSeries from 'p-map-series';\nimport { get, flatten } from 'lodash';\nimport LegacyComponent from '@teambit/legacy/dist/consumer/component';\nimport { DependencyFactory } from './dependency-factory';\nimport { SerializedDependency } from './dependency';\nimport { DependencyList } from './dependency-list';\nimport { UnknownDepType } from './exceptions';\nimport { DependencyResolverAspect } from '../dependency-resolver.aspect';\n\nexport class DependencyListFactory {\n constructor(private factories: Record<string, DependencyFactory>) {}\n\n async fromSerializedDependencies(serializedDependencies: SerializedDependency[]): Promise<DependencyList> {\n const dependencies = await mapSeries(serializedDependencies, async (serializedDependency) => {\n const type = serializedDependency.__type;\n const factory = this.factories[type];\n if (!factory) {\n throw new UnknownDepType(type);\n }\n const dependency = await factory.parse(serializedDependency);\n return dependency;\n });\n return new DependencyList(dependencies);\n }\n\n async fromLegacyComponent(legacyComponent: LegacyComponent): Promise<DependencyList> {\n const lists = await mapSeries(Object.values(this.factories), async (factory) => {\n if (factory.fromLegacyComponent && typeof factory.fromLegacyComponent === 'function') {\n return factory.fromLegacyComponent(legacyComponent);\n }\n return new DependencyList([]);\n });\n\n // This is an important step, see comment for the function to better understand\n const missingDepsFromModel = await this.getMissingDependenciesByComponentFromModel(legacyComponent);\n lists.push(missingDepsFromModel);\n return DependencyList.merge(lists);\n }\n\n /**\n * Some time after importing component (for example), there are required dependencies which are not installed yet, they will consider as missing.\n * since the installer it self used the calculated deps for installing we need them to be listed as well.\n * what we do here, is to add deps from the model in case they considered as missing deps in the fs\n * we don't want just to add all of them since some of them might be removed by the user in the fs (in the source code).\n * by intersect the missing deps (deps which are still required in source code) with the deps from model we have a list of deps with all the required\n * data of them\n * @param legacyComponent\n */\n private async getMissingDependenciesByComponentFromModel(legacyComponent: LegacyComponent): Promise<DependencyList> {\n const missingPackages: string[] = flatten(\n // Use getIssueByName to prevent issues when getting different instances while using both bit from bvm and from the repo\n Object.values(legacyComponent.issues?.getIssueByName('MissingPackagesDependenciesOnFs')?.data || {})\n );\n const componentFromModel = legacyComponent.componentFromModel;\n if (!missingPackages || !missingPackages.length || !componentFromModel) {\n return DependencyList.fromArray([]);\n }\n // All deps defined in model\n const depListFromModel = await this.getDependenciesFromLegacyModelComponent(componentFromModel);\n // Only deps from model which are also required in the current component on fs (currently missing)\n const filteredDepList = depListFromModel.filter((dep) => {\n const packageName = dep.getPackageName?.();\n if (!packageName) {\n return false;\n }\n return missingPackages.includes(packageName);\n });\n return filteredDepList;\n }\n\n /**\n * Get dependencies based on the component from model attached to the legacy (consumer component)\n * @param legacyComponent\n */\n private async getDependenciesFromLegacyModelComponent(legacyComponent: LegacyComponent): Promise<DependencyList> {\n const entry = legacyComponent.extensions.findCoreExtension(DependencyResolverAspect.id);\n if (!entry) {\n return DependencyList.fromArray([]);\n }\n const serializedDependencies: SerializedDependency[] = get(entry, ['data', 'dependencies'], []);\n return this.fromSerializedDependencies(serializedDependencies);\n }\n}\n"],"mappings":";;;;;;AAAA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,QAAA;EAAA,MAAAH,IAAA,GAAAE,OAAA;EAAAC,OAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAIA,SAAAI,gBAAA;EAAA,MAAAJ,IAAA,GAAAE,OAAA;EAAAE,eAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,YAAA;EAAA,MAAAL,IAAA,GAAAE,OAAA;EAAAG,WAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAM,oBAAA;EAAA,MAAAN,IAAA,GAAAE,OAAA;EAAAI,mBAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAyE,SAAAC,uBAAAM,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAElE,MAAMG,qBAAqB,CAAC;EACjCC,WAAWA,CAASC,SAA4C,EAAE;IAAA,KAA9CA,SAA4C,GAA5CA,SAA4C;EAAG;EAEnE,MAAMC,0BAA0BA,CAACC,sBAA8C,EAA2B;IACxG,MAAMC,YAAY,GAAG,MAAM,IAAAC,qBAAS,EAACF,sBAAsB,EAAE,MAAOG,oBAAoB,IAAK;MAC3F,MAAMC,IAAI,GAAGD,oBAAoB,CAACE,MAAM;MACxC,MAAMC,OAAO,GAAG,IAAI,CAACR,SAAS,CAACM,IAAI,CAAC;MACpC,IAAI,CAACE,OAAO,EAAE;QACZ,MAAM,KAAIC,4BAAc,EAACH,IAAI,CAAC;MAChC;MACA,MAAMI,UAAU,GAAG,MAAMF,OAAO,CAACG,KAAK,CAACN,oBAAoB,CAAC;MAC5D,OAAOK,UAAU;IACnB,CAAC,CAAC;IACF,OAAO,KAAIE,gCAAc,EAACT,YAAY,CAAC;EACzC;EAEA,MAAMU,mBAAmBA,CAACC,eAAgC,EAA2B;IACnF,MAAMC,KAAK,GAAG,MAAM,IAAAX,qBAAS,EAACY,MAAM,CAACC,MAAM,CAAC,IAAI,CAACjB,SAAS,CAAC,EAAE,MAAOQ,OAAO,IAAK;MAC9E,IAAIA,OAAO,CAACK,mBAAmB,IAAI,OAAOL,OAAO,CAACK,mBAAmB,KAAK,UAAU,EAAE;QACpF,OAAOL,OAAO,CAACK,mBAAmB,CAACC,eAAe,CAAC;MACrD;MACA,OAAO,KAAIF,gCAAc,EAAC,EAAE,CAAC;IAC/B,CAAC,CAAC;;IAEF;IACA,MAAMM,oBAAoB,GAAG,MAAM,IAAI,CAACC,0CAA0C,CAACL,eAAe,CAAC;IACnGC,KAAK,CAACK,IAAI,CAACF,oBAAoB,CAAC;IAChC,OAAON,gCAAc,CAACS,KAAK,CAACN,KAAK,CAAC;EACpC;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAcI,0CAA0CA,CAACL,eAAgC,EAA2B;IAAA,IAAAQ,qBAAA;IAClH,MAAMC,eAAyB,GAAG,IAAAC,iBAAO;IACvC;
|
|
1
|
+
{"version":3,"names":["_pMapSeries","data","_interopRequireDefault","require","_lodash","_dependencyList","_exceptions","_dependencyResolver","obj","__esModule","default","DependencyListFactory","constructor","factories","fromSerializedDependencies","serializedDependencies","dependencies","mapSeries","serializedDependency","type","__type","factory","UnknownDepType","dependency","parse","DependencyList","fromLegacyComponent","legacyComponent","lists","Object","values","missingDepsFromModel","getMissingDependenciesByComponentFromModel","push","merge","_legacyComponent$issu","_legacyComponent$issu2","missingPackages","flatten","issues","getIssueByName","componentFromModel","length","fromArray","depListFromModel","getDependenciesFromLegacyModelComponent","filteredDepList","filter","dep","_dep$getPackageName","packageName","getPackageName","call","includes","entry","extensions","findCoreExtension","DependencyResolverAspect","id","get","exports"],"sources":["dependency-list-factory.ts"],"sourcesContent":["import mapSeries from 'p-map-series';\nimport { get, flatten } from 'lodash';\nimport LegacyComponent from '@teambit/legacy/dist/consumer/component';\nimport { DependencyFactory } from './dependency-factory';\nimport { SerializedDependency } from './dependency';\nimport { DependencyList } from './dependency-list';\nimport { UnknownDepType } from './exceptions';\nimport { DependencyResolverAspect } from '../dependency-resolver.aspect';\n\nexport class DependencyListFactory {\n constructor(private factories: Record<string, DependencyFactory>) {}\n\n async fromSerializedDependencies(serializedDependencies: SerializedDependency[]): Promise<DependencyList> {\n const dependencies = await mapSeries(serializedDependencies, async (serializedDependency) => {\n const type = serializedDependency.__type;\n const factory = this.factories[type];\n if (!factory) {\n throw new UnknownDepType(type);\n }\n const dependency = await factory.parse(serializedDependency);\n return dependency;\n });\n return new DependencyList(dependencies);\n }\n\n async fromLegacyComponent(legacyComponent: LegacyComponent): Promise<DependencyList> {\n const lists = await mapSeries(Object.values(this.factories), async (factory) => {\n if (factory.fromLegacyComponent && typeof factory.fromLegacyComponent === 'function') {\n return factory.fromLegacyComponent(legacyComponent);\n }\n return new DependencyList([]);\n });\n\n // This is an important step, see comment for the function to better understand\n const missingDepsFromModel = await this.getMissingDependenciesByComponentFromModel(legacyComponent);\n lists.push(missingDepsFromModel);\n return DependencyList.merge(lists);\n }\n\n /**\n * Some time after importing component (for example), there are required dependencies which are not installed yet, they will consider as missing.\n * since the installer it self used the calculated deps for installing we need them to be listed as well.\n * what we do here, is to add deps from the model in case they considered as missing deps in the fs\n * we don't want just to add all of them since some of them might be removed by the user in the fs (in the source code).\n * by intersect the missing deps (deps which are still required in source code) with the deps from model we have a list of deps with all the required\n * data of them\n * @param legacyComponent\n */\n private async getMissingDependenciesByComponentFromModel(legacyComponent: LegacyComponent): Promise<DependencyList> {\n const missingPackages: string[] = flatten(\n // Use getIssueByName to prevent issues when getting different instances while using both bit from bvm and from the repo\n Object.values(legacyComponent.issues?.getIssueByName('MissingPackagesDependenciesOnFs')?.data || {})\n );\n const componentFromModel = legacyComponent.componentFromModel;\n if (!missingPackages || !missingPackages.length || !componentFromModel) {\n return DependencyList.fromArray([]);\n }\n // All deps defined in model\n const depListFromModel = await this.getDependenciesFromLegacyModelComponent(componentFromModel);\n // Only deps from model which are also required in the current component on fs (currently missing)\n const filteredDepList = depListFromModel.filter((dep) => {\n const packageName = dep.getPackageName?.();\n if (!packageName) {\n return false;\n }\n return missingPackages.includes(packageName);\n });\n return filteredDepList;\n }\n\n /**\n * Get dependencies based on the component from model attached to the legacy (consumer component)\n * @param legacyComponent\n */\n private async getDependenciesFromLegacyModelComponent(legacyComponent: LegacyComponent): Promise<DependencyList> {\n const entry = legacyComponent.extensions.findCoreExtension(DependencyResolverAspect.id);\n if (!entry) {\n return DependencyList.fromArray([]);\n }\n const serializedDependencies: SerializedDependency[] = get(entry, ['data', 'dependencies'], []);\n return this.fromSerializedDependencies(serializedDependencies);\n }\n}\n"],"mappings":"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"}
|
|
@@ -382,7 +382,7 @@ class DependencyResolverMain {
|
|
|
382
382
|
supportsDedupingOnExistingRoot() {
|
|
383
383
|
var _packageManager$suppo;
|
|
384
384
|
const packageManager = this.getPackageManager();
|
|
385
|
-
return (packageManager === null || packageManager === void 0
|
|
385
|
+
return (packageManager === null || packageManager === void 0 ? void 0 : (_packageManager$suppo = packageManager.supportsDedupingOnExistingRoot) === null || _packageManager$suppo === void 0 ? void 0 : _packageManager$suppo.call(packageManager)) === true && !this.isolatedCapsules();
|
|
386
386
|
}
|
|
387
387
|
hasRootComponents() {
|
|
388
388
|
return Boolean(this.config.rootComponents);
|
|
@@ -496,7 +496,7 @@ class DependencyResolverMain {
|
|
|
496
496
|
if (!entry) {
|
|
497
497
|
return _dependencies().DependencyList.fromArray([]);
|
|
498
498
|
}
|
|
499
|
-
const serializedDependencies = (entry === null || entry === void 0
|
|
499
|
+
const serializedDependencies = (entry === null || entry === void 0 ? void 0 : (_entry$data = entry.data) === null || _entry$data === void 0 ? void 0 : _entry$data.dependencies) || [];
|
|
500
500
|
const depList = await this.getDependenciesFromSerializedDependencies(serializedDependencies);
|
|
501
501
|
if (includeHidden) return depList;
|
|
502
502
|
return depList.filterHidden();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_multimatch","data","_interopRequireDefault","require","_pMapSeries","_cli","_bit","_bitRoots","_component","_path","_lodash","_config","_envs","_harmony","_graphql","_logger","_constants","_dependencyResolver","_componentIdToPackageName","_detectorHook","_http","_component2","_fsExtra","_legacyBitId","_network","_semver","_interopRequireWildcard","_aspectLoader","_globalConfig","_registry","_applyUpdates","_constants2","_dependencyInstaller","_dependencyResolver2","_dependencyVersionResolver","_dependencyLinker","_getAllPolicyPkgs","_exceptions","_manifest","_policy","_dependencies","_showFragments","_dependencyResolver3","_dependencies2","_envPolicy","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","TypeError","Number","BIT_DEV_REGISTRY","exports","BIT_CLOUD_REGISTRY","getCloudDomain","NPM_REGISTRY","defaultLinkingOptions","linkTeambitBit","linkCoreAspects","defaultCreateFromComponentsOptions","filterComponentsFromManifests","createManifestForComponentsWithoutDependencies","DependencyResolverMain","constructor","config","rootPolicyRegistry","policiesRegistry","envs","logger","configAspect","aspectLoader","globalConfig","componentAspect","packageManagerSlot","dependencyFactorySlot","preInstallSlot","postInstallSlot","Set","supportsDedupingOnExistingRoot","_packageManager$suppo","packageManager","getPackageManager","isolatedCapsules","hasRootComponents","Boolean","rootComponents","getSync","CFG_ISOLATED_SCOPE_CAPSULES","defaultVal","hasHarmonyInRootPolicy","rootPolicy","getWorkspacePolicyFromConfig","entries","some","dependencyId","nodeLinker","packageManagerName","pmName","defaultConfig","registerPackageManager","register","registerDependencyFactories","factories","registerPreInstallSubscribers","subscribers","registerPostInstallSubscribers","getSavePrefix","savePrefix","getVersionWithSavePrefix","version","overridePrefix","wantedRange","includes","prefix","versionWithPrefix","semver","validRange","InvalidVersionWithPrefix","getPolicy","component","entry","state","aspects","DependencyResolverAspect","id","VariantPolicy","getEmpty","serializedPolicy","parse","extractDepsFromLegacy","policy","componentPolicy","legacyComponent","_consumer","listFactory","getDependencyListFactory","dependencyList","fromLegacyComponent","dep","found","find","hidden","values","flat","factoriesMap","reduce","acc","factory","type","DependencyListFactory","getDependencies","includeHidden","_entry$data","DependencyList","fromArray","serializedDependencies","dependencies","depList","getDependenciesFromSerializedDependencies","filterHidden","getComponentDependencies","deps","fromSerializedDependencies","getWorkspacePolicy","policyFromConfig","externalPolicies","toArray","map","mergeWorkspacePolices","WorkspacePolicyFactory","fromConfigObject","getWorkspacePolicyFromConfigObject","getWorkspacePolicyFromPackageJson","packageJson","fromPackageJson","polices","WorkspacePolicy","mergePolices","getWorkspaceManifest","name","ROOT_NAME","SemVer","rootDir","components","options","context","statusMessage","inCapsule","setStatusLine","concreteOpts","workspaceManifestFactory","WorkspaceManifestFactory","createFromComponents","consoleSuccess","getPackageName","_this$getDepResolverD","getDepResolverData","packageName","calcPackageName","_component$state$aspe","componentIdToPackageName","getRuntimeModulePath","modulePath","getModulePath","pkgName","selfRootDir","getRelativeRootComponentDir","toString","fs","pathExistsSync","innerDir","join","envId","getEnvId","dirInEnvRoot","relativePath","getInstaller","cacheRootDir","cacheRootDirectory","CFG_PACKAGE_MANAGER_CACHE","PackageManagerNotFound","debug","ensureDirSync","preInstallSubscribers","getPreInstallSubscribers","postInstallSubscribers","getPostInstallSubscribers","DependencyInstaller","packageImportMethod","sideEffectsCache","nodeVersion","engineStrict","peerDependencyRules","neverBuiltDependencies","preferOffline","installingContext","getLinker","linkingOptions","assign","DependencyLinker","linkingContext","getPackageManagerName","getVersionResolver","networkConcurrency","getNetworkConfig","DependencyVersionResolver","getCompIdsThatShouldNotBeInPolicy","getAllCoreAspectsIds","getSystemPackageManager","defaultPm","Error","getProxyConfig","proxyConfigFromDepResolverConfig","getProxyConfigFromDepResolverConfig","httpProxy","httpsProxy","proxyConfigFromPackageManager","getProxyConfigFromPackageManager","proxyConfigFromGlobalConfig","getProxyConfigFromGlobalConfig","proxy","noProxy","networkConfig","getNetworkConfigFromGlobalConfig","getNetworkConfigFromPackageManager","getNetworkConfigFromDepResolverConfig","JSON","stringify","globalNetworkConfig","Http","ca","cafile","readCAFileSync","pick","strictSsl","strictSSL","toLowerCase","networkConfigFromPackageManager","systemPm","getMissingPeerDependencies","componentDirectoryMap","_peerDependencyIssues","peerDependencyIssues","installer","manifests","getComponentManifests","getPeerDependencyIssues","intersections","getRegistries","registries","bitScope","scopes","bit","getDefaultBitRegistry","bitGlobalConfigRegistry","CFG_REGISTRY_URL_KEY","bitRegistry","uri","bitOriginalAuthType","bitAuthHeaderValue","bitOriginalAuthValue","getBitAuthConfig","alwaysAuth","bitDefaultRegistry","Registry","installFromBitDevRegistry","defaultRegistry","startsWith","setDefaultRegistry","updateScopedRegistry","addAuthToScopedBitRegistries","bitScopeRegistry","updatedRegistries","registry","authHeaderValue","registryWithAuth","bitGlobalConfigToken","CFG_USER_TOKEN_KEY","originalAuthType","originalAuthValue","addToRootPolicy","workspacePolicy","add","updateConfigPolicy","removeFromRootPolicy","dependencyIds","workspacePolicyUpdated","remove","workspacePolicyObject","toConfigObject","setExtension","overrideExisting","ignoreVersion","persistConfig","workspaceDir","_this$configAspect$wo","workspaceConfig","write","dir","registerDependenciesPolicies","registerRootPolicy","getComponentEnvPolicyFromExtension","configuredExtensions","calculateEnvIdFromExtensions","isCoreEnv","env","calculateEnvFromExtensions","getComponentEnvPolicyFromEnv","fromFile","getEnvPolicyFromFile","getEnvPolicyFromEnvId","legacyFiles","getEnvPolicyFromEnvLegacyId","_legacy","envDef","getEnvDefinitionByLegacyId","getComponentEnvPolicy","calculateEnvId","toStringWithoutVersion","getEnv","envsWithoutManifest","getEnvManifest","envComponent","allPoliciesFromEnv","EnvPolicy","getEnvComponentByEnvId","policiesFromEnvConfig","getComponentEnvPolicyFromEnvDefinition","getPreviewHostDependenciesFromEnv","hostDeps","getAdditionalHostDependencies","uniq","mergeVariantPolicies","policiesFromSlots","policiesFromConfig","policiesFromEnv","configuredIds","ids","policiesTuples","extId","policyTupleToApply","policyRegistrar","currentPolicy","currentExtension","findExtension","currentConfig","policiesFromEnvForItself","getPoliciesFromEnvForItself","result","envPolicy","selfPolicy","updateDepsOnLegacyTag","idTransformer","extensions","findCoreExtension","__type","COMPONENT_DEP_TYPE","depId","BitId","componentId","newDepId","serialize","updateDepsOnLegacyExport","registerDetector","detector","DetectorHook","hooks","calcComponentEnvDepDetectors","depEnv","getDepDetectors","onLoadRequireableExtensionSubscriber","requireableExtension","manifest","parentComponent","resolveRequireableExtensionManifestDepsVersionsRecursively","resolvedParentComponent","resolvedParentDeps","updateDirectDepsVersions","mapSeries","isCoreAspect","parentComponentId","getHost","resolveComponentId","error","resolvedDep","findDependency","cloneManifest","_runtimes","runtime","getOutdatedPkgsFromPolicies","variantPoliciesByPatterns","componentPolicies","patterns","forceVersionBump","localComponentPkgNames","componentModelVersions","Promise","all","lifecycle","isAuto","lifecycleType","allPkgs","getAllPolicyPkgs","selectedPkgNames","multimatch","outdatedPkgs","getOutdatedPkgs","mergeOutdatedPkgs","pkgs","resolver","tryResolve","spec","resolveRemoteVersion","compact","pkg","latestVersion","newVersionRange","currentRange","currentVersion","valid","replace","gt","latestRange","repeatPrefix","applyUpdates","updatedVariants","updatedComponents","updatedWorkspacePolicyEntries","updateExisting","provider","loggerExt","configMain","graphql","createLogger","dependencyResolver","registerShowFragments","DependenciesFragment","DevDependenciesFragment","PeerDependenciesFragment","ComponentDependencyFactory","DependencyResolver","getDepResolverAspectName","LegacyComponent","registerOnComponentOverridesLoading","toLegacyDepsOverrides","registerWorkspacePolicyGetter","toManifest","registerEnvDetectorGetter","registerHarmonyEnvPeersPolicyForEnvItselfGetter","files","toVersionManifest","registerOnLoadRequireableExtensionSlot","bind","dependencyResolverSchema","registerService","DependenciesService","getEmptyDepsObject","devDependencies","peerDependencies","getInjectedDirs","componentDir","getWorkspaceDepsOfBitRoots","MainRuntime","EnvsAspect","LoggerAspect","ConfigAspect","AspectLoaderAspect","ComponentAspect","GraphqlAspect","GlobalConfigAspect","Slot","withType","addRuntime","originalSpec","newVersion","major","minor","split","mergedOutdatedPkgs","outdatedPkgsNotFromComponentModel","outdatedPkg","omit","dependentComponents","hasDifferentRanges","tryPickLowestRange","targetField","range1","range2","lt","rangeToVersion","range","substring"],"sources":["dependency-resolver.main.runtime.ts"],"sourcesContent":["import multimatch from 'multimatch';\nimport mapSeries from 'p-map-series';\nimport { MainRuntime } from '@teambit/cli';\nimport { getAllCoreAspectsIds } from '@teambit/bit';\nimport { getRelativeRootComponentDir } from '@teambit/bit-roots';\nimport ComponentAspect, { Component, ComponentMap, ComponentMain, IComponent, ComponentID } from '@teambit/component';\nimport type { ConfigMain } from '@teambit/config';\nimport { join } from 'path';\nimport { compact, get, pick, uniq, omit } from 'lodash';\nimport { ConfigAspect } from '@teambit/config';\nimport { DependenciesEnv, EnvDefinition, EnvsAspect, EnvsMain } from '@teambit/envs';\nimport { Slot, SlotRegistry, ExtensionManifest, Aspect, RuntimeManifest } from '@teambit/harmony';\nimport { RequireableComponent } from '@teambit/harmony.modules.requireable-component';\nimport type { LoggerMain } from '@teambit/logger';\nimport { GraphqlAspect, GraphqlMain } from '@teambit/graphql';\nimport { Logger, LoggerAspect } from '@teambit/logger';\nimport {\n CFG_PACKAGE_MANAGER_CACHE,\n CFG_REGISTRY_URL_KEY,\n CFG_USER_TOKEN_KEY,\n CFG_ISOLATED_SCOPE_CAPSULES,\n getCloudDomain,\n} from '@teambit/legacy/dist/constants';\n// TODO: it's weird we take it from here.. think about it../workspace/utils\nimport { DependencyResolver } from '@teambit/legacy/dist/consumer/component/dependencies/dependency-resolver';\nimport { ExtensionDataList } from '@teambit/legacy/dist/consumer/config/extension-data';\nimport componentIdToPackageName from '@teambit/legacy/dist/utils/bit/component-id-to-package-name';\nimport { DetectorHook } from '@teambit/legacy/dist/consumer/component/dependencies/files-dependency-builder/detector-hook';\nimport { Http, ProxyConfig, NetworkConfig } from '@teambit/legacy/dist/scope/network/http';\nimport { onTagIdTransformer } from '@teambit/snapping';\nimport { Version as VersionModel } from '@teambit/legacy/dist/scope/models';\nimport LegacyComponent from '@teambit/legacy/dist/consumer/component';\nimport fs from 'fs-extra';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport { readCAFileSync } from '@pnpm/network.ca-file';\nimport { SourceFile } from '@teambit/legacy/dist/consumer/component/sources';\nimport { PeerDependencyRules, ProjectManifest } from '@pnpm/types';\nimport semver, { SemVer } from 'semver';\nimport AspectLoaderAspect, { AspectLoaderMain } from '@teambit/aspect-loader';\nimport GlobalConfigAspect, { GlobalConfigMain } from '@teambit/global-config';\nimport { Registries, Registry } from './registry';\nimport { applyUpdates, UpdatedComponent } from './apply-updates';\nimport { ROOT_NAME } from './dependencies/constants';\nimport {\n DependencyInstaller,\n PreInstallSubscriberList,\n PostInstallSubscriberList,\n DepInstallerContext,\n} from './dependency-installer';\nimport { DependencyResolverAspect } from './dependency-resolver.aspect';\nimport { DependencyVersionResolver } from './dependency-version-resolver';\nimport { DepLinkerContext, DependencyLinker, LinkingOptions } from './dependency-linker';\nimport { ComponentModelVersion, getAllPolicyPkgs, OutdatedPkg } from './get-all-policy-pkgs';\nimport { InvalidVersionWithPrefix, PackageManagerNotFound } from './exceptions';\nimport {\n CreateFromComponentsOptions,\n WorkspaceManifest,\n WorkspaceManifestFactory,\n ManifestDependenciesObject,\n} from './manifest';\nimport {\n WorkspacePolicyConfigObject,\n VariantPolicyConfigObject,\n WorkspacePolicy,\n WorkspacePolicyFactory,\n VariantPolicy,\n WorkspacePolicyAddEntryOptions,\n WorkspacePolicyEntry,\n SerializedVariantPolicy,\n} from './policy';\nimport {\n PackageImportMethod,\n PackageManager,\n PeerDependencyIssuesByProjects,\n PackageManagerGetPeerDependencyIssuesOptions,\n} from './package-manager';\n\nimport {\n SerializedDependency,\n DependencyListFactory,\n DependencyFactory,\n ComponentDependencyFactory,\n COMPONENT_DEP_TYPE,\n DependencyList,\n ComponentDependency,\n} from './dependencies';\nimport { DependenciesFragment, DevDependenciesFragment, PeerDependenciesFragment } from './show-fragments';\nimport { dependencyResolverSchema } from './dependency-resolver.graphql';\nimport { DependencyDetector } from './dependency-detector';\nimport { DependenciesService } from './dependencies.service';\nimport { EnvPolicy } from './policy/env-policy';\n\n/**\n * @deprecated use BIT_CLOUD_REGISTRY instead\n */\nexport const BIT_DEV_REGISTRY = 'https://node.bit.dev/';\nexport const BIT_CLOUD_REGISTRY = `https://node.${getCloudDomain()}/`;\nexport const NPM_REGISTRY = 'https://registry.npmjs.org/';\n\nexport { ProxyConfig, NetworkConfig } from '@teambit/legacy/dist/scope/network/http';\n\nexport type NodeLinker = 'hoisted' | 'isolated';\n\nexport interface DependencyResolverComponentData {\n packageName: string;\n policy: SerializedVariantPolicy;\n dependencies: SerializedDependency;\n}\n\nexport interface DependencyResolverWorkspaceConfig {\n policy: WorkspacePolicyConfigObject;\n /**\n * choose the package manager for Bit to use. you can choose between 'npm', 'yarn', 'pnpm'\n * and 'librarian'. our recommendation is use 'librarian' which reduces package duplicates\n * and totally removes the need of a 'node_modules' directory in your project.\n */\n packageManager: string;\n\n /**\n * A proxy server for out going network requests by the package manager\n * Used for both http and https requests (unless the httpsProxy is defined)\n */\n proxy?: string;\n\n /**\n * A proxy server for outgoing https requests by the package manager (fallback to proxy server if not defined)\n * Use this in case you want different proxy for http and https requests.\n */\n httpsProxy?: string;\n\n /**\n * A path to a file containing one or multiple Certificate Authority signing certificates.\n * allows for multiple CA's, as well as for the CA information to be stored in a file on disk.\n */\n ca?: string;\n\n /**\n * Whether or not to do SSL key validation when making requests to the registry via https\n */\n strictSsl?: string;\n\n /**\n * A client certificate to pass when accessing the registry. Values should be in PEM format (Windows calls it \"Base-64 encoded X.509 (.CER)\") with newlines replaced by the string \"\\n\". For example:\n * cert=\"-----BEGIN CERTIFICATE-----\\nXXXX\\nXXXX\\n-----END CERTIFICATE-----\"\n * It is not the path to a certificate file (and there is no \"certfile\" option).\n */\n cert?: string;\n\n /**\n * A client key to pass when accessing the registry. Values should be in PEM format with newlines replaced by the string \"\\n\". For example:\n * key=\"-----BEGIN PRIVATE KEY-----\\nXXXX\\nXXXX\\n-----END PRIVATE KEY-----\"\n * It is not the path to a key file (and there is no \"keyfile\" option).\n */\n key?: string;\n\n /**\n * A comma-separated string of domain extensions that a proxy should not be used for.\n */\n noProxy?: string;\n\n /**\n * The IP address of the local interface to use when making connections to the npm registry.\n */\n localAddress?: string;\n\n /**\n * How many times to retry if Bit fails to fetch from the registry.\n */\n fetchRetries?: number;\n\n /*\n * The exponential factor for retry backoff.\n */\n fetchRetryFactor?: number;\n\n /*\n * The minimum (base) timeout for retrying requests.\n */\n fetchRetryMintimeout?: number;\n\n /*\n * The maximum fallback timeout to ensure the retry factor does not make requests too long.\n */\n fetchRetryMaxtimeout?: number;\n\n /*\n * The maximum amount of time (in milliseconds) to wait for HTTP requests to complete.\n */\n fetchTimeout?: number;\n\n /*\n * The maximum number of connections to use per origin (protocol/host/port combination).\n */\n maxSockets?: number;\n\n /*\n * Controls the maximum number of HTTP(S) requests to process simultaneously.\n */\n networkConcurrency?: number;\n\n /*\n * Set the prefix to use when adding dependency to workspace.jsonc via bit install\n * to lock version to exact version you can use empty string (default)\n */\n savePrefix?: string;\n\n /*\n * in case you want to disable this proxy set this config to false\n *\n */\n installFromBitDevRegistry?: boolean;\n\n /*\n * map of extra arguments to pass to the configured package manager upon the installation\n * of dependencies.\n */\n packageManagerArgs?: string[];\n\n /*\n * This field allows to instruct the package manager to override any dependency in the dependency graph.\n * This is useful to enforce all your packages to use a single version of a dependency, backport a fix,\n * or replace a dependency with a fork.\n */\n overrides?: Record<string, string>;\n\n /**\n * This is similar to overrides, but will only affect installation in capsules.\n * In case overrides is configured and this not, the regular overrides will affect capsules as well.\n * in case both configured, capsulesOverrides will be used for capsules, and overrides will affect the workspace.\n */\n capsulesOverrides?: Record<string, string>;\n\n /*\n * Defines what linker should be used for installing Node.js packages.\n * Supported values are hoisted and isolated.\n */\n nodeLinker?: NodeLinker;\n\n /*\n * Controls the way packages are imported from the store.\n */\n packageImportMethod?: PackageImportMethod;\n\n /*\n * Use and cache the results of (pre/post)install hooks.\n */\n sideEffectsCache?: boolean;\n\n /*\n * The list of components that should be installed in isolation from the workspace.\n * The component's package names should be used in this list, not their component IDs.\n */\n rootComponents?: boolean;\n\n /*\n * The node version to use when checking a package's engines setting.\n */\n nodeVersion?: string;\n\n /*\n * Refuse to install any package that claims to not be compatible with the current Node.js version.\n */\n engineStrict?: boolean;\n\n /*\n * Rules to mute specific peer dependeny warnings.\n */\n peerDependencyRules?: PeerDependencyRules;\n\n /*\n * This setting is \"true\" by default and tells bit to link core aspects to the node_modules of the workspace.\n * It only makes sense to set this to \"false\" in a workspace in which core aspects are actually developed.\n */\n linkCoreAspects?: boolean;\n\n /**\n * When false, Bit will create a shared node_modules directory for all components in a capsule.\n */\n isolatedCapsules?: boolean;\n\n /*\n * Ignore the builds of specific dependencies. The \"preinstall\", \"install\", and \"postinstall\" scripts\n * of the listed packages will not be executed during installation.\n */\n neverBuiltDependencies?: string[];\n\n /**\n * If true, staleness checks for cached data will be bypassed, but missing data will be requested from the server.\n */\n preferOffline?: boolean;\n}\n\nexport interface DependencyResolverVariantConfig {\n policy: VariantPolicyConfigObject;\n}\n\nexport type RootPolicyRegistry = SlotRegistry<WorkspacePolicy>;\nexport type PoliciesRegistry = SlotRegistry<VariantPolicyConfigObject>;\nexport type PackageManagerSlot = SlotRegistry<PackageManager>;\nexport type DependencyFactorySlot = SlotRegistry<DependencyFactory[]>;\nexport type PreInstallSlot = SlotRegistry<PreInstallSubscriberList>;\nexport type PostInstallSlot = SlotRegistry<PostInstallSubscriberList>;\n\nexport type MergeDependenciesFunc = (configuredExtensions: ExtensionDataList) => Promise<VariantPolicyConfigObject>;\n\nexport type GetInstallerOptions = {\n rootDir?: string;\n packageManager?: string;\n cacheRootDirectory?: string;\n installingContext?: DepInstallerContext;\n nodeLinker?: NodeLinker;\n};\n\nexport type GetLinkerOptions = {\n rootDir?: string;\n linkingOptions?: LinkingOptions;\n linkingContext?: DepLinkerContext;\n};\n\nexport type GetDependenciesOptions = {\n includeHidden?: boolean;\n};\n\nexport type GetVersionResolverOptions = {\n cacheRootDirectory?: string;\n};\n\ntype OnExportIdTransformer = (id: BitId) => BitId;\n\nconst defaultLinkingOptions: LinkingOptions = {\n linkTeambitBit: true,\n linkCoreAspects: true,\n};\n\nconst defaultCreateFromComponentsOptions: CreateFromComponentsOptions = {\n filterComponentsFromManifests: true,\n createManifestForComponentsWithoutDependencies: true,\n};\n\nexport class DependencyResolverMain {\n constructor(\n /**\n * Dependency resolver extension configuration.\n */\n readonly config: DependencyResolverWorkspaceConfig,\n\n /**\n * Registry for changes by other extensions.\n */\n private rootPolicyRegistry: RootPolicyRegistry,\n\n /**\n * Registry for changes by other extensions.\n */\n private policiesRegistry: PoliciesRegistry,\n\n /**\n * envs extension.\n */\n private envs: EnvsMain,\n\n private logger: Logger,\n\n private configAspect: ConfigMain,\n\n private aspectLoader: AspectLoaderMain,\n\n private globalConfig: GlobalConfigMain,\n\n /**\n * component aspect.\n */\n readonly componentAspect: ComponentMain,\n\n private packageManagerSlot: PackageManagerSlot,\n\n private dependencyFactorySlot: DependencyFactorySlot,\n\n private preInstallSlot: PreInstallSlot,\n\n private postInstallSlot: PostInstallSlot\n ) {}\n\n /**\n * Save list of envs that doesn't contains env.jsonc file\n * this is used to show warning / instuctions to the user\n */\n public envsWithoutManifest = new Set<string>();\n\n /**\n * This function is a temporary workaround for installation in capsules with pnpm.\n * Currently pnpm breaks the root node_modules inside the capsule because it removes deps from it.\n * Install runs several times in the same capsule and pnpm removes deps from the previous runs.\n *\n * This workaround unfortunately also breaks pnpm on angular projects. Because dedupe doesn't work properly.\n * To fix this issue we'll either have to switch to root components or try to change pnpm code.\n *\n * Here is the PR where initially dedupe was turned off for pnpm: https://github.com/teambit/bit/pull/5410\n */\n supportsDedupingOnExistingRoot(): boolean {\n const packageManager = this.getPackageManager();\n return packageManager?.supportsDedupingOnExistingRoot?.() === true && !this.isolatedCapsules();\n }\n\n hasRootComponents(): boolean {\n return Boolean(this.config.rootComponents);\n }\n\n isolatedCapsules(): boolean {\n const globalConfig = this.globalConfig.getSync(CFG_ISOLATED_SCOPE_CAPSULES);\n // @ts-ignore\n const defaultVal = globalConfig !== undefined ? globalConfig === true || globalConfig === 'true' : true;\n const res = this.config.isolatedCapsules ?? defaultVal;\n return res;\n }\n\n hasHarmonyInRootPolicy(): boolean {\n const rootPolicy = this.getWorkspacePolicyFromConfig();\n return rootPolicy.entries.some(({ dependencyId }) => dependencyId === '@teambit/harmony');\n }\n\n nodeLinker(packageManagerName?: string): NodeLinker {\n if (this.config.nodeLinker) return this.config.nodeLinker;\n const pmName = packageManagerName || this.config.packageManager;\n if (pmName === 'teambit.dependencies/yarn') return 'hoisted';\n return 'isolated';\n }\n\n linkCoreAspects(): boolean {\n return this.config.linkCoreAspects ?? DependencyResolverMain.defaultConfig.linkCoreAspects;\n }\n\n /**\n * register a new package manager to the dependency resolver.\n */\n registerPackageManager(packageManager: PackageManager) {\n this.packageManagerSlot.register(packageManager);\n }\n\n registerDependencyFactories(factories: DependencyFactory[]) {\n this.dependencyFactorySlot.register(factories);\n }\n\n registerPreInstallSubscribers(subscribers: PreInstallSubscriberList) {\n this.preInstallSlot.register(subscribers);\n }\n\n registerPostInstallSubscribers(subscribers: PreInstallSubscriberList) {\n this.postInstallSlot.register(subscribers);\n }\n\n getSavePrefix(): string {\n return this.config.savePrefix || '^';\n }\n\n getVersionWithSavePrefix({\n version,\n overridePrefix,\n wantedRange,\n }: {\n version: string;\n overridePrefix?: string;\n wantedRange?: string;\n }): string {\n if (wantedRange && ['~', '^'].includes(wantedRange[0])) {\n return wantedRange;\n }\n const prefix = overridePrefix || this.getSavePrefix();\n const versionWithPrefix = `${prefix}${version}`;\n if (!semver.validRange(versionWithPrefix)) {\n throw new InvalidVersionWithPrefix(versionWithPrefix);\n }\n return versionWithPrefix;\n }\n\n async getPolicy(component: Component): Promise<VariantPolicy> {\n const entry = component.state.aspects.get(DependencyResolverAspect.id);\n if (!entry) {\n return VariantPolicy.getEmpty();\n }\n const serializedPolicy: SerializedVariantPolicy = get(entry, ['data', 'policy'], []);\n return VariantPolicy.parse(serializedPolicy);\n }\n\n /**\n * This function called on component load in order to calculate the dependencies based on the legacy (consumer) component\n * and write them to the dependencyResolver data.\n * Do not use this function for other purpose.\n * If you want to get the component dependencies call getDependencies (which will give you the dependencies from the data itself)\n * TODO: once we switch deps resolver <> workspace relation we should make it private\n * TODO: once we switch deps resolver <> workspace relation we should remove the resolveId func here\n * @param component\n */\n async extractDepsFromLegacy(component: Component, policy?: VariantPolicy): Promise<DependencyList> {\n const componentPolicy = policy || (await this.getPolicy(component));\n const legacyComponent: LegacyComponent = component.state._consumer;\n const listFactory = this.getDependencyListFactory();\n const dependencyList = await listFactory.fromLegacyComponent(legacyComponent);\n dependencyList.forEach((dep) => {\n const found = componentPolicy.find(dep.id);\n // if no policy found, the dependency was auto-resolved from the source code\n dep.source = found?.source || 'auto';\n dep.hidden = found?.hidden;\n });\n return dependencyList;\n }\n\n private getDependencyListFactory(): DependencyListFactory {\n const factories = this.dependencyFactorySlot.values().flat();\n const factoriesMap = factories.reduce((acc, factory) => {\n acc[factory.type] = factory;\n return acc;\n }, {});\n const listFactory = new DependencyListFactory(factoriesMap);\n return listFactory;\n }\n\n /**\n * Main function to get the dependency list of a given component\n * @param component\n */\n async getDependencies(\n component: IComponent,\n { includeHidden = false }: GetDependenciesOptions = {}\n ): Promise<DependencyList> {\n const entry = component.get(DependencyResolverAspect.id);\n if (!entry) {\n return DependencyList.fromArray([]);\n }\n const serializedDependencies: SerializedDependency[] = entry?.data?.dependencies || [];\n const depList = await this.getDependenciesFromSerializedDependencies(serializedDependencies);\n if (includeHidden) return depList;\n return depList.filterHidden();\n }\n\n /**\n * returns only the dependencies that are bit-components.\n */\n async getComponentDependencies(component: IComponent): Promise<ComponentDependency[]> {\n const dependencyList = await this.getDependencies(component);\n return dependencyList.getComponentDependencies();\n }\n\n private async getDependenciesFromSerializedDependencies(\n dependencies: SerializedDependency[]\n ): Promise<DependencyList> {\n if (!dependencies.length) {\n return DependencyList.fromArray([]);\n }\n const listFactory = this.getDependencyListFactory();\n const deps = await listFactory.fromSerializedDependencies(dependencies);\n return deps;\n }\n\n /**\n * Getting the merged workspace policy (from dep resolver config and others like root package.json)\n * @returns\n */\n getWorkspacePolicy(): WorkspacePolicy {\n const policyFromConfig = this.getWorkspacePolicyFromConfig();\n const externalPolicies = this.rootPolicyRegistry.toArray().map(([, policy]) => policy);\n return this.mergeWorkspacePolices([policyFromConfig, ...externalPolicies]);\n }\n\n /**\n * Getting the workspace policy as defined in the workspace.jsonc in the dependencyResolver aspect\n * This will not take into account packages that defined in the package.json of the root for example\n * in most cases you should use getWorkspacePolicy\n * @returns\n */\n getWorkspacePolicyFromConfig(): WorkspacePolicy {\n const factory = new WorkspacePolicyFactory();\n return factory.fromConfigObject(this.config.policy);\n }\n\n getWorkspacePolicyFromConfigObject(obj: WorkspacePolicyConfigObject): WorkspacePolicy {\n const factory = new WorkspacePolicyFactory();\n return factory.fromConfigObject(obj);\n }\n\n getWorkspacePolicyFromPackageJson(packageJson: Record<string, any>): WorkspacePolicy {\n const factory = new WorkspacePolicyFactory();\n return factory.fromPackageJson(packageJson);\n }\n\n mergeWorkspacePolices(polices: WorkspacePolicy[]): WorkspacePolicy {\n return WorkspacePolicy.mergePolices(polices);\n }\n\n /**\n * Create a workspace manifest\n * The term workspace here is not the same as \"bit workspace\" but a workspace that represent a shared root\n * for installation of many components (sometime it might point to the workspace path)\n * in other case it can be for example the capsules root dir\n *\n * @param {string} [name=ROOT_NAME]\n * @param {SemVer} [version=new SemVer('1.0.0')]\n * @param {ManifestDependenciesObject} dependencies\n * @param {string} rootDir\n * @param {Component[]} components\n * @param {CreateFromComponentsOptions} [options={\n * filterComponentsFromManifests: true,\n * createManifestForComponentsWithoutDependencies: true,\n * }]\n * @returns {WorkspaceManifest}\n * @memberof DependencyResolverMain\n */\n async getWorkspaceManifest(\n name: string = ROOT_NAME,\n version: SemVer = new SemVer('1.0.0'),\n rootPolicy: WorkspacePolicy,\n rootDir: string,\n components: Component[],\n options: CreateFromComponentsOptions = defaultCreateFromComponentsOptions,\n context: DepInstallerContext = {}\n ): Promise<WorkspaceManifest> {\n const statusMessage = context?.inCapsule\n ? `(capsule) deduping dependencies for installation in root dir ${rootDir}`\n : 'deduping dependencies for installation';\n if (!context?.inCapsule) {\n this.logger.setStatusLine(statusMessage);\n }\n const concreteOpts = {\n ...defaultCreateFromComponentsOptions,\n ...options,\n };\n const workspaceManifestFactory = new WorkspaceManifestFactory(this, this.aspectLoader);\n const res = await workspaceManifestFactory.createFromComponents(\n name,\n version,\n rootPolicy,\n rootDir,\n components,\n concreteOpts\n );\n if (!context?.inCapsule) {\n this.logger.consoleSuccess();\n }\n return res;\n }\n\n /**\n * get the package name of a component.\n */\n getPackageName(component: Component): string {\n return this.getDepResolverData(component)?.packageName ?? this.calcPackageName(component);\n }\n\n getDepResolverData(component: Component): DependencyResolverComponentData | undefined {\n return component.state.aspects.get(DependencyResolverAspect.id)?.data as DependencyResolverComponentData;\n }\n\n calcPackageName(component: Component): string {\n return componentIdToPackageName(component.state._consumer);\n }\n\n /*\n * Returns the location where the component is installed with its peer dependencies\n * This is used in cases you want to actually run the components and make sure all the dependencies (especially peers) are resolved correctly\n */\n getRuntimeModulePath(component: Component) {\n if (!this.hasRootComponents()) {\n const modulePath = this.getModulePath(component);\n return modulePath;\n }\n const pkgName = this.getPackageName(component);\n const selfRootDir = getRelativeRootComponentDir(component.id.toString());\n // In case the component is it's own root we want to load it from it's own root folder\n if (fs.pathExistsSync(selfRootDir)) {\n const innerDir = join(selfRootDir, 'node_modules', pkgName);\n if (fs.pathExistsSync(innerDir)) return innerDir;\n // sometime for the env itself we don't have the env package in the env root dir, because it was hoisted\n // in that case we return the dir from the root node_modules\n return this.getModulePath(component);\n }\n const envId = this.envs.getEnvId(component);\n const dirInEnvRoot = join(getRelativeRootComponentDir(envId), 'node_modules', pkgName);\n if (fs.pathExistsSync(dirInEnvRoot)) return dirInEnvRoot;\n return this.getModulePath(component);\n }\n\n /**\n * returns the package path in the /node_modules/ folder\n * In case you call this in order to run the code from the path, please refer to the `getRuntimeModulePath` API\n */\n getModulePath(component: Component) {\n const pkgName = this.getPackageName(component);\n const relativePath = join('node_modules', pkgName);\n return relativePath;\n }\n\n /**\n * get a component dependency installer.\n */\n getInstaller(options: GetInstallerOptions = {}) {\n const packageManagerName = options.packageManager || this.config.packageManager;\n const packageManager = this.packageManagerSlot.get(packageManagerName);\n const cacheRootDir = options.cacheRootDirectory || this.globalConfig.getSync(CFG_PACKAGE_MANAGER_CACHE);\n\n if (!packageManager) {\n throw new PackageManagerNotFound(this.config.packageManager);\n }\n\n if (cacheRootDir && !fs.pathExistsSync(cacheRootDir)) {\n this.logger.debug(`creating package manager cache dir at ${cacheRootDir}`);\n fs.ensureDirSync(cacheRootDir);\n }\n const preInstallSubscribers = this.getPreInstallSubscribers();\n const postInstallSubscribers = this.getPostInstallSubscribers();\n // TODO: we should somehow pass the cache root dir to the package manager constructor\n return new DependencyInstaller(\n packageManager,\n this.aspectLoader,\n this.logger,\n this,\n options.rootDir,\n cacheRootDir,\n preInstallSubscribers,\n postInstallSubscribers,\n options.nodeLinker || this.nodeLinker(packageManagerName),\n this.config.packageImportMethod,\n this.config.sideEffectsCache,\n this.config.nodeVersion,\n this.config.engineStrict,\n this.config.peerDependencyRules,\n this.config.neverBuiltDependencies,\n this.config.preferOffline,\n options.installingContext\n );\n }\n\n private getPreInstallSubscribers(): PreInstallSubscriberList {\n return this.preInstallSlot.values().flat();\n }\n\n private getPostInstallSubscribers(): PostInstallSubscriberList {\n return this.postInstallSlot.values().flat();\n }\n\n /**\n * get a component dependency linker.\n */\n getLinker(options: GetLinkerOptions = {}) {\n const linkingOptions = Object.assign({}, defaultLinkingOptions, options?.linkingOptions || {});\n // TODO: we should somehow pass the cache root dir to the package manager constructor\n return new DependencyLinker(\n this,\n this.aspectLoader,\n this.componentAspect,\n this.envs,\n this.logger,\n options.rootDir,\n linkingOptions,\n options.linkingContext\n );\n }\n\n /**\n * This function returns the package manager if it exists, otherwise it returns undefined.\n * @returns The `getPackageManager()` function returns a `PackageManager` object or `undefined`.\n */\n getPackageManager(): PackageManager | undefined {\n const packageManager = this.packageManagerSlot.get(this.config.packageManager);\n return packageManager;\n }\n\n getPackageManagerName() {\n return this.config.packageManager;\n }\n\n async getVersionResolver(options: GetVersionResolverOptions = {}) {\n const packageManager = this.getPackageManager();\n const cacheRootDir = options.cacheRootDirectory || this.globalConfig.getSync(CFG_PACKAGE_MANAGER_CACHE);\n\n if (!packageManager) {\n throw new PackageManagerNotFound(this.config.packageManager);\n }\n\n if (cacheRootDir && !fs.pathExistsSync(cacheRootDir)) {\n this.logger.debug(`creating package manager cache dir at ${cacheRootDir}`);\n fs.ensureDirSync(cacheRootDir);\n }\n const { networkConcurrency } = await this.getNetworkConfig();\n // TODO: we should somehow pass the cache root dir to the package manager constructor\n return new DependencyVersionResolver(packageManager, cacheRootDir, networkConcurrency);\n }\n\n /**\n * these ids should not be in the dependencyResolver policy normally.\n * one exception is bit itself, which needs teambit.harmony/harmony in the dependencies.\n *\n * returns component-ids string without a version.\n */\n getCompIdsThatShouldNotBeInPolicy(): string[] {\n return [...getAllCoreAspectsIds(), 'teambit.harmony/harmony'];\n }\n\n /**\n * return the system configured package manager. by default pnpm.\n */\n getSystemPackageManager(): PackageManager {\n const defaultPm = 'teambit.dependencies/pnpm';\n const packageManager = this.packageManagerSlot.get(defaultPm);\n if (!packageManager) throw new Error(`default package manager: ${defaultPm} was not found`);\n return packageManager;\n }\n\n async getProxyConfig(): Promise<ProxyConfig> {\n const proxyConfigFromDepResolverConfig = this.getProxyConfigFromDepResolverConfig();\n let httpProxy = proxyConfigFromDepResolverConfig.httpProxy;\n let httpsProxy = proxyConfigFromDepResolverConfig.httpsProxy;\n\n // Take config from the aspect config if defined\n if (httpProxy || httpsProxy) {\n this.logger.debug(\n `proxy config taken from the dep resolver config. proxy: ${httpProxy} httpsProxy: ${httpsProxy}`\n );\n return proxyConfigFromDepResolverConfig;\n }\n\n // Take config from the package manager (npmrc) config if defined\n const proxyConfigFromPackageManager = await this.getProxyConfigFromPackageManager();\n if (proxyConfigFromPackageManager?.httpProxy || proxyConfigFromPackageManager?.httpsProxy) {\n this.logger.debug(\n `proxy config taken from the package manager config (npmrc). proxy: ${proxyConfigFromPackageManager.httpProxy} httpsProxy: ${proxyConfigFromPackageManager.httpsProxy}`\n );\n return proxyConfigFromPackageManager;\n }\n\n // Take config from global bit config\n const proxyConfigFromGlobalConfig = await this.getProxyConfigFromGlobalConfig();\n httpProxy = proxyConfigFromGlobalConfig.httpProxy;\n httpsProxy = proxyConfigFromGlobalConfig.httpsProxy;\n if (httpProxy || httpsProxy) {\n this.logger.debug(`proxy config taken from the global bit config. proxy: ${httpProxy} httpsProxy: ${httpsProxy}`);\n return proxyConfigFromGlobalConfig;\n }\n return {};\n }\n\n private getProxyConfigFromDepResolverConfig(): ProxyConfig {\n return {\n httpProxy: this.config.proxy,\n httpsProxy: this.config.httpsProxy || this.config.proxy,\n noProxy: this.config.noProxy,\n };\n }\n\n async getNetworkConfig(): Promise<NetworkConfig> {\n const networkConfig = {\n ...(await this.getNetworkConfigFromGlobalConfig()),\n ...(await this.getNetworkConfigFromPackageManager()),\n ...this.getNetworkConfigFromDepResolverConfig(),\n };\n this.logger.debug(\n `the next network configuration is used in dependency-resolver: ${JSON.stringify(\n {\n ...networkConfig,\n key: networkConfig.key ? 'set' : 'not set', // this is sensitive information, we should not log it\n },\n null,\n 2\n )}`\n );\n return networkConfig;\n }\n\n private async getNetworkConfigFromGlobalConfig(): Promise<NetworkConfig> {\n const globalNetworkConfig = await Http.getNetworkConfig();\n if (!globalNetworkConfig.ca && globalNetworkConfig.cafile) {\n globalNetworkConfig.ca = readCAFileSync(globalNetworkConfig.cafile);\n }\n return globalNetworkConfig;\n }\n\n private getNetworkConfigFromDepResolverConfig(): NetworkConfig {\n const config: NetworkConfig = pick(this.config, [\n 'fetchTimeout',\n 'fetchRetries',\n 'fetchRetryFactor',\n 'fetchRetryMintimeout',\n 'fetchRetryMaxtimeout',\n 'maxSockets',\n 'networkConcurrency',\n 'key',\n 'cert',\n 'ca',\n 'cafile',\n ]);\n if (this.config.strictSsl != null) {\n config.strictSSL =\n typeof this.config.strictSsl === 'string'\n ? this.config.strictSsl.toLowerCase() === 'true'\n : this.config.strictSsl;\n }\n return config;\n }\n\n private async getNetworkConfigFromPackageManager(): Promise<NetworkConfig> {\n const packageManager = this.getPackageManager();\n let networkConfigFromPackageManager: NetworkConfig = {};\n if (typeof packageManager?.getNetworkConfig === 'function') {\n networkConfigFromPackageManager = await packageManager?.getNetworkConfig();\n } else {\n const systemPm = this.getSystemPackageManager();\n if (!systemPm.getNetworkConfig) throw new Error('system package manager must implement `getNetworkConfig()`');\n networkConfigFromPackageManager = await systemPm.getNetworkConfig();\n }\n return networkConfigFromPackageManager;\n }\n\n private async getProxyConfigFromPackageManager(): Promise<ProxyConfig> {\n const packageManager = this.getPackageManager();\n let proxyConfigFromPackageManager: ProxyConfig = {};\n if (packageManager?.getProxyConfig && typeof packageManager?.getProxyConfig === 'function') {\n proxyConfigFromPackageManager = await packageManager?.getProxyConfig();\n } else {\n const systemPm = this.getSystemPackageManager();\n if (!systemPm.getProxyConfig) throw new Error('system package manager must implement `getProxyConfig()`');\n proxyConfigFromPackageManager = await systemPm.getProxyConfig();\n }\n return proxyConfigFromPackageManager;\n }\n\n private getProxyConfigFromGlobalConfig(): Promise<ProxyConfig> {\n return Http.getProxyConfig();\n }\n\n /**\n * Return the peer dependencies and their ranges that may be installed\n * without causing unmet peer dependency issues in some of the dependencies.\n */\n async getMissingPeerDependencies(\n rootDir: string,\n rootPolicy: WorkspacePolicy,\n componentDirectoryMap: ComponentMap<string>,\n options: PackageManagerGetPeerDependencyIssuesOptions\n ): Promise<Record<string, string>> {\n this.logger.setStatusLine('finding missing peer dependencies');\n const packageManager = this.getPackageManager();\n let peerDependencyIssues!: PeerDependencyIssuesByProjects;\n const installer = this.getInstaller();\n const manifests = await installer.getComponentManifests({\n ...options,\n componentDirectoryMap,\n rootPolicy,\n rootDir,\n });\n if (packageManager?.getPeerDependencyIssues && typeof packageManager?.getPeerDependencyIssues === 'function') {\n peerDependencyIssues = await packageManager?.getPeerDependencyIssues(rootDir, manifests, options);\n } else {\n const systemPm = this.getSystemPackageManager();\n if (!systemPm.getPeerDependencyIssues)\n throw new Error('system package manager must implement `getPeerDependencyIssues()`');\n peerDependencyIssues = await systemPm?.getPeerDependencyIssues(rootDir, manifests, options);\n }\n this.logger.consoleSuccess();\n return peerDependencyIssues['.']?.intersections;\n }\n\n async getRegistries(): Promise<Registries> {\n const packageManager = this.getPackageManager();\n let registries;\n if (packageManager?.getRegistries && typeof packageManager?.getRegistries === 'function') {\n registries = await packageManager?.getRegistries();\n } else {\n const systemPm = this.getSystemPackageManager();\n if (!systemPm.getRegistries) throw new Error('system package manager must implement `getRegistries()`');\n registries = await systemPm.getRegistries();\n }\n\n const bitScope = registries.scopes.bit;\n\n const getDefaultBitRegistry = (): Registry => {\n const bitGlobalConfigRegistry = this.globalConfig.getSync(CFG_REGISTRY_URL_KEY);\n const bitRegistry = bitGlobalConfigRegistry || bitScope?.uri || BIT_DEV_REGISTRY;\n\n const { bitOriginalAuthType, bitAuthHeaderValue, bitOriginalAuthValue } = this.getBitAuthConfig(bitScope);\n\n const alwaysAuth = bitAuthHeaderValue !== undefined;\n const bitDefaultRegistry = new Registry(\n bitRegistry,\n alwaysAuth,\n bitAuthHeaderValue,\n bitOriginalAuthType,\n bitOriginalAuthValue\n );\n return bitDefaultRegistry;\n };\n\n const bitDefaultRegistry = getDefaultBitRegistry();\n\n const installFromBitDevRegistry = this.config.installFromBitDevRegistry ?? true;\n\n // Override default registry to use bit registry in case npmjs is the default - bit registry will proxy it\n // We check also NPM_REGISTRY.startsWith because the uri might not have the trailing / we have in NPM_REGISTRY\n if (\n installFromBitDevRegistry &&\n (!registries.defaultRegistry.uri ||\n registries.defaultRegistry.uri === NPM_REGISTRY ||\n NPM_REGISTRY.startsWith(registries.defaultRegistry.uri))\n ) {\n // TODO: this will not handle cases where you have token for private npm registries stored on npmjs\n // it should be handled by somehow in such case (default is npmjs and there is token for default) by sending the token of npmjs to the registry\n // (for example by setting some special header in the request)\n // then in the registry server it should be use it when proxies\n registries = registries.setDefaultRegistry(bitDefaultRegistry);\n }\n // Make sure @bit scope is register with alwaysAuth\n if (!bitScope || (bitScope && !bitScope.alwaysAuth)) {\n registries = registries.updateScopedRegistry('bit', bitDefaultRegistry);\n }\n\n registries = this.addAuthToScopedBitRegistries(registries, bitScope);\n return registries;\n }\n\n /**\n * This will mutate any registry which point to BIT_DEV_REGISTRY to have the auth config from the @bit scoped registry or from the user.token in bit's config\n */\n private addAuthToScopedBitRegistries(registries: Registries, bitScopeRegistry: Registry): Registries {\n const { bitOriginalAuthType, bitAuthHeaderValue, bitOriginalAuthValue } = this.getBitAuthConfig(bitScopeRegistry);\n const alwaysAuth = bitAuthHeaderValue !== undefined;\n let updatedRegistries = registries;\n Object.entries(registries.scopes).map(([name, registry]) => {\n if (!registry.authHeaderValue && BIT_DEV_REGISTRY.includes(registry.uri)) {\n const registryWithAuth = new Registry(\n registry.uri,\n alwaysAuth,\n bitAuthHeaderValue,\n bitOriginalAuthType,\n bitOriginalAuthValue\n );\n updatedRegistries = updatedRegistries.updateScopedRegistry(name, registryWithAuth);\n }\n return updatedRegistries;\n });\n return updatedRegistries;\n }\n\n private getBitAuthConfig(\n bitScopeRegistry: Registry\n ): Partial<{ bitOriginalAuthType: string; bitAuthHeaderValue: string; bitOriginalAuthValue: string }> {\n const bitGlobalConfigToken = this.globalConfig.getSync(CFG_USER_TOKEN_KEY);\n let bitAuthHeaderValue = bitScopeRegistry?.authHeaderValue;\n let bitOriginalAuthType = bitScopeRegistry?.originalAuthType;\n let bitOriginalAuthValue = bitScopeRegistry?.originalAuthValue;\n\n // In case there is no auth configuration in the npmrc, but there is token in bit config, take it from the config\n if ((!bitScopeRegistry || !bitScopeRegistry.authHeaderValue) && bitGlobalConfigToken) {\n bitOriginalAuthType = 'authToken';\n bitAuthHeaderValue = `Bearer ${bitGlobalConfigToken}`;\n bitOriginalAuthValue = bitGlobalConfigToken;\n }\n\n return {\n bitOriginalAuthType,\n bitAuthHeaderValue,\n bitOriginalAuthValue,\n };\n }\n\n get packageManagerName(): string {\n return this.config.packageManager;\n }\n\n addToRootPolicy(entries: WorkspacePolicyEntry[], options?: WorkspacePolicyAddEntryOptions): WorkspacePolicy {\n const workspacePolicy = this.getWorkspacePolicyFromConfig();\n entries.forEach((entry) => workspacePolicy.add(entry, options));\n this.updateConfigPolicy(workspacePolicy);\n return workspacePolicy;\n }\n\n removeFromRootPolicy(dependencyIds: string[]) {\n const workspacePolicy = this.getWorkspacePolicyFromConfig();\n const workspacePolicyUpdated = workspacePolicy.remove(dependencyIds);\n this.updateConfigPolicy(workspacePolicyUpdated);\n }\n\n private updateConfigPolicy(workspacePolicy: WorkspacePolicy) {\n const workspacePolicyObject = workspacePolicy.toConfigObject();\n this.config.policy = workspacePolicyObject;\n this.configAspect.setExtension(DependencyResolverAspect.id, this.config, {\n overrideExisting: true,\n ignoreVersion: true,\n });\n }\n\n async persistConfig(workspaceDir?: string) {\n return this.configAspect.workspaceConfig?.write({ dir: workspaceDir });\n }\n\n /**\n * register new dependencies policies\n */\n registerDependenciesPolicies(policy: VariantPolicyConfigObject): void {\n return this.policiesRegistry.register(policy);\n }\n\n /**\n * register new dependencies policies\n */\n registerRootPolicy(policy: WorkspacePolicy): void {\n return this.rootPolicyRegistry.register(policy);\n }\n\n // async getComponentEnvPolicyFromExtension(configuredExtensions: ExtensionDataList): Promise<EnvPolicy> {\n // const env = this.envs.calculateEnvFromExtensions(configuredExtensions);\n // const fromFile = await this.getEnvPolicyFromFile(env.id);\n // if (fromFile) return fromFile;\n // return this.getComponentEnvPolicyFromEnv(env.env);\n // }\n\n async getComponentEnvPolicyFromExtension(configuredExtensions: ExtensionDataList): Promise<EnvPolicy> {\n const envId = await this.envs.calculateEnvIdFromExtensions(configuredExtensions);\n if (this.envs.isCoreEnv(envId)) {\n const env = await this.envs.calculateEnvFromExtensions(configuredExtensions);\n return this.getComponentEnvPolicyFromEnv(env.env);\n }\n\n const fromFile = await this.getEnvPolicyFromFile(envId);\n if (fromFile) return fromFile;\n const env = await this.envs.calculateEnvFromExtensions(configuredExtensions);\n return this.getComponentEnvPolicyFromEnv(env.env);\n }\n\n async getEnvPolicyFromEnvId(id: ComponentID, legacyFiles?: SourceFile[]): Promise<EnvPolicy | undefined> {\n return this.getEnvPolicyFromEnvLegacyId(id._legacy, legacyFiles);\n }\n\n async getEnvPolicyFromEnvLegacyId(id: BitId, legacyFiles?: SourceFile[]): Promise<EnvPolicy | undefined> {\n const fromFile = await this.getEnvPolicyFromFile(id.toString(), legacyFiles);\n if (fromFile) return fromFile;\n const envDef = await this.envs.getEnvDefinitionByLegacyId(id);\n if (!envDef) return undefined;\n const env = envDef.env;\n return this.getComponentEnvPolicyFromEnv(env);\n }\n\n async getComponentEnvPolicy(component: Component): Promise<EnvPolicy> {\n // const envComponent = await this.envs.getEnvComponent(component);\n const envId = await this.envs.calculateEnvId(component);\n if (this.envs.isCoreEnv(envId.toStringWithoutVersion())) {\n const env = this.envs.getEnv(component).env;\n return this.getComponentEnvPolicyFromEnv(env);\n }\n const fromFile = await this.getEnvPolicyFromFile(envId.toString());\n if (fromFile) return fromFile;\n this.envsWithoutManifest.add(envId.toString());\n const env = this.envs.getEnv(component).env;\n return this.getComponentEnvPolicyFromEnv(env);\n }\n\n getEnvManifest(envComponent?: Component, legacyFiles?: SourceFile[]): EnvPolicy | undefined {\n const object = this.envs.getEnvManifest(envComponent, legacyFiles) as any;\n const policy = object?.policy;\n if (!policy) return undefined;\n const allPoliciesFromEnv = EnvPolicy.fromConfigObject(policy);\n return allPoliciesFromEnv;\n }\n\n private async getEnvPolicyFromFile(envId: string, legacyFiles?: SourceFile[]): Promise<EnvPolicy | undefined> {\n const isCoreEnv = this.envs.isCoreEnv(envId);\n if (isCoreEnv) return undefined;\n if (legacyFiles) {\n return this.getEnvManifest(undefined, legacyFiles);\n }\n const envComponent = await this.envs.getEnvComponentByEnvId(envId, envId);\n return this.getEnvManifest(envComponent);\n }\n\n async getComponentEnvPolicyFromEnv(env: DependenciesEnv): Promise<EnvPolicy> {\n if (env.getDependencies && typeof env.getDependencies === 'function') {\n const policiesFromEnvConfig = await env.getDependencies();\n if (policiesFromEnvConfig) {\n const allPoliciesFromEnv = EnvPolicy.fromConfigObject(policiesFromEnvConfig);\n return allPoliciesFromEnv;\n }\n }\n return EnvPolicy.getEmpty();\n }\n\n async getComponentEnvPolicyFromEnvDefinition(envDef: EnvDefinition): Promise<EnvPolicy> {\n const fromFile = await this.getEnvPolicyFromFile(envDef.id);\n if (fromFile) return fromFile;\n return this.getComponentEnvPolicyFromEnv(envDef.env);\n }\n\n /**\n *\n * dependencies that will bundled as part of the env template and will configured as externals for the component bundle\n * these dependencies will be available in the preview on the window.\n * these dependencies will have only one instance on the page.\n * for dev server these dependencies will be aliased.\n * TODO: this should probably moved to the preview aspect. the main issue is that is used for dev server which can't bring the preview aspect.\n * @param env\n */\n async getPreviewHostDependenciesFromEnv(env: DependenciesEnv): Promise<string[]> {\n let hostDeps: string[] = [];\n if (env.getAdditionalHostDependencies && typeof env.getAdditionalHostDependencies === 'function') {\n hostDeps = await env.getAdditionalHostDependencies();\n }\n return uniq(hostDeps);\n }\n\n /**\n * Merge the dependencies provided by:\n * 1. envs configured in the component - via dependencies method\n * 2. extensions that registered to the registerDependencyPolicy slot (and configured for the component)\n * 3. props defined by the user (they are the strongest one)\n * @param configuredExtensions\n */\n async mergeVariantPolicies(\n configuredExtensions: ExtensionDataList,\n id: BitId,\n legacyFiles?: SourceFile[]\n ): Promise<VariantPolicy> {\n let policiesFromSlots: VariantPolicy = VariantPolicy.getEmpty();\n let policiesFromConfig: VariantPolicy = VariantPolicy.getEmpty();\n const policiesFromEnv: VariantPolicy = await this.getComponentEnvPolicyFromExtension(configuredExtensions);\n const configuredIds = configuredExtensions.ids;\n const policiesTuples = this.policiesRegistry.toArray();\n configuredIds.forEach((extId) => {\n // TODO: change this way of search, once we have workspace as dep-resolver dependency\n // we can use something like:\n // const resolvedId = this.workspace.resolveComponentId(extId)\n // const currentPolicy = this.policiesRegistry.get(resolvedId.toString());\n // Only get props from configured extensions on this specific component\n const policyTupleToApply = policiesTuples.find(([policyRegistrar]) => {\n return policyRegistrar === extId || policyRegistrar.includes(extId);\n });\n\n if (policyTupleToApply && policyTupleToApply[1]) {\n const currentPolicy = VariantPolicy.fromConfigObject(policyTupleToApply[1], 'slots');\n policiesFromSlots = VariantPolicy.mergePolices([policiesFromSlots, currentPolicy]);\n }\n });\n const currentExtension = configuredExtensions.findExtension(DependencyResolverAspect.id);\n const currentConfig = currentExtension?.config as unknown as DependencyResolverVariantConfig;\n if (currentConfig && currentConfig.policy) {\n policiesFromConfig = VariantPolicy.fromConfigObject(currentConfig.policy, 'config');\n }\n const policiesFromEnvForItself =\n (await this.getPoliciesFromEnvForItself(id, legacyFiles)) ?? VariantPolicy.getEmpty();\n\n const result = VariantPolicy.mergePolices([\n policiesFromEnv,\n policiesFromEnvForItself,\n policiesFromSlots,\n policiesFromConfig,\n ]);\n return result;\n }\n\n /**\n * These are the policies that the env itself defines for itself.\n * So policies installed only locally for the env, not to any components that use the env.\n */\n async getPoliciesFromEnvForItself(id: BitId, legacyFiles?: SourceFile[]): Promise<VariantPolicy | undefined> {\n const envPolicy = await this.getEnvPolicyFromEnvLegacyId(id, legacyFiles);\n return envPolicy?.selfPolicy;\n }\n\n updateDepsOnLegacyTag(component: LegacyComponent, idTransformer: onTagIdTransformer): LegacyComponent {\n const entry = component.extensions.findCoreExtension(DependencyResolverAspect.id);\n if (!entry) {\n return component;\n }\n const dependencies = get(entry, ['data', 'dependencies'], []);\n dependencies.forEach((dep) => {\n if (dep.__type === COMPONENT_DEP_TYPE) {\n const depId = new BitId(dep.componentId);\n const newDepId = idTransformer(depId);\n dep.componentId = (newDepId || depId).serialize();\n dep.id = (newDepId || depId).toString();\n dep.version = (newDepId || depId).version;\n }\n });\n return component;\n }\n\n updateDepsOnLegacyExport(version: VersionModel, idTransformer: OnExportIdTransformer): VersionModel {\n const entry = version.extensions.findCoreExtension(DependencyResolverAspect.id);\n if (!entry) {\n return version;\n }\n const dependencies = get(entry, ['data', 'dependencies'], []);\n dependencies.forEach((dep) => {\n if (dep.__type === COMPONENT_DEP_TYPE) {\n const depId = new BitId(dep.componentId);\n const newDepId = idTransformer(depId);\n dep.componentId = (newDepId || depId).serialize();\n dep.id = (newDepId || depId).toString();\n }\n });\n return version;\n }\n\n /**\n * Register a new dependency detector. Detectors allow to extend Bit's dependency detection\n * mechanism to support new file extensions and types.\n */\n registerDetector(detector: DependencyDetector) {\n DetectorHook.hooks.push(detector);\n return this;\n }\n\n /**\n * This function called on component load in order to calculate the custom\n * dependency detectors from an env, which is got by extension data list.\n * Do not use this function for other purposes.\n */\n async calcComponentEnvDepDetectors(extensions: ExtensionDataList) {\n const envDef = await this.envs.calculateEnvFromExtensions(extensions);\n const depEnv = envDef.env as DependenciesEnv;\n if (typeof depEnv?.getDepDetectors === 'function') {\n return depEnv.getDepDetectors();\n }\n return null;\n }\n\n /**\n * This function registered to the onLoadRequireableExtensionSlot of the aspect-loader\n * Update the aspect / manifest deps versions in the runtimes (recursively)\n * This function mutate the manifest directly as otherwise it becomes very complicated\n * TODO: think if this funciton should be here as it about dependencies, or on the aspect loader\n * (as it's aware of the internal structure of aspects)\n * Maybe only register the dep resolution part to the aspect loader\n * at the moment it here for simplify the process\n * @param requireableExtension\n * @param manifest\n * @returns\n */\n async onLoadRequireableExtensionSubscriber(\n requireableExtension: RequireableComponent,\n manifest: ExtensionManifest | Aspect\n ): Promise<ExtensionManifest | Aspect> {\n const parentComponent = requireableExtension.component;\n return this.resolveRequireableExtensionManifestDepsVersionsRecursively(parentComponent, manifest);\n }\n\n /**\n * Update the aspect / manifest deps versions in the runtimes (recursively)\n * @param parentComponent\n * @param manifest\n */\n private async resolveRequireableExtensionManifestDepsVersionsRecursively(\n // Allow getting here string for lazy load the component\n // we only want to load the component in case there are deps to resolve\n parentComponent: Component | string,\n manifest: ExtensionManifest | Aspect\n // TODO: add visited = new Map() for performence improve\n ): Promise<ExtensionManifest | Aspect> {\n // Not resolve it immediately for performance sake\n let resolvedParentComponent: Component | undefined;\n let resolvedParentDeps: DependencyList;\n const updateDirectDepsVersions = (deps: Array<ExtensionManifest | Aspect>): Promise<void[]> => {\n return mapSeries(deps, async (dep) => {\n // Nothing to update (this shouldn't happen ever)\n if (!dep.id) return;\n // In case of core aspect, do not update the version, as it's loaded to harmony without version\n if (this.aspectLoader.isCoreAspect(dep.id)) return;\n // Lazily get the parent component\n if (typeof parentComponent === 'string') {\n const parentComponentId = await this.componentAspect.getHost().resolveComponentId(parentComponent);\n resolvedParentComponent = await this.componentAspect.getHost().get(parentComponentId);\n } else {\n // it's of type component;\n resolvedParentComponent = parentComponent;\n }\n if (!resolvedParentComponent) {\n this.logger.error(\n `could not resolve the component ${parentComponent} during manifest deps resolution. it shouldn't happen`\n );\n return;\n }\n // Lazily get the dependencies\n resolvedParentDeps = resolvedParentDeps || (await this.getDependencies(resolvedParentComponent));\n const resolvedDep = resolvedParentDeps.findDependency(dep.id, { ignoreVersion: true });\n dep.id = resolvedDep?.id ?? dep.id;\n await this.resolveRequireableExtensionManifestDepsVersionsRecursively(dep.id, dep);\n });\n };\n if (manifest.dependencies) {\n manifest.dependencies = manifest.dependencies.map((dep) => this.aspectLoader.cloneManifest(dep));\n await updateDirectDepsVersions(manifest.dependencies);\n }\n // @ts-ignore\n if (manifest?._runtimes) {\n // @ts-ignore\n await mapSeries(manifest?._runtimes, async (runtime: RuntimeManifest) => {\n if (runtime.dependencies) {\n runtime.dependencies = runtime.dependencies.map((dep) => this.aspectLoader.cloneManifest(dep));\n await updateDirectDepsVersions(runtime.dependencies);\n }\n });\n }\n\n return manifest;\n }\n\n /**\n * Return a list of outdated policy dependencies.\n */\n async getOutdatedPkgsFromPolicies({\n rootDir,\n variantPoliciesByPatterns,\n componentPolicies,\n components,\n patterns,\n forceVersionBump,\n }: {\n rootDir: string;\n variantPoliciesByPatterns: Record<string, VariantPolicyConfigObject>;\n componentPolicies: Array<{ componentId: ComponentID; policy: any }>;\n components: Component[];\n patterns?: string[];\n forceVersionBump?: 'major' | 'minor' | 'patch';\n }): Promise<MergedOutdatedPkg[]> {\n const localComponentPkgNames = new Set(components.map((component) => this.getPackageName(component)));\n const componentModelVersions: ComponentModelVersion[] = (\n await Promise.all(\n components.map(async (component) => {\n const depList = await this.getDependencies(component);\n return depList\n .filter(\n (dep) =>\n typeof dep.getPackageName === 'function' &&\n // If the dependency is referenced not via a valid range it means that it wasn't yet published to the registry\n semver.validRange(dep.version) != null &&\n !dep['isExtension'] && // eslint-disable-line\n dep.lifecycle !== 'peer' &&\n !localComponentPkgNames.has(dep.getPackageName())\n )\n .map((dep) => ({\n name: dep.getPackageName!(), // eslint-disable-line\n version: dep.version,\n isAuto: dep.source === 'auto',\n componentId: component.id,\n lifecycleType: dep.lifecycle,\n }));\n })\n )\n ).flat();\n let allPkgs = getAllPolicyPkgs({\n rootPolicy: this.getWorkspacePolicyFromConfig(),\n variantPoliciesByPatterns,\n componentPolicies,\n componentModelVersions,\n });\n if (patterns?.length) {\n const selectedPkgNames = new Set(\n multimatch(\n allPkgs.map(({ name }) => name),\n patterns\n )\n );\n allPkgs = allPkgs.filter(({ name }) => selectedPkgNames.has(name));\n }\n const outdatedPkgs = await this.getOutdatedPkgs({ rootDir, forceVersionBump }, allPkgs);\n return mergeOutdatedPkgs(outdatedPkgs);\n }\n\n /**\n * Accepts a list of package dependency policies and returns a list of outdated policies extended with their \"latestRange\"\n */\n async getOutdatedPkgs<T>(\n {\n rootDir,\n forceVersionBump,\n }: {\n rootDir: string;\n forceVersionBump?: 'major' | 'minor' | 'patch';\n },\n pkgs: Array<\n { name: string; currentRange: string; source: 'variants' | 'component' | 'rootPolicy' | 'component-model' } & T\n >\n ): Promise<Array<{ name: string; currentRange: string; latestRange: string } & T>> {\n this.logger.setStatusLine('checking the latest versions of dependencies');\n const resolver = await this.getVersionResolver();\n const tryResolve = async (spec: string) => {\n try {\n return (\n await resolver.resolveRemoteVersion(spec, {\n rootDir,\n })\n ).version;\n } catch {\n // If latest cannot be found for the package, then just ignore it\n return null;\n }\n };\n const outdatedPkgs = compact(\n await Promise.all(\n pkgs.map(async (pkg) => {\n const latestVersion = await tryResolve(`${pkg.name}@${newVersionRange(pkg.currentRange, forceVersionBump)}`);\n if (!latestVersion) return null;\n const currentVersion = semver.valid(pkg.currentRange.replace(/[\\^~]/, ''));\n // If the current version is newer than the latest, then no need to update the dependency\n if (currentVersion && (semver.gt(currentVersion, latestVersion) || currentVersion === latestVersion))\n return null;\n return {\n ...pkg,\n latestRange:\n pkg.source === 'component-model' && this.config.savePrefix != null\n ? `${this.config.savePrefix}${latestVersion}`\n : repeatPrefix(pkg.currentRange, latestVersion),\n } as any;\n })\n )\n );\n this.logger.consoleSuccess();\n return outdatedPkgs;\n }\n\n /**\n * Update the specified packages to their latest versions in all policies;\n * root polcies, variant pocilicies, and component configuration policies (component.json).\n */\n applyUpdates(\n outdatedPkgs: Array<Omit<OutdatedPkg, 'currentRange'>>,\n options: {\n variantPoliciesByPatterns: Record<string, any>;\n }\n ): {\n updatedVariants: string[];\n updatedComponents: UpdatedComponent[];\n } {\n const { updatedVariants, updatedComponents, updatedWorkspacePolicyEntries } = applyUpdates(outdatedPkgs, {\n variantPoliciesByPatterns: options.variantPoliciesByPatterns,\n });\n this.addToRootPolicy(updatedWorkspacePolicyEntries, {\n updateExisting: true,\n });\n return {\n updatedVariants,\n updatedComponents,\n };\n }\n\n static runtime = MainRuntime;\n static dependencies = [\n EnvsAspect,\n LoggerAspect,\n ConfigAspect,\n AspectLoaderAspect,\n ComponentAspect,\n GraphqlAspect,\n GlobalConfigAspect,\n ];\n\n static slots = [\n Slot.withType<WorkspacePolicy>(),\n Slot.withType<VariantPolicyConfigObject>(),\n Slot.withType<PackageManager>(),\n Slot.withType<RegExp>(),\n Slot.withType<DependencyFactory>(),\n Slot.withType<PreInstallSubscriberList>(),\n Slot.withType<PostInstallSubscriberList>(),\n Slot.withType<DependencyDetector>(),\n ];\n\n static defaultConfig: DependencyResolverWorkspaceConfig &\n Required<Pick<DependencyResolverWorkspaceConfig, 'linkCoreAspects'>> = {\n /**\n * default package manager.\n */\n packageManager: 'teambit.dependencies/pnpm',\n policy: {},\n linkCoreAspects: true,\n };\n\n static async provider(\n [envs, loggerExt, configMain, aspectLoader, componentAspect, graphql, globalConfig]: [\n EnvsMain,\n LoggerMain,\n ConfigMain,\n AspectLoaderMain,\n ComponentMain,\n GraphqlMain,\n GlobalConfigMain\n ],\n config: DependencyResolverWorkspaceConfig,\n [\n rootPolicyRegistry,\n policiesRegistry,\n packageManagerSlot,\n dependencyFactorySlot,\n preInstallSlot,\n postInstallSlot,\n ]: [\n RootPolicyRegistry,\n PoliciesRegistry,\n PackageManagerSlot,\n DependencyFactorySlot,\n PreInstallSlot,\n PostInstallSlot\n ]\n ) {\n // const packageManager = new PackageManagerLegacy(config.packageManager, logger);\n const logger = loggerExt.createLogger(DependencyResolverAspect.id);\n const dependencyResolver = new DependencyResolverMain(\n config,\n rootPolicyRegistry,\n policiesRegistry,\n envs,\n logger,\n configMain,\n aspectLoader,\n globalConfig,\n componentAspect,\n packageManagerSlot,\n dependencyFactorySlot,\n preInstallSlot,\n postInstallSlot\n );\n\n componentAspect.registerShowFragments([\n new DependenciesFragment(dependencyResolver),\n new DevDependenciesFragment(dependencyResolver),\n new PeerDependenciesFragment(dependencyResolver),\n ]);\n // TODO: solve this generics issue and remove the ts-ignore\n // @ts-ignore\n dependencyResolver.registerDependencyFactories([new ComponentDependencyFactory(componentAspect)]);\n\n DependencyResolver.getDepResolverAspectName = () => DependencyResolverAspect.id;\n\n LegacyComponent.registerOnComponentOverridesLoading(\n DependencyResolverAspect.id,\n async (configuredExtensions: ExtensionDataList, id: BitId, legacyFiles: SourceFile[]) => {\n const policy = await dependencyResolver.mergeVariantPolicies(configuredExtensions, id, legacyFiles);\n return policy.toLegacyDepsOverrides();\n }\n );\n DependencyResolver.registerWorkspacePolicyGetter(() => {\n const workspacePolicy = dependencyResolver.getWorkspacePolicy();\n return workspacePolicy.toManifest();\n });\n DependencyResolver.registerEnvDetectorGetter(async (extensions: ExtensionDataList) => {\n return dependencyResolver.calcComponentEnvDepDetectors(extensions);\n });\n DependencyResolver.registerHarmonyEnvPeersPolicyForEnvItselfGetter(async (id: BitId, files: SourceFile[]) => {\n const envPolicy = await dependencyResolver.getEnvPolicyFromEnvLegacyId(id, files);\n if (!envPolicy) return undefined;\n return envPolicy.selfPolicy.toVersionManifest();\n });\n if (aspectLoader)\n aspectLoader.registerOnLoadRequireableExtensionSlot(\n dependencyResolver.onLoadRequireableExtensionSubscriber.bind(dependencyResolver)\n );\n\n graphql.register(dependencyResolverSchema(dependencyResolver));\n envs.registerService(new DependenciesService());\n\n return dependencyResolver;\n }\n\n getEmptyDepsObject(): ManifestDependenciesObject {\n return {\n dependencies: {},\n devDependencies: {},\n peerDependencies: {},\n };\n }\n\n /**\n * Returns a list of target locations where that given component was hard linked to.\n *\n * @param rootDir - The root directory of the workspace\n * @param componentDir - Relative path to the component's directory\n * @param packageName - The injected component's packageName\n */\n async getInjectedDirs(rootDir: string, componentDir: string, packageName: string): Promise<string[]> {\n const packageManager = this.getPackageManager();\n if (typeof packageManager?.getInjectedDirs === 'function') {\n return packageManager.getInjectedDirs(rootDir, componentDir, packageName);\n }\n return [];\n }\n\n getWorkspaceDepsOfBitRoots(manifests: ProjectManifest[]): Record<string, string> {\n const packageManager = this.getPackageManager();\n if (!packageManager) {\n throw new PackageManagerNotFound(this.config.packageManager);\n }\n return packageManager.getWorkspaceDepsOfBitRoots(manifests);\n }\n}\n\nDependencyResolverAspect.addRuntime(DependencyResolverMain);\n\nfunction repeatPrefix(originalSpec: string, newVersion: string): string {\n switch (originalSpec[0]) {\n case '~':\n case '^':\n return `${originalSpec[0]}${newVersion}`;\n default:\n return newVersion;\n }\n}\n\nfunction newVersionRange(currentRange: string, forceVersionBump?: 'major' | 'minor' | 'patch') {\n if (forceVersionBump == null || forceVersionBump === 'major') return 'latest';\n const currentVersion = semver.valid(currentRange.replace(/[\\^~]/, ''));\n if (!currentVersion) return null;\n const [major, minor] = currentVersion.split('.');\n switch (forceVersionBump) {\n case 'patch':\n return `>=${currentVersion} <${major}.${+minor + 1}.0`;\n case 'minor':\n return `>=${currentVersion} <${+major + 1}.0.0`;\n default:\n return null;\n }\n}\n\nexport interface MergedOutdatedPkg extends OutdatedPkg {\n dependentComponents?: ComponentID[];\n hasDifferentRanges?: boolean;\n}\n\nfunction mergeOutdatedPkgs(outdatedPkgs: OutdatedPkg[]): MergedOutdatedPkg[] {\n const mergedOutdatedPkgs: Record<\n string,\n MergedOutdatedPkg & Required<Pick<MergedOutdatedPkg, 'dependentComponents'>>\n > = {};\n const outdatedPkgsNotFromComponentModel: OutdatedPkg[] = [];\n for (const outdatedPkg of outdatedPkgs) {\n if (outdatedPkg.source === 'component-model' && outdatedPkg.componentId) {\n if (!mergedOutdatedPkgs[outdatedPkg.name]) {\n mergedOutdatedPkgs[outdatedPkg.name] = {\n ...omit(outdatedPkg, ['componentId']),\n source: 'rootPolicy',\n dependentComponents: [outdatedPkg.componentId],\n };\n } else {\n if (mergedOutdatedPkgs[outdatedPkg.name].currentRange !== outdatedPkg.currentRange) {\n mergedOutdatedPkgs[outdatedPkg.name].hasDifferentRanges = true;\n }\n mergedOutdatedPkgs[outdatedPkg.name].currentRange = tryPickLowestRange(\n mergedOutdatedPkgs[outdatedPkg.name].currentRange,\n outdatedPkg.currentRange\n );\n mergedOutdatedPkgs[outdatedPkg.name].dependentComponents.push(outdatedPkg.componentId);\n if (outdatedPkg.targetField === 'dependencies') {\n mergedOutdatedPkgs[outdatedPkg.name].targetField = outdatedPkg.targetField;\n }\n }\n } else {\n outdatedPkgsNotFromComponentModel.push(outdatedPkg);\n }\n }\n return [...Object.values(mergedOutdatedPkgs), ...outdatedPkgsNotFromComponentModel];\n}\n\nfunction tryPickLowestRange(range1: string, range2: string) {\n if (range1 === '*' || range2 === '*') return '*';\n try {\n return semver.lt(rangeToVersion(range1), rangeToVersion(range2)) ? range1 : range2;\n } catch {\n return '*';\n }\n}\n\nfunction rangeToVersion(range: string) {\n if (range.startsWith('~') || range.startsWith('^')) {\n return range.substring(1);\n }\n return range;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_multimatch","data","_interopRequireDefault","require","_pMapSeries","_cli","_bit","_bitRoots","_component","_path","_lodash","_config","_envs","_harmony","_graphql","_logger","_constants","_dependencyResolver","_componentIdToPackageName","_detectorHook","_http","_component2","_fsExtra","_legacyBitId","_network","_semver","_interopRequireWildcard","_aspectLoader","_globalConfig","_registry","_applyUpdates","_constants2","_dependencyInstaller","_dependencyResolver2","_dependencyVersionResolver","_dependencyLinker","_getAllPolicyPkgs","_exceptions","_manifest","_policy","_dependencies","_showFragments","_dependencyResolver3","_dependencies2","_envPolicy","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","TypeError","Number","BIT_DEV_REGISTRY","exports","BIT_CLOUD_REGISTRY","getCloudDomain","NPM_REGISTRY","defaultLinkingOptions","linkTeambitBit","linkCoreAspects","defaultCreateFromComponentsOptions","filterComponentsFromManifests","createManifestForComponentsWithoutDependencies","DependencyResolverMain","constructor","config","rootPolicyRegistry","policiesRegistry","envs","logger","configAspect","aspectLoader","globalConfig","componentAspect","packageManagerSlot","dependencyFactorySlot","preInstallSlot","postInstallSlot","Set","supportsDedupingOnExistingRoot","_packageManager$suppo","packageManager","getPackageManager","isolatedCapsules","hasRootComponents","Boolean","rootComponents","getSync","CFG_ISOLATED_SCOPE_CAPSULES","defaultVal","hasHarmonyInRootPolicy","rootPolicy","getWorkspacePolicyFromConfig","entries","some","dependencyId","nodeLinker","packageManagerName","pmName","defaultConfig","registerPackageManager","register","registerDependencyFactories","factories","registerPreInstallSubscribers","subscribers","registerPostInstallSubscribers","getSavePrefix","savePrefix","getVersionWithSavePrefix","version","overridePrefix","wantedRange","includes","prefix","versionWithPrefix","semver","validRange","InvalidVersionWithPrefix","getPolicy","component","entry","state","aspects","DependencyResolverAspect","id","VariantPolicy","getEmpty","serializedPolicy","parse","extractDepsFromLegacy","policy","componentPolicy","legacyComponent","_consumer","listFactory","getDependencyListFactory","dependencyList","fromLegacyComponent","dep","found","find","hidden","values","flat","factoriesMap","reduce","acc","factory","type","DependencyListFactory","getDependencies","includeHidden","_entry$data","DependencyList","fromArray","serializedDependencies","dependencies","depList","getDependenciesFromSerializedDependencies","filterHidden","getComponentDependencies","deps","fromSerializedDependencies","getWorkspacePolicy","policyFromConfig","externalPolicies","toArray","map","mergeWorkspacePolices","WorkspacePolicyFactory","fromConfigObject","getWorkspacePolicyFromConfigObject","getWorkspacePolicyFromPackageJson","packageJson","fromPackageJson","polices","WorkspacePolicy","mergePolices","getWorkspaceManifest","name","ROOT_NAME","SemVer","rootDir","components","options","context","statusMessage","inCapsule","setStatusLine","concreteOpts","workspaceManifestFactory","WorkspaceManifestFactory","createFromComponents","consoleSuccess","getPackageName","_this$getDepResolverD","getDepResolverData","packageName","calcPackageName","_component$state$aspe","componentIdToPackageName","getRuntimeModulePath","modulePath","getModulePath","pkgName","selfRootDir","getRelativeRootComponentDir","toString","fs","pathExistsSync","innerDir","join","envId","getEnvId","dirInEnvRoot","relativePath","getInstaller","cacheRootDir","cacheRootDirectory","CFG_PACKAGE_MANAGER_CACHE","PackageManagerNotFound","debug","ensureDirSync","preInstallSubscribers","getPreInstallSubscribers","postInstallSubscribers","getPostInstallSubscribers","DependencyInstaller","packageImportMethod","sideEffectsCache","nodeVersion","engineStrict","peerDependencyRules","neverBuiltDependencies","preferOffline","installingContext","getLinker","linkingOptions","assign","DependencyLinker","linkingContext","getPackageManagerName","getVersionResolver","networkConcurrency","getNetworkConfig","DependencyVersionResolver","getCompIdsThatShouldNotBeInPolicy","getAllCoreAspectsIds","getSystemPackageManager","defaultPm","Error","getProxyConfig","proxyConfigFromDepResolverConfig","getProxyConfigFromDepResolverConfig","httpProxy","httpsProxy","proxyConfigFromPackageManager","getProxyConfigFromPackageManager","proxyConfigFromGlobalConfig","getProxyConfigFromGlobalConfig","proxy","noProxy","networkConfig","getNetworkConfigFromGlobalConfig","getNetworkConfigFromPackageManager","getNetworkConfigFromDepResolverConfig","JSON","stringify","globalNetworkConfig","Http","ca","cafile","readCAFileSync","pick","strictSsl","strictSSL","toLowerCase","networkConfigFromPackageManager","systemPm","getMissingPeerDependencies","componentDirectoryMap","_peerDependencyIssues","peerDependencyIssues","installer","manifests","getComponentManifests","getPeerDependencyIssues","intersections","getRegistries","registries","bitScope","scopes","bit","getDefaultBitRegistry","bitGlobalConfigRegistry","CFG_REGISTRY_URL_KEY","bitRegistry","uri","bitOriginalAuthType","bitAuthHeaderValue","bitOriginalAuthValue","getBitAuthConfig","alwaysAuth","bitDefaultRegistry","Registry","installFromBitDevRegistry","defaultRegistry","startsWith","setDefaultRegistry","updateScopedRegistry","addAuthToScopedBitRegistries","bitScopeRegistry","updatedRegistries","registry","authHeaderValue","registryWithAuth","bitGlobalConfigToken","CFG_USER_TOKEN_KEY","originalAuthType","originalAuthValue","addToRootPolicy","workspacePolicy","add","updateConfigPolicy","removeFromRootPolicy","dependencyIds","workspacePolicyUpdated","remove","workspacePolicyObject","toConfigObject","setExtension","overrideExisting","ignoreVersion","persistConfig","workspaceDir","_this$configAspect$wo","workspaceConfig","write","dir","registerDependenciesPolicies","registerRootPolicy","getComponentEnvPolicyFromExtension","configuredExtensions","calculateEnvIdFromExtensions","isCoreEnv","env","calculateEnvFromExtensions","getComponentEnvPolicyFromEnv","fromFile","getEnvPolicyFromFile","getEnvPolicyFromEnvId","legacyFiles","getEnvPolicyFromEnvLegacyId","_legacy","envDef","getEnvDefinitionByLegacyId","getComponentEnvPolicy","calculateEnvId","toStringWithoutVersion","getEnv","envsWithoutManifest","getEnvManifest","envComponent","allPoliciesFromEnv","EnvPolicy","getEnvComponentByEnvId","policiesFromEnvConfig","getComponentEnvPolicyFromEnvDefinition","getPreviewHostDependenciesFromEnv","hostDeps","getAdditionalHostDependencies","uniq","mergeVariantPolicies","policiesFromSlots","policiesFromConfig","policiesFromEnv","configuredIds","ids","policiesTuples","extId","policyTupleToApply","policyRegistrar","currentPolicy","currentExtension","findExtension","currentConfig","policiesFromEnvForItself","getPoliciesFromEnvForItself","result","envPolicy","selfPolicy","updateDepsOnLegacyTag","idTransformer","extensions","findCoreExtension","__type","COMPONENT_DEP_TYPE","depId","BitId","componentId","newDepId","serialize","updateDepsOnLegacyExport","registerDetector","detector","DetectorHook","hooks","calcComponentEnvDepDetectors","depEnv","getDepDetectors","onLoadRequireableExtensionSubscriber","requireableExtension","manifest","parentComponent","resolveRequireableExtensionManifestDepsVersionsRecursively","resolvedParentComponent","resolvedParentDeps","updateDirectDepsVersions","mapSeries","isCoreAspect","parentComponentId","getHost","resolveComponentId","error","resolvedDep","findDependency","cloneManifest","_runtimes","runtime","getOutdatedPkgsFromPolicies","variantPoliciesByPatterns","componentPolicies","patterns","forceVersionBump","localComponentPkgNames","componentModelVersions","Promise","all","lifecycle","isAuto","lifecycleType","allPkgs","getAllPolicyPkgs","selectedPkgNames","multimatch","outdatedPkgs","getOutdatedPkgs","mergeOutdatedPkgs","pkgs","resolver","tryResolve","spec","resolveRemoteVersion","compact","pkg","latestVersion","newVersionRange","currentRange","currentVersion","valid","replace","gt","latestRange","repeatPrefix","applyUpdates","updatedVariants","updatedComponents","updatedWorkspacePolicyEntries","updateExisting","provider","loggerExt","configMain","graphql","createLogger","dependencyResolver","registerShowFragments","DependenciesFragment","DevDependenciesFragment","PeerDependenciesFragment","ComponentDependencyFactory","DependencyResolver","getDepResolverAspectName","LegacyComponent","registerOnComponentOverridesLoading","toLegacyDepsOverrides","registerWorkspacePolicyGetter","toManifest","registerEnvDetectorGetter","registerHarmonyEnvPeersPolicyForEnvItselfGetter","files","toVersionManifest","registerOnLoadRequireableExtensionSlot","bind","dependencyResolverSchema","registerService","DependenciesService","getEmptyDepsObject","devDependencies","peerDependencies","getInjectedDirs","componentDir","getWorkspaceDepsOfBitRoots","MainRuntime","EnvsAspect","LoggerAspect","ConfigAspect","AspectLoaderAspect","ComponentAspect","GraphqlAspect","GlobalConfigAspect","Slot","withType","addRuntime","originalSpec","newVersion","major","minor","split","mergedOutdatedPkgs","outdatedPkgsNotFromComponentModel","outdatedPkg","omit","dependentComponents","hasDifferentRanges","tryPickLowestRange","targetField","range1","range2","lt","rangeToVersion","range","substring"],"sources":["dependency-resolver.main.runtime.ts"],"sourcesContent":["import multimatch from 'multimatch';\nimport mapSeries from 'p-map-series';\nimport { MainRuntime } from '@teambit/cli';\nimport { getAllCoreAspectsIds } from '@teambit/bit';\nimport { getRelativeRootComponentDir } from '@teambit/bit-roots';\nimport ComponentAspect, { Component, ComponentMap, ComponentMain, IComponent, ComponentID } from '@teambit/component';\nimport type { ConfigMain } from '@teambit/config';\nimport { join } from 'path';\nimport { compact, get, pick, uniq, omit } from 'lodash';\nimport { ConfigAspect } from '@teambit/config';\nimport { DependenciesEnv, EnvDefinition, EnvsAspect, EnvsMain } from '@teambit/envs';\nimport { Slot, SlotRegistry, ExtensionManifest, Aspect, RuntimeManifest } from '@teambit/harmony';\nimport { RequireableComponent } from '@teambit/harmony.modules.requireable-component';\nimport type { LoggerMain } from '@teambit/logger';\nimport { GraphqlAspect, GraphqlMain } from '@teambit/graphql';\nimport { Logger, LoggerAspect } from '@teambit/logger';\nimport {\n CFG_PACKAGE_MANAGER_CACHE,\n CFG_REGISTRY_URL_KEY,\n CFG_USER_TOKEN_KEY,\n CFG_ISOLATED_SCOPE_CAPSULES,\n getCloudDomain,\n} from '@teambit/legacy/dist/constants';\n// TODO: it's weird we take it from here.. think about it../workspace/utils\nimport { DependencyResolver } from '@teambit/legacy/dist/consumer/component/dependencies/dependency-resolver';\nimport { ExtensionDataList } from '@teambit/legacy/dist/consumer/config/extension-data';\nimport componentIdToPackageName from '@teambit/legacy/dist/utils/bit/component-id-to-package-name';\nimport { DetectorHook } from '@teambit/legacy/dist/consumer/component/dependencies/files-dependency-builder/detector-hook';\nimport { Http, ProxyConfig, NetworkConfig } from '@teambit/legacy/dist/scope/network/http';\nimport { onTagIdTransformer } from '@teambit/snapping';\nimport { Version as VersionModel } from '@teambit/legacy/dist/scope/models';\nimport LegacyComponent from '@teambit/legacy/dist/consumer/component';\nimport fs from 'fs-extra';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport { readCAFileSync } from '@pnpm/network.ca-file';\nimport { SourceFile } from '@teambit/legacy/dist/consumer/component/sources';\nimport { PeerDependencyRules, ProjectManifest } from '@pnpm/types';\nimport semver, { SemVer } from 'semver';\nimport AspectLoaderAspect, { AspectLoaderMain } from '@teambit/aspect-loader';\nimport GlobalConfigAspect, { GlobalConfigMain } from '@teambit/global-config';\nimport { Registries, Registry } from './registry';\nimport { applyUpdates, UpdatedComponent } from './apply-updates';\nimport { ROOT_NAME } from './dependencies/constants';\nimport {\n DependencyInstaller,\n PreInstallSubscriberList,\n PostInstallSubscriberList,\n DepInstallerContext,\n} from './dependency-installer';\nimport { DependencyResolverAspect } from './dependency-resolver.aspect';\nimport { DependencyVersionResolver } from './dependency-version-resolver';\nimport { DepLinkerContext, DependencyLinker, LinkingOptions } from './dependency-linker';\nimport { ComponentModelVersion, getAllPolicyPkgs, OutdatedPkg } from './get-all-policy-pkgs';\nimport { InvalidVersionWithPrefix, PackageManagerNotFound } from './exceptions';\nimport {\n CreateFromComponentsOptions,\n WorkspaceManifest,\n WorkspaceManifestFactory,\n ManifestDependenciesObject,\n} from './manifest';\nimport {\n WorkspacePolicyConfigObject,\n VariantPolicyConfigObject,\n WorkspacePolicy,\n WorkspacePolicyFactory,\n VariantPolicy,\n WorkspacePolicyAddEntryOptions,\n WorkspacePolicyEntry,\n SerializedVariantPolicy,\n} from './policy';\nimport {\n PackageImportMethod,\n PackageManager,\n PeerDependencyIssuesByProjects,\n PackageManagerGetPeerDependencyIssuesOptions,\n} from './package-manager';\n\nimport {\n SerializedDependency,\n DependencyListFactory,\n DependencyFactory,\n ComponentDependencyFactory,\n COMPONENT_DEP_TYPE,\n DependencyList,\n ComponentDependency,\n} from './dependencies';\nimport { DependenciesFragment, DevDependenciesFragment, PeerDependenciesFragment } from './show-fragments';\nimport { dependencyResolverSchema } from './dependency-resolver.graphql';\nimport { DependencyDetector } from './dependency-detector';\nimport { DependenciesService } from './dependencies.service';\nimport { EnvPolicy } from './policy/env-policy';\n\n/**\n * @deprecated use BIT_CLOUD_REGISTRY instead\n */\nexport const BIT_DEV_REGISTRY = 'https://node.bit.dev/';\nexport const BIT_CLOUD_REGISTRY = `https://node.${getCloudDomain()}/`;\nexport const NPM_REGISTRY = 'https://registry.npmjs.org/';\n\nexport { ProxyConfig, NetworkConfig } from '@teambit/legacy/dist/scope/network/http';\n\nexport type NodeLinker = 'hoisted' | 'isolated';\n\nexport interface DependencyResolverComponentData {\n packageName: string;\n policy: SerializedVariantPolicy;\n dependencies: SerializedDependency;\n}\n\nexport interface DependencyResolverWorkspaceConfig {\n policy: WorkspacePolicyConfigObject;\n /**\n * choose the package manager for Bit to use. you can choose between 'npm', 'yarn', 'pnpm'\n * and 'librarian'. our recommendation is use 'librarian' which reduces package duplicates\n * and totally removes the need of a 'node_modules' directory in your project.\n */\n packageManager: string;\n\n /**\n * A proxy server for out going network requests by the package manager\n * Used for both http and https requests (unless the httpsProxy is defined)\n */\n proxy?: string;\n\n /**\n * A proxy server for outgoing https requests by the package manager (fallback to proxy server if not defined)\n * Use this in case you want different proxy for http and https requests.\n */\n httpsProxy?: string;\n\n /**\n * A path to a file containing one or multiple Certificate Authority signing certificates.\n * allows for multiple CA's, as well as for the CA information to be stored in a file on disk.\n */\n ca?: string;\n\n /**\n * Whether or not to do SSL key validation when making requests to the registry via https\n */\n strictSsl?: string;\n\n /**\n * A client certificate to pass when accessing the registry. Values should be in PEM format (Windows calls it \"Base-64 encoded X.509 (.CER)\") with newlines replaced by the string \"\\n\". For example:\n * cert=\"-----BEGIN CERTIFICATE-----\\nXXXX\\nXXXX\\n-----END CERTIFICATE-----\"\n * It is not the path to a certificate file (and there is no \"certfile\" option).\n */\n cert?: string;\n\n /**\n * A client key to pass when accessing the registry. Values should be in PEM format with newlines replaced by the string \"\\n\". For example:\n * key=\"-----BEGIN PRIVATE KEY-----\\nXXXX\\nXXXX\\n-----END PRIVATE KEY-----\"\n * It is not the path to a key file (and there is no \"keyfile\" option).\n */\n key?: string;\n\n /**\n * A comma-separated string of domain extensions that a proxy should not be used for.\n */\n noProxy?: string;\n\n /**\n * The IP address of the local interface to use when making connections to the npm registry.\n */\n localAddress?: string;\n\n /**\n * How many times to retry if Bit fails to fetch from the registry.\n */\n fetchRetries?: number;\n\n /*\n * The exponential factor for retry backoff.\n */\n fetchRetryFactor?: number;\n\n /*\n * The minimum (base) timeout for retrying requests.\n */\n fetchRetryMintimeout?: number;\n\n /*\n * The maximum fallback timeout to ensure the retry factor does not make requests too long.\n */\n fetchRetryMaxtimeout?: number;\n\n /*\n * The maximum amount of time (in milliseconds) to wait for HTTP requests to complete.\n */\n fetchTimeout?: number;\n\n /*\n * The maximum number of connections to use per origin (protocol/host/port combination).\n */\n maxSockets?: number;\n\n /*\n * Controls the maximum number of HTTP(S) requests to process simultaneously.\n */\n networkConcurrency?: number;\n\n /*\n * Set the prefix to use when adding dependency to workspace.jsonc via bit install\n * to lock version to exact version you can use empty string (default)\n */\n savePrefix?: string;\n\n /*\n * in case you want to disable this proxy set this config to false\n *\n */\n installFromBitDevRegistry?: boolean;\n\n /*\n * map of extra arguments to pass to the configured package manager upon the installation\n * of dependencies.\n */\n packageManagerArgs?: string[];\n\n /*\n * This field allows to instruct the package manager to override any dependency in the dependency graph.\n * This is useful to enforce all your packages to use a single version of a dependency, backport a fix,\n * or replace a dependency with a fork.\n */\n overrides?: Record<string, string>;\n\n /**\n * This is similar to overrides, but will only affect installation in capsules.\n * In case overrides is configured and this not, the regular overrides will affect capsules as well.\n * in case both configured, capsulesOverrides will be used for capsules, and overrides will affect the workspace.\n */\n capsulesOverrides?: Record<string, string>;\n\n /*\n * Defines what linker should be used for installing Node.js packages.\n * Supported values are hoisted and isolated.\n */\n nodeLinker?: NodeLinker;\n\n /*\n * Controls the way packages are imported from the store.\n */\n packageImportMethod?: PackageImportMethod;\n\n /*\n * Use and cache the results of (pre/post)install hooks.\n */\n sideEffectsCache?: boolean;\n\n /*\n * The list of components that should be installed in isolation from the workspace.\n * The component's package names should be used in this list, not their component IDs.\n */\n rootComponents?: boolean;\n\n /*\n * The node version to use when checking a package's engines setting.\n */\n nodeVersion?: string;\n\n /*\n * Refuse to install any package that claims to not be compatible with the current Node.js version.\n */\n engineStrict?: boolean;\n\n /*\n * Rules to mute specific peer dependeny warnings.\n */\n peerDependencyRules?: PeerDependencyRules;\n\n /*\n * This setting is \"true\" by default and tells bit to link core aspects to the node_modules of the workspace.\n * It only makes sense to set this to \"false\" in a workspace in which core aspects are actually developed.\n */\n linkCoreAspects?: boolean;\n\n /**\n * When false, Bit will create a shared node_modules directory for all components in a capsule.\n */\n isolatedCapsules?: boolean;\n\n /*\n * Ignore the builds of specific dependencies. The \"preinstall\", \"install\", and \"postinstall\" scripts\n * of the listed packages will not be executed during installation.\n */\n neverBuiltDependencies?: string[];\n\n /**\n * If true, staleness checks for cached data will be bypassed, but missing data will be requested from the server.\n */\n preferOffline?: boolean;\n}\n\nexport interface DependencyResolverVariantConfig {\n policy: VariantPolicyConfigObject;\n}\n\nexport type RootPolicyRegistry = SlotRegistry<WorkspacePolicy>;\nexport type PoliciesRegistry = SlotRegistry<VariantPolicyConfigObject>;\nexport type PackageManagerSlot = SlotRegistry<PackageManager>;\nexport type DependencyFactorySlot = SlotRegistry<DependencyFactory[]>;\nexport type PreInstallSlot = SlotRegistry<PreInstallSubscriberList>;\nexport type PostInstallSlot = SlotRegistry<PostInstallSubscriberList>;\n\nexport type MergeDependenciesFunc = (configuredExtensions: ExtensionDataList) => Promise<VariantPolicyConfigObject>;\n\nexport type GetInstallerOptions = {\n rootDir?: string;\n packageManager?: string;\n cacheRootDirectory?: string;\n installingContext?: DepInstallerContext;\n nodeLinker?: NodeLinker;\n};\n\nexport type GetLinkerOptions = {\n rootDir?: string;\n linkingOptions?: LinkingOptions;\n linkingContext?: DepLinkerContext;\n};\n\nexport type GetDependenciesOptions = {\n includeHidden?: boolean;\n};\n\nexport type GetVersionResolverOptions = {\n cacheRootDirectory?: string;\n};\n\ntype OnExportIdTransformer = (id: BitId) => BitId;\n\nconst defaultLinkingOptions: LinkingOptions = {\n linkTeambitBit: true,\n linkCoreAspects: true,\n};\n\nconst defaultCreateFromComponentsOptions: CreateFromComponentsOptions = {\n filterComponentsFromManifests: true,\n createManifestForComponentsWithoutDependencies: true,\n};\n\nexport class DependencyResolverMain {\n constructor(\n /**\n * Dependency resolver extension configuration.\n */\n readonly config: DependencyResolverWorkspaceConfig,\n\n /**\n * Registry for changes by other extensions.\n */\n private rootPolicyRegistry: RootPolicyRegistry,\n\n /**\n * Registry for changes by other extensions.\n */\n private policiesRegistry: PoliciesRegistry,\n\n /**\n * envs extension.\n */\n private envs: EnvsMain,\n\n private logger: Logger,\n\n private configAspect: ConfigMain,\n\n private aspectLoader: AspectLoaderMain,\n\n private globalConfig: GlobalConfigMain,\n\n /**\n * component aspect.\n */\n readonly componentAspect: ComponentMain,\n\n private packageManagerSlot: PackageManagerSlot,\n\n private dependencyFactorySlot: DependencyFactorySlot,\n\n private preInstallSlot: PreInstallSlot,\n\n private postInstallSlot: PostInstallSlot\n ) {}\n\n /**\n * Save list of envs that doesn't contains env.jsonc file\n * this is used to show warning / instuctions to the user\n */\n public envsWithoutManifest = new Set<string>();\n\n /**\n * This function is a temporary workaround for installation in capsules with pnpm.\n * Currently pnpm breaks the root node_modules inside the capsule because it removes deps from it.\n * Install runs several times in the same capsule and pnpm removes deps from the previous runs.\n *\n * This workaround unfortunately also breaks pnpm on angular projects. Because dedupe doesn't work properly.\n * To fix this issue we'll either have to switch to root components or try to change pnpm code.\n *\n * Here is the PR where initially dedupe was turned off for pnpm: https://github.com/teambit/bit/pull/5410\n */\n supportsDedupingOnExistingRoot(): boolean {\n const packageManager = this.getPackageManager();\n return packageManager?.supportsDedupingOnExistingRoot?.() === true && !this.isolatedCapsules();\n }\n\n hasRootComponents(): boolean {\n return Boolean(this.config.rootComponents);\n }\n\n isolatedCapsules(): boolean {\n const globalConfig = this.globalConfig.getSync(CFG_ISOLATED_SCOPE_CAPSULES);\n // @ts-ignore\n const defaultVal = globalConfig !== undefined ? globalConfig === true || globalConfig === 'true' : true;\n const res = this.config.isolatedCapsules ?? defaultVal;\n return res;\n }\n\n hasHarmonyInRootPolicy(): boolean {\n const rootPolicy = this.getWorkspacePolicyFromConfig();\n return rootPolicy.entries.some(({ dependencyId }) => dependencyId === '@teambit/harmony');\n }\n\n nodeLinker(packageManagerName?: string): NodeLinker {\n if (this.config.nodeLinker) return this.config.nodeLinker;\n const pmName = packageManagerName || this.config.packageManager;\n if (pmName === 'teambit.dependencies/yarn') return 'hoisted';\n return 'isolated';\n }\n\n linkCoreAspects(): boolean {\n return this.config.linkCoreAspects ?? DependencyResolverMain.defaultConfig.linkCoreAspects;\n }\n\n /**\n * register a new package manager to the dependency resolver.\n */\n registerPackageManager(packageManager: PackageManager) {\n this.packageManagerSlot.register(packageManager);\n }\n\n registerDependencyFactories(factories: DependencyFactory[]) {\n this.dependencyFactorySlot.register(factories);\n }\n\n registerPreInstallSubscribers(subscribers: PreInstallSubscriberList) {\n this.preInstallSlot.register(subscribers);\n }\n\n registerPostInstallSubscribers(subscribers: PreInstallSubscriberList) {\n this.postInstallSlot.register(subscribers);\n }\n\n getSavePrefix(): string {\n return this.config.savePrefix || '^';\n }\n\n getVersionWithSavePrefix({\n version,\n overridePrefix,\n wantedRange,\n }: {\n version: string;\n overridePrefix?: string;\n wantedRange?: string;\n }): string {\n if (wantedRange && ['~', '^'].includes(wantedRange[0])) {\n return wantedRange;\n }\n const prefix = overridePrefix || this.getSavePrefix();\n const versionWithPrefix = `${prefix}${version}`;\n if (!semver.validRange(versionWithPrefix)) {\n throw new InvalidVersionWithPrefix(versionWithPrefix);\n }\n return versionWithPrefix;\n }\n\n async getPolicy(component: Component): Promise<VariantPolicy> {\n const entry = component.state.aspects.get(DependencyResolverAspect.id);\n if (!entry) {\n return VariantPolicy.getEmpty();\n }\n const serializedPolicy: SerializedVariantPolicy = get(entry, ['data', 'policy'], []);\n return VariantPolicy.parse(serializedPolicy);\n }\n\n /**\n * This function called on component load in order to calculate the dependencies based on the legacy (consumer) component\n * and write them to the dependencyResolver data.\n * Do not use this function for other purpose.\n * If you want to get the component dependencies call getDependencies (which will give you the dependencies from the data itself)\n * TODO: once we switch deps resolver <> workspace relation we should make it private\n * TODO: once we switch deps resolver <> workspace relation we should remove the resolveId func here\n * @param component\n */\n async extractDepsFromLegacy(component: Component, policy?: VariantPolicy): Promise<DependencyList> {\n const componentPolicy = policy || (await this.getPolicy(component));\n const legacyComponent: LegacyComponent = component.state._consumer;\n const listFactory = this.getDependencyListFactory();\n const dependencyList = await listFactory.fromLegacyComponent(legacyComponent);\n dependencyList.forEach((dep) => {\n const found = componentPolicy.find(dep.id);\n // if no policy found, the dependency was auto-resolved from the source code\n dep.source = found?.source || 'auto';\n dep.hidden = found?.hidden;\n });\n return dependencyList;\n }\n\n private getDependencyListFactory(): DependencyListFactory {\n const factories = this.dependencyFactorySlot.values().flat();\n const factoriesMap = factories.reduce((acc, factory) => {\n acc[factory.type] = factory;\n return acc;\n }, {});\n const listFactory = new DependencyListFactory(factoriesMap);\n return listFactory;\n }\n\n /**\n * Main function to get the dependency list of a given component\n * @param component\n */\n async getDependencies(\n component: IComponent,\n { includeHidden = false }: GetDependenciesOptions = {}\n ): Promise<DependencyList> {\n const entry = component.get(DependencyResolverAspect.id);\n if (!entry) {\n return DependencyList.fromArray([]);\n }\n const serializedDependencies: SerializedDependency[] = entry?.data?.dependencies || [];\n const depList = await this.getDependenciesFromSerializedDependencies(serializedDependencies);\n if (includeHidden) return depList;\n return depList.filterHidden();\n }\n\n /**\n * returns only the dependencies that are bit-components.\n */\n async getComponentDependencies(component: IComponent): Promise<ComponentDependency[]> {\n const dependencyList = await this.getDependencies(component);\n return dependencyList.getComponentDependencies();\n }\n\n private async getDependenciesFromSerializedDependencies(\n dependencies: SerializedDependency[]\n ): Promise<DependencyList> {\n if (!dependencies.length) {\n return DependencyList.fromArray([]);\n }\n const listFactory = this.getDependencyListFactory();\n const deps = await listFactory.fromSerializedDependencies(dependencies);\n return deps;\n }\n\n /**\n * Getting the merged workspace policy (from dep resolver config and others like root package.json)\n * @returns\n */\n getWorkspacePolicy(): WorkspacePolicy {\n const policyFromConfig = this.getWorkspacePolicyFromConfig();\n const externalPolicies = this.rootPolicyRegistry.toArray().map(([, policy]) => policy);\n return this.mergeWorkspacePolices([policyFromConfig, ...externalPolicies]);\n }\n\n /**\n * Getting the workspace policy as defined in the workspace.jsonc in the dependencyResolver aspect\n * This will not take into account packages that defined in the package.json of the root for example\n * in most cases you should use getWorkspacePolicy\n * @returns\n */\n getWorkspacePolicyFromConfig(): WorkspacePolicy {\n const factory = new WorkspacePolicyFactory();\n return factory.fromConfigObject(this.config.policy);\n }\n\n getWorkspacePolicyFromConfigObject(obj: WorkspacePolicyConfigObject): WorkspacePolicy {\n const factory = new WorkspacePolicyFactory();\n return factory.fromConfigObject(obj);\n }\n\n getWorkspacePolicyFromPackageJson(packageJson: Record<string, any>): WorkspacePolicy {\n const factory = new WorkspacePolicyFactory();\n return factory.fromPackageJson(packageJson);\n }\n\n mergeWorkspacePolices(polices: WorkspacePolicy[]): WorkspacePolicy {\n return WorkspacePolicy.mergePolices(polices);\n }\n\n /**\n * Create a workspace manifest\n * The term workspace here is not the same as \"bit workspace\" but a workspace that represent a shared root\n * for installation of many components (sometime it might point to the workspace path)\n * in other case it can be for example the capsules root dir\n *\n * @param {string} [name=ROOT_NAME]\n * @param {SemVer} [version=new SemVer('1.0.0')]\n * @param {ManifestDependenciesObject} dependencies\n * @param {string} rootDir\n * @param {Component[]} components\n * @param {CreateFromComponentsOptions} [options={\n * filterComponentsFromManifests: true,\n * createManifestForComponentsWithoutDependencies: true,\n * }]\n * @returns {WorkspaceManifest}\n * @memberof DependencyResolverMain\n */\n async getWorkspaceManifest(\n name: string = ROOT_NAME,\n version: SemVer = new SemVer('1.0.0'),\n rootPolicy: WorkspacePolicy,\n rootDir: string,\n components: Component[],\n options: CreateFromComponentsOptions = defaultCreateFromComponentsOptions,\n context: DepInstallerContext = {}\n ): Promise<WorkspaceManifest> {\n const statusMessage = context?.inCapsule\n ? `(capsule) deduping dependencies for installation in root dir ${rootDir}`\n : 'deduping dependencies for installation';\n if (!context?.inCapsule) {\n this.logger.setStatusLine(statusMessage);\n }\n const concreteOpts = {\n ...defaultCreateFromComponentsOptions,\n ...options,\n };\n const workspaceManifestFactory = new WorkspaceManifestFactory(this, this.aspectLoader);\n const res = await workspaceManifestFactory.createFromComponents(\n name,\n version,\n rootPolicy,\n rootDir,\n components,\n concreteOpts\n );\n if (!context?.inCapsule) {\n this.logger.consoleSuccess();\n }\n return res;\n }\n\n /**\n * get the package name of a component.\n */\n getPackageName(component: Component): string {\n return this.getDepResolverData(component)?.packageName ?? this.calcPackageName(component);\n }\n\n getDepResolverData(component: Component): DependencyResolverComponentData | undefined {\n return component.state.aspects.get(DependencyResolverAspect.id)?.data as DependencyResolverComponentData;\n }\n\n calcPackageName(component: Component): string {\n return componentIdToPackageName(component.state._consumer);\n }\n\n /*\n * Returns the location where the component is installed with its peer dependencies\n * This is used in cases you want to actually run the components and make sure all the dependencies (especially peers) are resolved correctly\n */\n getRuntimeModulePath(component: Component) {\n if (!this.hasRootComponents()) {\n const modulePath = this.getModulePath(component);\n return modulePath;\n }\n const pkgName = this.getPackageName(component);\n const selfRootDir = getRelativeRootComponentDir(component.id.toString());\n // In case the component is it's own root we want to load it from it's own root folder\n if (fs.pathExistsSync(selfRootDir)) {\n const innerDir = join(selfRootDir, 'node_modules', pkgName);\n if (fs.pathExistsSync(innerDir)) return innerDir;\n // sometime for the env itself we don't have the env package in the env root dir, because it was hoisted\n // in that case we return the dir from the root node_modules\n return this.getModulePath(component);\n }\n const envId = this.envs.getEnvId(component);\n const dirInEnvRoot = join(getRelativeRootComponentDir(envId), 'node_modules', pkgName);\n if (fs.pathExistsSync(dirInEnvRoot)) return dirInEnvRoot;\n return this.getModulePath(component);\n }\n\n /**\n * returns the package path in the /node_modules/ folder\n * In case you call this in order to run the code from the path, please refer to the `getRuntimeModulePath` API\n */\n getModulePath(component: Component) {\n const pkgName = this.getPackageName(component);\n const relativePath = join('node_modules', pkgName);\n return relativePath;\n }\n\n /**\n * get a component dependency installer.\n */\n getInstaller(options: GetInstallerOptions = {}) {\n const packageManagerName = options.packageManager || this.config.packageManager;\n const packageManager = this.packageManagerSlot.get(packageManagerName);\n const cacheRootDir = options.cacheRootDirectory || this.globalConfig.getSync(CFG_PACKAGE_MANAGER_CACHE);\n\n if (!packageManager) {\n throw new PackageManagerNotFound(this.config.packageManager);\n }\n\n if (cacheRootDir && !fs.pathExistsSync(cacheRootDir)) {\n this.logger.debug(`creating package manager cache dir at ${cacheRootDir}`);\n fs.ensureDirSync(cacheRootDir);\n }\n const preInstallSubscribers = this.getPreInstallSubscribers();\n const postInstallSubscribers = this.getPostInstallSubscribers();\n // TODO: we should somehow pass the cache root dir to the package manager constructor\n return new DependencyInstaller(\n packageManager,\n this.aspectLoader,\n this.logger,\n this,\n options.rootDir,\n cacheRootDir,\n preInstallSubscribers,\n postInstallSubscribers,\n options.nodeLinker || this.nodeLinker(packageManagerName),\n this.config.packageImportMethod,\n this.config.sideEffectsCache,\n this.config.nodeVersion,\n this.config.engineStrict,\n this.config.peerDependencyRules,\n this.config.neverBuiltDependencies,\n this.config.preferOffline,\n options.installingContext\n );\n }\n\n private getPreInstallSubscribers(): PreInstallSubscriberList {\n return this.preInstallSlot.values().flat();\n }\n\n private getPostInstallSubscribers(): PostInstallSubscriberList {\n return this.postInstallSlot.values().flat();\n }\n\n /**\n * get a component dependency linker.\n */\n getLinker(options: GetLinkerOptions = {}) {\n const linkingOptions = Object.assign({}, defaultLinkingOptions, options?.linkingOptions || {});\n // TODO: we should somehow pass the cache root dir to the package manager constructor\n return new DependencyLinker(\n this,\n this.aspectLoader,\n this.componentAspect,\n this.envs,\n this.logger,\n options.rootDir,\n linkingOptions,\n options.linkingContext\n );\n }\n\n /**\n * This function returns the package manager if it exists, otherwise it returns undefined.\n * @returns The `getPackageManager()` function returns a `PackageManager` object or `undefined`.\n */\n getPackageManager(): PackageManager | undefined {\n const packageManager = this.packageManagerSlot.get(this.config.packageManager);\n return packageManager;\n }\n\n getPackageManagerName() {\n return this.config.packageManager;\n }\n\n async getVersionResolver(options: GetVersionResolverOptions = {}) {\n const packageManager = this.getPackageManager();\n const cacheRootDir = options.cacheRootDirectory || this.globalConfig.getSync(CFG_PACKAGE_MANAGER_CACHE);\n\n if (!packageManager) {\n throw new PackageManagerNotFound(this.config.packageManager);\n }\n\n if (cacheRootDir && !fs.pathExistsSync(cacheRootDir)) {\n this.logger.debug(`creating package manager cache dir at ${cacheRootDir}`);\n fs.ensureDirSync(cacheRootDir);\n }\n const { networkConcurrency } = await this.getNetworkConfig();\n // TODO: we should somehow pass the cache root dir to the package manager constructor\n return new DependencyVersionResolver(packageManager, cacheRootDir, networkConcurrency);\n }\n\n /**\n * these ids should not be in the dependencyResolver policy normally.\n * one exception is bit itself, which needs teambit.harmony/harmony in the dependencies.\n *\n * returns component-ids string without a version.\n */\n getCompIdsThatShouldNotBeInPolicy(): string[] {\n return [...getAllCoreAspectsIds(), 'teambit.harmony/harmony'];\n }\n\n /**\n * return the system configured package manager. by default pnpm.\n */\n getSystemPackageManager(): PackageManager {\n const defaultPm = 'teambit.dependencies/pnpm';\n const packageManager = this.packageManagerSlot.get(defaultPm);\n if (!packageManager) throw new Error(`default package manager: ${defaultPm} was not found`);\n return packageManager;\n }\n\n async getProxyConfig(): Promise<ProxyConfig> {\n const proxyConfigFromDepResolverConfig = this.getProxyConfigFromDepResolverConfig();\n let httpProxy = proxyConfigFromDepResolverConfig.httpProxy;\n let httpsProxy = proxyConfigFromDepResolverConfig.httpsProxy;\n\n // Take config from the aspect config if defined\n if (httpProxy || httpsProxy) {\n this.logger.debug(\n `proxy config taken from the dep resolver config. proxy: ${httpProxy} httpsProxy: ${httpsProxy}`\n );\n return proxyConfigFromDepResolverConfig;\n }\n\n // Take config from the package manager (npmrc) config if defined\n const proxyConfigFromPackageManager = await this.getProxyConfigFromPackageManager();\n if (proxyConfigFromPackageManager?.httpProxy || proxyConfigFromPackageManager?.httpsProxy) {\n this.logger.debug(\n `proxy config taken from the package manager config (npmrc). proxy: ${proxyConfigFromPackageManager.httpProxy} httpsProxy: ${proxyConfigFromPackageManager.httpsProxy}`\n );\n return proxyConfigFromPackageManager;\n }\n\n // Take config from global bit config\n const proxyConfigFromGlobalConfig = await this.getProxyConfigFromGlobalConfig();\n httpProxy = proxyConfigFromGlobalConfig.httpProxy;\n httpsProxy = proxyConfigFromGlobalConfig.httpsProxy;\n if (httpProxy || httpsProxy) {\n this.logger.debug(`proxy config taken from the global bit config. proxy: ${httpProxy} httpsProxy: ${httpsProxy}`);\n return proxyConfigFromGlobalConfig;\n }\n return {};\n }\n\n private getProxyConfigFromDepResolverConfig(): ProxyConfig {\n return {\n httpProxy: this.config.proxy,\n httpsProxy: this.config.httpsProxy || this.config.proxy,\n noProxy: this.config.noProxy,\n };\n }\n\n async getNetworkConfig(): Promise<NetworkConfig> {\n const networkConfig = {\n ...(await this.getNetworkConfigFromGlobalConfig()),\n ...(await this.getNetworkConfigFromPackageManager()),\n ...this.getNetworkConfigFromDepResolverConfig(),\n };\n this.logger.debug(\n `the next network configuration is used in dependency-resolver: ${JSON.stringify(\n {\n ...networkConfig,\n key: networkConfig.key ? 'set' : 'not set', // this is sensitive information, we should not log it\n },\n null,\n 2\n )}`\n );\n return networkConfig;\n }\n\n private async getNetworkConfigFromGlobalConfig(): Promise<NetworkConfig> {\n const globalNetworkConfig = await Http.getNetworkConfig();\n if (!globalNetworkConfig.ca && globalNetworkConfig.cafile) {\n globalNetworkConfig.ca = readCAFileSync(globalNetworkConfig.cafile);\n }\n return globalNetworkConfig;\n }\n\n private getNetworkConfigFromDepResolverConfig(): NetworkConfig {\n const config: NetworkConfig = pick(this.config, [\n 'fetchTimeout',\n 'fetchRetries',\n 'fetchRetryFactor',\n 'fetchRetryMintimeout',\n 'fetchRetryMaxtimeout',\n 'maxSockets',\n 'networkConcurrency',\n 'key',\n 'cert',\n 'ca',\n 'cafile',\n ]);\n if (this.config.strictSsl != null) {\n config.strictSSL =\n typeof this.config.strictSsl === 'string'\n ? this.config.strictSsl.toLowerCase() === 'true'\n : this.config.strictSsl;\n }\n return config;\n }\n\n private async getNetworkConfigFromPackageManager(): Promise<NetworkConfig> {\n const packageManager = this.getPackageManager();\n let networkConfigFromPackageManager: NetworkConfig = {};\n if (typeof packageManager?.getNetworkConfig === 'function') {\n networkConfigFromPackageManager = await packageManager?.getNetworkConfig();\n } else {\n const systemPm = this.getSystemPackageManager();\n if (!systemPm.getNetworkConfig) throw new Error('system package manager must implement `getNetworkConfig()`');\n networkConfigFromPackageManager = await systemPm.getNetworkConfig();\n }\n return networkConfigFromPackageManager;\n }\n\n private async getProxyConfigFromPackageManager(): Promise<ProxyConfig> {\n const packageManager = this.getPackageManager();\n let proxyConfigFromPackageManager: ProxyConfig = {};\n if (packageManager?.getProxyConfig && typeof packageManager?.getProxyConfig === 'function') {\n proxyConfigFromPackageManager = await packageManager?.getProxyConfig();\n } else {\n const systemPm = this.getSystemPackageManager();\n if (!systemPm.getProxyConfig) throw new Error('system package manager must implement `getProxyConfig()`');\n proxyConfigFromPackageManager = await systemPm.getProxyConfig();\n }\n return proxyConfigFromPackageManager;\n }\n\n private getProxyConfigFromGlobalConfig(): Promise<ProxyConfig> {\n return Http.getProxyConfig();\n }\n\n /**\n * Return the peer dependencies and their ranges that may be installed\n * without causing unmet peer dependency issues in some of the dependencies.\n */\n async getMissingPeerDependencies(\n rootDir: string,\n rootPolicy: WorkspacePolicy,\n componentDirectoryMap: ComponentMap<string>,\n options: PackageManagerGetPeerDependencyIssuesOptions\n ): Promise<Record<string, string>> {\n this.logger.setStatusLine('finding missing peer dependencies');\n const packageManager = this.getPackageManager();\n let peerDependencyIssues!: PeerDependencyIssuesByProjects;\n const installer = this.getInstaller();\n const manifests = await installer.getComponentManifests({\n ...options,\n componentDirectoryMap,\n rootPolicy,\n rootDir,\n });\n if (packageManager?.getPeerDependencyIssues && typeof packageManager?.getPeerDependencyIssues === 'function') {\n peerDependencyIssues = await packageManager?.getPeerDependencyIssues(rootDir, manifests, options);\n } else {\n const systemPm = this.getSystemPackageManager();\n if (!systemPm.getPeerDependencyIssues)\n throw new Error('system package manager must implement `getPeerDependencyIssues()`');\n peerDependencyIssues = await systemPm?.getPeerDependencyIssues(rootDir, manifests, options);\n }\n this.logger.consoleSuccess();\n return peerDependencyIssues['.']?.intersections;\n }\n\n async getRegistries(): Promise<Registries> {\n const packageManager = this.getPackageManager();\n let registries;\n if (packageManager?.getRegistries && typeof packageManager?.getRegistries === 'function') {\n registries = await packageManager?.getRegistries();\n } else {\n const systemPm = this.getSystemPackageManager();\n if (!systemPm.getRegistries) throw new Error('system package manager must implement `getRegistries()`');\n registries = await systemPm.getRegistries();\n }\n\n const bitScope = registries.scopes.bit;\n\n const getDefaultBitRegistry = (): Registry => {\n const bitGlobalConfigRegistry = this.globalConfig.getSync(CFG_REGISTRY_URL_KEY);\n const bitRegistry = bitGlobalConfigRegistry || bitScope?.uri || BIT_DEV_REGISTRY;\n\n const { bitOriginalAuthType, bitAuthHeaderValue, bitOriginalAuthValue } = this.getBitAuthConfig(bitScope);\n\n const alwaysAuth = bitAuthHeaderValue !== undefined;\n const bitDefaultRegistry = new Registry(\n bitRegistry,\n alwaysAuth,\n bitAuthHeaderValue,\n bitOriginalAuthType,\n bitOriginalAuthValue\n );\n return bitDefaultRegistry;\n };\n\n const bitDefaultRegistry = getDefaultBitRegistry();\n\n const installFromBitDevRegistry = this.config.installFromBitDevRegistry ?? true;\n\n // Override default registry to use bit registry in case npmjs is the default - bit registry will proxy it\n // We check also NPM_REGISTRY.startsWith because the uri might not have the trailing / we have in NPM_REGISTRY\n if (\n installFromBitDevRegistry &&\n (!registries.defaultRegistry.uri ||\n registries.defaultRegistry.uri === NPM_REGISTRY ||\n NPM_REGISTRY.startsWith(registries.defaultRegistry.uri))\n ) {\n // TODO: this will not handle cases where you have token for private npm registries stored on npmjs\n // it should be handled by somehow in such case (default is npmjs and there is token for default) by sending the token of npmjs to the registry\n // (for example by setting some special header in the request)\n // then in the registry server it should be use it when proxies\n registries = registries.setDefaultRegistry(bitDefaultRegistry);\n }\n // Make sure @bit scope is register with alwaysAuth\n if (!bitScope || (bitScope && !bitScope.alwaysAuth)) {\n registries = registries.updateScopedRegistry('bit', bitDefaultRegistry);\n }\n\n registries = this.addAuthToScopedBitRegistries(registries, bitScope);\n return registries;\n }\n\n /**\n * This will mutate any registry which point to BIT_DEV_REGISTRY to have the auth config from the @bit scoped registry or from the user.token in bit's config\n */\n private addAuthToScopedBitRegistries(registries: Registries, bitScopeRegistry: Registry): Registries {\n const { bitOriginalAuthType, bitAuthHeaderValue, bitOriginalAuthValue } = this.getBitAuthConfig(bitScopeRegistry);\n const alwaysAuth = bitAuthHeaderValue !== undefined;\n let updatedRegistries = registries;\n Object.entries(registries.scopes).map(([name, registry]) => {\n if (!registry.authHeaderValue && BIT_DEV_REGISTRY.includes(registry.uri)) {\n const registryWithAuth = new Registry(\n registry.uri,\n alwaysAuth,\n bitAuthHeaderValue,\n bitOriginalAuthType,\n bitOriginalAuthValue\n );\n updatedRegistries = updatedRegistries.updateScopedRegistry(name, registryWithAuth);\n }\n return updatedRegistries;\n });\n return updatedRegistries;\n }\n\n private getBitAuthConfig(\n bitScopeRegistry: Registry\n ): Partial<{ bitOriginalAuthType: string; bitAuthHeaderValue: string; bitOriginalAuthValue: string }> {\n const bitGlobalConfigToken = this.globalConfig.getSync(CFG_USER_TOKEN_KEY);\n let bitAuthHeaderValue = bitScopeRegistry?.authHeaderValue;\n let bitOriginalAuthType = bitScopeRegistry?.originalAuthType;\n let bitOriginalAuthValue = bitScopeRegistry?.originalAuthValue;\n\n // In case there is no auth configuration in the npmrc, but there is token in bit config, take it from the config\n if ((!bitScopeRegistry || !bitScopeRegistry.authHeaderValue) && bitGlobalConfigToken) {\n bitOriginalAuthType = 'authToken';\n bitAuthHeaderValue = `Bearer ${bitGlobalConfigToken}`;\n bitOriginalAuthValue = bitGlobalConfigToken;\n }\n\n return {\n bitOriginalAuthType,\n bitAuthHeaderValue,\n bitOriginalAuthValue,\n };\n }\n\n get packageManagerName(): string {\n return this.config.packageManager;\n }\n\n addToRootPolicy(entries: WorkspacePolicyEntry[], options?: WorkspacePolicyAddEntryOptions): WorkspacePolicy {\n const workspacePolicy = this.getWorkspacePolicyFromConfig();\n entries.forEach((entry) => workspacePolicy.add(entry, options));\n this.updateConfigPolicy(workspacePolicy);\n return workspacePolicy;\n }\n\n removeFromRootPolicy(dependencyIds: string[]) {\n const workspacePolicy = this.getWorkspacePolicyFromConfig();\n const workspacePolicyUpdated = workspacePolicy.remove(dependencyIds);\n this.updateConfigPolicy(workspacePolicyUpdated);\n }\n\n private updateConfigPolicy(workspacePolicy: WorkspacePolicy) {\n const workspacePolicyObject = workspacePolicy.toConfigObject();\n this.config.policy = workspacePolicyObject;\n this.configAspect.setExtension(DependencyResolverAspect.id, this.config, {\n overrideExisting: true,\n ignoreVersion: true,\n });\n }\n\n async persistConfig(workspaceDir?: string) {\n return this.configAspect.workspaceConfig?.write({ dir: workspaceDir });\n }\n\n /**\n * register new dependencies policies\n */\n registerDependenciesPolicies(policy: VariantPolicyConfigObject): void {\n return this.policiesRegistry.register(policy);\n }\n\n /**\n * register new dependencies policies\n */\n registerRootPolicy(policy: WorkspacePolicy): void {\n return this.rootPolicyRegistry.register(policy);\n }\n\n // async getComponentEnvPolicyFromExtension(configuredExtensions: ExtensionDataList): Promise<EnvPolicy> {\n // const env = this.envs.calculateEnvFromExtensions(configuredExtensions);\n // const fromFile = await this.getEnvPolicyFromFile(env.id);\n // if (fromFile) return fromFile;\n // return this.getComponentEnvPolicyFromEnv(env.env);\n // }\n\n async getComponentEnvPolicyFromExtension(configuredExtensions: ExtensionDataList): Promise<EnvPolicy> {\n const envId = await this.envs.calculateEnvIdFromExtensions(configuredExtensions);\n if (this.envs.isCoreEnv(envId)) {\n const env = await this.envs.calculateEnvFromExtensions(configuredExtensions);\n return this.getComponentEnvPolicyFromEnv(env.env);\n }\n\n const fromFile = await this.getEnvPolicyFromFile(envId);\n if (fromFile) return fromFile;\n const env = await this.envs.calculateEnvFromExtensions(configuredExtensions);\n return this.getComponentEnvPolicyFromEnv(env.env);\n }\n\n async getEnvPolicyFromEnvId(id: ComponentID, legacyFiles?: SourceFile[]): Promise<EnvPolicy | undefined> {\n return this.getEnvPolicyFromEnvLegacyId(id._legacy, legacyFiles);\n }\n\n async getEnvPolicyFromEnvLegacyId(id: BitId, legacyFiles?: SourceFile[]): Promise<EnvPolicy | undefined> {\n const fromFile = await this.getEnvPolicyFromFile(id.toString(), legacyFiles);\n if (fromFile) return fromFile;\n const envDef = await this.envs.getEnvDefinitionByLegacyId(id);\n if (!envDef) return undefined;\n const env = envDef.env;\n return this.getComponentEnvPolicyFromEnv(env);\n }\n\n async getComponentEnvPolicy(component: Component): Promise<EnvPolicy> {\n // const envComponent = await this.envs.getEnvComponent(component);\n const envId = await this.envs.calculateEnvId(component);\n if (this.envs.isCoreEnv(envId.toStringWithoutVersion())) {\n const env = this.envs.getEnv(component).env;\n return this.getComponentEnvPolicyFromEnv(env);\n }\n const fromFile = await this.getEnvPolicyFromFile(envId.toString());\n if (fromFile) return fromFile;\n this.envsWithoutManifest.add(envId.toString());\n const env = this.envs.getEnv(component).env;\n return this.getComponentEnvPolicyFromEnv(env);\n }\n\n getEnvManifest(envComponent?: Component, legacyFiles?: SourceFile[]): EnvPolicy | undefined {\n const object = this.envs.getEnvManifest(envComponent, legacyFiles) as any;\n const policy = object?.policy;\n if (!policy) return undefined;\n const allPoliciesFromEnv = EnvPolicy.fromConfigObject(policy);\n return allPoliciesFromEnv;\n }\n\n private async getEnvPolicyFromFile(envId: string, legacyFiles?: SourceFile[]): Promise<EnvPolicy | undefined> {\n const isCoreEnv = this.envs.isCoreEnv(envId);\n if (isCoreEnv) return undefined;\n if (legacyFiles) {\n return this.getEnvManifest(undefined, legacyFiles);\n }\n const envComponent = await this.envs.getEnvComponentByEnvId(envId, envId);\n return this.getEnvManifest(envComponent);\n }\n\n async getComponentEnvPolicyFromEnv(env: DependenciesEnv): Promise<EnvPolicy> {\n if (env.getDependencies && typeof env.getDependencies === 'function') {\n const policiesFromEnvConfig = await env.getDependencies();\n if (policiesFromEnvConfig) {\n const allPoliciesFromEnv = EnvPolicy.fromConfigObject(policiesFromEnvConfig);\n return allPoliciesFromEnv;\n }\n }\n return EnvPolicy.getEmpty();\n }\n\n async getComponentEnvPolicyFromEnvDefinition(envDef: EnvDefinition): Promise<EnvPolicy> {\n const fromFile = await this.getEnvPolicyFromFile(envDef.id);\n if (fromFile) return fromFile;\n return this.getComponentEnvPolicyFromEnv(envDef.env);\n }\n\n /**\n *\n * dependencies that will bundled as part of the env template and will configured as externals for the component bundle\n * these dependencies will be available in the preview on the window.\n * these dependencies will have only one instance on the page.\n * for dev server these dependencies will be aliased.\n * TODO: this should probably moved to the preview aspect. the main issue is that is used for dev server which can't bring the preview aspect.\n * @param env\n */\n async getPreviewHostDependenciesFromEnv(env: DependenciesEnv): Promise<string[]> {\n let hostDeps: string[] = [];\n if (env.getAdditionalHostDependencies && typeof env.getAdditionalHostDependencies === 'function') {\n hostDeps = await env.getAdditionalHostDependencies();\n }\n return uniq(hostDeps);\n }\n\n /**\n * Merge the dependencies provided by:\n * 1. envs configured in the component - via dependencies method\n * 2. extensions that registered to the registerDependencyPolicy slot (and configured for the component)\n * 3. props defined by the user (they are the strongest one)\n * @param configuredExtensions\n */\n async mergeVariantPolicies(\n configuredExtensions: ExtensionDataList,\n id: BitId,\n legacyFiles?: SourceFile[]\n ): Promise<VariantPolicy> {\n let policiesFromSlots: VariantPolicy = VariantPolicy.getEmpty();\n let policiesFromConfig: VariantPolicy = VariantPolicy.getEmpty();\n const policiesFromEnv: VariantPolicy = await this.getComponentEnvPolicyFromExtension(configuredExtensions);\n const configuredIds = configuredExtensions.ids;\n const policiesTuples = this.policiesRegistry.toArray();\n configuredIds.forEach((extId) => {\n // TODO: change this way of search, once we have workspace as dep-resolver dependency\n // we can use something like:\n // const resolvedId = this.workspace.resolveComponentId(extId)\n // const currentPolicy = this.policiesRegistry.get(resolvedId.toString());\n // Only get props from configured extensions on this specific component\n const policyTupleToApply = policiesTuples.find(([policyRegistrar]) => {\n return policyRegistrar === extId || policyRegistrar.includes(extId);\n });\n\n if (policyTupleToApply && policyTupleToApply[1]) {\n const currentPolicy = VariantPolicy.fromConfigObject(policyTupleToApply[1], 'slots');\n policiesFromSlots = VariantPolicy.mergePolices([policiesFromSlots, currentPolicy]);\n }\n });\n const currentExtension = configuredExtensions.findExtension(DependencyResolverAspect.id);\n const currentConfig = currentExtension?.config as unknown as DependencyResolverVariantConfig;\n if (currentConfig && currentConfig.policy) {\n policiesFromConfig = VariantPolicy.fromConfigObject(currentConfig.policy, 'config');\n }\n const policiesFromEnvForItself =\n (await this.getPoliciesFromEnvForItself(id, legacyFiles)) ?? VariantPolicy.getEmpty();\n\n const result = VariantPolicy.mergePolices([\n policiesFromEnv,\n policiesFromEnvForItself,\n policiesFromSlots,\n policiesFromConfig,\n ]);\n return result;\n }\n\n /**\n * These are the policies that the env itself defines for itself.\n * So policies installed only locally for the env, not to any components that use the env.\n */\n async getPoliciesFromEnvForItself(id: BitId, legacyFiles?: SourceFile[]): Promise<VariantPolicy | undefined> {\n const envPolicy = await this.getEnvPolicyFromEnvLegacyId(id, legacyFiles);\n return envPolicy?.selfPolicy;\n }\n\n updateDepsOnLegacyTag(component: LegacyComponent, idTransformer: onTagIdTransformer): LegacyComponent {\n const entry = component.extensions.findCoreExtension(DependencyResolverAspect.id);\n if (!entry) {\n return component;\n }\n const dependencies = get(entry, ['data', 'dependencies'], []);\n dependencies.forEach((dep) => {\n if (dep.__type === COMPONENT_DEP_TYPE) {\n const depId = new BitId(dep.componentId);\n const newDepId = idTransformer(depId);\n dep.componentId = (newDepId || depId).serialize();\n dep.id = (newDepId || depId).toString();\n dep.version = (newDepId || depId).version;\n }\n });\n return component;\n }\n\n updateDepsOnLegacyExport(version: VersionModel, idTransformer: OnExportIdTransformer): VersionModel {\n const entry = version.extensions.findCoreExtension(DependencyResolverAspect.id);\n if (!entry) {\n return version;\n }\n const dependencies = get(entry, ['data', 'dependencies'], []);\n dependencies.forEach((dep) => {\n if (dep.__type === COMPONENT_DEP_TYPE) {\n const depId = new BitId(dep.componentId);\n const newDepId = idTransformer(depId);\n dep.componentId = (newDepId || depId).serialize();\n dep.id = (newDepId || depId).toString();\n }\n });\n return version;\n }\n\n /**\n * Register a new dependency detector. Detectors allow to extend Bit's dependency detection\n * mechanism to support new file extensions and types.\n */\n registerDetector(detector: DependencyDetector) {\n DetectorHook.hooks.push(detector);\n return this;\n }\n\n /**\n * This function called on component load in order to calculate the custom\n * dependency detectors from an env, which is got by extension data list.\n * Do not use this function for other purposes.\n */\n async calcComponentEnvDepDetectors(extensions: ExtensionDataList) {\n const envDef = await this.envs.calculateEnvFromExtensions(extensions);\n const depEnv = envDef.env as DependenciesEnv;\n if (typeof depEnv?.getDepDetectors === 'function') {\n return depEnv.getDepDetectors();\n }\n return null;\n }\n\n /**\n * This function registered to the onLoadRequireableExtensionSlot of the aspect-loader\n * Update the aspect / manifest deps versions in the runtimes (recursively)\n * This function mutate the manifest directly as otherwise it becomes very complicated\n * TODO: think if this funciton should be here as it about dependencies, or on the aspect loader\n * (as it's aware of the internal structure of aspects)\n * Maybe only register the dep resolution part to the aspect loader\n * at the moment it here for simplify the process\n * @param requireableExtension\n * @param manifest\n * @returns\n */\n async onLoadRequireableExtensionSubscriber(\n requireableExtension: RequireableComponent,\n manifest: ExtensionManifest | Aspect\n ): Promise<ExtensionManifest | Aspect> {\n const parentComponent = requireableExtension.component;\n return this.resolveRequireableExtensionManifestDepsVersionsRecursively(parentComponent, manifest);\n }\n\n /**\n * Update the aspect / manifest deps versions in the runtimes (recursively)\n * @param parentComponent\n * @param manifest\n */\n private async resolveRequireableExtensionManifestDepsVersionsRecursively(\n // Allow getting here string for lazy load the component\n // we only want to load the component in case there are deps to resolve\n parentComponent: Component | string,\n manifest: ExtensionManifest | Aspect\n // TODO: add visited = new Map() for performence improve\n ): Promise<ExtensionManifest | Aspect> {\n // Not resolve it immediately for performance sake\n let resolvedParentComponent: Component | undefined;\n let resolvedParentDeps: DependencyList;\n const updateDirectDepsVersions = (deps: Array<ExtensionManifest | Aspect>): Promise<void[]> => {\n return mapSeries(deps, async (dep) => {\n // Nothing to update (this shouldn't happen ever)\n if (!dep.id) return;\n // In case of core aspect, do not update the version, as it's loaded to harmony without version\n if (this.aspectLoader.isCoreAspect(dep.id)) return;\n // Lazily get the parent component\n if (typeof parentComponent === 'string') {\n const parentComponentId = await this.componentAspect.getHost().resolveComponentId(parentComponent);\n resolvedParentComponent = await this.componentAspect.getHost().get(parentComponentId);\n } else {\n // it's of type component;\n resolvedParentComponent = parentComponent;\n }\n if (!resolvedParentComponent) {\n this.logger.error(\n `could not resolve the component ${parentComponent} during manifest deps resolution. it shouldn't happen`\n );\n return;\n }\n // Lazily get the dependencies\n resolvedParentDeps = resolvedParentDeps || (await this.getDependencies(resolvedParentComponent));\n const resolvedDep = resolvedParentDeps.findDependency(dep.id, { ignoreVersion: true });\n dep.id = resolvedDep?.id ?? dep.id;\n await this.resolveRequireableExtensionManifestDepsVersionsRecursively(dep.id, dep);\n });\n };\n if (manifest.dependencies) {\n manifest.dependencies = manifest.dependencies.map((dep) => this.aspectLoader.cloneManifest(dep));\n await updateDirectDepsVersions(manifest.dependencies);\n }\n // @ts-ignore\n if (manifest?._runtimes) {\n // @ts-ignore\n await mapSeries(manifest?._runtimes, async (runtime: RuntimeManifest) => {\n if (runtime.dependencies) {\n runtime.dependencies = runtime.dependencies.map((dep) => this.aspectLoader.cloneManifest(dep));\n await updateDirectDepsVersions(runtime.dependencies);\n }\n });\n }\n\n return manifest;\n }\n\n /**\n * Return a list of outdated policy dependencies.\n */\n async getOutdatedPkgsFromPolicies({\n rootDir,\n variantPoliciesByPatterns,\n componentPolicies,\n components,\n patterns,\n forceVersionBump,\n }: {\n rootDir: string;\n variantPoliciesByPatterns: Record<string, VariantPolicyConfigObject>;\n componentPolicies: Array<{ componentId: ComponentID; policy: any }>;\n components: Component[];\n patterns?: string[];\n forceVersionBump?: 'major' | 'minor' | 'patch';\n }): Promise<MergedOutdatedPkg[]> {\n const localComponentPkgNames = new Set(components.map((component) => this.getPackageName(component)));\n const componentModelVersions: ComponentModelVersion[] = (\n await Promise.all(\n components.map(async (component) => {\n const depList = await this.getDependencies(component);\n return depList\n .filter(\n (dep) =>\n typeof dep.getPackageName === 'function' &&\n // If the dependency is referenced not via a valid range it means that it wasn't yet published to the registry\n semver.validRange(dep.version) != null &&\n !dep['isExtension'] && // eslint-disable-line\n dep.lifecycle !== 'peer' &&\n !localComponentPkgNames.has(dep.getPackageName())\n )\n .map((dep) => ({\n name: dep.getPackageName!(), // eslint-disable-line\n version: dep.version,\n isAuto: dep.source === 'auto',\n componentId: component.id,\n lifecycleType: dep.lifecycle,\n }));\n })\n )\n ).flat();\n let allPkgs = getAllPolicyPkgs({\n rootPolicy: this.getWorkspacePolicyFromConfig(),\n variantPoliciesByPatterns,\n componentPolicies,\n componentModelVersions,\n });\n if (patterns?.length) {\n const selectedPkgNames = new Set(\n multimatch(\n allPkgs.map(({ name }) => name),\n patterns\n )\n );\n allPkgs = allPkgs.filter(({ name }) => selectedPkgNames.has(name));\n }\n const outdatedPkgs = await this.getOutdatedPkgs({ rootDir, forceVersionBump }, allPkgs);\n return mergeOutdatedPkgs(outdatedPkgs);\n }\n\n /**\n * Accepts a list of package dependency policies and returns a list of outdated policies extended with their \"latestRange\"\n */\n async getOutdatedPkgs<T>(\n {\n rootDir,\n forceVersionBump,\n }: {\n rootDir: string;\n forceVersionBump?: 'major' | 'minor' | 'patch';\n },\n pkgs: Array<\n { name: string; currentRange: string; source: 'variants' | 'component' | 'rootPolicy' | 'component-model' } & T\n >\n ): Promise<Array<{ name: string; currentRange: string; latestRange: string } & T>> {\n this.logger.setStatusLine('checking the latest versions of dependencies');\n const resolver = await this.getVersionResolver();\n const tryResolve = async (spec: string) => {\n try {\n return (\n await resolver.resolveRemoteVersion(spec, {\n rootDir,\n })\n ).version;\n } catch {\n // If latest cannot be found for the package, then just ignore it\n return null;\n }\n };\n const outdatedPkgs = compact(\n await Promise.all(\n pkgs.map(async (pkg) => {\n const latestVersion = await tryResolve(`${pkg.name}@${newVersionRange(pkg.currentRange, forceVersionBump)}`);\n if (!latestVersion) return null;\n const currentVersion = semver.valid(pkg.currentRange.replace(/[\\^~]/, ''));\n // If the current version is newer than the latest, then no need to update the dependency\n if (currentVersion && (semver.gt(currentVersion, latestVersion) || currentVersion === latestVersion))\n return null;\n return {\n ...pkg,\n latestRange:\n pkg.source === 'component-model' && this.config.savePrefix != null\n ? `${this.config.savePrefix}${latestVersion}`\n : repeatPrefix(pkg.currentRange, latestVersion),\n } as any;\n })\n )\n );\n this.logger.consoleSuccess();\n return outdatedPkgs;\n }\n\n /**\n * Update the specified packages to their latest versions in all policies;\n * root polcies, variant pocilicies, and component configuration policies (component.json).\n */\n applyUpdates(\n outdatedPkgs: Array<Omit<OutdatedPkg, 'currentRange'>>,\n options: {\n variantPoliciesByPatterns: Record<string, any>;\n }\n ): {\n updatedVariants: string[];\n updatedComponents: UpdatedComponent[];\n } {\n const { updatedVariants, updatedComponents, updatedWorkspacePolicyEntries } = applyUpdates(outdatedPkgs, {\n variantPoliciesByPatterns: options.variantPoliciesByPatterns,\n });\n this.addToRootPolicy(updatedWorkspacePolicyEntries, {\n updateExisting: true,\n });\n return {\n updatedVariants,\n updatedComponents,\n };\n }\n\n static runtime = MainRuntime;\n static dependencies = [\n EnvsAspect,\n LoggerAspect,\n ConfigAspect,\n AspectLoaderAspect,\n ComponentAspect,\n GraphqlAspect,\n GlobalConfigAspect,\n ];\n\n static slots = [\n Slot.withType<WorkspacePolicy>(),\n Slot.withType<VariantPolicyConfigObject>(),\n Slot.withType<PackageManager>(),\n Slot.withType<RegExp>(),\n Slot.withType<DependencyFactory>(),\n Slot.withType<PreInstallSubscriberList>(),\n Slot.withType<PostInstallSubscriberList>(),\n Slot.withType<DependencyDetector>(),\n ];\n\n static defaultConfig: DependencyResolverWorkspaceConfig &\n Required<Pick<DependencyResolverWorkspaceConfig, 'linkCoreAspects'>> = {\n /**\n * default package manager.\n */\n packageManager: 'teambit.dependencies/pnpm',\n policy: {},\n linkCoreAspects: true,\n };\n\n static async provider(\n [envs, loggerExt, configMain, aspectLoader, componentAspect, graphql, globalConfig]: [\n EnvsMain,\n LoggerMain,\n ConfigMain,\n AspectLoaderMain,\n ComponentMain,\n GraphqlMain,\n GlobalConfigMain\n ],\n config: DependencyResolverWorkspaceConfig,\n [\n rootPolicyRegistry,\n policiesRegistry,\n packageManagerSlot,\n dependencyFactorySlot,\n preInstallSlot,\n postInstallSlot,\n ]: [\n RootPolicyRegistry,\n PoliciesRegistry,\n PackageManagerSlot,\n DependencyFactorySlot,\n PreInstallSlot,\n PostInstallSlot\n ]\n ) {\n // const packageManager = new PackageManagerLegacy(config.packageManager, logger);\n const logger = loggerExt.createLogger(DependencyResolverAspect.id);\n const dependencyResolver = new DependencyResolverMain(\n config,\n rootPolicyRegistry,\n policiesRegistry,\n envs,\n logger,\n configMain,\n aspectLoader,\n globalConfig,\n componentAspect,\n packageManagerSlot,\n dependencyFactorySlot,\n preInstallSlot,\n postInstallSlot\n );\n\n componentAspect.registerShowFragments([\n new DependenciesFragment(dependencyResolver),\n new DevDependenciesFragment(dependencyResolver),\n new PeerDependenciesFragment(dependencyResolver),\n ]);\n // TODO: solve this generics issue and remove the ts-ignore\n // @ts-ignore\n dependencyResolver.registerDependencyFactories([new ComponentDependencyFactory(componentAspect)]);\n\n DependencyResolver.getDepResolverAspectName = () => DependencyResolverAspect.id;\n\n LegacyComponent.registerOnComponentOverridesLoading(\n DependencyResolverAspect.id,\n async (configuredExtensions: ExtensionDataList, id: BitId, legacyFiles: SourceFile[]) => {\n const policy = await dependencyResolver.mergeVariantPolicies(configuredExtensions, id, legacyFiles);\n return policy.toLegacyDepsOverrides();\n }\n );\n DependencyResolver.registerWorkspacePolicyGetter(() => {\n const workspacePolicy = dependencyResolver.getWorkspacePolicy();\n return workspacePolicy.toManifest();\n });\n DependencyResolver.registerEnvDetectorGetter(async (extensions: ExtensionDataList) => {\n return dependencyResolver.calcComponentEnvDepDetectors(extensions);\n });\n DependencyResolver.registerHarmonyEnvPeersPolicyForEnvItselfGetter(async (id: BitId, files: SourceFile[]) => {\n const envPolicy = await dependencyResolver.getEnvPolicyFromEnvLegacyId(id, files);\n if (!envPolicy) return undefined;\n return envPolicy.selfPolicy.toVersionManifest();\n });\n if (aspectLoader)\n aspectLoader.registerOnLoadRequireableExtensionSlot(\n dependencyResolver.onLoadRequireableExtensionSubscriber.bind(dependencyResolver)\n );\n\n graphql.register(dependencyResolverSchema(dependencyResolver));\n envs.registerService(new DependenciesService());\n\n return dependencyResolver;\n }\n\n getEmptyDepsObject(): ManifestDependenciesObject {\n return {\n dependencies: {},\n devDependencies: {},\n peerDependencies: {},\n };\n }\n\n /**\n * Returns a list of target locations where that given component was hard linked to.\n *\n * @param rootDir - The root directory of the workspace\n * @param componentDir - Relative path to the component's directory\n * @param packageName - The injected component's packageName\n */\n async getInjectedDirs(rootDir: string, componentDir: string, packageName: string): Promise<string[]> {\n const packageManager = this.getPackageManager();\n if (typeof packageManager?.getInjectedDirs === 'function') {\n return packageManager.getInjectedDirs(rootDir, componentDir, packageName);\n }\n return [];\n }\n\n getWorkspaceDepsOfBitRoots(manifests: ProjectManifest[]): Record<string, string> {\n const packageManager = this.getPackageManager();\n if (!packageManager) {\n throw new PackageManagerNotFound(this.config.packageManager);\n }\n return packageManager.getWorkspaceDepsOfBitRoots(manifests);\n }\n}\n\nDependencyResolverAspect.addRuntime(DependencyResolverMain);\n\nfunction repeatPrefix(originalSpec: string, newVersion: string): string {\n switch (originalSpec[0]) {\n case '~':\n case '^':\n return `${originalSpec[0]}${newVersion}`;\n default:\n return newVersion;\n }\n}\n\nfunction newVersionRange(currentRange: string, forceVersionBump?: 'major' | 'minor' | 'patch') {\n if (forceVersionBump == null || forceVersionBump === 'major') return 'latest';\n const currentVersion = semver.valid(currentRange.replace(/[\\^~]/, ''));\n if (!currentVersion) return null;\n const [major, minor] = currentVersion.split('.');\n switch (forceVersionBump) {\n case 'patch':\n return `>=${currentVersion} <${major}.${+minor + 1}.0`;\n case 'minor':\n return `>=${currentVersion} <${+major + 1}.0.0`;\n default:\n return null;\n }\n}\n\nexport interface MergedOutdatedPkg extends OutdatedPkg {\n dependentComponents?: ComponentID[];\n hasDifferentRanges?: boolean;\n}\n\nfunction mergeOutdatedPkgs(outdatedPkgs: OutdatedPkg[]): MergedOutdatedPkg[] {\n const mergedOutdatedPkgs: Record<\n string,\n MergedOutdatedPkg & Required<Pick<MergedOutdatedPkg, 'dependentComponents'>>\n > = {};\n const outdatedPkgsNotFromComponentModel: OutdatedPkg[] = [];\n for (const outdatedPkg of outdatedPkgs) {\n if (outdatedPkg.source === 'component-model' && outdatedPkg.componentId) {\n if (!mergedOutdatedPkgs[outdatedPkg.name]) {\n mergedOutdatedPkgs[outdatedPkg.name] = {\n ...omit(outdatedPkg, ['componentId']),\n source: 'rootPolicy',\n dependentComponents: [outdatedPkg.componentId],\n };\n } else {\n if (mergedOutdatedPkgs[outdatedPkg.name].currentRange !== outdatedPkg.currentRange) {\n mergedOutdatedPkgs[outdatedPkg.name].hasDifferentRanges = true;\n }\n mergedOutdatedPkgs[outdatedPkg.name].currentRange = tryPickLowestRange(\n mergedOutdatedPkgs[outdatedPkg.name].currentRange,\n outdatedPkg.currentRange\n );\n mergedOutdatedPkgs[outdatedPkg.name].dependentComponents.push(outdatedPkg.componentId);\n if (outdatedPkg.targetField === 'dependencies') {\n mergedOutdatedPkgs[outdatedPkg.name].targetField = outdatedPkg.targetField;\n }\n }\n } else {\n outdatedPkgsNotFromComponentModel.push(outdatedPkg);\n }\n }\n return [...Object.values(mergedOutdatedPkgs), ...outdatedPkgsNotFromComponentModel];\n}\n\nfunction tryPickLowestRange(range1: string, range2: string) {\n if (range1 === '*' || range2 === '*') return '*';\n try {\n return semver.lt(rangeToVersion(range1), rangeToVersion(range2)) ? range1 : range2;\n } catch {\n return '*';\n }\n}\n\nfunction rangeToVersion(range: string) {\n if (range.startsWith('~') || range.startsWith('^')) {\n return range.substring(1);\n }\n return range;\n}\n"],"mappings":"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"}
|
|
@@ -178,7 +178,7 @@ function handlePeersOnly(dedupedDependencies, packageName, indexItems) {
|
|
|
178
178
|
conflictedComponents,
|
|
179
179
|
conflictMessage
|
|
180
180
|
};
|
|
181
|
-
(_dedupedDependencies$ = dedupedDependencies.issus) === null || _dedupedDependencies$ === void 0
|
|
181
|
+
(_dedupedDependencies$ = dedupedDependencies.issus) === null || _dedupedDependencies$ === void 0 ? void 0 : _dedupedDependencies$.peerConflicts.push(issue);
|
|
182
182
|
}
|
|
183
183
|
return false;
|
|
184
184
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_forEachObjIndexed","data","_interopRequireDefault","require","_lodash","_semver","_semverIntersect","_semverRangeIntersect","_componentVersion","_constants","obj","__esModule","default","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","hoistDependencies","depIdIndex","options","result","getEmptyDedupedDependencies","indexItem","packageName","toContinue","handlePreserved","addOneOccurrenceToRoot","componentItems","handlePeersOnly","dedupePeerDependencies","groupedByRangeOrVersion","groupByRangeOrVersion","versions","ranges","handleExactVersionsOnly","handleRangesOnly","handleRangesAndVersions","dedupedDependencies","preservedVersion","metadata","preservedLifecycleType","keyName","KEY_NAME_BY_LIFECYCLE_TYPE","rootDependencies","filterFunc","item","intersect","range","map","addToComponentDependenciesMapInDeduped","indexItems","uniqVersions","uniq","lifecycleType","nonPeerItems","PEER_DEP_LIFECYCLE_TYPE","allRanges","intersected","_dedupedDependencies$","conflictedComponents","componentPackageName","origin","conflictMessage","c","join","issue","issus","peerConflicts","allVersions","mostCommonVersion","findMostCommonVersion","version","lifeCycleType","getLifecycleType","depKeyName","rangesVersions","bestRange","findBestRange","intersectedRange","includes","groups","count","sortedByTotal","getSortedRangesCombination","combinationWithTotal","combination","total","counts","countBy","uniqRanges","rangesCombinations","arrayCombinations","countMultipleRanges","items","reduce","acc","curr","rangesCombinationsWithTotalCount","sortBy","property","reverse","DEV_DEP_LIFECYCLE_TYPE","RUNTIME_DEP_LIFECYCLE_TYPE","forEachObjIndexed","toFilter","compEntry","componentDependenciesMap","get","dependencies","devDependencies","peerDependencies","set","isVersionRange","isRange","compIdStr","validRange","semver","isHash","startsWith","Error","parsed","parseRange","condition","array","fn","n","src","got","all","j","slice","concat","Map"],"sources":["hoist-dependencies.ts"],"sourcesContent":["import forEachObjIndexed from 'ramda/src/forEachObjIndexed';\nimport { countBy, property, sortBy, uniq } from 'lodash';\nimport semver from 'semver';\nimport { parseRange } from 'semver-intersect';\nimport { intersect } from 'semver-range-intersect';\nimport { isHash } from '@teambit/component-version';\n\nimport {\n DEV_DEP_LIFECYCLE_TYPE,\n KEY_NAME_BY_LIFECYCLE_TYPE,\n PEER_DEP_LIFECYCLE_TYPE,\n RUNTIME_DEP_LIFECYCLE_TYPE,\n} from '../../dependencies/constants';\nimport { DependencyLifecycleType, SemverVersion, PackageName } from '../../dependencies';\nimport { DedupedDependencies, DedupedDependenciesPeerConflicts } from './dedupe-dependencies';\nimport { PackageNameIndex, PackageNameIndexItem, PackageNameIndexComponentItem } from './index-by-dep-id';\n\ntype ItemsGroupedByRangeOrVersion = {\n ranges: PackageNameIndexComponentItem[];\n versions: PackageNameIndexComponentItem[];\n};\n\ntype MostCommonVersion = {\n version: SemverVersion;\n count: number;\n};\n\ntype BestRange = {\n count: number;\n ranges: SemverVersion[];\n intersectedRange: SemverVersion;\n};\n\ntype CombinationWithTotal = {\n combination: SemverVersion[];\n total: number;\n};\n\n/**\n * This is the second phase of the deduping process.\n * It will get the index calculated in the first phase (with dep id as key)\n * and will find the most intersect range for each dep and move it to the root\n * it will also move deps which are both dev deps and runtime deps to be runtime deps\n *\n * @param {PackageNameIndex} depIdIndex\n * @returns {DedupedDependencies}\n */\nexport function hoistDependencies(\n depIdIndex: PackageNameIndex,\n options?: { dedupePeerDependencies?: boolean }\n): DedupedDependencies {\n const result: DedupedDependencies = getEmptyDedupedDependencies();\n\n // TODO: handle git urls\n\n depIdIndex.forEach((indexItem, packageName) => {\n let toContinue;\n toContinue = handlePreserved(result, packageName, indexItem);\n if (!toContinue) return;\n toContinue = addOneOccurrenceToRoot(result, packageName, indexItem.componentItems);\n if (!toContinue) return;\n toContinue = handlePeersOnly(result, packageName, indexItem.componentItems);\n if (!toContinue && !options?.dedupePeerDependencies) return;\n const groupedByRangeOrVersion = groupByRangeOrVersion(indexItem.componentItems);\n if (groupedByRangeOrVersion.versions.length > 0 && groupedByRangeOrVersion.ranges.length === 0) {\n handleExactVersionsOnly(result, packageName, indexItem.componentItems);\n } else if (groupedByRangeOrVersion.versions.length === 0 && groupedByRangeOrVersion.ranges.length > 0) {\n handleRangesOnly(result, packageName, indexItem.componentItems);\n } else {\n handleRangesAndVersions(result, packageName, indexItem.componentItems, groupedByRangeOrVersion);\n }\n });\n\n return result;\n}\n\nfunction handlePreserved(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n indexItem: PackageNameIndexItem\n): boolean {\n const preservedVersion = indexItem.metadata.preservedVersion;\n // Not preserved, move on\n if (!preservedVersion) {\n return true;\n }\n\n const preservedLifecycleType = indexItem.metadata.preservedLifecycleType;\n\n const keyName = KEY_NAME_BY_LIFECYCLE_TYPE[preservedLifecycleType || 'dependencies'];\n dedupedDependencies.rootDependencies[keyName][packageName] = preservedVersion;\n\n const filterFunc = (item: PackageNameIndexComponentItem) => {\n // items which are intersect with the preserved version won't needed to be installed nested in the component\n // this in very rare cases might create bugs in case the version are intersects, but the real version in the registry\n // which satisfies the preserved not satisfy the item range.\n // In such case I would expect to get version not exist when coming to install the version in the nested component\n return !!intersect(item.range, preservedVersion);\n };\n\n indexItem.componentItems.map(addToComponentDependenciesMapInDeduped(dedupedDependencies, packageName, filterFunc));\n return false;\n}\n\n/**\n * In case there is only one component with a specific dependency,\n * OR\n * all the components have the same version of the dependency\n * add it to the root\n * (it used to check also if it's not peer, but we remove it for bit sign support)\n *\n * @param {DedupedDependencies} dedupedDependencies\n * @param {PackageName} packageName\n * @param {PackageNameIndexComponentItem} indexItem\n */\nfunction addOneOccurrenceToRoot(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n indexItems: PackageNameIndexComponentItem[]\n): boolean {\n if (indexItems.length > 1) {\n const uniqVersions = uniq(indexItems.map((item) => item.range));\n if (uniqVersions.length > 1) {\n return true;\n }\n }\n const indexItem = indexItems[0];\n // if (indexItem.lifecycleType !== PEER_DEP_LIFECYCLE_TYPE) {\n const keyName = KEY_NAME_BY_LIFECYCLE_TYPE[indexItem.lifecycleType];\n dedupedDependencies.rootDependencies[keyName][packageName] = indexItem.range;\n return false;\n // }\n // return true;\n}\n\n/**\n * Handle a case where the package appear as a peer for all its deponents\n * in that case we won't hoist it to the root, we will only notify about conflicts\n *\n * @param {DedupedDependencies} dedupedDependencies\n * @param {PackageName} packageName\n * @param {PackageNameIndexComponentItem[]} indexItems\n * @returns {boolean}\n */\nfunction handlePeersOnly(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n indexItems: PackageNameIndexComponentItem[]\n): boolean {\n const nonPeerItems = indexItems.filter((item) => {\n return item.lifecycleType !== PEER_DEP_LIFECYCLE_TYPE;\n });\n if (nonPeerItems.length > 0) {\n return true;\n }\n const allRanges = indexItems.map((item) => item.range);\n const intersected = intersect(...allRanges);\n if (intersected) {\n // Add to peers for each component to make sure we are getting warning from the package manager about missing peers\n indexItems.map(addToComponentDependenciesMapInDeduped(dedupedDependencies, packageName));\n } else {\n indexItems.map(addToComponentDependenciesMapInDeduped(dedupedDependencies, packageName));\n // There are peer version with conflicts, let the user know about it\n const conflictedComponents = indexItems.map((item) => {\n return {\n componentPackageName: item.origin,\n range: item.range,\n };\n });\n const conflictMessage = `The following components has conflicted peer dependencies: ${conflictedComponents\n .map((c) => c.componentPackageName)\n .join(',')} for the dependency: ${packageName}`;\n const issue: DedupedDependenciesPeerConflicts = {\n packageName,\n conflictedComponents,\n conflictMessage,\n };\n dedupedDependencies.issus?.peerConflicts.push(issue);\n }\n return false;\n}\n\n/**\n * This will handle a case when there is only exact version in the index\n * In such case it will take the most common version and hoist it to the root\n * It will set all the other version in the corresponding components\n * This assume the items has been already checked to contain only exact versions\n *\n * @param {DedupedDependencies} dedupedDependencies\n * @param {PackageName} packageName\n * @param {PackageNameIndexComponentItem[]} indexItems\n */\nfunction handleExactVersionsOnly(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n indexItems: PackageNameIndexComponentItem[]\n): void {\n const allVersions = indexItems.map((item) => item.range);\n\n // Add most common version to root\n const mostCommonVersion = findMostCommonVersion(allVersions).version;\n const lifeCycleType = getLifecycleType(indexItems);\n const depKeyName = KEY_NAME_BY_LIFECYCLE_TYPE[lifeCycleType];\n dedupedDependencies.rootDependencies[depKeyName][packageName] = mostCommonVersion;\n\n const filterFunc = (item) => {\n if (item.range === mostCommonVersion) return true;\n return false;\n };\n\n indexItems.forEach(addToComponentDependenciesMapInDeduped(dedupedDependencies, packageName, filterFunc));\n}\n\n/**\n * This will handle a case when there is only ranges in the index\n * In such case it will search for an intersection with the most components and hoist it to the root\n * It will set all the other ranges in the corresponding components\n * This assume the items has been already checked to contain only ranges\n *\n * @param {DedupedDependencies} dedupedDependencies\n * @param {PackageName} packageName\n * @param {PackageNameIndexComponentItem[]} indexItems\n */\nfunction handleRangesOnly(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n indexItems: PackageNameIndexComponentItem[]\n): void {\n const rangesVersions = indexItems.map((item) => item.range);\n const bestRange = findBestRange(rangesVersions);\n const lifeCycleType = getLifecycleType(indexItems);\n const depKeyName = KEY_NAME_BY_LIFECYCLE_TYPE[lifeCycleType];\n dedupedDependencies.rootDependencies[depKeyName][packageName] = bestRange.intersectedRange;\n\n const filterFunc = (item) => {\n if (bestRange.ranges.includes(item.range)) return true;\n return false;\n };\n\n indexItems.forEach(addToComponentDependenciesMapInDeduped(dedupedDependencies, packageName, filterFunc));\n}\n\n/**\n * This will handle a case when there is both ranges and exact versions in the index\n * it will find the best range and see how many components it fits\n * it will find the most common version and see how many components it fits\n * Then it will take the best of them and hoist into the root and put others in the components\n * TODO: this can be improved by adding to the ranges count the satisfying exact versions\n *\n * @param {DedupedDependencies} dedupedDependencies\n * @param {PackageName} packageName\n * @param {PackageNameIndexComponentItem[]} indexItems\n * @param {ItemsGroupedByRangeOrVersion} groups\n */\nfunction handleRangesAndVersions(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n indexItems: PackageNameIndexComponentItem[],\n groups: ItemsGroupedByRangeOrVersion\n): void {\n const allVersions = groups.versions.map((item) => item.range);\n const mostCommonVersion = findMostCommonVersion(allVersions);\n // Include versions here since we might have a specific version which match the best version as well\n const rangesVersions = indexItems.map((item) => item.range);\n const bestRange = findBestRange(rangesVersions);\n const lifeCycleType = getLifecycleType(indexItems);\n const depKeyName = KEY_NAME_BY_LIFECYCLE_TYPE[lifeCycleType];\n\n let filterFunc = (item) => {\n if (bestRange.ranges.includes(item.range)) return true;\n return false;\n };\n\n if (bestRange.count < mostCommonVersion.count) {\n dedupedDependencies.rootDependencies[depKeyName][packageName] = mostCommonVersion.version;\n filterFunc = (item) => {\n if (item.range === mostCommonVersion) return true;\n return false;\n };\n } else {\n dedupedDependencies.rootDependencies[depKeyName][packageName] = bestRange.intersectedRange;\n }\n indexItems.forEach(addToComponentDependenciesMapInDeduped(dedupedDependencies, packageName, filterFunc));\n}\n\n/**\n * Finding the best range - a range the intersect as many ranges as possible\n * it will work by create all the possible combination of the ranges\n * then try to intersect them based on the number of the ranges (items) and how many times they appear in the original array\n *\n * @param {SemverVersion[]} ranges\n * @returns {BestRange}\n */\nfunction findBestRange(ranges: SemverVersion[]): BestRange {\n const result: BestRange = {\n ranges: [],\n intersectedRange: '0.0.0',\n count: 0,\n };\n\n const sortedByTotal = getSortedRangesCombination(ranges);\n let i = 0;\n // Since it's already sorted by count, once we found match we can stop looping\n while (result.count === 0 && i < sortedByTotal.length) {\n const combinationWithTotal = sortedByTotal[i];\n const intersectedRange = intersect(...combinationWithTotal.combination);\n if (intersectedRange) {\n result.intersectedRange = intersectedRange;\n result.ranges = combinationWithTotal.combination;\n result.count = combinationWithTotal.total;\n } else {\n i += 1;\n }\n }\n return result;\n}\n\n// function getSortedVersionsWithTotal(versions: SemverVersion[]): VersionWithTotal[] {\n// const counts = countBy((item) => item)(versions);\n// const uniqVersions = uniq(versions);\n// const versionsWithTotalCount = uniqVersions.map((version) => {\n// return {\n// version,\n// total: counts[version],\n// };\n// });\n\n// const sortByTotal = sortBy(prop('total'));\n// const sortedByTotal = sortByTotal(versionsWithTotalCount).reverse();\n// return sortedByTotal;\n// }\n\nfunction getSortedRangesCombination(ranges: SemverVersion[]): CombinationWithTotal[] {\n const counts = countBy(ranges, (item) => item);\n const uniqRanges = uniq(ranges);\n const rangesCombinations = arrayCombinations<SemverVersion>(uniqRanges);\n const countMultipleRanges = (items: SemverVersion[]): number => {\n return items.reduce((acc, curr) => {\n return acc + counts[curr];\n }, 0);\n };\n // The count is count of the items and for each item how many times it appear in the original ranges\n // Since there might be same range multiple time in the original ranges array.\n\n const rangesCombinationsWithTotalCount = rangesCombinations.map((combination) => {\n return {\n combination,\n total: countMultipleRanges(combination),\n };\n });\n\n const sortedByTotal = sortBy(rangesCombinationsWithTotalCount, property('total')).reverse();\n return sortedByTotal;\n}\n\n/**\n * Check if a package should be a dev dependency or runtime dependency by checking if it appears as runtime dependency at least once\n *\n * @param {PackageNameIndexComponentItem[]} indexItems\n * @returns {DependencyLifecycleType}\n */\nfunction getLifecycleType(indexItems: PackageNameIndexComponentItem[]): DependencyLifecycleType {\n let result: DependencyLifecycleType = DEV_DEP_LIFECYCLE_TYPE;\n indexItems.forEach((item) => {\n if (item.lifecycleType === RUNTIME_DEP_LIFECYCLE_TYPE) {\n result = RUNTIME_DEP_LIFECYCLE_TYPE;\n }\n });\n return result;\n}\n\n/**\n * Find the version that appears the most\n *\n * @param {SemverVersion[]} versions\n * @returns {MostCommonVersion}\n */\nfunction findMostCommonVersion(versions: SemverVersion[]): MostCommonVersion {\n const counts = countBy(versions, (item) => item);\n const result: MostCommonVersion = {\n version: '0.0.0',\n count: 0,\n };\n forEachObjIndexed((count, version) => {\n if (count > result.count) {\n result.version = version;\n result.count = count;\n }\n }, counts);\n return result;\n}\n\n/**\n * A wrapper function used to be passed to map on index items and add it to a component dependency in the deduped dependencies if it's filter function return false\n *\n * @param {DedupedDependencies} dedupedDependencies\n * @param {PackageName} packageName\n * @param {(item: PackageNameIndexComponentItem) => boolean} [filterFunc]\n * @returns\n */\nfunction addToComponentDependenciesMapInDeduped(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n filterFunc?: (item: PackageNameIndexComponentItem) => boolean\n) {\n return (indexItem: PackageNameIndexComponentItem) => {\n if (filterFunc && typeof filterFunc === 'function') {\n const toFilter = filterFunc(indexItem);\n if (toFilter) return;\n }\n let compEntry = dedupedDependencies.componentDependenciesMap.get(indexItem.origin);\n const depKeyName = KEY_NAME_BY_LIFECYCLE_TYPE[indexItem.lifecycleType];\n if (!compEntry) {\n compEntry = {\n dependencies: {},\n devDependencies: {},\n peerDependencies: {},\n };\n }\n compEntry[depKeyName] = {\n ...compEntry[depKeyName],\n [packageName]: indexItem.range,\n };\n dedupedDependencies.componentDependenciesMap.set(indexItem.origin, compEntry);\n };\n}\n\n/**\n * Get an array of index items and group them to items with ranges and items with exact version\n *\n * @param {PackageNameIndexComponentItem[]} indexItems\n * @returns {ItemsGroupedByRangeOrVersion}\n */\nfunction groupByRangeOrVersion(indexItems: PackageNameIndexComponentItem[]): ItemsGroupedByRangeOrVersion {\n const result: ItemsGroupedByRangeOrVersion = {\n ranges: [],\n versions: [],\n };\n indexItems.forEach((item) => {\n const isVersionRange = isRange(item.range, item.origin);\n if (isVersionRange) {\n result.ranges.push(item);\n } else {\n result.versions.push(item);\n }\n });\n return result;\n}\n\nexport function isRange(version: string, compIdStr: string) {\n const validRange = semver.validRange(version);\n if (!validRange) {\n if (!isHash(version) && !version.startsWith('workspace:')) {\n throw new Error(\n `fatal: the version \"${version}\" originated from a dependent \"${compIdStr}\" is invalid semver range and not a hash`\n );\n }\n return false;\n }\n // parseRange does not support `*` as version\n // `*` does not affect resulted version, it might be just ignored\n if (validRange === '*') {\n return true;\n }\n const parsed = parseRange(validRange);\n if (parsed.condition === '=') {\n return false;\n }\n return true;\n}\n\n// Taken from https://web.archive.org/web/20140418004051/http://dzone.com/snippets/calculate-all-combinations\n/**\n * Return all combinations of array items. for example:\n * arrayCombinations([1,2]) == [[1], [2], [1,2]];\n *\n * @param {Array<T>} array\n * @returns {Array<T[]>}\n */\nfunction arrayCombinations<T>(array: Array<T>): Array<T[]> {\n const fn = function (n, src, got, all) {\n if (n === 0) {\n if (got.length > 0) {\n all[all.length] = got;\n }\n return;\n }\n // eslint-disable-next-line\n for (let j = 0; j < src.length; j++) {\n fn(n - 1, src.slice(j + 1), got.concat([src[j]]), all);\n }\n };\n const all: Array<T[]> = [];\n // eslint-disable-next-line\n for (let i = 0; i < array.length; i++) {\n fn(i, array, [], all);\n }\n all.push(array);\n return all;\n}\n\nexport function getEmptyDedupedDependencies(): DedupedDependencies {\n const result: DedupedDependencies = {\n rootDependencies: {\n dependencies: {},\n devDependencies: {},\n peerDependencies: {},\n },\n componentDependenciesMap: new Map(),\n issus: {\n peerConflicts: [],\n },\n };\n return result;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_forEachObjIndexed","data","_interopRequireDefault","require","_lodash","_semver","_semverIntersect","_semverRangeIntersect","_componentVersion","_constants","obj","__esModule","default","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","hoistDependencies","depIdIndex","options","result","getEmptyDedupedDependencies","indexItem","packageName","toContinue","handlePreserved","addOneOccurrenceToRoot","componentItems","handlePeersOnly","dedupePeerDependencies","groupedByRangeOrVersion","groupByRangeOrVersion","versions","ranges","handleExactVersionsOnly","handleRangesOnly","handleRangesAndVersions","dedupedDependencies","preservedVersion","metadata","preservedLifecycleType","keyName","KEY_NAME_BY_LIFECYCLE_TYPE","rootDependencies","filterFunc","item","intersect","range","map","addToComponentDependenciesMapInDeduped","indexItems","uniqVersions","uniq","lifecycleType","nonPeerItems","PEER_DEP_LIFECYCLE_TYPE","allRanges","intersected","_dedupedDependencies$","conflictedComponents","componentPackageName","origin","conflictMessage","c","join","issue","issus","peerConflicts","allVersions","mostCommonVersion","findMostCommonVersion","version","lifeCycleType","getLifecycleType","depKeyName","rangesVersions","bestRange","findBestRange","intersectedRange","includes","groups","count","sortedByTotal","getSortedRangesCombination","combinationWithTotal","combination","total","counts","countBy","uniqRanges","rangesCombinations","arrayCombinations","countMultipleRanges","items","reduce","acc","curr","rangesCombinationsWithTotalCount","sortBy","property","reverse","DEV_DEP_LIFECYCLE_TYPE","RUNTIME_DEP_LIFECYCLE_TYPE","forEachObjIndexed","toFilter","compEntry","componentDependenciesMap","get","dependencies","devDependencies","peerDependencies","set","isVersionRange","isRange","compIdStr","validRange","semver","isHash","startsWith","Error","parsed","parseRange","condition","array","fn","n","src","got","all","j","slice","concat","Map"],"sources":["hoist-dependencies.ts"],"sourcesContent":["import forEachObjIndexed from 'ramda/src/forEachObjIndexed';\nimport { countBy, property, sortBy, uniq } from 'lodash';\nimport semver from 'semver';\nimport { parseRange } from 'semver-intersect';\nimport { intersect } from 'semver-range-intersect';\nimport { isHash } from '@teambit/component-version';\n\nimport {\n DEV_DEP_LIFECYCLE_TYPE,\n KEY_NAME_BY_LIFECYCLE_TYPE,\n PEER_DEP_LIFECYCLE_TYPE,\n RUNTIME_DEP_LIFECYCLE_TYPE,\n} from '../../dependencies/constants';\nimport { DependencyLifecycleType, SemverVersion, PackageName } from '../../dependencies';\nimport { DedupedDependencies, DedupedDependenciesPeerConflicts } from './dedupe-dependencies';\nimport { PackageNameIndex, PackageNameIndexItem, PackageNameIndexComponentItem } from './index-by-dep-id';\n\ntype ItemsGroupedByRangeOrVersion = {\n ranges: PackageNameIndexComponentItem[];\n versions: PackageNameIndexComponentItem[];\n};\n\ntype MostCommonVersion = {\n version: SemverVersion;\n count: number;\n};\n\ntype BestRange = {\n count: number;\n ranges: SemverVersion[];\n intersectedRange: SemverVersion;\n};\n\ntype CombinationWithTotal = {\n combination: SemverVersion[];\n total: number;\n};\n\n/**\n * This is the second phase of the deduping process.\n * It will get the index calculated in the first phase (with dep id as key)\n * and will find the most intersect range for each dep and move it to the root\n * it will also move deps which are both dev deps and runtime deps to be runtime deps\n *\n * @param {PackageNameIndex} depIdIndex\n * @returns {DedupedDependencies}\n */\nexport function hoistDependencies(\n depIdIndex: PackageNameIndex,\n options?: { dedupePeerDependencies?: boolean }\n): DedupedDependencies {\n const result: DedupedDependencies = getEmptyDedupedDependencies();\n\n // TODO: handle git urls\n\n depIdIndex.forEach((indexItem, packageName) => {\n let toContinue;\n toContinue = handlePreserved(result, packageName, indexItem);\n if (!toContinue) return;\n toContinue = addOneOccurrenceToRoot(result, packageName, indexItem.componentItems);\n if (!toContinue) return;\n toContinue = handlePeersOnly(result, packageName, indexItem.componentItems);\n if (!toContinue && !options?.dedupePeerDependencies) return;\n const groupedByRangeOrVersion = groupByRangeOrVersion(indexItem.componentItems);\n if (groupedByRangeOrVersion.versions.length > 0 && groupedByRangeOrVersion.ranges.length === 0) {\n handleExactVersionsOnly(result, packageName, indexItem.componentItems);\n } else if (groupedByRangeOrVersion.versions.length === 0 && groupedByRangeOrVersion.ranges.length > 0) {\n handleRangesOnly(result, packageName, indexItem.componentItems);\n } else {\n handleRangesAndVersions(result, packageName, indexItem.componentItems, groupedByRangeOrVersion);\n }\n });\n\n return result;\n}\n\nfunction handlePreserved(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n indexItem: PackageNameIndexItem\n): boolean {\n const preservedVersion = indexItem.metadata.preservedVersion;\n // Not preserved, move on\n if (!preservedVersion) {\n return true;\n }\n\n const preservedLifecycleType = indexItem.metadata.preservedLifecycleType;\n\n const keyName = KEY_NAME_BY_LIFECYCLE_TYPE[preservedLifecycleType || 'dependencies'];\n dedupedDependencies.rootDependencies[keyName][packageName] = preservedVersion;\n\n const filterFunc = (item: PackageNameIndexComponentItem) => {\n // items which are intersect with the preserved version won't needed to be installed nested in the component\n // this in very rare cases might create bugs in case the version are intersects, but the real version in the registry\n // which satisfies the preserved not satisfy the item range.\n // In such case I would expect to get version not exist when coming to install the version in the nested component\n return !!intersect(item.range, preservedVersion);\n };\n\n indexItem.componentItems.map(addToComponentDependenciesMapInDeduped(dedupedDependencies, packageName, filterFunc));\n return false;\n}\n\n/**\n * In case there is only one component with a specific dependency,\n * OR\n * all the components have the same version of the dependency\n * add it to the root\n * (it used to check also if it's not peer, but we remove it for bit sign support)\n *\n * @param {DedupedDependencies} dedupedDependencies\n * @param {PackageName} packageName\n * @param {PackageNameIndexComponentItem} indexItem\n */\nfunction addOneOccurrenceToRoot(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n indexItems: PackageNameIndexComponentItem[]\n): boolean {\n if (indexItems.length > 1) {\n const uniqVersions = uniq(indexItems.map((item) => item.range));\n if (uniqVersions.length > 1) {\n return true;\n }\n }\n const indexItem = indexItems[0];\n // if (indexItem.lifecycleType !== PEER_DEP_LIFECYCLE_TYPE) {\n const keyName = KEY_NAME_BY_LIFECYCLE_TYPE[indexItem.lifecycleType];\n dedupedDependencies.rootDependencies[keyName][packageName] = indexItem.range;\n return false;\n // }\n // return true;\n}\n\n/**\n * Handle a case where the package appear as a peer for all its deponents\n * in that case we won't hoist it to the root, we will only notify about conflicts\n *\n * @param {DedupedDependencies} dedupedDependencies\n * @param {PackageName} packageName\n * @param {PackageNameIndexComponentItem[]} indexItems\n * @returns {boolean}\n */\nfunction handlePeersOnly(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n indexItems: PackageNameIndexComponentItem[]\n): boolean {\n const nonPeerItems = indexItems.filter((item) => {\n return item.lifecycleType !== PEER_DEP_LIFECYCLE_TYPE;\n });\n if (nonPeerItems.length > 0) {\n return true;\n }\n const allRanges = indexItems.map((item) => item.range);\n const intersected = intersect(...allRanges);\n if (intersected) {\n // Add to peers for each component to make sure we are getting warning from the package manager about missing peers\n indexItems.map(addToComponentDependenciesMapInDeduped(dedupedDependencies, packageName));\n } else {\n indexItems.map(addToComponentDependenciesMapInDeduped(dedupedDependencies, packageName));\n // There are peer version with conflicts, let the user know about it\n const conflictedComponents = indexItems.map((item) => {\n return {\n componentPackageName: item.origin,\n range: item.range,\n };\n });\n const conflictMessage = `The following components has conflicted peer dependencies: ${conflictedComponents\n .map((c) => c.componentPackageName)\n .join(',')} for the dependency: ${packageName}`;\n const issue: DedupedDependenciesPeerConflicts = {\n packageName,\n conflictedComponents,\n conflictMessage,\n };\n dedupedDependencies.issus?.peerConflicts.push(issue);\n }\n return false;\n}\n\n/**\n * This will handle a case when there is only exact version in the index\n * In such case it will take the most common version and hoist it to the root\n * It will set all the other version in the corresponding components\n * This assume the items has been already checked to contain only exact versions\n *\n * @param {DedupedDependencies} dedupedDependencies\n * @param {PackageName} packageName\n * @param {PackageNameIndexComponentItem[]} indexItems\n */\nfunction handleExactVersionsOnly(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n indexItems: PackageNameIndexComponentItem[]\n): void {\n const allVersions = indexItems.map((item) => item.range);\n\n // Add most common version to root\n const mostCommonVersion = findMostCommonVersion(allVersions).version;\n const lifeCycleType = getLifecycleType(indexItems);\n const depKeyName = KEY_NAME_BY_LIFECYCLE_TYPE[lifeCycleType];\n dedupedDependencies.rootDependencies[depKeyName][packageName] = mostCommonVersion;\n\n const filterFunc = (item) => {\n if (item.range === mostCommonVersion) return true;\n return false;\n };\n\n indexItems.forEach(addToComponentDependenciesMapInDeduped(dedupedDependencies, packageName, filterFunc));\n}\n\n/**\n * This will handle a case when there is only ranges in the index\n * In such case it will search for an intersection with the most components and hoist it to the root\n * It will set all the other ranges in the corresponding components\n * This assume the items has been already checked to contain only ranges\n *\n * @param {DedupedDependencies} dedupedDependencies\n * @param {PackageName} packageName\n * @param {PackageNameIndexComponentItem[]} indexItems\n */\nfunction handleRangesOnly(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n indexItems: PackageNameIndexComponentItem[]\n): void {\n const rangesVersions = indexItems.map((item) => item.range);\n const bestRange = findBestRange(rangesVersions);\n const lifeCycleType = getLifecycleType(indexItems);\n const depKeyName = KEY_NAME_BY_LIFECYCLE_TYPE[lifeCycleType];\n dedupedDependencies.rootDependencies[depKeyName][packageName] = bestRange.intersectedRange;\n\n const filterFunc = (item) => {\n if (bestRange.ranges.includes(item.range)) return true;\n return false;\n };\n\n indexItems.forEach(addToComponentDependenciesMapInDeduped(dedupedDependencies, packageName, filterFunc));\n}\n\n/**\n * This will handle a case when there is both ranges and exact versions in the index\n * it will find the best range and see how many components it fits\n * it will find the most common version and see how many components it fits\n * Then it will take the best of them and hoist into the root and put others in the components\n * TODO: this can be improved by adding to the ranges count the satisfying exact versions\n *\n * @param {DedupedDependencies} dedupedDependencies\n * @param {PackageName} packageName\n * @param {PackageNameIndexComponentItem[]} indexItems\n * @param {ItemsGroupedByRangeOrVersion} groups\n */\nfunction handleRangesAndVersions(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n indexItems: PackageNameIndexComponentItem[],\n groups: ItemsGroupedByRangeOrVersion\n): void {\n const allVersions = groups.versions.map((item) => item.range);\n const mostCommonVersion = findMostCommonVersion(allVersions);\n // Include versions here since we might have a specific version which match the best version as well\n const rangesVersions = indexItems.map((item) => item.range);\n const bestRange = findBestRange(rangesVersions);\n const lifeCycleType = getLifecycleType(indexItems);\n const depKeyName = KEY_NAME_BY_LIFECYCLE_TYPE[lifeCycleType];\n\n let filterFunc = (item) => {\n if (bestRange.ranges.includes(item.range)) return true;\n return false;\n };\n\n if (bestRange.count < mostCommonVersion.count) {\n dedupedDependencies.rootDependencies[depKeyName][packageName] = mostCommonVersion.version;\n filterFunc = (item) => {\n if (item.range === mostCommonVersion) return true;\n return false;\n };\n } else {\n dedupedDependencies.rootDependencies[depKeyName][packageName] = bestRange.intersectedRange;\n }\n indexItems.forEach(addToComponentDependenciesMapInDeduped(dedupedDependencies, packageName, filterFunc));\n}\n\n/**\n * Finding the best range - a range the intersect as many ranges as possible\n * it will work by create all the possible combination of the ranges\n * then try to intersect them based on the number of the ranges (items) and how many times they appear in the original array\n *\n * @param {SemverVersion[]} ranges\n * @returns {BestRange}\n */\nfunction findBestRange(ranges: SemverVersion[]): BestRange {\n const result: BestRange = {\n ranges: [],\n intersectedRange: '0.0.0',\n count: 0,\n };\n\n const sortedByTotal = getSortedRangesCombination(ranges);\n let i = 0;\n // Since it's already sorted by count, once we found match we can stop looping\n while (result.count === 0 && i < sortedByTotal.length) {\n const combinationWithTotal = sortedByTotal[i];\n const intersectedRange = intersect(...combinationWithTotal.combination);\n if (intersectedRange) {\n result.intersectedRange = intersectedRange;\n result.ranges = combinationWithTotal.combination;\n result.count = combinationWithTotal.total;\n } else {\n i += 1;\n }\n }\n return result;\n}\n\n// function getSortedVersionsWithTotal(versions: SemverVersion[]): VersionWithTotal[] {\n// const counts = countBy((item) => item)(versions);\n// const uniqVersions = uniq(versions);\n// const versionsWithTotalCount = uniqVersions.map((version) => {\n// return {\n// version,\n// total: counts[version],\n// };\n// });\n\n// const sortByTotal = sortBy(prop('total'));\n// const sortedByTotal = sortByTotal(versionsWithTotalCount).reverse();\n// return sortedByTotal;\n// }\n\nfunction getSortedRangesCombination(ranges: SemverVersion[]): CombinationWithTotal[] {\n const counts = countBy(ranges, (item) => item);\n const uniqRanges = uniq(ranges);\n const rangesCombinations = arrayCombinations<SemverVersion>(uniqRanges);\n const countMultipleRanges = (items: SemverVersion[]): number => {\n return items.reduce((acc, curr) => {\n return acc + counts[curr];\n }, 0);\n };\n // The count is count of the items and for each item how many times it appear in the original ranges\n // Since there might be same range multiple time in the original ranges array.\n\n const rangesCombinationsWithTotalCount = rangesCombinations.map((combination) => {\n return {\n combination,\n total: countMultipleRanges(combination),\n };\n });\n\n const sortedByTotal = sortBy(rangesCombinationsWithTotalCount, property('total')).reverse();\n return sortedByTotal;\n}\n\n/**\n * Check if a package should be a dev dependency or runtime dependency by checking if it appears as runtime dependency at least once\n *\n * @param {PackageNameIndexComponentItem[]} indexItems\n * @returns {DependencyLifecycleType}\n */\nfunction getLifecycleType(indexItems: PackageNameIndexComponentItem[]): DependencyLifecycleType {\n let result: DependencyLifecycleType = DEV_DEP_LIFECYCLE_TYPE;\n indexItems.forEach((item) => {\n if (item.lifecycleType === RUNTIME_DEP_LIFECYCLE_TYPE) {\n result = RUNTIME_DEP_LIFECYCLE_TYPE;\n }\n });\n return result;\n}\n\n/**\n * Find the version that appears the most\n *\n * @param {SemverVersion[]} versions\n * @returns {MostCommonVersion}\n */\nfunction findMostCommonVersion(versions: SemverVersion[]): MostCommonVersion {\n const counts = countBy(versions, (item) => item);\n const result: MostCommonVersion = {\n version: '0.0.0',\n count: 0,\n };\n forEachObjIndexed((count, version) => {\n if (count > result.count) {\n result.version = version;\n result.count = count;\n }\n }, counts);\n return result;\n}\n\n/**\n * A wrapper function used to be passed to map on index items and add it to a component dependency in the deduped dependencies if it's filter function return false\n *\n * @param {DedupedDependencies} dedupedDependencies\n * @param {PackageName} packageName\n * @param {(item: PackageNameIndexComponentItem) => boolean} [filterFunc]\n * @returns\n */\nfunction addToComponentDependenciesMapInDeduped(\n dedupedDependencies: DedupedDependencies,\n packageName: PackageName,\n filterFunc?: (item: PackageNameIndexComponentItem) => boolean\n) {\n return (indexItem: PackageNameIndexComponentItem) => {\n if (filterFunc && typeof filterFunc === 'function') {\n const toFilter = filterFunc(indexItem);\n if (toFilter) return;\n }\n let compEntry = dedupedDependencies.componentDependenciesMap.get(indexItem.origin);\n const depKeyName = KEY_NAME_BY_LIFECYCLE_TYPE[indexItem.lifecycleType];\n if (!compEntry) {\n compEntry = {\n dependencies: {},\n devDependencies: {},\n peerDependencies: {},\n };\n }\n compEntry[depKeyName] = {\n ...compEntry[depKeyName],\n [packageName]: indexItem.range,\n };\n dedupedDependencies.componentDependenciesMap.set(indexItem.origin, compEntry);\n };\n}\n\n/**\n * Get an array of index items and group them to items with ranges and items with exact version\n *\n * @param {PackageNameIndexComponentItem[]} indexItems\n * @returns {ItemsGroupedByRangeOrVersion}\n */\nfunction groupByRangeOrVersion(indexItems: PackageNameIndexComponentItem[]): ItemsGroupedByRangeOrVersion {\n const result: ItemsGroupedByRangeOrVersion = {\n ranges: [],\n versions: [],\n };\n indexItems.forEach((item) => {\n const isVersionRange = isRange(item.range, item.origin);\n if (isVersionRange) {\n result.ranges.push(item);\n } else {\n result.versions.push(item);\n }\n });\n return result;\n}\n\nexport function isRange(version: string, compIdStr: string) {\n const validRange = semver.validRange(version);\n if (!validRange) {\n if (!isHash(version) && !version.startsWith('workspace:')) {\n throw new Error(\n `fatal: the version \"${version}\" originated from a dependent \"${compIdStr}\" is invalid semver range and not a hash`\n );\n }\n return false;\n }\n // parseRange does not support `*` as version\n // `*` does not affect resulted version, it might be just ignored\n if (validRange === '*') {\n return true;\n }\n const parsed = parseRange(validRange);\n if (parsed.condition === '=') {\n return false;\n }\n return true;\n}\n\n// Taken from https://web.archive.org/web/20140418004051/http://dzone.com/snippets/calculate-all-combinations\n/**\n * Return all combinations of array items. for example:\n * arrayCombinations([1,2]) == [[1], [2], [1,2]];\n *\n * @param {Array<T>} array\n * @returns {Array<T[]>}\n */\nfunction arrayCombinations<T>(array: Array<T>): Array<T[]> {\n const fn = function (n, src, got, all) {\n if (n === 0) {\n if (got.length > 0) {\n all[all.length] = got;\n }\n return;\n }\n // eslint-disable-next-line\n for (let j = 0; j < src.length; j++) {\n fn(n - 1, src.slice(j + 1), got.concat([src[j]]), all);\n }\n };\n const all: Array<T[]> = [];\n // eslint-disable-next-line\n for (let i = 0; i < array.length; i++) {\n fn(i, array, [], all);\n }\n all.push(array);\n return all;\n}\n\nexport function getEmptyDedupedDependencies(): DedupedDependencies {\n const result: DedupedDependencies = {\n rootDependencies: {\n dependencies: {},\n devDependencies: {},\n peerDependencies: {},\n },\n componentDependenciesMap: new Map(),\n issus: {\n peerConflicts: [],\n },\n };\n return result;\n}\n"],"mappings":";;;;;;;;AAAA,SAAAA,mBAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,kBAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,QAAA;EAAA,MAAAH,IAAA,GAAAE,OAAA;EAAAC,OAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,QAAA;EAAA,MAAAJ,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAE,OAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,iBAAA;EAAA,MAAAL,IAAA,GAAAE,OAAA;EAAAG,gBAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAM,sBAAA;EAAA,MAAAN,IAAA,GAAAE,OAAA;EAAAI,qBAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAO,kBAAA;EAAA,MAAAP,IAAA,GAAAE,OAAA;EAAAK,iBAAA,YAAAA,CAAA;IAAA,OAAAP,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAQ,WAAA;EAAA,MAAAR,IAAA,GAAAE,OAAA;EAAAM,UAAA,YAAAA,CAAA;IAAA,OAAAR,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAKsC,SAAAC,uBAAAQ,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,QAAAC,MAAA,EAAAC,cAAA,QAAAC,IAAA,GAAAC,MAAA,CAAAD,IAAA,CAAAF,MAAA,OAAAG,MAAA,CAAAC,qBAAA,QAAAC,OAAA,GAAAF,MAAA,CAAAC,qBAAA,CAAAJ,MAAA,GAAAC,cAAA,KAAAI,OAAA,GAAAA,OAAA,CAAAC,MAAA,WAAAC,GAAA,WAAAJ,MAAA,CAAAK,wBAAA,CAAAR,MAAA,EAAAO,GAAA,EAAAE,UAAA,OAAAP,IAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,IAAA,EAAAG,OAAA,YAAAH,IAAA;AAAA,SAAAU,cAAAC,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,WAAAF,SAAA,CAAAD,CAAA,IAAAC,SAAA,CAAAD,CAAA,QAAAA,CAAA,OAAAf,OAAA,CAAAI,MAAA,CAAAc,MAAA,OAAAC,OAAA,WAAAC,GAAA,IAAAC,eAAA,CAAAP,MAAA,EAAAM,GAAA,EAAAF,MAAA,CAAAE,GAAA,SAAAhB,MAAA,CAAAkB,yBAAA,GAAAlB,MAAA,CAAAmB,gBAAA,CAAAT,MAAA,EAAAV,MAAA,CAAAkB,yBAAA,CAAAJ,MAAA,KAAAlB,OAAA,CAAAI,MAAA,CAAAc,MAAA,GAAAC,OAAA,WAAAC,GAAA,IAAAhB,MAAA,CAAAoB,cAAA,CAAAV,MAAA,EAAAM,GAAA,EAAAhB,MAAA,CAAAK,wBAAA,CAAAS,MAAA,EAAAE,GAAA,iBAAAN,MAAA;AAAA,SAAAO,gBAAAxB,GAAA,EAAAuB,GAAA,EAAAK,KAAA,IAAAL,GAAA,GAAAM,cAAA,CAAAN,GAAA,OAAAA,GAAA,IAAAvB,GAAA,IAAAO,MAAA,CAAAoB,cAAA,CAAA3B,GAAA,EAAAuB,GAAA,IAAAK,KAAA,EAAAA,KAAA,EAAAf,UAAA,QAAAiB,YAAA,QAAAC,QAAA,oBAAA/B,GAAA,CAAAuB,GAAA,IAAAK,KAAA,WAAA5B,GAAA;AAAA,SAAA6B,eAAAG,GAAA,QAAAT,GAAA,GAAAU,YAAA,CAAAD,GAAA,2BAAAT,GAAA,gBAAAA,GAAA,GAAAW,MAAA,CAAAX,GAAA;AAAA,SAAAU,aAAAE,KAAA,EAAAC,IAAA,eAAAD,KAAA,iBAAAA,KAAA,kBAAAA,KAAA,MAAAE,IAAA,GAAAF,KAAA,CAAAG,MAAA,CAAAC,WAAA,OAAAF,IAAA,KAAAG,SAAA,QAAAC,GAAA,GAAAJ,IAAA,CAAAK,IAAA,CAAAP,KAAA,EAAAC,IAAA,2BAAAK,GAAA,sBAAAA,GAAA,YAAAE,SAAA,4DAAAP,IAAA,gBAAAF,MAAA,GAAAU,MAAA,EAAAT,KAAA;AA0BtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASU,iBAAiBA,CAC/BC,UAA4B,EAC5BC,OAA8C,EACzB;EACrB,MAAMC,MAA2B,GAAGC,2BAA2B,CAAC,CAAC;;EAEjE;;EAEAH,UAAU,CAACxB,OAAO,CAAC,CAAC4B,SAAS,EAAEC,WAAW,KAAK;IAC7C,IAAIC,UAAU;IACdA,UAAU,GAAGC,eAAe,CAACL,MAAM,EAAEG,WAAW,EAAED,SAAS,CAAC;IAC5D,IAAI,CAACE,UAAU,EAAE;IACjBA,UAAU,GAAGE,sBAAsB,CAACN,MAAM,EAAEG,WAAW,EAAED,SAAS,CAACK,cAAc,CAAC;IAClF,IAAI,CAACH,UAAU,EAAE;IACjBA,UAAU,GAAGI,eAAe,CAACR,MAAM,EAAEG,WAAW,EAAED,SAAS,CAACK,cAAc,CAAC;IAC3E,IAAI,CAACH,UAAU,IAAI,EAACL,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEU,sBAAsB,GAAE;IACrD,MAAMC,uBAAuB,GAAGC,qBAAqB,CAACT,SAAS,CAACK,cAAc,CAAC;IAC/E,IAAIG,uBAAuB,CAACE,QAAQ,CAACxC,MAAM,GAAG,CAAC,IAAIsC,uBAAuB,CAACG,MAAM,CAACzC,MAAM,KAAK,CAAC,EAAE;MAC9F0C,uBAAuB,CAACd,MAAM,EAAEG,WAAW,EAAED,SAAS,CAACK,cAAc,CAAC;IACxE,CAAC,MAAM,IAAIG,uBAAuB,CAACE,QAAQ,CAACxC,MAAM,KAAK,CAAC,IAAIsC,uBAAuB,CAACG,MAAM,CAACzC,MAAM,GAAG,CAAC,EAAE;MACrG2C,gBAAgB,CAACf,MAAM,EAAEG,WAAW,EAAED,SAAS,CAACK,cAAc,CAAC;IACjE,CAAC,MAAM;MACLS,uBAAuB,CAAChB,MAAM,EAAEG,WAAW,EAAED,SAAS,CAACK,cAAc,EAAEG,uBAAuB,CAAC;IACjG;EACF,CAAC,CAAC;EAEF,OAAOV,MAAM;AACf;AAEA,SAASK,eAAeA,CACtBY,mBAAwC,EACxCd,WAAwB,EACxBD,SAA+B,EACtB;EACT,MAAMgB,gBAAgB,GAAGhB,SAAS,CAACiB,QAAQ,CAACD,gBAAgB;EAC5D;EACA,IAAI,CAACA,gBAAgB,EAAE;IACrB,OAAO,IAAI;EACb;EAEA,MAAME,sBAAsB,GAAGlB,SAAS,CAACiB,QAAQ,CAACC,sBAAsB;EAExE,MAAMC,OAAO,GAAGC,uCAA0B,CAACF,sBAAsB,IAAI,cAAc,CAAC;EACpFH,mBAAmB,CAACM,gBAAgB,CAACF,OAAO,CAAC,CAAClB,WAAW,CAAC,GAAGe,gBAAgB;EAE7E,MAAMM,UAAU,GAAIC,IAAmC,IAAK;IAC1D;IACA;IACA;IACA;IACA,OAAO,CAAC,CAAC,IAAAC,iCAAS,EAACD,IAAI,CAACE,KAAK,EAAET,gBAAgB,CAAC;EAClD,CAAC;EAEDhB,SAAS,CAACK,cAAc,CAACqB,GAAG,CAACC,sCAAsC,CAACZ,mBAAmB,EAAEd,WAAW,EAAEqB,UAAU,CAAC,CAAC;EAClH,OAAO,KAAK;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASlB,sBAAsBA,CAC7BW,mBAAwC,EACxCd,WAAwB,EACxB2B,UAA2C,EAClC;EACT,IAAIA,UAAU,CAAC1D,MAAM,GAAG,CAAC,EAAE;IACzB,MAAM2D,YAAY,GAAG,IAAAC,cAAI,EAACF,UAAU,CAACF,GAAG,CAAEH,IAAI,IAAKA,IAAI,CAACE,KAAK,CAAC,CAAC;IAC/D,IAAII,YAAY,CAAC3D,MAAM,GAAG,CAAC,EAAE;MAC3B,OAAO,IAAI;IACb;EACF;EACA,MAAM8B,SAAS,GAAG4B,UAAU,CAAC,CAAC,CAAC;EAC/B;EACA,MAAMT,OAAO,GAAGC,uCAA0B,CAACpB,SAAS,CAAC+B,aAAa,CAAC;EACnEhB,mBAAmB,CAACM,gBAAgB,CAACF,OAAO,CAAC,CAAClB,WAAW,CAAC,GAAGD,SAAS,CAACyB,KAAK;EAC5E,OAAO,KAAK;EACZ;EACA;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASnB,eAAeA,CACtBS,mBAAwC,EACxCd,WAAwB,EACxB2B,UAA2C,EAClC;EACT,MAAMI,YAAY,GAAGJ,UAAU,CAACpE,MAAM,CAAE+D,IAAI,IAAK;IAC/C,OAAOA,IAAI,CAACQ,aAAa,KAAKE,oCAAuB;EACvD,CAAC,CAAC;EACF,IAAID,YAAY,CAAC9D,MAAM,GAAG,CAAC,EAAE;IAC3B,OAAO,IAAI;EACb;EACA,MAAMgE,SAAS,GAAGN,UAAU,CAACF,GAAG,CAAEH,IAAI,IAAKA,IAAI,CAACE,KAAK,CAAC;EACtD,MAAMU,WAAW,GAAG,IAAAX,iCAAS,EAAC,GAAGU,SAAS,CAAC;EAC3C,IAAIC,WAAW,EAAE;IACf;IACAP,UAAU,CAACF,GAAG,CAACC,sCAAsC,CAACZ,mBAAmB,EAAEd,WAAW,CAAC,CAAC;EAC1F,CAAC,MAAM;IAAA,IAAAmC,qBAAA;IACLR,UAAU,CAACF,GAAG,CAACC,sCAAsC,CAACZ,mBAAmB,EAAEd,WAAW,CAAC,CAAC;IACxF;IACA,MAAMoC,oBAAoB,GAAGT,UAAU,CAACF,GAAG,CAAEH,IAAI,IAAK;MACpD,OAAO;QACLe,oBAAoB,EAAEf,IAAI,CAACgB,MAAM;QACjCd,KAAK,EAAEF,IAAI,CAACE;MACd,CAAC;IACH,CAAC,CAAC;IACF,MAAMe,eAAe,GAAI,8DAA6DH,oBAAoB,CACvGX,GAAG,CAAEe,CAAC,IAAKA,CAAC,CAACH,oBAAoB,CAAC,CAClCI,IAAI,CAAC,GAAG,CAAE,wBAAuBzC,WAAY,EAAC;IACjD,MAAM0C,KAAuC,GAAG;MAC9C1C,WAAW;MACXoC,oBAAoB;MACpBG;IACF,CAAC;IACD,CAAAJ,qBAAA,GAAArB,mBAAmB,CAAC6B,KAAK,cAAAR,qBAAA,uBAAzBA,qBAAA,CAA2BS,aAAa,CAACjF,IAAI,CAAC+E,KAAK,CAAC;EACtD;EACA,OAAO,KAAK;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS/B,uBAAuBA,CAC9BG,mBAAwC,EACxCd,WAAwB,EACxB2B,UAA2C,EACrC;EACN,MAAMkB,WAAW,GAAGlB,UAAU,CAACF,GAAG,CAAEH,IAAI,IAAKA,IAAI,CAACE,KAAK,CAAC;;EAExD;EACA,MAAMsB,iBAAiB,GAAGC,qBAAqB,CAACF,WAAW,CAAC,CAACG,OAAO;EACpE,MAAMC,aAAa,GAAGC,gBAAgB,CAACvB,UAAU,CAAC;EAClD,MAAMwB,UAAU,GAAGhC,uCAA0B,CAAC8B,aAAa,CAAC;EAC5DnC,mBAAmB,CAACM,gBAAgB,CAAC+B,UAAU,CAAC,CAACnD,WAAW,CAAC,GAAG8C,iBAAiB;EAEjF,MAAMzB,UAAU,GAAIC,IAAI,IAAK;IAC3B,IAAIA,IAAI,CAACE,KAAK,KAAKsB,iBAAiB,EAAE,OAAO,IAAI;IACjD,OAAO,KAAK;EACd,CAAC;EAEDnB,UAAU,CAACxD,OAAO,CAACuD,sCAAsC,CAACZ,mBAAmB,EAAEd,WAAW,EAAEqB,UAAU,CAAC,CAAC;AAC1G;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAST,gBAAgBA,CACvBE,mBAAwC,EACxCd,WAAwB,EACxB2B,UAA2C,EACrC;EACN,MAAMyB,cAAc,GAAGzB,UAAU,CAACF,GAAG,CAAEH,IAAI,IAAKA,IAAI,CAACE,KAAK,CAAC;EAC3D,MAAM6B,SAAS,GAAGC,aAAa,CAACF,cAAc,CAAC;EAC/C,MAAMH,aAAa,GAAGC,gBAAgB,CAACvB,UAAU,CAAC;EAClD,MAAMwB,UAAU,GAAGhC,uCAA0B,CAAC8B,aAAa,CAAC;EAC5DnC,mBAAmB,CAACM,gBAAgB,CAAC+B,UAAU,CAAC,CAACnD,WAAW,CAAC,GAAGqD,SAAS,CAACE,gBAAgB;EAE1F,MAAMlC,UAAU,GAAIC,IAAI,IAAK;IAC3B,IAAI+B,SAAS,CAAC3C,MAAM,CAAC8C,QAAQ,CAAClC,IAAI,CAACE,KAAK,CAAC,EAAE,OAAO,IAAI;IACtD,OAAO,KAAK;EACd,CAAC;EAEDG,UAAU,CAACxD,OAAO,CAACuD,sCAAsC,CAACZ,mBAAmB,EAAEd,WAAW,EAAEqB,UAAU,CAAC,CAAC;AAC1G;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASR,uBAAuBA,CAC9BC,mBAAwC,EACxCd,WAAwB,EACxB2B,UAA2C,EAC3C8B,MAAoC,EAC9B;EACN,MAAMZ,WAAW,GAAGY,MAAM,CAAChD,QAAQ,CAACgB,GAAG,CAAEH,IAAI,IAAKA,IAAI,CAACE,KAAK,CAAC;EAC7D,MAAMsB,iBAAiB,GAAGC,qBAAqB,CAACF,WAAW,CAAC;EAC5D;EACA,MAAMO,cAAc,GAAGzB,UAAU,CAACF,GAAG,CAAEH,IAAI,IAAKA,IAAI,CAACE,KAAK,CAAC;EAC3D,MAAM6B,SAAS,GAAGC,aAAa,CAACF,cAAc,CAAC;EAC/C,MAAMH,aAAa,GAAGC,gBAAgB,CAACvB,UAAU,CAAC;EAClD,MAAMwB,UAAU,GAAGhC,uCAA0B,CAAC8B,aAAa,CAAC;EAE5D,IAAI5B,UAAU,GAAIC,IAAI,IAAK;IACzB,IAAI+B,SAAS,CAAC3C,MAAM,CAAC8C,QAAQ,CAAClC,IAAI,CAACE,KAAK,CAAC,EAAE,OAAO,IAAI;IACtD,OAAO,KAAK;EACd,CAAC;EAED,IAAI6B,SAAS,CAACK,KAAK,GAAGZ,iBAAiB,CAACY,KAAK,EAAE;IAC7C5C,mBAAmB,CAACM,gBAAgB,CAAC+B,UAAU,CAAC,CAACnD,WAAW,CAAC,GAAG8C,iBAAiB,CAACE,OAAO;IACzF3B,UAAU,GAAIC,IAAI,IAAK;MACrB,IAAIA,IAAI,CAACE,KAAK,KAAKsB,iBAAiB,EAAE,OAAO,IAAI;MACjD,OAAO,KAAK;IACd,CAAC;EACH,CAAC,MAAM;IACLhC,mBAAmB,CAACM,gBAAgB,CAAC+B,UAAU,CAAC,CAACnD,WAAW,CAAC,GAAGqD,SAAS,CAACE,gBAAgB;EAC5F;EACA5B,UAAU,CAACxD,OAAO,CAACuD,sCAAsC,CAACZ,mBAAmB,EAAEd,WAAW,EAAEqB,UAAU,CAAC,CAAC;AAC1G;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASiC,aAAaA,CAAC5C,MAAuB,EAAa;EACzD,MAAMb,MAAiB,GAAG;IACxBa,MAAM,EAAE,EAAE;IACV6C,gBAAgB,EAAE,OAAO;IACzBG,KAAK,EAAE;EACT,CAAC;EAED,MAAMC,aAAa,GAAGC,0BAA0B,CAAClD,MAAM,CAAC;EACxD,IAAI3C,CAAC,GAAG,CAAC;EACT;EACA,OAAO8B,MAAM,CAAC6D,KAAK,KAAK,CAAC,IAAI3F,CAAC,GAAG4F,aAAa,CAAC1F,MAAM,EAAE;IACrD,MAAM4F,oBAAoB,GAAGF,aAAa,CAAC5F,CAAC,CAAC;IAC7C,MAAMwF,gBAAgB,GAAG,IAAAhC,iCAAS,EAAC,GAAGsC,oBAAoB,CAACC,WAAW,CAAC;IACvE,IAAIP,gBAAgB,EAAE;MACpB1D,MAAM,CAAC0D,gBAAgB,GAAGA,gBAAgB;MAC1C1D,MAAM,CAACa,MAAM,GAAGmD,oBAAoB,CAACC,WAAW;MAChDjE,MAAM,CAAC6D,KAAK,GAAGG,oBAAoB,CAACE,KAAK;IAC3C,CAAC,MAAM;MACLhG,CAAC,IAAI,CAAC;IACR;EACF;EACA,OAAO8B,MAAM;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS+D,0BAA0BA,CAAClD,MAAuB,EAA0B;EACnF,MAAMsD,MAAM,GAAG,IAAAC,iBAAO,EAACvD,MAAM,EAAGY,IAAI,IAAKA,IAAI,CAAC;EAC9C,MAAM4C,UAAU,GAAG,IAAArC,cAAI,EAACnB,MAAM,CAAC;EAC/B,MAAMyD,kBAAkB,GAAGC,iBAAiB,CAAgBF,UAAU,CAAC;EACvE,MAAMG,mBAAmB,GAAIC,KAAsB,IAAa;IAC9D,OAAOA,KAAK,CAACC,MAAM,CAAC,CAACC,GAAG,EAAEC,IAAI,KAAK;MACjC,OAAOD,GAAG,GAAGR,MAAM,CAACS,IAAI,CAAC;IAC3B,CAAC,EAAE,CAAC,CAAC;EACP,CAAC;EACD;EACA;;EAEA,MAAMC,gCAAgC,GAAGP,kBAAkB,CAAC1C,GAAG,CAAEqC,WAAW,IAAK;IAC/E,OAAO;MACLA,WAAW;MACXC,KAAK,EAAEM,mBAAmB,CAACP,WAAW;IACxC,CAAC;EACH,CAAC,CAAC;EAEF,MAAMH,aAAa,GAAG,IAAAgB,gBAAM,EAACD,gCAAgC,EAAE,IAAAE,kBAAQ,EAAC,OAAO,CAAC,CAAC,CAACC,OAAO,CAAC,CAAC;EAC3F,OAAOlB,aAAa;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAST,gBAAgBA,CAACvB,UAA2C,EAA2B;EAC9F,IAAI9B,MAA+B,GAAGiF,mCAAsB;EAC5DnD,UAAU,CAACxD,OAAO,CAAEmD,IAAI,IAAK;IAC3B,IAAIA,IAAI,CAACQ,aAAa,KAAKiD,uCAA0B,EAAE;MACrDlF,MAAM,GAAGkF,uCAA0B;IACrC;EACF,CAAC,CAAC;EACF,OAAOlF,MAAM;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASkD,qBAAqBA,CAACtC,QAAyB,EAAqB;EAC3E,MAAMuD,MAAM,GAAG,IAAAC,iBAAO,EAACxD,QAAQ,EAAGa,IAAI,IAAKA,IAAI,CAAC;EAChD,MAAMzB,MAAyB,GAAG;IAChCmD,OAAO,EAAE,OAAO;IAChBU,KAAK,EAAE;EACT,CAAC;EACD,IAAAsB,4BAAiB,EAAC,CAACtB,KAAK,EAAEV,OAAO,KAAK;IACpC,IAAIU,KAAK,GAAG7D,MAAM,CAAC6D,KAAK,EAAE;MACxB7D,MAAM,CAACmD,OAAO,GAAGA,OAAO;MACxBnD,MAAM,CAAC6D,KAAK,GAAGA,KAAK;IACtB;EACF,CAAC,EAAEM,MAAM,CAAC;EACV,OAAOnE,MAAM;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS6B,sCAAsCA,CAC7CZ,mBAAwC,EACxCd,WAAwB,EACxBqB,UAA6D,EAC7D;EACA,OAAQtB,SAAwC,IAAK;IACnD,IAAIsB,UAAU,IAAI,OAAOA,UAAU,KAAK,UAAU,EAAE;MAClD,MAAM4D,QAAQ,GAAG5D,UAAU,CAACtB,SAAS,CAAC;MACtC,IAAIkF,QAAQ,EAAE;IAChB;IACA,IAAIC,SAAS,GAAGpE,mBAAmB,CAACqE,wBAAwB,CAACC,GAAG,CAACrF,SAAS,CAACuC,MAAM,CAAC;IAClF,MAAMa,UAAU,GAAGhC,uCAA0B,CAACpB,SAAS,CAAC+B,aAAa,CAAC;IACtE,IAAI,CAACoD,SAAS,EAAE;MACdA,SAAS,GAAG;QACVG,YAAY,EAAE,CAAC,CAAC;QAChBC,eAAe,EAAE,CAAC,CAAC;QACnBC,gBAAgB,EAAE,CAAC;MACrB,CAAC;IACH;IACAL,SAAS,CAAC/B,UAAU,CAAC,GAAAtF,aAAA,CAAAA,aAAA,KAChBqH,SAAS,CAAC/B,UAAU,CAAC;MACxB,CAACnD,WAAW,GAAGD,SAAS,CAACyB;IAAK,EAC/B;IACDV,mBAAmB,CAACqE,wBAAwB,CAACK,GAAG,CAACzF,SAAS,CAACuC,MAAM,EAAE4C,SAAS,CAAC;EAC/E,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS1E,qBAAqBA,CAACmB,UAA2C,EAAgC;EACxG,MAAM9B,MAAoC,GAAG;IAC3Ca,MAAM,EAAE,EAAE;IACVD,QAAQ,EAAE;EACZ,CAAC;EACDkB,UAAU,CAACxD,OAAO,CAAEmD,IAAI,IAAK;IAC3B,MAAMmE,cAAc,GAAGC,OAAO,CAACpE,IAAI,CAACE,KAAK,EAAEF,IAAI,CAACgB,MAAM,CAAC;IACvD,IAAImD,cAAc,EAAE;MAClB5F,MAAM,CAACa,MAAM,CAAC/C,IAAI,CAAC2D,IAAI,CAAC;IAC1B,CAAC,MAAM;MACLzB,MAAM,CAACY,QAAQ,CAAC9C,IAAI,CAAC2D,IAAI,CAAC;IAC5B;EACF,CAAC,CAAC;EACF,OAAOzB,MAAM;AACf;AAEO,SAAS6F,OAAOA,CAAC1C,OAAe,EAAE2C,SAAiB,EAAE;EAC1D,MAAMC,UAAU,GAAGC,iBAAM,CAACD,UAAU,CAAC5C,OAAO,CAAC;EAC7C,IAAI,CAAC4C,UAAU,EAAE;IACf,IAAI,CAAC,IAAAE,0BAAM,EAAC9C,OAAO,CAAC,IAAI,CAACA,OAAO,CAAC+C,UAAU,CAAC,YAAY,CAAC,EAAE;MACzD,MAAM,IAAIC,KAAK,CACZ,uBAAsBhD,OAAQ,kCAAiC2C,SAAU,0CAC5E,CAAC;IACH;IACA,OAAO,KAAK;EACd;EACA;EACA;EACA,IAAIC,UAAU,KAAK,GAAG,EAAE;IACtB,OAAO,IAAI;EACb;EACA,MAAMK,MAAM,GAAG,IAAAC,6BAAU,EAACN,UAAU,CAAC;EACrC,IAAIK,MAAM,CAACE,SAAS,KAAK,GAAG,EAAE;IAC5B,OAAO,KAAK;EACd;EACA,OAAO,IAAI;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS/B,iBAAiBA,CAAIgC,KAAe,EAAc;EACzD,MAAMC,EAAE,GAAG,SAAAA,CAAUC,CAAC,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAE;IACrC,IAAIH,CAAC,KAAK,CAAC,EAAE;MACX,IAAIE,GAAG,CAACvI,MAAM,GAAG,CAAC,EAAE;QAClBwI,GAAG,CAACA,GAAG,CAACxI,MAAM,CAAC,GAAGuI,GAAG;MACvB;MACA;IACF;IACA;IACA,KAAK,IAAIE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,GAAG,CAACtI,MAAM,EAAEyI,CAAC,EAAE,EAAE;MACnCL,EAAE,CAACC,CAAC,GAAG,CAAC,EAAEC,GAAG,CAACI,KAAK,CAACD,CAAC,GAAG,CAAC,CAAC,EAAEF,GAAG,CAACI,MAAM,CAAC,CAACL,GAAG,CAACG,CAAC,CAAC,CAAC,CAAC,EAAED,GAAG,CAAC;IACxD;EACF,CAAC;EACD,MAAMA,GAAe,GAAG,EAAE;EAC1B;EACA,KAAK,IAAI1I,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGqI,KAAK,CAACnI,MAAM,EAAEF,CAAC,EAAE,EAAE;IACrCsI,EAAE,CAACtI,CAAC,EAAEqI,KAAK,EAAE,EAAE,EAAEK,GAAG,CAAC;EACvB;EACAA,GAAG,CAAC9I,IAAI,CAACyI,KAAK,CAAC;EACf,OAAOK,GAAG;AACZ;AAEO,SAAS3G,2BAA2BA,CAAA,EAAwB;EACjE,MAAMD,MAA2B,GAAG;IAClCuB,gBAAgB,EAAE;MAChBiE,YAAY,EAAE,CAAC,CAAC;MAChBC,eAAe,EAAE,CAAC,CAAC;MACnBC,gBAAgB,EAAE,CAAC;IACrB,CAAC;IACDJ,wBAAwB,EAAE,IAAI0B,GAAG,CAAC,CAAC;IACnClE,KAAK,EAAE;MACLC,aAAa,EAAE;IACjB;EACF,CAAC;EACD,OAAO/C,MAAM;AACf"}
|
|
@@ -101,7 +101,7 @@ function addComponentDepToDepIdIndex(index, origin, lifecycleType) {
|
|
|
101
101
|
index.set(depId, item);
|
|
102
102
|
return;
|
|
103
103
|
}
|
|
104
|
-
(_index$get = index.get(depId)) === null || _index$get === void 0
|
|
104
|
+
(_index$get = index.get(depId)) === null || _index$get === void 0 ? void 0 : _index$get.componentItems.push(componentItem);
|
|
105
105
|
};
|
|
106
106
|
}
|
|
107
107
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_forEachObjIndexed","data","_interopRequireDefault","require","_pick","_constants","obj","__esModule","default","indexByDepId","rootPolicy","componentDependenciesMap","hoistedDepFields","result","Map","forEach","depsObject","compPackageName","pick","forEachObjIndexed","addSpecificLifeCycleDepsToIndex","addPreservedFromRoot","index","preserved","filter","entry","value","preserve","metadata","preservedVersion","version","preservedLifecycleType","lifecycleType","setMetadataToExistingIndexItem","dependencyId","depId","existingItem","get","origin","deps","depKeyName","LIFECYCLE_TYPE_BY_KEY_NAME","addComponentDepToDepIdIndex","range","_index$get","componentItem","has","item","componentItems","set","push"],"sources":["index-by-dep-id.ts"],"sourcesContent":["import forEachObjIndexed from 'ramda/src/forEachObjIndexed';\nimport pick from 'ramda/src/pick';\nimport { LIFECYCLE_TYPE_BY_KEY_NAME } from '../../dependencies/constants';\nimport { ManifestDependenciesKeysNames, DepObjectValue } from '../manifest';\nimport { DependencyLifecycleType, SemverVersion, PackageName } from '../../dependencies';\nimport { ComponentDependenciesMap } from '../workspace-manifest-factory';\nimport { WorkspacePolicy } from '../../policy';\n\nexport type PackageNameIndexItem = {\n metadata: PackageNameIndexItemMetadata;\n componentItems: PackageNameIndexComponentItem[];\n};\n\nexport type PackageNameIndexItemMetadata = {\n preservedVersion?: string;\n preservedLifecycleType?: DependencyLifecycleType;\n};\n\nexport type PackageNameIndexComponentItem = {\n range: SemverVersion;\n origin: PackageName;\n lifecycleType: DependencyLifecycleType;\n};\n\nexport type PackageNameIndex = Map<PackageName, PackageNameIndexItem>;\n\n/**\n * This will get the map of dependencies for each component and will create a new index with the dependencyId (package name) as key\n * and all components / ranges as value\n * It used as a pre processing as part of the deduping process\n *\n * @param {ComponentDependenciesMap} componentDependenciesMap\n * @returns {PackageNameIndex}\n */\nexport function indexByDepId(\n rootPolicy: WorkspacePolicy,\n componentDependenciesMap: ComponentDependenciesMap,\n hoistedDepFields?: ManifestDependenciesKeysNames[]\n): PackageNameIndex {\n const result: PackageNameIndex = new Map();\n componentDependenciesMap.forEach((depsObject, compPackageName) => {\n if (hoistedDepFields) {\n depsObject = pick(hoistedDepFields, depsObject);\n }\n forEachObjIndexed(addSpecificLifeCycleDepsToIndex(result, compPackageName), depsObject);\n });\n addPreservedFromRoot(result, rootPolicy);\n return result;\n}\n\nfunction addPreservedFromRoot(index: PackageNameIndex, rootPolicy: WorkspacePolicy): void {\n const preserved = rootPolicy.filter((entry) => !!entry.value.preserve);\n preserved.forEach((entry) => {\n const metadata: PackageNameIndexItemMetadata = {\n preservedVersion: entry.value.version,\n preservedLifecycleType: entry.lifecycleType,\n };\n setMetadataToExistingIndexItem(index, entry.dependencyId, metadata);\n });\n}\n\nfunction setMetadataToExistingIndexItem(\n index: PackageNameIndex,\n depId: PackageName,\n metadata: PackageNameIndexItemMetadata\n): void {\n const existingItem = index.get(depId);\n // only change existing items\n if (existingItem) {\n existingItem.metadata = metadata;\n }\n}\n\n/**\n * Mutate the index and add all deps from specific lifecycle type to the index\n *\n * @param {PackageNameIndex} index\n * @param {PackageName} origin\n * @returns\n */\nfunction addSpecificLifeCycleDepsToIndex(index: PackageNameIndex, origin: PackageName) {\n return (deps: DepObjectValue, depKeyName: ManifestDependenciesKeysNames) => {\n const lifecycleType = LIFECYCLE_TYPE_BY_KEY_NAME[depKeyName] as DependencyLifecycleType;\n forEachObjIndexed(addComponentDepToDepIdIndex(index, origin, lifecycleType), deps);\n };\n}\n\n/**\n * Mutate the index and add specific package into it\n *\n * @param {PackageNameIndex} index\n * @param {PackageName} origin\n * @param {DependencyLifecycleType} lifecycleType\n * @returns\n */\nfunction addComponentDepToDepIdIndex(\n index: PackageNameIndex,\n origin: PackageName,\n lifecycleType: DependencyLifecycleType\n) {\n return (range: SemverVersion, depId: PackageName) => {\n const componentItem: PackageNameIndexComponentItem = {\n origin,\n range,\n lifecycleType,\n };\n if (!index.has(depId)) {\n const item: PackageNameIndexItem = {\n componentItems: [componentItem],\n metadata: {},\n };\n index.set(depId, item);\n return;\n }\n index.get(depId)?.componentItems.push(componentItem);\n };\n}\n"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["_forEachObjIndexed","data","_interopRequireDefault","require","_pick","_constants","obj","__esModule","default","indexByDepId","rootPolicy","componentDependenciesMap","hoistedDepFields","result","Map","forEach","depsObject","compPackageName","pick","forEachObjIndexed","addSpecificLifeCycleDepsToIndex","addPreservedFromRoot","index","preserved","filter","entry","value","preserve","metadata","preservedVersion","version","preservedLifecycleType","lifecycleType","setMetadataToExistingIndexItem","dependencyId","depId","existingItem","get","origin","deps","depKeyName","LIFECYCLE_TYPE_BY_KEY_NAME","addComponentDepToDepIdIndex","range","_index$get","componentItem","has","item","componentItems","set","push"],"sources":["index-by-dep-id.ts"],"sourcesContent":["import forEachObjIndexed from 'ramda/src/forEachObjIndexed';\nimport pick from 'ramda/src/pick';\nimport { LIFECYCLE_TYPE_BY_KEY_NAME } from '../../dependencies/constants';\nimport { ManifestDependenciesKeysNames, DepObjectValue } from '../manifest';\nimport { DependencyLifecycleType, SemverVersion, PackageName } from '../../dependencies';\nimport { ComponentDependenciesMap } from '../workspace-manifest-factory';\nimport { WorkspacePolicy } from '../../policy';\n\nexport type PackageNameIndexItem = {\n metadata: PackageNameIndexItemMetadata;\n componentItems: PackageNameIndexComponentItem[];\n};\n\nexport type PackageNameIndexItemMetadata = {\n preservedVersion?: string;\n preservedLifecycleType?: DependencyLifecycleType;\n};\n\nexport type PackageNameIndexComponentItem = {\n range: SemverVersion;\n origin: PackageName;\n lifecycleType: DependencyLifecycleType;\n};\n\nexport type PackageNameIndex = Map<PackageName, PackageNameIndexItem>;\n\n/**\n * This will get the map of dependencies for each component and will create a new index with the dependencyId (package name) as key\n * and all components / ranges as value\n * It used as a pre processing as part of the deduping process\n *\n * @param {ComponentDependenciesMap} componentDependenciesMap\n * @returns {PackageNameIndex}\n */\nexport function indexByDepId(\n rootPolicy: WorkspacePolicy,\n componentDependenciesMap: ComponentDependenciesMap,\n hoistedDepFields?: ManifestDependenciesKeysNames[]\n): PackageNameIndex {\n const result: PackageNameIndex = new Map();\n componentDependenciesMap.forEach((depsObject, compPackageName) => {\n if (hoistedDepFields) {\n depsObject = pick(hoistedDepFields, depsObject);\n }\n forEachObjIndexed(addSpecificLifeCycleDepsToIndex(result, compPackageName), depsObject);\n });\n addPreservedFromRoot(result, rootPolicy);\n return result;\n}\n\nfunction addPreservedFromRoot(index: PackageNameIndex, rootPolicy: WorkspacePolicy): void {\n const preserved = rootPolicy.filter((entry) => !!entry.value.preserve);\n preserved.forEach((entry) => {\n const metadata: PackageNameIndexItemMetadata = {\n preservedVersion: entry.value.version,\n preservedLifecycleType: entry.lifecycleType,\n };\n setMetadataToExistingIndexItem(index, entry.dependencyId, metadata);\n });\n}\n\nfunction setMetadataToExistingIndexItem(\n index: PackageNameIndex,\n depId: PackageName,\n metadata: PackageNameIndexItemMetadata\n): void {\n const existingItem = index.get(depId);\n // only change existing items\n if (existingItem) {\n existingItem.metadata = metadata;\n }\n}\n\n/**\n * Mutate the index and add all deps from specific lifecycle type to the index\n *\n * @param {PackageNameIndex} index\n * @param {PackageName} origin\n * @returns\n */\nfunction addSpecificLifeCycleDepsToIndex(index: PackageNameIndex, origin: PackageName) {\n return (deps: DepObjectValue, depKeyName: ManifestDependenciesKeysNames) => {\n const lifecycleType = LIFECYCLE_TYPE_BY_KEY_NAME[depKeyName] as DependencyLifecycleType;\n forEachObjIndexed(addComponentDepToDepIdIndex(index, origin, lifecycleType), deps);\n };\n}\n\n/**\n * Mutate the index and add specific package into it\n *\n * @param {PackageNameIndex} index\n * @param {PackageName} origin\n * @param {DependencyLifecycleType} lifecycleType\n * @returns\n */\nfunction addComponentDepToDepIdIndex(\n index: PackageNameIndex,\n origin: PackageName,\n lifecycleType: DependencyLifecycleType\n) {\n return (range: SemverVersion, depId: PackageName) => {\n const componentItem: PackageNameIndexComponentItem = {\n origin,\n range,\n lifecycleType,\n };\n if (!index.has(depId)) {\n const item: PackageNameIndexItem = {\n componentItems: [componentItem],\n metadata: {},\n };\n index.set(depId, item);\n return;\n }\n index.get(depId)?.componentItems.push(componentItem);\n };\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.dependencies_dependency-resolver@0.0.
|
|
2
|
-
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.dependencies_dependency-resolver@0.0.
|
|
1
|
+
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.dependencies_dependency-resolver@0.0.1167/dist/dependency-resolver.composition.js';
|
|
2
|
+
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.dependencies_dependency-resolver@0.0.1167/dist/dependency-resolver.docs.mdx';
|
|
3
3
|
|
|
4
4
|
export const compositions = [compositions_0];
|
|
5
5
|
export const overview = [overview_0];
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/dependency-resolver",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.1167",
|
|
4
4
|
"homepage": "https://bit.cloud/teambit/dependencies/dependency-resolver",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.dependencies",
|
|
8
8
|
"name": "dependency-resolver",
|
|
9
|
-
"version": "0.0.
|
|
9
|
+
"version": "0.0.1167"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"cli-highlight": "2.1.9",
|
|
@@ -30,20 +30,20 @@
|
|
|
30
30
|
"@pnpm/network.ca-file": "1.0.2",
|
|
31
31
|
"@teambit/legacy-bit-id": "1.0.0",
|
|
32
32
|
"@teambit/component-id": "0.0.427",
|
|
33
|
-
"@teambit/component": "0.0.
|
|
34
|
-
"@teambit/envs": "0.0.
|
|
35
|
-
"@teambit/aspect-loader": "0.0.
|
|
36
|
-
"@teambit/logger": "0.0.
|
|
33
|
+
"@teambit/component": "0.0.1167",
|
|
34
|
+
"@teambit/envs": "0.0.1167",
|
|
35
|
+
"@teambit/aspect-loader": "0.0.1167",
|
|
36
|
+
"@teambit/logger": "0.0.871",
|
|
37
37
|
"@teambit/bit-error": "0.0.402",
|
|
38
|
-
"@teambit/graphql": "0.0.
|
|
39
|
-
"@teambit/bit-roots": "0.0.
|
|
40
|
-
"@teambit/bit": "0.2.
|
|
41
|
-
"@teambit/cli": "0.0.
|
|
42
|
-
"@teambit/config": "0.0.
|
|
43
|
-
"@teambit/global-config": "0.0.
|
|
38
|
+
"@teambit/graphql": "0.0.1167",
|
|
39
|
+
"@teambit/bit-roots": "0.0.113",
|
|
40
|
+
"@teambit/bit": "0.2.60",
|
|
41
|
+
"@teambit/cli": "0.0.778",
|
|
42
|
+
"@teambit/config": "0.0.793",
|
|
43
|
+
"@teambit/global-config": "0.0.780",
|
|
44
44
|
"@teambit/harmony.modules.requireable-component": "0.0.491",
|
|
45
|
-
"@teambit/snapping": "0.0.
|
|
46
|
-
"@teambit/isolator": "0.0.
|
|
45
|
+
"@teambit/snapping": "0.0.482",
|
|
46
|
+
"@teambit/isolator": "0.0.1167",
|
|
47
47
|
"@teambit/component-package-version": "0.0.425",
|
|
48
48
|
"@teambit/component-issues": "0.0.95",
|
|
49
49
|
"@teambit/component-version": "1.0.0"
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
"@teambit/dependencies.aspect-docs.dependency-resolver": "0.0.166"
|
|
64
64
|
},
|
|
65
65
|
"peerDependencies": {
|
|
66
|
-
"@teambit/legacy": "1.0.
|
|
66
|
+
"@teambit/legacy": "1.0.563",
|
|
67
67
|
"react": "^16.8.0 || ^17.0.0",
|
|
68
68
|
"react-dom": "^16.8.0 || ^17.0.0"
|
|
69
69
|
},
|