@teambit/merging 1.0.1243 → 1.0.1245

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.
@@ -1 +1 @@
1
- {"version":3,"names":["_chai","data","require","_componentId","_legacy","_legacy2","_mergeDependencies","ownKeys","e","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","asLoaded","deps","Dependencies","map","dep","Dependency","getClone","toDeps","ids","id","compId","ComponentID","fromString","fullName","snapshot","comps","devComps","pkgs","devPkgs","dependencies","devDependencies","peerDependencies","packageDependencies","devPackageDependencies","peerPackageDependencies","idsOf","get","toString","describe","base","lodash","chalk","current","other","merged","mergeDependencies","it","expect","to","equal","not","have","property","chai","deep","members","f","find","packageName","include","relativePath","sourceRelativePath","destinationRelativePath","importSpecifiers","depWithPaths","paths","relativePaths","peerWithRange","range","versionRange","repeat","laneIds","ComponentIdList","fromArray","lengthOf","asVersion","depsData","getDependenciesOfVersion","extensions","ExtensionDataList","ExtensionDataEntry","undefined"],"sources":["merge-dependencies.spec.ts"],"sourcesContent":["import { expect } from 'chai';\nimport { ComponentID, ComponentIdList } from '@teambit/component-id';\nimport { Dependencies, Dependency } from '@teambit/legacy.consumer-component';\nimport { ExtensionDataEntry, ExtensionDataList } from '@teambit/legacy.extension-data';\nimport type { DependenciesSnapshot } from './merge-dependencies';\nimport { getDependenciesOfVersion, mergeDependencies } from './merge-dependencies';\n\ntype SnapshotInput = {\n comps?: string[]; // runtime component deps, e.g. \"my-scope/b@0.0.1\"\n devComps?: string[];\n pkgs?: Record<string, string>;\n devPkgs?: Record<string, string>;\n};\n\n// a component loaded from the scope has its dependencies as plain objects (see Dependencies.getClone())\nconst asLoaded = (deps: Dependency[]) => new Dependencies(deps.map((dep) => Dependency.getClone(dep) as Dependency));\n\nconst toDeps = (ids: string[] = []) =>\n asLoaded(\n ids.map((id) => {\n const compId = ComponentID.fromString(id);\n return new Dependency(compId, [], `@my-scope/${compId.fullName}`);\n })\n );\n\nfunction snapshot({ comps, devComps, pkgs, devPkgs }: SnapshotInput): DependenciesSnapshot {\n return {\n dependencies: toDeps(comps),\n devDependencies: toDeps(devComps),\n peerDependencies: toDeps(),\n packageDependencies: pkgs || {},\n devPackageDependencies: devPkgs || {},\n peerPackageDependencies: {},\n };\n}\n\nconst idsOf = (deps: Dependencies) => deps.get().map((dep) => dep.id.toString());\n\ndescribe('mergeDependencies', () => {\n describe('packages', () => {\n const base = snapshot({ pkgs: { lodash: '4.17.20', 'is-string': '1.0.5', chalk: '4.0.0' } });\n // current (the lane) bumped chalk\n const current = snapshot({ pkgs: { lodash: '4.17.20', 'is-string': '1.0.5', chalk: '4.1.0' } });\n // other (main) bumped lodash, removed is-string and added is-number\n const other = snapshot({ pkgs: { lodash: '4.17.21', chalk: '4.0.0', 'is-number': '7.0.0' } });\n const merged = mergeDependencies(base, current, other, 'manual');\n it('should take a version bump of either side', () => {\n expect(merged.packageDependencies.lodash).to.equal('4.17.21');\n expect(merged.packageDependencies.chalk).to.equal('4.1.0');\n });\n it('should remove a package that was removed on other', () => {\n expect(merged.packageDependencies).to.not.have.property('is-string');\n });\n it('should add a package that was added on other', () => {\n expect(merged.packageDependencies['is-number']).to.equal('7.0.0');\n });\n });\n describe('a package that moved from runtime to dev on other', () => {\n const base = snapshot({ pkgs: { chai: '4.0.0' } });\n const current = snapshot({ pkgs: { chai: '4.0.0' } });\n const other = snapshot({ devPkgs: { chai: '4.0.0' } });\n const merged = mergeDependencies(base, current, other, 'manual');\n it('should be a dev dependency only', () => {\n expect(merged.packageDependencies).to.deep.equal({});\n expect(merged.devPackageDependencies).to.deep.equal({ chai: '4.0.0' });\n });\n });\n describe('both sides changed the version of the same package differently', () => {\n const base = snapshot({ pkgs: { lodash: '4.17.19' } });\n const current = snapshot({ pkgs: { lodash: '4.17.20' } });\n const other = snapshot({ pkgs: { lodash: '4.17.21' } });\n it('should keep current unless the strategy is \"theirs\"', () => {\n expect(mergeDependencies(base, current, other, 'manual').packageDependencies.lodash).to.equal('4.17.20');\n expect(mergeDependencies(base, current, other, 'ours').packageDependencies.lodash).to.equal('4.17.20');\n expect(mergeDependencies(base, current, other, 'theirs').packageDependencies.lodash).to.equal('4.17.21');\n });\n });\n describe('a package removed on current and changed on other', () => {\n const base = snapshot({ pkgs: { lodash: '4.17.19' } });\n const current = snapshot({});\n const other = snapshot({ pkgs: { lodash: '4.17.21' } });\n it('should keep current (removed) unless the strategy is \"theirs\"', () => {\n expect(mergeDependencies(base, current, other, 'manual').packageDependencies).to.deep.equal({});\n expect(mergeDependencies(base, current, other, 'theirs').packageDependencies.lodash).to.equal('4.17.21');\n });\n });\n describe('components', () => {\n const base = snapshot({ comps: ['my-scope/a@0.0.1', 'my-scope/e@0.0.1', 'my-scope/old@0.0.1'] });\n const current = snapshot({ comps: ['my-scope/a@0.0.1', 'my-scope/e@0.0.1', 'my-scope/old@0.0.1'] });\n const other = snapshot({ comps: ['my-scope/a@0.0.1', 'my-scope/e@0.0.2', 'my-scope/f@0.0.1'] });\n const merged = mergeDependencies(base, current, other, 'manual');\n it('should take the added, removed and updated component dependencies of other', () => {\n expect(idsOf(merged.dependencies)).to.have.members(['my-scope/a@0.0.1', 'my-scope/e@0.0.2', 'my-scope/f@0.0.1']);\n });\n it('should keep the package-name of the dependencies', () => {\n const f = merged.dependencies.get().find((dep) => dep.id.fullName === 'f');\n expect(f?.packageName).to.equal('@my-scope/f');\n });\n it('should return copies of the dependencies of the inputs', () => {\n const e = merged.dependencies.get().find((dep) => dep.id.fullName === 'e');\n expect(other.dependencies.get()).to.not.include(e);\n });\n });\n describe('a dependency that moved to another field on one side and changed its version on the other side', () => {\n const base = snapshot({ comps: ['my-scope/b@0.0.1'], pkgs: { chai: '4.0.0' } });\n const current = snapshot({ comps: ['my-scope/b@0.0.2'], pkgs: { chai: '4.1.0' } });\n const other = snapshot({ devComps: ['my-scope/b@0.0.1'], devPkgs: { chai: '4.0.0' } });\n const merged = mergeDependencies(base, current, other, 'manual');\n it('should keep it in one field only', () => {\n expect(idsOf(merged.dependencies)).to.deep.equal(['my-scope/b@0.0.2']);\n expect(idsOf(merged.devDependencies)).to.deep.equal([]);\n expect(merged.packageDependencies).to.deep.equal({ chai: '4.1.0' });\n expect(merged.devPackageDependencies).to.deep.equal({});\n });\n });\n describe('a component dependency that other imports from another file too', () => {\n const relativePath = (sourceRelativePath: string) => ({\n sourceRelativePath,\n destinationRelativePath: 'index.ts',\n importSpecifiers: [],\n });\n const depWithPaths = (paths: string[]) =>\n asLoaded([new Dependency(ComponentID.fromString('my-scope/b@0.0.1'), paths.map(relativePath), '@my-scope/b')]);\n const base = { ...snapshot({}), dependencies: depWithPaths(['a.ts']) };\n const current = { ...snapshot({}), dependencies: depWithPaths(['a.ts']) };\n const other = { ...snapshot({}), dependencies: depWithPaths(['a.ts', 'b.ts']) };\n it('should take the import paths of other', () => {\n const [merged] = mergeDependencies(base, current, other, 'manual').dependencies.get();\n expect(merged.relativePaths.map((paths) => paths.sourceRelativePath)).to.deep.equal(['a.ts', 'b.ts']);\n });\n });\n describe('a peer component dependency whose version range changed on other only', () => {\n const peerWithRange = (range: string) =>\n asLoaded([new Dependency(ComponentID.fromString('my-scope/b@1.0.0'), [], '@my-scope/b', range)]);\n const base = { ...snapshot({}), peerDependencies: peerWithRange('^1.0.0') };\n const current = { ...snapshot({}), peerDependencies: peerWithRange('^1.0.0') };\n const other = { ...snapshot({}), peerDependencies: peerWithRange('^1.0.0 || ^2.0.0') };\n it('should take the version range of other', () => {\n const [merged] = mergeDependencies(base, current, other, 'manual').peerDependencies.get();\n expect(merged.versionRange).to.equal('^1.0.0 || ^2.0.0');\n });\n });\n describe('a dependency on a lane component that other removed', () => {\n // b was snapped on the lane, so current has the lane snap of it. other removed the dependency.\n const base = snapshot({ comps: ['my-scope/b@0.0.1'] });\n const current = snapshot({ comps: [`my-scope/b@${'a'.repeat(40)}`] });\n const other = snapshot({});\n it('should be removed when b is on the lane, as only its version changed on current', () => {\n const laneIds = ComponentIdList.fromArray([ComponentID.fromString(`my-scope/b@${'a'.repeat(40)}`)]);\n expect(idsOf(mergeDependencies(base, current, other, 'manual', laneIds).dependencies)).to.deep.equal([]);\n });\n it('should be kept when b is not on the lane, as both sides changed it', () => {\n expect(mergeDependencies(base, current, other, 'manual').dependencies.get()).to.have.lengthOf(1);\n });\n });\n describe('a component dependency that other removed, with base and other from Versions', () => {\n // a Version has the package names in the dependency-resolver data only, a component loaded from the scope (current)\n // has them on the dependencies as well\n const asVersion = (deps: DependenciesSnapshot) => {\n const depsData = deps.dependencies.get().map((dep) => ({ id: dep.id.toString(), packageName: dep.packageName }));\n return getDependenciesOfVersion({\n ...deps,\n dependencies: asLoaded(deps.dependencies.get().map((dep) => new Dependency(dep.id, dep.relativePaths))),\n extensions: ExtensionDataList.fromArray([\n new ExtensionDataEntry(undefined, undefined, 'teambit.dependencies/dependency-resolver', undefined, {\n dependencies: depsData,\n }),\n ]),\n });\n };\n const base = asVersion(snapshot({ comps: ['my-scope/b@0.0.1'] }));\n const current = snapshot({ comps: ['my-scope/b@0.0.1'] });\n const other = asVersion(snapshot({}));\n it('should be removed', () => {\n expect(idsOf(mergeDependencies(base, current, other, 'manual').dependencies)).to.deep.equal([]);\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_chai","data","require","_componentId","_legacy","_legacy2","_mergeDependencies","ownKeys","e","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","asLoaded","deps","Dependencies","map","dep","Dependency","getClone","toDeps","ids","id","compId","ComponentID","fromString","fullName","snapshot","comps","devComps","peerComps","pkgs","devPkgs","peerPkgs","dependencies","devDependencies","peerDependencies","packageDependencies","devPackageDependencies","peerPackageDependencies","importsOf","merged","sides","Map","entries","Set","idsOf","get","toString","side","input","ignoredPackages","forcedPackages","describe","base","lodash","chalk","current","other","mergeDependencies","it","expect","to","equal","not","have","property","chai","deep","members","f","find","packageName","include","relativePath","sourceRelativePath","destinationRelativePath","importSpecifiers","depWithPaths","paths","relativePaths","peerWithRange","range","versionRange","repeat","laneIds","ComponentIdList","fromArray","lengthOf","asVersion","depsData","getDependenciesOfVersion","extensions","ExtensionDataList","ExtensionDataEntry","undefined","imports","react","result","getImportedPackagesWithoutVersion","ignoring","mergeWithImports","withPolicyOfMerge","env"],"sources":["merge-dependencies.spec.ts"],"sourcesContent":["import { expect } from 'chai';\nimport { ComponentID, ComponentIdList } from '@teambit/component-id';\nimport { Dependencies, Dependency } from '@teambit/legacy.consumer-component';\nimport { ExtensionDataEntry, ExtensionDataList } from '@teambit/legacy.extension-data';\nimport type { DependenciesSnapshot, ImportsOfMerge, SideOfMerge } from './merge-dependencies';\nimport {\n getDependenciesOfVersion,\n getImportedPackagesWithoutVersion,\n mergeDependencies,\n withPolicyOfMerge,\n} from './merge-dependencies';\n\ntype SnapshotInput = {\n comps?: string[]; // runtime component deps, e.g. \"my-scope/b@0.0.1\"\n devComps?: string[];\n peerComps?: string[];\n pkgs?: Record<string, string>;\n devPkgs?: Record<string, string>;\n peerPkgs?: Record<string, string>;\n};\n\n// a component loaded from the scope has its dependencies as plain objects (see Dependencies.getClone())\nconst asLoaded = (deps: Dependency[]) => new Dependencies(deps.map((dep) => Dependency.getClone(dep) as Dependency));\n\nconst toDeps = (ids: string[] = []) =>\n asLoaded(\n ids.map((id) => {\n const compId = ComponentID.fromString(id);\n return new Dependency(compId, [], `@my-scope/${compId.fullName}`);\n })\n );\n\nfunction snapshot({ comps, devComps, peerComps, pkgs, devPkgs, peerPkgs }: SnapshotInput): DependenciesSnapshot {\n return {\n dependencies: toDeps(comps),\n devDependencies: toDeps(devComps),\n peerDependencies: toDeps(peerComps),\n packageDependencies: pkgs || {},\n devPackageDependencies: devPkgs || {},\n peerPackageDependencies: peerPkgs || {},\n };\n}\n\nconst importsOf = (merged: Record<string, 'runtime' | 'dev'>, sides: string[]): ImportsOfMerge => ({\n merged: new Map(Object.entries(merged)),\n sides: new Set(sides),\n});\n\nconst idsOf = (deps: Dependencies) => deps.get().map((dep) => dep.id.toString());\n\nconst side = (input: SnapshotInput, ignoredPackages: string[] = [], forcedPackages: string[] = []): SideOfMerge => ({\n dependencies: snapshot(input),\n ignoredPackages: new Set(ignoredPackages),\n forcedPackages: new Set(forcedPackages),\n});\n\ndescribe('mergeDependencies', () => {\n describe('packages', () => {\n const base = snapshot({ pkgs: { lodash: '4.17.20', 'is-string': '1.0.5', chalk: '4.0.0' } });\n // current (the lane) bumped chalk\n const current = snapshot({ pkgs: { lodash: '4.17.20', 'is-string': '1.0.5', chalk: '4.1.0' } });\n // other (main) bumped lodash, removed is-string and added is-number\n const other = snapshot({ pkgs: { lodash: '4.17.21', chalk: '4.0.0', 'is-number': '7.0.0' } });\n const merged = mergeDependencies(base, current, other, 'manual');\n it('should take a version bump of either side', () => {\n expect(merged.packageDependencies.lodash).to.equal('4.17.21');\n expect(merged.packageDependencies.chalk).to.equal('4.1.0');\n });\n it('should remove a package that was removed on other', () => {\n expect(merged.packageDependencies).to.not.have.property('is-string');\n });\n it('should add a package that was added on other', () => {\n expect(merged.packageDependencies['is-number']).to.equal('7.0.0');\n });\n });\n describe('a package that moved from runtime to dev on other', () => {\n const base = snapshot({ pkgs: { chai: '4.0.0' } });\n const current = snapshot({ pkgs: { chai: '4.0.0' } });\n const other = snapshot({ devPkgs: { chai: '4.0.0' } });\n const merged = mergeDependencies(base, current, other, 'manual');\n it('should be a dev dependency only', () => {\n expect(merged.packageDependencies).to.deep.equal({});\n expect(merged.devPackageDependencies).to.deep.equal({ chai: '4.0.0' });\n });\n });\n describe('both sides changed the version of the same package differently', () => {\n const base = snapshot({ pkgs: { lodash: '4.17.19' } });\n const current = snapshot({ pkgs: { lodash: '4.17.20' } });\n const other = snapshot({ pkgs: { lodash: '4.17.21' } });\n it('should keep current unless the strategy is \"theirs\"', () => {\n expect(mergeDependencies(base, current, other, 'manual').packageDependencies.lodash).to.equal('4.17.20');\n expect(mergeDependencies(base, current, other, 'ours').packageDependencies.lodash).to.equal('4.17.20');\n expect(mergeDependencies(base, current, other, 'theirs').packageDependencies.lodash).to.equal('4.17.21');\n });\n });\n describe('a package removed on current and changed on other', () => {\n const base = snapshot({ pkgs: { lodash: '4.17.19' } });\n const current = snapshot({});\n const other = snapshot({ pkgs: { lodash: '4.17.21' } });\n it('should keep current (removed) unless the strategy is \"theirs\"', () => {\n expect(mergeDependencies(base, current, other, 'manual').packageDependencies).to.deep.equal({});\n expect(mergeDependencies(base, current, other, 'theirs').packageDependencies.lodash).to.equal('4.17.21');\n });\n });\n describe('components', () => {\n const base = snapshot({ comps: ['my-scope/a@0.0.1', 'my-scope/e@0.0.1', 'my-scope/old@0.0.1'] });\n const current = snapshot({ comps: ['my-scope/a@0.0.1', 'my-scope/e@0.0.1', 'my-scope/old@0.0.1'] });\n const other = snapshot({ comps: ['my-scope/a@0.0.1', 'my-scope/e@0.0.2', 'my-scope/f@0.0.1'] });\n const merged = mergeDependencies(base, current, other, 'manual');\n it('should take the added, removed and updated component dependencies of other', () => {\n expect(idsOf(merged.dependencies)).to.have.members(['my-scope/a@0.0.1', 'my-scope/e@0.0.2', 'my-scope/f@0.0.1']);\n });\n it('should keep the package-name of the dependencies', () => {\n const f = merged.dependencies.get().find((dep) => dep.id.fullName === 'f');\n expect(f?.packageName).to.equal('@my-scope/f');\n });\n it('should return copies of the dependencies of the inputs', () => {\n const e = merged.dependencies.get().find((dep) => dep.id.fullName === 'e');\n expect(other.dependencies.get()).to.not.include(e);\n });\n });\n describe('a dependency that moved to another field on one side and changed its version on the other side', () => {\n const base = snapshot({ comps: ['my-scope/b@0.0.1'], pkgs: { chai: '4.0.0' } });\n const current = snapshot({ comps: ['my-scope/b@0.0.2'], pkgs: { chai: '4.1.0' } });\n const other = snapshot({ devComps: ['my-scope/b@0.0.1'], devPkgs: { chai: '4.0.0' } });\n const merged = mergeDependencies(base, current, other, 'manual');\n it('should keep it in one field only', () => {\n expect(idsOf(merged.dependencies)).to.deep.equal(['my-scope/b@0.0.2']);\n expect(idsOf(merged.devDependencies)).to.deep.equal([]);\n expect(merged.packageDependencies).to.deep.equal({ chai: '4.1.0' });\n expect(merged.devPackageDependencies).to.deep.equal({});\n });\n });\n describe('a component dependency that other imports from another file too', () => {\n const relativePath = (sourceRelativePath: string) => ({\n sourceRelativePath,\n destinationRelativePath: 'index.ts',\n importSpecifiers: [],\n });\n const depWithPaths = (paths: string[]) =>\n asLoaded([new Dependency(ComponentID.fromString('my-scope/b@0.0.1'), paths.map(relativePath), '@my-scope/b')]);\n const base = { ...snapshot({}), dependencies: depWithPaths(['a.ts']) };\n const current = { ...snapshot({}), dependencies: depWithPaths(['a.ts']) };\n const other = { ...snapshot({}), dependencies: depWithPaths(['a.ts', 'b.ts']) };\n it('should take the import paths of other', () => {\n const [merged] = mergeDependencies(base, current, other, 'manual').dependencies.get();\n expect(merged.relativePaths.map((paths) => paths.sourceRelativePath)).to.deep.equal(['a.ts', 'b.ts']);\n });\n });\n describe('a peer component dependency whose version range changed on other only', () => {\n const peerWithRange = (range: string) =>\n asLoaded([new Dependency(ComponentID.fromString('my-scope/b@1.0.0'), [], '@my-scope/b', range)]);\n const base = { ...snapshot({}), peerDependencies: peerWithRange('^1.0.0') };\n const current = { ...snapshot({}), peerDependencies: peerWithRange('^1.0.0') };\n const other = { ...snapshot({}), peerDependencies: peerWithRange('^1.0.0 || ^2.0.0') };\n it('should take the version range of other', () => {\n const [merged] = mergeDependencies(base, current, other, 'manual').peerDependencies.get();\n expect(merged.versionRange).to.equal('^1.0.0 || ^2.0.0');\n });\n });\n describe('a dependency on a lane component that other removed', () => {\n // b was snapped on the lane, so current has the lane snap of it. other removed the dependency.\n const base = snapshot({ comps: ['my-scope/b@0.0.1'] });\n const current = snapshot({ comps: [`my-scope/b@${'a'.repeat(40)}`] });\n const other = snapshot({});\n it('should be removed when b is on the lane, as only its version changed on current', () => {\n const laneIds = ComponentIdList.fromArray([ComponentID.fromString(`my-scope/b@${'a'.repeat(40)}`)]);\n expect(idsOf(mergeDependencies(base, current, other, 'manual', laneIds).dependencies)).to.deep.equal([]);\n });\n it('should be kept when b is not on the lane, as both sides changed it', () => {\n expect(mergeDependencies(base, current, other, 'manual').dependencies.get()).to.have.lengthOf(1);\n });\n });\n describe('a component dependency that other removed, with base and other from Versions', () => {\n // a Version has the package names in the dependency-resolver data only, a component loaded from the scope (current)\n // has them on the dependencies as well\n const asVersion = (deps: DependenciesSnapshot) => {\n const depsData = deps.dependencies.get().map((dep) => ({ id: dep.id.toString(), packageName: dep.packageName }));\n return getDependenciesOfVersion({\n ...deps,\n dependencies: asLoaded(deps.dependencies.get().map((dep) => new Dependency(dep.id, dep.relativePaths))),\n extensions: ExtensionDataList.fromArray([\n new ExtensionDataEntry(undefined, undefined, 'teambit.dependencies/dependency-resolver', undefined, {\n dependencies: depsData,\n }),\n ]),\n });\n };\n const base = asVersion(snapshot({ comps: ['my-scope/b@0.0.1'] }));\n const current = snapshot({ comps: ['my-scope/b@0.0.1'] });\n const other = asVersion(snapshot({}));\n it('should be removed', () => {\n expect(idsOf(mergeDependencies(base, current, other, 'manual').dependencies)).to.deep.equal([]);\n });\n });\n describe('with the imports of the merged files', () => {\n describe('a package that one side stopped importing and the other side imports from another file', () => {\n // the lane removed the only import of lodash, main kept it and imports it from another file as well\n const base = snapshot({ pkgs: { lodash: '4.17.20' } });\n const current = snapshot({});\n const other = snapshot({ pkgs: { lodash: '4.17.21' } });\n const imports = importsOf({ lodash: 'runtime' }, ['lodash']);\n it('should be removed without the imports, as it was removed on current only', () => {\n expect(mergeDependencies(base, current, other, 'manual').packageDependencies).to.deep.equal({});\n });\n it('should be kept, taken from other, when the merged files import it', () => {\n const merged = mergeDependencies(base, current, other, 'manual', undefined, imports);\n expect(merged.packageDependencies).to.deep.equal({ lodash: '4.17.21' });\n });\n });\n describe('a package that each side stopped importing from a different file', () => {\n // both sides still import it, but not the merged files\n const base = snapshot({ pkgs: { lodash: '4.17.20' } });\n const merged = mergeDependencies(base, base, base, 'manual', undefined, importsOf({}, ['lodash']));\n it('should be removed', () => {\n expect(merged.packageDependencies).to.deep.equal({});\n });\n });\n describe('a component dependency that the merged files import from dev files only', () => {\n const base = snapshot({ comps: ['my-scope/b@0.0.1'] });\n const merged = mergeDependencies(base, base, base, 'manual', undefined, importsOf({ '@my-scope/b': 'dev' }, []));\n it('should be a dev dependency', () => {\n expect(idsOf(merged.dependencies)).to.deep.equal([]);\n expect(idsOf(merged.devDependencies)).to.deep.equal(['my-scope/b@0.0.1']);\n });\n });\n describe('a component dependency that the merged files import, and only base has', () => {\n const base = snapshot({ comps: ['my-scope/b@0.0.1'] });\n const current = snapshot({});\n const merged = mergeDependencies(\n base,\n current,\n current,\n 'manual',\n undefined,\n importsOf({ '@my-scope/b': 'runtime' }, [])\n );\n it('should be taken from base', () => {\n expect(idsOf(merged.dependencies)).to.deep.equal(['my-scope/b@0.0.1']);\n });\n });\n describe('a peer package that the merged files import', () => {\n const base = snapshot({ peerPkgs: { react: '^18.0.0' } });\n const merged = mergeDependencies(\n base,\n base,\n base,\n 'manual',\n undefined,\n importsOf({ react: 'runtime' }, ['react'])\n );\n it('should stay a peer', () => {\n expect(merged.peerPackageDependencies).to.deep.equal({ react: '^18.0.0' });\n expect(merged.packageDependencies).to.deep.equal({});\n });\n });\n describe('a package that no side imports', () => {\n // e.g. added by a policy\n const base = snapshot({ pkgs: { 'core-js': '3.0.0' } });\n const merged = mergeDependencies(base, base, base, 'manual', undefined, importsOf({}, []));\n it('should keep the 3-way result', () => {\n expect(merged.packageDependencies).to.deep.equal({ 'core-js': '3.0.0' });\n });\n });\n describe('a types package', () => {\n const base = snapshot({ pkgs: { '@scope/foo': '1.0.0' }, devPkgs: { '@types/scope__foo': '1.0.0' } });\n const current = snapshot({});\n it('should be removed with the package it types', () => {\n const merged = mergeDependencies(base, base, base, 'manual', undefined, importsOf({}, ['@scope/foo']));\n expect(merged.devPackageDependencies).to.deep.equal({});\n });\n it('should be kept with the package it types', () => {\n const imports = importsOf({ '@scope/foo': 'runtime' }, ['@scope/foo']);\n const merged = mergeDependencies(base, current, base, 'manual', undefined, imports);\n expect(merged.packageDependencies).to.deep.equal({ '@scope/foo': '1.0.0' });\n expect(merged.devPackageDependencies).to.deep.equal({ '@types/scope__foo': '1.0.0' });\n });\n });\n });\n});\n\ndescribe('getImportedPackagesWithoutVersion', () => {\n it('should return a package that a side ignored and the merge does not, when no side has it', () => {\n // the lane imports lodash while it's ignored, main removes the \"-\"\n const result = getImportedPackagesWithoutVersion(side({}, ['lodash']), side({}, ['lodash']), side({}), ['lodash']);\n expect(result).to.deep.equal(['lodash']);\n });\n it('should not return a package that the merge still ignores', () => {\n const ignoring = side({}, ['lodash']);\n expect(getImportedPackagesWithoutVersion(ignoring, ignoring, ignoring, ['lodash'])).to.deep.equal([]);\n });\n it('should not return a package that a side has as a dependency', () => {\n const result = getImportedPackagesWithoutVersion(\n side({}, ['lodash']),\n side({}, ['lodash']),\n side({ pkgs: { lodash: '4.17.21' } }),\n ['lodash']\n );\n expect(result).to.deep.equal([]);\n });\n it('should return a package that a side ignored and the merge does not, when a side has its types package only', () => {\n const result = getImportedPackagesWithoutVersion(\n side({}, ['lodash']),\n side({ devPkgs: { '@types/lodash': '4.17.0' } }, ['lodash']),\n side({}),\n ['lodash']\n );\n expect(result).to.deep.equal(['lodash']);\n });\n it('should not return a package that no side ignored', () => {\n // e.g. a core aspect, which is never a dependency\n expect(getImportedPackagesWithoutVersion(side({}), side({}), side({}), ['@scope/core'])).to.deep.equal([]);\n });\n});\n\ndescribe('withPolicyOfMerge', () => {\n const mergeWithImports = (base: SideOfMerge, current: SideOfMerge, other: SideOfMerge, imports: ImportsOfMerge) =>\n mergeDependencies(\n base.dependencies,\n current.dependencies,\n other.dependencies,\n 'manual',\n undefined,\n withPolicyOfMerge(imports, base, current, other)\n );\n it('should let the 3-way merge remove a package that other started to ignore, although the files import it', () => {\n const base = side({ pkgs: { lodash: '4.17.21' } });\n const merged = mergeWithImports(base, base, side({}, ['lodash']), importsOf({ lodash: 'runtime' }, ['lodash']));\n expect(merged.packageDependencies).to.deep.equal({});\n });\n it('should keep a package that the policy forces, when the merged files stop importing it', () => {\n // e.g. an own peer of an env, which is a runtime dependency of the env\n const env = side({ pkgs: { react: '^18.0.0' } }, [], ['react']);\n const merged = mergeWithImports(env, env, env, importsOf({}, ['react']));\n expect(merged.packageDependencies).to.deep.equal({ react: '^18.0.0' });\n });\n it('should let the 3-way merge remove a types package that other started to ignore, although the files import it', () => {\n const base = side({ pkgs: { react: '18.0.0' }, devPkgs: { '@types/react': '18.0.0' } });\n const other = side({ pkgs: { react: '18.0.0' } }, ['@types/react']);\n const merged = mergeWithImports(base, base, other, importsOf({ react: 'runtime' }, ['react']));\n expect(merged.devPackageDependencies).to.deep.equal({});\n expect(merged.packageDependencies).to.deep.equal({ react: '18.0.0' });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -35,6 +35,16 @@ export declare class MergeStatusProvider {
35
35
  otherLane?: Lane | undefined);
36
36
  getStatus(bitIds: ComponentID[]): Promise<ComponentMergeStatus[]>;
37
37
  private getComponentMergeStatus;
38
+ /**
39
+ * merge the resolved dependencies of the sides, and correct them by the packages that the merged files import, see
40
+ * mergeDependencies(). fails when the merged files import a package that no side has a version of.
41
+ */
42
+ private mergeDependenciesInScope;
43
+ /**
44
+ * the packages imported by the merged files and by the files of each side, see mergeDependencies().
45
+ * undefined when the files have conflicts (the merge stops before the snap) or the imports of a file are unknown.
46
+ */
47
+ private getImportsOfMerge;
38
48
  private mergeExtensionsData;
39
49
  private returnUnmerged;
40
50
  private getComponentStatusBeforeMergeAttempt;
@@ -67,6 +67,13 @@ function _dependencyResolver() {
67
67
  };
68
68
  return data;
69
69
  }
