@teambit/install 0.0.163 → 0.0.166

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.
@@ -12,6 +12,7 @@ declare type InstallCmdOptions = {
12
12
  update: boolean;
13
13
  updateExisting: boolean;
14
14
  savePrefix: string;
15
+ addMissingDeps: boolean;
15
16
  addMissingPeers: boolean;
16
17
  noOptional: boolean;
17
18
  };
@@ -14,6 +14,13 @@ function _defineProperty2() {
14
14
  };
15
15
  return data;
16
16
  }
17
+ function _bitError() {
18
+ const data = require("@teambit/bit-error");
19
+ _bitError = function () {
20
+ return data;
21
+ };
22
+ return data;
23
+ }
17
24
  function _chalk() {
18
25
  const data = _interopRequireDefault(require("chalk"));
19
26
  _chalk = function () {
@@ -51,11 +58,14 @@ class InstallCmd {
51
58
  }]);
52
59
  (0, _defineProperty2().default)(this, "alias", 'in');
53
60
  (0, _defineProperty2().default)(this, "group", 'development');
54
- (0, _defineProperty2().default)(this, "options", [['v', 'variants <variants>', 'add packages to specific variants'], ['t', 'type [lifecycleType]', '"runtime" (default) or "peer" (dev is not a valid option)'], ['u', 'update', 'update all dependencies'], ['', 'update-existing [updateExisting]', 'DEPRECATED (not needed anymore, it is the default now). update existing dependencies version and types'], ['', 'save-prefix [savePrefix]', 'set the prefix to use when adding dependency to workspace.jsonc'], ['', 'skip-dedupe [skipDedupe]', 'do not dedupe dependencies on installation'], ['', 'skip-import [skipImport]', 'do not import bit objects post installation'], ['', 'skip-compile [skipCompile]', 'do not compile components'], ['', 'add-missing-peers [addMissingPeers]', 'install all missing peer dependencies'], ['', 'no-optional [noOptional]', 'do not install optional dependencies (works with pnpm only)']]);
61
+ (0, _defineProperty2().default)(this, "options", [['v', 'variants <variants>', 'add packages to specific variants'], ['t', 'type [lifecycleType]', '"runtime" (default) or "peer" (dev is not a valid option)'], ['u', 'update', 'update all dependencies'], ['', 'update-existing [updateExisting]', 'DEPRECATED (not needed anymore, it is the default now). update existing dependencies version and types'], ['', 'save-prefix [savePrefix]', 'set the prefix to use when adding dependency to workspace.jsonc'], ['', 'skip-dedupe [skipDedupe]', 'do not dedupe dependencies on installation'], ['', 'skip-import [skipImport]', 'do not import bit objects post installation'], ['', 'skip-compile [skipCompile]', 'do not compile components'], ['', 'add-missing-deps [addMissingDeps]', 'install all missing dependencies'], ['', 'add-missing-peers [addMissingPeers]', 'install all missing peer dependencies'], ['', 'no-optional [noOptional]', 'do not install optional dependencies (works with pnpm only)']]);
55
62
  }
