@teambit/snapping 1.0.1209 → 1.0.1211

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.
@@ -136,7 +136,7 @@ class FlattenedEdgesGetter {
136
136
  versionStr
137
137
  }) => {
138
138
  const flattenedEdges = await version.getFlattenedEdges(this.scope.legacyScope.objects);
139
- if (!flattenedEdges.length && version.flattenedDependencies.length) {
139
+ if (!flattenedEdges.length && (await version.loadFlattenedDependencies(this.scope.legacyScope.objects)).length) {
140
140
  missingEdges.push(component.toComponentId().changeVersion(versionStr));
141
141
  }
142
142
  this.addFlattenedEdgesToGraph(flattenedEdges);
@@ -151,7 +151,9 @@ class FlattenedEdgesGetter {
151
151
  const modelComponent = comp.modelComponent || (await this.scope.legacyScope.getModelComponent(comp.id.changeVersion(undefined)));
152
152
  const version = await modelComponent.loadVersion(previousVersion, this.scope.legacyScope.objects, true);
153
153
  const flattenedEdges = await version.getFlattenedEdges(this.scope.legacyScope.objects);
154
- if (flattenedEdges.length) flattenedDeps.push(version.flattenedDependencies);
154
+ if (flattenedEdges.length) {
155
+ flattenedDeps.push(await version.loadFlattenedDependencies(this.scope.legacyScope.objects));
156
+ }
155
157
  this.addFlattenedEdgesToGraph(flattenedEdges);
156
158
  }, {
157
159
  concurrency: 50
@@ -170,7 +172,7 @@ ${missingEdges.map(e => e.toString()).join('\n')}`);
170
172
  lane: this.lane,
171
173
  preferDependencyGraph: false // we know it does not have a dependency graph
172
174
  });
173
- const allFlattened = results.map(result => result.version.flattenedDependencies);
175
+ const allFlattened = await Promise.all(results.map(result => result.version.loadFlattenedDependencies(this.scope.legacyScope.objects)));
174
176
  allFlattened.push(missingEdgesList);
175
177
  const allFlattenedUniq = _componentId().ComponentIdList.uniqFromArray(allFlattened.flat());
176
178
  const componentsAndVersions = await this.scope.legacyScope.getComponentsAndVersions(_componentId().ComponentIdList.fromArray(allFlattenedUniq));
@@ -1 +1 @@
1
- {"version":3,"names":["_graph","data","require","_componentId","_toolboxPromise","_bitError","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","FlattenedEdgesGetter","constructor","scope","consumerComponents","logger","lane","Graph","buildGraph","debug","buildTheFirstLevel","populateMissingFromGraph","missingFromGraph","length","graph","addPreviousGraphs","importMissingAndAddToGraph","addComponentsWithMissingFlattenedEdges","populateFlattenedAndEdgesForComp","component","graphFromIds","successorsSubgraph","id","toString","edgesFromGraph","edges","map","edge","source","ComponentID","fromString","sourceId","target","targetId","type","attr","flattenedFromGraphIncludeItself","nodes","node","flattenedFromGraph","filter","isEqual","forEach","dep","throwWhenDepNotIncluded","flattenedDependencies","ComponentIdList","fromArray","flattenedEdges","idsWithoutGraphList","legacyScope","scopeImporter","importWithoutDeps","cache","componentsAndVersions","getComponentsAndVersions","missingEdges","Promise","all","version","versionStr","getFlattenedEdges","objects","push","toComponentId","changeVersion","addFlattenedEdgesToGraph","flattenedDeps","pMapPool","comp","previousVersion","previouslyUsedVersion","modelComponent","getModelComponent","undefined","loadVersion","concurrency","flattenedDepsUniq","uniqFromArray","flat","has","warn","join","missingEdgesList","results","importMany","ids","preferDependencyGraph","allFlattened","result","allFlattenedUniq","compId","setNode","Node","addEdges","dependencies","devDependencies","extensionDependencies","setEdge","Edge","allIds","currentlySnappedIds","filteredIds","label","get","exports","componentId","dependencyId","hasScope","hasVersion","BitError"],"sources":["flattened-edges.ts"],"sourcesContent":["import { Graph, Node, Edge } from '@teambit/graph.cleargraph';\nimport type { DepEdgeType } from '@teambit/graph';\nimport type { ScopeMain } from '@teambit/scope';\nimport type { ConsumerComponent } from '@teambit/legacy.consumer-component';\nimport type { DepEdge, Lane } from '@teambit/objects';\nimport { ComponentID, ComponentIdList } from '@teambit/component-id';\nimport type { Logger } from '@teambit/logger';\nimport { pMapPool } from '@teambit/toolbox.promise.map-pool';\nimport { BitError } from '@teambit/bit-error';\n\n/**\n * the goal of this class is to determine the graph dependencies of a given set of components with minimal effort.\n * it takes advantage of the fact that we save the dependency graph in the `Version` object and tries to reuse it.\n *\n * to optimize it as much as possible, we do it in 4 steps. each step we check whether the graph has missing ids,\n * and if so, continue to the next step.\n *\n * * * First step * * *\n * we have two groups in this graph.\n * 1. components that are now versioned (this.consumerComponents). they have the new version (which is not in the scope yet).\n * 2. component that are not part of the current snap/tag.\n * it's not possible that this group has new components that never been into the scope, otherwise the tag/snap is failing.\n * so we know we can always find the version-object of these components in the scope or import them.\n *\n * given the above. we can simply get the first level of dependencies of the first group.\n * start the graph by adding them all as nodes and edges.\n *\n * this dependencies array may contain components from the first group. we can filter them out. (we don't care about\n * them, they're part of the graph already)\n * we're left with the dependencies that are part of the second group. there are the `missingFromGraph`.\n *\n * * * Second step * * *\n * instead of import these components, we can more efficiently get their previous version from the scope.\n * it must be already in the scope because these are the components we load in the first place.\n * chances are that 99% of the dependencies of the current components objects are identical to the previous version.\n * by adding the flattenedEdges of the previous versions we can probably finish the graph without importing a single\n * component. It's ok that this graph of previous versions has ids that are not relevant to this graph. for example, if\n * we now tag bar@0.0.2, this graph will have bar@0.0.1 although it's not relevant. it's ok, because finally we don't\n * use this graph as a whole. we only pick a component and get its sub-graph, so all irrelevant ids are ignored.\n *\n * * * Third step * * *\n * in case the graph above wasn't enough. we can import the missing components and get their flattenedEdges.\n * all components that were snapped/tagged since around 0.0.8000 have the flattenedEdges saved in the version.\n * older components don't have them and that's why the last step is needed.\n *\n * * * Fourth step * * *\n * this is the worst scenario. we have some old dependencies without flattenedEdges, we have to import them with\n * all their flattened dependencies.\n * once we have all these objects we can iterate them and add them to the graph.\n */\nexport class FlattenedEdgesGetter {\n private graph = new Graph<ComponentID, DepEdgeType>();\n private missingFromGraph: ComponentID[] = [];\n constructor(\n private scope: ScopeMain,\n private consumerComponents: ConsumerComponent[],\n private logger: Logger,\n private lane?: Lane\n ) {}\n\n async buildGraph() {\n this.logger.debug('FlattenedEdgesGetter, start');\n this.buildTheFirstLevel();\n this.populateMissingFromGraph();\n if (!this.missingFromGraph.length) {\n return this.graph;\n }\n this.logger.debug(\n `FlattenedEdgesGetter, total ${this.missingFromGraph.length} components missing from graph, trying to find them in previous versions`\n );\n await this.addPreviousGraphs();\n if (!this.missingFromGraph.length) {\n this.logger.debug(`FlattenedEdgesGetter, all missing ids were found in previous versions`);\n return this.graph;\n }\n this.logger.debug(\n `FlattenedEdgesGetter, total ${this.missingFromGraph.length} components missing from graph, trying to import them and load their flattenedEdges`\n );\n await this.importMissingAndAddToGraph();\n if (!this.missingFromGraph.length) {\n this.logger.debug(`FlattenedEdgesGetter, successfully found flattened edges for all components without graph`);\n return this.graph;\n }\n this.logger.debug(\n `FlattenedEdgesGetter, total ${this.missingFromGraph.length} components without graph and their version-objects has no flattened edges, no choice but to import all their flattened deps`\n );\n await this.addComponentsWithMissingFlattenedEdges();\n return this.graph;\n }\n\n populateFlattenedAndEdgesForComp(component: ConsumerComponent) {\n const graphFromIds = this.graph.successorsSubgraph(component.id.toString());\n const edgesFromGraph = graphFromIds.edges.map((edge) => {\n return {\n source: ComponentID.fromString(edge.sourceId),\n target: ComponentID.fromString(edge.targetId),\n type: edge.attr as DepEdgeType,\n };\n });\n\n const flattenedFromGraphIncludeItself = graphFromIds.nodes.map((node) => node.attr);\n const flattenedFromGraph = flattenedFromGraphIncludeItself.filter((id) => !id.isEqual(component.id));\n flattenedFromGraph.forEach((dep) => throwWhenDepNotIncluded(component.id, dep));\n\n component.flattenedDependencies = ComponentIdList.fromArray(flattenedFromGraph);\n component.flattenedEdges = edgesFromGraph;\n }\n\n private async importMissingAndAddToGraph() {\n const idsWithoutGraphList = ComponentIdList.fromArray(this.missingFromGraph);\n await this.scope.legacyScope.scopeImporter.importWithoutDeps(idsWithoutGraphList, {\n cache: true,\n lane: this.lane,\n });\n const componentsAndVersions = await this.scope.legacyScope.getComponentsAndVersions(idsWithoutGraphList);\n const missingEdges: ComponentID[] = [];\n await Promise.all(\n componentsAndVersions.map(async ({ component, version, versionStr }) => {\n const flattenedEdges = await version.getFlattenedEdges(this.scope.legacyScope.objects);\n if (!flattenedEdges.length && version.flattenedDependencies.length) {\n missingEdges.push(component.toComponentId().changeVersion(versionStr));\n }\n this.addFlattenedEdgesToGraph(flattenedEdges);\n })\n );\n this.missingFromGraph = missingEdges;\n }\n\n private async addPreviousGraphs() {\n const flattenedDeps: ComponentID[][] = [];\n await pMapPool(\n this.consumerComponents,\n async (comp) => {\n const previousVersion = comp.previouslyUsedVersion;\n if (!previousVersion) return;\n const modelComponent =\n comp.modelComponent || (await this.scope.legacyScope.getModelComponent(comp.id.changeVersion(undefined)));\n const version = await modelComponent.loadVersion(previousVersion, this.scope.legacyScope.objects, true);\n const flattenedEdges = await version.getFlattenedEdges(this.scope.legacyScope.objects);\n if (flattenedEdges.length) flattenedDeps.push(version.flattenedDependencies);\n this.addFlattenedEdgesToGraph(flattenedEdges);\n },\n { concurrency: 50 }\n );\n\n const flattenedDepsUniq = ComponentIdList.uniqFromArray(flattenedDeps.flat());\n this.missingFromGraph = this.missingFromGraph.filter((id) => !flattenedDepsUniq.has(id));\n }\n\n private async addComponentsWithMissingFlattenedEdges() {\n const missingEdges = this.missingFromGraph;\n this.logger.warn(`FlattenedEdgesGetter, found ${missingEdges.length} components with missing flattened edges:\n${missingEdges.map((e) => e.toString()).join('\\n')}`);\n const missingEdgesList = ComponentIdList.fromArray(missingEdges);\n const results = await this.scope.legacyScope.scopeImporter.importMany({\n ids: missingEdgesList,\n cache: true,\n lane: this.lane,\n preferDependencyGraph: false, // we know it does not have a dependency graph\n });\n const allFlattened = results.map((result) => result.version.flattenedDependencies);\n allFlattened.push(missingEdgesList);\n const allFlattenedUniq = ComponentIdList.uniqFromArray(allFlattened.flat());\n const componentsAndVersions = await this.scope.legacyScope.getComponentsAndVersions(\n ComponentIdList.fromArray(allFlattenedUniq)\n );\n componentsAndVersions.forEach(({ component, version, versionStr }) => {\n const compId = component.toComponentId().changeVersion(versionStr);\n this.graph.setNode(new Node(compId.toString(), compId));\n this.addEdges(compId, version.dependencies, 'prod');\n this.addEdges(compId, version.devDependencies, 'dev');\n this.addEdges(compId, version.extensionDependencies, 'ext');\n });\n }\n\n private addFlattenedEdgesToGraph(flattenedEdges: DepEdge[]) {\n flattenedEdges.forEach(({ source, target, type }) => {\n this.graph.setNode(new Node(source.toString(), source));\n this.graph.setNode(new Node(target.toString(), target));\n this.graph.setEdge(new Edge(source.toString(), target.toString(), type));\n });\n }\n\n private populateMissingFromGraph() {\n const allIds = this.graph.nodes.map((node) => node.attr);\n const currentlySnappedIds = ComponentIdList.fromArray(this.consumerComponents.map((comp) => comp.id));\n const filteredIds = allIds.filter((id) => !currentlySnappedIds.has(id));\n this.missingFromGraph = filteredIds;\n }\n\n private buildTheFirstLevel() {\n this.consumerComponents.forEach((comp) => {\n const id = comp.id;\n this.graph.setNode(new Node(id.toString(), id));\n this.addEdges(comp.id, comp.dependencies, 'prod');\n this.addEdges(comp.id, comp.devDependencies, 'dev');\n this.addEdges(comp.id, comp.extensionDependencies, 'ext');\n });\n }\n\n private addEdges(compId: ComponentID, dependencies: ConsumerComponent['dependencies'], label: DepEdgeType) {\n dependencies.get().forEach((dep) => {\n this.graph.setNode(new Node(dep.id.toString(), dep.id));\n this.graph.setEdge(new Edge(compId.toString(), dep.id.toString(), label));\n });\n }\n}\n\nfunction throwWhenDepNotIncluded(componentId: ComponentID, dependencyId: ComponentID) {\n if (!dependencyId.hasScope() && !dependencyId.hasVersion()) {\n throw new BitError(`fatal: \"${componentId.toString()}\" has a dependency \"${dependencyId.toString()}\".\nthis dependency was not included in the tag command.`);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_graph","data","require","_componentId","_toolboxPromise","_bitError","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","FlattenedEdgesGetter","constructor","scope","consumerComponents","logger","lane","Graph","buildGraph","debug","buildTheFirstLevel","populateMissingFromGraph","missingFromGraph","length","graph","addPreviousGraphs","importMissingAndAddToGraph","addComponentsWithMissingFlattenedEdges","populateFlattenedAndEdgesForComp","component","graphFromIds","successorsSubgraph","id","toString","edgesFromGraph","edges","map","edge","source","ComponentID","fromString","sourceId","target","targetId","type","attr","flattenedFromGraphIncludeItself","nodes","node","flattenedFromGraph","filter","isEqual","forEach","dep","throwWhenDepNotIncluded","flattenedDependencies","ComponentIdList","fromArray","flattenedEdges","idsWithoutGraphList","legacyScope","scopeImporter","importWithoutDeps","cache","componentsAndVersions","getComponentsAndVersions","missingEdges","Promise","all","version","versionStr","getFlattenedEdges","objects","loadFlattenedDependencies","push","toComponentId","changeVersion","addFlattenedEdgesToGraph","flattenedDeps","pMapPool","comp","previousVersion","previouslyUsedVersion","modelComponent","getModelComponent","undefined","loadVersion","concurrency","flattenedDepsUniq","uniqFromArray","flat","has","warn","join","missingEdgesList","results","importMany","ids","preferDependencyGraph","allFlattened","result","allFlattenedUniq","compId","setNode","Node","addEdges","dependencies","devDependencies","extensionDependencies","setEdge","Edge","allIds","currentlySnappedIds","filteredIds","label","get","exports","componentId","dependencyId","hasScope","hasVersion","BitError"],"sources":["flattened-edges.ts"],"sourcesContent":["import { Graph, Node, Edge } from '@teambit/graph.cleargraph';\nimport type { DepEdgeType } from '@teambit/graph';\nimport type { ScopeMain } from '@teambit/scope';\nimport type { ConsumerComponent } from '@teambit/legacy.consumer-component';\nimport type { DepEdge, Lane } from '@teambit/objects';\nimport { ComponentID, ComponentIdList } from '@teambit/component-id';\nimport type { Logger } from '@teambit/logger';\nimport { pMapPool } from '@teambit/toolbox.promise.map-pool';\nimport { BitError } from '@teambit/bit-error';\n\n/**\n * the goal of this class is to determine the graph dependencies of a given set of components with minimal effort.\n * it takes advantage of the fact that we save the dependency graph in the `Version` object and tries to reuse it.\n *\n * to optimize it as much as possible, we do it in 4 steps. each step we check whether the graph has missing ids,\n * and if so, continue to the next step.\n *\n * * * First step * * *\n * we have two groups in this graph.\n * 1. components that are now versioned (this.consumerComponents). they have the new version (which is not in the scope yet).\n * 2. component that are not part of the current snap/tag.\n * it's not possible that this group has new components that never been into the scope, otherwise the tag/snap is failing.\n * so we know we can always find the version-object of these components in the scope or import them.\n *\n * given the above. we can simply get the first level of dependencies of the first group.\n * start the graph by adding them all as nodes and edges.\n *\n * this dependencies array may contain components from the first group. we can filter them out. (we don't care about\n * them, they're part of the graph already)\n * we're left with the dependencies that are part of the second group. there are the `missingFromGraph`.\n *\n * * * Second step * * *\n * instead of import these components, we can more efficiently get their previous version from the scope.\n * it must be already in the scope because these are the components we load in the first place.\n * chances are that 99% of the dependencies of the current components objects are identical to the previous version.\n * by adding the flattenedEdges of the previous versions we can probably finish the graph without importing a single\n * component. It's ok that this graph of previous versions has ids that are not relevant to this graph. for example, if\n * we now tag bar@0.0.2, this graph will have bar@0.0.1 although it's not relevant. it's ok, because finally we don't\n * use this graph as a whole. we only pick a component and get its sub-graph, so all irrelevant ids are ignored.\n *\n * * * Third step * * *\n * in case the graph above wasn't enough. we can import the missing components and get their flattenedEdges.\n * all components that were snapped/tagged since around 0.0.8000 have the flattenedEdges saved in the version.\n * older components don't have them and that's why the last step is needed.\n *\n * * * Fourth step * * *\n * this is the worst scenario. we have some old dependencies without flattenedEdges, we have to import them with\n * all their flattened dependencies.\n * once we have all these objects we can iterate them and add them to the graph.\n */\nexport class FlattenedEdgesGetter {\n private graph = new Graph<ComponentID, DepEdgeType>();\n private missingFromGraph: ComponentID[] = [];\n constructor(\n private scope: ScopeMain,\n private consumerComponents: ConsumerComponent[],\n private logger: Logger,\n private lane?: Lane\n ) {}\n\n async buildGraph() {\n this.logger.debug('FlattenedEdgesGetter, start');\n this.buildTheFirstLevel();\n this.populateMissingFromGraph();\n if (!this.missingFromGraph.length) {\n return this.graph;\n }\n this.logger.debug(\n `FlattenedEdgesGetter, total ${this.missingFromGraph.length} components missing from graph, trying to find them in previous versions`\n );\n await this.addPreviousGraphs();\n if (!this.missingFromGraph.length) {\n this.logger.debug(`FlattenedEdgesGetter, all missing ids were found in previous versions`);\n return this.graph;\n }\n this.logger.debug(\n `FlattenedEdgesGetter, total ${this.missingFromGraph.length} components missing from graph, trying to import them and load their flattenedEdges`\n );\n await this.importMissingAndAddToGraph();\n if (!this.missingFromGraph.length) {\n this.logger.debug(`FlattenedEdgesGetter, successfully found flattened edges for all components without graph`);\n return this.graph;\n }\n this.logger.debug(\n `FlattenedEdgesGetter, total ${this.missingFromGraph.length} components without graph and their version-objects has no flattened edges, no choice but to import all their flattened deps`\n );\n await this.addComponentsWithMissingFlattenedEdges();\n return this.graph;\n }\n\n populateFlattenedAndEdgesForComp(component: ConsumerComponent) {\n const graphFromIds = this.graph.successorsSubgraph(component.id.toString());\n const edgesFromGraph = graphFromIds.edges.map((edge) => {\n return {\n source: ComponentID.fromString(edge.sourceId),\n target: ComponentID.fromString(edge.targetId),\n type: edge.attr as DepEdgeType,\n };\n });\n\n const flattenedFromGraphIncludeItself = graphFromIds.nodes.map((node) => node.attr);\n const flattenedFromGraph = flattenedFromGraphIncludeItself.filter((id) => !id.isEqual(component.id));\n flattenedFromGraph.forEach((dep) => throwWhenDepNotIncluded(component.id, dep));\n\n component.flattenedDependencies = ComponentIdList.fromArray(flattenedFromGraph);\n component.flattenedEdges = edgesFromGraph;\n }\n\n private async importMissingAndAddToGraph() {\n const idsWithoutGraphList = ComponentIdList.fromArray(this.missingFromGraph);\n await this.scope.legacyScope.scopeImporter.importWithoutDeps(idsWithoutGraphList, {\n cache: true,\n lane: this.lane,\n });\n const componentsAndVersions = await this.scope.legacyScope.getComponentsAndVersions(idsWithoutGraphList);\n const missingEdges: ComponentID[] = [];\n await Promise.all(\n componentsAndVersions.map(async ({ component, version, versionStr }) => {\n const flattenedEdges = await version.getFlattenedEdges(this.scope.legacyScope.objects);\n if (\n !flattenedEdges.length &&\n (await version.loadFlattenedDependencies(this.scope.legacyScope.objects)).length\n ) {\n missingEdges.push(component.toComponentId().changeVersion(versionStr));\n }\n this.addFlattenedEdgesToGraph(flattenedEdges);\n })\n );\n this.missingFromGraph = missingEdges;\n }\n\n private async addPreviousGraphs() {\n const flattenedDeps: ComponentID[][] = [];\n await pMapPool(\n this.consumerComponents,\n async (comp) => {\n const previousVersion = comp.previouslyUsedVersion;\n if (!previousVersion) return;\n const modelComponent =\n comp.modelComponent || (await this.scope.legacyScope.getModelComponent(comp.id.changeVersion(undefined)));\n const version = await modelComponent.loadVersion(previousVersion, this.scope.legacyScope.objects, true);\n const flattenedEdges = await version.getFlattenedEdges(this.scope.legacyScope.objects);\n if (flattenedEdges.length) {\n flattenedDeps.push(await version.loadFlattenedDependencies(this.scope.legacyScope.objects));\n }\n this.addFlattenedEdgesToGraph(flattenedEdges);\n },\n { concurrency: 50 }\n );\n\n const flattenedDepsUniq = ComponentIdList.uniqFromArray(flattenedDeps.flat());\n this.missingFromGraph = this.missingFromGraph.filter((id) => !flattenedDepsUniq.has(id));\n }\n\n private async addComponentsWithMissingFlattenedEdges() {\n const missingEdges = this.missingFromGraph;\n this.logger.warn(`FlattenedEdgesGetter, found ${missingEdges.length} components with missing flattened edges:\n${missingEdges.map((e) => e.toString()).join('\\n')}`);\n const missingEdgesList = ComponentIdList.fromArray(missingEdges);\n const results = await this.scope.legacyScope.scopeImporter.importMany({\n ids: missingEdgesList,\n cache: true,\n lane: this.lane,\n preferDependencyGraph: false, // we know it does not have a dependency graph\n });\n const allFlattened = await Promise.all(\n results.map((result) => result.version.loadFlattenedDependencies(this.scope.legacyScope.objects))\n );\n allFlattened.push(missingEdgesList);\n const allFlattenedUniq = ComponentIdList.uniqFromArray(allFlattened.flat());\n const componentsAndVersions = await this.scope.legacyScope.getComponentsAndVersions(\n ComponentIdList.fromArray(allFlattenedUniq)\n );\n componentsAndVersions.forEach(({ component, version, versionStr }) => {\n const compId = component.toComponentId().changeVersion(versionStr);\n this.graph.setNode(new Node(compId.toString(), compId));\n this.addEdges(compId, version.dependencies, 'prod');\n this.addEdges(compId, version.devDependencies, 'dev');\n this.addEdges(compId, version.extensionDependencies, 'ext');\n });\n }\n\n private addFlattenedEdgesToGraph(flattenedEdges: DepEdge[]) {\n flattenedEdges.forEach(({ source, target, type }) => {\n this.graph.setNode(new Node(source.toString(), source));\n this.graph.setNode(new Node(target.toString(), target));\n this.graph.setEdge(new Edge(source.toString(), target.toString(), type));\n });\n }\n\n private populateMissingFromGraph() {\n const allIds = this.graph.nodes.map((node) => node.attr);\n const currentlySnappedIds = ComponentIdList.fromArray(this.consumerComponents.map((comp) => comp.id));\n const filteredIds = allIds.filter((id) => !currentlySnappedIds.has(id));\n this.missingFromGraph = filteredIds;\n }\n\n private buildTheFirstLevel() {\n this.consumerComponents.forEach((comp) => {\n const id = comp.id;\n this.graph.setNode(new Node(id.toString(), id));\n this.addEdges(comp.id, comp.dependencies, 'prod');\n this.addEdges(comp.id, comp.devDependencies, 'dev');\n this.addEdges(comp.id, comp.extensionDependencies, 'ext');\n });\n }\n\n private addEdges(compId: ComponentID, dependencies: ConsumerComponent['dependencies'], label: DepEdgeType) {\n dependencies.get().forEach((dep) => {\n this.graph.setNode(new Node(dep.id.toString(), dep.id));\n this.graph.setEdge(new Edge(compId.toString(), dep.id.toString(), label));\n });\n }\n}\n\nfunction throwWhenDepNotIncluded(componentId: ComponentID, dependencyId: ComponentID) {\n if (!dependencyId.hasScope() && !dependencyId.hasVersion()) {\n throw new BitError(`fatal: \"${componentId.toString()}\" has a dependency \"${dependencyId.toString()}\".\nthis dependency was not included in the tag command.`);\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -136,7 +136,7 @@ class FlattenedDependenciesGetter {
136
136
  if this is an external env/extension/aspect configured in workspace.jsonc, make sure it is set with a version`);
137
137
  }
138
138
  const fromModel = await this.scope.getVersionInstance(id);
139
- this.cache[id.toString()] = fromModel.flattenedDependencies;
139
+ this.cache[id.toString()] = await fromModel.loadFlattenedDependencies(this.scope.objects);
140
140
  }
141
141
  }
142
142
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_graphlib","data","_interopRequireWildcard","require","_pMapSeries","_interopRequireDefault","_bitError","_componentId","_legacy","_lodash","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","FlattenedDependenciesGetter","constructor","scope","components","lane","populateFlattenedDependencies","logger","debug","length","dependenciesGraph","buildComponentsGraphCombined","importExternalDependenciesInBulk","mapSeries","component","flattenedDependencies","getFlattened","componentId","allDependencies","map","getEdges","id","toString","idsStr","compact","uniq","flat","bitIds","idStr","node","filter","bitId","find","c","isEqual","scopeComponentsImporter","scopeImporter","versionDependencies","importMany","ids","ComponentIdList","fromArray","preferDependencyGraph","cache","throwForDependencyNotFound","reason","dependencies","getFlattenedFromCurrentComponents","forEach","dep","throwWhenDepNotIncluded","dependenciesDeps","getFlattenedFromVersion","dependenciesDepsFlattened","dependenciesDepsUniq","uniqFromArray","push","allDeps","dependentId","versionDeps","toComponentId","objects","existing","hasVersion","Error","fromModel","getVersionInstance","exports","dependencyId","hasScope","BitError","graph","hasNode","edges","graphlib","alg","preorder","tail","GraphLib","_setGraphEdges","devDependencies","extensionDependencies","label","dependency","depId","setNode","setEdge"],"sources":["get-flattened-dependencies.ts"],"sourcesContent":["import graphlib, { Graph as GraphLib } from 'graphlib';\nimport mapSeries from 'p-map-series';\nimport { BitError } from '@teambit/bit-error';\nimport type { ComponentID } from '@teambit/component-id';\nimport { ComponentIdList } from '@teambit/component-id';\nimport type { BitIdStr } from '@teambit/legacy-bit-id';\nimport type { VersionDependencies, Scope } from '@teambit/legacy.scope';\nimport type { ConsumerComponent as Component, Dependencies } from '@teambit/legacy.consumer-component';\nimport { logger } from '@teambit/legacy.logger';\nimport type { Lane } from '@teambit/objects';\nimport { compact, tail, uniq } from 'lodash';\n\nexport class FlattenedDependenciesGetter {\n private dependenciesGraph: GraphLib;\n private versionDependencies: VersionDependencies[];\n private cache: { [idStr: string]: ComponentIdList } = {};\n constructor(\n private scope: Scope,\n private components: Component[],\n private lane?: Lane\n ) {}\n\n /**\n * to get the flattened dependencies of a component, we iterate over the direct dependencies and\n * figure out what should be the flattened of each one of the dependencies.\n * a dependency can be one of the two scenarios and should be handled accordingly.\n * 1. a dependency can be tagged/snapped along with the current component.\n * 2. a dependency can be a component that was already tagged before.\n * there is no option #3 of a component that exists on the workspace but wasn't tagged and is not\n * part of the current tag. In such case, we throw an error, see throwWhenDepNotIncluded below.\n *\n * the flattened dependencies process handles the two cases above differently.\n * 1. first, it builds a graph with all current components, this way it's easier to get the\n * flattened dependencies by graph algorithm. (without graph, it becomes difficult when there are\n * circular dependencies).\n * 2. for other components, it loads them from the model and gets the flattened from the objects.\n */\n async populateFlattenedDependencies() {\n logger.debug(`populateFlattenedDependencies starts with ${this.components.length} components`);\n this.dependenciesGraph = buildComponentsGraphCombined(this.components);\n // console.log(\"this.dependenciesGraph\", this.dependenciesGraph.toString())\n await this.importExternalDependenciesInBulk();\n await mapSeries(this.components, async (component) => {\n component.flattenedDependencies = await this.getFlattened(component.componentId);\n });\n }\n\n private async importExternalDependenciesInBulk() {\n const allDependencies = this.components.map((component) => {\n return getEdges(this.dependenciesGraph, component.id.toString());\n });\n const idsStr: string[] = compact(uniq(allDependencies.flat()));\n const bitIds = idsStr\n .map((idStr) => this.dependenciesGraph.node(idStr))\n .filter((bitId) => !this.components.find((c) => c.id.isEqual(bitId)));\n const scopeComponentsImporter = this.scope.scopeImporter;\n this.versionDependencies = await scopeComponentsImporter.importMany({\n ids: ComponentIdList.fromArray(bitIds),\n preferDependencyGraph: false,\n cache: true,\n throwForDependencyNotFound: true,\n lane: this.lane,\n reason: 'for fetching all dependencies',\n });\n }\n\n private async getFlattened(bitId: ComponentID): Promise<ComponentIdList> {\n const dependencies = this.getFlattenedFromCurrentComponents(bitId);\n dependencies.forEach((dep) => throwWhenDepNotIncluded(bitId, dep));\n const dependenciesDeps = await mapSeries(dependencies, (dep) => this.getFlattenedFromVersion(dep, bitId));\n const dependenciesDepsFlattened = dependenciesDeps.flat();\n // this dependenciesDepsFlattened can be huge, don't use spread operator (...) here. otherwise, it throws\n // `Maximum call stack size exceeded`. it's important to first make them uniq\n // (from a real example, before uniq: 133,068. after uniq: 2,126)\n const dependenciesDepsUniq = ComponentIdList.uniqFromArray(dependenciesDepsFlattened);\n dependencies.push(...dependenciesDepsUniq);\n return ComponentIdList.uniqFromArray(dependencies);\n }\n\n private getFlattenedFromCurrentComponents(bitId: ComponentID): ComponentID[] {\n const allDeps = getEdges(this.dependenciesGraph, bitId.toString()) || [];\n const dependencies = allDeps.map((idStr) => this.dependenciesGraph.node(idStr));\n return dependencies;\n }\n\n private async getFlattenedFromVersion(id: ComponentID, dependentId: ComponentID): Promise<ComponentIdList> {\n if (!this.cache[id.toString()]) {\n const versionDeps = this.versionDependencies.find(({ component }) => component.toComponentId().isEqual(id));\n if (versionDeps) {\n const dependencies = await versionDeps.component.flattenedDependencies(this.scope.objects);\n this.cache[id.toString()] = dependencies;\n } else {\n const existing = this.components.find((c) => c.id.isEqual(id));\n if (existing) {\n this.cache[id.toString()] = new ComponentIdList();\n } else {\n if (!id.hasVersion()) {\n throw new Error(`error found while getting the dependencies of \"${dependentId.toString()}\". A dependency \"${id.toString()}\" doesn't have a version\nif this is an external env/extension/aspect configured in workspace.jsonc, make sure it is set with a version`);\n }\n const fromModel = await this.scope.getVersionInstance(id);\n this.cache[id.toString()] = fromModel.flattenedDependencies;\n }\n }\n }\n return this.cache[id.toString()];\n }\n}\n\nfunction throwWhenDepNotIncluded(componentId: ComponentID, dependencyId: ComponentID) {\n if (!dependencyId.hasScope() && !dependencyId.hasVersion()) {\n throw new BitError(`fatal: \"${componentId.toString()}\" has a dependency \"${dependencyId.toString()}\".\nthis dependency was not included in the tag command.`);\n }\n}\n\n/**\n * get all successors edges recursively (flatten)\n */\nfunction getEdges(graph: GraphLib, id: BitIdStr): BitIdStr[] | null {\n if (!graph.hasNode(id)) return null;\n // @ts-ignore\n const edges = graphlib.alg.preorder(graph, id);\n return tail(edges); // the first item is the component itself\n}\n\n/**\n * one graph of the given components. it doesn't fetch/load anything. it builds the graph with the\n * given data. the node is a ComponentID and the edge has the label of the dependency type. it can be\n * either \"dependencies\" or \"devDependencies\".\n */\nfunction buildComponentsGraphCombined(components: Component[]): GraphLib {\n const graph = new GraphLib();\n components.forEach((component) => {\n _setGraphEdges(component.id, component.dependencies, graph);\n _setGraphEdges(component.id, component.devDependencies, graph, 'devDependencies');\n _setGraphEdges(component.id, component.extensionDependencies, graph, 'devDependencies');\n });\n return graph;\n}\n\nfunction _setGraphEdges(bitId: ComponentID, dependencies: Dependencies, graph: GraphLib, label = 'dependencies') {\n const id = bitId.toString();\n dependencies.get().forEach((dependency) => {\n const depId = dependency.id.toString();\n // save the full ComponentID of a string id to be able to retrieve it later with no confusion\n if (!graph.hasNode(id)) graph.setNode(id, bitId);\n if (!graph.hasNode(depId)) graph.setNode(depId, dependency.id);\n graph.setEdge(id, depId, label);\n });\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_graphlib","data","_interopRequireWildcard","require","_pMapSeries","_interopRequireDefault","_bitError","_componentId","_legacy","_lodash","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","FlattenedDependenciesGetter","constructor","scope","components","lane","populateFlattenedDependencies","logger","debug","length","dependenciesGraph","buildComponentsGraphCombined","importExternalDependenciesInBulk","mapSeries","component","flattenedDependencies","getFlattened","componentId","allDependencies","map","getEdges","id","toString","idsStr","compact","uniq","flat","bitIds","idStr","node","filter","bitId","find","c","isEqual","scopeComponentsImporter","scopeImporter","versionDependencies","importMany","ids","ComponentIdList","fromArray","preferDependencyGraph","cache","throwForDependencyNotFound","reason","dependencies","getFlattenedFromCurrentComponents","forEach","dep","throwWhenDepNotIncluded","dependenciesDeps","getFlattenedFromVersion","dependenciesDepsFlattened","dependenciesDepsUniq","uniqFromArray","push","allDeps","dependentId","versionDeps","toComponentId","objects","existing","hasVersion","Error","fromModel","getVersionInstance","loadFlattenedDependencies","exports","dependencyId","hasScope","BitError","graph","hasNode","edges","graphlib","alg","preorder","tail","GraphLib","_setGraphEdges","devDependencies","extensionDependencies","label","dependency","depId","setNode","setEdge"],"sources":["get-flattened-dependencies.ts"],"sourcesContent":["import graphlib, { Graph as GraphLib } from 'graphlib';\nimport mapSeries from 'p-map-series';\nimport { BitError } from '@teambit/bit-error';\nimport type { ComponentID } from '@teambit/component-id';\nimport { ComponentIdList } from '@teambit/component-id';\nimport type { BitIdStr } from '@teambit/legacy-bit-id';\nimport type { VersionDependencies, Scope } from '@teambit/legacy.scope';\nimport type { ConsumerComponent as Component, Dependencies } from '@teambit/legacy.consumer-component';\nimport { logger } from '@teambit/legacy.logger';\nimport type { Lane } from '@teambit/objects';\nimport { compact, tail, uniq } from 'lodash';\n\nexport class FlattenedDependenciesGetter {\n private dependenciesGraph: GraphLib;\n private versionDependencies: VersionDependencies[];\n private cache: { [idStr: string]: ComponentIdList } = {};\n constructor(\n private scope: Scope,\n private components: Component[],\n private lane?: Lane\n ) {}\n\n /**\n * to get the flattened dependencies of a component, we iterate over the direct dependencies and\n * figure out what should be the flattened of each one of the dependencies.\n * a dependency can be one of the two scenarios and should be handled accordingly.\n * 1. a dependency can be tagged/snapped along with the current component.\n * 2. a dependency can be a component that was already tagged before.\n * there is no option #3 of a component that exists on the workspace but wasn't tagged and is not\n * part of the current tag. In such case, we throw an error, see throwWhenDepNotIncluded below.\n *\n * the flattened dependencies process handles the two cases above differently.\n * 1. first, it builds a graph with all current components, this way it's easier to get the\n * flattened dependencies by graph algorithm. (without graph, it becomes difficult when there are\n * circular dependencies).\n * 2. for other components, it loads them from the model and gets the flattened from the objects.\n */\n async populateFlattenedDependencies() {\n logger.debug(`populateFlattenedDependencies starts with ${this.components.length} components`);\n this.dependenciesGraph = buildComponentsGraphCombined(this.components);\n // console.log(\"this.dependenciesGraph\", this.dependenciesGraph.toString())\n await this.importExternalDependenciesInBulk();\n await mapSeries(this.components, async (component) => {\n component.flattenedDependencies = await this.getFlattened(component.componentId);\n });\n }\n\n private async importExternalDependenciesInBulk() {\n const allDependencies = this.components.map((component) => {\n return getEdges(this.dependenciesGraph, component.id.toString());\n });\n const idsStr: string[] = compact(uniq(allDependencies.flat()));\n const bitIds = idsStr\n .map((idStr) => this.dependenciesGraph.node(idStr))\n .filter((bitId) => !this.components.find((c) => c.id.isEqual(bitId)));\n const scopeComponentsImporter = this.scope.scopeImporter;\n this.versionDependencies = await scopeComponentsImporter.importMany({\n ids: ComponentIdList.fromArray(bitIds),\n preferDependencyGraph: false,\n cache: true,\n throwForDependencyNotFound: true,\n lane: this.lane,\n reason: 'for fetching all dependencies',\n });\n }\n\n private async getFlattened(bitId: ComponentID): Promise<ComponentIdList> {\n const dependencies = this.getFlattenedFromCurrentComponents(bitId);\n dependencies.forEach((dep) => throwWhenDepNotIncluded(bitId, dep));\n const dependenciesDeps = await mapSeries(dependencies, (dep) => this.getFlattenedFromVersion(dep, bitId));\n const dependenciesDepsFlattened = dependenciesDeps.flat();\n // this dependenciesDepsFlattened can be huge, don't use spread operator (...) here. otherwise, it throws\n // `Maximum call stack size exceeded`. it's important to first make them uniq\n // (from a real example, before uniq: 133,068. after uniq: 2,126)\n const dependenciesDepsUniq = ComponentIdList.uniqFromArray(dependenciesDepsFlattened);\n dependencies.push(...dependenciesDepsUniq);\n return ComponentIdList.uniqFromArray(dependencies);\n }\n\n private getFlattenedFromCurrentComponents(bitId: ComponentID): ComponentID[] {\n const allDeps = getEdges(this.dependenciesGraph, bitId.toString()) || [];\n const dependencies = allDeps.map((idStr) => this.dependenciesGraph.node(idStr));\n return dependencies;\n }\n\n private async getFlattenedFromVersion(id: ComponentID, dependentId: ComponentID): Promise<ComponentIdList> {\n if (!this.cache[id.toString()]) {\n const versionDeps = this.versionDependencies.find(({ component }) => component.toComponentId().isEqual(id));\n if (versionDeps) {\n const dependencies = await versionDeps.component.flattenedDependencies(this.scope.objects);\n this.cache[id.toString()] = dependencies;\n } else {\n const existing = this.components.find((c) => c.id.isEqual(id));\n if (existing) {\n this.cache[id.toString()] = new ComponentIdList();\n } else {\n if (!id.hasVersion()) {\n throw new Error(`error found while getting the dependencies of \"${dependentId.toString()}\". A dependency \"${id.toString()}\" doesn't have a version\nif this is an external env/extension/aspect configured in workspace.jsonc, make sure it is set with a version`);\n }\n const fromModel = await this.scope.getVersionInstance(id);\n this.cache[id.toString()] = await fromModel.loadFlattenedDependencies(this.scope.objects);\n }\n }\n }\n return this.cache[id.toString()];\n }\n}\n\nfunction throwWhenDepNotIncluded(componentId: ComponentID, dependencyId: ComponentID) {\n if (!dependencyId.hasScope() && !dependencyId.hasVersion()) {\n throw new BitError(`fatal: \"${componentId.toString()}\" has a dependency \"${dependencyId.toString()}\".\nthis dependency was not included in the tag command.`);\n }\n}\n\n/**\n * get all successors edges recursively (flatten)\n */\nfunction getEdges(graph: GraphLib, id: BitIdStr): BitIdStr[] | null {\n if (!graph.hasNode(id)) return null;\n // @ts-ignore\n const edges = graphlib.alg.preorder(graph, id);\n return tail(edges); // the first item is the component itself\n}\n\n/**\n * one graph of the given components. it doesn't fetch/load anything. it builds the graph with the\n * given data. the node is a ComponentID and the edge has the label of the dependency type. it can be\n * either \"dependencies\" or \"devDependencies\".\n */\nfunction buildComponentsGraphCombined(components: Component[]): GraphLib {\n const graph = new GraphLib();\n components.forEach((component) => {\n _setGraphEdges(component.id, component.dependencies, graph);\n _setGraphEdges(component.id, component.devDependencies, graph, 'devDependencies');\n _setGraphEdges(component.id, component.extensionDependencies, graph, 'devDependencies');\n });\n return graph;\n}\n\nfunction _setGraphEdges(bitId: ComponentID, dependencies: Dependencies, graph: GraphLib, label = 'dependencies') {\n const id = bitId.toString();\n dependencies.get().forEach((dependency) => {\n const depId = dependency.id.toString();\n // save the full ComponentID of a string id to be able to retrieve it later with no confusion\n if (!graph.hasNode(id)) graph.setNode(id, bitId);\n if (!graph.hasNode(depId)) graph.setNode(depId, dependency.id);\n graph.setEdge(id, depId, label);\n });\n}\n"],"mappings":"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","ignoreList":[]}
@@ -151,6 +151,13 @@ function _harmonyModules3() {
151
151
  };
152
152
  return data;
153
153
  }
