@teambit/install 1.0.385 → 1.0.387

Sign up to get free protection for your applications and to get access to all the features.
@@ -67,6 +67,7 @@ export declare class InstallMain {
67
67
  private ipcEvents;
68
68
  private harmony;
69
69
  private visitedAspects;
70
+ private oldNonLoadedEnvs;
70
71
  constructor(dependencyResolver: DependencyResolverMain, logger: Logger, workspace: Workspace, variants: VariantsMain, compiler: CompilerMain, envs: EnvsMain, wsConfigFiles: WorkspaceConfigFilesMain, aspectLoader: AspectLoaderMain, app: ApplicationMain, generator: GeneratorMain, preLinkSlot: PreLinkSlot, preInstallSlot: PreInstallSlot, postInstallSlot: PostInstallSlot, ipcEvents: IpcEventsMain, harmony: Harmony);
71
72
  /**
72
73
  * Install dependencies for all components in the workspace
@@ -112,6 +113,7 @@ export declare class InstallMain {
112
113
  private reloadMovedEnvs;
113
114
  private reloadNonLoadedEnvs;
114
115
  private reloadEnvs;
116
+ private reloadAspects;
115
117
  private _getComponentsManifestsAndRootPolicy;
116
118
  /**
117
119
  * The function `tryWriteConfigFiles` attempts to write workspace config files, and if it fails, it logs an error
@@ -127,6 +129,7 @@ export declare class InstallMain {
127
129
  private _getMissingPackagesWithoutRootDeps;
128
130
  private _getAllMissingPackages;
129
131
  private _getComponentsManifests;
132
+ setOldNonLoadedEnvs(): string[];
130
133
  /**
131
134
  * This function returns a list of old non-loaded environments names.
132
135
  * @returns an array of strings called `oldNonLoadedEnvs`. This array contains the names of environment variables that
@@ -186,6 +186,13 @@ function _componentPackageVersion() {
186
186
  };
187
187
  return data;
188
188
  }
189
+ function _aspectLoader() {
190
+ const data = require("@teambit/aspect-loader");
191
+ _aspectLoader = function () {
192
+ return data;
193
+ };
194
+ return data;
195
+ }
189
196
  function _objectHash() {
190
197
  const data = _interopRequireDefault(require("object-hash"));
191
198
  _objectHash = function () {
@@ -242,13 +249,6 @@ function _update() {
242
249
  };
243
250
  return data;
244
251
  }
245
- function _aspectLoader() {
246
- const data = require("@teambit/aspect-loader");
247
- _aspectLoader = function () {
248
- return data;
249
- };
250
- return data;
251
- }
252
252
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
253
253
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
254
254
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
@@ -275,6 +275,7 @@ class InstallMain {
275
275
  this.ipcEvents = ipcEvents;
276
276
  this.harmony = harmony;
277
277
  _defineProperty(this, "visitedAspects", new Set());
278
+ _defineProperty(this, "oldNonLoadedEnvs", []);
278
279
  }
279
280
  /**
280
281
  * Install dependencies for all components in the workspace
@@ -476,6 +477,7 @@ class InstallMain {
476
477
  }, pmInstallOptions);
477
478
  let cacheCleared = false;
478
479
  await this.linkCodemods(compDirMap);
480
+ const oldNonLoadedEnvs = this.setOldNonLoadedEnvs();
479
481
  await this.reloadMovedEnvs();
480
482
  await this.reloadNonLoadedEnvs();
481
483
  const shouldClearCacheOnInstall = this.shouldClearCacheOnInstall();
@@ -487,9 +489,8 @@ class InstallMain {
487
489
  // We need to clear cache before compiling the components or it might compile them with the default env
488
490
  // incorrectly in case the env was not loaded correctly before the installation.
489
491
  // We don't want to clear the failed to load envs because we want to show the warning at the end
490
- await this.workspace.clearCache({
491
- skipClearFailedToLoadEnvs: true
492
- });
492
+ // await this.workspace.clearCache({ skipClearFailedToLoadEnvs: true });
493
+ await this.workspace.clearCache();
493
494
  cacheCleared = true;
494
495
  }
495
496
  await this.compiler.compileOnWorkspace([], {
@@ -508,7 +509,6 @@ class InstallMain {
508
509
  }
509
510
  if (!dependenciesChanged) break;
510
511
  if (!options?.recurringInstall) break;
511
- const oldNonLoadedEnvs = this.getOldNonLoadedEnvs();
512
512
  if (!oldNonLoadedEnvs.length) break;
513
513
  prevManifests.add(manifestsHash(current.manifests));
514
514
  // If we run compile we do the clear cache before the compilation so no need to clean it again (it's an expensive
@@ -597,21 +597,48 @@ class InstallMain {
597
597
  // This is a bug in the flow and should be fixed.
598
598
  // skipDeps: true,
599
599
  });
600
- const loadedPlugins = (0, _lodash().compact)(await Promise.all(aspects.map(aspectDef => {
601
- const localPath = aspectDef.aspectPath;
602
- const component = aspectDef.component;
603
- if (!component) return undefined;
604
- const plugins = this.aspectLoader.getPlugins(component, localPath);
605
- if (plugins.has()) {
606
- return plugins.load(_cli().MainRuntime.name);
607
- }
608
- })));
609
- await Promise.all(loadedPlugins.map(plugin => {
610
- const runtime = plugin.getRuntime(_cli().MainRuntime);
611
- return runtime?.provider(undefined, undefined, undefined, this.harmony);
600
+ await Promise.all(aspects.map(async aspectDef => {
601
+ const id = aspectDef.component?.id;
602
+ if (!id) return;
603
+ await this.workspace.clearComponentCache(id);
612
604
  }));
605
+ await this.reloadAspects(aspects || []);
606
+
607
+ // Keeping this here for now, it was removed as part of #9138 as now that we load envs of envs
608
+ // correctly first it seems to be not needed anymore.
609
+ // But there might be cases where it will be needed. So keeping it here for now.
610
+
611
+ // This is a very special case which we need to compile our envs before loading them correctly.
612
+ // const grouped = groupBy(aspects, (aspectDef) => {
613
+ // return aspectDef.component?.id.toStringWithoutVersion() === 'bitdev.general/envs/bit-env';
614
+ // });
615
+ // await this.reloadAspects(grouped.true || []);
616
+ // const otherEnvs = grouped.false || [];
617
+ // await Promise.all(
618
+ // otherEnvs.map(async (aspectDef) => {
619
+ // const id = aspectDef.component?.id;
620
+ // if (!id) return;
621
+ // await this.workspace.clearComponentCache(id);
622
+ // })
623
+ // );
624
+ // await this.reloadAspects(grouped.false || []);
613
625
  }
614
626
  }
627
+ async reloadAspects(aspects) {
628
+ const loadedPlugins = (0, _lodash().compact)(await Promise.all(aspects.map(aspectDef => {
629
+ const localPath = aspectDef.aspectPath;
630
+ const component = aspectDef.component;
631
+ if (!component) return undefined;
632
+ const plugins = this.aspectLoader.getPlugins(component, localPath);
633
+ if (plugins.has()) {
634
+ return plugins.load(_cli().MainRuntime.name);
635
+ }
636
+ })));
637
+ await Promise.all(loadedPlugins.map(plugin => {
638
+ const runtime = plugin.getRuntime(_cli().MainRuntime);
639
+ return runtime?.provider(undefined, undefined, undefined, this.harmony);
640
+ }));
641
+ }
615
642
  async _getComponentsManifestsAndRootPolicy(installer, options) {
616
643
  const mergedRootPolicy = await this.addConfiguredAspectsToWorkspacePolicy();
617
644
  await this.addConfiguredGeneratorEnvsToWorkspacePolicy(mergedRootPolicy);
@@ -761,6 +788,13 @@ class InstallMain {
761
788
  manifests
762
789
  };
763
790
  }
791
+ setOldNonLoadedEnvs() {
792
+ const nonLoadedEnvs = this.envs.getFailedToLoadEnvs();
793
+ const envsWithoutManifest = Array.from(this.dependencyResolver.envsWithoutManifest);
794
+ const oldNonLoadedEnvs = (0, _lodash().intersection)(nonLoadedEnvs, envsWithoutManifest);
795
+ this.oldNonLoadedEnvs = oldNonLoadedEnvs;
796
+ return oldNonLoadedEnvs;
797
+ }
764
798
 
765
799
  /**
766
800
  * This function returns a list of old non-loaded environments names.
@@ -770,10 +804,7 @@ class InstallMain {
770
804
  * correctly
771
805
  */
772
806
  getOldNonLoadedEnvs() {
773
- const nonLoadedEnvs = this.envs.getFailedToLoadEnvs();
774
- const envsWithoutManifest = Array.from(this.dependencyResolver.envsWithoutManifest);
775
- const oldNonLoadedEnvs = (0, _lodash().intersection)(nonLoadedEnvs, envsWithoutManifest);
776
- return oldNonLoadedEnvs;
807
+ return this.oldNonLoadedEnvs;
777
808
  }
778
809
  async _updateRootDirs(rootDirs) {
779
810
  try {