@teambit/checkout 0.0.243 → 0.0.245
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/checkout-version.d.ts +8 -6
- package/dist/checkout-version.js +12 -10
- package/dist/checkout-version.js.map +1 -1
- package/dist/checkout.main.runtime.d.ts +3 -8
- package/dist/checkout.main.runtime.js +6 -6
- package/dist/checkout.main.runtime.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -1
- package/package-tar/teambit-checkout-0.0.245.tgz +0 -0
- package/package.json +10 -10
- package/package-tar/teambit-checkout-0.0.243.tgz +0 -0
- /package/dist/{preview-1686280660969.js → preview-1686626379481.js} +0 -0
|
@@ -5,6 +5,7 @@ import { SourceFile } from '@teambit/legacy/dist/consumer/component/sources';
|
|
|
5
5
|
import { ApplyVersionResult, MergeStrategy } from '@teambit/legacy/dist/consumer/versions-ops/merge-version';
|
|
6
6
|
import { MergeResultsThreeWay } from '@teambit/legacy/dist/consumer/versions-ops/merge-version/three-way-merge';
|
|
7
7
|
import ConsumerComponent from '@teambit/legacy/dist/consumer/component';
|
|
8
|
+
import { Workspace } from '@teambit/workspace';
|
|
8
9
|
export declare type CheckoutProps = {
|
|
9
10
|
version?: string;
|
|
10
11
|
ids?: BitId[];
|
|
@@ -20,16 +21,18 @@ export declare type CheckoutProps = {
|
|
|
20
21
|
ignoreDist?: boolean;
|
|
21
22
|
isLane?: boolean;
|
|
22
23
|
};
|
|
23
|
-
export declare type
|
|
24
|
-
|
|
24
|
+
export declare type ComponentStatusBase = {
|
|
25
|
+
currentComponent?: ConsumerComponent;
|
|
25
26
|
componentFromModel?: Version;
|
|
26
27
|
id: BitId;
|
|
28
|
+
shouldBeRemoved?: boolean;
|
|
29
|
+
};
|
|
30
|
+
export declare type ComponentStatus = ComponentStatusBase & {
|
|
27
31
|
failureMessage?: string;
|
|
28
32
|
unchangedLegitimately?: boolean;
|
|
29
|
-
shouldBeRemoved?: boolean;
|
|
30
33
|
mergeResults?: MergeResultsThreeWay | null | undefined;
|
|
31
34
|
};
|
|
32
|
-
declare type ApplyVersionWithComps = {
|
|
35
|
+
export declare type ApplyVersionWithComps = {
|
|
33
36
|
applyVersionResult: ApplyVersionResult;
|
|
34
37
|
component?: ConsumerComponent;
|
|
35
38
|
};
|
|
@@ -72,5 +75,4 @@ export declare function markFilesToBeRemovedIfNeeded(succeededComponents: Compon
|
|
|
72
75
|
* it's needed in case the checked out version removed files that exist on the current version.
|
|
73
76
|
* without this function, these files would be left on the filesystem.
|
|
74
77
|
*/
|
|
75
|
-
export declare function deleteFilesIfNeeded(componentsResults: ApplyVersionWithComps[],
|
|
76
|
-
export {};
|
|
78
|
+
export declare function deleteFilesIfNeeded(componentsResults: ApplyVersionWithComps[], workspace: Workspace): Promise<void>;
|
package/dist/checkout-version.js
CHANGED
|
@@ -221,17 +221,17 @@ function applyModifiedVersion(componentFiles, mergeResults, mergeStrategy) {
|
|
|
221
221
|
* this function only mark them as such. later `deleteFilesIfNeeded()` will delete them
|
|
222
222
|
*/
|
|
223
223
|
function markFilesToBeRemovedIfNeeded(succeededComponents, componentsResults) {
|
|
224
|
-
const succeededComponentsByBitId = succeededComponents.reduce((accum,
|
|
225
|
-
const bitId =
|
|
226
|
-
if (!accum[bitId]) accum[bitId] =
|
|
224
|
+
const succeededComponentsByBitId = succeededComponents.reduce((accum, current) => {
|
|
225
|
+
const bitId = current.id.toStringWithoutVersion();
|
|
226
|
+
if (!accum[bitId]) accum[bitId] = current;
|
|
227
227
|
return accum;
|
|
228
228
|
}, {});
|
|
229
229
|
componentsResults.forEach(componentResult => {
|
|
230
230
|
var _succeededComponent$c;
|
|
231
231
|
const existingFilePathsFromModel = componentResult.applyVersionResult.filesStatus;
|
|
232
|
-
const bitId = componentResult.applyVersionResult.id.
|
|
232
|
+
const bitId = componentResult.applyVersionResult.id.toStringWithoutVersion();
|
|
233
233
|
const succeededComponent = succeededComponentsByBitId[bitId];
|
|
234
|
-
const filePathsFromFS = ((_succeededComponent$c = succeededComponent.
|
|
234
|
+
const filePathsFromFS = ((_succeededComponent$c = succeededComponent.currentComponent) === null || _succeededComponent$c === void 0 ? void 0 : _succeededComponent$c.files) || [];
|
|
235
235
|
filePathsFromFS.forEach(file => {
|
|
236
236
|
const filename = (0, _path2().pathNormalizeToLinux)(file.relative);
|
|
237
237
|
if (!existingFilePathsFromModel[filename]) {
|
|
@@ -246,13 +246,15 @@ function markFilesToBeRemovedIfNeeded(succeededComponents, componentsResults) {
|
|
|
246
246
|
* it's needed in case the checked out version removed files that exist on the current version.
|
|
247
247
|
* without this function, these files would be left on the filesystem.
|
|
248
248
|
*/
|
|
249
|
-
async function deleteFilesIfNeeded(componentsResults,
|
|
249
|
+
async function deleteFilesIfNeeded(componentsResults, workspace) {
|
|
250
250
|
const pathsToRemoveIncludeNull = componentsResults.map(compResult => {
|
|
251
251
|
return Object.keys(compResult.applyVersionResult.filesStatus).map(filePath => {
|
|
252
252
|
if (compResult.applyVersionResult.filesStatus[filePath] === _mergeVersion().FileStatus.removed) {
|
|
253
|
-
var _compResult$component
|
|
254
|
-
if (!
|
|
255
|
-
|
|
253
|
+
var _compResult$component;
|
|
254
|
+
if (!compResult.component) return null;
|
|
255
|
+
const compDir = compResult.component.writtenPath || ((_compResult$component = compResult.component.componentMap) === null || _compResult$component === void 0 ? void 0 : _compResult$component.rootDir);
|
|
256
|
+
if (!compDir) return null;
|
|
257
|
+
return path().join(compDir, filePath);
|
|
256
258
|
}
|
|
257
259
|
return null;
|
|
258
260
|
});
|
|
@@ -260,7 +262,7 @@ async function deleteFilesIfNeeded(componentsResults, consumer) {
|
|
|
260
262
|
const pathsToRemove = (0, _lodash().compact)(pathsToRemoveIncludeNull.flat());
|
|
261
263
|
const dataToPersist = new (_dataToPersist().default)();
|
|
262
264
|
dataToPersist.removeManyPaths(pathsToRemove.map(p => new (_removePath().default)(p, true)));
|
|
263
|
-
dataToPersist.addBasePath(
|
|
265
|
+
dataToPersist.addBasePath(workspace.path);
|
|
264
266
|
await dataToPersist.persistAllToFS();
|
|
265
267
|
}
|
|
266
268
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["applyVersion","consumer","id","componentFromFS","mergeResults","checkoutProps","isLane","Error","toString","mergeStrategy","filesStatus","hasConflicts","MergeOptions","ours","files","forEach","file","pathNormalizeToLinux","relative","FileStatus","unchanged","bitMap","updateComponentId","applyVersionResult","component","loadComponentFromModelImportIfNeeded","componentMap","GeneralError","updated","modifiedStatus","modifiedFiles","applyModifiedVersion","componentFiles","map","clone","manual","filePath","path","normalize","foundFile","find","componentFile","conflict","contents","Buffer","from","output","merged","isBinaryConflict","fsFile","binaryConflict","addFiles","m","push","added","deletedConflictFiles","removeFiles","removed","filter","f","remainDeletedFiles","remainDeleted","deletedConflict","overrideFiles","overridden","updatedFiles","content","markFilesToBeRemovedIfNeeded","succeededComponents","componentsResults","succeededComponentsByBitId","reduce","accum","next","bitId","componentResult","existingFilePathsFromModel","succeededComponent","filePathsFromFS","filename","deleteFilesIfNeeded","pathsToRemoveIncludeNull","compResult","Object","keys","writtenPath","join","pathsToRemove","compact","flat","dataToPersist","DataToPersist","removeManyPaths","p","RemovePath","addBasePath","getPath","persistAllToFS"],"sources":["checkout-version.ts"],"sourcesContent":["import { compact } from 'lodash';\nimport * as path from 'path';\nimport { Consumer } from '@teambit/legacy/dist/consumer';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport GeneralError from '@teambit/legacy/dist/error/general-error';\nimport Version from '@teambit/legacy/dist/scope/models/version';\nimport { SourceFile } from '@teambit/legacy/dist/consumer/component/sources';\nimport { pathNormalizeToLinux, PathOsBased } from '@teambit/legacy/dist/utils/path';\nimport DataToPersist from '@teambit/legacy/dist/consumer/component/sources/data-to-persist';\nimport RemovePath from '@teambit/legacy/dist/consumer/component/sources/remove-path';\nimport {\n ApplyVersionResult,\n FileStatus,\n MergeOptions,\n MergeStrategy,\n} from '@teambit/legacy/dist/consumer/versions-ops/merge-version';\nimport { MergeResultsThreeWay } from '@teambit/legacy/dist/consumer/versions-ops/merge-version/three-way-merge';\nimport ConsumerComponent from '@teambit/legacy/dist/consumer/component';\n\nexport type CheckoutProps = {\n version?: string; // if reset is true, the version is undefined\n ids?: BitId[];\n latestVersion?: boolean;\n promptMergeOptions?: boolean;\n mergeStrategy?: MergeStrategy | null;\n verbose?: boolean;\n skipNpmInstall?: boolean;\n ignorePackageJson?: boolean;\n writeConfig?: boolean;\n reset?: boolean; // remove local changes. if set, the version is undefined.\n all?: boolean; // checkout all ids\n ignoreDist?: boolean;\n isLane?: boolean;\n};\nexport type ComponentStatus = {\n componentFromFS?: ConsumerComponent;\n componentFromModel?: Version;\n id: BitId;\n failureMessage?: string;\n unchangedLegitimately?: boolean; // failed to checkout but for a legitimate reason, such as, up-to-date\n shouldBeRemoved?: boolean;\n mergeResults?: MergeResultsThreeWay | null | undefined;\n};\n\ntype ApplyVersionWithComps = { applyVersionResult: ApplyVersionResult; component?: ConsumerComponent };\n\n/**\n * 1) when the files are modified with conflicts and the strategy is \"ours\", leave the FS as is\n * and update only bitmap id version. (not the componentMap object).\n *\n * 2) when the files are modified with conflicts and the strategy is \"theirs\", write the component\n * according to id.version.\n *\n * 3) when files are modified with no conflict or files are modified with conflicts and the\n * strategy is manual, load the component according to id.version and update component.files.\n * applyModifiedVersion() docs explains what files are updated/added.\n *\n * 4) when --reset flag is used, write the component according to the bitmap version\n *\n * Side note:\n * Deleted file => if files are in used version but not in the modified one, no need to delete it. (similar to git).\n * Added file => if files are not in used version but in the modified one, they'll be under mergeResults.addFiles\n */\nexport async function applyVersion(\n consumer: Consumer,\n id: BitId,\n componentFromFS: ConsumerComponent | null | undefined, // it can be null only when isLanes is true\n mergeResults: MergeResultsThreeWay | null | undefined,\n checkoutProps: CheckoutProps\n): Promise<ApplyVersionWithComps> {\n if (!checkoutProps.isLane && !componentFromFS)\n throw new Error(`applyVersion expect to get componentFromFS for ${id.toString()}`);\n const { mergeStrategy } = checkoutProps;\n let filesStatus = {};\n if (mergeResults && mergeResults.hasConflicts && mergeStrategy === MergeOptions.ours) {\n // even when isLane is true, the mergeResults is possible only when the component is on the filesystem\n // otherwise it's impossible to have conflicts\n if (!componentFromFS) throw new Error(`applyVersion expect to get componentFromFS for ${id.toString()}`);\n componentFromFS.files.forEach((file) => {\n filesStatus[pathNormalizeToLinux(file.relative)] = FileStatus.unchanged;\n });\n consumer.bitMap.updateComponentId(id);\n return { applyVersionResult: { id, filesStatus } };\n }\n const component = await consumer.loadComponentFromModelImportIfNeeded(id);\n const componentMap = componentFromFS && componentFromFS.componentMap;\n if (componentFromFS && !componentMap) throw new GeneralError('applyVersion: componentMap was not found');\n\n const files = component.files;\n files.forEach((file) => {\n filesStatus[pathNormalizeToLinux(file.relative)] = FileStatus.updated;\n });\n if (mergeResults) {\n // update files according to the merge results\n const { filesStatus: modifiedStatus, modifiedFiles } = applyModifiedVersion(files, mergeResults, mergeStrategy);\n filesStatus = { ...filesStatus, ...modifiedStatus };\n component.files = modifiedFiles;\n }\n\n return {\n applyVersionResult: { id, filesStatus },\n component,\n };\n}\n\n/**\n * relevant only when\n * 1) there is no conflict => add files from mergeResults: addFiles, overrideFiles and modifiedFiles.output.\n * 2) there is conflict and mergeStrategy is manual => add files from mergeResults: addFiles, overrideFiles and modifiedFiles.conflict.\n *\n * this function only updates the files content, it doesn't write the files\n */\nexport function applyModifiedVersion(\n componentFiles: SourceFile[],\n mergeResults: MergeResultsThreeWay,\n mergeStrategy: MergeStrategy | null | undefined\n): { filesStatus: Record<string, any>; modifiedFiles: SourceFile[] } {\n let modifiedFiles = componentFiles.map((file) => file.clone());\n const filesStatus = {};\n if (mergeResults.hasConflicts && mergeStrategy !== MergeOptions.manual) {\n return { filesStatus, modifiedFiles };\n }\n mergeResults.modifiedFiles.forEach((file) => {\n const filePath: PathOsBased = path.normalize(file.filePath);\n const foundFile = modifiedFiles.find((componentFile) => componentFile.relative === filePath);\n if (!foundFile) throw new GeneralError(`file ${filePath} not found`);\n if (file.conflict) {\n foundFile.contents = Buffer.from(file.conflict);\n filesStatus[file.filePath] = FileStatus.manual;\n } else if (typeof file.output === 'string') {\n foundFile.contents = Buffer.from(file.output);\n filesStatus[file.filePath] = FileStatus.merged;\n } else if (file.isBinaryConflict) {\n // leave the file as is and notify the user later about it.\n foundFile.contents = file.fsFile.contents;\n filesStatus[file.filePath] = FileStatus.binaryConflict;\n } else {\n throw new GeneralError(`file ${filePath} does not have output nor conflict`);\n }\n });\n\n mergeResults.addFiles.forEach((file) => {\n const filePath: PathOsBased = path.normalize(file.filePath);\n if (modifiedFiles.find((m) => m.relative === filePath)) return;\n modifiedFiles.push(file.fsFile);\n filesStatus[file.filePath] = FileStatus.added;\n });\n mergeResults.deletedConflictFiles.forEach((file) => {\n if (!file.fsFile) return;\n const filePath: PathOsBased = path.normalize(file.filePath);\n if (modifiedFiles.find((m) => m.relative === filePath)) return;\n modifiedFiles.push(file.fsFile);\n filesStatus[file.filePath] = FileStatus.added;\n });\n mergeResults.removeFiles.forEach((file) => {\n const filePath: PathOsBased = path.normalize(file.filePath);\n filesStatus[file.filePath] = FileStatus.removed;\n modifiedFiles = modifiedFiles.filter((f) => f.relative !== filePath);\n });\n mergeResults.remainDeletedFiles.forEach((file) => {\n const filePath: PathOsBased = path.normalize(file.filePath);\n modifiedFiles = modifiedFiles.filter((f) => f.relative !== filePath);\n filesStatus[file.filePath] = FileStatus.remainDeleted;\n });\n mergeResults.deletedConflictFiles.forEach((file) => {\n filesStatus[file.filePath] = FileStatus.deletedConflict;\n });\n\n mergeResults.overrideFiles.forEach((file) => {\n const filePath: PathOsBased = path.normalize(file.filePath);\n const foundFile = modifiedFiles.find((componentFile) => componentFile.relative === filePath);\n if (!foundFile) throw new GeneralError(`file ${filePath} not found`);\n foundFile.contents = file.fsFile.contents;\n filesStatus[file.filePath] = FileStatus.overridden;\n });\n mergeResults.updatedFiles.forEach((file) => {\n const filePath: PathOsBased = path.normalize(file.filePath);\n const foundFile = modifiedFiles.find((componentFile) => componentFile.relative === filePath);\n if (!foundFile) throw new GeneralError(`file ${filePath} not found`);\n foundFile.contents = file.content;\n filesStatus[file.filePath] = FileStatus.updated;\n });\n\n return { filesStatus, modifiedFiles };\n}\n\n/**\n * when files exist on the filesystem but not on the checked out versions, they need to be deleted.\n * this function only mark them as such. later `deleteFilesIfNeeded()` will delete them\n */\nexport function markFilesToBeRemovedIfNeeded(\n succeededComponents: ComponentStatus[],\n componentsResults: ApplyVersionWithComps[]\n) {\n const succeededComponentsByBitId: { [K in string]: ComponentStatus } = succeededComponents.reduce((accum, next) => {\n const bitId = next.id.toString();\n if (!accum[bitId]) accum[bitId] = next;\n return accum;\n }, {});\n\n componentsResults.forEach((componentResult) => {\n const existingFilePathsFromModel = componentResult.applyVersionResult.filesStatus;\n const bitId = componentResult.applyVersionResult.id.toString();\n const succeededComponent = succeededComponentsByBitId[bitId];\n const filePathsFromFS = succeededComponent.componentFromFS?.files || [];\n\n filePathsFromFS.forEach((file) => {\n const filename = pathNormalizeToLinux(file.relative);\n if (!existingFilePathsFromModel[filename]) {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n existingFilePathsFromModel[filename] = FileStatus.removed;\n }\n });\n });\n}\n\n/**\n * it's needed in case the checked out version removed files that exist on the current version.\n * without this function, these files would be left on the filesystem.\n */\nexport async function deleteFilesIfNeeded(\n componentsResults: ApplyVersionWithComps[],\n consumer: Consumer\n): Promise<void> {\n const pathsToRemoveIncludeNull = componentsResults.map((compResult) => {\n return Object.keys(compResult.applyVersionResult.filesStatus).map((filePath) => {\n if (compResult.applyVersionResult.filesStatus[filePath] === FileStatus.removed) {\n if (!compResult.component?.writtenPath) return null;\n return path.join(compResult.component?.writtenPath, filePath);\n }\n return null;\n });\n });\n const pathsToRemove = compact(pathsToRemoveIncludeNull.flat());\n const dataToPersist = new DataToPersist();\n dataToPersist.removeManyPaths(pathsToRemove.map((p) => new RemovePath(p, true)));\n dataToPersist.addBasePath(consumer.getPath());\n await dataToPersist.persistAllToFS();\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["applyVersion","consumer","id","componentFromFS","mergeResults","checkoutProps","isLane","Error","toString","mergeStrategy","filesStatus","hasConflicts","MergeOptions","ours","files","forEach","file","pathNormalizeToLinux","relative","FileStatus","unchanged","bitMap","updateComponentId","applyVersionResult","component","loadComponentFromModelImportIfNeeded","componentMap","GeneralError","updated","modifiedStatus","modifiedFiles","applyModifiedVersion","componentFiles","map","clone","manual","filePath","path","normalize","foundFile","find","componentFile","conflict","contents","Buffer","from","output","merged","isBinaryConflict","fsFile","binaryConflict","addFiles","m","push","added","deletedConflictFiles","removeFiles","removed","filter","f","remainDeletedFiles","remainDeleted","deletedConflict","overrideFiles","overridden","updatedFiles","content","markFilesToBeRemovedIfNeeded","succeededComponents","componentsResults","succeededComponentsByBitId","reduce","accum","current","bitId","toStringWithoutVersion","componentResult","existingFilePathsFromModel","succeededComponent","filePathsFromFS","currentComponent","filename","deleteFilesIfNeeded","workspace","pathsToRemoveIncludeNull","compResult","Object","keys","compDir","writtenPath","rootDir","join","pathsToRemove","compact","flat","dataToPersist","DataToPersist","removeManyPaths","p","RemovePath","addBasePath","persistAllToFS"],"sources":["checkout-version.ts"],"sourcesContent":["import { compact } from 'lodash';\nimport * as path from 'path';\nimport { Consumer } from '@teambit/legacy/dist/consumer';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport GeneralError from '@teambit/legacy/dist/error/general-error';\nimport Version from '@teambit/legacy/dist/scope/models/version';\nimport { SourceFile } from '@teambit/legacy/dist/consumer/component/sources';\nimport { pathNormalizeToLinux, PathOsBased } from '@teambit/legacy/dist/utils/path';\nimport DataToPersist from '@teambit/legacy/dist/consumer/component/sources/data-to-persist';\nimport RemovePath from '@teambit/legacy/dist/consumer/component/sources/remove-path';\nimport {\n ApplyVersionResult,\n FileStatus,\n MergeOptions,\n MergeStrategy,\n} from '@teambit/legacy/dist/consumer/versions-ops/merge-version';\nimport { MergeResultsThreeWay } from '@teambit/legacy/dist/consumer/versions-ops/merge-version/three-way-merge';\nimport ConsumerComponent from '@teambit/legacy/dist/consumer/component';\nimport { Workspace } from '@teambit/workspace';\n\nexport type CheckoutProps = {\n version?: string; // if reset is true, the version is undefined\n ids?: BitId[];\n latestVersion?: boolean;\n promptMergeOptions?: boolean;\n mergeStrategy?: MergeStrategy | null;\n verbose?: boolean;\n skipNpmInstall?: boolean;\n ignorePackageJson?: boolean;\n writeConfig?: boolean;\n reset?: boolean; // remove local changes. if set, the version is undefined.\n all?: boolean; // checkout all ids\n ignoreDist?: boolean;\n isLane?: boolean;\n};\n\nexport type ComponentStatusBase = {\n currentComponent?: ConsumerComponent;\n componentFromModel?: Version;\n id: BitId;\n shouldBeRemoved?: boolean; // in case the component is soft-removed, it should be removed from the workspace\n};\n\nexport type ComponentStatus = ComponentStatusBase & {\n failureMessage?: string;\n unchangedLegitimately?: boolean; // failed to checkout but for a legitimate reason, such as, up-to-date\n mergeResults?: MergeResultsThreeWay | null | undefined;\n};\n\nexport type ApplyVersionWithComps = { applyVersionResult: ApplyVersionResult; component?: ConsumerComponent };\n\n/**\n * 1) when the files are modified with conflicts and the strategy is \"ours\", leave the FS as is\n * and update only bitmap id version. (not the componentMap object).\n *\n * 2) when the files are modified with conflicts and the strategy is \"theirs\", write the component\n * according to id.version.\n *\n * 3) when files are modified with no conflict or files are modified with conflicts and the\n * strategy is manual, load the component according to id.version and update component.files.\n * applyModifiedVersion() docs explains what files are updated/added.\n *\n * 4) when --reset flag is used, write the component according to the bitmap version\n *\n * Side note:\n * Deleted file => if files are in used version but not in the modified one, no need to delete it. (similar to git).\n * Added file => if files are not in used version but in the modified one, they'll be under mergeResults.addFiles\n */\nexport async function applyVersion(\n consumer: Consumer,\n id: BitId,\n componentFromFS: ConsumerComponent | null | undefined, // it can be null only when isLanes is true\n mergeResults: MergeResultsThreeWay | null | undefined,\n checkoutProps: CheckoutProps\n): Promise<ApplyVersionWithComps> {\n if (!checkoutProps.isLane && !componentFromFS)\n throw new Error(`applyVersion expect to get componentFromFS for ${id.toString()}`);\n const { mergeStrategy } = checkoutProps;\n let filesStatus = {};\n if (mergeResults && mergeResults.hasConflicts && mergeStrategy === MergeOptions.ours) {\n // even when isLane is true, the mergeResults is possible only when the component is on the filesystem\n // otherwise it's impossible to have conflicts\n if (!componentFromFS) throw new Error(`applyVersion expect to get componentFromFS for ${id.toString()}`);\n componentFromFS.files.forEach((file) => {\n filesStatus[pathNormalizeToLinux(file.relative)] = FileStatus.unchanged;\n });\n consumer.bitMap.updateComponentId(id);\n return { applyVersionResult: { id, filesStatus } };\n }\n const component = await consumer.loadComponentFromModelImportIfNeeded(id);\n const componentMap = componentFromFS && componentFromFS.componentMap;\n if (componentFromFS && !componentMap) throw new GeneralError('applyVersion: componentMap was not found');\n\n const files = component.files;\n files.forEach((file) => {\n filesStatus[pathNormalizeToLinux(file.relative)] = FileStatus.updated;\n });\n if (mergeResults) {\n // update files according to the merge results\n const { filesStatus: modifiedStatus, modifiedFiles } = applyModifiedVersion(files, mergeResults, mergeStrategy);\n filesStatus = { ...filesStatus, ...modifiedStatus };\n component.files = modifiedFiles;\n }\n\n return {\n applyVersionResult: { id, filesStatus },\n component,\n };\n}\n\n/**\n * relevant only when\n * 1) there is no conflict => add files from mergeResults: addFiles, overrideFiles and modifiedFiles.output.\n * 2) there is conflict and mergeStrategy is manual => add files from mergeResults: addFiles, overrideFiles and modifiedFiles.conflict.\n *\n * this function only updates the files content, it doesn't write the files\n */\nexport function applyModifiedVersion(\n componentFiles: SourceFile[],\n mergeResults: MergeResultsThreeWay,\n mergeStrategy: MergeStrategy | null | undefined\n): { filesStatus: Record<string, any>; modifiedFiles: SourceFile[] } {\n let modifiedFiles = componentFiles.map((file) => file.clone());\n const filesStatus = {};\n if (mergeResults.hasConflicts && mergeStrategy !== MergeOptions.manual) {\n return { filesStatus, modifiedFiles };\n }\n mergeResults.modifiedFiles.forEach((file) => {\n const filePath: PathOsBased = path.normalize(file.filePath);\n const foundFile = modifiedFiles.find((componentFile) => componentFile.relative === filePath);\n if (!foundFile) throw new GeneralError(`file ${filePath} not found`);\n if (file.conflict) {\n foundFile.contents = Buffer.from(file.conflict);\n filesStatus[file.filePath] = FileStatus.manual;\n } else if (typeof file.output === 'string') {\n foundFile.contents = Buffer.from(file.output);\n filesStatus[file.filePath] = FileStatus.merged;\n } else if (file.isBinaryConflict) {\n // leave the file as is and notify the user later about it.\n foundFile.contents = file.fsFile.contents;\n filesStatus[file.filePath] = FileStatus.binaryConflict;\n } else {\n throw new GeneralError(`file ${filePath} does not have output nor conflict`);\n }\n });\n\n mergeResults.addFiles.forEach((file) => {\n const filePath: PathOsBased = path.normalize(file.filePath);\n if (modifiedFiles.find((m) => m.relative === filePath)) return;\n modifiedFiles.push(file.fsFile);\n filesStatus[file.filePath] = FileStatus.added;\n });\n mergeResults.deletedConflictFiles.forEach((file) => {\n if (!file.fsFile) return;\n const filePath: PathOsBased = path.normalize(file.filePath);\n if (modifiedFiles.find((m) => m.relative === filePath)) return;\n modifiedFiles.push(file.fsFile);\n filesStatus[file.filePath] = FileStatus.added;\n });\n mergeResults.removeFiles.forEach((file) => {\n const filePath: PathOsBased = path.normalize(file.filePath);\n filesStatus[file.filePath] = FileStatus.removed;\n modifiedFiles = modifiedFiles.filter((f) => f.relative !== filePath);\n });\n mergeResults.remainDeletedFiles.forEach((file) => {\n const filePath: PathOsBased = path.normalize(file.filePath);\n modifiedFiles = modifiedFiles.filter((f) => f.relative !== filePath);\n filesStatus[file.filePath] = FileStatus.remainDeleted;\n });\n mergeResults.deletedConflictFiles.forEach((file) => {\n filesStatus[file.filePath] = FileStatus.deletedConflict;\n });\n\n mergeResults.overrideFiles.forEach((file) => {\n const filePath: PathOsBased = path.normalize(file.filePath);\n const foundFile = modifiedFiles.find((componentFile) => componentFile.relative === filePath);\n if (!foundFile) throw new GeneralError(`file ${filePath} not found`);\n foundFile.contents = file.fsFile.contents;\n filesStatus[file.filePath] = FileStatus.overridden;\n });\n mergeResults.updatedFiles.forEach((file) => {\n const filePath: PathOsBased = path.normalize(file.filePath);\n const foundFile = modifiedFiles.find((componentFile) => componentFile.relative === filePath);\n if (!foundFile) throw new GeneralError(`file ${filePath} not found`);\n foundFile.contents = file.content;\n filesStatus[file.filePath] = FileStatus.updated;\n });\n\n return { filesStatus, modifiedFiles };\n}\n\n/**\n * when files exist on the filesystem but not on the checked out versions, they need to be deleted.\n * this function only mark them as such. later `deleteFilesIfNeeded()` will delete them\n */\nexport function markFilesToBeRemovedIfNeeded(\n succeededComponents: ComponentStatus[],\n componentsResults: ApplyVersionWithComps[]\n) {\n const succeededComponentsByBitId: {\n [K in string]: ComponentStatus;\n } = succeededComponents.reduce((accum, current) => {\n const bitId = current.id.toStringWithoutVersion();\n if (!accum[bitId]) accum[bitId] = current;\n return accum;\n }, {});\n\n componentsResults.forEach((componentResult) => {\n const existingFilePathsFromModel = componentResult.applyVersionResult.filesStatus;\n const bitId = componentResult.applyVersionResult.id.toStringWithoutVersion();\n const succeededComponent = succeededComponentsByBitId[bitId];\n const filePathsFromFS = succeededComponent.currentComponent?.files || [];\n\n filePathsFromFS.forEach((file) => {\n const filename = pathNormalizeToLinux(file.relative);\n if (!existingFilePathsFromModel[filename]) {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n existingFilePathsFromModel[filename] = FileStatus.removed;\n }\n });\n });\n}\n\n/**\n * it's needed in case the checked out version removed files that exist on the current version.\n * without this function, these files would be left on the filesystem.\n */\nexport async function deleteFilesIfNeeded(\n componentsResults: ApplyVersionWithComps[],\n workspace: Workspace\n): Promise<void> {\n const pathsToRemoveIncludeNull = componentsResults.map((compResult) => {\n return Object.keys(compResult.applyVersionResult.filesStatus).map((filePath) => {\n if (compResult.applyVersionResult.filesStatus[filePath] === FileStatus.removed) {\n if (!compResult.component) return null;\n const compDir = compResult.component.writtenPath || compResult.component.componentMap?.rootDir;\n if (!compDir) return null;\n return path.join(compDir, filePath);\n }\n return null;\n });\n });\n const pathsToRemove = compact(pathsToRemoveIncludeNull.flat());\n const dataToPersist = new DataToPersist();\n dataToPersist.removeManyPaths(pathsToRemove.map((p) => new RemovePath(p, true)));\n dataToPersist.addBasePath(workspace.path);\n await dataToPersist.persistAllToFS();\n}\n"],"mappings":"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"}
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import { CLIMain } from '@teambit/cli';
|
|
2
2
|
import { Logger, LoggerMain } from '@teambit/logger';
|
|
3
3
|
import { Workspace } from '@teambit/workspace';
|
|
4
|
-
import { BitId } from '@teambit/legacy-bit-id';
|
|
5
4
|
import { RemoveMain } from '@teambit/remove';
|
|
6
5
|
import { ApplyVersionResults } from '@teambit/merging';
|
|
7
6
|
import { ImporterMain } from '@teambit/importer';
|
|
8
7
|
import { ComponentWriterMain } from '@teambit/component-writer';
|
|
9
8
|
import { MergeStrategy } from '@teambit/legacy/dist/consumer/versions-ops/merge-version';
|
|
10
|
-
import {
|
|
11
|
-
import ConsumerComponent from '@teambit/legacy/dist/consumer/component';
|
|
9
|
+
import { ModelComponent } from '@teambit/legacy/dist/scope/models';
|
|
12
10
|
import { ComponentID } from '@teambit/component-id';
|
|
11
|
+
import { ComponentStatusBase } from './checkout-version';
|
|
13
12
|
export declare type CheckoutProps = {
|
|
14
13
|
version?: string;
|
|
15
14
|
ids?: ComponentID[];
|
|
@@ -26,13 +25,9 @@ export declare type CheckoutProps = {
|
|
|
26
25
|
versionPerId?: ComponentID[];
|
|
27
26
|
skipUpdatingBitmap?: boolean;
|
|
28
27
|
};
|
|
29
|
-
export declare type ComponentStatusBeforeMergeAttempt = {
|
|
30
|
-
componentFromFS?: ConsumerComponent;
|
|
31
|
-
componentFromModel?: Version;
|
|
32
|
-
id: BitId;
|
|
28
|
+
export declare type ComponentStatusBeforeMergeAttempt = ComponentStatusBase & {
|
|
33
29
|
failureMessage?: string;
|
|
34
30
|
unchangedLegitimately?: boolean;
|
|
35
|
-
shouldBeRemoved?: boolean;
|
|
36
31
|
propsForMerge?: {
|
|
37
32
|
currentlyUsedVersion: string;
|
|
38
33
|
componentModel: ModelComponent;
|
|
@@ -222,7 +222,7 @@ class CheckoutMain {
|
|
|
222
222
|
});
|
|
223
223
|
const componentsResults = await (0, _pMapSeries().default)(succeededComponents, ({
|
|
224
224
|
id,
|
|
225
|
-
componentFromFS,
|
|
225
|
+
currentComponent: componentFromFS,
|
|
226
226
|
mergeResults
|
|
227
227
|
}) => {
|
|
228
228
|
return (0, _checkoutVersion().applyVersion)(consumer, id, componentFromFS, mergeResults, checkoutPropsLegacy);
|
|
@@ -250,7 +250,7 @@ class CheckoutMain {
|
|
|
250
250
|
skipUpdatingBitMap: checkoutProps.skipUpdatingBitmap
|
|
251
251
|
};
|
|
252
252
|
componentWriterResults = await this.componentWriter.writeMany(manyComponentsWriterOpts);
|
|
253
|
-
await (0, _checkoutVersion().deleteFilesIfNeeded)(componentsResults,
|
|
253
|
+
await (0, _checkoutVersion().deleteFilesIfNeeded)(componentsResults, this.workspace);
|
|
254
254
|
}
|
|
255
255
|
const appliedVersionComponents = componentsResults.map(c => c.applyVersionResult);
|
|
256
256
|
const componentIdsToRemove = allComponentsStatus.filter(componentStatus => componentStatus.shouldBeRemoved).map(c => c.id.changeVersion(undefined));
|
|
@@ -430,7 +430,7 @@ class CheckoutMain {
|
|
|
430
430
|
// if the component is not modified, no need to try merge the files, they will be written later on according to the
|
|
431
431
|
// checked out version. same thing when no version is specified, it'll be reset to the model-version later.
|
|
432
432
|
return {
|
|
433
|
-
|
|
433
|
+
currentComponent: component,
|
|
434
434
|
componentFromModel: componentVersion,
|
|
435
435
|
id: newId
|
|
436
436
|
};
|
|
@@ -440,14 +440,14 @@ class CheckoutMain {
|
|
|
440
440
|
componentModel
|
|
441
441
|
};
|
|
442
442
|
return {
|
|
443
|
-
|
|
443
|
+
currentComponent: component,
|
|
444
444
|
componentFromModel: componentVersion,
|
|
445
445
|
id: newId,
|
|
446
446
|
propsForMerge
|
|
447
447
|
};
|
|
448
448
|
}
|
|
449
449
|
async getMergeStatus({
|
|
450
|
-
componentFromFS,
|
|
450
|
+
currentComponent: componentFromFS,
|
|
451
451
|
componentFromModel,
|
|
452
452
|
id,
|
|
453
453
|
propsForMerge
|
|
@@ -482,7 +482,7 @@ class CheckoutMain {
|
|
|
482
482
|
baseComponent
|
|
483
483
|
});
|
|
484
484
|
return {
|
|
485
|
-
componentFromFS,
|
|
485
|
+
currentComponent: componentFromFS,
|
|
486
486
|
componentFromModel,
|
|
487
487
|
id,
|
|
488
488
|
mergeResults
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CheckoutMain","constructor","workspace","logger","componentWriter","importer","remove","checkout","checkoutProps","consumer","version","ids","promptMergeOptions","syncNewComponents","bitIds","BitIds","fromArray","map","id","_legacy","components","loadComponents","allComponentStatusBeforeMerge","Promise","all","component","getComponentStatusBeforeMergeAttempt","compsNeedMerge","filter","c","propsForMerge","compsNotNeedMerge","toImport","compStatus","idsToImport","push","changeVersion","currentlyUsedVersion","flat","scope","legacyScope","scopeImporter","importManyIfMissingWithoutDeps","getComponentsStatusOfMergeNeeded","tmp","Tmp","afterMergeAttempt","getMergeStatus","clear","err","compStatusMergeNeeded","allComponentsStatus","componentWithConflict","find","mergeResults","hasConflicts","mergeStrategy","GeneralError","toStringWithoutVersion","getMergeStrategyInteractive","failedComponents","componentStatus","failureMessage","shouldBeRemoved","unchangedLegitimately","succeededComponents","checkoutPropsLegacy","componentsResults","mapSeries","componentFromFS","applyVersion","markFilesToBeRemovedIfNeeded","componentsLegacy","compact","newFromLane","newFromLaneAdded","head","getNewComponentsFromLane","workspaceOnly","compsNewFromLane","loadComponentFromModelImportIfNeeded","leftUnresolvedConflicts","componentWriterResults","length","manyComponentsWriterOpts","skipDependencyInstallation","skipNpmInstall","verbose","resetConfig","reset","skipUpdatingBitMap","skipUpdatingBitmap","writeMany","deleteFilesIfNeeded","appliedVersionComponents","applyVersionResult","componentIdsToRemove","undefined","removeLocallyByIds","force","removedComponents","n","toString","installationError","compilationError","checkoutByCLIValues","to","componentPattern","setStatusLine","BEFORE_CHECKOUT","OutsideWorkspaceError","importCurrentObjects","makeLaneComponentsAvailableOnMain","parseValues","checkoutResults","onDestroy","notExported","hasScope","changeScope","scopeComponentsImporter","importWithoutDeps","toVersionLatest","cache","error","unavailableOnMain","getUnavailableOnMainComponents","bitMap","makeComponentsAvailableOnMain","HEAD","LATEST","latest","BitId","isValidVersion","BitError","console","idsOnWorkspace","idsByPattern","listIds","currentLane","getCurrentLaneObject","currentLaneIds","toBitIds","hasWithoutVersion","lane","laneBitIds","newIds","bitId","isEqualWithoutVersion","newComponentIds","resolveMultipleComponentIds","nonRemovedNewIds","isRemoved","isComponentRemoved","headVersion","latestVersion","versionPerId","repo","objects","componentModel","getModelComponentIfExist","returnFailure","msg","unmerged","unmergedComponents","getEntry","name","getNewVersion","headIncludeRemote","newVersion","hasVersion","existingBitMapId","getBitId","ignoreVersion","divergeDataForMergePending","getDivergeDataForMergePending","isMergePending","isDiverged","currentVersionObject","loadVersion","isModified","isComponentModified","versionRef","getRef","Error","componentVersion","getObject","hash","newId","componentFromModel","baseVersion","baseComponent","otherComponent","threeWayMerge","otherLabel","currentComponent","currentLabel","provider","cli","loggerMain","compWriter","createLogger","CheckoutAspect","checkoutMain","register","CheckoutCmd","CLIAspect","WorkspaceAspect","LoggerAspect","ComponentWriterAspect","ImporterAspect","RemoveAspect","MainRuntime","addRuntime"],"sources":["checkout.main.runtime.ts"],"sourcesContent":["import { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport WorkspaceAspect, { OutsideWorkspaceError, Workspace } from '@teambit/workspace';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport { BitError } from '@teambit/bit-error';\nimport { compact } from 'lodash';\nimport { BEFORE_CHECKOUT } from '@teambit/legacy/dist/cli/loader/loader-messages';\nimport RemoveAspect, { RemoveMain } from '@teambit/remove';\nimport { ApplyVersionResults } from '@teambit/merging';\nimport ImporterAspect, { ImporterMain } from '@teambit/importer';\nimport { HEAD, LATEST } from '@teambit/legacy/dist/constants';\nimport { ComponentWriterAspect, ComponentWriterMain } from '@teambit/component-writer';\nimport {\n FailedComponents,\n getMergeStrategyInteractive,\n MergeStrategy,\n threeWayMerge,\n} from '@teambit/legacy/dist/consumer/versions-ops/merge-version';\nimport GeneralError from '@teambit/legacy/dist/error/general-error';\nimport mapSeries from 'p-map-series';\nimport { BitIds } from '@teambit/legacy/dist/bit-id';\nimport { Version, ModelComponent } from '@teambit/legacy/dist/scope/models';\nimport { Tmp } from '@teambit/legacy/dist/scope/repositories';\nimport ConsumerComponent from '@teambit/legacy/dist/consumer/component';\nimport { ComponentID } from '@teambit/component-id';\nimport { CheckoutCmd } from './checkout-cmd';\nimport { CheckoutAspect } from './checkout.aspect';\nimport { applyVersion, markFilesToBeRemovedIfNeeded, ComponentStatus, deleteFilesIfNeeded } from './checkout-version';\n\nexport type CheckoutProps = {\n version?: string; // if reset/head/latest is true, the version is undefined\n ids?: ComponentID[];\n head?: boolean;\n latest?: boolean;\n promptMergeOptions?: boolean;\n mergeStrategy?: MergeStrategy | null;\n verbose?: boolean;\n skipNpmInstall?: boolean;\n reset?: boolean; // remove local changes. if set, the version is undefined.\n all?: boolean; // checkout all ids\n isLane?: boolean;\n workspaceOnly?: boolean;\n versionPerId?: ComponentID[]; // if given, the ComponentID.version is the version to checkout to.\n skipUpdatingBitmap?: boolean; // needed for stash\n};\n\nexport type ComponentStatusBeforeMergeAttempt = {\n componentFromFS?: ConsumerComponent;\n componentFromModel?: Version;\n id: BitId;\n failureMessage?: string;\n unchangedLegitimately?: boolean; // failed to checkout but for a legitimate reason, such as, up-to-date\n shouldBeRemoved?: boolean; // in case the component is soft-removed, it should be removed from the workspace\n propsForMerge?: {\n currentlyUsedVersion: string;\n componentModel: ModelComponent;\n };\n};\n\ntype CheckoutTo = 'head' | 'reset' | string;\n\nexport class CheckoutMain {\n constructor(\n private workspace: Workspace,\n private logger: Logger,\n private componentWriter: ComponentWriterMain,\n private importer: ImporterMain,\n private remove: RemoveMain\n ) {}\n\n async checkout(checkoutProps: CheckoutProps): Promise<ApplyVersionResults> {\n const consumer = this.workspace.consumer;\n const { version, ids, promptMergeOptions } = checkoutProps;\n await this.syncNewComponents(checkoutProps);\n const bitIds = BitIds.fromArray(ids?.map((id) => id._legacy) || []);\n const { components } = await consumer.loadComponents(bitIds);\n\n const allComponentStatusBeforeMerge = await Promise.all(\n components.map((component) => this.getComponentStatusBeforeMergeAttempt(component, checkoutProps))\n );\n const compsNeedMerge = allComponentStatusBeforeMerge.filter((c) => c.propsForMerge);\n const compsNotNeedMerge = allComponentStatusBeforeMerge.filter((c) => !c.propsForMerge) as ComponentStatus[];\n\n // in case the requested versions to checkout don't exist locally, import them.\n const toImport = allComponentStatusBeforeMerge\n .map((compStatus) => {\n const idsToImport = [compStatus.id];\n if (compStatus.propsForMerge) {\n idsToImport.push(compStatus.id.changeVersion(compStatus.propsForMerge.currentlyUsedVersion));\n }\n return idsToImport;\n })\n .flat();\n await this.workspace.scope.legacyScope.scopeImporter.importManyIfMissingWithoutDeps({\n ids: BitIds.fromArray(toImport),\n });\n\n const getComponentsStatusOfMergeNeeded = async (): Promise<ComponentStatus[]> => {\n const tmp = new Tmp(consumer.scope);\n try {\n const afterMergeAttempt = await Promise.all(compsNeedMerge.map((c) => this.getMergeStatus(c)));\n await tmp.clear();\n return afterMergeAttempt;\n } catch (err: any) {\n await tmp.clear();\n throw err;\n }\n };\n\n const compStatusMergeNeeded = await getComponentsStatusOfMergeNeeded();\n\n const allComponentsStatus: ComponentStatus[] = [...compStatusMergeNeeded, ...compsNotNeedMerge];\n const componentWithConflict = allComponentsStatus.find(\n (component) => component.mergeResults && component.mergeResults.hasConflicts\n );\n if (componentWithConflict) {\n if (!promptMergeOptions && !checkoutProps.mergeStrategy) {\n throw new GeneralError(\n `automatic merge has failed for component ${componentWithConflict.id.toStringWithoutVersion()}.\\nplease use \"--manual\" to manually merge changes or use \"--theirs / --ours\" to choose one of the conflicted versions`\n );\n }\n if (!checkoutProps.mergeStrategy) checkoutProps.mergeStrategy = await getMergeStrategyInteractive();\n }\n const failedComponents: FailedComponents[] = allComponentsStatus\n .filter((componentStatus) => componentStatus.failureMessage)\n .filter((componentStatus) => !componentStatus.shouldBeRemoved)\n .map((componentStatus) => ({\n id: componentStatus.id,\n failureMessage: componentStatus.failureMessage as string,\n unchangedLegitimately: componentStatus.unchangedLegitimately,\n }));\n\n const succeededComponents = allComponentsStatus.filter((componentStatus) => !componentStatus.failureMessage);\n // do not use Promise.all for applyVersion. otherwise, it'll write all components in parallel,\n // which can be an issue when some components are also dependencies of others\n const checkoutPropsLegacy = { ...checkoutProps, ids: checkoutProps.ids?.map((id) => id._legacy) };\n const componentsResults = await mapSeries(succeededComponents, ({ id, componentFromFS, mergeResults }) => {\n return applyVersion(consumer, id, componentFromFS, mergeResults, checkoutPropsLegacy);\n });\n\n markFilesToBeRemovedIfNeeded(succeededComponents, componentsResults);\n\n const componentsLegacy = compact(componentsResults.map((c) => c.component));\n\n let newFromLane: ComponentID[] | undefined;\n let newFromLaneAdded = false;\n if (checkoutProps.head) {\n newFromLane = await this.getNewComponentsFromLane(checkoutProps.ids || []);\n if (!checkoutProps.workspaceOnly) {\n const compsNewFromLane = await Promise.all(\n newFromLane.map((id) => consumer.loadComponentFromModelImportIfNeeded(id._legacy))\n );\n componentsLegacy.push(...compsNewFromLane);\n newFromLaneAdded = true;\n }\n }\n\n const leftUnresolvedConflicts = componentWithConflict && checkoutProps.mergeStrategy === 'manual';\n let componentWriterResults;\n if (componentsLegacy.length) {\n const manyComponentsWriterOpts = {\n components: componentsLegacy,\n skipDependencyInstallation: checkoutProps.skipNpmInstall || leftUnresolvedConflicts,\n verbose: checkoutProps.verbose,\n resetConfig: checkoutProps.reset,\n skipUpdatingBitMap: checkoutProps.skipUpdatingBitmap,\n };\n componentWriterResults = await this.componentWriter.writeMany(manyComponentsWriterOpts);\n await deleteFilesIfNeeded(componentsResults, consumer);\n }\n\n const appliedVersionComponents = componentsResults.map((c) => c.applyVersionResult);\n\n const componentIdsToRemove = allComponentsStatus\n .filter((componentStatus) => componentStatus.shouldBeRemoved)\n .map((c) => c.id.changeVersion(undefined));\n\n if (componentIdsToRemove.length) {\n await this.remove.removeLocallyByIds(componentIdsToRemove, { force: true });\n }\n\n return {\n components: appliedVersionComponents,\n removedComponents: componentIdsToRemove,\n version,\n failedComponents,\n leftUnresolvedConflicts,\n newFromLane: newFromLane?.map((n) => n.toString()),\n newFromLaneAdded,\n installationError: componentWriterResults?.installationError,\n compilationError: componentWriterResults?.compilationError,\n };\n }\n\n async checkoutByCLIValues(\n to: CheckoutTo,\n componentPattern: string,\n checkoutProps: CheckoutProps\n ): Promise<ApplyVersionResults> {\n this.logger.setStatusLine(BEFORE_CHECKOUT);\n if (!this.workspace) throw new OutsideWorkspaceError();\n const consumer = this.workspace.consumer;\n await this.importer.importCurrentObjects(); // important. among others, it fetches the remote lane object and its new components.\n if (to === 'head') await this.makeLaneComponentsAvailableOnMain();\n await this.parseValues(to, componentPattern, checkoutProps);\n const checkoutResults = await this.checkout(checkoutProps);\n await consumer.onDestroy();\n return checkoutResults;\n }\n\n private async syncNewComponents({ ids, head }: CheckoutProps) {\n if (!head) return;\n const notExported = ids?.filter((id) => !id._legacy.hasScope()).map((id) => id._legacy.changeScope(id.scope));\n const scopeComponentsImporter = this.workspace.consumer.scope.scopeImporter;\n try {\n await scopeComponentsImporter.importWithoutDeps(BitIds.fromArray(notExported || []).toVersionLatest(), {\n cache: false,\n });\n } catch (err) {\n // don't stop the process. it's possible that the scope doesn't exist yet because these are new components\n this.logger.error(`unable to sync new components, if these components are really new, ignore the error`, err);\n }\n }\n\n private async makeLaneComponentsAvailableOnMain() {\n const unavailableOnMain = await this.workspace.getUnavailableOnMainComponents();\n if (!unavailableOnMain.length) return;\n this.workspace.bitMap.makeComponentsAvailableOnMain(unavailableOnMain);\n }\n\n private async parseValues(to: CheckoutTo, componentPattern: string, checkoutProps: CheckoutProps) {\n if (to === HEAD) checkoutProps.head = true;\n else if (to === LATEST) checkoutProps.latest = true;\n else if (to === 'reset') checkoutProps.reset = true;\n else {\n if (!BitId.isValidVersion(to)) throw new BitError(`the specified version \"${to}\" is not a valid version`);\n checkoutProps.version = to;\n }\n if (checkoutProps.head && !componentPattern) {\n if (checkoutProps.all) {\n this.logger.console(`\"--all\" is deprecated for \"bit checkout ${HEAD}\", please omit it.`);\n }\n checkoutProps.all = true;\n }\n if (checkoutProps.latest && !componentPattern) {\n if (checkoutProps.all) {\n this.logger.console(`\"--all\" is deprecated for \"bit checkout ${LATEST}\", please omit it.`);\n }\n checkoutProps.all = true;\n }\n if (componentPattern && checkoutProps.all) {\n throw new GeneralError('please specify either [component-pattern] or --all, not both');\n }\n if (!componentPattern && !checkoutProps.all) {\n throw new GeneralError('please specify [component-pattern] or use --all flag');\n }\n if (checkoutProps.workspaceOnly && !checkoutProps.head) {\n throw new BitError(`--workspace-only flag can only be used with \"head\" (bit checkout head --workspace-only)`);\n }\n const idsOnWorkspace = componentPattern\n ? await this.workspace.idsByPattern(componentPattern)\n : await this.workspace.listIds();\n const currentLane = await this.workspace.consumer.getCurrentLaneObject();\n const currentLaneIds = currentLane?.toBitIds();\n const ids = currentLaneIds\n ? idsOnWorkspace.filter((id) => currentLaneIds.hasWithoutVersion(id._legacy))\n : idsOnWorkspace;\n checkoutProps.ids = ids.map((id) => (checkoutProps.head || checkoutProps.latest ? id.changeVersion(LATEST) : id));\n }\n\n private async getNewComponentsFromLane(ids: ComponentID[]): Promise<ComponentID[]> {\n // current lane object is up to date due to the previous `importCurrentObjects()` call\n const lane = await this.workspace.consumer.getCurrentLaneObject();\n if (!lane) {\n return [];\n }\n const laneBitIds = lane.toBitIds();\n const newIds = laneBitIds.filter((bitId) => !ids.find((id) => id._legacy.isEqualWithoutVersion(bitId)));\n const newComponentIds = await this.workspace.resolveMultipleComponentIds(newIds);\n const nonRemovedNewIds: ComponentID[] = [];\n await Promise.all(\n newComponentIds.map(async (id) => {\n const isRemoved = await this.workspace.scope.isComponentRemoved(id);\n if (!isRemoved) nonRemovedNewIds.push(id);\n })\n );\n return nonRemovedNewIds;\n }\n\n private async getComponentStatusBeforeMergeAttempt(\n component: ConsumerComponent,\n checkoutProps: CheckoutProps\n ): Promise<ComponentStatusBeforeMergeAttempt> {\n const consumer = this.workspace.consumer;\n const { version, head: headVersion, reset, latest: latestVersion, versionPerId } = checkoutProps;\n const repo = consumer.scope.objects;\n const componentModel = await consumer.scope.getModelComponentIfExist(component.id);\n const componentStatus: ComponentStatusBeforeMergeAttempt = { id: component.id };\n const returnFailure = (msg: string, unchangedLegitimately = false) => {\n componentStatus.failureMessage = msg;\n componentStatus.unchangedLegitimately = unchangedLegitimately;\n return componentStatus;\n };\n if (!componentModel) {\n return returnFailure(`component ${component.id.toString()} is new, no version to checkout`, true);\n }\n const unmerged = repo.unmergedComponents.getEntry(component.name);\n if (!reset && unmerged) {\n return returnFailure(\n `component ${component.id.toStringWithoutVersion()} is in during-merge state, please snap/tag it first (or use bit merge --resolve/--abort)`\n );\n }\n const getNewVersion = async (): Promise<string> => {\n if (reset) return component.id.version as string;\n\n if (headVersion) return componentModel.headIncludeRemote(repo);\n if (latestVersion) return componentModel.latestVersion();\n if (versionPerId)\n return versionPerId.find((id) => id._legacy.isEqualWithoutVersion(component.id))?.version as string;\n\n // @ts-ignore if !reset the version is defined\n return version;\n };\n const newVersion = await getNewVersion();\n if (version && !headVersion) {\n const hasVersion = await componentModel.hasVersion(version, repo);\n if (!hasVersion)\n return returnFailure(`component ${component.id.toStringWithoutVersion()} doesn't have version ${version}`);\n }\n const existingBitMapId = consumer.bitMap.getBitId(component.id, { ignoreVersion: true });\n const currentlyUsedVersion = existingBitMapId.version;\n if (!currentlyUsedVersion) {\n return returnFailure(`component ${component.id.toStringWithoutVersion()} is new`);\n }\n if (version && currentlyUsedVersion === version) {\n // it won't be relevant for 'reset' as it doesn't have a version\n return returnFailure(`component ${component.id.toStringWithoutVersion()} is already at version ${version}`, true);\n }\n if (headVersion && currentlyUsedVersion === newVersion) {\n return returnFailure(\n `component ${component.id.toStringWithoutVersion()} is already at the latest version, which is ${newVersion}`,\n true\n );\n }\n if (!reset) {\n const divergeDataForMergePending = await componentModel.getDivergeDataForMergePending(repo);\n const isMergePending = divergeDataForMergePending.isDiverged();\n if (isMergePending) {\n return returnFailure(`component is merge-pending and cannot be checked out, run \"bit status\" for more info`);\n }\n }\n const currentVersionObject: Version = await componentModel.loadVersion(currentlyUsedVersion, repo);\n const isModified = await consumer.isComponentModified(currentVersionObject, component);\n if (!isModified && reset) {\n return returnFailure(`component ${component.id.toStringWithoutVersion()} is not modified`, true);\n }\n\n const versionRef = componentModel.getRef(newVersion);\n if (!versionRef) throw new Error(`unable to get ref ${newVersion} from ${componentModel.id()}`);\n const componentVersion = (await consumer.scope.getObject(versionRef.hash)) as Version | undefined;\n if (componentVersion?.isRemoved() && existingBitMapId) {\n componentStatus.shouldBeRemoved = true;\n return returnFailure(`component has been removed`, true);\n }\n\n const newId = component.id.changeVersion(newVersion);\n\n if (reset || !isModified) {\n // if the component is not modified, no need to try merge the files, they will be written later on according to the\n // checked out version. same thing when no version is specified, it'll be reset to the model-version later.\n return { componentFromFS: component, componentFromModel: componentVersion, id: newId };\n }\n\n const propsForMerge = {\n currentlyUsedVersion,\n componentModel,\n };\n\n return { componentFromFS: component, componentFromModel: componentVersion, id: newId, propsForMerge };\n }\n\n private async getMergeStatus({\n componentFromFS,\n componentFromModel,\n id,\n propsForMerge,\n }: ComponentStatusBeforeMergeAttempt): Promise<ComponentStatus> {\n if (!propsForMerge) throw new Error(`propsForMerge is missing for ${id.toString()}`);\n if (!componentFromFS) throw new Error(`componentFromFS is missing for ${id.toString()}`);\n const consumer = this.workspace.consumer;\n const repo = consumer.scope.objects;\n const { currentlyUsedVersion, componentModel } = propsForMerge;\n\n // this is tricky. imagine the user is 0.0.2+modification and wants to checkout to 0.0.1.\n // the base is 0.0.1, as it's the common version for 0.0.1 and 0.0.2. however, if we let git merge-file use the 0.0.1\n // as the base, then, it'll get the changes done since 0.0.1 to 0.0.1, which is nothing, and put them on top of\n // 0.0.2+modification. in other words, it won't make any change.\n // this scenario of checking out while there are modified files, is forbidden in Git. here, we want to simulate a similar\n // experience of \"git stash\", then \"git checkout\", then \"git stash pop\". practically, we want the changes done on 0.0.2\n // to be added to 0.0.1\n // if there is no modification, it doesn't go the threeWayMerge anyway, so it doesn't matter what the base is.\n const baseVersion = currentlyUsedVersion;\n const newVersion = id.version as string;\n const baseComponent: Version = await componentModel.loadVersion(baseVersion, repo);\n const otherComponent: Version = await componentModel.loadVersion(newVersion, repo);\n const mergeResults = await threeWayMerge({\n consumer,\n otherComponent,\n otherLabel: newVersion,\n currentComponent: componentFromFS,\n currentLabel: `${currentlyUsedVersion} modified`,\n baseComponent,\n });\n\n return { componentFromFS, componentFromModel, id, mergeResults };\n }\n\n static slots = [];\n static dependencies = [CLIAspect, WorkspaceAspect, LoggerAspect, ComponentWriterAspect, ImporterAspect, RemoveAspect];\n\n static runtime = MainRuntime;\n\n static async provider([cli, workspace, loggerMain, compWriter, importer, remove]: [\n CLIMain,\n Workspace,\n LoggerMain,\n ComponentWriterMain,\n ImporterMain,\n RemoveMain\n ]) {\n const logger = loggerMain.createLogger(CheckoutAspect.id);\n const checkoutMain = new CheckoutMain(workspace, logger, compWriter, importer, remove);\n cli.register(new CheckoutCmd(checkoutMain));\n return checkoutMain;\n }\n}\n\nCheckoutAspect.addRuntime(CheckoutMain);\n\nexport default CheckoutMain;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["CheckoutMain","constructor","workspace","logger","componentWriter","importer","remove","checkout","checkoutProps","consumer","version","ids","promptMergeOptions","syncNewComponents","bitIds","BitIds","fromArray","map","id","_legacy","components","loadComponents","allComponentStatusBeforeMerge","Promise","all","component","getComponentStatusBeforeMergeAttempt","compsNeedMerge","filter","c","propsForMerge","compsNotNeedMerge","toImport","compStatus","idsToImport","push","changeVersion","currentlyUsedVersion","flat","scope","legacyScope","scopeImporter","importManyIfMissingWithoutDeps","getComponentsStatusOfMergeNeeded","tmp","Tmp","afterMergeAttempt","getMergeStatus","clear","err","compStatusMergeNeeded","allComponentsStatus","componentWithConflict","find","mergeResults","hasConflicts","mergeStrategy","GeneralError","toStringWithoutVersion","getMergeStrategyInteractive","failedComponents","componentStatus","failureMessage","shouldBeRemoved","unchangedLegitimately","succeededComponents","checkoutPropsLegacy","componentsResults","mapSeries","currentComponent","componentFromFS","applyVersion","markFilesToBeRemovedIfNeeded","componentsLegacy","compact","newFromLane","newFromLaneAdded","head","getNewComponentsFromLane","workspaceOnly","compsNewFromLane","loadComponentFromModelImportIfNeeded","leftUnresolvedConflicts","componentWriterResults","length","manyComponentsWriterOpts","skipDependencyInstallation","skipNpmInstall","verbose","resetConfig","reset","skipUpdatingBitMap","skipUpdatingBitmap","writeMany","deleteFilesIfNeeded","appliedVersionComponents","applyVersionResult","componentIdsToRemove","undefined","removeLocallyByIds","force","removedComponents","n","toString","installationError","compilationError","checkoutByCLIValues","to","componentPattern","setStatusLine","BEFORE_CHECKOUT","OutsideWorkspaceError","importCurrentObjects","makeLaneComponentsAvailableOnMain","parseValues","checkoutResults","onDestroy","notExported","hasScope","changeScope","scopeComponentsImporter","importWithoutDeps","toVersionLatest","cache","error","unavailableOnMain","getUnavailableOnMainComponents","bitMap","makeComponentsAvailableOnMain","HEAD","LATEST","latest","BitId","isValidVersion","BitError","console","idsOnWorkspace","idsByPattern","listIds","currentLane","getCurrentLaneObject","currentLaneIds","toBitIds","hasWithoutVersion","lane","laneBitIds","newIds","bitId","isEqualWithoutVersion","newComponentIds","resolveMultipleComponentIds","nonRemovedNewIds","isRemoved","isComponentRemoved","headVersion","latestVersion","versionPerId","repo","objects","componentModel","getModelComponentIfExist","returnFailure","msg","unmerged","unmergedComponents","getEntry","name","getNewVersion","headIncludeRemote","newVersion","hasVersion","existingBitMapId","getBitId","ignoreVersion","divergeDataForMergePending","getDivergeDataForMergePending","isMergePending","isDiverged","currentVersionObject","loadVersion","isModified","isComponentModified","versionRef","getRef","Error","componentVersion","getObject","hash","newId","componentFromModel","baseVersion","baseComponent","otherComponent","threeWayMerge","otherLabel","currentLabel","provider","cli","loggerMain","compWriter","createLogger","CheckoutAspect","checkoutMain","register","CheckoutCmd","CLIAspect","WorkspaceAspect","LoggerAspect","ComponentWriterAspect","ImporterAspect","RemoveAspect","MainRuntime","addRuntime"],"sources":["checkout.main.runtime.ts"],"sourcesContent":["import { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport WorkspaceAspect, { OutsideWorkspaceError, Workspace } from '@teambit/workspace';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport { BitError } from '@teambit/bit-error';\nimport { compact } from 'lodash';\nimport { BEFORE_CHECKOUT } from '@teambit/legacy/dist/cli/loader/loader-messages';\nimport RemoveAspect, { RemoveMain } from '@teambit/remove';\nimport { ApplyVersionResults } from '@teambit/merging';\nimport ImporterAspect, { ImporterMain } from '@teambit/importer';\nimport { HEAD, LATEST } from '@teambit/legacy/dist/constants';\nimport { ComponentWriterAspect, ComponentWriterMain } from '@teambit/component-writer';\nimport {\n FailedComponents,\n getMergeStrategyInteractive,\n MergeStrategy,\n threeWayMerge,\n} from '@teambit/legacy/dist/consumer/versions-ops/merge-version';\nimport GeneralError from '@teambit/legacy/dist/error/general-error';\nimport mapSeries from 'p-map-series';\nimport { BitIds } from '@teambit/legacy/dist/bit-id';\nimport { Version, ModelComponent } from '@teambit/legacy/dist/scope/models';\nimport { Tmp } from '@teambit/legacy/dist/scope/repositories';\nimport ConsumerComponent from '@teambit/legacy/dist/consumer/component';\nimport { ComponentID } from '@teambit/component-id';\nimport { CheckoutCmd } from './checkout-cmd';\nimport { CheckoutAspect } from './checkout.aspect';\nimport {\n applyVersion,\n markFilesToBeRemovedIfNeeded,\n ComponentStatus,\n deleteFilesIfNeeded,\n ComponentStatusBase,\n} from './checkout-version';\n\nexport type CheckoutProps = {\n version?: string; // if reset/head/latest is true, the version is undefined\n ids?: ComponentID[];\n head?: boolean;\n latest?: boolean;\n promptMergeOptions?: boolean;\n mergeStrategy?: MergeStrategy | null;\n verbose?: boolean;\n skipNpmInstall?: boolean;\n reset?: boolean; // remove local changes. if set, the version is undefined.\n all?: boolean; // checkout all ids\n isLane?: boolean;\n workspaceOnly?: boolean;\n versionPerId?: ComponentID[]; // if given, the ComponentID.version is the version to checkout to.\n skipUpdatingBitmap?: boolean; // needed for stash\n};\n\nexport type ComponentStatusBeforeMergeAttempt = ComponentStatusBase & {\n failureMessage?: string;\n unchangedLegitimately?: boolean; // failed to checkout but for a legitimate reason, such as, up-to-date\n propsForMerge?: {\n currentlyUsedVersion: string;\n componentModel: ModelComponent;\n };\n};\n\ntype CheckoutTo = 'head' | 'reset' | string;\n\nexport class CheckoutMain {\n constructor(\n private workspace: Workspace,\n private logger: Logger,\n private componentWriter: ComponentWriterMain,\n private importer: ImporterMain,\n private remove: RemoveMain\n ) {}\n\n async checkout(checkoutProps: CheckoutProps): Promise<ApplyVersionResults> {\n const consumer = this.workspace.consumer;\n const { version, ids, promptMergeOptions } = checkoutProps;\n await this.syncNewComponents(checkoutProps);\n const bitIds = BitIds.fromArray(ids?.map((id) => id._legacy) || []);\n const { components } = await consumer.loadComponents(bitIds);\n\n const allComponentStatusBeforeMerge = await Promise.all(\n components.map((component) => this.getComponentStatusBeforeMergeAttempt(component, checkoutProps))\n );\n const compsNeedMerge = allComponentStatusBeforeMerge.filter((c) => c.propsForMerge);\n const compsNotNeedMerge = allComponentStatusBeforeMerge.filter((c) => !c.propsForMerge) as ComponentStatus[];\n\n // in case the requested versions to checkout don't exist locally, import them.\n const toImport = allComponentStatusBeforeMerge\n .map((compStatus) => {\n const idsToImport = [compStatus.id];\n if (compStatus.propsForMerge) {\n idsToImport.push(compStatus.id.changeVersion(compStatus.propsForMerge.currentlyUsedVersion));\n }\n return idsToImport;\n })\n .flat();\n await this.workspace.scope.legacyScope.scopeImporter.importManyIfMissingWithoutDeps({\n ids: BitIds.fromArray(toImport),\n });\n\n const getComponentsStatusOfMergeNeeded = async (): Promise<ComponentStatus[]> => {\n const tmp = new Tmp(consumer.scope);\n try {\n const afterMergeAttempt = await Promise.all(compsNeedMerge.map((c) => this.getMergeStatus(c)));\n await tmp.clear();\n return afterMergeAttempt;\n } catch (err: any) {\n await tmp.clear();\n throw err;\n }\n };\n\n const compStatusMergeNeeded = await getComponentsStatusOfMergeNeeded();\n\n const allComponentsStatus: ComponentStatus[] = [...compStatusMergeNeeded, ...compsNotNeedMerge];\n const componentWithConflict = allComponentsStatus.find(\n (component) => component.mergeResults && component.mergeResults.hasConflicts\n );\n if (componentWithConflict) {\n if (!promptMergeOptions && !checkoutProps.mergeStrategy) {\n throw new GeneralError(\n `automatic merge has failed for component ${componentWithConflict.id.toStringWithoutVersion()}.\\nplease use \"--manual\" to manually merge changes or use \"--theirs / --ours\" to choose one of the conflicted versions`\n );\n }\n if (!checkoutProps.mergeStrategy) checkoutProps.mergeStrategy = await getMergeStrategyInteractive();\n }\n const failedComponents: FailedComponents[] = allComponentsStatus\n .filter((componentStatus) => componentStatus.failureMessage)\n .filter((componentStatus) => !componentStatus.shouldBeRemoved)\n .map((componentStatus) => ({\n id: componentStatus.id,\n failureMessage: componentStatus.failureMessage as string,\n unchangedLegitimately: componentStatus.unchangedLegitimately,\n }));\n\n const succeededComponents = allComponentsStatus.filter((componentStatus) => !componentStatus.failureMessage);\n // do not use Promise.all for applyVersion. otherwise, it'll write all components in parallel,\n // which can be an issue when some components are also dependencies of others\n const checkoutPropsLegacy = { ...checkoutProps, ids: checkoutProps.ids?.map((id) => id._legacy) };\n const componentsResults = await mapSeries(\n succeededComponents,\n ({ id, currentComponent: componentFromFS, mergeResults }) => {\n return applyVersion(consumer, id, componentFromFS, mergeResults, checkoutPropsLegacy);\n }\n );\n\n markFilesToBeRemovedIfNeeded(succeededComponents, componentsResults);\n\n const componentsLegacy = compact(componentsResults.map((c) => c.component));\n\n let newFromLane: ComponentID[] | undefined;\n let newFromLaneAdded = false;\n if (checkoutProps.head) {\n newFromLane = await this.getNewComponentsFromLane(checkoutProps.ids || []);\n if (!checkoutProps.workspaceOnly) {\n const compsNewFromLane = await Promise.all(\n newFromLane.map((id) => consumer.loadComponentFromModelImportIfNeeded(id._legacy))\n );\n componentsLegacy.push(...compsNewFromLane);\n newFromLaneAdded = true;\n }\n }\n\n const leftUnresolvedConflicts = componentWithConflict && checkoutProps.mergeStrategy === 'manual';\n let componentWriterResults;\n if (componentsLegacy.length) {\n const manyComponentsWriterOpts = {\n components: componentsLegacy,\n skipDependencyInstallation: checkoutProps.skipNpmInstall || leftUnresolvedConflicts,\n verbose: checkoutProps.verbose,\n resetConfig: checkoutProps.reset,\n skipUpdatingBitMap: checkoutProps.skipUpdatingBitmap,\n };\n componentWriterResults = await this.componentWriter.writeMany(manyComponentsWriterOpts);\n await deleteFilesIfNeeded(componentsResults, this.workspace);\n }\n\n const appliedVersionComponents = componentsResults.map((c) => c.applyVersionResult);\n\n const componentIdsToRemove = allComponentsStatus\n .filter((componentStatus) => componentStatus.shouldBeRemoved)\n .map((c) => c.id.changeVersion(undefined));\n\n if (componentIdsToRemove.length) {\n await this.remove.removeLocallyByIds(componentIdsToRemove, { force: true });\n }\n\n return {\n components: appliedVersionComponents,\n removedComponents: componentIdsToRemove,\n version,\n failedComponents,\n leftUnresolvedConflicts,\n newFromLane: newFromLane?.map((n) => n.toString()),\n newFromLaneAdded,\n installationError: componentWriterResults?.installationError,\n compilationError: componentWriterResults?.compilationError,\n };\n }\n\n async checkoutByCLIValues(\n to: CheckoutTo,\n componentPattern: string,\n checkoutProps: CheckoutProps\n ): Promise<ApplyVersionResults> {\n this.logger.setStatusLine(BEFORE_CHECKOUT);\n if (!this.workspace) throw new OutsideWorkspaceError();\n const consumer = this.workspace.consumer;\n await this.importer.importCurrentObjects(); // important. among others, it fetches the remote lane object and its new components.\n if (to === 'head') await this.makeLaneComponentsAvailableOnMain();\n await this.parseValues(to, componentPattern, checkoutProps);\n const checkoutResults = await this.checkout(checkoutProps);\n await consumer.onDestroy();\n return checkoutResults;\n }\n\n private async syncNewComponents({ ids, head }: CheckoutProps) {\n if (!head) return;\n const notExported = ids?.filter((id) => !id._legacy.hasScope()).map((id) => id._legacy.changeScope(id.scope));\n const scopeComponentsImporter = this.workspace.consumer.scope.scopeImporter;\n try {\n await scopeComponentsImporter.importWithoutDeps(BitIds.fromArray(notExported || []).toVersionLatest(), {\n cache: false,\n });\n } catch (err) {\n // don't stop the process. it's possible that the scope doesn't exist yet because these are new components\n this.logger.error(`unable to sync new components, if these components are really new, ignore the error`, err);\n }\n }\n\n private async makeLaneComponentsAvailableOnMain() {\n const unavailableOnMain = await this.workspace.getUnavailableOnMainComponents();\n if (!unavailableOnMain.length) return;\n this.workspace.bitMap.makeComponentsAvailableOnMain(unavailableOnMain);\n }\n\n private async parseValues(to: CheckoutTo, componentPattern: string, checkoutProps: CheckoutProps) {\n if (to === HEAD) checkoutProps.head = true;\n else if (to === LATEST) checkoutProps.latest = true;\n else if (to === 'reset') checkoutProps.reset = true;\n else {\n if (!BitId.isValidVersion(to)) throw new BitError(`the specified version \"${to}\" is not a valid version`);\n checkoutProps.version = to;\n }\n if (checkoutProps.head && !componentPattern) {\n if (checkoutProps.all) {\n this.logger.console(`\"--all\" is deprecated for \"bit checkout ${HEAD}\", please omit it.`);\n }\n checkoutProps.all = true;\n }\n if (checkoutProps.latest && !componentPattern) {\n if (checkoutProps.all) {\n this.logger.console(`\"--all\" is deprecated for \"bit checkout ${LATEST}\", please omit it.`);\n }\n checkoutProps.all = true;\n }\n if (componentPattern && checkoutProps.all) {\n throw new GeneralError('please specify either [component-pattern] or --all, not both');\n }\n if (!componentPattern && !checkoutProps.all) {\n throw new GeneralError('please specify [component-pattern] or use --all flag');\n }\n if (checkoutProps.workspaceOnly && !checkoutProps.head) {\n throw new BitError(`--workspace-only flag can only be used with \"head\" (bit checkout head --workspace-only)`);\n }\n const idsOnWorkspace = componentPattern\n ? await this.workspace.idsByPattern(componentPattern)\n : await this.workspace.listIds();\n const currentLane = await this.workspace.consumer.getCurrentLaneObject();\n const currentLaneIds = currentLane?.toBitIds();\n const ids = currentLaneIds\n ? idsOnWorkspace.filter((id) => currentLaneIds.hasWithoutVersion(id._legacy))\n : idsOnWorkspace;\n checkoutProps.ids = ids.map((id) => (checkoutProps.head || checkoutProps.latest ? id.changeVersion(LATEST) : id));\n }\n\n private async getNewComponentsFromLane(ids: ComponentID[]): Promise<ComponentID[]> {\n // current lane object is up to date due to the previous `importCurrentObjects()` call\n const lane = await this.workspace.consumer.getCurrentLaneObject();\n if (!lane) {\n return [];\n }\n const laneBitIds = lane.toBitIds();\n const newIds = laneBitIds.filter((bitId) => !ids.find((id) => id._legacy.isEqualWithoutVersion(bitId)));\n const newComponentIds = await this.workspace.resolveMultipleComponentIds(newIds);\n const nonRemovedNewIds: ComponentID[] = [];\n await Promise.all(\n newComponentIds.map(async (id) => {\n const isRemoved = await this.workspace.scope.isComponentRemoved(id);\n if (!isRemoved) nonRemovedNewIds.push(id);\n })\n );\n return nonRemovedNewIds;\n }\n\n private async getComponentStatusBeforeMergeAttempt(\n component: ConsumerComponent,\n checkoutProps: CheckoutProps\n ): Promise<ComponentStatusBeforeMergeAttempt> {\n const consumer = this.workspace.consumer;\n const { version, head: headVersion, reset, latest: latestVersion, versionPerId } = checkoutProps;\n const repo = consumer.scope.objects;\n const componentModel = await consumer.scope.getModelComponentIfExist(component.id);\n const componentStatus: ComponentStatusBeforeMergeAttempt = { id: component.id };\n const returnFailure = (msg: string, unchangedLegitimately = false) => {\n componentStatus.failureMessage = msg;\n componentStatus.unchangedLegitimately = unchangedLegitimately;\n return componentStatus;\n };\n if (!componentModel) {\n return returnFailure(`component ${component.id.toString()} is new, no version to checkout`, true);\n }\n const unmerged = repo.unmergedComponents.getEntry(component.name);\n if (!reset && unmerged) {\n return returnFailure(\n `component ${component.id.toStringWithoutVersion()} is in during-merge state, please snap/tag it first (or use bit merge --resolve/--abort)`\n );\n }\n const getNewVersion = async (): Promise<string> => {\n if (reset) return component.id.version as string;\n\n if (headVersion) return componentModel.headIncludeRemote(repo);\n if (latestVersion) return componentModel.latestVersion();\n if (versionPerId)\n return versionPerId.find((id) => id._legacy.isEqualWithoutVersion(component.id))?.version as string;\n\n // @ts-ignore if !reset the version is defined\n return version;\n };\n const newVersion = await getNewVersion();\n if (version && !headVersion) {\n const hasVersion = await componentModel.hasVersion(version, repo);\n if (!hasVersion)\n return returnFailure(`component ${component.id.toStringWithoutVersion()} doesn't have version ${version}`);\n }\n const existingBitMapId = consumer.bitMap.getBitId(component.id, { ignoreVersion: true });\n const currentlyUsedVersion = existingBitMapId.version;\n if (!currentlyUsedVersion) {\n return returnFailure(`component ${component.id.toStringWithoutVersion()} is new`);\n }\n if (version && currentlyUsedVersion === version) {\n // it won't be relevant for 'reset' as it doesn't have a version\n return returnFailure(`component ${component.id.toStringWithoutVersion()} is already at version ${version}`, true);\n }\n if (headVersion && currentlyUsedVersion === newVersion) {\n return returnFailure(\n `component ${component.id.toStringWithoutVersion()} is already at the latest version, which is ${newVersion}`,\n true\n );\n }\n if (!reset) {\n const divergeDataForMergePending = await componentModel.getDivergeDataForMergePending(repo);\n const isMergePending = divergeDataForMergePending.isDiverged();\n if (isMergePending) {\n return returnFailure(`component is merge-pending and cannot be checked out, run \"bit status\" for more info`);\n }\n }\n const currentVersionObject: Version = await componentModel.loadVersion(currentlyUsedVersion, repo);\n const isModified = await consumer.isComponentModified(currentVersionObject, component);\n if (!isModified && reset) {\n return returnFailure(`component ${component.id.toStringWithoutVersion()} is not modified`, true);\n }\n\n const versionRef = componentModel.getRef(newVersion);\n if (!versionRef) throw new Error(`unable to get ref ${newVersion} from ${componentModel.id()}`);\n const componentVersion = (await consumer.scope.getObject(versionRef.hash)) as Version | undefined;\n if (componentVersion?.isRemoved() && existingBitMapId) {\n componentStatus.shouldBeRemoved = true;\n return returnFailure(`component has been removed`, true);\n }\n\n const newId = component.id.changeVersion(newVersion);\n\n if (reset || !isModified) {\n // if the component is not modified, no need to try merge the files, they will be written later on according to the\n // checked out version. same thing when no version is specified, it'll be reset to the model-version later.\n return { currentComponent: component, componentFromModel: componentVersion, id: newId };\n }\n\n const propsForMerge = {\n currentlyUsedVersion,\n componentModel,\n };\n\n return { currentComponent: component, componentFromModel: componentVersion, id: newId, propsForMerge };\n }\n\n private async getMergeStatus({\n currentComponent: componentFromFS,\n componentFromModel,\n id,\n propsForMerge,\n }: ComponentStatusBeforeMergeAttempt): Promise<ComponentStatus> {\n if (!propsForMerge) throw new Error(`propsForMerge is missing for ${id.toString()}`);\n if (!componentFromFS) throw new Error(`componentFromFS is missing for ${id.toString()}`);\n const consumer = this.workspace.consumer;\n const repo = consumer.scope.objects;\n const { currentlyUsedVersion, componentModel } = propsForMerge;\n\n // this is tricky. imagine the user is 0.0.2+modification and wants to checkout to 0.0.1.\n // the base is 0.0.1, as it's the common version for 0.0.1 and 0.0.2. however, if we let git merge-file use the 0.0.1\n // as the base, then, it'll get the changes done since 0.0.1 to 0.0.1, which is nothing, and put them on top of\n // 0.0.2+modification. in other words, it won't make any change.\n // this scenario of checking out while there are modified files, is forbidden in Git. here, we want to simulate a similar\n // experience of \"git stash\", then \"git checkout\", then \"git stash pop\". practically, we want the changes done on 0.0.2\n // to be added to 0.0.1\n // if there is no modification, it doesn't go the threeWayMerge anyway, so it doesn't matter what the base is.\n const baseVersion = currentlyUsedVersion;\n const newVersion = id.version as string;\n const baseComponent: Version = await componentModel.loadVersion(baseVersion, repo);\n const otherComponent: Version = await componentModel.loadVersion(newVersion, repo);\n const mergeResults = await threeWayMerge({\n consumer,\n otherComponent,\n otherLabel: newVersion,\n currentComponent: componentFromFS,\n currentLabel: `${currentlyUsedVersion} modified`,\n baseComponent,\n });\n\n return { currentComponent: componentFromFS, componentFromModel, id, mergeResults };\n }\n\n static slots = [];\n static dependencies = [CLIAspect, WorkspaceAspect, LoggerAspect, ComponentWriterAspect, ImporterAspect, RemoveAspect];\n\n static runtime = MainRuntime;\n\n static async provider([cli, workspace, loggerMain, compWriter, importer, remove]: [\n CLIMain,\n Workspace,\n LoggerMain,\n ComponentWriterMain,\n ImporterMain,\n RemoveMain\n ]) {\n const logger = loggerMain.createLogger(CheckoutAspect.id);\n const checkoutMain = new CheckoutMain(workspace, logger, compWriter, importer, remove);\n cli.register(new CheckoutCmd(checkoutMain));\n return checkoutMain;\n }\n}\n\nCheckoutAspect.addRuntime(CheckoutMain);\n\nexport default CheckoutMain;\n"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,4 +2,4 @@ import { CheckoutAspect } from './checkout.aspect';
|
|
|
2
2
|
export type { CheckoutMain } from './checkout.main.runtime';
|
|
3
3
|
export default CheckoutAspect;
|
|
4
4
|
export { CheckoutAspect };
|
|
5
|
-
export { CheckoutProps, ComponentStatus, applyModifiedVersion, applyVersion, deleteFilesIfNeeded, markFilesToBeRemovedIfNeeded, } from './checkout-version';
|
|
5
|
+
export { CheckoutProps, ComponentStatus, applyModifiedVersion, applyVersion, deleteFilesIfNeeded, markFilesToBeRemovedIfNeeded, ComponentStatusBase, ApplyVersionWithComps, } from './checkout-version';
|
package/dist/index.js
CHANGED
|
@@ -3,6 +3,12 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
Object.defineProperty(exports, "ApplyVersionWithComps", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _checkoutVersion().ApplyVersionWithComps;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
6
12
|
Object.defineProperty(exports, "CheckoutAspect", {
|
|
7
13
|
enumerable: true,
|
|
8
14
|
get: function () {
|
|
@@ -21,6 +27,12 @@ Object.defineProperty(exports, "ComponentStatus", {
|
|
|
21
27
|
return _checkoutVersion().ComponentStatus;
|
|
22
28
|
}
|
|
23
29
|
});
|
|
30
|
+
Object.defineProperty(exports, "ComponentStatusBase", {
|
|
31
|
+
enumerable: true,
|
|
32
|
+
get: function () {
|
|
33
|
+
return _checkoutVersion().ComponentStatusBase;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
24
36
|
Object.defineProperty(exports, "applyModifiedVersion", {
|
|
25
37
|
enumerable: true,
|
|
26
38
|
get: function () {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CheckoutAspect"],"sources":["index.ts"],"sourcesContent":["import { CheckoutAspect } from './checkout.aspect';\n\nexport type { CheckoutMain } from './checkout.main.runtime';\nexport default CheckoutAspect;\nexport { CheckoutAspect };\n\nexport {\n CheckoutProps,\n ComponentStatus,\n applyModifiedVersion,\n applyVersion,\n deleteFilesIfNeeded,\n markFilesToBeRemovedIfNeeded,\n} from './checkout-version';\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":["CheckoutAspect"],"sources":["index.ts"],"sourcesContent":["import { CheckoutAspect } from './checkout.aspect';\n\nexport type { CheckoutMain } from './checkout.main.runtime';\nexport default CheckoutAspect;\nexport { CheckoutAspect };\n\nexport {\n CheckoutProps,\n ComponentStatus,\n applyModifiedVersion,\n applyVersion,\n deleteFilesIfNeeded,\n markFilesToBeRemovedIfNeeded,\n ComponentStatusBase,\n ApplyVersionWithComps,\n} from './checkout-version';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAMA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAS4B,eAZbA,0BAAc;AAAA"}
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/checkout",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.245",
|
|
4
4
|
"homepage": "https://bit.cloud/teambit/component/checkout",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.component",
|
|
8
8
|
"name": "checkout",
|
|
9
|
-
"version": "0.0.
|
|
9
|
+
"version": "0.0.245"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"chalk": "2.4.2",
|
|
@@ -17,14 +17,14 @@
|
|
|
17
17
|
"@teambit/legacy-bit-id": "0.0.423",
|
|
18
18
|
"@teambit/harmony": "0.4.6",
|
|
19
19
|
"@teambit/component-id": "0.0.427",
|
|
20
|
-
"@teambit/cli": "0.0.
|
|
21
|
-
"@teambit/merging": "0.0.
|
|
20
|
+
"@teambit/cli": "0.0.725",
|
|
21
|
+
"@teambit/merging": "0.0.391",
|
|
22
|
+
"@teambit/workspace": "0.0.1076",
|
|
22
23
|
"@teambit/bit-error": "0.0.402",
|
|
23
|
-
"@teambit/component-writer": "0.0.
|
|
24
|
-
"@teambit/importer": "0.0.
|
|
25
|
-
"@teambit/logger": "0.0.
|
|
26
|
-
"@teambit/remove": "0.0.
|
|
27
|
-
"@teambit/workspace": "0.0.1074"
|
|
24
|
+
"@teambit/component-writer": "0.0.112",
|
|
25
|
+
"@teambit/importer": "0.0.505",
|
|
26
|
+
"@teambit/logger": "0.0.818",
|
|
27
|
+
"@teambit/remove": "0.0.253"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@types/lodash": "4.14.165",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"@types/testing-library__jest-dom": "5.9.5"
|
|
37
37
|
},
|
|
38
38
|
"peerDependencies": {
|
|
39
|
-
"@teambit/legacy": "1.0.
|
|
39
|
+
"@teambit/legacy": "1.0.505",
|
|
40
40
|
"react": "^16.8.0 || ^17.0.0",
|
|
41
41
|
"react-dom": "^16.8.0 || ^17.0.0"
|
|
42
42
|
},
|
|
Binary file
|
|
File without changes
|