@teambit/dependency-resolver 1.0.107 → 1.0.109

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.
Files changed (62) hide show
  1. package/artifacts/__bit_junit.xml +55 -0
  2. package/artifacts/preview/teambit_dependencies_dependency_resolver-preview.js +1 -0
  3. package/dist/apply-updates.js +2 -4
  4. package/dist/apply-updates.js.map +1 -1
  5. package/dist/dependencies/base-dependency.d.ts +7 -7
  6. package/dist/dependencies/base-dependency.js +1 -2
  7. package/dist/dependencies/base-dependency.js.map +1 -1
  8. package/dist/dependencies/component-dependency/component-dependency.js +1 -2
  9. package/dist/dependencies/component-dependency/component-dependency.js.map +1 -1
  10. package/dist/dependencies/dependency-list-factory.js +2 -4
  11. package/dist/dependencies/dependency-list-factory.js.map +1 -1
  12. package/dist/dependencies/dependency-list.d.ts +2 -2
  13. package/dist/dependencies/dependency-list.js +1 -4
  14. package/dist/dependencies/dependency-list.js.map +1 -1
  15. package/dist/dependencies/dependency.d.ts +5 -5
  16. package/dist/dependencies.service.d.ts +4 -4
  17. package/dist/dependencies.service.js +3 -3
  18. package/dist/dependencies.service.js.map +1 -1
  19. package/dist/dependency-installer.d.ts +10 -9
  20. package/dist/dependency-installer.js +5 -8
  21. package/dist/dependency-installer.js.map +1 -1
  22. package/dist/dependency-linker.d.ts +10 -9
  23. package/dist/dependency-linker.js +7 -11
  24. package/dist/dependency-linker.js.map +1 -1
  25. package/dist/dependency-resolver.composition.d.ts +2 -2
  26. package/dist/dependency-resolver.main.runtime.d.ts +15 -15
  27. package/dist/dependency-resolver.main.runtime.js +33 -39
  28. package/dist/dependency-resolver.main.runtime.js.map +1 -1
  29. package/dist/dependency-version-resolver.d.ts +2 -1
  30. package/dist/get-all-policy-pkgs.d.ts +4 -4
  31. package/dist/manifest/deduping/dedupe-dependencies.d.ts +4 -4
  32. package/dist/manifest/deduping/dedupe-dependencies.js +1 -1
  33. package/dist/manifest/deduping/dedupe-dependencies.js.map +1 -1
  34. package/dist/manifest/deduping/hoist-dependencies.js +2 -3
  35. package/dist/manifest/deduping/hoist-dependencies.js.map +1 -1
  36. package/dist/manifest/deduping/hoist-dependencies.spec.js +6 -8
  37. package/dist/manifest/deduping/hoist-dependencies.spec.js.map +1 -1
  38. package/dist/manifest/deduping/index-by-dep-id.d.ts +4 -4
  39. package/dist/manifest/deduping/index-by-dep-id.js +1 -2
  40. package/dist/manifest/deduping/index-by-dep-id.js.map +1 -1
  41. package/dist/manifest/manifest.d.ts +4 -4
  42. package/dist/manifest/update-dependency-version.js +2 -2
  43. package/dist/manifest/update-dependency-version.js.map +1 -1
  44. package/dist/manifest/workspace-manifest-factory.d.ts +3 -3
  45. package/dist/manifest/workspace-manifest-factory.js +3 -5
  46. package/dist/manifest/workspace-manifest-factory.js.map +1 -1
  47. package/dist/manifest/workspace-manifest.js +1 -2
  48. package/dist/manifest/workspace-manifest.js.map +1 -1
  49. package/dist/package-manager-legacy.d.ts +1 -1
  50. package/dist/package-manager.d.ts +5 -5
  51. package/dist/policy/env-policy/env-policy.d.ts +7 -7
  52. package/dist/policy/policy.d.ts +9 -9
  53. package/dist/policy/variant-policy/variant-policy.d.ts +9 -9
  54. package/dist/policy/workspace-policy/workspace-policy.d.ts +11 -11
  55. package/dist/{preview-1703590665075.js → preview-1703698405864.js} +2 -2
  56. package/dist/registry/registry.d.ts +6 -6
  57. package/dist/show-fragments/serialize-by-lifecycle.js +1 -2
  58. package/dist/show-fragments/serialize-by-lifecycle.js.map +1 -1
  59. package/dist/types.d.ts +8 -8
  60. package/package.json +26 -33
  61. package/tsconfig.json +16 -21
  62. package/types/asset.d.ts +15 -3