154
+ function _harmonyModules4() {
155
+ const data = require("@teambit/harmony.modules.feature-toggle");
156
+ _harmonyModules4 = function () {
157
+ return data;
158
+ };
159
+ return data;
160
+ }
154
161
  function _configStore() {
155
162
  const data = require("@teambit/config-store");
156
163
  _configStore = function () {
@@ -1270,6 +1277,10 @@ another option, in case this dependency is not in main yet is to remove all refe
1270
1277
  hash: lane.hash().toString()
1271
1278
  } : undefined
1272
1279
  };
1280
+ if ((0, _harmonyModules4().isFeatureEnabled)(_harmonyModules4().FLATTENED_DEPS_IN_SOURCE)) {
1281
+ const flattenedDependencies = version.moveFlattenedDependenciesToSource();
1282
+ if (flattenedDependencies) objectRepo.add(flattenedDependencies);
1283
+ }
1273
1284
  objectRepo.add(version);
1274
1285
  if (flattenedEdges) this.objectsRepo.add(flattenedEdges);
1275
1286
  if (dependenciesGraph) this.objectsRepo.add(dependenciesGraph);
@@ -1 +1 @@
1
- {"version":3,"names":["_harmonyModules","data","require","_cli","_graph","_fsExtra","_interopRequireDefault","_legacy","_getFlattenedDependencies","_workspace","_semver","_lodash","_componentId","_workspaceRoot","_legacy2","_legacy3","_legacy4","_pMapSeries","_logger","_bitError","_pMap","_pkgModules","_harmonyModules2","_harmonyModules3","_configStore","_scope","_objects","_dependencyResolver","_legacy5","_builder","_laneId","_importer","_export","_componentVersion","_component","_dependencies","_snapCmd","_snapping","_tagCmd","_resetCmd","_generateCompFromScope","_flattenedEdges","_snapDistanceCmd","_resetComponent","_application","_legacy6","_lanesModules","_remove","_versionMaker","_harmony","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","SnappingMain","constructor","workspace","logger","dependencyResolver","scope","exporter","builder","importer","deps","application","remove","onPreSnapSlot","objectsRepo","legacyScope","objects","registerOnPreSnap","onPreSnap","register","tag","ids","message","version","editor","versionsFile","snapped","unmerged","releaseType","autoTagReleaseType","preReleaseId","ignoreIssues","ignoreNewestVersion","skipTests","skipTasks","skipAutoTag","build","unmodified","soft","persist","ignoreBuildErrors","rebuildDepsGraph","noLockDeps","incrementBy","skipPublishedVersions","disableTagAndSnapPipelines","failFast","detachHead","overrideHead","loose","BitError","Boolean","exactVersion","OutsideWorkspaceError","validExactVersion","validateVersion","consumer","componentsList","ComponentsList","setStatusLine","newComponents","listNewComponents","bitIds","warnings","getComponentsToTag","compIds","ComponentIdList","fromArray","autoAddedWorkspaceRoot","undefined","getWorkspaceRootToTagAlong","idsToTag","debug","toString","components","loadComponentsForTagOrSnap","throwForVariousIssues","params","packageManagerConfigRootDir","path","exitOnFirstFailedTask","taggedComponents","autoTaggedResults","publishedPackages","stagedConfig","removedComponents","totalComponentsCount","makeVersion","tagResults","isSoftTag","findVersioned","onDestroy","write","consumerComponents","map","c","state","_consumer","componentIds","versionMaker","VersionMaker","addAspectsFromConfigObject","component","configObject","ExtensionDataList","adjustEnvsOnConfigObject","extensionsFromConfigObject","fromConfigObject","consumerComponent","extensionDataList","mergeConfigs","extensions","filterRemovedExtensions","ext","originalExt","findExtension","stringId","aspects","createAspectListFromExtensionDataList","autoDeps","extractAutoDepsFromConfig","snapFromScope","snapDataPerCompRaw","lane","laneIdStr","laneId","LaneId","parse","importLaneObject","err","name","LaneNotFound","createLaneInScope","scopeJson","setLaneAsNew","setCurrentLaneId","scopeImporter","shouldOnlyFetchFromCurrentLane","laneCompIds","toComponentIdsIncludeUpdateDependents","snapDataPerComp","snapData","componentId","ComponentID","fromString","dependencies","files","isNew","mainFile","newDependencies","dep","id","isComponent","type","removeDependencies","compact","allCompIds","s","componentIdsLatest","changeVersion","LATEST","newCompsData","Promise","all","newComp","generateCompFromScope","import","preferDependencyGraph","reason","getSnapData","find","isEqual","ignoreVersion","Error","updatedLegacyComponents","updatedComponents","getManyByLegacy","existingComponents","pMapSeries","foundInUpdated","isEqualWithoutVersion","get","updateDependents","comp","getComponentDependencies","fromLane","searchWithoutVersion","mergedComp","tags","byHash","versionToUse","raw","toStringWithoutVersion","addDeps","updateSourceFiles","loadAspectOnlyForIds","compsToLoadAspects","hasWithoutVersion","loadManyCompsAspects","executeOnCompAspectReCalcSlot","shouldTag","makeVersionParams","tagDataPerComp","versionToTag","isSnap","updateDependentsOnLane","results","exportedIds","updatedLane","loadLane","toLaneId","autoTaggedIds","idsToExport","uniqFromArray","exported","pushToScopes","allVersions","laneObject","exportHeadsOnly","snappedComponents","snappedIds","autoSnappedResults","snap","pattern","legacyBitIds","skipAutoSnap","self","getIdsToSnap","idsToSnap","snapResults","currentLane","getCurrentLaneId","laneName","isDefault","listDuringMergeStateComponents","tagPendingComponentsIds","getTagPendingComponentsIds","shouldThrowForNoMatching","getCompIds","includes","compId","resolveComponentId","filterIdsFromPoolIdsByPattern","allTagPending","listPotentialTagIds","snapForMerge","visibleIds","hiddenLegacyComponents","visibleIdsToSnap","visibleHarmony","hiddenHarmony","hiddenIds","allIds","allComponents","reset","componentPattern","head","force","getCurrentLaneObject","untag","removeLocalVersionsForAllComponents","candidateComponents","getComponentsWithOptionToUntag","idsMatchingPattern","idsByPattern","includeDeleted","idsMatchingPatternBitIds","componentsToUntag","modelComponent","toComponentId","removeLocalVersionsForMultipleComponents","softUntag","softTaggedComponentsIds","bySoftTagged","idsToRemoveSoftTags","componentMap","bitMap","getComponent","removedVersion","nextVersion","clearNextVersion","versions","isRealUntag","allBatchIds","uniq","flatMap","batchIds","laneHistory","lanes","getOrCreateLaneHistory","removeHistoryEntries","add","currentLaneId","getStagedConfig","versionToSetInBitmap","findUpdateDependent","updateVersions","stagedSnaps","markAsChanged","isSoftUntag","resetNeverExported","notExported","getNotExportedIds","hashes","BitObject","makeHash","fullName","deleteObjectsFromFS","h","Ref","from","updateComponentId","_addFlattenedDependenciesToComponents","profile","getLane","forkedFrom","flattenedDependenciesGetter","FlattenedDependenciesGetter","populateFlattenedDependencies","clearStatusLine","_addFlattenedDepsGraphToComponents","flattenedEdgesGetter","FlattenedEdgesGetter","buildGraph","populateFlattenedAndEdgesForComp","throwForDepsFromAnotherLane","missingDeps","throwForDepsFromAnotherLaneForComp","flattenedMissingDeps","flat","importWithoutDeps","cache","ignoreMissingHead","includeVersionHistory","componentsToCheck","isDeleted","throwForLegacyDependenciesInsideHarmony","throwForComponentIssues","throwForPendingImport","throwForMissingObjects","depsFromModel","componentFromModel","getAllDependencies","depsFromModelIds","d","isPrevVersionFromCurrentHistoryP","isPrevVersionFromCurrentHistory","isPartOfCurrentHistory","isExported","hasVersion","isTag","has","isPartOfHistory","isPartOfLaneHistoryOrMain","isPartOfMainHistory","VersionNotFound","ComponentNotFound","HeadNotFound","ParentNotFound","laneOrMainStr","graph","Graph","addEdges","label","setNode","Node","setEdge","Edge","devDependencies","extensionDependencies","allFlattened","flattenedDependencies","allFlattenedUniq","allFlattenedWithoutCurrent","componentsAndVersions","getComponentsAndVersions","versionStr","someCompsHaveMissingFlattened","edges","outEdges","flattenedEdges","allEdges","edgesWithBitIds","edge","source","node","attr","target","flattened","flattenedFromEdges","missingFlattened","difference","warn","join","missingBitIds","_updateComponentsByTagResult","tagResult","result","matchingComponent","existingBuilder","findCoreExtension","Extensions","builderData","_getPublishedPackages","Map","builderExt","pkgData","aspectsData","a","aspectId","pkg","publishedPackage","set","integrity","previouslyUsedVersion","_addCompToObjects","shouldValidateVersion","addVersionOpts","batchId","addedVersionStr","_addCompFromScopeToObjects","unmergedComponent","unmergedComponents","getEntry","unrelated","hash","unrelatedHead","setUnrelated","addAsOnlyParent","unrelatedLaneId","headOnCurrentLane","shouldSquash","previousParents","parents","squashLog","getLogForSquash","setSquashed","log","UnmergedComponents","buildSnapMessage","addParent","removeComponent","validate","objectRepo","sources","findOrAddComponent","artifactFiles","getArtifactsFiles","artifacts","transformArtifactsFromVinylToSource","dependenciesGraph","consumerComponentToVersion","origin","defaultScope","addVersion","file","enrichComp","modifiedLog","getObjectsToEnrichComp","obj","setBuildStatus","buildStatus","modelComp","loadVersion","addModifiedLog","artifactObjects","Version","dependenciesGraphToSource","dependenciesGraphRef","artifactsFiles","artifactsSource","ArtifactFiles","fromVinylsToSources","vinyls","populateRefsFromSources","shouldClearCacheFirst","idsWithoutVersions","appIds","loadAllAppsAsAspects","componentFsCache","deleteAllDependenciesDataCache","clearAllComponentsCache","clearComponentCache","getMany","componentsMissingFromScope","ComponentsPendingImport","throwForComponent","dependenciesIds","getAllDependenciesIds","depId","getModelComponentIfExist","isLegacy","pMap","concurrency","concurrentComponentsLimit","getCompIdWithExactVersionAccordingToSemver","isHash","range","getExactVersionBySemverRange","currentFiles","filesystem","delete","found","f","relative","fs","removeSync","index","findIndex","splice","currentFile","contents","Buffer","content","SourceFile","base","test","updateDependenciesVersionsOfComponent","currentBitIds","updatedIds","componentIdStr","legacyComponent","dependenciesList","getDependencies","updatedBitId","depIdStr","packageName","findDependency","getPackageName","UpdateDepsAspectsSaveIntoDepsResolver","toStringArray","extId","extensionId","startsWith","updatedExtId","newExtensionId","dependenciesListSerialized","extractDepsFromLegacy","serialize","DependencyResolverAspect","existingExtension","config","assign","extension","ExtensionDataEntry","rootId","findWorkspaceRootMap","status","getComponentStatusById","newlyCreated","modified","includeUnmodified","listTagPendingIds","localOnlyIds","byLocalOnly","localOnlyListIds","softTaggedComponents","snappedComponentsIds","bySnappedOnMain","tagPendingBitIdsIncludeSnapped","idWithoutVer","split","idIsPattern","isPattern","tagPendingComponentsLatest","latestVersions","semver","valid","gt","provider","cli","loggerMain","configStore","createLogger","SnappingAspect","snapping","snapCmd","SnapCmd","tagCmd","TagCmd","resetCmd","ResetCmd","snapDistanceCmd","SnapDistanceCmd","exports","Slot","withType","WorkspaceAspect","CLIAspect","LoggerAspect","ScopeAspect","ExportAspect","BuilderAspect","ImporterAspect","ConfigStoreAspect","DependenciesAspect","ApplicationAspect","RemoveAspect","MainRuntime","addRuntime","_default"],"sources":["snapping.main.runtime.ts"],"sourcesContent":["import type { CLIMain } from '@teambit/cli';\nimport { MainRuntime } from '@teambit/harmony.modules.runtimes';\nimport { CLIAspect } from '@teambit/cli';\nimport { Graph, Node, Edge } from '@teambit/graph.cleargraph';\nimport fs from 'fs-extra';\nimport {\n UnmergedComponents,\n VersionNotFound,\n ComponentNotFound,\n HeadNotFound,\n ParentNotFound,\n} from '@teambit/legacy.scope';\nimport { FlattenedDependenciesGetter } from './get-flattened-dependencies';\nimport type { Workspace, AutoTagResult } from '@teambit/workspace';\nimport { WorkspaceAspect, OutsideWorkspaceError } from '@teambit/workspace';\nimport type { ReleaseType } from 'semver';\nimport semver from 'semver';\nimport { compact, difference, uniq } from 'lodash';\nimport { ComponentID, ComponentIdList } from '@teambit/component-id';\nimport { findWorkspaceRootMap } from '@teambit/workspace-root';\nimport type { BuildStatus } from '@teambit/legacy.constants';\nimport { Extensions, LATEST } from '@teambit/legacy.constants';\nimport type { Consumer } from '@teambit/legacy.consumer';\nimport { ComponentsPendingImport } from '@teambit/legacy.consumer';\nimport { ComponentsList } from '@teambit/legacy.component-list';\nimport pMapSeries from 'p-map-series';\nimport type { Logger, LoggerMain } from '@teambit/logger';\nimport { LoggerAspect } from '@teambit/logger';\nimport { BitError } from '@teambit/bit-error';\nimport pMap from 'p-map';\nimport { validateVersion } from '@teambit/pkg.modules.semver-helper';\nimport { concurrentComponentsLimit } from '@teambit/harmony.modules.concurrency';\nimport { getLogForSquash } from '@teambit/harmony.modules.get-basic-log';\nimport type { ConfigStoreMain } from '@teambit/config-store';\nimport { ConfigStoreAspect } from '@teambit/config-store';\nimport type { ScopeMain } from '@teambit/scope';\nimport { ScopeAspect } from '@teambit/scope';\nimport type { Repository, Lane, ModelComponent, DepEdge, DepEdgeType, Log, AddVersionOpts } from '@teambit/objects';\nimport { BitObject, Ref, Version } from '@teambit/objects';\nimport type { Component, ConsumerComponent } from '@teambit/component';\nimport type { DependencyResolverMain, VariantPolicyConfigArr } from '@teambit/dependency-resolver';\nimport { DependencyResolverAspect } from '@teambit/dependency-resolver';\nimport { ExtensionDataEntry, ExtensionDataList } from '@teambit/legacy.extension-data';\nimport type { BuilderMain, LegacyOnTagResult } from '@teambit/builder';\nimport { BuilderAspect } from '@teambit/builder';\nimport { LaneId } from '@teambit/lane-id';\nimport type { ImporterMain } from '@teambit/importer';\nimport { ImporterAspect } from '@teambit/importer';\nimport type { ExportMain } from '@teambit/export';\nimport { ExportAspect } from '@teambit/export';\nimport { isHash, isTag } from '@teambit/component-version';\nimport type { ArtifactSource } from '@teambit/component.sources';\nimport { ArtifactFiles, getArtifactsFiles, SourceFile } from '@teambit/component.sources';\nimport type { DependenciesMain } from '@teambit/dependencies';\nimport { DependenciesAspect } from '@teambit/dependencies';\nimport { SnapCmd } from './snap-cmd';\nimport { SnappingAspect } from './snapping.aspect';\nimport { TagCmd } from './tag-cmd';\nimport ResetCmd from './reset-cmd';\nimport type { NewDependencies } from './generate-comp-from-scope';\nimport { addDeps, generateCompFromScope } from './generate-comp-from-scope';\nimport { FlattenedEdgesGetter } from './flattened-edges';\nimport { SnapDistanceCmd } from './snap-distance-cmd';\nimport type { ResetResult } from './reset-component';\nimport {\n removeLocalVersionsForAllComponents,\n getComponentsWithOptionToUntag,\n removeLocalVersionsForMultipleComponents,\n} from './reset-component';\nimport type { ApplicationMain } from '@teambit/application';\nimport { ApplicationAspect } from '@teambit/application';\nimport { LaneNotFound } from '@teambit/legacy.scope-api';\nimport { createLaneInScope } from '@teambit/lanes.modules.create-lane';\nimport type { RemoveMain } from '@teambit/remove';\nimport { RemoveAspect } from '@teambit/remove';\nimport type { BasicTagParams, BasicTagSnapParams, VersionMakerParams } from './version-maker';\nimport { VersionMaker, updateVersions } from './version-maker';\nimport type { SlotRegistry } from '@teambit/harmony';\nimport { Slot } from '@teambit/harmony';\n\nexport type PackageIntegritiesByPublishedPackages = Map<\n string,\n {\n integrity: string | undefined;\n previouslyUsedVersion: string | undefined;\n }\n>;\n\nexport type TagDataPerComp = {\n componentId: ComponentID;\n dependencies: ComponentID[];\n versionToTag?: string; // must be set for tag. undefined for snap.\n prereleaseId?: string;\n message?: string;\n isNew?: boolean;\n};\n\nexport type SnapDataParsed = {\n componentId: ComponentID;\n dependencies: string[];\n aspects?: Record<string, any>;\n message?: string;\n files?: FileData[];\n isNew?: boolean;\n newDependencies?: {\n id: string; // component-id or package-name.\n version?: string; // for packages, it is mandatory.\n isComponent: boolean;\n type: 'runtime' | 'dev' | 'peer';\n }[];\n removeDependencies?: string[];\n forkFrom?: ComponentID;\n};\n\nexport type SnapResults = BasicTagResults & {\n snappedComponents: ConsumerComponent[];\n autoSnappedResults: AutoTagResult[];\n laneName: string | null; // null if default\n};\n\nexport type SnapFromScopeResults = {\n snappedIds: ComponentID[];\n exportedIds?: ComponentID[];\n autoSnappedResults: AutoTagResult[];\n snappedComponents: ConsumerComponent[];\n};\n\nexport type TagResults = BasicTagResults & {\n taggedComponents: ConsumerComponent[];\n autoTaggedResults: AutoTagResult[];\n isSoftTag: boolean;\n publishedPackages: string[];\n exportedIds?: ComponentIdList; // relevant only for tag-from-scope when --push is used\n};\n\nexport type BasicTagResults = {\n warnings: string[];\n newComponents: ComponentIdList;\n removedComponents?: ComponentIdList;\n totalComponentsCount?: number; // total count of all components tagged/snapped (including auto-tagged)\n /**\n * the workspace-root component that joined the batch because it was new or modified, at its new\n * version. see getWorkspaceRootToTagAlong.\n */\n autoAddedWorkspaceRoot?: ComponentID;\n};\n\nexport type FileData = { path: string; content: string; delete?: boolean };\n\nexport type SnapDataPerCompRaw = {\n componentId: string;\n dependencies?: string[];\n aspects?: Record<string, any>;\n message?: string;\n files?: FileData[];\n isNew?: boolean;\n mainFile?: string; // relevant when isNew is true. default to \"index.ts\".\n newDependencies?: NewDependencies;\n removeDependencies?: string[];\n forkFrom?: string; // origin id to fork from. the componentId is the new id. (no need to populate isNew prop).\n version?: string; // relevant when passing \"--tag\". optionally, specify the semver to tag. default to \"patch\".\n};\n\nexport type OnPreSnap = (\n componentsToSnap: Component[],\n idsToAutoSnap: ComponentID[],\n params: VersionMakerParams\n) => Promise<void>;\n\nexport type OnPreSnapSlot = SlotRegistry<OnPreSnap>;\n\nexport class SnappingMain {\n private objectsRepo: Repository;\n constructor(\n readonly workspace: Workspace,\n readonly logger: Logger,\n readonly dependencyResolver: DependencyResolverMain,\n readonly scope: ScopeMain,\n private exporter: ExportMain,\n readonly builder: BuilderMain,\n private importer: ImporterMain,\n private deps: DependenciesMain,\n private application: ApplicationMain,\n private remove: RemoveMain,\n readonly onPreSnapSlot: OnPreSnapSlot\n ) {\n this.objectsRepo = this.scope?.legacyScope?.objects;\n }\n\n registerOnPreSnap(onPreSnap: OnPreSnap) {\n this.onPreSnapSlot.register(onPreSnap);\n }\n\n /**\n * tag the given component ids or all modified/new components if \"all\" param is set.\n * tag is a similar operation as a snap, which saves the changes into the local scope, but it also creates an alias\n * with a valid semver to that version.\n * tag can be done only on main, not on a lane.\n */\n // eslint-disable-next-line complexity\n async tag({\n ids = [],\n message = '',\n version,\n editor = '',\n versionsFile,\n snapped = false,\n unmerged = false,\n releaseType,\n autoTagReleaseType,\n preReleaseId,\n ignoreIssues,\n ignoreNewestVersion = false,\n skipTests = false,\n skipTasks,\n skipAutoTag = false,\n build,\n unmodified = false,\n soft = false,\n persist = false,\n ignoreBuildErrors = false,\n rebuildDepsGraph,\n noLockDeps = false,\n incrementBy = 1,\n skipPublishedVersions = false,\n disableTagAndSnapPipelines = false,\n failFast = false,\n detachHead,\n overrideHead,\n loose = false,\n }: {\n ids?: string[];\n all?: boolean | string;\n snapped?: boolean;\n unmerged?: boolean;\n version?: string;\n releaseType?: ReleaseType;\n autoTagReleaseType?: ReleaseType;\n ignoreIssues?: string;\n scope?: string | boolean;\n incrementBy?: number;\n failFast?: boolean;\n } & Partial<BasicTagParams>): Promise<TagResults | null> {\n if (soft) build = false;\n if (editor && persist) {\n throw new BitError('you can use either --editor or --persist, but not both');\n }\n if (editor && message) {\n throw new BitError('you can use either --editor or --message, but not both');\n }\n ignoreNewestVersion = Boolean(ignoreNewestVersion || detachHead || overrideHead);\n\n const exactVersion = version;\n if (!this.workspace) throw new OutsideWorkspaceError();\n const validExactVersion = validateVersion(exactVersion);\n const consumer = this.workspace.consumer;\n const componentsList = new ComponentsList(this.workspace);\n this.logger.setStatusLine('determine components to tag...');\n const newComponents = await componentsList.listNewComponents();\n const { bitIds, warnings } = await this.getComponentsToTag(\n unmodified,\n exactVersion,\n persist,\n ids,\n snapped,\n unmerged\n );\n if (!bitIds.length) return null;\n\n const compIds = ComponentIdList.fromArray(bitIds);\n // --persist tags what the soft-tag recorded, and the soft-tag has already brought the root along\n const autoAddedWorkspaceRoot = persist ? undefined : await this.getWorkspaceRootToTagAlong(compIds);\n const idsToTag = autoAddedWorkspaceRoot ? ComponentIdList.fromArray([...compIds, autoAddedWorkspaceRoot]) : compIds;\n\n this.logger.debug(`tagging the following components: ${idsToTag.toString()}`);\n const components = await this.loadComponentsForTagOrSnap(idsToTag, !soft);\n await this.throwForVariousIssues(components, ignoreIssues);\n\n const params = {\n message,\n editor,\n versionsFile,\n exactVersion: validExactVersion,\n releaseType,\n autoTagReleaseType,\n preReleaseId,\n ignoreNewestVersion,\n skipTests,\n skipTasks,\n skipAutoTag,\n soft,\n build,\n persist,\n disableTagAndSnapPipelines,\n ignoreBuildErrors,\n rebuildDepsGraph,\n noLockDeps,\n incrementBy,\n skipPublishedVersions,\n packageManagerConfigRootDir: this.workspace.path,\n exitOnFirstFailedTask: failFast,\n detachHead,\n overrideHead,\n loose,\n ignoreIssues,\n autoAddedWorkspaceRoot,\n };\n const {\n taggedComponents,\n autoTaggedResults,\n publishedPackages,\n stagedConfig,\n removedComponents,\n totalComponentsCount,\n } = await this.makeVersion(idsToTag, components, params);\n\n const tagResults = {\n taggedComponents,\n autoTaggedResults,\n isSoftTag: soft,\n publishedPackages,\n warnings,\n newComponents,\n removedComponents,\n totalComponentsCount,\n autoAddedWorkspaceRoot: findVersioned(taggedComponents, autoAddedWorkspaceRoot),\n };\n\n await consumer.onDestroy(`tag (message: ${message || 'N/A'})`);\n await stagedConfig?.write();\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return tagResults;\n }\n\n async makeVersion(ids: ComponentID[], components: Component[], params: VersionMakerParams) {\n const consumerComponents = components.map((c) => c.state._consumer) as ConsumerComponent[];\n const componentIds = ComponentIdList.fromArray(ids);\n const versionMaker = new VersionMaker(this, components, consumerComponents, componentIds, params);\n return versionMaker.makeVersion();\n }\n\n private async addAspectsFromConfigObject(\n component: Component,\n configObject?: Record<string, any>\n ): Promise<VariantPolicyConfigArr | undefined> {\n if (!configObject) return;\n ExtensionDataList.adjustEnvsOnConfigObject(configObject);\n const extensionsFromConfigObject = ExtensionDataList.fromConfigObject(configObject);\n const consumerComponent: ConsumerComponent = component.state._consumer;\n\n const extensionDataList = ExtensionDataList.mergeConfigs([\n extensionsFromConfigObject,\n consumerComponent.extensions,\n ]).filterRemovedExtensions();\n\n // Restore data fields from the original extensions after merging configs.\n // configObject contains only config (from the merged config result), it has no data.\n // When merging configs, if an extension exists in both lists, the first one (extensionsFromConfigObject) wins.\n // This means the merged entry gets the new config but loses the data from the original extension.\n // We need to restore the data fields from the original extensions so components that skip aspect loading\n // (PR #9570 optimization) still have their data. For example, DependencyResolver has data fields like\n // packageName, dependencies, policy, componentRangePrefix. Note: it's OK to restore the \"dependencies\" field\n // from the original component because it will be rewritten later by addDeps() with the calculated policy.\n extensionDataList.forEach((ext) => {\n const originalExt = consumerComponent.extensions.findExtension(ext.stringId, true);\n if (originalExt && originalExt.data) {\n ext.data = originalExt.data;\n }\n });\n\n consumerComponent.extensions = extensionDataList;\n component.state.aspects = await this.scope.createAspectListFromExtensionDataList(extensionDataList);\n\n const autoDeps = extensionsFromConfigObject.extractAutoDepsFromConfig();\n return autoDeps;\n }\n\n async snapFromScope(\n snapDataPerCompRaw: SnapDataPerCompRaw[],\n params: {\n push?: boolean;\n ignoreIssues?: string;\n lane?: string;\n updateDependents?: boolean;\n tag?: boolean;\n // in case of merging lanes, the component files are updated in-memory\n updatedLegacyComponents?: ConsumerComponent[];\n loadAspectOnlyForIds?: ComponentIdList; // if undefined, load aspects for all components\n } & Partial<BasicTagParams>\n ): Promise<SnapFromScopeResults> {\n if (this.workspace) {\n throw new BitError(\n `unable to run this command from a workspace, please create a new bare-scope and run it from there`\n );\n }\n let lane: Lane | undefined;\n const laneIdStr = params.lane;\n if (laneIdStr) {\n const laneId = LaneId.parse(laneIdStr);\n try {\n lane = await this.importer.importLaneObject(laneId);\n } catch (err: any) {\n if (err.constructor.name !== LaneNotFound.name) throw err;\n // if the lane is not found, it's probably because it's new. create a new lane.\n lane = await createLaneInScope(laneId.name, this.scope, laneId.scope);\n // it's important to set the lane as new in scope.json. otherwise, later, when importing and the lane is loaded\n // from the filesystem, it looses the \"isNew: true\", and then it tries to fetch the lane from the remote scope.\n // which fails with the importer.\n this.scope.legacyScope.scopeJson.setLaneAsNew(laneId.name);\n }\n // this is critical. otherwise, later on, when loading aspects and isolating capsules, we'll try to fetch dists\n // from the original scope instead of the lane-scope.\n this.scope.legacyScope.setCurrentLaneId(laneId);\n this.scope.legacyScope.scopeImporter.shouldOnlyFetchFromCurrentLane = true;\n }\n const laneCompIds = lane?.toComponentIdsIncludeUpdateDependents();\n const snapDataPerComp = snapDataPerCompRaw.map((snapData) => {\n return {\n componentId: ComponentID.fromString(snapData.componentId),\n dependencies: snapData.dependencies || [],\n aspects: snapData.aspects,\n message: snapData.message,\n files: snapData.files,\n isNew: snapData.isNew,\n mainFile: snapData.mainFile,\n newDependencies: (snapData.newDependencies || []).map((dep) => ({\n id: dep.id,\n version: dep.version,\n isComponent: dep.isComponent ?? true,\n type: dep.type ?? 'runtime',\n })),\n removeDependencies: snapData.removeDependencies,\n version: snapData.version,\n };\n });\n\n // console.log('snapDataPerComp', JSON.stringify(snapDataPerComp, undefined, 2));\n\n const componentIds = compact(snapDataPerComp.map((t) => (t.isNew ? null : t.componentId)));\n const allCompIds = snapDataPerComp.map((s) => s.componentId);\n const componentIdsLatest = componentIds.map((id) => id.changeVersion(LATEST));\n const newCompsData = compact(snapDataPerComp.map((t) => (t.isNew ? t : null)));\n const newComponents = await Promise.all(\n newCompsData.map((newComp) => generateCompFromScope(this.scope, this.dependencyResolver, newComp, this))\n );\n\n await this.scope.import(componentIdsLatest, {\n preferDependencyGraph: false,\n lane,\n reason: `seeders to snap`,\n });\n const getSnapData = (id: ComponentID): SnapDataParsed => {\n const snapData = snapDataPerComp.find((t) => {\n return t.componentId.isEqual(id, { ignoreVersion: true });\n });\n if (!snapData) throw new Error(`unable to find ${id.toString()} in snapDataPerComp`);\n return snapData;\n };\n const updatedLegacyComponents = params.updatedLegacyComponents || [];\n const updatedComponents = await this.scope.getManyByLegacy(updatedLegacyComponents);\n\n const existingComponents = compact(\n await pMapSeries(componentIdsLatest, async (id) => {\n const foundInUpdated = updatedComponents.find((c) => c.id.isEqualWithoutVersion(id));\n return foundInUpdated || this.scope.get(id);\n })\n );\n // in case of update-dependents, align the dependencies of the dependents according to the lane\n if (params.updateDependents && laneCompIds) {\n existingComponents.forEach((comp) => {\n const deps = this.dependencyResolver.getComponentDependencies(comp);\n const snapData = getSnapData(comp.id);\n deps.forEach((dep) => {\n const fromLane = laneCompIds.searchWithoutVersion(dep.componentId);\n if (fromLane) {\n snapData.dependencies.push(fromLane.toString());\n }\n });\n });\n // When merging lanes, if a component being snapped has dependencies on components that were simply updated\n // (non-diverged), those dependencies still point to the old lane versions. We need to update them to point\n // to the newly merged versions. Also convert hashes to tags when available.\n } else if (!params.updateDependents && updatedComponents.length) {\n existingComponents.forEach((comp) => {\n const deps = this.dependencyResolver.getComponentDependencies(comp);\n const snapData = getSnapData(comp.id);\n deps.forEach((dep) => {\n const mergedComp = updatedComponents.find((c) => c.id.isEqualWithoutVersion(dep.componentId));\n if (mergedComp) {\n // Convert hash to tag if available\n const tag = mergedComp.tags.byHash(mergedComp.id.version);\n const versionToUse = tag?.version.raw || mergedComp.id.version;\n snapData.dependencies.push(`${mergedComp.id.toStringWithoutVersion()}@${versionToUse}`);\n }\n });\n });\n }\n\n const components = [...existingComponents, ...newComponents];\n\n // this must be done before we load component aspects later on, because this updated deps may update aspects.\n await pMapSeries(components, async (component) => {\n const snapData = getSnapData(component.id);\n const autoDeps = await this.addAspectsFromConfigObject(component, snapData.aspects);\n // adds explicitly defined dependencies and dependencies from envs/aspects (overrides)\n await addDeps(component, snapData, this.scope, this.deps, this.dependencyResolver, this, autoDeps);\n });\n\n // for new components these are not needed. coz when generating them we already add the aspects and the files.\n await Promise.all(\n existingComponents.map(async (comp) => {\n const snapData = getSnapData(comp.id);\n if (snapData.files?.length) {\n await this.updateSourceFiles(comp, snapData.files);\n }\n })\n );\n\n // load the aspects user configured to set on the components. it creates capsules if needed.\n // otherwise, when a user set a custom-env, it won't be loaded and the Version object will leave the\n // teambit.envs/envs in a weird state. the config will be set correctly but the data will be set to the default\n // node env.\n // OPTIMIZATION: loadAspectOnlyForIds is used to skip aspect loading for components without data conflicts.\n // This was added in PR #9570 to improve performance during merge-from-scope operations.\n // When merging main into a lane, if aspects data can be successfully merged (no conflicts), we skip the\n // expensive aspect loading process. Only components with data conflicts need full aspect loading.\n // NOTE: This means executeOnCompAspectReCalcSlot (which recalculates aspect data like packageName, dependencies, etc.)\n // only runs for components in loadAspectOnlyForIds. Components not in this list rely on their existing aspect data\n // from when the component was loaded from the scope. For extensions that are part of the merged config, their data\n // is preserved by addAspectsFromConfigObject to prevent data loss during config merge.\n const { loadAspectOnlyForIds } = params;\n const compsToLoadAspects = loadAspectOnlyForIds\n ? components.filter((c) => loadAspectOnlyForIds.hasWithoutVersion(c.id))\n : components;\n\n await this.scope.loadManyCompsAspects(compsToLoadAspects);\n\n // this is similar to what happens in the workspace. the \"onLoad\" is running and populating the \"data\" of the aspects.\n await pMapSeries(compsToLoadAspects, async (comp) => this.scope.executeOnCompAspectReCalcSlot(comp));\n\n const ids = ComponentIdList.fromArray(allCompIds);\n const shouldTag = Boolean(params.tag);\n const makeVersionParams = {\n ...params,\n tagDataPerComp: snapDataPerComp.map((s) => ({\n componentId: s.componentId,\n message: s.message,\n dependencies: [],\n versionToTag: shouldTag ? s.version || 'patch' : undefined,\n })),\n persist: true,\n isSnap: !shouldTag,\n message: params.message as string,\n updateDependentsOnLane: params.updateDependents,\n };\n const results = await this.makeVersion(ids, components, makeVersionParams);\n\n const { taggedComponents } = results;\n let exportedIds: ComponentIdList | undefined;\n if (params.push) {\n const updatedLane = lane ? await this.scope.legacyScope.loadLane(lane.toLaneId()) : undefined;\n // include auto-tagged ids in the export set. For the bare-scope reverse cascade\n // (`snapFromScope({ updateDependents: true })`), `getLaneAutoTagIdsFromScope` re-snaps\n // lane.components that depend on the new hidden entry, and those new snaps must be pushed\n // alongside the explicit target.\n const autoTaggedIds = (results.autoTaggedResults || []).map((r) => r.component.id);\n const idsToExport = ComponentIdList.uniqFromArray([...ids, ...autoTaggedIds]);\n const { exported } = await this.exporter.pushToScopes({\n scope: this.scope.legacyScope,\n ids: idsToExport,\n allVersions: false,\n laneObject: updatedLane,\n // no need other snaps. only the latest one. without this option, when snapping on lane from another-scope, it\n // may throw an error saying the previous snaps don't exist on the filesystem.\n // (see the e2e - \"snap on a lane when the component is new to the lane and the scope\")\n exportHeadsOnly: true,\n });\n exportedIds = exported;\n }\n\n return {\n snappedComponents: taggedComponents,\n snappedIds: taggedComponents.map((comp) => comp.id),\n autoSnappedResults: results.autoTaggedResults,\n exportedIds,\n };\n }\n\n /**\n * save the local changes of a component(s) into the scope. snap can be done on main or on a lane.\n * once a component is snapped on a lane, it becomes part of it.\n */\n async snap({\n pattern,\n legacyBitIds, // @todo: change to ComponentID[]. pass only if have the ids already parsed.\n unmerged,\n editor,\n message = '',\n ignoreIssues,\n skipTests = false,\n skipTasks,\n skipAutoSnap = false,\n build,\n disableTagAndSnapPipelines = false,\n ignoreBuildErrors = false,\n rebuildDepsGraph,\n noLockDeps = false,\n unmodified = false,\n exitOnFirstFailedTask = false,\n detachHead,\n loose = false,\n }: Partial<BasicTagSnapParams> & {\n pattern?: string;\n legacyBitIds?: ComponentIdList;\n unmerged?: boolean;\n editor?: string;\n ignoreIssues?: string;\n skipAutoSnap?: boolean;\n disableTagAndSnapPipelines?: boolean;\n unmodified?: boolean;\n exitOnFirstFailedTask?: boolean;\n }): Promise<SnapResults | null> {\n if (!this.workspace) throw new OutsideWorkspaceError();\n if (pattern && legacyBitIds) throw new Error(`please pass either pattern or legacyBitIds, not both`);\n const consumer: Consumer = this.workspace.consumer;\n const componentsList = new ComponentsList(this.workspace);\n const newComponents = (await componentsList.listNewComponents()) as ComponentIdList;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n const ids = legacyBitIds || (await getIdsToSnap());\n if (!ids) return null;\n const autoAddedWorkspaceRoot = await this.getWorkspaceRootToTagAlong(ids);\n const idsToSnap = autoAddedWorkspaceRoot ? ComponentIdList.fromArray([...ids, autoAddedWorkspaceRoot]) : ids;\n this.logger.debug(`snapping the following components: ${idsToSnap.toString()}`);\n const components = await this.loadComponentsForTagOrSnap(idsToSnap);\n await this.throwForVariousIssues(components, ignoreIssues);\n const makeVersionParams = {\n editor,\n ignoreNewestVersion: false,\n message,\n skipTests,\n skipTasks,\n skipAutoTag: skipAutoSnap,\n persist: true,\n soft: false,\n build,\n isSnap: true,\n disableTagAndSnapPipelines,\n ignoreBuildErrors,\n rebuildDepsGraph,\n noLockDeps,\n packageManagerConfigRootDir: this.workspace.path,\n exitOnFirstFailedTask,\n detachHead,\n loose,\n ignoreIssues,\n autoAddedWorkspaceRoot,\n };\n const { taggedComponents, autoTaggedResults, stagedConfig, removedComponents, totalComponentsCount } =\n await this.makeVersion(idsToSnap, components, makeVersionParams);\n\n const snapResults: Partial<SnapResults> = {\n snappedComponents: taggedComponents,\n autoSnappedResults: autoTaggedResults,\n newComponents,\n removedComponents,\n totalComponentsCount,\n autoAddedWorkspaceRoot: findVersioned(taggedComponents, autoAddedWorkspaceRoot),\n };\n\n const currentLane = consumer.getCurrentLaneId();\n snapResults.laneName = currentLane.isDefault() ? null : currentLane.toString();\n await consumer.onDestroy(`snap (message: ${message || 'N/A'})`);\n await stagedConfig?.write();\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return snapResults;\n\n async function getIdsToSnap(): Promise<ComponentIdList | null> {\n if (unmerged) {\n return componentsList.listDuringMergeStateComponents();\n }\n const tagPendingComponentsIds = await self.getTagPendingComponentsIds(unmodified);\n if (!tagPendingComponentsIds.length) return null;\n // when unmodified, we ask for all components, throw if no matching. if not unmodified and no matching, see error\n // below, suggesting to use --unmodified flag.\n const shouldThrowForNoMatching = unmodified;\n const getCompIds = async () => {\n if (!pattern) return tagPendingComponentsIds;\n if (!pattern.includes('*') && !pattern.includes(',')) {\n const compId = await self.workspace.resolveComponentId(pattern);\n return [compId];\n }\n return self.workspace.filterIdsFromPoolIdsByPattern(pattern, tagPendingComponentsIds, shouldThrowForNoMatching);\n };\n const componentIds = await getCompIds();\n if (!componentIds.length && pattern) {\n const allTagPending = await self.workspace.listPotentialTagIds();\n if (allTagPending.length) {\n throw new BitError(`unable to find matching for \"${pattern}\" pattern among modified/new components.\nthere are matching among unmodified components though. consider using --unmodified flag if needed.\nin case you're unsure about the pattern syntax, use \"bit pattern [--help]\"`);\n }\n }\n if (!componentIds.length) {\n return null;\n }\n return ComponentIdList.fromArray(componentIds);\n }\n }\n\n /**\n * Workspace-side merge snap. Routes both visible workspace components AND hidden lane\n * lane.updateDependents through the same `makeVersion` pipeline that\n * `snap`/`snapFromScope` use, so cascade snaps get fresh log/buildStatus/flattenedDependencies/\n * lane-history/stagedSnaps just like every other snap.\n *\n * Visible: workspace.getMany picks up files written to disk by `applyVersion`.\n * Hidden: applyVersion's in-memory merged ConsumerComponents are passed in directly — they\n * have no bitmap entry, so they can't go through `loadComponentsForTagOrSnap`.\n *\n * version-maker's `isHiddenLaneEntry` detection (workspace-flow: not-in-bitmap) routes the\n * hidden ones to the right branches (no bitmap update, stagedSnaps tracking,\n * `addToUpdateDependentsInLane`).\n */\n async snapForMerge({\n visibleIds,\n hiddenLegacyComponents,\n message,\n build,\n loose,\n }: {\n visibleIds: ComponentIdList;\n hiddenLegacyComponents: ConsumerComponent[];\n message?: string;\n build?: boolean;\n loose?: boolean;\n }): Promise<{\n snappedComponents: ConsumerComponent[];\n autoSnappedResults: AutoTagResult[];\n removedComponents?: ComponentIdList;\n } | null> {\n if (!this.workspace) throw new OutsideWorkspaceError();\n if (!visibleIds.length && !hiddenLegacyComponents.length) return null;\n\n this.logger.debug(`snapForMerge, visible: ${visibleIds.length}, hidden: ${hiddenLegacyComponents.length}`);\n // a merge snap is a snap: a new or modified root joins it the way it joins tag and snap, so the\n // members snapped here record the root version their files were merged with, rather than the one\n // the root was last snapped at (see getWorkspaceRootToTagAlong). only the visible ids can take\n // it - a hidden entry is scope-only, with no workspace state to snap the root against and no\n // record of it to make right, so a merge of nothing else leaves the root where it is. the root\n // was snapped as a result of the merge, so it is reported in that section like the rest.\n const autoAddedWorkspaceRoot = visibleIds.length ? await this.getWorkspaceRootToTagAlong(visibleIds) : undefined;\n const visibleIdsToSnap = autoAddedWorkspaceRoot\n ? ComponentIdList.fromArray([...visibleIds, autoAddedWorkspaceRoot])\n : visibleIds;\n const visibleHarmony = visibleIdsToSnap.length ? await this.loadComponentsForTagOrSnap(visibleIdsToSnap) : [];\n const hiddenHarmony = hiddenLegacyComponents.length ? await this.scope.getManyByLegacy(hiddenLegacyComponents) : [];\n // issue checks are workspace-source-tree concerns — hidden entries are scope-only\n if (visibleHarmony.length) await this.throwForVariousIssues(visibleHarmony);\n\n const hiddenIds = ComponentIdList.fromArray(hiddenLegacyComponents.map((c) => c.componentId));\n const allIds = ComponentIdList.uniqFromArray([...visibleIdsToSnap, ...hiddenIds]);\n const allComponents = [...visibleHarmony, ...hiddenHarmony];\n\n const makeVersionParams = {\n ignoreNewestVersion: false,\n message: message || '',\n skipTests: false,\n skipAutoTag: false,\n persist: true,\n soft: false,\n build,\n isSnap: true,\n packageManagerConfigRootDir: this.workspace.path,\n loose,\n autoAddedWorkspaceRoot,\n };\n\n const { taggedComponents, autoTaggedResults, stagedConfig, removedComponents } = await this.makeVersion(\n allIds,\n allComponents,\n makeVersionParams\n );\n\n await this.workspace.consumer.onDestroy(`merge-snap (message: ${message || 'N/A'})`);\n await stagedConfig?.write();\n\n return {\n snappedComponents: taggedComponents,\n autoSnappedResults: autoTaggedResults,\n removedComponents,\n };\n }\n\n /**\n * remove tags/snaps that exist locally, which were not exported yet.\n * once a tag/snap is exported, it's impossible to delete it as other components may depend on it\n */\n async reset(\n componentPattern?: string,\n head?: boolean,\n force = false,\n soft = false\n ): Promise<{ results: ResetResult[]; isSoftUntag: boolean }> {\n if (!this.workspace) throw new OutsideWorkspaceError();\n const consumer = this.workspace.consumer;\n const currentLane = await consumer.getCurrentLaneObject();\n const untag = async (): Promise<ResetResult[]> => {\n if (!componentPattern) {\n return removeLocalVersionsForAllComponents(this.workspace, this.remove, currentLane, head);\n }\n const candidateComponents = await getComponentsWithOptionToUntag(this.workspace, this.remove);\n const idsMatchingPattern = await this.workspace.idsByPattern(componentPattern, true, { includeDeleted: true });\n const idsMatchingPatternBitIds = ComponentIdList.fromArray(idsMatchingPattern);\n const componentsToUntag = candidateComponents.filter((modelComponent) =>\n idsMatchingPatternBitIds.hasWithoutVersion(modelComponent.toComponentId())\n );\n return removeLocalVersionsForMultipleComponents(consumer, componentsToUntag, currentLane, head, force);\n };\n const softUntag = async () => {\n const softTaggedComponentsIds = this.workspace.filter.bySoftTagged();\n const idsToRemoveSoftTags = componentPattern\n ? await this.workspace.filterIdsFromPoolIdsByPattern(componentPattern, softTaggedComponentsIds)\n : softTaggedComponentsIds;\n return compact(\n idsToRemoveSoftTags.map((componentId) => {\n const componentMap = consumer.bitMap.getComponent(componentId, { ignoreVersion: true });\n const removedVersion = componentMap.nextVersion?.version;\n if (!removedVersion) return null;\n componentMap.clearNextVersion();\n return { id: componentId, versions: [removedVersion] };\n })\n );\n };\n let results: ResetResult[];\n const isRealUntag = !soft;\n if (isRealUntag) {\n results = await untag();\n\n // Remove lane history entries that correspond to the reset snaps.\n // Each snap uses its batchId as the lane history key, so we can match them.\n if (currentLane) {\n const allBatchIds = uniq(results.flatMap((r) => r.batchIds || []));\n if (allBatchIds.length) {\n const laneHistory = await consumer.scope.lanes.getOrCreateLaneHistory(currentLane);\n laneHistory.removeHistoryEntries(allBatchIds);\n consumer.scope.objects.add(laneHistory);\n }\n }\n\n await consumer.scope.objects.persist();\n const currentLaneId = consumer.getCurrentLaneId();\n const stagedConfig = await this.workspace.scope.getStagedConfig();\n\n await pMapSeries(results, async ({ component, versionToSetInBitmap }) => {\n if (!component) return;\n // hidden lane entries (lane.updateDependents) are not in the workspace bitmap, so skip\n // bitmap updates for them. A soft-deleted (visible) entry is also absent from bitmap but\n // `updateVersions` knows how to restore it from stagedConfig.\n const compId = component.toComponentId();\n if (currentLane?.findUpdateDependent(compId)) return;\n await updateVersions(this.workspace, stagedConfig, currentLaneId, component, versionToSetInBitmap, false);\n });\n await this.workspace.scope.legacyScope.stagedSnaps.write();\n } else {\n results = await softUntag();\n consumer.bitMap.markAsChanged();\n }\n\n await consumer.onDestroy('reset');\n return { results, isSoftUntag: !isRealUntag };\n }\n\n async resetNeverExported(): Promise<ComponentID[]> {\n const notExported = this.workspace.consumer.getNotExportedIds();\n const hashes = notExported.map((id) => BitObject.makeHash(id.fullName));\n await this.scope.legacyScope.objects.deleteObjectsFromFS(hashes.map((h) => Ref.from(h)));\n notExported.map((id) => this.workspace.consumer.bitMap.updateComponentId(id.changeVersion(undefined)));\n await this.workspace.bitMap.write(`reset (never-exported)`);\n return notExported;\n }\n\n /**\n * used externally. don't make it private.\n */\n async _addFlattenedDependenciesToComponents(components: ConsumerComponent[], rebuildDepsGraph = false) {\n this.logger.setStatusLine('importing missing dependencies...');\n this.logger.profile('snap._addFlattenedDependenciesToComponents');\n const getLane = async () => {\n const lane = await this.scope.legacyScope.getCurrentLaneObject();\n if (!lane) return undefined;\n if (!lane.isNew) return lane;\n const forkedFrom = lane.forkedFrom;\n if (!forkedFrom) return undefined;\n return this.scope.legacyScope.loadLane(forkedFrom);\n };\n const lane = await getLane();\n\n if (rebuildDepsGraph) {\n const flattenedDependenciesGetter = new FlattenedDependenciesGetter(this.scope.legacyScope, components, lane);\n await flattenedDependenciesGetter.populateFlattenedDependencies();\n this.logger.clearStatusLine();\n await this._addFlattenedDepsGraphToComponents(components);\n return;\n }\n\n const flattenedEdgesGetter = new FlattenedEdgesGetter(this.scope, components, this.logger, lane);\n await flattenedEdgesGetter.buildGraph();\n\n components.forEach((component) => {\n flattenedEdgesGetter.populateFlattenedAndEdgesForComp(component);\n });\n this.logger.profile('snap._addFlattenedDependenciesToComponents');\n }\n\n async throwForDepsFromAnotherLane(components: ConsumerComponent[]) {\n const lane = await this.scope.legacyScope.getCurrentLaneObject();\n const allIds = ComponentIdList.fromArray(components.map((c) => c.id));\n const missingDeps = await pMapSeries(components, async (component) => {\n return this.throwForDepsFromAnotherLaneForComp(component, allIds, lane);\n });\n const flattenedMissingDeps = ComponentIdList.uniqFromArray(\n missingDeps.flat().map((id) => id.changeVersion(undefined))\n );\n if (!flattenedMissingDeps.length) return;\n // ignore the cache. even if the component exists locally, we still need its VersionHistory object\n // in order to traverse the history and determine whether it's part of the lane history.\n await this.scope.legacyScope.scopeImporter.importWithoutDeps(flattenedMissingDeps, {\n cache: false,\n ignoreMissingHead: true,\n includeVersionHistory: true,\n lane,\n reason: 'of latest with version-history to make sure there are no dependencies from another lane',\n });\n await pMapSeries(components, async (component) => {\n await this.throwForDepsFromAnotherLaneForComp(component, allIds, lane, true);\n });\n }\n\n async throwForVariousIssues(components: Component[], ignoreIssues?: string) {\n const componentsToCheck = components.filter((c) => !c.isDeleted());\n const consumerComponents = componentsToCheck.map((c) => c.state._consumer) as ConsumerComponent[];\n await this.throwForLegacyDependenciesInsideHarmony(consumerComponents);\n await this.builder.throwForComponentIssues(componentsToCheck, ignoreIssues);\n this.throwForPendingImport(consumerComponents);\n }\n\n private async throwForDepsFromAnotherLaneForComp(\n component: ConsumerComponent,\n allIds: ComponentIdList,\n lane?: Lane,\n throwForMissingObjects = false\n ) {\n const depsFromModel = component.componentFromModel?.getAllDependencies();\n const depsFromModelIds = depsFromModel\n ? ComponentIdList.fromArray(depsFromModel.map((d) => d.id))\n : new ComponentIdList();\n const deps = component.getAllDependencies();\n const missingDeps: ComponentID[] = [];\n // deps that were already in the previous version were validated when that version was snapped, but only in\n // the context of the lane it was snapped on. when the previous version is from another lane (e.g. the\n // .bitmap has versions of another lane), its deps must be validated again against the current lane.\n let isPrevVersionFromCurrentHistoryP: Promise<boolean> | undefined;\n const isPrevVersionFromCurrentHistory = () => {\n if (!isPrevVersionFromCurrentHistoryP) {\n isPrevVersionFromCurrentHistoryP = this.isPartOfCurrentHistory(component.componentFromModel!.id, lane);\n }\n return isPrevVersionFromCurrentHistoryP;\n };\n await Promise.all(\n deps.map(async (dep) => {\n if (!this.scope.isExported(dep.id) || !dep.id.hasVersion()) return;\n if (isTag(dep.id.version)) return;\n if (allIds.hasWithoutVersion(dep.id)) return; // it's tagged/snapped now.\n // this dep is not new, it was already snapped/tagged with it before.\n if (depsFromModelIds.has(dep.id) && (await isPrevVersionFromCurrentHistory())) return;\n let isPartOfHistory: boolean | undefined;\n try {\n isPartOfHistory = lane\n ? await this.scope.legacyScope.isPartOfLaneHistoryOrMain(dep.id, lane)\n : await this.scope.legacyScope.isPartOfMainHistory(dep.id);\n } catch (err) {\n if (throwForMissingObjects) throw err;\n if (\n err instanceof VersionNotFound ||\n err instanceof ComponentNotFound ||\n err instanceof HeadNotFound ||\n err instanceof ParentNotFound\n ) {\n missingDeps.push(dep.id);\n return;\n }\n throw err;\n }\n\n if (!isPartOfHistory) {\n if (!throwForMissingObjects) {\n // it's possible that the dependency wasn't imported recently and the head is stale.\n missingDeps.push(dep.id);\n return;\n }\n const laneOrMainStr = lane ? `current lane \"${lane.name}\"` : 'main';\n throw new Error(\n `unable to tag/snap ${component.id.toString()}, it has a dependency ${dep.id.toString()} which is not part of ${laneOrMainStr} history.\none option to resolve this is installing ${dep.id.toStringWithoutVersion()} via \"bit install\", which installs the version from main.\nanother option, in case this dependency is not in main yet is to remove all references of this dependency in the code and then tag/snap.`\n );\n }\n })\n );\n return missingDeps;\n }\n\n private async isPartOfCurrentHistory(id: ComponentID, lane?: Lane): Promise<boolean> {\n if (!this.scope.isExported(id) || !id.hasVersion() || isTag(id.version)) return true;\n try {\n const isPartOfHistory = lane\n ? await this.scope.legacyScope.isPartOfLaneHistoryOrMain(id, lane)\n : await this.scope.legacyScope.isPartOfMainHistory(id);\n return Boolean(isPartOfHistory);\n } catch {\n // not enough data to determine. validate the deps as if they were new.\n return false;\n }\n }\n\n async _addFlattenedDepsGraphToComponents(components: ConsumerComponent[]) {\n const graph = new Graph<ComponentID, string>();\n const addEdges = (compId: ComponentID, dependencies: ConsumerComponent['dependencies'], label: DepEdgeType) => {\n dependencies.get().forEach((dep) => {\n graph.setNode(new Node(dep.id.toString(), dep.id));\n graph.setEdge(new Edge(compId.toString(), dep.id.toString(), label));\n });\n };\n components.forEach((comp) => {\n graph.setNode(new Node(comp.id.toString(), comp.id));\n addEdges(comp.id, comp.dependencies, 'prod');\n addEdges(comp.id, comp.devDependencies, 'dev');\n addEdges(comp.id, comp.extensionDependencies, 'ext');\n });\n const allFlattened = components.map((comp) => comp.flattenedDependencies);\n const allFlattenedUniq = ComponentIdList.uniqFromArray(allFlattened.flat());\n const allFlattenedWithoutCurrent = allFlattenedUniq.filter((id) => !components.find((c) => c.id.isEqual(id)));\n const componentsAndVersions = await this.scope.legacyScope.getComponentsAndVersions(\n ComponentIdList.fromArray(allFlattenedWithoutCurrent)\n );\n componentsAndVersions.forEach(({ component, version, versionStr }) => {\n const compId = component.toComponentId().changeVersion(versionStr);\n graph.setNode(new Node(compId.toString(), compId));\n addEdges(compId, version.dependencies, 'prod');\n addEdges(compId, version.devDependencies, 'dev');\n addEdges(compId, version.extensionDependencies, 'ext');\n });\n let someCompsHaveMissingFlattened = false;\n components.forEach((component) => {\n const edges = graph.outEdges(component.id.toString());\n const flattenedEdges = component.flattenedDependencies.map((dep) => graph.outEdges(dep.toString())).flat();\n const allEdges = [...edges, ...flattenedEdges];\n const edgesWithBitIds: DepEdge[] = allEdges.map((edge) => ({\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n source: graph.node(edge.source)!.attr,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n target: graph.node(edge.target)!.attr,\n type: edge.attr as DepEdgeType,\n }));\n component.flattenedEdges = edgesWithBitIds;\n\n // due to some previous bugs, some components might have missing flattened dependencies.\n // as a result, the flattenedEdges may have more components than the flattenedDependencies, which will cause\n // issues later on when the graph is built. this fixes it by adding the missing flattened dependencies, and\n // then recursively adding the flattenedEdge accordingly.\n const flattened = component.flattenedDependencies.map((dep) => dep.toString());\n const flattenedFromEdges = uniq(\n edgesWithBitIds.map((edge) => [edge.target.toString(), edge.source.toString()]).flat()\n );\n const missingFlattened = difference(flattenedFromEdges, flattened).filter((id) => id !== component.id.toString());\n\n if (missingFlattened.length) {\n someCompsHaveMissingFlattened = true;\n this.logger.warn(`missing flattened for ${component.id.toString()}: ${missingFlattened.join(', ')}`);\n const missingBitIds = missingFlattened.map((id) => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return graph.node(id)!.attr;\n });\n component.flattenedDependencies.push(...missingBitIds);\n }\n });\n if (someCompsHaveMissingFlattened) {\n await this._addFlattenedDepsGraphToComponents(components);\n }\n }\n\n /**\n * used externally. don't make it private.\n */\n _updateComponentsByTagResult(components: ConsumerComponent[], tagResult: LegacyOnTagResult[]) {\n tagResult.forEach((result) => {\n const matchingComponent = components.find((c) => c.id.isEqual(result.id));\n if (matchingComponent) {\n const existingBuilder = matchingComponent.extensions.findCoreExtension(Extensions.builder);\n if (existingBuilder) existingBuilder.data = result.builderData.data;\n else matchingComponent.extensions.push(result.builderData);\n }\n });\n }\n\n /**\n * used externally. don't make it private.\n */\n _getPublishedPackages(components: ConsumerComponent[]): PackageIntegritiesByPublishedPackages {\n const publishedPackages: PackageIntegritiesByPublishedPackages = new Map();\n for (const comp of components) {\n const builderExt = comp.extensions.findCoreExtension(Extensions.builder);\n const pkgData = builderExt?.data?.aspectsData?.find((a) => a.aspectId === Extensions.pkg);\n if (pkgData?.data?.publishedPackage != null) {\n publishedPackages.set(pkgData.data.publishedPackage, {\n integrity: pkgData.data.integrity,\n previouslyUsedVersion: comp.previouslyUsedVersion,\n });\n }\n }\n return publishedPackages;\n }\n\n async _addCompToObjects({\n source,\n lane,\n shouldValidateVersion = false,\n addVersionOpts,\n batchId,\n }: {\n source: ConsumerComponent;\n lane?: Lane;\n shouldValidateVersion?: boolean;\n addVersionOpts?: AddVersionOpts;\n batchId?: string;\n }): Promise<{\n component: ModelComponent;\n version: Version;\n addedVersionStr: string;\n }> {\n const { addedVersionStr, component, version } = await this._addCompFromScopeToObjects(source, lane, addVersionOpts);\n if (batchId) {\n version.batchId = batchId;\n }\n const unmergedComponent = this.scope.legacyScope.objects.unmergedComponents.getEntry(component.toComponentId());\n if (unmergedComponent) {\n if (unmergedComponent.unrelated) {\n this.logger.debug(\n `sources.addSource, unmerged component \"${component.name}\". adding an unrelated entry ${unmergedComponent.head.hash}`\n );\n if (!source.previouslyUsedVersion) {\n throw new Error(\n `source.previouslyUsedVersion must be set for ${component.name} because it's unrelated resolved.`\n );\n }\n if (unmergedComponent.unrelated === true) {\n // backward compatibility\n const unrelatedHead = Ref.from(source.previouslyUsedVersion);\n version.setUnrelated({ head: unrelatedHead, laneId: unmergedComponent.laneId });\n version.addAsOnlyParent(unmergedComponent.head);\n } else {\n const unrelated = unmergedComponent.unrelated;\n version.setUnrelated({ head: unrelated.unrelatedHead, laneId: unrelated.unrelatedLaneId });\n version.addAsOnlyParent(unrelated.headOnCurrentLane);\n }\n } else if (unmergedComponent.shouldSquash) {\n // --squash on diverged components: record the dropped lane-b head in squashed metadata\n // and leave `version.parents` as the single current-lane head. lane-b's history remains\n // reachable only on its own scope; the merge snap chain stays self-contained on this lane.\n // The diverged path always has a current-lane parent (that's what makes it diverged).\n const previousParents = [version.parents[0], unmergedComponent.head];\n // Fresh Log object — setSquashed retains it via version.modified[], and we mutate\n // version.log.message below, which would corrupt the modified-log entry if shared.\n const squashLog = await getLogForSquash(unmergedComponent.laneId);\n version.setSquashed({ previousParents, laneId: unmergedComponent.laneId }, squashLog);\n this.logger.debug(\n `sources.addSource, unmerged component \"${component.name}\". squash-on-diverged: dropping parent ${unmergedComponent.head.hash}`\n );\n version.log.message = version.log.message || UnmergedComponents.buildSnapMessage(unmergedComponent);\n } else {\n // this is adding a second parent to the version. the order is important. the first parent is coming from the current-lane.\n version.addParent(unmergedComponent.head);\n this.logger.debug(\n `sources.addSource, unmerged component \"${component.name}\". adding a parent ${unmergedComponent.head.hash}`\n );\n version.log.message = version.log.message || UnmergedComponents.buildSnapMessage(unmergedComponent);\n }\n this.scope.legacyScope.objects.unmergedComponents.removeComponent(component.toComponentId());\n }\n if (shouldValidateVersion) version.validate();\n return { addedVersionStr, component, version };\n }\n\n /**\n * used externally. don't make it private.\n */\n async _addCompFromScopeToObjects(\n source: ConsumerComponent,\n lane?: Lane,\n addVersionOpts?: AddVersionOpts\n ): Promise<{\n component: ModelComponent;\n version: Version;\n addedVersionStr: string;\n }> {\n const objectRepo = this.objectsRepo;\n // if a component exists in the model, add a new version. Otherwise, create a new component on the model\n // @todo: fix the ts error here with \"source\"\n const component = await this.scope.legacyScope.sources.findOrAddComponent(source as any);\n const artifactFiles = getArtifactsFiles(source.extensions);\n const artifacts = this.transformArtifactsFromVinylToSource(artifactFiles);\n const { version, files, flattenedEdges, dependenciesGraph } =\n await this.scope.legacyScope.sources.consumerComponentToVersion(source);\n version.origin = {\n id: { scope: source.scope || (source.defaultScope as string), name: source.name },\n lane: lane ? { scope: lane.scope, name: lane.name, hash: lane.hash().toString() } : undefined,\n };\n objectRepo.add(version);\n if (flattenedEdges) this.objectsRepo.add(flattenedEdges);\n if (dependenciesGraph) this.objectsRepo.add(dependenciesGraph);\n if (!source.version) throw new Error(`addSource expects source.version to be set`);\n const addedVersionStr = component.addVersion(\n version,\n source.version,\n lane,\n source.previouslyUsedVersion,\n addVersionOpts\n );\n objectRepo.add(component);\n if (lane) objectRepo.add(lane);\n files.forEach((file) => objectRepo.add(file.file));\n if (artifacts) artifacts.forEach((file) => objectRepo.add(file.source));\n return { component, version, addedVersionStr };\n }\n\n /**\n * for an existing component in the local scope, add the updated Version-object/artifacts to the repository\n * so the next \"persist()\" call will save them to the filesystem\n */\n async enrichComp(component: Component, modifiedLog?: Log) {\n const objects = await this.getObjectsToEnrichComp(component, modifiedLog);\n objects.forEach((obj) => this.objectsRepo.add(obj));\n }\n\n /**\n * used externally. don't make it private.\n * needed to be updated after the build-pipeline was running\n */\n setBuildStatus(component: Component, buildStatus: BuildStatus) {\n component.state._consumer.buildStatus = buildStatus;\n }\n\n /**\n * for an existing component in the local scope, update the Version object with the updated data from the\n * consumer-component and return the objects that need to be saved in the filesystem\n */\n async getObjectsToEnrichComp(component: Component, modifiedLog?: Log): Promise<BitObject[]> {\n const consumerComponent: ConsumerComponent = component.state._consumer;\n const modelComp =\n consumerComponent.modelComponent || // @todo: fix the ts error here with \"source\"\n (await this.scope.legacyScope.sources.findOrAddComponent(consumerComponent as any));\n const version = await modelComp.loadVersion(consumerComponent.id.version as string, this.objectsRepo, true);\n if (modifiedLog) version.addModifiedLog(modifiedLog);\n const artifactFiles = getArtifactsFiles(consumerComponent.extensions);\n const artifacts = this.transformArtifactsFromVinylToSource(artifactFiles);\n version.extensions = consumerComponent.extensions;\n version.buildStatus = consumerComponent.buildStatus;\n const artifactObjects = artifacts.map((file) => file.source);\n const dependenciesGraph = Version.dependenciesGraphToSource(consumerComponent.dependenciesGraph);\n version.dependenciesGraphRef = dependenciesGraph ? dependenciesGraph.hash() : undefined;\n\n const result = [version, ...artifactObjects];\n if (dependenciesGraph) result.push(dependenciesGraph);\n return result;\n }\n\n private transformArtifactsFromVinylToSource(artifactsFiles: ArtifactFiles[]): ArtifactSource[] {\n const artifacts: ArtifactSource[] = [];\n artifactsFiles.forEach((artifactFiles) => {\n const artifactsSource = ArtifactFiles.fromVinylsToSources(artifactFiles.vinyls);\n if (artifactsSource.length) artifactFiles.populateRefsFromSources(artifactsSource);\n artifacts.push(...artifactsSource);\n });\n return artifacts;\n }\n\n private async loadComponentsForTagOrSnap(ids: ComponentIdList, shouldClearCacheFirst = true): Promise<Component[]> {\n const idsWithoutVersions = ids.map((id) => id.changeVersion(undefined));\n // don't pass the idsWithoutVersions to `this.application.loadAllAppsAsAspects()`.\n // otherwise, the auto-tag components (which are loaded later) won't have the application data.\n const appIds = await this.application.loadAllAppsAsAspects();\n if (shouldClearCacheFirst) {\n await this.workspace.consumer.componentFsCache.deleteAllDependenciesDataCache();\n // don't clear only the cache of these ids. we need also the auto-tag. so it's safer to just clear all.\n this.workspace.clearAllComponentsCache();\n } else {\n appIds.forEach((id) => this.workspace.clearComponentCache(id));\n }\n\n return this.workspace.getMany(idsWithoutVersions);\n }\n\n private throwForPendingImport(components: ConsumerComponent[]) {\n const componentsMissingFromScope = components\n .filter((c) => !c.componentFromModel && this.scope.isExported(c.id))\n .map((c) => c.id.toString());\n if (componentsMissingFromScope.length) {\n throw new ComponentsPendingImport(componentsMissingFromScope);\n }\n }\n\n private async throwForLegacyDependenciesInsideHarmony(components: ConsumerComponent[]) {\n const throwForComponent = async (component: ConsumerComponent) => {\n const dependenciesIds = component.getAllDependenciesIds();\n const legacyScope = this.workspace.scope.legacyScope;\n await Promise.all(\n dependenciesIds.map(async (depId) => {\n if (!depId.hasVersion()) return;\n const modelComp = await legacyScope.getModelComponentIfExist(depId);\n if (!modelComp) return;\n const version = await modelComp.loadVersion(depId.version as string, legacyScope.objects);\n if (version.isLegacy) {\n throw new Error(\n `unable tagging \"${component.id.toString()}\", its dependency \"${depId.toString()}\" is legacy`\n );\n }\n })\n );\n };\n await pMap(components, (component) => throwForComponent(component), { concurrency: concurrentComponentsLimit() });\n }\n\n /**\n * used externally. don't make it private.\n *\n * the compId.version can be a range (e.g. \"^1.0.0\"), in which case, it finds the component in the local scope and\n * resolves the latest version that falls under the range.\n * in case the version has no range, it returns the same compId.\n * in case it has no version, it returns the latest.\n */\n async getCompIdWithExactVersionAccordingToSemver(compId: ComponentID): Promise<ComponentID> {\n if (isHash(compId.version)) {\n return compId;\n }\n const range = compId.version || '*'; // if not version specified, assume the latest\n const id = compId.changeVersion(undefined);\n const exactVersion = await this.scope.getExactVersionBySemverRange(id, range);\n if (!exactVersion) {\n throw new Error(`unable to find a version that satisfies \"${range}\" of \"${compId.toString()}\"`);\n }\n return compId.changeVersion(exactVersion);\n }\n\n async updateSourceFiles(component: Component, files: FileData[]) {\n const currentFiles = component.state.filesystem.files;\n\n files.forEach((file) => {\n if (file.delete) {\n const found = currentFiles.find((f) => f.relative === file.path);\n if (!found) return;\n if (this.workspace) {\n fs.removeSync(found.path);\n }\n const index = currentFiles.findIndex((f) => f.relative === file.path);\n if (index !== -1) {\n currentFiles.splice(index, 1);\n }\n return;\n }\n const currentFile = currentFiles.find((f) => f.relative === file.path);\n if (currentFile) {\n currentFile.contents = Buffer.from(file.content);\n } else {\n currentFiles.push(\n new SourceFile({ base: '.', path: file.path, contents: Buffer.from(file.content), test: false })\n );\n }\n });\n\n if (!currentFiles.length)\n throw new Error(`unable to update component ${component.id.toString()}, all files were deleted`);\n }\n\n /**\n * used externally. don't make it private.\n */\n async updateDependenciesVersionsOfComponent(\n component: Component,\n dependencies: ComponentID[],\n currentBitIds: ComponentID[]\n ) {\n const updatedIds = ComponentIdList.fromArray([...currentBitIds, ...dependencies]);\n const componentIdStr = component.id.toString();\n const legacyComponent: ConsumerComponent = component.state._consumer;\n const deps = [...legacyComponent.dependencies.get(), ...legacyComponent.devDependencies.get()];\n const dependenciesList = this.dependencyResolver.getDependencies(component);\n deps.forEach((dep) => {\n const updatedBitId = updatedIds.searchWithoutVersion(dep.id);\n if (updatedBitId) {\n const depIdStr = dep.id.toString();\n const packageName = dependenciesList.findDependency(depIdStr)?.getPackageName?.();\n if (!packageName) {\n throw new Error(\n `unable to find the package-name of \"${depIdStr}\" dependency inside the dependency-resolver data of \"${componentIdStr}\"`\n );\n }\n this.logger.debug(`updating \"${componentIdStr}\", dependency ${depIdStr} to version ${updatedBitId.version}}`);\n dep.id = updatedBitId;\n dep.packageName = packageName;\n }\n });\n await this.UpdateDepsAspectsSaveIntoDepsResolver(component, updatedIds.toStringArray());\n }\n\n /**\n * it does two things:\n * 1. update extensions versions according to the version provided in updatedIds.\n * 2. save all dependencies data from the legacy into DependencyResolver aspect.\n */\n async UpdateDepsAspectsSaveIntoDepsResolver(component: Component, updatedIds: string[]) {\n const legacyComponent: ConsumerComponent = component.state._consumer;\n legacyComponent.extensions.forEach((ext) => {\n const extId = ext.extensionId;\n if (!extId) return;\n const found = updatedIds.find((d) => d.startsWith(`${extId.toStringWithoutVersion()}@`));\n if (found) {\n const updatedExtId = ComponentID.fromString(found);\n this.logger.debug(\n `updating \"${component.id.toString()}\", extension ${extId.toString()} to version ${updatedExtId.version}}`\n );\n ext.extensionId = updatedExtId;\n if (ext.newExtensionId) ext.newExtensionId = updatedExtId;\n }\n });\n\n component.state.aspects = await this.scope.createAspectListFromExtensionDataList(legacyComponent.extensions);\n\n const dependenciesListSerialized = (await this.dependencyResolver.extractDepsFromLegacy(component)).serialize();\n const extId = DependencyResolverAspect.id;\n const data = { dependencies: dependenciesListSerialized };\n const existingExtension = component.config.extensions.findExtension(extId);\n if (existingExtension) {\n // Only merge top level of extension data\n Object.assign(existingExtension.data, data);\n return;\n }\n const extension = new ExtensionDataEntry(undefined, undefined, extId, undefined, data);\n component.config.extensions.push(extension);\n }\n\n /**\n * a new or modified workspace-root component joins every tag and snap of its members. they record\n * the root at the version that has their files (see VersionMaker.recordWorkspaceRoot), and a build\n * of a member elsewhere needs the workspace.jsonc, lockfile and configs it was made with. a root\n * that is up to date is recorded at its current version and stays out of the batch.\n */\n private async getWorkspaceRootToTagAlong(ids: ComponentIdList): Promise<ComponentID | undefined> {\n const rootId = findWorkspaceRootMap(this.workspace.consumer.bitMap)?.id;\n if (!rootId || ids.hasWithoutVersion(rootId)) return undefined;\n const status = await this.workspace.getComponentStatusById(rootId);\n return status.newlyCreated || status.modified ? rootId.changeVersion(undefined) : undefined;\n }\n\n private async getTagPendingComponentsIds(includeUnmodified = false) {\n const ids = includeUnmodified\n ? await this.workspace.listPotentialTagIds()\n : await this.workspace.listTagPendingIds();\n const localOnlyIds = this.workspace.filter.byLocalOnly(ids);\n if (!localOnlyIds.length) {\n return ids;\n }\n const localOnlyListIds = ComponentIdList.fromArray(localOnlyIds);\n return ids.filter((id) => !localOnlyListIds.hasWithoutVersion(id));\n }\n\n private async getComponentsToTag(\n includeUnmodified: boolean,\n exactVersion: string | undefined,\n persist: boolean,\n ids: string[],\n snapped: boolean,\n unmerged: boolean\n ): Promise<{ bitIds: ComponentID[]; warnings: string[] }> {\n const warnings: string[] = [];\n const componentsList = new ComponentsList(this.workspace);\n if (persist) {\n const softTaggedComponents = this.workspace.filter.bySoftTagged();\n return { bitIds: softTaggedComponents, warnings: [] };\n }\n\n const tagPendingComponentsIds = await this.getTagPendingComponentsIds(includeUnmodified);\n\n const snappedComponentsIds = (await this.workspace.filter.bySnappedOnMain()).map((id) =>\n id.changeVersion(undefined)\n );\n\n const tagPendingBitIdsIncludeSnapped = ComponentIdList.fromArray([\n ...tagPendingComponentsIds,\n ...snappedComponentsIds,\n ]);\n\n if (snappedComponentsIds.length) {\n const localOnlyIds = this.workspace.filter.byLocalOnly(snappedComponentsIds);\n const localOnlyListIds = ComponentIdList.fromArray(localOnlyIds);\n snappedComponentsIds.forEach((id) => {\n if (localOnlyListIds.hasWithoutVersion(id)) {\n const index = snappedComponentsIds.findIndex((c) => c.isEqual(id));\n snappedComponentsIds.splice(index, 1);\n }\n });\n }\n\n if (ids.length) {\n const componentIds = await pMapSeries(ids, async (id) => {\n const [idWithoutVer, version] = id.split('@');\n const idIsPattern = this.workspace.isPattern(id);\n if (idIsPattern) {\n const allIds = await this.workspace.filterIdsFromPoolIdsByPattern(\n idWithoutVer,\n tagPendingBitIdsIncludeSnapped\n );\n return allIds.map((componentId) => componentId.changeVersion(version));\n }\n const componentId = await this.workspace.resolveComponentId(idWithoutVer);\n if (!includeUnmodified) {\n if (!tagPendingBitIdsIncludeSnapped.hasWithoutVersion(componentId)) return null;\n }\n return componentId.changeVersion(version);\n });\n\n return { bitIds: compact(componentIds.flat()), warnings };\n }\n\n if (snapped) {\n return { bitIds: snappedComponentsIds, warnings };\n }\n\n if (unmerged) {\n return { bitIds: componentsList.listDuringMergeStateComponents(), warnings };\n }\n\n if (includeUnmodified && exactVersion) {\n const tagPendingComponentsLatest = await this.workspace.scope.legacyScope.latestVersions(\n tagPendingComponentsIds,\n false\n );\n tagPendingComponentsLatest.forEach((componentId) => {\n if (componentId.version && semver.valid(componentId.version) && semver.gt(componentId.version, exactVersion)) {\n warnings.push(`warning: ${componentId.toString()} has a version greater than ${exactVersion}`);\n }\n });\n }\n\n return { bitIds: tagPendingBitIdsIncludeSnapped.map((id) => id.changeVersion(undefined)), warnings };\n }\n\n static slots = [Slot.withType<OnPreSnap>()];\n static dependencies = [\n WorkspaceAspect,\n CLIAspect,\n LoggerAspect,\n DependencyResolverAspect,\n ScopeAspect,\n ExportAspect,\n BuilderAspect,\n ImporterAspect,\n ConfigStoreAspect,\n DependenciesAspect,\n ApplicationAspect,\n RemoveAspect,\n ];\n static runtime = MainRuntime;\n static async provider(\n [\n workspace,\n cli,\n loggerMain,\n dependencyResolver,\n scope,\n exporter,\n builder,\n importer,\n configStore,\n deps,\n application,\n remove,\n ]: [\n Workspace,\n CLIMain,\n LoggerMain,\n DependencyResolverMain,\n ScopeMain,\n ExportMain,\n BuilderMain,\n ImporterMain,\n ConfigStoreMain,\n DependenciesMain,\n ApplicationMain,\n RemoveMain,\n ],\n config,\n [onPreSnapSlot]: [OnPreSnapSlot]\n ) {\n const logger = loggerMain.createLogger(SnappingAspect.id);\n const snapping = new SnappingMain(\n workspace,\n logger,\n dependencyResolver,\n scope,\n exporter,\n builder,\n importer,\n deps,\n application,\n remove,\n onPreSnapSlot\n );\n const snapCmd = new SnapCmd(snapping, logger, configStore);\n const tagCmd = new TagCmd(snapping, logger, configStore);\n const resetCmd = new ResetCmd(snapping);\n const snapDistanceCmd = new SnapDistanceCmd(scope, workspace);\n cli.register(tagCmd, snapCmd, resetCmd, snapDistanceCmd);\n return snapping;\n }\n}\n\n/**\n * the id of the given component as it was just versioned, for the results.\n */\nfunction findVersioned(components: ConsumerComponent[], id?: ComponentID): ComponentID | undefined {\n return id && components.find((component) => component.id.isEqualWithoutVersion(id))?.id;\n}\n\nSnappingAspect.addRuntime(SnappingMain);\n\nexport default SnappingMain;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_harmonyModules","data","require","_cli","_graph","_fsExtra","_interopRequireDefault","_legacy","_getFlattenedDependencies","_workspace","_semver","_lodash","_componentId","_workspaceRoot","_legacy2","_legacy3","_legacy4","_pMapSeries","_logger","_bitError","_pMap","_pkgModules","_harmonyModules2","_harmonyModules3","_harmonyModules4","_configStore","_scope","_objects","_dependencyResolver","_legacy5","_builder","_laneId","_importer","_export","_componentVersion","_component","_dependencies","_snapCmd","_snapping","_tagCmd","_resetCmd","_generateCompFromScope","_flattenedEdges","_snapDistanceCmd","_resetComponent","_application","_legacy6","_lanesModules","_remove","_versionMaker","_harmony","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","SnappingMain","constructor","workspace","logger","dependencyResolver","scope","exporter","builder","importer","deps","application","remove","onPreSnapSlot","objectsRepo","legacyScope","objects","registerOnPreSnap","onPreSnap","register","tag","ids","message","version","editor","versionsFile","snapped","unmerged","releaseType","autoTagReleaseType","preReleaseId","ignoreIssues","ignoreNewestVersion","skipTests","skipTasks","skipAutoTag","build","unmodified","soft","persist","ignoreBuildErrors","rebuildDepsGraph","noLockDeps","incrementBy","skipPublishedVersions","disableTagAndSnapPipelines","failFast","detachHead","overrideHead","loose","BitError","Boolean","exactVersion","OutsideWorkspaceError","validExactVersion","validateVersion","consumer","componentsList","ComponentsList","setStatusLine","newComponents","listNewComponents","bitIds","warnings","getComponentsToTag","compIds","ComponentIdList","fromArray","autoAddedWorkspaceRoot","undefined","getWorkspaceRootToTagAlong","idsToTag","debug","toString","components","loadComponentsForTagOrSnap","throwForVariousIssues","params","packageManagerConfigRootDir","path","exitOnFirstFailedTask","taggedComponents","autoTaggedResults","publishedPackages","stagedConfig","removedComponents","totalComponentsCount","makeVersion","tagResults","isSoftTag","findVersioned","onDestroy","write","consumerComponents","map","c","state","_consumer","componentIds","versionMaker","VersionMaker","addAspectsFromConfigObject","component","configObject","ExtensionDataList","adjustEnvsOnConfigObject","extensionsFromConfigObject","fromConfigObject","consumerComponent","extensionDataList","mergeConfigs","extensions","filterRemovedExtensions","ext","originalExt","findExtension","stringId","aspects","createAspectListFromExtensionDataList","autoDeps","extractAutoDepsFromConfig","snapFromScope","snapDataPerCompRaw","lane","laneIdStr","laneId","LaneId","parse","importLaneObject","err","name","LaneNotFound","createLaneInScope","scopeJson","setLaneAsNew","setCurrentLaneId","scopeImporter","shouldOnlyFetchFromCurrentLane","laneCompIds","toComponentIdsIncludeUpdateDependents","snapDataPerComp","snapData","componentId","ComponentID","fromString","dependencies","files","isNew","mainFile","newDependencies","dep","id","isComponent","type","removeDependencies","compact","allCompIds","s","componentIdsLatest","changeVersion","LATEST","newCompsData","Promise","all","newComp","generateCompFromScope","import","preferDependencyGraph","reason","getSnapData","find","isEqual","ignoreVersion","Error","updatedLegacyComponents","updatedComponents","getManyByLegacy","existingComponents","pMapSeries","foundInUpdated","isEqualWithoutVersion","get","updateDependents","comp","getComponentDependencies","fromLane","searchWithoutVersion","mergedComp","tags","byHash","versionToUse","raw","toStringWithoutVersion","addDeps","updateSourceFiles","loadAspectOnlyForIds","compsToLoadAspects","hasWithoutVersion","loadManyCompsAspects","executeOnCompAspectReCalcSlot","shouldTag","makeVersionParams","tagDataPerComp","versionToTag","isSnap","updateDependentsOnLane","results","exportedIds","updatedLane","loadLane","toLaneId","autoTaggedIds","idsToExport","uniqFromArray","exported","pushToScopes","allVersions","laneObject","exportHeadsOnly","snappedComponents","snappedIds","autoSnappedResults","snap","pattern","legacyBitIds","skipAutoSnap","self","getIdsToSnap","idsToSnap","snapResults","currentLane","getCurrentLaneId","laneName","isDefault","listDuringMergeStateComponents","tagPendingComponentsIds","getTagPendingComponentsIds","shouldThrowForNoMatching","getCompIds","includes","compId","resolveComponentId","filterIdsFromPoolIdsByPattern","allTagPending","listPotentialTagIds","snapForMerge","visibleIds","hiddenLegacyComponents","visibleIdsToSnap","visibleHarmony","hiddenHarmony","hiddenIds","allIds","allComponents","reset","componentPattern","head","force","getCurrentLaneObject","untag","removeLocalVersionsForAllComponents","candidateComponents","getComponentsWithOptionToUntag","idsMatchingPattern","idsByPattern","includeDeleted","idsMatchingPatternBitIds","componentsToUntag","modelComponent","toComponentId","removeLocalVersionsForMultipleComponents","softUntag","softTaggedComponentsIds","bySoftTagged","idsToRemoveSoftTags","componentMap","bitMap","getComponent","removedVersion","nextVersion","clearNextVersion","versions","isRealUntag","allBatchIds","uniq","flatMap","batchIds","laneHistory","lanes","getOrCreateLaneHistory","removeHistoryEntries","add","currentLaneId","getStagedConfig","versionToSetInBitmap","findUpdateDependent","updateVersions","stagedSnaps","markAsChanged","isSoftUntag","resetNeverExported","notExported","getNotExportedIds","hashes","BitObject","makeHash","fullName","deleteObjectsFromFS","h","Ref","from","updateComponentId","_addFlattenedDependenciesToComponents","profile","getLane","forkedFrom","flattenedDependenciesGetter","FlattenedDependenciesGetter","populateFlattenedDependencies","clearStatusLine","_addFlattenedDepsGraphToComponents","flattenedEdgesGetter","FlattenedEdgesGetter","buildGraph","populateFlattenedAndEdgesForComp","throwForDepsFromAnotherLane","missingDeps","throwForDepsFromAnotherLaneForComp","flattenedMissingDeps","flat","importWithoutDeps","cache","ignoreMissingHead","includeVersionHistory","componentsToCheck","isDeleted","throwForLegacyDependenciesInsideHarmony","throwForComponentIssues","throwForPendingImport","throwForMissingObjects","depsFromModel","componentFromModel","getAllDependencies","depsFromModelIds","d","isPrevVersionFromCurrentHistoryP","isPrevVersionFromCurrentHistory","isPartOfCurrentHistory","isExported","hasVersion","isTag","has","isPartOfHistory","isPartOfLaneHistoryOrMain","isPartOfMainHistory","VersionNotFound","ComponentNotFound","HeadNotFound","ParentNotFound","laneOrMainStr","graph","Graph","addEdges","label","setNode","Node","setEdge","Edge","devDependencies","extensionDependencies","allFlattened","flattenedDependencies","allFlattenedUniq","allFlattenedWithoutCurrent","componentsAndVersions","getComponentsAndVersions","versionStr","someCompsHaveMissingFlattened","edges","outEdges","flattenedEdges","allEdges","edgesWithBitIds","edge","source","node","attr","target","flattened","flattenedFromEdges","missingFlattened","difference","warn","join","missingBitIds","_updateComponentsByTagResult","tagResult","result","matchingComponent","existingBuilder","findCoreExtension","Extensions","builderData","_getPublishedPackages","Map","builderExt","pkgData","aspectsData","a","aspectId","pkg","publishedPackage","set","integrity","previouslyUsedVersion","_addCompToObjects","shouldValidateVersion","addVersionOpts","batchId","addedVersionStr","_addCompFromScopeToObjects","unmergedComponent","unmergedComponents","getEntry","unrelated","hash","unrelatedHead","setUnrelated","addAsOnlyParent","unrelatedLaneId","headOnCurrentLane","shouldSquash","previousParents","parents","squashLog","getLogForSquash","setSquashed","log","UnmergedComponents","buildSnapMessage","addParent","removeComponent","validate","objectRepo","sources","findOrAddComponent","artifactFiles","getArtifactsFiles","artifacts","transformArtifactsFromVinylToSource","dependenciesGraph","consumerComponentToVersion","origin","defaultScope","isFeatureEnabled","FLATTENED_DEPS_IN_SOURCE","moveFlattenedDependenciesToSource","addVersion","file","enrichComp","modifiedLog","getObjectsToEnrichComp","obj","setBuildStatus","buildStatus","modelComp","loadVersion","addModifiedLog","artifactObjects","Version","dependenciesGraphToSource","dependenciesGraphRef","artifactsFiles","artifactsSource","ArtifactFiles","fromVinylsToSources","vinyls","populateRefsFromSources","shouldClearCacheFirst","idsWithoutVersions","appIds","loadAllAppsAsAspects","componentFsCache","deleteAllDependenciesDataCache","clearAllComponentsCache","clearComponentCache","getMany","componentsMissingFromScope","ComponentsPendingImport","throwForComponent","dependenciesIds","getAllDependenciesIds","depId","getModelComponentIfExist","isLegacy","pMap","concurrency","concurrentComponentsLimit","getCompIdWithExactVersionAccordingToSemver","isHash","range","getExactVersionBySemverRange","currentFiles","filesystem","delete","found","f","relative","fs","removeSync","index","findIndex","splice","currentFile","contents","Buffer","content","SourceFile","base","test","updateDependenciesVersionsOfComponent","currentBitIds","updatedIds","componentIdStr","legacyComponent","dependenciesList","getDependencies","updatedBitId","depIdStr","packageName","findDependency","getPackageName","UpdateDepsAspectsSaveIntoDepsResolver","toStringArray","extId","extensionId","startsWith","updatedExtId","newExtensionId","dependenciesListSerialized","extractDepsFromLegacy","serialize","DependencyResolverAspect","existingExtension","config","assign","extension","ExtensionDataEntry","rootId","findWorkspaceRootMap","status","getComponentStatusById","newlyCreated","modified","includeUnmodified","listTagPendingIds","localOnlyIds","byLocalOnly","localOnlyListIds","softTaggedComponents","snappedComponentsIds","bySnappedOnMain","tagPendingBitIdsIncludeSnapped","idWithoutVer","split","idIsPattern","isPattern","tagPendingComponentsLatest","latestVersions","semver","valid","gt","provider","cli","loggerMain","configStore","createLogger","SnappingAspect","snapping","snapCmd","SnapCmd","tagCmd","TagCmd","resetCmd","ResetCmd","snapDistanceCmd","SnapDistanceCmd","exports","Slot","withType","WorkspaceAspect","CLIAspect","LoggerAspect","ScopeAspect","ExportAspect","BuilderAspect","ImporterAspect","ConfigStoreAspect","DependenciesAspect","ApplicationAspect","RemoveAspect","MainRuntime","addRuntime","_default"],"sources":["snapping.main.runtime.ts"],"sourcesContent":["import type { CLIMain } from '@teambit/cli';\nimport { MainRuntime } from '@teambit/harmony.modules.runtimes';\nimport { CLIAspect } from '@teambit/cli';\nimport { Graph, Node, Edge } from '@teambit/graph.cleargraph';\nimport fs from 'fs-extra';\nimport {\n UnmergedComponents,\n VersionNotFound,\n ComponentNotFound,\n HeadNotFound,\n ParentNotFound,\n} from '@teambit/legacy.scope';\nimport { FlattenedDependenciesGetter } from './get-flattened-dependencies';\nimport type { Workspace, AutoTagResult } from '@teambit/workspace';\nimport { WorkspaceAspect, OutsideWorkspaceError } from '@teambit/workspace';\nimport type { ReleaseType } from 'semver';\nimport semver from 'semver';\nimport { compact, difference, uniq } from 'lodash';\nimport { ComponentID, ComponentIdList } from '@teambit/component-id';\nimport { findWorkspaceRootMap } from '@teambit/workspace-root';\nimport type { BuildStatus } from '@teambit/legacy.constants';\nimport { Extensions, LATEST } from '@teambit/legacy.constants';\nimport type { Consumer } from '@teambit/legacy.consumer';\nimport { ComponentsPendingImport } from '@teambit/legacy.consumer';\nimport { ComponentsList } from '@teambit/legacy.component-list';\nimport pMapSeries from 'p-map-series';\nimport type { Logger, LoggerMain } from '@teambit/logger';\nimport { LoggerAspect } from '@teambit/logger';\nimport { BitError } from '@teambit/bit-error';\nimport pMap from 'p-map';\nimport { validateVersion } from '@teambit/pkg.modules.semver-helper';\nimport { concurrentComponentsLimit } from '@teambit/harmony.modules.concurrency';\nimport { getLogForSquash } from '@teambit/harmony.modules.get-basic-log';\nimport { FLATTENED_DEPS_IN_SOURCE, isFeatureEnabled } from '@teambit/harmony.modules.feature-toggle';\nimport type { ConfigStoreMain } from '@teambit/config-store';\nimport { ConfigStoreAspect } from '@teambit/config-store';\nimport type { ScopeMain } from '@teambit/scope';\nimport { ScopeAspect } from '@teambit/scope';\nimport type { Repository, Lane, ModelComponent, DepEdge, DepEdgeType, Log, AddVersionOpts } from '@teambit/objects';\nimport { BitObject, Ref, Version } from '@teambit/objects';\nimport type { Component, ConsumerComponent } from '@teambit/component';\nimport type { DependencyResolverMain, VariantPolicyConfigArr } from '@teambit/dependency-resolver';\nimport { DependencyResolverAspect } from '@teambit/dependency-resolver';\nimport { ExtensionDataEntry, ExtensionDataList } from '@teambit/legacy.extension-data';\nimport type { BuilderMain, LegacyOnTagResult } from '@teambit/builder';\nimport { BuilderAspect } from '@teambit/builder';\nimport { LaneId } from '@teambit/lane-id';\nimport type { ImporterMain } from '@teambit/importer';\nimport { ImporterAspect } from '@teambit/importer';\nimport type { ExportMain } from '@teambit/export';\nimport { ExportAspect } from '@teambit/export';\nimport { isHash, isTag } from '@teambit/component-version';\nimport type { ArtifactSource } from '@teambit/component.sources';\nimport { ArtifactFiles, getArtifactsFiles, SourceFile } from '@teambit/component.sources';\nimport type { DependenciesMain } from '@teambit/dependencies';\nimport { DependenciesAspect } from '@teambit/dependencies';\nimport { SnapCmd } from './snap-cmd';\nimport { SnappingAspect } from './snapping.aspect';\nimport { TagCmd } from './tag-cmd';\nimport ResetCmd from './reset-cmd';\nimport type { NewDependencies } from './generate-comp-from-scope';\nimport { addDeps, generateCompFromScope } from './generate-comp-from-scope';\nimport { FlattenedEdgesGetter } from './flattened-edges';\nimport { SnapDistanceCmd } from './snap-distance-cmd';\nimport type { ResetResult } from './reset-component';\nimport {\n removeLocalVersionsForAllComponents,\n getComponentsWithOptionToUntag,\n removeLocalVersionsForMultipleComponents,\n} from './reset-component';\nimport type { ApplicationMain } from '@teambit/application';\nimport { ApplicationAspect } from '@teambit/application';\nimport { LaneNotFound } from '@teambit/legacy.scope-api';\nimport { createLaneInScope } from '@teambit/lanes.modules.create-lane';\nimport type { RemoveMain } from '@teambit/remove';\nimport { RemoveAspect } from '@teambit/remove';\nimport type { BasicTagParams, BasicTagSnapParams, VersionMakerParams } from './version-maker';\nimport { VersionMaker, updateVersions } from './version-maker';\nimport type { SlotRegistry } from '@teambit/harmony';\nimport { Slot } from '@teambit/harmony';\n\nexport type PackageIntegritiesByPublishedPackages = Map<\n string,\n {\n integrity: string | undefined;\n previouslyUsedVersion: string | undefined;\n }\n>;\n\nexport type TagDataPerComp = {\n componentId: ComponentID;\n dependencies: ComponentID[];\n versionToTag?: string; // must be set for tag. undefined for snap.\n prereleaseId?: string;\n message?: string;\n isNew?: boolean;\n};\n\nexport type SnapDataParsed = {\n componentId: ComponentID;\n dependencies: string[];\n aspects?: Record<string, any>;\n message?: string;\n files?: FileData[];\n isNew?: boolean;\n newDependencies?: {\n id: string; // component-id or package-name.\n version?: string; // for packages, it is mandatory.\n isComponent: boolean;\n type: 'runtime' | 'dev' | 'peer';\n }[];\n removeDependencies?: string[];\n forkFrom?: ComponentID;\n};\n\nexport type SnapResults = BasicTagResults & {\n snappedComponents: ConsumerComponent[];\n autoSnappedResults: AutoTagResult[];\n laneName: string | null; // null if default\n};\n\nexport type SnapFromScopeResults = {\n snappedIds: ComponentID[];\n exportedIds?: ComponentID[];\n autoSnappedResults: AutoTagResult[];\n snappedComponents: ConsumerComponent[];\n};\n\nexport type TagResults = BasicTagResults & {\n taggedComponents: ConsumerComponent[];\n autoTaggedResults: AutoTagResult[];\n isSoftTag: boolean;\n publishedPackages: string[];\n exportedIds?: ComponentIdList; // relevant only for tag-from-scope when --push is used\n};\n\nexport type BasicTagResults = {\n warnings: string[];\n newComponents: ComponentIdList;\n removedComponents?: ComponentIdList;\n totalComponentsCount?: number; // total count of all components tagged/snapped (including auto-tagged)\n /**\n * the workspace-root component that joined the batch because it was new or modified, at its new\n * version. see getWorkspaceRootToTagAlong.\n */\n autoAddedWorkspaceRoot?: ComponentID;\n};\n\nexport type FileData = { path: string; content: string; delete?: boolean };\n\nexport type SnapDataPerCompRaw = {\n componentId: string;\n dependencies?: string[];\n aspects?: Record<string, any>;\n message?: string;\n files?: FileData[];\n isNew?: boolean;\n mainFile?: string; // relevant when isNew is true. default to \"index.ts\".\n newDependencies?: NewDependencies;\n removeDependencies?: string[];\n forkFrom?: string; // origin id to fork from. the componentId is the new id. (no need to populate isNew prop).\n version?: string; // relevant when passing \"--tag\". optionally, specify the semver to tag. default to \"patch\".\n};\n\nexport type OnPreSnap = (\n componentsToSnap: Component[],\n idsToAutoSnap: ComponentID[],\n params: VersionMakerParams\n) => Promise<void>;\n\nexport type OnPreSnapSlot = SlotRegistry<OnPreSnap>;\n\nexport class SnappingMain {\n private objectsRepo: Repository;\n constructor(\n readonly workspace: Workspace,\n readonly logger: Logger,\n readonly dependencyResolver: DependencyResolverMain,\n readonly scope: ScopeMain,\n private exporter: ExportMain,\n readonly builder: BuilderMain,\n private importer: ImporterMain,\n private deps: DependenciesMain,\n private application: ApplicationMain,\n private remove: RemoveMain,\n readonly onPreSnapSlot: OnPreSnapSlot\n ) {\n this.objectsRepo = this.scope?.legacyScope?.objects;\n }\n\n registerOnPreSnap(onPreSnap: OnPreSnap) {\n this.onPreSnapSlot.register(onPreSnap);\n }\n\n /**\n * tag the given component ids or all modified/new components if \"all\" param is set.\n * tag is a similar operation as a snap, which saves the changes into the local scope, but it also creates an alias\n * with a valid semver to that version.\n * tag can be done only on main, not on a lane.\n */\n // eslint-disable-next-line complexity\n async tag({\n ids = [],\n message = '',\n version,\n editor = '',\n versionsFile,\n snapped = false,\n unmerged = false,\n releaseType,\n autoTagReleaseType,\n preReleaseId,\n ignoreIssues,\n ignoreNewestVersion = false,\n skipTests = false,\n skipTasks,\n skipAutoTag = false,\n build,\n unmodified = false,\n soft = false,\n persist = false,\n ignoreBuildErrors = false,\n rebuildDepsGraph,\n noLockDeps = false,\n incrementBy = 1,\n skipPublishedVersions = false,\n disableTagAndSnapPipelines = false,\n failFast = false,\n detachHead,\n overrideHead,\n loose = false,\n }: {\n ids?: string[];\n all?: boolean | string;\n snapped?: boolean;\n unmerged?: boolean;\n version?: string;\n releaseType?: ReleaseType;\n autoTagReleaseType?: ReleaseType;\n ignoreIssues?: string;\n scope?: string | boolean;\n incrementBy?: number;\n failFast?: boolean;\n } & Partial<BasicTagParams>): Promise<TagResults | null> {\n if (soft) build = false;\n if (editor && persist) {\n throw new BitError('you can use either --editor or --persist, but not both');\n }\n if (editor && message) {\n throw new BitError('you can use either --editor or --message, but not both');\n }\n ignoreNewestVersion = Boolean(ignoreNewestVersion || detachHead || overrideHead);\n\n const exactVersion = version;\n if (!this.workspace) throw new OutsideWorkspaceError();\n const validExactVersion = validateVersion(exactVersion);\n const consumer = this.workspace.consumer;\n const componentsList = new ComponentsList(this.workspace);\n this.logger.setStatusLine('determine components to tag...');\n const newComponents = await componentsList.listNewComponents();\n const { bitIds, warnings } = await this.getComponentsToTag(\n unmodified,\n exactVersion,\n persist,\n ids,\n snapped,\n unmerged\n );\n if (!bitIds.length) return null;\n\n const compIds = ComponentIdList.fromArray(bitIds);\n // --persist tags what the soft-tag recorded, and the soft-tag has already brought the root along\n const autoAddedWorkspaceRoot = persist ? undefined : await this.getWorkspaceRootToTagAlong(compIds);\n const idsToTag = autoAddedWorkspaceRoot ? ComponentIdList.fromArray([...compIds, autoAddedWorkspaceRoot]) : compIds;\n\n this.logger.debug(`tagging the following components: ${idsToTag.toString()}`);\n const components = await this.loadComponentsForTagOrSnap(idsToTag, !soft);\n await this.throwForVariousIssues(components, ignoreIssues);\n\n const params = {\n message,\n editor,\n versionsFile,\n exactVersion: validExactVersion,\n releaseType,\n autoTagReleaseType,\n preReleaseId,\n ignoreNewestVersion,\n skipTests,\n skipTasks,\n skipAutoTag,\n soft,\n build,\n persist,\n disableTagAndSnapPipelines,\n ignoreBuildErrors,\n rebuildDepsGraph,\n noLockDeps,\n incrementBy,\n skipPublishedVersions,\n packageManagerConfigRootDir: this.workspace.path,\n exitOnFirstFailedTask: failFast,\n detachHead,\n overrideHead,\n loose,\n ignoreIssues,\n autoAddedWorkspaceRoot,\n };\n const {\n taggedComponents,\n autoTaggedResults,\n publishedPackages,\n stagedConfig,\n removedComponents,\n totalComponentsCount,\n } = await this.makeVersion(idsToTag, components, params);\n\n const tagResults = {\n taggedComponents,\n autoTaggedResults,\n isSoftTag: soft,\n publishedPackages,\n warnings,\n newComponents,\n removedComponents,\n totalComponentsCount,\n autoAddedWorkspaceRoot: findVersioned(taggedComponents, autoAddedWorkspaceRoot),\n };\n\n await consumer.onDestroy(`tag (message: ${message || 'N/A'})`);\n await stagedConfig?.write();\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return tagResults;\n }\n\n async makeVersion(ids: ComponentID[], components: Component[], params: VersionMakerParams) {\n const consumerComponents = components.map((c) => c.state._consumer) as ConsumerComponent[];\n const componentIds = ComponentIdList.fromArray(ids);\n const versionMaker = new VersionMaker(this, components, consumerComponents, componentIds, params);\n return versionMaker.makeVersion();\n }\n\n private async addAspectsFromConfigObject(\n component: Component,\n configObject?: Record<string, any>\n ): Promise<VariantPolicyConfigArr | undefined> {\n if (!configObject) return;\n ExtensionDataList.adjustEnvsOnConfigObject(configObject);\n const extensionsFromConfigObject = ExtensionDataList.fromConfigObject(configObject);\n const consumerComponent: ConsumerComponent = component.state._consumer;\n\n const extensionDataList = ExtensionDataList.mergeConfigs([\n extensionsFromConfigObject,\n consumerComponent.extensions,\n ]).filterRemovedExtensions();\n\n // Restore data fields from the original extensions after merging configs.\n // configObject contains only config (from the merged config result), it has no data.\n // When merging configs, if an extension exists in both lists, the first one (extensionsFromConfigObject) wins.\n // This means the merged entry gets the new config but loses the data from the original extension.\n // We need to restore the data fields from the original extensions so components that skip aspect loading\n // (PR #9570 optimization) still have their data. For example, DependencyResolver has data fields like\n // packageName, dependencies, policy, componentRangePrefix. Note: it's OK to restore the \"dependencies\" field\n // from the original component because it will be rewritten later by addDeps() with the calculated policy.\n extensionDataList.forEach((ext) => {\n const originalExt = consumerComponent.extensions.findExtension(ext.stringId, true);\n if (originalExt && originalExt.data) {\n ext.data = originalExt.data;\n }\n });\n\n consumerComponent.extensions = extensionDataList;\n component.state.aspects = await this.scope.createAspectListFromExtensionDataList(extensionDataList);\n\n const autoDeps = extensionsFromConfigObject.extractAutoDepsFromConfig();\n return autoDeps;\n }\n\n async snapFromScope(\n snapDataPerCompRaw: SnapDataPerCompRaw[],\n params: {\n push?: boolean;\n ignoreIssues?: string;\n lane?: string;\n updateDependents?: boolean;\n tag?: boolean;\n // in case of merging lanes, the component files are updated in-memory\n updatedLegacyComponents?: ConsumerComponent[];\n loadAspectOnlyForIds?: ComponentIdList; // if undefined, load aspects for all components\n } & Partial<BasicTagParams>\n ): Promise<SnapFromScopeResults> {\n if (this.workspace) {\n throw new BitError(\n `unable to run this command from a workspace, please create a new bare-scope and run it from there`\n );\n }\n let lane: Lane | undefined;\n const laneIdStr = params.lane;\n if (laneIdStr) {\n const laneId = LaneId.parse(laneIdStr);\n try {\n lane = await this.importer.importLaneObject(laneId);\n } catch (err: any) {\n if (err.constructor.name !== LaneNotFound.name) throw err;\n // if the lane is not found, it's probably because it's new. create a new lane.\n lane = await createLaneInScope(laneId.name, this.scope, laneId.scope);\n // it's important to set the lane as new in scope.json. otherwise, later, when importing and the lane is loaded\n // from the filesystem, it looses the \"isNew: true\", and then it tries to fetch the lane from the remote scope.\n // which fails with the importer.\n this.scope.legacyScope.scopeJson.setLaneAsNew(laneId.name);\n }\n // this is critical. otherwise, later on, when loading aspects and isolating capsules, we'll try to fetch dists\n // from the original scope instead of the lane-scope.\n this.scope.legacyScope.setCurrentLaneId(laneId);\n this.scope.legacyScope.scopeImporter.shouldOnlyFetchFromCurrentLane = true;\n }\n const laneCompIds = lane?.toComponentIdsIncludeUpdateDependents();\n const snapDataPerComp = snapDataPerCompRaw.map((snapData) => {\n return {\n componentId: ComponentID.fromString(snapData.componentId),\n dependencies: snapData.dependencies || [],\n aspects: snapData.aspects,\n message: snapData.message,\n files: snapData.files,\n isNew: snapData.isNew,\n mainFile: snapData.mainFile,\n newDependencies: (snapData.newDependencies || []).map((dep) => ({\n id: dep.id,\n version: dep.version,\n isComponent: dep.isComponent ?? true,\n type: dep.type ?? 'runtime',\n })),\n removeDependencies: snapData.removeDependencies,\n version: snapData.version,\n };\n });\n\n // console.log('snapDataPerComp', JSON.stringify(snapDataPerComp, undefined, 2));\n\n const componentIds = compact(snapDataPerComp.map((t) => (t.isNew ? null : t.componentId)));\n const allCompIds = snapDataPerComp.map((s) => s.componentId);\n const componentIdsLatest = componentIds.map((id) => id.changeVersion(LATEST));\n const newCompsData = compact(snapDataPerComp.map((t) => (t.isNew ? t : null)));\n const newComponents = await Promise.all(\n newCompsData.map((newComp) => generateCompFromScope(this.scope, this.dependencyResolver, newComp, this))\n );\n\n await this.scope.import(componentIdsLatest, {\n preferDependencyGraph: false,\n lane,\n reason: `seeders to snap`,\n });\n const getSnapData = (id: ComponentID): SnapDataParsed => {\n const snapData = snapDataPerComp.find((t) => {\n return t.componentId.isEqual(id, { ignoreVersion: true });\n });\n if (!snapData) throw new Error(`unable to find ${id.toString()} in snapDataPerComp`);\n return snapData;\n };\n const updatedLegacyComponents = params.updatedLegacyComponents || [];\n const updatedComponents = await this.scope.getManyByLegacy(updatedLegacyComponents);\n\n const existingComponents = compact(\n await pMapSeries(componentIdsLatest, async (id) => {\n const foundInUpdated = updatedComponents.find((c) => c.id.isEqualWithoutVersion(id));\n return foundInUpdated || this.scope.get(id);\n })\n );\n // in case of update-dependents, align the dependencies of the dependents according to the lane\n if (params.updateDependents && laneCompIds) {\n existingComponents.forEach((comp) => {\n const deps = this.dependencyResolver.getComponentDependencies(comp);\n const snapData = getSnapData(comp.id);\n deps.forEach((dep) => {\n const fromLane = laneCompIds.searchWithoutVersion(dep.componentId);\n if (fromLane) {\n snapData.dependencies.push(fromLane.toString());\n }\n });\n });\n // When merging lanes, if a component being snapped has dependencies on components that were simply updated\n // (non-diverged), those dependencies still point to the old lane versions. We need to update them to point\n // to the newly merged versions. Also convert hashes to tags when available.\n } else if (!params.updateDependents && updatedComponents.length) {\n existingComponents.forEach((comp) => {\n const deps = this.dependencyResolver.getComponentDependencies(comp);\n const snapData = getSnapData(comp.id);\n deps.forEach((dep) => {\n const mergedComp = updatedComponents.find((c) => c.id.isEqualWithoutVersion(dep.componentId));\n if (mergedComp) {\n // Convert hash to tag if available\n const tag = mergedComp.tags.byHash(mergedComp.id.version);\n const versionToUse = tag?.version.raw || mergedComp.id.version;\n snapData.dependencies.push(`${mergedComp.id.toStringWithoutVersion()}@${versionToUse}`);\n }\n });\n });\n }\n\n const components = [...existingComponents, ...newComponents];\n\n // this must be done before we load component aspects later on, because this updated deps may update aspects.\n await pMapSeries(components, async (component) => {\n const snapData = getSnapData(component.id);\n const autoDeps = await this.addAspectsFromConfigObject(component, snapData.aspects);\n // adds explicitly defined dependencies and dependencies from envs/aspects (overrides)\n await addDeps(component, snapData, this.scope, this.deps, this.dependencyResolver, this, autoDeps);\n });\n\n // for new components these are not needed. coz when generating them we already add the aspects and the files.\n await Promise.all(\n existingComponents.map(async (comp) => {\n const snapData = getSnapData(comp.id);\n if (snapData.files?.length) {\n await this.updateSourceFiles(comp, snapData.files);\n }\n })\n );\n\n // load the aspects user configured to set on the components. it creates capsules if needed.\n // otherwise, when a user set a custom-env, it won't be loaded and the Version object will leave the\n // teambit.envs/envs in a weird state. the config will be set correctly but the data will be set to the default\n // node env.\n // OPTIMIZATION: loadAspectOnlyForIds is used to skip aspect loading for components without data conflicts.\n // This was added in PR #9570 to improve performance during merge-from-scope operations.\n // When merging main into a lane, if aspects data can be successfully merged (no conflicts), we skip the\n // expensive aspect loading process. Only components with data conflicts need full aspect loading.\n // NOTE: This means executeOnCompAspectReCalcSlot (which recalculates aspect data like packageName, dependencies, etc.)\n // only runs for components in loadAspectOnlyForIds. Components not in this list rely on their existing aspect data\n // from when the component was loaded from the scope. For extensions that are part of the merged config, their data\n // is preserved by addAspectsFromConfigObject to prevent data loss during config merge.\n const { loadAspectOnlyForIds } = params;\n const compsToLoadAspects = loadAspectOnlyForIds\n ? components.filter((c) => loadAspectOnlyForIds.hasWithoutVersion(c.id))\n : components;\n\n await this.scope.loadManyCompsAspects(compsToLoadAspects);\n\n // this is similar to what happens in the workspace. the \"onLoad\" is running and populating the \"data\" of the aspects.\n await pMapSeries(compsToLoadAspects, async (comp) => this.scope.executeOnCompAspectReCalcSlot(comp));\n\n const ids = ComponentIdList.fromArray(allCompIds);\n const shouldTag = Boolean(params.tag);\n const makeVersionParams = {\n ...params,\n tagDataPerComp: snapDataPerComp.map((s) => ({\n componentId: s.componentId,\n message: s.message,\n dependencies: [],\n versionToTag: shouldTag ? s.version || 'patch' : undefined,\n })),\n persist: true,\n isSnap: !shouldTag,\n message: params.message as string,\n updateDependentsOnLane: params.updateDependents,\n };\n const results = await this.makeVersion(ids, components, makeVersionParams);\n\n const { taggedComponents } = results;\n let exportedIds: ComponentIdList | undefined;\n if (params.push) {\n const updatedLane = lane ? await this.scope.legacyScope.loadLane(lane.toLaneId()) : undefined;\n // include auto-tagged ids in the export set. For the bare-scope reverse cascade\n // (`snapFromScope({ updateDependents: true })`), `getLaneAutoTagIdsFromScope` re-snaps\n // lane.components that depend on the new hidden entry, and those new snaps must be pushed\n // alongside the explicit target.\n const autoTaggedIds = (results.autoTaggedResults || []).map((r) => r.component.id);\n const idsToExport = ComponentIdList.uniqFromArray([...ids, ...autoTaggedIds]);\n const { exported } = await this.exporter.pushToScopes({\n scope: this.scope.legacyScope,\n ids: idsToExport,\n allVersions: false,\n laneObject: updatedLane,\n // no need other snaps. only the latest one. without this option, when snapping on lane from another-scope, it\n // may throw an error saying the previous snaps don't exist on the filesystem.\n // (see the e2e - \"snap on a lane when the component is new to the lane and the scope\")\n exportHeadsOnly: true,\n });\n exportedIds = exported;\n }\n\n return {\n snappedComponents: taggedComponents,\n snappedIds: taggedComponents.map((comp) => comp.id),\n autoSnappedResults: results.autoTaggedResults,\n exportedIds,\n };\n }\n\n /**\n * save the local changes of a component(s) into the scope. snap can be done on main or on a lane.\n * once a component is snapped on a lane, it becomes part of it.\n */\n async snap({\n pattern,\n legacyBitIds, // @todo: change to ComponentID[]. pass only if have the ids already parsed.\n unmerged,\n editor,\n message = '',\n ignoreIssues,\n skipTests = false,\n skipTasks,\n skipAutoSnap = false,\n build,\n disableTagAndSnapPipelines = false,\n ignoreBuildErrors = false,\n rebuildDepsGraph,\n noLockDeps = false,\n unmodified = false,\n exitOnFirstFailedTask = false,\n detachHead,\n loose = false,\n }: Partial<BasicTagSnapParams> & {\n pattern?: string;\n legacyBitIds?: ComponentIdList;\n unmerged?: boolean;\n editor?: string;\n ignoreIssues?: string;\n skipAutoSnap?: boolean;\n disableTagAndSnapPipelines?: boolean;\n unmodified?: boolean;\n exitOnFirstFailedTask?: boolean;\n }): Promise<SnapResults | null> {\n if (!this.workspace) throw new OutsideWorkspaceError();\n if (pattern && legacyBitIds) throw new Error(`please pass either pattern or legacyBitIds, not both`);\n const consumer: Consumer = this.workspace.consumer;\n const componentsList = new ComponentsList(this.workspace);\n const newComponents = (await componentsList.listNewComponents()) as ComponentIdList;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n const ids = legacyBitIds || (await getIdsToSnap());\n if (!ids) return null;\n const autoAddedWorkspaceRoot = await this.getWorkspaceRootToTagAlong(ids);\n const idsToSnap = autoAddedWorkspaceRoot ? ComponentIdList.fromArray([...ids, autoAddedWorkspaceRoot]) : ids;\n this.logger.debug(`snapping the following components: ${idsToSnap.toString()}`);\n const components = await this.loadComponentsForTagOrSnap(idsToSnap);\n await this.throwForVariousIssues(components, ignoreIssues);\n const makeVersionParams = {\n editor,\n ignoreNewestVersion: false,\n message,\n skipTests,\n skipTasks,\n skipAutoTag: skipAutoSnap,\n persist: true,\n soft: false,\n build,\n isSnap: true,\n disableTagAndSnapPipelines,\n ignoreBuildErrors,\n rebuildDepsGraph,\n noLockDeps,\n packageManagerConfigRootDir: this.workspace.path,\n exitOnFirstFailedTask,\n detachHead,\n loose,\n ignoreIssues,\n autoAddedWorkspaceRoot,\n };\n const { taggedComponents, autoTaggedResults, stagedConfig, removedComponents, totalComponentsCount } =\n await this.makeVersion(idsToSnap, components, makeVersionParams);\n\n const snapResults: Partial<SnapResults> = {\n snappedComponents: taggedComponents,\n autoSnappedResults: autoTaggedResults,\n newComponents,\n removedComponents,\n totalComponentsCount,\n autoAddedWorkspaceRoot: findVersioned(taggedComponents, autoAddedWorkspaceRoot),\n };\n\n const currentLane = consumer.getCurrentLaneId();\n snapResults.laneName = currentLane.isDefault() ? null : currentLane.toString();\n await consumer.onDestroy(`snap (message: ${message || 'N/A'})`);\n await stagedConfig?.write();\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return snapResults;\n\n async function getIdsToSnap(): Promise<ComponentIdList | null> {\n if (unmerged) {\n return componentsList.listDuringMergeStateComponents();\n }\n const tagPendingComponentsIds = await self.getTagPendingComponentsIds(unmodified);\n if (!tagPendingComponentsIds.length) return null;\n // when unmodified, we ask for all components, throw if no matching. if not unmodified and no matching, see error\n // below, suggesting to use --unmodified flag.\n const shouldThrowForNoMatching = unmodified;\n const getCompIds = async () => {\n if (!pattern) return tagPendingComponentsIds;\n if (!pattern.includes('*') && !pattern.includes(',')) {\n const compId = await self.workspace.resolveComponentId(pattern);\n return [compId];\n }\n return self.workspace.filterIdsFromPoolIdsByPattern(pattern, tagPendingComponentsIds, shouldThrowForNoMatching);\n };\n const componentIds = await getCompIds();\n if (!componentIds.length && pattern) {\n const allTagPending = await self.workspace.listPotentialTagIds();\n if (allTagPending.length) {\n throw new BitError(`unable to find matching for \"${pattern}\" pattern among modified/new components.\nthere are matching among unmodified components though. consider using --unmodified flag if needed.\nin case you're unsure about the pattern syntax, use \"bit pattern [--help]\"`);\n }\n }\n if (!componentIds.length) {\n return null;\n }\n return ComponentIdList.fromArray(componentIds);\n }\n }\n\n /**\n * Workspace-side merge snap. Routes both visible workspace components AND hidden lane\n * lane.updateDependents through the same `makeVersion` pipeline that\n * `snap`/`snapFromScope` use, so cascade snaps get fresh log/buildStatus/flattenedDependencies/\n * lane-history/stagedSnaps just like every other snap.\n *\n * Visible: workspace.getMany picks up files written to disk by `applyVersion`.\n * Hidden: applyVersion's in-memory merged ConsumerComponents are passed in directly — they\n * have no bitmap entry, so they can't go through `loadComponentsForTagOrSnap`.\n *\n * version-maker's `isHiddenLaneEntry` detection (workspace-flow: not-in-bitmap) routes the\n * hidden ones to the right branches (no bitmap update, stagedSnaps tracking,\n * `addToUpdateDependentsInLane`).\n */\n async snapForMerge({\n visibleIds,\n hiddenLegacyComponents,\n message,\n build,\n loose,\n }: {\n visibleIds: ComponentIdList;\n hiddenLegacyComponents: ConsumerComponent[];\n message?: string;\n build?: boolean;\n loose?: boolean;\n }): Promise<{\n snappedComponents: ConsumerComponent[];\n autoSnappedResults: AutoTagResult[];\n removedComponents?: ComponentIdList;\n } | null> {\n if (!this.workspace) throw new OutsideWorkspaceError();\n if (!visibleIds.length && !hiddenLegacyComponents.length) return null;\n\n this.logger.debug(`snapForMerge, visible: ${visibleIds.length}, hidden: ${hiddenLegacyComponents.length}`);\n // a merge snap is a snap: a new or modified root joins it the way it joins tag and snap, so the\n // members snapped here record the root version their files were merged with, rather than the one\n // the root was last snapped at (see getWorkspaceRootToTagAlong). only the visible ids can take\n // it - a hidden entry is scope-only, with no workspace state to snap the root against and no\n // record of it to make right, so a merge of nothing else leaves the root where it is. the root\n // was snapped as a result of the merge, so it is reported in that section like the rest.\n const autoAddedWorkspaceRoot = visibleIds.length ? await this.getWorkspaceRootToTagAlong(visibleIds) : undefined;\n const visibleIdsToSnap = autoAddedWorkspaceRoot\n ? ComponentIdList.fromArray([...visibleIds, autoAddedWorkspaceRoot])\n : visibleIds;\n const visibleHarmony = visibleIdsToSnap.length ? await this.loadComponentsForTagOrSnap(visibleIdsToSnap) : [];\n const hiddenHarmony = hiddenLegacyComponents.length ? await this.scope.getManyByLegacy(hiddenLegacyComponents) : [];\n // issue checks are workspace-source-tree concerns — hidden entries are scope-only\n if (visibleHarmony.length) await this.throwForVariousIssues(visibleHarmony);\n\n const hiddenIds = ComponentIdList.fromArray(hiddenLegacyComponents.map((c) => c.componentId));\n const allIds = ComponentIdList.uniqFromArray([...visibleIdsToSnap, ...hiddenIds]);\n const allComponents = [...visibleHarmony, ...hiddenHarmony];\n\n const makeVersionParams = {\n ignoreNewestVersion: false,\n message: message || '',\n skipTests: false,\n skipAutoTag: false,\n persist: true,\n soft: false,\n build,\n isSnap: true,\n packageManagerConfigRootDir: this.workspace.path,\n loose,\n autoAddedWorkspaceRoot,\n };\n\n const { taggedComponents, autoTaggedResults, stagedConfig, removedComponents } = await this.makeVersion(\n allIds,\n allComponents,\n makeVersionParams\n );\n\n await this.workspace.consumer.onDestroy(`merge-snap (message: ${message || 'N/A'})`);\n await stagedConfig?.write();\n\n return {\n snappedComponents: taggedComponents,\n autoSnappedResults: autoTaggedResults,\n removedComponents,\n };\n }\n\n /**\n * remove tags/snaps that exist locally, which were not exported yet.\n * once a tag/snap is exported, it's impossible to delete it as other components may depend on it\n */\n async reset(\n componentPattern?: string,\n head?: boolean,\n force = false,\n soft = false\n ): Promise<{ results: ResetResult[]; isSoftUntag: boolean }> {\n if (!this.workspace) throw new OutsideWorkspaceError();\n const consumer = this.workspace.consumer;\n const currentLane = await consumer.getCurrentLaneObject();\n const untag = async (): Promise<ResetResult[]> => {\n if (!componentPattern) {\n return removeLocalVersionsForAllComponents(this.workspace, this.remove, currentLane, head);\n }\n const candidateComponents = await getComponentsWithOptionToUntag(this.workspace, this.remove);\n const idsMatchingPattern = await this.workspace.idsByPattern(componentPattern, true, { includeDeleted: true });\n const idsMatchingPatternBitIds = ComponentIdList.fromArray(idsMatchingPattern);\n const componentsToUntag = candidateComponents.filter((modelComponent) =>\n idsMatchingPatternBitIds.hasWithoutVersion(modelComponent.toComponentId())\n );\n return removeLocalVersionsForMultipleComponents(consumer, componentsToUntag, currentLane, head, force);\n };\n const softUntag = async () => {\n const softTaggedComponentsIds = this.workspace.filter.bySoftTagged();\n const idsToRemoveSoftTags = componentPattern\n ? await this.workspace.filterIdsFromPoolIdsByPattern(componentPattern, softTaggedComponentsIds)\n : softTaggedComponentsIds;\n return compact(\n idsToRemoveSoftTags.map((componentId) => {\n const componentMap = consumer.bitMap.getComponent(componentId, { ignoreVersion: true });\n const removedVersion = componentMap.nextVersion?.version;\n if (!removedVersion) return null;\n componentMap.clearNextVersion();\n return { id: componentId, versions: [removedVersion] };\n })\n );\n };\n let results: ResetResult[];\n const isRealUntag = !soft;\n if (isRealUntag) {\n results = await untag();\n\n // Remove lane history entries that correspond to the reset snaps.\n // Each snap uses its batchId as the lane history key, so we can match them.\n if (currentLane) {\n const allBatchIds = uniq(results.flatMap((r) => r.batchIds || []));\n if (allBatchIds.length) {\n const laneHistory = await consumer.scope.lanes.getOrCreateLaneHistory(currentLane);\n laneHistory.removeHistoryEntries(allBatchIds);\n consumer.scope.objects.add(laneHistory);\n }\n }\n\n await consumer.scope.objects.persist();\n const currentLaneId = consumer.getCurrentLaneId();\n const stagedConfig = await this.workspace.scope.getStagedConfig();\n\n await pMapSeries(results, async ({ component, versionToSetInBitmap }) => {\n if (!component) return;\n // hidden lane entries (lane.updateDependents) are not in the workspace bitmap, so skip\n // bitmap updates for them. A soft-deleted (visible) entry is also absent from bitmap but\n // `updateVersions` knows how to restore it from stagedConfig.\n const compId = component.toComponentId();\n if (currentLane?.findUpdateDependent(compId)) return;\n await updateVersions(this.workspace, stagedConfig, currentLaneId, component, versionToSetInBitmap, false);\n });\n await this.workspace.scope.legacyScope.stagedSnaps.write();\n } else {\n results = await softUntag();\n consumer.bitMap.markAsChanged();\n }\n\n await consumer.onDestroy('reset');\n return { results, isSoftUntag: !isRealUntag };\n }\n\n async resetNeverExported(): Promise<ComponentID[]> {\n const notExported = this.workspace.consumer.getNotExportedIds();\n const hashes = notExported.map((id) => BitObject.makeHash(id.fullName));\n await this.scope.legacyScope.objects.deleteObjectsFromFS(hashes.map((h) => Ref.from(h)));\n notExported.map((id) => this.workspace.consumer.bitMap.updateComponentId(id.changeVersion(undefined)));\n await this.workspace.bitMap.write(`reset (never-exported)`);\n return notExported;\n }\n\n /**\n * used externally. don't make it private.\n */\n async _addFlattenedDependenciesToComponents(components: ConsumerComponent[], rebuildDepsGraph = false) {\n this.logger.setStatusLine('importing missing dependencies...');\n this.logger.profile('snap._addFlattenedDependenciesToComponents');\n const getLane = async () => {\n const lane = await this.scope.legacyScope.getCurrentLaneObject();\n if (!lane) return undefined;\n if (!lane.isNew) return lane;\n const forkedFrom = lane.forkedFrom;\n if (!forkedFrom) return undefined;\n return this.scope.legacyScope.loadLane(forkedFrom);\n };\n const lane = await getLane();\n\n if (rebuildDepsGraph) {\n const flattenedDependenciesGetter = new FlattenedDependenciesGetter(this.scope.legacyScope, components, lane);\n await flattenedDependenciesGetter.populateFlattenedDependencies();\n this.logger.clearStatusLine();\n await this._addFlattenedDepsGraphToComponents(components);\n return;\n }\n\n const flattenedEdgesGetter = new FlattenedEdgesGetter(this.scope, components, this.logger, lane);\n await flattenedEdgesGetter.buildGraph();\n\n components.forEach((component) => {\n flattenedEdgesGetter.populateFlattenedAndEdgesForComp(component);\n });\n this.logger.profile('snap._addFlattenedDependenciesToComponents');\n }\n\n async throwForDepsFromAnotherLane(components: ConsumerComponent[]) {\n const lane = await this.scope.legacyScope.getCurrentLaneObject();\n const allIds = ComponentIdList.fromArray(components.map((c) => c.id));\n const missingDeps = await pMapSeries(components, async (component) => {\n return this.throwForDepsFromAnotherLaneForComp(component, allIds, lane);\n });\n const flattenedMissingDeps = ComponentIdList.uniqFromArray(\n missingDeps.flat().map((id) => id.changeVersion(undefined))\n );\n if (!flattenedMissingDeps.length) return;\n // ignore the cache. even if the component exists locally, we still need its VersionHistory object\n // in order to traverse the history and determine whether it's part of the lane history.\n await this.scope.legacyScope.scopeImporter.importWithoutDeps(flattenedMissingDeps, {\n cache: false,\n ignoreMissingHead: true,\n includeVersionHistory: true,\n lane,\n reason: 'of latest with version-history to make sure there are no dependencies from another lane',\n });\n await pMapSeries(components, async (component) => {\n await this.throwForDepsFromAnotherLaneForComp(component, allIds, lane, true);\n });\n }\n\n async throwForVariousIssues(components: Component[], ignoreIssues?: string) {\n const componentsToCheck = components.filter((c) => !c.isDeleted());\n const consumerComponents = componentsToCheck.map((c) => c.state._consumer) as ConsumerComponent[];\n await this.throwForLegacyDependenciesInsideHarmony(consumerComponents);\n await this.builder.throwForComponentIssues(componentsToCheck, ignoreIssues);\n this.throwForPendingImport(consumerComponents);\n }\n\n private async throwForDepsFromAnotherLaneForComp(\n component: ConsumerComponent,\n allIds: ComponentIdList,\n lane?: Lane,\n throwForMissingObjects = false\n ) {\n const depsFromModel = component.componentFromModel?.getAllDependencies();\n const depsFromModelIds = depsFromModel\n ? ComponentIdList.fromArray(depsFromModel.map((d) => d.id))\n : new ComponentIdList();\n const deps = component.getAllDependencies();\n const missingDeps: ComponentID[] = [];\n // deps that were already in the previous version were validated when that version was snapped, but only in\n // the context of the lane it was snapped on. when the previous version is from another lane (e.g. the\n // .bitmap has versions of another lane), its deps must be validated again against the current lane.\n let isPrevVersionFromCurrentHistoryP: Promise<boolean> | undefined;\n const isPrevVersionFromCurrentHistory = () => {\n if (!isPrevVersionFromCurrentHistoryP) {\n isPrevVersionFromCurrentHistoryP = this.isPartOfCurrentHistory(component.componentFromModel!.id, lane);\n }\n return isPrevVersionFromCurrentHistoryP;\n };\n await Promise.all(\n deps.map(async (dep) => {\n if (!this.scope.isExported(dep.id) || !dep.id.hasVersion()) return;\n if (isTag(dep.id.version)) return;\n if (allIds.hasWithoutVersion(dep.id)) return; // it's tagged/snapped now.\n // this dep is not new, it was already snapped/tagged with it before.\n if (depsFromModelIds.has(dep.id) && (await isPrevVersionFromCurrentHistory())) return;\n let isPartOfHistory: boolean | undefined;\n try {\n isPartOfHistory = lane\n ? await this.scope.legacyScope.isPartOfLaneHistoryOrMain(dep.id, lane)\n : await this.scope.legacyScope.isPartOfMainHistory(dep.id);\n } catch (err) {\n if (throwForMissingObjects) throw err;\n if (\n err instanceof VersionNotFound ||\n err instanceof ComponentNotFound ||\n err instanceof HeadNotFound ||\n err instanceof ParentNotFound\n ) {\n missingDeps.push(dep.id);\n return;\n }\n throw err;\n }\n\n if (!isPartOfHistory) {\n if (!throwForMissingObjects) {\n // it's possible that the dependency wasn't imported recently and the head is stale.\n missingDeps.push(dep.id);\n return;\n }\n const laneOrMainStr = lane ? `current lane \"${lane.name}\"` : 'main';\n throw new Error(\n `unable to tag/snap ${component.id.toString()}, it has a dependency ${dep.id.toString()} which is not part of ${laneOrMainStr} history.\none option to resolve this is installing ${dep.id.toStringWithoutVersion()} via \"bit install\", which installs the version from main.\nanother option, in case this dependency is not in main yet is to remove all references of this dependency in the code and then tag/snap.`\n );\n }\n })\n );\n return missingDeps;\n }\n\n private async isPartOfCurrentHistory(id: ComponentID, lane?: Lane): Promise<boolean> {\n if (!this.scope.isExported(id) || !id.hasVersion() || isTag(id.version)) return true;\n try {\n const isPartOfHistory = lane\n ? await this.scope.legacyScope.isPartOfLaneHistoryOrMain(id, lane)\n : await this.scope.legacyScope.isPartOfMainHistory(id);\n return Boolean(isPartOfHistory);\n } catch {\n // not enough data to determine. validate the deps as if they were new.\n return false;\n }\n }\n\n async _addFlattenedDepsGraphToComponents(components: ConsumerComponent[]) {\n const graph = new Graph<ComponentID, string>();\n const addEdges = (compId: ComponentID, dependencies: ConsumerComponent['dependencies'], label: DepEdgeType) => {\n dependencies.get().forEach((dep) => {\n graph.setNode(new Node(dep.id.toString(), dep.id));\n graph.setEdge(new Edge(compId.toString(), dep.id.toString(), label));\n });\n };\n components.forEach((comp) => {\n graph.setNode(new Node(comp.id.toString(), comp.id));\n addEdges(comp.id, comp.dependencies, 'prod');\n addEdges(comp.id, comp.devDependencies, 'dev');\n addEdges(comp.id, comp.extensionDependencies, 'ext');\n });\n const allFlattened = components.map((comp) => comp.flattenedDependencies);\n const allFlattenedUniq = ComponentIdList.uniqFromArray(allFlattened.flat());\n const allFlattenedWithoutCurrent = allFlattenedUniq.filter((id) => !components.find((c) => c.id.isEqual(id)));\n const componentsAndVersions = await this.scope.legacyScope.getComponentsAndVersions(\n ComponentIdList.fromArray(allFlattenedWithoutCurrent)\n );\n componentsAndVersions.forEach(({ component, version, versionStr }) => {\n const compId = component.toComponentId().changeVersion(versionStr);\n graph.setNode(new Node(compId.toString(), compId));\n addEdges(compId, version.dependencies, 'prod');\n addEdges(compId, version.devDependencies, 'dev');\n addEdges(compId, version.extensionDependencies, 'ext');\n });\n let someCompsHaveMissingFlattened = false;\n components.forEach((component) => {\n const edges = graph.outEdges(component.id.toString());\n const flattenedEdges = component.flattenedDependencies.map((dep) => graph.outEdges(dep.toString())).flat();\n const allEdges = [...edges, ...flattenedEdges];\n const edgesWithBitIds: DepEdge[] = allEdges.map((edge) => ({\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n source: graph.node(edge.source)!.attr,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n target: graph.node(edge.target)!.attr,\n type: edge.attr as DepEdgeType,\n }));\n component.flattenedEdges = edgesWithBitIds;\n\n // due to some previous bugs, some components might have missing flattened dependencies.\n // as a result, the flattenedEdges may have more components than the flattenedDependencies, which will cause\n // issues later on when the graph is built. this fixes it by adding the missing flattened dependencies, and\n // then recursively adding the flattenedEdge accordingly.\n const flattened = component.flattenedDependencies.map((dep) => dep.toString());\n const flattenedFromEdges = uniq(\n edgesWithBitIds.map((edge) => [edge.target.toString(), edge.source.toString()]).flat()\n );\n const missingFlattened = difference(flattenedFromEdges, flattened).filter((id) => id !== component.id.toString());\n\n if (missingFlattened.length) {\n someCompsHaveMissingFlattened = true;\n this.logger.warn(`missing flattened for ${component.id.toString()}: ${missingFlattened.join(', ')}`);\n const missingBitIds = missingFlattened.map((id) => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return graph.node(id)!.attr;\n });\n component.flattenedDependencies.push(...missingBitIds);\n }\n });\n if (someCompsHaveMissingFlattened) {\n await this._addFlattenedDepsGraphToComponents(components);\n }\n }\n\n /**\n * used externally. don't make it private.\n */\n _updateComponentsByTagResult(components: ConsumerComponent[], tagResult: LegacyOnTagResult[]) {\n tagResult.forEach((result) => {\n const matchingComponent = components.find((c) => c.id.isEqual(result.id));\n if (matchingComponent) {\n const existingBuilder = matchingComponent.extensions.findCoreExtension(Extensions.builder);\n if (existingBuilder) existingBuilder.data = result.builderData.data;\n else matchingComponent.extensions.push(result.builderData);\n }\n });\n }\n\n /**\n * used externally. don't make it private.\n */\n _getPublishedPackages(components: ConsumerComponent[]): PackageIntegritiesByPublishedPackages {\n const publishedPackages: PackageIntegritiesByPublishedPackages = new Map();\n for (const comp of components) {\n const builderExt = comp.extensions.findCoreExtension(Extensions.builder);\n const pkgData = builderExt?.data?.aspectsData?.find((a) => a.aspectId === Extensions.pkg);\n if (pkgData?.data?.publishedPackage != null) {\n publishedPackages.set(pkgData.data.publishedPackage, {\n integrity: pkgData.data.integrity,\n previouslyUsedVersion: comp.previouslyUsedVersion,\n });\n }\n }\n return publishedPackages;\n }\n\n async _addCompToObjects({\n source,\n lane,\n shouldValidateVersion = false,\n addVersionOpts,\n batchId,\n }: {\n source: ConsumerComponent;\n lane?: Lane;\n shouldValidateVersion?: boolean;\n addVersionOpts?: AddVersionOpts;\n batchId?: string;\n }): Promise<{\n component: ModelComponent;\n version: Version;\n addedVersionStr: string;\n }> {\n const { addedVersionStr, component, version } = await this._addCompFromScopeToObjects(source, lane, addVersionOpts);\n if (batchId) {\n version.batchId = batchId;\n }\n const unmergedComponent = this.scope.legacyScope.objects.unmergedComponents.getEntry(component.toComponentId());\n if (unmergedComponent) {\n if (unmergedComponent.unrelated) {\n this.logger.debug(\n `sources.addSource, unmerged component \"${component.name}\". adding an unrelated entry ${unmergedComponent.head.hash}`\n );\n if (!source.previouslyUsedVersion) {\n throw new Error(\n `source.previouslyUsedVersion must be set for ${component.name} because it's unrelated resolved.`\n );\n }\n if (unmergedComponent.unrelated === true) {\n // backward compatibility\n const unrelatedHead = Ref.from(source.previouslyUsedVersion);\n version.setUnrelated({ head: unrelatedHead, laneId: unmergedComponent.laneId });\n version.addAsOnlyParent(unmergedComponent.head);\n } else {\n const unrelated = unmergedComponent.unrelated;\n version.setUnrelated({ head: unrelated.unrelatedHead, laneId: unrelated.unrelatedLaneId });\n version.addAsOnlyParent(unrelated.headOnCurrentLane);\n }\n } else if (unmergedComponent.shouldSquash) {\n // --squash on diverged components: record the dropped lane-b head in squashed metadata\n // and leave `version.parents` as the single current-lane head. lane-b's history remains\n // reachable only on its own scope; the merge snap chain stays self-contained on this lane.\n // The diverged path always has a current-lane parent (that's what makes it diverged).\n const previousParents = [version.parents[0], unmergedComponent.head];\n // Fresh Log object — setSquashed retains it via version.modified[], and we mutate\n // version.log.message below, which would corrupt the modified-log entry if shared.\n const squashLog = await getLogForSquash(unmergedComponent.laneId);\n version.setSquashed({ previousParents, laneId: unmergedComponent.laneId }, squashLog);\n this.logger.debug(\n `sources.addSource, unmerged component \"${component.name}\". squash-on-diverged: dropping parent ${unmergedComponent.head.hash}`\n );\n version.log.message = version.log.message || UnmergedComponents.buildSnapMessage(unmergedComponent);\n } else {\n // this is adding a second parent to the version. the order is important. the first parent is coming from the current-lane.\n version.addParent(unmergedComponent.head);\n this.logger.debug(\n `sources.addSource, unmerged component \"${component.name}\". adding a parent ${unmergedComponent.head.hash}`\n );\n version.log.message = version.log.message || UnmergedComponents.buildSnapMessage(unmergedComponent);\n }\n this.scope.legacyScope.objects.unmergedComponents.removeComponent(component.toComponentId());\n }\n if (shouldValidateVersion) version.validate();\n return { addedVersionStr, component, version };\n }\n\n /**\n * used externally. don't make it private.\n */\n async _addCompFromScopeToObjects(\n source: ConsumerComponent,\n lane?: Lane,\n addVersionOpts?: AddVersionOpts\n ): Promise<{\n component: ModelComponent;\n version: Version;\n addedVersionStr: string;\n }> {\n const objectRepo = this.objectsRepo;\n // if a component exists in the model, add a new version. Otherwise, create a new component on the model\n // @todo: fix the ts error here with \"source\"\n const component = await this.scope.legacyScope.sources.findOrAddComponent(source as any);\n const artifactFiles = getArtifactsFiles(source.extensions);\n const artifacts = this.transformArtifactsFromVinylToSource(artifactFiles);\n const { version, files, flattenedEdges, dependenciesGraph } =\n await this.scope.legacyScope.sources.consumerComponentToVersion(source);\n version.origin = {\n id: { scope: source.scope || (source.defaultScope as string), name: source.name },\n lane: lane ? { scope: lane.scope, name: lane.name, hash: lane.hash().toString() } : undefined,\n };\n if (isFeatureEnabled(FLATTENED_DEPS_IN_SOURCE)) {\n const flattenedDependencies = version.moveFlattenedDependenciesToSource();\n if (flattenedDependencies) objectRepo.add(flattenedDependencies);\n }\n objectRepo.add(version);\n if (flattenedEdges) this.objectsRepo.add(flattenedEdges);\n if (dependenciesGraph) this.objectsRepo.add(dependenciesGraph);\n if (!source.version) throw new Error(`addSource expects source.version to be set`);\n const addedVersionStr = component.addVersion(\n version,\n source.version,\n lane,\n source.previouslyUsedVersion,\n addVersionOpts\n );\n objectRepo.add(component);\n if (lane) objectRepo.add(lane);\n files.forEach((file) => objectRepo.add(file.file));\n if (artifacts) artifacts.forEach((file) => objectRepo.add(file.source));\n return { component, version, addedVersionStr };\n }\n\n /**\n * for an existing component in the local scope, add the updated Version-object/artifacts to the repository\n * so the next \"persist()\" call will save them to the filesystem\n */\n async enrichComp(component: Component, modifiedLog?: Log) {\n const objects = await this.getObjectsToEnrichComp(component, modifiedLog);\n objects.forEach((obj) => this.objectsRepo.add(obj));\n }\n\n /**\n * used externally. don't make it private.\n * needed to be updated after the build-pipeline was running\n */\n setBuildStatus(component: Component, buildStatus: BuildStatus) {\n component.state._consumer.buildStatus = buildStatus;\n }\n\n /**\n * for an existing component in the local scope, update the Version object with the updated data from the\n * consumer-component and return the objects that need to be saved in the filesystem\n */\n async getObjectsToEnrichComp(component: Component, modifiedLog?: Log): Promise<BitObject[]> {\n const consumerComponent: ConsumerComponent = component.state._consumer;\n const modelComp =\n consumerComponent.modelComponent || // @todo: fix the ts error here with \"source\"\n (await this.scope.legacyScope.sources.findOrAddComponent(consumerComponent as any));\n const version = await modelComp.loadVersion(consumerComponent.id.version as string, this.objectsRepo, true);\n if (modifiedLog) version.addModifiedLog(modifiedLog);\n const artifactFiles = getArtifactsFiles(consumerComponent.extensions);\n const artifacts = this.transformArtifactsFromVinylToSource(artifactFiles);\n version.extensions = consumerComponent.extensions;\n version.buildStatus = consumerComponent.buildStatus;\n const artifactObjects = artifacts.map((file) => file.source);\n const dependenciesGraph = Version.dependenciesGraphToSource(consumerComponent.dependenciesGraph);\n version.dependenciesGraphRef = dependenciesGraph ? dependenciesGraph.hash() : undefined;\n\n const result = [version, ...artifactObjects];\n if (dependenciesGraph) result.push(dependenciesGraph);\n return result;\n }\n\n private transformArtifactsFromVinylToSource(artifactsFiles: ArtifactFiles[]): ArtifactSource[] {\n const artifacts: ArtifactSource[] = [];\n artifactsFiles.forEach((artifactFiles) => {\n const artifactsSource = ArtifactFiles.fromVinylsToSources(artifactFiles.vinyls);\n if (artifactsSource.length) artifactFiles.populateRefsFromSources(artifactsSource);\n artifacts.push(...artifactsSource);\n });\n return artifacts;\n }\n\n private async loadComponentsForTagOrSnap(ids: ComponentIdList, shouldClearCacheFirst = true): Promise<Component[]> {\n const idsWithoutVersions = ids.map((id) => id.changeVersion(undefined));\n // don't pass the idsWithoutVersions to `this.application.loadAllAppsAsAspects()`.\n // otherwise, the auto-tag components (which are loaded later) won't have the application data.\n const appIds = await this.application.loadAllAppsAsAspects();\n if (shouldClearCacheFirst) {\n await this.workspace.consumer.componentFsCache.deleteAllDependenciesDataCache();\n // don't clear only the cache of these ids. we need also the auto-tag. so it's safer to just clear all.\n this.workspace.clearAllComponentsCache();\n } else {\n appIds.forEach((id) => this.workspace.clearComponentCache(id));\n }\n\n return this.workspace.getMany(idsWithoutVersions);\n }\n\n private throwForPendingImport(components: ConsumerComponent[]) {\n const componentsMissingFromScope = components\n .filter((c) => !c.componentFromModel && this.scope.isExported(c.id))\n .map((c) => c.id.toString());\n if (componentsMissingFromScope.length) {\n throw new ComponentsPendingImport(componentsMissingFromScope);\n }\n }\n\n private async throwForLegacyDependenciesInsideHarmony(components: ConsumerComponent[]) {\n const throwForComponent = async (component: ConsumerComponent) => {\n const dependenciesIds = component.getAllDependenciesIds();\n const legacyScope = this.workspace.scope.legacyScope;\n await Promise.all(\n dependenciesIds.map(async (depId) => {\n if (!depId.hasVersion()) return;\n const modelComp = await legacyScope.getModelComponentIfExist(depId);\n if (!modelComp) return;\n const version = await modelComp.loadVersion(depId.version as string, legacyScope.objects);\n if (version.isLegacy) {\n throw new Error(\n `unable tagging \"${component.id.toString()}\", its dependency \"${depId.toString()}\" is legacy`\n );\n }\n })\n );\n };\n await pMap(components, (component) => throwForComponent(component), { concurrency: concurrentComponentsLimit() });\n }\n\n /**\n * used externally. don't make it private.\n *\n * the compId.version can be a range (e.g. \"^1.0.0\"), in which case, it finds the component in the local scope and\n * resolves the latest version that falls under the range.\n * in case the version has no range, it returns the same compId.\n * in case it has no version, it returns the latest.\n */\n async getCompIdWithExactVersionAccordingToSemver(compId: ComponentID): Promise<ComponentID> {\n if (isHash(compId.version)) {\n return compId;\n }\n const range = compId.version || '*'; // if not version specified, assume the latest\n const id = compId.changeVersion(undefined);\n const exactVersion = await this.scope.getExactVersionBySemverRange(id, range);\n if (!exactVersion) {\n throw new Error(`unable to find a version that satisfies \"${range}\" of \"${compId.toString()}\"`);\n }\n return compId.changeVersion(exactVersion);\n }\n\n async updateSourceFiles(component: Component, files: FileData[]) {\n const currentFiles = component.state.filesystem.files;\n\n files.forEach((file) => {\n if (file.delete) {\n const found = currentFiles.find((f) => f.relative === file.path);\n if (!found) return;\n if (this.workspace) {\n fs.removeSync(found.path);\n }\n const index = currentFiles.findIndex((f) => f.relative === file.path);\n if (index !== -1) {\n currentFiles.splice(index, 1);\n }\n return;\n }\n const currentFile = currentFiles.find((f) => f.relative === file.path);\n if (currentFile) {\n currentFile.contents = Buffer.from(file.content);\n } else {\n currentFiles.push(\n new SourceFile({ base: '.', path: file.path, contents: Buffer.from(file.content), test: false })\n );\n }\n });\n\n if (!currentFiles.length)\n throw new Error(`unable to update component ${component.id.toString()}, all files were deleted`);\n }\n\n /**\n * used externally. don't make it private.\n */\n async updateDependenciesVersionsOfComponent(\n component: Component,\n dependencies: ComponentID[],\n currentBitIds: ComponentID[]\n ) {\n const updatedIds = ComponentIdList.fromArray([...currentBitIds, ...dependencies]);\n const componentIdStr = component.id.toString();\n const legacyComponent: ConsumerComponent = component.state._consumer;\n const deps = [...legacyComponent.dependencies.get(), ...legacyComponent.devDependencies.get()];\n const dependenciesList = this.dependencyResolver.getDependencies(component);\n deps.forEach((dep) => {\n const updatedBitId = updatedIds.searchWithoutVersion(dep.id);\n if (updatedBitId) {\n const depIdStr = dep.id.toString();\n const packageName = dependenciesList.findDependency(depIdStr)?.getPackageName?.();\n if (!packageName) {\n throw new Error(\n `unable to find the package-name of \"${depIdStr}\" dependency inside the dependency-resolver data of \"${componentIdStr}\"`\n );\n }\n this.logger.debug(`updating \"${componentIdStr}\", dependency ${depIdStr} to version ${updatedBitId.version}}`);\n dep.id = updatedBitId;\n dep.packageName = packageName;\n }\n });\n await this.UpdateDepsAspectsSaveIntoDepsResolver(component, updatedIds.toStringArray());\n }\n\n /**\n * it does two things:\n * 1. update extensions versions according to the version provided in updatedIds.\n * 2. save all dependencies data from the legacy into DependencyResolver aspect.\n */\n async UpdateDepsAspectsSaveIntoDepsResolver(component: Component, updatedIds: string[]) {\n const legacyComponent: ConsumerComponent = component.state._consumer;\n legacyComponent.extensions.forEach((ext) => {\n const extId = ext.extensionId;\n if (!extId) return;\n const found = updatedIds.find((d) => d.startsWith(`${extId.toStringWithoutVersion()}@`));\n if (found) {\n const updatedExtId = ComponentID.fromString(found);\n this.logger.debug(\n `updating \"${component.id.toString()}\", extension ${extId.toString()} to version ${updatedExtId.version}}`\n );\n ext.extensionId = updatedExtId;\n if (ext.newExtensionId) ext.newExtensionId = updatedExtId;\n }\n });\n\n component.state.aspects = await this.scope.createAspectListFromExtensionDataList(legacyComponent.extensions);\n\n const dependenciesListSerialized = (await this.dependencyResolver.extractDepsFromLegacy(component)).serialize();\n const extId = DependencyResolverAspect.id;\n const data = { dependencies: dependenciesListSerialized };\n const existingExtension = component.config.extensions.findExtension(extId);\n if (existingExtension) {\n // Only merge top level of extension data\n Object.assign(existingExtension.data, data);\n return;\n }\n const extension = new ExtensionDataEntry(undefined, undefined, extId, undefined, data);\n component.config.extensions.push(extension);\n }\n\n /**\n * a new or modified workspace-root component joins every tag and snap of its members. they record\n * the root at the version that has their files (see VersionMaker.recordWorkspaceRoot), and a build\n * of a member elsewhere needs the workspace.jsonc, lockfile and configs it was made with. a root\n * that is up to date is recorded at its current version and stays out of the batch.\n */\n private async getWorkspaceRootToTagAlong(ids: ComponentIdList): Promise<ComponentID | undefined> {\n const rootId = findWorkspaceRootMap(this.workspace.consumer.bitMap)?.id;\n if (!rootId || ids.hasWithoutVersion(rootId)) return undefined;\n const status = await this.workspace.getComponentStatusById(rootId);\n return status.newlyCreated || status.modified ? rootId.changeVersion(undefined) : undefined;\n }\n\n private async getTagPendingComponentsIds(includeUnmodified = false) {\n const ids = includeUnmodified\n ? await this.workspace.listPotentialTagIds()\n : await this.workspace.listTagPendingIds();\n const localOnlyIds = this.workspace.filter.byLocalOnly(ids);\n if (!localOnlyIds.length) {\n return ids;\n }\n const localOnlyListIds = ComponentIdList.fromArray(localOnlyIds);\n return ids.filter((id) => !localOnlyListIds.hasWithoutVersion(id));\n }\n\n private async getComponentsToTag(\n includeUnmodified: boolean,\n exactVersion: string | undefined,\n persist: boolean,\n ids: string[],\n snapped: boolean,\n unmerged: boolean\n ): Promise<{ bitIds: ComponentID[]; warnings: string[] }> {\n const warnings: string[] = [];\n const componentsList = new ComponentsList(this.workspace);\n if (persist) {\n const softTaggedComponents = this.workspace.filter.bySoftTagged();\n return { bitIds: softTaggedComponents, warnings: [] };\n }\n\n const tagPendingComponentsIds = await this.getTagPendingComponentsIds(includeUnmodified);\n\n const snappedComponentsIds = (await this.workspace.filter.bySnappedOnMain()).map((id) =>\n id.changeVersion(undefined)\n );\n\n const tagPendingBitIdsIncludeSnapped = ComponentIdList.fromArray([\n ...tagPendingComponentsIds,\n ...snappedComponentsIds,\n ]);\n\n if (snappedComponentsIds.length) {\n const localOnlyIds = this.workspace.filter.byLocalOnly(snappedComponentsIds);\n const localOnlyListIds = ComponentIdList.fromArray(localOnlyIds);\n snappedComponentsIds.forEach((id) => {\n if (localOnlyListIds.hasWithoutVersion(id)) {\n const index = snappedComponentsIds.findIndex((c) => c.isEqual(id));\n snappedComponentsIds.splice(index, 1);\n }\n });\n }\n\n if (ids.length) {\n const componentIds = await pMapSeries(ids, async (id) => {\n const [idWithoutVer, version] = id.split('@');\n const idIsPattern = this.workspace.isPattern(id);\n if (idIsPattern) {\n const allIds = await this.workspace.filterIdsFromPoolIdsByPattern(\n idWithoutVer,\n tagPendingBitIdsIncludeSnapped\n );\n return allIds.map((componentId) => componentId.changeVersion(version));\n }\n const componentId = await this.workspace.resolveComponentId(idWithoutVer);\n if (!includeUnmodified) {\n if (!tagPendingBitIdsIncludeSnapped.hasWithoutVersion(componentId)) return null;\n }\n return componentId.changeVersion(version);\n });\n\n return { bitIds: compact(componentIds.flat()), warnings };\n }\n\n if (snapped) {\n return { bitIds: snappedComponentsIds, warnings };\n }\n\n if (unmerged) {\n return { bitIds: componentsList.listDuringMergeStateComponents(), warnings };\n }\n\n if (includeUnmodified && exactVersion) {\n const tagPendingComponentsLatest = await this.workspace.scope.legacyScope.latestVersions(\n tagPendingComponentsIds,\n false\n );\n tagPendingComponentsLatest.forEach((componentId) => {\n if (componentId.version && semver.valid(componentId.version) && semver.gt(componentId.version, exactVersion)) {\n warnings.push(`warning: ${componentId.toString()} has a version greater than ${exactVersion}`);\n }\n });\n }\n\n return { bitIds: tagPendingBitIdsIncludeSnapped.map((id) => id.changeVersion(undefined)), warnings };\n }\n\n static slots = [Slot.withType<OnPreSnap>()];\n static dependencies = [\n WorkspaceAspect,\n CLIAspect,\n LoggerAspect,\n DependencyResolverAspect,\n ScopeAspect,\n ExportAspect,\n BuilderAspect,\n ImporterAspect,\n ConfigStoreAspect,\n DependenciesAspect,\n ApplicationAspect,\n RemoveAspect,\n ];\n static runtime = MainRuntime;\n static async provider(\n [\n workspace,\n cli,\n loggerMain,\n dependencyResolver,\n scope,\n exporter,\n builder,\n importer,\n configStore,\n deps,\n application,\n remove,\n ]: [\n Workspace,\n CLIMain,\n LoggerMain,\n DependencyResolverMain,\n ScopeMain,\n ExportMain,\n BuilderMain,\n ImporterMain,\n ConfigStoreMain,\n DependenciesMain,\n ApplicationMain,\n RemoveMain,\n ],\n config,\n [onPreSnapSlot]: [OnPreSnapSlot]\n ) {\n const logger = loggerMain.createLogger(SnappingAspect.id);\n const snapping = new SnappingMain(\n workspace,\n logger,\n dependencyResolver,\n scope,\n exporter,\n builder,\n importer,\n deps,\n application,\n remove,\n onPreSnapSlot\n );\n const snapCmd = new SnapCmd(snapping, logger, configStore);\n const tagCmd = new TagCmd(snapping, logger, configStore);\n const resetCmd = new ResetCmd(snapping);\n const snapDistanceCmd = new SnapDistanceCmd(scope, workspace);\n cli.register(tagCmd, snapCmd, resetCmd, snapDistanceCmd);\n return snapping;\n }\n}\n\n/**\n * the id of the given component as it was just versioned, for the results.\n */\nfunction findVersioned(components: ConsumerComponent[], id?: ComponentID): ComponentID | undefined {\n return id && components.find((component) => component.id.isEqualWithoutVersion(id))?.id;\n}\n\nSnappingAspect.addRuntime(SnappingMain);\n\nexport default SnappingMain;\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/snapping",
3
- "version": "1.0.1209",
3
+ "version": "1.0.1211",
4
4
  "homepage": "https://bit.cloud/teambit/component/snapping",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.component",
8
8
  "name": "snapping",
9
- "version": "1.0.1209"
9
+ "version": "1.0.1211"
10
10
  },
11
11
  "dependencies": {
12
12
  "graphlib": "2.1.8",
@@ -22,51 +22,52 @@
22
22
  "@teambit/bit-error": "0.0.404",
23
23
  "@teambit/component-id": "1.2.5",
24
24
  "@teambit/graph.cleargraph": "0.0.11",
25
+ "@teambit/legacy.consumer-component": "0.0.181",
26
+ "@teambit/logger": "0.0.1498",
27
+ "@teambit/objects": "0.0.711",
28
+ "@teambit/toolbox.promise.map-pool": "0.0.24",
29
+ "@teambit/component.sources": "0.0.232",
30
+ "@teambit/legacy.consumer-config": "0.0.180",
31
+ "@teambit/legacy.extension-data": "0.0.182",
25
32
  "@teambit/legacy-bit-id": "1.1.4",
33
+ "@teambit/legacy.logger": "0.0.67",
34
+ "@teambit/legacy.scope": "0.0.180",
26
35
  "@teambit/legacy.loader": "0.0.34",
27
36
  "@teambit/harmony.modules.concurrency": "0.0.50",
28
37
  "@teambit/pkg.entities.registry": "0.0.4",
38
+ "@teambit/scope.network": "0.0.180",
39
+ "@teambit/cli": "0.0.1411",
29
40
  "@teambit/legacy.constants": "0.0.49",
41
+ "@teambit/legacy.component-list": "0.0.234",
42
+ "@teambit/legacy.consumer": "0.0.180",
43
+ "@teambit/legacy.dependency-graph": "0.0.183",
44
+ "@teambit/component-issues": "0.0.191",
45
+ "@teambit/config-store": "0.0.292",
30
46
  "@teambit/harmony": "0.4.12",
31
47
  "@teambit/component-version": "1.0.4",
48
+ "@teambit/harmony.modules.feature-toggle": "0.0.63",
49
+ "@teambit/harmony.modules.get-basic-log": "0.0.181",
32
50
  "@teambit/harmony.modules.runtimes": "0.0.4",
33
51
  "@teambit/lane-id": "0.0.312",
52
+ "@teambit/lanes.modules.create-lane": "0.0.216",
53
+ "@teambit/legacy.scope-api": "0.0.235",
34
54
  "@teambit/pkg.modules.semver-helper": "0.0.38",
55
+ "@teambit/pkg.modules.component-package-name": "0.0.187",
35
56
  "@teambit/toolbox.crypto.sha1": "0.0.24",
36
- "@teambit/graph": "1.0.1209",
37
- "@teambit/legacy.consumer-component": "0.0.180",
38
- "@teambit/logger": "0.0.1498",
39
- "@teambit/objects": "0.0.710",
40
- "@teambit/scope": "1.0.1209",
41
- "@teambit/toolbox.promise.map-pool": "0.0.24",
42
- "@teambit/component.sources": "0.0.231",
43
- "@teambit/component": "1.0.1209",
44
- "@teambit/dependencies": "1.0.1209",
45
- "@teambit/dependency-resolver": "1.0.1209",
46
- "@teambit/legacy.consumer-config": "0.0.179",
47
- "@teambit/legacy.extension-data": "0.0.181",
48
- "@teambit/legacy.logger": "0.0.67",
49
- "@teambit/legacy.scope": "0.0.179",
50
- "@teambit/scope.network": "0.0.179",
51
- "@teambit/cli": "0.0.1410",
52
- "@teambit/legacy.component-list": "0.0.233",
53
- "@teambit/legacy.consumer": "0.0.179",
54
- "@teambit/legacy.dependency-graph": "0.0.182",
55
- "@teambit/remove": "1.0.1209",
56
- "@teambit/workspace": "1.0.1209",
57
- "@teambit/component-issues": "0.0.191",
58
- "@teambit/config-store": "0.0.291",
59
- "@teambit/application": "1.0.1209",
60
- "@teambit/builder": "1.0.1209",
61
- "@teambit/export": "1.0.1209",
62
- "@teambit/harmony.modules.get-basic-log": "0.0.180",
63
- "@teambit/importer": "1.0.1209",
64
- "@teambit/lanes.modules.create-lane": "0.0.215",
65
- "@teambit/legacy.scope-api": "0.0.234",
66
- "@teambit/workspace-root": "0.0.35",
67
- "@teambit/pkg.modules.component-package-name": "0.0.186",
68
- "@teambit/pkg": "1.0.1209",
69
- "@teambit/workspace.modules.node-modules-linker": "0.0.412"
57
+ "@teambit/workspace.modules.node-modules-linker": "0.0.413",
58
+ "@teambit/graph": "1.0.1211",
59
+ "@teambit/scope": "1.0.1211",
60
+ "@teambit/component": "1.0.1211",
61
+ "@teambit/dependencies": "1.0.1211",
62
+ "@teambit/dependency-resolver": "1.0.1211",
63
+ "@teambit/remove": "1.0.1211",
64
+ "@teambit/workspace": "1.0.1211",
65
+ "@teambit/application": "1.0.1211",
66
+ "@teambit/builder": "1.0.1211",
67
+ "@teambit/export": "1.0.1211",
68
+ "@teambit/importer": "1.0.1211",
69
+ "@teambit/workspace-root": "0.0.37",
70
+ "@teambit/pkg": "1.0.1211"
70
71
  },
71
72
  "devDependencies": {
72
73
  "@types/graphlib": "2.1.7",
@@ -75,12 +76,12 @@
75
76
  "@types/semver": "7.5.8",
76
77
  "@types/uuid": "8.3.4",
77
78
  "@types/mocha": "9.1.0",
79
+ "@teambit/component.testing.mock-components": "0.0.456",
80
+ "@teambit/harmony.testing.load-aspect": "0.0.450",
81
+ "@teambit/workspace.testing.mock-workspace": "0.0.264",
78
82
  "@teambit/harmony.envs.core-aspect-env": "2.1.2",
79
- "@teambit/compiler": "1.0.1209",
80
- "@teambit/component.testing.mock-components": "0.0.455",
81
- "@teambit/harmony.testing.load-aspect": "0.0.449",
82
- "@teambit/issues": "1.0.1209",
83
- "@teambit/workspace.testing.mock-workspace": "0.0.263"
83
+ "@teambit/compiler": "1.0.1211",
84
+ "@teambit/issues": "1.0.1211"
84
85
  },
85
86
  "peerDependencies": {
86
87
  "chai": "5.2.1"