@teambit/dependency-resolver 1.0.889 → 1.0.890

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.
@@ -33,6 +33,7 @@ export type GetComponentManifestsOptions = {
33
33
  rootDir: string;
34
34
  resolveVersionsFromDependenciesOnly?: boolean;
35
35
  referenceLocalPackages?: boolean;
36
+ includeAllEnvPeers?: boolean;
36
37
  hasRootComponents?: boolean;
37
38
  excludeExtensionsDependencies?: boolean;
38
39
  } & Pick<PackageManagerInstallOptions, 'dedupe' | 'dependencyFilterFn' | 'copyPeerToRuntimeOnComponents' | 'copyPeerToRuntimeOnRoot' | 'installPeersFromEnvs'>;
@@ -81,7 +82,7 @@ export declare class DependencyInstaller {
81
82
  * Compute all the component manifests (a.k.a. package.json files) that should be passed to the package manager
82
83
  * in order to install the dependencies.
83
84
  */
84
- getComponentManifests({ componentDirectoryMap, rootPolicy, rootDir, dedupe, dependencyFilterFn, copyPeerToRuntimeOnComponents, copyPeerToRuntimeOnRoot, installPeersFromEnvs, resolveVersionsFromDependenciesOnly, referenceLocalPackages, hasRootComponents, excludeExtensionsDependencies, }: GetComponentManifestsOptions): Promise<Record<string, ProjectManifest>>;
85
+ getComponentManifests({ componentDirectoryMap, rootPolicy, rootDir, dedupe, dependencyFilterFn, copyPeerToRuntimeOnComponents, copyPeerToRuntimeOnRoot, installPeersFromEnvs, resolveVersionsFromDependenciesOnly, referenceLocalPackages, includeAllEnvPeers, hasRootComponents, excludeExtensionsDependencies, }: GetComponentManifestsOptions): Promise<Record<string, ProjectManifest>>;
85
86
  private cleanCompsNodeModules;
86
87
  private runPrePostSubscribers;
87
88
  }
@@ -87,6 +87,7 @@ class DependencyInstaller {
87
87
  rootDir: finalRootDir,
88
88
  resolveVersionsFromDependenciesOnly: options.resolveVersionsFromDependenciesOnly,
89
89
  referenceLocalPackages: packageManagerOptions.rootComponentsForCapsules,
90
+ includeAllEnvPeers: packageManagerOptions.rootComponentsForCapsules,
90
91
  excludeExtensionsDependencies: options.excludeExtensionsDependencies
91
92
  }));
92
93
  return this.installComponents(finalRootDir, manifests, rootPolicy, componentDirectoryMap, options, packageManagerOptions);