56
63
  async report([packages = []], options) {
57
64
  const startTime = Date.now();
58
65
  if (!this.workspace) throw new (_workspace().OutsideWorkspaceError)();
66
+ if (packages.length && options.addMissingDeps) {
67
+ throw new (_bitError().BitError)('You can not use --add-missing-deps with a list of packages');
68
+ }
59
69
  if (options.updateExisting) {
60
70
  this.logger.consoleWarning(`--update-existing is deprecated, please omit it. "bit install" will update existing dependency by default`);
61
71
  }
@@ -67,6 +77,7 @@ class InstallCmd {
67
77
  import: !options.skipImport,
68
78
  updateExisting: true,
69
79
  savePrefix: options.savePrefix,
80
+ addMissingDeps: options.addMissingDeps,
70
81
  addMissingPeers: options.addMissingPeers,
71
82
  compile: !options.skipCompile,
72
83
  includeOptionalDeps: !options.noOptional,
@@ -1 +1 @@
1
- {"version":3,"names":["InstallCmd","constructor","install","workspace","logger","name","description","report","packages","options","startTime","Date","now","OutsideWorkspaceError","updateExisting","consoleWarning","console","chalk","cyan","installOpts","variants","lifecycleType","addMissingPeers","type","dedupe","skipDedupe","import","skipImport","savePrefix","compile","skipCompile","includeOptionalDeps","noOptional","updateAll","update","components","endTime","executionTime","calculateTime","toArray","length","toString","diff"],"sources":["install.cmd.tsx"],"sourcesContent":["import { Command, CommandOptions } from '@teambit/cli';\nimport { WorkspaceDependencyLifecycleType } from '@teambit/dependency-resolver';\nimport { Logger } from '@teambit/logger';\nimport chalk from 'chalk';\nimport { OutsideWorkspaceError, Workspace } from '@teambit/workspace';\nimport { InstallMain, WorkspaceInstallOptions } from './install.main.runtime';\n\ntype InstallCmdOptions = {\n variants: string;\n type: WorkspaceDependencyLifecycleType;\n skipDedupe: boolean;\n skipImport: boolean;\n skipCompile: boolean;\n update: boolean;\n updateExisting: boolean;\n savePrefix: string;\n addMissingPeers: boolean;\n noOptional: boolean;\n};\n\nexport default class InstallCmd implements Command {\n name = 'install [packages...]';\n description = 'installs workspace dependencies';\n extendedDescription =\n 'when no package is specified, all workspace dependencies are installed and all workspace components are imported.';\n helpUrl = 'docs/dependencies/dependency-installation';\n arguments = [{ name: 'packages...', description: 'a list of packages to install (separated by spaces)' }];\n alias = 'in';\n group = 'development';\n options = [\n ['v', 'variants <variants>', 'add packages to specific variants'],\n ['t', 'type [lifecycleType]', '\"runtime\" (default) or \"peer\" (dev is not a valid option)'],\n ['u', 'update', 'update all dependencies'],\n [\n '',\n 'update-existing [updateExisting]',\n 'DEPRECATED (not needed anymore, it is the default now). update existing dependencies version and types',\n ],\n ['', 'save-prefix [savePrefix]', 'set the prefix to use when adding dependency to workspace.jsonc'],\n ['', 'skip-dedupe [skipDedupe]', 'do not dedupe dependencies on installation'],\n ['', 'skip-import [skipImport]', 'do not import bit objects post installation'],\n ['', 'skip-compile [skipCompile]', 'do not compile components'],\n ['', 'add-missing-peers [addMissingPeers]', 'install all missing peer dependencies'],\n ['', 'no-optional [noOptional]', 'do not install optional dependencies (works with pnpm only)'],\n ] as CommandOptions;\n\n constructor(\n private install: InstallMain,\n /**\n * workspace extension.\n */\n private workspace: Workspace,\n\n /**\n * logger extension.\n */\n private logger: Logger\n ) {}\n\n async report([packages = []]: [string[]], options: InstallCmdOptions) {\n const startTime = Date.now();\n if (!this.workspace) throw new OutsideWorkspaceError();\n if (options.updateExisting) {\n this.logger.consoleWarning(\n `--update-existing is deprecated, please omit it. \"bit install\" will update existing dependency by default`\n );\n }\n this.logger.console(`Resolving component dependencies for workspace: '${chalk.cyan(this.workspace.name)}'`);\n const installOpts: WorkspaceInstallOptions = {\n variants: options.variants,\n lifecycleType: options.addMissingPeers ? 'peer' : options.type,\n dedupe: !options.skipDedupe,\n import: !options.skipImport,\n updateExisting: true,\n savePrefix: options.savePrefix,\n addMissingPeers: options.addMissingPeers,\n compile: !options.skipCompile,\n includeOptionalDeps: !options.noOptional,\n updateAll: options.update,\n };\n const components = await this.install.install(packages, installOpts);\n const endTime = Date.now();\n const executionTime = calculateTime(startTime, endTime);\n return `Successfully installed dependencies and compiled ${chalk.cyan(\n components.toArray().length.toString()\n )} component(s) in ${chalk.cyan(executionTime.toString())} seconds`;\n }\n}\n\nfunction calculateTime(startTime: number, endTime: number) {\n const diff = endTime - startTime;\n return diff / 1000;\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["InstallCmd","constructor","install","workspace","logger","name","description","report","packages","options","startTime","Date","now","OutsideWorkspaceError","length","addMissingDeps","BitError","updateExisting","consoleWarning","console","chalk","cyan","installOpts","variants","lifecycleType","addMissingPeers","type","dedupe","skipDedupe","import","skipImport","savePrefix","compile","skipCompile","includeOptionalDeps","noOptional","updateAll","update","components","endTime","executionTime","calculateTime","toArray","toString","diff"],"sources":["install.cmd.tsx"],"sourcesContent":["import { BitError } from '@teambit/bit-error';\nimport { Command, CommandOptions } from '@teambit/cli';\nimport { WorkspaceDependencyLifecycleType } from '@teambit/dependency-resolver';\nimport { Logger } from '@teambit/logger';\nimport chalk from 'chalk';\nimport { OutsideWorkspaceError, Workspace } from '@teambit/workspace';\nimport { InstallMain, WorkspaceInstallOptions } from './install.main.runtime';\n\ntype InstallCmdOptions = {\n variants: string;\n type: WorkspaceDependencyLifecycleType;\n skipDedupe: boolean;\n skipImport: boolean;\n skipCompile: boolean;\n update: boolean;\n updateExisting: boolean;\n savePrefix: string;\n addMissingDeps: boolean;\n addMissingPeers: boolean;\n noOptional: boolean;\n};\n\nexport default class InstallCmd implements Command {\n name = 'install [packages...]';\n description = 'installs workspace dependencies';\n extendedDescription =\n 'when no package is specified, all workspace dependencies are installed and all workspace components are imported.';\n helpUrl = 'docs/dependencies/dependency-installation';\n arguments = [{ name: 'packages...', description: 'a list of packages to install (separated by spaces)' }];\n alias = 'in';\n group = 'development';\n options = [\n ['v', 'variants <variants>', 'add packages to specific variants'],\n ['t', 'type [lifecycleType]', '\"runtime\" (default) or \"peer\" (dev is not a valid option)'],\n ['u', 'update', 'update all dependencies'],\n [\n '',\n 'update-existing [updateExisting]',\n 'DEPRECATED (not needed anymore, it is the default now). update existing dependencies version and types',\n ],\n ['', 'save-prefix [savePrefix]', 'set the prefix to use when adding dependency to workspace.jsonc'],\n ['', 'skip-dedupe [skipDedupe]', 'do not dedupe dependencies on installation'],\n ['', 'skip-import [skipImport]', 'do not import bit objects post installation'],\n ['', 'skip-compile [skipCompile]', 'do not compile components'],\n ['', 'add-missing-deps [addMissingDeps]', 'install all missing dependencies'],\n ['', 'add-missing-peers [addMissingPeers]', 'install all missing peer dependencies'],\n ['', 'no-optional [noOptional]', 'do not install optional dependencies (works with pnpm only)'],\n ] as CommandOptions;\n\n constructor(\n private install: InstallMain,\n /**\n * workspace extension.\n */\n private workspace: Workspace,\n\n /**\n * logger extension.\n */\n private logger: Logger\n ) {}\n\n async report([packages = []]: [string[]], options: InstallCmdOptions) {\n const startTime = Date.now();\n if (!this.workspace) throw new OutsideWorkspaceError();\n if (packages.length && options.addMissingDeps) {\n throw new BitError('You can not use --add-missing-deps with a list of packages');\n }\n if (options.updateExisting) {\n this.logger.consoleWarning(\n `--update-existing is deprecated, please omit it. \"bit install\" will update existing dependency by default`\n );\n }\n this.logger.console(`Resolving component dependencies for workspace: '${chalk.cyan(this.workspace.name)}'`);\n const installOpts: WorkspaceInstallOptions = {\n variants: options.variants,\n lifecycleType: options.addMissingPeers ? 'peer' : options.type,\n dedupe: !options.skipDedupe,\n import: !options.skipImport,\n updateExisting: true,\n savePrefix: options.savePrefix,\n addMissingDeps: options.addMissingDeps,\n addMissingPeers: options.addMissingPeers,\n compile: !options.skipCompile,\n includeOptionalDeps: !options.noOptional,\n updateAll: options.update,\n };\n const components = await this.install.install(packages, installOpts);\n const endTime = Date.now();\n const executionTime = calculateTime(startTime, endTime);\n return `Successfully installed dependencies and compiled ${chalk.cyan(\n components.toArray().length.toString()\n )} component(s) in ${chalk.cyan(executionTime.toString())} seconds`;\n }\n}\n\nfunction calculateTime(startTime: number, endTime: number) {\n const diff = endTime - startTime;\n return diff / 1000;\n}\n"],"mappings":"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"}
@@ -7,7 +7,7 @@ import { Component, ComponentMap } from '@teambit/component';
7
7
  import { SlotRegistry } from '@teambit/harmony';
8
8
  import { NodeModulesLinksResult } from '@teambit/workspace.modules.node-modules-linker';
9
9
  import { EnvsMain } from '@teambit/envs';
10
- import { WorkspaceDependencyLifecycleType, DependencyResolverMain, LinkingOptions, LinkResults, WorkspacePolicy } from '@teambit/dependency-resolver';
10
+ import { WorkspaceDependencyLifecycleType, DependencyResolverMain, LinkingOptions, LinkResults, DependencyLinker, WorkspacePolicy } from '@teambit/dependency-resolver';
11
11
  import { Logger, LoggerMain } from '@teambit/logger';
12
12
  import { IssuesMain } from '@teambit/issues';
13
13
  import { CodemodResult } from '@teambit/legacy/dist/consumer/component-ops/codemod-components';
@@ -20,6 +20,7 @@ export declare type WorkspaceLinkResults = {
20
20
  legacyLinkCodemodResults?: CodemodResult[];
21
21
  } & LinkResults;
22
22
  export declare type WorkspaceInstallOptions = {
23
+ addMissingDeps?: boolean;
23
24
  addMissingPeers?: boolean;
24
25
  variants?: string;
25
26
  lifecycleType?: WorkspaceDependencyLifecycleType;
@@ -61,7 +62,11 @@ export declare class InstallMain {
61
62
  registerPreInstall(fn: PreInstall): void;
62
63
  private _addPackages;
63
64
  private _installModules;
65
+ private _getComponentsManifestsAndRootPolicy;
64
66
  private addConfiguredAspectsToWorkspacePolicy;
67
+ private _addMissingPackagesToRootPolicy;
68
+ private _getMissingPackagesWithoutRootDeps;
69
+ private _getAllMissingPackages;
65
70
  private _getComponentsManifests;
66
71
  private _updateRootDirs;
67
72
  private _getRootManifests;
@@ -88,7 +93,21 @@ export declare class InstallMain {
88
93
  * @param {string[]} the list of packages that should be removed from dependencies.
89
94
  */
90
95
  uninstallDependencies(packages: string[]): Promise<ComponentMap<string>>;
91
- linkCoreAspectsAndLegacy(options?: WorkspaceLinkOptions): Promise<LinkResults>;
96
+ /**
97
+ * This function returns all the locations of the external links that should be created inside node_modules.
98
+ * This information may then be passed to the package manager, which will create the links on its own.
99
+ */
100
+ calculateLinks(options?: WorkspaceLinkOptions): Promise<{
101
+ linkResults: WorkspaceLinkResults;
102
+ linkedRootDeps: Record<string, string>;
103
+ linker: DependencyLinker;
104
+ }>;
105
+ linkCodemods(compDirMap: ComponentMap<string>, options?: {
106
+ rewire?: boolean;
107
+ }): Promise<{
108
+ linksResults: NodeModulesLinksResult[];
109
+ codemodResults: any;
110
+ }>;
92
111
  link(options?: WorkspaceLinkOptions): Promise<WorkspaceLinkResults>;
93
112
  private _linkAllComponentsToBitRoots;
94
113
  /**
@@ -323,41 +323,49 @@ class InstallMain {
323
323
  const pm = this.dependencyResolver.getPackageManager();
324
324
  this.logger.console(`installing dependencies in workspace using ${pm === null || pm === void 0 ? void 0 : pm.name} (${_chalk().default.cyan(this.dependencyResolver.getPackageManagerName())})`);
325
325
  this.logger.debug(`installing dependencies in workspace with options`, options);
326
- const workspacePolicy = this.dependencyResolver.getWorkspacePolicy();
327
- const mergedRootPolicy = await this.addConfiguredAspectsToWorkspacePolicy(workspacePolicy);
328
326
  const depsFilterFn = await this.generateFilterFnForDepsFromLocalRemote();
329
327
  const hasRootComponents = this.dependencyResolver.hasRootComponents();
330
- const pmInstallOptions = {
328
+ // TODO: pass get install options
329
+ const installer = this.dependencyResolver.getInstaller({});
330
+ const calcManifestsOpts = {
331
+ copyPeerToRuntimeOnComponents: (_options$copyPeerToRu3 = options === null || options === void 0 ? void 0 : options.copyPeerToRuntimeOnComponents) !== null && _options$copyPeerToRu3 !== void 0 ? _options$copyPeerToRu3 : false,
332
+ copyPeerToRuntimeOnRoot: (_options$copyPeerToRu4 = options === null || options === void 0 ? void 0 : options.copyPeerToRuntimeOnRoot) !== null && _options$copyPeerToRu4 !== void 0 ? _options$copyPeerToRu4 : true,
331
333
  dedupe: !hasRootComponents && (options === null || options === void 0 ? void 0 : options.dedupe),
332
- copyPeerToRuntimeOnRoot: (_options$copyPeerToRu3 = options === null || options === void 0 ? void 0 : options.copyPeerToRuntimeOnRoot) !== null && _options$copyPeerToRu3 !== void 0 ? _options$copyPeerToRu3 : true,
333
- copyPeerToRuntimeOnComponents: (_options$copyPeerToRu4 = options === null || options === void 0 ? void 0 : options.copyPeerToRuntimeOnComponents) !== null && _options$copyPeerToRu4 !== void 0 ? _options$copyPeerToRu4 : false,
334
334
  dependencyFilterFn: depsFilterFn,
335
+ nodeLinker: this.dependencyResolver.nodeLinker()
336
+ };
337
+ // eslint-disable-next-line prefer-const
338
+ let {
339
+ mergedRootPolicy,
340
+ componentsAndManifests: current
341
+ } = await this._getComponentsManifestsAndRootPolicy(installer, _objectSpread(_objectSpread({}, calcManifestsOpts), {}, {
342
+ addMissingDeps: options === null || options === void 0 ? void 0 : options.addMissingDeps
343
+ }));
344
+ const pmInstallOptions = _objectSpread(_objectSpread({}, calcManifestsOpts), {}, {
335
345
  includeOptionalDeps: options === null || options === void 0 ? void 0 : options.includeOptionalDeps,
346
+ neverBuiltDependencies: this.dependencyResolver.config.neverBuiltDependencies,
336
347
  overrides: this.dependencyResolver.config.overrides,
337
348
  packageImportMethod: this.dependencyResolver.config.packageImportMethod,
338
349
  rootComponents: hasRootComponents,
339
- nodeLinker: this.dependencyResolver.nodeLinker(),
340
350
  updateAll: options === null || options === void 0 ? void 0 : options.updateAll
341
- };
342
- // TODO: pass get install options
343
- const installer = this.dependencyResolver.getInstaller({});
344
- let current = await this._getComponentsManifests(installer, mergedRootPolicy, pmInstallOptions);
351
+ });
345
352
  const prevManifests = new Set();
346
353
  // TODO: this make duplicate
347
354
  // this.logger.consoleSuccess();
348
355
  // TODO: add the links results to the output
349
- await this.link({
356
+ const linkOpts = {
350
357
  linkTeambitBit: true,
351
358
  linkCoreAspects: this.dependencyResolver.linkCoreAspects(),
352
359
  linkDepsResolvedFromEnv: !hasRootComponents,
353
- linkNestedDepsInNM: false
354
- });
355
- const linkOpts = {
356
- linkTeambitBit: false,
357
- linkCoreAspects: false,
358
- linkDepsResolvedFromEnv: !hasRootComponents,
359
360
  linkNestedDepsInNM: !this.workspace.isLegacy && !hasRootComponents
360
361
  };
362
+ const {
363
+ linkedRootDeps
364
+ } = await this.calculateLinks(linkOpts);
365
+ const linkedDependencies = {
366
+ [this.workspace.path]: linkedRootDeps
367
+ };
368
+ const compDirMap = await this.getComponentsDirectory([]);
361
369
  let installCycle = 0;
362
370
  let hasMissingLocalComponents = true;
363
371
  /* eslint-disable no-await-in-loop */
@@ -370,15 +378,9 @@ class InstallMain {
370
378
  const {
371
379
  dependenciesChanged
372
380
  } = await installer.installComponents(this.workspace.path, current.manifests, mergedRootPolicy, current.componentDirectoryMap, {
381
+ linkedDependencies,
373
382
  installTeambitBit: false
374
383
  }, pmInstallOptions);
375
- // Core aspects should be relinked after installation because Yarn removes all symlinks created not by Yarn.
376
- // If we don't link the core aspects immediately, the components will fail during load.
377
- await this.linkCoreAspectsAndLegacy({
378
- linkTeambitBit: false,
379
- linkCoreAspects: this.dependencyResolver.linkCoreAspects(),
380
- rootPolicy: mergedRootPolicy
381
- });
382
384
  if (options !== null && options !== void 0 && options.compile) {
383
385
  const compileStartTime = process.hrtime();
384
386
  const compileOutputMessage = `compiling components`;
@@ -388,13 +390,13 @@ class InstallMain {
388
390
  });
389
391
  this.logger.consoleSuccess(compileOutputMessage, compileStartTime);
390
392
  }
391
- await this.link(linkOpts);
393
+ await this.linkCodemods(compDirMap);
392
394
  if (!dependenciesChanged) break;
393
395
  prevManifests.add(manifestsHash(current.manifests));
394
396
  // We need to clear cache before creating the new component manifests.
395
397
  this.workspace.consumer.componentLoader.clearComponentsCache();
396
398
  this.workspace.clearCache();
397
- current = await this._getComponentsManifests(installer, mergedRootPolicy, pmInstallOptions);
399
+ current = await this._getComponentsManifests(installer, mergedRootPolicy, calcManifestsOpts);
398
400
  installCycle += 1;
399
401
  } while ((!prevManifests.has(manifestsHash(current.manifests)) || hasMissingLocalComponents) && installCycle < 5);
400
402
  // We clean node_modules only after the last install.
@@ -404,7 +406,30 @@ class InstallMain {
404
406
  /* eslint-enable no-await-in-loop */
405
407
  return current.componentDirectoryMap;
406
408
  }
407
- async addConfiguredAspectsToWorkspacePolicy(rootPolicy) {
409
+ async _getComponentsManifestsAndRootPolicy(installer, options) {
410
+ const mergedRootPolicy = await this.addConfiguredAspectsToWorkspacePolicy();
411
+ const componentsAndManifests = await this._getComponentsManifests(installer, mergedRootPolicy, options);
412
+ if (!(options !== null && options !== void 0 && options.addMissingDeps)) {
413
+ return {
414
+ componentsAndManifests,
415
+ mergedRootPolicy
416
+ };
417
+ }
418
+ const addedNewPkgs = await this._addMissingPackagesToRootPolicy(componentsAndManifests.manifests[this.workspace.path]);
419
+ if (!addedNewPkgs) {
420
+ return {
421
+ componentsAndManifests,
422
+ mergedRootPolicy
423
+ };
424
+ }
425
+ const mergedRootPolicyWithMissingDeps = await this.addConfiguredAspectsToWorkspacePolicy();
426
+ return {
427
+ mergedRootPolicy: mergedRootPolicyWithMissingDeps,
428
+ componentsAndManifests: await this._getComponentsManifests(installer, mergedRootPolicyWithMissingDeps, options)
429
+ };
430
+ }
431
+ async addConfiguredAspectsToWorkspacePolicy() {
432
+ const rootPolicy = this.dependencyResolver.getWorkspacePolicy();
408
433
  const aspectsPackages = await this.workspace.getConfiguredUserAspectsPackages({
409
434
  externalsOnly: true
410
435
  });
@@ -419,6 +444,22 @@ class InstallMain {
419
444
  });
420
445
  return rootPolicy;
421
446
  }
447
+ async _addMissingPackagesToRootPolicy(rootManifest, options) {
448
+ const packages = await this._getMissingPackagesWithoutRootDeps(rootManifest);
449
+ if (packages && packages.length) {
450
+ await this._addPackages(packages, options);
451
+ }
452
+ return packages.length > 0;
453
+ }
454
+ async _getMissingPackagesWithoutRootDeps(rootManifest) {
455
+ const packages = await this._getAllMissingPackages();
456
+ const rootDeps = _objectSpread(_objectSpread({}, rootManifest === null || rootManifest === void 0 ? void 0 : rootManifest.devDependencies), rootManifest === null || rootManifest === void 0 ? void 0 : rootManifest.dependencies);
457
+ return packages.filter(pkg => !rootDeps[pkg]);
458
+ }
459
+ async _getAllMissingPackages() {
460
+ const comps = await this.workspace.list();
461
+ return (0, _lodash().uniq)(comps.map(comp => Object.values(comp.state.issues.getOrCreate(_componentIssues().IssuesClasses.MissingPackagesDependenciesOnFs).data).flat()).flat());
462
+ }
422
463
  async _getComponentsManifests(dependencyInstaller, rootPolicy, installOptions) {
423
464
  const componentDirectoryMap = await this.getComponentsDirectory([]);
424
465
  let manifests = await dependencyInstaller.getComponentManifests(_objectSpread(_objectSpread({}, installOptions), {}, {
@@ -627,34 +668,48 @@ class InstallMain {
627
668
  dedupe: true
628
669
  });
629
670
  }
630
- async linkCoreAspectsAndLegacy(options = {}) {
631
- const linker = this.dependencyResolver.getLinker({
632
- rootDir: this.workspace.path,
633
- linkingOptions: options
634
- });
635
- const compIds = await this.workspace.listIds();
636
- const res = await linker.linkCoreAspectsAndLegacy(this.workspace.path, compIds, options.rootPolicy, options);
637
- return res;
638
- }
639
- async link(options = {}) {
640
- var _options$rewire;
671
+
672
+ /**
673
+ * This function returns all the locations of the external links that should be created inside node_modules.
674
+ * This information may then be passed to the package manager, which will create the links on its own.
675
+ */
676
+ async calculateLinks(options = {}) {
641
677
  await (0, _pMapSeries().default)(this.preLinkSlot.values(), fn => fn(options)); // import objects if not disabled in options
642
678
  const compDirMap = await this.getComponentsDirectory([]);
643
- const mergedRootPolicy = this.dependencyResolver.getWorkspacePolicy();
644
679
  const linker = this.dependencyResolver.getLinker({
645
680
  rootDir: this.workspace.path,
646
681
  linkingOptions: options
647
682
  });
648
- const res = await linker.link(this.workspace.path, mergedRootPolicy, compDirMap, options);
683
+ const {
684
+ linkResults: res,
685
+ linkedRootDeps
686
+ } = await linker.calculateLinkedDeps(this.workspace.path, compDirMap, options);
649
687
  const workspaceRes = res;
650
- const bitIds = compDirMap.toArray().map(([component]) => component.id._legacy);
651
- const legacyResults = await (0, _workspaceModules().linkToNodeModulesWithCodemod)(this.workspace, bitIds, (_options$rewire = options.rewire) !== null && _options$rewire !== void 0 ? _options$rewire : false);
688
+ const legacyResults = await this.linkCodemods(compDirMap, options);
652
689
  workspaceRes.legacyLinkResults = legacyResults.linksResults;
653
690
  workspaceRes.legacyLinkCodemodResults = legacyResults.codemodResults;
654
691
  if (this.dependencyResolver.hasRootComponents() && options.linkToBitRoots) {
655
692
  await this._linkAllComponentsToBitRoots(compDirMap);
656
693
  }
657
- return res;
694
+ return {
695
+ linkResults: res,
696
+ linkedRootDeps,
697
+ linker
698
+ };
699
+ }
700
+ async linkCodemods(compDirMap, options) {
701
+ var _options$rewire;
702
+ const bitIds = compDirMap.toArray().map(([component]) => component.id._legacy);
703
+ return (0, _workspaceModules().linkToNodeModulesWithCodemod)(this.workspace, bitIds, (_options$rewire = options === null || options === void 0 ? void 0 : options.rewire) !== null && _options$rewire !== void 0 ? _options$rewire : false);
704
+ }
705
+ async link(options = {}) {
706
+ const {
707
+ linkResults,
708
+ linkedRootDeps,
709
+ linker
710
+ } = await this.calculateLinks(options);
711
+ await linker.createLinks(this.workspace.path, linkedRootDeps);
712
+ return linkResults;
658
713
  }
659
714
  async _linkAllComponentsToBitRoots(compDirMap) {
660
715
  const envs = await this._getAllUsedEnvIds();
@@ -1 +1 @@
1
- {"version":3,"names":["InstallMain","constructor","dependencyResolver","logger","workspace","variants","compiler","envs","app","preLinkSlot","preInstallSlot","Set","install","packages","options","inInstallContext","length","_addPackages","addMissingPeers","compDirMap","getComponentsDirectory","mergedRootPolicy","getWorkspacePolicy","depsFilterFn","generateFilterFnForDepsFromLocalRemote","pmInstallOptions","dedupe","copyPeerToRuntimeOnRoot","copyPeerToRuntimeOnComponents","dependencyFilterFn","overrides","config","packageImportMethod","missingPeers","getMissingPeerDependencies","path","missingPeerPackages","Object","entries","map","peerName","range","console","pMapSeries","values","fn","res","_installModules","registerPreLink","register","registerPreInstall","lifecycleType","DependencyTypeNotSupportedInPolicy","debug","join","resolver","getVersionResolver","resolvedPackagesP","packageName","resolveRemoteVersion","rootDir","resolvedPackages","Promise","all","newWorkspacePolicyEntries","forEach","resolvedPackage","version","versionWithPrefix","getVersionWithSavePrefix","overridePrefix","savePrefix","wantedRange","push","dependencyId","value","addToRootPolicy","updateExisting","persistConfig","pm","getPackageManager","name","chalk","cyan","getPackageManagerName","workspacePolicy","addConfiguredAspectsToWorkspacePolicy","hasRootComponents","includeOptionalDeps","rootComponents","nodeLinker","updateAll","installer","getInstaller","current","_getComponentsManifests","prevManifests","link","linkTeambitBit","linkCoreAspects","linkDepsResolvedFromEnv","linkNestedDepsInNM","linkOpts","isLegacy","installCycle","hasMissingLocalComponents","hasComponentsFromWorkspaceInMissingDeps","dependenciesChanged","installComponents","manifests","componentDirectoryMap","installTeambitBit","linkCoreAspectsAndLegacy","rootPolicy","compile","compileStartTime","process","hrtime","compileOutputMessage","setStatusLine","compileOnWorkspace","initiator","CompilationInitiator","Install","consoleSuccess","add","manifestsHash","consumer","componentLoader","clearComponentsCache","clearCache","has","pruneModules","componentFsCache","deleteAllDependenciesDataCache","aspectsPackages","getConfiguredUserAspectsPackages","externalsOnly","aspectsPackage","dependencyInstaller","installOptions","getComponentManifests","referenceLocalPackages","rootManifests","_getRootManifests","_updateRootDirs","keys","rootDirs","bitRootCompsDir","getBitRootsDir","existingDirs","fs","readdir","dirName","dirPath","includes","remove","err","code","mkdir","recursive","nonRootManifests","filter","workspaceDeps","getWorkspaceDepsOfBitRoots","workspaceDepsMeta","reduce","acc","depName","injected","envManifests","_getEnvManifests","appManifests","_getAppManifests","_getAllUsedEnvIds","fromEntries","envId","getRootComponentDir","dependencies","_getEnvDependencies","dependenciesMeta","installConfig","hoistingLimits","env","getEnvDefinitionByStringId","BitError","policy","getComponentEnvPolicyFromEnvDefinition","selfPolicy","force","compact","listAppsFromComponents","appPkgName","getPackageName","appManifest","find","getEnvId","id","toString","omit","list","component","Array","from","updateDependencies","componentConfigFiles","componentPoliciesById","_getComponentsWithDependencyPolicies","variantPatterns","raw","variantPoliciesByPatterns","_variantPatternsToDepPolicesDict","components","outdatedPkgs","getOutdatedPkgsFromPolicies","outdatedPkgsToUpdate","off","pickOutdatedPkgs","on","updatedVariants","updatedComponents","applyUpdates","_updateVariantsPolicies","updatedComponentConfigFiles","pick","_saveManyComponentConfigFiles","_reloadConsumer","addDuplicateComponentAndPackageIssue","state","_consumer","removed","pkgName","componentIdToPackageName","found","issues","getOrCreate","IssuesClasses","DuplicateComponentAndPackage","data","allComponentIds","listIds","componentId","componentConfigFile","index","depResolverConfig","aspects","get","DependencyResolverAspect","variantPattern","extensions","updateVariantPolicies","setExtension","overrideExisting","write","override","uninstallDependencies","removeFromRootPolicy","linker","getLinker","linkingOptions","compIds","workspaceRes","bitIds","toArray","_legacy","legacyResults","linkToNodeModulesWithCodemod","rewire","legacyLinkResults","linksResults","legacyLinkCodemodResults","codemodResults","linkToBitRoots","_linkAllComponentsToBitRoots","apps","mkdirp","linkPkgsToBitRoots","remotes","scope","_legacyRemotes","reg","getRegistries","packageScopes","scopes","dependencyList","filtered","dep","ComponentDependency","isHub","some","startsWith","ids","getMany","ComponentMap","as","componentDir","onRootAspectAddedSubscriber","_aspectId","inWs","onAspectsResolveSubscriber","aspectComponents","needLink","needInstall","promises","aspectComponent","aspectIdStr","visitedAspects","packagePath","getComponentPackagePath","exists","pathExists","hasId","provider","loggerExt","cli","_","createLogger","installExt","registerAddComponentsIssues","bind","commands","InstallCmd","UninstallCmd","UpdateCmd","LinkCommand","registerOnRootAspectAdded","Slot","withType","WorkspaceAspect","LoggerAspect","VariantsAspect","CLIAspect","CompilerAspect","IssuesAspect","EnvsAspect","ApplicationAspect","MainRuntime","missingDeps","issue","getIssue","MissingPackagesDependenciesOnFs","flat","InstallAspect","addRuntime","depsByProjectPaths","mapValues","manifest","devDependencies","hash"],"sources":["install.main.runtime.ts"],"sourcesContent":["import fs, { pathExists } from 'fs-extra';\nimport path from 'path';\nimport { getRootComponentDir, getBitRootsDir, linkPkgsToBitRoots } from '@teambit/bit-roots';\nimport { CompilerMain, CompilerAspect, CompilationInitiator } from '@teambit/compiler';\nimport { CLIMain, CommandList, CLIAspect, MainRuntime } from '@teambit/cli';\nimport chalk from 'chalk';\nimport { WorkspaceAspect, Workspace, ComponentConfigFile } from '@teambit/workspace';\nimport { compact, mapValues, omit, pick } from 'lodash';\nimport { ProjectManifest } from '@pnpm/types';\nimport { BitError } from '@teambit/bit-error';\nimport componentIdToPackageName from '@teambit/legacy/dist/utils/bit/component-id-to-package-name';\nimport { ApplicationMain, ApplicationAspect } from '@teambit/application';\nimport { VariantsMain, Patterns, VariantsAspect } from '@teambit/variants';\nimport { Component, ComponentID, ComponentMap } from '@teambit/component';\nimport pMapSeries from 'p-map-series';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport { linkToNodeModulesWithCodemod, NodeModulesLinksResult } from '@teambit/workspace.modules.node-modules-linker';\nimport { EnvsMain, EnvsAspect } from '@teambit/envs';\nimport { IssuesClasses } from '@teambit/component-issues';\nimport {\n WorkspaceDependencyLifecycleType,\n DependencyResolverMain,\n DependencyInstaller,\n DependencyResolverAspect,\n PackageManagerInstallOptions,\n ComponentDependency,\n VariantPolicyConfigObject,\n WorkspacePolicyEntry,\n LinkingOptions,\n LinkResults,\n DependencyList,\n OutdatedPkg,\n WorkspacePolicy,\n} from '@teambit/dependency-resolver';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { IssuesAspect, IssuesMain } from '@teambit/issues';\nimport { CodemodResult } from '@teambit/legacy/dist/consumer/component-ops/codemod-components';\nimport hash from 'object-hash';\nimport { DependencyTypeNotSupportedInPolicy } from './exceptions';\nimport { InstallAspect } from './install.aspect';\nimport { pickOutdatedPkgs } from './pick-outdated-pkgs';\nimport { LinkCommand } from './link';\nimport InstallCmd from './install.cmd';\nimport UninstallCmd from './uninstall.cmd';\nimport UpdateCmd from './update.cmd';\n\nexport type WorkspaceLinkOptions = LinkingOptions & {\n rootPolicy?: WorkspacePolicy;\n linkToBitRoots?: boolean;\n};\n\nexport type WorkspaceLinkResults = {\n legacyLinkResults?: NodeModulesLinksResult[];\n legacyLinkCodemodResults?: CodemodResult[];\n} & LinkResults;\n\nexport type WorkspaceInstallOptions = {\n addMissingPeers?: boolean;\n variants?: string;\n lifecycleType?: WorkspaceDependencyLifecycleType;\n dedupe?: boolean;\n import?: boolean;\n copyPeerToRuntimeOnRoot?: boolean;\n copyPeerToRuntimeOnComponents?: boolean;\n updateExisting?: boolean;\n savePrefix?: string;\n compile?: boolean;\n includeOptionalDeps?: boolean;\n updateAll?: boolean;\n};\n\nexport type ModulesInstallOptions = Omit<WorkspaceInstallOptions, 'updateExisting' | 'lifecycleType' | 'import'>;\n\ntype PreLink = (linkOpts?: WorkspaceLinkOptions) => Promise<void>;\ntype PreInstall = (installOpts?: WorkspaceInstallOptions) => Promise<void>;\n\ntype PreLinkSlot = SlotRegistry<PreLink>;\ntype PreInstallSlot = SlotRegistry<PreInstall>;\n\nexport class InstallMain {\n private visitedAspects: Set<string> = new Set();\n\n constructor(\n private dependencyResolver: DependencyResolverMain,\n\n private logger: Logger,\n\n private workspace: Workspace,\n\n private variants: VariantsMain,\n\n private compiler: CompilerMain,\n\n private envs: EnvsMain,\n\n private app: ApplicationMain,\n\n private preLinkSlot: PreLinkSlot,\n\n private preInstallSlot: PreInstallSlot\n ) {}\n /**\n * Install dependencies for all components in the workspace\n *\n * @returns\n * @memberof Workspace\n */\n async install(packages?: string[], options?: WorkspaceInstallOptions): Promise<ComponentMap<string>> {\n // set workspace in install context\n this.workspace.inInstallContext = true;\n if (packages && packages.length) {\n await this._addPackages(packages, options);\n }\n if (options?.addMissingPeers) {\n const compDirMap = await this.getComponentsDirectory([]);\n const mergedRootPolicy = this.dependencyResolver.getWorkspacePolicy();\n const depsFilterFn = await this.generateFilterFnForDepsFromLocalRemote();\n const pmInstallOptions: PackageManagerInstallOptions = {\n dedupe: options?.dedupe,\n copyPeerToRuntimeOnRoot: options?.copyPeerToRuntimeOnRoot ?? true,\n copyPeerToRuntimeOnComponents: options?.copyPeerToRuntimeOnComponents ?? false,\n dependencyFilterFn: depsFilterFn,\n overrides: this.dependencyResolver.config.overrides,\n packageImportMethod: this.dependencyResolver.config.packageImportMethod,\n };\n const missingPeers = await this.dependencyResolver.getMissingPeerDependencies(\n this.workspace.path,\n mergedRootPolicy,\n compDirMap,\n pmInstallOptions\n );\n if (missingPeers) {\n const missingPeerPackages = Object.entries(missingPeers).map(([peerName, range]) => `${peerName}@${range}`);\n await this._addPackages(missingPeerPackages, options);\n } else {\n this.logger.console('No missing peer dependencies found.');\n }\n }\n await pMapSeries(this.preInstallSlot.values(), (fn) => fn(options)); // import objects if not disabled in options\n const res = await this._installModules(options);\n this.workspace.inInstallContext = false;\n return res;\n }\n\n registerPreLink(fn: PreLink) {\n this.preLinkSlot.register(fn);\n }\n\n registerPreInstall(fn: PreInstall) {\n this.preInstallSlot.register(fn);\n }\n\n private async _addPackages(packages: string[], options?: WorkspaceInstallOptions) {\n if (!options?.variants && (options?.lifecycleType as string) === 'dev') {\n throw new DependencyTypeNotSupportedInPolicy(options?.lifecycleType as string);\n }\n this.logger.debug(`installing the following packages: ${packages.join()}`);\n const resolver = await this.dependencyResolver.getVersionResolver();\n const resolvedPackagesP = packages.map((packageName) =>\n resolver.resolveRemoteVersion(packageName, {\n rootDir: this.workspace.path,\n })\n );\n const resolvedPackages = await Promise.all(resolvedPackagesP);\n const newWorkspacePolicyEntries: WorkspacePolicyEntry[] = [];\n resolvedPackages.forEach((resolvedPackage) => {\n if (resolvedPackage.version) {\n const versionWithPrefix = this.dependencyResolver.getVersionWithSavePrefix({\n version: resolvedPackage.version,\n overridePrefix: options?.savePrefix,\n wantedRange: resolvedPackage.wantedRange,\n });\n newWorkspacePolicyEntries.push({\n dependencyId: resolvedPackage.packageName,\n value: {\n version: versionWithPrefix,\n },\n lifecycleType: options?.lifecycleType || 'runtime',\n });\n }\n });\n if (!options?.variants) {\n this.dependencyResolver.addToRootPolicy(newWorkspacePolicyEntries, {\n updateExisting: options?.updateExisting ?? false,\n });\n } else {\n // TODO: implement\n }\n await this.dependencyResolver.persistConfig(this.workspace.path);\n }\n\n private async _installModules(options?: ModulesInstallOptions): Promise<ComponentMap<string>> {\n const pm = this.dependencyResolver.getPackageManager();\n this.logger.console(\n `installing dependencies in workspace using ${pm?.name} (${chalk.cyan(\n this.dependencyResolver.getPackageManagerName()\n )})`\n );\n this.logger.debug(`installing dependencies in workspace with options`, options);\n const workspacePolicy = this.dependencyResolver.getWorkspacePolicy();\n const mergedRootPolicy = await this.addConfiguredAspectsToWorkspacePolicy(workspacePolicy);\n const depsFilterFn = await this.generateFilterFnForDepsFromLocalRemote();\n const hasRootComponents = this.dependencyResolver.hasRootComponents();\n const pmInstallOptions: PackageManagerInstallOptions = {\n dedupe: !hasRootComponents && options?.dedupe,\n copyPeerToRuntimeOnRoot: options?.copyPeerToRuntimeOnRoot ?? true,\n copyPeerToRuntimeOnComponents: options?.copyPeerToRuntimeOnComponents ?? false,\n dependencyFilterFn: depsFilterFn,\n includeOptionalDeps: options?.includeOptionalDeps,\n overrides: this.dependencyResolver.config.overrides,\n packageImportMethod: this.dependencyResolver.config.packageImportMethod,\n rootComponents: hasRootComponents,\n nodeLinker: this.dependencyResolver.nodeLinker(),\n updateAll: options?.updateAll,\n };\n // TODO: pass get install options\n const installer = this.dependencyResolver.getInstaller({});\n let current = await this._getComponentsManifests(installer, mergedRootPolicy, pmInstallOptions);\n const prevManifests = new Set<string>();\n // TODO: this make duplicate\n // this.logger.consoleSuccess();\n // TODO: add the links results to the output\n await this.link({\n linkTeambitBit: true,\n linkCoreAspects: this.dependencyResolver.linkCoreAspects(),\n linkDepsResolvedFromEnv: !hasRootComponents,\n linkNestedDepsInNM: false,\n });\n const linkOpts = {\n linkTeambitBit: false,\n linkCoreAspects: false,\n linkDepsResolvedFromEnv: !hasRootComponents,\n linkNestedDepsInNM: !this.workspace.isLegacy && !hasRootComponents,\n };\n let installCycle = 0;\n let hasMissingLocalComponents = true;\n /* eslint-disable no-await-in-loop */\n do {\n // In case there are missing local components,\n // we'll need to make another round of installation as on the first round the missing local components\n // are not added to the manifests.\n // This is an issue when installation is done using root components.\n hasMissingLocalComponents = hasRootComponents && hasComponentsFromWorkspaceInMissingDeps(current);\n const { dependenciesChanged } = await installer.installComponents(\n this.workspace.path,\n current.manifests,\n mergedRootPolicy,\n current.componentDirectoryMap,\n {\n installTeambitBit: false,\n },\n pmInstallOptions\n );\n // Core aspects should be relinked after installation because Yarn removes all symlinks created not by Yarn.\n // If we don't link the core aspects immediately, the components will fail during load.\n await this.linkCoreAspectsAndLegacy({\n linkTeambitBit: false,\n linkCoreAspects: this.dependencyResolver.linkCoreAspects(),\n rootPolicy: mergedRootPolicy,\n });\n if (options?.compile) {\n const compileStartTime = process.hrtime();\n const compileOutputMessage = `compiling components`;\n this.logger.setStatusLine(compileOutputMessage);\n await this.compiler.compileOnWorkspace([], { initiator: CompilationInitiator.Install });\n this.logger.consoleSuccess(compileOutputMessage, compileStartTime);\n }\n await this.link(linkOpts);\n if (!dependenciesChanged) break;\n prevManifests.add(manifestsHash(current.manifests));\n // We need to clear cache before creating the new component manifests.\n this.workspace.consumer.componentLoader.clearComponentsCache();\n this.workspace.clearCache();\n current = await this._getComponentsManifests(installer, mergedRootPolicy, pmInstallOptions);\n installCycle += 1;\n } while ((!prevManifests.has(manifestsHash(current.manifests)) || hasMissingLocalComponents) && installCycle < 5);\n // We clean node_modules only after the last install.\n // Otherwise, we might load an env from a location that we later remove.\n await installer.pruneModules(this.workspace.path);\n await this.workspace.consumer.componentFsCache.deleteAllDependenciesDataCache();\n /* eslint-enable no-await-in-loop */\n return current.componentDirectoryMap;\n }\n\n private async addConfiguredAspectsToWorkspacePolicy(rootPolicy: WorkspacePolicy): Promise<WorkspacePolicy> {\n const aspectsPackages = await this.workspace.getConfiguredUserAspectsPackages({ externalsOnly: true });\n aspectsPackages.forEach((aspectsPackage) => {\n rootPolicy.add({\n dependencyId: aspectsPackage.packageName,\n value: {\n version: aspectsPackage.version,\n },\n lifecycleType: 'runtime',\n });\n });\n return rootPolicy;\n }\n\n private async _getComponentsManifests(\n dependencyInstaller: DependencyInstaller,\n rootPolicy: WorkspacePolicy,\n installOptions: Pick<\n PackageManagerInstallOptions,\n 'dedupe' | 'dependencyFilterFn' | 'copyPeerToRuntimeOnComponents' | 'nodeLinker'\n >\n ): Promise<ComponentsAndManifests> {\n const componentDirectoryMap = await this.getComponentsDirectory([]);\n let manifests = await dependencyInstaller.getComponentManifests({\n ...installOptions,\n componentDirectoryMap,\n rootPolicy,\n rootDir: this.workspace.path,\n referenceLocalPackages: this.dependencyResolver.hasRootComponents() && installOptions.nodeLinker === 'isolated',\n });\n if (this.dependencyResolver.hasRootComponents()) {\n const rootManifests = await this._getRootManifests(manifests);\n await this._updateRootDirs(Object.keys(rootManifests));\n manifests = {\n ...manifests,\n ...rootManifests,\n };\n }\n return {\n componentDirectoryMap,\n manifests,\n };\n }\n\n private async _updateRootDirs(rootDirs: string[]) {\n try {\n const bitRootCompsDir = getBitRootsDir(this.workspace.path);\n const existingDirs = await fs.readdir(bitRootCompsDir);\n await Promise.all(\n existingDirs.map(async (dirName) => {\n const dirPath = path.join(bitRootCompsDir, dirName);\n if (!rootDirs.includes(dirPath)) {\n await fs.remove(dirPath);\n }\n })\n );\n } catch (err: any) {\n if (err.code !== 'ENOENT') throw err;\n }\n await Promise.all(rootDirs.map((dirPath) => fs.mkdir(dirPath, { recursive: true })));\n }\n\n private async _getRootManifests(\n manifests: Record<string, ProjectManifest>\n ): Promise<Record<string, ProjectManifest>> {\n const nonRootManifests = Object.values(manifests).filter(({ name }) => name !== 'workspace');\n const workspaceDeps = this.dependencyResolver.getWorkspaceDepsOfBitRoots(nonRootManifests);\n const workspaceDepsMeta = Object.keys(workspaceDeps).reduce((acc, depName) => {\n acc[depName] = { injected: true };\n return acc;\n }, {});\n const envManifests = await this._getEnvManifests(workspaceDeps, workspaceDepsMeta);\n const appManifests = await this._getAppManifests(manifests, workspaceDeps, workspaceDepsMeta);\n return {\n ...envManifests,\n ...appManifests,\n };\n }\n\n private async _getEnvManifests(\n workspaceDeps: Record<string, string>,\n workspaceDepsMeta: Record<string, { injected: true }>\n ): Promise<Record<string, ProjectManifest>> {\n const envs = await this._getAllUsedEnvIds();\n return Object.fromEntries(\n await Promise.all(\n envs.map(async (envId) => {\n return [\n getRootComponentDir(this.workspace.path, envId),\n {\n dependencies: {\n ...(await this._getEnvDependencies(envId)),\n ...workspaceDeps,\n },\n dependenciesMeta: workspaceDepsMeta,\n installConfig: {\n hoistingLimits: 'workspaces',\n },\n },\n ];\n })\n )\n );\n }\n\n private async _getEnvDependencies(envId: string): Promise<Record<string, string>> {\n const env = this.envs.getEnvDefinitionByStringId(envId);\n if (!env) throw new BitError(`Cannot find environment with id: ${envId}`);\n const policy = await this.dependencyResolver.getComponentEnvPolicyFromEnvDefinition(env);\n return Object.fromEntries(\n policy.selfPolicy.entries\n .filter(({ force, value }) => force && value.version !== '-')\n .map(({ dependencyId, value }) => [dependencyId, value.version])\n );\n }\n\n private async _getAppManifests(\n manifests: Record<string, ProjectManifest>,\n workspaceDeps: Record<string, string>,\n workspaceDepsMeta: Record<string, { injected: true }>\n ): Promise<Record<string, ProjectManifest>> {\n return Object.fromEntries(\n compact(\n await Promise.all(\n (\n await this.app.listAppsFromComponents()\n ).map(async (app) => {\n const appPkgName = this.dependencyResolver.getPackageName(app);\n const appManifest = Object.values(manifests).find(({ name }) => name === appPkgName);\n if (!appManifest) return null;\n const envId = this.envs.getEnvId(app);\n return [\n getRootComponentDir(this.workspace.path, app.id.toString()),\n {\n ...omit(appManifest, ['name', 'version']),\n dependencies: {\n ...(await this._getEnvDependencies(envId)),\n ...appManifest.dependencies,\n ...workspaceDeps,\n },\n dependenciesMeta: {\n ...appManifest.dependenciesMeta,\n ...workspaceDepsMeta,\n },\n installConfig: {\n hoistingLimits: 'workspaces',\n },\n },\n ];\n })\n )\n )\n );\n }\n\n private async _getAllUsedEnvIds(): Promise<string[]> {\n const envs = new Set<string>();\n (await this.workspace.list()).forEach((component) => {\n envs.add(this.envs.getEnvId(component));\n });\n return Array.from(envs.values());\n }\n\n /**\n * Updates out-of-date dependencies in the workspace.\n *\n * @param options.all {Boolean} updates all outdated dependencies without showing a prompt.\n */\n async updateDependencies(options: { all: boolean }) {\n const { componentConfigFiles, componentPoliciesById } = await this._getComponentsWithDependencyPolicies();\n const variantPatterns = this.variants.raw();\n const variantPoliciesByPatterns = this._variantPatternsToDepPolicesDict(variantPatterns);\n const components = await this.workspace.list();\n const outdatedPkgs = await this.dependencyResolver.getOutdatedPkgsFromPolicies({\n rootDir: this.workspace.path,\n variantPoliciesByPatterns,\n componentPoliciesById,\n components,\n });\n let outdatedPkgsToUpdate!: OutdatedPkg[];\n if (options.all) {\n outdatedPkgsToUpdate = outdatedPkgs;\n } else {\n this.logger.off();\n outdatedPkgsToUpdate = await pickOutdatedPkgs(outdatedPkgs);\n this.logger.on();\n }\n const { updatedVariants, updatedComponents } = this.dependencyResolver.applyUpdates(outdatedPkgsToUpdate, {\n variantPoliciesByPatterns,\n componentPoliciesById,\n });\n await this._updateVariantsPolicies(variantPatterns, updatedVariants);\n const updatedComponentConfigFiles = Object.values(pick(componentConfigFiles, updatedComponents));\n await this._saveManyComponentConfigFiles(updatedComponentConfigFiles);\n await this.workspace._reloadConsumer();\n return this._installModules({ dedupe: true });\n }\n\n async addDuplicateComponentAndPackageIssue(components: Component[]) {\n const workspacePolicy = this.dependencyResolver.getWorkspacePolicy();\n components.forEach((component) => {\n if (component.state._consumer.removed) return;\n const pkgName = componentIdToPackageName(component.state._consumer);\n const found = workspacePolicy.find(pkgName);\n if (found) {\n component.state.issues.getOrCreate(IssuesClasses.DuplicateComponentAndPackage).data = found.dependencyId;\n }\n });\n }\n\n private async _getComponentsWithDependencyPolicies() {\n const allComponentIds = await this.workspace.listIds();\n const componentConfigFiles: Record<string, ComponentConfigFile> = {};\n const componentPoliciesById: Record<string, any> = {};\n (\n await Promise.all<ComponentConfigFile | undefined>(\n allComponentIds.map((componentId) => this.workspace.componentConfigFile(componentId))\n )\n ).forEach((componentConfigFile, index) => {\n if (!componentConfigFile) return;\n const depResolverConfig = componentConfigFile.aspects.get(DependencyResolverAspect.id);\n if (!depResolverConfig) return;\n const componentId = allComponentIds[index].toString();\n componentConfigFiles[componentId] = componentConfigFile;\n componentPoliciesById[componentId] = depResolverConfig.config.policy;\n });\n return {\n componentConfigFiles,\n componentPoliciesById,\n };\n }\n\n private _variantPatternsToDepPolicesDict(variantPatterns: Patterns): Record<string, VariantPolicyConfigObject> {\n const variantPoliciesByPatterns: Record<string, VariantPolicyConfigObject> = {};\n for (const [variantPattern, extensions] of Object.entries(variantPatterns)) {\n if (extensions[DependencyResolverAspect.id]?.policy) {\n variantPoliciesByPatterns[variantPattern] = extensions[DependencyResolverAspect.id]?.policy;\n }\n }\n return variantPoliciesByPatterns;\n }\n\n private _updateVariantsPolicies(variantPatterns: Record<string, any>, updateVariantPolicies: string[]) {\n for (const variantPattern of updateVariantPolicies) {\n this.variants.setExtension(\n variantPattern,\n DependencyResolverAspect.id,\n variantPatterns[variantPattern][DependencyResolverAspect.id],\n { overrideExisting: true }\n );\n }\n return this.dependencyResolver.persistConfig(this.workspace.path);\n }\n\n private async _saveManyComponentConfigFiles(componentConfigFiles: ComponentConfigFile[]) {\n await Promise.all(\n Array.from(componentConfigFiles).map(async (componentConfigFile) => {\n await componentConfigFile.write({ override: true });\n })\n );\n }\n\n /**\n * Uninstall the specified packages from dependencies.\n *\n * @param {string[]} the list of packages that should be removed from dependencies.\n */\n async uninstallDependencies(packages: string[]) {\n this.dependencyResolver.removeFromRootPolicy(packages);\n await this.dependencyResolver.persistConfig(this.workspace.path);\n return this._installModules({ dedupe: true });\n }\n\n async linkCoreAspectsAndLegacy(options: WorkspaceLinkOptions = {}) {\n const linker = this.dependencyResolver.getLinker({\n rootDir: this.workspace.path,\n linkingOptions: options,\n });\n const compIds = await this.workspace.listIds();\n const res = await linker.linkCoreAspectsAndLegacy(this.workspace.path, compIds, options.rootPolicy, options);\n return res;\n }\n\n async link(options: WorkspaceLinkOptions = {}): Promise<WorkspaceLinkResults> {\n await pMapSeries(this.preLinkSlot.values(), (fn) => fn(options)); // import objects if not disabled in options\n const compDirMap = await this.getComponentsDirectory([]);\n const mergedRootPolicy = this.dependencyResolver.getWorkspacePolicy();\n const linker = this.dependencyResolver.getLinker({\n rootDir: this.workspace.path,\n linkingOptions: options,\n });\n const res = await linker.link(this.workspace.path, mergedRootPolicy, compDirMap, options);\n const workspaceRes = res as WorkspaceLinkResults;\n\n const bitIds = compDirMap.toArray().map(([component]) => component.id._legacy);\n const legacyResults = await linkToNodeModulesWithCodemod(this.workspace, bitIds, options.rewire ?? false);\n workspaceRes.legacyLinkResults = legacyResults.linksResults;\n workspaceRes.legacyLinkCodemodResults = legacyResults.codemodResults;\n\n if (this.dependencyResolver.hasRootComponents() && options.linkToBitRoots) {\n await this._linkAllComponentsToBitRoots(compDirMap);\n }\n return res;\n }\n\n private async _linkAllComponentsToBitRoots(compDirMap: ComponentMap<string>) {\n const envs = await this._getAllUsedEnvIds();\n const apps = (await this.app.listAppsFromComponents()).map((component) => component.id.toString());\n await Promise.all(\n [...envs, ...apps].map(async (id) => {\n await fs.mkdirp(getRootComponentDir(this.workspace.path, id));\n })\n );\n await linkPkgsToBitRoots(\n this.workspace.path,\n compDirMap.components.map((component) => this.dependencyResolver.getPackageName(component))\n );\n }\n\n /**\n * Generate a filter to pass to the installer\n * This will filter deps which are come from remotes which defined in scope.json\n * those components comes from local remotes, usually doesn't have a package in a registry\n * so no reason to try to install them (it will fail)\n */\n private async generateFilterFnForDepsFromLocalRemote() {\n // TODO: once scope create a new API for this, replace it with the new one\n const remotes = await this.workspace.scope._legacyRemotes();\n const reg = await this.dependencyResolver.getRegistries();\n const packageScopes = Object.keys(reg.scopes);\n return (dependencyList: DependencyList): DependencyList => {\n const filtered = dependencyList.filter((dep) => {\n if (!(dep instanceof ComponentDependency)) {\n return true;\n }\n if (remotes.isHub(dep.componentId.scope)) {\n return true;\n }\n if (packageScopes.some((scope) => dep.packageName.startsWith(`@${scope}/`))) {\n return true;\n }\n return false;\n });\n return filtered;\n };\n }\n\n private async getComponentsDirectory(ids: ComponentID[]): Promise<ComponentMap<string>> {\n const components = ids.length ? await this.workspace.getMany(ids) : await this.workspace.list();\n return ComponentMap.as<string>(components, (component) => this.workspace.componentDir(component.id));\n }\n\n private async onRootAspectAddedSubscriber(_aspectId: ComponentID, inWs: boolean): Promise<void> {\n if (!inWs) {\n await this.install();\n }\n }\n private async onAspectsResolveSubscriber(aspectComponents: Component[]): Promise<void> {\n let needLink = false;\n let needInstall = false;\n const promises = aspectComponents.map(async (aspectComponent) => {\n const aspectIdStr = aspectComponent.id.toString();\n if (this.visitedAspects.has(aspectIdStr)) return;\n\n this.visitedAspects.add(aspectIdStr);\n const packagePath = this.workspace.getComponentPackagePath(aspectComponent);\n const exists = await pathExists(packagePath);\n if (!exists) {\n const inWs = await this.workspace.hasId(aspectComponent.id);\n if (inWs) {\n needLink = true;\n } else {\n needInstall = true;\n }\n }\n });\n await Promise.all(promises);\n if (needInstall) {\n await this.install();\n return;\n }\n if (needLink) {\n await this.link();\n }\n }\n\n static slots = [Slot.withType<PreLinkSlot>(), Slot.withType<PreInstallSlot>()];\n static dependencies = [\n DependencyResolverAspect,\n WorkspaceAspect,\n LoggerAspect,\n VariantsAspect,\n CLIAspect,\n CompilerAspect,\n IssuesAspect,\n EnvsAspect,\n ApplicationAspect,\n ];\n\n static runtime = MainRuntime;\n\n static async provider(\n [dependencyResolver, workspace, loggerExt, variants, cli, compiler, issues, envs, app]: [\n DependencyResolverMain,\n Workspace,\n LoggerMain,\n VariantsMain,\n CLIMain,\n CompilerMain,\n IssuesMain,\n EnvsMain,\n ApplicationMain\n ],\n _,\n [preLinkSlot, preInstallSlot]: [PreLinkSlot, PreInstallSlot]\n ) {\n const logger = loggerExt.createLogger('teambit.bit/install');\n const installExt = new InstallMain(\n dependencyResolver,\n logger,\n workspace,\n variants,\n compiler,\n envs,\n app,\n preLinkSlot,\n preInstallSlot\n );\n if (issues) {\n issues.registerAddComponentsIssues(installExt.addDuplicateComponentAndPackageIssue.bind(installExt));\n }\n const commands: CommandList = [\n new InstallCmd(installExt, workspace, logger),\n new UninstallCmd(installExt),\n new UpdateCmd(installExt),\n new LinkCommand(installExt, workspace, logger),\n ];\n // For now do not automate installation during aspect resolving\n // workspace.registerOnAspectsResolve(installExt.onAspectsResolveSubscriber.bind(installExt));\n if (workspace) {\n workspace.registerOnRootAspectAdded(installExt.onRootAspectAddedSubscriber.bind(installExt));\n }\n cli.register(...commands);\n return installExt;\n }\n}\n\ntype ComponentsAndManifests = {\n componentDirectoryMap: ComponentMap<string>;\n manifests: Record<string, ProjectManifest>;\n};\n\nfunction hasComponentsFromWorkspaceInMissingDeps({\n componentDirectoryMap,\n manifests,\n}: ComponentsAndManifests): boolean {\n const missingDeps = new Set<string>(\n componentDirectoryMap\n .toArray()\n .map(([{ state }]) => {\n const issue = state.issues.getIssue(IssuesClasses.MissingPackagesDependenciesOnFs);\n if (!issue) return [];\n return Object.values(issue.data).flat();\n })\n .flat()\n );\n return Object.values(manifests).some(({ name }) => name && missingDeps.has(name));\n}\n\nInstallAspect.addRuntime(InstallMain);\n\nexport default InstallMain;\n\nfunction manifestsHash(manifests: Record<string, ProjectManifest>): string {\n // We don't care if the type of the dependency changes as it doesn't change the node_modules structure\n const depsByProjectPaths = mapValues(manifests, (manifest) => ({\n ...manifest.devDependencies,\n ...manifest.dependencies,\n }));\n return hash(depsByProjectPaths);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["InstallMain","constructor","dependencyResolver","logger","workspace","variants","compiler","envs","app","preLinkSlot","preInstallSlot","Set","install","packages","options","inInstallContext","length","_addPackages","addMissingPeers","compDirMap","getComponentsDirectory","mergedRootPolicy","getWorkspacePolicy","depsFilterFn","generateFilterFnForDepsFromLocalRemote","pmInstallOptions","dedupe","copyPeerToRuntimeOnRoot","copyPeerToRuntimeOnComponents","dependencyFilterFn","overrides","config","packageImportMethod","missingPeers","getMissingPeerDependencies","path","missingPeerPackages","Object","entries","map","peerName","range","console","pMapSeries","values","fn","res","_installModules","registerPreLink","register","registerPreInstall","lifecycleType","DependencyTypeNotSupportedInPolicy","debug","join","resolver","getVersionResolver","resolvedPackagesP","packageName","resolveRemoteVersion","rootDir","resolvedPackages","Promise","all","newWorkspacePolicyEntries","forEach","resolvedPackage","version","versionWithPrefix","getVersionWithSavePrefix","overridePrefix","savePrefix","wantedRange","push","dependencyId","value","addToRootPolicy","updateExisting","persistConfig","pm","getPackageManager","name","chalk","cyan","getPackageManagerName","hasRootComponents","installer","getInstaller","calcManifestsOpts","nodeLinker","componentsAndManifests","current","_getComponentsManifestsAndRootPolicy","addMissingDeps","includeOptionalDeps","neverBuiltDependencies","rootComponents","updateAll","prevManifests","linkOpts","linkTeambitBit","linkCoreAspects","linkDepsResolvedFromEnv","linkNestedDepsInNM","isLegacy","linkedRootDeps","calculateLinks","linkedDependencies","installCycle","hasMissingLocalComponents","hasComponentsFromWorkspaceInMissingDeps","dependenciesChanged","installComponents","manifests","componentDirectoryMap","installTeambitBit","compile","compileStartTime","process","hrtime","compileOutputMessage","setStatusLine","compileOnWorkspace","initiator","CompilationInitiator","Install","consoleSuccess","linkCodemods","add","manifestsHash","consumer","componentLoader","clearComponentsCache","clearCache","_getComponentsManifests","has","pruneModules","componentFsCache","deleteAllDependenciesDataCache","addConfiguredAspectsToWorkspacePolicy","addedNewPkgs","_addMissingPackagesToRootPolicy","mergedRootPolicyWithMissingDeps","rootPolicy","aspectsPackages","getConfiguredUserAspectsPackages","externalsOnly","aspectsPackage","rootManifest","_getMissingPackagesWithoutRootDeps","_getAllMissingPackages","rootDeps","devDependencies","dependencies","filter","pkg","comps","list","uniq","comp","state","issues","getOrCreate","IssuesClasses","MissingPackagesDependenciesOnFs","data","flat","dependencyInstaller","installOptions","getComponentManifests","referenceLocalPackages","rootManifests","_getRootManifests","_updateRootDirs","keys","rootDirs","bitRootCompsDir","getBitRootsDir","existingDirs","fs","readdir","dirName","dirPath","includes","remove","err","code","mkdir","recursive","nonRootManifests","workspaceDeps","getWorkspaceDepsOfBitRoots","workspaceDepsMeta","reduce","acc","depName","injected","envManifests","_getEnvManifests","appManifests","_getAppManifests","_getAllUsedEnvIds","fromEntries","envId","getRootComponentDir","_getEnvDependencies","dependenciesMeta","installConfig","hoistingLimits","env","getEnvDefinitionByStringId","BitError","policy","getComponentEnvPolicyFromEnvDefinition","selfPolicy","force","compact","listAppsFromComponents","appPkgName","getPackageName","appManifest","find","getEnvId","id","toString","omit","component","Array","from","updateDependencies","componentConfigFiles","componentPoliciesById","_getComponentsWithDependencyPolicies","variantPatterns","raw","variantPoliciesByPatterns","_variantPatternsToDepPolicesDict","components","outdatedPkgs","getOutdatedPkgsFromPolicies","outdatedPkgsToUpdate","off","pickOutdatedPkgs","on","updatedVariants","updatedComponents","applyUpdates","_updateVariantsPolicies","updatedComponentConfigFiles","pick","_saveManyComponentConfigFiles","_reloadConsumer","addDuplicateComponentAndPackageIssue","workspacePolicy","_consumer","removed","pkgName","componentIdToPackageName","found","DuplicateComponentAndPackage","allComponentIds","listIds","componentId","componentConfigFile","index","depResolverConfig","aspects","get","DependencyResolverAspect","variantPattern","extensions","updateVariantPolicies","setExtension","overrideExisting","write","override","uninstallDependencies","removeFromRootPolicy","linker","getLinker","linkingOptions","linkResults","calculateLinkedDeps","workspaceRes","legacyResults","legacyLinkResults","linksResults","legacyLinkCodemodResults","codemodResults","linkToBitRoots","_linkAllComponentsToBitRoots","bitIds","toArray","_legacy","linkToNodeModulesWithCodemod","rewire","link","createLinks","apps","mkdirp","linkPkgsToBitRoots","remotes","scope","_legacyRemotes","reg","getRegistries","packageScopes","scopes","dependencyList","filtered","dep","ComponentDependency","isHub","some","startsWith","ids","getMany","ComponentMap","as","componentDir","onRootAspectAddedSubscriber","_aspectId","inWs","onAspectsResolveSubscriber","aspectComponents","needLink","needInstall","promises","aspectComponent","aspectIdStr","visitedAspects","packagePath","getComponentPackagePath","exists","pathExists","hasId","provider","loggerExt","cli","_","createLogger","installExt","registerAddComponentsIssues","bind","commands","InstallCmd","UninstallCmd","UpdateCmd","LinkCommand","registerOnRootAspectAdded","Slot","withType","WorkspaceAspect","LoggerAspect","VariantsAspect","CLIAspect","CompilerAspect","IssuesAspect","EnvsAspect","ApplicationAspect","MainRuntime","missingDeps","issue","getIssue","InstallAspect","addRuntime","depsByProjectPaths","mapValues","manifest","hash"],"sources":["install.main.runtime.ts"],"sourcesContent":["import fs, { pathExists } from 'fs-extra';\nimport path from 'path';\nimport { getRootComponentDir, getBitRootsDir, linkPkgsToBitRoots } from '@teambit/bit-roots';\nimport { CompilerMain, CompilerAspect, CompilationInitiator } from '@teambit/compiler';\nimport { CLIMain, CommandList, CLIAspect, MainRuntime } from '@teambit/cli';\nimport chalk from 'chalk';\nimport { WorkspaceAspect, Workspace, ComponentConfigFile } from '@teambit/workspace';\nimport { compact, mapValues, omit, uniq, pick } from 'lodash';\nimport { ProjectManifest } from '@pnpm/types';\nimport { BitError } from '@teambit/bit-error';\nimport componentIdToPackageName from '@teambit/legacy/dist/utils/bit/component-id-to-package-name';\nimport { ApplicationMain, ApplicationAspect } from '@teambit/application';\nimport { VariantsMain, Patterns, VariantsAspect } from '@teambit/variants';\nimport { Component, ComponentID, ComponentMap } from '@teambit/component';\nimport pMapSeries from 'p-map-series';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport { linkToNodeModulesWithCodemod, NodeModulesLinksResult } from '@teambit/workspace.modules.node-modules-linker';\nimport { EnvsMain, EnvsAspect } from '@teambit/envs';\nimport { IssuesClasses } from '@teambit/component-issues';\nimport {\n GetComponentManifestsOptions,\n WorkspaceDependencyLifecycleType,\n DependencyResolverMain,\n DependencyInstaller,\n DependencyResolverAspect,\n PackageManagerInstallOptions,\n ComponentDependency,\n VariantPolicyConfigObject,\n WorkspacePolicyEntry,\n LinkingOptions,\n LinkResults,\n DependencyLinker,\n DependencyList,\n OutdatedPkg,\n WorkspacePolicy,\n} from '@teambit/dependency-resolver';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { IssuesAspect, IssuesMain } from '@teambit/issues';\nimport { CodemodResult } from '@teambit/legacy/dist/consumer/component-ops/codemod-components';\nimport hash from 'object-hash';\nimport { DependencyTypeNotSupportedInPolicy } from './exceptions';\nimport { InstallAspect } from './install.aspect';\nimport { pickOutdatedPkgs } from './pick-outdated-pkgs';\nimport { LinkCommand } from './link';\nimport InstallCmd from './install.cmd';\nimport UninstallCmd from './uninstall.cmd';\nimport UpdateCmd from './update.cmd';\n\nexport type WorkspaceLinkOptions = LinkingOptions & {\n rootPolicy?: WorkspacePolicy;\n linkToBitRoots?: boolean;\n};\n\nexport type WorkspaceLinkResults = {\n legacyLinkResults?: NodeModulesLinksResult[];\n legacyLinkCodemodResults?: CodemodResult[];\n} & LinkResults;\n\nexport type WorkspaceInstallOptions = {\n addMissingDeps?: boolean;\n addMissingPeers?: boolean;\n variants?: string;\n lifecycleType?: WorkspaceDependencyLifecycleType;\n dedupe?: boolean;\n import?: boolean;\n copyPeerToRuntimeOnRoot?: boolean;\n copyPeerToRuntimeOnComponents?: boolean;\n updateExisting?: boolean;\n savePrefix?: string;\n compile?: boolean;\n includeOptionalDeps?: boolean;\n updateAll?: boolean;\n};\n\nexport type ModulesInstallOptions = Omit<WorkspaceInstallOptions, 'updateExisting' | 'lifecycleType' | 'import'>;\n\ntype PreLink = (linkOpts?: WorkspaceLinkOptions) => Promise<void>;\ntype PreInstall = (installOpts?: WorkspaceInstallOptions) => Promise<void>;\n\ntype PreLinkSlot = SlotRegistry<PreLink>;\ntype PreInstallSlot = SlotRegistry<PreInstall>;\n\ntype GetComponentsAndManifestsOptions = Omit<\n GetComponentManifestsOptions,\n 'componentDirectoryMap' | 'rootPolicy' | 'rootDir'\n> &\n Pick<PackageManagerInstallOptions, 'nodeLinker'>;\n\nexport class InstallMain {\n private visitedAspects: Set<string> = new Set();\n\n constructor(\n private dependencyResolver: DependencyResolverMain,\n\n private logger: Logger,\n\n private workspace: Workspace,\n\n private variants: VariantsMain,\n\n private compiler: CompilerMain,\n\n private envs: EnvsMain,\n\n private app: ApplicationMain,\n\n private preLinkSlot: PreLinkSlot,\n\n private preInstallSlot: PreInstallSlot\n ) {}\n /**\n * Install dependencies for all components in the workspace\n *\n * @returns\n * @memberof Workspace\n */\n async install(packages?: string[], options?: WorkspaceInstallOptions): Promise<ComponentMap<string>> {\n // set workspace in install context\n this.workspace.inInstallContext = true;\n if (packages && packages.length) {\n await this._addPackages(packages, options);\n }\n if (options?.addMissingPeers) {\n const compDirMap = await this.getComponentsDirectory([]);\n const mergedRootPolicy = this.dependencyResolver.getWorkspacePolicy();\n const depsFilterFn = await this.generateFilterFnForDepsFromLocalRemote();\n const pmInstallOptions: PackageManagerInstallOptions = {\n dedupe: options?.dedupe,\n copyPeerToRuntimeOnRoot: options?.copyPeerToRuntimeOnRoot ?? true,\n copyPeerToRuntimeOnComponents: options?.copyPeerToRuntimeOnComponents ?? false,\n dependencyFilterFn: depsFilterFn,\n overrides: this.dependencyResolver.config.overrides,\n packageImportMethod: this.dependencyResolver.config.packageImportMethod,\n };\n const missingPeers = await this.dependencyResolver.getMissingPeerDependencies(\n this.workspace.path,\n mergedRootPolicy,\n compDirMap,\n pmInstallOptions\n );\n if (missingPeers) {\n const missingPeerPackages = Object.entries(missingPeers).map(([peerName, range]) => `${peerName}@${range}`);\n await this._addPackages(missingPeerPackages, options);\n } else {\n this.logger.console('No missing peer dependencies found.');\n }\n }\n await pMapSeries(this.preInstallSlot.values(), (fn) => fn(options)); // import objects if not disabled in options\n const res = await this._installModules(options);\n this.workspace.inInstallContext = false;\n return res;\n }\n\n registerPreLink(fn: PreLink) {\n this.preLinkSlot.register(fn);\n }\n\n registerPreInstall(fn: PreInstall) {\n this.preInstallSlot.register(fn);\n }\n\n private async _addPackages(packages: string[], options?: WorkspaceInstallOptions) {\n if (!options?.variants && (options?.lifecycleType as string) === 'dev') {\n throw new DependencyTypeNotSupportedInPolicy(options?.lifecycleType as string);\n }\n this.logger.debug(`installing the following packages: ${packages.join()}`);\n const resolver = await this.dependencyResolver.getVersionResolver();\n const resolvedPackagesP = packages.map((packageName) =>\n resolver.resolveRemoteVersion(packageName, {\n rootDir: this.workspace.path,\n })\n );\n const resolvedPackages = await Promise.all(resolvedPackagesP);\n const newWorkspacePolicyEntries: WorkspacePolicyEntry[] = [];\n resolvedPackages.forEach((resolvedPackage) => {\n if (resolvedPackage.version) {\n const versionWithPrefix = this.dependencyResolver.getVersionWithSavePrefix({\n version: resolvedPackage.version,\n overridePrefix: options?.savePrefix,\n wantedRange: resolvedPackage.wantedRange,\n });\n newWorkspacePolicyEntries.push({\n dependencyId: resolvedPackage.packageName,\n value: {\n version: versionWithPrefix,\n },\n lifecycleType: options?.lifecycleType || 'runtime',\n });\n }\n });\n if (!options?.variants) {\n this.dependencyResolver.addToRootPolicy(newWorkspacePolicyEntries, {\n updateExisting: options?.updateExisting ?? false,\n });\n } else {\n // TODO: implement\n }\n await this.dependencyResolver.persistConfig(this.workspace.path);\n }\n\n private async _installModules(options?: ModulesInstallOptions): Promise<ComponentMap<string>> {\n const pm = this.dependencyResolver.getPackageManager();\n this.logger.console(\n `installing dependencies in workspace using ${pm?.name} (${chalk.cyan(\n this.dependencyResolver.getPackageManagerName()\n )})`\n );\n this.logger.debug(`installing dependencies in workspace with options`, options);\n const depsFilterFn = await this.generateFilterFnForDepsFromLocalRemote();\n const hasRootComponents = this.dependencyResolver.hasRootComponents();\n // TODO: pass get install options\n const installer = this.dependencyResolver.getInstaller({});\n const calcManifestsOpts: GetComponentsAndManifestsOptions = {\n copyPeerToRuntimeOnComponents: options?.copyPeerToRuntimeOnComponents ?? false,\n copyPeerToRuntimeOnRoot: options?.copyPeerToRuntimeOnRoot ?? true,\n dedupe: !hasRootComponents && options?.dedupe,\n dependencyFilterFn: depsFilterFn,\n nodeLinker: this.dependencyResolver.nodeLinker(),\n };\n // eslint-disable-next-line prefer-const\n let { mergedRootPolicy, componentsAndManifests: current } = await this._getComponentsManifestsAndRootPolicy(\n installer,\n {\n ...calcManifestsOpts,\n addMissingDeps: options?.addMissingDeps,\n }\n );\n const pmInstallOptions: PackageManagerInstallOptions = {\n ...calcManifestsOpts,\n includeOptionalDeps: options?.includeOptionalDeps,\n neverBuiltDependencies: this.dependencyResolver.config.neverBuiltDependencies,\n overrides: this.dependencyResolver.config.overrides,\n packageImportMethod: this.dependencyResolver.config.packageImportMethod,\n rootComponents: hasRootComponents,\n updateAll: options?.updateAll,\n };\n const prevManifests = new Set<string>();\n // TODO: this make duplicate\n // this.logger.consoleSuccess();\n // TODO: add the links results to the output\n const linkOpts = {\n linkTeambitBit: true,\n linkCoreAspects: this.dependencyResolver.linkCoreAspects(),\n linkDepsResolvedFromEnv: !hasRootComponents,\n linkNestedDepsInNM: !this.workspace.isLegacy && !hasRootComponents,\n };\n const { linkedRootDeps } = await this.calculateLinks(linkOpts);\n const linkedDependencies = {\n [this.workspace.path]: linkedRootDeps,\n };\n const compDirMap = await this.getComponentsDirectory([]);\n let installCycle = 0;\n let hasMissingLocalComponents = true;\n /* eslint-disable no-await-in-loop */\n do {\n // In case there are missing local components,\n // we'll need to make another round of installation as on the first round the missing local components\n // are not added to the manifests.\n // This is an issue when installation is done using root components.\n hasMissingLocalComponents = hasRootComponents && hasComponentsFromWorkspaceInMissingDeps(current);\n const { dependenciesChanged } = await installer.installComponents(\n this.workspace.path,\n current.manifests,\n mergedRootPolicy,\n current.componentDirectoryMap,\n {\n linkedDependencies,\n installTeambitBit: false,\n },\n pmInstallOptions\n );\n if (options?.compile) {\n const compileStartTime = process.hrtime();\n const compileOutputMessage = `compiling components`;\n this.logger.setStatusLine(compileOutputMessage);\n await this.compiler.compileOnWorkspace([], { initiator: CompilationInitiator.Install });\n this.logger.consoleSuccess(compileOutputMessage, compileStartTime);\n }\n await this.linkCodemods(compDirMap);\n if (!dependenciesChanged) break;\n prevManifests.add(manifestsHash(current.manifests));\n // We need to clear cache before creating the new component manifests.\n this.workspace.consumer.componentLoader.clearComponentsCache();\n this.workspace.clearCache();\n current = await this._getComponentsManifests(installer, mergedRootPolicy, calcManifestsOpts);\n installCycle += 1;\n } while ((!prevManifests.has(manifestsHash(current.manifests)) || hasMissingLocalComponents) && installCycle < 5);\n // We clean node_modules only after the last install.\n // Otherwise, we might load an env from a location that we later remove.\n await installer.pruneModules(this.workspace.path);\n await this.workspace.consumer.componentFsCache.deleteAllDependenciesDataCache();\n /* eslint-enable no-await-in-loop */\n return current.componentDirectoryMap;\n }\n\n private async _getComponentsManifestsAndRootPolicy(\n installer: DependencyInstaller,\n options: GetComponentsAndManifestsOptions & {\n addMissingDeps?: boolean;\n }\n ): Promise<{ componentsAndManifests: ComponentsAndManifests; mergedRootPolicy: WorkspacePolicy }> {\n const mergedRootPolicy = await this.addConfiguredAspectsToWorkspacePolicy();\n const componentsAndManifests = await this._getComponentsManifests(installer, mergedRootPolicy, options);\n if (!options?.addMissingDeps) {\n return { componentsAndManifests, mergedRootPolicy };\n }\n const addedNewPkgs = await this._addMissingPackagesToRootPolicy(\n componentsAndManifests.manifests[this.workspace.path]\n );\n if (!addedNewPkgs) {\n return { componentsAndManifests, mergedRootPolicy };\n }\n const mergedRootPolicyWithMissingDeps = await this.addConfiguredAspectsToWorkspacePolicy();\n return {\n mergedRootPolicy: mergedRootPolicyWithMissingDeps,\n componentsAndManifests: await this._getComponentsManifests(installer, mergedRootPolicyWithMissingDeps, options),\n };\n }\n\n private async addConfiguredAspectsToWorkspacePolicy(): Promise<WorkspacePolicy> {\n const rootPolicy = this.dependencyResolver.getWorkspacePolicy();\n const aspectsPackages = await this.workspace.getConfiguredUserAspectsPackages({ externalsOnly: true });\n aspectsPackages.forEach((aspectsPackage) => {\n rootPolicy.add({\n dependencyId: aspectsPackage.packageName,\n value: {\n version: aspectsPackage.version,\n },\n lifecycleType: 'runtime',\n });\n });\n return rootPolicy;\n }\n\n private async _addMissingPackagesToRootPolicy(\n rootManifest: ProjectManifest,\n options?: WorkspaceInstallOptions\n ): Promise<boolean> {\n const packages = await this._getMissingPackagesWithoutRootDeps(rootManifest);\n if (packages && packages.length) {\n await this._addPackages(packages, options);\n }\n return packages.length > 0;\n }\n\n private async _getMissingPackagesWithoutRootDeps(rootManifest: ProjectManifest) {\n const packages = await this._getAllMissingPackages();\n const rootDeps = {\n ...rootManifest?.devDependencies,\n ...rootManifest?.dependencies,\n };\n return packages.filter((pkg) => !rootDeps[pkg]);\n }\n\n private async _getAllMissingPackages(): Promise<string[]> {\n const comps = await this.workspace.list();\n return uniq(\n comps\n .map((comp) =>\n Object.values(comp.state.issues.getOrCreate(IssuesClasses.MissingPackagesDependenciesOnFs).data).flat()\n )\n .flat()\n );\n }\n\n private async _getComponentsManifests(\n dependencyInstaller: DependencyInstaller,\n rootPolicy: WorkspacePolicy,\n installOptions: GetComponentsAndManifestsOptions\n ): Promise<ComponentsAndManifests> {\n const componentDirectoryMap = await this.getComponentsDirectory([]);\n let manifests = await dependencyInstaller.getComponentManifests({\n ...installOptions,\n componentDirectoryMap,\n rootPolicy,\n rootDir: this.workspace.path,\n referenceLocalPackages: this.dependencyResolver.hasRootComponents() && installOptions.nodeLinker === 'isolated',\n });\n if (this.dependencyResolver.hasRootComponents()) {\n const rootManifests = await this._getRootManifests(manifests);\n await this._updateRootDirs(Object.keys(rootManifests));\n manifests = {\n ...manifests,\n ...rootManifests,\n };\n }\n return {\n componentDirectoryMap,\n manifests,\n };\n }\n\n private async _updateRootDirs(rootDirs: string[]) {\n try {\n const bitRootCompsDir = getBitRootsDir(this.workspace.path);\n const existingDirs = await fs.readdir(bitRootCompsDir);\n await Promise.all(\n existingDirs.map(async (dirName) => {\n const dirPath = path.join(bitRootCompsDir, dirName);\n if (!rootDirs.includes(dirPath)) {\n await fs.remove(dirPath);\n }\n })\n );\n } catch (err: any) {\n if (err.code !== 'ENOENT') throw err;\n }\n await Promise.all(rootDirs.map((dirPath) => fs.mkdir(dirPath, { recursive: true })));\n }\n\n private async _getRootManifests(\n manifests: Record<string, ProjectManifest>\n ): Promise<Record<string, ProjectManifest>> {\n const nonRootManifests = Object.values(manifests).filter(({ name }) => name !== 'workspace');\n const workspaceDeps = this.dependencyResolver.getWorkspaceDepsOfBitRoots(nonRootManifests);\n const workspaceDepsMeta = Object.keys(workspaceDeps).reduce((acc, depName) => {\n acc[depName] = { injected: true };\n return acc;\n }, {});\n const envManifests = await this._getEnvManifests(workspaceDeps, workspaceDepsMeta);\n const appManifests = await this._getAppManifests(manifests, workspaceDeps, workspaceDepsMeta);\n return {\n ...envManifests,\n ...appManifests,\n };\n }\n\n private async _getEnvManifests(\n workspaceDeps: Record<string, string>,\n workspaceDepsMeta: Record<string, { injected: true }>\n ): Promise<Record<string, ProjectManifest>> {\n const envs = await this._getAllUsedEnvIds();\n return Object.fromEntries(\n await Promise.all(\n envs.map(async (envId) => {\n return [\n getRootComponentDir(this.workspace.path, envId),\n {\n dependencies: {\n ...(await this._getEnvDependencies(envId)),\n ...workspaceDeps,\n },\n dependenciesMeta: workspaceDepsMeta,\n installConfig: {\n hoistingLimits: 'workspaces',\n },\n },\n ];\n })\n )\n );\n }\n\n private async _getEnvDependencies(envId: string): Promise<Record<string, string>> {\n const env = this.envs.getEnvDefinitionByStringId(envId);\n if (!env) throw new BitError(`Cannot find environment with id: ${envId}`);\n const policy = await this.dependencyResolver.getComponentEnvPolicyFromEnvDefinition(env);\n return Object.fromEntries(\n policy.selfPolicy.entries\n .filter(({ force, value }) => force && value.version !== '-')\n .map(({ dependencyId, value }) => [dependencyId, value.version])\n );\n }\n\n private async _getAppManifests(\n manifests: Record<string, ProjectManifest>,\n workspaceDeps: Record<string, string>,\n workspaceDepsMeta: Record<string, { injected: true }>\n ): Promise<Record<string, ProjectManifest>> {\n return Object.fromEntries(\n compact(\n await Promise.all(\n (\n await this.app.listAppsFromComponents()\n ).map(async (app) => {\n const appPkgName = this.dependencyResolver.getPackageName(app);\n const appManifest = Object.values(manifests).find(({ name }) => name === appPkgName);\n if (!appManifest) return null;\n const envId = this.envs.getEnvId(app);\n return [\n getRootComponentDir(this.workspace.path, app.id.toString()),\n {\n ...omit(appManifest, ['name', 'version']),\n dependencies: {\n ...(await this._getEnvDependencies(envId)),\n ...appManifest.dependencies,\n ...workspaceDeps,\n },\n dependenciesMeta: {\n ...appManifest.dependenciesMeta,\n ...workspaceDepsMeta,\n },\n installConfig: {\n hoistingLimits: 'workspaces',\n },\n },\n ];\n })\n )\n )\n );\n }\n\n private async _getAllUsedEnvIds(): Promise<string[]> {\n const envs = new Set<string>();\n (await this.workspace.list()).forEach((component) => {\n envs.add(this.envs.getEnvId(component));\n });\n return Array.from(envs.values());\n }\n\n /**\n * Updates out-of-date dependencies in the workspace.\n *\n * @param options.all {Boolean} updates all outdated dependencies without showing a prompt.\n */\n async updateDependencies(options: { all: boolean }) {\n const { componentConfigFiles, componentPoliciesById } = await this._getComponentsWithDependencyPolicies();\n const variantPatterns = this.variants.raw();\n const variantPoliciesByPatterns = this._variantPatternsToDepPolicesDict(variantPatterns);\n const components = await this.workspace.list();\n const outdatedPkgs = await this.dependencyResolver.getOutdatedPkgsFromPolicies({\n rootDir: this.workspace.path,\n variantPoliciesByPatterns,\n componentPoliciesById,\n components,\n });\n let outdatedPkgsToUpdate!: OutdatedPkg[];\n if (options.all) {\n outdatedPkgsToUpdate = outdatedPkgs;\n } else {\n this.logger.off();\n outdatedPkgsToUpdate = await pickOutdatedPkgs(outdatedPkgs);\n this.logger.on();\n }\n const { updatedVariants, updatedComponents } = this.dependencyResolver.applyUpdates(outdatedPkgsToUpdate, {\n variantPoliciesByPatterns,\n componentPoliciesById,\n });\n await this._updateVariantsPolicies(variantPatterns, updatedVariants);\n const updatedComponentConfigFiles = Object.values(pick(componentConfigFiles, updatedComponents));\n await this._saveManyComponentConfigFiles(updatedComponentConfigFiles);\n await this.workspace._reloadConsumer();\n return this._installModules({ dedupe: true });\n }\n\n async addDuplicateComponentAndPackageIssue(components: Component[]) {\n const workspacePolicy = this.dependencyResolver.getWorkspacePolicy();\n components.forEach((component) => {\n if (component.state._consumer.removed) return;\n const pkgName = componentIdToPackageName(component.state._consumer);\n const found = workspacePolicy.find(pkgName);\n if (found) {\n component.state.issues.getOrCreate(IssuesClasses.DuplicateComponentAndPackage).data = found.dependencyId;\n }\n });\n }\n\n private async _getComponentsWithDependencyPolicies() {\n const allComponentIds = await this.workspace.listIds();\n const componentConfigFiles: Record<string, ComponentConfigFile> = {};\n const componentPoliciesById: Record<string, any> = {};\n (\n await Promise.all<ComponentConfigFile | undefined>(\n allComponentIds.map((componentId) => this.workspace.componentConfigFile(componentId))\n )\n ).forEach((componentConfigFile, index) => {\n if (!componentConfigFile) return;\n const depResolverConfig = componentConfigFile.aspects.get(DependencyResolverAspect.id);\n if (!depResolverConfig) return;\n const componentId = allComponentIds[index].toString();\n componentConfigFiles[componentId] = componentConfigFile;\n componentPoliciesById[componentId] = depResolverConfig.config.policy;\n });\n return {\n componentConfigFiles,\n componentPoliciesById,\n };\n }\n\n private _variantPatternsToDepPolicesDict(variantPatterns: Patterns): Record<string, VariantPolicyConfigObject> {\n const variantPoliciesByPatterns: Record<string, VariantPolicyConfigObject> = {};\n for (const [variantPattern, extensions] of Object.entries(variantPatterns)) {\n if (extensions[DependencyResolverAspect.id]?.policy) {\n variantPoliciesByPatterns[variantPattern] = extensions[DependencyResolverAspect.id]?.policy;\n }\n }\n return variantPoliciesByPatterns;\n }\n\n private _updateVariantsPolicies(variantPatterns: Record<string, any>, updateVariantPolicies: string[]) {\n for (const variantPattern of updateVariantPolicies) {\n this.variants.setExtension(\n variantPattern,\n DependencyResolverAspect.id,\n variantPatterns[variantPattern][DependencyResolverAspect.id],\n { overrideExisting: true }\n );\n }\n return this.dependencyResolver.persistConfig(this.workspace.path);\n }\n\n private async _saveManyComponentConfigFiles(componentConfigFiles: ComponentConfigFile[]) {\n await Promise.all(\n Array.from(componentConfigFiles).map(async (componentConfigFile) => {\n await componentConfigFile.write({ override: true });\n })\n );\n }\n\n /**\n * Uninstall the specified packages from dependencies.\n *\n * @param {string[]} the list of packages that should be removed from dependencies.\n */\n async uninstallDependencies(packages: string[]) {\n this.dependencyResolver.removeFromRootPolicy(packages);\n await this.dependencyResolver.persistConfig(this.workspace.path);\n return this._installModules({ dedupe: true });\n }\n\n /**\n * This function returns all the locations of the external links that should be created inside node_modules.\n * This information may then be passed to the package manager, which will create the links on its own.\n */\n async calculateLinks(\n options: WorkspaceLinkOptions = {}\n ): Promise<{ linkResults: WorkspaceLinkResults; linkedRootDeps: Record<string, string>; linker: DependencyLinker }> {\n await pMapSeries(this.preLinkSlot.values(), (fn) => fn(options)); // import objects if not disabled in options\n const compDirMap = await this.getComponentsDirectory([]);\n const linker = this.dependencyResolver.getLinker({\n rootDir: this.workspace.path,\n linkingOptions: options,\n });\n const { linkResults: res, linkedRootDeps } = await linker.calculateLinkedDeps(\n this.workspace.path,\n compDirMap,\n options\n );\n const workspaceRes = res as WorkspaceLinkResults;\n\n const legacyResults = await this.linkCodemods(compDirMap, options);\n workspaceRes.legacyLinkResults = legacyResults.linksResults;\n workspaceRes.legacyLinkCodemodResults = legacyResults.codemodResults;\n\n if (this.dependencyResolver.hasRootComponents() && options.linkToBitRoots) {\n await this._linkAllComponentsToBitRoots(compDirMap);\n }\n return { linkResults: res, linkedRootDeps, linker };\n }\n\n async linkCodemods(compDirMap: ComponentMap<string>, options?: { rewire?: boolean }) {\n const bitIds = compDirMap.toArray().map(([component]) => component.id._legacy);\n return linkToNodeModulesWithCodemod(this.workspace, bitIds, options?.rewire ?? false);\n }\n\n async link(options: WorkspaceLinkOptions = {}): Promise<WorkspaceLinkResults> {\n const { linkResults, linkedRootDeps, linker } = await this.calculateLinks(options);\n await linker.createLinks(this.workspace.path, linkedRootDeps);\n return linkResults;\n }\n\n private async _linkAllComponentsToBitRoots(compDirMap: ComponentMap<string>) {\n const envs = await this._getAllUsedEnvIds();\n const apps = (await this.app.listAppsFromComponents()).map((component) => component.id.toString());\n await Promise.all(\n [...envs, ...apps].map(async (id) => {\n await fs.mkdirp(getRootComponentDir(this.workspace.path, id));\n })\n );\n await linkPkgsToBitRoots(\n this.workspace.path,\n compDirMap.components.map((component) => this.dependencyResolver.getPackageName(component))\n );\n }\n\n /**\n * Generate a filter to pass to the installer\n * This will filter deps which are come from remotes which defined in scope.json\n * those components comes from local remotes, usually doesn't have a package in a registry\n * so no reason to try to install them (it will fail)\n */\n private async generateFilterFnForDepsFromLocalRemote() {\n // TODO: once scope create a new API for this, replace it with the new one\n const remotes = await this.workspace.scope._legacyRemotes();\n const reg = await this.dependencyResolver.getRegistries();\n const packageScopes = Object.keys(reg.scopes);\n return (dependencyList: DependencyList): DependencyList => {\n const filtered = dependencyList.filter((dep) => {\n if (!(dep instanceof ComponentDependency)) {\n return true;\n }\n if (remotes.isHub(dep.componentId.scope)) {\n return true;\n }\n if (packageScopes.some((scope) => dep.packageName.startsWith(`@${scope}/`))) {\n return true;\n }\n return false;\n });\n return filtered;\n };\n }\n\n private async getComponentsDirectory(ids: ComponentID[]): Promise<ComponentMap<string>> {\n const components = ids.length ? await this.workspace.getMany(ids) : await this.workspace.list();\n return ComponentMap.as<string>(components, (component) => this.workspace.componentDir(component.id));\n }\n\n private async onRootAspectAddedSubscriber(_aspectId: ComponentID, inWs: boolean): Promise<void> {\n if (!inWs) {\n await this.install();\n }\n }\n private async onAspectsResolveSubscriber(aspectComponents: Component[]): Promise<void> {\n let needLink = false;\n let needInstall = false;\n const promises = aspectComponents.map(async (aspectComponent) => {\n const aspectIdStr = aspectComponent.id.toString();\n if (this.visitedAspects.has(aspectIdStr)) return;\n\n this.visitedAspects.add(aspectIdStr);\n const packagePath = this.workspace.getComponentPackagePath(aspectComponent);\n const exists = await pathExists(packagePath);\n if (!exists) {\n const inWs = await this.workspace.hasId(aspectComponent.id);\n if (inWs) {\n needLink = true;\n } else {\n needInstall = true;\n }\n }\n });\n await Promise.all(promises);\n if (needInstall) {\n await this.install();\n return;\n }\n if (needLink) {\n await this.link();\n }\n }\n\n static slots = [Slot.withType<PreLinkSlot>(), Slot.withType<PreInstallSlot>()];\n static dependencies = [\n DependencyResolverAspect,\n WorkspaceAspect,\n LoggerAspect,\n VariantsAspect,\n CLIAspect,\n CompilerAspect,\n IssuesAspect,\n EnvsAspect,\n ApplicationAspect,\n ];\n\n static runtime = MainRuntime;\n\n static async provider(\n [dependencyResolver, workspace, loggerExt, variants, cli, compiler, issues, envs, app]: [\n DependencyResolverMain,\n Workspace,\n LoggerMain,\n VariantsMain,\n CLIMain,\n CompilerMain,\n IssuesMain,\n EnvsMain,\n ApplicationMain\n ],\n _,\n [preLinkSlot, preInstallSlot]: [PreLinkSlot, PreInstallSlot]\n ) {\n const logger = loggerExt.createLogger('teambit.bit/install');\n const installExt = new InstallMain(\n dependencyResolver,\n logger,\n workspace,\n variants,\n compiler,\n envs,\n app,\n preLinkSlot,\n preInstallSlot\n );\n if (issues) {\n issues.registerAddComponentsIssues(installExt.addDuplicateComponentAndPackageIssue.bind(installExt));\n }\n const commands: CommandList = [\n new InstallCmd(installExt, workspace, logger),\n new UninstallCmd(installExt),\n new UpdateCmd(installExt),\n new LinkCommand(installExt, workspace, logger),\n ];\n // For now do not automate installation during aspect resolving\n // workspace.registerOnAspectsResolve(installExt.onAspectsResolveSubscriber.bind(installExt));\n if (workspace) {\n workspace.registerOnRootAspectAdded(installExt.onRootAspectAddedSubscriber.bind(installExt));\n }\n cli.register(...commands);\n return installExt;\n }\n}\n\ntype ComponentsAndManifests = {\n componentDirectoryMap: ComponentMap<string>;\n manifests: Record<string, ProjectManifest>;\n};\n\nfunction hasComponentsFromWorkspaceInMissingDeps({\n componentDirectoryMap,\n manifests,\n}: ComponentsAndManifests): boolean {\n const missingDeps = new Set<string>(\n componentDirectoryMap\n .toArray()\n .map(([{ state }]) => {\n const issue = state.issues.getIssue(IssuesClasses.MissingPackagesDependenciesOnFs);\n if (!issue) return [];\n return Object.values(issue.data).flat();\n })\n .flat()\n );\n return Object.values(manifests).some(({ name }) => name && missingDeps.has(name));\n}\n\nInstallAspect.addRuntime(InstallMain);\n\nexport default InstallMain;\n\nfunction manifestsHash(manifests: Record<string, ProjectManifest>): string {\n // We don't care if the type of the dependency changes as it doesn't change the node_modules structure\n const depsByProjectPaths = mapValues(manifests, (manifest) => ({\n ...manifest.devDependencies,\n ...manifest.dependencies,\n }));\n return hash(depsByProjectPaths);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAiBA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAAqC;AAAA;AAAA;AAAA;AA0C9B,MAAMA,WAAW,CAAC;EAGvBC,WAAW,CACDC,kBAA0C,EAE1CC,MAAc,EAEdC,SAAoB,EAEpBC,QAAsB,EAEtBC,QAAsB,EAEtBC,IAAc,EAEdC,GAAoB,EAEpBC,WAAwB,EAExBC,cAA8B,EACtC;IAAA,KAjBQR,kBAA0C,GAA1CA,kBAA0C;IAAA,KAE1CC,MAAc,GAAdA,MAAc;IAAA,KAEdC,SAAoB,GAApBA,SAAoB;IAAA,KAEpBC,QAAsB,GAAtBA,QAAsB;IAAA,KAEtBC,QAAsB,GAAtBA,QAAsB;IAAA,KAEtBC,IAAc,GAAdA,IAAc;IAAA,KAEdC,GAAoB,GAApBA,GAAoB;IAAA,KAEpBC,WAAwB,GAAxBA,WAAwB;IAAA,KAExBC,cAA8B,GAA9BA,cAA8B;IAAA,wDAnBF,IAAIC,GAAG,EAAE;EAoB5C;EACH;AACF;AACA;AACA;AACA;AACA;EACE,MAAMC,OAAO,CAACC,QAAmB,EAAEC,OAAiC,EAAiC;IACnG;IACA,IAAI,CAACV,SAAS,CAACW,gBAAgB,GAAG,IAAI;IACtC,IAAIF,QAAQ,IAAIA,QAAQ,CAACG,MAAM,EAAE;MAC/B,MAAM,IAAI,CAACC,YAAY,CAACJ,QAAQ,EAAEC,OAAO,CAAC;IAC5C;IACA,IAAIA,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEI,eAAe,EAAE;MAAA;MAC5B,MAAMC,UAAU,GAAG,MAAM,IAAI,CAACC,sBAAsB,CAAC,EAAE,CAAC;MACxD,MAAMC,gBAAgB,GAAG,IAAI,CAACnB,kBAAkB,CAACoB,kBAAkB,EAAE;MACrE,MAAMC,YAAY,GAAG,MAAM,IAAI,CAACC,sCAAsC,EAAE;MACxE,MAAMC,gBAA8C,GAAG;QACrDC,MAAM,EAAEZ,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEY,MAAM;QACvBC,uBAAuB,2BAAEb,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEa,uBAAuB,yEAAI,IAAI;QACjEC,6BAA6B,4BAAEd,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEc,6BAA6B,2EAAI,KAAK;QAC9EC,kBAAkB,EAAEN,YAAY;QAChCO,SAAS,EAAE,IAAI,CAAC5B,kBAAkB,CAAC6B,MAAM,CAACD,SAAS;QACnDE,mBAAmB,EAAE,IAAI,CAAC9B,kBAAkB,CAAC6B,MAAM,CAACC;MACtD,CAAC;MACD,MAAMC,YAAY,GAAG,MAAM,IAAI,CAAC/B,kBAAkB,CAACgC,0BAA0B,CAC3E,IAAI,CAAC9B,SAAS,CAAC+B,IAAI,EACnBd,gBAAgB,EAChBF,UAAU,EACVM,gBAAgB,CACjB;MACD,IAAIQ,YAAY,EAAE;QAChB,MAAMG,mBAAmB,GAAGC,MAAM,CAACC,OAAO,CAACL,YAAY,CAAC,CAACM,GAAG,CAAC,CAAC,CAACC,QAAQ,EAAEC,KAAK,CAAC,KAAM,GAAED,QAAS,IAAGC,KAAM,EAAC,CAAC;QAC3G,MAAM,IAAI,CAACxB,YAAY,CAACmB,mBAAmB,EAAEtB,OAAO,CAAC;MACvD,CAAC,MAAM;QACL,IAAI,CAACX,MAAM,CAACuC,OAAO,CAAC,qCAAqC,CAAC;MAC5D;IACF;IACA,MAAM,IAAAC,qBAAU,EAAC,IAAI,CAACjC,cAAc,CAACkC,MAAM,EAAE,EAAGC,EAAE,IAAKA,EAAE,CAAC/B,OAAO,CAAC,CAAC,CAAC,CAAC;IACrE,MAAMgC,GAAG,GAAG,MAAM,IAAI,CAACC,eAAe,CAACjC,OAAO,CAAC;IAC/C,IAAI,CAACV,SAAS,CAACW,gBAAgB,GAAG,KAAK;IACvC,OAAO+B,GAAG;EACZ;EAEAE,eAAe,CAACH,EAAW,EAAE;IAC3B,IAAI,CAACpC,WAAW,CAACwC,QAAQ,CAACJ,EAAE,CAAC;EAC/B;EAEAK,kBAAkB,CAACL,EAAc,EAAE;IACjC,IAAI,CAACnC,cAAc,CAACuC,QAAQ,CAACJ,EAAE,CAAC;EAClC;EAEA,MAAc5B,YAAY,CAACJ,QAAkB,EAAEC,OAAiC,EAAE;IAChF,IAAI,EAACA,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAET,QAAQ,KAAI,CAACS,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEqC,aAAa,MAAgB,KAAK,EAAE;MACtE,MAAM,KAAIC,gDAAkC,EAACtC,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEqC,aAAa,CAAW;IAChF;IACA,IAAI,CAAChD,MAAM,CAACkD,KAAK,CAAE,sCAAqCxC,QAAQ,CAACyC,IAAI,EAAG,EAAC,CAAC;IAC1E,MAAMC,QAAQ,GAAG,MAAM,IAAI,CAACrD,kBAAkB,CAACsD,kBAAkB,EAAE;IACnE,MAAMC,iBAAiB,GAAG5C,QAAQ,CAAC0B,GAAG,CAAEmB,WAAW,IACjDH,QAAQ,CAACI,oBAAoB,CAACD,WAAW,EAAE;MACzCE,OAAO,EAAE,IAAI,CAACxD,SAAS,CAAC+B;IAC1B,CAAC,CAAC,CACH;IACD,MAAM0B,gBAAgB,GAAG,MAAMC,OAAO,CAACC,GAAG,CAACN,iBAAiB,CAAC;IAC7D,MAAMO,yBAAiD,GAAG,EAAE;IAC5DH,gBAAgB,CAACI,OAAO,CAAEC,eAAe,IAAK;MAC5C,IAAIA,eAAe,CAACC,OAAO,EAAE;QAC3B,MAAMC,iBAAiB,GAAG,IAAI,CAAClE,kBAAkB,CAACmE,wBAAwB,CAAC;UACzEF,OAAO,EAAED,eAAe,CAACC,OAAO;UAChCG,cAAc,EAAExD,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEyD,UAAU;UACnCC,WAAW,EAAEN,eAAe,CAACM;QAC/B,CAAC,CAAC;QACFR,yBAAyB,CAACS,IAAI,CAAC;UAC7BC,YAAY,EAAER,eAAe,CAACR,WAAW;UACzCiB,KAAK,EAAE;YACLR,OAAO,EAAEC;UACX,CAAC;UACDjB,aAAa,EAAE,CAAArC,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEqC,aAAa,KAAI;QAC3C,CAAC,CAAC;MACJ;IACF,CAAC,CAAC;IACF,IAAI,EAACrC,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAET,QAAQ,GAAE;MAAA;MACtB,IAAI,CAACH,kBAAkB,CAAC0E,eAAe,CAACZ,yBAAyB,EAAE;QACjEa,cAAc,2BAAE/D,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAE+D,cAAc,yEAAI;MAC7C,CAAC,CAAC;IACJ,CAAC,MAAM;MACL;IAAA;IAEF,MAAM,IAAI,CAAC3E,kBAAkB,CAAC4E,aAAa,CAAC,IAAI,CAAC1E,SAAS,CAAC+B,IAAI,CAAC;EAClE;EAEA,MAAcY,eAAe,CAACjC,OAA+B,EAAiC;IAAA;IAC5F,MAAMiE,EAAE,GAAG,IAAI,CAAC7E,kBAAkB,CAAC8E,iBAAiB,EAAE;IACtD,IAAI,CAAC7E,MAAM,CAACuC,OAAO,CAChB,8CAA6CqC,EAAE,aAAFA,EAAE,uBAAFA,EAAE,CAAEE,IAAK,KAAIC,gBAAK,CAACC,IAAI,CACnE,IAAI,CAACjF,kBAAkB,CAACkF,qBAAqB,EAAE,CAC/C,GAAE,CACL;IACD,IAAI,CAACjF,MAAM,CAACkD,KAAK,CAAE,mDAAkD,EAAEvC,OAAO,CAAC;IAC/E,MAAMS,YAAY,GAAG,MAAM,IAAI,CAACC,sCAAsC,EAAE;IACxE,MAAM6D,iBAAiB,GAAG,IAAI,CAACnF,kBAAkB,CAACmF,iBAAiB,EAAE;IACrE;IACA,MAAMC,SAAS,GAAG,IAAI,CAACpF,kBAAkB,CAACqF,YAAY,CAAC,CAAC,CAAC,CAAC;IAC1D,MAAMC,iBAAmD,GAAG;MAC1D5D,6BAA6B,4BAAEd,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEc,6BAA6B,2EAAI,KAAK;MAC9ED,uBAAuB,4BAAEb,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEa,uBAAuB,2EAAI,IAAI;MACjED,MAAM,EAAE,CAAC2D,iBAAiB,KAAIvE,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEY,MAAM;MAC7CG,kBAAkB,EAAEN,YAAY;MAChCkE,UAAU,EAAE,IAAI,CAACvF,kBAAkB,CAACuF,UAAU;IAChD,CAAC;IACD;IACA,IAAI;MAAEpE,gBAAgB;MAAEqE,sBAAsB,EAAEC;IAAQ,CAAC,GAAG,MAAM,IAAI,CAACC,oCAAoC,CACzGN,SAAS,kCAEJE,iBAAiB;MACpBK,cAAc,EAAE/E,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAE+E;IAAc,GAE1C;IACD,MAAMpE,gBAA8C,mCAC/C+D,iBAAiB;MACpBM,mBAAmB,EAAEhF,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEgF,mBAAmB;MACjDC,sBAAsB,EAAE,IAAI,CAAC7F,kBAAkB,CAAC6B,MAAM,CAACgE,sBAAsB;MAC7EjE,SAAS,EAAE,IAAI,CAAC5B,kBAAkB,CAAC6B,MAAM,CAACD,SAAS;MACnDE,mBAAmB,EAAE,IAAI,CAAC9B,kBAAkB,CAAC6B,MAAM,CAACC,mBAAmB;MACvEgE,cAAc,EAAEX,iBAAiB;MACjCY,SAAS,EAAEnF,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEmF;IAAS,EAC9B;IACD,MAAMC,aAAa,GAAG,IAAIvF,GAAG,EAAU;IACvC;IACA;IACA;IACA,MAAMwF,QAAQ,GAAG;MACfC,cAAc,EAAE,IAAI;MACpBC,eAAe,EAAE,IAAI,CAACnG,kBAAkB,CAACmG,eAAe,EAAE;MAC1DC,uBAAuB,EAAE,CAACjB,iBAAiB;MAC3CkB,kBAAkB,EAAE,CAAC,IAAI,CAACnG,SAAS,CAACoG,QAAQ,IAAI,CAACnB;IACnD,CAAC;IACD,MAAM;MAAEoB;IAAe,CAAC,GAAG,MAAM,IAAI,CAACC,cAAc,CAACP,QAAQ,CAAC;IAC9D,MAAMQ,kBAAkB,GAAG;MACzB,CAAC,IAAI,CAACvG,SAAS,CAAC+B,IAAI,GAAGsE;IACzB,CAAC;IACD,MAAMtF,UAAU,GAAG,MAAM,IAAI,CAACC,sBAAsB,CAAC,EAAE,CAAC;IACxD,IAAIwF,YAAY,GAAG,CAAC;IACpB,IAAIC,yBAAyB,GAAG,IAAI;IACpC;IACA,GAAG;MACD;MACA;MACA;MACA;MACAA,yBAAyB,GAAGxB,iBAAiB,IAAIyB,uCAAuC,CAACnB,OAAO,CAAC;MACjG,MAAM;QAAEoB;MAAoB,CAAC,GAAG,MAAMzB,SAAS,CAAC0B,iBAAiB,CAC/D,IAAI,CAAC5G,SAAS,CAAC+B,IAAI,EACnBwD,OAAO,CAACsB,SAAS,EACjB5F,gBAAgB,EAChBsE,OAAO,CAACuB,qBAAqB,EAC7B;QACEP,kBAAkB;QAClBQ,iBAAiB,EAAE;MACrB,CAAC,EACD1F,gBAAgB,CACjB;MACD,IAAIX,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEsG,OAAO,EAAE;QACpB,MAAMC,gBAAgB,GAAGC,OAAO,CAACC,MAAM,EAAE;QACzC,MAAMC,oBAAoB,GAAI,sBAAqB;QACnD,IAAI,CAACrH,MAAM,CAACsH,aAAa,CAACD,oBAAoB,CAAC;QAC/C,MAAM,IAAI,CAAClH,QAAQ,CAACoH,kBAAkB,CAAC,EAAE,EAAE;UAAEC,SAAS,EAAEC,gCAAoB,CAACC;QAAQ,CAAC,CAAC;QACvF,IAAI,CAAC1H,MAAM,CAAC2H,cAAc,CAACN,oBAAoB,EAAEH,gBAAgB,CAAC;MACpE;MACA,MAAM,IAAI,CAACU,YAAY,CAAC5G,UAAU,CAAC;MACnC,IAAI,CAAC4F,mBAAmB,EAAE;MAC1Bb,aAAa,CAAC8B,GAAG,CAACC,aAAa,CAACtC,OAAO,CAACsB,SAAS,CAAC,CAAC;MACnD;MACA,IAAI,CAAC7G,SAAS,CAAC8H,QAAQ,CAACC,eAAe,CAACC,oBAAoB,EAAE;MAC9D,IAAI,CAAChI,SAAS,CAACiI,UAAU,EAAE;MAC3B1C,OAAO,GAAG,MAAM,IAAI,CAAC2C,uBAAuB,CAAChD,SAAS,EAAEjE,gBAAgB,EAAEmE,iBAAiB,CAAC;MAC5FoB,YAAY,IAAI,CAAC;IACnB,CAAC,QAAQ,CAAC,CAACV,aAAa,CAACqC,GAAG,CAACN,aAAa,CAACtC,OAAO,CAACsB,SAAS,CAAC,CAAC,IAAIJ,yBAAyB,KAAKD,YAAY,GAAG,CAAC;IAChH;IACA;IACA,MAAMtB,SAAS,CAACkD,YAAY,CAAC,IAAI,CAACpI,SAAS,CAAC+B,IAAI,CAAC;IACjD,MAAM,IAAI,CAAC/B,SAAS,CAAC8H,QAAQ,CAACO,gBAAgB,CAACC,8BAA8B,EAAE;IAC/E;IACA,OAAO/C,OAAO,CAACuB,qBAAqB;EACtC;EAEA,MAActB,oCAAoC,CAChDN,SAA8B,EAC9BxE,OAEC,EAC+F;IAChG,MAAMO,gBAAgB,GAAG,MAAM,IAAI,CAACsH,qCAAqC,EAAE;IAC3E,MAAMjD,sBAAsB,GAAG,MAAM,IAAI,CAAC4C,uBAAuB,CAAChD,SAAS,EAAEjE,gBAAgB,EAAEP,OAAO,CAAC;IACvG,IAAI,EAACA,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAE+E,cAAc,GAAE;MAC5B,OAAO;QAAEH,sBAAsB;QAAErE;MAAiB,CAAC;IACrD;IACA,MAAMuH,YAAY,GAAG,MAAM,IAAI,CAACC,+BAA+B,CAC7DnD,sBAAsB,CAACuB,SAAS,CAAC,IAAI,CAAC7G,SAAS,CAAC+B,IAAI,CAAC,CACtD;IACD,IAAI,CAACyG,YAAY,EAAE;MACjB,OAAO;QAAElD,sBAAsB;QAAErE;MAAiB,CAAC;IACrD;IACA,MAAMyH,+BAA+B,GAAG,MAAM,IAAI,CAACH,qCAAqC,EAAE;IAC1F,OAAO;MACLtH,gBAAgB,EAAEyH,+BAA+B;MACjDpD,sBAAsB,EAAE,MAAM,IAAI,CAAC4C,uBAAuB,CAAChD,SAAS,EAAEwD,+BAA+B,EAAEhI,OAAO;IAChH,CAAC;EACH;EAEA,MAAc6H,qCAAqC,GAA6B;IAC9E,MAAMI,UAAU,GAAG,IAAI,CAAC7I,kBAAkB,CAACoB,kBAAkB,EAAE;IAC/D,MAAM0H,eAAe,GAAG,MAAM,IAAI,CAAC5I,SAAS,CAAC6I,gCAAgC,CAAC;MAAEC,aAAa,EAAE;IAAK,CAAC,CAAC;IACtGF,eAAe,CAAC/E,OAAO,CAAEkF,cAAc,IAAK;MAC1CJ,UAAU,CAACf,GAAG,CAAC;QACbtD,YAAY,EAAEyE,cAAc,CAACzF,WAAW;QACxCiB,KAAK,EAAE;UACLR,OAAO,EAAEgF,cAAc,CAAChF;QAC1B,CAAC;QACDhB,aAAa,EAAE;MACjB,CAAC,CAAC;IACJ,CAAC,CAAC;IACF,OAAO4F,UAAU;EACnB;EAEA,MAAcF,+BAA+B,CAC3CO,YAA6B,EAC7BtI,OAAiC,EACf;IAClB,MAAMD,QAAQ,GAAG,MAAM,IAAI,CAACwI,kCAAkC,CAACD,YAAY,CAAC;IAC5E,IAAIvI,QAAQ,IAAIA,QAAQ,CAACG,MAAM,EAAE;MAC/B,MAAM,IAAI,CAACC,YAAY,CAACJ,QAAQ,EAAEC,OAAO,CAAC;IAC5C;IACA,OAAOD,QAAQ,CAACG,MAAM,GAAG,CAAC;EAC5B;EAEA,MAAcqI,kCAAkC,CAACD,YAA6B,EAAE;IAC9E,MAAMvI,QAAQ,GAAG,MAAM,IAAI,CAACyI,sBAAsB,EAAE;IACpD,MAAMC,QAAQ,mCACTH,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEI,eAAe,GAC7BJ,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEK,YAAY,CAC9B;IACD,OAAO5I,QAAQ,CAAC6I,MAAM,CAAEC,GAAG,IAAK,CAACJ,QAAQ,CAACI,GAAG,CAAC,CAAC;EACjD;EAEA,MAAcL,sBAAsB,GAAsB;IACxD,MAAMM,KAAK,GAAG,MAAM,IAAI,CAACxJ,SAAS,CAACyJ,IAAI,EAAE;IACzC,OAAO,IAAAC,cAAI,EACTF,KAAK,CACFrH,GAAG,CAAEwH,IAAI,IACR1H,MAAM,CAACO,MAAM,CAACmH,IAAI,CAACC,KAAK,CAACC,MAAM,CAACC,WAAW,CAACC,gCAAa,CAACC,+BAA+B,CAAC,CAACC,IAAI,CAAC,CAACC,IAAI,EAAE,CACxG,CACAA,IAAI,EAAE,CACV;EACH;EAEA,MAAchC,uBAAuB,CACnCiC,mBAAwC,EACxCxB,UAA2B,EAC3ByB,cAAgD,EACf;IACjC,MAAMtD,qBAAqB,GAAG,MAAM,IAAI,CAAC9F,sBAAsB,CAAC,EAAE,CAAC;IACnE,IAAI6F,SAAS,GAAG,MAAMsD,mBAAmB,CAACE,qBAAqB,iCAC1DD,cAAc;MACjBtD,qBAAqB;MACrB6B,UAAU;MACVnF,OAAO,EAAE,IAAI,CAACxD,SAAS,CAAC+B,IAAI;MAC5BuI,sBAAsB,EAAE,IAAI,CAACxK,kBAAkB,CAACmF,iBAAiB,EAAE,IAAImF,cAAc,CAAC/E,UAAU,KAAK;IAAU,GAC/G;IACF,IAAI,IAAI,CAACvF,kBAAkB,CAACmF,iBAAiB,EAAE,EAAE;MAC/C,MAAMsF,aAAa,GAAG,MAAM,IAAI,CAACC,iBAAiB,CAAC3D,SAAS,CAAC;MAC7D,MAAM,IAAI,CAAC4D,eAAe,CAACxI,MAAM,CAACyI,IAAI,CAACH,aAAa,CAAC,CAAC;MACtD1D,SAAS,mCACJA,SAAS,GACT0D,aAAa,CACjB;IACH;IACA,OAAO;MACLzD,qBAAqB;MACrBD;IACF,CAAC;EACH;EAEA,MAAc4D,eAAe,CAACE,QAAkB,EAAE;IAChD,IAAI;MACF,MAAMC,eAAe,GAAG,IAAAC,0BAAc,EAAC,IAAI,CAAC7K,SAAS,CAAC+B,IAAI,CAAC;MAC3D,MAAM+I,YAAY,GAAG,MAAMC,kBAAE,CAACC,OAAO,CAACJ,eAAe,CAAC;MACtD,MAAMlH,OAAO,CAACC,GAAG,CACfmH,YAAY,CAAC3I,GAAG,CAAC,MAAO8I,OAAO,IAAK;QAClC,MAAMC,OAAO,GAAGnJ,eAAI,CAACmB,IAAI,CAAC0H,eAAe,EAAEK,OAAO,CAAC;QACnD,IAAI,CAACN,QAAQ,CAACQ,QAAQ,CAACD,OAAO,CAAC,EAAE;UAC/B,MAAMH,kBAAE,CAACK,MAAM,CAACF,OAAO,CAAC;QAC1B;MACF,CAAC,CAAC,CACH;IACH,CAAC,CAAC,OAAOG,GAAQ,EAAE;MACjB,IAAIA,GAAG,CAACC,IAAI,KAAK,QAAQ,EAAE,MAAMD,GAAG;IACtC;IACA,MAAM3H,OAAO,CAACC,GAAG,CAACgH,QAAQ,CAACxI,GAAG,CAAE+I,OAAO,IAAKH,kBAAE,CAACQ,KAAK,CAACL,OAAO,EAAE;MAAEM,SAAS,EAAE;IAAK,CAAC,CAAC,CAAC,CAAC;EACtF;EAEA,MAAchB,iBAAiB,CAC7B3D,SAA0C,EACA;IAC1C,MAAM4E,gBAAgB,GAAGxJ,MAAM,CAACO,MAAM,CAACqE,SAAS,CAAC,CAACyC,MAAM,CAAC,CAAC;MAAEzE;IAAK,CAAC,KAAKA,IAAI,KAAK,WAAW,CAAC;IAC5F,MAAM6G,aAAa,GAAG,IAAI,CAAC5L,kBAAkB,CAAC6L,0BAA0B,CAACF,gBAAgB,CAAC;IAC1F,MAAMG,iBAAiB,GAAG3J,MAAM,CAACyI,IAAI,CAACgB,aAAa,CAAC,CAACG,MAAM,CAAC,CAACC,GAAG,EAAEC,OAAO,KAAK;MAC5ED,GAAG,CAACC,OAAO,CAAC,GAAG;QAAEC,QAAQ,EAAE;MAAK,CAAC;MACjC,OAAOF,GAAG;IACZ,CAAC,EAAE,CAAC,CAAC,CAAC;IACN,MAAMG,YAAY,GAAG,MAAM,IAAI,CAACC,gBAAgB,CAACR,aAAa,EAAEE,iBAAiB,CAAC;IAClF,MAAMO,YAAY,GAAG,MAAM,IAAI,CAACC,gBAAgB,CAACvF,SAAS,EAAE6E,aAAa,EAAEE,iBAAiB,CAAC;IAC7F,uCACKK,YAAY,GACZE,YAAY;EAEnB;EAEA,MAAcD,gBAAgB,CAC5BR,aAAqC,EACrCE,iBAAqD,EACX;IAC1C,MAAMzL,IAAI,GAAG,MAAM,IAAI,CAACkM,iBAAiB,EAAE;IAC3C,OAAOpK,MAAM,CAACqK,WAAW,CACvB,MAAM5I,OAAO,CAACC,GAAG,CACfxD,IAAI,CAACgC,GAAG,CAAC,MAAOoK,KAAK,IAAK;MACxB,OAAO,CACL,IAAAC,+BAAmB,EAAC,IAAI,CAACxM,SAAS,CAAC+B,IAAI,EAAEwK,KAAK,CAAC,EAC/C;QACElD,YAAY,kCACN,MAAM,IAAI,CAACoD,mBAAmB,CAACF,KAAK,CAAC,GACtCb,aAAa,CACjB;QACDgB,gBAAgB,EAAEd,iBAAiB;QACnCe,aAAa,EAAE;UACbC,cAAc,EAAE;QAClB;MACF,CAAC,CACF;IACH,CAAC,CAAC,CACH,CACF;EACH;EAEA,MAAcH,mBAAmB,CAACF,KAAa,EAAmC;IAChF,MAAMM,GAAG,GAAG,IAAI,CAAC1M,IAAI,CAAC2M,0BAA0B,CAACP,KAAK,CAAC;IACvD,IAAI,CAACM,GAAG,EAAE,MAAM,KAAIE,oBAAQ,EAAE,oCAAmCR,KAAM,EAAC,CAAC;IACzE,MAAMS,MAAM,GAAG,MAAM,IAAI,CAAClN,kBAAkB,CAACmN,sCAAsC,CAACJ,GAAG,CAAC;IACxF,OAAO5K,MAAM,CAACqK,WAAW,CACvBU,MAAM,CAACE,UAAU,CAAChL,OAAO,CACtBoH,MAAM,CAAC,CAAC;MAAE6D,KAAK;MAAE5I;IAAM,CAAC,KAAK4I,KAAK,IAAI5I,KAAK,CAACR,OAAO,KAAK,GAAG,CAAC,CAC5D5B,GAAG,CAAC,CAAC;MAAEmC,YAAY;MAAEC;IAAM,CAAC,KAAK,CAACD,YAAY,EAAEC,KAAK,CAACR,OAAO,CAAC,CAAC,CACnE;EACH;EAEA,MAAcqI,gBAAgB,CAC5BvF,SAA0C,EAC1C6E,aAAqC,EACrCE,iBAAqD,EACX;IAC1C,OAAO3J,MAAM,CAACqK,WAAW,CACvB,IAAAc,iBAAO,EACL,MAAM1J,OAAO,CAACC,GAAG,CACf,CACE,MAAM,IAAI,CAACvD,GAAG,CAACiN,sBAAsB,EAAE,EACvClL,GAAG,CAAC,MAAO/B,GAAG,IAAK;MACnB,MAAMkN,UAAU,GAAG,IAAI,CAACxN,kBAAkB,CAACyN,cAAc,CAACnN,GAAG,CAAC;MAC9D,MAAMoN,WAAW,GAAGvL,MAAM,CAACO,MAAM,CAACqE,SAAS,CAAC,CAAC4G,IAAI,CAAC,CAAC;QAAE5I;MAAK,CAAC,KAAKA,IAAI,KAAKyI,UAAU,CAAC;MACpF,IAAI,CAACE,WAAW,EAAE,OAAO,IAAI;MAC7B,MAAMjB,KAAK,GAAG,IAAI,CAACpM,IAAI,CAACuN,QAAQ,CAACtN,GAAG,CAAC;MACrC,OAAO,CACL,IAAAoM,+BAAmB,EAAC,IAAI,CAACxM,SAAS,CAAC+B,IAAI,EAAE3B,GAAG,CAACuN,EAAE,CAACC,QAAQ,EAAE,CAAC,kCAEtD,IAAAC,cAAI,EAACL,WAAW,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACzCnE,YAAY,gDACN,MAAM,IAAI,CAACoD,mBAAmB,CAACF,KAAK,CAAC,GACtCiB,WAAW,CAACnE,YAAY,GACxBqC,aAAa,CACjB;QACDgB,gBAAgB,kCACXc,WAAW,CAACd,gBAAgB,GAC5Bd,iBAAiB,CACrB;QACDe,aAAa,EAAE;UACbC,cAAc,EAAE;QAClB;MAAC,GAEJ;IACH,CAAC,CAAC,CACH,CACF,CACF;EACH;EAEA,MAAcP,iBAAiB,GAAsB;IACnD,MAAMlM,IAAI,GAAG,IAAII,GAAG,EAAU;IAC9B,CAAC,MAAM,IAAI,CAACP,SAAS,CAACyJ,IAAI,EAAE,EAAE5F,OAAO,CAAEiK,SAAS,IAAK;MACnD3N,IAAI,CAACyH,GAAG,CAAC,IAAI,CAACzH,IAAI,CAACuN,QAAQ,CAACI,SAAS,CAAC,CAAC;IACzC,CAAC,CAAC;IACF,OAAOC,KAAK,CAACC,IAAI,CAAC7N,IAAI,CAACqC,MAAM,EAAE,CAAC;EAClC;;EAEA;AACF;AACA;AACA;AACA;EACE,MAAMyL,kBAAkB,CAACvN,OAAyB,EAAE;IAClD,MAAM;MAAEwN,oBAAoB;MAAEC;IAAsB,CAAC,GAAG,MAAM,IAAI,CAACC,oCAAoC,EAAE;IACzG,MAAMC,eAAe,GAAG,IAAI,CAACpO,QAAQ,CAACqO,GAAG,EAAE;IAC3C,MAAMC,yBAAyB,GAAG,IAAI,CAACC,gCAAgC,CAACH,eAAe,CAAC;IACxF,MAAMI,UAAU,GAAG,MAAM,IAAI,CAACzO,SAAS,CAACyJ,IAAI,EAAE;IAC9C,MAAMiF,YAAY,GAAG,MAAM,IAAI,CAAC5O,kBAAkB,CAAC6O,2BAA2B,CAAC;MAC7EnL,OAAO,EAAE,IAAI,CAACxD,SAAS,CAAC+B,IAAI;MAC5BwM,yBAAyB;MACzBJ,qBAAqB;MACrBM;IACF,CAAC,CAAC;IACF,IAAIG,oBAAoC;IACxC,IAAIlO,OAAO,CAACiD,GAAG,EAAE;MACfiL,oBAAoB,GAAGF,YAAY;IACrC,CAAC,MAAM;MACL,IAAI,CAAC3O,MAAM,CAAC8O,GAAG,EAAE;MACjBD,oBAAoB,GAAG,MAAM,IAAAE,oCAAgB,EAACJ,YAAY,CAAC;MAC3D,IAAI,CAAC3O,MAAM,CAACgP,EAAE,EAAE;IAClB;IACA,MAAM;MAAEC,eAAe;MAAEC;IAAkB,CAAC,GAAG,IAAI,CAACnP,kBAAkB,CAACoP,YAAY,CAACN,oBAAoB,EAAE;MACxGL,yBAAyB;MACzBJ;IACF,CAAC,CAAC;IACF,MAAM,IAAI,CAACgB,uBAAuB,CAACd,eAAe,EAAEW,eAAe,CAAC;IACpE,MAAMI,2BAA2B,GAAGnN,MAAM,CAACO,MAAM,CAAC,IAAA6M,cAAI,EAACnB,oBAAoB,EAAEe,iBAAiB,CAAC,CAAC;IAChG,MAAM,IAAI,CAACK,6BAA6B,CAACF,2BAA2B,CAAC;IACrE,MAAM,IAAI,CAACpP,SAAS,CAACuP,eAAe,EAAE;IACtC,OAAO,IAAI,CAAC5M,eAAe,CAAC;MAAErB,MAAM,EAAE;IAAK,CAAC,CAAC;EAC/C;EAEA,MAAMkO,oCAAoC,CAACf,UAAuB,EAAE;IAClE,MAAMgB,eAAe,GAAG,IAAI,CAAC3P,kBAAkB,CAACoB,kBAAkB,EAAE;IACpEuN,UAAU,CAAC5K,OAAO,CAAEiK,SAAS,IAAK;MAChC,IAAIA,SAAS,CAAClE,KAAK,CAAC8F,SAAS,CAACC,OAAO,EAAE;MACvC,MAAMC,OAAO,GAAG,IAAAC,mCAAwB,EAAC/B,SAAS,CAAClE,KAAK,CAAC8F,SAAS,CAAC;MACnE,MAAMI,KAAK,GAAGL,eAAe,CAAChC,IAAI,CAACmC,OAAO,CAAC;MAC3C,IAAIE,KAAK,EAAE;QACThC,SAAS,CAAClE,KAAK,CAACC,MAAM,CAACC,WAAW,CAACC,gCAAa,CAACgG,4BAA4B,CAAC,CAAC9F,IAAI,GAAG6F,KAAK,CAACxL,YAAY;MAC1G;IACF,CAAC,CAAC;EACJ;EAEA,MAAc8J,oCAAoC,GAAG;IACnD,MAAM4B,eAAe,GAAG,MAAM,IAAI,CAAChQ,SAAS,CAACiQ,OAAO,EAAE;IACtD,MAAM/B,oBAAyD,GAAG,CAAC,CAAC;IACpE,MAAMC,qBAA0C,GAAG,CAAC,CAAC;IACrD,CACE,MAAMzK,OAAO,CAACC,GAAG,CACfqM,eAAe,CAAC7N,GAAG,CAAE+N,WAAW,IAAK,IAAI,CAAClQ,SAAS,CAACmQ,mBAAmB,CAACD,WAAW,CAAC,CAAC,CACtF,EACDrM,OAAO,CAAC,CAACsM,mBAAmB,EAAEC,KAAK,KAAK;MACxC,IAAI,CAACD,mBAAmB,EAAE;MAC1B,MAAME,iBAAiB,GAAGF,mBAAmB,CAACG,OAAO,CAACC,GAAG,CAACC,8CAAwB,CAAC7C,EAAE,CAAC;MACtF,IAAI,CAAC0C,iBAAiB,EAAE;MACxB,MAAMH,WAAW,GAAGF,eAAe,CAACI,KAAK,CAAC,CAACxC,QAAQ,EAAE;MACrDM,oBAAoB,CAACgC,WAAW,CAAC,GAAGC,mBAAmB;MACvDhC,qBAAqB,CAAC+B,WAAW,CAAC,GAAGG,iBAAiB,CAAC1O,MAAM,CAACqL,MAAM;IACtE,CAAC,CAAC;IACF,OAAO;MACLkB,oBAAoB;MACpBC;IACF,CAAC;EACH;EAEQK,gCAAgC,CAACH,eAAyB,EAA6C;IAC7G,MAAME,yBAAoE,GAAG,CAAC,CAAC;IAC/E,KAAK,MAAM,CAACkC,cAAc,EAAEC,UAAU,CAAC,IAAIzO,MAAM,CAACC,OAAO,CAACmM,eAAe,CAAC,EAAE;MAAA;MAC1E,6BAAIqC,UAAU,CAACF,8CAAwB,CAAC7C,EAAE,CAAC,kDAAvC,sBAAyCX,MAAM,EAAE;QAAA;QACnDuB,yBAAyB,CAACkC,cAAc,CAAC,6BAAGC,UAAU,CAACF,8CAAwB,CAAC7C,EAAE,CAAC,2DAAvC,uBAAyCX,MAAM;MAC7F;IACF;IACA,OAAOuB,yBAAyB;EAClC;EAEQY,uBAAuB,CAACd,eAAoC,EAAEsC,qBAA+B,EAAE;IACrG,KAAK,MAAMF,cAAc,IAAIE,qBAAqB,EAAE;MAClD,IAAI,CAAC1Q,QAAQ,CAAC2Q,YAAY,CACxBH,cAAc,EACdD,8CAAwB,CAAC7C,EAAE,EAC3BU,eAAe,CAACoC,cAAc,CAAC,CAACD,8CAAwB,CAAC7C,EAAE,CAAC,EAC5D;QAAEkD,gBAAgB,EAAE;MAAK,CAAC,CAC3B;IACH;IACA,OAAO,IAAI,CAAC/Q,kBAAkB,CAAC4E,aAAa,CAAC,IAAI,CAAC1E,SAAS,CAAC+B,IAAI,CAAC;EACnE;EAEA,MAAcuN,6BAA6B,CAACpB,oBAA2C,EAAE;IACvF,MAAMxK,OAAO,CAACC,GAAG,CACfoK,KAAK,CAACC,IAAI,CAACE,oBAAoB,CAAC,CAAC/L,GAAG,CAAC,MAAOgO,mBAAmB,IAAK;MAClE,MAAMA,mBAAmB,CAACW,KAAK,CAAC;QAAEC,QAAQ,EAAE;MAAK,CAAC,CAAC;IACrD,CAAC,CAAC,CACH;EACH;;EAEA;AACF;AACA;AACA;AACA;EACE,MAAMC,qBAAqB,CAACvQ,QAAkB,EAAE;IAC9C,IAAI,CAACX,kBAAkB,CAACmR,oBAAoB,CAACxQ,QAAQ,CAAC;IACtD,MAAM,IAAI,CAACX,kBAAkB,CAAC4E,aAAa,CAAC,IAAI,CAAC1E,SAAS,CAAC+B,IAAI,CAAC;IAChE,OAAO,IAAI,CAACY,eAAe,CAAC;MAAErB,MAAM,EAAE;IAAK,CAAC,CAAC;EAC/C;;EAEA;AACF;AACA;AACA;EACE,MAAMgF,cAAc,CAClB5F,OAA6B,GAAG,CAAC,CAAC,EACgF;IAClH,MAAM,IAAA6B,qBAAU,EAAC,IAAI,CAAClC,WAAW,CAACmC,MAAM,EAAE,EAAGC,EAAE,IAAKA,EAAE,CAAC/B,OAAO,CAAC,CAAC,CAAC,CAAC;IAClE,MAAMK,UAAU,GAAG,MAAM,IAAI,CAACC,sBAAsB,CAAC,EAAE,CAAC;IACxD,MAAMkQ,MAAM,GAAG,IAAI,CAACpR,kBAAkB,CAACqR,SAAS,CAAC;MAC/C3N,OAAO,EAAE,IAAI,CAACxD,SAAS,CAAC+B,IAAI;MAC5BqP,cAAc,EAAE1Q;IAClB,CAAC,CAAC;IACF,MAAM;MAAE2Q,WAAW,EAAE3O,GAAG;MAAE2D;IAAe,CAAC,GAAG,MAAM6K,MAAM,CAACI,mBAAmB,CAC3E,IAAI,CAACtR,SAAS,CAAC+B,IAAI,EACnBhB,UAAU,EACVL,OAAO,CACR;IACD,MAAM6Q,YAAY,GAAG7O,GAA2B;IAEhD,MAAM8O,aAAa,GAAG,MAAM,IAAI,CAAC7J,YAAY,CAAC5G,UAAU,EAAEL,OAAO,CAAC;IAClE6Q,YAAY,CAACE,iBAAiB,GAAGD,aAAa,CAACE,YAAY;IAC3DH,YAAY,CAACI,wBAAwB,GAAGH,aAAa,CAACI,cAAc;IAEpE,IAAI,IAAI,CAAC9R,kBAAkB,CAACmF,iBAAiB,EAAE,IAAIvE,OAAO,CAACmR,cAAc,EAAE;MACzE,MAAM,IAAI,CAACC,4BAA4B,CAAC/Q,UAAU,CAAC;IACrD;IACA,OAAO;MAAEsQ,WAAW,EAAE3O,GAAG;MAAE2D,cAAc;MAAE6K;IAAO,CAAC;EACrD;EAEA,MAAMvJ,YAAY,CAAC5G,UAAgC,EAAEL,OAA8B,EAAE;IAAA;IACnF,MAAMqR,MAAM,GAAGhR,UAAU,CAACiR,OAAO,EAAE,CAAC7P,GAAG,CAAC,CAAC,CAAC2L,SAAS,CAAC,KAAKA,SAAS,CAACH,EAAE,CAACsE,OAAO,CAAC;IAC9E,OAAO,IAAAC,gDAA4B,EAAC,IAAI,CAAClS,SAAS,EAAE+R,MAAM,qBAAErR,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEyR,MAAM,6DAAI,KAAK,CAAC;EACvF;EAEA,MAAMC,IAAI,CAAC1R,OAA6B,GAAG,CAAC,CAAC,EAAiC;IAC5E,MAAM;MAAE2Q,WAAW;MAAEhL,cAAc;MAAE6K;IAAO,CAAC,GAAG,MAAM,IAAI,CAAC5K,cAAc,CAAC5F,OAAO,CAAC;IAClF,MAAMwQ,MAAM,CAACmB,WAAW,CAAC,IAAI,CAACrS,SAAS,CAAC+B,IAAI,EAAEsE,cAAc,CAAC;IAC7D,OAAOgL,WAAW;EACpB;EAEA,MAAcS,4BAA4B,CAAC/Q,UAAgC,EAAE;IAC3E,MAAMZ,IAAI,GAAG,MAAM,IAAI,CAACkM,iBAAiB,EAAE;IAC3C,MAAMiG,IAAI,GAAG,CAAC,MAAM,IAAI,CAAClS,GAAG,CAACiN,sBAAsB,EAAE,EAAElL,GAAG,CAAE2L,SAAS,IAAKA,SAAS,CAACH,EAAE,CAACC,QAAQ,EAAE,CAAC;IAClG,MAAMlK,OAAO,CAACC,GAAG,CACf,CAAC,GAAGxD,IAAI,EAAE,GAAGmS,IAAI,CAAC,CAACnQ,GAAG,CAAC,MAAOwL,EAAE,IAAK;MACnC,MAAM5C,kBAAE,CAACwH,MAAM,CAAC,IAAA/F,+BAAmB,EAAC,IAAI,CAACxM,SAAS,CAAC+B,IAAI,EAAE4L,EAAE,CAAC,CAAC;IAC/D,CAAC,CAAC,CACH;IACD,MAAM,IAAA6E,8BAAkB,EACtB,IAAI,CAACxS,SAAS,CAAC+B,IAAI,EACnBhB,UAAU,CAAC0N,UAAU,CAACtM,GAAG,CAAE2L,SAAS,IAAK,IAAI,CAAChO,kBAAkB,CAACyN,cAAc,CAACO,SAAS,CAAC,CAAC,CAC5F;EACH;;EAEA;AACF;AACA;AACA;AACA;AACA;EACE,MAAc1M,sCAAsC,GAAG;IACrD;IACA,MAAMqR,OAAO,GAAG,MAAM,IAAI,CAACzS,SAAS,CAAC0S,KAAK,CAACC,cAAc,EAAE;IAC3D,MAAMC,GAAG,GAAG,MAAM,IAAI,CAAC9S,kBAAkB,CAAC+S,aAAa,EAAE;IACzD,MAAMC,aAAa,GAAG7Q,MAAM,CAACyI,IAAI,CAACkI,GAAG,CAACG,MAAM,CAAC;IAC7C,OAAQC,cAA8B,IAAqB;MACzD,MAAMC,QAAQ,GAAGD,cAAc,CAAC1J,MAAM,CAAE4J,GAAG,IAAK;QAC9C,IAAI,EAAEA,GAAG,YAAYC,yCAAmB,CAAC,EAAE;UACzC,OAAO,IAAI;QACb;QACA,IAAIV,OAAO,CAACW,KAAK,CAACF,GAAG,CAAChD,WAAW,CAACwC,KAAK,CAAC,EAAE;UACxC,OAAO,IAAI;QACb;QACA,IAAII,aAAa,CAACO,IAAI,CAAEX,KAAK,IAAKQ,GAAG,CAAC5P,WAAW,CAACgQ,UAAU,CAAE,IAAGZ,KAAM,GAAE,CAAC,CAAC,EAAE;UAC3E,OAAO,IAAI;QACb;QACA,OAAO,KAAK;MACd,CAAC,CAAC;MACF,OAAOO,QAAQ;IACjB,CAAC;EACH;EAEA,MAAcjS,sBAAsB,CAACuS,GAAkB,EAAiC;IACtF,MAAM9E,UAAU,GAAG8E,GAAG,CAAC3S,MAAM,GAAG,MAAM,IAAI,CAACZ,SAAS,CAACwT,OAAO,CAACD,GAAG,CAAC,GAAG,MAAM,IAAI,CAACvT,SAAS,CAACyJ,IAAI,EAAE;IAC/F,OAAOgK,yBAAY,CAACC,EAAE,CAASjF,UAAU,EAAGX,SAAS,IAAK,IAAI,CAAC9N,SAAS,CAAC2T,YAAY,CAAC7F,SAAS,CAACH,EAAE,CAAC,CAAC;EACtG;EAEA,MAAciG,2BAA2B,CAACC,SAAsB,EAAEC,IAAa,EAAiB;IAC9F,IAAI,CAACA,IAAI,EAAE;MACT,MAAM,IAAI,CAACtT,OAAO,EAAE;IACtB;EACF;EACA,MAAcuT,0BAA0B,CAACC,gBAA6B,EAAiB;IACrF,IAAIC,QAAQ,GAAG,KAAK;IACpB,IAAIC,WAAW,GAAG,KAAK;IACvB,MAAMC,QAAQ,GAAGH,gBAAgB,CAAC7R,GAAG,CAAC,MAAOiS,eAAe,IAAK;MAC/D,MAAMC,WAAW,GAAGD,eAAe,CAACzG,EAAE,CAACC,QAAQ,EAAE;MACjD,IAAI,IAAI,CAAC0G,cAAc,CAACnM,GAAG,CAACkM,WAAW,CAAC,EAAE;MAE1C,IAAI,CAACC,cAAc,CAAC1M,GAAG,CAACyM,WAAW,CAAC;MACpC,MAAME,WAAW,GAAG,IAAI,CAACvU,SAAS,CAACwU,uBAAuB,CAACJ,eAAe,CAAC;MAC3E,MAAMK,MAAM,GAAG,MAAM,IAAAC,qBAAU,EAACH,WAAW,CAAC;MAC5C,IAAI,CAACE,MAAM,EAAE;QACX,MAAMX,IAAI,GAAG,MAAM,IAAI,CAAC9T,SAAS,CAAC2U,KAAK,CAACP,eAAe,CAACzG,EAAE,CAAC;QAC3D,IAAImG,IAAI,EAAE;UACRG,QAAQ,GAAG,IAAI;QACjB,CAAC,MAAM;UACLC,WAAW,GAAG,IAAI;QACpB;MACF;IACF,CAAC,CAAC;IACF,MAAMxQ,OAAO,CAACC,GAAG,CAACwQ,QAAQ,CAAC;IAC3B,IAAID,WAAW,EAAE;MACf,MAAM,IAAI,CAAC1T,OAAO,EAAE;MACpB;IACF;IACA,IAAIyT,QAAQ,EAAE;MACZ,MAAM,IAAI,CAAC7B,IAAI,EAAE;IACnB;EACF;EAiBA,aAAawC,QAAQ,CACnB,CAAC9U,kBAAkB,EAAEE,SAAS,EAAE6U,SAAS,EAAE5U,QAAQ,EAAE6U,GAAG,EAAE5U,QAAQ,EAAE2J,MAAM,EAAE1J,IAAI,EAAEC,GAAG,CAUpF,EACD2U,CAAC,EACD,CAAC1U,WAAW,EAAEC,cAAc,CAAgC,EAC5D;IACA,MAAMP,MAAM,GAAG8U,SAAS,CAACG,YAAY,CAAC,qBAAqB,CAAC;IAC5D,MAAMC,UAAU,GAAG,IAAIrV,WAAW,CAChCE,kBAAkB,EAClBC,MAAM,EACNC,SAAS,EACTC,QAAQ,EACRC,QAAQ,EACRC,IAAI,EACJC,GAAG,EACHC,WAAW,EACXC,cAAc,CACf;IACD,IAAIuJ,MAAM,EAAE;MACVA,MAAM,CAACqL,2BAA2B,CAACD,UAAU,CAACzF,oCAAoC,CAAC2F,IAAI,CAACF,UAAU,CAAC,CAAC;IACtG;IACA,MAAMG,QAAqB,GAAG,CAC5B,KAAIC,mBAAU,EAACJ,UAAU,EAAEjV,SAAS,EAAED,MAAM,CAAC,EAC7C,KAAIuV,oBAAY,EAACL,UAAU,CAAC,EAC5B,KAAIM,iBAAS,EAACN,UAAU,CAAC,EACzB,KAAIO,mBAAW,EAACP,UAAU,EAAEjV,SAAS,EAAED,MAAM,CAAC,CAC/C;IACD;IACA;IACA,IAAIC,SAAS,EAAE;MACbA,SAAS,CAACyV,yBAAyB,CAACR,UAAU,CAACrB,2BAA2B,CAACuB,IAAI,CAACF,UAAU,CAAC,CAAC;IAC9F;IACAH,GAAG,CAACjS,QAAQ,CAAC,GAAGuS,QAAQ,CAAC;IACzB,OAAOH,UAAU;EACnB;AACF;AAAC;AAAA,gCA1sBYrV,WAAW,WA+oBP,CAAC8V,eAAI,CAACC,QAAQ,EAAe,EAAED,eAAI,CAACC,QAAQ,EAAkB,CAAC;AAAA,gCA/oBnE/V,WAAW,kBAgpBA,CACpB4Q,8CAAwB,EACxBoF,4BAAe,EACfC,sBAAY,EACZC,0BAAc,EACdC,gBAAS,EACTC,0BAAc,EACdC,sBAAY,EACZC,kBAAU,EACVC,gCAAiB,CAClB;AAAA,gCA1pBUvW,WAAW,aA4pBLwW,kBAAW;AAqD9B,SAAS1P,uCAAuC,CAAC;EAC/CI,qBAAqB;EACrBD;AACsB,CAAC,EAAW;EAClC,MAAMwP,WAAW,GAAG,IAAI9V,GAAG,CACzBuG,qBAAqB,CAClBkL,OAAO,EAAE,CACT7P,GAAG,CAAC,CAAC,CAAC;IAAEyH;EAAM,CAAC,CAAC,KAAK;IACpB,MAAM0M,KAAK,GAAG1M,KAAK,CAACC,MAAM,CAAC0M,QAAQ,CAACxM,gCAAa,CAACC,+BAA+B,CAAC;IAClF,IAAI,CAACsM,KAAK,EAAE,OAAO,EAAE;IACrB,OAAOrU,MAAM,CAACO,MAAM,CAAC8T,KAAK,CAACrM,IAAI,CAAC,CAACC,IAAI,EAAE;EACzC,CAAC,CAAC,CACDA,IAAI,EAAE,CACV;EACD,OAAOjI,MAAM,CAACO,MAAM,CAACqE,SAAS,CAAC,CAACwM,IAAI,CAAC,CAAC;IAAExO;EAAK,CAAC,KAAKA,IAAI,IAAIwR,WAAW,CAAClO,GAAG,CAACtD,IAAI,CAAC,CAAC;AACnF;AAEA2R,wBAAa,CAACC,UAAU,CAAC7W,WAAW,CAAC;AAAC,eAEvBA,WAAW;AAAA;AAE1B,SAASiI,aAAa,CAAChB,SAA0C,EAAU;EACzE;EACA,MAAM6P,kBAAkB,GAAG,IAAAC,mBAAS,EAAC9P,SAAS,EAAG+P,QAAQ,oCACpDA,QAAQ,CAACxN,eAAe,GACxBwN,QAAQ,CAACvN,YAAY,CACxB,CAAC;EACH,OAAO,IAAAwN,qBAAI,EAACH,kBAAkB,CAAC;AACjC"}
package/install.cmd.tsx CHANGED
@@ -1,3 +1,4 @@
1
+ import { BitError } from '@teambit/bit-error';
1
2
  import { Command, CommandOptions } from '@teambit/cli';
2
3
  import { WorkspaceDependencyLifecycleType } from '@teambit/dependency-resolver';
3
4
  import { Logger } from '@teambit/logger';
@@ -14,6 +15,7 @@ type InstallCmdOptions = {
14
15
  update: boolean;
15
16
  updateExisting: boolean;
16
17
  savePrefix: string;
18
+ addMissingDeps: boolean;
17
19
  addMissingPeers: boolean;
18
20
  noOptional: boolean;
19
21
  };
@@ -40,6 +42,7 @@ export default class InstallCmd implements Command {
40
42
  ['', 'skip-dedupe [skipDedupe]', 'do not dedupe dependencies on installation'],
41
43
  ['', 'skip-import [skipImport]', 'do not import bit objects post installation'],
42
44
  ['', 'skip-compile [skipCompile]', 'do not compile components'],
45
+ ['', 'add-missing-deps [addMissingDeps]', 'install all missing dependencies'],
43
46
  ['', 'add-missing-peers [addMissingPeers]', 'install all missing peer dependencies'],
44
47
  ['', 'no-optional [noOptional]', 'do not install optional dependencies (works with pnpm only)'],
45
48
  ] as CommandOptions;
@@ -60,6 +63,9 @@ export default class InstallCmd implements Command {
60
63
  async report([packages = []]: [string[]], options: InstallCmdOptions) {
61
64
  const startTime = Date.now();
62
65
  if (!this.workspace) throw new OutsideWorkspaceError();
66
+ if (packages.length && options.addMissingDeps) {
67
+ throw new BitError('You can not use --add-missing-deps with a list of packages');
68
+ }
63
69
  if (options.updateExisting) {
64
70
  this.logger.consoleWarning(
65
71
  `--update-existing is deprecated, please omit it. "bit install" will update existing dependency by default`
@@ -73,6 +79,7 @@ export default class InstallCmd implements Command {
73
79
  import: !options.skipImport,
74
80
  updateExisting: true,
75
81
  savePrefix: options.savePrefix,
82
+ addMissingDeps: options.addMissingDeps,
76
83
  addMissingPeers: options.addMissingPeers,
77
84
  compile: !options.skipCompile,
78
85
  includeOptionalDeps: !options.noOptional,
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/install",
3
- "version": "0.0.163",
3
+ "version": "0.0.166",
4
4
  "homepage": "https://bit.cloud/teambit/workspace/install",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.workspace",
8
8
  "name": "install",
9
- "version": "0.0.163"
9
+ "version": "0.0.166"
10
10
  },
11
11
  "dependencies": {
12
12
  "chalk": "2.4.2",
@@ -24,9 +24,9 @@
24
24
  "@babel/runtime": "7.20.0",
25
25
  "@teambit/harmony": "0.4.6",
26
26
  "@teambit/bit-error": "0.0.402",
27
- "@teambit/bit-roots": "0.0.46",
27
+ "@teambit/bit-roots": "0.0.48",
28
28
  "@teambit/component-issues": "0.0.89",
29
- "@teambit/workspace.modules.node-modules-linker": "0.0.53",
29
+ "@teambit/workspace.modules.node-modules-linker": "0.0.55",
30
30
  "@teambit/toolbox.time.time-format": "0.0.490"
31
31
  },
32
32
  "devDependencies": {
@@ -42,7 +42,7 @@
42
42
  "@types/testing-library__jest-dom": "5.9.5"
43
43
  },
44
44
  "peerDependencies": {
45
- "@teambit/legacy": "1.0.489",
45
+ "@teambit/legacy": "1.0.491",
46
46
  "react": "^16.8.0 || ^17.0.0",
47
47
  "react-dom": "^16.8.0 || ^17.0.0"
48
48
  },