@teambit/install 0.0.112 → 0.0.113

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.
@@ -2,16 +2,19 @@ import { CommunityMain } from '@teambit/community';
2
2
  import { CompilerMain } from '@teambit/compiler';
3
3
  import { CLIMain } from '@teambit/cli';
4
4
  import { Workspace } from '@teambit/workspace';
5
+ import { ApplicationMain } from '@teambit/application';
5
6
  import { VariantsMain } from '@teambit/variants';
6
7
  import { Component, ComponentMap } from '@teambit/component';
7
8
  import { SlotRegistry } from '@teambit/harmony';
8
9
  import { NodeModulesLinksResult } from '@teambit/workspace.modules.node-modules-linker';
10
+ import { EnvsMain } from '@teambit/envs';
9
11
  import { WorkspaceDependencyLifecycleType, DependencyResolverMain, LinkingOptions, LinkResults, WorkspacePolicy } from '@teambit/dependency-resolver';
10
12
  import { Logger, LoggerMain } from '@teambit/logger';
11
13
  import { IssuesMain } from '@teambit/issues';
12
14
  import { CodemodResult } from '@teambit/legacy/dist/consumer/component-ops/codemod-components';
13
15
  export declare type WorkspaceLinkOptions = LinkingOptions & {
14
16
  rootPolicy?: WorkspacePolicy;
17
+ linkToBitRoots?: boolean;
15
18
  };
