@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.
- package/dist/merge-dependencies.d.ts +42 -4
- package/dist/merge-dependencies.js +132 -6
- package/dist/merge-dependencies.js.map +1 -1
- package/dist/merge-dependencies.spec.js +214 -3
- package/dist/merge-dependencies.spec.js.map +1 -1
- package/dist/merge-status-provider.d.ts +10 -0
- package/dist/merge-status-provider.js +142 -9
- package/dist/merge-status-provider.js.map +1 -1
- package/package.json +18 -14
- /package/dist/{preview-1792595323307.js → preview-1792615520466.js} +0 -0
|
@@ -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
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
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
|