@teambit/dependency-resolver 1.0.494 → 1.0.495

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.
@@ -9,7 +9,7 @@ import { Logger } from '@teambit/logger';
9
9
  import { ExtensionDataList } from '@teambit/legacy.extension-data';
10
10
  import { ProxyConfig, NetworkConfig } from '@teambit/scope.network';
11
11
  import { onTagIdTransformer } from '@teambit/snapping';
12
- import { ConsumerComponent as LegacyComponent } from '@teambit/legacy.consumer-component';
12
+ import { ConsumerComponent as LegacyComponent, Dependency as LegacyDependency } from '@teambit/legacy.consumer-component';
13
13
  import { ComponentID } from '@teambit/component-id';
14
14
  import { SourceFile } from '@teambit/component.sources';
15
15
  import { ProjectManifest } from '@pnpm/types';
@@ -302,13 +302,13 @@ export declare class DependencyResolverMain {
302
302
  */
303
303
  registerRootPolicy(policy: WorkspacePolicy): void;
304
304
  getComponentEnvPolicyFromExtension(configuredExtensions: ExtensionDataList): Promise<EnvPolicy>;
305
- getEnvPolicyFromEnvId(id: ComponentID, legacyFiles?: SourceFile[]): Promise<EnvPolicy | undefined>;
305
+ getEnvPolicyFromEnvId(id: ComponentID, legacyFiles?: SourceFile[], envExtendsDeps?: LegacyDependency[]): Promise<EnvPolicy | undefined>;
306
306
  /**
307
307
  * @deprecated use getEnvPolicyFromEnvId instead (it's the same)
308
308
  */
309
309
  getEnvPolicyFromEnvLegacyId(id: ComponentID, legacyFiles?: SourceFile[]): Promise<EnvPolicy | undefined>;
310
310
  getComponentEnvPolicy(component: Component): Promise<EnvPolicy>;
311
- getEnvManifest(envComponent?: Component, legacyFiles?: SourceFile[]): EnvPolicy | undefined;
311
+ getEnvManifest(envComponent?: Component, legacyFiles?: SourceFile[], envExtendsDeps?: LegacyDependency[]): Promise<EnvPolicy | undefined>;
312
312
  /**
313
313
  * Merge policy from parent and child env.jsonc files
314
314
  * The rule is that for each type of dependency (dev, runtime, peer) we check each item.
@@ -339,12 +339,12 @@ export declare class DependencyResolverMain {
339
339
  * 3. props defined by the user (they are the strongest one)
340
340
  * @param configuredExtensions
341
341
  */
342
- mergeVariantPolicies(configuredExtensions: ExtensionDataList, id: ComponentID, legacyFiles?: SourceFile[]): Promise<VariantPolicy>;
342
+ mergeVariantPolicies(configuredExtensions: ExtensionDataList, id: ComponentID, legacyFiles?: SourceFile[], envExtendsDeps?: LegacyDependency[]): Promise<VariantPolicy>;
343
343
  /**
344
344
  * These are the policies that the env itself defines for itself.
345
345
  * So policies installed only locally for the env, not to any components that use the env.
346
346
  */
347
- getPoliciesFromEnvForItself(id: ComponentID, legacyFiles?: SourceFile[]): Promise<VariantPolicy | undefined>;
347
+ getPoliciesFromEnvForItself(id: ComponentID, legacyFiles?: SourceFile[], envExtendsDeps?: LegacyDependency[]): Promise<VariantPolicy | undefined>;
348
348
  updateDepsOnLegacyTag(component: LegacyComponent, idTransformer: onTagIdTransformer): LegacyComponent;
349
349
  /**
350
350
  * Register a new dependency detector. Detectors allow to extend Bit's dependency detection
@@ -1030,8 +1030,8 @@ class DependencyResolverMain {
1030
1030
  envId
1031
1031
  });
1032
1032
  }
1033
- async getEnvPolicyFromEnvId(id, legacyFiles) {
1034
- const fromFile = await this.getEnvPolicyFromFile(id.toString(), legacyFiles);
1033
+ async getEnvPolicyFromEnvId(id, legacyFiles, envExtendsDeps) {
1034
+ const fromFile = await this.getEnvPolicyFromFile(id.toString(), legacyFiles, envExtendsDeps);
1035
1035
  if (fromFile) return fromFile;
1036
1036
  const envDef = this.envs.getEnvDefinitionById(id);
1037
1037
  if (!envDef) return undefined;
@@ -1065,9 +1065,15 @@ class DependencyResolverMain {
1065
1065
  envId: envIdWithoutVersion
1066
1066
  });
1067
1067
  }
1068
- getEnvManifest(envComponent, legacyFiles) {
1069
- const object = this.envs.getEnvManifest(envComponent, legacyFiles);
1070
- const policy = object?.policy;
1068
+ async getEnvManifest(envComponent, legacyFiles, envExtendsDeps) {
1069
+ let envManifest;
1070
+ if (envComponent) {
1071
+ envManifest = await this.envs.getOrCalculateEnvManifest(envComponent, legacyFiles, envExtendsDeps);
1072
+ }
1073
+ if (!envManifest && legacyFiles) {
1074
+ envManifest = await this.envs.calculateEnvManifest(undefined, legacyFiles, envExtendsDeps);
1075
+ }
1076
+ const policy = envManifest?.policy;
1071
1077
  if (!policy) return undefined;
1072
1078
  const allPoliciesFromEnv = _envPolicy().EnvPolicy.fromConfigObject(policy, {
1073
1079
  includeLegacyPeersInSelfPolicy: envComponent && this.envs.isCoreEnv(envComponent.id.toStringWithoutVersion())
@@ -1102,11 +1108,15 @@ class DependencyResolverMain {
1102
1108
  policy
1103
1109
  };
1104
1110
  }
1105
- async getEnvPolicyFromFile(envId, legacyFiles) {
1111
+ async getEnvPolicyFromFile(envId, legacyFiles, envExtendsDeps) {
1106
1112
  const isCoreEnv = this.envs.isCoreEnv(envId);
1107
1113
  if (isCoreEnv) return undefined;
1108
1114
  if (legacyFiles) {
1109
- return this.getEnvManifest(undefined, legacyFiles);
1115
+ const envJsonc = legacyFiles.find(file => file.basename === 'env.jsonc');
1116
+ if (envJsonc) {
1117
+ return this.getEnvManifest(undefined, legacyFiles, envExtendsDeps);
1118
+ }
1119
+ return undefined;
1110
1120
  }
1111
1121
  const envComponent = await this.envs.getEnvComponentByEnvId(envId, envId);
1112
1122
  return this.getEnvManifest(envComponent);
@@ -1156,7 +1166,7 @@ class DependencyResolverMain {
1156
1166
  * 3. props defined by the user (they are the strongest one)
1157
1167
  * @param configuredExtensions
1158
1168
  */
1159
- async mergeVariantPolicies(configuredExtensions, id, legacyFiles) {
1169
+ async mergeVariantPolicies(configuredExtensions, id, legacyFiles, envExtendsDeps) {
1160
1170
  let policiesFromSlots = _policy().VariantPolicy.getEmpty();
1161
1171
  let policiesFromConfig = _policy().VariantPolicy.getEmpty();
1162
1172
  const policiesFromEnv = await this.getComponentEnvPolicyFromExtension(configuredExtensions);
@@ -1185,7 +1195,7 @@ class DependencyResolverMain {
1185
1195
  source: 'config'
1186
1196
  });
1187
1197
  }
1188
- const policiesFromEnvForItself = (await this.getPoliciesFromEnvForItself(id, legacyFiles)) ?? _policy().VariantPolicy.getEmpty();
1198
+ const policiesFromEnvForItself = (await this.getPoliciesFromEnvForItself(id, legacyFiles, envExtendsDeps)) ?? _policy().VariantPolicy.getEmpty();
1189
1199
  const result = _policy().VariantPolicy.mergePolices([policiesFromEnv, policiesFromEnvForItself, policiesFromSlots, policiesFromConfig]);
1190
1200
  return result;
1191
1201
  }