70
+ function _legacy2() {
71
+ const data = require("@teambit/legacy.constants");
72
+ _legacy2 = function () {
73
+ return data;
74
+ };
75
+ return data;
76
+ }
70
77
  function _builder() {
71
78
  const data = require("@teambit/builder");
72
79
  _builder = function () {
@@ -74,6 +81,41 @@ function _builder() {
74
81
  };
75
82
  return data;
76
83
  }
84
+ function _devFiles() {
85
+ const data = require("@teambit/dev-files");
86
+ _devFiles = function () {
87
+ return data;
88
+ };
89
+ return data;
90
+ }
91
+ function _component2() {
92
+ const data = require("@teambit/component.sources");
93
+ _component2 = function () {
94
+ return data;
95
+ };
96
+ return data;
97
+ }
98
+ function _dependencies() {
99
+ const data = require("@teambit/dependencies");
100
+ _dependencies = function () {
101
+ return data;
102
+ };
103
+ return data;
104
+ }
105
+ function _toolboxPath() {
106
+ const data = require("@teambit/toolbox.path.match-patterns");
107
+ _toolboxPath = function () {
108
+ return data;
109
+ };
110
+ return data;
111
+ }
112
+ function _toolboxPath2() {
113
+ const data = require("@teambit/toolbox.path.path");
114
+ _toolboxPath2 = function () {
115
+ return data;
116
+ };
117
+ return data;
118
+ }
77
119
  function _mergeDependencies() {
78
120
  const data = require("./merge-dependencies");
79
121
  _mergeDependencies = function () {
@@ -192,16 +234,14 @@ other: ${otherLaneHead.toString()}`);
192
234
  currentLabel,
193
235
  baseComponent
194
236
  });
195
- // a workspace re-detects the dependencies from the merged files. a bare scope can't, it merges the resolved ones.
196
- const getDependenciesMergeResult = () => {
197
- if (this.workspace) return undefined;
198
- // "theirs" with a file conflict takes all the files of other (see applyModifiedVersion), so the dependencies too
199
- if (mergeResults.hasConflicts && this.options.mergeStrategy === _componentModules().MergeOptions.theirs) {
200
- return (0, _mergeDependencies().getDependenciesOfVersion)(otherComponent);
201
- }
202
- return (0, _mergeDependencies().mergeDependencies)((0, _mergeDependencies().getDependenciesOfVersion)(baseComponent), currentComponent, (0, _mergeDependencies().getDependenciesOfVersion)(otherComponent), this.options.mergeStrategy, this.currentLane?.toComponentIdsIncludeUpdateDependents());
237
+ // a workspace re-detects the dependencies from the merged files. a bare scope can't resolve imports, it merges the
238
+ // resolved ones.
239
+ const scopeDepsMerge = this.workspace ? undefined : await this.mergeDependenciesInScope(baseComponent, currentComponent, otherComponent, mergeResults);
240
+ if (scopeDepsMerge?.failure) return {
241
+ id,
242
+ currentComponent,
243
+ unchangedMessage: scopeDepsMerge.failure
203
244
  };
204
- const dependenciesMergeResult = getDependenciesMergeResult();
205
245
  return {
206
246
  currentComponent,
207
247
  id,
@@ -209,9 +249,88 @@ other: ${otherLaneHead.toString()}`);
209
249
  divergeData,
210
250
  configMergeResult,
211
251
  dataMergeResult,
252
+ dependenciesMergeResult: scopeDepsMerge?.dependenciesMergeResult
253
+ };
254
+ }
255
+
256
+ /**
257
+ * merge the resolved dependencies of the sides, and correct them by the packages that the merged files import, see
258
+ * mergeDependencies(). fails when the merged files import a package that no side has a version of.
259
+ */
260
+ async mergeDependenciesInScope(baseComponent, currentComponent, otherComponent, mergeResults) {
261
+ const other = (0, _mergeDependencies().getDependenciesOfVersion)(otherComponent);
262
+ // "theirs" with a file conflict takes all the files of other (see applyModifiedVersion), so the dependencies too
263
+ if (mergeResults.hasConflicts && this.options.mergeStrategy === _componentModules().MergeOptions.theirs) {
264
+ return {
265
+ dependenciesMergeResult: other
266
+ };
267
+ }
268
+ const base = (0, _mergeDependencies().getDependenciesOfVersion)(baseComponent);
269
+ const sideOf = (dependencies, extensions) => _objectSpread({
270
+ dependencies
271
+ }, getPackagesOfPolicy(extensions));
272
+ const baseSide = sideOf(base, baseComponent.extensions);
273
+ const currentSide = sideOf(currentComponent, currentComponent.extensions);
274
+ const otherSide = sideOf(other, otherComponent.extensions);
275
+ const imports = await this.getImportsOfMerge(baseComponent, currentComponent, otherComponent, mergeResults);
276
+ if (imports) {
277
+ const packagesWithoutVersion = (0, _mergeDependencies().getImportedPackagesWithoutVersion)(baseSide, currentSide, otherSide, imports.merged.keys());
278
+ if (packagesWithoutVersion.length) {
279
+ return {
280
+ failure: `the merged files import ${packagesWithoutVersion.join(', ')}, which the merged dependencies policy doesn't ignore anymore ("-"), but no side has it as a dependency to take its version from. please merge in a workspace`
281
+ };
282
+ }
283
+ }
284
+ const dependenciesMergeResult = (0, _mergeDependencies().mergeDependencies)(base, currentComponent, other, this.options.mergeStrategy, this.currentLane?.toComponentIdsIncludeUpdateDependents(), imports && (0, _mergeDependencies().withPolicyOfMerge)(imports, baseSide, currentSide, otherSide));
285
+ return {
212
286
  dependenciesMergeResult
213
287
  };
214
288
  }