@@ -224,6 +225,7 @@ class DependencyInstaller {
224
225
  installPeersFromEnvs,
225
226
  resolveVersionsFromDependenciesOnly,
226
227
  referenceLocalPackages,
228
+ includeAllEnvPeers,
227
229
  hasRootComponents,
228
230
  excludeExtensionsDependencies
229
231
  }) {
@@ -234,6 +236,7 @@ class DependencyInstaller {
234
236
  dependencyFilterFn,
235
237
  resolveVersionsFromDependenciesOnly,
236
238
  referenceLocalPackages,
239
+ includeAllEnvPeers,
237
240
  hasRootComponents,
238
241
  excludeExtensionsDependencies
239
242
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_pMapSeries","data","_interopRequireDefault","require","_path","_fsExtra","_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_PM_INSTALL_OPTIONS","dedupe","copyPeerToRuntimeOnRoot","copyPeerToRuntimeOnComponents","installPeersFromEnvs","DEFAULT_INSTALL_OPTIONS","installTeambitBit","excludeExtensionsDependencies","DependencyInstaller","constructor","packageManager","aspectLoader","logger","dependencyResolver","rootDir","cacheRootDir","preInstallSubscriberList","postInstallSubscriberList","nodeLinker","packageImportMethod","sideEffectsCache","nodeVersion","engineStrict","peerDependencyRules","neverBuiltDependencies","allowScripts","dangerouslyAllowAllScripts","preferOffline","minimumReleaseAge","minimumReleaseAgeExclude","installingContext","install","rootPolicy","componentDirectoryMap","options","packageManagerOptions","finalRootDir","RootDirNotDefined","manifests","getComponentManifests","resolveVersionsFromDependenciesOnly","referenceLocalPackages","rootComponentsForCapsules","installComponents","args","runPrePostSubscribers","mainAspect","linkedDependencies","JSON","parse","stringify","forcedHarmonyVersion","dependencies","directDeps","Set","values","manifest","depName","devDependencies","add","name","has","entries","dir","linkedDeps","isJsonCmd","process","argv","includes","hidePackageManagerOutput","Boolean","inCapsule","env","VERBOSE_PM_OUTPUT","calculatedPmOpts","packageManagerConfigRootDir","dedupeInjectedDeps","dependenciesGraph","version","packageName","MainAspectNotInstallable","dependencyId","lifecycleType","rootComponents","keepExistingModulesDir","cleanCompsNodeModules","err","debug","messagePrefix","messageSuffix","message","setStatusLine","startTime","hrtime","installResult","consoleSuccess","pruneModules","dependencyFilterFn","hasRootComponents","filterComponentsFromManifests","createManifestForComponentsWithoutDependencies","workspaceManifest","getWorkspaceManifest","undefined","components","toArray","reduce","acc","component","getPackageName","componentsManifestsMap","get","toJson","copyPeerToRuntime","promises","map","nmDir","path","join","fs","remove","Promise","all","subscribers","type","mapSeries","subscriber","exports"],"sources":["dependency-installer.ts"],"sourcesContent":["import mapSeries from 'p-map-series';\nimport path from 'path';\nimport fs from 'fs-extra';\nimport type { MainAspect, AspectLoaderMain } from '@teambit/aspect-loader';\nimport type { ComponentMap } from '@teambit/component';\nimport { type DependenciesGraph } from '@teambit/objects';\nimport type { Logger } from '@teambit/logger';\nimport type { PathAbsolute } from '@teambit/toolbox.path.path';\nimport type { PeerDependencyRules, ProjectManifest } from '@pnpm/types';\nimport { MainAspectNotInstallable, RootDirNotDefined } from './exceptions';\nimport type { PackageManager, PackageManagerInstallOptions, PackageImportMethod } from './package-manager';\nimport type { WorkspacePolicy } from './policy';\nimport type { CreateFromComponentsOptions } from './manifest';\nimport type { DependencyResolverMain } from './dependency-resolver.main.runtime';\n\nconst DEFAULT_PM_INSTALL_OPTIONS: PackageManagerInstallOptions = {\n dedupe: true,\n copyPeerToRuntimeOnRoot: true,\n copyPeerToRuntimeOnComponents: false,\n installPeersFromEnvs: false,\n};\n\nconst DEFAULT_INSTALL_OPTIONS: InstallOptions = {\n installTeambitBit: false,\n excludeExtensionsDependencies: false,\n};\n\nexport type DepInstallerContext = {\n inCapsule?: boolean;\n};\n\nexport type InstallArgs = {\n rootDir: string | undefined;\n rootPolicy: WorkspacePolicy;\n componentDirectoryMap: ComponentMap<string>;\n options: InstallOptions;\n packageManagerOptions: PackageManagerInstallOptions;\n};\n\nexport type InstallOptions = {\n installTeambitBit: boolean;\n packageManagerConfigRootDir?: string;\n resolveVersionsFromDependenciesOnly?: boolean;\n linkedDependencies?: Record<string, Record<string, string>>;\n forcedHarmonyVersion?: string;\n excludeExtensionsDependencies?: boolean;\n dedupeInjectedDeps?: boolean;\n dependenciesGraph?: DependenciesGraph;\n};\n\nexport type GetComponentManifestsOptions = {\n componentDirectoryMap: ComponentMap<string>;\n rootPolicy: WorkspacePolicy;\n rootDir: string;\n resolveVersionsFromDependenciesOnly?: boolean;\n referenceLocalPackages?: boolean;\n hasRootComponents?: boolean;\n excludeExtensionsDependencies?: boolean;\n} & Pick<\n PackageManagerInstallOptions,\n 'dedupe' | 'dependencyFilterFn' | 'copyPeerToRuntimeOnComponents' | 'copyPeerToRuntimeOnRoot' | 'installPeersFromEnvs'\n>;\n\nexport type PreInstallSubscriber = (installer: DependencyInstaller, installArgs: InstallArgs) => Promise<void>;\nexport type PreInstallSubscriberList = Array<PreInstallSubscriber>;\n\nexport type PostInstallSubscriber = (installer: DependencyInstaller, installArgs: InstallArgs) => Promise<void>;\nexport type PostInstallSubscriberList = Array<PostInstallSubscriber>;\n\nexport class DependencyInstaller {\n constructor(\n /**\n * package manager instance.\n */\n private packageManager: PackageManager,\n\n private aspectLoader: AspectLoaderMain,\n\n private logger: Logger,\n\n private dependencyResolver: DependencyResolverMain,\n\n private rootDir?: string | PathAbsolute,\n\n private cacheRootDir?: string | PathAbsolute,\n\n private preInstallSubscriberList?: PreInstallSubscriberList,\n\n private postInstallSubscriberList?: PostInstallSubscriberList,\n\n private nodeLinker?: 'hoisted' | 'isolated',\n\n private packageImportMethod?: PackageImportMethod,\n\n private sideEffectsCache?: boolean,\n\n private nodeVersion?: string,\n\n private engineStrict?: boolean,\n\n private peerDependencyRules?: PeerDependencyRules,\n\n private neverBuiltDependencies?: string[],\n\n private allowScripts?: Record<string, boolean | 'warn'>,\n\n private dangerouslyAllowAllScripts?: boolean,\n\n private preferOffline?: boolean,\n\n private minimumReleaseAge?: number,\n\n private minimumReleaseAgeExclude?: string[],\n\n private installingContext: DepInstallerContext = {}\n ) {}\n\n async install(\n rootDir: string | undefined,\n rootPolicy: WorkspacePolicy,\n componentDirectoryMap: ComponentMap<string>,\n options: InstallOptions = DEFAULT_INSTALL_OPTIONS,\n packageManagerOptions: PackageManagerInstallOptions = DEFAULT_PM_INSTALL_OPTIONS\n ) {\n const finalRootDir = rootDir ?? this.rootDir;\n if (!finalRootDir) {\n throw new RootDirNotDefined();\n }\n const manifests = await this.getComponentManifests({\n ...packageManagerOptions,\n componentDirectoryMap,\n rootPolicy,\n rootDir: finalRootDir,\n resolveVersionsFromDependenciesOnly: options.resolveVersionsFromDependenciesOnly,\n referenceLocalPackages: packageManagerOptions.rootComponentsForCapsules,\n excludeExtensionsDependencies: options.excludeExtensionsDependencies,\n });\n return this.installComponents(\n finalRootDir,\n manifests,\n rootPolicy,\n componentDirectoryMap,\n options,\n packageManagerOptions\n );\n }\n\n async installComponents(\n rootDir: string | undefined,\n manifests: Record<string, ProjectManifest>,\n rootPolicy: WorkspacePolicy,\n componentDirectoryMap: ComponentMap<string>,\n options: InstallOptions = DEFAULT_INSTALL_OPTIONS,\n packageManagerOptions: PackageManagerInstallOptions = DEFAULT_PM_INSTALL_OPTIONS\n ): Promise<{ dependenciesChanged: boolean }> {\n const args = {\n componentDirectoryMap,\n options,\n packageManagerOptions,\n rootDir,\n rootPolicy,\n };\n await this.runPrePostSubscribers(this.preInstallSubscriberList, 'pre', args);\n const mainAspect: MainAspect = this.aspectLoader.mainAspect;\n const finalRootDir = rootDir || this.rootDir;\n if (!finalRootDir) {\n throw new RootDirNotDefined();\n }\n if (options.linkedDependencies) {\n manifests = JSON.parse(JSON.stringify(manifests));\n const linkedDependencies = JSON.parse(\n JSON.stringify(options.linkedDependencies)\n ) as typeof options.linkedDependencies;\n if (linkedDependencies[finalRootDir]) {\n if (options.forcedHarmonyVersion == null && manifests[finalRootDir].dependencies?.['@teambit/harmony']) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n delete manifests[finalRootDir].dependencies!['@teambit/harmony'];\n }\n const directDeps = new Set<string>();\n Object.values(manifests).forEach((manifest) => {\n for (const depName of Object.keys({ ...manifest.dependencies, ...manifest.devDependencies })) {\n directDeps.add(depName);\n }\n });\n for (const manifest of Object.values(manifests)) {\n if (manifest.name && directDeps.has(manifest.name)) {\n delete linkedDependencies[finalRootDir][manifest.name];\n }\n }\n }\n Object.entries(linkedDependencies).forEach(([dir, linkedDeps]) => {\n if (!manifests[dir]) {\n manifests[dir] = {};\n }\n manifests[dir].dependencies = {\n ...linkedDeps,\n ...manifests[dir].dependencies,\n };\n });\n }\n const isJsonCmd = process.argv.includes('--json') || process.argv.includes('-j');\n const hidePackageManagerOutput =\n Boolean(this.installingContext.inCapsule && process.env.VERBOSE_PM_OUTPUT !== 'true') || isJsonCmd;\n\n // Make sure to take other default if passed options with only one option\n const calculatedPmOpts = {\n ...DEFAULT_PM_INSTALL_OPTIONS,\n cacheRootDir: this.cacheRootDir,\n nodeLinker: this.nodeLinker,\n packageImportMethod: this.packageImportMethod,\n minimumReleaseAge: this.minimumReleaseAge,\n minimumReleaseAgeExclude: this.minimumReleaseAgeExclude,\n sideEffectsCache: this.sideEffectsCache,\n nodeVersion: this.nodeVersion,\n engineStrict: this.engineStrict,\n packageManagerConfigRootDir: options.packageManagerConfigRootDir,\n peerDependencyRules: this.peerDependencyRules,\n hidePackageManagerOutput,\n neverBuiltDependencies: this.neverBuiltDependencies,\n allowScripts: this.allowScripts,\n dangerouslyAllowAllScripts: this.dangerouslyAllowAllScripts,\n preferOffline: this.preferOffline,\n dedupeInjectedDeps: options.dedupeInjectedDeps,\n dependenciesGraph: options.dependenciesGraph,\n forcedHarmonyVersion: options.forcedHarmonyVersion,\n ...packageManagerOptions,\n };\n if (options.installTeambitBit) {\n if (!mainAspect.version || !mainAspect.packageName) {\n throw new MainAspectNotInstallable();\n }\n const version = mainAspect.version;\n rootPolicy.add({\n dependencyId: mainAspect.packageName,\n lifecycleType: 'runtime',\n value: {\n version,\n },\n });\n }\n\n if (!packageManagerOptions.rootComponents && !packageManagerOptions.keepExistingModulesDir) {\n try {\n // Remove node modules dir for all components dirs, since it might contain left overs from previous install.\n //\n // This is not needed when \"rootComponents\" are used, as in that case the package manager handles the node_modules\n // and it never leaves node_modules in a broken state.\n // Removing node_modules in that case would delete useful state information that is used by Yarn or pnpm.\n await this.cleanCompsNodeModules(componentDirectoryMap);\n } catch (err) {\n this.logger.debug('failed to remove node_modules directories from components', err);\n // A failure to remove the node_modules directory should not cause the process to fail\n }\n }\n\n const messagePrefix = 'running package installation';\n const messageSuffix = `using ${this.packageManager.name}`;\n const message = this.installingContext?.inCapsule\n ? `(capsule) ${messagePrefix} in root dir ${this.rootDir} ${messageSuffix}`\n : `${messagePrefix} ${messageSuffix}`;\n if (!hidePackageManagerOutput) {\n this.logger.setStatusLine(message);\n }\n const startTime = process.hrtime();\n\n // TODO: the cache should be probably passed to the package manager constructor not to the install function\n const installResult = await this.packageManager.install(\n {\n rootDir: finalRootDir,\n manifests,\n componentDirectoryMap,\n },\n calculatedPmOpts\n );\n if (!hidePackageManagerOutput) {\n this.logger.consoleSuccess(`done ${message}`, startTime);\n }\n await this.runPrePostSubscribers(this.postInstallSubscriberList, 'post', args);\n return installResult;\n }\n\n public async pruneModules(rootDir: string): Promise<void> {\n if (!this.packageManager.pruneModules) {\n return;\n }\n await this.packageManager.pruneModules(rootDir);\n }\n\n /**\n * Compute all the component manifests (a.k.a. package.json files) that should be passed to the package manager\n * in order to install the dependencies.\n */\n public async getComponentManifests({\n componentDirectoryMap,\n rootPolicy,\n rootDir,\n dedupe,\n dependencyFilterFn,\n copyPeerToRuntimeOnComponents,\n copyPeerToRuntimeOnRoot,\n installPeersFromEnvs,\n resolveVersionsFromDependenciesOnly,\n referenceLocalPackages,\n hasRootComponents,\n excludeExtensionsDependencies,\n }: GetComponentManifestsOptions) {\n const options: CreateFromComponentsOptions = {\n filterComponentsFromManifests: true,\n createManifestForComponentsWithoutDependencies: true,\n dedupe,\n dependencyFilterFn,\n resolveVersionsFromDependenciesOnly,\n referenceLocalPackages,\n hasRootComponents,\n excludeExtensionsDependencies,\n };\n const workspaceManifest = await this.dependencyResolver.getWorkspaceManifest(\n undefined,\n undefined,\n rootPolicy,\n rootDir,\n componentDirectoryMap.components,\n options,\n this.installingContext\n );\n const manifests: Record<string, ProjectManifest> = componentDirectoryMap\n .toArray()\n .reduce((acc, [component, dir]) => {\n const packageName = this.dependencyResolver.getPackageName(component);\n const manifest = workspaceManifest.componentsManifestsMap.get(packageName);\n if (manifest) {\n acc[dir] = manifest.toJson({ copyPeerToRuntime: copyPeerToRuntimeOnComponents });\n }\n return acc;\n }, {});\n if (!manifests[rootDir]) {\n manifests[rootDir] = workspaceManifest.toJson({\n copyPeerToRuntime: copyPeerToRuntimeOnRoot,\n installPeersFromEnvs,\n });\n }\n return manifests;\n }\n\n private async cleanCompsNodeModules(componentDirectoryMap: ComponentMap<string>) {\n const promises = componentDirectoryMap.toArray().map(([, dir]) => {\n const nmDir = path.join(dir, 'node_modules');\n return fs.remove(nmDir);\n });\n return Promise.all(promises);\n }\n\n private async runPrePostSubscribers(\n subscribers: PreInstallSubscriberList | PostInstallSubscriberList = [],\n type: 'pre' | 'post',\n args: InstallArgs\n ): Promise<void> {\n const message = this.installingContext?.inCapsule\n ? `(capsule) running ${type} install subscribers in root dir ${this.rootDir}`\n : `running ${type} install subscribers`;\n if (!this.installingContext?.inCapsule) {\n this.logger.setStatusLine(message);\n }\n await mapSeries(subscribers, async (subscriber) => {\n return subscriber(this, args);\n });\n if (!this.installingContext?.inCapsule) {\n this.logger.consoleSuccess(message);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_pMapSeries","data","_interopRequireDefault","require","_path","_fsExtra","_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_PM_INSTALL_OPTIONS","dedupe","copyPeerToRuntimeOnRoot","copyPeerToRuntimeOnComponents","installPeersFromEnvs","DEFAULT_INSTALL_OPTIONS","installTeambitBit","excludeExtensionsDependencies","DependencyInstaller","constructor","packageManager","aspectLoader","logger","dependencyResolver","rootDir","cacheRootDir","preInstallSubscriberList","postInstallSubscriberList","nodeLinker","packageImportMethod","sideEffectsCache","nodeVersion","engineStrict","peerDependencyRules","neverBuiltDependencies","allowScripts","dangerouslyAllowAllScripts","preferOffline","minimumReleaseAge","minimumReleaseAgeExclude","installingContext","install","rootPolicy","componentDirectoryMap","options","packageManagerOptions","finalRootDir","RootDirNotDefined","manifests","getComponentManifests","resolveVersionsFromDependenciesOnly","referenceLocalPackages","rootComponentsForCapsules","includeAllEnvPeers","installComponents","args","runPrePostSubscribers","mainAspect","linkedDependencies","JSON","parse","stringify","forcedHarmonyVersion","dependencies","directDeps","Set","values","manifest","depName","devDependencies","add","name","has","entries","dir","linkedDeps","isJsonCmd","process","argv","includes","hidePackageManagerOutput","Boolean","inCapsule","env","VERBOSE_PM_OUTPUT","calculatedPmOpts","packageManagerConfigRootDir","dedupeInjectedDeps","dependenciesGraph","version","packageName","MainAspectNotInstallable","dependencyId","lifecycleType","rootComponents","keepExistingModulesDir","cleanCompsNodeModules","err","debug","messagePrefix","messageSuffix","message","setStatusLine","startTime","hrtime","installResult","consoleSuccess","pruneModules","dependencyFilterFn","hasRootComponents","filterComponentsFromManifests","createManifestForComponentsWithoutDependencies","workspaceManifest","getWorkspaceManifest","undefined","components","toArray","reduce","acc","component","getPackageName","componentsManifestsMap","get","toJson","copyPeerToRuntime","promises","map","nmDir","path","join","fs","remove","Promise","all","subscribers","type","mapSeries","subscriber","exports"],"sources":["dependency-installer.ts"],"sourcesContent":["import mapSeries from 'p-map-series';\nimport path from 'path';\nimport fs from 'fs-extra';\nimport type { MainAspect, AspectLoaderMain } from '@teambit/aspect-loader';\nimport type { ComponentMap } from '@teambit/component';\nimport { type DependenciesGraph } from '@teambit/objects';\nimport type { Logger } from '@teambit/logger';\nimport type { PathAbsolute } from '@teambit/toolbox.path.path';\nimport type { PeerDependencyRules, ProjectManifest } from '@pnpm/types';\nimport { MainAspectNotInstallable, RootDirNotDefined } from './exceptions';\nimport type { PackageManager, PackageManagerInstallOptions, PackageImportMethod } from './package-manager';\nimport type { WorkspacePolicy } from './policy';\nimport type { CreateFromComponentsOptions } from './manifest';\nimport type { DependencyResolverMain } from './dependency-resolver.main.runtime';\n\nconst DEFAULT_PM_INSTALL_OPTIONS: PackageManagerInstallOptions = {\n dedupe: true,\n copyPeerToRuntimeOnRoot: true,\n copyPeerToRuntimeOnComponents: false,\n installPeersFromEnvs: false,\n};\n\nconst DEFAULT_INSTALL_OPTIONS: InstallOptions = {\n installTeambitBit: false,\n excludeExtensionsDependencies: false,\n};\n\nexport type DepInstallerContext = {\n inCapsule?: boolean;\n};\n\nexport type InstallArgs = {\n rootDir: string | undefined;\n rootPolicy: WorkspacePolicy;\n componentDirectoryMap: ComponentMap<string>;\n options: InstallOptions;\n packageManagerOptions: PackageManagerInstallOptions;\n};\n\nexport type InstallOptions = {\n installTeambitBit: boolean;\n packageManagerConfigRootDir?: string;\n resolveVersionsFromDependenciesOnly?: boolean;\n linkedDependencies?: Record<string, Record<string, string>>;\n forcedHarmonyVersion?: string;\n excludeExtensionsDependencies?: boolean;\n dedupeInjectedDeps?: boolean;\n dependenciesGraph?: DependenciesGraph;\n};\n\nexport type GetComponentManifestsOptions = {\n componentDirectoryMap: ComponentMap<string>;\n rootPolicy: WorkspacePolicy;\n rootDir: string;\n resolveVersionsFromDependenciesOnly?: boolean;\n referenceLocalPackages?: boolean;\n includeAllEnvPeers?: boolean;\n hasRootComponents?: boolean;\n excludeExtensionsDependencies?: boolean;\n} & Pick<\n PackageManagerInstallOptions,\n 'dedupe' | 'dependencyFilterFn' | 'copyPeerToRuntimeOnComponents' | 'copyPeerToRuntimeOnRoot' | 'installPeersFromEnvs'\n>;\n\nexport type PreInstallSubscriber = (installer: DependencyInstaller, installArgs: InstallArgs) => Promise<void>;\nexport type PreInstallSubscriberList = Array<PreInstallSubscriber>;\n\nexport type PostInstallSubscriber = (installer: DependencyInstaller, installArgs: InstallArgs) => Promise<void>;\nexport type PostInstallSubscriberList = Array<PostInstallSubscriber>;\n\nexport class DependencyInstaller {\n constructor(\n /**\n * package manager instance.\n */\n private packageManager: PackageManager,\n\n private aspectLoader: AspectLoaderMain,\n\n private logger: Logger,\n\n private dependencyResolver: DependencyResolverMain,\n\n private rootDir?: string | PathAbsolute,\n\n private cacheRootDir?: string | PathAbsolute,\n\n private preInstallSubscriberList?: PreInstallSubscriberList,\n\n private postInstallSubscriberList?: PostInstallSubscriberList,\n\n private nodeLinker?: 'hoisted' | 'isolated',\n\n private packageImportMethod?: PackageImportMethod,\n\n private sideEffectsCache?: boolean,\n\n private nodeVersion?: string,\n\n private engineStrict?: boolean,\n\n private peerDependencyRules?: PeerDependencyRules,\n\n private neverBuiltDependencies?: string[],\n\n private allowScripts?: Record<string, boolean | 'warn'>,\n\n private dangerouslyAllowAllScripts?: boolean,\n\n private preferOffline?: boolean,\n\n private minimumReleaseAge?: number,\n\n private minimumReleaseAgeExclude?: string[],\n\n private installingContext: DepInstallerContext = {}\n ) {}\n\n async install(\n rootDir: string | undefined,\n rootPolicy: WorkspacePolicy,\n componentDirectoryMap: ComponentMap<string>,\n options: InstallOptions = DEFAULT_INSTALL_OPTIONS,\n packageManagerOptions: PackageManagerInstallOptions = DEFAULT_PM_INSTALL_OPTIONS\n ) {\n const finalRootDir = rootDir ?? this.rootDir;\n if (!finalRootDir) {\n throw new RootDirNotDefined();\n }\n const manifests = await this.getComponentManifests({\n ...packageManagerOptions,\n componentDirectoryMap,\n rootPolicy,\n rootDir: finalRootDir,\n resolveVersionsFromDependenciesOnly: options.resolveVersionsFromDependenciesOnly,\n referenceLocalPackages: packageManagerOptions.rootComponentsForCapsules,\n includeAllEnvPeers: packageManagerOptions.rootComponentsForCapsules,\n excludeExtensionsDependencies: options.excludeExtensionsDependencies,\n });\n return this.installComponents(\n finalRootDir,\n manifests,\n rootPolicy,\n componentDirectoryMap,\n options,\n packageManagerOptions\n );\n }\n\n async installComponents(\n rootDir: string | undefined,\n manifests: Record<string, ProjectManifest>,\n rootPolicy: WorkspacePolicy,\n componentDirectoryMap: ComponentMap<string>,\n options: InstallOptions = DEFAULT_INSTALL_OPTIONS,\n packageManagerOptions: PackageManagerInstallOptions = DEFAULT_PM_INSTALL_OPTIONS\n ): Promise<{ dependenciesChanged: boolean }> {\n const args = {\n componentDirectoryMap,\n options,\n packageManagerOptions,\n rootDir,\n rootPolicy,\n };\n await this.runPrePostSubscribers(this.preInstallSubscriberList, 'pre', args);\n const mainAspect: MainAspect = this.aspectLoader.mainAspect;\n const finalRootDir = rootDir || this.rootDir;\n if (!finalRootDir) {\n throw new RootDirNotDefined();\n }\n if (options.linkedDependencies) {\n manifests = JSON.parse(JSON.stringify(manifests));\n const linkedDependencies = JSON.parse(\n JSON.stringify(options.linkedDependencies)\n ) as typeof options.linkedDependencies;\n if (linkedDependencies[finalRootDir]) {\n if (options.forcedHarmonyVersion == null && manifests[finalRootDir].dependencies?.['@teambit/harmony']) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n delete manifests[finalRootDir].dependencies!['@teambit/harmony'];\n }\n const directDeps = new Set<string>();\n Object.values(manifests).forEach((manifest) => {\n for (const depName of Object.keys({ ...manifest.dependencies, ...manifest.devDependencies })) {\n directDeps.add(depName);\n }\n });\n for (const manifest of Object.values(manifests)) {\n if (manifest.name && directDeps.has(manifest.name)) {\n delete linkedDependencies[finalRootDir][manifest.name];\n }\n }\n }\n Object.entries(linkedDependencies).forEach(([dir, linkedDeps]) => {\n if (!manifests[dir]) {\n manifests[dir] = {};\n }\n manifests[dir].dependencies = {\n ...linkedDeps,\n ...manifests[dir].dependencies,\n };\n });\n }\n const isJsonCmd = process.argv.includes('--json') || process.argv.includes('-j');\n const hidePackageManagerOutput =\n Boolean(this.installingContext.inCapsule && process.env.VERBOSE_PM_OUTPUT !== 'true') || isJsonCmd;\n\n // Make sure to take other default if passed options with only one option\n const calculatedPmOpts = {\n ...DEFAULT_PM_INSTALL_OPTIONS,\n cacheRootDir: this.cacheRootDir,\n nodeLinker: this.nodeLinker,\n packageImportMethod: this.packageImportMethod,\n minimumReleaseAge: this.minimumReleaseAge,\n minimumReleaseAgeExclude: this.minimumReleaseAgeExclude,\n sideEffectsCache: this.sideEffectsCache,\n nodeVersion: this.nodeVersion,\n engineStrict: this.engineStrict,\n packageManagerConfigRootDir: options.packageManagerConfigRootDir,\n peerDependencyRules: this.peerDependencyRules,\n hidePackageManagerOutput,\n neverBuiltDependencies: this.neverBuiltDependencies,\n allowScripts: this.allowScripts,\n dangerouslyAllowAllScripts: this.dangerouslyAllowAllScripts,\n preferOffline: this.preferOffline,\n dedupeInjectedDeps: options.dedupeInjectedDeps,\n dependenciesGraph: options.dependenciesGraph,\n forcedHarmonyVersion: options.forcedHarmonyVersion,\n ...packageManagerOptions,\n };\n if (options.installTeambitBit) {\n if (!mainAspect.version || !mainAspect.packageName) {\n throw new MainAspectNotInstallable();\n }\n const version = mainAspect.version;\n rootPolicy.add({\n dependencyId: mainAspect.packageName,\n lifecycleType: 'runtime',\n value: {\n version,\n },\n });\n }\n\n if (!packageManagerOptions.rootComponents && !packageManagerOptions.keepExistingModulesDir) {\n try {\n // Remove node modules dir for all components dirs, since it might contain left overs from previous install.\n //\n // This is not needed when \"rootComponents\" are used, as in that case the package manager handles the node_modules\n // and it never leaves node_modules in a broken state.\n // Removing node_modules in that case would delete useful state information that is used by Yarn or pnpm.\n await this.cleanCompsNodeModules(componentDirectoryMap);\n } catch (err) {\n this.logger.debug('failed to remove node_modules directories from components', err);\n // A failure to remove the node_modules directory should not cause the process to fail\n }\n }\n\n const messagePrefix = 'running package installation';\n const messageSuffix = `using ${this.packageManager.name}`;\n const message = this.installingContext?.inCapsule\n ? `(capsule) ${messagePrefix} in root dir ${this.rootDir} ${messageSuffix}`\n : `${messagePrefix} ${messageSuffix}`;\n if (!hidePackageManagerOutput) {\n this.logger.setStatusLine(message);\n }\n const startTime = process.hrtime();\n\n // TODO: the cache should be probably passed to the package manager constructor not to the install function\n const installResult = await this.packageManager.install(\n {\n rootDir: finalRootDir,\n manifests,\n componentDirectoryMap,\n },\n calculatedPmOpts\n );\n if (!hidePackageManagerOutput) {\n this.logger.consoleSuccess(`done ${message}`, startTime);\n }\n await this.runPrePostSubscribers(this.postInstallSubscriberList, 'post', args);\n return installResult;\n }\n\n public async pruneModules(rootDir: string): Promise<void> {\n if (!this.packageManager.pruneModules) {\n return;\n }\n await this.packageManager.pruneModules(rootDir);\n }\n\n /**\n * Compute all the component manifests (a.k.a. package.json files) that should be passed to the package manager\n * in order to install the dependencies.\n */\n public async getComponentManifests({\n componentDirectoryMap,\n rootPolicy,\n rootDir,\n dedupe,\n dependencyFilterFn,\n copyPeerToRuntimeOnComponents,\n copyPeerToRuntimeOnRoot,\n installPeersFromEnvs,\n resolveVersionsFromDependenciesOnly,\n referenceLocalPackages,\n includeAllEnvPeers,\n hasRootComponents,\n excludeExtensionsDependencies,\n }: GetComponentManifestsOptions) {\n const options: CreateFromComponentsOptions = {\n filterComponentsFromManifests: true,\n createManifestForComponentsWithoutDependencies: true,\n dedupe,\n dependencyFilterFn,\n resolveVersionsFromDependenciesOnly,\n referenceLocalPackages,\n includeAllEnvPeers,\n hasRootComponents,\n excludeExtensionsDependencies,\n };\n const workspaceManifest = await this.dependencyResolver.getWorkspaceManifest(\n undefined,\n undefined,\n rootPolicy,\n rootDir,\n componentDirectoryMap.components,\n options,\n this.installingContext\n );\n const manifests: Record<string, ProjectManifest> = componentDirectoryMap\n .toArray()\n .reduce((acc, [component, dir]) => {\n const packageName = this.dependencyResolver.getPackageName(component);\n const manifest = workspaceManifest.componentsManifestsMap.get(packageName);\n if (manifest) {\n acc[dir] = manifest.toJson({ copyPeerToRuntime: copyPeerToRuntimeOnComponents });\n }\n return acc;\n }, {});\n if (!manifests[rootDir]) {\n manifests[rootDir] = workspaceManifest.toJson({\n copyPeerToRuntime: copyPeerToRuntimeOnRoot,\n installPeersFromEnvs,\n });\n }\n return manifests;\n }\n\n private async cleanCompsNodeModules(componentDirectoryMap: ComponentMap<string>) {\n const promises = componentDirectoryMap.toArray().map(([, dir]) => {\n const nmDir = path.join(dir, 'node_modules');\n return fs.remove(nmDir);\n });\n return Promise.all(promises);\n }\n\n private async runPrePostSubscribers(\n subscribers: PreInstallSubscriberList | PostInstallSubscriberList = [],\n type: 'pre' | 'post',\n args: InstallArgs\n ): Promise<void> {\n const message = this.installingContext?.inCapsule\n ? `(capsule) running ${type} install subscribers in root dir ${this.rootDir}`\n : `running ${type} install subscribers`;\n if (!this.installingContext?.inCapsule) {\n this.logger.setStatusLine(message);\n }\n await mapSeries(subscribers, async (subscriber) => {\n return subscriber(this, args);\n });\n if (!this.installingContext?.inCapsule) {\n this.logger.consoleSuccess(message);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -20,6 +20,7 @@ export type CreateFromComponentsOptions = {
20
20
  dependencyFilterFn?: DepsFilterFn;
21
21
  resolveVersionsFromDependenciesOnly?: boolean;
22
22
  referenceLocalPackages?: boolean;
23
+ includeAllEnvPeers?: boolean;
23
24
  hasRootComponents?: boolean;
24
25
  excludeExtensionsDependencies?: boolean;
25
26
  };
@@ -38,7 +39,7 @@ export declare class WorkspaceManifestFactory {
38
39
  * @returns
39
40
  */
40
41
  private buildComponentDependenciesMap;
41
- private _getDefaultPeerDependencies;
42
+ private _getEnvPeerDependencies;
42
43
  private updateDependenciesVersions;
43
44
  /**
44
45
  * Get the components manifests based on the calculated dedupedDependencies
@@ -124,6 +124,7 @@ class WorkspaceManifestFactory {
124
124
  dependencyFilterFn: optsWithDefaults.dependencyFilterFn,
125
125
  excludeExtensionsDependencies: optsWithDefaults.excludeExtensionsDependencies,
126
126
  referenceLocalPackages: optsWithDefaults.referenceLocalPackages && hasRootComponents,
127
+ includeAllEnvPeers: optsWithDefaults.includeAllEnvPeers,
127
128
  rootDependencies: hasRootComponents ? rootPolicy.toManifest().dependencies : undefined
128
129
  });
129
130
  let dedupedDependencies = (0, _deduping().getEmptyDedupedDependencies)();
@@ -179,6 +180,7 @@ class WorkspaceManifestFactory {
179
180
  filterComponentsFromManifests,
180
181
  excludeExtensionsDependencies,
181
182
  referenceLocalPackages,
183
+ includeAllEnvPeers,
182
184
  rootDependencies,
183
185
  rootPolicy
184
186
  }) {
@@ -235,24 +237,35 @@ class WorkspaceManifestFactory {
235
237
  const unresolvedDevMissingRootDeps = (0, _lodash().pickBy)(rootDependencies, (_version, rootPackageName) => {
236
238
  return devMissings.includes(rootPackageName) && !depManifestBeforeFiltering.dependencies[rootPackageName] && !depManifestBeforeFiltering.devDependencies[rootPackageName] && !depManifestBeforeFiltering.peerDependencies[rootPackageName];
237
239
  });
238
- const defaultPeerDependencies = await this._getDefaultPeerDependencies(component, packageNames);
239
- const usedPeerDependencies = (0, _lodash().pickBy)(defaultPeerDependencies, (_val, pkgName) => {
240
- return depManifestBeforeFiltering.dependencies[pkgName] || depManifestBeforeFiltering.devDependencies[pkgName] || depManifestBeforeFiltering.peerDependencies[pkgName];
241
- });
242
- // In case the env has peer dependencies on both react and react-dom, we want to make sure to keep the versions
243
- // in sync with each other, otherwise it may cause issues in the workspace
244
- // This is a special case for react and react-dom, as most component do import from react, making it a peer dependency,
245
- // but not necessarily import from react-dom, which from env.jsonc peers in that case not added to the peers of the component.
246
- // and if the versions are not in sync, it may cause issues in the workspace
247
- // an example:
248
- // my-comp depend on react, and using @testing-library/react which depend on react-dom (as peer),
249
- // the component don't have react-dom as peer dependency, but when we install the dependencies in the workspace,
250
- // it will install the latest version of react-dom which may not be compatible with the version of react that my-comp
251
- // is using, and it may cause issues in the workspace.
252
- if (usedPeerDependencies.react && defaultPeerDependencies['react-dom']) {
253
- usedPeerDependencies['react-dom'] = defaultPeerDependencies['react-dom'];
240
+ const envPeerDependencies = await this._getEnvPeerDependencies(component, packageNames);
241
+ // When includeAllEnvPeers is true, use ALL env peer deps to ensure consistent
242
+ // peer dependency contexts across all components. Otherwise, pnpm creates separate
243
+ // "injected" copies in .pnpm/ for components with different peer sets, causing
244
+ // TypeScript to see duplicate types from different physical paths.
245
+ // When false, only include peer deps that the component actually uses, to avoid
246
+ // writing unnecessary deps to the generated install manifest.
247
+ let peerDepsForManifest;
248
+ if (includeAllEnvPeers) {
249
+ peerDepsForManifest = envPeerDependencies;
250
+ } else {
251
+ peerDepsForManifest = (0, _lodash().pickBy)(envPeerDependencies, (_val, pkgName) => {
252
+ return depManifestBeforeFiltering.dependencies[pkgName] || depManifestBeforeFiltering.devDependencies[pkgName] || depManifestBeforeFiltering.peerDependencies[pkgName];
253
+ });
254
+ // In case the env has peer dependencies on both react and react-dom, we want to make sure to keep the versions
255
+ // in sync with each other, otherwise it may cause issues in the workspace
256
+ // This is a special case for react and react-dom, as most component do import from react, making it a peer dependency,
257
+ // but not necessarily import from react-dom, which from env.jsonc peers in that case not added to the peers of the component.
258
+ // and if the versions are not in sync, it may cause issues in the workspace
259
+ // an example:
260
+ // my-comp depend on react, and using @testing-library/react which depend on react-dom (as peer),
261
+ // the component don't have react-dom as peer dependency, but when we install the dependencies in the workspace,
262
+ // it will install the latest version of react-dom which may not be compatible with the version of react that my-comp
263
+ // is using, and it may cause issues in the workspace.
264
+ if (peerDepsForManifest.react && envPeerDependencies['react-dom']) {
265
+ peerDepsForManifest['react-dom'] = envPeerDependencies['react-dom'];
266
+ }
254
267
  }
255
- depManifest.dependencies = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, usedPeerDependencies), unresolvedRuntimeMissingRootDeps), additionalDeps), depManifest.dependencies);
268
+ depManifest.dependencies = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, peerDepsForManifest), unresolvedRuntimeMissingRootDeps), additionalDeps), depManifest.dependencies);
256
269
  depManifest.devDependencies = _objectSpread(_objectSpread({}, unresolvedDevMissingRootDeps), depManifest.devDependencies);
257
270
  return {
258
271
  packageName,
@@ -268,7 +281,7 @@ class WorkspaceManifestFactory {
268
281
  }
269
282
  return result;
270
283
  }
271
- async _getDefaultPeerDependencies(component, packageNamesFromWorkspace) {
284
+ async _getEnvPeerDependencies(component, packageNamesFromWorkspace) {
272
285
  const envPolicy = await this.dependencyResolver.getComponentEnvPolicy(component);
273
286
  const selfPolicyWithoutLocal = envPolicy.selfPolicy.filter(dep => !packageNamesFromWorkspace.includes(dep.dependencyId));
274
287
  const nameVersionTuples = selfPolicyWithoutLocal.toNameVersionTuple();
@@ -1 +1 @@
1
- {"version":3,"names":["_aspectLoader","data","require","_componentIssues","_pkgModules","_lodash","_semver","_pMapSeries","_interopRequireDefault","_componentPackageVersion","_dependencies","_policy","_componentManifest","_deduping","_updateDependencyVersion","_workspaceManifest","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_CREATE_OPTIONS","filterComponentsFromManifests","createManifestForComponentsWithoutDependencies","dedupe","resolveVersionsFromDependenciesOnly","excludeExtensionsDependencies","WorkspaceManifestFactory","constructor","dependencyResolver","aspectLoader","createFromComponents","name","version","rootPolicy","rootDir","components","options","optsWithDefaults","assign","hasRootComponents","filterOutCoreAspects","componentDependenciesMap","buildComponentDependenciesMap","undefined","dependencyFilterFn","referenceLocalPackages","rootDependencies","toManifest","dependencies","dedupedDependencies","getEmptyDedupedDependencies","dedupeDependencies","dedupePeerDependencies","mapValues","deps","excludeWorkspaceDependencies","componentsManifestsMap","getComponentsManifests","envSelfPeers","getEnvsSelfPeersPolicy","workspaceManifest","WorkspaceManifest","coreAspectIds","getCoreAspectIds","coreAspectPkgNames","Set","map","coreAspectId","getCoreAspectPackageName","add","dep","has","dependencyId","foundEnvs","component","values","envPolicy","peersPolicies","policy","selfPolicy","mergedPolicies","VariantPolicy","mergePolices","packageNames","getPackageName","buildResultsP","packageName","componentIdToPackageName","state","_consumer","depList","getDependencies","includeHidden","additionalDeps","comp","toTypeArray","compIdWithoutVersion","id","split","isExtension","includes","componentInWorkspace","find","c","isEqual","componentId","pkgName","depManifestBeforeFiltering","toDependenciesManifest","filterComponents","filterExtensions","updateDependenciesVersions","depManifest","devMissings","runtimeMissings","getMissingPackages","unresolvedRuntimeMissingRootDeps","pickBy","_version","rootPackageName","devDependencies","peerDependencies","unresolvedDevMissingRootDeps","defaultPeerDependencies","_getDefaultPeerDependencies","usedPeerDependencies","_val","react","result","Map","results","Promise","all","currResult","set","packageNamesFromWorkspace","getComponentEnvPolicy","selfPolicyWithoutLocal","nameVersionTuples","toNameVersionTuple","resolved","currentDeps","found","findByPkgNameOrCompId","snapToSemver","fromPairs","dependencyList","getPolicy","updateDependencyVersion","componentsManifests","pMapSeries","blankDependencies","optionalDependencies","peerDependenciesMeta","get","getVersion","hasVersion","manifest","ComponentManifest","SemVer","exports","filtered","ComponentDependency","componentsToFilterOut","depPkgName","some","existingComponent","toString","ignoreVersion","isEqualWithoutVersion","versionSpec","startsWith","missingPackagesData","issues","getIssue","IssuesClasses","MissingPackagesDependenciesOnFs","isDevFile","missingPackages","uniq","difference"],"sources":["workspace-manifest-factory.ts"],"sourcesContent":["import type { AspectLoaderMain } from '@teambit/aspect-loader';\nimport { getCoreAspectPackageName } from '@teambit/aspect-loader';\nimport { IssuesClasses } from '@teambit/component-issues';\nimport type { Component } from '@teambit/component';\nimport { componentIdToPackageName } from '@teambit/pkg.modules.component-package-name';\nimport { fromPairs, pickBy, mapValues, uniq, difference } from 'lodash';\nimport { SemVer } from 'semver';\nimport pMapSeries from 'p-map-series';\nimport { snapToSemver } from '@teambit/component-package-version';\nimport type { DependencyList, PackageName } from '../dependencies';\nimport { ComponentDependency } from '../dependencies';\nimport type { WorkspacePolicy, EnvPolicy } from '../policy';\nimport { VariantPolicy } from '../policy';\nimport type { DependencyResolverMain } from '../dependency-resolver.main.runtime';\nimport type { ComponentsManifestsMap } from '../types';\nimport { ComponentManifest } from './component-manifest';\nimport type { DedupedDependencies } from './deduping';\nimport { dedupeDependencies, getEmptyDedupedDependencies } from './deduping';\nimport type { ManifestToJsonOptions, ManifestDependenciesObject, DepObjectValue } from './manifest';\nimport { updateDependencyVersion } from './update-dependency-version';\nimport { WorkspaceManifest } from './workspace-manifest';\n\nexport type DepsFilterFn = (dependencies: DependencyList) => DependencyList;\n\nexport type ComponentDependenciesMap = Map<PackageName, ManifestDependenciesObject>;\nexport interface WorkspaceManifestToJsonOptions extends ManifestToJsonOptions {\n includeDir?: boolean;\n}\n\nexport type CreateFromComponentsOptions = {\n filterComponentsFromManifests: boolean;\n createManifestForComponentsWithoutDependencies: boolean;\n dedupe?: boolean;\n dependencyFilterFn?: DepsFilterFn;\n resolveVersionsFromDependenciesOnly?: boolean;\n referenceLocalPackages?: boolean;\n hasRootComponents?: boolean;\n excludeExtensionsDependencies?: boolean;\n};\n\nconst DEFAULT_CREATE_OPTIONS: CreateFromComponentsOptions = {\n filterComponentsFromManifests: true,\n createManifestForComponentsWithoutDependencies: true,\n dedupe: true,\n resolveVersionsFromDependenciesOnly: false,\n excludeExtensionsDependencies: false,\n};\nexport class WorkspaceManifestFactory {\n constructor(\n private dependencyResolver: DependencyResolverMain,\n private aspectLoader: AspectLoaderMain\n ) {}\n\n async createFromComponents(\n name: string,\n version: SemVer,\n rootPolicy: WorkspacePolicy,\n rootDir: string,\n components: Component[],\n options: CreateFromComponentsOptions = DEFAULT_CREATE_OPTIONS\n ): Promise<WorkspaceManifest> {\n // Make sure to take other default if passed options with only one option\n const optsWithDefaults = Object.assign({}, DEFAULT_CREATE_OPTIONS, options);\n const hasRootComponents = options.hasRootComponents ?? this.dependencyResolver.hasRootComponents();\n rootPolicy = this.filterOutCoreAspects(rootPolicy);\n const componentDependenciesMap: ComponentDependenciesMap = await this.buildComponentDependenciesMap(components, {\n filterComponentsFromManifests: optsWithDefaults.filterComponentsFromManifests,\n rootPolicy: optsWithDefaults.resolveVersionsFromDependenciesOnly ? undefined : rootPolicy,\n dependencyFilterFn: optsWithDefaults.dependencyFilterFn,\n excludeExtensionsDependencies: optsWithDefaults.excludeExtensionsDependencies,\n referenceLocalPackages: optsWithDefaults.referenceLocalPackages && hasRootComponents,\n rootDependencies: hasRootComponents ? rootPolicy.toManifest().dependencies : undefined,\n });\n let dedupedDependencies = getEmptyDedupedDependencies();\n if (hasRootComponents) {\n const { rootDependencies } = dedupeDependencies(rootPolicy, componentDependenciesMap, {\n dedupePeerDependencies: hasRootComponents,\n });\n // We hoist dependencies in order for the IDE to work.\n // For runtime, the peer dependencies are installed inside:\n // <ws root>/node_module/<comp name>/node_module/<comp name>/node_modules\n dedupedDependencies.rootDependencies = mapValues(\n rootDependencies,\n (deps) => deps && excludeWorkspaceDependencies(deps)\n );\n dedupedDependencies.componentDependenciesMap = componentDependenciesMap;\n } else if (options.dedupe) {\n dedupedDependencies = dedupeDependencies(rootPolicy, componentDependenciesMap);\n } else {\n dedupedDependencies.rootDependencies = rootPolicy.toManifest();\n dedupedDependencies.componentDependenciesMap = componentDependenciesMap;\n }\n const componentsManifestsMap = await this.getComponentsManifests(\n dedupedDependencies,\n components,\n optsWithDefaults.createManifestForComponentsWithoutDependencies\n );\n const envSelfPeers = this.getEnvsSelfPeersPolicy(componentsManifestsMap);\n const workspaceManifest = new WorkspaceManifest(\n name,\n version,\n dedupedDependencies.rootDependencies,\n envSelfPeers,\n rootDir,\n componentsManifestsMap\n );\n return workspaceManifest;\n }\n\n private filterOutCoreAspects(rootPolicy: WorkspacePolicy) {\n const coreAspectIds = this.aspectLoader.getCoreAspectIds();\n const coreAspectPkgNames = new Set(coreAspectIds.map((coreAspectId) => getCoreAspectPackageName(coreAspectId)));\n coreAspectPkgNames.add('@teambit/legacy');\n return rootPolicy.filter((dep) => !coreAspectPkgNames.has(dep.dependencyId));\n }\n\n private getEnvsSelfPeersPolicy(componentsManifestsMap: ComponentsManifestsMap) {\n const foundEnvs: EnvPolicy[] = [];\n for (const component of componentsManifestsMap.values()) {\n foundEnvs.push(component.envPolicy);\n }\n const peersPolicies = foundEnvs.map((policy) => policy.selfPolicy);\n // TODO: At the moment we are just merge everything, so in case of conflicts one will be taken\n // TODO: once we have root for each env, we should know to handle it differently\n const mergedPolicies = VariantPolicy.mergePolices(peersPolicies);\n return mergedPolicies;\n }\n\n /**\n * Get the components and build a map with the package name (from the component) as key and the dependencies as values\n *\n * @param {Component[]} components\n * @param {boolean} [filterComponentsFromManifests=true] - filter existing components from the dep graphs\n * @returns\n */\n private async buildComponentDependenciesMap(\n components: Component[],\n {\n dependencyFilterFn,\n filterComponentsFromManifests,\n excludeExtensionsDependencies,\n referenceLocalPackages,\n rootDependencies,\n rootPolicy,\n }: {\n dependencyFilterFn?: DepsFilterFn;\n filterComponentsFromManifests?: boolean;\n excludeExtensionsDependencies?: boolean;\n referenceLocalPackages?: boolean;\n rootDependencies?: Record<string, string>;\n rootPolicy?: WorkspacePolicy;\n }\n ): Promise<ComponentDependenciesMap> {\n const packageNames = components.map((component) => this.dependencyResolver.getPackageName(component));\n const buildResultsP = components.map(async (component) => {\n const packageName = componentIdToPackageName(component.state._consumer);\n let depList = this.dependencyResolver.getDependencies(component, { includeHidden: true });\n const additionalDeps = {};\n if (referenceLocalPackages) {\n const coreAspectIds = this.aspectLoader.getCoreAspectIds();\n for (const comp of depList.toTypeArray('component') as ComponentDependency[]) {\n const [compIdWithoutVersion] = comp.id.split('@');\n if (!comp.isExtension && !coreAspectIds.includes(compIdWithoutVersion)) {\n const componentInWorkspace = components.find((c) => c.id.isEqual(comp.componentId));\n if (componentInWorkspace) {\n const pkgName = this.dependencyResolver.getPackageName(componentInWorkspace);\n if (pkgName !== '@teambit/harmony') {\n additionalDeps[pkgName] = `workspace:*`;\n }\n }\n }\n }\n }\n const depManifestBeforeFiltering = depList.toDependenciesManifest();\n\n if (filterComponentsFromManifests ?? true) {\n depList = filterComponents(depList, components);\n }\n if (excludeExtensionsDependencies) {\n depList = filterExtensions(depList);\n }\n // Remove bit bin from dep list\n depList = depList.filter((dep) => dep.id !== '@teambit/legacy');\n if (dependencyFilterFn) {\n depList = dependencyFilterFn(depList);\n }\n await this.updateDependenciesVersions(component, rootPolicy, depList);\n const depManifest = depList.toDependenciesManifest();\n const { devMissings, runtimeMissings } = await getMissingPackages(component);\n // Only add missing root deps that are not already in the component manifest\n // We are using depManifestBeforeFiltering to support (rare) cases when a dependency is both:\n // a component in the workspace (bitmap) and a dependency in the workspace.jsonc / package.json\n // this happens for the bit repo itself for the @teambit/component-version component\n // in this case we don't want to add that to the manifest when it's missing, because it will be linked from the\n // workspace\n const unresolvedRuntimeMissingRootDeps = pickBy(rootDependencies, (_version, rootPackageName) => {\n return (\n runtimeMissings.includes(rootPackageName) &&\n !depManifestBeforeFiltering.dependencies[rootPackageName] &&\n !depManifestBeforeFiltering.devDependencies[rootPackageName] &&\n !depManifestBeforeFiltering.peerDependencies[rootPackageName]\n );\n });\n // Only add missing root deps that are not already in the component manifest\n const unresolvedDevMissingRootDeps = pickBy(rootDependencies, (_version, rootPackageName) => {\n return (\n devMissings.includes(rootPackageName) &&\n !depManifestBeforeFiltering.dependencies[rootPackageName] &&\n !depManifestBeforeFiltering.devDependencies[rootPackageName] &&\n !depManifestBeforeFiltering.peerDependencies[rootPackageName]\n );\n });\n\n const defaultPeerDependencies = await this._getDefaultPeerDependencies(component, packageNames);\n const usedPeerDependencies = pickBy(defaultPeerDependencies, (_val, pkgName) => {\n return (\n depManifestBeforeFiltering.dependencies[pkgName] ||\n depManifestBeforeFiltering.devDependencies[pkgName] ||\n depManifestBeforeFiltering.peerDependencies[pkgName]\n );\n });\n // In case the env has peer dependencies on both react and react-dom, we want to make sure to keep the versions\n // in sync with each other, otherwise it may cause issues in the workspace\n // This is a special case for react and react-dom, as most component do import from react, making it a peer dependency,\n // but not necessarily import from react-dom, which from env.jsonc peers in that case not added to the peers of the component.\n // and if the versions are not in sync, it may cause issues in the workspace\n // an example:\n // my-comp depend on react, and using @testing-library/react which depend on react-dom (as peer),\n // the component don't have react-dom as peer dependency, but when we install the dependencies in the workspace,\n // it will install the latest version of react-dom which may not be compatible with the version of react that my-comp\n // is using, and it may cause issues in the workspace.\n if (usedPeerDependencies.react && defaultPeerDependencies['react-dom']) {\n usedPeerDependencies['react-dom'] = defaultPeerDependencies['react-dom'];\n }\n\n depManifest.dependencies = {\n ...usedPeerDependencies,\n ...unresolvedRuntimeMissingRootDeps,\n ...additionalDeps,\n ...depManifest.dependencies,\n };\n\n depManifest.devDependencies = {\n ...unresolvedDevMissingRootDeps,\n ...depManifest.devDependencies,\n };\n\n return { packageName, depManifest };\n });\n const result: ComponentDependenciesMap = new Map();\n\n if (buildResultsP.length) {\n const results = await Promise.all(buildResultsP);\n results.forEach((currResult) => {\n result.set(currResult.packageName, currResult.depManifest);\n });\n }\n\n return result;\n }\n\n private async _getDefaultPeerDependencies(\n component: Component,\n packageNamesFromWorkspace: string[]\n ): Promise<Record<string, string>> {\n const envPolicy = await this.dependencyResolver.getComponentEnvPolicy(component);\n const selfPolicyWithoutLocal = envPolicy.selfPolicy.filter(\n (dep) => !packageNamesFromWorkspace.includes(dep.dependencyId)\n );\n\n const nameVersionTuples = selfPolicyWithoutLocal.toNameVersionTuple();\n const resolved = nameVersionTuples.map(([name, version]) => {\n if (version !== '+') {\n return [name, version];\n }\n // Resolve \"+\" version placeholders by looking up the already resolved version that was set in\n // apply-overrides.resolveEnvPeerDepVersion()\n const currentDeps = this.dependencyResolver.getDependencies(component);\n const found = currentDeps.findByPkgNameOrCompId(name);\n // If not found, use '*' as fallback\n // Use snapToSemver to convert raw hash versions to valid semver format (0.0.0-{hash})\n return [name, found?.version ? snapToSemver(found.version) : '*'];\n });\n return fromPairs(resolved);\n }\n\n private async updateDependenciesVersions(\n component: Component,\n rootPolicy: WorkspacePolicy | undefined,\n dependencyList: DependencyList\n ): Promise<void> {\n // If root policy is not passed, it means that installation happens in a capsule\n // and we only resolve versions from the dependencies, not any policies.\n const mergedPolicies = rootPolicy && (await this.dependencyResolver.getPolicy(component));\n dependencyList.forEach((dep) => {\n updateDependencyVersion(dep, rootPolicy, mergedPolicies);\n });\n }\n\n /**\n * Get the components manifests based on the calculated dedupedDependencies\n *\n * @param {DedupedDependencies} dedupedDependencies\n * @param {Component[]} components\n * @returns {ComponentsManifestsMap}\n */\n async getComponentsManifests(\n dedupedDependencies: DedupedDependencies,\n components: Component[],\n createManifestForComponentsWithoutDependencies = true\n ): Promise<ComponentsManifestsMap> {\n const componentsManifests: ComponentsManifestsMap = new Map();\n // don't use Promise.all, along the road this code might import an env from a remote, which can't be done in parallel.\n // otherwise, it may import the same component multiple times, and if fails, the ref (remote-lane) files may be corrupted.\n await pMapSeries(components, async (component) => {\n const packageName = componentIdToPackageName(component.state._consumer);\n if (\n dedupedDependencies.componentDependenciesMap.has(packageName) ||\n createManifestForComponentsWithoutDependencies\n ) {\n const blankDependencies: ManifestDependenciesObject = {\n dependencies: {},\n optionalDependencies: {},\n devDependencies: {},\n peerDependencies: {},\n peerDependenciesMeta: {},\n };\n let dependencies = blankDependencies;\n if (dedupedDependencies.componentDependenciesMap.has(packageName)) {\n dependencies = dedupedDependencies.componentDependenciesMap.get(packageName) as ManifestDependenciesObject;\n }\n\n const getVersion = (): string => {\n if (!component.id.hasVersion()) return '0.0.1-new';\n return snapToSemver(component.id.version as string);\n };\n\n const version = getVersion();\n const envPolicy = await this.dependencyResolver.getComponentEnvPolicy(component);\n const manifest = new ComponentManifest(packageName, new SemVer(version), dependencies, component, envPolicy);\n componentsManifests.set(packageName, manifest);\n }\n });\n return componentsManifests;\n }\n}\n\nfunction filterExtensions(dependencyList: DependencyList): DependencyList {\n const filtered = dependencyList.filter((dep) => {\n if (!(dep instanceof ComponentDependency)) {\n return true;\n }\n return !dep.isExtension;\n });\n return filtered;\n}\n\nfunction filterComponents(dependencyList: DependencyList, componentsToFilterOut: Component[]): DependencyList {\n const filtered = dependencyList.filter((dep) => {\n if (!(dep instanceof ComponentDependency)) {\n const depPkgName = dep.getPackageName?.();\n if (!depPkgName) return true;\n // If the package is already in the workspace as a local component,\n // then we don't want to install that package as a dependency to node_modules.\n // Otherwise, it would rewrite the local component inside the root node_modules that is created by bit link.\n return !componentsToFilterOut.some(\n (component) => depPkgName === componentIdToPackageName(component.state._consumer)\n );\n }\n // Remove dependencies which has no version (they are new in the workspace)\n if (!dep.componentId.hasVersion()) return false;\n const existingComponent = componentsToFilterOut.find((component) => {\n // For new components, the component has no version but the dependency id has version 0.0.1\n if (!component.id.hasVersion()) {\n return component.id.toString() === dep.componentId.toString({ ignoreVersion: true });\n }\n // We are checking against both component.id and component.state._consumer.id\n // Because during tag operation, the component.id has the current version (before the tag)\n // while the component.state._consumer.id has the upcoming version (the version that will be after the tag)\n // The dependency in some cases is already updated to the upcoming version\n return (\n component.id.isEqualWithoutVersion(dep.componentId) ||\n component.state._consumer.id.isEqualWithoutVersion(dep.componentId)\n );\n });\n if (existingComponent) return false;\n return true;\n });\n return filtered;\n}\n\nfunction excludeWorkspaceDependencies(deps: DepObjectValue): DepObjectValue {\n return pickBy(deps, (versionSpec) => !versionSpec.startsWith('file:') && !versionSpec.startsWith('workspace:'));\n}\n\nasync function getMissingPackages(component: Component): Promise<{ devMissings: string[]; runtimeMissings: string[] }> {\n const missingPackagesData = component.state.issues.getIssue(IssuesClasses.MissingPackagesDependenciesOnFs)?.data;\n if (!missingPackagesData?.length) return { devMissings: [], runtimeMissings: [] };\n\n let devMissings: string[] = [];\n let runtimeMissings: string[] = [];\n\n missingPackagesData.forEach((data) => {\n if (data.isDevFile) {\n devMissings.push(...data.missingPackages);\n } else {\n runtimeMissings.push(...data.missingPackages);\n }\n });\n devMissings = uniq(devMissings);\n runtimeMissings = uniq(runtimeMissings);\n\n // Remove dev missing which are also runtime missing\n devMissings = difference(devMissings, runtimeMissings);\n return {\n devMissings,\n runtimeMissings,\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_aspectLoader","data","require","_componentIssues","_pkgModules","_lodash","_semver","_pMapSeries","_interopRequireDefault","_componentPackageVersion","_dependencies","_policy","_componentManifest","_deduping","_updateDependencyVersion","_workspaceManifest","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_CREATE_OPTIONS","filterComponentsFromManifests","createManifestForComponentsWithoutDependencies","dedupe","resolveVersionsFromDependenciesOnly","excludeExtensionsDependencies","WorkspaceManifestFactory","constructor","dependencyResolver","aspectLoader","createFromComponents","name","version","rootPolicy","rootDir","components","options","optsWithDefaults","assign","hasRootComponents","filterOutCoreAspects","componentDependenciesMap","buildComponentDependenciesMap","undefined","dependencyFilterFn","referenceLocalPackages","includeAllEnvPeers","rootDependencies","toManifest","dependencies","dedupedDependencies","getEmptyDedupedDependencies","dedupeDependencies","dedupePeerDependencies","mapValues","deps","excludeWorkspaceDependencies","componentsManifestsMap","getComponentsManifests","envSelfPeers","getEnvsSelfPeersPolicy","workspaceManifest","WorkspaceManifest","coreAspectIds","getCoreAspectIds","coreAspectPkgNames","Set","map","coreAspectId","getCoreAspectPackageName","add","dep","has","dependencyId","foundEnvs","component","values","envPolicy","peersPolicies","policy","selfPolicy","mergedPolicies","VariantPolicy","mergePolices","packageNames","getPackageName","buildResultsP","packageName","componentIdToPackageName","state","_consumer","depList","getDependencies","includeHidden","additionalDeps","comp","toTypeArray","compIdWithoutVersion","id","split","isExtension","includes","componentInWorkspace","find","c","isEqual","componentId","pkgName","depManifestBeforeFiltering","toDependenciesManifest","filterComponents","filterExtensions","updateDependenciesVersions","depManifest","devMissings","runtimeMissings","getMissingPackages","unresolvedRuntimeMissingRootDeps","pickBy","_version","rootPackageName","devDependencies","peerDependencies","unresolvedDevMissingRootDeps","envPeerDependencies","_getEnvPeerDependencies","peerDepsForManifest","_val","react","result","Map","results","Promise","all","currResult","set","packageNamesFromWorkspace","getComponentEnvPolicy","selfPolicyWithoutLocal","nameVersionTuples","toNameVersionTuple","resolved","currentDeps","found","findByPkgNameOrCompId","snapToSemver","fromPairs","dependencyList","getPolicy","updateDependencyVersion","componentsManifests","pMapSeries","blankDependencies","optionalDependencies","peerDependenciesMeta","get","getVersion","hasVersion","manifest","ComponentManifest","SemVer","exports","filtered","ComponentDependency","componentsToFilterOut","depPkgName","some","existingComponent","toString","ignoreVersion","isEqualWithoutVersion","versionSpec","startsWith","missingPackagesData","issues","getIssue","IssuesClasses","MissingPackagesDependenciesOnFs","isDevFile","missingPackages","uniq","difference"],"sources":["workspace-manifest-factory.ts"],"sourcesContent":["import type { AspectLoaderMain } from '@teambit/aspect-loader';\nimport { getCoreAspectPackageName } from '@teambit/aspect-loader';\nimport { IssuesClasses } from '@teambit/component-issues';\nimport type { Component } from '@teambit/component';\nimport { componentIdToPackageName } from '@teambit/pkg.modules.component-package-name';\nimport { fromPairs, pickBy, mapValues, uniq, difference } from 'lodash';\nimport { SemVer } from 'semver';\nimport pMapSeries from 'p-map-series';\nimport { snapToSemver } from '@teambit/component-package-version';\nimport type { DependencyList, PackageName } from '../dependencies';\nimport { ComponentDependency } from '../dependencies';\nimport type { WorkspacePolicy, EnvPolicy } from '../policy';\nimport { VariantPolicy } from '../policy';\nimport type { DependencyResolverMain } from '../dependency-resolver.main.runtime';\nimport type { ComponentsManifestsMap } from '../types';\nimport { ComponentManifest } from './component-manifest';\nimport type { DedupedDependencies } from './deduping';\nimport { dedupeDependencies, getEmptyDedupedDependencies } from './deduping';\nimport type { ManifestToJsonOptions, ManifestDependenciesObject, DepObjectValue } from './manifest';\nimport { updateDependencyVersion } from './update-dependency-version';\nimport { WorkspaceManifest } from './workspace-manifest';\n\nexport type DepsFilterFn = (dependencies: DependencyList) => DependencyList;\n\nexport type ComponentDependenciesMap = Map<PackageName, ManifestDependenciesObject>;\nexport interface WorkspaceManifestToJsonOptions extends ManifestToJsonOptions {\n includeDir?: boolean;\n}\n\nexport type CreateFromComponentsOptions = {\n filterComponentsFromManifests: boolean;\n createManifestForComponentsWithoutDependencies: boolean;\n dedupe?: boolean;\n dependencyFilterFn?: DepsFilterFn;\n resolveVersionsFromDependenciesOnly?: boolean;\n referenceLocalPackages?: boolean;\n includeAllEnvPeers?: boolean;\n hasRootComponents?: boolean;\n excludeExtensionsDependencies?: boolean;\n};\n\nconst DEFAULT_CREATE_OPTIONS: CreateFromComponentsOptions = {\n filterComponentsFromManifests: true,\n createManifestForComponentsWithoutDependencies: true,\n dedupe: true,\n resolveVersionsFromDependenciesOnly: false,\n excludeExtensionsDependencies: false,\n};\nexport class WorkspaceManifestFactory {\n constructor(\n private dependencyResolver: DependencyResolverMain,\n private aspectLoader: AspectLoaderMain\n ) {}\n\n async createFromComponents(\n name: string,\n version: SemVer,\n rootPolicy: WorkspacePolicy,\n rootDir: string,\n components: Component[],\n options: CreateFromComponentsOptions = DEFAULT_CREATE_OPTIONS\n ): Promise<WorkspaceManifest> {\n // Make sure to take other default if passed options with only one option\n const optsWithDefaults = Object.assign({}, DEFAULT_CREATE_OPTIONS, options);\n const hasRootComponents = options.hasRootComponents ?? this.dependencyResolver.hasRootComponents();\n rootPolicy = this.filterOutCoreAspects(rootPolicy);\n const componentDependenciesMap: ComponentDependenciesMap = await this.buildComponentDependenciesMap(components, {\n filterComponentsFromManifests: optsWithDefaults.filterComponentsFromManifests,\n rootPolicy: optsWithDefaults.resolveVersionsFromDependenciesOnly ? undefined : rootPolicy,\n dependencyFilterFn: optsWithDefaults.dependencyFilterFn,\n excludeExtensionsDependencies: optsWithDefaults.excludeExtensionsDependencies,\n referenceLocalPackages: optsWithDefaults.referenceLocalPackages && hasRootComponents,\n includeAllEnvPeers: optsWithDefaults.includeAllEnvPeers,\n rootDependencies: hasRootComponents ? rootPolicy.toManifest().dependencies : undefined,\n });\n let dedupedDependencies = getEmptyDedupedDependencies();\n if (hasRootComponents) {\n const { rootDependencies } = dedupeDependencies(rootPolicy, componentDependenciesMap, {\n dedupePeerDependencies: hasRootComponents,\n });\n // We hoist dependencies in order for the IDE to work.\n // For runtime, the peer dependencies are installed inside:\n // <ws root>/node_module/<comp name>/node_module/<comp name>/node_modules\n dedupedDependencies.rootDependencies = mapValues(\n rootDependencies,\n (deps) => deps && excludeWorkspaceDependencies(deps)\n );\n dedupedDependencies.componentDependenciesMap = componentDependenciesMap;\n } else if (options.dedupe) {\n dedupedDependencies = dedupeDependencies(rootPolicy, componentDependenciesMap);\n } else {\n dedupedDependencies.rootDependencies = rootPolicy.toManifest();\n dedupedDependencies.componentDependenciesMap = componentDependenciesMap;\n }\n const componentsManifestsMap = await this.getComponentsManifests(\n dedupedDependencies,\n components,\n optsWithDefaults.createManifestForComponentsWithoutDependencies\n );\n const envSelfPeers = this.getEnvsSelfPeersPolicy(componentsManifestsMap);\n const workspaceManifest = new WorkspaceManifest(\n name,\n version,\n dedupedDependencies.rootDependencies,\n envSelfPeers,\n rootDir,\n componentsManifestsMap\n );\n return workspaceManifest;\n }\n\n private filterOutCoreAspects(rootPolicy: WorkspacePolicy) {\n const coreAspectIds = this.aspectLoader.getCoreAspectIds();\n const coreAspectPkgNames = new Set(coreAspectIds.map((coreAspectId) => getCoreAspectPackageName(coreAspectId)));\n coreAspectPkgNames.add('@teambit/legacy');\n return rootPolicy.filter((dep) => !coreAspectPkgNames.has(dep.dependencyId));\n }\n\n private getEnvsSelfPeersPolicy(componentsManifestsMap: ComponentsManifestsMap) {\n const foundEnvs: EnvPolicy[] = [];\n for (const component of componentsManifestsMap.values()) {\n foundEnvs.push(component.envPolicy);\n }\n const peersPolicies = foundEnvs.map((policy) => policy.selfPolicy);\n // TODO: At the moment we are just merge everything, so in case of conflicts one will be taken\n // TODO: once we have root for each env, we should know to handle it differently\n const mergedPolicies = VariantPolicy.mergePolices(peersPolicies);\n return mergedPolicies;\n }\n\n /**\n * Get the components and build a map with the package name (from the component) as key and the dependencies as values\n *\n * @param {Component[]} components\n * @param {boolean} [filterComponentsFromManifests=true] - filter existing components from the dep graphs\n * @returns\n */\n private async buildComponentDependenciesMap(\n components: Component[],\n {\n dependencyFilterFn,\n filterComponentsFromManifests,\n excludeExtensionsDependencies,\n referenceLocalPackages,\n includeAllEnvPeers,\n rootDependencies,\n rootPolicy,\n }: {\n dependencyFilterFn?: DepsFilterFn;\n filterComponentsFromManifests?: boolean;\n excludeExtensionsDependencies?: boolean;\n referenceLocalPackages?: boolean;\n includeAllEnvPeers?: boolean;\n rootDependencies?: Record<string, string>;\n rootPolicy?: WorkspacePolicy;\n }\n ): Promise<ComponentDependenciesMap> {\n const packageNames = components.map((component) => this.dependencyResolver.getPackageName(component));\n const buildResultsP = components.map(async (component) => {\n const packageName = componentIdToPackageName(component.state._consumer);\n let depList = this.dependencyResolver.getDependencies(component, { includeHidden: true });\n const additionalDeps = {};\n if (referenceLocalPackages) {\n const coreAspectIds = this.aspectLoader.getCoreAspectIds();\n for (const comp of depList.toTypeArray('component') as ComponentDependency[]) {\n const [compIdWithoutVersion] = comp.id.split('@');\n if (!comp.isExtension && !coreAspectIds.includes(compIdWithoutVersion)) {\n const componentInWorkspace = components.find((c) => c.id.isEqual(comp.componentId));\n if (componentInWorkspace) {\n const pkgName = this.dependencyResolver.getPackageName(componentInWorkspace);\n if (pkgName !== '@teambit/harmony') {\n additionalDeps[pkgName] = `workspace:*`;\n }\n }\n }\n }\n }\n const depManifestBeforeFiltering = depList.toDependenciesManifest();\n\n if (filterComponentsFromManifests ?? true) {\n depList = filterComponents(depList, components);\n }\n if (excludeExtensionsDependencies) {\n depList = filterExtensions(depList);\n }\n // Remove bit bin from dep list\n depList = depList.filter((dep) => dep.id !== '@teambit/legacy');\n if (dependencyFilterFn) {\n depList = dependencyFilterFn(depList);\n }\n await this.updateDependenciesVersions(component, rootPolicy, depList);\n const depManifest = depList.toDependenciesManifest();\n const { devMissings, runtimeMissings } = await getMissingPackages(component);\n // Only add missing root deps that are not already in the component manifest\n // We are using depManifestBeforeFiltering to support (rare) cases when a dependency is both:\n // a component in the workspace (bitmap) and a dependency in the workspace.jsonc / package.json\n // this happens for the bit repo itself for the @teambit/component-version component\n // in this case we don't want to add that to the manifest when it's missing, because it will be linked from the\n // workspace\n const unresolvedRuntimeMissingRootDeps = pickBy(rootDependencies, (_version, rootPackageName) => {\n return (\n runtimeMissings.includes(rootPackageName) &&\n !depManifestBeforeFiltering.dependencies[rootPackageName] &&\n !depManifestBeforeFiltering.devDependencies[rootPackageName] &&\n !depManifestBeforeFiltering.peerDependencies[rootPackageName]\n );\n });\n // Only add missing root deps that are not already in the component manifest\n const unresolvedDevMissingRootDeps = pickBy(rootDependencies, (_version, rootPackageName) => {\n return (\n devMissings.includes(rootPackageName) &&\n !depManifestBeforeFiltering.dependencies[rootPackageName] &&\n !depManifestBeforeFiltering.devDependencies[rootPackageName] &&\n !depManifestBeforeFiltering.peerDependencies[rootPackageName]\n );\n });\n\n const envPeerDependencies = await this._getEnvPeerDependencies(component, packageNames);\n // When includeAllEnvPeers is true, use ALL env peer deps to ensure consistent\n // peer dependency contexts across all components. Otherwise, pnpm creates separate\n // \"injected\" copies in .pnpm/ for components with different peer sets, causing\n // TypeScript to see duplicate types from different physical paths.\n // When false, only include peer deps that the component actually uses, to avoid\n // writing unnecessary deps to the generated install manifest.\n let peerDepsForManifest: Record<string, string>;\n if (includeAllEnvPeers) {\n peerDepsForManifest = envPeerDependencies;\n } else {\n peerDepsForManifest = pickBy(envPeerDependencies, (_val, pkgName) => {\n return (\n depManifestBeforeFiltering.dependencies[pkgName] ||\n depManifestBeforeFiltering.devDependencies[pkgName] ||\n depManifestBeforeFiltering.peerDependencies[pkgName]\n );\n });\n // In case the env has peer dependencies on both react and react-dom, we want to make sure to keep the versions\n // in sync with each other, otherwise it may cause issues in the workspace\n // This is a special case for react and react-dom, as most component do import from react, making it a peer dependency,\n // but not necessarily import from react-dom, which from env.jsonc peers in that case not added to the peers of the component.\n // and if the versions are not in sync, it may cause issues in the workspace\n // an example:\n // my-comp depend on react, and using @testing-library/react which depend on react-dom (as peer),\n // the component don't have react-dom as peer dependency, but when we install the dependencies in the workspace,\n // it will install the latest version of react-dom which may not be compatible with the version of react that my-comp\n // is using, and it may cause issues in the workspace.\n if (peerDepsForManifest.react && envPeerDependencies['react-dom']) {\n peerDepsForManifest['react-dom'] = envPeerDependencies['react-dom'];\n }\n }\n\n depManifest.dependencies = {\n ...peerDepsForManifest,\n ...unresolvedRuntimeMissingRootDeps,\n ...additionalDeps,\n ...depManifest.dependencies,\n };\n\n depManifest.devDependencies = {\n ...unresolvedDevMissingRootDeps,\n ...depManifest.devDependencies,\n };\n\n return { packageName, depManifest };\n });\n const result: ComponentDependenciesMap = new Map();\n\n if (buildResultsP.length) {\n const results = await Promise.all(buildResultsP);\n results.forEach((currResult) => {\n result.set(currResult.packageName, currResult.depManifest);\n });\n }\n\n return result;\n }\n\n private async _getEnvPeerDependencies(\n component: Component,\n packageNamesFromWorkspace: string[]\n ): Promise<Record<string, string>> {\n const envPolicy = await this.dependencyResolver.getComponentEnvPolicy(component);\n const selfPolicyWithoutLocal = envPolicy.selfPolicy.filter(\n (dep) => !packageNamesFromWorkspace.includes(dep.dependencyId)\n );\n\n const nameVersionTuples = selfPolicyWithoutLocal.toNameVersionTuple();\n const resolved = nameVersionTuples.map(([name, version]) => {\n if (version !== '+') {\n return [name, version];\n }\n // Resolve \"+\" version placeholders by looking up the already resolved version that was set in\n // apply-overrides.resolveEnvPeerDepVersion()\n const currentDeps = this.dependencyResolver.getDependencies(component);\n const found = currentDeps.findByPkgNameOrCompId(name);\n // If not found, use '*' as fallback\n // Use snapToSemver to convert raw hash versions to valid semver format (0.0.0-{hash})\n return [name, found?.version ? snapToSemver(found.version) : '*'];\n });\n return fromPairs(resolved);\n }\n\n private async updateDependenciesVersions(\n component: Component,\n rootPolicy: WorkspacePolicy | undefined,\n dependencyList: DependencyList\n ): Promise<void> {\n // If root policy is not passed, it means that installation happens in a capsule\n // and we only resolve versions from the dependencies, not any policies.\n const mergedPolicies = rootPolicy && (await this.dependencyResolver.getPolicy(component));\n dependencyList.forEach((dep) => {\n updateDependencyVersion(dep, rootPolicy, mergedPolicies);\n });\n }\n\n /**\n * Get the components manifests based on the calculated dedupedDependencies\n *\n * @param {DedupedDependencies} dedupedDependencies\n * @param {Component[]} components\n * @returns {ComponentsManifestsMap}\n */\n async getComponentsManifests(\n dedupedDependencies: DedupedDependencies,\n components: Component[],\n createManifestForComponentsWithoutDependencies = true\n ): Promise<ComponentsManifestsMap> {\n const componentsManifests: ComponentsManifestsMap = new Map();\n // don't use Promise.all, along the road this code might import an env from a remote, which can't be done in parallel.\n // otherwise, it may import the same component multiple times, and if fails, the ref (remote-lane) files may be corrupted.\n await pMapSeries(components, async (component) => {\n const packageName = componentIdToPackageName(component.state._consumer);\n if (\n dedupedDependencies.componentDependenciesMap.has(packageName) ||\n createManifestForComponentsWithoutDependencies\n ) {\n const blankDependencies: ManifestDependenciesObject = {\n dependencies: {},\n optionalDependencies: {},\n devDependencies: {},\n peerDependencies: {},\n peerDependenciesMeta: {},\n };\n let dependencies = blankDependencies;\n if (dedupedDependencies.componentDependenciesMap.has(packageName)) {\n dependencies = dedupedDependencies.componentDependenciesMap.get(packageName) as ManifestDependenciesObject;\n }\n\n const getVersion = (): string => {\n if (!component.id.hasVersion()) return '0.0.1-new';\n return snapToSemver(component.id.version as string);\n };\n\n const version = getVersion();\n const envPolicy = await this.dependencyResolver.getComponentEnvPolicy(component);\n const manifest = new ComponentManifest(packageName, new SemVer(version), dependencies, component, envPolicy);\n componentsManifests.set(packageName, manifest);\n }\n });\n return componentsManifests;\n }\n}\n\nfunction filterExtensions(dependencyList: DependencyList): DependencyList {\n const filtered = dependencyList.filter((dep) => {\n if (!(dep instanceof ComponentDependency)) {\n return true;\n }\n return !dep.isExtension;\n });\n return filtered;\n}\n\nfunction filterComponents(dependencyList: DependencyList, componentsToFilterOut: Component[]): DependencyList {\n const filtered = dependencyList.filter((dep) => {\n if (!(dep instanceof ComponentDependency)) {\n const depPkgName = dep.getPackageName?.();\n if (!depPkgName) return true;\n // If the package is already in the workspace as a local component,\n // then we don't want to install that package as a dependency to node_modules.\n // Otherwise, it would rewrite the local component inside the root node_modules that is created by bit link.\n return !componentsToFilterOut.some(\n (component) => depPkgName === componentIdToPackageName(component.state._consumer)\n );\n }\n // Remove dependencies which has no version (they are new in the workspace)\n if (!dep.componentId.hasVersion()) return false;\n const existingComponent = componentsToFilterOut.find((component) => {\n // For new components, the component has no version but the dependency id has version 0.0.1\n if (!component.id.hasVersion()) {\n return component.id.toString() === dep.componentId.toString({ ignoreVersion: true });\n }\n // We are checking against both component.id and component.state._consumer.id\n // Because during tag operation, the component.id has the current version (before the tag)\n // while the component.state._consumer.id has the upcoming version (the version that will be after the tag)\n // The dependency in some cases is already updated to the upcoming version\n return (\n component.id.isEqualWithoutVersion(dep.componentId) ||\n component.state._consumer.id.isEqualWithoutVersion(dep.componentId)\n );\n });\n if (existingComponent) return false;\n return true;\n });\n return filtered;\n}\n\nfunction excludeWorkspaceDependencies(deps: DepObjectValue): DepObjectValue {\n return pickBy(deps, (versionSpec) => !versionSpec.startsWith('file:') && !versionSpec.startsWith('workspace:'));\n}\n\nasync function getMissingPackages(component: Component): Promise<{ devMissings: string[]; runtimeMissings: string[] }> {\n const missingPackagesData = component.state.issues.getIssue(IssuesClasses.MissingPackagesDependenciesOnFs)?.data;\n if (!missingPackagesData?.length) return { devMissings: [], runtimeMissings: [] };\n\n let devMissings: string[] = [];\n let runtimeMissings: string[] = [];\n\n missingPackagesData.forEach((data) => {\n if (data.isDevFile) {\n devMissings.push(...data.missingPackages);\n } else {\n runtimeMissings.push(...data.missingPackages);\n }\n });\n devMissings = uniq(devMissings);\n runtimeMissings = uniq(runtimeMissings);\n\n // Remove dev missing which are also runtime missing\n devMissings = difference(devMissings, runtimeMissings);\n return {\n devMissings,\n runtimeMissings,\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.889/dist/dependency-resolver.composition.js';
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.dependencies_dependency-resolver@1.0.889/dist/dependency-resolver.docs.mdx';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.dependencies_dependency-resolver@1.0.890/dist/dependency-resolver.composition.js';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.dependencies_dependency-resolver@1.0.890/dist/dependency-resolver.docs.mdx';
3
3
 
4
4
  export const compositions = [compositions_0];
5
5
  export const overview = [overview_0];
@@ -34,6 +34,7 @@ export type CreateFromComponentsOptions = {
34
34
  dependencyFilterFn?: DepsFilterFn;
35
35
  resolveVersionsFromDependenciesOnly?: boolean;
36
36
  referenceLocalPackages?: boolean;
37
+ includeAllEnvPeers?: boolean;
37
38
  hasRootComponents?: boolean;
38
39
  excludeExtensionsDependencies?: boolean;
39
40
  };
@@ -69,6 +70,7 @@ export class WorkspaceManifestFactory {
69
70
  dependencyFilterFn: optsWithDefaults.dependencyFilterFn,
70
71
  excludeExtensionsDependencies: optsWithDefaults.excludeExtensionsDependencies,
71
72
  referenceLocalPackages: optsWithDefaults.referenceLocalPackages && hasRootComponents,
73
+ includeAllEnvPeers: optsWithDefaults.includeAllEnvPeers,
72
74
  rootDependencies: hasRootComponents ? rootPolicy.toManifest().dependencies : undefined,
73
75
  });
74
76
  let dedupedDependencies = getEmptyDedupedDependencies();
@@ -140,6 +142,7 @@ export class WorkspaceManifestFactory {
140
142
  filterComponentsFromManifests,
141
143
  excludeExtensionsDependencies,
142
144
  referenceLocalPackages,
145
+ includeAllEnvPeers,
143
146
  rootDependencies,
144
147
  rootPolicy,
145
148
  }: {
@@ -147,6 +150,7 @@ export class WorkspaceManifestFactory {
147
150
  filterComponentsFromManifests?: boolean;
148
151
  excludeExtensionsDependencies?: boolean;
149
152
  referenceLocalPackages?: boolean;
153
+ includeAllEnvPeers?: boolean;
150
154
  rootDependencies?: Record<string, string>;
151
155
  rootPolicy?: WorkspacePolicy;
152
156
  }
@@ -211,30 +215,41 @@ export class WorkspaceManifestFactory {
211
215
  );
212
216
  });
213
217
 
214
- const defaultPeerDependencies = await this._getDefaultPeerDependencies(component, packageNames);
215
- const usedPeerDependencies = pickBy(defaultPeerDependencies, (_val, pkgName) => {
216
- return (
217
- depManifestBeforeFiltering.dependencies[pkgName] ||
218
- depManifestBeforeFiltering.devDependencies[pkgName] ||
219
- depManifestBeforeFiltering.peerDependencies[pkgName]
220
- );
221
- });
222
- // In case the env has peer dependencies on both react and react-dom, we want to make sure to keep the versions
223
- // in sync with each other, otherwise it may cause issues in the workspace
224
- // This is a special case for react and react-dom, as most component do import from react, making it a peer dependency,
225
- // but not necessarily import from react-dom, which from env.jsonc peers in that case not added to the peers of the component.
226
- // and if the versions are not in sync, it may cause issues in the workspace
227
- // an example:
228
- // my-comp depend on react, and using @testing-library/react which depend on react-dom (as peer),
229
- // the component don't have react-dom as peer dependency, but when we install the dependencies in the workspace,
230
- // it will install the latest version of react-dom which may not be compatible with the version of react that my-comp
231
- // is using, and it may cause issues in the workspace.
232
- if (usedPeerDependencies.react && defaultPeerDependencies['react-dom']) {
233
- usedPeerDependencies['react-dom'] = defaultPeerDependencies['react-dom'];
218
+ const envPeerDependencies = await this._getEnvPeerDependencies(component, packageNames);
219
+ // When includeAllEnvPeers is true, use ALL env peer deps to ensure consistent
220
+ // peer dependency contexts across all components. Otherwise, pnpm creates separate
221
+ // "injected" copies in .pnpm/ for components with different peer sets, causing
222
+ // TypeScript to see duplicate types from different physical paths.
223
+ // When false, only include peer deps that the component actually uses, to avoid
224
+ // writing unnecessary deps to the generated install manifest.
225
+ let peerDepsForManifest: Record<string, string>;
226
+ if (includeAllEnvPeers) {
227
+ peerDepsForManifest = envPeerDependencies;
228
+ } else {
229
+ peerDepsForManifest = pickBy(envPeerDependencies, (_val, pkgName) => {
230
+ return (
231
+ depManifestBeforeFiltering.dependencies[pkgName] ||
232
+ depManifestBeforeFiltering.devDependencies[pkgName] ||
233
+ depManifestBeforeFiltering.peerDependencies[pkgName]
234
+ );
235
+ });
236
+ // In case the env has peer dependencies on both react and react-dom, we want to make sure to keep the versions
237
+ // in sync with each other, otherwise it may cause issues in the workspace
238
+ // This is a special case for react and react-dom, as most component do import from react, making it a peer dependency,
239
+ // but not necessarily import from react-dom, which from env.jsonc peers in that case not added to the peers of the component.
240
+ // and if the versions are not in sync, it may cause issues in the workspace
241
+ // an example:
242
+ // my-comp depend on react, and using @testing-library/react which depend on react-dom (as peer),
243
+ // the component don't have react-dom as peer dependency, but when we install the dependencies in the workspace,
244
+ // it will install the latest version of react-dom which may not be compatible with the version of react that my-comp
245
+ // is using, and it may cause issues in the workspace.
246
+ if (peerDepsForManifest.react && envPeerDependencies['react-dom']) {
247
+ peerDepsForManifest['react-dom'] = envPeerDependencies['react-dom'];
248
+ }
234
249
  }
235
250
 
236
251
  depManifest.dependencies = {
237
- ...usedPeerDependencies,
252
+ ...peerDepsForManifest,
238
253
  ...unresolvedRuntimeMissingRootDeps,
239
254
  ...additionalDeps,
240
255
  ...depManifest.dependencies,
@@ -259,7 +274,7 @@ export class WorkspaceManifestFactory {
259
274
  return result;
260
275
  }
261
276
 
262
- private async _getDefaultPeerDependencies(
277
+ private async _getEnvPeerDependencies(
263
278
  component: Component,
264
279
  packageNamesFromWorkspace: string[]
265
280
  ): Promise<Record<string, string>> {
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/dependency-resolver",
3
- "version": "1.0.889",
3
+ "version": "1.0.890",
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.889"
9
+ "version": "1.0.890"
10
10
  },
11
11
  "dependencies": {
12
12
  "chalk": "4.1.2",
@@ -55,11 +55,11 @@
55
55
  "@teambit/legacy.consumer-config": "0.0.97",
56
56
  "@teambit/toolbox.crypto.sha1": "0.0.14",
57
57
  "@teambit/toolbox.object.sorter": "0.0.2",
58
- "@teambit/component": "1.0.889",
59
- "@teambit/envs": "1.0.889",
60
- "@teambit/aspect-loader": "1.0.889",
61
- "@teambit/objects": "0.0.396",
62
- "@teambit/graphql": "1.0.889"
58
+ "@teambit/component": "1.0.890",
59
+ "@teambit/envs": "1.0.890",
60
+ "@teambit/aspect-loader": "1.0.890",
61
+ "@teambit/objects": "0.0.397",
62
+ "@teambit/graphql": "1.0.890"
63
63
  },
64
64
  "devDependencies": {
65
65
  "@types/fs-extra": "9.0.7",