@teambit/dependency-resolver 1.0.676 → 1.0.677

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.
@@ -1,5 +1,5 @@
1
1
  import type { EnvService, EnvDefinition, Env, EnvContext, ServiceTransformationMap } from '@teambit/envs';
2
- import type { DependencyDetector } from './dependency-detector';
2
+ import type { DependencyDetector } from './detector-hook';
3
3
  export type DependenciesDescriptor = {
4
4
  id: string;
5
5
  displayName: string;
@@ -1 +1 @@
1
- {"version":3,"names":["_cliHighlight","data","_interopRequireDefault","require","_chalk","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","DependenciesService","constructor","render","env","descriptor","getDescriptor","configLabel","chalk","green","configObj","config","highlight","language","ignoreIllegals","getDependencies","undefined","dependencies","id","name","JSON","stringify","displayName","transform","context","detectors","getDepDetectors","exports"],"sources":["dependencies.service.ts"],"sourcesContent":["import type { EnvService, EnvDefinition, Env, EnvContext, ServiceTransformationMap } from '@teambit/envs';\nimport highlight from 'cli-highlight';\nimport chalk from 'chalk';\nimport type { DependencyDetector } from './dependency-detector';\n\nexport type DependenciesDescriptor = {\n id: string;\n displayName: string;\n config?: string;\n};\n\ntype DependenciesTransformationMap = ServiceTransformationMap & {\n getDepDetectors: () => DependencyDetector[] | null;\n};\n\nexport class DependenciesService implements EnvService<{}, DependenciesDescriptor> {\n name = 'Dependencies';\n\n async render(env: EnvDefinition) {\n const descriptor = await this.getDescriptor(env);\n const configLabel = chalk.green('configured dependencies:');\n const configObj = descriptor?.config\n ? highlight(descriptor?.config, { language: 'json', ignoreIllegals: true })\n : '';\n return `${configLabel}\\n${configObj}`;\n }\n\n async getDescriptor(env: EnvDefinition): Promise<DependenciesDescriptor | undefined> {\n if (!env.env.getDependencies) return undefined;\n const dependencies = await env.env.getDependencies();\n return {\n id: this.name,\n config: dependencies ? JSON.stringify(dependencies, null, 2) : undefined,\n displayName: this.name,\n };\n }\n\n transform(env: Env, context: EnvContext): DependenciesTransformationMap | undefined {\n // Old env\n if (!env?.detectors) return undefined;\n return {\n getDepDetectors: () => env.detectors()(context),\n };\n }\n}\n"],"mappings":";;;;;;AACA,SAAAA,cAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,aAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,OAAA;EAAA,MAAAH,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAC,MAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA0B,SAAAC,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,gBAAAH,CAAA,EAAAI,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAE,cAAA,CAAAF,CAAA,MAAAJ,CAAA,GAAAO,MAAA,CAAAC,cAAA,CAAAR,CAAA,EAAAI,CAAA,IAAAK,KAAA,EAAAJ,CAAA,EAAAK,UAAA,MAAAC,YAAA,MAAAC,QAAA,UAAAZ,CAAA,CAAAI,CAAA,IAAAC,CAAA,EAAAL,CAAA;AAAA,SAAAM,eAAAD,CAAA,QAAAQ,CAAA,GAAAC,YAAA,CAAAT,CAAA,uCAAAQ,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAT,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAL,CAAA,GAAAK,CAAA,CAAAU,MAAA,CAAAC,WAAA,kBAAAhB,CAAA,QAAAa,CAAA,GAAAb,CAAA,CAAAiB,IAAA,CAAAZ,CAAA,EAAAD,CAAA,uCAAAS,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAAd,CAAA,GAAAe,MAAA,GAAAC,MAAA,EAAAf,CAAA;AAanB,MAAMgB,mBAAmB,CAAmD;EAAAC,YAAA;IAAAnB,eAAA,eAC1E,cAAc;EAAA;EAErB,MAAMoB,MAAMA,CAACC,GAAkB,EAAE;IAC/B,MAAMC,UAAU,GAAG,MAAM,IAAI,CAACC,aAAa,CAACF,GAAG,CAAC;IAChD,MAAMG,WAAW,GAAGC,gBAAK,CAACC,KAAK,CAAC,0BAA0B,CAAC;IAC3D,MAAMC,SAAS,GAAGL,UAAU,EAAEM,MAAM,GAChC,IAAAC,uBAAS,EAACP,UAAU,EAAEM,MAAM,EAAE;MAAEE,QAAQ,EAAE,MAAM;MAAEC,cAAc,EAAE;IAAK,CAAC,CAAC,GACzE,EAAE;IACN,OAAO,GAAGP,WAAW,KAAKG,SAAS,EAAE;EACvC;EAEA,MAAMJ,aAAaA,CAACF,GAAkB,EAA+C;IACnF,IAAI,CAACA,GAAG,CAACA,GAAG,CAACW,eAAe,EAAE,OAAOC,SAAS;IAC9C,MAAMC,YAAY,GAAG,MAAMb,GAAG,CAACA,GAAG,CAACW,eAAe,CAAC,CAAC;IACpD,OAAO;MACLG,EAAE,EAAE,IAAI,CAACC,IAAI;MACbR,MAAM,EAAEM,YAAY,GAAGG,IAAI,CAACC,SAAS,CAACJ,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,GAAGD,SAAS;MACxEM,WAAW,EAAE,IAAI,CAACH;IACpB,CAAC;EACH;EAEAI,SAASA,CAACnB,GAAQ,EAAEoB,OAAmB,EAA6C;IAClF;IACA,IAAI,CAACpB,GAAG,EAAEqB,SAAS,EAAE,OAAOT,SAAS;IACrC,OAAO;MACLU,eAAe,EAAEA,CAAA,KAAMtB,GAAG,CAACqB,SAAS,CAAC,CAAC,CAACD,OAAO;IAChD,CAAC;EACH;AACF;AAACG,OAAA,CAAA1B,mBAAA,GAAAA,mBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_cliHighlight","data","_interopRequireDefault","require","_chalk","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","DependenciesService","constructor","render","env","descriptor","getDescriptor","configLabel","chalk","green","configObj","config","highlight","language","ignoreIllegals","getDependencies","undefined","dependencies","id","name","JSON","stringify","displayName","transform","context","detectors","getDepDetectors","exports"],"sources":["dependencies.service.ts"],"sourcesContent":["import type { EnvService, EnvDefinition, Env, EnvContext, ServiceTransformationMap } from '@teambit/envs';\nimport highlight from 'cli-highlight';\nimport chalk from 'chalk';\nimport type { DependencyDetector } from './detector-hook';\n\nexport type DependenciesDescriptor = {\n id: string;\n displayName: string;\n config?: string;\n};\n\ntype DependenciesTransformationMap = ServiceTransformationMap & {\n getDepDetectors: () => DependencyDetector[] | null;\n};\n\nexport class DependenciesService implements EnvService<{}, DependenciesDescriptor> {\n name = 'Dependencies';\n\n async render(env: EnvDefinition) {\n const descriptor = await this.getDescriptor(env);\n const configLabel = chalk.green('configured dependencies:');\n const configObj = descriptor?.config\n ? highlight(descriptor?.config, { language: 'json', ignoreIllegals: true })\n : '';\n return `${configLabel}\\n${configObj}`;\n }\n\n async getDescriptor(env: EnvDefinition): Promise<DependenciesDescriptor | undefined> {\n if (!env.env.getDependencies) return undefined;\n const dependencies = await env.env.getDependencies();\n return {\n id: this.name,\n config: dependencies ? JSON.stringify(dependencies, null, 2) : undefined,\n displayName: this.name,\n };\n }\n\n transform(env: Env, context: EnvContext): DependenciesTransformationMap | undefined {\n // Old env\n if (!env?.detectors) return undefined;\n return {\n getDepDetectors: () => env.detectors()(context),\n };\n }\n}\n"],"mappings":";;;;;;AACA,SAAAA,cAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,aAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,OAAA;EAAA,MAAAH,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAC,MAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA0B,SAAAC,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,gBAAAH,CAAA,EAAAI,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAE,cAAA,CAAAF,CAAA,MAAAJ,CAAA,GAAAO,MAAA,CAAAC,cAAA,CAAAR,CAAA,EAAAI,CAAA,IAAAK,KAAA,EAAAJ,CAAA,EAAAK,UAAA,MAAAC,YAAA,MAAAC,QAAA,UAAAZ,CAAA,CAAAI,CAAA,IAAAC,CAAA,EAAAL,CAAA;AAAA,SAAAM,eAAAD,CAAA,QAAAQ,CAAA,GAAAC,YAAA,CAAAT,CAAA,uCAAAQ,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAT,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAL,CAAA,GAAAK,CAAA,CAAAU,MAAA,CAAAC,WAAA,kBAAAhB,CAAA,QAAAa,CAAA,GAAAb,CAAA,CAAAiB,IAAA,CAAAZ,CAAA,EAAAD,CAAA,uCAAAS,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAAd,CAAA,GAAAe,MAAA,GAAAC,MAAA,EAAAf,CAAA;AAanB,MAAMgB,mBAAmB,CAAmD;EAAAC,YAAA;IAAAnB,eAAA,eAC1E,cAAc;EAAA;EAErB,MAAMoB,MAAMA,CAACC,GAAkB,EAAE;IAC/B,MAAMC,UAAU,GAAG,MAAM,IAAI,CAACC,aAAa,CAACF,GAAG,CAAC;IAChD,MAAMG,WAAW,GAAGC,gBAAK,CAACC,KAAK,CAAC,0BAA0B,CAAC;IAC3D,MAAMC,SAAS,GAAGL,UAAU,EAAEM,MAAM,GAChC,IAAAC,uBAAS,EAACP,UAAU,EAAEM,MAAM,EAAE;MAAEE,QAAQ,EAAE,MAAM;MAAEC,cAAc,EAAE;IAAK,CAAC,CAAC,GACzE,EAAE;IACN,OAAO,GAAGP,WAAW,KAAKG,SAAS,EAAE;EACvC;EAEA,MAAMJ,aAAaA,CAACF,GAAkB,EAA+C;IACnF,IAAI,CAACA,GAAG,CAACA,GAAG,CAACW,eAAe,EAAE,OAAOC,SAAS;IAC9C,MAAMC,YAAY,GAAG,MAAMb,GAAG,CAACA,GAAG,CAACW,eAAe,CAAC,CAAC;IACpD,OAAO;MACLG,EAAE,EAAE,IAAI,CAACC,IAAI;MACbR,MAAM,EAAEM,YAAY,GAAGG,IAAI,CAACC,SAAS,CAACJ,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,GAAGD,SAAS;MACxEM,WAAW,EAAE,IAAI,CAACH;IACpB,CAAC;EACH;EAEAI,SAASA,CAACnB,GAAQ,EAAEoB,OAAmB,EAA6C;IAClF;IACA,IAAI,CAACpB,GAAG,EAAEqB,SAAS,EAAE,OAAOT,SAAS;IACrC,OAAO;MACLU,eAAe,EAAEA,CAAA,KAAMtB,GAAG,CAACqB,SAAS,CAAC,CAAC,CAACD,OAAO;IAChD,CAAC;EACH;AACF;AAACG,OAAA,CAAA1B,mBAAA,GAAAA,mBAAA","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import type { EnvHandler } from '@teambit/envs';
2
- import type { DependencyDetector } from './dependency-detector';
2
+ import type { DependencyDetector } from './detector-hook';
3
3
  export interface DependencyEnv {
4
4
  detectors?(): EnvHandler<DependencyDetector[] | null>;
5
5
  }
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["dependency-env.ts"],"sourcesContent":["import type { EnvHandler } from '@teambit/envs';\nimport type { DependencyDetector } from './dependency-detector';\n\nexport interface DependencyEnv {\n detectors?(): EnvHandler<DependencyDetector[] | null>;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["dependency-env.ts"],"sourcesContent":["import type { EnvHandler } from '@teambit/envs';\nimport type { DependencyDetector } from './detector-hook';\n\nexport interface DependencyEnv {\n detectors?(): EnvHandler<DependencyDetector[] | null>;\n}\n"],"mappings":"","ignoreList":[]}
@@ -29,7 +29,7 @@ import { WorkspacePolicy, VariantPolicy } from './policy';
29
29
  import type { PackageManager, PackageManagerGetPeerDependencyIssuesOptions } from './package-manager';
30
30
  import type { SerializedDependency, DependencyFactory, ComponentDependency } from './dependencies';
31
31
  import { DependencyList } from './dependencies';
32
- import type { DependencyDetector } from './dependency-detector';
32
+ import type { DependencyDetector } from './detector-hook';
33
33
  import { EnvPolicy } from './policy/env-policy';
34
34
  import type { ConfigStoreMain } from '@teambit/config-store';
35
35
  export declare const BIT_CLOUD_REGISTRY: string;
@@ -142,9 +142,9 @@ function _pkgModules2() {
142
142
  };
143
143
  return data;
144
144
  }
145
- function _dependencies() {
146
- const data = require("@teambit/dependencies");
147
- _dependencies = function () {
145
+ function _detectorHook() {
146
+ const data = require("./detector-hook");
147
+ _detectorHook = function () {
148
148
  return data;
149
149
  };
150
150
  return data;
@@ -282,9 +282,9 @@ function _policy() {
282
282
  };
283
283
  return data;
284
284
  }
285
- function _dependencies2() {
285
+ function _dependencies() {
286
286
  const data = require("./dependencies");
287
- _dependencies2 = function () {
287
+ _dependencies = function () {
288
288
  return data;
289
289
  };
290
290
  return data;
@@ -303,9 +303,9 @@ function _dependencyResolver2() {
303
303
  };
304
304
  return data;
305
305
  }
306
- function _dependencies3() {
306
+ function _dependencies2() {
307
307
  const data = require("./dependencies.service");
308
- _dependencies3 = function () {
308
+ _dependencies2 = function () {
309
309
  return data;
310
310
  };
311
311
  return data;
@@ -522,7 +522,7 @@ class DependencyResolverMain {
522
522
  acc[factory.type] = factory;
523
523
  return acc;
524
524
  }, {});
525
- const listFactory = new (_dependencies2().DependencyListFactory)(factoriesMap);
525
+ const listFactory = new (_dependencies().DependencyListFactory)(factoriesMap);
526
526
  return listFactory;
527
527
  }
528
528
 
@@ -535,7 +535,7 @@ class DependencyResolverMain {
535
535
  } = {}) {
536
536
  const entry = component.get(_dependencyResolver().DependencyResolverAspect.id);
537
537
  if (!entry) {
538
- return _dependencies2().DependencyList.fromArray([]);
538
+ return _dependencies().DependencyList.fromArray([]);
539
539
  }
540
540
  const serializedDependencies = entry?.data?.dependencies || [];
541
541
  const depList = this.getDependenciesFromSerializedDependencies(serializedDependencies);
@@ -547,7 +547,7 @@ class DependencyResolverMain {
547
547
  } = {}) {
548
548
  const entry = component.extensions.findCoreExtension(_dependencyResolver().DependencyResolverAspect.id);
549
549
  if (!entry) {
550
- return _dependencies2().DependencyList.fromArray([]);
550
+ return _dependencies().DependencyList.fromArray([]);
551
551
  }
552
552
  const serializedDependencies = entry?.data?.dependencies || [];
553
553
  const depList = this.getDependenciesFromSerializedDependencies(serializedDependencies);
@@ -564,7 +564,7 @@ class DependencyResolverMain {
564
564
  }
565
565
  getDependenciesFromSerializedDependencies(dependencies) {
566
566
  if (!dependencies.length) {
567
- return _dependencies2().DependencyList.fromArray([]);
567
+ return _dependencies().DependencyList.fromArray([]);
568
568
  }
569
569
  const listFactory = this.getDependencyListFactory();
570
570
  const deps = listFactory.fromSerializedDependencies(dependencies);
@@ -1245,7 +1245,7 @@ class DependencyResolverMain {
1245
1245
  * mechanism to support new file extensions and types.
1246
1246
  */
1247
1247
  registerDetector(detector) {
1248
- _dependencies().DetectorHook.hooks.push(detector);
1248
+ _detectorHook().DetectorHook.hooks.push(detector);
1249
1249
  return this;
1250
1250
  }
1251
1251
 
@@ -1342,7 +1342,7 @@ class DependencyResolverMain {
1342
1342
  data.dependencies?.forEach(dep => {
1343
1343
  const isVersionValid = Boolean(_semver().default.valid(dep.version) || _semver().default.validRange(dep.version));
1344
1344
  if (isVersionValid) return;
1345
- if (dep.__type === _dependencies2().COMPONENT_DEP_TYPE && (0, _componentVersion().isSnap)(dep.version)) return;
1345
+ if (dep.__type === _dependencies().COMPONENT_DEP_TYPE && (0, _componentVersion().isSnap)(dep.version)) return;
1346
1346
  if (allowedPrefixes.some(prefix => dep.version.startsWith(prefix))) return; // some packages are installed from https/git
1347
1347
  errorMsg = `${errorPrefix} the dependency version "${dep.version}" of ${dep.id} is not a valid semver version or range`;
1348
1348
  });
@@ -1351,7 +1351,7 @@ class DependencyResolverMain {
1351
1351
  const allowedSpecialChars = ['+', '-'];
1352
1352
  if (policyVersion === '*') {
1353
1353
  // this is only valid for packages, not for components.
1354
- const isComp = data.dependencies.find(d => d.__type === _dependencies2().COMPONENT_DEP_TYPE && d.packageName === policy.dependencyId);
1354
+ const isComp = data.dependencies.find(d => d.__type === _dependencies().COMPONENT_DEP_TYPE && d.packageName === policy.dependencyId);
1355
1355
  if (!isComp) return;
1356
1356
  errorMsg = `${errorPrefix} the policy version "${policyVersion}" of ${policy.dependencyId} is not valid for components, only for packages.
1357
1357
  as an alternative, you can use "+" to keep the same version installed in the workspace`;
@@ -1566,14 +1566,14 @@ as an alternative, you can use "+" to keep the same version installed in the wor
1566
1566
  componentAspect.dependencyResolver = dependencyResolver;
1567
1567
  // TODO: solve this generics issue and remove the ts-ignore
1568
1568
  // @ts-ignore
1569
- dependencyResolver.registerDependencyFactories([new (_dependencies2().ComponentDependencyFactory)(componentAspect)]);
1569
+ dependencyResolver.registerDependencyFactories([new (_dependencies().ComponentDependencyFactory)(componentAspect)]);
1570
1570
  _legacy3().ConsumerComponent.registerOnComponentOverridesLoading(_dependencyResolver().DependencyResolverAspect.id, async (configuredExtensions, id, legacyFiles, envExtendsDeps) => {
1571
1571
  const policy = await dependencyResolver.mergeVariantPolicies(configuredExtensions, id, legacyFiles, envExtendsDeps);
1572
1572
  return policy.toLegacyDepsOverrides();
1573
1573
  });
1574
1574
  if (aspectLoader) aspectLoader.registerOnLoadRequireableExtensionSlot(dependencyResolver.onLoadRequireableExtensionSubscriber.bind(dependencyResolver));
1575
1575
  graphql.register(() => (0, _dependencyResolver2().dependencyResolverSchema)(dependencyResolver));
1576
- envs.registerService(new (_dependencies3().DependenciesService)());
1576
+ envs.registerService(new (_dependencies2().DependenciesService)());
1577
1577
  envs.registerEnvJsoncMergeCustomizer(dependencyResolver.mergeEnvManifestPolicy.bind(dependencyResolver));
1578
1578
 
1579
1579
  // this is needed because during tag process, the data.dependencies can be loaded and the componentId can become
@@ -1583,7 +1583,7 @@ as an alternative, you can use "+" to keep the same version installed in the wor
1583
1583
  if (!entry) return;
1584
1584
  const dependencies = (0, _lodash().get)(entry, ['data', 'dependencies'], []);
1585
1585
  dependencies.forEach(dep => {
1586
- if (dep.__type === _dependencies2().COMPONENT_DEP_TYPE) {
1586
+ if (dep.__type === _dependencies().COMPONENT_DEP_TYPE) {
1587
1587
  dep.componentId = dep.componentId instanceof _componentId().ComponentID ? dep.componentId.serialize() : dep.componentId;
1588
1588
  }
1589
1589
  });
@@ -1 +1 @@
1
- {"version":3,"names":["_multimatch","data","_interopRequireDefault","require","_componentVersion","_pMapSeries","_harmonyModules","_cli","_workspace","_component","_pkgModules","_path","_lodash","_config","_envs","_harmony","_graphql","_logger","_legacy","_legacy2","_pkgModules2","_dependencies","_scope","_legacy3","_fsExtra","_componentId","_network","_semver","_interopRequireWildcard","_aspectLoader","_workspaceModules","_pkgEntities","_applyUpdates","_constants","_dependencyInstaller","_dependencyResolver","_dependencyVersionResolver","_dependencyLinker","_getAllPolicyPkgs","_exceptions","_manifest","_policy","_dependencies2","_showFragments","_dependencyResolver2","_dependencies3","_envPolicy","_configStore","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","BIT_CLOUD_REGISTRY","exports","getCloudDomain","NPM_REGISTRY","defaultLinkingOptions","linkTeambitBit","linkCoreAspects","defaultCreateFromComponentsOptions","filterComponentsFromManifests","createManifestForComponentsWithoutDependencies","DependencyResolverMain","constructor","config","rootPolicyRegistry","policiesRegistry","envs","logger","configAspect","aspectLoader","configStore","componentAspect","packageManagerSlot","dependencyFactorySlot","preInstallSlot","postInstallSlot","addPackagesToLinkSlot","Set","supportsDedupingOnExistingRoot","packageManager","getPackageManager","isolatedCapsules","setConfig","hasRootComponents","Boolean","rootComponents","globalConfig","getConfig","CFG_ISOLATED_SCOPE_CAPSULES","defaultVal","undefined","res","harmonyVersionInRootPolicy","rootPolicy","getWorkspacePolicyFromConfig","entries","find","dependencyId","version","nodeLinker","packageManagerName","pmName","defaultConfig","registerPackageManager","register","registerDependencyFactories","factories","registerPreInstallSubscribers","subscribers","registerPostInstallSubscribers","registerAddPackagesToLink","fn","getSavePrefix","savePrefix","getVersionWithSavePrefix","overridePrefix","wantedRange","semver","parse","prerelease","includes","prefix","versionWithPrefix","validRange","InvalidVersionWithPrefix","getPolicy","component","entry","state","aspects","DependencyResolverAspect","id","VariantPolicy","getEmpty","serializedPolicy","extractDepsFromLegacy","policy","componentPolicy","legacyComponent","_consumer","listFactory","getDependencyListFactory","dependencyList","fromLegacyComponent","dep","found","packageName","getPackageName","source","hidden","optional","values","flat","factoriesMap","reduce","acc","factory","type","DependencyListFactory","getDependencies","includeHidden","DependencyList","fromArray","serializedDependencies","dependencies","depList","getDependenciesFromSerializedDependencies","filterHidden","getDependenciesFromLegacyComponent","extensions","findCoreExtension","getComponentDependencies","deps","fromSerializedDependencies","getWorkspacePolicy","_workspacePolicy","policyFromConfig","externalPolicies","toArray","map","mergeWorkspacePolices","getWorkspacePolicyManifest","workspacePolicy","toManifest","clearCache","WorkspacePolicyFactory","fromConfigObject","getWorkspacePolicyFromConfigObject","obj","getWorkspacePolicyFromPackageJson","packageJson","fromPackageJson","polices","WorkspacePolicy","mergePolices","getWorkspaceManifest","name","ROOT_NAME","SemVer","rootDir","components","options","context","statusMessage","inCapsule","setStatusLine","concreteOpts","workspaceManifestFactory","WorkspaceManifestFactory","createFromComponents","consoleSuccess","getDepResolverData","calcPackageName","createComponentIdByPkgNameMap","componentIdByPkgName","Map","componentIdToPackageName","getRuntimeModulePath","modulePath","getModulePath","pkgName","rootComponentsRelativePath","relative","workspacePath","rootComponentsPath","getRelativeRootComponentDir","getRootComponentDir","bind","selfRootDir","isInWorkspace","toStringWithoutVersion","toString","fs","pathExistsSync","innerDir","join","dirInEnvRoot","getComponentDirInBitRoots","envId","getEnvId","relativePath","addDependenciesGraph","componentRelativeDir","dependenciesGraph","calcDependenciesGraph","componentRootDir","err","isFeatureEnabled","DEPS_GRAPH","getInstaller","cacheRootDir","cacheRootDirectory","CFG_PACKAGE_MANAGER_CACHE","PackageManagerNotFound","debug","ensureDirSync","preInstallSubscribers","getPreInstallSubscribers","postInstallSubscribers","getPostInstallSubscribers","DependencyInstaller","packageImportMethod","sideEffectsCache","nodeVersion","engineStrict","peerDependencyRules","neverBuiltDependencies","preferOffline","installingContext","getAdditionalPackagesToLink","_additionalPackagesToLink","additionalPackagesToLinkFn","getLinker","additionalPackagesToLink","linkingOptions","assign","DependencyLinker","linkingContext","getVersionResolver","networkConcurrency","getNetworkConfig","DependencyVersionResolver","getCompIdsThatShouldNotBeInPolicy","getCoreAspectIds","getSystemPackageManager","DEFAULT_HARMONY_PACKAGE_MANAGER","Error","getProxyConfig","proxyConfigFromDepResolverConfig","getProxyConfigFromDepResolverConfig","httpProxy","httpsProxy","proxyConfigFromPackageManager","getProxyConfigFromPackageManager","proxyConfigFromGlobalConfig","getProxyConfigFromGlobalConfig","proxy","noProxy","networkConfig","getNetworkConfigFromGlobalConfig","getNetworkConfigFromPackageManager","getNetworkConfigFromDepResolverConfig","JSON","stringify","key","globalNetworkConfig","Http","ca","cafile","readCAFileSync","pick","strictSsl","strictSSL","toLowerCase","networkConfigFromPackageManager","systemPm","getMissingPeerDependencies","componentDirectoryMap","peerDependencyIssues","installer","manifests","getComponentManifests","getPeerDependencyIssues","intersections","getRegistries","registries","getDefaultBitRegistry","bitGlobalConfigRegistry","CFG_REGISTRY_URL_KEY","bitRegistry","bitOriginalAuthType","bitAuthHeaderValue","bitOriginalAuthValue","getBitAuthConfig","alwaysAuth","bitDefaultRegistry","Registry","installFromBitDevRegistry","defaultRegistry","uri","startsWith","setDefaultRegistry","addAuthToScopedBitRegistries","updatedRegistries","scopes","registry","authHeaderValue","registryWithAuth","updateScopedRegistry","bitGlobalConfigToken","CFG_USER_TOKEN_KEY","addToRootPolicy","add","updateConfigPolicy","removeFromRootPolicy","dependencyIds","workspacePolicyUpdated","remove","isRemoved","workspacePolicyObject","toConfigObject","setExtension","overrideExisting","ignoreVersion","persistConfig","reasonForChange","workspaceConfig","write","registerDependenciesPolicies","registerRootPolicy","getComponentEnvPolicyFromExtension","configuredExtensions","calculateEnvIdFromExtensions","isCoreEnv","env","calculateEnvFromExtensions","getComponentEnvPolicyFromEnv","fromFile","getEnvPolicyFromFile","getEnvPolicyFromEnvId","legacyFiles","envExtendsDeps","envDef","getEnvDefinitionById","getEnvPolicyFromEnvLegacyId","getComponentEnvPolicy","calculateEnvId","envIdWithoutVersion","getEnv","envsWithoutManifest","getEnvManifest","envComponent","envManifest","getOrCalculateEnvManifest","calculateEnvManifest","allPoliciesFromEnv","EnvPolicy","includeLegacyPeersInSelfPolicy","mergeEnvManifestPolicy","parent","child","cloneDeep","childEntries","foundChildEntry","childEntry","concat","envJsonc","file","basename","getEnvComponentByEnvId","policiesFromEnvConfig","idWithoutVersion","split","getComponentEnvPolicyFromEnvDefinition","getPreviewHostDependenciesFromEnv","hostDeps","getAdditionalHostDependencies","uniq","mergeVariantPolicies","policiesFromSlots","policiesFromConfig","policiesFromEnv","configuredIds","ids","policiesTuples","extId","policyTupleToApply","policyRegistrar","currentPolicy","currentExtension","findExtension","currentConfig","policiesFromEnvForItself","getPoliciesFromEnvForItself","result","envPolicy","selfPolicy","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","validateAspectData","errorPrefix","allowedPrefixes","errorMsg","isVersionValid","valid","__type","COMPONENT_DEP_TYPE","isSnap","some","policyVersion","allowedSpecialChars","isComp","d","minBitVersion","getOutdatedPkgsFromPolicies","variantPoliciesByPatterns","componentPolicies","patterns","forceVersionBump","allPkgs","getAllDependencies","selectedPkgNames","multimatch","outdatedPkgs","getOutdatedPkgs","mergeOutdatedPkgs","localComponentPkgNames","componentModelVersions","lifecycle","isAuto","componentId","lifecycleType","getAllPolicyPkgs","getAllDedupedDirectDependencies","opts","allDeps","mergedDeps","existing","currentRange","shouldOverwrite","warnAboutOverwrite","incoming","isRootPolicy","isRange1GreaterThanRange2Naively","originalPkg","newPkg","message","info","warn","fetchFullPackageManifest","pm","resolveRemoteVersion","fullMetadata","process","cwd","pkgs","resolver","tryResolve","spec","compact","Promise","all","pkg","latestVersion","newVersionRange","pkgSource","currentVersion","replace","gt","latestRange","repeatPrefix","applyUpdates","updatedVariants","updatedComponents","updatedWorkspacePolicyEntries","updateExisting","getWorkspaceComponentRangePrefix","componentRangePrefix","calcComponentRangePrefixByConsumerComponent","fromWs","modelData","componentFromModel","currentData","provider","loggerExt","configMain","graphql","createLogger","dependencyResolver","envJsoncDetector","getEnvJsoncDetector","registerShowFragments","DependenciesFragment","DevDependenciesFragment","PeerDependenciesFragment","ComponentDependencyFactory","LegacyComponent","registerOnComponentOverridesLoading","toLegacyDepsOverrides","registerOnLoadRequireableExtensionSlot","dependencyResolverSchema","registerService","DependenciesService","registerEnvJsoncMergeCustomizer","serializeDepResolverDataBeforePersist","extDataList","ComponentID","serialize","ExtensionDataList","toModelObjectsHook","PackageJsonTransformer","registerPackageJsonTransformer","packageJsonObject","optionalDependencies","peerDependenciesMeta","toDependenciesManifest","peer","bit","defaultPeerRange","getEmptyDepsObject","devDependencies","peerDependencies","getInjectedDirs","componentDir","getWorkspaceDepsOfBitRoots","MainRuntime","EnvsAspect","LoggerAspect","ConfigAspect","AspectLoaderAspect","ComponentAspect","GraphqlAspect","ConfigStoreAspect","Slot","withType","addRuntime","originalSpec","newVersion","major","minor","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 { isSnap } from '@teambit/component-version';\nimport mapSeries from 'p-map-series';\nimport { DEPS_GRAPH, isFeatureEnabled } from '@teambit/harmony.modules.feature-toggle';\nimport { MainRuntime } from '@teambit/cli';\nimport { getRootComponentDir } from '@teambit/workspace.root-components';\nimport type { Component, ComponentMap, ComponentMain, IComponent } from '@teambit/component';\nimport { ComponentAspect } from '@teambit/component';\nimport { isRange1GreaterThanRange2Naively } from '@teambit/pkg.modules.semver-helper';\nimport type { ConfigMain } from '@teambit/config';\nimport { join, relative } from 'path';\nimport { compact, get, pick, uniq, omit, cloneDeep } from 'lodash';\nimport { ConfigAspect } from '@teambit/config';\nimport { EnvsAspect } from '@teambit/envs';\nimport type { DependenciesEnv, EnvDefinition, EnvJsonc, EnvsMain } from '@teambit/envs';\nimport type { SlotRegistry, ExtensionManifest, Aspect, RuntimeManifest } from '@teambit/harmony';\nimport { Slot } from '@teambit/harmony';\nimport type { RequireableComponent } from '@teambit/harmony.modules.requireable-component';\nimport type { LoggerMain, Logger } from '@teambit/logger';\nimport type { GraphqlMain } from '@teambit/graphql';\nimport { GraphqlAspect } from '@teambit/graphql';\nimport { 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 DEFAULT_HARMONY_PACKAGE_MANAGER,\n getCloudDomain,\n} from '@teambit/legacy.constants';\nimport { ExtensionDataList } from '@teambit/legacy.extension-data';\nimport { componentIdToPackageName } from '@teambit/pkg.modules.component-package-name';\nimport { DetectorHook } from '@teambit/dependencies';\nimport type { ProxyConfig, NetworkConfig } from '@teambit/scope.network';\nimport { Http } from '@teambit/scope.network';\nimport type { Dependency as LegacyDependency } from '@teambit/legacy.consumer-component';\nimport { ConsumerComponent as LegacyComponent } from '@teambit/legacy.consumer-component';\nimport fs from 'fs-extra';\nimport { ComponentID } from '@teambit/component-id';\nimport { readCAFileSync } from '@pnpm/network.ca-file';\nimport type { SourceFile } from '@teambit/component.sources';\nimport type { ProjectManifest, DependencyManifest } from '@pnpm/types';\nimport semver, { SemVer } from 'semver';\nimport type { AspectLoaderMain } from '@teambit/aspect-loader';\nimport { AspectLoaderAspect } from '@teambit/aspect-loader';\nimport { PackageJsonTransformer } from '@teambit/workspace.modules.node-modules-linker';\nimport type { Registries } from '@teambit/pkg.entities.registry';\nimport { Registry } from '@teambit/pkg.entities.registry';\nimport type { UpdatedComponent } from './apply-updates';\nimport { applyUpdates } from './apply-updates';\nimport { ROOT_NAME } from './dependencies/constants';\nimport type { PreInstallSubscriberList, PostInstallSubscriberList, DepInstallerContext } from './dependency-installer';\nimport { DependencyInstaller } from './dependency-installer';\nimport { DependencyResolverAspect } from './dependency-resolver.aspect';\nimport { DependencyVersionResolver } from './dependency-version-resolver';\nimport type { DepLinkerContext, LinkingOptions } from './dependency-linker';\nimport { DependencyLinker } from './dependency-linker';\nimport type {\n ComponentRangePrefix,\n DependencyResolverWorkspaceConfig,\n NodeLinker,\n} from './dependency-resolver-workspace-config';\nimport type { ComponentModelVersion, CurrentPkg, OutdatedPkg, CurrentPkgSource } from './get-all-policy-pkgs';\nimport { getAllPolicyPkgs } from './get-all-policy-pkgs';\nimport { InvalidVersionWithPrefix, PackageManagerNotFound } from './exceptions';\nimport type { CreateFromComponentsOptions, WorkspaceManifest, ManifestDependenciesObject } from './manifest';\nimport { WorkspaceManifestFactory } from './manifest';\nimport type {\n WorkspacePolicyConfigObject,\n VariantPolicyConfigObject,\n WorkspacePolicyAddEntryOptions,\n WorkspacePolicyEntry,\n SerializedVariantPolicy,\n} from './policy';\nimport { WorkspacePolicy, WorkspacePolicyFactory, VariantPolicy } from './policy';\nimport type {\n PackageManager,\n PeerDependencyIssuesByProjects,\n PackageManagerGetPeerDependencyIssuesOptions,\n} from './package-manager';\n\nimport type { SerializedDependency, DependencyFactory, ComponentDependency } from './dependencies';\nimport { DependencyListFactory, ComponentDependencyFactory, COMPONENT_DEP_TYPE, DependencyList } from './dependencies';\nimport { DependenciesFragment, DevDependenciesFragment, PeerDependenciesFragment } from './show-fragments';\nimport { dependencyResolverSchema } from './dependency-resolver.graphql';\nimport type { DependencyDetector } from './dependency-detector';\nimport { DependenciesService } from './dependencies.service';\nimport { EnvPolicy } from './policy/env-policy';\nimport type { ConfigStoreMain } from '@teambit/config-store';\nimport { ConfigStoreAspect } from '@teambit/config-store';\n\nexport const BIT_CLOUD_REGISTRY = `https://node-registry.${getCloudDomain()}/`;\nexport const NPM_REGISTRY = 'https://registry.npmjs.org/';\n\nexport { ProxyConfig, NetworkConfig } from '@teambit/scope.network';\n\nexport interface DependencyResolverComponentData {\n packageName: string;\n policy: SerializedVariantPolicy;\n dependencies: SerializedDependency[];\n componentRangePrefix?: ComponentRangePrefix;\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>;\ntype AddPackagesToLink = () => string[];\ntype AddPackagesToLinkSlot = SlotRegistry<AddPackagesToLink>;\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\nconst defaultLinkingOptions: LinkingOptions = {\n linkTeambitBit: true,\n linkCoreAspects: true,\n};\n\nconst defaultCreateFromComponentsOptions: CreateFromComponentsOptions = {\n filterComponentsFromManifests: true,\n createManifestForComponentsWithoutDependencies: true,\n};\n\n/**\n * see @teambit/dependencies.aspect-docs.dependency-resolver for more information about this aspect.\n *\n * The data of this aspect gets saved in workspace-component-loader.ts, `executeLoadSlot()`.\n * The type of the data is `DependencyResolverComponentData`.\n */\nexport class DependencyResolverMain {\n /**\n * cache the workspace policy to improve performance. when workspace.jsonc is changed, this gets cleared.\n * @see workspace.triggerOnWorkspaceConfigChange\n */\n private _workspacePolicy: WorkspacePolicy | undefined;\n private _additionalPackagesToLink?: string[];\n constructor(\n /**\n * Dependency resolver extension configuration.\n */\n public 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 configStore: ConfigStoreMain,\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 private addPackagesToLinkSlot: AddPackagesToLinkSlot\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 setConfig(config: DependencyResolverWorkspaceConfig) {\n this.config = config;\n }\n\n hasRootComponents(): boolean {\n return Boolean(this.config.rootComponents);\n }\n\n isolatedCapsules(): boolean {\n const globalConfig = this.configStore.getConfig(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 harmonyVersionInRootPolicy(): string | undefined {\n const rootPolicy = this.getWorkspacePolicyFromConfig();\n return rootPolicy.entries.find(({ dependencyId }) => dependencyId === '@teambit/harmony')?.value?.version;\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 registerAddPackagesToLink(fn: AddPackagesToLink) {\n this.addPackagesToLinkSlot.register(fn);\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 // A prerelease version is always added as an exact version.\n // A package installed by its exact version is also added as an exact version.\n if (semver.parse(version)?.prerelease.length || wantedRange === version) {\n return version;\n }\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\n dependencyList.forEach((dep) => {\n let found = componentPolicy.find(dep.id);\n if (!found) {\n const packageName = dep?.getPackageName?.();\n found = packageName ? componentPolicy.find(packageName) : undefined;\n }\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 dep.optional = found?.optional;\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 getDependencies(component: IComponent, { includeHidden = false }: GetDependenciesOptions = {}): 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 = this.getDependenciesFromSerializedDependencies(serializedDependencies);\n if (includeHidden) return depList;\n return depList.filterHidden();\n }\n\n getDependenciesFromLegacyComponent(\n component: LegacyComponent,\n { includeHidden = false }: GetDependenciesOptions = {}\n ) {\n const entry = component.extensions.findCoreExtension(DependencyResolverAspect.id);\n if (!entry) {\n return DependencyList.fromArray([]);\n }\n const serializedDependencies: SerializedDependency[] = entry?.data?.dependencies || [];\n const depList = 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 getComponentDependencies(component: IComponent): ComponentDependency[] {\n const dependencyList = this.getDependencies(component);\n return dependencyList.getComponentDependencies();\n }\n\n getDependenciesFromSerializedDependencies(dependencies: SerializedDependency[]): DependencyList {\n if (!dependencies.length) {\n return DependencyList.fromArray([]);\n }\n const listFactory = this.getDependencyListFactory();\n const deps = 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 */\n getWorkspacePolicy(): WorkspacePolicy {\n if (!this._workspacePolicy) {\n const policyFromConfig = this.getWorkspacePolicyFromConfig();\n const externalPolicies = this.rootPolicyRegistry.toArray().map(([, policy]) => policy);\n this._workspacePolicy = this.mergeWorkspacePolices([policyFromConfig, ...externalPolicies]);\n }\n return this._workspacePolicy;\n }\n\n getWorkspacePolicyManifest() {\n const workspacePolicy = this.getWorkspacePolicy();\n return workspacePolicy.toManifest();\n }\n\n clearCache() {\n this._workspacePolicy = undefined;\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 createComponentIdByPkgNameMap(components: Component[]): Map<string, ComponentID> {\n const componentIdByPkgName = new Map<string, ComponentID>();\n for (const component of components) {\n componentIdByPkgName.set(this.getPackageName(component), component.id);\n }\n return componentIdByPkgName;\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(\n component: Component,\n options: {\n workspacePath: string;\n rootComponentsPath: string;\n isInWorkspace?: boolean;\n }\n ) {\n if (!this.hasRootComponents()) {\n const modulePath = this.getModulePath(component);\n return modulePath;\n }\n const pkgName = this.getPackageName(component);\n const rootComponentsRelativePath = relative(options.workspacePath, options.rootComponentsPath);\n const getRelativeRootComponentDir = getRootComponentDir.bind(null, rootComponentsRelativePath ?? '');\n const selfRootDir = getRelativeRootComponentDir(\n options.isInWorkspace ? component.id.toStringWithoutVersion() : component.id.toString()\n );\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 dirInEnvRoot = join(this.getComponentDirInBitRoots(component, options), 'node_modules', pkgName);\n if (fs.pathExistsSync(dirInEnvRoot)) return dirInEnvRoot;\n return this.getModulePath(component);\n }\n\n getComponentDirInBitRoots(\n component: Component,\n options: {\n workspacePath: string;\n rootComponentsPath: string;\n }\n ) {\n const envId = this.envs.getEnvId(component);\n const rootComponentsRelativePath = relative(options.workspacePath, options.rootComponentsPath);\n return getRootComponentDir(rootComponentsRelativePath ?? '', envId);\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 async addDependenciesGraph(\n component: Component,\n componentRelativeDir: string,\n options: {\n rootDir: string;\n rootComponentsPath?: string;\n componentIdByPkgName: Map<string, ComponentID>;\n }\n ): Promise<void> {\n try {\n component.state._consumer.dependenciesGraph = await this.getPackageManager()?.calcDependenciesGraph?.({\n rootDir: options.rootDir,\n componentRootDir: options.rootComponentsPath\n ? this.getComponentDirInBitRoots(component, {\n workspacePath: options.rootDir,\n rootComponentsPath: options.rootComponentsPath,\n })\n : undefined,\n pkgName: this.getPackageName(component),\n componentRelativeDir,\n componentIdByPkgName: options.componentIdByPkgName,\n });\n } catch (err) {\n // If the dependencies graph feature is disabled, we ignore the error\n if (isFeatureEnabled(DEPS_GRAPH)) {\n throw err;\n }\n }\n }\n\n /**\n * get a component dependency installer.\n */\n getInstaller(options: GetInstallerOptions = {}) {\n const packageManagerName = options.packageManager || this.packageManagerName;\n const packageManager = this.packageManagerSlot.get(packageManagerName);\n const cacheRootDir = options.cacheRootDirectory || this.configStore.getConfig(CFG_PACKAGE_MANAGER_CACHE);\n\n if (!packageManager) {\n throw new PackageManagerNotFound(this.packageManagerName);\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 private getAdditionalPackagesToLink(): string[] {\n if (!this._additionalPackagesToLink) {\n const additionalPackagesToLinkFn = this.addPackagesToLinkSlot.values().flat();\n this._additionalPackagesToLink = additionalPackagesToLinkFn.map((fn) => fn()).flat();\n }\n\n return this._additionalPackagesToLink;\n }\n\n /**\n * get a component dependency linker.\n */\n getLinker(options: GetLinkerOptions = {}) {\n const additionalPackagesToLink = this.getAdditionalPackagesToLink();\n const linkingOptions = Object.assign(\n { additionalPackagesToLink },\n defaultLinkingOptions,\n options?.linkingOptions || {}\n );\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.packageManagerName);\n return packageManager;\n }\n\n async getVersionResolver(options: GetVersionResolverOptions = {}) {\n const packageManager = this.getPackageManager();\n const cacheRootDir = options.cacheRootDirectory || this.configStore.getConfig(CFG_PACKAGE_MANAGER_CACHE);\n\n if (!packageManager) {\n throw new PackageManagerNotFound(this.packageManagerName);\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 [...this.aspectLoader.getCoreAspectIds(), 'teambit.harmony/harmony'];\n }\n\n /**\n * return the system configured package manager. by default pnpm.\n */\n getSystemPackageManager(): PackageManager {\n const packageManager = this.packageManagerSlot.get(DEFAULT_HARMONY_PACKAGE_MANAGER);\n if (!packageManager) throw new Error(`default package manager: ${DEFAULT_HARMONY_PACKAGE_MANAGER} 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 getDefaultBitRegistry = (): Registry => {\n const bitGlobalConfigRegistry = this.configStore.getConfig(CFG_REGISTRY_URL_KEY);\n const bitRegistry = bitGlobalConfigRegistry || BIT_CLOUD_REGISTRY;\n\n const { bitOriginalAuthType, bitAuthHeaderValue, bitOriginalAuthValue } = this.getBitAuthConfig();\n\n const alwaysAuth = !!bitAuthHeaderValue;\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\n registries = this.addAuthToScopedBitRegistries(registries);\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): Registries {\n const { bitOriginalAuthType, bitAuthHeaderValue, bitOriginalAuthValue } = this.getBitAuthConfig();\n const alwaysAuth = bitAuthHeaderValue !== undefined;\n let updatedRegistries = registries;\n Object.entries(registries.scopes).map(([name, registry]) => {\n if (!registry.authHeaderValue && BIT_CLOUD_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(): Partial<{\n bitOriginalAuthType: string;\n bitAuthHeaderValue: string;\n bitOriginalAuthValue: string;\n }> {\n const bitGlobalConfigToken = this.configStore.getConfig(CFG_USER_TOKEN_KEY);\n const res = {\n bitOriginalAuthType: '',\n bitAuthHeaderValue: '',\n bitOriginalAuthValue: '',\n };\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 (bitGlobalConfigToken) {\n res.bitOriginalAuthType = 'authToken';\n res.bitAuthHeaderValue = `Bearer ${bitGlobalConfigToken}`;\n res.bitOriginalAuthValue = bitGlobalConfigToken;\n }\n\n return res;\n }\n\n get packageManagerName(): string {\n return this.config.packageManager ?? DEFAULT_HARMONY_PACKAGE_MANAGER;\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[]): boolean {\n const workspacePolicy = this.getWorkspacePolicyFromConfig();\n const workspacePolicyUpdated = workspacePolicy.remove(dependencyIds);\n const isRemoved = workspacePolicyUpdated.entries.length !== workspacePolicy.entries.length;\n if (isRemoved) this.updateConfigPolicy(workspacePolicyUpdated);\n return isRemoved;\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(reasonForChange?: string) {\n await this.configAspect.workspaceConfig?.write({ reasonForChange });\n this.clearCache();\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, { envId });\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, { envId });\n }\n\n async getEnvPolicyFromEnvId(\n id: ComponentID,\n legacyFiles?: SourceFile[],\n envExtendsDeps?: LegacyDependency[]\n ): Promise<EnvPolicy | undefined> {\n const fromFile = await this.getEnvPolicyFromFile(id.toString(), legacyFiles, envExtendsDeps);\n if (fromFile) return fromFile;\n const envDef = this.envs.getEnvDefinitionById(id);\n if (!envDef) return undefined;\n const env = envDef.env;\n return this.getComponentEnvPolicyFromEnv(env, {\n envId: id.toStringWithoutVersion(),\n });\n }\n\n /**\n * @deprecated use getEnvPolicyFromEnvId instead (it's the same)\n */\n async getEnvPolicyFromEnvLegacyId(id: ComponentID, legacyFiles?: SourceFile[]): Promise<EnvPolicy | undefined> {\n return this.getEnvPolicyFromEnvId(id, legacyFiles);\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 const envIdWithoutVersion = envId.toStringWithoutVersion();\n if (this.envs.isCoreEnv(envIdWithoutVersion)) {\n const env = this.envs.getEnv(component).env;\n return this.getComponentEnvPolicyFromEnv(env, { envId: envIdWithoutVersion });\n }\n const fromFile = await this.getEnvPolicyFromFile(envId.toString());\n if (fromFile) return fromFile;\n\n this.envsWithoutManifest.add(envId.toString());\n const env = this.envs.getEnv(component).env;\n return this.getComponentEnvPolicyFromEnv(env, { envId: envIdWithoutVersion });\n }\n\n async getEnvManifest(\n envComponent?: Component,\n legacyFiles?: SourceFile[],\n envExtendsDeps?: LegacyDependency[]\n ): Promise<EnvPolicy | undefined> {\n let envManifest;\n if (envComponent) {\n envManifest = (await this.envs.getOrCalculateEnvManifest(envComponent, legacyFiles, envExtendsDeps)) as any;\n }\n if (!envManifest && legacyFiles) {\n envManifest = await this.envs.calculateEnvManifest(undefined, legacyFiles, envExtendsDeps);\n }\n const policy = envManifest?.policy;\n if (!policy) return undefined;\n const allPoliciesFromEnv = EnvPolicy.fromConfigObject(policy, {\n includeLegacyPeersInSelfPolicy: envComponent && this.envs.isCoreEnv(envComponent.id.toStringWithoutVersion()),\n });\n return allPoliciesFromEnv;\n }\n\n /**\n * Merge policy from parent and child env.jsonc files\n * The rule is that for each type of dependency (dev, runtime, peer) we check each item.\n * if a dep with a name exists on the child we will take the entire object from the child (including the version,\n * supported range, force etc')\n * if a dep exists with a version value \"-\" we will remove it from the policy\n */\n mergeEnvManifestPolicy(parent: EnvJsonc, child: EnvJsonc): object {\n const policy = {};\n ['peers', 'dev', 'runtime'].forEach((key) => {\n policy[key] = cloneDeep(parent.policy?.[key] || []);\n const childEntries = cloneDeep(child.policy?.[key] || []);\n\n policy[key] = policy[key].filter((entry) => {\n const foundChildEntry = childEntries.find((childEntry) => {\n return childEntry.name === entry.name;\n });\n return !foundChildEntry;\n });\n policy[key] = policy[key].concat(childEntries);\n policy[key] = policy[key].filter((entry) => {\n return entry.version !== '-';\n });\n });\n return { policy };\n }\n\n private async getEnvPolicyFromFile(\n envId: string,\n legacyFiles?: SourceFile[],\n envExtendsDeps?: LegacyDependency[]\n ): Promise<EnvPolicy | undefined> {\n const isCoreEnv = this.envs.isCoreEnv(envId);\n if (isCoreEnv) return undefined;\n if (legacyFiles) {\n const envJsonc = legacyFiles.find((file) => file.basename === 'env.jsonc');\n if (envJsonc) {\n return this.getEnvManifest(undefined, legacyFiles, envExtendsDeps);\n }\n return undefined;\n }\n const envComponent = await this.envs.getEnvComponentByEnvId(envId, envId);\n return this.getEnvManifest(envComponent);\n }\n\n async getComponentEnvPolicyFromEnv(env: DependenciesEnv, options: { envId: string }): Promise<EnvPolicy> {\n if (env.getDependencies && typeof env.getDependencies === 'function') {\n const policiesFromEnvConfig = await env.getDependencies();\n if (policiesFromEnvConfig) {\n const idWithoutVersion = options.envId.split('@')[0];\n const allPoliciesFromEnv = EnvPolicy.fromConfigObject(policiesFromEnvConfig, {\n includeLegacyPeersInSelfPolicy: this.envs.isCoreEnv(idWithoutVersion),\n });\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, { envId: envDef.id });\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: ComponentID,\n legacyFiles?: SourceFile[],\n envExtendsDeps?: LegacyDependency[]\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], { source: '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\n if (currentConfig && currentConfig.policy) {\n policiesFromConfig = VariantPolicy.fromConfigObject(currentConfig.policy, { source: 'config' });\n }\n const policiesFromEnvForItself =\n (await this.getPoliciesFromEnvForItself(id, legacyFiles, envExtendsDeps)) ?? VariantPolicy.getEmpty();\n\n const result = VariantPolicy.mergePolices([\n policiesFromEnv,\n policiesFromEnvForItself,\n policiesFromSlots,\n policiesFromConfig,\n ]);\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(\n id: ComponentID,\n legacyFiles?: SourceFile[],\n envExtendsDeps?: LegacyDependency[]\n ): Promise<VariantPolicy | undefined> {\n const envPolicy = await this.getEnvPolicyFromEnvId(id, legacyFiles, envExtendsDeps);\n return envPolicy?.selfPolicy;\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 validateAspectData(data: DependencyResolverComponentData) {\n const errorPrefix = `failed validating ${DependencyResolverAspect.id} aspect-data.`;\n const allowedPrefixes = ['https://', 'git:', 'git+ssh://', 'git+https://'];\n let errorMsg: undefined | string;\n data.dependencies?.forEach((dep) => {\n const isVersionValid = Boolean(semver.valid(dep.version) || semver.validRange(dep.version));\n if (isVersionValid) return;\n if (dep.__type === COMPONENT_DEP_TYPE && isSnap(dep.version)) return;\n if (allowedPrefixes.some((prefix) => dep.version.startsWith(prefix))) return; // some packages are installed from https/git\n errorMsg = `${errorPrefix} the dependency version \"${dep.version}\" of ${dep.id} is not a valid semver version or range`;\n });\n data.policy?.forEach((policy) => {\n const policyVersion = policy.value.version;\n const allowedSpecialChars = ['+', '-'];\n if (policyVersion === '*') {\n // this is only valid for packages, not for components.\n const isComp = data.dependencies.find(\n (d) => d.__type === COMPONENT_DEP_TYPE && d.packageName === policy.dependencyId\n );\n if (!isComp) return;\n errorMsg = `${errorPrefix} the policy version \"${policyVersion}\" of ${policy.dependencyId} is not valid for components, only for packages.\nas an alternative, you can use \"+\" to keep the same version installed in the workspace`;\n }\n const isVersionValid = Boolean(\n semver.valid(policyVersion) || semver.validRange(policyVersion) || allowedSpecialChars.includes(policyVersion)\n );\n if (isVersionValid) return;\n errorMsg = `${errorPrefix} the policy version \"${policyVersion}\" of ${policy.dependencyId} is not a valid semver version or range`;\n });\n\n if (errorMsg) {\n return { errorMsg, minBitVersion: '1.9.107' };\n }\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' | 'compatible';\n }): Promise<MergedOutdatedPkg[] | null> {\n let allPkgs = this.getAllDependencies({\n variantPoliciesByPatterns,\n componentPolicies,\n components,\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 if (!allPkgs.length) {\n return null;\n }\n }\n const outdatedPkgs = await this.getOutdatedPkgs({ rootDir, forceVersionBump }, allPkgs);\n return mergeOutdatedPkgs(outdatedPkgs);\n }\n\n getAllDependencies({\n variantPoliciesByPatterns,\n componentPolicies,\n components,\n }: {\n variantPoliciesByPatterns: Record<string, VariantPolicyConfigObject>;\n componentPolicies: Array<{ componentId: ComponentID; policy: any }>;\n components: Component[];\n }): CurrentPkg[] {\n const localComponentPkgNames = new Set(components.map((component) => this.getPackageName(component)));\n const componentModelVersions: ComponentModelVersion[] = components\n .map((component) => {\n const depList = 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 .flat();\n return getAllPolicyPkgs({\n rootPolicy: this.getWorkspacePolicyFromConfig(),\n variantPoliciesByPatterns,\n componentPolicies,\n componentModelVersions,\n });\n }\n\n getAllDedupedDirectDependencies(opts: {\n variantPoliciesByPatterns: Record<string, VariantPolicyConfigObject>;\n componentPolicies: Array<{ componentId: ComponentID; policy: any }>;\n components: Component[];\n }): CurrentPkg[] {\n const allDeps = this.getAllDependencies(opts);\n const mergedDeps: Record<string, CurrentPkg> = {};\n for (const dep of allDeps) {\n const existing = mergedDeps[dep.name];\n if (existing) {\n if (existing.currentRange === dep.currentRange) continue;\n if (shouldOverwrite(existing, dep)) {\n this.warnAboutOverwrite(existing, dep);\n mergedDeps[dep.name] = dep;\n } else {\n this.warnAboutOverwrite(dep, existing);\n }\n } else {\n mergedDeps[dep.name] = dep;\n }\n }\n return Object.values(mergedDeps);\n\n function shouldOverwrite(existing: CurrentPkg, incoming: CurrentPkg): boolean {\n if (isRootPolicy(existing)) {\n if (!isRootPolicy(incoming)) return false;\n return isRange1GreaterThanRange2Naively(incoming.currentRange, existing.currentRange);\n }\n return isRootPolicy(incoming) || isRange1GreaterThanRange2Naively(incoming.currentRange, existing.currentRange);\n }\n }\n\n private warnAboutOverwrite(originalPkg: CurrentPkg, newPkg: CurrentPkg) {\n const message = `${originalPkg.name}@${originalPkg.currentRange} from ${originalPkg.source} overwritten by ${newPkg.currentRange} from ${newPkg.source}`;\n if (isRootPolicy(newPkg)) {\n this.logger.info(message);\n } else {\n this.logger.warn(message);\n }\n }\n\n /**\n * Fetching the package manifest from the full package document.\n * By default, we always request the abbreviated package document,\n * which is much smaller in size but doesn't include all the fields published in the package's package.json file.\n */\n async fetchFullPackageManifest(packageName: string): Promise<DependencyManifest | undefined> {\n const pm = this.getSystemPackageManager();\n const { manifest } = await pm.resolveRemoteVersion(packageName, {\n cacheRootDir: this.configStore.getConfig(CFG_PACKAGE_MANAGER_CACHE),\n fullMetadata: true,\n // We can set anything here. The rootDir option is ignored, when resolving npm-hosted packages.\n rootDir: process.cwd(),\n });\n return manifest;\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' | 'compatible';\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(\n `${pkg.name}@${newVersionRange(pkg.currentRange, { pkgSource: pkg.source, forceVersionBump })}`\n );\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 getWorkspaceComponentRangePrefix(): ComponentRangePrefix | undefined {\n return this.config.componentRangePrefix;\n }\n calcComponentRangePrefixByConsumerComponent(component: LegacyComponent): ComponentRangePrefix | undefined {\n const fromWs = this.getWorkspaceComponentRangePrefix();\n if (fromWs) {\n return fromWs;\n }\n const modelData = component.componentFromModel?.extensions.findCoreExtension(DependencyResolverAspect.id);\n if (modelData?.data?.componentRangePrefix) {\n return modelData.data.componentRangePrefix;\n }\n const currentData = component.extensions?.findCoreExtension(DependencyResolverAspect.id)?.data;\n if (currentData?.componentRangePrefix) {\n return currentData.componentRangePrefix;\n }\n return undefined;\n }\n\n static runtime = MainRuntime;\n static dependencies = [\n EnvsAspect,\n LoggerAspect,\n ConfigAspect,\n AspectLoaderAspect,\n ComponentAspect,\n GraphqlAspect,\n ConfigStoreAspect,\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 Slot.withType<AddPackagesToLinkSlot>(),\n ];\n\n static defaultConfig: DependencyResolverWorkspaceConfig &\n Required<Pick<DependencyResolverWorkspaceConfig, 'linkCoreAspects'>> = {\n policy: {},\n linkCoreAspects: true,\n };\n\n static async provider(\n [envs, loggerExt, configMain, aspectLoader, componentAspect, graphql, configStore]: [\n EnvsMain,\n LoggerMain,\n ConfigMain,\n AspectLoaderMain,\n ComponentMain,\n GraphqlMain,\n ConfigStoreMain,\n ],\n config: DependencyResolverWorkspaceConfig,\n [\n rootPolicyRegistry,\n policiesRegistry,\n packageManagerSlot,\n dependencyFactorySlot,\n preInstallSlot,\n postInstallSlot,\n addPackagesToLinkSlot,\n ]: [\n RootPolicyRegistry,\n PoliciesRegistry,\n PackageManagerSlot,\n DependencyFactorySlot,\n PreInstallSlot,\n PostInstallSlot,\n AddPackagesToLinkSlot,\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 configStore,\n componentAspect,\n packageManagerSlot,\n dependencyFactorySlot,\n preInstallSlot,\n postInstallSlot,\n addPackagesToLinkSlot\n );\n\n const envJsoncDetector = envs.getEnvJsoncDetector();\n dependencyResolver.registerDetector(envJsoncDetector);\n\n componentAspect.registerShowFragments([\n new DependenciesFragment(dependencyResolver),\n new DevDependenciesFragment(dependencyResolver),\n new PeerDependenciesFragment(dependencyResolver),\n ]);\n componentAspect.dependencyResolver = dependencyResolver;\n // TODO: solve this generics issue and remove the ts-ignore\n // @ts-ignore\n dependencyResolver.registerDependencyFactories([new ComponentDependencyFactory(componentAspect)]);\n\n LegacyComponent.registerOnComponentOverridesLoading(\n DependencyResolverAspect.id,\n async (\n configuredExtensions: ExtensionDataList,\n id: ComponentID,\n legacyFiles: SourceFile[],\n envExtendsDeps?: LegacyDependency[]\n ) => {\n const policy = await dependencyResolver.mergeVariantPolicies(\n configuredExtensions,\n id,\n legacyFiles,\n envExtendsDeps\n );\n return policy.toLegacyDepsOverrides();\n }\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 envs.registerEnvJsoncMergeCustomizer(dependencyResolver.mergeEnvManifestPolicy.bind(dependencyResolver));\n\n // this is needed because during tag process, the data.dependencies can be loaded and the componentId can become\n // an instance of ComponentID class. it needs to be serialized before saved into objects.\n const serializeDepResolverDataBeforePersist = (extDataList: ExtensionDataList) => {\n const entry = extDataList.findCoreExtension(DependencyResolverAspect.id);\n if (!entry) return;\n const dependencies = get(entry, ['data', 'dependencies'], []);\n dependencies.forEach((dep) => {\n if (dep.__type === COMPONENT_DEP_TYPE) {\n dep.componentId = dep.componentId instanceof ComponentID ? dep.componentId.serialize() : dep.componentId;\n }\n });\n };\n ExtensionDataList.toModelObjectsHook.push(serializeDepResolverDataBeforePersist);\n PackageJsonTransformer.registerPackageJsonTransformer(async (component, packageJsonObject) => {\n const deps = dependencyResolver.getDependencies(component);\n const { optionalDependencies, peerDependenciesMeta } = deps.toDependenciesManifest();\n packageJsonObject.optionalDependencies = optionalDependencies;\n packageJsonObject.peerDependenciesMeta = peerDependenciesMeta;\n const entry = component.get(DependencyResolverAspect.id);\n if (entry?.config.peer) {\n if (!packageJsonObject.bit) {\n packageJsonObject.bit = {};\n }\n packageJsonObject.bit.peer = true;\n if (entry.config.defaultPeerRange) {\n packageJsonObject.bit.defaultPeerRange = entry.config.defaultPeerRange;\n }\n }\n return packageJsonObject;\n });\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.packageManagerName);\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(\n currentRange: string,\n opts: { pkgSource: CurrentPkgSource; forceVersionBump?: 'major' | 'minor' | 'patch' | 'compatible' }\n) {\n if (opts.forceVersionBump == null || opts.forceVersionBump === 'major') return 'latest';\n const currentVersion = semver.valid(currentRange.replace(/[\\^~]/, ''));\n if (opts.forceVersionBump === 'compatible') {\n if ((opts.pkgSource === 'component' || opts.pkgSource === 'component-model') && currentVersion === currentRange) {\n return `^${currentVersion}`;\n }\n return currentRange;\n }\n if (!currentVersion) return null;\n const [major, minor] = currentVersion.split('.');\n switch (opts.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\nfunction isRootPolicy(dep: CurrentPkg): boolean {\n return dep.source === 'rootPolicy';\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_multimatch","data","_interopRequireDefault","require","_componentVersion","_pMapSeries","_harmonyModules","_cli","_workspace","_component","_pkgModules","_path","_lodash","_config","_envs","_harmony","_graphql","_logger","_legacy","_legacy2","_pkgModules2","_detectorHook","_scope","_legacy3","_fsExtra","_componentId","_network","_semver","_interopRequireWildcard","_aspectLoader","_workspaceModules","_pkgEntities","_applyUpdates","_constants","_dependencyInstaller","_dependencyResolver","_dependencyVersionResolver","_dependencyLinker","_getAllPolicyPkgs","_exceptions","_manifest","_policy","_dependencies","_showFragments","_dependencyResolver2","_dependencies2","_envPolicy","_configStore","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","BIT_CLOUD_REGISTRY","exports","getCloudDomain","NPM_REGISTRY","defaultLinkingOptions","linkTeambitBit","linkCoreAspects","defaultCreateFromComponentsOptions","filterComponentsFromManifests","createManifestForComponentsWithoutDependencies","DependencyResolverMain","constructor","config","rootPolicyRegistry","policiesRegistry","envs","logger","configAspect","aspectLoader","configStore","componentAspect","packageManagerSlot","dependencyFactorySlot","preInstallSlot","postInstallSlot","addPackagesToLinkSlot","Set","supportsDedupingOnExistingRoot","packageManager","getPackageManager","isolatedCapsules","setConfig","hasRootComponents","Boolean","rootComponents","globalConfig","getConfig","CFG_ISOLATED_SCOPE_CAPSULES","defaultVal","undefined","res","harmonyVersionInRootPolicy","rootPolicy","getWorkspacePolicyFromConfig","entries","find","dependencyId","version","nodeLinker","packageManagerName","pmName","defaultConfig","registerPackageManager","register","registerDependencyFactories","factories","registerPreInstallSubscribers","subscribers","registerPostInstallSubscribers","registerAddPackagesToLink","fn","getSavePrefix","savePrefix","getVersionWithSavePrefix","overridePrefix","wantedRange","semver","parse","prerelease","includes","prefix","versionWithPrefix","validRange","InvalidVersionWithPrefix","getPolicy","component","entry","state","aspects","DependencyResolverAspect","id","VariantPolicy","getEmpty","serializedPolicy","extractDepsFromLegacy","policy","componentPolicy","legacyComponent","_consumer","listFactory","getDependencyListFactory","dependencyList","fromLegacyComponent","dep","found","packageName","getPackageName","source","hidden","optional","values","flat","factoriesMap","reduce","acc","factory","type","DependencyListFactory","getDependencies","includeHidden","DependencyList","fromArray","serializedDependencies","dependencies","depList","getDependenciesFromSerializedDependencies","filterHidden","getDependenciesFromLegacyComponent","extensions","findCoreExtension","getComponentDependencies","deps","fromSerializedDependencies","getWorkspacePolicy","_workspacePolicy","policyFromConfig","externalPolicies","toArray","map","mergeWorkspacePolices","getWorkspacePolicyManifest","workspacePolicy","toManifest","clearCache","WorkspacePolicyFactory","fromConfigObject","getWorkspacePolicyFromConfigObject","obj","getWorkspacePolicyFromPackageJson","packageJson","fromPackageJson","polices","WorkspacePolicy","mergePolices","getWorkspaceManifest","name","ROOT_NAME","SemVer","rootDir","components","options","context","statusMessage","inCapsule","setStatusLine","concreteOpts","workspaceManifestFactory","WorkspaceManifestFactory","createFromComponents","consoleSuccess","getDepResolverData","calcPackageName","createComponentIdByPkgNameMap","componentIdByPkgName","Map","componentIdToPackageName","getRuntimeModulePath","modulePath","getModulePath","pkgName","rootComponentsRelativePath","relative","workspacePath","rootComponentsPath","getRelativeRootComponentDir","getRootComponentDir","bind","selfRootDir","isInWorkspace","toStringWithoutVersion","toString","fs","pathExistsSync","innerDir","join","dirInEnvRoot","getComponentDirInBitRoots","envId","getEnvId","relativePath","addDependenciesGraph","componentRelativeDir","dependenciesGraph","calcDependenciesGraph","componentRootDir","err","isFeatureEnabled","DEPS_GRAPH","getInstaller","cacheRootDir","cacheRootDirectory","CFG_PACKAGE_MANAGER_CACHE","PackageManagerNotFound","debug","ensureDirSync","preInstallSubscribers","getPreInstallSubscribers","postInstallSubscribers","getPostInstallSubscribers","DependencyInstaller","packageImportMethod","sideEffectsCache","nodeVersion","engineStrict","peerDependencyRules","neverBuiltDependencies","preferOffline","installingContext","getAdditionalPackagesToLink","_additionalPackagesToLink","additionalPackagesToLinkFn","getLinker","additionalPackagesToLink","linkingOptions","assign","DependencyLinker","linkingContext","getVersionResolver","networkConcurrency","getNetworkConfig","DependencyVersionResolver","getCompIdsThatShouldNotBeInPolicy","getCoreAspectIds","getSystemPackageManager","DEFAULT_HARMONY_PACKAGE_MANAGER","Error","getProxyConfig","proxyConfigFromDepResolverConfig","getProxyConfigFromDepResolverConfig","httpProxy","httpsProxy","proxyConfigFromPackageManager","getProxyConfigFromPackageManager","proxyConfigFromGlobalConfig","getProxyConfigFromGlobalConfig","proxy","noProxy","networkConfig","getNetworkConfigFromGlobalConfig","getNetworkConfigFromPackageManager","getNetworkConfigFromDepResolverConfig","JSON","stringify","key","globalNetworkConfig","Http","ca","cafile","readCAFileSync","pick","strictSsl","strictSSL","toLowerCase","networkConfigFromPackageManager","systemPm","getMissingPeerDependencies","componentDirectoryMap","peerDependencyIssues","installer","manifests","getComponentManifests","getPeerDependencyIssues","intersections","getRegistries","registries","getDefaultBitRegistry","bitGlobalConfigRegistry","CFG_REGISTRY_URL_KEY","bitRegistry","bitOriginalAuthType","bitAuthHeaderValue","bitOriginalAuthValue","getBitAuthConfig","alwaysAuth","bitDefaultRegistry","Registry","installFromBitDevRegistry","defaultRegistry","uri","startsWith","setDefaultRegistry","addAuthToScopedBitRegistries","updatedRegistries","scopes","registry","authHeaderValue","registryWithAuth","updateScopedRegistry","bitGlobalConfigToken","CFG_USER_TOKEN_KEY","addToRootPolicy","add","updateConfigPolicy","removeFromRootPolicy","dependencyIds","workspacePolicyUpdated","remove","isRemoved","workspacePolicyObject","toConfigObject","setExtension","overrideExisting","ignoreVersion","persistConfig","reasonForChange","workspaceConfig","write","registerDependenciesPolicies","registerRootPolicy","getComponentEnvPolicyFromExtension","configuredExtensions","calculateEnvIdFromExtensions","isCoreEnv","env","calculateEnvFromExtensions","getComponentEnvPolicyFromEnv","fromFile","getEnvPolicyFromFile","getEnvPolicyFromEnvId","legacyFiles","envExtendsDeps","envDef","getEnvDefinitionById","getEnvPolicyFromEnvLegacyId","getComponentEnvPolicy","calculateEnvId","envIdWithoutVersion","getEnv","envsWithoutManifest","getEnvManifest","envComponent","envManifest","getOrCalculateEnvManifest","calculateEnvManifest","allPoliciesFromEnv","EnvPolicy","includeLegacyPeersInSelfPolicy","mergeEnvManifestPolicy","parent","child","cloneDeep","childEntries","foundChildEntry","childEntry","concat","envJsonc","file","basename","getEnvComponentByEnvId","policiesFromEnvConfig","idWithoutVersion","split","getComponentEnvPolicyFromEnvDefinition","getPreviewHostDependenciesFromEnv","hostDeps","getAdditionalHostDependencies","uniq","mergeVariantPolicies","policiesFromSlots","policiesFromConfig","policiesFromEnv","configuredIds","ids","policiesTuples","extId","policyTupleToApply","policyRegistrar","currentPolicy","currentExtension","findExtension","currentConfig","policiesFromEnvForItself","getPoliciesFromEnvForItself","result","envPolicy","selfPolicy","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","validateAspectData","errorPrefix","allowedPrefixes","errorMsg","isVersionValid","valid","__type","COMPONENT_DEP_TYPE","isSnap","some","policyVersion","allowedSpecialChars","isComp","d","minBitVersion","getOutdatedPkgsFromPolicies","variantPoliciesByPatterns","componentPolicies","patterns","forceVersionBump","allPkgs","getAllDependencies","selectedPkgNames","multimatch","outdatedPkgs","getOutdatedPkgs","mergeOutdatedPkgs","localComponentPkgNames","componentModelVersions","lifecycle","isAuto","componentId","lifecycleType","getAllPolicyPkgs","getAllDedupedDirectDependencies","opts","allDeps","mergedDeps","existing","currentRange","shouldOverwrite","warnAboutOverwrite","incoming","isRootPolicy","isRange1GreaterThanRange2Naively","originalPkg","newPkg","message","info","warn","fetchFullPackageManifest","pm","resolveRemoteVersion","fullMetadata","process","cwd","pkgs","resolver","tryResolve","spec","compact","Promise","all","pkg","latestVersion","newVersionRange","pkgSource","currentVersion","replace","gt","latestRange","repeatPrefix","applyUpdates","updatedVariants","updatedComponents","updatedWorkspacePolicyEntries","updateExisting","getWorkspaceComponentRangePrefix","componentRangePrefix","calcComponentRangePrefixByConsumerComponent","fromWs","modelData","componentFromModel","currentData","provider","loggerExt","configMain","graphql","createLogger","dependencyResolver","envJsoncDetector","getEnvJsoncDetector","registerShowFragments","DependenciesFragment","DevDependenciesFragment","PeerDependenciesFragment","ComponentDependencyFactory","LegacyComponent","registerOnComponentOverridesLoading","toLegacyDepsOverrides","registerOnLoadRequireableExtensionSlot","dependencyResolverSchema","registerService","DependenciesService","registerEnvJsoncMergeCustomizer","serializeDepResolverDataBeforePersist","extDataList","ComponentID","serialize","ExtensionDataList","toModelObjectsHook","PackageJsonTransformer","registerPackageJsonTransformer","packageJsonObject","optionalDependencies","peerDependenciesMeta","toDependenciesManifest","peer","bit","defaultPeerRange","getEmptyDepsObject","devDependencies","peerDependencies","getInjectedDirs","componentDir","getWorkspaceDepsOfBitRoots","MainRuntime","EnvsAspect","LoggerAspect","ConfigAspect","AspectLoaderAspect","ComponentAspect","GraphqlAspect","ConfigStoreAspect","Slot","withType","addRuntime","originalSpec","newVersion","major","minor","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 { isSnap } from '@teambit/component-version';\nimport mapSeries from 'p-map-series';\nimport { DEPS_GRAPH, isFeatureEnabled } from '@teambit/harmony.modules.feature-toggle';\nimport { MainRuntime } from '@teambit/cli';\nimport { getRootComponentDir } from '@teambit/workspace.root-components';\nimport type { Component, ComponentMap, ComponentMain, IComponent } from '@teambit/component';\nimport { ComponentAspect } from '@teambit/component';\nimport { isRange1GreaterThanRange2Naively } from '@teambit/pkg.modules.semver-helper';\nimport type { ConfigMain } from '@teambit/config';\nimport { join, relative } from 'path';\nimport { compact, get, pick, uniq, omit, cloneDeep } from 'lodash';\nimport { ConfigAspect } from '@teambit/config';\nimport { EnvsAspect } from '@teambit/envs';\nimport type { DependenciesEnv, EnvDefinition, EnvJsonc, EnvsMain } from '@teambit/envs';\nimport type { SlotRegistry, ExtensionManifest, Aspect, RuntimeManifest } from '@teambit/harmony';\nimport { Slot } from '@teambit/harmony';\nimport type { RequireableComponent } from '@teambit/harmony.modules.requireable-component';\nimport type { LoggerMain, Logger } from '@teambit/logger';\nimport type { GraphqlMain } from '@teambit/graphql';\nimport { GraphqlAspect } from '@teambit/graphql';\nimport { 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 DEFAULT_HARMONY_PACKAGE_MANAGER,\n getCloudDomain,\n} from '@teambit/legacy.constants';\nimport { ExtensionDataList } from '@teambit/legacy.extension-data';\nimport { componentIdToPackageName } from '@teambit/pkg.modules.component-package-name';\nimport { DetectorHook } from './detector-hook';\nimport type { ProxyConfig, NetworkConfig } from '@teambit/scope.network';\nimport { Http } from '@teambit/scope.network';\nimport type { Dependency as LegacyDependency } from '@teambit/legacy.consumer-component';\nimport { ConsumerComponent as LegacyComponent } from '@teambit/legacy.consumer-component';\nimport fs from 'fs-extra';\nimport { ComponentID } from '@teambit/component-id';\nimport { readCAFileSync } from '@pnpm/network.ca-file';\nimport type { SourceFile } from '@teambit/component.sources';\nimport type { ProjectManifest, DependencyManifest } from '@pnpm/types';\nimport semver, { SemVer } from 'semver';\nimport type { AspectLoaderMain } from '@teambit/aspect-loader';\nimport { AspectLoaderAspect } from '@teambit/aspect-loader';\nimport { PackageJsonTransformer } from '@teambit/workspace.modules.node-modules-linker';\nimport type { Registries } from '@teambit/pkg.entities.registry';\nimport { Registry } from '@teambit/pkg.entities.registry';\nimport type { UpdatedComponent } from './apply-updates';\nimport { applyUpdates } from './apply-updates';\nimport { ROOT_NAME } from './dependencies/constants';\nimport type { PreInstallSubscriberList, PostInstallSubscriberList, DepInstallerContext } from './dependency-installer';\nimport { DependencyInstaller } from './dependency-installer';\nimport { DependencyResolverAspect } from './dependency-resolver.aspect';\nimport { DependencyVersionResolver } from './dependency-version-resolver';\nimport type { DepLinkerContext, LinkingOptions } from './dependency-linker';\nimport { DependencyLinker } from './dependency-linker';\nimport type {\n ComponentRangePrefix,\n DependencyResolverWorkspaceConfig,\n NodeLinker,\n} from './dependency-resolver-workspace-config';\nimport type { ComponentModelVersion, CurrentPkg, OutdatedPkg, CurrentPkgSource } from './get-all-policy-pkgs';\nimport { getAllPolicyPkgs } from './get-all-policy-pkgs';\nimport { InvalidVersionWithPrefix, PackageManagerNotFound } from './exceptions';\nimport type { CreateFromComponentsOptions, WorkspaceManifest, ManifestDependenciesObject } from './manifest';\nimport { WorkspaceManifestFactory } from './manifest';\nimport type {\n WorkspacePolicyConfigObject,\n VariantPolicyConfigObject,\n WorkspacePolicyAddEntryOptions,\n WorkspacePolicyEntry,\n SerializedVariantPolicy,\n} from './policy';\nimport { WorkspacePolicy, WorkspacePolicyFactory, VariantPolicy } from './policy';\nimport type {\n PackageManager,\n PeerDependencyIssuesByProjects,\n PackageManagerGetPeerDependencyIssuesOptions,\n} from './package-manager';\n\nimport type { SerializedDependency, DependencyFactory, ComponentDependency } from './dependencies';\nimport { DependencyListFactory, ComponentDependencyFactory, COMPONENT_DEP_TYPE, DependencyList } from './dependencies';\nimport { DependenciesFragment, DevDependenciesFragment, PeerDependenciesFragment } from './show-fragments';\nimport { dependencyResolverSchema } from './dependency-resolver.graphql';\nimport type { DependencyDetector } from './detector-hook';\nimport { DependenciesService } from './dependencies.service';\nimport { EnvPolicy } from './policy/env-policy';\nimport type { ConfigStoreMain } from '@teambit/config-store';\nimport { ConfigStoreAspect } from '@teambit/config-store';\n\nexport const BIT_CLOUD_REGISTRY = `https://node-registry.${getCloudDomain()}/`;\nexport const NPM_REGISTRY = 'https://registry.npmjs.org/';\n\nexport { ProxyConfig, NetworkConfig } from '@teambit/scope.network';\n\nexport interface DependencyResolverComponentData {\n packageName: string;\n policy: SerializedVariantPolicy;\n dependencies: SerializedDependency[];\n componentRangePrefix?: ComponentRangePrefix;\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>;\ntype AddPackagesToLink = () => string[];\ntype AddPackagesToLinkSlot = SlotRegistry<AddPackagesToLink>;\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\nconst defaultLinkingOptions: LinkingOptions = {\n linkTeambitBit: true,\n linkCoreAspects: true,\n};\n\nconst defaultCreateFromComponentsOptions: CreateFromComponentsOptions = {\n filterComponentsFromManifests: true,\n createManifestForComponentsWithoutDependencies: true,\n};\n\n/**\n * see @teambit/dependencies.aspect-docs.dependency-resolver for more information about this aspect.\n *\n * The data of this aspect gets saved in workspace-component-loader.ts, `executeLoadSlot()`.\n * The type of the data is `DependencyResolverComponentData`.\n */\nexport class DependencyResolverMain {\n /**\n * cache the workspace policy to improve performance. when workspace.jsonc is changed, this gets cleared.\n * @see workspace.triggerOnWorkspaceConfigChange\n */\n private _workspacePolicy: WorkspacePolicy | undefined;\n private _additionalPackagesToLink?: string[];\n constructor(\n /**\n * Dependency resolver extension configuration.\n */\n public 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 configStore: ConfigStoreMain,\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 private addPackagesToLinkSlot: AddPackagesToLinkSlot\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 setConfig(config: DependencyResolverWorkspaceConfig) {\n this.config = config;\n }\n\n hasRootComponents(): boolean {\n return Boolean(this.config.rootComponents);\n }\n\n isolatedCapsules(): boolean {\n const globalConfig = this.configStore.getConfig(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 harmonyVersionInRootPolicy(): string | undefined {\n const rootPolicy = this.getWorkspacePolicyFromConfig();\n return rootPolicy.entries.find(({ dependencyId }) => dependencyId === '@teambit/harmony')?.value?.version;\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 registerAddPackagesToLink(fn: AddPackagesToLink) {\n this.addPackagesToLinkSlot.register(fn);\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 // A prerelease version is always added as an exact version.\n // A package installed by its exact version is also added as an exact version.\n if (semver.parse(version)?.prerelease.length || wantedRange === version) {\n return version;\n }\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\n dependencyList.forEach((dep) => {\n let found = componentPolicy.find(dep.id);\n if (!found) {\n const packageName = dep?.getPackageName?.();\n found = packageName ? componentPolicy.find(packageName) : undefined;\n }\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 dep.optional = found?.optional;\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 getDependencies(component: IComponent, { includeHidden = false }: GetDependenciesOptions = {}): 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 = this.getDependenciesFromSerializedDependencies(serializedDependencies);\n if (includeHidden) return depList;\n return depList.filterHidden();\n }\n\n getDependenciesFromLegacyComponent(\n component: LegacyComponent,\n { includeHidden = false }: GetDependenciesOptions = {}\n ) {\n const entry = component.extensions.findCoreExtension(DependencyResolverAspect.id);\n if (!entry) {\n return DependencyList.fromArray([]);\n }\n const serializedDependencies: SerializedDependency[] = entry?.data?.dependencies || [];\n const depList = 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 getComponentDependencies(component: IComponent): ComponentDependency[] {\n const dependencyList = this.getDependencies(component);\n return dependencyList.getComponentDependencies();\n }\n\n getDependenciesFromSerializedDependencies(dependencies: SerializedDependency[]): DependencyList {\n if (!dependencies.length) {\n return DependencyList.fromArray([]);\n }\n const listFactory = this.getDependencyListFactory();\n const deps = 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 */\n getWorkspacePolicy(): WorkspacePolicy {\n if (!this._workspacePolicy) {\n const policyFromConfig = this.getWorkspacePolicyFromConfig();\n const externalPolicies = this.rootPolicyRegistry.toArray().map(([, policy]) => policy);\n this._workspacePolicy = this.mergeWorkspacePolices([policyFromConfig, ...externalPolicies]);\n }\n return this._workspacePolicy;\n }\n\n getWorkspacePolicyManifest() {\n const workspacePolicy = this.getWorkspacePolicy();\n return workspacePolicy.toManifest();\n }\n\n clearCache() {\n this._workspacePolicy = undefined;\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 createComponentIdByPkgNameMap(components: Component[]): Map<string, ComponentID> {\n const componentIdByPkgName = new Map<string, ComponentID>();\n for (const component of components) {\n componentIdByPkgName.set(this.getPackageName(component), component.id);\n }\n return componentIdByPkgName;\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(\n component: Component,\n options: {\n workspacePath: string;\n rootComponentsPath: string;\n isInWorkspace?: boolean;\n }\n ) {\n if (!this.hasRootComponents()) {\n const modulePath = this.getModulePath(component);\n return modulePath;\n }\n const pkgName = this.getPackageName(component);\n const rootComponentsRelativePath = relative(options.workspacePath, options.rootComponentsPath);\n const getRelativeRootComponentDir = getRootComponentDir.bind(null, rootComponentsRelativePath ?? '');\n const selfRootDir = getRelativeRootComponentDir(\n options.isInWorkspace ? component.id.toStringWithoutVersion() : component.id.toString()\n );\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 dirInEnvRoot = join(this.getComponentDirInBitRoots(component, options), 'node_modules', pkgName);\n if (fs.pathExistsSync(dirInEnvRoot)) return dirInEnvRoot;\n return this.getModulePath(component);\n }\n\n getComponentDirInBitRoots(\n component: Component,\n options: {\n workspacePath: string;\n rootComponentsPath: string;\n }\n ) {\n const envId = this.envs.getEnvId(component);\n const rootComponentsRelativePath = relative(options.workspacePath, options.rootComponentsPath);\n return getRootComponentDir(rootComponentsRelativePath ?? '', envId);\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 async addDependenciesGraph(\n component: Component,\n componentRelativeDir: string,\n options: {\n rootDir: string;\n rootComponentsPath?: string;\n componentIdByPkgName: Map<string, ComponentID>;\n }\n ): Promise<void> {\n try {\n component.state._consumer.dependenciesGraph = await this.getPackageManager()?.calcDependenciesGraph?.({\n rootDir: options.rootDir,\n componentRootDir: options.rootComponentsPath\n ? this.getComponentDirInBitRoots(component, {\n workspacePath: options.rootDir,\n rootComponentsPath: options.rootComponentsPath,\n })\n : undefined,\n pkgName: this.getPackageName(component),\n componentRelativeDir,\n componentIdByPkgName: options.componentIdByPkgName,\n });\n } catch (err) {\n // If the dependencies graph feature is disabled, we ignore the error\n if (isFeatureEnabled(DEPS_GRAPH)) {\n throw err;\n }\n }\n }\n\n /**\n * get a component dependency installer.\n */\n getInstaller(options: GetInstallerOptions = {}) {\n const packageManagerName = options.packageManager || this.packageManagerName;\n const packageManager = this.packageManagerSlot.get(packageManagerName);\n const cacheRootDir = options.cacheRootDirectory || this.configStore.getConfig(CFG_PACKAGE_MANAGER_CACHE);\n\n if (!packageManager) {\n throw new PackageManagerNotFound(this.packageManagerName);\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 private getAdditionalPackagesToLink(): string[] {\n if (!this._additionalPackagesToLink) {\n const additionalPackagesToLinkFn = this.addPackagesToLinkSlot.values().flat();\n this._additionalPackagesToLink = additionalPackagesToLinkFn.map((fn) => fn()).flat();\n }\n\n return this._additionalPackagesToLink;\n }\n\n /**\n * get a component dependency linker.\n */\n getLinker(options: GetLinkerOptions = {}) {\n const additionalPackagesToLink = this.getAdditionalPackagesToLink();\n const linkingOptions = Object.assign(\n { additionalPackagesToLink },\n defaultLinkingOptions,\n options?.linkingOptions || {}\n );\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.packageManagerName);\n return packageManager;\n }\n\n async getVersionResolver(options: GetVersionResolverOptions = {}) {\n const packageManager = this.getPackageManager();\n const cacheRootDir = options.cacheRootDirectory || this.configStore.getConfig(CFG_PACKAGE_MANAGER_CACHE);\n\n if (!packageManager) {\n throw new PackageManagerNotFound(this.packageManagerName);\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 [...this.aspectLoader.getCoreAspectIds(), 'teambit.harmony/harmony'];\n }\n\n /**\n * return the system configured package manager. by default pnpm.\n */\n getSystemPackageManager(): PackageManager {\n const packageManager = this.packageManagerSlot.get(DEFAULT_HARMONY_PACKAGE_MANAGER);\n if (!packageManager) throw new Error(`default package manager: ${DEFAULT_HARMONY_PACKAGE_MANAGER} 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 getDefaultBitRegistry = (): Registry => {\n const bitGlobalConfigRegistry = this.configStore.getConfig(CFG_REGISTRY_URL_KEY);\n const bitRegistry = bitGlobalConfigRegistry || BIT_CLOUD_REGISTRY;\n\n const { bitOriginalAuthType, bitAuthHeaderValue, bitOriginalAuthValue } = this.getBitAuthConfig();\n\n const alwaysAuth = !!bitAuthHeaderValue;\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\n registries = this.addAuthToScopedBitRegistries(registries);\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): Registries {\n const { bitOriginalAuthType, bitAuthHeaderValue, bitOriginalAuthValue } = this.getBitAuthConfig();\n const alwaysAuth = bitAuthHeaderValue !== undefined;\n let updatedRegistries = registries;\n Object.entries(registries.scopes).map(([name, registry]) => {\n if (!registry.authHeaderValue && BIT_CLOUD_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(): Partial<{\n bitOriginalAuthType: string;\n bitAuthHeaderValue: string;\n bitOriginalAuthValue: string;\n }> {\n const bitGlobalConfigToken = this.configStore.getConfig(CFG_USER_TOKEN_KEY);\n const res = {\n bitOriginalAuthType: '',\n bitAuthHeaderValue: '',\n bitOriginalAuthValue: '',\n };\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 (bitGlobalConfigToken) {\n res.bitOriginalAuthType = 'authToken';\n res.bitAuthHeaderValue = `Bearer ${bitGlobalConfigToken}`;\n res.bitOriginalAuthValue = bitGlobalConfigToken;\n }\n\n return res;\n }\n\n get packageManagerName(): string {\n return this.config.packageManager ?? DEFAULT_HARMONY_PACKAGE_MANAGER;\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[]): boolean {\n const workspacePolicy = this.getWorkspacePolicyFromConfig();\n const workspacePolicyUpdated = workspacePolicy.remove(dependencyIds);\n const isRemoved = workspacePolicyUpdated.entries.length !== workspacePolicy.entries.length;\n if (isRemoved) this.updateConfigPolicy(workspacePolicyUpdated);\n return isRemoved;\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(reasonForChange?: string) {\n await this.configAspect.workspaceConfig?.write({ reasonForChange });\n this.clearCache();\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, { envId });\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, { envId });\n }\n\n async getEnvPolicyFromEnvId(\n id: ComponentID,\n legacyFiles?: SourceFile[],\n envExtendsDeps?: LegacyDependency[]\n ): Promise<EnvPolicy | undefined> {\n const fromFile = await this.getEnvPolicyFromFile(id.toString(), legacyFiles, envExtendsDeps);\n if (fromFile) return fromFile;\n const envDef = this.envs.getEnvDefinitionById(id);\n if (!envDef) return undefined;\n const env = envDef.env;\n return this.getComponentEnvPolicyFromEnv(env, {\n envId: id.toStringWithoutVersion(),\n });\n }\n\n /**\n * @deprecated use getEnvPolicyFromEnvId instead (it's the same)\n */\n async getEnvPolicyFromEnvLegacyId(id: ComponentID, legacyFiles?: SourceFile[]): Promise<EnvPolicy | undefined> {\n return this.getEnvPolicyFromEnvId(id, legacyFiles);\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 const envIdWithoutVersion = envId.toStringWithoutVersion();\n if (this.envs.isCoreEnv(envIdWithoutVersion)) {\n const env = this.envs.getEnv(component).env;\n return this.getComponentEnvPolicyFromEnv(env, { envId: envIdWithoutVersion });\n }\n const fromFile = await this.getEnvPolicyFromFile(envId.toString());\n if (fromFile) return fromFile;\n\n this.envsWithoutManifest.add(envId.toString());\n const env = this.envs.getEnv(component).env;\n return this.getComponentEnvPolicyFromEnv(env, { envId: envIdWithoutVersion });\n }\n\n async getEnvManifest(\n envComponent?: Component,\n legacyFiles?: SourceFile[],\n envExtendsDeps?: LegacyDependency[]\n ): Promise<EnvPolicy | undefined> {\n let envManifest;\n if (envComponent) {\n envManifest = (await this.envs.getOrCalculateEnvManifest(envComponent, legacyFiles, envExtendsDeps)) as any;\n }\n if (!envManifest && legacyFiles) {\n envManifest = await this.envs.calculateEnvManifest(undefined, legacyFiles, envExtendsDeps);\n }\n const policy = envManifest?.policy;\n if (!policy) return undefined;\n const allPoliciesFromEnv = EnvPolicy.fromConfigObject(policy, {\n includeLegacyPeersInSelfPolicy: envComponent && this.envs.isCoreEnv(envComponent.id.toStringWithoutVersion()),\n });\n return allPoliciesFromEnv;\n }\n\n /**\n * Merge policy from parent and child env.jsonc files\n * The rule is that for each type of dependency (dev, runtime, peer) we check each item.\n * if a dep with a name exists on the child we will take the entire object from the child (including the version,\n * supported range, force etc')\n * if a dep exists with a version value \"-\" we will remove it from the policy\n */\n mergeEnvManifestPolicy(parent: EnvJsonc, child: EnvJsonc): object {\n const policy = {};\n ['peers', 'dev', 'runtime'].forEach((key) => {\n policy[key] = cloneDeep(parent.policy?.[key] || []);\n const childEntries = cloneDeep(child.policy?.[key] || []);\n\n policy[key] = policy[key].filter((entry) => {\n const foundChildEntry = childEntries.find((childEntry) => {\n return childEntry.name === entry.name;\n });\n return !foundChildEntry;\n });\n policy[key] = policy[key].concat(childEntries);\n policy[key] = policy[key].filter((entry) => {\n return entry.version !== '-';\n });\n });\n return { policy };\n }\n\n private async getEnvPolicyFromFile(\n envId: string,\n legacyFiles?: SourceFile[],\n envExtendsDeps?: LegacyDependency[]\n ): Promise<EnvPolicy | undefined> {\n const isCoreEnv = this.envs.isCoreEnv(envId);\n if (isCoreEnv) return undefined;\n if (legacyFiles) {\n const envJsonc = legacyFiles.find((file) => file.basename === 'env.jsonc');\n if (envJsonc) {\n return this.getEnvManifest(undefined, legacyFiles, envExtendsDeps);\n }\n return undefined;\n }\n const envComponent = await this.envs.getEnvComponentByEnvId(envId, envId);\n return this.getEnvManifest(envComponent);\n }\n\n async getComponentEnvPolicyFromEnv(env: DependenciesEnv, options: { envId: string }): Promise<EnvPolicy> {\n if (env.getDependencies && typeof env.getDependencies === 'function') {\n const policiesFromEnvConfig = await env.getDependencies();\n if (policiesFromEnvConfig) {\n const idWithoutVersion = options.envId.split('@')[0];\n const allPoliciesFromEnv = EnvPolicy.fromConfigObject(policiesFromEnvConfig, {\n includeLegacyPeersInSelfPolicy: this.envs.isCoreEnv(idWithoutVersion),\n });\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, { envId: envDef.id });\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: ComponentID,\n legacyFiles?: SourceFile[],\n envExtendsDeps?: LegacyDependency[]\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], { source: '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\n if (currentConfig && currentConfig.policy) {\n policiesFromConfig = VariantPolicy.fromConfigObject(currentConfig.policy, { source: 'config' });\n }\n const policiesFromEnvForItself =\n (await this.getPoliciesFromEnvForItself(id, legacyFiles, envExtendsDeps)) ?? VariantPolicy.getEmpty();\n\n const result = VariantPolicy.mergePolices([\n policiesFromEnv,\n policiesFromEnvForItself,\n policiesFromSlots,\n policiesFromConfig,\n ]);\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(\n id: ComponentID,\n legacyFiles?: SourceFile[],\n envExtendsDeps?: LegacyDependency[]\n ): Promise<VariantPolicy | undefined> {\n const envPolicy = await this.getEnvPolicyFromEnvId(id, legacyFiles, envExtendsDeps);\n return envPolicy?.selfPolicy;\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 validateAspectData(data: DependencyResolverComponentData) {\n const errorPrefix = `failed validating ${DependencyResolverAspect.id} aspect-data.`;\n const allowedPrefixes = ['https://', 'git:', 'git+ssh://', 'git+https://'];\n let errorMsg: undefined | string;\n data.dependencies?.forEach((dep) => {\n const isVersionValid = Boolean(semver.valid(dep.version) || semver.validRange(dep.version));\n if (isVersionValid) return;\n if (dep.__type === COMPONENT_DEP_TYPE && isSnap(dep.version)) return;\n if (allowedPrefixes.some((prefix) => dep.version.startsWith(prefix))) return; // some packages are installed from https/git\n errorMsg = `${errorPrefix} the dependency version \"${dep.version}\" of ${dep.id} is not a valid semver version or range`;\n });\n data.policy?.forEach((policy) => {\n const policyVersion = policy.value.version;\n const allowedSpecialChars = ['+', '-'];\n if (policyVersion === '*') {\n // this is only valid for packages, not for components.\n const isComp = data.dependencies.find(\n (d) => d.__type === COMPONENT_DEP_TYPE && d.packageName === policy.dependencyId\n );\n if (!isComp) return;\n errorMsg = `${errorPrefix} the policy version \"${policyVersion}\" of ${policy.dependencyId} is not valid for components, only for packages.\nas an alternative, you can use \"+\" to keep the same version installed in the workspace`;\n }\n const isVersionValid = Boolean(\n semver.valid(policyVersion) || semver.validRange(policyVersion) || allowedSpecialChars.includes(policyVersion)\n );\n if (isVersionValid) return;\n errorMsg = `${errorPrefix} the policy version \"${policyVersion}\" of ${policy.dependencyId} is not a valid semver version or range`;\n });\n\n if (errorMsg) {\n return { errorMsg, minBitVersion: '1.9.107' };\n }\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' | 'compatible';\n }): Promise<MergedOutdatedPkg[] | null> {\n let allPkgs = this.getAllDependencies({\n variantPoliciesByPatterns,\n componentPolicies,\n components,\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 if (!allPkgs.length) {\n return null;\n }\n }\n const outdatedPkgs = await this.getOutdatedPkgs({ rootDir, forceVersionBump }, allPkgs);\n return mergeOutdatedPkgs(outdatedPkgs);\n }\n\n getAllDependencies({\n variantPoliciesByPatterns,\n componentPolicies,\n components,\n }: {\n variantPoliciesByPatterns: Record<string, VariantPolicyConfigObject>;\n componentPolicies: Array<{ componentId: ComponentID; policy: any }>;\n components: Component[];\n }): CurrentPkg[] {\n const localComponentPkgNames = new Set(components.map((component) => this.getPackageName(component)));\n const componentModelVersions: ComponentModelVersion[] = components\n .map((component) => {\n const depList = 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 .flat();\n return getAllPolicyPkgs({\n rootPolicy: this.getWorkspacePolicyFromConfig(),\n variantPoliciesByPatterns,\n componentPolicies,\n componentModelVersions,\n });\n }\n\n getAllDedupedDirectDependencies(opts: {\n variantPoliciesByPatterns: Record<string, VariantPolicyConfigObject>;\n componentPolicies: Array<{ componentId: ComponentID; policy: any }>;\n components: Component[];\n }): CurrentPkg[] {\n const allDeps = this.getAllDependencies(opts);\n const mergedDeps: Record<string, CurrentPkg> = {};\n for (const dep of allDeps) {\n const existing = mergedDeps[dep.name];\n if (existing) {\n if (existing.currentRange === dep.currentRange) continue;\n if (shouldOverwrite(existing, dep)) {\n this.warnAboutOverwrite(existing, dep);\n mergedDeps[dep.name] = dep;\n } else {\n this.warnAboutOverwrite(dep, existing);\n }\n } else {\n mergedDeps[dep.name] = dep;\n }\n }\n return Object.values(mergedDeps);\n\n function shouldOverwrite(existing: CurrentPkg, incoming: CurrentPkg): boolean {\n if (isRootPolicy(existing)) {\n if (!isRootPolicy(incoming)) return false;\n return isRange1GreaterThanRange2Naively(incoming.currentRange, existing.currentRange);\n }\n return isRootPolicy(incoming) || isRange1GreaterThanRange2Naively(incoming.currentRange, existing.currentRange);\n }\n }\n\n private warnAboutOverwrite(originalPkg: CurrentPkg, newPkg: CurrentPkg) {\n const message = `${originalPkg.name}@${originalPkg.currentRange} from ${originalPkg.source} overwritten by ${newPkg.currentRange} from ${newPkg.source}`;\n if (isRootPolicy(newPkg)) {\n this.logger.info(message);\n } else {\n this.logger.warn(message);\n }\n }\n\n /**\n * Fetching the package manifest from the full package document.\n * By default, we always request the abbreviated package document,\n * which is much smaller in size but doesn't include all the fields published in the package's package.json file.\n */\n async fetchFullPackageManifest(packageName: string): Promise<DependencyManifest | undefined> {\n const pm = this.getSystemPackageManager();\n const { manifest } = await pm.resolveRemoteVersion(packageName, {\n cacheRootDir: this.configStore.getConfig(CFG_PACKAGE_MANAGER_CACHE),\n fullMetadata: true,\n // We can set anything here. The rootDir option is ignored, when resolving npm-hosted packages.\n rootDir: process.cwd(),\n });\n return manifest;\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' | 'compatible';\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(\n `${pkg.name}@${newVersionRange(pkg.currentRange, { pkgSource: pkg.source, forceVersionBump })}`\n );\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 getWorkspaceComponentRangePrefix(): ComponentRangePrefix | undefined {\n return this.config.componentRangePrefix;\n }\n calcComponentRangePrefixByConsumerComponent(component: LegacyComponent): ComponentRangePrefix | undefined {\n const fromWs = this.getWorkspaceComponentRangePrefix();\n if (fromWs) {\n return fromWs;\n }\n const modelData = component.componentFromModel?.extensions.findCoreExtension(DependencyResolverAspect.id);\n if (modelData?.data?.componentRangePrefix) {\n return modelData.data.componentRangePrefix;\n }\n const currentData = component.extensions?.findCoreExtension(DependencyResolverAspect.id)?.data;\n if (currentData?.componentRangePrefix) {\n return currentData.componentRangePrefix;\n }\n return undefined;\n }\n\n static runtime = MainRuntime;\n static dependencies = [\n EnvsAspect,\n LoggerAspect,\n ConfigAspect,\n AspectLoaderAspect,\n ComponentAspect,\n GraphqlAspect,\n ConfigStoreAspect,\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 Slot.withType<AddPackagesToLinkSlot>(),\n ];\n\n static defaultConfig: DependencyResolverWorkspaceConfig &\n Required<Pick<DependencyResolverWorkspaceConfig, 'linkCoreAspects'>> = {\n policy: {},\n linkCoreAspects: true,\n };\n\n static async provider(\n [envs, loggerExt, configMain, aspectLoader, componentAspect, graphql, configStore]: [\n EnvsMain,\n LoggerMain,\n ConfigMain,\n AspectLoaderMain,\n ComponentMain,\n GraphqlMain,\n ConfigStoreMain,\n ],\n config: DependencyResolverWorkspaceConfig,\n [\n rootPolicyRegistry,\n policiesRegistry,\n packageManagerSlot,\n dependencyFactorySlot,\n preInstallSlot,\n postInstallSlot,\n addPackagesToLinkSlot,\n ]: [\n RootPolicyRegistry,\n PoliciesRegistry,\n PackageManagerSlot,\n DependencyFactorySlot,\n PreInstallSlot,\n PostInstallSlot,\n AddPackagesToLinkSlot,\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 configStore,\n componentAspect,\n packageManagerSlot,\n dependencyFactorySlot,\n preInstallSlot,\n postInstallSlot,\n addPackagesToLinkSlot\n );\n\n const envJsoncDetector = envs.getEnvJsoncDetector();\n dependencyResolver.registerDetector(envJsoncDetector);\n\n componentAspect.registerShowFragments([\n new DependenciesFragment(dependencyResolver),\n new DevDependenciesFragment(dependencyResolver),\n new PeerDependenciesFragment(dependencyResolver),\n ]);\n componentAspect.dependencyResolver = dependencyResolver;\n // TODO: solve this generics issue and remove the ts-ignore\n // @ts-ignore\n dependencyResolver.registerDependencyFactories([new ComponentDependencyFactory(componentAspect)]);\n\n LegacyComponent.registerOnComponentOverridesLoading(\n DependencyResolverAspect.id,\n async (\n configuredExtensions: ExtensionDataList,\n id: ComponentID,\n legacyFiles: SourceFile[],\n envExtendsDeps?: LegacyDependency[]\n ) => {\n const policy = await dependencyResolver.mergeVariantPolicies(\n configuredExtensions,\n id,\n legacyFiles,\n envExtendsDeps\n );\n return policy.toLegacyDepsOverrides();\n }\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 envs.registerEnvJsoncMergeCustomizer(dependencyResolver.mergeEnvManifestPolicy.bind(dependencyResolver));\n\n // this is needed because during tag process, the data.dependencies can be loaded and the componentId can become\n // an instance of ComponentID class. it needs to be serialized before saved into objects.\n const serializeDepResolverDataBeforePersist = (extDataList: ExtensionDataList) => {\n const entry = extDataList.findCoreExtension(DependencyResolverAspect.id);\n if (!entry) return;\n const dependencies = get(entry, ['data', 'dependencies'], []);\n dependencies.forEach((dep) => {\n if (dep.__type === COMPONENT_DEP_TYPE) {\n dep.componentId = dep.componentId instanceof ComponentID ? dep.componentId.serialize() : dep.componentId;\n }\n });\n };\n ExtensionDataList.toModelObjectsHook.push(serializeDepResolverDataBeforePersist);\n PackageJsonTransformer.registerPackageJsonTransformer(async (component, packageJsonObject) => {\n const deps = dependencyResolver.getDependencies(component);\n const { optionalDependencies, peerDependenciesMeta } = deps.toDependenciesManifest();\n packageJsonObject.optionalDependencies = optionalDependencies;\n packageJsonObject.peerDependenciesMeta = peerDependenciesMeta;\n const entry = component.get(DependencyResolverAspect.id);\n if (entry?.config.peer) {\n if (!packageJsonObject.bit) {\n packageJsonObject.bit = {};\n }\n packageJsonObject.bit.peer = true;\n if (entry.config.defaultPeerRange) {\n packageJsonObject.bit.defaultPeerRange = entry.config.defaultPeerRange;\n }\n }\n return packageJsonObject;\n });\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.packageManagerName);\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(\n currentRange: string,\n opts: { pkgSource: CurrentPkgSource; forceVersionBump?: 'major' | 'minor' | 'patch' | 'compatible' }\n) {\n if (opts.forceVersionBump == null || opts.forceVersionBump === 'major') return 'latest';\n const currentVersion = semver.valid(currentRange.replace(/[\\^~]/, ''));\n if (opts.forceVersionBump === 'compatible') {\n if ((opts.pkgSource === 'component' || opts.pkgSource === 'component-model') && currentVersion === currentRange) {\n return `^${currentVersion}`;\n }\n return currentRange;\n }\n if (!currentVersion) return null;\n const [major, minor] = currentVersion.split('.');\n switch (opts.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\nfunction isRootPolicy(dep: CurrentPkg): boolean {\n return dep.source === 'rootPolicy';\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,48 @@
1
+ export type FileContext = {
2
+ /**
3
+ * extension of the file. (e.g. `.js`, '.jsx', '.ts', etc.)
4
+ */
5
+ ext: string;
6
+ filename: string;
7
+ };
8
+ export type DependencyContext = {
9
+ /**
10
+ * name of the dependency.
11
+ * e.g. `lodash` in `import _ from 'lodash'`
12
+ */
13
+ dependency: string;
14
+ /**
15
+ * name of the file.
16
+ */
17
+ filename: string;
18
+ /**
19
+ * directory of the file.
20
+ */
21
+ directory: string;
22
+ };
23
+ export interface DependencyDetector {
24
+ /**
25
+ * determine whether to apply on given file.
26
+ */
27
+ isSupported(context: FileContext): boolean;
28
+ /**
29
+ * determine what type of content the detector is for.
30
+ * by default, the type is the extension name of the file (without the dot)
31
+ * if no type provided.
32
+ */
33
+ type?: string;
34
+ /**
35
+ * detect file dependencies. list of file dependencies of the module.
36
+ */
37
+ detect(fileContent: string): string[];
38
+ /**
39
+ * resolve the imported file location
40
+ * @param file
41
+ */
42
+ dependencyLookup?(file: DependencyContext): string;
43
+ }
44
+ export declare class DetectorHook {
45
+ static hooks: DependencyDetector[];
46
+ isSupported(ext: string, filename: string): boolean;
47
+ getDetector(ext: string, filename: string): DependencyDetector | undefined;
48
+ }
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.DetectorHook = void 0;
7
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
8
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
9
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
10
+ class DetectorHook {
11
+ isSupported(ext, filename) {
12
+ return !!DetectorHook.hooks.find(hook => {
13
+ return hook.isSupported({
14
+ ext,
15
+ filename
16
+ });
17
+ });
18
+ }
19
+ getDetector(ext, filename) {
20
+ return DetectorHook.hooks.find(hook => {
21
+ return hook.isSupported({
22
+ ext,
23
+ filename
24
+ });
25
+ });
26
+ }
27
+ }
28
+ exports.DetectorHook = DetectorHook;
29
+ _defineProperty(DetectorHook, "hooks", []);
30
+
31
+ //# sourceMappingURL=detector-hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DetectorHook","isSupported","ext","filename","hooks","find","hook","getDetector","exports","_defineProperty"],"sources":["detector-hook.ts"],"sourcesContent":["export type FileContext = {\n /**\n * extension of the file. (e.g. `.js`, '.jsx', '.ts', etc.)\n */\n ext: string;\n\n filename: string;\n};\n\nexport type DependencyContext = {\n /**\n * name of the dependency.\n * e.g. `lodash` in `import _ from 'lodash'`\n */\n dependency: string;\n\n /**\n * name of the file.\n */\n filename: string;\n\n /**\n * directory of the file.\n */\n directory: string;\n};\n\nexport interface DependencyDetector {\n /**\n * determine whether to apply on given file.\n */\n isSupported(context: FileContext): boolean;\n\n /**\n * determine what type of content the detector is for.\n * by default, the type is the extension name of the file (without the dot)\n * if no type provided.\n */\n type?: string;\n\n /**\n * detect file dependencies. list of file dependencies of the module.\n */\n detect(fileContent: string): string[];\n\n /**\n * resolve the imported file location\n * @param file\n */\n dependencyLookup?(file: DependencyContext): string;\n}\n\nexport class DetectorHook {\n static hooks: DependencyDetector[] = [];\n\n isSupported(ext: string, filename: string): boolean {\n return !!DetectorHook.hooks.find((hook) => {\n return hook.isSupported({\n ext,\n filename,\n });\n });\n }\n\n getDetector(ext: string, filename: string): DependencyDetector | undefined {\n return DetectorHook.hooks.find((hook) => {\n return hook.isSupported({\n ext,\n filename,\n });\n });\n }\n}\n"],"mappings":";;;;;;;;;AAoDO,MAAMA,YAAY,CAAC;EAGxBC,WAAWA,CAACC,GAAW,EAAEC,QAAgB,EAAW;IAClD,OAAO,CAAC,CAACH,YAAY,CAACI,KAAK,CAACC,IAAI,CAAEC,IAAI,IAAK;MACzC,OAAOA,IAAI,CAACL,WAAW,CAAC;QACtBC,GAAG;QACHC;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ;EAEAI,WAAWA,CAACL,GAAW,EAAEC,QAAgB,EAAkC;IACzE,OAAOH,YAAY,CAACI,KAAK,CAACC,IAAI,CAAEC,IAAI,IAAK;MACvC,OAAOA,IAAI,CAACL,WAAW,CAAC;QACtBC,GAAG;QACHC;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ;AACF;AAACK,OAAA,CAAAR,YAAA,GAAAA,YAAA;AAAAS,eAAA,CApBYT,YAAY,WACc,EAAE","ignoreList":[]}
package/dist/esm.mjs CHANGED
@@ -19,6 +19,7 @@ export const DependencyLinker = cjsModule.DependencyLinker;
19
19
  export const DependencyInstaller = cjsModule.DependencyInstaller;
20
20
  export const extendWithComponentsFromDir = cjsModule.extendWithComponentsFromDir;
21
21
  export const isRange = cjsModule.isRange;
22
+ export const DetectorHook = cjsModule.DetectorHook;
22
23
 
23
24
  export default cjsModule;
24
25
 
package/dist/index.d.ts CHANGED
@@ -16,10 +16,10 @@ export { DependencyLinker } from './dependency-linker';
16
16
  export type { CoreAspectLinkResult, LinkDetail, LinkResults, LinkingOptions, DepsLinkedToEnvResult, NestedNMDepsLinksResult, LinkToDirResult, } from './dependency-linker';
17
17
  export { DependencyInstaller } from './dependency-installer';
18
18
  export type { GetComponentManifestsOptions, InstallOptions, InstallArgs } from './dependency-installer';
19
- export type { DependencyDetector, FileContext } from './dependency-detector';
20
19
  export type { DependencySource, VariantPolicyEntry } from './policy/variant-policy/variant-policy';
21
20
  export type { OutdatedPkg, CurrentPkg } from './get-all-policy-pkgs';
22
21
  export { extendWithComponentsFromDir } from './extend-with-components-from-dir';
23
22
  export { isRange } from './manifest/deduping/hoist-dependencies';
24
23
  export type { DependencyEnv } from './dependency-env';
24
+ export { DetectorHook, DependencyDetector, FileContext } from './detector-hook';
25
25
  export { DependencyResolverAspect as default, DependencyResolverAspect };
package/dist/index.js CHANGED
@@ -33,6 +33,12 @@ Object.defineProperty(exports, "ComponentManifest", {
33
33
  return _manifest().ComponentManifest;
34
34
  }
35
35
  });
36
+ Object.defineProperty(exports, "DependencyDetector", {
37
+ enumerable: true,
38
+ get: function () {
39
+ return _detectorHook().DependencyDetector;
40
+ }
41
+ });
36
42
  Object.defineProperty(exports, "DependencyInstaller", {
37
43
  enumerable: true,
38
44
  get: function () {
@@ -57,12 +63,24 @@ Object.defineProperty(exports, "DependencyResolverAspect", {
57
63
  return _dependencyResolver().DependencyResolverAspect;
58
64
  }
59
65
  });
66
+ Object.defineProperty(exports, "DetectorHook", {
67
+ enumerable: true,
68
+ get: function () {
69
+ return _detectorHook().DetectorHook;
70
+ }
71
+ });
60
72
  Object.defineProperty(exports, "EnvPolicy", {
61
73
  enumerable: true,
62
74
  get: function () {
63
75
  return _policy().EnvPolicy;
64
76
  }
65
77
  });
78
+ Object.defineProperty(exports, "FileContext", {
79
+ enumerable: true,
80
+ get: function () {
81
+ return _detectorHook().FileContext;
82
+ }
83
+ });
66
84
  Object.defineProperty(exports, "KEY_NAME_BY_LIFECYCLE_TYPE", {
67
85
  enumerable: true,
68
86
  get: function () {
@@ -174,5 +192,12 @@ function _hoistDependencies() {
174
192
  };
175
193
  return data;
176
194
  }
195
+ function _detectorHook() {
196
+ const data = require("./detector-hook");
197
+ _detectorHook = function () {
198
+ return data;
199
+ };
200
+ return data;
201
+ }
177
202
 
178
203
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_dependencyResolver","data","require","_manifest","_dependencyResolverMain","_dependencies","_policy","_dependencyLinker","_dependencyInstaller","_extendWithComponentsFromDir","_hoistDependencies"],"sources":["index.ts"],"sourcesContent":["import { DependencyResolverAspect } from './dependency-resolver.aspect';\n\nexport type { UpdatedComponent } from './apply-updates';\nexport type { RawComponentState, ComponentsManifestsMap, RegistriesMap } from './types';\nexport { WorkspaceManifest, ComponentManifest } from './manifest';\nexport type { CreateFromComponentsOptions, ManifestDependenciesObject } from './manifest';\nexport type {\n InstallationContext,\n PackageImportMethod,\n PackageManager,\n PackageManagerInstallOptions,\n PackageManagerResolveRemoteVersionOptions,\n ResolvedPackageVersion,\n CalcDepsGraphOptions,\n ComponentIdByPkgName,\n} from './package-manager';\nexport type {\n DependencyResolverWorkspaceConfig,\n NodeLinker,\n ComponentRangePrefix,\n} from './dependency-resolver-workspace-config';\nexport type {\n DependencyResolverMain,\n DependencyResolverVariantConfig,\n MergedOutdatedPkg,\n} from './dependency-resolver.main.runtime';\nexport { NPM_REGISTRY, BIT_CLOUD_REGISTRY } from './dependency-resolver.main.runtime';\nexport type {\n ProxyConfig as PackageManagerProxyConfig,\n NetworkConfig as PackageManagerNetworkConfig,\n} from './dependency-resolver.main.runtime';\nexport {\n DependencyList,\n BaseDependency,\n ComponentDependency,\n KEY_NAME_BY_LIFECYCLE_TYPE,\n COMPONENT_DEP_TYPE,\n} from './dependencies';\nexport type {\n DependencyLifecycleType,\n WorkspaceDependencyLifecycleType,\n DependencyFactory,\n SerializedDependency,\n Dependency,\n SemverVersion,\n DependenciesManifest,\n} from './dependencies';\nexport { WorkspacePolicy, VariantPolicy, EnvPolicy } from './policy';\nexport type {\n WorkspacePolicyEntry,\n WorkspacePolicyConfigObject,\n VariantPolicyConfigObject,\n Policy,\n PolicySemver,\n PolicyConfigKeys,\n PolicyConfigKeysNames,\n PolicyEntry,\n SerializedVariantPolicy,\n WorkspacePolicyConfigKeysNames,\n EnvPolicyConfigObject,\n VariantPolicyConfigArr,\n} from './policy';\nexport { DependencyLinker } from './dependency-linker';\nexport type {\n CoreAspectLinkResult,\n LinkDetail,\n LinkResults,\n LinkingOptions,\n DepsLinkedToEnvResult,\n NestedNMDepsLinksResult,\n LinkToDirResult,\n} from './dependency-linker';\nexport { DependencyInstaller } from './dependency-installer';\nexport type { GetComponentManifestsOptions, InstallOptions, InstallArgs } from './dependency-installer';\nexport type { DependencyDetector, FileContext } from './dependency-detector';\nexport type { DependencySource, VariantPolicyEntry } from './policy/variant-policy/variant-policy';\nexport type { OutdatedPkg, CurrentPkg } from './get-all-policy-pkgs';\nexport { extendWithComponentsFromDir } from './extend-with-components-from-dir';\nexport { isRange } from './manifest/deduping/hoist-dependencies';\nexport type { DependencyEnv } from './dependency-env';\nexport { DependencyResolverAspect as default, DependencyResolverAspect };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAAA,oBAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,mBAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAIA,SAAAE,UAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,SAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAsBA,SAAAG,wBAAA;EAAA,MAAAH,IAAA,GAAAC,OAAA;EAAAE,uBAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAKA,SAAAI,cAAA;EAAA,MAAAJ,IAAA,GAAAC,OAAA;EAAAG,aAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAgBA,SAAAK,QAAA;EAAA,MAAAL,IAAA,GAAAC,OAAA;EAAAI,OAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAeA,SAAAM,kBAAA;EAAA,MAAAN,IAAA,GAAAC,OAAA;EAAAK,iBAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAUA,SAAAO,qBAAA;EAAA,MAAAP,IAAA,GAAAC,OAAA;EAAAM,oBAAA,YAAAA,CAAA;IAAA,OAAAP,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAKA,SAAAQ,6BAAA;EAAA,MAAAR,IAAA,GAAAC,OAAA;EAAAO,4BAAA,YAAAA,CAAA;IAAA,OAAAR,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAS,mBAAA;EAAA,MAAAT,IAAA,GAAAC,OAAA;EAAAQ,kBAAA,YAAAA,CAAA;IAAA,OAAAT,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["_dependencyResolver","data","require","_manifest","_dependencyResolverMain","_dependencies","_policy","_dependencyLinker","_dependencyInstaller","_extendWithComponentsFromDir","_hoistDependencies","_detectorHook"],"sources":["index.ts"],"sourcesContent":["import { DependencyResolverAspect } from './dependency-resolver.aspect';\n\nexport type { UpdatedComponent } from './apply-updates';\nexport type { RawComponentState, ComponentsManifestsMap, RegistriesMap } from './types';\nexport { WorkspaceManifest, ComponentManifest } from './manifest';\nexport type { CreateFromComponentsOptions, ManifestDependenciesObject } from './manifest';\nexport type {\n InstallationContext,\n PackageImportMethod,\n PackageManager,\n PackageManagerInstallOptions,\n PackageManagerResolveRemoteVersionOptions,\n ResolvedPackageVersion,\n CalcDepsGraphOptions,\n ComponentIdByPkgName,\n} from './package-manager';\nexport type {\n DependencyResolverWorkspaceConfig,\n NodeLinker,\n ComponentRangePrefix,\n} from './dependency-resolver-workspace-config';\nexport type {\n DependencyResolverMain,\n DependencyResolverVariantConfig,\n MergedOutdatedPkg,\n} from './dependency-resolver.main.runtime';\nexport { NPM_REGISTRY, BIT_CLOUD_REGISTRY } from './dependency-resolver.main.runtime';\nexport type {\n ProxyConfig as PackageManagerProxyConfig,\n NetworkConfig as PackageManagerNetworkConfig,\n} from './dependency-resolver.main.runtime';\nexport {\n DependencyList,\n BaseDependency,\n ComponentDependency,\n KEY_NAME_BY_LIFECYCLE_TYPE,\n COMPONENT_DEP_TYPE,\n} from './dependencies';\nexport type {\n DependencyLifecycleType,\n WorkspaceDependencyLifecycleType,\n DependencyFactory,\n SerializedDependency,\n Dependency,\n SemverVersion,\n DependenciesManifest,\n} from './dependencies';\nexport { WorkspacePolicy, VariantPolicy, EnvPolicy } from './policy';\nexport type {\n WorkspacePolicyEntry,\n WorkspacePolicyConfigObject,\n VariantPolicyConfigObject,\n Policy,\n PolicySemver,\n PolicyConfigKeys,\n PolicyConfigKeysNames,\n PolicyEntry,\n SerializedVariantPolicy,\n WorkspacePolicyConfigKeysNames,\n EnvPolicyConfigObject,\n VariantPolicyConfigArr,\n} from './policy';\nexport { DependencyLinker } from './dependency-linker';\nexport type {\n CoreAspectLinkResult,\n LinkDetail,\n LinkResults,\n LinkingOptions,\n DepsLinkedToEnvResult,\n NestedNMDepsLinksResult,\n LinkToDirResult,\n} from './dependency-linker';\nexport { DependencyInstaller } from './dependency-installer';\nexport type { GetComponentManifestsOptions, InstallOptions, InstallArgs } from './dependency-installer';\nexport type { DependencySource, VariantPolicyEntry } from './policy/variant-policy/variant-policy';\nexport type { OutdatedPkg, CurrentPkg } from './get-all-policy-pkgs';\nexport { extendWithComponentsFromDir } from './extend-with-components-from-dir';\nexport { isRange } from './manifest/deduping/hoist-dependencies';\nexport type { DependencyEnv } from './dependency-env';\nexport { DetectorHook, DependencyDetector, FileContext } from './detector-hook';\nexport { DependencyResolverAspect as default, DependencyResolverAspect };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAAA,oBAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,mBAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAIA,SAAAE,UAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,SAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAsBA,SAAAG,wBAAA;EAAA,MAAAH,IAAA,GAAAC,OAAA;EAAAE,uBAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAKA,SAAAI,cAAA;EAAA,MAAAJ,IAAA,GAAAC,OAAA;EAAAG,aAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAgBA,SAAAK,QAAA;EAAA,MAAAL,IAAA,GAAAC,OAAA;EAAAI,OAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAeA,SAAAM,kBAAA;EAAA,MAAAN,IAAA,GAAAC,OAAA;EAAAK,iBAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAUA,SAAAO,qBAAA;EAAA,MAAAP,IAAA,GAAAC,OAAA;EAAAM,oBAAA,YAAAA,CAAA;IAAA,OAAAP,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAIA,SAAAQ,6BAAA;EAAA,MAAAR,IAAA,GAAAC,OAAA;EAAAO,4BAAA,YAAAA,CAAA;IAAA,OAAAR,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAS,mBAAA;EAAA,MAAAT,IAAA,GAAAC,OAAA;EAAAQ,kBAAA,YAAAA,CAAA;IAAA,OAAAT,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAU,cAAA;EAAA,MAAAV,IAAA,GAAAC,OAAA;EAAAS,aAAA,YAAAA,CAAA;IAAA,OAAAV,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.dependencies_dependency-resolver@1.0.676/dist/dependency-resolver.composition.js';
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.dependencies_dependency-resolver@1.0.676/dist/dependency-resolver.docs.mdx';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.dependencies_dependency-resolver@1.0.677/dist/dependency-resolver.composition.js';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.dependencies_dependency-resolver@1.0.677/dist/dependency-resolver.docs.mdx';
3
3
 
4
4
  export const compositions = [compositions_0];
5
5
  export const overview = [overview_0];
package/esm.mjs CHANGED
@@ -19,6 +19,7 @@ export const DependencyLinker = cjsModule.DependencyLinker;
19
19
  export const DependencyInstaller = cjsModule.DependencyInstaller;
20
20
  export const extendWithComponentsFromDir = cjsModule.extendWithComponentsFromDir;
21
21
  export const isRange = cjsModule.isRange;
22
+ export const DetectorHook = cjsModule.DetectorHook;
22
23
 
23
24
  export default cjsModule;
24
25
 
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/dependency-resolver",
3
- "version": "1.0.676",
3
+ "version": "1.0.677",
4
4
  "homepage": "https://bit.cloud/teambit/dependencies/dependency-resolver",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.dependencies",
8
8
  "name": "dependency-resolver",
9
- "version": "1.0.676"
9
+ "version": "1.0.677"
10
10
  },
11
11
  "dependencies": {
12
12
  "chalk": "4.1.2",
@@ -24,41 +24,40 @@
24
24
  "@pnpm/core": "1010.0.0",
25
25
  "semver-intersect": "1.4.0",
26
26
  "semver-range-intersect": "0.3.1",
27
- "@teambit/logger": "0.0.1343",
28
27
  "@teambit/toolbox.path.path": "0.0.8",
29
28
  "@teambit/bit-error": "0.0.404",
30
29
  "@teambit/bvm.path": "0.1.2",
31
- "@teambit/pkg.modules.component-package-name": "0.0.67",
32
30
  "@teambit/harmony": "0.4.7",
33
31
  "@pnpm/network.ca-file": "3.0.3",
34
- "@teambit/cli": "0.0.1250",
35
32
  "@teambit/component-id": "1.2.4",
36
33
  "@teambit/component-version": "1.0.4",
37
- "@teambit/component.sources": "0.0.112",
38
- "@teambit/config-store": "0.0.130",
39
- "@teambit/config": "0.0.1424",
40
34
  "@teambit/harmony.modules.feature-toggle": "0.0.24",
41
35
  "@teambit/harmony.modules.requireable-component": "0.0.504",
42
36
  "@teambit/legacy.constants": "0.0.14",
43
- "@teambit/legacy.consumer-component": "0.0.61",
44
- "@teambit/legacy.extension-data": "0.0.62",
45
37
  "@teambit/pkg.entities.registry": "0.0.3",
46
38
  "@teambit/pkg.modules.semver-helper": "0.0.13",
47
- "@teambit/scope.network": "0.0.60",
48
- "@teambit/workspace.modules.node-modules-linker": "0.0.288",
49
39
  "@teambit/workspace.root-components": "1.0.0",
50
40
  "@teambit/component-issues": "0.0.161",
51
41
  "@teambit/component-package-version": "0.0.440",
52
42
  "@teambit/legacy-bit-id": "1.1.3",
53
- "@teambit/legacy.consumer-config": "0.0.60",
54
- "@teambit/toolbox.crypto.sha1": "0.0.7",
55
43
  "@teambit/toolbox.object.sorter": "0.0.2",
56
- "@teambit/component": "1.0.676",
57
- "@teambit/envs": "1.0.676",
58
- "@teambit/dependencies": "1.0.676",
59
- "@teambit/aspect-loader": "1.0.676",
60
- "@teambit/objects": "0.0.183",
61
- "@teambit/graphql": "1.0.676"
44
+ "@teambit/toolbox.crypto.sha1": "0.0.7",
45
+ "@teambit/component": "1.0.677",
46
+ "@teambit/envs": "1.0.677",
47
+ "@teambit/aspect-loader": "1.0.677",
48
+ "@teambit/logger": "0.0.1344",
49
+ "@teambit/objects": "0.0.184",
50
+ "@teambit/pkg.modules.component-package-name": "0.0.68",
51
+ "@teambit/graphql": "1.0.677",
52
+ "@teambit/cli": "0.0.1251",
53
+ "@teambit/component.sources": "0.0.113",
54
+ "@teambit/config-store": "0.0.131",
55
+ "@teambit/config": "0.0.1425",
56
+ "@teambit/legacy.consumer-component": "0.0.62",
57
+ "@teambit/legacy.extension-data": "0.0.63",
58
+ "@teambit/scope.network": "0.0.61",
59
+ "@teambit/workspace.modules.node-modules-linker": "0.0.289",
60
+ "@teambit/legacy.consumer-config": "0.0.61"
62
61
  },
63
62
  "devDependencies": {
64
63
  "@types/chai": "4.2.15",
@@ -1 +0,0 @@
1
- export { DetectorHook, DependencyDetector, FileContext } from '@teambit/dependencies';
@@ -1,32 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "DependencyDetector", {
7
- enumerable: true,
8
- get: function () {
9
- return _dependencies().DependencyDetector;
10
- }
11
- });
12
- Object.defineProperty(exports, "DetectorHook", {
13
- enumerable: true,
14
- get: function () {
15
- return _dependencies().DetectorHook;
16
- }
17
- });
18
- Object.defineProperty(exports, "FileContext", {
19
- enumerable: true,
20
- get: function () {
21
- return _dependencies().FileContext;
22
- }
23
- });
24
- function _dependencies() {
25
- const data = require("@teambit/dependencies");
26
- _dependencies = function () {
27
- return data;
28
- };
29
- return data;
30
- }
31
-
32
- //# sourceMappingURL=dependency-detector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_dependencies","data","require"],"sources":["dependency-detector.ts"],"sourcesContent":["export { DetectorHook, DependencyDetector, FileContext } from '@teambit/dependencies';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAAA,cAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,aAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA","ignoreList":[]}