@@ -1194,8 +1204,8 @@ class DependencyResolverMain {
1194
1204
  * These are the policies that the env itself defines for itself.
1195
1205
  * So policies installed only locally for the env, not to any components that use the env.
1196
1206
  */
1197
- async getPoliciesFromEnvForItself(id, legacyFiles) {
1198
- const envPolicy = await this.getEnvPolicyFromEnvId(id, legacyFiles);
1207
+ async getPoliciesFromEnvForItself(id, legacyFiles, envExtendsDeps) {
1208
+ const envPolicy = await this.getEnvPolicyFromEnvId(id, legacyFiles, envExtendsDeps);
1199
1209
  return envPolicy?.selfPolicy;
1200
1210
  }
1201
1211
  updateDepsOnLegacyTag(component, idTransformer) {
@@ -1426,12 +1436,14 @@ class DependencyResolverMain {
1426
1436
  // const packageManager = new PackageManagerLegacy(config.packageManager, logger);
1427
1437
  const logger = loggerExt.createLogger(_dependencyResolver().DependencyResolverAspect.id);
1428
1438
  const dependencyResolver = new DependencyResolverMain(config, rootPolicyRegistry, policiesRegistry, envs, logger, configMain, aspectLoader, globalConfig, componentAspect, packageManagerSlot, dependencyFactorySlot, preInstallSlot, postInstallSlot);
1439
+ const envJsoncDetector = envs.getEnvJsoncDetector();
1440
+ dependencyResolver.registerDetector(envJsoncDetector);
1429
1441
  componentAspect.registerShowFragments([new (_showFragments().DependenciesFragment)(dependencyResolver), new (_showFragments().DevDependenciesFragment)(dependencyResolver), new (_showFragments().PeerDependenciesFragment)(dependencyResolver)]);
1430
1442
  // TODO: solve this generics issue and remove the ts-ignore
1431
1443
  // @ts-ignore
1432
1444
  dependencyResolver.registerDependencyFactories([new (_dependencies2().ComponentDependencyFactory)(componentAspect)]);
1433
- _legacy3().ConsumerComponent.registerOnComponentOverridesLoading(_dependencyResolver().DependencyResolverAspect.id, async (configuredExtensions, id, legacyFiles) => {
1434
- const policy = await dependencyResolver.mergeVariantPolicies(configuredExtensions, id, legacyFiles);
1445
+ _legacy3().ConsumerComponent.registerOnComponentOverridesLoading(_dependencyResolver().DependencyResolverAspect.id, async (configuredExtensions, id, legacyFiles, envExtendsDeps) => {
1446
+ const policy = await dependencyResolver.mergeVariantPolicies(configuredExtensions, id, legacyFiles, envExtendsDeps);
1435
1447
  return policy.toLegacyDepsOverrides();
1436
1448
  });
1437
1449
  if (aspectLoader) aspectLoader.registerOnLoadRequireableExtensionSlot(dependencyResolver.onLoadRequireableExtensionSubscriber.bind(dependencyResolver));