@teambit/dependency-resolver 1.0.958 → 1.0.960
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.
- package/dist/dependency-resolver.main.runtime.d.ts +1 -1
- package/dist/manifest/workspace-manifest-factory.d.ts +5 -0
- package/dist/manifest/workspace-manifest-factory.js +39 -1
- package/dist/manifest/workspace-manifest-factory.js.map +1 -1
- package/dist/policy/index.d.ts +1 -1
- package/dist/policy/index.js +6 -0
- package/dist/policy/index.js.map +1 -1
- package/dist/policy/variant-policy/index.d.ts +1 -1
- package/dist/policy/variant-policy/index.js +6 -0
- package/dist/policy/variant-policy/index.js.map +1 -1
- package/dist/{preview-1776774270951.js → preview-1776783730786.js} +2 -2
- package/manifest/workspace-manifest-factory.ts +41 -2
- package/package.json +7 -7
- package/policy/index.ts +1 -0
- package/policy/variant-policy/index.ts +1 -0
|
@@ -478,7 +478,7 @@ export declare class DependencyResolverMain {
|
|
|
478
478
|
static runtime: import("@teambit/harmony").RuntimeDefinition;
|
|
479
479
|
static dependencies: Aspect[];
|
|
480
480
|
static slots: (((registerFn: () => string) => SlotRegistry<WorkspacePolicy>) | ((registerFn: () => string) => SlotRegistry<Partial<Record<keyof import("./policy").PolicyConfigKeys, {
|
|
481
|
-
[dependencyId: string]: import("./policy
|
|
481
|
+
[dependencyId: string]: import("./policy").VariantPolicyConfigEntryValue;
|
|
482
482
|
}>>>) | ((registerFn: () => string) => SlotRegistry<PackageManager>) | ((registerFn: () => string) => SlotRegistry<RegExp>) | ((registerFn: () => string) => SlotRegistry<DependencyFactory>) | ((registerFn: () => string) => SlotRegistry<PreInstallSubscriberList>) | ((registerFn: () => string) => SlotRegistry<DependencyDetector>) | ((registerFn: () => string) => SlotRegistry<AddPackagesToLinkSlot>))[];
|
|
483
483
|
static defaultConfig: DependencyResolverWorkspaceConfig & Required<Pick<DependencyResolverWorkspaceConfig, 'linkCoreAspects'>>;
|
|
484
484
|
static provider([envs, loggerExt, configMain, aspectLoader, componentAspect, graphql, configStore]: [
|
|
@@ -58,6 +58,11 @@ export declare class WorkspaceManifestFactory {
|
|
|
58
58
|
* @returns
|
|
59
59
|
*/
|
|
60
60
|
private buildComponentDependenciesMap;
|
|
61
|
+
/**
|
|
62
|
+
* Collect package names explicitly listed in the component's dep-resolver policy,
|
|
63
|
+
* excluding entries that represent removals ("-" or `{ version: "-" }`).
|
|
64
|
+
*/
|
|
65
|
+
private getComponentExplicitPackages;
|
|
61
66
|
private _getEnvPeerDependencies;
|
|
62
67
|
private updateDependenciesVersions;
|
|
63
68
|
/**
|
|
@@ -67,6 +67,13 @@ function _policy() {
|
|
|
67
67
|
};
|
|
68
68
|
return data;
|
|
69
69
|
}
|
|
70
|
+
function _dependencyResolver() {
|
|
71
|
+
const data = require("../dependency-resolver.aspect");
|
|
72
|
+
_dependencyResolver = function () {
|
|
73
|
+
return data;
|
|
74
|
+
};
|
|
75
|
+
return data;
|
|
76
|
+
}
|
|
70
77
|
function _variantPolicy() {
|
|
71
78
|
const data = require("../policy/variant-policy");
|
|
72
79
|
_variantPolicy = function () {
|
|
@@ -436,11 +443,17 @@ class WorkspaceManifestFactory {
|
|
|
436
443
|
if (!this.resolveEnvPeersFromRoot) {
|
|
437
444
|
// Legacy behavior: inject env peer deps into each component's manifest
|
|
438
445
|
const envPeerDependencies = await this._getEnvPeerDependencies(component, packageNames);
|
|
446
|
+
// Also include packages that are explicitly listed in the component's
|
|
447
|
+
// dep-resolver config (e.g. with version "+"). Without this, a fresh
|
|
448
|
+
// workspace after `bit new`/`bit fork` hits a chicken-and-egg problem:
|
|
449
|
+
// "+" can't resolve → package absent from manifest → filter excludes it
|
|
450
|
+
// → package never installed.
|
|
451
|
+
const componentExplicitPkgs = this.getComponentExplicitPackages(component);
|
|
439
452
|
if (includeAllEnvPeers ?? true) {
|
|
440
453
|
peerDepsForManifest = envPeerDependencies;
|
|
441
454
|
} else {
|
|
442
455
|
peerDepsForManifest = (0, _lodash().pickBy)(envPeerDependencies, (_val, pkgName) => {
|
|
443
|
-
return depManifestBeforeFiltering.dependencies[pkgName] || depManifestBeforeFiltering.devDependencies[pkgName] || depManifestBeforeFiltering.peerDependencies[pkgName];
|
|
456
|
+
return depManifestBeforeFiltering.dependencies[pkgName] || depManifestBeforeFiltering.devDependencies[pkgName] || depManifestBeforeFiltering.peerDependencies[pkgName] || componentExplicitPkgs.has(pkgName);
|
|
444
457
|
});
|
|
445
458
|
|
|
446
459
|
// In case the env has peer dependencies on both react and react-dom, we want to make sure to keep the versions
|
|
@@ -474,6 +487,16 @@ class WorkspaceManifestFactory {
|
|
|
474
487
|
}
|
|
475
488
|
return result;
|
|
476
489
|
}
|
|
490
|
+
|
|
491
|
+
/**
|
|
492
|
+
* Collect package names explicitly listed in the component's dep-resolver policy,
|
|
493
|
+
* excluding entries that represent removals ("-" or `{ version: "-" }`).
|
|
494
|
+
*/
|
|
495
|
+
getComponentExplicitPackages(component) {
|
|
496
|
+
const depResolverEntry = component.get(_dependencyResolver().DependencyResolverAspect.id);
|
|
497
|
+
const explicitPolicy = depResolverEntry?.config?.policy ?? {};
|
|
498
|
+
return new Set([...nonRemovedEntryNames(explicitPolicy.dependencies), ...nonRemovedEntryNames(explicitPolicy.devDependencies), ...nonRemovedEntryNames(explicitPolicy.peerDependencies)]);
|
|
499
|
+
}
|
|
477
500
|
async _getEnvPeerDependencies(component, packageNamesFromWorkspace) {
|
|
478
501
|
const envPolicy = await this.dependencyResolver.getComponentEnvPolicy(component);
|
|
479
502
|
const selfPolicyWithoutLocal = envPolicy.selfPolicy.filter(dep => !packageNamesFromWorkspace.includes(dep.dependencyId));
|
|
@@ -607,5 +630,20 @@ async function getMissingPackages(component) {
|
|
|
607
630
|
runtimeMissings
|
|
608
631
|
};
|
|
609
632
|
}
|
|
633
|
+
function nonRemovedEntryNames(policySection) {
|
|
634
|
+
if (!policySection) return [];
|
|
635
|
+
const names = [];
|
|
636
|
+
for (const [name, versionSpec] of Object.entries(policySection)) {
|
|
637
|
+
// Skip explicit removals expressed as "-" or as removal objects.
|
|
638
|
+
if (versionSpec !== '-' && !isRemovalObject(versionSpec)) {
|
|
639
|
+
names.push(name);
|
|
640
|
+
}
|
|
641
|
+
}
|
|
642
|
+
return names;
|
|
643
|
+
}
|
|
644
|
+
function isRemovalObject(val) {
|
|
645
|
+
if (!val || typeof val !== 'object') return false;
|
|
646
|
+
return val.version === '-';
|
|
647
|
+
}
|
|
610
648
|
|
|
611
649
|
//# sourceMappingURL=workspace-manifest-factory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_aspectLoader","data","require","_componentIssues","_pkgModules","_lodash","_semver","_interopRequireWildcard","_pMapSeries","_interopRequireDefault","_componentPackageVersion","_dependencies","_policy","_variantPolicy","_componentManifest","_deduping","_updateDependencyVersion","_workspaceManifest","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","DEFAULT_CREATE_OPTIONS","filterComponentsFromManifests","createManifestForComponentsWithoutDependencies","dedupe","resolveVersionsFromDependenciesOnly","excludeExtensionsDependencies","WorkspaceManifestFactory","constructor","dependencyResolver","aspectLoader","logger","resolveEnvPeersFromRoot","forceEnvPeersToRoot","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","peerOverrides","workspacePackageNames","Set","map","component","getPackageName","result","mergeEnvPeersToRoot","componentPeerOverrides","size","injectConflictingPeersToComponents","getEnvsSelfPeersPolicy","workspaceManifest","WorkspaceManifest","coreAspectIds","getCoreAspectIds","coreAspectPkgNames","coreAspectId","getCoreAspectPackageName","add","dep","dependencyId","peerVersionsMap","Map","singletonFlags","overridesFlags","manifest","values","envId","envPolicy","selfPolicy","entry","entries","pkgName","versionsMap","workspaceSingleton","override","resolvedEntries","conflictingPackages","versions","Array","from","createResolvedEntry","isSingleton","chosenVersion","resolveConflictingPeerVersions","envIds","console","VariantPolicy","fromArray","existingEntry","findEntryWithVersion","createVariantPolicyEntry","source","force","overrides","envsByVersion","semverVersions","v","semver","coerce","bestVersion","bestCount","candidateVersion","coercedCandidate","satisfiedCount","validRange","satisfies","coercedBest","gt","coercedBestForCheck","unsatisfiedEnvs","allDetails","join","warn","unsatisfiedDetails","consoleWarning","find","foundEnvs","peersPolicies","policy","mergedPolicies","mergePolices","packageNames","buildResultsP","packageName","componentIdToPackageName","state","_consumer","depList","getDependencies","includeHidden","additionalDeps","comp","toTypeArray","compIdWithoutVersion","id","split","isExtension","includes","componentInWorkspace","c","isEqual","componentId","depManifestBeforeFiltering","toDependenciesManifest","filterComponents","filterExtensions","updateDependenciesVersions","depManifest","devMissings","runtimeMissings","getMissingPackages","unresolvedRuntimeMissingRootDeps","pickBy","_version","rootPackageName","devDependencies","peerDependencies","unresolvedDevMissingRootDeps","peerDepsForManifest","envPeerDependencies","_getEnvPeerDependencies","_val","react","results","Promise","all","currResult","packageNamesFromWorkspace","getComponentEnvPolicy","selfPolicyWithoutLocal","nameVersionTuples","toNameVersionTuple","resolved","currentDeps","found","findByPkgNameOrCompId","snapToSemver","fromPairs","dependencyList","getPolicy","updateDependencyVersion","componentsManifests","pMapSeries","blankDependencies","optionalDependencies","peerDependenciesMeta","getVersion","hasVersion","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, { SemVer } from 'semver';\nimport pMapSeries from 'p-map-series';\nimport { snapToSemver } from '@teambit/component-package-version';\nimport type { Logger } from '@teambit/logger';\nimport type { DependencyList, PackageName } from '../dependencies';\nimport { ComponentDependency } from '../dependencies';\nimport type { WorkspacePolicy, EnvPolicy } from '../policy';\nimport { VariantPolicy } from '../policy';\nimport type { VariantPolicyEntry } from '../policy/variant-policy';\nimport { createVariantPolicyEntry } from '../policy/variant-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 private logger?: Logger,\n private resolveEnvPeersFromRoot: boolean = true,\n private forceEnvPeersToRoot: boolean = false\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 let envSelfPeers: VariantPolicy;\n let peerOverrides: Record<string, string> = {};\n if (this.resolveEnvPeersFromRoot) {\n const workspacePackageNames = new Set(\n components.map((component) => this.dependencyResolver.getPackageName(component))\n );\n const result = this.mergeEnvPeersToRoot(componentsManifestsMap, workspacePackageNames);\n envSelfPeers = result.rootPolicy;\n peerOverrides = result.peerOverrides;\n if (result.componentPeerOverrides.size > 0) {\n this.injectConflictingPeersToComponents(componentsManifestsMap, result.componentPeerOverrides);\n }\n } else {\n envSelfPeers = this.getEnvsSelfPeersPolicy(componentsManifestsMap);\n }\n const workspaceManifest = new WorkspaceManifest(\n name,\n version,\n dedupedDependencies.rootDependencies,\n envSelfPeers,\n rootDir,\n componentsManifestsMap,\n peerOverrides\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 /**\n * Merge env peer dependencies to the workspace root.\n * - Non-conflicting peers: always merge to root\n * - Conflicting peers with workspaceSingleton: merge majority to root, warn about unsatisfied envs\n * - Conflicting peers without workspaceSingleton: skip root, return as componentPeerOverrides for per-component injection\n */\n private mergeEnvPeersToRoot(\n componentsManifestsMap: ComponentsManifestsMap,\n workspacePackageNames: Set<string>\n ): {\n rootPolicy: VariantPolicy;\n componentPeerOverrides: Map<string, Record<string, string>>;\n peerOverrides: Record<string, string>;\n } {\n // Collect all env selfPolicies grouped by package name\n // Map<packageName, Map<version, Set<envId>>>\n const peerVersionsMap = new Map<string, Map<string, Set<string>>>();\n // Track workspaceSingleton flag per package (true if ANY env marks it)\n const singletonFlags = new Map<string, boolean>();\n // Track overrides flag per package (true if ANY env marks it)\n const overridesFlags = new Map<string, boolean>();\n\n for (const manifest of componentsManifestsMap.values()) {\n const envId = manifest.envPolicy.envId || 'unknown';\n const selfPolicy = manifest.envPolicy.selfPolicy;\n for (const entry of selfPolicy.entries) {\n // Skip peers that are workspace components — they're linked, not installed\n if (workspacePackageNames.has(entry.dependencyId)) continue;\n const pkgName = entry.dependencyId;\n const version = entry.value.version;\n if (!peerVersionsMap.has(pkgName)) {\n peerVersionsMap.set(pkgName, new Map());\n }\n const versionsMap = peerVersionsMap.get(pkgName)!;\n if (!versionsMap.has(version)) {\n versionsMap.set(version, new Set());\n }\n versionsMap.get(version)!.add(envId);\n if (entry.value.workspaceSingleton) {\n singletonFlags.set(pkgName, true);\n }\n if (entry.value.override) {\n overridesFlags.set(pkgName, true);\n }\n }\n }\n\n // Resolve each peer dependency\n const resolvedEntries: VariantPolicyEntry[] = [];\n // Map<envId, Record<pkgName, version>> for per-component injection\n const componentPeerOverrides = new Map<string, Record<string, string>>();\n // Collect pnpm overrides from entries with overrides: true\n const peerOverrides: Record<string, string> = {};\n // Track packages with conflicts for the hint message\n const conflictingPackages: string[] = [];\n\n for (const [pkgName, versionsMap] of peerVersionsMap.entries()) {\n const versions = Array.from(versionsMap.keys());\n\n if (versions.length === 1) {\n // No conflict — merge to root\n const entry = this.createResolvedEntry(componentsManifestsMap, pkgName, versions[0]);\n resolvedEntries.push(entry);\n if (overridesFlags.get(pkgName) && versions[0] !== '+') {\n peerOverrides[pkgName] = versions[0];\n }\n continue;\n }\n\n // overrides:true implies singleton — an override forces a single version across the workspace\n const isSingleton =\n this.forceEnvPeersToRoot || (singletonFlags.get(pkgName) ?? false) || (overridesFlags.get(pkgName) ?? false);\n\n if (isSingleton) {\n // Conflict + workspaceSingleton: merge majority to root, warn about unsatisfied\n const chosenVersion = this.resolveConflictingPeerVersions(pkgName, versionsMap);\n resolvedEntries.push(this.createResolvedEntry(componentsManifestsMap, pkgName, chosenVersion));\n conflictingPackages.push(pkgName);\n if (overridesFlags.get(pkgName) && chosenVersion !== '+') {\n peerOverrides[pkgName] = chosenVersion;\n }\n } else {\n // Conflict + no workspaceSingleton: per-component injection\n // Each env gets its own version injected into its components\n for (const [version, envIds] of versionsMap.entries()) {\n // Skip \"+\" placeholder — it's resolved at the workspace root level\n if (version === '+') continue;\n for (const envId of envIds) {\n if (!componentPeerOverrides.has(envId)) {\n componentPeerOverrides.set(envId, {});\n }\n componentPeerOverrides.get(envId)![pkgName] = version;\n }\n }\n }\n }\n\n if (conflictingPackages.length > 0) {\n this.logger?.console?.(\n `\\n💡 To resolve workspace peer version conflicts, pin a version in workspace.jsonc under \"teambit.dependencies/dependency-resolver\" > \"overrides\", ` +\n `e.g. \"overrides\": { \"${conflictingPackages[0]}\": \"<version>\" }\\n`\n );\n }\n\n return {\n rootPolicy: VariantPolicy.fromArray(resolvedEntries),\n componentPeerOverrides,\n peerOverrides,\n };\n }\n\n private createResolvedEntry(\n componentsManifestsMap: ComponentsManifestsMap,\n pkgName: string,\n version: string\n ): VariantPolicyEntry {\n const existingEntry = this.findEntryWithVersion(componentsManifestsMap, pkgName, version);\n if (existingEntry) return existingEntry;\n return createVariantPolicyEntry(pkgName, version, 'runtime', {\n source: 'env-own',\n force: true,\n });\n }\n\n /**\n * Inject conflicting non-singleton peer deps into component manifests.\n * Each component gets the version specified by its env.\n */\n private injectConflictingPeersToComponents(\n componentsManifestsMap: ComponentsManifestsMap,\n componentPeerOverrides: Map<string, Record<string, string>>\n ): void {\n for (const manifest of componentsManifestsMap.values()) {\n const envId = manifest.envPolicy.envId || 'unknown';\n const overrides = componentPeerOverrides.get(envId);\n if (!overrides) continue;\n manifest.dependencies.dependencies = {\n ...overrides,\n ...manifest.dependencies.dependencies,\n };\n }\n }\n\n private resolveConflictingPeerVersions(pkgName: string, versionsMap: Map<string, Set<string>>): string {\n const versions = Array.from(versionsMap.keys());\n const envsByVersion = Array.from(versionsMap.entries());\n\n // Filter out non-semver versions (like '+') for comparison\n const semverVersions = versions.filter((v) => v !== '+' && semver.coerce(v) !== null);\n\n if (semverVersions.length === 0) {\n // All versions are non-semver (e.g., '+'), just pick the first\n return versions[0];\n }\n\n // For each version, count how many envs it could satisfy\n let bestVersion = semverVersions[0];\n let bestCount = 0;\n\n for (const candidateVersion of semverVersions) {\n const coercedCandidate = semver.coerce(candidateVersion);\n if (!coercedCandidate) continue;\n let satisfiedCount = 0;\n for (const [version, envIds] of envsByVersion) {\n if (version === candidateVersion || version === '+') {\n satisfiedCount += envIds.size;\n } else if (semver.validRange(version)) {\n // Check if the candidate could satisfy the range\n if (semver.satisfies(coercedCandidate.version, version)) {\n satisfiedCount += envIds.size;\n }\n }\n }\n const coercedBest = semver.coerce(bestVersion);\n if (\n satisfiedCount > bestCount ||\n (satisfiedCount === bestCount && coercedBest && semver.gt(coercedCandidate.version, coercedBest.version))\n ) {\n bestVersion = candidateVersion;\n bestCount = satisfiedCount;\n }\n }\n\n // Only warn about envs whose version is NOT satisfied by the chosen version\n const coercedBestForCheck = semver.coerce(bestVersion);\n const unsatisfiedEnvs = envsByVersion.filter(([version]) => {\n if (version === bestVersion || version === '+') return false;\n if (coercedBestForCheck && semver.validRange(version) && semver.satisfies(coercedBestForCheck.version, version))\n return false;\n return true;\n });\n\n if (unsatisfiedEnvs.length > 0) {\n const allDetails = envsByVersion\n .map(([version, envIds]) => ` ${version} (from envs: ${Array.from(envIds).join(', ')})`)\n .join('\\n');\n this.logger?.warn(\n `Conflicting env peer dependency versions for \"${pkgName}\":\\n${allDetails}\\n → Resolved to: ${bestVersion}`\n );\n const unsatisfiedDetails = unsatisfiedEnvs\n .map(([version, envIds]) => `${version} (${Array.from(envIds).join(', ')})`)\n .join(', ');\n this.logger?.consoleWarning?.(\n `Conflicting env peer versions for \"${pkgName}\": using ${bestVersion}, but not compatible with: ${unsatisfiedDetails}`\n );\n }\n\n return bestVersion;\n }\n\n private findEntryWithVersion(\n componentsManifestsMap: ComponentsManifestsMap,\n pkgName: string,\n version: string\n ): VariantPolicyEntry | undefined {\n for (const manifest of componentsManifestsMap.values()) {\n const entry = manifest.envPolicy.selfPolicy.entries.find(\n (e) => e.dependencyId === pkgName && e.value.version === version\n );\n if (entry) return entry;\n }\n return undefined;\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 let peerDepsForManifest: Record<string, string> = {};\n if (!this.resolveEnvPeersFromRoot) {\n // Legacy behavior: inject env peer deps into each component's manifest\n const envPeerDependencies = await this._getEnvPeerDependencies(component, packageNames);\n if (includeAllEnvPeers ?? true) {\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\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\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
|
+
{"version":3,"names":["_aspectLoader","data","require","_componentIssues","_pkgModules","_lodash","_semver","_interopRequireWildcard","_pMapSeries","_interopRequireDefault","_componentPackageVersion","_dependencies","_policy","_dependencyResolver","_variantPolicy","_componentManifest","_deduping","_updateDependencyVersion","_workspaceManifest","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","DEFAULT_CREATE_OPTIONS","filterComponentsFromManifests","createManifestForComponentsWithoutDependencies","dedupe","resolveVersionsFromDependenciesOnly","excludeExtensionsDependencies","WorkspaceManifestFactory","constructor","dependencyResolver","aspectLoader","logger","resolveEnvPeersFromRoot","forceEnvPeersToRoot","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","peerOverrides","workspacePackageNames","Set","map","component","getPackageName","result","mergeEnvPeersToRoot","componentPeerOverrides","size","injectConflictingPeersToComponents","getEnvsSelfPeersPolicy","workspaceManifest","WorkspaceManifest","coreAspectIds","getCoreAspectIds","coreAspectPkgNames","coreAspectId","getCoreAspectPackageName","add","dep","dependencyId","peerVersionsMap","Map","singletonFlags","overridesFlags","manifest","values","envId","envPolicy","selfPolicy","entry","entries","pkgName","versionsMap","workspaceSingleton","override","resolvedEntries","conflictingPackages","versions","Array","from","createResolvedEntry","isSingleton","chosenVersion","resolveConflictingPeerVersions","envIds","console","VariantPolicy","fromArray","existingEntry","findEntryWithVersion","createVariantPolicyEntry","source","force","overrides","envsByVersion","semverVersions","v","semver","coerce","bestVersion","bestCount","candidateVersion","coercedCandidate","satisfiedCount","validRange","satisfies","coercedBest","gt","coercedBestForCheck","unsatisfiedEnvs","allDetails","join","warn","unsatisfiedDetails","consoleWarning","find","foundEnvs","peersPolicies","policy","mergedPolicies","mergePolices","packageNames","buildResultsP","packageName","componentIdToPackageName","state","_consumer","depList","getDependencies","includeHidden","additionalDeps","comp","toTypeArray","compIdWithoutVersion","id","split","isExtension","includes","componentInWorkspace","c","isEqual","componentId","depManifestBeforeFiltering","toDependenciesManifest","filterComponents","filterExtensions","updateDependenciesVersions","depManifest","devMissings","runtimeMissings","getMissingPackages","unresolvedRuntimeMissingRootDeps","pickBy","_version","rootPackageName","devDependencies","peerDependencies","unresolvedDevMissingRootDeps","peerDepsForManifest","envPeerDependencies","_getEnvPeerDependencies","componentExplicitPkgs","getComponentExplicitPackages","_val","react","results","Promise","all","currResult","depResolverEntry","DependencyResolverAspect","explicitPolicy","config","nonRemovedEntryNames","packageNamesFromWorkspace","getComponentEnvPolicy","selfPolicyWithoutLocal","nameVersionTuples","toNameVersionTuple","resolved","currentDeps","found","findByPkgNameOrCompId","snapToSemver","fromPairs","dependencyList","getPolicy","updateDependencyVersion","componentsManifests","pMapSeries","blankDependencies","optionalDependencies","peerDependenciesMeta","getVersion","hasVersion","ComponentManifest","SemVer","exports","filtered","ComponentDependency","componentsToFilterOut","depPkgName","some","existingComponent","toString","ignoreVersion","isEqualWithoutVersion","versionSpec","startsWith","missingPackagesData","issues","getIssue","IssuesClasses","MissingPackagesDependenciesOnFs","isDevFile","missingPackages","uniq","difference","policySection","names","isRemovalObject","val"],"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, { SemVer } from 'semver';\nimport pMapSeries from 'p-map-series';\nimport { snapToSemver } from '@teambit/component-package-version';\nimport type { Logger } from '@teambit/logger';\nimport type { DependencyList, PackageName } from '../dependencies';\nimport { ComponentDependency } from '../dependencies';\nimport type { WorkspacePolicy, EnvPolicy, VariantPolicyConfigEntryValue, VariantPolicyEntryValue } from '../policy';\nimport { VariantPolicy } from '../policy';\nimport { DependencyResolverAspect } from '../dependency-resolver.aspect';\nimport type { VariantPolicyEntry } from '../policy/variant-policy';\nimport { createVariantPolicyEntry } from '../policy/variant-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 private logger?: Logger,\n private resolveEnvPeersFromRoot: boolean = true,\n private forceEnvPeersToRoot: boolean = false\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 let envSelfPeers: VariantPolicy;\n let peerOverrides: Record<string, string> = {};\n if (this.resolveEnvPeersFromRoot) {\n const workspacePackageNames = new Set(\n components.map((component) => this.dependencyResolver.getPackageName(component))\n );\n const result = this.mergeEnvPeersToRoot(componentsManifestsMap, workspacePackageNames);\n envSelfPeers = result.rootPolicy;\n peerOverrides = result.peerOverrides;\n if (result.componentPeerOverrides.size > 0) {\n this.injectConflictingPeersToComponents(componentsManifestsMap, result.componentPeerOverrides);\n }\n } else {\n envSelfPeers = this.getEnvsSelfPeersPolicy(componentsManifestsMap);\n }\n const workspaceManifest = new WorkspaceManifest(\n name,\n version,\n dedupedDependencies.rootDependencies,\n envSelfPeers,\n rootDir,\n componentsManifestsMap,\n peerOverrides\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 /**\n * Merge env peer dependencies to the workspace root.\n * - Non-conflicting peers: always merge to root\n * - Conflicting peers with workspaceSingleton: merge majority to root, warn about unsatisfied envs\n * - Conflicting peers without workspaceSingleton: skip root, return as componentPeerOverrides for per-component injection\n */\n private mergeEnvPeersToRoot(\n componentsManifestsMap: ComponentsManifestsMap,\n workspacePackageNames: Set<string>\n ): {\n rootPolicy: VariantPolicy;\n componentPeerOverrides: Map<string, Record<string, string>>;\n peerOverrides: Record<string, string>;\n } {\n // Collect all env selfPolicies grouped by package name\n // Map<packageName, Map<version, Set<envId>>>\n const peerVersionsMap = new Map<string, Map<string, Set<string>>>();\n // Track workspaceSingleton flag per package (true if ANY env marks it)\n const singletonFlags = new Map<string, boolean>();\n // Track overrides flag per package (true if ANY env marks it)\n const overridesFlags = new Map<string, boolean>();\n\n for (const manifest of componentsManifestsMap.values()) {\n const envId = manifest.envPolicy.envId || 'unknown';\n const selfPolicy = manifest.envPolicy.selfPolicy;\n for (const entry of selfPolicy.entries) {\n // Skip peers that are workspace components — they're linked, not installed\n if (workspacePackageNames.has(entry.dependencyId)) continue;\n const pkgName = entry.dependencyId;\n const version = entry.value.version;\n if (!peerVersionsMap.has(pkgName)) {\n peerVersionsMap.set(pkgName, new Map());\n }\n const versionsMap = peerVersionsMap.get(pkgName)!;\n if (!versionsMap.has(version)) {\n versionsMap.set(version, new Set());\n }\n versionsMap.get(version)!.add(envId);\n if (entry.value.workspaceSingleton) {\n singletonFlags.set(pkgName, true);\n }\n if (entry.value.override) {\n overridesFlags.set(pkgName, true);\n }\n }\n }\n\n // Resolve each peer dependency\n const resolvedEntries: VariantPolicyEntry[] = [];\n // Map<envId, Record<pkgName, version>> for per-component injection\n const componentPeerOverrides = new Map<string, Record<string, string>>();\n // Collect pnpm overrides from entries with overrides: true\n const peerOverrides: Record<string, string> = {};\n // Track packages with conflicts for the hint message\n const conflictingPackages: string[] = [];\n\n for (const [pkgName, versionsMap] of peerVersionsMap.entries()) {\n const versions = Array.from(versionsMap.keys());\n\n if (versions.length === 1) {\n // No conflict — merge to root\n const entry = this.createResolvedEntry(componentsManifestsMap, pkgName, versions[0]);\n resolvedEntries.push(entry);\n if (overridesFlags.get(pkgName) && versions[0] !== '+') {\n peerOverrides[pkgName] = versions[0];\n }\n continue;\n }\n\n // overrides:true implies singleton — an override forces a single version across the workspace\n const isSingleton =\n this.forceEnvPeersToRoot || (singletonFlags.get(pkgName) ?? false) || (overridesFlags.get(pkgName) ?? false);\n\n if (isSingleton) {\n // Conflict + workspaceSingleton: merge majority to root, warn about unsatisfied\n const chosenVersion = this.resolveConflictingPeerVersions(pkgName, versionsMap);\n resolvedEntries.push(this.createResolvedEntry(componentsManifestsMap, pkgName, chosenVersion));\n conflictingPackages.push(pkgName);\n if (overridesFlags.get(pkgName) && chosenVersion !== '+') {\n peerOverrides[pkgName] = chosenVersion;\n }\n } else {\n // Conflict + no workspaceSingleton: per-component injection\n // Each env gets its own version injected into its components\n for (const [version, envIds] of versionsMap.entries()) {\n // Skip \"+\" placeholder — it's resolved at the workspace root level\n if (version === '+') continue;\n for (const envId of envIds) {\n if (!componentPeerOverrides.has(envId)) {\n componentPeerOverrides.set(envId, {});\n }\n componentPeerOverrides.get(envId)![pkgName] = version;\n }\n }\n }\n }\n\n if (conflictingPackages.length > 0) {\n this.logger?.console?.(\n `\\n💡 To resolve workspace peer version conflicts, pin a version in workspace.jsonc under \"teambit.dependencies/dependency-resolver\" > \"overrides\", ` +\n `e.g. \"overrides\": { \"${conflictingPackages[0]}\": \"<version>\" }\\n`\n );\n }\n\n return {\n rootPolicy: VariantPolicy.fromArray(resolvedEntries),\n componentPeerOverrides,\n peerOverrides,\n };\n }\n\n private createResolvedEntry(\n componentsManifestsMap: ComponentsManifestsMap,\n pkgName: string,\n version: string\n ): VariantPolicyEntry {\n const existingEntry = this.findEntryWithVersion(componentsManifestsMap, pkgName, version);\n if (existingEntry) return existingEntry;\n return createVariantPolicyEntry(pkgName, version, 'runtime', {\n source: 'env-own',\n force: true,\n });\n }\n\n /**\n * Inject conflicting non-singleton peer deps into component manifests.\n * Each component gets the version specified by its env.\n */\n private injectConflictingPeersToComponents(\n componentsManifestsMap: ComponentsManifestsMap,\n componentPeerOverrides: Map<string, Record<string, string>>\n ): void {\n for (const manifest of componentsManifestsMap.values()) {\n const envId = manifest.envPolicy.envId || 'unknown';\n const overrides = componentPeerOverrides.get(envId);\n if (!overrides) continue;\n manifest.dependencies.dependencies = {\n ...overrides,\n ...manifest.dependencies.dependencies,\n };\n }\n }\n\n private resolveConflictingPeerVersions(pkgName: string, versionsMap: Map<string, Set<string>>): string {\n const versions = Array.from(versionsMap.keys());\n const envsByVersion = Array.from(versionsMap.entries());\n\n // Filter out non-semver versions (like '+') for comparison\n const semverVersions = versions.filter((v) => v !== '+' && semver.coerce(v) !== null);\n\n if (semverVersions.length === 0) {\n // All versions are non-semver (e.g., '+'), just pick the first\n return versions[0];\n }\n\n // For each version, count how many envs it could satisfy\n let bestVersion = semverVersions[0];\n let bestCount = 0;\n\n for (const candidateVersion of semverVersions) {\n const coercedCandidate = semver.coerce(candidateVersion);\n if (!coercedCandidate) continue;\n let satisfiedCount = 0;\n for (const [version, envIds] of envsByVersion) {\n if (version === candidateVersion || version === '+') {\n satisfiedCount += envIds.size;\n } else if (semver.validRange(version)) {\n // Check if the candidate could satisfy the range\n if (semver.satisfies(coercedCandidate.version, version)) {\n satisfiedCount += envIds.size;\n }\n }\n }\n const coercedBest = semver.coerce(bestVersion);\n if (\n satisfiedCount > bestCount ||\n (satisfiedCount === bestCount && coercedBest && semver.gt(coercedCandidate.version, coercedBest.version))\n ) {\n bestVersion = candidateVersion;\n bestCount = satisfiedCount;\n }\n }\n\n // Only warn about envs whose version is NOT satisfied by the chosen version\n const coercedBestForCheck = semver.coerce(bestVersion);\n const unsatisfiedEnvs = envsByVersion.filter(([version]) => {\n if (version === bestVersion || version === '+') return false;\n if (coercedBestForCheck && semver.validRange(version) && semver.satisfies(coercedBestForCheck.version, version))\n return false;\n return true;\n });\n\n if (unsatisfiedEnvs.length > 0) {\n const allDetails = envsByVersion\n .map(([version, envIds]) => ` ${version} (from envs: ${Array.from(envIds).join(', ')})`)\n .join('\\n');\n this.logger?.warn(\n `Conflicting env peer dependency versions for \"${pkgName}\":\\n${allDetails}\\n → Resolved to: ${bestVersion}`\n );\n const unsatisfiedDetails = unsatisfiedEnvs\n .map(([version, envIds]) => `${version} (${Array.from(envIds).join(', ')})`)\n .join(', ');\n this.logger?.consoleWarning?.(\n `Conflicting env peer versions for \"${pkgName}\": using ${bestVersion}, but not compatible with: ${unsatisfiedDetails}`\n );\n }\n\n return bestVersion;\n }\n\n private findEntryWithVersion(\n componentsManifestsMap: ComponentsManifestsMap,\n pkgName: string,\n version: string\n ): VariantPolicyEntry | undefined {\n for (const manifest of componentsManifestsMap.values()) {\n const entry = manifest.envPolicy.selfPolicy.entries.find(\n (e) => e.dependencyId === pkgName && e.value.version === version\n );\n if (entry) return entry;\n }\n return undefined;\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 let peerDepsForManifest: Record<string, string> = {};\n if (!this.resolveEnvPeersFromRoot) {\n // Legacy behavior: inject env peer deps into each component's manifest\n const envPeerDependencies = await this._getEnvPeerDependencies(component, packageNames);\n // Also include packages that are explicitly listed in the component's\n // dep-resolver config (e.g. with version \"+\"). Without this, a fresh\n // workspace after `bit new`/`bit fork` hits a chicken-and-egg problem:\n // \"+\" can't resolve → package absent from manifest → filter excludes it\n // → package never installed.\n const componentExplicitPkgs = this.getComponentExplicitPackages(component);\n if (includeAllEnvPeers ?? true) {\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 componentExplicitPkgs.has(pkgName)\n );\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\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 /**\n * Collect package names explicitly listed in the component's dep-resolver policy,\n * excluding entries that represent removals (\"-\" or `{ version: \"-\" }`).\n */\n private getComponentExplicitPackages(component: Component): Set<string> {\n const depResolverEntry = component.get(DependencyResolverAspect.id);\n const explicitPolicy = depResolverEntry?.config?.policy ?? {};\n return new Set<string>([\n ...nonRemovedEntryNames(explicitPolicy.dependencies),\n ...nonRemovedEntryNames(explicitPolicy.devDependencies),\n ...nonRemovedEntryNames(explicitPolicy.peerDependencies),\n ]);\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\nfunction nonRemovedEntryNames(policySection?: Record<string, VariantPolicyConfigEntryValue>): string[] {\n if (!policySection) return [];\n const names: string[] = [];\n for (const [name, versionSpec] of Object.entries(policySection)) {\n // Skip explicit removals expressed as \"-\" or as removal objects.\n if (versionSpec !== '-' && !isRemovalObject(versionSpec)) {\n names.push(name);\n }\n }\n return names;\n}\n\nfunction isRemovalObject(val: VariantPolicyConfigEntryValue): boolean {\n if (!val || typeof val !== 'object') return false;\n return (val as VariantPolicyEntryValue).version === '-';\n}\n"],"mappings":"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","ignoreList":[]}
|
package/dist/policy/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { Policy, PolicySemver, PolicyConfigKeys, PolicyConfigKeysNames, PolicyEntry } from './policy';
|
|
2
2
|
export { WorkspacePolicy, WorkspacePolicyFactory, WorkspacePolicyConfigObject, AddEntryOptions as WorkspacePolicyAddEntryOptions, WorkspacePolicyEntry, WorkspacePolicyConfigKeysNames, } from './workspace-policy';
|
|
3
|
-
export { VariantPolicy, VariantPolicyEntryValue, VariantPolicyConfigObject, SerializedVariantPolicy, VariantPolicyConfigArr, } from './variant-policy';
|
|
3
|
+
export { VariantPolicy, VariantPolicyConfigEntryValue, VariantPolicyEntryValue, VariantPolicyConfigObject, SerializedVariantPolicy, VariantPolicyConfigArr, } from './variant-policy';
|
|
4
4
|
export { EnvPolicy, EnvPolicyConfigObject, EnvPolicyEnvJsoncConfigObject } from './env-policy';
|
package/dist/policy/index.js
CHANGED
|
@@ -69,6 +69,12 @@ Object.defineProperty(exports, "VariantPolicyConfigArr", {
|
|
|
69
69
|
return _variantPolicy().VariantPolicyConfigArr;
|
|
70
70
|
}
|
|
71
71
|
});
|
|
72
|
+
Object.defineProperty(exports, "VariantPolicyConfigEntryValue", {
|
|
73
|
+
enumerable: true,
|
|
74
|
+
get: function () {
|
|
75
|
+
return _variantPolicy().VariantPolicyConfigEntryValue;
|
|
76
|
+
}
|
|
77
|
+
});
|
|
72
78
|
Object.defineProperty(exports, "VariantPolicyConfigObject", {
|
|
73
79
|
enumerable: true,
|
|
74
80
|
get: function () {
|
package/dist/policy/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_policy","data","require","_workspacePolicy","_variantPolicy","_envPolicy"],"sources":["index.ts"],"sourcesContent":["export { Policy, PolicySemver, PolicyConfigKeys, PolicyConfigKeysNames, PolicyEntry } from './policy';\nexport {\n WorkspacePolicy,\n WorkspacePolicyFactory,\n WorkspacePolicyConfigObject,\n AddEntryOptions as WorkspacePolicyAddEntryOptions,\n WorkspacePolicyEntry,\n WorkspacePolicyConfigKeysNames,\n} from './workspace-policy';\nexport {\n VariantPolicy,\n VariantPolicyEntryValue,\n VariantPolicyConfigObject,\n SerializedVariantPolicy,\n VariantPolicyConfigArr,\n} from './variant-policy';\n\nexport { EnvPolicy, EnvPolicyConfigObject, EnvPolicyEnvJsoncConfigObject } from './env-policy';\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":["_policy","data","require","_workspacePolicy","_variantPolicy","_envPolicy"],"sources":["index.ts"],"sourcesContent":["export { Policy, PolicySemver, PolicyConfigKeys, PolicyConfigKeysNames, PolicyEntry } from './policy';\nexport {\n WorkspacePolicy,\n WorkspacePolicyFactory,\n WorkspacePolicyConfigObject,\n AddEntryOptions as WorkspacePolicyAddEntryOptions,\n WorkspacePolicyEntry,\n WorkspacePolicyConfigKeysNames,\n} from './workspace-policy';\nexport {\n VariantPolicy,\n VariantPolicyConfigEntryValue,\n VariantPolicyEntryValue,\n VariantPolicyConfigObject,\n SerializedVariantPolicy,\n VariantPolicyConfigArr,\n} from './variant-policy';\n\nexport { EnvPolicy, EnvPolicyConfigObject, EnvPolicyEnvJsoncConfigObject } from './env-policy';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAAA,QAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,OAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,iBAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,gBAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAQA,SAAAG,eAAA;EAAA,MAAAH,IAAA,GAAAC,OAAA;EAAAE,cAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AASA,SAAAI,WAAA;EAAA,MAAAJ,IAAA,GAAAC,OAAA;EAAAG,UAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { VariantPolicy, VariantPolicyConfigObject, VariantPolicyFromConfigObjectOptions, SerializedVariantPolicy, VariantPolicyEntry, VariantPolicyEntryValue, createVariantPolicyEntry, DependencySource, VariantPolicyConfigArr, } from './variant-policy';
|
|
1
|
+
export { VariantPolicy, VariantPolicyConfigObject, VariantPolicyFromConfigObjectOptions, SerializedVariantPolicy, VariantPolicyEntry, VariantPolicyConfigEntryValue, VariantPolicyEntryValue, createVariantPolicyEntry, DependencySource, VariantPolicyConfigArr, } from './variant-policy';
|
|
@@ -27,6 +27,12 @@ Object.defineProperty(exports, "VariantPolicyConfigArr", {
|
|
|
27
27
|
return _variantPolicy().VariantPolicyConfigArr;
|
|
28
28
|
}
|
|
29
29
|
});
|
|
30
|
+
Object.defineProperty(exports, "VariantPolicyConfigEntryValue", {
|
|
31
|
+
enumerable: true,
|
|
32
|
+
get: function () {
|
|
33
|
+
return _variantPolicy().VariantPolicyConfigEntryValue;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
30
36
|
Object.defineProperty(exports, "VariantPolicyConfigObject", {
|
|
31
37
|
enumerable: true,
|
|
32
38
|
get: function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_variantPolicy","data","require"],"sources":["index.ts"],"sourcesContent":["export {\n VariantPolicy,\n VariantPolicyConfigObject,\n VariantPolicyFromConfigObjectOptions,\n SerializedVariantPolicy,\n VariantPolicyEntry,\n VariantPolicyEntryValue,\n createVariantPolicyEntry,\n DependencySource,\n VariantPolicyConfigArr,\n} from './variant-policy';\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":["_variantPolicy","data","require"],"sources":["index.ts"],"sourcesContent":["export {\n VariantPolicy,\n VariantPolicyConfigObject,\n VariantPolicyFromConfigObjectOptions,\n SerializedVariantPolicy,\n VariantPolicyEntry,\n VariantPolicyConfigEntryValue,\n VariantPolicyEntryValue,\n createVariantPolicyEntry,\n DependencySource,\n VariantPolicyConfigArr,\n} from './variant-policy';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAAA,eAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,cAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.dependencies_dependency-resolver@1.0.
|
|
2
|
-
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.dependencies_dependency-resolver@1.0.
|
|
1
|
+
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.dependencies_dependency-resolver@1.0.960/dist/dependency-resolver.composition.js';
|
|
2
|
+
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.dependencies_dependency-resolver@1.0.960/dist/dependency-resolver.docs.mdx';
|
|
3
3
|
|
|
4
4
|
export const compositions = [compositions_0];
|
|
5
5
|
export const overview = [overview_0];
|
|
@@ -10,8 +10,9 @@ import { snapToSemver } from '@teambit/component-package-version';
|
|
|
10
10
|
import type { Logger } from '@teambit/logger';
|
|
11
11
|
import type { DependencyList, PackageName } from '../dependencies';
|
|
12
12
|
import { ComponentDependency } from '../dependencies';
|
|
13
|
-
import type { WorkspacePolicy, EnvPolicy } from '../policy';
|
|
13
|
+
import type { WorkspacePolicy, EnvPolicy, VariantPolicyConfigEntryValue, VariantPolicyEntryValue } from '../policy';
|
|
14
14
|
import { VariantPolicy } from '../policy';
|
|
15
|
+
import { DependencyResolverAspect } from '../dependency-resolver.aspect';
|
|
15
16
|
import type { VariantPolicyEntry } from '../policy/variant-policy';
|
|
16
17
|
import { createVariantPolicyEntry } from '../policy/variant-policy';
|
|
17
18
|
import type { DependencyResolverMain } from '../dependency-resolver.main.runtime';
|
|
@@ -464,6 +465,12 @@ export class WorkspaceManifestFactory {
|
|
|
464
465
|
if (!this.resolveEnvPeersFromRoot) {
|
|
465
466
|
// Legacy behavior: inject env peer deps into each component's manifest
|
|
466
467
|
const envPeerDependencies = await this._getEnvPeerDependencies(component, packageNames);
|
|
468
|
+
// Also include packages that are explicitly listed in the component's
|
|
469
|
+
// dep-resolver config (e.g. with version "+"). Without this, a fresh
|
|
470
|
+
// workspace after `bit new`/`bit fork` hits a chicken-and-egg problem:
|
|
471
|
+
// "+" can't resolve → package absent from manifest → filter excludes it
|
|
472
|
+
// → package never installed.
|
|
473
|
+
const componentExplicitPkgs = this.getComponentExplicitPackages(component);
|
|
467
474
|
if (includeAllEnvPeers ?? true) {
|
|
468
475
|
peerDepsForManifest = envPeerDependencies;
|
|
469
476
|
} else {
|
|
@@ -471,7 +478,8 @@ export class WorkspaceManifestFactory {
|
|
|
471
478
|
return (
|
|
472
479
|
depManifestBeforeFiltering.dependencies[pkgName] ||
|
|
473
480
|
depManifestBeforeFiltering.devDependencies[pkgName] ||
|
|
474
|
-
depManifestBeforeFiltering.peerDependencies[pkgName]
|
|
481
|
+
depManifestBeforeFiltering.peerDependencies[pkgName] ||
|
|
482
|
+
componentExplicitPkgs.has(pkgName)
|
|
475
483
|
);
|
|
476
484
|
});
|
|
477
485
|
|
|
@@ -517,6 +525,20 @@ export class WorkspaceManifestFactory {
|
|
|
517
525
|
return result;
|
|
518
526
|
}
|
|
519
527
|
|
|
528
|
+
/**
|
|
529
|
+
* Collect package names explicitly listed in the component's dep-resolver policy,
|
|
530
|
+
* excluding entries that represent removals ("-" or `{ version: "-" }`).
|
|
531
|
+
*/
|
|
532
|
+
private getComponentExplicitPackages(component: Component): Set<string> {
|
|
533
|
+
const depResolverEntry = component.get(DependencyResolverAspect.id);
|
|
534
|
+
const explicitPolicy = depResolverEntry?.config?.policy ?? {};
|
|
535
|
+
return new Set<string>([
|
|
536
|
+
...nonRemovedEntryNames(explicitPolicy.dependencies),
|
|
537
|
+
...nonRemovedEntryNames(explicitPolicy.devDependencies),
|
|
538
|
+
...nonRemovedEntryNames(explicitPolicy.peerDependencies),
|
|
539
|
+
]);
|
|
540
|
+
}
|
|
541
|
+
|
|
520
542
|
private async _getEnvPeerDependencies(
|
|
521
543
|
component: Component,
|
|
522
544
|
packageNamesFromWorkspace: string[]
|
|
@@ -675,3 +697,20 @@ async function getMissingPackages(component: Component): Promise<{ devMissings:
|
|
|
675
697
|
runtimeMissings,
|
|
676
698
|
};
|
|
677
699
|
}
|
|
700
|
+
|
|
701
|
+
function nonRemovedEntryNames(policySection?: Record<string, VariantPolicyConfigEntryValue>): string[] {
|
|
702
|
+
if (!policySection) return [];
|
|
703
|
+
const names: string[] = [];
|
|
704
|
+
for (const [name, versionSpec] of Object.entries(policySection)) {
|
|
705
|
+
// Skip explicit removals expressed as "-" or as removal objects.
|
|
706
|
+
if (versionSpec !== '-' && !isRemovalObject(versionSpec)) {
|
|
707
|
+
names.push(name);
|
|
708
|
+
}
|
|
709
|
+
}
|
|
710
|
+
return names;
|
|
711
|
+
}
|
|
712
|
+
|
|
713
|
+
function isRemovalObject(val: VariantPolicyConfigEntryValue): boolean {
|
|
714
|
+
if (!val || typeof val !== 'object') return false;
|
|
715
|
+
return (val as VariantPolicyEntryValue).version === '-';
|
|
716
|
+
}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/dependency-resolver",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.960",
|
|
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.
|
|
9
|
+
"version": "1.0.960"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"chalk": "4.1.2",
|
|
@@ -55,11 +55,11 @@
|
|
|
55
55
|
"@teambit/legacy.consumer-config": "0.0.109",
|
|
56
56
|
"@teambit/toolbox.crypto.sha1": "0.0.15",
|
|
57
57
|
"@teambit/toolbox.object.sorter": "0.0.2",
|
|
58
|
-
"@teambit/component": "1.0.
|
|
59
|
-
"@teambit/envs": "1.0.
|
|
60
|
-
"@teambit/aspect-loader": "1.0.
|
|
61
|
-
"@teambit/objects": "0.0.
|
|
62
|
-
"@teambit/graphql": "1.0.
|
|
58
|
+
"@teambit/component": "1.0.960",
|
|
59
|
+
"@teambit/envs": "1.0.960",
|
|
60
|
+
"@teambit/aspect-loader": "1.0.960",
|
|
61
|
+
"@teambit/objects": "0.0.467",
|
|
62
|
+
"@teambit/graphql": "1.0.960"
|
|
63
63
|
},
|
|
64
64
|
"devDependencies": {
|
|
65
65
|
"@types/fs-extra": "9.0.7",
|
package/policy/index.ts
CHANGED