@@ -1 +1 @@
1
- {"version":3,"names":["_isBuiltinModule","data","_interopRequireDefault","require","_path","_lodash","_fsExtra","_resolveFrom","_bvm","_bitError","_componentIdToPackageName","_aspectLoader","_exceptions","obj","__esModule","default","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","key","value","_toPropertyKey","configurable","writable","i","_toPrimitive","String","Symbol","toPrimitive","call","TypeError","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","resolvedFromEnvLinks","linksDetail","linkToDirResults","linkedRootDeps","fromEntries","map","packageName","from","_this$linkingContext","_this$linkingContext2","_this$linkingContext3","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","consoleSuccess","peers","Set","Promise","all","depList","getDependencies","peerList","byLifecycle","dependency","getPackageName","add","fromDir","path","join","toDir","Array","componentId","to","_result$teambitBitLin","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","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","_this$aspectLoader$ma","getCoreAspectName","linkCoreAspect","_this$aspectLoader$ma2","getCoreAspectPackageName","aspectDir","isAspectDirExist","pathExistsSync","getAspectDir","module","resolve","err","CoreAspectLinkError","targetPath","targetStat","lstatSync","distDir","isDistDirExist","newDir","getDistDirForDevEnv","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 { Stats } from 'fs';\nimport fs from 'fs-extra';\nimport resolveFrom from 'resolve-from';\nimport { findCurrentBvmDir } from '@teambit/bvm.path';\nimport { ComponentMap, Component, ComponentID, ComponentMain } from '@teambit/component';\nimport { Logger } from '@teambit/logger';\nimport { PathAbsolute } from '@teambit/legacy/dist/utils/path';\nimport { BitError } from '@teambit/bit-error';\nimport componentIdToPackageName from '@teambit/legacy/dist/utils/bit/component-id-to-package-name';\nimport { EnvsMain } from '@teambit/envs';\nimport { AspectLoaderMain, getCoreAspectName, getCoreAspectPackageName, getAspectDir } from '@teambit/aspect-loader';\nimport {\n MainAspectNotLinkable,\n RootDirNotDefined,\n CoreAspectLinkError,\n NonAspectCorePackageLinkError,\n} from './exceptions';\nimport { 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\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\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.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 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 = await 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 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 (e: any) {}\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 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 (e: any) {\n return undefined;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_isBuiltinModule","data","_interopRequireDefault","require","_path","_lodash","_fsExtra","_resolveFrom","_bvm","_bitError","_componentIdToPackageName","_aspectLoader","_exceptions","obj","__esModule","default","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","key","value","_toPropertyKey","configurable","writable","i","_toPrimitive","String","Symbol","toPrimitive","call","TypeError","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","resolvedFromEnvLinks","linksDetail","linkToDirResults","linkedRootDeps","fromEntries","map","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","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","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","distDir","isDistDirExist","newDir","getDistDirForDevEnv","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 { Stats } from 'fs';\nimport fs from 'fs-extra';\nimport resolveFrom from 'resolve-from';\nimport { findCurrentBvmDir } from '@teambit/bvm.path';\nimport { ComponentMap, Component, ComponentID, ComponentMain } from '@teambit/component';\nimport { Logger } from '@teambit/logger';\nimport { PathAbsolute } from '@teambit/legacy/dist/utils/path';\nimport { BitError } from '@teambit/bit-error';\nimport componentIdToPackageName from '@teambit/legacy/dist/utils/bit/component-id-to-package-name';\nimport { EnvsMain } from '@teambit/envs';\nimport { AspectLoaderMain, getCoreAspectName, getCoreAspectPackageName, getAspectDir } from '@teambit/aspect-loader';\nimport {\n MainAspectNotLinkable,\n RootDirNotDefined,\n CoreAspectLinkError,\n NonAspectCorePackageLinkError,\n} from './exceptions';\nimport { 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\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\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.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 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 = await 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 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 (e: any) {}\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 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 (e: any) {\n return undefined;\n }\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import React from 'react';
2
- export declare const Logo: () => React.JSX.Element;
1
+ /// <reference types="react" />
2
+ export declare const Logo: () => JSX.Element;
@@ -13,7 +13,7 @@ import LegacyComponent from '@teambit/legacy/dist/consumer/component';
13
13
  import { ComponentID } from '@teambit/component-id';
14
14
  import { SourceFile } from '@teambit/legacy/dist/consumer/component/sources';
15
15
  import { PeerDependencyRules, ProjectManifest } from '@pnpm/types';
16
- import semver from 'semver';
16
+ import { SemVer } from 'semver';
17
17
  import { AspectLoaderMain } from '@teambit/aspect-loader';
18
18
  import { GlobalConfigMain } from '@teambit/global-config';
19
19
  import { Registries } from './registry';
@@ -31,7 +31,7 @@ import { EnvPolicy } from './policy/env-policy';
31
31
  export declare const BIT_CLOUD_REGISTRY: string;
32
32
  export declare const NPM_REGISTRY = "https://registry.npmjs.org/";
33
33
  export { ProxyConfig, NetworkConfig } from '@teambit/legacy/dist/scope/network/http';
34
- export declare type NodeLinker = 'hoisted' | 'isolated';
34
+ export type NodeLinker = 'hoisted' | 'isolated';
35
35
  export interface DependencyResolverComponentData {
36
36
  packageName: string;
37
37
  policy: SerializedVariantPolicy;
@@ -125,29 +125,29 @@ export interface DependencyResolverWorkspaceConfig {
125
125
  export interface DependencyResolverVariantConfig {
126
126
  policy: VariantPolicyConfigObject;
127
127
  }
128
- export declare type RootPolicyRegistry = SlotRegistry<WorkspacePolicy>;
129
- export declare type PoliciesRegistry = SlotRegistry<VariantPolicyConfigObject>;
130
- export declare type PackageManagerSlot = SlotRegistry<PackageManager>;
131
- export declare type DependencyFactorySlot = SlotRegistry<DependencyFactory[]>;
132
- export declare type PreInstallSlot = SlotRegistry<PreInstallSubscriberList>;
133
- export declare type PostInstallSlot = SlotRegistry<PostInstallSubscriberList>;
134
- export declare type MergeDependenciesFunc = (configuredExtensions: ExtensionDataList) => Promise<VariantPolicyConfigObject>;
135
- export declare type GetInstallerOptions = {
128
+ export type RootPolicyRegistry = SlotRegistry<WorkspacePolicy>;
129
+ export type PoliciesRegistry = SlotRegistry<VariantPolicyConfigObject>;
130
+ export type PackageManagerSlot = SlotRegistry<PackageManager>;
131
+ export type DependencyFactorySlot = SlotRegistry<DependencyFactory[]>;
132
+ export type PreInstallSlot = SlotRegistry<PreInstallSubscriberList>;
133
+ export type PostInstallSlot = SlotRegistry<PostInstallSubscriberList>;
134
+ export type MergeDependenciesFunc = (configuredExtensions: ExtensionDataList) => Promise<VariantPolicyConfigObject>;
135
+ export type GetInstallerOptions = {
136
136
  rootDir?: string;
137
137
  packageManager?: string;
138
138
  cacheRootDirectory?: string;
139
139
  installingContext?: DepInstallerContext;
140
140
  nodeLinker?: NodeLinker;
141
141
  };
142
- export declare type GetLinkerOptions = {
142
+ export type GetLinkerOptions = {
143
143
  rootDir?: string;
144
144
  linkingOptions?: LinkingOptions;
145
145
  linkingContext?: DepLinkerContext;
146
146
  };
147
- export declare type GetDependenciesOptions = {
147
+ export type GetDependenciesOptions = {
148
148
  includeHidden?: boolean;
149
149
  };
150
- export declare type GetVersionResolverOptions = {
150
+ export type GetVersionResolverOptions = {
151
151
  cacheRootDirectory?: string;
152
152
  };
153
153
  export declare class DependencyResolverMain {
@@ -298,7 +298,7 @@ export declare class DependencyResolverMain {
298
298
  * @returns {WorkspaceManifest}
299
299
  * @memberof DependencyResolverMain
300
300
  */
301
- getWorkspaceManifest(name: string | undefined, version: semver.SemVer | undefined, rootPolicy: WorkspacePolicy, rootDir: string, components: Component[], options?: CreateFromComponentsOptions, context?: DepInstallerContext): Promise<WorkspaceManifest>;
301
+ getWorkspaceManifest(name: string, version: SemVer, rootPolicy: WorkspacePolicy, rootDir: string, components: Component[], options?: CreateFromComponentsOptions, context?: DepInstallerContext): Promise<WorkspaceManifest>;
302
302
  /**
303
303
  * get the package name of a component.
304
304
  */
@@ -415,7 +415,7 @@ export declare class DependencyResolverMain {
415
415
  * dependency detectors from an env, which is got by extension data list.
416
416
  * Do not use this function for other purposes.
417
417
  */
418
- calcComponentEnvDepDetectors(extensions: ExtensionDataList): Promise<DependencyDetector[] | null>;
418
+ calcComponentEnvDepDetectors(extensions: ExtensionDataList): Promise<DependencyDetector[]>;
419
419
  /**
420
420
  * This function registered to the onLoadRequireableExtensionSlot of the aspect-loader
421
421
  * Update the aspect / manifest deps versions in the runtimes (recursively)
@@ -385,9 +385,8 @@ class DependencyResolverMain {
385
385
  * Here is the PR where initially dedupe was turned off for pnpm: https://github.com/teambit/bit/pull/5410
386
386
  */
387
387
  supportsDedupingOnExistingRoot() {
388
- var _packageManager$suppo;
389
388
  const packageManager = this.getPackageManager();
390
- return (packageManager === null || packageManager === void 0 || (_packageManager$suppo = packageManager.supportsDedupingOnExistingRoot) === null || _packageManager$suppo === void 0 ? void 0 : _packageManager$suppo.call(packageManager)) === true && !this.isolatedCapsules();
389
+ return packageManager?.supportsDedupingOnExistingRoot?.() === true && !this.isolatedCapsules();
391
390
  }
392
391
  setConfig(config) {
393
392
  this.config = config;
@@ -477,9 +476,9 @@ class DependencyResolverMain {
477
476
  dependencyList.forEach(dep => {
478
477
  const found = componentPolicy.find(dep.id);
479
478
  // if no policy found, the dependency was auto-resolved from the source code
480
- dep.source = (found === null || found === void 0 ? void 0 : found.source) || 'auto';
481
- dep.hidden = found === null || found === void 0 ? void 0 : found.hidden;
482
- dep.optional = found === null || found === void 0 ? void 0 : found.optional;
479
+ dep.source = found?.source || 'auto';
480
+ dep.hidden = found?.hidden;
481
+ dep.optional = found?.optional;
483
482
  });
484
483
  return dependencyList;
485
484
  }
@@ -500,12 +499,11 @@ class DependencyResolverMain {
500
499
  async getDependencies(component, {
501
500
  includeHidden = false
502
501
  } = {}) {
503
- var _entry$data;
504
502
  const entry = component.get(_dependencyResolver().DependencyResolverAspect.id);
505
503
  if (!entry) {
506
504
  return _dependencies().DependencyList.fromArray([]);
507
505
  }
508
- const serializedDependencies = (entry === null || entry === void 0 || (_entry$data = entry.data) === null || _entry$data === void 0 ? void 0 : _entry$data.dependencies) || [];
506
+ const serializedDependencies = entry?.data?.dependencies || [];
509
507
  const depList = await this.getDependenciesFromSerializedDependencies(serializedDependencies);
510
508
  if (includeHidden) return depList;
511
509
  return depList.filterHidden();
@@ -587,14 +585,14 @@ class DependencyResolverMain {
587
585
  * @memberof DependencyResolverMain
588
586
  */
589
587
  async getWorkspaceManifest(name = _constants2().ROOT_NAME, version = new (_semver().SemVer)('1.0.0'), rootPolicy, rootDir, components, options = defaultCreateFromComponentsOptions, context = {}) {
590
- const statusMessage = context !== null && context !== void 0 && context.inCapsule ? `(capsule) deduping dependencies for installation in root dir ${rootDir}` : 'deduping dependencies for installation';
591
- if (!(context !== null && context !== void 0 && context.inCapsule)) {
588
+ const statusMessage = context?.inCapsule ? `(capsule) deduping dependencies for installation in root dir ${rootDir}` : 'deduping dependencies for installation';
589
+ if (!context?.inCapsule) {
592
590
  this.logger.setStatusLine(statusMessage);
593
591
  }
594
592
  const concreteOpts = _objectSpread(_objectSpread({}, defaultCreateFromComponentsOptions), options);
595
593
  const workspaceManifestFactory = new (_manifest().WorkspaceManifestFactory)(this, this.aspectLoader);
596
594
  const res = await workspaceManifestFactory.createFromComponents(name, version, rootPolicy, rootDir, components, concreteOpts);
597
- if (!(context !== null && context !== void 0 && context.inCapsule)) {
595
+ if (!context?.inCapsule) {
598
596
  this.logger.consoleSuccess();
599
597
  }
600
598
  return res;
@@ -604,12 +602,10 @@ class DependencyResolverMain {
604
602
  * get the package name of a component.
605
603
  */
606
604
  getPackageName(component) {
607
- var _this$getDepResolverD;
608
- return ((_this$getDepResolverD = this.getDepResolverData(component)) === null || _this$getDepResolverD === void 0 ? void 0 : _this$getDepResolverD.packageName) ?? this.calcPackageName(component);
605
+ return this.getDepResolverData(component)?.packageName ?? this.calcPackageName(component);
609
606
  }
610
607
  getDepResolverData(component) {
611
- var _component$state$aspe;
612
- return (_component$state$aspe = component.state.aspects.get(_dependencyResolver().DependencyResolverAspect.id)) === null || _component$state$aspe === void 0 ? void 0 : _component$state$aspe.data;
608
+ return component.state.aspects.get(_dependencyResolver().DependencyResolverAspect.id)?.data;
613
609
  }
614
610
  calcPackageName(component) {
615
611
  return (0, _componentIdToPackageName().default)(component.state._consumer);
@@ -680,7 +676,7 @@ class DependencyResolverMain {
680
676
  * get a component dependency linker.
681
677
  */
682
678
  getLinker(options = {}) {
683
- const linkingOptions = Object.assign({}, defaultLinkingOptions, (options === null || options === void 0 ? void 0 : options.linkingOptions) || {});
679
+ const linkingOptions = Object.assign({}, defaultLinkingOptions, options?.linkingOptions || {});
684
680
  // TODO: we should somehow pass the cache root dir to the package manager constructor
685
681
  return new (_dependencyLinker().DependencyLinker)(this, this.aspectLoader, this.componentAspect, this.envs, this.logger, options.rootDir, linkingOptions, options.linkingContext);
686
682
  }
@@ -745,7 +741,7 @@ class DependencyResolverMain {
745
741
 
746
742
  // Take config from the package manager (npmrc) config if defined
747
743
  const proxyConfigFromPackageManager = await this.getProxyConfigFromPackageManager();
748
- if (proxyConfigFromPackageManager !== null && proxyConfigFromPackageManager !== void 0 && proxyConfigFromPackageManager.httpProxy || proxyConfigFromPackageManager !== null && proxyConfigFromPackageManager !== void 0 && proxyConfigFromPackageManager.httpsProxy) {
744
+ if (proxyConfigFromPackageManager?.httpProxy || proxyConfigFromPackageManager?.httpsProxy) {
749
745
  this.logger.debug(`proxy config taken from the package manager config (npmrc). proxy: ${proxyConfigFromPackageManager.httpProxy} httpsProxy: ${proxyConfigFromPackageManager.httpsProxy}`);
750
746
  return proxyConfigFromPackageManager;
751
747
  }
@@ -791,8 +787,8 @@ class DependencyResolverMain {
791
787
  async getNetworkConfigFromPackageManager() {
792
788
  const packageManager = this.getPackageManager();
793
789
  let networkConfigFromPackageManager = {};
794
- if (typeof (packageManager === null || packageManager === void 0 ? void 0 : packageManager.getNetworkConfig) === 'function') {
795
- networkConfigFromPackageManager = await (packageManager === null || packageManager === void 0 ? void 0 : packageManager.getNetworkConfig());
790
+ if (typeof packageManager?.getNetworkConfig === 'function') {
791
+ networkConfigFromPackageManager = await packageManager?.getNetworkConfig();
796
792
  } else {
797
793
  const systemPm = this.getSystemPackageManager();
798
794
  if (!systemPm.getNetworkConfig) throw new Error('system package manager must implement `getNetworkConfig()`');
@@ -803,8 +799,8 @@ class DependencyResolverMain {
803
799
  async getProxyConfigFromPackageManager() {
804
800
  const packageManager = this.getPackageManager();
805
801
  let proxyConfigFromPackageManager = {};
806
- if (packageManager !== null && packageManager !== void 0 && packageManager.getProxyConfig && typeof (packageManager === null || packageManager === void 0 ? void 0 : packageManager.getProxyConfig) === 'function') {
807
- proxyConfigFromPackageManager = await (packageManager === null || packageManager === void 0 ? void 0 : packageManager.getProxyConfig());
802
+ if (packageManager?.getProxyConfig && typeof packageManager?.getProxyConfig === 'function') {
803
+ proxyConfigFromPackageManager = await packageManager?.getProxyConfig();
808
804
  } else {
809
805
  const systemPm = this.getSystemPackageManager();
810
806
  if (!systemPm.getProxyConfig) throw new Error('system package manager must implement `getProxyConfig()`');
@@ -821,7 +817,6 @@ class DependencyResolverMain {
821
817
  * without causing unmet peer dependency issues in some of the dependencies.
822
818
  */
823
819
  async getMissingPeerDependencies(rootDir, rootPolicy, componentDirectoryMap, options) {
824
- var _peerDependencyIssues;
825
820
  this.logger.setStatusLine('finding missing peer dependencies');
826
821
  const packageManager = this.getPackageManager();
827
822
  let peerDependencyIssues;
@@ -831,21 +826,21 @@ class DependencyResolverMain {
831
826
  rootPolicy,
832
827
  rootDir
833
828
  }));
834
- if (packageManager !== null && packageManager !== void 0 && packageManager.getPeerDependencyIssues && typeof (packageManager === null || packageManager === void 0 ? void 0 : packageManager.getPeerDependencyIssues) === 'function') {
835
- peerDependencyIssues = await (packageManager === null || packageManager === void 0 ? void 0 : packageManager.getPeerDependencyIssues(rootDir, manifests, options));
829
+ if (packageManager?.getPeerDependencyIssues && typeof packageManager?.getPeerDependencyIssues === 'function') {
830
+ peerDependencyIssues = await packageManager?.getPeerDependencyIssues(rootDir, manifests, options);
836
831
  } else {
837
832
  const systemPm = this.getSystemPackageManager();
838
833
  if (!systemPm.getPeerDependencyIssues) throw new Error('system package manager must implement `getPeerDependencyIssues()`');
839
- peerDependencyIssues = await (systemPm === null || systemPm === void 0 ? void 0 : systemPm.getPeerDependencyIssues(rootDir, manifests, options));
834
+ peerDependencyIssues = await systemPm?.getPeerDependencyIssues(rootDir, manifests, options);
840
835
  }
841
836
  this.logger.consoleSuccess();
842
- return (_peerDependencyIssues = peerDependencyIssues['.']) === null || _peerDependencyIssues === void 0 ? void 0 : _peerDependencyIssues.intersections;
837
+ return peerDependencyIssues['.']?.intersections;
843
838
  }
844
839
  async getRegistries() {
845
840
  const packageManager = this.getPackageManager();
846
841
  let registries;
847
- if (packageManager !== null && packageManager !== void 0 && packageManager.getRegistries && typeof (packageManager === null || packageManager === void 0 ? void 0 : packageManager.getRegistries) === 'function') {
848
- registries = await (packageManager === null || packageManager === void 0 ? void 0 : packageManager.getRegistries());
842
+ if (packageManager?.getRegistries && typeof packageManager?.getRegistries === 'function') {
843
+ registries = await packageManager?.getRegistries();
849
844
  } else {
850
845
  const systemPm = this.getSystemPackageManager();
851
846
  if (!systemPm.getRegistries) throw new Error('system package manager must implement `getRegistries()`');
@@ -938,10 +933,9 @@ class DependencyResolverMain {
938
933
  });
939
934
  }
940
935
  async persistConfig(workspaceDir) {
941
- var _this$configAspect$wo;
942
- await ((_this$configAspect$wo = this.configAspect.workspaceConfig) === null || _this$configAspect$wo === void 0 ? void 0 : _this$configAspect$wo.write({
936
+ await this.configAspect.workspaceConfig?.write({
943
937
  dir: workspaceDir
944
- }));
938
+ });
945
939
  this.clearCache();
946
940
  }
947
941
 
@@ -1014,7 +1008,7 @@ class DependencyResolverMain {
1014
1008
  }
1015
1009
  getEnvManifest(envComponent, legacyFiles) {
1016
1010
  const object = this.envs.getEnvManifest(envComponent, legacyFiles);
1017
- const policy = object === null || object === void 0 ? void 0 : object.policy;
1011
+ const policy = object?.policy;
1018
1012
  if (!policy) return undefined;
1019
1013
  const allPoliciesFromEnv = _envPolicy().EnvPolicy.fromConfigObject(policy, {
1020
1014
  includeLegacyPeersInSelfPolicy: envComponent && this.envs.isCoreEnv(envComponent.id.toStringWithoutVersion())
@@ -1098,7 +1092,7 @@ class DependencyResolverMain {
1098
1092
  }
1099
1093
  });
1100
1094
  const currentExtension = configuredExtensions.findExtension(_dependencyResolver().DependencyResolverAspect.id);
1101
- const currentConfig = currentExtension === null || currentExtension === void 0 ? void 0 : currentExtension.config;
1095
+ const currentConfig = currentExtension?.config;
1102
1096
  if (currentConfig && currentConfig.policy) {
1103
1097
  policiesFromConfig = _policy().VariantPolicy.fromConfigObject(currentConfig.policy, {
1104
1098
  source: 'config'
@@ -1115,7 +1109,7 @@ class DependencyResolverMain {
1115
1109
  */
1116
1110
  async getPoliciesFromEnvForItself(id, legacyFiles) {
1117
1111
  const envPolicy = await this.getEnvPolicyFromEnvLegacyId(id, legacyFiles);
1118
- return envPolicy === null || envPolicy === void 0 ? void 0 : envPolicy.selfPolicy;
1112
+ return envPolicy?.selfPolicy;
1119
1113
  }
1120
1114
  updateDepsOnLegacyTag(component, idTransformer) {
1121
1115
  const entry = component.extensions.findCoreExtension(_dependencyResolver().DependencyResolverAspect.id);
@@ -1155,7 +1149,7 @@ class DependencyResolverMain {
1155
1149
  async calcComponentEnvDepDetectors(extensions) {
1156
1150
  const envDef = await this.envs.calculateEnvFromExtensions(extensions);
1157
1151
  const depEnv = envDef.env;
1158
- if (typeof (depEnv === null || depEnv === void 0 ? void 0 : depEnv.getDepDetectors) === 'function') {
1152
+ if (typeof depEnv?.getDepDetectors === 'function') {
1159
1153
  return depEnv.getDepDetectors();
1160
1154
  }
1161
1155
  return null;
@@ -1213,7 +1207,7 @@ class DependencyResolverMain {
1213
1207
  const resolvedDep = resolvedParentDeps.findDependency(dep.id, {
1214
1208
  ignoreVersion: true
1215
1209
  });
1216
- dep.id = (resolvedDep === null || resolvedDep === void 0 ? void 0 : resolvedDep.id) ?? dep.id;
1210
+ dep.id = resolvedDep?.id ?? dep.id;
1217
1211
  await this.resolveRequireableExtensionManifestDepsVersionsRecursively(dep.id, dep);
1218
1212
  });
1219
1213
  };
@@ -1222,9 +1216,9 @@ class DependencyResolverMain {
1222
1216
  await updateDirectDepsVersions(manifest.dependencies);
1223
1217
  }
1224
1218
  // @ts-ignore
1225
- if (manifest !== null && manifest !== void 0 && manifest._runtimes) {
1219
+ if (manifest?._runtimes) {
1226
1220
  // @ts-ignore
1227
- await (0, _pMapSeries().default)(manifest === null || manifest === void 0 ? void 0 : manifest._runtimes, async runtime => {
1221
+ await (0, _pMapSeries().default)(manifest?._runtimes, async runtime => {
1228
1222
  if (runtime.dependencies) {
1229
1223
  runtime.dependencies = runtime.dependencies.map(dep => this.aspectLoader.cloneManifest(dep));
1230
1224
  await updateDirectDepsVersions(runtime.dependencies);
@@ -1267,7 +1261,7 @@ class DependencyResolverMain {
1267
1261
  componentPolicies,
1268
1262
  componentModelVersions
1269
1263
  });
1270
- if (patterns !== null && patterns !== void 0 && patterns.length) {
1264
+ if (patterns?.length) {
1271
1265
  const selectedPkgNames = new Set((0, _multimatch().default)(allPkgs.map(({
1272
1266
  name
1273
1267
  }) => name), patterns));
@@ -1399,7 +1393,7 @@ class DependencyResolverMain {
1399
1393
  */
1400
1394
  async getInjectedDirs(rootDir, componentDir, packageName) {
1401
1395
  const packageManager = this.getPackageManager();
1402
- if (typeof (packageManager === null || packageManager === void 0 ? void 0 : packageManager.getInjectedDirs) === 'function') {
1396
+ if (typeof packageManager?.getInjectedDirs === 'function') {
1403
1397
  return packageManager.getInjectedDirs(rootDir, componentDir, packageName);
1404
1398
  }
1405
1399
  return [];