@teambit/dependency-resolver 1.0.1056 → 1.0.1057

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.
@@ -114,6 +114,54 @@ export declare class DependencyLinker {
114
114
  private linkBitAspectIfNotExist;
115
115
  linkBit(dir: string): Promise<LinkDetail | undefined>;
116
116
  private linkNonExistingCoreAspects;
117
+ /**
118
+ * The core aspects are phantom dependencies of the published envs - an env requires
119
+ * `@teambit/builder` (and `@teambit/ui`, `@teambit/pkg`...) without declaring it, and relies on the
120
+ * running bit installation to provide it. `linkCoreAspectsAndLegacy` is what normally satisfies
121
+ * that, by linking bit's own copies into the workspace's root node_modules.
122
+ *
123
+ * A workspace that authors the core aspects has them as source components instead, so they're
124
+ * excluded from that linking - such a workspace must build and load its own. That leaves the envs'
125
+ * phantom require resolving to a source component, which has no `main` until it's been compiled,
126
+ * so an env resolved from the root (see `resolveEnvsFromRoots`) fails to load during install -
127
+ * before the compile step that would have made it resolvable.
128
+ *
129
+ * Bridge that gap by linking bit's own (always compiled) copies into pnpm's hoisted store. That
130
+ * directory is on the module resolution path of packages inside the virtual store - the published
131
+ * envs - and not on the resolution path of the workspace's own components, so the envs bootstrap
132
+ * against the running bit while the workspace still builds and loads its own core aspects.
133
+ *
134
+ * This is a reconciler - each core aspect converges to "link present iff its source is still
135
+ * uncompiled", so the same call both creates the links during bootstrap and removes them once the
136
+ * source components have been compiled.
137
+ *
138
+ * Only reached from a workspace with `linkCoreAspects` off, i.e. one that authors them.
139
+ */
140
+ syncCoreAspectLinksForEnvs(rootDir: string, componentIds: ComponentID[]): Promise<void>;
141
+ private hasCompiledMain;
142
+ /**
143
+ * the directory to bridge a core aspect from: the running bit installation's copy. bvm is where a
144
+ * released bit runs from; when bit runs from elsewhere (e.g. installed through a package manager),
145
+ * fall back to the module-resolution strategy aspect-loader uses to locate core aspects.
146
+ *
147
+ * a copy is only usable as a bridge source if its own compiled main exists AND it lives outside
148
+ * the workspace. the second condition is what lets removeCoreAspectBootstrapLink identify this
149
+ * method's links: a workspace-internal source (e.g. a published bit installed as a workspace
150
+ * dependency) would produce a link the cleanup can never tell apart from pnpm's own hoisted
151
+ * entries, shadowing the workspace's compiled sources forever.
152
+ */
153
+ private _getCoreAspectSourceDir;
154
+ /** both paths must exist. compares real paths, as either side may be reached through a symlink. */
155
+ private _realpathIsInside;
156
+ /**
157
+ * only removes links created by syncCoreAspectLinksForEnvs, identified by resolving OUTSIDE the
158
+ * workspace - an invariant _getCoreAspectSourceDir enforces on every link source, and one nothing
159
+ * else at this location+name violates: pnpm's own hoisted entries always point back into the
160
+ * virtual store. matching the exact bit installation instead would be too strict: a link leaked
161
+ * by an interrupted install may point at a bit version that was since upgraded or removed
162
+ * (dangling), and it must still be cleaned up or it would shadow the workspace's copy forever.
163
+ */
164
+ private removeCoreAspectBootstrapLink;
117
165
  private isBitRepoWorkspace;
118
166
  private linkCoreAspect;
119
167
  /**
@@ -53,6 +53,13 @@ function _pkgModules() {
53
53
  };
54
54
  return data;
55
55
  }
56
+ function _dependenciesFs() {
57
+ const data = require("@teambit/dependencies.fs.linked-dependencies");
58
+ _dependenciesFs = function () {
59
+ return data;
60
+ };
61
+ return data;
62
+ }
56
63
  function _bitError() {
57
64
  const data = require("@teambit/bit-error");
58
65
  _bitError = function () {
@@ -468,6 +475,130 @@ class DependencyLinker {
468
475
  const results = filtered.map(id => this.linkCoreAspect(id, opts));
469
476
  return (0, _lodash().compact)(results);
470
477
  }
478
+
479
+ /**
480
+ * The core aspects are phantom dependencies of the published envs - an env requires
481
+ * `@teambit/builder` (and `@teambit/ui`, `@teambit/pkg`...) without declaring it, and relies on the
482
+ * running bit installation to provide it. `linkCoreAspectsAndLegacy` is what normally satisfies
483
+ * that, by linking bit's own copies into the workspace's root node_modules.
484
+ *
485
+ * A workspace that authors the core aspects has them as source components instead, so they're
486
+ * excluded from that linking - such a workspace must build and load its own. That leaves the envs'
487
+ * phantom require resolving to a source component, which has no `main` until it's been compiled,
488
+ * so an env resolved from the root (see `resolveEnvsFromRoots`) fails to load during install -
489
+ * before the compile step that would have made it resolvable.
490
+ *
491
+ * Bridge that gap by linking bit's own (always compiled) copies into pnpm's hoisted store. That
492
+ * directory is on the module resolution path of packages inside the virtual store - the published
493
+ * envs - and not on the resolution path of the workspace's own components, so the envs bootstrap
494
+ * against the running bit while the workspace still builds and loads its own core aspects.
495
+ *
496
+ * This is a reconciler - each core aspect converges to "link present iff its source is still
497
+ * uncompiled", so the same call both creates the links during bootstrap and removes them once the
498
+ * source components have been compiled.
499
+ *
500
+ * Only reached from a workspace with `linkCoreAspects` off, i.e. one that authors them.
501
+ */
502
+ async syncCoreAspectLinksForEnvs(rootDir, componentIds) {
503
+ const idsInWorkspace = componentIds.map(id => id.toString({
504
+ ignoreVersion: true
505
+ }));
506
+ const authoredCoreAspects = this.aspectLoader.getCoreAspectIds().filter(aspectId => {
507
+ if (aspectId === this.aspectLoader.mainAspect?.id) return false;
508
+ // the same naive comparison done by linkNonExistingCoreAspects, whose filter this inverts
509
+ const name = (0, _aspectLoader().getCoreAspectName)(aspectId);
510
+ return idsInWorkspace.some(id => id === name || id === aspectId);
511
+ });
512
+ if (!authoredCoreAspects.length) return;
513
+ const hoistedStoreDir = _path().default.join(rootDir, 'node_modules', '.pnpm');
514
+ // the hoisted store only exists in a pnpm-managed workspace. anywhere else this directory is on
515
+ // no resolution path, so there is nothing to bridge - and it must not be fabricated here.
516
+ if (!_fsExtra().default.pathExistsSync(hoistedStoreDir)) return;
517
+ const links = {};
518
+ for (const aspectId of authoredCoreAspects) {
519
+ const packageName = (0, _aspectLoader().getCoreAspectPackageName)(aspectId);
520
+ const linkPath = _path().default.join(hoistedStoreDir, 'node_modules', packageName);
521
+ if (this.hasCompiledMain(_path().default.join(rootDir, 'node_modules', packageName))) {
522
+ await this.removeCoreAspectBootstrapLink(linkPath, rootDir);
523
+ continue;
524
+ }
525
+ const fromDir = this._getCoreAspectSourceDir(aspectId, packageName, rootDir);
526
+ if (fromDir) links[packageName] = `link:${fromDir}`;
527
+ }
528
+ const packagesToLink = Object.keys(links);
529
+ if (!packagesToLink.length) return;
530
+ this.logger.debug(`syncCoreAspectLinksForEnvs: linking ${packagesToLink.join(', ')}`);
531
+ try {
532
+ await (0, _dependenciesFs().createLinks)(hoistedStoreDir, links, {
533
+ skipIfSymlinkValid: true
534
+ });
535
+ } catch (err) {
536
+ // the bridge is best-effort. without it the envs may fail to load during install, which the
537
+ // install flow already tolerates - a broken bridge must not turn that into a fatal error.
538
+ this.logger.warn(`syncCoreAspectLinksForEnvs: failed linking core aspects into the hoisted store. ${err.message}`);
539
+ }
540
+ }
541
+ hasCompiledMain(pkgDir) {
542
+ try {
543
+ const {
544
+ main
545
+ } = _fsExtra().default.readJsonSync(_path().default.join(pkgDir, 'package.json'));
546
+ return _fsExtra().default.pathExistsSync(_path().default.join(pkgDir, main || 'index.js'));
547
+ } catch {
548
+ return false;
549
+ }
550
+ }
551
+
552
+ /**
553
+ * the directory to bridge a core aspect from: the running bit installation's copy. bvm is where a
554
+ * released bit runs from; when bit runs from elsewhere (e.g. installed through a package manager),
555
+ * fall back to the module-resolution strategy aspect-loader uses to locate core aspects.
556
+ *
557
+ * a copy is only usable as a bridge source if its own compiled main exists AND it lives outside
558
+ * the workspace. the second condition is what lets removeCoreAspectBootstrapLink identify this
559
+ * method's links: a workspace-internal source (e.g. a published bit installed as a workspace
560
+ * dependency) would produce a link the cleanup can never tell apart from pnpm's own hoisted
561
+ * entries, shadowing the workspace's compiled sources forever.
562
+ */
563
+ _getCoreAspectSourceDir(aspectId, packageName, workspaceDir) {
564
+ const isUsableSource = dir => this.hasCompiledMain(dir) && !this._realpathIsInside(dir, workspaceDir);
565
+ const fromBvmDir = this._getPkgPathFromCurrentBitDir(packageName);
566
+ if (fromBvmDir && isUsableSource(fromBvmDir)) return fromBvmDir;
567
+ try {
568
+ const fromRunningBit = (0, _aspectLoader().getAspectDir)(aspectId);
569
+ if (isUsableSource(fromRunningBit)) return fromRunningBit;
570
+ } catch {
571
+ // not resolvable from the running installation either
572
+ }
573
+ return undefined;
574
+ }
575
+
576
+ /** both paths must exist. compares real paths, as either side may be reached through a symlink. */
577
+ _realpathIsInside(target, dir) {
578
+ return _fsExtra().default.realpathSync(target).startsWith(_fsExtra().default.realpathSync(dir) + _path().default.sep);
579
+ }
580
+
581
+ /**
582
+ * only removes links created by syncCoreAspectLinksForEnvs, identified by resolving OUTSIDE the
583
+ * workspace - an invariant _getCoreAspectSourceDir enforces on every link source, and one nothing
584
+ * else at this location+name violates: pnpm's own hoisted entries always point back into the
585
+ * virtual store. matching the exact bit installation instead would be too strict: a link leaked
586
+ * by an interrupted install may point at a bit version that was since upgraded or removed
587
+ * (dangling), and it must still be cleaned up or it would shadow the workspace's copy forever.
588
+ */
589
+ async removeCoreAspectBootstrapLink(linkPath, workspaceDir) {
590
+ try {
591
+ if (!_fsExtra().default.lstatSync(linkPath).isSymbolicLink()) return;
592
+ } catch {
593
+ return; // nothing at this path
594
+ }
595
+ try {
596
+ if (this._realpathIsInside(linkPath, workspaceDir)) return;
597
+ } catch {
598
+ // dangling link - fall through and remove it
599
+ }
600
+ await _fsExtra().default.remove(linkPath);
601
+ }
471
602
  isBitRepoWorkspace(dir) {
472
603
  // A special condition to not link core aspects in bit workspace itself
473
604
  if (this.aspectLoader.mainAspect?.path.startsWith(dir)) {
@@ -1 +1 @@
1
- {"version":3,"names":["_isBuiltinModule","data","_interopRequireDefault","require","_path","_lodash","_fsExtra","_resolveFrom","_bvm","_pkgModules","_bitError","_aspectLoader","_exceptions","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","DEFAULT_LINKING_OPTIONS","rewire","linkTeambitBit","linkCoreAspects","linkDepsResolvedFromEnv","linkNestedDepsInNM","DependencyLinker","constructor","dependencyResolver","aspectLoader","componentAspect","envs","logger","rootDir","linkingOptions","linkingContext","_currentBitDir","findCurrentBvmDir","calculateLinkedDeps","componentDirectoryMap","options","linkResults","_calculateLinks","localLinks","teambitBitLink","linkDetailToLocalDepEntry","linkDetail","coreAspectsLinks","link","harmonyLink","teambitLegacyLink","slotOriginatedLinks","map","l","resolvedFromEnvLinks","linksDetail","linkToDirResults","linkedRootDeps","fromEntries","key","packageName","from","outputMessage","inCapsule","setStatusLine","debug","omit","startTime","process","hrtime","result","finalRootDir","linkingOpts","assign","RootDirNotDefined","linkToDir","components","toArray","component","includePeers","_getLinksToPeers","nestedDepsInNmLinks","addSymlinkFromComponentDirNMToWorkspaceDirNM","componentIds","_dir","comp","id","undefined","linkCoreAspectsAndLegacy","registeredPackages","additionalPackagesToLink","pkgName","linkNonCorePackages","consoleSuccess","peers","Set","Promise","all","depList","getDependencies","peerList","byLifecycle","dependency","getPackageName","add","fromDir","path","join","toDir","Array","componentId","to","componentIdsWithoutVersions","toString","ignoreVersion","isBitRepoWorkspace","bitLink","linkBitAspectIfNotExist","mainAspectPath","mainAspect","MainAspectNotLinkable","hasLocalInstallation","linkNonExistingCoreAspects","targetModulesDir","linkNonAspectCorePackages","targetDir","results","componentPackageName","componentIdToPackageName","state","_consumer","rootNodeModules","getPackagesFoldersToLink","dir","parent","folders","fs","readdirSync","withFileTypes","dirent","name","startsWith","isDirectory","isSymbolicLink","dirPath","moduleName","moduleNameToResolve","isBuiltinModule","resolvedModuleFrom","resolveModuleFromDir","origPath","resolveModuleDirFromFile","flatten","linksOfAllComponents","compDirNM","existsSync","innerNMofComponentInNM","isPathSymlink","packagesFoldersToLink","ensureDirSync","oneComponentLinks","folderEntry","linkTarget","linkSrc","info","filteredLinks","compact","componentsNeedLinks","componentsNeedLinksP","policy","getPolicy","resolvedFromEnv","getResolvedFromEnv","env","getEnv","componentNeedLink","envsStringIds","obj","uniqEnvIds","uniq","host","getHost","resolvedEnvIds","resolveMultipleComponentIds","resolvedAspects","resolveAspects","resolvedAspectsIndex","reduce","acc","curr","getId","allLinksP","entry","oneComponentLinksP","entries","depEntry","dependencyId","envDir","aspectPath","resolvedModule","console","depsLinkedToEnvResult","mainAspectId","existing","find","linkBit","aspectId","target","shouldSymlink","removeSymlinkTarget","src","_getPkgPathFromCurrentBitDir","ensureDir","dirname","opts","coreAspectsIds","getCoreAspectIds","filtered","getCoreAspectName","linkCoreAspect","getCoreAspectPackageName","aspectDir","isAspectDirExist","pathExistsSync","getAspectDir","module","resolve","err","CoreAspectLinkError","targetPath","targetStat","lstatSync","fromDirBvm","fromDirBitRepo","getDistDirForDevEnv","distDir","isDistDirExist","newDir","resolvedPath","NonAspectCorePackageLinkError","exports","moduleDirectory","includes","nmDir","__dirname","substring","indexOf","paths","BitError","moduleId","silent","resolveFrom","resolvedModulePath","NM","slice","lastIndexOf","start","end","split","basename","versionStr","head","folderPath","stat"],"sources":["dependency-linker.ts"],"sourcesContent":["import isBuiltinModule from 'is-builtin-module';\nimport path from 'path';\nimport { uniq, compact, flatten, head, omit } from 'lodash';\nimport type { Stats } from 'fs';\nimport fs from 'fs-extra';\nimport resolveFrom from 'resolve-from';\nimport { findCurrentBvmDir } from '@teambit/bvm.path';\nimport type { ComponentMap, Component, ComponentID, ComponentMain } from '@teambit/component';\nimport type { Logger } from '@teambit/logger';\nimport type { PathAbsolute } from '@teambit/toolbox.path.path';\nimport { componentIdToPackageName } from '@teambit/pkg.modules.component-package-name';\nimport { BitError } from '@teambit/bit-error';\nimport type { EnvsMain } from '@teambit/envs';\nimport type { AspectLoaderMain } from '@teambit/aspect-loader';\nimport { getCoreAspectName, getCoreAspectPackageName, getAspectDir } from '@teambit/aspect-loader';\nimport {\n MainAspectNotLinkable,\n RootDirNotDefined,\n CoreAspectLinkError,\n NonAspectCorePackageLinkError,\n} from './exceptions';\nimport type { DependencyResolverMain } from './dependency-resolver.main.runtime';\n\n/**\n * context of the linking process.\n */\nexport type DepLinkerContext = {\n inCapsule?: boolean;\n};\n\nexport type LinkingOptions = {\n rewire?: boolean;\n /**\n * Whether to create link to @teambit/bit in the root node modules\n */\n linkTeambitBit?: boolean;\n /**\n * Whether to create links in the root dir node modules to all core aspects\n */\n linkCoreAspects?: boolean;\n\n linkNestedDepsInNM?: boolean;\n\n /**\n * link to another project, so that project could use components from this workspace.\n * similar to npm/yarn link\n */\n linkToDir?: string;\n\n /**\n * Link peer dependencies of the components to the target project.\n * Peer dependencies should be singletons, so the project should use the same\n * version of the peer dependency as the linked in components.\n */\n includePeers?: boolean;\n\n /**\n * whether link should import objects before linking\n */\n fetchObject?: boolean;\n\n /**\n * Link deps which should be linked to the env\n */\n linkDepsResolvedFromEnv?: boolean;\n\n /**\n * non-core packages to link. provided by addPackagesToLink slot of the deps-resolver aspect\n */\n additionalPackagesToLink?: string[];\n};\n\nconst DEFAULT_LINKING_OPTIONS: LinkingOptions = {\n rewire: false,\n linkTeambitBit: true,\n linkCoreAspects: true,\n linkDepsResolvedFromEnv: true,\n linkNestedDepsInNM: true,\n};\n\nexport type LinkDetail = { packageName: string; from: string; to: string };\n\nexport type CoreAspectLinkResult = {\n aspectId: string;\n linkDetail: LinkDetail;\n};\n\nexport type DepsLinkedToEnvResult = {\n componentId: string;\n linksDetail: LinkDetail[];\n};\n\nexport type NestedNMDepsLinksResult = {\n componentId: string;\n linksDetail: LinkDetail[];\n};\n\nexport type LinkToDirResult = {\n componentId: string;\n linksDetail: LinkDetail;\n};\n\nexport type LinkResults = {\n teambitBitLink?: CoreAspectLinkResult;\n coreAspectsLinks?: CoreAspectLinkResult[];\n harmonyLink?: LinkDetail;\n teambitLegacyLink?: LinkDetail;\n resolvedFromEnvLinks?: DepsLinkedToEnvResult[];\n nestedDepsInNmLinks?: NestedNMDepsLinksResult[];\n linkToDirResults?: LinkToDirResult[];\n /**\n * non-core packages to link. provided by addPackagesToLink slot of the deps-resolver aspect\n */\n slotOriginatedLinks?: LinkDetail[];\n};\n\ntype NestedModuleFolderEntry = {\n moduleName: string;\n path: string;\n origPath?: string;\n};\n\nexport class DependencyLinker {\n private _currentBitDir: string | null;\n\n constructor(\n private dependencyResolver: DependencyResolverMain,\n\n private aspectLoader: AspectLoaderMain,\n\n private componentAspect: ComponentMain,\n\n private envs: EnvsMain,\n\n private logger: Logger,\n\n private rootDir?: string | PathAbsolute,\n\n private linkingOptions?: LinkingOptions,\n\n private linkingContext: DepLinkerContext = {}\n ) {\n this._currentBitDir = findCurrentBvmDir();\n }\n\n async calculateLinkedDeps(\n rootDir: string | undefined,\n componentDirectoryMap: ComponentMap<string>,\n options: LinkingOptions = {}\n ): Promise<{ linkedRootDeps: Record<string, string>; linkResults: LinkResults }> {\n const linkResults = await this._calculateLinks(rootDir, componentDirectoryMap, options);\n const localLinks: Array<[string, string]> = [];\n if (linkResults.teambitBitLink) {\n localLinks.push(this.linkDetailToLocalDepEntry(linkResults.teambitBitLink.linkDetail));\n }\n if (linkResults.coreAspectsLinks) {\n linkResults.coreAspectsLinks.forEach((link) => {\n localLinks.push(this.linkDetailToLocalDepEntry(link.linkDetail));\n });\n }\n if (linkResults.harmonyLink) {\n localLinks.push(this.linkDetailToLocalDepEntry(linkResults.harmonyLink));\n }\n if (linkResults.teambitLegacyLink) {\n localLinks.push(this.linkDetailToLocalDepEntry(linkResults.teambitLegacyLink));\n }\n if (linkResults.slotOriginatedLinks) {\n localLinks.push(...linkResults.slotOriginatedLinks.map((l) => this.linkDetailToLocalDepEntry(l)));\n }\n if (linkResults.resolvedFromEnvLinks) {\n linkResults.resolvedFromEnvLinks.forEach((link) => {\n link.linksDetail.forEach((linkDetail) => {\n localLinks.push(this.linkDetailToLocalDepEntry(linkDetail));\n });\n });\n }\n if (linkResults.linkToDirResults) {\n linkResults.linkToDirResults.forEach((link) => {\n localLinks.push(this.linkDetailToLocalDepEntry(link.linksDetail));\n });\n }\n return {\n linkedRootDeps: Object.fromEntries(localLinks.map(([key, value]) => [key, `link:${value}`])),\n linkResults,\n };\n }\n\n private linkDetailToLocalDepEntry(linkDetail: LinkDetail): [string, string] {\n return [linkDetail.packageName, linkDetail.from];\n }\n\n private async _calculateLinks(\n rootDir: string | undefined,\n componentDirectoryMap: ComponentMap<string>,\n options: LinkingOptions = {}\n ): Promise<LinkResults> {\n const outputMessage = this.linkingContext?.inCapsule\n ? `(capsule) linking components in root dir: ${rootDir || this.rootDir}`\n : 'linking components';\n if (!this.linkingContext?.inCapsule) {\n this.logger.setStatusLine(outputMessage);\n }\n this.logger.debug('linking components with options', omit(options, ['consumer']));\n const startTime = process.hrtime();\n\n let result: LinkResults = {};\n const finalRootDir = rootDir || this.rootDir;\n const linkingOpts = Object.assign({}, DEFAULT_LINKING_OPTIONS, this.linkingOptions || {}, options || {});\n if (!finalRootDir) {\n throw new RootDirNotDefined();\n }\n if (options.linkToDir) {\n const components = componentDirectoryMap.toArray().map(([component]) => component);\n const linkToDirResults = await this.linkToDir(finalRootDir, options.linkToDir, components);\n result.linkToDirResults = linkToDirResults;\n if (options.includePeers) {\n result.linkToDirResults.push(\n ...(await this._getLinksToPeers(componentDirectoryMap, { finalRootDir, linkToDir: options.linkToDir }))\n );\n }\n return result;\n }\n\n // Link deps which should be linked to the env\n if (linkingOpts.linkDepsResolvedFromEnv) {\n result.resolvedFromEnvLinks = await this.linkDepsResolvedFromEnv(componentDirectoryMap);\n }\n if (linkingOpts.linkNestedDepsInNM) {\n result.nestedDepsInNmLinks = this.addSymlinkFromComponentDirNMToWorkspaceDirNM(\n finalRootDir,\n componentDirectoryMap\n );\n }\n\n // We remove the version since it used in order to check if it's core aspects, and the core aspects arrived from aspect loader without versions\n const componentIds: ComponentID[] = [];\n componentDirectoryMap.map((_dir, comp) => {\n componentIds.push(comp.id);\n return undefined;\n });\n result = {\n ...result,\n ...(await this.linkCoreAspectsAndLegacy(finalRootDir, componentIds, linkingOpts)),\n };\n const registeredPackages = this.linkingOptions?.additionalPackagesToLink || [];\n result.slotOriginatedLinks = registeredPackages.map((pkgName) => this.linkNonCorePackages(finalRootDir, pkgName));\n\n if (!this.linkingContext?.inCapsule) {\n this.logger.consoleSuccess(outputMessage, startTime);\n }\n return result;\n }\n\n async _getLinksToPeers(\n componentDirectoryMap: ComponentMap<string>,\n options: {\n finalRootDir: string;\n linkToDir: string;\n }\n ): Promise<LinkToDirResult[]> {\n const peers = new Set<string>();\n await Promise.all(\n componentDirectoryMap.toArray().map(async ([component]) => {\n const depList = this.dependencyResolver.getDependencies(component);\n const peerList = depList.byLifecycle('peer');\n peerList.forEach((dependency) => {\n if (dependency.getPackageName) {\n peers.add(dependency.getPackageName());\n }\n });\n })\n );\n const fromDir = path.join(options.finalRootDir, 'node_modules');\n const toDir = path.join(options.linkToDir, 'node_modules');\n return Array.from(peers).map((packageName) => ({\n componentId: packageName,\n linksDetail: {\n packageName,\n from: path.join(fromDir, packageName),\n to: path.join(toDir, packageName),\n },\n }));\n }\n\n async linkCoreAspectsAndLegacy(\n rootDir: string,\n componentIds: ComponentID[] = [],\n options: Pick<LinkingOptions, 'linkTeambitBit' | 'linkCoreAspects'> = {}\n ) {\n const result: LinkResults = {};\n const componentIdsWithoutVersions: string[] = [];\n componentIds.map((id) => {\n componentIdsWithoutVersions.push(id.toString({ ignoreVersion: true }));\n return undefined;\n });\n const linkingOpts = Object.assign({}, DEFAULT_LINKING_OPTIONS, this.linkingOptions || {}, options || {});\n if (linkingOpts.linkTeambitBit && !this.isBitRepoWorkspace(rootDir)) {\n const bitLink = await this.linkBitAspectIfNotExist(\n path.join(rootDir, 'node_modules'),\n componentIdsWithoutVersions\n );\n result.teambitBitLink = bitLink;\n }\n\n let mainAspectPath = result.teambitBitLink?.linkDetail.from;\n if (!mainAspectPath && this.aspectLoader.mainAspect) {\n if (!this.aspectLoader.mainAspect.packageName) {\n throw new MainAspectNotLinkable();\n }\n mainAspectPath = path.join(rootDir, 'node_modules', this.aspectLoader.mainAspect.packageName);\n }\n if (linkingOpts.linkCoreAspects && !this.isBitRepoWorkspace(rootDir)) {\n const hasLocalInstallation = !linkingOpts.linkTeambitBit;\n if (mainAspectPath) {\n result.coreAspectsLinks = await this.linkNonExistingCoreAspects(componentIdsWithoutVersions, {\n targetModulesDir: path.join(rootDir, 'node_modules'),\n mainAspectPath,\n hasLocalInstallation,\n });\n } else {\n result.coreAspectsLinks = [];\n }\n }\n\n if (mainAspectPath) {\n // the following line links @teambit/legacy to the workspace node_modules. at this point, we removed all\n // @teambit/legacy occurrences from the repo but others/external repos still have it.\n result.teambitLegacyLink = this.linkNonAspectCorePackages(rootDir, 'legacy', mainAspectPath);\n result.harmonyLink = this.linkNonAspectCorePackages(rootDir, 'harmony', mainAspectPath);\n }\n return result;\n }\n\n private async linkToDir(rootDir: string, targetDir: string, components: Component[]): Promise<LinkToDirResult[]> {\n const results: LinkToDirResult[] = components.map((component) => {\n const componentPackageName = componentIdToPackageName(component.state._consumer);\n return {\n componentId: component.id.toString(),\n linksDetail: {\n packageName: componentPackageName,\n from: path.join(rootDir, 'node_modules', componentPackageName),\n to: path.join(targetDir, 'node_modules', componentPackageName),\n },\n };\n });\n return results;\n }\n\n /**\n * Add symlinks from the node_modules in the component's root-dir to the workspace node_modules\n * of the component. e.g.\n * <ws-root>/node_modules/comp1/node_modules/<dep> -> <ws-root>/components/comp1/node_modules/<dep>\n * This is needed because the component is compiled into the dist folder at <ws-root>/node_modules/comp1/dist,\n * so the files in the dist folder need to find the right dependencies of comp1.\n */\n private addSymlinkFromComponentDirNMToWorkspaceDirNM(\n rootDir: string,\n componentDirectoryMap: ComponentMap<string>\n ): NestedNMDepsLinksResult[] {\n const rootNodeModules = path.join(rootDir, 'node_modules');\n const getPackagesFoldersToLink = (dir: string, parent?: string): NestedModuleFolderEntry[] => {\n const folders = fs\n .readdirSync(dir, { withFileTypes: true })\n .filter((dirent) => {\n if (dirent.name.startsWith('.')) {\n return false;\n }\n return dirent.isDirectory() || dirent.isSymbolicLink();\n })\n .map((dirent) => {\n const dirPath = path.join(dir, dirent.name);\n const moduleName = parent ? `${parent}/${dirent.name}` : dirent.name;\n // If we have a folder with a name of built in module (like events)\n // the resolve from will resolve it from the core, so it will return something like 'events'\n // instead of the path.\n // adding a '/' at the end solve this\n const moduleNameToResolve = isBuiltinModule(moduleName) ? `${moduleName}/` : moduleName;\n // This is a scoped package, need to go inside\n if (dirent.name.startsWith('@')) {\n return getPackagesFoldersToLink(dirPath, dirent.name);\n }\n\n if (dirent.isSymbolicLink()) {\n const resolvedModuleFrom = resolveModuleFromDir(dir, moduleNameToResolve);\n if (!resolvedModuleFrom) {\n return {\n moduleName,\n path: dirPath,\n };\n }\n return {\n origPath: dirPath,\n moduleName,\n path: resolveModuleDirFromFile(resolvedModuleFrom, moduleName),\n };\n }\n return {\n moduleName,\n path: dirPath,\n };\n });\n return flatten(folders);\n };\n const linksOfAllComponents = componentDirectoryMap.toArray().map(([component, dir]) => {\n const compDirNM = path.join(dir, 'node_modules');\n if (!fs.existsSync(compDirNM)) return undefined;\n // TODO: support modules with scoped packages (start with @) - we need to make this logic 2 levels\n\n const componentPackageName = componentIdToPackageName(component.state._consumer);\n const innerNMofComponentInNM = path.join(rootNodeModules, componentPackageName);\n // If the folder itself is a symlink, do not try to symlink inside it\n if (isPathSymlink(innerNMofComponentInNM)) {\n return undefined;\n }\n const packagesFoldersToLink: NestedModuleFolderEntry[] = getPackagesFoldersToLink(compDirNM);\n fs.ensureDirSync(innerNMofComponentInNM);\n\n const oneComponentLinks: LinkDetail[] = packagesFoldersToLink.map((folderEntry: NestedModuleFolderEntry) => {\n const linkTarget = path.join(innerNMofComponentInNM, 'node_modules', folderEntry?.moduleName);\n const linkSrc = folderEntry.path;\n // This works as well, consider using it instead\n // const linkSrc = folderEntry.origPath || folderEntry.path;\n const origPath = folderEntry.origPath ? `(${folderEntry.origPath})` : '';\n const linkDetail: LinkDetail = {\n packageName: folderEntry.moduleName,\n from: `${linkSrc} ${origPath}`,\n to: linkTarget,\n };\n this.logger.info(\n `linking nested dependency ${folderEntry.moduleName} for component ${component}. link src: ${linkSrc} link target: ${linkTarget}`\n );\n return linkDetail;\n });\n\n const filteredLinks = compact(oneComponentLinks);\n return {\n componentId: component.id.toString(),\n linksDetail: filteredLinks,\n };\n });\n const filteredLinks = compact(linksOfAllComponents);\n return filteredLinks;\n }\n\n private async linkDepsResolvedFromEnv(\n componentDirectoryMap: ComponentMap<string>\n ): Promise<Array<DepsLinkedToEnvResult>> {\n const componentsNeedLinks: {\n component: Component;\n dir: string;\n env;\n resolvedFromEnv;\n envId?: string;\n envDir?: string;\n }[] = [];\n\n const componentsNeedLinksP = componentDirectoryMap.toArray().map(async ([component, dir]) => {\n const policy = await this.dependencyResolver.getPolicy(component);\n const resolvedFromEnv = policy.getResolvedFromEnv();\n // Nothing should be resolved from env, do nothing\n if (!resolvedFromEnv.length) {\n return;\n }\n const env = this.envs.getEnv(component);\n const componentNeedLink = {\n component,\n dir,\n env,\n resolvedFromEnv,\n };\n componentsNeedLinks.push(componentNeedLink);\n });\n\n await Promise.all(componentsNeedLinksP);\n // Stop if there are not components needs to be linked\n if (!componentsNeedLinks || !componentsNeedLinks.length) return [];\n const envsStringIds = componentsNeedLinks.map((obj) => obj.env.id);\n const uniqEnvIds = uniq(envsStringIds);\n const host = this.componentAspect.getHost();\n const resolvedEnvIds = await host.resolveMultipleComponentIds(uniqEnvIds);\n const resolvedAspects = await host.resolveAspects(undefined, resolvedEnvIds);\n const resolvedAspectsIndex = resolvedAspects.reduce((acc, curr) => {\n if (curr.getId) {\n acc[curr.getId] = curr;\n }\n return acc;\n }, {});\n const allLinksP = componentsNeedLinks.map(async (entry) => {\n const oneComponentLinksP: Array<LinkDetail | undefined> = entry.resolvedFromEnv.entries.map(async (depEntry) => {\n const linkTarget = path.join(entry.dir, 'node_modules', depEntry.dependencyId);\n const envDir = resolvedAspectsIndex[entry.env.id].aspectPath;\n const resolvedModule = resolveModuleFromDir(envDir, depEntry.dependencyId);\n if (!resolvedModule) {\n this.logger.console(`could not resolve ${depEntry.dependencyId} from env directory ${envDir}`);\n return undefined;\n }\n const linkSrc = resolveModuleDirFromFile(resolvedModule, depEntry.dependencyId);\n const linkDetail: LinkDetail = {\n packageName: depEntry.dependencyId,\n from: linkSrc,\n to: linkTarget,\n };\n this.logger.info(\n `linking dependency ${depEntry.dependencyId} from env directory ${envDir}. link src: ${linkSrc} link target: ${linkTarget}`\n );\n\n return linkDetail;\n });\n const oneComponentLinks = await Promise.all(oneComponentLinksP);\n const filteredLinks = compact(oneComponentLinks);\n const depsLinkedToEnvResult: DepsLinkedToEnvResult = {\n componentId: entry.component.id.toString(),\n linksDetail: filteredLinks,\n };\n return depsLinkedToEnvResult;\n });\n return Promise.all(allLinksP);\n }\n\n private async linkBitAspectIfNotExist(\n dir: string,\n componentIds: string[]\n ): Promise<CoreAspectLinkResult | undefined> {\n if (!this.aspectLoader.mainAspect) return undefined;\n const mainAspectId = this.aspectLoader.mainAspect.id;\n const existing = componentIds.find((id) => {\n return id === mainAspectId;\n });\n\n if (existing) {\n return undefined;\n }\n const linkDetail = await this.linkBit(dir);\n if (!linkDetail) return undefined;\n return {\n aspectId: mainAspectId,\n linkDetail,\n };\n }\n\n async linkBit(dir: string): Promise<LinkDetail | undefined> {\n if (!this.aspectLoader.mainAspect.packageName) {\n throw new MainAspectNotLinkable();\n }\n const target = path.join(dir, this.aspectLoader.mainAspect.packageName);\n const shouldSymlink = this.removeSymlinkTarget(target);\n if (!shouldSymlink) return undefined;\n const src =\n this._getPkgPathFromCurrentBitDir(this.aspectLoader.mainAspect.packageName) ?? this.aspectLoader.mainAspect.path;\n await fs.ensureDir(path.dirname(target));\n return { packageName: this.aspectLoader.mainAspect.packageName, from: src, to: target };\n }\n\n private async linkNonExistingCoreAspects(\n componentIds: string[],\n opts: {\n targetModulesDir: string;\n mainAspectPath: string;\n hasLocalInstallation?: boolean;\n }\n ): Promise<CoreAspectLinkResult[]> {\n const coreAspectsIds = this.aspectLoader.getCoreAspectIds();\n const filtered = coreAspectsIds.filter((aspectId) => {\n // Remove bit aspect\n if (aspectId === this.aspectLoader.mainAspect?.id) {\n return false;\n }\n // TODO: use the aspect id once default scope is resolved and the component dir map has the id with scope\n const name = getCoreAspectName(aspectId);\n const existing = componentIds.find((componentId) => {\n return componentId === name || componentId === aspectId;\n });\n if (existing) {\n return false;\n }\n return true;\n });\n\n this.logger.debug(`linkNonExistingCoreAspects: linking the following core aspects ${filtered.join()}`);\n\n const results = filtered.map((id) => this.linkCoreAspect(id, opts));\n return compact(results);\n }\n\n private isBitRepoWorkspace(dir: string) {\n // A special condition to not link core aspects in bit workspace itself\n if (this.aspectLoader.mainAspect?.path.startsWith(dir)) {\n return true;\n }\n return false;\n }\n\n private linkCoreAspect(\n id: string,\n {\n targetModulesDir,\n mainAspectPath,\n hasLocalInstallation,\n }: {\n targetModulesDir: string;\n mainAspectPath: string;\n hasLocalInstallation?: boolean;\n }\n ): CoreAspectLinkResult | undefined {\n const name = getCoreAspectName(id);\n const packageName = getCoreAspectPackageName(id);\n let aspectDir = path.join(mainAspectPath, 'dist', name);\n const target = path.join(targetModulesDir, packageName);\n const fromDir = this._getPkgPathFromCurrentBitDir(packageName);\n if (fromDir) {\n return { aspectId: id, linkDetail: { packageName, from: fromDir, to: target } };\n }\n const shouldSymlink = this.removeSymlinkTarget(target, hasLocalInstallation);\n if (!shouldSymlink) return undefined;\n const isAspectDirExist = fs.pathExistsSync(aspectDir);\n if (!isAspectDirExist) {\n this.logger.debug(`linkCoreAspect: aspectDir ${aspectDir} does not exist, linking it to ${target}`);\n aspectDir = getAspectDir(id);\n return { aspectId: id, linkDetail: { packageName, from: aspectDir, to: target } };\n }\n\n try {\n // eslint-disable-next-line global-require, import/no-dynamic-require\n const module = require(aspectDir);\n const aspectPath = path.resolve(path.join(module.path, '..', '..'));\n this.logger.debug(`linkCoreAspect: linking aspectPath ${aspectPath} to ${target}`);\n return { aspectId: id, linkDetail: { packageName, from: aspectPath, to: target } };\n } catch (err: any) {\n throw new CoreAspectLinkError(id, err);\n }\n }\n\n /**\n * returns true if it's safe to symlink it later.\n */\n private removeSymlinkTarget(targetPath: string, hasLocalInstallation = false): boolean {\n // TODO: change to fs.lstatSync(dest, {throwIfNoEntry: false});\n // TODO: this requires to upgrade node to v15.3.0 to have the throwIfNoEntry property (maybe upgrade fs-extra will work as well)\n // TODO: we don't use fs.pathExistsSync since it will return false in case the dest is a symlink which will result error on write\n let targetStat: Stats | undefined;\n try {\n targetStat = fs.lstatSync(targetPath);\n // eslint-disable-next-line no-empty\n } catch {}\n if (targetStat && !hasLocalInstallation) {\n // Do not override links created by other means\n if (!targetStat.isSymbolicLink()) {\n this.logger.debug(`removing link target, target ${targetPath} already exist. skipping it`);\n return false;\n }\n return true;\n }\n return true;\n }\n\n private _getPkgPathFromCurrentBitDir(packageName: string): string | undefined {\n if (!this._currentBitDir) return undefined;\n return path.join(this._currentBitDir, 'node_modules', packageName);\n }\n\n private linkNonCorePackages(rootDir: string, packageName: string): LinkDetail {\n const target = path.join(rootDir, 'node_modules', packageName);\n const fromDirBvm = this._getPkgPathFromCurrentBitDir(packageName);\n if (fromDirBvm) {\n return { packageName, from: fromDirBvm, to: target };\n }\n const fromDirBitRepo = getDistDirForDevEnv(packageName);\n return { packageName, from: fromDirBitRepo, to: target };\n }\n\n private linkNonAspectCorePackages(rootDir: string, name: string, mainAspectPath: string): LinkDetail | undefined {\n const distDir = path.join(mainAspectPath, 'dist', name);\n\n const packageName = `@teambit/${name}`;\n const target = path.join(rootDir, 'node_modules', packageName);\n const fromDir = this._getPkgPathFromCurrentBitDir(packageName);\n if (fromDir) {\n return { packageName, from: fromDir, to: target };\n }\n const isDistDirExist = fs.pathExistsSync(distDir);\n if (!isDistDirExist) {\n const newDir = getDistDirForDevEnv(packageName);\n return { packageName, from: newDir, to: target };\n }\n\n try {\n // eslint-disable-next-line global-require, import/no-dynamic-require\n const module = require(distDir);\n const resolvedPath = path.resolve(path.join(module.path, '..', '..'));\n return { packageName, from: resolvedPath, to: target };\n } catch (err: any) {\n throw new NonAspectCorePackageLinkError(err, packageName);\n }\n }\n}\n\n/**\n * When running dev env (bd) we need to get the harmony/legacy folder from the node_modules of the clone\n */\nfunction getDistDirForDevEnv(packageName: string): string {\n let moduleDirectory = require.resolve(packageName);\n let dirPath;\n if (moduleDirectory.includes(packageName)) {\n dirPath = path.join(moduleDirectory, '../..'); // to remove the \"index.js\" at the end\n } else {\n // This is usually required for the @teambit/legacy, as we re inside the nm so we can't find it in the other way\n const nmDir = __dirname.substring(0, __dirname.indexOf('@teambit'));\n dirPath = path.join(nmDir, packageName);\n moduleDirectory = require.resolve(packageName, { paths: [nmDir] });\n }\n if (!fs.existsSync(dirPath)) {\n throw new BitError(`unable to find ${packageName} in ${dirPath}`);\n }\n\n return dirPath;\n}\n\n// TODO: extract to new component\nfunction resolveModuleFromDir(fromDir: string, moduleId: string, silent = true): string | undefined {\n if (silent) {\n return resolveFrom.silent(fromDir, moduleId);\n }\n return resolveFrom(fromDir, moduleId);\n}\n\n// TODO: extract to new component\nfunction resolveModuleDirFromFile(resolvedModulePath: string, moduleId: string): string {\n const NM = 'node_modules';\n if (resolvedModulePath.includes(NM)) {\n return path.join(resolvedModulePath.slice(0, resolvedModulePath.lastIndexOf(NM) + NM.length), moduleId);\n }\n\n const [start, end] = resolvedModulePath.split('@');\n if (!end) return path.basename(resolvedModulePath);\n const versionStr = head(end.split('/'));\n return `${start}@${versionStr}`;\n}\n\nfunction isPathSymlink(folderPath: string): boolean | undefined {\n // TODO: change to fs.lstatSync(dest, {throwIfNoEntry: false}); once upgrade fs-extra\n try {\n const stat = fs.lstatSync(folderPath);\n return stat.isSymbolicLink();\n } catch {\n return undefined;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_isBuiltinModule","data","_interopRequireDefault","require","_path","_lodash","_fsExtra","_resolveFrom","_bvm","_pkgModules","_dependenciesFs","_bitError","_aspectLoader","_exceptions","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","DEFAULT_LINKING_OPTIONS","rewire","linkTeambitBit","linkCoreAspects","linkDepsResolvedFromEnv","linkNestedDepsInNM","DependencyLinker","constructor","dependencyResolver","aspectLoader","componentAspect","envs","logger","rootDir","linkingOptions","linkingContext","_currentBitDir","findCurrentBvmDir","calculateLinkedDeps","componentDirectoryMap","options","linkResults","_calculateLinks","localLinks","teambitBitLink","linkDetailToLocalDepEntry","linkDetail","coreAspectsLinks","link","harmonyLink","teambitLegacyLink","slotOriginatedLinks","map","l","resolvedFromEnvLinks","linksDetail","linkToDirResults","linkedRootDeps","fromEntries","key","packageName","from","outputMessage","inCapsule","setStatusLine","debug","omit","startTime","process","hrtime","result","finalRootDir","linkingOpts","assign","RootDirNotDefined","linkToDir","components","toArray","component","includePeers","_getLinksToPeers","nestedDepsInNmLinks","addSymlinkFromComponentDirNMToWorkspaceDirNM","componentIds","_dir","comp","id","undefined","linkCoreAspectsAndLegacy","registeredPackages","additionalPackagesToLink","pkgName","linkNonCorePackages","consoleSuccess","peers","Set","Promise","all","depList","getDependencies","peerList","byLifecycle","dependency","getPackageName","add","fromDir","path","join","toDir","Array","componentId","to","componentIdsWithoutVersions","toString","ignoreVersion","isBitRepoWorkspace","bitLink","linkBitAspectIfNotExist","mainAspectPath","mainAspect","MainAspectNotLinkable","hasLocalInstallation","linkNonExistingCoreAspects","targetModulesDir","linkNonAspectCorePackages","targetDir","results","componentPackageName","componentIdToPackageName","state","_consumer","rootNodeModules","getPackagesFoldersToLink","dir","parent","folders","fs","readdirSync","withFileTypes","dirent","name","startsWith","isDirectory","isSymbolicLink","dirPath","moduleName","moduleNameToResolve","isBuiltinModule","resolvedModuleFrom","resolveModuleFromDir","origPath","resolveModuleDirFromFile","flatten","linksOfAllComponents","compDirNM","existsSync","innerNMofComponentInNM","isPathSymlink","packagesFoldersToLink","ensureDirSync","oneComponentLinks","folderEntry","linkTarget","linkSrc","info","filteredLinks","compact","componentsNeedLinks","componentsNeedLinksP","policy","getPolicy","resolvedFromEnv","getResolvedFromEnv","env","getEnv","componentNeedLink","envsStringIds","obj","uniqEnvIds","uniq","host","getHost","resolvedEnvIds","resolveMultipleComponentIds","resolvedAspects","resolveAspects","resolvedAspectsIndex","reduce","acc","curr","getId","allLinksP","entry","oneComponentLinksP","entries","depEntry","dependencyId","envDir","aspectPath","resolvedModule","console","depsLinkedToEnvResult","mainAspectId","existing","find","linkBit","aspectId","target","shouldSymlink","removeSymlinkTarget","src","_getPkgPathFromCurrentBitDir","ensureDir","dirname","opts","coreAspectsIds","getCoreAspectIds","filtered","getCoreAspectName","linkCoreAspect","syncCoreAspectLinksForEnvs","idsInWorkspace","authoredCoreAspects","some","hoistedStoreDir","pathExistsSync","links","getCoreAspectPackageName","linkPath","hasCompiledMain","removeCoreAspectBootstrapLink","_getCoreAspectSourceDir","packagesToLink","createLinks","skipIfSymlinkValid","err","warn","message","pkgDir","main","readJsonSync","workspaceDir","isUsableSource","_realpathIsInside","fromBvmDir","fromRunningBit","getAspectDir","realpathSync","sep","lstatSync","remove","aspectDir","isAspectDirExist","module","resolve","CoreAspectLinkError","targetPath","targetStat","fromDirBvm","fromDirBitRepo","getDistDirForDevEnv","distDir","isDistDirExist","newDir","resolvedPath","NonAspectCorePackageLinkError","exports","moduleDirectory","includes","nmDir","__dirname","substring","indexOf","paths","BitError","moduleId","silent","resolveFrom","resolvedModulePath","NM","slice","lastIndexOf","start","end","split","basename","versionStr","head","folderPath","stat"],"sources":["dependency-linker.ts"],"sourcesContent":["import isBuiltinModule from 'is-builtin-module';\nimport path from 'path';\nimport { uniq, compact, flatten, head, omit } from 'lodash';\nimport type { Stats } from 'fs';\nimport fs from 'fs-extra';\nimport resolveFrom from 'resolve-from';\nimport { findCurrentBvmDir } from '@teambit/bvm.path';\nimport type { ComponentMap, Component, ComponentID, ComponentMain } from '@teambit/component';\nimport type { Logger } from '@teambit/logger';\nimport type { PathAbsolute } from '@teambit/toolbox.path.path';\nimport { componentIdToPackageName } from '@teambit/pkg.modules.component-package-name';\nimport { createLinks } from '@teambit/dependencies.fs.linked-dependencies';\nimport { BitError } from '@teambit/bit-error';\nimport type { EnvsMain } from '@teambit/envs';\nimport type { AspectLoaderMain } from '@teambit/aspect-loader';\nimport { getCoreAspectName, getCoreAspectPackageName, getAspectDir } from '@teambit/aspect-loader';\nimport {\n MainAspectNotLinkable,\n RootDirNotDefined,\n CoreAspectLinkError,\n NonAspectCorePackageLinkError,\n} from './exceptions';\nimport type { DependencyResolverMain } from './dependency-resolver.main.runtime';\n\n/**\n * context of the linking process.\n */\nexport type DepLinkerContext = {\n inCapsule?: boolean;\n};\n\nexport type LinkingOptions = {\n rewire?: boolean;\n /**\n * Whether to create link to @teambit/bit in the root node modules\n */\n linkTeambitBit?: boolean;\n /**\n * Whether to create links in the root dir node modules to all core aspects\n */\n linkCoreAspects?: boolean;\n\n linkNestedDepsInNM?: boolean;\n\n /**\n * link to another project, so that project could use components from this workspace.\n * similar to npm/yarn link\n */\n linkToDir?: string;\n\n /**\n * Link peer dependencies of the components to the target project.\n * Peer dependencies should be singletons, so the project should use the same\n * version of the peer dependency as the linked in components.\n */\n includePeers?: boolean;\n\n /**\n * whether link should import objects before linking\n */\n fetchObject?: boolean;\n\n /**\n * Link deps which should be linked to the env\n */\n linkDepsResolvedFromEnv?: boolean;\n\n /**\n * non-core packages to link. provided by addPackagesToLink slot of the deps-resolver aspect\n */\n additionalPackagesToLink?: string[];\n};\n\nconst DEFAULT_LINKING_OPTIONS: LinkingOptions = {\n rewire: false,\n linkTeambitBit: true,\n linkCoreAspects: true,\n linkDepsResolvedFromEnv: true,\n linkNestedDepsInNM: true,\n};\n\nexport type LinkDetail = { packageName: string; from: string; to: string };\n\nexport type CoreAspectLinkResult = {\n aspectId: string;\n linkDetail: LinkDetail;\n};\n\nexport type DepsLinkedToEnvResult = {\n componentId: string;\n linksDetail: LinkDetail[];\n};\n\nexport type NestedNMDepsLinksResult = {\n componentId: string;\n linksDetail: LinkDetail[];\n};\n\nexport type LinkToDirResult = {\n componentId: string;\n linksDetail: LinkDetail;\n};\n\nexport type LinkResults = {\n teambitBitLink?: CoreAspectLinkResult;\n coreAspectsLinks?: CoreAspectLinkResult[];\n harmonyLink?: LinkDetail;\n teambitLegacyLink?: LinkDetail;\n resolvedFromEnvLinks?: DepsLinkedToEnvResult[];\n nestedDepsInNmLinks?: NestedNMDepsLinksResult[];\n linkToDirResults?: LinkToDirResult[];\n /**\n * non-core packages to link. provided by addPackagesToLink slot of the deps-resolver aspect\n */\n slotOriginatedLinks?: LinkDetail[];\n};\n\ntype NestedModuleFolderEntry = {\n moduleName: string;\n path: string;\n origPath?: string;\n};\n\nexport class DependencyLinker {\n private _currentBitDir: string | null;\n\n constructor(\n private dependencyResolver: DependencyResolverMain,\n\n private aspectLoader: AspectLoaderMain,\n\n private componentAspect: ComponentMain,\n\n private envs: EnvsMain,\n\n private logger: Logger,\n\n private rootDir?: string | PathAbsolute,\n\n private linkingOptions?: LinkingOptions,\n\n private linkingContext: DepLinkerContext = {}\n ) {\n this._currentBitDir = findCurrentBvmDir();\n }\n\n async calculateLinkedDeps(\n rootDir: string | undefined,\n componentDirectoryMap: ComponentMap<string>,\n options: LinkingOptions = {}\n ): Promise<{ linkedRootDeps: Record<string, string>; linkResults: LinkResults }> {\n const linkResults = await this._calculateLinks(rootDir, componentDirectoryMap, options);\n const localLinks: Array<[string, string]> = [];\n if (linkResults.teambitBitLink) {\n localLinks.push(this.linkDetailToLocalDepEntry(linkResults.teambitBitLink.linkDetail));\n }\n if (linkResults.coreAspectsLinks) {\n linkResults.coreAspectsLinks.forEach((link) => {\n localLinks.push(this.linkDetailToLocalDepEntry(link.linkDetail));\n });\n }\n if (linkResults.harmonyLink) {\n localLinks.push(this.linkDetailToLocalDepEntry(linkResults.harmonyLink));\n }\n if (linkResults.teambitLegacyLink) {\n localLinks.push(this.linkDetailToLocalDepEntry(linkResults.teambitLegacyLink));\n }\n if (linkResults.slotOriginatedLinks) {\n localLinks.push(...linkResults.slotOriginatedLinks.map((l) => this.linkDetailToLocalDepEntry(l)));\n }\n if (linkResults.resolvedFromEnvLinks) {\n linkResults.resolvedFromEnvLinks.forEach((link) => {\n link.linksDetail.forEach((linkDetail) => {\n localLinks.push(this.linkDetailToLocalDepEntry(linkDetail));\n });\n });\n }\n if (linkResults.linkToDirResults) {\n linkResults.linkToDirResults.forEach((link) => {\n localLinks.push(this.linkDetailToLocalDepEntry(link.linksDetail));\n });\n }\n return {\n linkedRootDeps: Object.fromEntries(localLinks.map(([key, value]) => [key, `link:${value}`])),\n linkResults,\n };\n }\n\n private linkDetailToLocalDepEntry(linkDetail: LinkDetail): [string, string] {\n return [linkDetail.packageName, linkDetail.from];\n }\n\n private async _calculateLinks(\n rootDir: string | undefined,\n componentDirectoryMap: ComponentMap<string>,\n options: LinkingOptions = {}\n ): Promise<LinkResults> {\n const outputMessage = this.linkingContext?.inCapsule\n ? `(capsule) linking components in root dir: ${rootDir || this.rootDir}`\n : 'linking components';\n if (!this.linkingContext?.inCapsule) {\n this.logger.setStatusLine(outputMessage);\n }\n this.logger.debug('linking components with options', omit(options, ['consumer']));\n const startTime = process.hrtime();\n\n let result: LinkResults = {};\n const finalRootDir = rootDir || this.rootDir;\n const linkingOpts = Object.assign({}, DEFAULT_LINKING_OPTIONS, this.linkingOptions || {}, options || {});\n if (!finalRootDir) {\n throw new RootDirNotDefined();\n }\n if (options.linkToDir) {\n const components = componentDirectoryMap.toArray().map(([component]) => component);\n const linkToDirResults = await this.linkToDir(finalRootDir, options.linkToDir, components);\n result.linkToDirResults = linkToDirResults;\n if (options.includePeers) {\n result.linkToDirResults.push(\n ...(await this._getLinksToPeers(componentDirectoryMap, { finalRootDir, linkToDir: options.linkToDir }))\n );\n }\n return result;\n }\n\n // Link deps which should be linked to the env\n if (linkingOpts.linkDepsResolvedFromEnv) {\n result.resolvedFromEnvLinks = await this.linkDepsResolvedFromEnv(componentDirectoryMap);\n }\n if (linkingOpts.linkNestedDepsInNM) {\n result.nestedDepsInNmLinks = this.addSymlinkFromComponentDirNMToWorkspaceDirNM(\n finalRootDir,\n componentDirectoryMap\n );\n }\n\n // We remove the version since it used in order to check if it's core aspects, and the core aspects arrived from aspect loader without versions\n const componentIds: ComponentID[] = [];\n componentDirectoryMap.map((_dir, comp) => {\n componentIds.push(comp.id);\n return undefined;\n });\n result = {\n ...result,\n ...(await this.linkCoreAspectsAndLegacy(finalRootDir, componentIds, linkingOpts)),\n };\n const registeredPackages = this.linkingOptions?.additionalPackagesToLink || [];\n result.slotOriginatedLinks = registeredPackages.map((pkgName) => this.linkNonCorePackages(finalRootDir, pkgName));\n\n if (!this.linkingContext?.inCapsule) {\n this.logger.consoleSuccess(outputMessage, startTime);\n }\n return result;\n }\n\n async _getLinksToPeers(\n componentDirectoryMap: ComponentMap<string>,\n options: {\n finalRootDir: string;\n linkToDir: string;\n }\n ): Promise<LinkToDirResult[]> {\n const peers = new Set<string>();\n await Promise.all(\n componentDirectoryMap.toArray().map(async ([component]) => {\n const depList = this.dependencyResolver.getDependencies(component);\n const peerList = depList.byLifecycle('peer');\n peerList.forEach((dependency) => {\n if (dependency.getPackageName) {\n peers.add(dependency.getPackageName());\n }\n });\n })\n );\n const fromDir = path.join(options.finalRootDir, 'node_modules');\n const toDir = path.join(options.linkToDir, 'node_modules');\n return Array.from(peers).map((packageName) => ({\n componentId: packageName,\n linksDetail: {\n packageName,\n from: path.join(fromDir, packageName),\n to: path.join(toDir, packageName),\n },\n }));\n }\n\n async linkCoreAspectsAndLegacy(\n rootDir: string,\n componentIds: ComponentID[] = [],\n options: Pick<LinkingOptions, 'linkTeambitBit' | 'linkCoreAspects'> = {}\n ) {\n const result: LinkResults = {};\n const componentIdsWithoutVersions: string[] = [];\n componentIds.map((id) => {\n componentIdsWithoutVersions.push(id.toString({ ignoreVersion: true }));\n return undefined;\n });\n const linkingOpts = Object.assign({}, DEFAULT_LINKING_OPTIONS, this.linkingOptions || {}, options || {});\n if (linkingOpts.linkTeambitBit && !this.isBitRepoWorkspace(rootDir)) {\n const bitLink = await this.linkBitAspectIfNotExist(\n path.join(rootDir, 'node_modules'),\n componentIdsWithoutVersions\n );\n result.teambitBitLink = bitLink;\n }\n\n let mainAspectPath = result.teambitBitLink?.linkDetail.from;\n if (!mainAspectPath && this.aspectLoader.mainAspect) {\n if (!this.aspectLoader.mainAspect.packageName) {\n throw new MainAspectNotLinkable();\n }\n mainAspectPath = path.join(rootDir, 'node_modules', this.aspectLoader.mainAspect.packageName);\n }\n if (linkingOpts.linkCoreAspects && !this.isBitRepoWorkspace(rootDir)) {\n const hasLocalInstallation = !linkingOpts.linkTeambitBit;\n if (mainAspectPath) {\n result.coreAspectsLinks = await this.linkNonExistingCoreAspects(componentIdsWithoutVersions, {\n targetModulesDir: path.join(rootDir, 'node_modules'),\n mainAspectPath,\n hasLocalInstallation,\n });\n } else {\n result.coreAspectsLinks = [];\n }\n }\n\n if (mainAspectPath) {\n // the following line links @teambit/legacy to the workspace node_modules. at this point, we removed all\n // @teambit/legacy occurrences from the repo but others/external repos still have it.\n result.teambitLegacyLink = this.linkNonAspectCorePackages(rootDir, 'legacy', mainAspectPath);\n result.harmonyLink = this.linkNonAspectCorePackages(rootDir, 'harmony', mainAspectPath);\n }\n return result;\n }\n\n private async linkToDir(rootDir: string, targetDir: string, components: Component[]): Promise<LinkToDirResult[]> {\n const results: LinkToDirResult[] = components.map((component) => {\n const componentPackageName = componentIdToPackageName(component.state._consumer);\n return {\n componentId: component.id.toString(),\n linksDetail: {\n packageName: componentPackageName,\n from: path.join(rootDir, 'node_modules', componentPackageName),\n to: path.join(targetDir, 'node_modules', componentPackageName),\n },\n };\n });\n return results;\n }\n\n /**\n * Add symlinks from the node_modules in the component's root-dir to the workspace node_modules\n * of the component. e.g.\n * <ws-root>/node_modules/comp1/node_modules/<dep> -> <ws-root>/components/comp1/node_modules/<dep>\n * This is needed because the component is compiled into the dist folder at <ws-root>/node_modules/comp1/dist,\n * so the files in the dist folder need to find the right dependencies of comp1.\n */\n private addSymlinkFromComponentDirNMToWorkspaceDirNM(\n rootDir: string,\n componentDirectoryMap: ComponentMap<string>\n ): NestedNMDepsLinksResult[] {\n const rootNodeModules = path.join(rootDir, 'node_modules');\n const getPackagesFoldersToLink = (dir: string, parent?: string): NestedModuleFolderEntry[] => {\n const folders = fs\n .readdirSync(dir, { withFileTypes: true })\n .filter((dirent) => {\n if (dirent.name.startsWith('.')) {\n return false;\n }\n return dirent.isDirectory() || dirent.isSymbolicLink();\n })\n .map((dirent) => {\n const dirPath = path.join(dir, dirent.name);\n const moduleName = parent ? `${parent}/${dirent.name}` : dirent.name;\n // If we have a folder with a name of built in module (like events)\n // the resolve from will resolve it from the core, so it will return something like 'events'\n // instead of the path.\n // adding a '/' at the end solve this\n const moduleNameToResolve = isBuiltinModule(moduleName) ? `${moduleName}/` : moduleName;\n // This is a scoped package, need to go inside\n if (dirent.name.startsWith('@')) {\n return getPackagesFoldersToLink(dirPath, dirent.name);\n }\n\n if (dirent.isSymbolicLink()) {\n const resolvedModuleFrom = resolveModuleFromDir(dir, moduleNameToResolve);\n if (!resolvedModuleFrom) {\n return {\n moduleName,\n path: dirPath,\n };\n }\n return {\n origPath: dirPath,\n moduleName,\n path: resolveModuleDirFromFile(resolvedModuleFrom, moduleName),\n };\n }\n return {\n moduleName,\n path: dirPath,\n };\n });\n return flatten(folders);\n };\n const linksOfAllComponents = componentDirectoryMap.toArray().map(([component, dir]) => {\n const compDirNM = path.join(dir, 'node_modules');\n if (!fs.existsSync(compDirNM)) return undefined;\n // TODO: support modules with scoped packages (start with @) - we need to make this logic 2 levels\n\n const componentPackageName = componentIdToPackageName(component.state._consumer);\n const innerNMofComponentInNM = path.join(rootNodeModules, componentPackageName);\n // If the folder itself is a symlink, do not try to symlink inside it\n if (isPathSymlink(innerNMofComponentInNM)) {\n return undefined;\n }\n const packagesFoldersToLink: NestedModuleFolderEntry[] = getPackagesFoldersToLink(compDirNM);\n fs.ensureDirSync(innerNMofComponentInNM);\n\n const oneComponentLinks: LinkDetail[] = packagesFoldersToLink.map((folderEntry: NestedModuleFolderEntry) => {\n const linkTarget = path.join(innerNMofComponentInNM, 'node_modules', folderEntry?.moduleName);\n const linkSrc = folderEntry.path;\n // This works as well, consider using it instead\n // const linkSrc = folderEntry.origPath || folderEntry.path;\n const origPath = folderEntry.origPath ? `(${folderEntry.origPath})` : '';\n const linkDetail: LinkDetail = {\n packageName: folderEntry.moduleName,\n from: `${linkSrc} ${origPath}`,\n to: linkTarget,\n };\n this.logger.info(\n `linking nested dependency ${folderEntry.moduleName} for component ${component}. link src: ${linkSrc} link target: ${linkTarget}`\n );\n return linkDetail;\n });\n\n const filteredLinks = compact(oneComponentLinks);\n return {\n componentId: component.id.toString(),\n linksDetail: filteredLinks,\n };\n });\n const filteredLinks = compact(linksOfAllComponents);\n return filteredLinks;\n }\n\n private async linkDepsResolvedFromEnv(\n componentDirectoryMap: ComponentMap<string>\n ): Promise<Array<DepsLinkedToEnvResult>> {\n const componentsNeedLinks: {\n component: Component;\n dir: string;\n env;\n resolvedFromEnv;\n envId?: string;\n envDir?: string;\n }[] = [];\n\n const componentsNeedLinksP = componentDirectoryMap.toArray().map(async ([component, dir]) => {\n const policy = await this.dependencyResolver.getPolicy(component);\n const resolvedFromEnv = policy.getResolvedFromEnv();\n // Nothing should be resolved from env, do nothing\n if (!resolvedFromEnv.length) {\n return;\n }\n const env = this.envs.getEnv(component);\n const componentNeedLink = {\n component,\n dir,\n env,\n resolvedFromEnv,\n };\n componentsNeedLinks.push(componentNeedLink);\n });\n\n await Promise.all(componentsNeedLinksP);\n // Stop if there are not components needs to be linked\n if (!componentsNeedLinks || !componentsNeedLinks.length) return [];\n const envsStringIds = componentsNeedLinks.map((obj) => obj.env.id);\n const uniqEnvIds = uniq(envsStringIds);\n const host = this.componentAspect.getHost();\n const resolvedEnvIds = await host.resolveMultipleComponentIds(uniqEnvIds);\n const resolvedAspects = await host.resolveAspects(undefined, resolvedEnvIds);\n const resolvedAspectsIndex = resolvedAspects.reduce((acc, curr) => {\n if (curr.getId) {\n acc[curr.getId] = curr;\n }\n return acc;\n }, {});\n const allLinksP = componentsNeedLinks.map(async (entry) => {\n const oneComponentLinksP: Array<LinkDetail | undefined> = entry.resolvedFromEnv.entries.map(async (depEntry) => {\n const linkTarget = path.join(entry.dir, 'node_modules', depEntry.dependencyId);\n const envDir = resolvedAspectsIndex[entry.env.id].aspectPath;\n const resolvedModule = resolveModuleFromDir(envDir, depEntry.dependencyId);\n if (!resolvedModule) {\n this.logger.console(`could not resolve ${depEntry.dependencyId} from env directory ${envDir}`);\n return undefined;\n }\n const linkSrc = resolveModuleDirFromFile(resolvedModule, depEntry.dependencyId);\n const linkDetail: LinkDetail = {\n packageName: depEntry.dependencyId,\n from: linkSrc,\n to: linkTarget,\n };\n this.logger.info(\n `linking dependency ${depEntry.dependencyId} from env directory ${envDir}. link src: ${linkSrc} link target: ${linkTarget}`\n );\n\n return linkDetail;\n });\n const oneComponentLinks = await Promise.all(oneComponentLinksP);\n const filteredLinks = compact(oneComponentLinks);\n const depsLinkedToEnvResult: DepsLinkedToEnvResult = {\n componentId: entry.component.id.toString(),\n linksDetail: filteredLinks,\n };\n return depsLinkedToEnvResult;\n });\n return Promise.all(allLinksP);\n }\n\n private async linkBitAspectIfNotExist(\n dir: string,\n componentIds: string[]\n ): Promise<CoreAspectLinkResult | undefined> {\n if (!this.aspectLoader.mainAspect) return undefined;\n const mainAspectId = this.aspectLoader.mainAspect.id;\n const existing = componentIds.find((id) => {\n return id === mainAspectId;\n });\n\n if (existing) {\n return undefined;\n }\n const linkDetail = await this.linkBit(dir);\n if (!linkDetail) return undefined;\n return {\n aspectId: mainAspectId,\n linkDetail,\n };\n }\n\n async linkBit(dir: string): Promise<LinkDetail | undefined> {\n if (!this.aspectLoader.mainAspect.packageName) {\n throw new MainAspectNotLinkable();\n }\n const target = path.join(dir, this.aspectLoader.mainAspect.packageName);\n const shouldSymlink = this.removeSymlinkTarget(target);\n if (!shouldSymlink) return undefined;\n const src =\n this._getPkgPathFromCurrentBitDir(this.aspectLoader.mainAspect.packageName) ?? this.aspectLoader.mainAspect.path;\n await fs.ensureDir(path.dirname(target));\n return { packageName: this.aspectLoader.mainAspect.packageName, from: src, to: target };\n }\n\n private async linkNonExistingCoreAspects(\n componentIds: string[],\n opts: {\n targetModulesDir: string;\n mainAspectPath: string;\n hasLocalInstallation?: boolean;\n }\n ): Promise<CoreAspectLinkResult[]> {\n const coreAspectsIds = this.aspectLoader.getCoreAspectIds();\n const filtered = coreAspectsIds.filter((aspectId) => {\n // Remove bit aspect\n if (aspectId === this.aspectLoader.mainAspect?.id) {\n return false;\n }\n // TODO: use the aspect id once default scope is resolved and the component dir map has the id with scope\n const name = getCoreAspectName(aspectId);\n const existing = componentIds.find((componentId) => {\n return componentId === name || componentId === aspectId;\n });\n if (existing) {\n return false;\n }\n return true;\n });\n\n this.logger.debug(`linkNonExistingCoreAspects: linking the following core aspects ${filtered.join()}`);\n\n const results = filtered.map((id) => this.linkCoreAspect(id, opts));\n return compact(results);\n }\n\n /**\n * The core aspects are phantom dependencies of the published envs - an env requires\n * `@teambit/builder` (and `@teambit/ui`, `@teambit/pkg`...) without declaring it, and relies on the\n * running bit installation to provide it. `linkCoreAspectsAndLegacy` is what normally satisfies\n * that, by linking bit's own copies into the workspace's root node_modules.\n *\n * A workspace that authors the core aspects has them as source components instead, so they're\n * excluded from that linking - such a workspace must build and load its own. That leaves the envs'\n * phantom require resolving to a source component, which has no `main` until it's been compiled,\n * so an env resolved from the root (see `resolveEnvsFromRoots`) fails to load during install -\n * before the compile step that would have made it resolvable.\n *\n * Bridge that gap by linking bit's own (always compiled) copies into pnpm's hoisted store. That\n * directory is on the module resolution path of packages inside the virtual store - the published\n * envs - and not on the resolution path of the workspace's own components, so the envs bootstrap\n * against the running bit while the workspace still builds and loads its own core aspects.\n *\n * This is a reconciler - each core aspect converges to \"link present iff its source is still\n * uncompiled\", so the same call both creates the links during bootstrap and removes them once the\n * source components have been compiled.\n *\n * Only reached from a workspace with `linkCoreAspects` off, i.e. one that authors them.\n */\n async syncCoreAspectLinksForEnvs(rootDir: string, componentIds: ComponentID[]): Promise<void> {\n const idsInWorkspace = componentIds.map((id) => id.toString({ ignoreVersion: true }));\n const authoredCoreAspects = this.aspectLoader.getCoreAspectIds().filter((aspectId) => {\n if (aspectId === this.aspectLoader.mainAspect?.id) return false;\n // the same naive comparison done by linkNonExistingCoreAspects, whose filter this inverts\n const name = getCoreAspectName(aspectId);\n return idsInWorkspace.some((id) => id === name || id === aspectId);\n });\n if (!authoredCoreAspects.length) return;\n\n const hoistedStoreDir = path.join(rootDir, 'node_modules', '.pnpm');\n // the hoisted store only exists in a pnpm-managed workspace. anywhere else this directory is on\n // no resolution path, so there is nothing to bridge - and it must not be fabricated here.\n if (!fs.pathExistsSync(hoistedStoreDir)) return;\n\n const links: Record<string, string> = {};\n for (const aspectId of authoredCoreAspects) {\n const packageName = getCoreAspectPackageName(aspectId);\n const linkPath = path.join(hoistedStoreDir, 'node_modules', packageName);\n if (this.hasCompiledMain(path.join(rootDir, 'node_modules', packageName))) {\n await this.removeCoreAspectBootstrapLink(linkPath, rootDir);\n continue;\n }\n const fromDir = this._getCoreAspectSourceDir(aspectId, packageName, rootDir);\n if (fromDir) links[packageName] = `link:${fromDir}`;\n }\n const packagesToLink = Object.keys(links);\n if (!packagesToLink.length) return;\n this.logger.debug(`syncCoreAspectLinksForEnvs: linking ${packagesToLink.join(', ')}`);\n try {\n await createLinks(hoistedStoreDir, links, { skipIfSymlinkValid: true });\n } catch (err: any) {\n // the bridge is best-effort. without it the envs may fail to load during install, which the\n // install flow already tolerates - a broken bridge must not turn that into a fatal error.\n this.logger.warn(\n `syncCoreAspectLinksForEnvs: failed linking core aspects into the hoisted store. ${err.message}`\n );\n }\n }\n\n private hasCompiledMain(pkgDir: string): boolean {\n try {\n const { main } = fs.readJsonSync(path.join(pkgDir, 'package.json'));\n return fs.pathExistsSync(path.join(pkgDir, main || 'index.js'));\n } catch {\n return false;\n }\n }\n\n /**\n * the directory to bridge a core aspect from: the running bit installation's copy. bvm is where a\n * released bit runs from; when bit runs from elsewhere (e.g. installed through a package manager),\n * fall back to the module-resolution strategy aspect-loader uses to locate core aspects.\n *\n * a copy is only usable as a bridge source if its own compiled main exists AND it lives outside\n * the workspace. the second condition is what lets removeCoreAspectBootstrapLink identify this\n * method's links: a workspace-internal source (e.g. a published bit installed as a workspace\n * dependency) would produce a link the cleanup can never tell apart from pnpm's own hoisted\n * entries, shadowing the workspace's compiled sources forever.\n */\n private _getCoreAspectSourceDir(aspectId: string, packageName: string, workspaceDir: string): string | undefined {\n const isUsableSource = (dir: string) => this.hasCompiledMain(dir) && !this._realpathIsInside(dir, workspaceDir);\n const fromBvmDir = this._getPkgPathFromCurrentBitDir(packageName);\n if (fromBvmDir && isUsableSource(fromBvmDir)) return fromBvmDir;\n try {\n const fromRunningBit = getAspectDir(aspectId);\n if (isUsableSource(fromRunningBit)) return fromRunningBit;\n } catch {\n // not resolvable from the running installation either\n }\n return undefined;\n }\n\n /** both paths must exist. compares real paths, as either side may be reached through a symlink. */\n private _realpathIsInside(target: string, dir: string): boolean {\n return fs.realpathSync(target).startsWith(fs.realpathSync(dir) + path.sep);\n }\n\n /**\n * only removes links created by syncCoreAspectLinksForEnvs, identified by resolving OUTSIDE the\n * workspace - an invariant _getCoreAspectSourceDir enforces on every link source, and one nothing\n * else at this location+name violates: pnpm's own hoisted entries always point back into the\n * virtual store. matching the exact bit installation instead would be too strict: a link leaked\n * by an interrupted install may point at a bit version that was since upgraded or removed\n * (dangling), and it must still be cleaned up or it would shadow the workspace's copy forever.\n */\n private async removeCoreAspectBootstrapLink(linkPath: string, workspaceDir: string): Promise<void> {\n try {\n if (!fs.lstatSync(linkPath).isSymbolicLink()) return;\n } catch {\n return; // nothing at this path\n }\n try {\n if (this._realpathIsInside(linkPath, workspaceDir)) return;\n } catch {\n // dangling link - fall through and remove it\n }\n await fs.remove(linkPath);\n }\n\n private isBitRepoWorkspace(dir: string) {\n // A special condition to not link core aspects in bit workspace itself\n if (this.aspectLoader.mainAspect?.path.startsWith(dir)) {\n return true;\n }\n return false;\n }\n\n private linkCoreAspect(\n id: string,\n {\n targetModulesDir,\n mainAspectPath,\n hasLocalInstallation,\n }: {\n targetModulesDir: string;\n mainAspectPath: string;\n hasLocalInstallation?: boolean;\n }\n ): CoreAspectLinkResult | undefined {\n const name = getCoreAspectName(id);\n const packageName = getCoreAspectPackageName(id);\n let aspectDir = path.join(mainAspectPath, 'dist', name);\n const target = path.join(targetModulesDir, packageName);\n const fromDir = this._getPkgPathFromCurrentBitDir(packageName);\n if (fromDir) {\n return { aspectId: id, linkDetail: { packageName, from: fromDir, to: target } };\n }\n const shouldSymlink = this.removeSymlinkTarget(target, hasLocalInstallation);\n if (!shouldSymlink) return undefined;\n const isAspectDirExist = fs.pathExistsSync(aspectDir);\n if (!isAspectDirExist) {\n this.logger.debug(`linkCoreAspect: aspectDir ${aspectDir} does not exist, linking it to ${target}`);\n aspectDir = getAspectDir(id);\n return { aspectId: id, linkDetail: { packageName, from: aspectDir, to: target } };\n }\n\n try {\n // eslint-disable-next-line global-require, import/no-dynamic-require\n const module = require(aspectDir);\n const aspectPath = path.resolve(path.join(module.path, '..', '..'));\n this.logger.debug(`linkCoreAspect: linking aspectPath ${aspectPath} to ${target}`);\n return { aspectId: id, linkDetail: { packageName, from: aspectPath, to: target } };\n } catch (err: any) {\n throw new CoreAspectLinkError(id, err);\n }\n }\n\n /**\n * returns true if it's safe to symlink it later.\n */\n private removeSymlinkTarget(targetPath: string, hasLocalInstallation = false): boolean {\n // TODO: change to fs.lstatSync(dest, {throwIfNoEntry: false});\n // TODO: this requires to upgrade node to v15.3.0 to have the throwIfNoEntry property (maybe upgrade fs-extra will work as well)\n // TODO: we don't use fs.pathExistsSync since it will return false in case the dest is a symlink which will result error on write\n let targetStat: Stats | undefined;\n try {\n targetStat = fs.lstatSync(targetPath);\n // eslint-disable-next-line no-empty\n } catch {}\n if (targetStat && !hasLocalInstallation) {\n // Do not override links created by other means\n if (!targetStat.isSymbolicLink()) {\n this.logger.debug(`removing link target, target ${targetPath} already exist. skipping it`);\n return false;\n }\n return true;\n }\n return true;\n }\n\n private _getPkgPathFromCurrentBitDir(packageName: string): string | undefined {\n if (!this._currentBitDir) return undefined;\n return path.join(this._currentBitDir, 'node_modules', packageName);\n }\n\n private linkNonCorePackages(rootDir: string, packageName: string): LinkDetail {\n const target = path.join(rootDir, 'node_modules', packageName);\n const fromDirBvm = this._getPkgPathFromCurrentBitDir(packageName);\n if (fromDirBvm) {\n return { packageName, from: fromDirBvm, to: target };\n }\n const fromDirBitRepo = getDistDirForDevEnv(packageName);\n return { packageName, from: fromDirBitRepo, to: target };\n }\n\n private linkNonAspectCorePackages(rootDir: string, name: string, mainAspectPath: string): LinkDetail | undefined {\n const distDir = path.join(mainAspectPath, 'dist', name);\n\n const packageName = `@teambit/${name}`;\n const target = path.join(rootDir, 'node_modules', packageName);\n const fromDir = this._getPkgPathFromCurrentBitDir(packageName);\n if (fromDir) {\n return { packageName, from: fromDir, to: target };\n }\n const isDistDirExist = fs.pathExistsSync(distDir);\n if (!isDistDirExist) {\n const newDir = getDistDirForDevEnv(packageName);\n return { packageName, from: newDir, to: target };\n }\n\n try {\n // eslint-disable-next-line global-require, import/no-dynamic-require\n const module = require(distDir);\n const resolvedPath = path.resolve(path.join(module.path, '..', '..'));\n return { packageName, from: resolvedPath, to: target };\n } catch (err: any) {\n throw new NonAspectCorePackageLinkError(err, packageName);\n }\n }\n}\n\n/**\n * When running dev env (bd) we need to get the harmony/legacy folder from the node_modules of the clone\n */\nfunction getDistDirForDevEnv(packageName: string): string {\n let moduleDirectory = require.resolve(packageName);\n let dirPath;\n if (moduleDirectory.includes(packageName)) {\n dirPath = path.join(moduleDirectory, '../..'); // to remove the \"index.js\" at the end\n } else {\n // This is usually required for the @teambit/legacy, as we re inside the nm so we can't find it in the other way\n const nmDir = __dirname.substring(0, __dirname.indexOf('@teambit'));\n dirPath = path.join(nmDir, packageName);\n moduleDirectory = require.resolve(packageName, { paths: [nmDir] });\n }\n if (!fs.existsSync(dirPath)) {\n throw new BitError(`unable to find ${packageName} in ${dirPath}`);\n }\n\n return dirPath;\n}\n\n// TODO: extract to new component\nfunction resolveModuleFromDir(fromDir: string, moduleId: string, silent = true): string | undefined {\n if (silent) {\n return resolveFrom.silent(fromDir, moduleId);\n }\n return resolveFrom(fromDir, moduleId);\n}\n\n// TODO: extract to new component\nfunction resolveModuleDirFromFile(resolvedModulePath: string, moduleId: string): string {\n const NM = 'node_modules';\n if (resolvedModulePath.includes(NM)) {\n return path.join(resolvedModulePath.slice(0, resolvedModulePath.lastIndexOf(NM) + NM.length), moduleId);\n }\n\n const [start, end] = resolvedModulePath.split('@');\n if (!end) return path.basename(resolvedModulePath);\n const versionStr = head(end.split('/'));\n return `${start}@${versionStr}`;\n}\n\nfunction isPathSymlink(folderPath: string): boolean | undefined {\n // TODO: change to fs.lstatSync(dest, {throwIfNoEntry: false}); once upgrade fs-extra\n try {\n const stat = fs.lstatSync(folderPath);\n return stat.isSymbolicLink();\n } catch {\n return undefined;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.dependencies_dependency-resolver@1.0.1056/dist/dependency-resolver.composition.js';
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.dependencies_dependency-resolver@1.0.1056/dist/dependency-resolver.docs.mdx';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.dependencies_dependency-resolver@1.0.1057/dist/dependency-resolver.composition.js';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.dependencies_dependency-resolver@1.0.1057/dist/dependency-resolver.docs.mdx';
3
3
 
4
4
  export const compositions = [compositions_0];
5
5
  export const overview = [overview_0];
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/dependency-resolver",
3
- "version": "1.0.1056",
3
+ "version": "1.0.1057",
4
4
  "homepage": "https://bit.cloud/teambit/dependencies/dependency-resolver",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.dependencies",
8
8
  "name": "dependency-resolver",
9
- "version": "1.0.1056"
9
+ "version": "1.0.1057"
10
10
  },
11
11
  "dependencies": {
12
12
  "chalk": "4.1.2",
@@ -26,15 +26,20 @@
26
26
  "@pnpm/core": "1016.2.0",
27
27
  "semver-intersect": "1.4.0",
28
28
  "semver-range-intersect": "0.3.1",
29
+ "@teambit/logger": "0.0.1444",
29
30
  "@teambit/toolbox.path.path": "0.0.19",
30
31
  "@teambit/bit-error": "0.0.404",
31
32
  "@teambit/bvm.path": "1.0.0",
33
+ "@teambit/dependencies.fs.linked-dependencies": "0.0.63",
32
34
  "@teambit/pkg.modules.component-package-name": "0.0.143",
33
35
  "@teambit/harmony": "0.4.12",
34
36
  "@pnpm/network.ca-file": "3.0.3",
37
+ "@teambit/cli": "0.0.1351",
35
38
  "@teambit/component-id": "1.2.4",
36
39
  "@teambit/component-version": "1.0.4",
37
40
  "@teambit/component.sources": "0.0.188",
41
+ "@teambit/config-store": "0.0.232",
42
+ "@teambit/config": "0.0.1526",
38
43
  "@teambit/harmony.modules.feature-toggle": "0.0.46",
39
44
  "@teambit/harmony.modules.requireable-component": "0.0.518",
40
45
  "@teambit/legacy.constants": "0.0.34",
@@ -48,18 +53,14 @@
48
53
  "@teambit/component-issues": "0.0.177",
49
54
  "@teambit/component-package-version": "0.0.454",
50
55
  "@teambit/legacy-bit-id": "1.1.3",
56
+ "@teambit/toolbox.object.sorter": "0.0.2",
51
57
  "@teambit/legacy.consumer-config": "0.0.136",
52
58
  "@teambit/toolbox.crypto.sha1": "0.0.18",
53
- "@teambit/toolbox.object.sorter": "0.0.2",
54
- "@teambit/component": "1.0.1056",
55
- "@teambit/envs": "1.0.1056",
56
- "@teambit/aspect-loader": "1.0.1056",
57
- "@teambit/logger": "0.0.1444",
58
- "@teambit/objects": "0.0.563",
59
- "@teambit/graphql": "1.0.1056",
60
- "@teambit/cli": "0.0.1351",
61
- "@teambit/config-store": "0.0.232",
62
- "@teambit/config": "0.0.1526"
59
+ "@teambit/component": "1.0.1057",
60
+ "@teambit/envs": "1.0.1057",
61
+ "@teambit/aspect-loader": "1.0.1057",
62
+ "@teambit/objects": "0.0.564",
63
+ "@teambit/graphql": "1.0.1057"
63
64
  },
64
65
  "devDependencies": {
65
66
  "@types/fs-extra": "9.0.7",