@teambit/workspace 1.0.1143 → 1.0.1144

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/bit-map.js CHANGED
@@ -75,7 +75,7 @@ class BitMap {
75
75
  const bitMapEntry = this.getBitmapEntry(id, {
76
76
  ignoreVersion: true
77
77
  });
78
- const currentConfig = (bitMapEntry.config ||= {})[aspectId];
78
+ const currentConfig = bitMapEntry.config?.[aspectId];
79
79
  if ((0, _lodash().isEqual)(currentConfig, config)) {
80
80
  return false; // no changes
81
81
  }
@@ -90,9 +90,14 @@ class BitMap {
90
90
  };
91
91
  const newConfig = getNewConfig();
92
92
  if (newConfig) {
93
- bitMapEntry.config[aspectId] = newConfig;
93
+ (bitMapEntry.config ||= {})[aspectId] = newConfig;
94
94
  } else {
95
+ if (!currentConfig) {
96
+ return false; // the aspect is not configured, so there is nothing to delete
97
+ }
95
98
  delete bitMapEntry.config[aspectId];
99
+ // avoid leaving an empty `config: {}` object in the .bitmap file
100
+ if (!Object.keys(bitMapEntry.config).length) delete bitMapEntry.config;
96
101
  }
97
102
  this.legacyBitMap.markAsChanged();
98
103
  return true; // changes have been made
@@ -120,14 +125,16 @@ class BitMap {
120
125
  const bitMapEntry = this.getBitmapEntry(id, {
121
126
  ignoreVersion: true
122
127
  });
123
- const currentConfig = (bitMapEntry.config ||= {})[aspectId];
128
+ const currentConfig = bitMapEntry.config?.[aspectId];
124
129
  if (currentConfig) {
125
130
  delete bitMapEntry.config[aspectId];
131
+ // avoid leaving an empty `config: {}` object in the .bitmap file
132
+ if (!Object.keys(bitMapEntry.config).length) delete bitMapEntry.config;
126
133
  } else {
127
134
  if (!markWithMinusIfNotExist) {
128
135
  return false; // no changes
129
136
  }
130
- bitMapEntry.config[aspectId] = _legacy2().REMOVE_EXTENSION_SPECIAL_SIGN;
137
+ (bitMapEntry.config ||= {})[aspectId] = _legacy2().REMOVE_EXTENSION_SPECIAL_SIGN;
131
138
  }
132
139
  this.legacyBitMap.markAsChanged();
133
140
  return true; // changes have been made
@@ -1 +1 @@
1
- {"version":3,"names":["_lodash","data","require","_legacy","_legacy2","_bitError","_envs","_toolboxFs","BitMap","constructor","legacyBitMap","consumer","mergeBitmaps","bitmapContent","otherBitmapContent","opts","LegacyBitMap","mergeContent","getPath","mapPath","getAllRootDirs","Object","keys","getAllTrackDirs","addComponentConfig","id","aspectId","config","shouldMergeConfig","Error","bitMapEntry","getBitmapEntry","ignoreVersion","currentConfig","isEqual","getNewConfig","merge","newConfig","markAsChanged","updateDefaultScope","oldScope","newScope","changedId","components","forEach","componentMap","defaultScope","hasVersion","changeDefaultScope","push","length","removeComponentConfig","markWithMinusIfNotExist","REMOVE_EXTENSION_SPECIAL_SIGN","removeEntireConfig","setEntireConfig","removeDefaultScope","setDefaultScope","setLocalOnly","ids","localOnly","unsetLocalOnly","successfullyUnset","listLocalOnly","allIds","getAllBitIds","filter","write","reasonForChange","writeBitMap","getComponent","getBitmapEntryIfExist","getComponentIfExist","getAspectIdFromConfig","componentId","ignoreAspectVersion","undefined","toString","allVersions","startsWith","toStringWithoutVersion","BitError","join","renameNewComponent","sourceId","targetId","fullName","removeComponent","scope","setComponent","renameAspectInConfig","EnvsAspect","envConfig","env","getExportedLaneId","isLaneExported","laneId","makeComponentsAvailableOnMain","isAvailableOnCurrentLane","onLanesOnly","hasChanged","takeSnapshot","map","comp","clone","restoreFromSnapshot","componentMaps","_invalidateCache","getLastModifiedBitmapThroughBit","bitmapHistoryDir","getBitmapHistoryDir","stat","getPathStatIfExist","mtimeMs","exports"],"sources":["bit-map.ts"],"sourcesContent":["import { isEqual, merge } from 'lodash';\nimport type { ComponentID } from '@teambit/component-id';\nimport type { ComponentMap, GetBitMapComponentOptions } from '@teambit/legacy.bit-map';\nimport { BitMap as LegacyBitMap } from '@teambit/legacy.bit-map';\nimport type { Consumer } from '@teambit/legacy.consumer';\nimport { REMOVE_EXTENSION_SPECIAL_SIGN } from '@teambit/legacy.extension-data';\nimport { BitError } from '@teambit/bit-error';\nimport type { LaneId } from '@teambit/lane-id';\nimport { EnvsAspect } from '@teambit/envs';\nimport type { PathOsBasedAbsolute } from '@teambit/toolbox.path.path';\nimport { getPathStatIfExist } from '@teambit/toolbox.fs.last-modified';\n\nexport type MergeOptions = {\n mergeStrategy?: 'theirs' | 'ours' | 'manual';\n};\n/**\n * consider extracting to a new component.\n * (pro: making Workspace aspect smaller. con: it's an implementation details of the workspace)\n */\nexport class BitMap {\n constructor(\n private legacyBitMap: LegacyBitMap,\n private consumer: Consumer\n ) {}\n\n mergeBitmaps(bitmapContent: string, otherBitmapContent: string, opts: MergeOptions = {}): string {\n return LegacyBitMap.mergeContent(bitmapContent, otherBitmapContent, opts);\n }\n\n getPath(): PathOsBasedAbsolute {\n return this.legacyBitMap.mapPath;\n }\n\n getAllRootDirs(): string[] {\n return Object.keys(this.legacyBitMap.getAllTrackDirs());\n }\n\n /**\n * adds component config to the .bitmap file.\n * later, upon `bit tag`, the data is saved in the scope.\n * returns a boolean indicating whether a change has been made.\n */\n addComponentConfig(\n id: ComponentID,\n aspectId: string,\n config: Record<string, any> = {},\n shouldMergeConfig = false\n ): boolean {\n if (!aspectId || typeof aspectId !== 'string') throw new Error(`expect aspectId to be string, got ${aspectId}`);\n const bitMapEntry = this.getBitmapEntry(id, { ignoreVersion: true });\n const currentConfig = (bitMapEntry.config ||= {})[aspectId];\n if (isEqual(currentConfig, config)) {\n return false; // no changes\n }\n const getNewConfig = () => {\n if (!config) return null;\n if (!shouldMergeConfig) return config;\n // should merge\n if (!currentConfig) return config;\n if (currentConfig === '-') return config;\n // lodash merge performs a deep merge. (the native concatenation don't)\n return merge(currentConfig, config);\n };\n const newConfig = getNewConfig();\n if (newConfig) {\n bitMapEntry.config[aspectId] = newConfig;\n } else {\n delete bitMapEntry.config[aspectId];\n }\n this.legacyBitMap.markAsChanged();\n\n return true; // changes have been made\n }\n\n updateDefaultScope(oldScope: string, newScope: string) {\n const changedId: ComponentID[] = [];\n this.legacyBitMap.components.forEach((componentMap) => {\n // only new components (not snapped/tagged) can be changed\n if (componentMap.defaultScope === oldScope && !componentMap.id.hasVersion()) {\n componentMap.defaultScope = newScope;\n componentMap.id = componentMap.id.changeDefaultScope(newScope);\n changedId.push(componentMap.id);\n }\n });\n if (changedId.length) {\n this.legacyBitMap.markAsChanged();\n }\n return changedId;\n }\n\n markAsChanged() {\n this.legacyBitMap.markAsChanged();\n }\n\n removeComponentConfig(id: ComponentID, aspectId: string, markWithMinusIfNotExist: boolean): boolean {\n if (!aspectId || typeof aspectId !== 'string') throw new Error(`expect aspectId to be string, got ${aspectId}`);\n const bitMapEntry = this.getBitmapEntry(id, { ignoreVersion: true });\n const currentConfig = (bitMapEntry.config ||= {})[aspectId];\n if (currentConfig) {\n delete bitMapEntry.config[aspectId];\n } else {\n if (!markWithMinusIfNotExist) {\n return false; // no changes\n }\n bitMapEntry.config[aspectId] = REMOVE_EXTENSION_SPECIAL_SIGN;\n }\n\n this.legacyBitMap.markAsChanged();\n\n return true; // changes have been made\n }\n\n removeEntireConfig(id: ComponentID): boolean {\n const bitMapEntry = this.getBitmapEntry(id, { ignoreVersion: true });\n if (!bitMapEntry.config) return false;\n delete bitMapEntry.config;\n this.legacyBitMap.markAsChanged();\n return true;\n }\n\n setEntireConfig(id: ComponentID, config: Record<string, any>) {\n const bitMapEntry = this.getBitmapEntry(id, { ignoreVersion: true });\n bitMapEntry.config = config;\n this.legacyBitMap.markAsChanged();\n }\n\n removeDefaultScope(id: ComponentID) {\n const bitMapEntry = this.getBitmapEntry(id, { ignoreVersion: true });\n if (bitMapEntry.defaultScope) {\n delete bitMapEntry.defaultScope;\n this.legacyBitMap.markAsChanged();\n }\n }\n\n setDefaultScope(id: ComponentID, defaultScope: string) {\n const bitMapEntry = this.getBitmapEntry(id, { ignoreVersion: true });\n bitMapEntry.defaultScope = defaultScope;\n bitMapEntry.id = bitMapEntry.id.changeDefaultScope(defaultScope);\n this.legacyBitMap.markAsChanged();\n }\n\n setLocalOnly(ids: ComponentID[]) {\n ids.forEach((id) => {\n const bitMapEntry = this.getBitmapEntry(id);\n bitMapEntry.localOnly = true;\n });\n this.legacyBitMap.markAsChanged();\n }\n unsetLocalOnly(ids: ComponentID[]): ComponentID[] {\n const successfullyUnset: ComponentID[] = [];\n ids.forEach((id) => {\n const bitMapEntry = this.getBitmapEntry(id);\n if (!bitMapEntry.localOnly) return;\n bitMapEntry.localOnly = false;\n successfullyUnset.push(id);\n });\n this.legacyBitMap.markAsChanged();\n return successfullyUnset;\n }\n listLocalOnly() {\n const allIds = this.legacyBitMap.getAllBitIds();\n return allIds.filter((id) => this.getBitmapEntry(id).localOnly);\n }\n\n /**\n * write .bitmap object to the filesystem\n * optionally pass a reason for the change to be saved in the local scope `bitmap-history-metadata.txt` file.\n */\n async write(reasonForChange?: string) {\n await this.consumer.writeBitMap(reasonForChange);\n }\n\n /**\n * get the data saved in the .bitmap file for this component-id.\n * throws if not found\n * @see this.getBitmapEntryIfExist\n */\n getBitmapEntry(id: ComponentID, { ignoreVersion }: GetBitMapComponentOptions = {}): ComponentMap {\n return this.legacyBitMap.getComponent(id, { ignoreVersion });\n }\n\n getBitmapEntryIfExist(id: ComponentID, { ignoreVersion }: GetBitMapComponentOptions = {}): ComponentMap | undefined {\n return this.legacyBitMap.getComponentIfExist(id, { ignoreVersion });\n }\n\n getAspectIdFromConfig(\n componentId: ComponentID,\n aspectId: ComponentID,\n ignoreAspectVersion = false\n ): string | undefined {\n const bitMapEntry = this.getBitmapEntry(componentId);\n const config = bitMapEntry.config;\n if (!config) {\n return undefined;\n }\n if (config[aspectId.toString()]) {\n return aspectId.toString();\n }\n if (!ignoreAspectVersion) {\n return undefined;\n }\n const allVersions = Object.keys(config).filter((id) => id.startsWith(`${aspectId.toStringWithoutVersion()}@`));\n if (allVersions.length > 1) {\n throw new BitError(\n `error: the same aspect ${aspectId.toStringWithoutVersion()} configured multiple times for \"${componentId.toString()}\"\\n${allVersions.join('\\n')}`\n );\n }\n return allVersions.length === 1 ? allVersions[0] : undefined;\n }\n\n /**\n * components that were not tagged yet are safe to rename them from the .bitmap file.\n */\n renameNewComponent(sourceId: ComponentID, targetId: ComponentID) {\n const bitMapEntry = this.getBitmapEntry(sourceId);\n if (bitMapEntry.id.hasVersion()) {\n throw new Error(`unable to rename tagged or exported component: ${bitMapEntry.id.toString()}`);\n }\n if (sourceId.isEqual(targetId)) {\n throw new Error(`source-id and target-id are equal: \"${sourceId.toString()}\"`);\n }\n if (sourceId.fullName !== targetId.fullName) {\n this.legacyBitMap.removeComponent(bitMapEntry.id);\n bitMapEntry.id = targetId;\n if (sourceId.scope !== targetId.scope) bitMapEntry.defaultScope = targetId.scope;\n this.legacyBitMap.setComponent(bitMapEntry.id, bitMapEntry);\n } else if (sourceId.scope !== targetId.scope) {\n this.setDefaultScope(sourceId, targetId.scope);\n }\n }\n\n /**\n * helpful when reaming an aspect and this aspect is used in the config of other components.\n */\n renameAspectInConfig(sourceId: ComponentID, targetId: ComponentID) {\n this.legacyBitMap.components.forEach((componentMap) => {\n const config = componentMap.config;\n if (!config) return;\n Object.keys(config).forEach((aspectId) => {\n if (aspectId === sourceId.toString()) {\n config[targetId.toString()] = config[aspectId];\n delete config[aspectId];\n this.markAsChanged();\n }\n if (aspectId === EnvsAspect.id) {\n const envConfig = config[aspectId];\n if (envConfig !== '-' && envConfig.env === sourceId.toString()) {\n envConfig.env = targetId.toString();\n this.markAsChanged();\n }\n }\n });\n componentMap.config = config;\n });\n }\n\n removeComponent(id: ComponentID) {\n this.legacyBitMap.removeComponent(id);\n }\n\n /**\n * this is the lane-id of the recently exported lane. in case of a new lane, which was not exported yet, this will be\n * empty.\n */\n getExportedLaneId(): LaneId | undefined {\n return this.legacyBitMap.isLaneExported ? this.legacyBitMap.laneId : undefined;\n }\n\n makeComponentsAvailableOnMain(ids: ComponentID[]) {\n ids.forEach((id) => {\n const componentMap = this.getBitmapEntry(id);\n componentMap.isAvailableOnCurrentLane = true;\n delete componentMap.onLanesOnly;\n });\n this.legacyBitMap.markAsChanged();\n }\n\n /**\n * whether .bitmap file has changed in-memory\n */\n hasChanged(): boolean {\n return this.legacyBitMap.hasChanged;\n }\n\n takeSnapshot(): ComponentMap[] {\n return this.legacyBitMap.components.map((comp) => comp.clone());\n }\n\n restoreFromSnapshot(componentMaps: ComponentMap[]) {\n this.legacyBitMap.components = componentMaps;\n this.legacyBitMap._invalidateCache();\n }\n\n /**\n * .bitmap file could be changed by other sources (e.g. manually or by \"git pull\") not only by bit.\n * this method returns the timestamp when the .bitmap has changed through bit. (e.g. as part of snap/tag/export/merge\n * process)\n */\n async getLastModifiedBitmapThroughBit(): Promise<number | undefined> {\n const bitmapHistoryDir = this.consumer.getBitmapHistoryDir();\n const stat = await getPathStatIfExist(bitmapHistoryDir);\n if (!stat) return undefined;\n return stat.mtimeMs;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_lodash","data","require","_legacy","_legacy2","_bitError","_envs","_toolboxFs","BitMap","constructor","legacyBitMap","consumer","mergeBitmaps","bitmapContent","otherBitmapContent","opts","LegacyBitMap","mergeContent","getPath","mapPath","getAllRootDirs","Object","keys","getAllTrackDirs","addComponentConfig","id","aspectId","config","shouldMergeConfig","Error","bitMapEntry","getBitmapEntry","ignoreVersion","currentConfig","isEqual","getNewConfig","merge","newConfig","length","markAsChanged","updateDefaultScope","oldScope","newScope","changedId","components","forEach","componentMap","defaultScope","hasVersion","changeDefaultScope","push","removeComponentConfig","markWithMinusIfNotExist","REMOVE_EXTENSION_SPECIAL_SIGN","removeEntireConfig","setEntireConfig","removeDefaultScope","setDefaultScope","setLocalOnly","ids","localOnly","unsetLocalOnly","successfullyUnset","listLocalOnly","allIds","getAllBitIds","filter","write","reasonForChange","writeBitMap","getComponent","getBitmapEntryIfExist","getComponentIfExist","getAspectIdFromConfig","componentId","ignoreAspectVersion","undefined","toString","allVersions","startsWith","toStringWithoutVersion","BitError","join","renameNewComponent","sourceId","targetId","fullName","removeComponent","scope","setComponent","renameAspectInConfig","EnvsAspect","envConfig","env","getExportedLaneId","isLaneExported","laneId","makeComponentsAvailableOnMain","isAvailableOnCurrentLane","onLanesOnly","hasChanged","takeSnapshot","map","comp","clone","restoreFromSnapshot","componentMaps","_invalidateCache","getLastModifiedBitmapThroughBit","bitmapHistoryDir","getBitmapHistoryDir","stat","getPathStatIfExist","mtimeMs","exports"],"sources":["bit-map.ts"],"sourcesContent":["import { isEqual, merge } from 'lodash';\nimport type { ComponentID } from '@teambit/component-id';\nimport type { ComponentMap, GetBitMapComponentOptions } from '@teambit/legacy.bit-map';\nimport { BitMap as LegacyBitMap } from '@teambit/legacy.bit-map';\nimport type { Consumer } from '@teambit/legacy.consumer';\nimport { REMOVE_EXTENSION_SPECIAL_SIGN } from '@teambit/legacy.extension-data';\nimport { BitError } from '@teambit/bit-error';\nimport type { LaneId } from '@teambit/lane-id';\nimport { EnvsAspect } from '@teambit/envs';\nimport type { PathOsBasedAbsolute } from '@teambit/toolbox.path.path';\nimport { getPathStatIfExist } from '@teambit/toolbox.fs.last-modified';\n\nexport type MergeOptions = {\n mergeStrategy?: 'theirs' | 'ours' | 'manual';\n};\n/**\n * consider extracting to a new component.\n * (pro: making Workspace aspect smaller. con: it's an implementation details of the workspace)\n */\nexport class BitMap {\n constructor(\n private legacyBitMap: LegacyBitMap,\n private consumer: Consumer\n ) {}\n\n mergeBitmaps(bitmapContent: string, otherBitmapContent: string, opts: MergeOptions = {}): string {\n return LegacyBitMap.mergeContent(bitmapContent, otherBitmapContent, opts);\n }\n\n getPath(): PathOsBasedAbsolute {\n return this.legacyBitMap.mapPath;\n }\n\n getAllRootDirs(): string[] {\n return Object.keys(this.legacyBitMap.getAllTrackDirs());\n }\n\n /**\n * adds component config to the .bitmap file.\n * later, upon `bit tag`, the data is saved in the scope.\n * returns a boolean indicating whether a change has been made.\n */\n addComponentConfig(\n id: ComponentID,\n aspectId: string,\n config: Record<string, any> = {},\n shouldMergeConfig = false\n ): boolean {\n if (!aspectId || typeof aspectId !== 'string') throw new Error(`expect aspectId to be string, got ${aspectId}`);\n const bitMapEntry = this.getBitmapEntry(id, { ignoreVersion: true });\n const currentConfig = bitMapEntry.config?.[aspectId];\n if (isEqual(currentConfig, config)) {\n return false; // no changes\n }\n const getNewConfig = () => {\n if (!config) return null;\n if (!shouldMergeConfig) return config;\n // should merge\n if (!currentConfig) return config;\n if (currentConfig === '-') return config;\n // lodash merge performs a deep merge. (the native concatenation don't)\n return merge(currentConfig, config);\n };\n const newConfig = getNewConfig();\n if (newConfig) {\n (bitMapEntry.config ||= {})[aspectId] = newConfig;\n } else {\n if (!currentConfig) {\n return false; // the aspect is not configured, so there is nothing to delete\n }\n delete bitMapEntry.config![aspectId];\n // avoid leaving an empty `config: {}` object in the .bitmap file\n if (!Object.keys(bitMapEntry.config!).length) delete bitMapEntry.config;\n }\n this.legacyBitMap.markAsChanged();\n\n return true; // changes have been made\n }\n\n updateDefaultScope(oldScope: string, newScope: string) {\n const changedId: ComponentID[] = [];\n this.legacyBitMap.components.forEach((componentMap) => {\n // only new components (not snapped/tagged) can be changed\n if (componentMap.defaultScope === oldScope && !componentMap.id.hasVersion()) {\n componentMap.defaultScope = newScope;\n componentMap.id = componentMap.id.changeDefaultScope(newScope);\n changedId.push(componentMap.id);\n }\n });\n if (changedId.length) {\n this.legacyBitMap.markAsChanged();\n }\n return changedId;\n }\n\n markAsChanged() {\n this.legacyBitMap.markAsChanged();\n }\n\n removeComponentConfig(id: ComponentID, aspectId: string, markWithMinusIfNotExist: boolean): boolean {\n if (!aspectId || typeof aspectId !== 'string') throw new Error(`expect aspectId to be string, got ${aspectId}`);\n const bitMapEntry = this.getBitmapEntry(id, { ignoreVersion: true });\n const currentConfig = bitMapEntry.config?.[aspectId];\n if (currentConfig) {\n delete bitMapEntry.config![aspectId];\n // avoid leaving an empty `config: {}` object in the .bitmap file\n if (!Object.keys(bitMapEntry.config!).length) delete bitMapEntry.config;\n } else {\n if (!markWithMinusIfNotExist) {\n return false; // no changes\n }\n (bitMapEntry.config ||= {})[aspectId] = REMOVE_EXTENSION_SPECIAL_SIGN;\n }\n\n this.legacyBitMap.markAsChanged();\n\n return true; // changes have been made\n }\n\n removeEntireConfig(id: ComponentID): boolean {\n const bitMapEntry = this.getBitmapEntry(id, { ignoreVersion: true });\n if (!bitMapEntry.config) return false;\n delete bitMapEntry.config;\n this.legacyBitMap.markAsChanged();\n return true;\n }\n\n setEntireConfig(id: ComponentID, config: Record<string, any>) {\n const bitMapEntry = this.getBitmapEntry(id, { ignoreVersion: true });\n bitMapEntry.config = config;\n this.legacyBitMap.markAsChanged();\n }\n\n removeDefaultScope(id: ComponentID) {\n const bitMapEntry = this.getBitmapEntry(id, { ignoreVersion: true });\n if (bitMapEntry.defaultScope) {\n delete bitMapEntry.defaultScope;\n this.legacyBitMap.markAsChanged();\n }\n }\n\n setDefaultScope(id: ComponentID, defaultScope: string) {\n const bitMapEntry = this.getBitmapEntry(id, { ignoreVersion: true });\n bitMapEntry.defaultScope = defaultScope;\n bitMapEntry.id = bitMapEntry.id.changeDefaultScope(defaultScope);\n this.legacyBitMap.markAsChanged();\n }\n\n setLocalOnly(ids: ComponentID[]) {\n ids.forEach((id) => {\n const bitMapEntry = this.getBitmapEntry(id);\n bitMapEntry.localOnly = true;\n });\n this.legacyBitMap.markAsChanged();\n }\n unsetLocalOnly(ids: ComponentID[]): ComponentID[] {\n const successfullyUnset: ComponentID[] = [];\n ids.forEach((id) => {\n const bitMapEntry = this.getBitmapEntry(id);\n if (!bitMapEntry.localOnly) return;\n bitMapEntry.localOnly = false;\n successfullyUnset.push(id);\n });\n this.legacyBitMap.markAsChanged();\n return successfullyUnset;\n }\n listLocalOnly() {\n const allIds = this.legacyBitMap.getAllBitIds();\n return allIds.filter((id) => this.getBitmapEntry(id).localOnly);\n }\n\n /**\n * write .bitmap object to the filesystem\n * optionally pass a reason for the change to be saved in the local scope `bitmap-history-metadata.txt` file.\n */\n async write(reasonForChange?: string) {\n await this.consumer.writeBitMap(reasonForChange);\n }\n\n /**\n * get the data saved in the .bitmap file for this component-id.\n * throws if not found\n * @see this.getBitmapEntryIfExist\n */\n getBitmapEntry(id: ComponentID, { ignoreVersion }: GetBitMapComponentOptions = {}): ComponentMap {\n return this.legacyBitMap.getComponent(id, { ignoreVersion });\n }\n\n getBitmapEntryIfExist(id: ComponentID, { ignoreVersion }: GetBitMapComponentOptions = {}): ComponentMap | undefined {\n return this.legacyBitMap.getComponentIfExist(id, { ignoreVersion });\n }\n\n getAspectIdFromConfig(\n componentId: ComponentID,\n aspectId: ComponentID,\n ignoreAspectVersion = false\n ): string | undefined {\n const bitMapEntry = this.getBitmapEntry(componentId);\n const config = bitMapEntry.config;\n if (!config) {\n return undefined;\n }\n if (config[aspectId.toString()]) {\n return aspectId.toString();\n }\n if (!ignoreAspectVersion) {\n return undefined;\n }\n const allVersions = Object.keys(config).filter((id) => id.startsWith(`${aspectId.toStringWithoutVersion()}@`));\n if (allVersions.length > 1) {\n throw new BitError(\n `error: the same aspect ${aspectId.toStringWithoutVersion()} configured multiple times for \"${componentId.toString()}\"\\n${allVersions.join('\\n')}`\n );\n }\n return allVersions.length === 1 ? allVersions[0] : undefined;\n }\n\n /**\n * components that were not tagged yet are safe to rename them from the .bitmap file.\n */\n renameNewComponent(sourceId: ComponentID, targetId: ComponentID) {\n const bitMapEntry = this.getBitmapEntry(sourceId);\n if (bitMapEntry.id.hasVersion()) {\n throw new Error(`unable to rename tagged or exported component: ${bitMapEntry.id.toString()}`);\n }\n if (sourceId.isEqual(targetId)) {\n throw new Error(`source-id and target-id are equal: \"${sourceId.toString()}\"`);\n }\n if (sourceId.fullName !== targetId.fullName) {\n this.legacyBitMap.removeComponent(bitMapEntry.id);\n bitMapEntry.id = targetId;\n if (sourceId.scope !== targetId.scope) bitMapEntry.defaultScope = targetId.scope;\n this.legacyBitMap.setComponent(bitMapEntry.id, bitMapEntry);\n } else if (sourceId.scope !== targetId.scope) {\n this.setDefaultScope(sourceId, targetId.scope);\n }\n }\n\n /**\n * helpful when reaming an aspect and this aspect is used in the config of other components.\n */\n renameAspectInConfig(sourceId: ComponentID, targetId: ComponentID) {\n this.legacyBitMap.components.forEach((componentMap) => {\n const config = componentMap.config;\n if (!config) return;\n Object.keys(config).forEach((aspectId) => {\n if (aspectId === sourceId.toString()) {\n config[targetId.toString()] = config[aspectId];\n delete config[aspectId];\n this.markAsChanged();\n }\n if (aspectId === EnvsAspect.id) {\n const envConfig = config[aspectId];\n if (envConfig !== '-' && envConfig.env === sourceId.toString()) {\n envConfig.env = targetId.toString();\n this.markAsChanged();\n }\n }\n });\n componentMap.config = config;\n });\n }\n\n removeComponent(id: ComponentID) {\n this.legacyBitMap.removeComponent(id);\n }\n\n /**\n * this is the lane-id of the recently exported lane. in case of a new lane, which was not exported yet, this will be\n * empty.\n */\n getExportedLaneId(): LaneId | undefined {\n return this.legacyBitMap.isLaneExported ? this.legacyBitMap.laneId : undefined;\n }\n\n makeComponentsAvailableOnMain(ids: ComponentID[]) {\n ids.forEach((id) => {\n const componentMap = this.getBitmapEntry(id);\n componentMap.isAvailableOnCurrentLane = true;\n delete componentMap.onLanesOnly;\n });\n this.legacyBitMap.markAsChanged();\n }\n\n /**\n * whether .bitmap file has changed in-memory\n */\n hasChanged(): boolean {\n return this.legacyBitMap.hasChanged;\n }\n\n takeSnapshot(): ComponentMap[] {\n return this.legacyBitMap.components.map((comp) => comp.clone());\n }\n\n restoreFromSnapshot(componentMaps: ComponentMap[]) {\n this.legacyBitMap.components = componentMaps;\n this.legacyBitMap._invalidateCache();\n }\n\n /**\n * .bitmap file could be changed by other sources (e.g. manually or by \"git pull\") not only by bit.\n * this method returns the timestamp when the .bitmap has changed through bit. (e.g. as part of snap/tag/export/merge\n * process)\n */\n async getLastModifiedBitmapThroughBit(): Promise<number | undefined> {\n const bitmapHistoryDir = this.consumer.getBitmapHistoryDir();\n const stat = await getPathStatIfExist(bitmapHistoryDir);\n if (!stat) return undefined;\n return stat.mtimeMs;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+
3
+ function _chai() {
4
+ const data = require("chai");
5
+ _chai = function () {
6
+ return data;
7
+ };
8
+ return data;
9
+ }
10
+ function _componentId() {
11
+ const data = require("@teambit/component-id");
12
+ _componentId = function () {
13
+ return data;
14
+ };
15
+ return data;
16
+ }
17
+ function _bitMap() {
18
+ const data = require("./bit-map");
19
+ _bitMap = function () {
20
+ return data;
21
+ };
22
+ return data;
23
+ }
24
+ const compId = _componentId().ComponentID.fromString('teambit.scope/comp1');
25
+ const envId = 'teambit.node/envs/node-babel-mocha@2.0.5';
26
+ const otherAspectId = 'teambit.pkg/pkg';
27
+
28
+ /**
29
+ * wrap a single .bitmap entry, so the config-mutating methods can be tested in isolation.
30
+ * when `config` is undefined, the entry has no `config` property at all, as it is in a .bitmap file.
31
+ */
32
+ function bitMapWithEntry(config) {
33
+ const entry = {};
34
+ if (config) entry.config = config;
35
+ const markedAsChanged = {
36
+ count: 0
37
+ };
38
+ const legacyBitMap = {
39
+ getComponent: () => entry,
40
+ markAsChanged: () => {
41
+ markedAsChanged.count += 1;
42
+ }
43
+ };
44
+ return {
45
+ bitMap: new (_bitMap().BitMap)(legacyBitMap, {}),
46
+ entry,
47
+ markedAsChanged
48
+ };
49
+ }
50
+ describe('BitMap', () => {
51
+ describe('removeComponentConfig', () => {
52
+ it('should delete the entire config object once the last aspect was removed', () => {
53
+ const {
54
+ bitMap,
55
+ entry
56
+ } = bitMapWithEntry({
57
+ [envId]: {}
58
+ });
59
+ (0, _chai().expect)(bitMap.removeComponentConfig(compId, envId, false)).to.be.true;
60
+ // an empty `config: {}` is meaningless in .bitmap, it should not be left behind
61
+ (0, _chai().expect)(entry).to.not.have.property('config');
62
+ });
63
+ it('should keep the other aspects when one of several is removed', () => {
64
+ const {
65
+ bitMap,
66
+ entry
67
+ } = bitMapWithEntry({
68
+ [envId]: {},
69
+ [otherAspectId]: {
70
+ some: 'config'
71
+ }
72
+ });
73
+ (0, _chai().expect)(bitMap.removeComponentConfig(compId, envId, false)).to.be.true;
74
+ (0, _chai().expect)(entry.config).to.deep.equal({
75
+ [otherAspectId]: {
76
+ some: 'config'
77
+ }
78
+ });
79
+ });
80
+ it('should not create a config object when the aspect is not configured', () => {
81
+ const {
82
+ bitMap,
83
+ entry
84
+ } = bitMapWithEntry();
85
+ (0, _chai().expect)(bitMap.removeComponentConfig(compId, envId, false)).to.be.false;
86
+ (0, _chai().expect)(entry).to.not.have.property('config');
87
+ });
88
+ it('should mark the aspect with "-" when markWithMinusIfNotExist is true', () => {
89
+ const {
90
+ bitMap,
91
+ entry
92
+ } = bitMapWithEntry();
93
+ (0, _chai().expect)(bitMap.removeComponentConfig(compId, envId, true)).to.be.true;
94
+ // "-" is what actually removes an aspect that comes from the model. it must keep working.
95
+ (0, _chai().expect)(entry.config).to.deep.equal({
96
+ [envId]: '-'
97
+ });
98
+ });
99
+ });
100
+ describe('addComponentConfig', () => {
101
+ it('should add the aspect config when the entry has no config yet', () => {
102
+ const {
103
+ bitMap,
104
+ entry
105
+ } = bitMapWithEntry();
106
+ (0, _chai().expect)(bitMap.addComponentConfig(compId, envId)).to.be.true;
107
+ (0, _chai().expect)(entry.config).to.deep.equal({
108
+ [envId]: {}
109
+ });
110
+ });
111
+ it('should delete the entire config object when the last aspect config is nullified', () => {
112
+ const {
113
+ bitMap,
114
+ entry
115
+ } = bitMapWithEntry({
116
+ [envId]: {}
117
+ });
118
+ (0, _chai().expect)(bitMap.addComponentConfig(compId, envId, null)).to.be.true;
119
+ (0, _chai().expect)(entry).to.not.have.property('config');
120
+ });
121
+ it('should report no change when nullifying an aspect while the entry has no config', () => {
122
+ const {
123
+ bitMap,
124
+ entry,
125
+ markedAsChanged
126
+ } = bitMapWithEntry();
127
+ (0, _chai().expect)(bitMap.addComponentConfig(compId, envId, null)).to.be.false;
128
+ (0, _chai().expect)(entry).to.not.have.property('config');
129
+ // nothing was mutated, so the .bitmap must not be marked as changed
130
+ (0, _chai().expect)(markedAsChanged.count).to.equal(0);
131
+ });
132
+ it('should report no change when nullifying an aspect that is not configured', () => {
133
+ const {
134
+ bitMap,
135
+ entry,
136
+ markedAsChanged
137
+ } = bitMapWithEntry({
138
+ [otherAspectId]: {
139
+ some: 'config'
140
+ }
141
+ });
142
+ (0, _chai().expect)(bitMap.addComponentConfig(compId, envId, null)).to.be.false;
143
+ (0, _chai().expect)(entry.config).to.deep.equal({
144
+ [otherAspectId]: {
145
+ some: 'config'
146
+ }
147
+ });
148
+ (0, _chai().expect)(markedAsChanged.count).to.equal(0);
149
+ });
150
+ });
151
+ });
152
+
153
+ //# sourceMappingURL=bit-map.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_chai","data","require","_componentId","_bitMap","compId","ComponentID","fromString","envId","otherAspectId","bitMapWithEntry","config","entry","markedAsChanged","count","legacyBitMap","getComponent","markAsChanged","bitMap","BitMap","describe","it","expect","removeComponentConfig","to","be","true","not","have","property","some","deep","equal","false","addComponentConfig"],"sources":["bit-map.spec.ts"],"sourcesContent":["import { expect } from 'chai';\nimport { ComponentID } from '@teambit/component-id';\nimport type { BitMap as LegacyBitMap, ComponentMap } from '@teambit/legacy.bit-map';\nimport type { Consumer } from '@teambit/legacy.consumer';\nimport { BitMap } from './bit-map';\n\nconst compId = ComponentID.fromString('teambit.scope/comp1');\nconst envId = 'teambit.node/envs/node-babel-mocha@2.0.5';\nconst otherAspectId = 'teambit.pkg/pkg';\n\n/**\n * wrap a single .bitmap entry, so the config-mutating methods can be tested in isolation.\n * when `config` is undefined, the entry has no `config` property at all, as it is in a .bitmap file.\n */\nfunction bitMapWithEntry(config?: Record<string, any>) {\n const entry = {} as ComponentMap;\n if (config) entry.config = config;\n const markedAsChanged = { count: 0 };\n const legacyBitMap = {\n getComponent: () => entry,\n markAsChanged: () => {\n markedAsChanged.count += 1;\n },\n } as unknown as LegacyBitMap;\n return { bitMap: new BitMap(legacyBitMap, {} as Consumer), entry, markedAsChanged };\n}\n\ndescribe('BitMap', () => {\n describe('removeComponentConfig', () => {\n it('should delete the entire config object once the last aspect was removed', () => {\n const { bitMap, entry } = bitMapWithEntry({ [envId]: {} });\n expect(bitMap.removeComponentConfig(compId, envId, false)).to.be.true;\n // an empty `config: {}` is meaningless in .bitmap, it should not be left behind\n expect(entry).to.not.have.property('config');\n });\n\n it('should keep the other aspects when one of several is removed', () => {\n const { bitMap, entry } = bitMapWithEntry({ [envId]: {}, [otherAspectId]: { some: 'config' } });\n expect(bitMap.removeComponentConfig(compId, envId, false)).to.be.true;\n expect(entry.config).to.deep.equal({ [otherAspectId]: { some: 'config' } });\n });\n\n it('should not create a config object when the aspect is not configured', () => {\n const { bitMap, entry } = bitMapWithEntry();\n expect(bitMap.removeComponentConfig(compId, envId, false)).to.be.false;\n expect(entry).to.not.have.property('config');\n });\n\n it('should mark the aspect with \"-\" when markWithMinusIfNotExist is true', () => {\n const { bitMap, entry } = bitMapWithEntry();\n expect(bitMap.removeComponentConfig(compId, envId, true)).to.be.true;\n // \"-\" is what actually removes an aspect that comes from the model. it must keep working.\n expect(entry.config).to.deep.equal({ [envId]: '-' });\n });\n });\n\n describe('addComponentConfig', () => {\n it('should add the aspect config when the entry has no config yet', () => {\n const { bitMap, entry } = bitMapWithEntry();\n expect(bitMap.addComponentConfig(compId, envId)).to.be.true;\n expect(entry.config).to.deep.equal({ [envId]: {} });\n });\n\n it('should delete the entire config object when the last aspect config is nullified', () => {\n const { bitMap, entry } = bitMapWithEntry({ [envId]: {} });\n expect(bitMap.addComponentConfig(compId, envId, null as any)).to.be.true;\n expect(entry).to.not.have.property('config');\n });\n\n it('should report no change when nullifying an aspect while the entry has no config', () => {\n const { bitMap, entry, markedAsChanged } = bitMapWithEntry();\n expect(bitMap.addComponentConfig(compId, envId, null as any)).to.be.false;\n expect(entry).to.not.have.property('config');\n // nothing was mutated, so the .bitmap must not be marked as changed\n expect(markedAsChanged.count).to.equal(0);\n });\n\n it('should report no change when nullifying an aspect that is not configured', () => {\n const { bitMap, entry, markedAsChanged } = bitMapWithEntry({ [otherAspectId]: { some: 'config' } });\n expect(bitMap.addComponentConfig(compId, envId, null as any)).to.be.false;\n expect(entry.config).to.deep.equal({ [otherAspectId]: { some: 'config' } });\n expect(markedAsChanged.count).to.equal(0);\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.workspace_workspace@1.0.1143/dist/workspace.composition.js';
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.workspace_workspace@1.0.1143/dist/workspace.docs.mdx';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.workspace_workspace@1.0.1144/dist/workspace.composition.js';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.workspace_workspace@1.0.1144/dist/workspace.docs.mdx';
3
3
 
4
4
  export const compositions = [compositions_0];
5
5
  export const overview = [overview_0];
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/workspace",
3
- "version": "1.0.1143",
3
+ "version": "1.0.1144",
4
4
  "homepage": "https://bit.cloud/teambit/workspace/workspace",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.workspace",
8
8
  "name": "workspace",
9
- "version": "1.0.1143"
9
+ "version": "1.0.1144"
10
10
  },
11
11
  "dependencies": {
12
12
  "lodash": "4.17.21",
@@ -101,23 +101,23 @@
101
101
  "@teambit/workspace.hooks.use-url-change-broadcaster": "0.0.5",
102
102
  "@teambit/workspace.ui.preserve-workspace-mode": "0.0.6",
103
103
  "@teambit/evangelist.elements.icon": "1.0.5",
104
- "@teambit/component": "1.0.1143",
105
- "@teambit/dependency-resolver": "1.0.1143",
106
- "@teambit/envs": "1.0.1143",
107
- "@teambit/objects": "0.0.650",
108
- "@teambit/scope": "1.0.1143",
109
- "@teambit/graph": "1.0.1143",
110
- "@teambit/isolator": "1.0.1143",
111
- "@teambit/component-tree": "1.0.1143",
112
- "@teambit/watcher": "1.0.1143",
113
- "@teambit/aspect-loader": "1.0.1143",
114
- "@teambit/graphql": "1.0.1143",
115
- "@teambit/bundler": "1.0.1143",
116
- "@teambit/ui": "1.0.1143",
117
- "@teambit/command-bar": "1.0.1143",
118
- "@teambit/sidebar": "1.0.1143",
119
- "@teambit/pubsub": "1.0.1143",
120
- "@teambit/deprecation": "1.0.1143"
104
+ "@teambit/component": "1.0.1144",
105
+ "@teambit/dependency-resolver": "1.0.1144",
106
+ "@teambit/envs": "1.0.1144",
107
+ "@teambit/objects": "0.0.651",
108
+ "@teambit/scope": "1.0.1144",
109
+ "@teambit/graph": "1.0.1144",
110
+ "@teambit/isolator": "1.0.1144",
111
+ "@teambit/component-tree": "1.0.1144",
112
+ "@teambit/watcher": "1.0.1144",
113
+ "@teambit/aspect-loader": "1.0.1144",
114
+ "@teambit/graphql": "1.0.1144",
115
+ "@teambit/bundler": "1.0.1144",
116
+ "@teambit/ui": "1.0.1144",
117
+ "@teambit/command-bar": "1.0.1144",
118
+ "@teambit/sidebar": "1.0.1144",
119
+ "@teambit/pubsub": "1.0.1144",
120
+ "@teambit/deprecation": "1.0.1144"
121
121
  },
122
122
  "devDependencies": {
123
123
  "@types/lodash": "4.14.165",
@@ -135,6 +135,7 @@
135
135
  "peerDependencies": {
136
136
  "@apollo/client": "^3.12.0",
137
137
  "react": "^17.0.0 || ^18.0.0 || ^19.0.0",
138
+ "chai": "5.2.1",
138
139
  "react-router-dom": "^6.16.0"
139
140
  },
140
141
  "license": "Apache-2.0",