@teambit/checkout 1.0.1176 → 1.0.1177
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.js
CHANGED
|
@@ -21,6 +21,13 @@ function _legacy() {
|
|
|
21
21
|
};
|
|
22
22
|
return data;
|
|
23
23
|
}
|
|
24
|
+
function _legacy2() {
|
|
25
|
+
const data = require("@teambit/legacy.bit-map");
|
|
26
|
+
_legacy2 = function () {
|
|
27
|
+
return data;
|
|
28
|
+
};
|
|
29
|
+
return data;
|
|
30
|
+
}
|
|
24
31
|
function _bitError() {
|
|
25
32
|
const data = require("@teambit/bit-error");
|
|
26
33
|
_bitError = function () {
|
|
@@ -147,6 +154,9 @@ async function removeFilesIfNeeded(filesStatus, consumer, componentFromFS) {
|
|
|
147
154
|
const dataToPersist = new (_component().DataToPersist)();
|
|
148
155
|
filePathsFromFS.forEach(file => {
|
|
149
156
|
const filename = (0, _legacy().pathNormalizeToLinux)(file.relative);
|
|
157
|
+
// the live .bitmap is never deleted from a versioned copy, see isWorkspaceMapFile. only the root
|
|
158
|
+
// component tracks it, an ordinary component's is a file like any other.
|
|
159
|
+
if ((0, _legacy2().isWorkspaceMapFile)(filename) && componentFromFS.componentMap?.rootDir === _legacy2().WORKSPACE_ROOT_DIR) return;
|
|
150
160
|
if (!filesStatus[filename]) {
|
|
151
161
|
// @ts-ignore todo: typescript has a good point here. it should be the string "removed", not chalk.green(removed).
|
|
152
162
|
filesStatus[filename] = _componentModules().FileStatus.removed;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_component","data","require","_legacy","_bitError","_chalk","_interopRequireDefault","_componentModules","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","applyVersion","consumer","id","componentFromFS","mergeResults","checkoutProps","isLane","Error","toString","mergeStrategy","forceOurs","filesStatus","hasConflicts","MergeOptions","ours","files","file","pathNormalizeToLinux","relative","FileStatus","unchanged","bitMap","updateComponentId","applyVersionResult","component","loadComponentFromModelImportIfNeeded","componentMap","BitError","updateFileStatus","undefined","removeFilesIfNeeded","modifiedStatus","modifiedFiles","applyModifiedVersion","fileFromFs","find","f","areFilesEqual","Buffer","compare","contents","updated","isExistOnFs","getComponentIdIfExist","ignoreVersion","filePathsFromFS","dataToPersist","DataToPersist","filename","removed","removePath","RemovePath","path","persistAllToFS","throwForFailures","allComponentsStatus","failedComponents","c","unchangedMessage","unchangedLegitimately","failureMsgs","map","failedComponent","chalk","bold","red","join"],"sources":["checkout-version.ts"],"sourcesContent":["import type { Consumer } from '@teambit/legacy.consumer';\nimport type { ComponentID } from '@teambit/component-id';\nimport type { Version } from '@teambit/objects';\nimport type { SourceFile } from '@teambit/component.sources';\nimport { RemovePath, DataToPersist } from '@teambit/component.sources';\nimport { pathNormalizeToLinux } from '@teambit/legacy.utils';\nimport type { ConsumerComponent } from '@teambit/legacy.consumer-component';\nimport { BitError } from '@teambit/bit-error';\nimport chalk from 'chalk';\nimport type { ApplyVersionResult, FilesStatus, MergeResultsThreeWay } from '@teambit/component.modules.merge-helper';\nimport { applyModifiedVersion, FileStatus, MergeOptions } from '@teambit/component.modules.merge-helper';\nimport type { CheckoutProps } from './checkout.main.runtime';\n\nexport type ComponentStatusBase = {\n currentComponent?: ConsumerComponent;\n componentFromModel?: Version;\n id: ComponentID;\n shouldBeRemoved?: boolean; // in case the component is soft-removed, it should be removed from the workspace\n unchangedMessage?: string; // this gets populated either upon skip or failure.\n unchangedLegitimately?: boolean; // true for skipped legitimately (e.g. already up to date). false for failure.\n};\n\nexport type ComponentStatus = ComponentStatusBase & {\n mergeResults?: MergeResultsThreeWay | null | undefined;\n};\n\nexport type ApplyVersionWithComps = {\n applyVersionResult: ApplyVersionResult;\n component?: ConsumerComponent;\n // in case the component needs to be written to the filesystem, this is the component to write.\n legacyCompToWrite?: ConsumerComponent;\n};\n\n/**\n * This function optionally returns \"component\" object. If it returns, it means it needs to be written to the filesystem.\n * Otherwise, it means the component is already up to date and no need to write it.\n *\n * If no need to change anything (ours), then don't return the component object.\n * Otherwise, either return the component object as is (if no conflicts or \"theirs\"), or change the files in this\n * component object. Later, this component object is written to the filesystem.\n *\n * 1) when the files are modified with conflicts and the strategy is \"ours\", or forceOurs was used, leave the FS as is.\n *\n * 2) when the files are modified with conflicts and the strategy is \"theirs\", or forceTheirs was used, write the\n * component according to \"component\" object\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 * 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: ComponentID,\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, forceOurs } = checkoutProps;\n let filesStatus = {};\n // \"keep ours\" is meaningful only when the component is on the filesystem. during a lane\n // switch/import (isLane), a component may exist on the lane but not in the workspace at all -\n // there are no local files to preserve, so fall through and write it from the model.\n if (componentFromFS && ((mergeResults?.hasConflicts && mergeStrategy === MergeOptions.ours) || forceOurs)) {\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 BitError('applyVersion: componentMap was not found');\n\n const files = component.files;\n updateFileStatus(files, filesStatus, componentFromFS || undefined);\n\n await removeFilesIfNeeded(filesStatus, consumer, componentFromFS || undefined);\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 // in case of forceTheirs, the mergeResults is undefined, the \"component\" object is according to \"theirs\", so it'll work\n // expected. (later, it writes the component object).\n\n return {\n applyVersionResult: { id, filesStatus },\n component,\n };\n}\n\nexport function updateFileStatus(files: SourceFile[], filesStatus: FilesStatus, componentFromFS?: ConsumerComponent) {\n files.forEach((file) => {\n const fileFromFs = componentFromFS?.files.find((f) => f.relative === file.relative);\n const areFilesEqual = fileFromFs && Buffer.compare(fileFromFs.contents, file.contents) === 0;\n // @ts-ignore\n filesStatus[pathNormalizeToLinux(file.relative)] = areFilesEqual ? FileStatus.unchanged : FileStatus.updated;\n });\n}\n\n/**\n * when files exist on the filesystem but not on the checked out versions, they need to be deleted.\n * without this function, these files would be left on the filesystem. (we don't delete the comp-dir before writing).\n * this needs to be done *before* the component is written to the filesystem, otherwise, it won't work when a file\n * has a case change. e.g. from uppercase to lowercase. (see merge-lane.e2e 'renaming files from uppercase to lowercase').\n */\nexport async function removeFilesIfNeeded(\n filesStatus: FilesStatus,\n consumer: Consumer,\n componentFromFS?: ConsumerComponent\n) {\n if (!componentFromFS) return;\n // @todo: if the component is not in the FS, it should be passed as undefined here.\n // in the case this is coming from merge-lane, it's sometimes populated from the scope.\n const isExistOnFs = consumer.bitMap.getComponentIdIfExist(componentFromFS.id, { ignoreVersion: true });\n if (!isExistOnFs) return;\n const filePathsFromFS = componentFromFS.files || [];\n const dataToPersist = new DataToPersist();\n filePathsFromFS.forEach((file) => {\n const filename = pathNormalizeToLinux(file.relative);\n if (!filesStatus[filename]) {\n // @ts-ignore todo: typescript has a good point here. it should be the string \"removed\", not chalk.green(removed).\n filesStatus[filename] = FileStatus.removed;\n }\n if (filesStatus[filename] === FileStatus.removed) {\n dataToPersist.removePath(new RemovePath(file.path));\n }\n });\n await dataToPersist.persistAllToFS();\n}\n\nexport function throwForFailures(allComponentsStatus: ComponentStatusBase[]) {\n const failedComponents = allComponentsStatus.filter((c) => c.unchangedMessage && !c.unchangedLegitimately);\n if (failedComponents.length) {\n const failureMsgs = failedComponents\n .map(\n (failedComponent) =>\n `${chalk.bold(failedComponent.id.toString())} - ${chalk.red(failedComponent.unchangedMessage as string)}`\n )\n .join('\\n');\n throw new BitError(`unable to proceed due to the following failures:\\n${failureMsgs}`);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_component","data","require","_legacy","_legacy2","_bitError","_chalk","_interopRequireDefault","_componentModules","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","applyVersion","consumer","id","componentFromFS","mergeResults","checkoutProps","isLane","Error","toString","mergeStrategy","forceOurs","filesStatus","hasConflicts","MergeOptions","ours","files","file","pathNormalizeToLinux","relative","FileStatus","unchanged","bitMap","updateComponentId","applyVersionResult","component","loadComponentFromModelImportIfNeeded","componentMap","BitError","updateFileStatus","undefined","removeFilesIfNeeded","modifiedStatus","modifiedFiles","applyModifiedVersion","fileFromFs","find","f","areFilesEqual","Buffer","compare","contents","updated","isExistOnFs","getComponentIdIfExist","ignoreVersion","filePathsFromFS","dataToPersist","DataToPersist","filename","isWorkspaceMapFile","rootDir","WORKSPACE_ROOT_DIR","removed","removePath","RemovePath","path","persistAllToFS","throwForFailures","allComponentsStatus","failedComponents","c","unchangedMessage","unchangedLegitimately","failureMsgs","map","failedComponent","chalk","bold","red","join"],"sources":["checkout-version.ts"],"sourcesContent":["import type { Consumer } from '@teambit/legacy.consumer';\nimport type { ComponentID } from '@teambit/component-id';\nimport type { Version } from '@teambit/objects';\nimport type { SourceFile } from '@teambit/component.sources';\nimport { RemovePath, DataToPersist } from '@teambit/component.sources';\nimport { pathNormalizeToLinux } from '@teambit/legacy.utils';\nimport { isWorkspaceMapFile, WORKSPACE_ROOT_DIR } from '@teambit/legacy.bit-map';\nimport type { ConsumerComponent } from '@teambit/legacy.consumer-component';\nimport { BitError } from '@teambit/bit-error';\nimport chalk from 'chalk';\nimport type { ApplyVersionResult, FilesStatus, MergeResultsThreeWay } from '@teambit/component.modules.merge-helper';\nimport { applyModifiedVersion, FileStatus, MergeOptions } from '@teambit/component.modules.merge-helper';\nimport type { CheckoutProps } from './checkout.main.runtime';\n\nexport type ComponentStatusBase = {\n currentComponent?: ConsumerComponent;\n componentFromModel?: Version;\n id: ComponentID;\n shouldBeRemoved?: boolean; // in case the component is soft-removed, it should be removed from the workspace\n unchangedMessage?: string; // this gets populated either upon skip or failure.\n unchangedLegitimately?: boolean; // true for skipped legitimately (e.g. already up to date). false for failure.\n};\n\nexport type ComponentStatus = ComponentStatusBase & {\n mergeResults?: MergeResultsThreeWay | null | undefined;\n};\n\nexport type ApplyVersionWithComps = {\n applyVersionResult: ApplyVersionResult;\n component?: ConsumerComponent;\n // in case the component needs to be written to the filesystem, this is the component to write.\n legacyCompToWrite?: ConsumerComponent;\n};\n\n/**\n * This function optionally returns \"component\" object. If it returns, it means it needs to be written to the filesystem.\n * Otherwise, it means the component is already up to date and no need to write it.\n *\n * If no need to change anything (ours), then don't return the component object.\n * Otherwise, either return the component object as is (if no conflicts or \"theirs\"), or change the files in this\n * component object. Later, this component object is written to the filesystem.\n *\n * 1) when the files are modified with conflicts and the strategy is \"ours\", or forceOurs was used, leave the FS as is.\n *\n * 2) when the files are modified with conflicts and the strategy is \"theirs\", or forceTheirs was used, write the\n * component according to \"component\" object\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 * 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: ComponentID,\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, forceOurs } = checkoutProps;\n let filesStatus = {};\n // \"keep ours\" is meaningful only when the component is on the filesystem. during a lane\n // switch/import (isLane), a component may exist on the lane but not in the workspace at all -\n // there are no local files to preserve, so fall through and write it from the model.\n if (componentFromFS && ((mergeResults?.hasConflicts && mergeStrategy === MergeOptions.ours) || forceOurs)) {\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 BitError('applyVersion: componentMap was not found');\n\n const files = component.files;\n updateFileStatus(files, filesStatus, componentFromFS || undefined);\n\n await removeFilesIfNeeded(filesStatus, consumer, componentFromFS || undefined);\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 // in case of forceTheirs, the mergeResults is undefined, the \"component\" object is according to \"theirs\", so it'll work\n // expected. (later, it writes the component object).\n\n return {\n applyVersionResult: { id, filesStatus },\n component,\n };\n}\n\nexport function updateFileStatus(files: SourceFile[], filesStatus: FilesStatus, componentFromFS?: ConsumerComponent) {\n files.forEach((file) => {\n const fileFromFs = componentFromFS?.files.find((f) => f.relative === file.relative);\n const areFilesEqual = fileFromFs && Buffer.compare(fileFromFs.contents, file.contents) === 0;\n // @ts-ignore\n filesStatus[pathNormalizeToLinux(file.relative)] = areFilesEqual ? FileStatus.unchanged : FileStatus.updated;\n });\n}\n\n/**\n * when files exist on the filesystem but not on the checked out versions, they need to be deleted.\n * without this function, these files would be left on the filesystem. (we don't delete the comp-dir before writing).\n * this needs to be done *before* the component is written to the filesystem, otherwise, it won't work when a file\n * has a case change. e.g. from uppercase to lowercase. (see merge-lane.e2e 'renaming files from uppercase to lowercase').\n */\nexport async function removeFilesIfNeeded(\n filesStatus: FilesStatus,\n consumer: Consumer,\n componentFromFS?: ConsumerComponent\n) {\n if (!componentFromFS) return;\n // @todo: if the component is not in the FS, it should be passed as undefined here.\n // in the case this is coming from merge-lane, it's sometimes populated from the scope.\n const isExistOnFs = consumer.bitMap.getComponentIdIfExist(componentFromFS.id, { ignoreVersion: true });\n if (!isExistOnFs) return;\n const filePathsFromFS = componentFromFS.files || [];\n const dataToPersist = new DataToPersist();\n filePathsFromFS.forEach((file) => {\n const filename = pathNormalizeToLinux(file.relative);\n // the live .bitmap is never deleted from a versioned copy, see isWorkspaceMapFile. only the root\n // component tracks it, an ordinary component's is a file like any other.\n if (isWorkspaceMapFile(filename) && componentFromFS.componentMap?.rootDir === WORKSPACE_ROOT_DIR) return;\n if (!filesStatus[filename]) {\n // @ts-ignore todo: typescript has a good point here. it should be the string \"removed\", not chalk.green(removed).\n filesStatus[filename] = FileStatus.removed;\n }\n if (filesStatus[filename] === FileStatus.removed) {\n dataToPersist.removePath(new RemovePath(file.path));\n }\n });\n await dataToPersist.persistAllToFS();\n}\n\nexport function throwForFailures(allComponentsStatus: ComponentStatusBase[]) {\n const failedComponents = allComponentsStatus.filter((c) => c.unchangedMessage && !c.unchangedLegitimately);\n if (failedComponents.length) {\n const failureMsgs = failedComponents\n .map(\n (failedComponent) =>\n `${chalk.bold(failedComponent.id.toString())} - ${chalk.red(failedComponent.unchangedMessage as string)}`\n )\n .join('\\n');\n throw new BitError(`unable to proceed due to the following failures:\\n${failureMsgs}`);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,47 +1,47 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/checkout",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1177",
|
|
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": "1.0.
|
|
9
|
+
"version": "1.0.1177"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"chalk": "4.1.2",
|
|
13
13
|
"lodash": "4.17.21",
|
|
14
14
|
"p-map-series": "2.1.0",
|
|
15
15
|
"@teambit/bit-error": "0.0.404",
|
|
16
|
-
"@teambit/cli": "0.0.1393",
|
|
17
16
|
"@teambit/component-id": "1.2.4",
|
|
18
|
-
"@teambit/component.modules.merge-helper": "0.0.107",
|
|
19
|
-
"@teambit/legacy.constants": "0.0.44",
|
|
20
|
-
"@teambit/component.sources": "0.0.216",
|
|
21
|
-
"@teambit/legacy.consumer-component": "0.0.165",
|
|
22
|
-
"@teambit/legacy.consumer": "0.0.164",
|
|
23
17
|
"@teambit/legacy.utils": "0.0.51",
|
|
24
18
|
"@teambit/harmony": "0.4.12",
|
|
25
|
-
"@teambit/
|
|
26
|
-
"@teambit/
|
|
27
|
-
"@teambit/
|
|
28
|
-
"@teambit/
|
|
29
|
-
"@teambit/
|
|
30
|
-
"@teambit/
|
|
31
|
-
"@teambit/
|
|
32
|
-
"@teambit/
|
|
33
|
-
"@teambit/
|
|
19
|
+
"@teambit/cli": "0.0.1394",
|
|
20
|
+
"@teambit/component.modules.merge-helper": "0.0.108",
|
|
21
|
+
"@teambit/legacy.constants": "0.0.45",
|
|
22
|
+
"@teambit/component.sources": "0.0.217",
|
|
23
|
+
"@teambit/legacy.bit-map": "0.0.222",
|
|
24
|
+
"@teambit/legacy.consumer-component": "0.0.166",
|
|
25
|
+
"@teambit/legacy.consumer": "0.0.165",
|
|
26
|
+
"@teambit/objects": "0.0.682",
|
|
27
|
+
"@teambit/component-writer": "1.0.1175",
|
|
28
|
+
"@teambit/importer": "1.0.1175",
|
|
29
|
+
"@teambit/legacy.scope": "0.0.165",
|
|
30
|
+
"@teambit/lister": "1.0.1175",
|
|
31
|
+
"@teambit/logger": "0.0.1487",
|
|
32
|
+
"@teambit/remove": "1.0.1175",
|
|
33
|
+
"@teambit/workspace": "1.0.1175"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@types/lodash": "4.14.165",
|
|
37
37
|
"@types/fs-extra": "9.0.7",
|
|
38
38
|
"fs-extra": "10.0.0",
|
|
39
39
|
"@types/mocha": "9.1.0",
|
|
40
|
-
"@teambit/component.testing.mock-components": "0.0.438",
|
|
41
|
-
"@teambit/harmony.testing.load-aspect": "0.0.432",
|
|
42
|
-
"@teambit/workspace.testing.mock-workspace": "0.0.246",
|
|
43
40
|
"@teambit/harmony.envs.core-aspect-env": "2.1.1",
|
|
44
|
-
"@teambit/
|
|
41
|
+
"@teambit/component.testing.mock-components": "0.0.439",
|
|
42
|
+
"@teambit/harmony.testing.load-aspect": "0.0.433",
|
|
43
|
+
"@teambit/snapping": "1.0.1175",
|
|
44
|
+
"@teambit/workspace.testing.mock-workspace": "0.0.247"
|
|
45
45
|
},
|
|
46
46
|
"peerDependencies": {
|
|
47
47
|
"chai": "5.2.1",
|
|
File without changes
|