289
+
290
+ /**
291
+ * the packages imported by the merged files and by the files of each side, see mergeDependencies().
292
+ * undefined when the files have conflicts (the merge stops before the snap) or the imports of a file are unknown.
293
+ */
294
+ async getImportsOfMerge(baseComponent, currentComponent, otherComponent, mergeResults) {
295
+ if (mergeResults.hasConflicts) return undefined;
296
+ const repo = this.scope.legacyScope.objects;
297
+ const loadFiles = version => Promise.all(version.files.map(file => _component2().SourceFile.loadFromSourceFileModel(file, repo)));
298
+ const toFileContents = files => files.map(file => ({
299
+ relativePath: (0, _toolboxPath2().pathNormalizeToLinux)(file.relative),
300
+ content: file.contents.toString()
301
+ }));
302
+ const [baseFiles, otherFiles] = await Promise.all([loadFiles(baseComponent), loadFiles(otherComponent)]);
303
+ // the files and the aspects-data that are snapped, see MergingMain.applyVersion. "theirs" applies the merge to the
304
+ // files of other and snaps the aspects-data of other. otherwise, it's currentComponent, whose aspects-data is
305
+ // already merged in a lane merge (see mergeExtensionsData).
306
+ const isTheirs = this.options.mergeStrategy === _componentModules().MergeOptions.theirs;
307
+ const filesToMergeInto = isTheirs ? otherFiles : currentComponent.files;
308
+ const {
309
+ modifiedFiles
310
+ } = (0, _componentModules().applyModifiedVersion)(filesToMergeInto, mergeResults, this.options.mergeStrategy);
311
+ const snappedExtensions = isTheirs ? otherComponent.extensions : currentComponent.extensions;
312
+ const devFilesData = snappedExtensions.findCoreExtension(_devFiles().DevFilesAspect.id)?.data || {};
313
+ const devFiles = new Set(Object.values(devFilesData.devFiles || {}).flat());
314
+ // the patterns of each aspect are matched separately, same as DevFilesMain.computeDevFiles()
315
+ const patternsOfAspects = Object.values(devFilesData.devPatterns || {}).map(patterns => (0, _toolboxPath().splitPatterns)(patterns));
316
+ const isDevFile = relativePath => devFiles.has(relativePath) || patternsOfAspects.some(({
317
+ includePatterns,
318
+ excludePatterns
319
+ }) => (0, _toolboxPath().matchPatterns)(relativePath, includePatterns, excludePatterns));
320
+ const cache = new Map();
321
+ const importsAreUnknown = () => {
322
+ this.logger.debug(`the imports of ${currentComponent.id.toString()} are unknown, its dependencies are not corrected`);
323
+ return undefined;
324
+ };
325
+ const merged = await (0, _dependencies().detectImportedPackages)(toFileContents(modifiedFiles), isDevFile, cache);
326
+ if (!merged) return importsAreUnknown();
327
+ const sides = await Promise.all([baseFiles, currentComponent.files, otherFiles].map(files => (0, _dependencies().detectImportedPackages)(toFileContents(files), undefined, cache)));
328
+ if (sides.some(side => !side)) return importsAreUnknown();
329
+ return {
330
+ merged,
331
+ sides: new Set(sides.flatMap(side => [...side.keys()]))
332
+ };
333
+ }
215
334
  mergeExtensionsData(currentExtensions, baseExtensions, otherExtensions) {
216
335
  if (!this.options.shouldMergeAspectsData) {
217
336
  return {};
@@ -536,6 +655,20 @@ it was probably created in each lane separately and it also exists on main. plea
536
655
  throw new Error(`unsupported strategy "${resolveUnrelated}" of resolve-unrelated. supported strategies are: [ours, theirs]`);
537
656
  }
538
657
  }
658
+
659
+ /**
660
+ * the packages that the dependencies policy of a component ignores ("-") or forces. the policy of a Version is the
661
+ * resolved one (env, aspects and config), see DependencyResolverMain.mergeVariantPolicies().
662
+ */
539
663
  exports.MergeStatusProvider = MergeStatusProvider;
664
+ function getPackagesOfPolicy(extensions) {
665
+ const policy = extensions.findCoreExtension(_dependencyResolver().DependencyResolverAspect.id)?.data.policy || [];
666
+ const isIgnored = entry => entry.value.version === _legacy2().MANUALLY_REMOVE_DEPENDENCY;
667
+ const namesOf = entries => new Set(entries.map(entry => entry.dependencyId));
668
+ return {
669
+ ignoredPackages: namesOf(policy.filter(isIgnored)),
670
+ forcedPackages: namesOf(policy.filter(entry => entry.force && !isIgnored(entry)))
671
+ };
672
+ }
540
673
 
541
674
  //# sourceMappingURL=merge-status-provider.js.map