@teambit/objects 0.0.68 → 0.0.70

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.
@@ -50,7 +50,7 @@ export default class VersionHistory extends BitObject {
50
50
  getAncestor(numOfGenerationsToGoBack: number, ref: Ref): Ref;
51
51
  getGraph(modelComponent?: ModelComponent, laneHeads?: {
52
52
  [hash: string]: string[];
53
- }, shortHash?: boolean): VersionHistoryGraph;
53
+ }, shortHash?: boolean, limitVersions?: number): VersionHistoryGraph;
54
54
  get compId(): ComponentID;
55
55
  static create(name: string, scope: string, versions: VersionParents[]): VersionHistory;
56
56
  static parse(contents: string): VersionHistory;
@@ -204,10 +204,12 @@ class VersionHistory extends _objects().BitObject {
204
204
  const parent = versionData.parents[0];
205
205
  return this.getAncestor(numOfGenerationsToGoBack - 1, parent);
206
206
  }
207
- getGraph(modelComponent, laneHeads, shortHash = false) {
207
+ getGraph(modelComponent, laneHeads, shortHash = false, limitVersions) {
208
208
  const refToStr = ref => shortHash ? ref.toShortString() : ref.toString();
209
209
  const graph = new (_graph().Graph)();
210
- const allHashes = this.versions.map(v => (0, _lodash().compact)([v.hash, ...v.parents, ...(v.squashed || []), v.unrelated])).flat();
210
+ const allVersions = limitVersions ? [...this.versions].slice(-limitVersions) : this.versions;
211
+ const allHashes = allVersions.map(v => (0, _lodash().compact)([v.hash, ...v.parents, ...(v.squashed || []), v.unrelated])).flat();
212
+ const allHashesUniq = (0, _lodash().uniqBy)(allHashes, 'hash');
211
213
  const getMetadata = ref => {
212
214
  if (!modelComponent || !laneHeads) return undefined;
213
215
  const tag = modelComponent.getTagOfRefIfExists(ref);
@@ -217,8 +219,8 @@ class VersionHistory extends _objects().BitObject {
217
219
  pointers
218
220
  };
219
221
  };
220
- const nodes = allHashes.map(v => new (_graph().Node)(refToStr(v), getMetadata(v) || refToStr(v)));
221
- const edges = this.versions.map(v => {
222
+ const nodes = allHashesUniq.map(v => new (_graph().Node)(refToStr(v), getMetadata(v) || refToStr(v)));
223
+ const edges = allVersions.map(v => {
222
224
  const verEdges = v.parents.map(p => new (_graph().Edge)(refToStr(v.hash), refToStr(p), 'parent'));
223
225
  if (v.unrelated) verEdges.push(new (_graph().Edge)(refToStr(v.hash), refToStr(v.unrelated), 'unrelated'));
224
226
  if (v.squashed) {
@@ -1 +1 @@
1
- {"version":3,"names":["_graph","data","require","_componentId","_bitError","_lodash","_legacy","_ref","_interopRequireDefault","_objects","_component","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","VersionHistory","BitObject","constructor","props","name","scope","versionsObj","versionParentsToObject","versions","graphCompleteRefs","values","reduce","acc","version","hash","id","fromId","toObject","map","v","toString","parents","p","unrelated","squashed","undefined","pretty","args","getStringifyArgs","JSON","stringify","toBuffer","Buffer","from","getVersionData","ref","hasHash","Boolean","addFromVersionsObjects","forEach","exists","head","previousParents","versionData","getVersionParentsFromVersion","isEmpty","length","getAllHashesFrom","start","item","missing","allHashes","addHashesRecursively","ver","parent","includes","parentVer","push","found","isRefPartOfHistory","startFrom","searchFor","isGraphCompleteSince","isComplete","hasChanged","getAllHashesAsString","keys","merge","versionHistory","existingHashes","incomingHashes","hashesInExistingOnly","difference","versionsDataOnExistingOnly","filter","newVersions","getAncestor","numOfGenerationsToGoBack","errorMsg","compId","BitError","getGraph","modelComponent","laneHeads","shortHash","refToStr","toShortString","graph","Graph","compact","flat","getMetadata","tag","getTagOfRefIfExists","pointers","nodes","Node","edges","verEdges","Edge","s","find","isEqual","setNodes","setEdges","ComponentID","fromObject","create","parse","contents","parsed","Ref","exports","versionParentsToGraph","uniqBy"],"sources":["version-history.ts"],"sourcesContent":["import { Graph, Edge, Node } from '@teambit/graph.cleargraph';\nimport { ComponentID } from '@teambit/component-id';\nimport { BitError } from '@teambit/bit-error';\nimport { compact, difference, uniqBy } from 'lodash';\nimport { getStringifyArgs } from '@teambit/legacy.utils';\nimport Ref from '../objects/ref';\nimport { BitObject } from '../objects';\nimport type Version from './version';\nimport { getVersionParentsFromVersion } from '@teambit/component.snap-distance';\nimport ModelComponent from './model-component';\n\nexport type VersionParents = {\n hash: Ref;\n parents: Ref[];\n unrelated?: Ref;\n squashed?: Ref[];\n};\n\nexport type VersionHistoryGraph = Graph<string | HashMetadata, string>;\n\ntype VersionHistoryProps = {\n name: string;\n scope: string;\n versions: VersionParents[];\n graphCompleteRefs?: string[];\n};\n\ntype HashMetadata = {\n tag?: string;\n pointers?: string[];\n};\n\nexport default class VersionHistory extends BitObject {\n name: string;\n scope: string;\n private versionsObj: { [hash: string]: VersionParents };\n graphCompleteRefs: string[];\n hasChanged = false; // whether the version history has changed since the last persist\n constructor(props: VersionHistoryProps) {\n super();\n this.name = props.name;\n this.scope = props.scope;\n this.versionsObj = this.versionParentsToObject(props.versions);\n this.graphCompleteRefs = props.graphCompleteRefs || [];\n }\n\n get versions() {\n return Object.values(this.versionsObj);\n }\n\n private versionParentsToObject(versions: VersionParents[]) {\n return versions.reduce((acc, version) => {\n acc[version.hash.hash] = version;\n return acc;\n }, {});\n }\n\n id() {\n return `${this.scope}/${this.name}:${VersionHistory.name}`;\n }\n\n static fromId(name: string, scope: string) {\n return new VersionHistory({ scope, name, versions: [] });\n }\n\n toObject(): Record<string, any> {\n return {\n name: this.name,\n scope: this.scope,\n versions: this.versions.map((v) => ({\n hash: v.hash.toString(),\n parents: v.parents.map((p) => p.toString()),\n unrelated: v.unrelated?.toString(),\n squashed: v.squashed ? v.squashed.map((p) => p.toString()) : undefined,\n })),\n graphCompleteRefs: this.graphCompleteRefs,\n };\n }\n\n toString(pretty: boolean): string {\n const args = getStringifyArgs(pretty);\n return JSON.stringify(this.toObject(), ...args);\n }\n\n toBuffer(pretty): Buffer {\n return Buffer.from(this.toString(pretty));\n }\n\n getVersionData(ref: Ref): VersionParents | undefined {\n return this.versionsObj[ref.toString()];\n }\n\n hasHash(ref: Ref) {\n return Boolean(this.getVersionData(ref));\n }\n\n addFromVersionsObjects(versions: Version[]) {\n versions.forEach((version) => {\n const exists = this.getVersionData(version.hash());\n if (exists) {\n // just in case the parents got updated as a result of a merge/squash\n exists.parents = version.parents;\n exists.unrelated = version.unrelated?.head;\n exists.squashed = version.squashed?.previousParents;\n } else {\n const versionData = getVersionParentsFromVersion(version);\n this.versionsObj[version.hash().hash] = versionData;\n }\n });\n }\n\n isEmpty() {\n return !this.versions.length;\n }\n\n getAllHashesFrom(start: Ref): { found?: string[]; missing?: string[] } {\n const item = this.getVersionData(start);\n if (!item) return { missing: [start.toString()] };\n const allHashes: string[] = [item.hash.toString()];\n const missing: string[] = [];\n const addHashesRecursively = (ver: VersionParents) => {\n ver.parents.forEach((parent) => {\n if (allHashes.includes(parent.toString())) return;\n const parentVer = this.getVersionData(parent);\n if (!parentVer) {\n missing.push(parent.toString());\n return;\n }\n allHashes.push(parent.toString());\n if (parentVer.parents.length) addHashesRecursively(parentVer);\n });\n };\n addHashesRecursively(item);\n return { found: allHashes, missing };\n }\n\n isRefPartOfHistory(startFrom: Ref, searchFor: Ref) {\n const { found } = this.getAllHashesFrom(startFrom);\n return found?.includes(searchFor.toString());\n }\n\n isGraphCompleteSince(ref: Ref) {\n if (this.graphCompleteRefs.includes(ref.toString())) return true;\n const { missing } = this.getAllHashesFrom(ref);\n const isComplete = !missing || !missing.length;\n if (isComplete) {\n this.graphCompleteRefs.push(ref.toString());\n this.hasChanged = true;\n }\n return isComplete;\n }\n\n getAllHashesAsString(): string[] {\n return Object.keys(this.versionsObj);\n }\n\n merge(versionHistory: VersionHistory) {\n const existingHashes = this.getAllHashesAsString();\n const incomingHashes = versionHistory.getAllHashesAsString();\n const hashesInExistingOnly = difference(existingHashes, incomingHashes);\n const versionsDataOnExistingOnly = this.versions.filter((v) => hashesInExistingOnly.includes(v.hash.toString()));\n const newVersions = [...versionHistory.versions, ...versionsDataOnExistingOnly];\n this.versionsObj = this.versionParentsToObject(newVersions);\n }\n\n getAncestor(numOfGenerationsToGoBack: number, ref: Ref): Ref {\n const errorMsg = `unable to get an older parent of ${this.compId.toString()}`;\n const versionData = this.getVersionData(ref);\n if (!versionData)\n throw new BitError(`${errorMsg}, version \"${ref.toString()}\" was not found in the version history`);\n if (numOfGenerationsToGoBack === 0) return versionData.hash;\n if (!versionData.parents.length) throw new BitError(`${errorMsg}, version \"${ref.toString()}\" has no parents`);\n const parent = versionData.parents[0];\n return this.getAncestor(numOfGenerationsToGoBack - 1, parent);\n }\n\n getGraph(\n modelComponent?: ModelComponent,\n laneHeads?: { [hash: string]: string[] },\n shortHash = false\n ): VersionHistoryGraph {\n const refToStr = (ref: Ref) => (shortHash ? ref.toShortString() : ref.toString());\n const graph = new Graph<string | HashMetadata, string>();\n const allHashes = this.versions\n .map((v) => compact([v.hash, ...v.parents, ...(v.squashed || []), v.unrelated]))\n .flat();\n\n const getMetadata = (ref: Ref): HashMetadata | undefined => {\n if (!modelComponent || !laneHeads) return undefined;\n const tag = modelComponent.getTagOfRefIfExists(ref);\n const pointers = laneHeads[ref.toString()];\n return { tag, pointers };\n };\n const nodes = allHashes.map((v) => new Node(refToStr(v), getMetadata(v) || refToStr(v)));\n const edges = this.versions\n .map((v) => {\n const verEdges = v.parents.map((p) => new Edge(refToStr(v.hash), refToStr(p), 'parent'));\n if (v.unrelated) verEdges.push(new Edge(refToStr(v.hash), refToStr(v.unrelated), 'unrelated'));\n if (v.squashed) {\n const squashed = v.squashed.filter((s) => !v.parents.find((p) => p.isEqual(s)));\n squashed.map((p) => verEdges.push(new Edge(refToStr(v.hash), refToStr(p), 'squashed')));\n }\n return verEdges;\n })\n .flat();\n graph.setNodes(nodes);\n graph.setEdges(edges);\n return graph;\n }\n\n get compId() {\n return ComponentID.fromObject({ scope: this.scope, name: this.name });\n }\n\n static create(name: string, scope: string, versions: VersionParents[]) {\n return new VersionHistory({\n name,\n scope,\n versions,\n });\n }\n\n static parse(contents: string): VersionHistory {\n const parsed = JSON.parse(contents);\n const props: VersionHistoryProps = {\n name: parsed.name,\n scope: parsed.scope,\n versions: parsed.versions.map((ver) => ({\n hash: Ref.from(ver.hash),\n parents: ver.parents.map((p) => Ref.from(p)),\n unrelated: ver.unrelated ? Ref.from(ver.unrelated) : undefined,\n squashed: ver.squashed ? ver.squashed.map((p) => Ref.from(p)) : undefined,\n })),\n graphCompleteRefs: parsed.graphCompleteRefs,\n };\n return new VersionHistory(props);\n }\n}\n\nexport function versionParentsToGraph(versions: VersionParents[]): Graph<string, string> {\n const refToStr = (ref: Ref) => ref.toString();\n const graph = new Graph<string, string>();\n const allHashes = uniqBy(\n versions\n .map((v) => {\n return compact([v.hash, ...v.parents, ...(v.squashed || []), v.unrelated]);\n })\n .flat(),\n 'hash'\n );\n const nodes = allHashes.map((v) => new Node(refToStr(v), refToStr(v)));\n const edges = versions\n .map((v) => {\n const verEdges = v.parents.map((p) => new Edge(refToStr(v.hash), refToStr(p), 'parent'));\n if (v.unrelated) verEdges.push(new Edge(refToStr(v.hash), refToStr(v.unrelated), 'unrelated'));\n if (v.squashed) {\n const squashed = v.squashed.filter((s) => !v.parents.find((p) => p.isEqual(s)));\n squashed.map((p) => verEdges.push(new Edge(refToStr(v.hash), refToStr(p), 'squashed')));\n }\n return verEdges;\n })\n .flat();\n graph.setNodes(nodes);\n graph.setEdges(edges);\n return graph;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_graph","data","require","_componentId","_bitError","_lodash","_legacy","_ref","_interopRequireDefault","_objects","_component","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","VersionHistory","BitObject","constructor","props","name","scope","versionsObj","versionParentsToObject","versions","graphCompleteRefs","values","reduce","acc","version","hash","id","fromId","toObject","map","v","toString","parents","p","unrelated","squashed","undefined","pretty","args","getStringifyArgs","JSON","stringify","toBuffer","Buffer","from","getVersionData","ref","hasHash","Boolean","addFromVersionsObjects","forEach","exists","head","previousParents","versionData","getVersionParentsFromVersion","isEmpty","length","getAllHashesFrom","start","item","missing","allHashes","addHashesRecursively","ver","parent","includes","parentVer","push","found","isRefPartOfHistory","startFrom","searchFor","isGraphCompleteSince","isComplete","hasChanged","getAllHashesAsString","keys","merge","versionHistory","existingHashes","incomingHashes","hashesInExistingOnly","difference","versionsDataOnExistingOnly","filter","newVersions","getAncestor","numOfGenerationsToGoBack","errorMsg","compId","BitError","getGraph","modelComponent","laneHeads","shortHash","limitVersions","refToStr","toShortString","graph","Graph","allVersions","slice","compact","flat","allHashesUniq","uniqBy","getMetadata","tag","getTagOfRefIfExists","pointers","nodes","Node","edges","verEdges","Edge","s","find","isEqual","setNodes","setEdges","ComponentID","fromObject","create","parse","contents","parsed","Ref","exports","versionParentsToGraph"],"sources":["version-history.ts"],"sourcesContent":["import { Graph, Edge, Node } from '@teambit/graph.cleargraph';\nimport { ComponentID } from '@teambit/component-id';\nimport { BitError } from '@teambit/bit-error';\nimport { compact, difference, uniqBy } from 'lodash';\nimport { getStringifyArgs } from '@teambit/legacy.utils';\nimport Ref from '../objects/ref';\nimport { BitObject } from '../objects';\nimport type Version from './version';\nimport { getVersionParentsFromVersion } from '@teambit/component.snap-distance';\nimport ModelComponent from './model-component';\n\nexport type VersionParents = {\n hash: Ref;\n parents: Ref[];\n unrelated?: Ref;\n squashed?: Ref[];\n};\n\nexport type VersionHistoryGraph = Graph<string | HashMetadata, string>;\n\ntype VersionHistoryProps = {\n name: string;\n scope: string;\n versions: VersionParents[];\n graphCompleteRefs?: string[];\n};\n\ntype HashMetadata = {\n tag?: string;\n pointers?: string[];\n};\n\nexport default class VersionHistory extends BitObject {\n name: string;\n scope: string;\n private versionsObj: { [hash: string]: VersionParents };\n graphCompleteRefs: string[];\n hasChanged = false; // whether the version history has changed since the last persist\n constructor(props: VersionHistoryProps) {\n super();\n this.name = props.name;\n this.scope = props.scope;\n this.versionsObj = this.versionParentsToObject(props.versions);\n this.graphCompleteRefs = props.graphCompleteRefs || [];\n }\n\n get versions() {\n return Object.values(this.versionsObj);\n }\n\n private versionParentsToObject(versions: VersionParents[]) {\n return versions.reduce((acc, version) => {\n acc[version.hash.hash] = version;\n return acc;\n }, {});\n }\n\n id() {\n return `${this.scope}/${this.name}:${VersionHistory.name}`;\n }\n\n static fromId(name: string, scope: string) {\n return new VersionHistory({ scope, name, versions: [] });\n }\n\n toObject(): Record<string, any> {\n return {\n name: this.name,\n scope: this.scope,\n versions: this.versions.map((v) => ({\n hash: v.hash.toString(),\n parents: v.parents.map((p) => p.toString()),\n unrelated: v.unrelated?.toString(),\n squashed: v.squashed ? v.squashed.map((p) => p.toString()) : undefined,\n })),\n graphCompleteRefs: this.graphCompleteRefs,\n };\n }\n\n toString(pretty: boolean): string {\n const args = getStringifyArgs(pretty);\n return JSON.stringify(this.toObject(), ...args);\n }\n\n toBuffer(pretty): Buffer {\n return Buffer.from(this.toString(pretty));\n }\n\n getVersionData(ref: Ref): VersionParents | undefined {\n return this.versionsObj[ref.toString()];\n }\n\n hasHash(ref: Ref) {\n return Boolean(this.getVersionData(ref));\n }\n\n addFromVersionsObjects(versions: Version[]) {\n versions.forEach((version) => {\n const exists = this.getVersionData(version.hash());\n if (exists) {\n // just in case the parents got updated as a result of a merge/squash\n exists.parents = version.parents;\n exists.unrelated = version.unrelated?.head;\n exists.squashed = version.squashed?.previousParents;\n } else {\n const versionData = getVersionParentsFromVersion(version);\n this.versionsObj[version.hash().hash] = versionData;\n }\n });\n }\n\n isEmpty() {\n return !this.versions.length;\n }\n\n getAllHashesFrom(start: Ref): { found?: string[]; missing?: string[] } {\n const item = this.getVersionData(start);\n if (!item) return { missing: [start.toString()] };\n const allHashes: string[] = [item.hash.toString()];\n const missing: string[] = [];\n const addHashesRecursively = (ver: VersionParents) => {\n ver.parents.forEach((parent) => {\n if (allHashes.includes(parent.toString())) return;\n const parentVer = this.getVersionData(parent);\n if (!parentVer) {\n missing.push(parent.toString());\n return;\n }\n allHashes.push(parent.toString());\n if (parentVer.parents.length) addHashesRecursively(parentVer);\n });\n };\n addHashesRecursively(item);\n return { found: allHashes, missing };\n }\n\n isRefPartOfHistory(startFrom: Ref, searchFor: Ref) {\n const { found } = this.getAllHashesFrom(startFrom);\n return found?.includes(searchFor.toString());\n }\n\n isGraphCompleteSince(ref: Ref) {\n if (this.graphCompleteRefs.includes(ref.toString())) return true;\n const { missing } = this.getAllHashesFrom(ref);\n const isComplete = !missing || !missing.length;\n if (isComplete) {\n this.graphCompleteRefs.push(ref.toString());\n this.hasChanged = true;\n }\n return isComplete;\n }\n\n getAllHashesAsString(): string[] {\n return Object.keys(this.versionsObj);\n }\n\n merge(versionHistory: VersionHistory) {\n const existingHashes = this.getAllHashesAsString();\n const incomingHashes = versionHistory.getAllHashesAsString();\n const hashesInExistingOnly = difference(existingHashes, incomingHashes);\n const versionsDataOnExistingOnly = this.versions.filter((v) => hashesInExistingOnly.includes(v.hash.toString()));\n const newVersions = [...versionHistory.versions, ...versionsDataOnExistingOnly];\n this.versionsObj = this.versionParentsToObject(newVersions);\n }\n\n getAncestor(numOfGenerationsToGoBack: number, ref: Ref): Ref {\n const errorMsg = `unable to get an older parent of ${this.compId.toString()}`;\n const versionData = this.getVersionData(ref);\n if (!versionData)\n throw new BitError(`${errorMsg}, version \"${ref.toString()}\" was not found in the version history`);\n if (numOfGenerationsToGoBack === 0) return versionData.hash;\n if (!versionData.parents.length) throw new BitError(`${errorMsg}, version \"${ref.toString()}\" has no parents`);\n const parent = versionData.parents[0];\n return this.getAncestor(numOfGenerationsToGoBack - 1, parent);\n }\n\n getGraph(\n modelComponent?: ModelComponent,\n laneHeads?: { [hash: string]: string[] },\n shortHash = false,\n limitVersions?: number\n ): VersionHistoryGraph {\n const refToStr = (ref: Ref) => (shortHash ? ref.toShortString() : ref.toString());\n const graph = new Graph<string | HashMetadata, string>();\n const allVersions = limitVersions ? [...this.versions].slice(-limitVersions) : this.versions;\n const allHashes = allVersions\n .map((v) => compact([v.hash, ...v.parents, ...(v.squashed || []), v.unrelated]))\n .flat();\n\n const allHashesUniq = uniqBy(allHashes, 'hash');\n\n const getMetadata = (ref: Ref): HashMetadata | undefined => {\n if (!modelComponent || !laneHeads) return undefined;\n const tag = modelComponent.getTagOfRefIfExists(ref);\n const pointers = laneHeads[ref.toString()];\n return { tag, pointers };\n };\n const nodes = allHashesUniq.map((v) => new Node(refToStr(v), getMetadata(v) || refToStr(v)));\n\n const edges = allVersions\n .map((v) => {\n const verEdges = v.parents.map((p) => new Edge(refToStr(v.hash), refToStr(p), 'parent'));\n if (v.unrelated) verEdges.push(new Edge(refToStr(v.hash), refToStr(v.unrelated), 'unrelated'));\n if (v.squashed) {\n const squashed = v.squashed.filter((s) => !v.parents.find((p) => p.isEqual(s)));\n squashed.map((p) => verEdges.push(new Edge(refToStr(v.hash), refToStr(p), 'squashed')));\n }\n return verEdges;\n })\n .flat();\n graph.setNodes(nodes);\n graph.setEdges(edges);\n return graph;\n }\n\n get compId() {\n return ComponentID.fromObject({ scope: this.scope, name: this.name });\n }\n\n static create(name: string, scope: string, versions: VersionParents[]) {\n return new VersionHistory({\n name,\n scope,\n versions,\n });\n }\n\n static parse(contents: string): VersionHistory {\n const parsed = JSON.parse(contents);\n const props: VersionHistoryProps = {\n name: parsed.name,\n scope: parsed.scope,\n versions: parsed.versions.map((ver) => ({\n hash: Ref.from(ver.hash),\n parents: ver.parents.map((p) => Ref.from(p)),\n unrelated: ver.unrelated ? Ref.from(ver.unrelated) : undefined,\n squashed: ver.squashed ? ver.squashed.map((p) => Ref.from(p)) : undefined,\n })),\n graphCompleteRefs: parsed.graphCompleteRefs,\n };\n return new VersionHistory(props);\n }\n}\n\nexport function versionParentsToGraph(versions: VersionParents[]): Graph<string, string> {\n const refToStr = (ref: Ref) => ref.toString();\n const graph = new Graph<string, string>();\n const allHashes = uniqBy(\n versions\n .map((v) => {\n return compact([v.hash, ...v.parents, ...(v.squashed || []), v.unrelated]);\n })\n .flat(),\n 'hash'\n );\n const nodes = allHashes.map((v) => new Node(refToStr(v), refToStr(v)));\n const edges = versions\n .map((v) => {\n const verEdges = v.parents.map((p) => new Edge(refToStr(v.hash), refToStr(p), 'parent'));\n if (v.unrelated) verEdges.push(new Edge(refToStr(v.hash), refToStr(v.unrelated), 'unrelated'));\n if (v.squashed) {\n const squashed = v.squashed.filter((s) => !v.parents.find((p) => p.isEqual(s)));\n squashed.map((p) => verEdges.push(new Edge(refToStr(v.hash), refToStr(p), 'squashed')));\n }\n return verEdges;\n })\n .flat();\n graph.setNodes(nodes);\n graph.setEdges(edges);\n return graph;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -430,8 +430,8 @@ class Version extends _objects().BitObject {
430
430
  }
431
431
  static flattenedEdgeToSource(flattenedEdges) {
432
432
  if (!flattenedEdges) return undefined;
433
- const flattenedEdgesObj = flattenedEdges.map(f => Version.depEdgeToArray(f));
434
- // const flattenedEdgesObj = flattenedEdges.map((f) => Version.depEdgeToObject(f));
433
+ // const flattenedEdgesObj = flattenedEdges.map((f) => Version.depEdgeToArray(f));
434
+ const flattenedEdgesObj = flattenedEdges.map(f => Version.depEdgeToObject(f));
435
435
  const flattenedEdgesBuffer = Buffer.from(JSON.stringify(flattenedEdgesObj));
436
436
  return _source().default.from(flattenedEdgesBuffer);
437
437
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_lodash","data","require","_componentVersion","_componentId","_laneId","_uuid","_legacy","_legacy2","_component","_legacy3","_legacy4","_legacy5","_toolboxCrypto","_objects","_legacy6","_source","_interopRequireDefault","_dependenciesGraph","_bit","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","Version","BitObject","constructor","props","mainFile","files","log","dependencies","Dependencies","devDependencies","peerDependencies","docs","flattenedDependencies","ComponentIdList","flattenedEdges","flattenedEdgesRef","dependenciesGraphRef","packageDependencies","devPackageDependencies","peerPackageDependencies","bindingPrefix","schema","overrides","packageJsonChangedProps","_hash","hash","parents","squashed","unrelated","extensions","ExtensionDataList","fromArray","buildStatus","componentId","bitVersion","modified","origin","hidden","validateVersion","getFlattenedEdges","repo","getWithBackwardCompatibility","throws","flattenedEdgesSource","load","flattenedEdgesJson","JSON","parse","contents","toString","map","item","Array","isArray","depEdgeFromArray","depEdgeFromObject","_flattenedEdges","loadDependenciesGraph","dependenciesGraphSource","DependenciesGraph","deserialize","nonEmptyFields","forEach","field","VersionInvalid","id","obj","toObject","getDependencies","deps","clonedDependencies","cloneAsString","dependency","relativePaths","relativePath","sourceRelativePath","destinationRelativePath","getExtensions","sortedConfigOnly","sortById","toConfigArray","filterFunction","val","key","isEmpty","stringify","pickBy","extensionDependencies","calculateHash","Ref","makeHash","Error","extensionsBitIds","Dependency","lastModified","length","date","getAllFlattenedDependencies","getAllDependencies","depsIdsGroupedByType","getAllIds","getAllDependenciesCloned","getClone","getAllDependenciesIds","allDependencies","values","flat","getDependenciesIdsExcludeExtensions","updateFlattenedDependency","currentId","newId","getUpdated","updatedIds","depId","isEqual","refs","refsWithOptions","includeParents","includeArtifacts","allRefs","extractRefsFromFiles","file","push","artifacts","getRefsFromExtensions","refsWithoutParents","filter","ref","collectManyObjects","loadManyRaw","depEdgeToObject","depEdge","source","serialize","target","type","depEdgeObj","ComponentID","fromObject","depEdgeToArray","depEdgeArr","sourceStr","targetStr","fromString","flattenedEdgeToSource","undefined","flattenedEdgesObj","f","flattenedEdgesBuffer","Buffer","from","Source","dependenciesGraphToSource","dependenciesGraph","dependenciesGraphBuffer","_convertFileToObject","name","test","message","username","email","cloneAsObject","dep","toModelObjects","p","previousParents","laneId","head","validateBeforePersisting","versionStr","logger","trace","version","validate","toBuffer","pretty","args","getStringifyArgs","str","validateBeforePersist","contentParsed","flattenedDevDependencies","_getDependencies","getRelativePath","importSpecifiers","importSpecifier","scope","BitIdCompIdError","_getFlattenedDependencies","_groupFlattenedDependencies","flattenedDeps","flattenedDevDeps","parseFile","_getExtensions","exts","newExts","extension","extensionId","entry","ExtensionDataEntry","config","fromModelObject","LaneId","versionProps","fromComponent","component","pathNormalizeToLinux","get","componentOverridesData","getBitVersion","isSnap","setNewHash","sha1","v4","ignoreSharedDir","isSchemaSupport","SchemaFeature","sharedDir","isLegacy","SchemaName","Legacy","originLaneId","lane","originId","setDist","dist","DEFAULT_BUNDLE_FILENAME","hasParent","find","addParent","setSquashed","squashData","replaceMessage","addModifiedLog","Date","now","setUnrelated","externalHead","addAsOnlyParent","removeParent","removeAllParents","modelFilesToSourceFiles","repository","Promise","all","SourceFile","loadFromSourceFileModel","isRemoved","Boolean","findCoreExtension","Extensions","remove","removed","shouldRemoveFromMain","removeOnMain","validateVersionInstance","exports"],"sources":["version.ts"],"sourcesContent":["import { isEmpty, pickBy } from 'lodash';\nimport { isSnap } from '@teambit/component-version';\nimport { ComponentID, ComponentIdList } from '@teambit/component-id';\nimport { LaneId } from '@teambit/lane-id';\nimport { v4 } from 'uuid';\nimport { BuildStatus, DEFAULT_BUNDLE_FILENAME, Extensions } from '@teambit/legacy.constants';\nimport {\n isSchemaSupport,\n SchemaFeature,\n SchemaName,\n Dependencies,\n Dependency,\n ConsumerComponent,\n} from '@teambit/legacy.consumer-component';\nimport { getRefsFromExtensions, SourceFile } from '@teambit/component.sources';\nimport { ComponentOverridesData } from '@teambit/legacy.consumer-config';\nimport { ExtensionDataEntry, ExtensionDataList } from '@teambit/legacy.extension-data';\nimport type { Doclet } from '@teambit/semantics.doc-parser';\nimport { logger } from '@teambit/legacy.logger';\nimport { getStringifyArgs, PathLinux, pathNormalizeToLinux } from '@teambit/legacy.utils';\nimport { sha1 } from '@teambit/toolbox.crypto.sha1';\nimport { BitObject, Ref, Repository } from '../objects';\nimport { ObjectItem } from '../objects/object-list';\nimport { BitIdCompIdError, VersionInvalid, validateVersionInstance } from '@teambit/legacy.scope';\nimport Source from './source';\nimport { DependenciesGraph } from './dependencies-graph';\nimport { getBitVersion } from '@teambit/bit.get-bit-version';\n\nexport type SourceFileModel = {\n name: string;\n relativePath: PathLinux;\n test: boolean;\n file: Ref;\n};\n\nexport type DistFileModel = SourceFileModel;\n\nexport type ArtifactFileModel = {\n relativePath: PathLinux;\n file: Ref;\n};\n\nexport type Log = {\n message: string;\n date: string;\n username: string | undefined;\n email: string | undefined;\n};\n\nexport type DepEdgeType = 'prod' | 'dev' | 'peer' | 'ext';\nexport type DepEdge = { source: ComponentID; target: ComponentID; type: DepEdgeType };\n\ntype ExternalHead = { head: Ref; laneId: LaneId };\ntype SquashData = { previousParents: Ref[]; laneId: LaneId };\ntype VersionOrigin = { id: { scope: string; name: string }; lane?: { scope: string; name: string; hash: string } };\n\nexport type VersionProps = {\n mainFile: PathLinux;\n files: Array<SourceFileModel>;\n log: Log;\n docs?: Doclet[];\n dependencies?: Dependency[];\n devDependencies?: Dependency[];\n peerDependencies?: Dependency[];\n flattenedDependencies?: ComponentIdList;\n _flattenedEdges?: DepEdge[];\n flattenedEdges?: DepEdge[];\n flattenedEdgesRef?: Ref;\n dependenciesGraphRef?: Ref;\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n packageDependencies?: { [key: string]: string };\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n devPackageDependencies?: { [key: string]: string };\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n peerPackageDependencies?: { [key: string]: string };\n bindingPrefix: string;\n schema?: string;\n overrides: ComponentOverridesData;\n packageJsonChangedProps?: Record<string, any>;\n hash?: string;\n parents?: Ref[];\n squashed?: SquashData;\n unrelated?: ExternalHead;\n extensions?: ExtensionDataList;\n buildStatus?: BuildStatus;\n componentId?: ComponentID;\n bitVersion?: string;\n modified?: Log[];\n origin?: VersionOrigin;\n hidden?: boolean;\n};\n\n/**\n * Represent a version model in the scope\n */\nexport default class Version extends BitObject {\n mainFile: PathLinux;\n files: Array<SourceFileModel>;\n log: Log;\n docs: Doclet[] | undefined;\n dependencies: Dependencies;\n devDependencies: Dependencies;\n peerDependencies: Dependencies;\n flattenedDependencies: ComponentIdList;\n dependenciesGraphRef?: Ref;\n _dependenciesGraph?: DependenciesGraph; // caching for the dependencies graph\n flattenedEdgesRef?: Ref; // ref to a BitObject Source file, which is a JSON object containing the flattened edge\n _flattenedEdges?: DepEdge[]; // caching for the flattenedEdges\n /**\n * @deprecated\n * to get the flattenedEdges, please use `this.getFlattenedEdges()`.\n * this function handles the backward compatibility and provides the flattened edges regardless whether it was saved\n * the `flattenedEdgesRef` introduced or after.\n *\n * the reason this is left here is not for backward compatibility, but for forward compatibility. meaning, if a\n * Version object created by the new version is parsed by an old version that doesn't support the flattenedEdgesRef,\n * then, it'll be able to still get the flattenedEdges by this prop.\n * this is causing duplication currently. the data is kept in both, `this.flattenedEdges` and the file stored in `flattenedEdgesRef`.\n * so it'll be best to delete this prop as soon as all scopes are deployed with the new version.\n * (around August 2023 should be safe)\n */\n private flattenedEdges: DepEdge[];\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n packageDependencies: { [key: string]: string };\n devPackageDependencies: { [key: string]: string };\n peerPackageDependencies: { [key: string]: string };\n bindingPrefix: string;\n schema: string | undefined;\n overrides: ComponentOverridesData;\n packageJsonChangedProps: Record<string, any>;\n _hash: string; // reason for the underscore prefix is that we already have hash as a method\n parents: Ref[];\n squashed?: SquashData; // when a component is squashed during lane-merge\n unrelated?: ExternalHead; // when a component from a lane was created with the same name/scope as main, this ref points to the component of the lane\n extensions: ExtensionDataList;\n buildStatus?: BuildStatus;\n componentId?: ComponentID; // can help debugging errors when validating Version object\n bitVersion?: string;\n modified: Log[] = []; // currently mutation could happen as a result of either \"squash\" or \"sign\".\n origin?: VersionOrigin; // for debugging purposes\n hidden?: boolean; // whether the version is hidden from commands such as \"bit log\", \"bit blame\". (needed for un-meaningful snaps, such as merged-lane snap prior to the tag)\n\n constructor(props: VersionProps) {\n super();\n this.mainFile = props.mainFile;\n this.files = props.files;\n this.log = props.log;\n this.dependencies = new Dependencies(props.dependencies);\n this.devDependencies = new Dependencies(props.devDependencies);\n this.peerDependencies = new Dependencies(props.peerDependencies);\n this.docs = props.docs;\n this.flattenedDependencies = props.flattenedDependencies || new ComponentIdList();\n this.flattenedEdges = props.flattenedEdges || [];\n this.flattenedEdgesRef = props.flattenedEdgesRef;\n this.dependenciesGraphRef = props.dependenciesGraphRef;\n this.packageDependencies = props.packageDependencies || {};\n this.devPackageDependencies = props.devPackageDependencies || {};\n this.peerPackageDependencies = props.peerPackageDependencies || {};\n this.bindingPrefix = props.bindingPrefix;\n this.schema = props.schema;\n this.overrides = props.overrides || {};\n this.packageJsonChangedProps = props.packageJsonChangedProps || {};\n // @ts-ignore yes, props.hash can be undefined here, but it gets populated as soon as Version is created\n this._hash = props.hash;\n this.parents = props.parents || [];\n this.squashed = props.squashed;\n this.unrelated = props.unrelated;\n this.extensions = props.extensions || ExtensionDataList.fromArray([]);\n this.buildStatus = props.buildStatus;\n this.componentId = props.componentId;\n this.bitVersion = props.bitVersion;\n this.modified = props.modified || [];\n this.origin = props.origin;\n this.hidden = props.hidden;\n this.validateVersion();\n }\n\n /**\n * use only this method to get the flattened edges (graph of flattened dependencies).\n * it's backward compatible with the previous way this was stored on the Version object itself.\n */\n async getFlattenedEdges(repo: Repository): Promise<DepEdge[]> {\n const getWithBackwardCompatibility = async (): Promise<DepEdge[]> => {\n if (this.flattenedEdgesRef) {\n // it's possible that there is a ref but the file is not there.\n // it can happen if the remote-scope uses an older version that doesn't know to collect this ref.\n // in which case, the client will get the Version object with the ref prop, but not the Source object.\n const throws = false;\n const flattenedEdgesSource = (await repo.load(this.flattenedEdgesRef, throws)) as Source | undefined;\n if (flattenedEdgesSource) {\n const flattenedEdgesJson = JSON.parse(flattenedEdgesSource.contents.toString());\n return flattenedEdgesJson.map((item) =>\n Array.isArray(item) ? Version.depEdgeFromArray(item) : Version.depEdgeFromObject(item)\n );\n }\n }\n return this.flattenedEdges || [];\n };\n\n if (!this._flattenedEdges) {\n this._flattenedEdges = await getWithBackwardCompatibility();\n }\n\n return this._flattenedEdges;\n }\n\n async loadDependenciesGraph(repo: Repository): Promise<DependenciesGraph | undefined> {\n if (!this._dependenciesGraph) {\n if (this.dependenciesGraphRef) {\n // it's possible that there is a ref but the file is not there.\n // it can happen if the remote-scope uses an older version that doesn't know to collect this ref.\n // in which case, the client will get the Version object with the ref prop, but not the Source object.\n const throws = false;\n const dependenciesGraphSource = (await repo.load(this.dependenciesGraphRef, throws)) as Source | undefined;\n if (dependenciesGraphSource) {\n this._dependenciesGraph = DependenciesGraph.deserialize(dependenciesGraphSource.contents.toString());\n }\n }\n }\n return this._dependenciesGraph;\n }\n\n validateVersion() {\n const nonEmptyFields = ['mainFile', 'files'];\n nonEmptyFields.forEach((field) => {\n if (!this[field]) {\n throw new VersionInvalid(`failed creating a version object, the field \"${field}\" can't be empty`);\n }\n });\n }\n\n id() {\n const obj = this.toObject();\n\n // @todo: remove the entire dependencies.relativePaths from the ID (it's going to be a breaking change)\n const getDependencies = (deps: Dependencies) => {\n const clonedDependencies = deps.cloneAsString();\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return clonedDependencies.map((dependency: Dependency) => {\n return {\n id: dependency.id,\n relativePaths: dependency.relativePaths.map((relativePath) => {\n return {\n sourceRelativePath: relativePath.sourceRelativePath,\n destinationRelativePath: relativePath.destinationRelativePath,\n };\n }),\n };\n });\n };\n\n const getExtensions = (extensions: ExtensionDataList) => {\n const sortedConfigOnly = extensions.sortById().toConfigArray();\n return sortedConfigOnly;\n };\n\n const filterFunction = (val, key) => {\n if (\n key === 'devDependencies' ||\n key === 'extensionDependencies' ||\n key === 'devPackageDependencies' ||\n key === 'peerPackageDependencies' ||\n key === 'overrides' ||\n key === 'extensions'\n ) {\n return !isEmpty(val);\n }\n return !!val;\n };\n\n return JSON.stringify(\n pickBy(\n {\n mainFile: obj.mainFile,\n files: obj.files,\n log: obj.log,\n dependencies: getDependencies(this.dependencies),\n devDependencies: getDependencies(this.devDependencies),\n extensionDependencies: getDependencies(this.extensionDependencies),\n packageDependencies: obj.packageDependencies,\n devPackageDependencies: obj.devPackageDependencies,\n peerPackageDependencies: obj.peerPackageDependencies,\n bindingPrefix: obj.bindingPrefix,\n overrides: obj.overrides,\n extensions: getExtensions(this.extensions),\n },\n filterFunction\n )\n );\n }\n\n calculateHash(): Ref {\n return new Ref(BitObject.makeHash(this.id()));\n }\n\n hash(): Ref {\n if (!this._hash) {\n throw new Error('hash is missing from a Version object');\n }\n return new Ref(this._hash);\n }\n\n get extensionDependencies() {\n return new Dependencies(this.extensions.extensionsBitIds.map((id) => new Dependency(id, [])));\n }\n\n lastModified(): string {\n if (!this.modified || !this.modified.length) return this.log.date;\n return this.modified[this.modified.length - 1].date;\n }\n\n getAllFlattenedDependencies(): ComponentIdList {\n return ComponentIdList.fromArray([...this.flattenedDependencies]);\n }\n\n getAllDependencies(): Dependency[] {\n return [\n ...this.dependencies.dependencies,\n ...this.devDependencies.dependencies,\n ...this.extensionDependencies.dependencies,\n ];\n }\n\n get depsIdsGroupedByType(): {\n dependencies: ComponentIdList;\n devDependencies: ComponentIdList;\n peerDependencies: ComponentIdList;\n extensionDependencies: ComponentIdList;\n } {\n return {\n dependencies: this.dependencies.getAllIds(),\n devDependencies: this.devDependencies.getAllIds(),\n peerDependencies: this.peerDependencies.getAllIds(),\n extensionDependencies: this.extensions.extensionsBitIds,\n };\n }\n\n getAllDependenciesCloned(): Dependencies {\n const dependencies = [...this.dependencies.getClone(), ...this.devDependencies.getClone()];\n return new Dependencies(dependencies);\n }\n\n getAllDependenciesIds(): ComponentIdList {\n const allDependencies = Object.values(this.depsIdsGroupedByType).flat();\n return ComponentIdList.fromArray(allDependencies);\n }\n\n getDependenciesIdsExcludeExtensions(): ComponentIdList {\n return ComponentIdList.fromArray([...this.dependencies.getAllIds(), ...this.devDependencies.getAllIds()]);\n }\n\n updateFlattenedDependency(currentId: ComponentID, newId: ComponentID) {\n const getUpdated = (flattenedDependencies: ComponentIdList): ComponentIdList => {\n const updatedIds = flattenedDependencies.map((depId) => {\n if (depId.isEqual(currentId)) return newId;\n return depId;\n });\n return ComponentIdList.fromArray(updatedIds);\n };\n this.flattenedDependencies = getUpdated(this.flattenedDependencies);\n }\n\n refs(): Ref[] {\n return this.refsWithOptions();\n }\n\n refsWithOptions(includeParents = true, includeArtifacts = true): Ref[] {\n const allRefs: Ref[] = [];\n const extractRefsFromFiles = (files) => {\n const refs = files ? files.map((file) => file.file) : [];\n return refs;\n };\n const files = extractRefsFromFiles(this.files);\n allRefs.push(...files);\n if (includeParents) {\n allRefs.push(...this.parents);\n }\n if (includeArtifacts) {\n const artifacts = getRefsFromExtensions(this.extensions);\n allRefs.push(...artifacts);\n }\n if (this.flattenedEdgesRef) allRefs.push(this.flattenedEdgesRef);\n if (this.dependenciesGraphRef) allRefs.push(this.dependenciesGraphRef);\n return allRefs;\n }\n\n refsWithoutParents(): Ref[] {\n const extractRefsFromFiles = (files) => {\n const refs = files ? files.map((file) => file.file) : [];\n return refs;\n };\n const files = extractRefsFromFiles(this.files);\n const artifacts = getRefsFromExtensions(this.extensions);\n return [...files, ...artifacts].filter((ref) => ref);\n }\n\n async collectManyObjects(repo: Repository, refs: Ref[]): Promise<ObjectItem[]> {\n return repo.loadManyRaw(refs);\n }\n\n static depEdgeToObject(depEdge: DepEdge): Record<string, any> {\n return {\n source: depEdge.source.serialize(),\n target: depEdge.target.serialize(),\n type: depEdge.type,\n };\n }\n static depEdgeFromObject(depEdgeObj: Record<string, any>): DepEdge {\n return {\n source: ComponentID.fromObject(depEdgeObj.source),\n target: ComponentID.fromObject(depEdgeObj.target),\n type: depEdgeObj.type,\n };\n }\n /**\n * until 1.9.86, we used depEdgeToObject.\n * this one makes this object much much smaller (for 604 edges, it's now 143KB, with the array format it's 6KB!)\n * this format has been supported (but not used) since v1.6.97.\n */\n static depEdgeToArray(depEdge: DepEdge): Record<string, any> {\n return [depEdge.source.toString(), depEdge.target.toString(), depEdge.type];\n }\n static depEdgeFromArray(depEdgeArr: string[]): DepEdge {\n const [sourceStr, targetStr, type] = depEdgeArr;\n return {\n source: ComponentID.fromString(sourceStr),\n target: ComponentID.fromString(targetStr),\n type: type as DepEdgeType,\n };\n }\n static flattenedEdgeToSource(flattenedEdges?: DepEdge[]): Source | undefined {\n if (!flattenedEdges) return undefined;\n const flattenedEdgesObj = flattenedEdges.map((f) => Version.depEdgeToArray(f));\n // const flattenedEdgesObj = flattenedEdges.map((f) => Version.depEdgeToObject(f));\n const flattenedEdgesBuffer = Buffer.from(JSON.stringify(flattenedEdgesObj));\n return Source.from(flattenedEdgesBuffer);\n }\n static dependenciesGraphToSource(dependenciesGraph?: DependenciesGraph): Source | undefined {\n if (!dependenciesGraph) return undefined;\n const dependenciesGraphBuffer = Buffer.from(dependenciesGraph.serialize());\n return Source.from(dependenciesGraphBuffer);\n }\n\n toObject() {\n const _convertFileToObject = (file) => {\n return {\n file: file.file.toString(),\n relativePath: file.relativePath,\n name: file.name,\n test: file.test,\n };\n };\n\n return pickBy(\n {\n files: this.files ? this.files.map(_convertFileToObject) : null,\n mainFile: this.mainFile,\n bindingPrefix: this.bindingPrefix,\n schema: this.schema,\n log: {\n message: this.log.message,\n date: this.log.date,\n username: this.log.username,\n email: this.log.email,\n },\n docs: this.docs,\n dependencies: this.dependencies.cloneAsObject(),\n devDependencies: this.devDependencies.cloneAsObject(),\n flattenedDependencies: this.flattenedDependencies.map((dep) => dep.toObject()),\n flattenedEdges: this.flattenedEdgesRef ? undefined : this.flattenedEdges.map((f) => Version.depEdgeToObject(f)),\n flattenedEdgesRef: this.flattenedEdgesRef?.toString(),\n dependenciesGraphRef: this.dependenciesGraphRef?.toString(),\n extensions: this.extensions.toModelObjects(),\n packageDependencies: this.packageDependencies,\n devPackageDependencies: this.devPackageDependencies,\n peerPackageDependencies: this.peerPackageDependencies,\n overrides: this.overrides,\n buildStatus: this.buildStatus,\n packageJsonChangedProps: this.packageJsonChangedProps,\n parents: this.parents.map((p) => p.toString()),\n squashed: this.squashed\n ? {\n previousParents: this.squashed.previousParents.map((p) => p.toString()),\n laneId: this.squashed.laneId.toObject(),\n }\n : undefined,\n unrelated: this.unrelated\n ? { head: this.unrelated.head.toString(), laneId: this.unrelated.laneId.toObject() }\n : undefined,\n bitVersion: this.bitVersion,\n modified: this.modified,\n origin: this.origin,\n hidden: this.hidden,\n },\n (val) => !!val\n );\n }\n\n validateBeforePersisting(versionStr: string): void {\n logger.trace(`validating version object, hash: ${this.hash().hash}`);\n const version = Version.parse(versionStr, this._hash);\n version.validate();\n }\n\n toBuffer(pretty: boolean): Buffer {\n const obj = this.toObject();\n const args = getStringifyArgs(pretty);\n const str = JSON.stringify(obj, ...args);\n if (this.validateBeforePersist) this.validateBeforePersisting(str);\n return Buffer.from(str);\n }\n /**\n * used by the super class BitObject\n */\n static parse(contents: string, hash: string): Version {\n const contentParsed = JSON.parse(contents);\n const {\n mainFile,\n files,\n bindingPrefix,\n schema,\n log,\n docs,\n dependencies,\n devDependencies,\n flattenedDependencies,\n flattenedEdges,\n flattenedEdgesRef,\n dependenciesGraphRef,\n flattenedDevDependencies,\n devPackageDependencies,\n peerPackageDependencies,\n packageDependencies,\n overrides,\n packageJsonChangedProps,\n extensions,\n buildStatus,\n parents,\n squashed,\n unrelated,\n bitVersion,\n modified,\n origin,\n hidden,\n } = contentParsed;\n\n const _getDependencies = (deps = []): Dependency[] => {\n const getRelativePath = (relativePath) => {\n if (relativePath.importSpecifiers) {\n // backward compatibility. Before the massive validation was added, an item of\n // relativePath.importSpecifiers array could be missing the mainFile property, which is\n // an invalid ImportSpecifier. (instead the mainFile it had another importSpecifiers object).\n relativePath.importSpecifiers = relativePath.importSpecifiers.filter(\n (importSpecifier) => importSpecifier.mainFile\n );\n if (!relativePath.importSpecifiers.length) delete relativePath.importSpecifiers;\n }\n\n return relativePath;\n };\n\n return deps.map((dependency: any) => {\n if (!dependency.id.scope) {\n throw new BitIdCompIdError(dependency.id.name);\n }\n return new Dependency(\n ComponentID.fromObject(dependency.id),\n Array.isArray(dependency.relativePaths)\n ? dependency.relativePaths.map(getRelativePath)\n : dependency.relativePaths\n );\n });\n };\n\n const _getFlattenedDependencies = (deps = []): ComponentID[] => {\n return deps.map((dep) => ComponentID.fromObject(dep));\n };\n\n const _groupFlattenedDependencies = () => {\n // support backward compatibility. until v15, there was both flattenedDependencies and\n // flattenedDevDependencies. since then, these both were grouped to one flattenedDependencies\n const flattenedDeps = _getFlattenedDependencies(flattenedDependencies);\n const flattenedDevDeps = _getFlattenedDependencies(flattenedDevDependencies);\n return ComponentIdList.fromArray([...flattenedDeps, ...flattenedDevDeps]);\n };\n\n const parseFile = (file) => {\n return {\n file: Ref.from(file.file),\n relativePath: file.relativePath,\n name: file.name,\n test: file.test,\n };\n };\n const _getExtensions = (exts = []): ExtensionDataList => {\n if (exts.length) {\n const newExts = exts.map((extension: any) => {\n if (extension.extensionId) {\n const extensionId = ComponentID.fromObject(extension.extensionId);\n const entry = new ExtensionDataEntry(undefined, extensionId, undefined, extension.config, extension.data);\n return entry;\n }\n const entry = new ExtensionDataEntry(\n extension.id,\n undefined,\n extension.name,\n extension.config,\n extension.data\n );\n return entry;\n });\n return ExtensionDataList.fromModelObject(newExts);\n }\n return new ExtensionDataList();\n };\n\n return new Version({\n mainFile,\n files: files.map(parseFile),\n bindingPrefix,\n schema: schema || undefined,\n log: {\n // workaround for a bug where the log.message was saved as boolean when running `bit tag -m \"\"`\n // the bug was fixed since v0.1.27, but old objects might still have this bug\n message: typeof log.message !== 'string' ? '' : log.message,\n date: log.date,\n username: log.username,\n email: log.email,\n },\n docs,\n dependencies: _getDependencies(dependencies),\n devDependencies: _getDependencies(devDependencies),\n flattenedDependencies: _groupFlattenedDependencies(),\n // backward compatibility. before introducing `flattenedEdgesRef`, we only had `flattenedEdges`. see getFlattenedEdges() for more info.\n flattenedEdges: flattenedEdgesRef ? [] : flattenedEdges?.map((f) => Version.depEdgeFromObject(f)) || [],\n flattenedEdgesRef: flattenedEdgesRef ? Ref.from(flattenedEdgesRef) : undefined,\n dependenciesGraphRef: dependenciesGraphRef ? Ref.from(dependenciesGraphRef) : undefined,\n devPackageDependencies,\n peerPackageDependencies,\n packageDependencies,\n overrides,\n packageJsonChangedProps,\n hash,\n parents: parents ? parents.map((p) => Ref.from(p)) : [],\n squashed: squashed\n ? { previousParents: squashed.previousParents.map((r) => Ref.from(r)), laneId: new LaneId(squashed.laneId) }\n : undefined,\n unrelated: unrelated ? { head: Ref.from(unrelated.head), laneId: new LaneId(unrelated.laneId) } : undefined,\n extensions: _getExtensions(extensions),\n buildStatus,\n bitVersion,\n modified,\n origin,\n hidden,\n });\n }\n\n /**\n * used by raw-object.toRealObject()\n */\n static from(versionProps: VersionProps, hash: string): Version {\n return Version.parse(JSON.stringify(versionProps), hash);\n }\n\n /**\n * Create version model object from consumer component\n * @param {*} param0\n */\n static fromComponent({\n component,\n files,\n flattenedEdges,\n dependenciesGraph,\n }: {\n component: ConsumerComponent;\n files: Array<SourceFileModel>;\n flattenedEdges?: Source;\n dependenciesGraph?: Source;\n }) {\n const parseFile = (file) => {\n return {\n file: file.file.hash(),\n relativePath: file.relativePath,\n name: file.name,\n test: file.test,\n };\n };\n\n if (!component.log) throw new Error('Version.fromComponent - component.log is missing');\n const version = new Version({\n mainFile: pathNormalizeToLinux(component.mainFile),\n files: files.map(parseFile),\n bindingPrefix: component.bindingPrefix,\n log: component.log as Log,\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n docs: component.docs,\n dependencies: component.dependencies.get(),\n devDependencies: component.devDependencies.get(),\n packageDependencies: component.packageDependencies,\n devPackageDependencies: component.devPackageDependencies,\n peerPackageDependencies: component.peerPackageDependencies,\n dependenciesGraphRef: dependenciesGraph?.hash(),\n flattenedDependencies: component.flattenedDependencies,\n // it's safe to remove this line once the version.flattenedEdges prop is deleted\n flattenedEdges: component.flattenedEdges,\n flattenedEdgesRef: flattenedEdges?.hash(),\n schema: component.schema,\n overrides: component.overrides.componentOverridesData,\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n packageJsonChangedProps: component.packageJsonChangedProps,\n extensions: component.extensions,\n buildStatus: component.buildStatus,\n componentId: component.id,\n bitVersion: getBitVersion(),\n });\n if (isSnap(component.version)) {\n version._hash = component.version as string;\n } else {\n version.setNewHash();\n }\n\n return version;\n }\n\n setNewHash() {\n this._hash = sha1(v4());\n }\n\n get ignoreSharedDir(): boolean {\n return !isSchemaSupport(SchemaFeature.sharedDir, this.schema);\n }\n\n get isLegacy(): boolean {\n return !this.schema || this.schema === SchemaName.Legacy;\n }\n\n get originLaneId(): LaneId | undefined {\n return this.origin?.lane ? new LaneId({ name: this.origin.lane.name, scope: this.origin.lane.scope }) : undefined;\n }\n get originId(): ComponentID | undefined {\n return this.origin?.id\n ? ComponentID.fromObject({ scope: this.origin.id.scope, name: this.origin.id.name })\n : undefined;\n }\n\n setDist(dist: Source | undefined) {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n this.dist = dist\n ? {\n file: dist.hash(),\n name: DEFAULT_BUNDLE_FILENAME,\n }\n : null;\n }\n\n hasParent(ref: Ref) {\n return this.parents.find((p) => p.toString() === ref.toString());\n }\n\n addParent(ref: Ref) {\n if (this.isLegacy) return;\n if (this.hasParent(ref)) {\n return; // make sure to not add twice\n }\n this.parents.push(ref);\n }\n\n setSquashed(squashData: SquashData, log: Log, replaceMessage?: string) {\n this.squashed = squashData;\n this.addModifiedLog(log);\n if (replaceMessage) {\n this.addModifiedLog({\n username: undefined,\n email: undefined,\n date: Date.now().toString(),\n message: `squashing: replacing the original log.message, which was: \"${this.log.message || '<empty>'}\"`,\n });\n this.log.message = replaceMessage;\n }\n }\n\n setUnrelated(externalHead: ExternalHead) {\n this.unrelated = externalHead;\n }\n\n addModifiedLog(log: Log) {\n this.modified.push(log);\n }\n\n addAsOnlyParent(ref: Ref) {\n if (this.isLegacy) return;\n this.parents = [ref];\n }\n\n removeParent(ref: Ref) {\n this.parents = this.parents.filter((p) => p.toString() !== ref.toString());\n }\n\n removeAllParents() {\n this.parents = [];\n }\n\n modelFilesToSourceFiles(repository: Repository): Promise<SourceFile[]> {\n return Promise.all(this.files.map((file) => SourceFile.loadFromSourceFileModel(file, repository)));\n }\n\n isRemoved(): boolean {\n return Boolean(this.extensions.findCoreExtension(Extensions.remove)?.config?.removed);\n }\n shouldRemoveFromMain(): boolean {\n return Boolean(this.extensions.findCoreExtension(Extensions.remove)?.config?.removeOnMain);\n }\n\n /**\n * Validate the version model properties, to make sure we are not inserting something\n * in the wrong format\n */\n validate(): void {\n validateVersionInstance(this);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_lodash","data","require","_componentVersion","_componentId","_laneId","_uuid","_legacy","_legacy2","_component","_legacy3","_legacy4","_legacy5","_toolboxCrypto","_objects","_legacy6","_source","_interopRequireDefault","_dependenciesGraph","_bit","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","Version","BitObject","constructor","props","mainFile","files","log","dependencies","Dependencies","devDependencies","peerDependencies","docs","flattenedDependencies","ComponentIdList","flattenedEdges","flattenedEdgesRef","dependenciesGraphRef","packageDependencies","devPackageDependencies","peerPackageDependencies","bindingPrefix","schema","overrides","packageJsonChangedProps","_hash","hash","parents","squashed","unrelated","extensions","ExtensionDataList","fromArray","buildStatus","componentId","bitVersion","modified","origin","hidden","validateVersion","getFlattenedEdges","repo","getWithBackwardCompatibility","throws","flattenedEdgesSource","load","flattenedEdgesJson","JSON","parse","contents","toString","map","item","Array","isArray","depEdgeFromArray","depEdgeFromObject","_flattenedEdges","loadDependenciesGraph","dependenciesGraphSource","DependenciesGraph","deserialize","nonEmptyFields","forEach","field","VersionInvalid","id","obj","toObject","getDependencies","deps","clonedDependencies","cloneAsString","dependency","relativePaths","relativePath","sourceRelativePath","destinationRelativePath","getExtensions","sortedConfigOnly","sortById","toConfigArray","filterFunction","val","key","isEmpty","stringify","pickBy","extensionDependencies","calculateHash","Ref","makeHash","Error","extensionsBitIds","Dependency","lastModified","length","date","getAllFlattenedDependencies","getAllDependencies","depsIdsGroupedByType","getAllIds","getAllDependenciesCloned","getClone","getAllDependenciesIds","allDependencies","values","flat","getDependenciesIdsExcludeExtensions","updateFlattenedDependency","currentId","newId","getUpdated","updatedIds","depId","isEqual","refs","refsWithOptions","includeParents","includeArtifacts","allRefs","extractRefsFromFiles","file","push","artifacts","getRefsFromExtensions","refsWithoutParents","filter","ref","collectManyObjects","loadManyRaw","depEdgeToObject","depEdge","source","serialize","target","type","depEdgeObj","ComponentID","fromObject","depEdgeToArray","depEdgeArr","sourceStr","targetStr","fromString","flattenedEdgeToSource","undefined","flattenedEdgesObj","f","flattenedEdgesBuffer","Buffer","from","Source","dependenciesGraphToSource","dependenciesGraph","dependenciesGraphBuffer","_convertFileToObject","name","test","message","username","email","cloneAsObject","dep","toModelObjects","p","previousParents","laneId","head","validateBeforePersisting","versionStr","logger","trace","version","validate","toBuffer","pretty","args","getStringifyArgs","str","validateBeforePersist","contentParsed","flattenedDevDependencies","_getDependencies","getRelativePath","importSpecifiers","importSpecifier","scope","BitIdCompIdError","_getFlattenedDependencies","_groupFlattenedDependencies","flattenedDeps","flattenedDevDeps","parseFile","_getExtensions","exts","newExts","extension","extensionId","entry","ExtensionDataEntry","config","fromModelObject","LaneId","versionProps","fromComponent","component","pathNormalizeToLinux","get","componentOverridesData","getBitVersion","isSnap","setNewHash","sha1","v4","ignoreSharedDir","isSchemaSupport","SchemaFeature","sharedDir","isLegacy","SchemaName","Legacy","originLaneId","lane","originId","setDist","dist","DEFAULT_BUNDLE_FILENAME","hasParent","find","addParent","setSquashed","squashData","replaceMessage","addModifiedLog","Date","now","setUnrelated","externalHead","addAsOnlyParent","removeParent","removeAllParents","modelFilesToSourceFiles","repository","Promise","all","SourceFile","loadFromSourceFileModel","isRemoved","Boolean","findCoreExtension","Extensions","remove","removed","shouldRemoveFromMain","removeOnMain","validateVersionInstance","exports"],"sources":["version.ts"],"sourcesContent":["import { isEmpty, pickBy } from 'lodash';\nimport { isSnap } from '@teambit/component-version';\nimport { ComponentID, ComponentIdList } from '@teambit/component-id';\nimport { LaneId } from '@teambit/lane-id';\nimport { v4 } from 'uuid';\nimport { BuildStatus, DEFAULT_BUNDLE_FILENAME, Extensions } from '@teambit/legacy.constants';\nimport {\n isSchemaSupport,\n SchemaFeature,\n SchemaName,\n Dependencies,\n Dependency,\n ConsumerComponent,\n} from '@teambit/legacy.consumer-component';\nimport { getRefsFromExtensions, SourceFile } from '@teambit/component.sources';\nimport { ComponentOverridesData } from '@teambit/legacy.consumer-config';\nimport { ExtensionDataEntry, ExtensionDataList } from '@teambit/legacy.extension-data';\nimport type { Doclet } from '@teambit/semantics.doc-parser';\nimport { logger } from '@teambit/legacy.logger';\nimport { getStringifyArgs, PathLinux, pathNormalizeToLinux } from '@teambit/legacy.utils';\nimport { sha1 } from '@teambit/toolbox.crypto.sha1';\nimport { BitObject, Ref, Repository } from '../objects';\nimport { ObjectItem } from '../objects/object-list';\nimport { BitIdCompIdError, VersionInvalid, validateVersionInstance } from '@teambit/legacy.scope';\nimport Source from './source';\nimport { DependenciesGraph } from './dependencies-graph';\nimport { getBitVersion } from '@teambit/bit.get-bit-version';\n\nexport type SourceFileModel = {\n name: string;\n relativePath: PathLinux;\n test: boolean;\n file: Ref;\n};\n\nexport type DistFileModel = SourceFileModel;\n\nexport type ArtifactFileModel = {\n relativePath: PathLinux;\n file: Ref;\n};\n\nexport type Log = {\n message: string;\n date: string;\n username: string | undefined;\n email: string | undefined;\n};\n\nexport type DepEdgeType = 'prod' | 'dev' | 'peer' | 'ext';\nexport type DepEdge = { source: ComponentID; target: ComponentID; type: DepEdgeType };\n\ntype ExternalHead = { head: Ref; laneId: LaneId };\ntype SquashData = { previousParents: Ref[]; laneId: LaneId };\ntype VersionOrigin = { id: { scope: string; name: string }; lane?: { scope: string; name: string; hash: string } };\n\nexport type VersionProps = {\n mainFile: PathLinux;\n files: Array<SourceFileModel>;\n log: Log;\n docs?: Doclet[];\n dependencies?: Dependency[];\n devDependencies?: Dependency[];\n peerDependencies?: Dependency[];\n flattenedDependencies?: ComponentIdList;\n _flattenedEdges?: DepEdge[];\n flattenedEdges?: DepEdge[];\n flattenedEdgesRef?: Ref;\n dependenciesGraphRef?: Ref;\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n packageDependencies?: { [key: string]: string };\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n devPackageDependencies?: { [key: string]: string };\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n peerPackageDependencies?: { [key: string]: string };\n bindingPrefix: string;\n schema?: string;\n overrides: ComponentOverridesData;\n packageJsonChangedProps?: Record<string, any>;\n hash?: string;\n parents?: Ref[];\n squashed?: SquashData;\n unrelated?: ExternalHead;\n extensions?: ExtensionDataList;\n buildStatus?: BuildStatus;\n componentId?: ComponentID;\n bitVersion?: string;\n modified?: Log[];\n origin?: VersionOrigin;\n hidden?: boolean;\n};\n\n/**\n * Represent a version model in the scope\n */\nexport default class Version extends BitObject {\n mainFile: PathLinux;\n files: Array<SourceFileModel>;\n log: Log;\n docs: Doclet[] | undefined;\n dependencies: Dependencies;\n devDependencies: Dependencies;\n peerDependencies: Dependencies;\n flattenedDependencies: ComponentIdList;\n dependenciesGraphRef?: Ref;\n _dependenciesGraph?: DependenciesGraph; // caching for the dependencies graph\n flattenedEdgesRef?: Ref; // ref to a BitObject Source file, which is a JSON object containing the flattened edge\n _flattenedEdges?: DepEdge[]; // caching for the flattenedEdges\n /**\n * @deprecated\n * to get the flattenedEdges, please use `this.getFlattenedEdges()`.\n * this function handles the backward compatibility and provides the flattened edges regardless whether it was saved\n * the `flattenedEdgesRef` introduced or after.\n *\n * the reason this is left here is not for backward compatibility, but for forward compatibility. meaning, if a\n * Version object created by the new version is parsed by an old version that doesn't support the flattenedEdgesRef,\n * then, it'll be able to still get the flattenedEdges by this prop.\n * this is causing duplication currently. the data is kept in both, `this.flattenedEdges` and the file stored in `flattenedEdgesRef`.\n * so it'll be best to delete this prop as soon as all scopes are deployed with the new version.\n * (around August 2023 should be safe)\n */\n private flattenedEdges: DepEdge[];\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n packageDependencies: { [key: string]: string };\n devPackageDependencies: { [key: string]: string };\n peerPackageDependencies: { [key: string]: string };\n bindingPrefix: string;\n schema: string | undefined;\n overrides: ComponentOverridesData;\n packageJsonChangedProps: Record<string, any>;\n _hash: string; // reason for the underscore prefix is that we already have hash as a method\n parents: Ref[];\n squashed?: SquashData; // when a component is squashed during lane-merge\n unrelated?: ExternalHead; // when a component from a lane was created with the same name/scope as main, this ref points to the component of the lane\n extensions: ExtensionDataList;\n buildStatus?: BuildStatus;\n componentId?: ComponentID; // can help debugging errors when validating Version object\n bitVersion?: string;\n modified: Log[] = []; // currently mutation could happen as a result of either \"squash\" or \"sign\".\n origin?: VersionOrigin; // for debugging purposes\n hidden?: boolean; // whether the version is hidden from commands such as \"bit log\", \"bit blame\". (needed for un-meaningful snaps, such as merged-lane snap prior to the tag)\n\n constructor(props: VersionProps) {\n super();\n this.mainFile = props.mainFile;\n this.files = props.files;\n this.log = props.log;\n this.dependencies = new Dependencies(props.dependencies);\n this.devDependencies = new Dependencies(props.devDependencies);\n this.peerDependencies = new Dependencies(props.peerDependencies);\n this.docs = props.docs;\n this.flattenedDependencies = props.flattenedDependencies || new ComponentIdList();\n this.flattenedEdges = props.flattenedEdges || [];\n this.flattenedEdgesRef = props.flattenedEdgesRef;\n this.dependenciesGraphRef = props.dependenciesGraphRef;\n this.packageDependencies = props.packageDependencies || {};\n this.devPackageDependencies = props.devPackageDependencies || {};\n this.peerPackageDependencies = props.peerPackageDependencies || {};\n this.bindingPrefix = props.bindingPrefix;\n this.schema = props.schema;\n this.overrides = props.overrides || {};\n this.packageJsonChangedProps = props.packageJsonChangedProps || {};\n // @ts-ignore yes, props.hash can be undefined here, but it gets populated as soon as Version is created\n this._hash = props.hash;\n this.parents = props.parents || [];\n this.squashed = props.squashed;\n this.unrelated = props.unrelated;\n this.extensions = props.extensions || ExtensionDataList.fromArray([]);\n this.buildStatus = props.buildStatus;\n this.componentId = props.componentId;\n this.bitVersion = props.bitVersion;\n this.modified = props.modified || [];\n this.origin = props.origin;\n this.hidden = props.hidden;\n this.validateVersion();\n }\n\n /**\n * use only this method to get the flattened edges (graph of flattened dependencies).\n * it's backward compatible with the previous way this was stored on the Version object itself.\n */\n async getFlattenedEdges(repo: Repository): Promise<DepEdge[]> {\n const getWithBackwardCompatibility = async (): Promise<DepEdge[]> => {\n if (this.flattenedEdgesRef) {\n // it's possible that there is a ref but the file is not there.\n // it can happen if the remote-scope uses an older version that doesn't know to collect this ref.\n // in which case, the client will get the Version object with the ref prop, but not the Source object.\n const throws = false;\n const flattenedEdgesSource = (await repo.load(this.flattenedEdgesRef, throws)) as Source | undefined;\n if (flattenedEdgesSource) {\n const flattenedEdgesJson = JSON.parse(flattenedEdgesSource.contents.toString());\n return flattenedEdgesJson.map((item) =>\n Array.isArray(item) ? Version.depEdgeFromArray(item) : Version.depEdgeFromObject(item)\n );\n }\n }\n return this.flattenedEdges || [];\n };\n\n if (!this._flattenedEdges) {\n this._flattenedEdges = await getWithBackwardCompatibility();\n }\n\n return this._flattenedEdges;\n }\n\n async loadDependenciesGraph(repo: Repository): Promise<DependenciesGraph | undefined> {\n if (!this._dependenciesGraph) {\n if (this.dependenciesGraphRef) {\n // it's possible that there is a ref but the file is not there.\n // it can happen if the remote-scope uses an older version that doesn't know to collect this ref.\n // in which case, the client will get the Version object with the ref prop, but not the Source object.\n const throws = false;\n const dependenciesGraphSource = (await repo.load(this.dependenciesGraphRef, throws)) as Source | undefined;\n if (dependenciesGraphSource) {\n this._dependenciesGraph = DependenciesGraph.deserialize(dependenciesGraphSource.contents.toString());\n }\n }\n }\n return this._dependenciesGraph;\n }\n\n validateVersion() {\n const nonEmptyFields = ['mainFile', 'files'];\n nonEmptyFields.forEach((field) => {\n if (!this[field]) {\n throw new VersionInvalid(`failed creating a version object, the field \"${field}\" can't be empty`);\n }\n });\n }\n\n id() {\n const obj = this.toObject();\n\n // @todo: remove the entire dependencies.relativePaths from the ID (it's going to be a breaking change)\n const getDependencies = (deps: Dependencies) => {\n const clonedDependencies = deps.cloneAsString();\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return clonedDependencies.map((dependency: Dependency) => {\n return {\n id: dependency.id,\n relativePaths: dependency.relativePaths.map((relativePath) => {\n return {\n sourceRelativePath: relativePath.sourceRelativePath,\n destinationRelativePath: relativePath.destinationRelativePath,\n };\n }),\n };\n });\n };\n\n const getExtensions = (extensions: ExtensionDataList) => {\n const sortedConfigOnly = extensions.sortById().toConfigArray();\n return sortedConfigOnly;\n };\n\n const filterFunction = (val, key) => {\n if (\n key === 'devDependencies' ||\n key === 'extensionDependencies' ||\n key === 'devPackageDependencies' ||\n key === 'peerPackageDependencies' ||\n key === 'overrides' ||\n key === 'extensions'\n ) {\n return !isEmpty(val);\n }\n return !!val;\n };\n\n return JSON.stringify(\n pickBy(\n {\n mainFile: obj.mainFile,\n files: obj.files,\n log: obj.log,\n dependencies: getDependencies(this.dependencies),\n devDependencies: getDependencies(this.devDependencies),\n extensionDependencies: getDependencies(this.extensionDependencies),\n packageDependencies: obj.packageDependencies,\n devPackageDependencies: obj.devPackageDependencies,\n peerPackageDependencies: obj.peerPackageDependencies,\n bindingPrefix: obj.bindingPrefix,\n overrides: obj.overrides,\n extensions: getExtensions(this.extensions),\n },\n filterFunction\n )\n );\n }\n\n calculateHash(): Ref {\n return new Ref(BitObject.makeHash(this.id()));\n }\n\n hash(): Ref {\n if (!this._hash) {\n throw new Error('hash is missing from a Version object');\n }\n return new Ref(this._hash);\n }\n\n get extensionDependencies() {\n return new Dependencies(this.extensions.extensionsBitIds.map((id) => new Dependency(id, [])));\n }\n\n lastModified(): string {\n if (!this.modified || !this.modified.length) return this.log.date;\n return this.modified[this.modified.length - 1].date;\n }\n\n getAllFlattenedDependencies(): ComponentIdList {\n return ComponentIdList.fromArray([...this.flattenedDependencies]);\n }\n\n getAllDependencies(): Dependency[] {\n return [\n ...this.dependencies.dependencies,\n ...this.devDependencies.dependencies,\n ...this.extensionDependencies.dependencies,\n ];\n }\n\n get depsIdsGroupedByType(): {\n dependencies: ComponentIdList;\n devDependencies: ComponentIdList;\n peerDependencies: ComponentIdList;\n extensionDependencies: ComponentIdList;\n } {\n return {\n dependencies: this.dependencies.getAllIds(),\n devDependencies: this.devDependencies.getAllIds(),\n peerDependencies: this.peerDependencies.getAllIds(),\n extensionDependencies: this.extensions.extensionsBitIds,\n };\n }\n\n getAllDependenciesCloned(): Dependencies {\n const dependencies = [...this.dependencies.getClone(), ...this.devDependencies.getClone()];\n return new Dependencies(dependencies);\n }\n\n getAllDependenciesIds(): ComponentIdList {\n const allDependencies = Object.values(this.depsIdsGroupedByType).flat();\n return ComponentIdList.fromArray(allDependencies);\n }\n\n getDependenciesIdsExcludeExtensions(): ComponentIdList {\n return ComponentIdList.fromArray([...this.dependencies.getAllIds(), ...this.devDependencies.getAllIds()]);\n }\n\n updateFlattenedDependency(currentId: ComponentID, newId: ComponentID) {\n const getUpdated = (flattenedDependencies: ComponentIdList): ComponentIdList => {\n const updatedIds = flattenedDependencies.map((depId) => {\n if (depId.isEqual(currentId)) return newId;\n return depId;\n });\n return ComponentIdList.fromArray(updatedIds);\n };\n this.flattenedDependencies = getUpdated(this.flattenedDependencies);\n }\n\n refs(): Ref[] {\n return this.refsWithOptions();\n }\n\n refsWithOptions(includeParents = true, includeArtifacts = true): Ref[] {\n const allRefs: Ref[] = [];\n const extractRefsFromFiles = (files) => {\n const refs = files ? files.map((file) => file.file) : [];\n return refs;\n };\n const files = extractRefsFromFiles(this.files);\n allRefs.push(...files);\n if (includeParents) {\n allRefs.push(...this.parents);\n }\n if (includeArtifacts) {\n const artifacts = getRefsFromExtensions(this.extensions);\n allRefs.push(...artifacts);\n }\n if (this.flattenedEdgesRef) allRefs.push(this.flattenedEdgesRef);\n if (this.dependenciesGraphRef) allRefs.push(this.dependenciesGraphRef);\n return allRefs;\n }\n\n refsWithoutParents(): Ref[] {\n const extractRefsFromFiles = (files) => {\n const refs = files ? files.map((file) => file.file) : [];\n return refs;\n };\n const files = extractRefsFromFiles(this.files);\n const artifacts = getRefsFromExtensions(this.extensions);\n return [...files, ...artifacts].filter((ref) => ref);\n }\n\n async collectManyObjects(repo: Repository, refs: Ref[]): Promise<ObjectItem[]> {\n return repo.loadManyRaw(refs);\n }\n\n static depEdgeToObject(depEdge: DepEdge): Record<string, any> {\n return {\n source: depEdge.source.serialize(),\n target: depEdge.target.serialize(),\n type: depEdge.type,\n };\n }\n static depEdgeFromObject(depEdgeObj: Record<string, any>): DepEdge {\n return {\n source: ComponentID.fromObject(depEdgeObj.source),\n target: ComponentID.fromObject(depEdgeObj.target),\n type: depEdgeObj.type,\n };\n }\n /**\n * until 1.9.86, we used depEdgeToObject.\n * this one makes this object much much smaller (for 604 edges, it's now 143KB, with the array format it's 6KB!)\n * this format has been supported (but not used) since v1.6.97.\n */\n static depEdgeToArray(depEdge: DepEdge): Record<string, any> {\n return [depEdge.source.toString(), depEdge.target.toString(), depEdge.type];\n }\n static depEdgeFromArray(depEdgeArr: string[]): DepEdge {\n const [sourceStr, targetStr, type] = depEdgeArr;\n return {\n source: ComponentID.fromString(sourceStr),\n target: ComponentID.fromString(targetStr),\n type: type as DepEdgeType,\n };\n }\n static flattenedEdgeToSource(flattenedEdges?: DepEdge[]): Source | undefined {\n if (!flattenedEdges) return undefined;\n // const flattenedEdgesObj = flattenedEdges.map((f) => Version.depEdgeToArray(f));\n const flattenedEdgesObj = flattenedEdges.map((f) => Version.depEdgeToObject(f));\n const flattenedEdgesBuffer = Buffer.from(JSON.stringify(flattenedEdgesObj));\n return Source.from(flattenedEdgesBuffer);\n }\n static dependenciesGraphToSource(dependenciesGraph?: DependenciesGraph): Source | undefined {\n if (!dependenciesGraph) return undefined;\n const dependenciesGraphBuffer = Buffer.from(dependenciesGraph.serialize());\n return Source.from(dependenciesGraphBuffer);\n }\n\n toObject() {\n const _convertFileToObject = (file) => {\n return {\n file: file.file.toString(),\n relativePath: file.relativePath,\n name: file.name,\n test: file.test,\n };\n };\n\n return pickBy(\n {\n files: this.files ? this.files.map(_convertFileToObject) : null,\n mainFile: this.mainFile,\n bindingPrefix: this.bindingPrefix,\n schema: this.schema,\n log: {\n message: this.log.message,\n date: this.log.date,\n username: this.log.username,\n email: this.log.email,\n },\n docs: this.docs,\n dependencies: this.dependencies.cloneAsObject(),\n devDependencies: this.devDependencies.cloneAsObject(),\n flattenedDependencies: this.flattenedDependencies.map((dep) => dep.toObject()),\n flattenedEdges: this.flattenedEdgesRef ? undefined : this.flattenedEdges.map((f) => Version.depEdgeToObject(f)),\n flattenedEdgesRef: this.flattenedEdgesRef?.toString(),\n dependenciesGraphRef: this.dependenciesGraphRef?.toString(),\n extensions: this.extensions.toModelObjects(),\n packageDependencies: this.packageDependencies,\n devPackageDependencies: this.devPackageDependencies,\n peerPackageDependencies: this.peerPackageDependencies,\n overrides: this.overrides,\n buildStatus: this.buildStatus,\n packageJsonChangedProps: this.packageJsonChangedProps,\n parents: this.parents.map((p) => p.toString()),\n squashed: this.squashed\n ? {\n previousParents: this.squashed.previousParents.map((p) => p.toString()),\n laneId: this.squashed.laneId.toObject(),\n }\n : undefined,\n unrelated: this.unrelated\n ? { head: this.unrelated.head.toString(), laneId: this.unrelated.laneId.toObject() }\n : undefined,\n bitVersion: this.bitVersion,\n modified: this.modified,\n origin: this.origin,\n hidden: this.hidden,\n },\n (val) => !!val\n );\n }\n\n validateBeforePersisting(versionStr: string): void {\n logger.trace(`validating version object, hash: ${this.hash().hash}`);\n const version = Version.parse(versionStr, this._hash);\n version.validate();\n }\n\n toBuffer(pretty: boolean): Buffer {\n const obj = this.toObject();\n const args = getStringifyArgs(pretty);\n const str = JSON.stringify(obj, ...args);\n if (this.validateBeforePersist) this.validateBeforePersisting(str);\n return Buffer.from(str);\n }\n /**\n * used by the super class BitObject\n */\n static parse(contents: string, hash: string): Version {\n const contentParsed = JSON.parse(contents);\n const {\n mainFile,\n files,\n bindingPrefix,\n schema,\n log,\n docs,\n dependencies,\n devDependencies,\n flattenedDependencies,\n flattenedEdges,\n flattenedEdgesRef,\n dependenciesGraphRef,\n flattenedDevDependencies,\n devPackageDependencies,\n peerPackageDependencies,\n packageDependencies,\n overrides,\n packageJsonChangedProps,\n extensions,\n buildStatus,\n parents,\n squashed,\n unrelated,\n bitVersion,\n modified,\n origin,\n hidden,\n } = contentParsed;\n\n const _getDependencies = (deps = []): Dependency[] => {\n const getRelativePath = (relativePath) => {\n if (relativePath.importSpecifiers) {\n // backward compatibility. Before the massive validation was added, an item of\n // relativePath.importSpecifiers array could be missing the mainFile property, which is\n // an invalid ImportSpecifier. (instead the mainFile it had another importSpecifiers object).\n relativePath.importSpecifiers = relativePath.importSpecifiers.filter(\n (importSpecifier) => importSpecifier.mainFile\n );\n if (!relativePath.importSpecifiers.length) delete relativePath.importSpecifiers;\n }\n\n return relativePath;\n };\n\n return deps.map((dependency: any) => {\n if (!dependency.id.scope) {\n throw new BitIdCompIdError(dependency.id.name);\n }\n return new Dependency(\n ComponentID.fromObject(dependency.id),\n Array.isArray(dependency.relativePaths)\n ? dependency.relativePaths.map(getRelativePath)\n : dependency.relativePaths\n );\n });\n };\n\n const _getFlattenedDependencies = (deps = []): ComponentID[] => {\n return deps.map((dep) => ComponentID.fromObject(dep));\n };\n\n const _groupFlattenedDependencies = () => {\n // support backward compatibility. until v15, there was both flattenedDependencies and\n // flattenedDevDependencies. since then, these both were grouped to one flattenedDependencies\n const flattenedDeps = _getFlattenedDependencies(flattenedDependencies);\n const flattenedDevDeps = _getFlattenedDependencies(flattenedDevDependencies);\n return ComponentIdList.fromArray([...flattenedDeps, ...flattenedDevDeps]);\n };\n\n const parseFile = (file) => {\n return {\n file: Ref.from(file.file),\n relativePath: file.relativePath,\n name: file.name,\n test: file.test,\n };\n };\n const _getExtensions = (exts = []): ExtensionDataList => {\n if (exts.length) {\n const newExts = exts.map((extension: any) => {\n if (extension.extensionId) {\n const extensionId = ComponentID.fromObject(extension.extensionId);\n const entry = new ExtensionDataEntry(undefined, extensionId, undefined, extension.config, extension.data);\n return entry;\n }\n const entry = new ExtensionDataEntry(\n extension.id,\n undefined,\n extension.name,\n extension.config,\n extension.data\n );\n return entry;\n });\n return ExtensionDataList.fromModelObject(newExts);\n }\n return new ExtensionDataList();\n };\n\n return new Version({\n mainFile,\n files: files.map(parseFile),\n bindingPrefix,\n schema: schema || undefined,\n log: {\n // workaround for a bug where the log.message was saved as boolean when running `bit tag -m \"\"`\n // the bug was fixed since v0.1.27, but old objects might still have this bug\n message: typeof log.message !== 'string' ? '' : log.message,\n date: log.date,\n username: log.username,\n email: log.email,\n },\n docs,\n dependencies: _getDependencies(dependencies),\n devDependencies: _getDependencies(devDependencies),\n flattenedDependencies: _groupFlattenedDependencies(),\n // backward compatibility. before introducing `flattenedEdgesRef`, we only had `flattenedEdges`. see getFlattenedEdges() for more info.\n flattenedEdges: flattenedEdgesRef ? [] : flattenedEdges?.map((f) => Version.depEdgeFromObject(f)) || [],\n flattenedEdgesRef: flattenedEdgesRef ? Ref.from(flattenedEdgesRef) : undefined,\n dependenciesGraphRef: dependenciesGraphRef ? Ref.from(dependenciesGraphRef) : undefined,\n devPackageDependencies,\n peerPackageDependencies,\n packageDependencies,\n overrides,\n packageJsonChangedProps,\n hash,\n parents: parents ? parents.map((p) => Ref.from(p)) : [],\n squashed: squashed\n ? { previousParents: squashed.previousParents.map((r) => Ref.from(r)), laneId: new LaneId(squashed.laneId) }\n : undefined,\n unrelated: unrelated ? { head: Ref.from(unrelated.head), laneId: new LaneId(unrelated.laneId) } : undefined,\n extensions: _getExtensions(extensions),\n buildStatus,\n bitVersion,\n modified,\n origin,\n hidden,\n });\n }\n\n /**\n * used by raw-object.toRealObject()\n */\n static from(versionProps: VersionProps, hash: string): Version {\n return Version.parse(JSON.stringify(versionProps), hash);\n }\n\n /**\n * Create version model object from consumer component\n * @param {*} param0\n */\n static fromComponent({\n component,\n files,\n flattenedEdges,\n dependenciesGraph,\n }: {\n component: ConsumerComponent;\n files: Array<SourceFileModel>;\n flattenedEdges?: Source;\n dependenciesGraph?: Source;\n }) {\n const parseFile = (file) => {\n return {\n file: file.file.hash(),\n relativePath: file.relativePath,\n name: file.name,\n test: file.test,\n };\n };\n\n if (!component.log) throw new Error('Version.fromComponent - component.log is missing');\n const version = new Version({\n mainFile: pathNormalizeToLinux(component.mainFile),\n files: files.map(parseFile),\n bindingPrefix: component.bindingPrefix,\n log: component.log as Log,\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n docs: component.docs,\n dependencies: component.dependencies.get(),\n devDependencies: component.devDependencies.get(),\n packageDependencies: component.packageDependencies,\n devPackageDependencies: component.devPackageDependencies,\n peerPackageDependencies: component.peerPackageDependencies,\n dependenciesGraphRef: dependenciesGraph?.hash(),\n flattenedDependencies: component.flattenedDependencies,\n // it's safe to remove this line once the version.flattenedEdges prop is deleted\n flattenedEdges: component.flattenedEdges,\n flattenedEdgesRef: flattenedEdges?.hash(),\n schema: component.schema,\n overrides: component.overrides.componentOverridesData,\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n packageJsonChangedProps: component.packageJsonChangedProps,\n extensions: component.extensions,\n buildStatus: component.buildStatus,\n componentId: component.id,\n bitVersion: getBitVersion(),\n });\n if (isSnap(component.version)) {\n version._hash = component.version as string;\n } else {\n version.setNewHash();\n }\n\n return version;\n }\n\n setNewHash() {\n this._hash = sha1(v4());\n }\n\n get ignoreSharedDir(): boolean {\n return !isSchemaSupport(SchemaFeature.sharedDir, this.schema);\n }\n\n get isLegacy(): boolean {\n return !this.schema || this.schema === SchemaName.Legacy;\n }\n\n get originLaneId(): LaneId | undefined {\n return this.origin?.lane ? new LaneId({ name: this.origin.lane.name, scope: this.origin.lane.scope }) : undefined;\n }\n get originId(): ComponentID | undefined {\n return this.origin?.id\n ? ComponentID.fromObject({ scope: this.origin.id.scope, name: this.origin.id.name })\n : undefined;\n }\n\n setDist(dist: Source | undefined) {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n this.dist = dist\n ? {\n file: dist.hash(),\n name: DEFAULT_BUNDLE_FILENAME,\n }\n : null;\n }\n\n hasParent(ref: Ref) {\n return this.parents.find((p) => p.toString() === ref.toString());\n }\n\n addParent(ref: Ref) {\n if (this.isLegacy) return;\n if (this.hasParent(ref)) {\n return; // make sure to not add twice\n }\n this.parents.push(ref);\n }\n\n setSquashed(squashData: SquashData, log: Log, replaceMessage?: string) {\n this.squashed = squashData;\n this.addModifiedLog(log);\n if (replaceMessage) {\n this.addModifiedLog({\n username: undefined,\n email: undefined,\n date: Date.now().toString(),\n message: `squashing: replacing the original log.message, which was: \"${this.log.message || '<empty>'}\"`,\n });\n this.log.message = replaceMessage;\n }\n }\n\n setUnrelated(externalHead: ExternalHead) {\n this.unrelated = externalHead;\n }\n\n addModifiedLog(log: Log) {\n this.modified.push(log);\n }\n\n addAsOnlyParent(ref: Ref) {\n if (this.isLegacy) return;\n this.parents = [ref];\n }\n\n removeParent(ref: Ref) {\n this.parents = this.parents.filter((p) => p.toString() !== ref.toString());\n }\n\n removeAllParents() {\n this.parents = [];\n }\n\n modelFilesToSourceFiles(repository: Repository): Promise<SourceFile[]> {\n return Promise.all(this.files.map((file) => SourceFile.loadFromSourceFileModel(file, repository)));\n }\n\n isRemoved(): boolean {\n return Boolean(this.extensions.findCoreExtension(Extensions.remove)?.config?.removed);\n }\n shouldRemoveFromMain(): boolean {\n return Boolean(this.extensions.findCoreExtension(Extensions.remove)?.config?.removeOnMain);\n }\n\n /**\n * Validate the version model properties, to make sure we are not inserting something\n * in the wrong format\n */\n validate(): void {\n validateVersionInstance(this);\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -177,22 +177,27 @@ export default class VersionHistory extends BitObject {
177
177
  getGraph(
178
178
  modelComponent?: ModelComponent,
179
179
  laneHeads?: { [hash: string]: string[] },
180
- shortHash = false
180
+ shortHash = false,
181
+ limitVersions?: number
181
182
  ): VersionHistoryGraph {
182
183
  const refToStr = (ref: Ref) => (shortHash ? ref.toShortString() : ref.toString());
183
184
  const graph = new Graph<string | HashMetadata, string>();
184
- const allHashes = this.versions
185
+ const allVersions = limitVersions ? [...this.versions].slice(-limitVersions) : this.versions;
186
+ const allHashes = allVersions
185
187
  .map((v) => compact([v.hash, ...v.parents, ...(v.squashed || []), v.unrelated]))
186
188
  .flat();
187
189
 
190
+ const allHashesUniq = uniqBy(allHashes, 'hash');
191
+
188
192
  const getMetadata = (ref: Ref): HashMetadata | undefined => {
189
193
  if (!modelComponent || !laneHeads) return undefined;
190
194
  const tag = modelComponent.getTagOfRefIfExists(ref);
191
195
  const pointers = laneHeads[ref.toString()];
192
196
  return { tag, pointers };
193
197
  };
194
- const nodes = allHashes.map((v) => new Node(refToStr(v), getMetadata(v) || refToStr(v)));
195
- const edges = this.versions
198
+ const nodes = allHashesUniq.map((v) => new Node(refToStr(v), getMetadata(v) || refToStr(v)));
199
+
200
+ const edges = allVersions
196
201
  .map((v) => {
197
202
  const verEdges = v.parents.map((p) => new Edge(refToStr(v.hash), refToStr(p), 'parent'));
198
203
  if (v.unrelated) verEdges.push(new Edge(refToStr(v.hash), refToStr(v.unrelated), 'unrelated'));
package/models/version.ts CHANGED
@@ -430,8 +430,8 @@ export default class Version extends BitObject {
430
430
  }
431
431
  static flattenedEdgeToSource(flattenedEdges?: DepEdge[]): Source | undefined {
432
432
  if (!flattenedEdges) return undefined;
433
- const flattenedEdgesObj = flattenedEdges.map((f) => Version.depEdgeToArray(f));
434
- // const flattenedEdgesObj = flattenedEdges.map((f) => Version.depEdgeToObject(f));
433
+ // const flattenedEdgesObj = flattenedEdges.map((f) => Version.depEdgeToArray(f));
434
+ const flattenedEdgesObj = flattenedEdges.map((f) => Version.depEdgeToObject(f));
435
435
  const flattenedEdgesBuffer = Buffer.from(JSON.stringify(flattenedEdgesObj));
436
436
  return Source.from(flattenedEdgesBuffer);
437
437
  }
package/package.json CHANGED
@@ -1,63 +1,63 @@
1
1
  {
2
2
  "name": "@teambit/objects",
3
- "version": "0.0.68",
3
+ "version": "0.0.70",
4
4
  "homepage": "https://bit.cloud/teambit/scope/objects",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.scope",
8
8
  "name": "objects",
9
- "version": "0.0.68"
9
+ "version": "0.0.70"
10
10
  },
11
11
  "dependencies": {
12
- "@pnpm/dependency-path": "900.0.0",
13
- "@pnpm/lockfile.types": "^900.0.0",
14
- "semver": "7.7.1",
15
12
  "lodash": "4.17.21",
16
- "uuid": "8.3.2",
17
- "async-mutex": "0.3.1",
18
- "p-map-series": "2.1.0",
19
13
  "tar-stream": "2.2.0",
14
+ "p-map-series": "2.1.0",
20
15
  "is-relative-path": "2.0.0",
16
+ "async-mutex": "0.3.1",
21
17
  "fs-extra": "10.0.0",
22
18
  "uid-number": "0.0.6",
19
+ "@pnpm/dependency-path": "900.0.0",
20
+ "@pnpm/lockfile.types": "^900.0.0",
21
+ "semver": "7.7.1",
22
+ "uuid": "8.3.2",
23
23
  "@teambit/harmony": "0.4.7",
24
24
  "@teambit/component-id": "1.2.3",
25
+ "@teambit/graph.cleargraph": "0.0.11",
25
26
  "@teambit/bit-error": "0.0.404",
26
27
  "@teambit/component-version": "1.0.4",
27
28
  "@teambit/lane-id": "0.0.312",
28
29
  "@teambit/legacy-bit-id": "1.1.2",
29
- "@teambit/graph.cleargraph": "0.0.11",
30
- "@teambit/cli": "0.0.1138",
31
- "@teambit/legacy.utils": "0.0.19",
32
- "@teambit/harmony.modules.get-basic-log": "0.0.42",
33
- "@teambit/component.snap-distance": "0.0.42",
34
- "@teambit/config-store": "0.0.18",
35
- "@teambit/legacy.cli.error": "0.0.16",
36
- "@teambit/legacy.constants": "0.0.11",
30
+ "@teambit/cli": "0.0.1140",
31
+ "@teambit/component.snap-distance": "0.0.44",
32
+ "@teambit/graph": "1.0.563",
33
+ "@teambit/harmony.modules.concurrency": "0.0.12",
37
34
  "@teambit/legacy.logger": "0.0.16",
38
- "@teambit/legacy.scope": "0.0.41",
35
+ "@teambit/legacy.scope": "0.0.43",
36
+ "@teambit/toolbox.promise.map-pool": "0.0.6",
37
+ "@teambit/legacy.constants": "0.0.11",
38
+ "@teambit/legacy.utils": "0.0.19",
39
39
  "@teambit/toolbox.crypto.sha1": "0.0.7",
40
- "@teambit/component.sources": "0.0.93",
40
+ "@teambit/harmony.modules.in-memory-cache": "0.0.13",
41
+ "@teambit/toolbox.fs.remove-empty-dir": "0.0.5",
42
+ "@teambit/harmony.modules.get-basic-log": "0.0.44",
43
+ "@teambit/config-store": "0.0.20",
44
+ "@teambit/legacy.cli.error": "0.0.16",
45
+ "@teambit/component.sources": "0.0.95",
41
46
  "@teambit/harmony.modules.feature-toggle": "0.0.19",
42
47
  "@teambit/legacy-component-log": "0.0.407",
43
- "@teambit/legacy.consumer-component": "0.0.42",
44
- "@teambit/legacy.consumer-config": "0.0.41",
45
- "@teambit/legacy.extension-data": "0.0.43",
48
+ "@teambit/legacy.consumer-component": "0.0.44",
49
+ "@teambit/legacy.consumer-config": "0.0.43",
50
+ "@teambit/legacy.extension-data": "0.0.45",
46
51
  "@teambit/pkg.modules.semver-helper": "0.0.8",
47
52
  "@teambit/toolbox.array.duplications-finder": "0.0.3",
48
53
  "@teambit/bit.get-bit-version": "0.0.5",
49
- "@teambit/semantics.doc-parser": "0.0.49",
50
- "@teambit/graph": "1.0.561",
51
- "@teambit/harmony.modules.concurrency": "0.0.12",
52
- "@teambit/toolbox.promise.map-pool": "0.0.6",
53
- "@teambit/harmony.modules.in-memory-cache": "0.0.13",
54
- "@teambit/toolbox.fs.remove-empty-dir": "0.0.5"
54
+ "@teambit/semantics.doc-parser": "0.0.51"
55
55
  },
56
56
  "devDependencies": {
57
- "@types/semver": "7.5.8",
58
57
  "@types/lodash": "4.14.165",
59
- "@types/uuid": "8.3.4",
60
58
  "@types/fs-extra": "9.0.7",
59
+ "@types/semver": "7.5.8",
60
+ "@types/uuid": "8.3.4",
61
61
  "@teambit/harmony.envs.core-aspect-env": "0.0.69"
62
62
  },
63
63
  "peerDependencies": {