16
19
  export declare type WorkspaceLinkResults = {
17
20
  legacyLinkResults?: NodeModulesLinksResult[];
@@ -41,9 +44,11 @@ export declare class InstallMain {
41
44
  private workspace;
42
45
  private variants;
43
46
  private compiler;
47
+ private envs;
48
+ private app;
44
49
  private preLinkSlot;
45
50
  private preInstallSlot;
46
- constructor(dependencyResolver: DependencyResolverMain, logger: Logger, workspace: Workspace, variants: VariantsMain, compiler: CompilerMain, preLinkSlot: PreLinkSlot, preInstallSlot: PreInstallSlot);
51
+ constructor(dependencyResolver: DependencyResolverMain, logger: Logger, workspace: Workspace, variants: VariantsMain, compiler: CompilerMain, envs: EnvsMain, app: ApplicationMain, preLinkSlot: PreLinkSlot, preInstallSlot: PreInstallSlot);
47
52
  /**
48
53
  * Install dependencies for all components in the workspace
49
54
  *
@@ -56,6 +61,13 @@ export declare class InstallMain {
56
61
  private _addPackages;
57
62
  private _installModules;
58
63
  private _getComponentsManifests;
64
+ private _updateRootDirs;
65
+ private _getRootManifests;
66
+ private _getEnvManifests;
67
+ private _getEnvDependencies;
68
+ private _getAppManifests;
69
+ private _getAllUsedApps;
70
+ private _getAllUsedEnvIds;
59
71
  /**
60
72
  * Updates out-of-date dependencies in the workspace.
61
73
  *
@@ -77,6 +89,7 @@ export declare class InstallMain {
77
89
  uninstallDependencies(packages: string[]): Promise<ComponentMap<string>>;
78
90
  linkCoreAspectsAndLegacy(options?: WorkspaceLinkOptions): Promise<LinkResults>;
79
91
  link(options?: WorkspaceLinkOptions): Promise<WorkspaceLinkResults>;
92
+ private _linkAllComponentsToBitRoots;
80
93
  /**
81
94
  * Generate a filter to pass to the installer
82
95
  * This will filter deps which are come from remotes which defined in scope.json
@@ -88,7 +101,7 @@ export declare class InstallMain {
88
101
  static slots: (((registerFn: () => string) => SlotRegistry<PreLinkSlot>) | ((registerFn: () => string) => SlotRegistry<PreInstallSlot>))[];
89
102
  static dependencies: import("@teambit/harmony").Aspect[];
90
103
  static runtime: import("@teambit/harmony").RuntimeDefinition;
91
- static provider([dependencyResolver, workspace, loggerExt, variants, cli, community, compiler, issues]: [
104
+ static provider([dependencyResolver, workspace, loggerExt, variants, cli, community, compiler, issues, envs, app]: [
92
105
  DependencyResolverMain,
93
106
  Workspace,
94
107
  LoggerMain,
@@ -96,7 +109,9 @@ export declare class InstallMain {
96
109
  CLIMain,
97
110
  CommunityMain,
98
111
  CompilerMain,
99
- IssuesMain
112
+ IssuesMain,
113
+ EnvsMain,
114
+ ApplicationMain
100
115
  ], _: any, [preLinkSlot, preInstallSlot]: [PreLinkSlot, PreInstallSlot]): Promise<InstallMain>;
101
116
  }
102
117
  export default InstallMain;
@@ -4,6 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  require("core-js/modules/es.array.flat.js");
5
5
  require("core-js/modules/es.array.iterator.js");
6
6
  require("core-js/modules/es.array.unscopables.flat.js");
7
+ require("core-js/modules/es.object.from-entries.js");
7
8
  require("core-js/modules/es.promise.js");
8
9
  Object.defineProperty(exports, "__esModule", {
9
10
  value: true
@@ -16,6 +17,27 @@ function _defineProperty2() {
16
17
  };
17
18
  return data;
18
19
  }
20
+ function _fsExtra() {
21
+ const data = _interopRequireDefault(require("fs-extra"));
22
+ _fsExtra = function () {
23
+ return data;
24
+ };
25
+ return data;
26
+ }
27
+ function _path() {
28
+ const data = _interopRequireDefault(require("path"));
29
+ _path = function () {
30
+ return data;
31
+ };
32
+ return data;
33
+ }
34
+ function _bitRoots() {
35
+ const data = require("@teambit/bit-roots");
36
+ _bitRoots = function () {
37
+ return data;
38
+ };
39
+ return data;
40
+ }
19
41
  function _community() {
20
42
  const data = require("@teambit/community");
21
43
  _community = function () {
@@ -58,6 +80,13 @@ function _lodash() {
58
80
  };
59
81
  return data;
60
82
  }
83
+ function _bitError() {
84
+ const data = require("@teambit/bit-error");
85
+ _bitError = function () {
86
+ return data;
87
+ };
88
+ return data;
89
+ }
61
90
  function _componentIdToPackageName() {
62
91
  const data = _interopRequireDefault(require("@teambit/legacy/dist/utils/bit/component-id-to-package-name"));
63
92
  _componentIdToPackageName = function () {
@@ -65,6 +94,13 @@ function _componentIdToPackageName() {
65
94
  };
66
95
  return data;
67
96
  }
97
+ function _application() {
98
+ const data = require("@teambit/application");
99
+ _application = function () {
100
+ return data;
101
+ };
102
+ return data;
103
+ }
68
104
  function _variants() {
69
105
  const data = require("@teambit/variants");
70
106
  _variants = function () {
@@ -100,6 +136,13 @@ function _workspaceModules() {
100
136
  };
101
137
  return data;
102
138
  }
139
+ function _envs() {
140
+ const data = require("@teambit/envs");
141
+ _envs = function () {
142
+ return data;
143
+ };
144
+ return data;
145
+ }
103
146
  function _componentIssues() {
104
147
  const data = require("@teambit/component-issues");
105
148
  _componentIssues = function () {
@@ -187,12 +230,14 @@ function _update() {
187
230
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
188
231
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2().default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
189
232
  class InstallMain {
190
- constructor(dependencyResolver, logger, workspace, variants, compiler, preLinkSlot, preInstallSlot) {
233
+ constructor(dependencyResolver, logger, workspace, variants, compiler, envs, app, preLinkSlot, preInstallSlot) {
191
234
  this.dependencyResolver = dependencyResolver;
192
235
  this.logger = logger;
193
236
  this.workspace = workspace;
194
237
  this.variants = variants;
195
238
  this.compiler = compiler;
239
+ this.envs = envs;
240
+ this.app = app;
196
241
  this.preLinkSlot = preLinkSlot;
197
242
  this.preInstallSlot = preInstallSlot;
198
243
  }
@@ -284,7 +329,8 @@ class InstallMain {
284
329
  includeOptionalDeps: options === null || options === void 0 ? void 0 : options.includeOptionalDeps,
285
330
  overrides: this.dependencyResolver.config.overrides,
286
331
  packageImportMethod: this.dependencyResolver.config.packageImportMethod,
287
- rootComponents: hasRootComponents
332
+ rootComponents: hasRootComponents,
333
+ nodeLinker: this.dependencyResolver.nodeLinker()
288
334
  };
289
335
  // TODO: pass get install options
290
336
  const installer = this.dependencyResolver.getInstaller({});
@@ -341,16 +387,105 @@ class InstallMain {
341
387
  }
342
388
  async _getComponentsManifests(dependencyInstaller, rootPolicy, installOptions) {
343
389
  const componentDirectoryMap = await this.getComponentsDirectory([]);
344
- const manifests = await dependencyInstaller.getComponentManifests(_objectSpread(_objectSpread({}, installOptions), {}, {
390
+ let manifests = await dependencyInstaller.getComponentManifests(_objectSpread(_objectSpread({}, installOptions), {}, {
345
391
  componentDirectoryMap,
346
392
  rootPolicy,
347
- rootDir: this.workspace.path
393
+ rootDir: this.workspace.path,
394
+ referenceLocalPackages: this.dependencyResolver.hasRootComponents() && installOptions.nodeLinker === 'isolated'
348
395
  }));
396
+ if (this.dependencyResolver.hasRootComponents()) {
397
+ const rootManifests = await this._getRootManifests(manifests);
398
+ await this._updateRootDirs(Object.keys(rootManifests));
399
+ manifests = _objectSpread(_objectSpread({}, manifests), rootManifests);
400
+ }
349
401
  return {
350
402
  componentDirectoryMap,
351
403
  manifests
352
404
  };
353
405
  }
406
+ async _updateRootDirs(rootDirs) {
407
+ try {
408
+ const bitRootCompsDir = (0, _bitRoots().getBitRootsDir)(this.workspace.path);
409
+ const existingDirs = await _fsExtra().default.readdir(bitRootCompsDir);
410
+ await Promise.all(existingDirs.map(async dirName => {
411
+ const dirPath = _path().default.join(bitRootCompsDir, dirName);
412
+ if (!rootDirs.includes(dirPath)) {
413
+ await _fsExtra().default.remove(dirPath);
414
+ }
415
+ }));
416
+ } catch (err) {
417
+ if (err.code !== 'ENOENT') throw err;
418
+ }
419
+ await Promise.all(rootDirs.map(dirPath => _fsExtra().default.mkdir(dirPath, {
420
+ recursive: true
421
+ })));
422
+ }
423
+ async _getRootManifests(manifests) {
424
+ const nonRootManifests = Object.values(manifests).filter(({
425
+ name
426
+ }) => name !== 'workspace');
427
+ const workspaceDeps = this.dependencyResolver.getWorkspaceDepsOfBitRoots(nonRootManifests);
428
+ const workspaceDepsMeta = Object.keys(workspaceDeps).reduce((acc, depName) => {
429
+ acc[depName] = {
430
+ injected: true
431
+ };
432
+ return acc;
433
+ }, {});
434
+ const envManifests = await this._getEnvManifests(workspaceDeps, workspaceDepsMeta);
435
+ const appManifests = await this._getAppManifests(manifests, workspaceDeps, workspaceDepsMeta);
436
+ return _objectSpread(_objectSpread({}, envManifests), appManifests);
437
+ }
438
+ async _getEnvManifests(workspaceDeps, workspaceDepsMeta) {
439
+ const envs = await this._getAllUsedEnvIds();
440
+ return Object.fromEntries(await Promise.all(envs.map(async envId => {
441
+ return [(0, _bitRoots().getRootComponentDir)(this.workspace.path, envId), {
442
+ dependencies: _objectSpread(_objectSpread({}, await this._getEnvDependencies(envId)), workspaceDeps),
443
+ dependenciesMeta: workspaceDepsMeta,
444
+ installConfig: {
445
+ hoistingLimits: 'workspaces'
446
+ }
447
+ }];
448
+ })));
449
+ }
450
+ async _getEnvDependencies(envId) {
451
+ const env = this.envs.getEnvDefinitionByStringId(envId);
452
+ if (!env) throw new (_bitError().BitError)(`Cannot find environment with id: ${envId}`);
453
+ const policy = await this.dependencyResolver.getComponentEnvPolicyFromEnvDefinition(env);
454
+ return Object.fromEntries(policy.selfPolicy.entries.filter(({
455
+ force,
456
+ value
457
+ }) => force && value.version !== '-').map(({
458
+ dependencyId,
459
+ value
460
+ }) => [dependencyId, value.version]));
461
+ }
462
+ async _getAppManifests(manifests, workspaceDeps, workspaceDepsMeta) {
463
+ return Object.fromEntries((0, _lodash().compact)(await Promise.all((await this.app.listAppsFromComponents()).map(async app => {
464
+ const appPkgName = this.dependencyResolver.getPackageName(app);
465
+ const appManifest = Object.values(manifests).find(({
466
+ name
467
+ }) => name === appPkgName);
468
+ if (!appManifest) return null;
469
+ const envId = this.envs.getEnvId(app);
470
+ return [(0, _bitRoots().getRootComponentDir)(this.workspace.path, app.id.toString()), _objectSpread(_objectSpread({}, (0, _lodash().omit)(appManifest, ['name', 'version'])), {}, {
471
+ dependencies: _objectSpread(_objectSpread(_objectSpread({}, await this._getEnvDependencies(envId)), appManifest.dependencies), workspaceDeps),
472
+ dependenciesMeta: _objectSpread(_objectSpread({}, appManifest.dependenciesMeta), workspaceDepsMeta),
473
+ installConfig: {
474
+ hoistingLimits: 'workspaces'
475
+ }
476
+ })];
477
+ }))));
478
+ }
479
+ async _getAllUsedApps() {
480
+ return this.app.listAppsFromComponents();
481
+ }
482
+ async _getAllUsedEnvIds() {
483
+ const envs = new Set();
484
+ (await this.workspace.list()).forEach(component => {
485
+ envs.add(this.envs.getEnvId(component));
486
+ });
487
+ return Array.from(envs.values());
488
+ }
354
489
 
355
490
  /**
356
491
  * Updates out-of-date dependencies in the workspace.
@@ -485,8 +620,19 @@ class InstallMain {
485
620
  const legacyResults = await (0, _workspaceModules().linkToNodeModulesWithCodemod)(this.workspace, bitIds, (_options$rewire = options.rewire) !== null && _options$rewire !== void 0 ? _options$rewire : false);
486
621
  workspaceRes.legacyLinkResults = legacyResults.linksResults;
487
622
  workspaceRes.legacyLinkCodemodResults = legacyResults.codemodResults;
623
+ if (this.dependencyResolver.hasRootComponents() && options.linkToBitRoots) {
624
+ await this._linkAllComponentsToBitRoots(compDirMap);
625
+ }
488
626
  return res;
489
627
  }
628
+ async _linkAllComponentsToBitRoots(compDirMap) {
629
+ const envs = await this._getAllUsedEnvIds();
630
+ const apps = (await this.app.listAppsFromComponents()).map(component => component.id.toString());
631
+ await Promise.all([...envs, ...apps].map(async id => {
632
+ await _fsExtra().default.mkdirp((0, _bitRoots().getRootComponentDir)(this.workspace.path, id));
633
+ }));
634
+ await (0, _bitRoots().linkPkgsToBitRoots)(this.workspace.path, compDirMap.components.map(component => this.dependencyResolver.getPackageName(component)));
635
+ }
490
636
 
491
637
  /**
492
638
  * Generate a filter to pass to the installer
@@ -519,28 +665,20 @@ class InstallMain {
519
665
  const components = ids.length ? await this.workspace.getMany(ids) : await this.workspace.list();
520
666
  return _component().ComponentMap.as(components, component => this.workspace.componentDir(component.id));
521
667
  }
522
- static async provider([dependencyResolver, workspace, loggerExt, variants, cli, community, compiler, issues], _, [preLinkSlot, preInstallSlot]) {
668
+ static async provider([dependencyResolver, workspace, loggerExt, variants, cli, community, compiler, issues, envs, app], _, [preLinkSlot, preInstallSlot]) {
523
669
  const logger = loggerExt.createLogger('teambit.bit/install');
524
- const installExt = new InstallMain(dependencyResolver, logger, workspace, variants, compiler, preLinkSlot, preInstallSlot);
670
+ const installExt = new InstallMain(dependencyResolver, logger, workspace, variants, compiler, envs, app, preLinkSlot, preInstallSlot);
525
671
  if (issues) {
526
672
  issues.registerAddComponentsIssues(installExt.addDuplicateComponentAndPackageIssue.bind(installExt));
527
673
  }
528
674
  const commands = [new (_install2().default)(installExt, workspace, logger), new (_uninstall().default)(installExt), new (_update().default)(installExt), new (_link().LinkCommand)(installExt, workspace, logger, community.getDocsDomain())];
529
675
  cli.register(...commands);
530
- if (dependencyResolver.hasRootComponents()) {
531
- workspace.registerOnMultipleComponentsAdd(async () => {
532
- await installExt.install(undefined, {
533
- compile: true,
534
- import: false
535
- });
536
- });
537
- }
538
676
  return installExt;
539
677
  }
540
678
  }
541
679
  exports.InstallMain = InstallMain;
542
680
  (0, _defineProperty2().default)(InstallMain, "slots", [_harmony().Slot.withType(), _harmony().Slot.withType()]);
543
- (0, _defineProperty2().default)(InstallMain, "dependencies", [_dependencyResolver().DependencyResolverAspect, _workspace().WorkspaceAspect, _logger().LoggerAspect, _variants().VariantsAspect, _cli().CLIAspect, _community().CommunityAspect, _compiler().CompilerAspect, _issues().IssuesAspect]);
681
+ (0, _defineProperty2().default)(InstallMain, "dependencies", [_dependencyResolver().DependencyResolverAspect, _workspace().WorkspaceAspect, _logger().LoggerAspect, _variants().VariantsAspect, _cli().CLIAspect, _community().CommunityAspect, _compiler().CompilerAspect, _issues().IssuesAspect, _envs().EnvsAspect, _application().ApplicationAspect]);
544
682
  (0, _defineProperty2().default)(InstallMain, "runtime", _cli().MainRuntime);
545
683
  function hasComponentsFromWorkspaceInMissingDeps({
546
684
  componentDirectoryMap,
@@ -1 +1 @@
1
- {"version":3,"names":["InstallMain","constructor","dependencyResolver","logger","workspace","variants","compiler","preLinkSlot","preInstallSlot","install","packages","options","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","_installModules","registerPreLink","register","registerPreInstall","lifecycleType","DependencyTypeNotSupportedInPolicy","debug","join","resolver","getVersionResolver","resolvedPackagesP","packageName","resolveRemoteVersion","rootDir","resolvedPackages","Promise","all","newWorkspacePolicyEntries","forEach","resolvedPackage","version","versionWithPrefix","getVersionWithSavePrefix","savePrefix","push","dependencyId","value","addToRootPolicy","updateExisting","persistConfig","chalk","cyan","getPackageManagerName","hasRootComponents","includeOptionalDeps","rootComponents","installer","getInstaller","current","_getComponentsManifests","prevManifests","Set","link","linkTeambitBit","linkCoreAspects","linkDepsResolvedFromEnv","linkNestedDepsInNM","linkOpts","isLegacy","installCycle","hasMissingLocalComponents","hasComponentsFromWorkspaceInMissingDeps","consumer","componentLoader","clearComponentsCache","clearCache","installComponents","manifests","componentDirectoryMap","installTeambitBit","linkCoreAspectsAndLegacy","rootPolicy","compile","compileOnWorkspace","initiator","CompilationInitiator","Install","add","hash","has","dependencyInstaller","installOptions","getComponentManifests","updateDependencies","componentConfigFiles","componentPoliciesById","_getComponentsWithDependencyPolicies","variantPatterns","raw","variantPoliciesByPatterns","_variantPatternsToDepPolicesDict","components","list","outdatedPkgs","getOutdatedPkgsFromPolicies","outdatedPkgsToUpdate","off","pickOutdatedPkgs","on","updatedVariants","updatedComponents","applyUpdates","_updateVariantsPolicies","updatedComponentConfigFiles","pick","_saveManyComponentConfigFiles","_reloadConsumer","addDuplicateComponentAndPackageIssue","workspacePolicy","component","state","_consumer","removed","pkgName","componentIdToPackageName","found","find","issues","getOrCreate","IssuesClasses","DuplicateComponentAndPackage","data","allComponentIds","listIds","componentId","componentConfigFile","index","depResolverConfig","aspects","get","DependencyResolverAspect","id","toString","policy","variantPattern","extensions","updateVariantPolicies","setExtension","overrideExisting","Array","from","write","override","uninstallDependencies","removeFromRootPolicy","linker","getLinker","linkingOptions","compIds","res","workspaceRes","bitIds","toArray","_legacy","legacyResults","linkToNodeModulesWithCodemod","rewire","legacyLinkResults","linksResults","legacyLinkCodemodResults","codemodResults","remotes","scope","_legacyRemotes","reg","getRegistries","packageScopes","keys","scopes","dependencyList","filtered","filter","dep","ComponentDependency","isHub","some","startsWith","ids","getMany","ComponentMap","as","componentDir","provider","loggerExt","cli","community","_","createLogger","installExt","registerAddComponentsIssues","bind","commands","InstallCmd","UninstallCmd","UpdateCmd","LinkCommand","getDocsDomain","registerOnMultipleComponentsAdd","undefined","import","Slot","withType","WorkspaceAspect","LoggerAspect","VariantsAspect","CLIAspect","CommunityAspect","CompilerAspect","IssuesAspect","MainRuntime","missingDeps","issue","getIssue","MissingPackagesDependenciesOnFs","flat","name","InstallAspect","addRuntime"],"sources":["install.main.runtime.ts"],"sourcesContent":["import { CommunityMain, CommunityAspect } from '@teambit/community';\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 { pick } from 'lodash';\nimport { ProjectManifest } from '@pnpm/types';\nimport componentIdToPackageName from '@teambit/legacy/dist/utils/bit/component-id-to-package-name';\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 { 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};\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};\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 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 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 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 return this._installModules(options);\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 resolvedPackage.version,\n options?.savePrefix\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 this.logger.console(\n `installing dependencies in workspace using ${chalk.cyan(this.dependencyResolver.getPackageManagerName())}`\n );\n this.logger.debug(`installing dependencies in workspace with options`, options);\n const mergedRootPolicy = this.dependencyResolver.getWorkspacePolicy();\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 };\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 this.workspace.consumer.componentLoader.clearComponentsCache();\n this.workspace.clearCache();\n await installer.installComponents(\n this.workspace.path,\n current.manifests,\n mergedRootPolicy,\n current.componentDirectoryMap,\n { installTeambitBit: false },\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 await this.compiler.compileOnWorkspace([], { initiator: CompilationInitiator.Install });\n }\n await this.link(linkOpts);\n prevManifests.add(hash(current.manifests));\n current = await this._getComponentsManifests(installer, mergedRootPolicy, pmInstallOptions);\n installCycle += 1;\n } while ((!prevManifests.has(hash(current.manifests)) || hasMissingLocalComponents) && installCycle < 5);\n /* eslint-enable no-await-in-loop */\n return current.componentDirectoryMap;\n }\n\n private async _getComponentsManifests(\n dependencyInstaller: DependencyInstaller,\n rootPolicy: WorkspacePolicy,\n installOptions: Pick<\n PackageManagerInstallOptions,\n 'dedupe' | 'dependencyFilterFn' | 'copyPeerToRuntimeOnComponents'\n >\n ): Promise<ComponentsAndManifests> {\n const componentDirectoryMap = await this.getComponentsDirectory([]);\n const manifests = await dependencyInstaller.getComponentManifests({\n ...installOptions,\n componentDirectoryMap,\n rootPolicy,\n rootDir: this.workspace.path,\n });\n return {\n componentDirectoryMap,\n manifests,\n };\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 return res;\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 static slots = [Slot.withType<PreLinkSlot>(), Slot.withType<PreInstallSlot>()];\n static dependencies = [\n DependencyResolverAspect,\n WorkspaceAspect,\n LoggerAspect,\n VariantsAspect,\n CLIAspect,\n CommunityAspect,\n CompilerAspect,\n IssuesAspect,\n ];\n\n static runtime = MainRuntime;\n\n static async provider(\n [dependencyResolver, workspace, loggerExt, variants, cli, community, compiler, issues]: [\n DependencyResolverMain,\n Workspace,\n LoggerMain,\n VariantsMain,\n CLIMain,\n CommunityMain,\n CompilerMain,\n IssuesMain\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 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, community.getDocsDomain()),\n ];\n cli.register(...commands);\n if (dependencyResolver.hasRootComponents()) {\n workspace.registerOnMultipleComponentsAdd(async () => {\n await installExt.install(undefined, { compile: true, import: false });\n });\n }\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"],"mappings":"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"}
1
+ {"version":3,"names":["InstallMain","constructor","dependencyResolver","logger","workspace","variants","compiler","envs","app","preLinkSlot","preInstallSlot","install","packages","options","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","_installModules","registerPreLink","register","registerPreInstall","lifecycleType","DependencyTypeNotSupportedInPolicy","debug","join","resolver","getVersionResolver","resolvedPackagesP","packageName","resolveRemoteVersion","rootDir","resolvedPackages","Promise","all","newWorkspacePolicyEntries","forEach","resolvedPackage","version","versionWithPrefix","getVersionWithSavePrefix","savePrefix","push","dependencyId","value","addToRootPolicy","updateExisting","persistConfig","chalk","cyan","getPackageManagerName","hasRootComponents","includeOptionalDeps","rootComponents","nodeLinker","installer","getInstaller","current","_getComponentsManifests","prevManifests","Set","link","linkTeambitBit","linkCoreAspects","linkDepsResolvedFromEnv","linkNestedDepsInNM","linkOpts","isLegacy","installCycle","hasMissingLocalComponents","hasComponentsFromWorkspaceInMissingDeps","consumer","componentLoader","clearComponentsCache","clearCache","installComponents","manifests","componentDirectoryMap","installTeambitBit","linkCoreAspectsAndLegacy","rootPolicy","compile","compileOnWorkspace","initiator","CompilationInitiator","Install","add","hash","has","dependencyInstaller","installOptions","getComponentManifests","referenceLocalPackages","rootManifests","_getRootManifests","_updateRootDirs","keys","rootDirs","bitRootCompsDir","getBitRootsDir","existingDirs","fs","readdir","dirName","dirPath","includes","remove","err","code","mkdir","recursive","nonRootManifests","filter","name","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","_getAllUsedApps","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","workspacePolicy","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","res","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","provider","loggerExt","cli","community","_","createLogger","installExt","registerAddComponentsIssues","bind","commands","InstallCmd","UninstallCmd","UpdateCmd","LinkCommand","getDocsDomain","Slot","withType","WorkspaceAspect","LoggerAspect","VariantsAspect","CLIAspect","CommunityAspect","CompilerAspect","IssuesAspect","EnvsAspect","ApplicationAspect","MainRuntime","missingDeps","issue","getIssue","MissingPackagesDependenciesOnFs","flat","InstallAspect","addRuntime"],"sources":["install.main.runtime.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport path from 'path';\nimport { getRootComponentDir, getBitRootsDir, linkPkgsToBitRoots } from '@teambit/bit-roots';\nimport { CommunityMain, CommunityAspect } from '@teambit/community';\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, 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};\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 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 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 return this._installModules(options);\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 resolvedPackage.version,\n options?.savePrefix\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 this.logger.console(\n `installing dependencies in workspace using ${chalk.cyan(this.dependencyResolver.getPackageManagerName())}`\n );\n this.logger.debug(`installing dependencies in workspace with options`, options);\n const mergedRootPolicy = this.dependencyResolver.getWorkspacePolicy();\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 };\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 this.workspace.consumer.componentLoader.clearComponentsCache();\n this.workspace.clearCache();\n await installer.installComponents(\n this.workspace.path,\n current.manifests,\n mergedRootPolicy,\n current.componentDirectoryMap,\n { installTeambitBit: false },\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 await this.compiler.compileOnWorkspace([], { initiator: CompilationInitiator.Install });\n }\n await this.link(linkOpts);\n prevManifests.add(hash(current.manifests));\n current = await this._getComponentsManifests(installer, mergedRootPolicy, pmInstallOptions);\n installCycle += 1;\n } while ((!prevManifests.has(hash(current.manifests)) || hasMissingLocalComponents) && installCycle < 5);\n /* eslint-enable no-await-in-loop */\n return current.componentDirectoryMap;\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 _getAllUsedApps(): Promise<Component[]> {\n return this.app.listAppsFromComponents();\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 static slots = [Slot.withType<PreLinkSlot>(), Slot.withType<PreInstallSlot>()];\n static dependencies = [\n DependencyResolverAspect,\n WorkspaceAspect,\n LoggerAspect,\n VariantsAspect,\n CLIAspect,\n CommunityAspect,\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, community, compiler, issues, envs, app]: [\n DependencyResolverMain,\n Workspace,\n LoggerMain,\n VariantsMain,\n CLIMain,\n CommunityMain,\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, community.getDocsDomain()),\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"],"mappings":"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"}
@@ -128,6 +128,7 @@ class LinkCommand {
128
128
  async json([ids], opts) {
129
129
  this.logger.console(`Linking components and core aspects to node_modules for workspaces: '${_chalk().default.cyan(this.workspace.name)}'`);
130
130
  const linkOpts = {
131
+ linkToBitRoots: true,
131
132
  rewire: opts.rewire,
132
133
  linkCoreAspects: true,
133
134
  linkTeambitBit: true,
@@ -1 +1 @@
1
- {"version":3,"names":["LinkCommand","constructor","install","workspace","logger","docsDomain","name","description","extendedDescription","report","ids","opts","startTime","Date","now","linkResults","json","endTime","numOfComponents","legacyLinkResults","length","timeDiff","timeFormat","coreAspectsLinksWithMainAspect","coreAspectsLinks","teambitBitLink","unshift","numOfCoreAspects","title","coreLinks","CoreAspectsLinks","verbose","compsLinks","ComponentListLinks","componentListLinks","rewireRow","RewireRow","legacyCodemodResults","legacyLinkCodemodResults","nestedLinks","NestedComponentLinksLinks","nestedDepsInNmLinks","targetLinks","linkToDir","linkToDirResults","footer","console","chalk","cyan","linkOpts","rewire","linkCoreAspects","linkTeambitBit","target","fetchObject","skipFetchingObjects","link"],"sources":["link.cmd.ts"],"sourcesContent":["import { Command, CommandOptions } from '@teambit/cli';\nimport { Logger } from '@teambit/logger';\nimport { timeFormat } from '@teambit/toolbox.time.time-format';\nimport chalk from 'chalk';\nimport { Workspace } from '@teambit/workspace';\nimport { InstallMain, WorkspaceLinkOptions, WorkspaceLinkResults } from '../install.main.runtime';\nimport { ComponentListLinks } from './component-list-links';\nimport { CoreAspectsLinks } from './core-aspects-links';\nimport { NestedComponentLinksLinks } from './nested-deps-in-nm-links';\nimport { RewireRow } from './rewire-row';\nimport { linkToDir } from './link-to-dir';\n\ntype LinkCommandOpts = {\n rewire: boolean;\n verbose: boolean;\n target: string;\n skipFetchingObjects?: boolean;\n};\nexport class LinkCommand implements Command {\n name = 'link [component-names...]';\n alias = '';\n description = 'create links in the node_modules directory, to core aspects and to components in the workspace';\n helpUrl = 'reference/workspace/component-links';\n extendedDescription: string;\n group = 'development';\n private = false;\n arguments = [{ name: 'component-names...', description: 'names or IDs of the components to link' }];\n options = [\n ['j', 'json', 'return the output as JSON'],\n ['', 'verbose', 'verbose output'],\n ['r', 'rewire', 'Replace relative paths with module paths in code (e.g. \"../foo\" => \"@bit/foo\")'],\n [\n '',\n 'target <dir>',\n 'EXPERIMENTAL. link to an external directory (similar to npm-link) so other projects could use these components',\n ],\n ['', 'skip-fetching-objects', 'skip fetch missing objects from remotes before linking'],\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 private docsDomain: string\n ) {\n this.extendedDescription = `https://${this.docsDomain}/workspace/component-links`;\n }\n\n async report([ids]: [string[]], opts: LinkCommandOpts) {\n const startTime = Date.now();\n const linkResults = await this.json([ids], opts);\n const endTime = Date.now();\n const numOfComponents = linkResults.legacyLinkResults?.length;\n const timeDiff = timeFormat(endTime - startTime);\n const coreAspectsLinksWithMainAspect = linkResults.coreAspectsLinks || [];\n if (linkResults.teambitBitLink) {\n coreAspectsLinksWithMainAspect.unshift(linkResults.teambitBitLink);\n }\n const numOfCoreAspects = coreAspectsLinksWithMainAspect.length;\n\n const title = `Linked ${numOfComponents} components and ${numOfCoreAspects} core aspects to node_modules for workspace: ${this.workspace.name}`;\n const coreLinks = CoreAspectsLinks({\n coreAspectsLinks: coreAspectsLinksWithMainAspect,\n verbose: opts.verbose,\n });\n const compsLinks = ComponentListLinks({ componentListLinks: linkResults.legacyLinkResults, verbose: opts.verbose });\n const rewireRow = RewireRow({ legacyCodemodResults: linkResults.legacyLinkCodemodResults });\n const nestedLinks = NestedComponentLinksLinks({\n nestedDepsInNmLinks: linkResults.nestedDepsInNmLinks,\n verbose: opts.verbose,\n });\n const targetLinks = linkToDir(linkResults.linkToDirResults);\n const footer = `Finished. ${timeDiff}`;\n return `${title}\\n${coreLinks}\\n${compsLinks}\\n${rewireRow}${nestedLinks}${targetLinks}${footer}`;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async json([ids]: [string[]], opts: LinkCommandOpts): Promise<WorkspaceLinkResults> {\n this.logger.console(\n `Linking components and core aspects to node_modules for workspaces: '${chalk.cyan(this.workspace.name)}'`\n );\n\n const linkOpts: WorkspaceLinkOptions = {\n rewire: opts.rewire,\n linkCoreAspects: true,\n linkTeambitBit: true,\n linkToDir: opts.target,\n fetchObject: !opts.skipFetchingObjects,\n };\n const linkResults = await this.install.link(linkOpts);\n return linkResults;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["LinkCommand","constructor","install","workspace","logger","docsDomain","name","description","extendedDescription","report","ids","opts","startTime","Date","now","linkResults","json","endTime","numOfComponents","legacyLinkResults","length","timeDiff","timeFormat","coreAspectsLinksWithMainAspect","coreAspectsLinks","teambitBitLink","unshift","numOfCoreAspects","title","coreLinks","CoreAspectsLinks","verbose","compsLinks","ComponentListLinks","componentListLinks","rewireRow","RewireRow","legacyCodemodResults","legacyLinkCodemodResults","nestedLinks","NestedComponentLinksLinks","nestedDepsInNmLinks","targetLinks","linkToDir","linkToDirResults","footer","console","chalk","cyan","linkOpts","linkToBitRoots","rewire","linkCoreAspects","linkTeambitBit","target","fetchObject","skipFetchingObjects","link"],"sources":["link.cmd.ts"],"sourcesContent":["import { Command, CommandOptions } from '@teambit/cli';\nimport { Logger } from '@teambit/logger';\nimport { timeFormat } from '@teambit/toolbox.time.time-format';\nimport chalk from 'chalk';\nimport { Workspace } from '@teambit/workspace';\nimport { InstallMain, WorkspaceLinkOptions, WorkspaceLinkResults } from '../install.main.runtime';\nimport { ComponentListLinks } from './component-list-links';\nimport { CoreAspectsLinks } from './core-aspects-links';\nimport { NestedComponentLinksLinks } from './nested-deps-in-nm-links';\nimport { RewireRow } from './rewire-row';\nimport { linkToDir } from './link-to-dir';\n\ntype LinkCommandOpts = {\n rewire: boolean;\n verbose: boolean;\n target: string;\n skipFetchingObjects?: boolean;\n};\nexport class LinkCommand implements Command {\n name = 'link [component-names...]';\n alias = '';\n description = 'create links in the node_modules directory, to core aspects and to components in the workspace';\n helpUrl = 'reference/workspace/component-links';\n extendedDescription: string;\n group = 'development';\n private = false;\n arguments = [{ name: 'component-names...', description: 'names or IDs of the components to link' }];\n options = [\n ['j', 'json', 'return the output as JSON'],\n ['', 'verbose', 'verbose output'],\n ['r', 'rewire', 'Replace relative paths with module paths in code (e.g. \"../foo\" => \"@bit/foo\")'],\n [\n '',\n 'target <dir>',\n 'EXPERIMENTAL. link to an external directory (similar to npm-link) so other projects could use these components',\n ],\n ['', 'skip-fetching-objects', 'skip fetch missing objects from remotes before linking'],\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 private docsDomain: string\n ) {\n this.extendedDescription = `https://${this.docsDomain}/workspace/component-links`;\n }\n\n async report([ids]: [string[]], opts: LinkCommandOpts) {\n const startTime = Date.now();\n const linkResults = await this.json([ids], opts);\n const endTime = Date.now();\n const numOfComponents = linkResults.legacyLinkResults?.length;\n const timeDiff = timeFormat(endTime - startTime);\n const coreAspectsLinksWithMainAspect = linkResults.coreAspectsLinks || [];\n if (linkResults.teambitBitLink) {\n coreAspectsLinksWithMainAspect.unshift(linkResults.teambitBitLink);\n }\n const numOfCoreAspects = coreAspectsLinksWithMainAspect.length;\n\n const title = `Linked ${numOfComponents} components and ${numOfCoreAspects} core aspects to node_modules for workspace: ${this.workspace.name}`;\n const coreLinks = CoreAspectsLinks({\n coreAspectsLinks: coreAspectsLinksWithMainAspect,\n verbose: opts.verbose,\n });\n const compsLinks = ComponentListLinks({ componentListLinks: linkResults.legacyLinkResults, verbose: opts.verbose });\n const rewireRow = RewireRow({ legacyCodemodResults: linkResults.legacyLinkCodemodResults });\n const nestedLinks = NestedComponentLinksLinks({\n nestedDepsInNmLinks: linkResults.nestedDepsInNmLinks,\n verbose: opts.verbose,\n });\n const targetLinks = linkToDir(linkResults.linkToDirResults);\n const footer = `Finished. ${timeDiff}`;\n return `${title}\\n${coreLinks}\\n${compsLinks}\\n${rewireRow}${nestedLinks}${targetLinks}${footer}`;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async json([ids]: [string[]], opts: LinkCommandOpts): Promise<WorkspaceLinkResults> {\n this.logger.console(\n `Linking components and core aspects to node_modules for workspaces: '${chalk.cyan(this.workspace.name)}'`\n );\n\n const linkOpts: WorkspaceLinkOptions = {\n linkToBitRoots: true,\n rewire: opts.rewire,\n linkCoreAspects: true,\n linkTeambitBit: true,\n linkToDir: opts.target,\n fetchObject: !opts.skipFetchingObjects,\n };\n const linkResults = await this.install.link(linkOpts);\n return linkResults;\n }\n}\n"],"mappings":"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"}
package/link/link.cmd.ts CHANGED
@@ -89,6 +89,7 @@ export class LinkCommand implements Command {
89
89
  );
90
90
 
91
91
  const linkOpts: WorkspaceLinkOptions = {
92
+ linkToBitRoots: true,
92
93
  rewire: opts.rewire,
93
94
  linkCoreAspects: true,
94
95
  linkTeambitBit: true,
package/package.json CHANGED
@@ -1,16 +1,17 @@
1
1
  {
2
2
  "name": "@teambit/install",
3
- "version": "0.0.112",
3
+ "version": "0.0.113",
4
4
  "homepage": "https://bit.dev/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.112"
9
+ "version": "0.0.113"
10
10
  },
11
11
  "dependencies": {
12
12
  "chalk": "2.4.2",
13
13
  "@pnpm/types": "8.10.0",
14
+ "fs-extra": "10.0.0",
14
15
  "lodash": "4.17.21",
15
16
  "object-hash": "2.1.1",
16
17
  "p-map-series": "2.1.0",
@@ -22,12 +23,14 @@
22
23
  "core-js": "^3.0.0",
23
24
  "@babel/runtime": "7.20.0",
24
25
  "@teambit/harmony": "0.4.6",
25
- "@teambit/component-issues": "0.0.88",
26
- "@teambit/workspace.modules.node-modules-linker": "0.0.7",
27
26
  "@teambit/bit-error": "0.0.402",
27
+ "@teambit/bit-roots": "0.0.1",
28
+ "@teambit/component-issues": "0.0.88",
29
+ "@teambit/workspace.modules.node-modules-linker": "0.0.8",
28
30
  "@teambit/toolbox.time.time-format": "0.0.490"
29
31
  },
30
32
  "devDependencies": {
33
+ "@types/fs-extra": "9.0.7",
31
34
  "@types/lodash": "4.14.165",
32
35
  "@types/object-hash": "1.3.4",
33
36
  "@types/semver": "7.3.4",