@teambit/snapping 1.0.667 → 1.0.669

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.
@@ -1,10 +1,10 @@
1
1
  import { Graph } from '@teambit/graph.cleargraph';
2
- import { DepEdgeType } from '@teambit/graph';
3
- import { ScopeMain } from '@teambit/scope';
4
- import { ConsumerComponent } from '@teambit/legacy.consumer-component';
5
- import { Lane } from '@teambit/objects';
2
+ import type { DepEdgeType } from '@teambit/graph';
3
+ import type { ScopeMain } from '@teambit/scope';
4
+ import type { ConsumerComponent } from '@teambit/legacy.consumer-component';
5
+ import type { Lane } from '@teambit/objects';
6
6
  import { ComponentID } from '@teambit/component-id';
7
- import { Logger } from '@teambit/logger';
7
+ import type { Logger } from '@teambit/logger';
8
8
  /**
9
9
  * the goal of this class is to determine the graph dependencies of a given set of components with minimal effort.
10
10
  * it takes advantage of the fact that we save the dependency graph in the `Version` object and tries to reuse it.
@@ -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 { DepEdgeType } from '@teambit/graph';\nimport { ScopeMain } from '@teambit/scope';\nimport { ConsumerComponent } from '@teambit/legacy.consumer-component';\nimport { DepEdge, Lane } from '@teambit/objects';\nimport { ComponentID, ComponentIdList } from '@teambit/component-id';\nimport { 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","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,9 +1,9 @@
1
1
  import { ComponentID } from '@teambit/component-id';
2
- import { ScopeMain } from '@teambit/scope';
3
- import { Component } from '@teambit/component';
4
- import { DependenciesMain } from '@teambit/dependencies';
5
- import { DependencyResolverMain, VariantPolicyConfigArr } from '@teambit/dependency-resolver';
6
- import { FileData, SnappingMain, SnapDataParsed } from './snapping.main.runtime';
2
+ import type { ScopeMain } from '@teambit/scope';
3
+ import type { Component } from '@teambit/component';
4
+ import type { DependenciesMain } from '@teambit/dependencies';
5
+ import type { DependencyResolverMain, VariantPolicyConfigArr } from '@teambit/dependency-resolver';
6
+ import type { FileData, SnappingMain, SnapDataParsed } from './snapping.main.runtime';
7
7
  export type NewDependency = {
8
8
  id: string;
9
9
  version?: string;
@@ -1 +1 @@
1
- {"version":3,"names":["_componentId","data","require","_legacy","_component","_legacy2","_legacy3","ownKeys","e","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","generateCompFromScope","scope","depsResolver","compData","snapping","files","Error","map","file","SourceFile","base","path","contents","Buffer","from","content","test","id","componentId","extensions","ExtensionDataList","fromConfigObject","aspects","compDeps","getCompDeps","newDependencies","consumerComponent","ConsumerComponent","mainFile","name","fullName","schema","CURRENT_SCHEMA","overrides","ComponentOverrides","loadNewFromScope","defaultScope","log","message","date","Date","now","toString","username","email","_addFlattenedDependenciesToComponents","version","filesBitObject","legacyScope","sources","consumerComponentToVersion","modelComponent","findOrAddComponent","hash","objects","writeObjectsToTheFS","f","component","getManyByLegacy","newDeps","compIdsData","dep","isComponent","compIdsDataParsed","ComponentID","fromString","compIds","changeVersion","comps","getMany","toDependency","depId","comp","find","c","isEqualWithoutVersion","pkgName","getPackageName","Dependency","type","compDevDeps","compPeerDeps","addDeps","snapData","deps","autoDetect","updateDeps","dependencies","packageDeps","toPackageObj","pkgs","reduce","acc","curr","getPkgObj","allAutoDeps","depType","manipulateCurrentPkgs","removeDependencies","pkg","found","d","startsWith","replace","manipulateCurrentDeps","currentCompDeps","afterRemoval","includes","toStringWithoutVersion","foundInAutoDeps","packageName","undefined","state","_consumer","dependenciesData","allDependencies","get","devDependencies","peerDependencies","allPackagesDependencies","packageDependencies","devPackageDependencies","peerPackageDependencies","loadDependenciesFromScope","UpdateDepsAspectsSaveIntoDepsResolver"],"sources":["generate-comp-from-scope.ts"],"sourcesContent":["import { ComponentID } from '@teambit/component-id';\nimport { Dependency, ConsumerComponent, CURRENT_SCHEMA } from '@teambit/legacy.consumer-component';\nimport { SourceFile } from '@teambit/component.sources';\nimport { ScopeMain } from '@teambit/scope';\nimport { ComponentOverrides } from '@teambit/legacy.consumer-config';\nimport { ExtensionDataList } from '@teambit/legacy.extension-data';\nimport { Component } from '@teambit/component';\nimport { DependenciesMain } from '@teambit/dependencies';\nimport { DependencyResolverMain, VariantPolicyConfigArr } from '@teambit/dependency-resolver';\nimport { FileData, SnappingMain, SnapDataParsed } from './snapping.main.runtime';\n\nexport type NewDependency = {\n id: string; // component-id or package-name. e.g. \"teambit.react/react\" or \"lodash\".\n version?: string; // version of the package. e.g. \"2.0.3\". for packages, it is mandatory.\n isComponent?: boolean; // default true. if false, it's a package dependency\n type?: 'runtime' | 'dev' | 'peer'; // default \"runtime\".\n};\n\nexport type NewDependencies = NewDependency[];\n\nexport type CompData = {\n componentId: ComponentID;\n dependencies: string[];\n aspects: Record<string, any> | undefined;\n message: string | undefined;\n files: FileData[] | undefined;\n mainFile?: string;\n newDependencies?: NewDependencies;\n};\n\n/**\n * normally new components are created from a workspace. the files are in the filesystem and the ConsumerComponent\n * object is created from the files.\n * here, we need to create the ConsumerComponent object \"on the fly\". we don't have workspace, only scope. the files\n * are in-memory (we got them from snap-from-scope command).\n * the way how it is done is by creating a minimal ConsumerComponent object, then convert `Version` object from it,\n * write the version and files into the scope as objects, so then it's possible to load Component object using the\n * ConsumerComponent.\n */\nexport async function generateCompFromScope(\n scope: ScopeMain,\n depsResolver: DependencyResolverMain,\n compData: CompData,\n snapping: SnappingMain\n): Promise<Component> {\n if (!compData.files) throw new Error('generateComp: files are missing');\n const files = compData.files.map((file) => {\n return new SourceFile({ base: '.', path: file.path, contents: Buffer.from(file.content), test: false });\n });\n const id = compData.componentId;\n const extensions = ExtensionDataList.fromConfigObject(compData.aspects || {});\n const { compDeps } = await getCompDeps(scope, depsResolver, compData.newDependencies || []);\n\n const consumerComponent = new ConsumerComponent({\n mainFile: compData.mainFile || 'index.ts',\n name: compData.componentId.fullName,\n scope: compData.componentId.scope,\n files,\n schema: CURRENT_SCHEMA,\n overrides: await ComponentOverrides.loadNewFromScope(id, files, extensions, compDeps),\n defaultScope: compData.componentId.scope,\n extensions,\n // the dummy data here are not important. this Version object will be discarded later.\n log: {\n message: compData.message || '',\n date: Date.now().toString(),\n username: '',\n email: '',\n },\n });\n // this is needed, otherwise in case of updating envs/aspects, the version-validator throws\n // an error saying \"the extension ${extensionId.toString()} is missing from the flattenedDependencies\"\n await snapping._addFlattenedDependenciesToComponents([consumerComponent]);\n\n const { version, files: filesBitObject } =\n await scope.legacyScope.sources.consumerComponentToVersion(consumerComponent);\n const modelComponent = await scope.legacyScope.sources.findOrAddComponent(consumerComponent);\n consumerComponent.version = version.hash().toString();\n await scope.legacyScope.objects.writeObjectsToTheFS([version, modelComponent, ...filesBitObject.map((f) => f.file)]);\n const component = await scope.getManyByLegacy([consumerComponent]);\n\n return component[0];\n}\n\nasync function getCompDeps(scope: ScopeMain, depsResolver: DependencyResolverMain, newDeps: NewDependencies) {\n const compIdsData = newDeps.filter((dep) => dep.isComponent);\n const compIdsDataParsed = compIdsData.map((data) => ({\n ...data,\n id: ComponentID.fromString(data.id),\n }));\n const compIds = compIdsDataParsed.map((dep) => (dep.version ? dep.id.changeVersion(dep.version) : dep.id));\n const comps = await scope.getMany(compIds);\n const toDependency = (depId: ComponentID) => {\n const comp = comps.find((c) => c.id.isEqualWithoutVersion(depId));\n if (!comp) throw new Error(`unable to find the specified dependency ${depId.toString()} in the scope`);\n const pkgName = depsResolver.getPackageName(comp);\n return new Dependency(comp.id, [], pkgName);\n };\n const compDeps = compIdsDataParsed.filter((c) => c.type === 'runtime').map((dep) => toDependency(dep.id));\n const compDevDeps = compIdsDataParsed.filter((c) => c.type === 'dev').map((dep) => toDependency(dep.id));\n const compPeerDeps = compIdsDataParsed.filter((c) => c.type === 'peer').map((dep) => toDependency(dep.id));\n return { compDeps, compDevDeps, compPeerDeps };\n}\n\nexport async function addDeps(\n component: Component,\n snapData: SnapDataParsed,\n scope: ScopeMain,\n deps: DependenciesMain,\n depsResolver: DependencyResolverMain,\n snapping: SnappingMain,\n autoDetect?: VariantPolicyConfigArr\n) {\n const newDeps = snapData.newDependencies || [];\n const updateDeps = snapData.dependencies || [];\n const packageDeps = newDeps.filter((dep) => !dep.isComponent);\n const { compDeps, compDevDeps, compPeerDeps } = await getCompDeps(scope, depsResolver, newDeps);\n const toPackageObj = (pkgs: Array<{ id: string; version?: string }>) => {\n return pkgs.reduce((acc, curr) => {\n if (!curr.version) throw new Error(`please specify a version for the package dependency: \"${curr.id}\"`);\n acc[curr.id] = curr.version;\n return acc;\n }, {});\n };\n const getPkgObj = (type: 'runtime' | 'dev' | 'peer') => {\n return toPackageObj(packageDeps.filter((dep) => dep.type === type));\n };\n const allAutoDeps: { [pkgName: string]: string } = {};\n ['dependencies', 'devDependencies', 'peerDependencies'].forEach((depType) => {\n autoDetect?.[depType]?.forEach((dep) => {\n allAutoDeps[dep.name] = dep.version;\n });\n });\n\n const manipulateCurrentPkgs = (pkgs: Record<string, string>) => {\n snapData.removeDependencies?.forEach((pkg) => {\n delete pkgs[pkg];\n });\n Object.keys(pkgs).forEach((pkg) => {\n const found = updateDeps.find((d) => d.startsWith(`${pkg}@`));\n if (found) {\n pkgs[pkg] = found.replace(`${pkg}@`, '');\n }\n });\n return pkgs;\n };\n const manipulateCurrentDeps = (currentCompDeps: Dependency[]) => {\n const afterRemoval = currentCompDeps.filter(\n (dep) => !snapData.removeDependencies?.includes(dep.id.toStringWithoutVersion())\n );\n afterRemoval.forEach((dep) => {\n const found = updateDeps.find((d) => d.startsWith(`${dep.id.toStringWithoutVersion()}@`));\n if (found) {\n dep.id = dep.id.changeVersion(found.replace(`${dep.id.toStringWithoutVersion()}@`, ''));\n }\n const foundInAutoDeps = dep.packageName ? allAutoDeps[dep.packageName] : undefined;\n if (foundInAutoDeps) {\n dep.id = dep.id.changeVersion(allAutoDeps[dep.packageName!]);\n }\n });\n return afterRemoval;\n };\n\n const consumerComponent = component.state._consumer as ConsumerComponent;\n\n const dependenciesData = {\n allDependencies: {\n dependencies: [...compDeps, ...manipulateCurrentDeps(consumerComponent.dependencies.get())],\n devDependencies: [...compDevDeps, ...manipulateCurrentDeps(consumerComponent.devDependencies.get())],\n peerDependencies: [...compPeerDeps, ...manipulateCurrentDeps(consumerComponent.peerDependencies.get())],\n },\n allPackagesDependencies: {\n packageDependencies: { ...manipulateCurrentPkgs(consumerComponent.packageDependencies), ...getPkgObj('runtime') },\n devPackageDependencies: {\n ...manipulateCurrentPkgs(consumerComponent.devPackageDependencies),\n ...getPkgObj('dev'),\n },\n peerPackageDependencies: {\n ...manipulateCurrentPkgs(consumerComponent.peerPackageDependencies),\n ...getPkgObj('peer'),\n },\n },\n };\n\n // add the dependencies to the legacy ConsumerComponent object\n // it takes care of both: given dependencies (from the cli) and the overrides, which are coming from the env.\n await deps.loadDependenciesFromScope(consumerComponent, dependenciesData);\n\n await snapping.UpdateDepsAspectsSaveIntoDepsResolver(component, updateDeps);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_componentId","data","require","_legacy","_component","_legacy2","_legacy3","ownKeys","e","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","generateCompFromScope","scope","depsResolver","compData","snapping","files","Error","map","file","SourceFile","base","path","contents","Buffer","from","content","test","id","componentId","extensions","ExtensionDataList","fromConfigObject","aspects","compDeps","getCompDeps","newDependencies","consumerComponent","ConsumerComponent","mainFile","name","fullName","schema","CURRENT_SCHEMA","overrides","ComponentOverrides","loadNewFromScope","defaultScope","log","message","date","Date","now","toString","username","email","_addFlattenedDependenciesToComponents","version","filesBitObject","legacyScope","sources","consumerComponentToVersion","modelComponent","findOrAddComponent","hash","objects","writeObjectsToTheFS","f","component","getManyByLegacy","newDeps","compIdsData","dep","isComponent","compIdsDataParsed","ComponentID","fromString","compIds","changeVersion","comps","getMany","toDependency","depId","comp","find","c","isEqualWithoutVersion","pkgName","getPackageName","Dependency","type","compDevDeps","compPeerDeps","addDeps","snapData","deps","autoDetect","updateDeps","dependencies","packageDeps","toPackageObj","pkgs","reduce","acc","curr","getPkgObj","allAutoDeps","depType","manipulateCurrentPkgs","removeDependencies","pkg","found","d","startsWith","replace","manipulateCurrentDeps","currentCompDeps","afterRemoval","includes","toStringWithoutVersion","foundInAutoDeps","packageName","undefined","state","_consumer","dependenciesData","allDependencies","get","devDependencies","peerDependencies","allPackagesDependencies","packageDependencies","devPackageDependencies","peerPackageDependencies","loadDependenciesFromScope","UpdateDepsAspectsSaveIntoDepsResolver"],"sources":["generate-comp-from-scope.ts"],"sourcesContent":["import { ComponentID } from '@teambit/component-id';\nimport { Dependency, ConsumerComponent, CURRENT_SCHEMA } from '@teambit/legacy.consumer-component';\nimport { SourceFile } from '@teambit/component.sources';\nimport type { ScopeMain } from '@teambit/scope';\nimport { ComponentOverrides } from '@teambit/legacy.consumer-config';\nimport { ExtensionDataList } from '@teambit/legacy.extension-data';\nimport type { Component } from '@teambit/component';\nimport type { DependenciesMain } from '@teambit/dependencies';\nimport type { DependencyResolverMain, VariantPolicyConfigArr } from '@teambit/dependency-resolver';\nimport type { FileData, SnappingMain, SnapDataParsed } from './snapping.main.runtime';\n\nexport type NewDependency = {\n id: string; // component-id or package-name. e.g. \"teambit.react/react\" or \"lodash\".\n version?: string; // version of the package. e.g. \"2.0.3\". for packages, it is mandatory.\n isComponent?: boolean; // default true. if false, it's a package dependency\n type?: 'runtime' | 'dev' | 'peer'; // default \"runtime\".\n};\n\nexport type NewDependencies = NewDependency[];\n\nexport type CompData = {\n componentId: ComponentID;\n dependencies: string[];\n aspects: Record<string, any> | undefined;\n message: string | undefined;\n files: FileData[] | undefined;\n mainFile?: string;\n newDependencies?: NewDependencies;\n};\n\n/**\n * normally new components are created from a workspace. the files are in the filesystem and the ConsumerComponent\n * object is created from the files.\n * here, we need to create the ConsumerComponent object \"on the fly\". we don't have workspace, only scope. the files\n * are in-memory (we got them from snap-from-scope command).\n * the way how it is done is by creating a minimal ConsumerComponent object, then convert `Version` object from it,\n * write the version and files into the scope as objects, so then it's possible to load Component object using the\n * ConsumerComponent.\n */\nexport async function generateCompFromScope(\n scope: ScopeMain,\n depsResolver: DependencyResolverMain,\n compData: CompData,\n snapping: SnappingMain\n): Promise<Component> {\n if (!compData.files) throw new Error('generateComp: files are missing');\n const files = compData.files.map((file) => {\n return new SourceFile({ base: '.', path: file.path, contents: Buffer.from(file.content), test: false });\n });\n const id = compData.componentId;\n const extensions = ExtensionDataList.fromConfigObject(compData.aspects || {});\n const { compDeps } = await getCompDeps(scope, depsResolver, compData.newDependencies || []);\n\n const consumerComponent = new ConsumerComponent({\n mainFile: compData.mainFile || 'index.ts',\n name: compData.componentId.fullName,\n scope: compData.componentId.scope,\n files,\n schema: CURRENT_SCHEMA,\n overrides: await ComponentOverrides.loadNewFromScope(id, files, extensions, compDeps),\n defaultScope: compData.componentId.scope,\n extensions,\n // the dummy data here are not important. this Version object will be discarded later.\n log: {\n message: compData.message || '',\n date: Date.now().toString(),\n username: '',\n email: '',\n },\n });\n // this is needed, otherwise in case of updating envs/aspects, the version-validator throws\n // an error saying \"the extension ${extensionId.toString()} is missing from the flattenedDependencies\"\n await snapping._addFlattenedDependenciesToComponents([consumerComponent]);\n\n const { version, files: filesBitObject } =\n await scope.legacyScope.sources.consumerComponentToVersion(consumerComponent);\n const modelComponent = await scope.legacyScope.sources.findOrAddComponent(consumerComponent);\n consumerComponent.version = version.hash().toString();\n await scope.legacyScope.objects.writeObjectsToTheFS([version, modelComponent, ...filesBitObject.map((f) => f.file)]);\n const component = await scope.getManyByLegacy([consumerComponent]);\n\n return component[0];\n}\n\nasync function getCompDeps(scope: ScopeMain, depsResolver: DependencyResolverMain, newDeps: NewDependencies) {\n const compIdsData = newDeps.filter((dep) => dep.isComponent);\n const compIdsDataParsed = compIdsData.map((data) => ({\n ...data,\n id: ComponentID.fromString(data.id),\n }));\n const compIds = compIdsDataParsed.map((dep) => (dep.version ? dep.id.changeVersion(dep.version) : dep.id));\n const comps = await scope.getMany(compIds);\n const toDependency = (depId: ComponentID) => {\n const comp = comps.find((c) => c.id.isEqualWithoutVersion(depId));\n if (!comp) throw new Error(`unable to find the specified dependency ${depId.toString()} in the scope`);\n const pkgName = depsResolver.getPackageName(comp);\n return new Dependency(comp.id, [], pkgName);\n };\n const compDeps = compIdsDataParsed.filter((c) => c.type === 'runtime').map((dep) => toDependency(dep.id));\n const compDevDeps = compIdsDataParsed.filter((c) => c.type === 'dev').map((dep) => toDependency(dep.id));\n const compPeerDeps = compIdsDataParsed.filter((c) => c.type === 'peer').map((dep) => toDependency(dep.id));\n return { compDeps, compDevDeps, compPeerDeps };\n}\n\nexport async function addDeps(\n component: Component,\n snapData: SnapDataParsed,\n scope: ScopeMain,\n deps: DependenciesMain,\n depsResolver: DependencyResolverMain,\n snapping: SnappingMain,\n autoDetect?: VariantPolicyConfigArr\n) {\n const newDeps = snapData.newDependencies || [];\n const updateDeps = snapData.dependencies || [];\n const packageDeps = newDeps.filter((dep) => !dep.isComponent);\n const { compDeps, compDevDeps, compPeerDeps } = await getCompDeps(scope, depsResolver, newDeps);\n const toPackageObj = (pkgs: Array<{ id: string; version?: string }>) => {\n return pkgs.reduce((acc, curr) => {\n if (!curr.version) throw new Error(`please specify a version for the package dependency: \"${curr.id}\"`);\n acc[curr.id] = curr.version;\n return acc;\n }, {});\n };\n const getPkgObj = (type: 'runtime' | 'dev' | 'peer') => {\n return toPackageObj(packageDeps.filter((dep) => dep.type === type));\n };\n const allAutoDeps: { [pkgName: string]: string } = {};\n ['dependencies', 'devDependencies', 'peerDependencies'].forEach((depType) => {\n autoDetect?.[depType]?.forEach((dep) => {\n allAutoDeps[dep.name] = dep.version;\n });\n });\n\n const manipulateCurrentPkgs = (pkgs: Record<string, string>) => {\n snapData.removeDependencies?.forEach((pkg) => {\n delete pkgs[pkg];\n });\n Object.keys(pkgs).forEach((pkg) => {\n const found = updateDeps.find((d) => d.startsWith(`${pkg}@`));\n if (found) {\n pkgs[pkg] = found.replace(`${pkg}@`, '');\n }\n });\n return pkgs;\n };\n const manipulateCurrentDeps = (currentCompDeps: Dependency[]) => {\n const afterRemoval = currentCompDeps.filter(\n (dep) => !snapData.removeDependencies?.includes(dep.id.toStringWithoutVersion())\n );\n afterRemoval.forEach((dep) => {\n const found = updateDeps.find((d) => d.startsWith(`${dep.id.toStringWithoutVersion()}@`));\n if (found) {\n dep.id = dep.id.changeVersion(found.replace(`${dep.id.toStringWithoutVersion()}@`, ''));\n }\n const foundInAutoDeps = dep.packageName ? allAutoDeps[dep.packageName] : undefined;\n if (foundInAutoDeps) {\n dep.id = dep.id.changeVersion(allAutoDeps[dep.packageName!]);\n }\n });\n return afterRemoval;\n };\n\n const consumerComponent = component.state._consumer as ConsumerComponent;\n\n const dependenciesData = {\n allDependencies: {\n dependencies: [...compDeps, ...manipulateCurrentDeps(consumerComponent.dependencies.get())],\n devDependencies: [...compDevDeps, ...manipulateCurrentDeps(consumerComponent.devDependencies.get())],\n peerDependencies: [...compPeerDeps, ...manipulateCurrentDeps(consumerComponent.peerDependencies.get())],\n },\n allPackagesDependencies: {\n packageDependencies: { ...manipulateCurrentPkgs(consumerComponent.packageDependencies), ...getPkgObj('runtime') },\n devPackageDependencies: {\n ...manipulateCurrentPkgs(consumerComponent.devPackageDependencies),\n ...getPkgObj('dev'),\n },\n peerPackageDependencies: {\n ...manipulateCurrentPkgs(consumerComponent.peerPackageDependencies),\n ...getPkgObj('peer'),\n },\n },\n };\n\n // add the dependencies to the legacy ConsumerComponent object\n // it takes care of both: given dependencies (from the cli) and the overrides, which are coming from the env.\n await deps.loadDependenciesFromScope(consumerComponent, dependenciesData);\n\n await snapping.UpdateDepsAspectsSaveIntoDepsResolver(component, updateDeps);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,6 @@
1
- import { Scope } from '@teambit/legacy.scope';
2
- import { ConsumerComponent as Component } from '@teambit/legacy.consumer-component';
3
- import { Lane } from '@teambit/objects';
1
+ import type { Scope } from '@teambit/legacy.scope';
2
+ import type { ConsumerComponent as Component } from '@teambit/legacy.consumer-component';
3
+ import type { Lane } from '@teambit/objects';
4
4
  export declare class FlattenedDependenciesGetter {
5
5
  private scope;
6
6
  private components;
@@ -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 { ComponentID, ComponentIdList } from '@teambit/component-id';\nimport { BitIdStr } from '@teambit/legacy-bit-id';\nimport { VersionDependencies, Scope } from '@teambit/legacy.scope';\nimport { ConsumerComponent as Component, Dependencies } from '@teambit/legacy.consumer-component';\nimport { logger } from '@teambit/legacy.logger';\nimport { 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","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":";;;;;;AAAA,SAAAA,UAAA;EAAA,MAAAC,IAAA,GAAAC,uBAAA,CAAAC,OAAA;EAAAH,SAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,YAAA;EAAA,MAAAH,IAAA,GAAAI,sBAAA,CAAAF,OAAA;EAAAC,WAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,UAAA;EAAA,MAAAL,IAAA,GAAAE,OAAA;EAAAG,SAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAM,aAAA;EAAA,MAAAN,IAAA,GAAAE,OAAA;EAAAI,YAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAIA,SAAAO,QAAA;EAAA,MAAAP,IAAA,GAAAE,OAAA;EAAAK,OAAA,YAAAA,CAAA;IAAA,OAAAP,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAQ,QAAA;EAAA,MAAAR,IAAA,GAAAE,OAAA;EAAAM,OAAA,YAAAA,CAAA;IAAA,OAAAR,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA6C,SAAAI,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAR,wBAAAQ,CAAA,EAAAG,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAZ,uBAAA,YAAAA,CAAAQ,CAAA,EAAAG,CAAA,SAAAA,CAAA,IAAAH,CAAA,IAAAA,CAAA,CAAAC,UAAA,SAAAD,CAAA,MAAAO,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAR,OAAA,EAAAF,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAS,CAAA,MAAAF,CAAA,GAAAJ,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAE,CAAA,CAAAI,GAAA,CAAAX,CAAA,UAAAO,CAAA,CAAAK,GAAA,CAAAZ,CAAA,GAAAO,CAAA,CAAAM,GAAA,CAAAb,CAAA,EAAAS,CAAA,gBAAAN,CAAA,IAAAH,CAAA,gBAAAG,CAAA,OAAAW,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAG,CAAA,OAAAK,CAAA,IAAAD,CAAA,GAAAS,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAG,CAAA,OAAAK,CAAA,CAAAI,GAAA,IAAAJ,CAAA,CAAAK,GAAA,IAAAN,CAAA,CAAAE,CAAA,EAAAN,CAAA,EAAAK,CAAA,IAAAC,CAAA,CAAAN,CAAA,IAAAH,CAAA,CAAAG,CAAA,WAAAM,CAAA,KAAAT,CAAA,EAAAG,CAAA;AAAA,SAAAgB,gBAAAnB,CAAA,EAAAK,CAAA,EAAAF,CAAA,YAAAE,CAAA,GAAAe,cAAA,CAAAf,CAAA,MAAAL,CAAA,GAAAgB,MAAA,CAAAC,cAAA,CAAAjB,CAAA,EAAAK,CAAA,IAAAgB,KAAA,EAAAlB,CAAA,EAAAmB,UAAA,MAAAC,YAAA,MAAAC,QAAA,UAAAxB,CAAA,CAAAK,CAAA,IAAAF,CAAA,EAAAH,CAAA;AAAA,SAAAoB,eAAAjB,CAAA,QAAAK,CAAA,GAAAiB,YAAA,CAAAtB,CAAA,uCAAAK,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAiB,aAAAtB,CAAA,EAAAE,CAAA,2BAAAF,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAH,CAAA,GAAAG,CAAA,CAAAuB,MAAA,CAAAC,WAAA,kBAAA3B,CAAA,QAAAQ,CAAA,GAAAR,CAAA,CAAAe,IAAA,CAAAZ,CAAA,EAAAE,CAAA,uCAAAG,CAAA,SAAAA,CAAA,YAAAoB,SAAA,yEAAAvB,CAAA,GAAAwB,MAAA,GAAAC,MAAA,EAAA3B,CAAA;AAEtC,MAAM4B,2BAA2B,CAAC;EAIvCC,WAAWA,CACDC,KAAY,EACZC,UAAuB,EACvBC,IAAW,EACnB;IAAA,KAHQF,KAAY,GAAZA,KAAY;IAAA,KACZC,UAAuB,GAAvBA,UAAuB;IAAA,KACvBC,IAAW,GAAXA,IAAW;IAAAhB,eAAA;IAAAA,eAAA;IAAAA,eAAA,gBAJiC,CAAC,CAAC;EAKrD;;EAEH;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMiB,6BAA6BA,CAAA,EAAG;IACpCC,gBAAM,CAACC,KAAK,CAAC,6CAA6C,IAAI,CAACJ,UAAU,CAACK,MAAM,aAAa,CAAC;IAC9F,IAAI,CAACC,iBAAiB,GAAGC,4BAA4B,CAAC,IAAI,CAACP,UAAU,CAAC;IACtE;IACA,MAAM,IAAI,CAACQ,gCAAgC,CAAC,CAAC;IAC7C,MAAM,IAAAC,qBAAS,EAAC,IAAI,CAACT,UAAU,EAAE,MAAOU,SAAS,IAAK;MACpDA,SAAS,CAACC,qBAAqB,GAAG,MAAM,IAAI,CAACC,YAAY,CAACF,SAAS,CAACG,WAAW,CAAC;IAClF,CAAC,CAAC;EACJ;EAEA,MAAcL,gCAAgCA,CAAA,EAAG;IAC/C,MAAMM,eAAe,GAAG,IAAI,CAACd,UAAU,CAACe,GAAG,CAAEL,SAAS,IAAK;MACzD,OAAOM,QAAQ,CAAC,IAAI,CAACV,iBAAiB,EAAEI,SAAS,CAACO,EAAE,CAACC,QAAQ,CAAC,CAAC,CAAC;IAClE,CAAC,CAAC;IACF,MAAMC,MAAgB,GAAG,IAAAC,iBAAO,EAAC,IAAAC,cAAI,EAACP,eAAe,CAACQ,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9D,MAAMC,MAAM,GAAGJ,MAAM,CAClBJ,GAAG,CAAES,KAAK,IAAK,IAAI,CAAClB,iBAAiB,CAACmB,IAAI,CAACD,KAAK,CAAC,CAAC,CAClDE,MAAM,CAAEC,KAAK,IAAK,CAAC,IAAI,CAAC3B,UAAU,CAAC4B,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACZ,EAAE,CAACa,OAAO,CAACH,KAAK,CAAC,CAAC,CAAC;IACvE,MAAMI,uBAAuB,GAAG,IAAI,CAAChC,KAAK,CAACiC,aAAa;IACxD,IAAI,CAACC,mBAAmB,GAAG,MAAMF,uBAAuB,CAACG,UAAU,CAAC;MAClEC,GAAG,EAAEC,8BAAe,CAACC,SAAS,CAACd,MAAM,CAAC;MACtCe,qBAAqB,EAAE,KAAK;MAC5BC,KAAK,EAAE,IAAI;MACXC,0BAA0B,EAAE,IAAI;MAChCvC,IAAI,EAAE,IAAI,CAACA,IAAI;MACfwC,MAAM,EAAE;IACV,CAAC,CAAC;EACJ;EAEA,MAAc7B,YAAYA,CAACe,KAAkB,EAA4B;IACvE,MAAMe,YAAY,GAAG,IAAI,CAACC,iCAAiC,CAAChB,KAAK,CAAC;IAClEe,YAAY,CAACE,OAAO,CAAEC,GAAG,IAAKC,uBAAuB,CAACnB,KAAK,EAAEkB,GAAG,CAAC,CAAC;IAClE,MAAME,gBAAgB,GAAG,MAAM,IAAAtC,qBAAS,EAACiC,YAAY,EAAGG,GAAG,IAAK,IAAI,CAACG,uBAAuB,CAACH,GAAG,EAAElB,KAAK,CAAC,CAAC;IACzG,MAAMsB,yBAAyB,GAAGF,gBAAgB,CAACzB,IAAI,CAAC,CAAC;IACzD;IACA;IACA;IACA,MAAM4B,oBAAoB,GAAGd,8BAAe,CAACe,aAAa,CAACF,yBAAyB,CAAC;IACrFP,YAAY,CAACU,IAAI,CAAC,GAAGF,oBAAoB,CAAC;IAC1C,OAAOd,8BAAe,CAACe,aAAa,CAACT,YAAY,CAAC;EACpD;EAEQC,iCAAiCA,CAAChB,KAAkB,EAAiB;IAC3E,MAAM0B,OAAO,GAAGrC,QAAQ,CAAC,IAAI,CAACV,iBAAiB,EAAEqB,KAAK,CAACT,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE;IACxE,MAAMwB,YAAY,GAAGW,OAAO,CAACtC,GAAG,CAAES,KAAK,IAAK,IAAI,CAAClB,iBAAiB,CAACmB,IAAI,CAACD,KAAK,CAAC,CAAC;IAC/E,OAAOkB,YAAY;EACrB;EAEA,MAAcM,uBAAuBA,CAAC/B,EAAe,EAAEqC,WAAwB,EAA4B;IACzG,IAAI,CAAC,IAAI,CAACf,KAAK,CAACtB,EAAE,CAACC,QAAQ,CAAC,CAAC,CAAC,EAAE;MAC9B,MAAMqC,WAAW,GAAG,IAAI,CAACtB,mBAAmB,CAACL,IAAI,CAAC,CAAC;QAAElB;MAAU,CAAC,KAAKA,SAAS,CAAC8C,aAAa,CAAC,CAAC,CAAC1B,OAAO,CAACb,EAAE,CAAC,CAAC;MAC3G,IAAIsC,WAAW,EAAE;QACf,MAAMb,YAAY,GAAG,MAAMa,WAAW,CAAC7C,SAAS,CAACC,qBAAqB,CAAC,IAAI,CAACZ,KAAK,CAAC0D,OAAO,CAAC;QAC1F,IAAI,CAAClB,KAAK,CAACtB,EAAE,CAACC,QAAQ,CAAC,CAAC,CAAC,GAAGwB,YAAY;MAC1C,CAAC,MAAM;QACL,MAAMgB,QAAQ,GAAG,IAAI,CAAC1D,UAAU,CAAC4B,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACZ,EAAE,CAACa,OAAO,CAACb,EAAE,CAAC,CAAC;QAC9D,IAAIyC,QAAQ,EAAE;UACZ,IAAI,CAACnB,KAAK,CAACtB,EAAE,CAACC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAIkB,8BAAe,EAAC,CAAC;QACnD,CAAC,MAAM;UACL,IAAI,CAACnB,EAAE,CAAC0C,UAAU,CAAC,CAAC,EAAE;YACpB,MAAM,IAAIC,KAAK,CAAC,kDAAkDN,WAAW,CAACpC,QAAQ,CAAC,CAAC,oBAAoBD,EAAE,CAACC,QAAQ,CAAC,CAAC;AACrI,8GAA8G,CAAC;UACrG;UACA,MAAM2C,SAAS,GAAG,MAAM,IAAI,CAAC9D,KAAK,CAAC+D,kBAAkB,CAAC7C,EAAE,CAAC;UACzD,IAAI,CAACsB,KAAK,CAACtB,EAAE,CAACC,QAAQ,CAAC,CAAC,CAAC,GAAG2C,SAAS,CAAClD,qBAAqB;QAC7D;MACF;IACF;IACA,OAAO,IAAI,CAAC4B,KAAK,CAACtB,EAAE,CAACC,QAAQ,CAAC,CAAC,CAAC;EAClC;AACF;AAAC6C,OAAA,CAAAlE,2BAAA,GAAAA,2BAAA;AAED,SAASiD,uBAAuBA,CAACjC,WAAwB,EAAEmD,YAAyB,EAAE;EACpF,IAAI,CAACA,YAAY,CAACC,QAAQ,CAAC,CAAC,IAAI,CAACD,YAAY,CAACL,UAAU,CAAC,CAAC,EAAE;IAC1D,MAAM,KAAIO,oBAAQ,EAAC,WAAWrD,WAAW,CAACK,QAAQ,CAAC,CAAC,uBAAuB8C,YAAY,CAAC9C,QAAQ,CAAC,CAAC;AACtG,qDAAqD,CAAC;EACpD;AACF;;AAEA;AACA;AACA;AACA,SAASF,QAAQA,CAACmD,KAAe,EAAElD,EAAY,EAAqB;EAClE,IAAI,CAACkD,KAAK,CAACC,OAAO,CAACnD,EAAE,CAAC,EAAE,OAAO,IAAI;EACnC;EACA,MAAMoD,KAAK,GAAGC,mBAAQ,CAACC,GAAG,CAACC,QAAQ,CAACL,KAAK,EAAElD,EAAE,CAAC;EAC9C,OAAO,IAAAwD,cAAI,EAACJ,KAAK,CAAC,CAAC,CAAC;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS9D,4BAA4BA,CAACP,UAAuB,EAAY;EACvE,MAAMmE,KAAK,GAAG,KAAIO,iBAAQ,EAAC,CAAC;EAC5B1E,UAAU,CAAC4C,OAAO,CAAElC,SAAS,IAAK;IAChCiE,cAAc,CAACjE,SAAS,CAACO,EAAE,EAAEP,SAAS,CAACgC,YAAY,EAAEyB,KAAK,CAAC;IAC3DQ,cAAc,CAACjE,SAAS,CAACO,EAAE,EAAEP,SAAS,CAACkE,eAAe,EAAET,KAAK,EAAE,iBAAiB,CAAC;IACjFQ,cAAc,CAACjE,SAAS,CAACO,EAAE,EAAEP,SAAS,CAACmE,qBAAqB,EAAEV,KAAK,EAAE,iBAAiB,CAAC;EACzF,CAAC,CAAC;EACF,OAAOA,KAAK;AACd;AAEA,SAASQ,cAAcA,CAAChD,KAAkB,EAAEe,YAA0B,EAAEyB,KAAe,EAAEW,KAAK,GAAG,cAAc,EAAE;EAC/G,MAAM7D,EAAE,GAAGU,KAAK,CAACT,QAAQ,CAAC,CAAC;EAC3BwB,YAAY,CAAChE,GAAG,CAAC,CAAC,CAACkE,OAAO,CAAEmC,UAAU,IAAK;IACzC,MAAMC,KAAK,GAAGD,UAAU,CAAC9D,EAAE,CAACC,QAAQ,CAAC,CAAC;IACtC;IACA,IAAI,CAACiD,KAAK,CAACC,OAAO,CAACnD,EAAE,CAAC,EAAEkD,KAAK,CAACc,OAAO,CAAChE,EAAE,EAAEU,KAAK,CAAC;IAChD,IAAI,CAACwC,KAAK,CAACC,OAAO,CAACY,KAAK,CAAC,EAAEb,KAAK,CAACc,OAAO,CAACD,KAAK,EAAED,UAAU,CAAC9D,EAAE,CAAC;IAC9DkD,KAAK,CAACe,OAAO,CAACjE,EAAE,EAAE+D,KAAK,EAAEF,KAAK,CAAC;EACjC,CAAC,CAAC;AACJ","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- import { ComponentID, ComponentIdList } from '@teambit/component-id';
2
- import { Tmp } from '@teambit/legacy.scope';
1
+ import type { ComponentID, ComponentIdList } from '@teambit/component-id';
2
+ import type { Tmp } from '@teambit/legacy.scope';
3
3
  export type MessagePerComponent = {
4
4
  id: ComponentID;
5
5
  msg: string;
@@ -1 +1 @@
1
- {"version":3,"names":["_openEditor","data","_interopRequireDefault","require","_fsExtra","_child_process","_legacy","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","DEFAULT_MESSAGE","DEFAULT_AUTO_TAG_MESSAGE","formatId","id","addSpace","str","DEFAULT_EDITOR","MessagePerComponentFetcher","constructor","idsToTag","idsToAutoTag","idsToTagObject","toObject","idsToAutoTagObject","getMessagesFromEditor","tmp","editor","template","getTemplate","templateFilePath","save","editorName","undefined","openEditor","afterSave","fs","readFile","Error","remove","parseFileWithMessages","getIdsToTagStr","getIdsToAutoTagStr","idsStr","ids","map","join","getAutoTagTemplate","length","messagesFileContent","defaultMessage","defaultAutoTagMessage","results","idsToTagStr","idsToAutoTagStr","messagesSplit","split","startedDefaultMessage","startedIdsToTag","startedAutoTagDefaultMessage","startedIdsToAutoTag","forEach","line","trim","startsWith","replace","idToTag","find","removeId","msg","push","idToAutoTag","lastEnteredId","file","column","editorFromEnvVar","process","env","EDITOR","VISUAL","editorData","make","isTerminalEditor","binary","loader","stop","Promise","resolve","reject","editorProcess","spawn","arguments","stdio","on","code","keys","exports"],"sources":["message-per-component.ts"],"sourcesContent":["import openEditor from 'open-editor';\nimport fs from 'fs-extra';\nimport { ComponentID, ComponentIdList } from '@teambit/component-id';\nimport { spawn } from 'child_process';\nimport { Tmp } from '@teambit/legacy.scope';\nimport { loader } from '@teambit/legacy.loader';\n\nconst DEFAULT_MESSAGE = 'DEFAULT:';\nconst DEFAULT_AUTO_TAG_MESSAGE = 'DEFAULT-AUTO-TAG:';\nconst formatId = (id: string) => `${id}:`;\nconst addSpace = (str: string) => `${str} `;\nconst DEFAULT_EDITOR = 'vim';\n\nexport type MessagePerComponent = { id: ComponentID; msg: string };\n\nexport class MessagePerComponentFetcher {\n private idsToTagObject: { [bitIdStr: string]: ComponentID };\n private idsToAutoTagObject: { [bitIdStr: string]: ComponentID };\n constructor(idsToTag: ComponentIdList, idsToAutoTag: ComponentIdList) {\n this.idsToTagObject = idsToTag.toObject();\n this.idsToAutoTagObject = idsToAutoTag.toObject();\n }\n\n async getMessagesFromEditor(tmp: Tmp, editor: string | boolean): Promise<MessagePerComponent[]> {\n const template = this.getTemplate();\n const templateFilePath = await tmp.save(template);\n const editorName = typeof editor === 'string' ? editor : undefined;\n await this.openEditor(templateFilePath, editorName);\n const afterSave = await fs.readFile(templateFilePath, 'utf-8');\n if (template === afterSave) {\n throw new Error(`no changes have been done to the messages templates. consider using \"--message\" flag instead`);\n }\n await tmp.remove(templateFilePath);\n return this.parseFileWithMessages(afterSave);\n }\n\n getTemplate() {\n const idsToTag = this.getIdsToTagStr();\n const idsToAutoTag = this.getIdsToAutoTagStr();\n const idsStr = (ids: string[]) => ids.map(formatId).map(addSpace).join('\\n');\n const getAutoTagTemplate = () => {\n if (!idsToAutoTag.length) return '';\n return `\n# The following components will be auto-tagged (due to dependencies bump)\n# You can leave the following default message to avoid setting messages for these components\n${DEFAULT_AUTO_TAG_MESSAGE} bump dependencies versions\n${idsStr(idsToAutoTag)}\n`;\n };\n return `# Please set the messages for the following components.\n# You can enter a default-message to be applied to all empty components. this is optional.\n${addSpace(DEFAULT_MESSAGE)}\n${idsStr(idsToTag)}\n${getAutoTagTemplate()}\n`;\n }\n\n parseFileWithMessages(messagesFileContent: string): MessagePerComponent[] {\n let defaultMessage: string | null = null;\n let defaultAutoTagMessage: string | null = null;\n const results: MessagePerComponent[] = [];\n\n const idsToTagStr = this.getIdsToTagStr();\n const idsToAutoTagStr = this.getIdsToAutoTagStr();\n const messagesSplit = messagesFileContent.split('\\n');\n\n // there are 4 sections in the template file. these 4 variables keep track in what section we're at.\n let startedDefaultMessage = false;\n let startedIdsToTag = false;\n let startedAutoTagDefaultMessage = false;\n let startedIdsToAutoTag = false;\n\n messagesSplit.forEach((line) => {\n line = line.trim();\n if (!line) {\n return; // an empty line\n }\n if (line.startsWith('#')) {\n return; // it's a comment\n }\n if (line.startsWith(DEFAULT_MESSAGE)) {\n defaultMessage = line.replace(DEFAULT_MESSAGE, '').trim();\n startedDefaultMessage = true;\n return;\n }\n const idToTag = idsToTagStr.find((id) => line.startsWith(formatId(id)));\n const removeId = (id: string) => line.replace(formatId(id), '').trim();\n if (idToTag) {\n startedIdsToTag = true;\n const msg = removeId(idToTag) || defaultMessage;\n if (!msg) {\n throw new Error(`error: \"${idToTag}\" has no message and the default-message was not set`);\n }\n results.push({\n id: this.idsToTagObject[idToTag],\n msg,\n });\n return;\n }\n if (line.startsWith(DEFAULT_AUTO_TAG_MESSAGE)) {\n startedAutoTagDefaultMessage = true;\n defaultAutoTagMessage = line.replace(DEFAULT_AUTO_TAG_MESSAGE, '').trim();\n return;\n }\n const idToAutoTag = idsToAutoTagStr.find((id) => line.startsWith(formatId(id)));\n if (idToAutoTag) {\n startedIdsToAutoTag = true;\n const msg = removeId(idToAutoTag) || defaultAutoTagMessage;\n if (!msg) {\n throw new Error(`error: \"${idToTag}\" has no message and the default-auto-message was not set`);\n }\n results.push({\n id: this.idsToAutoTagObject[idToAutoTag],\n msg,\n });\n return;\n }\n // must be another line of one of the strings above. let's figure out what was it.\n // the template starts with the default-message, followed by the ids to tag, followed by the\n // auto-tag-default-message, followed by the ids to auto-tag.\n if (!startedDefaultMessage) {\n throw new Error(\n `error: the following line was added \"${line}\". please add the messages to the ids and default fields only`\n );\n }\n if (!startedIdsToTag) {\n defaultMessage += `\\n${line}`;\n return;\n }\n if (!startedAutoTagDefaultMessage) {\n const lastEnteredId = results[results.length - 1];\n lastEnteredId.msg += `\\n${line}`;\n return;\n }\n if (!startedIdsToAutoTag) {\n defaultAutoTagMessage += `\\n${line}`;\n return;\n }\n const lastEnteredId = results[results.length - 1];\n lastEnteredId.msg += `\\n${line}`;\n });\n\n return results;\n }\n\n private async openEditor(templateFilePath: string, editor?: string) {\n const file = { file: templateFilePath, column: DEFAULT_MESSAGE.length + 1, line: 3 };\n\n const editorFromEnvVar = process.env.EDITOR || process.env.VISUAL; // taken from env-editor package\n if (!editorFromEnvVar && !editor) {\n editor = DEFAULT_EDITOR;\n }\n const editorData = openEditor.make([file], { editor });\n if (!editorData.isTerminalEditor) {\n throw new Error(\n `your editor \"${editorData.binary}\" is not a terminal editor. either set $EDITOR in your env variable or pass \"--editor\" with a terminal editor (e.g. \"nano\", \"vim\")`\n );\n }\n loader.stop();\n return new Promise((resolve, reject) => {\n const editorProcess = spawn(editorData.binary, editorData.arguments, { stdio: 'inherit' });\n editorProcess.on('exit', (code) => {\n if (code === 0) {\n resolve('completed');\n } else {\n reject(new Error(`${editor} had non zero exit code: ${code}`));\n }\n });\n });\n }\n\n private getIdsToTagStr() {\n return Object.keys(this.idsToTagObject);\n }\n private getIdsToAutoTagStr() {\n return Object.keys(this.idsToAutoTagObject);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_openEditor","data","_interopRequireDefault","require","_fsExtra","_child_process","_legacy","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","DEFAULT_MESSAGE","DEFAULT_AUTO_TAG_MESSAGE","formatId","id","addSpace","str","DEFAULT_EDITOR","MessagePerComponentFetcher","constructor","idsToTag","idsToAutoTag","idsToTagObject","toObject","idsToAutoTagObject","getMessagesFromEditor","tmp","editor","template","getTemplate","templateFilePath","save","editorName","undefined","openEditor","afterSave","fs","readFile","Error","remove","parseFileWithMessages","getIdsToTagStr","getIdsToAutoTagStr","idsStr","ids","map","join","getAutoTagTemplate","length","messagesFileContent","defaultMessage","defaultAutoTagMessage","results","idsToTagStr","idsToAutoTagStr","messagesSplit","split","startedDefaultMessage","startedIdsToTag","startedAutoTagDefaultMessage","startedIdsToAutoTag","forEach","line","trim","startsWith","replace","idToTag","find","removeId","msg","push","idToAutoTag","lastEnteredId","file","column","editorFromEnvVar","process","env","EDITOR","VISUAL","editorData","make","isTerminalEditor","binary","loader","stop","Promise","resolve","reject","editorProcess","spawn","arguments","stdio","on","code","keys","exports"],"sources":["message-per-component.ts"],"sourcesContent":["import openEditor from 'open-editor';\nimport fs from 'fs-extra';\nimport type { ComponentID, ComponentIdList } from '@teambit/component-id';\nimport { spawn } from 'child_process';\nimport type { Tmp } from '@teambit/legacy.scope';\nimport { loader } from '@teambit/legacy.loader';\n\nconst DEFAULT_MESSAGE = 'DEFAULT:';\nconst DEFAULT_AUTO_TAG_MESSAGE = 'DEFAULT-AUTO-TAG:';\nconst formatId = (id: string) => `${id}:`;\nconst addSpace = (str: string) => `${str} `;\nconst DEFAULT_EDITOR = 'vim';\n\nexport type MessagePerComponent = { id: ComponentID; msg: string };\n\nexport class MessagePerComponentFetcher {\n private idsToTagObject: { [bitIdStr: string]: ComponentID };\n private idsToAutoTagObject: { [bitIdStr: string]: ComponentID };\n constructor(idsToTag: ComponentIdList, idsToAutoTag: ComponentIdList) {\n this.idsToTagObject = idsToTag.toObject();\n this.idsToAutoTagObject = idsToAutoTag.toObject();\n }\n\n async getMessagesFromEditor(tmp: Tmp, editor: string | boolean): Promise<MessagePerComponent[]> {\n const template = this.getTemplate();\n const templateFilePath = await tmp.save(template);\n const editorName = typeof editor === 'string' ? editor : undefined;\n await this.openEditor(templateFilePath, editorName);\n const afterSave = await fs.readFile(templateFilePath, 'utf-8');\n if (template === afterSave) {\n throw new Error(`no changes have been done to the messages templates. consider using \"--message\" flag instead`);\n }\n await tmp.remove(templateFilePath);\n return this.parseFileWithMessages(afterSave);\n }\n\n getTemplate() {\n const idsToTag = this.getIdsToTagStr();\n const idsToAutoTag = this.getIdsToAutoTagStr();\n const idsStr = (ids: string[]) => ids.map(formatId).map(addSpace).join('\\n');\n const getAutoTagTemplate = () => {\n if (!idsToAutoTag.length) return '';\n return `\n# The following components will be auto-tagged (due to dependencies bump)\n# You can leave the following default message to avoid setting messages for these components\n${DEFAULT_AUTO_TAG_MESSAGE} bump dependencies versions\n${idsStr(idsToAutoTag)}\n`;\n };\n return `# Please set the messages for the following components.\n# You can enter a default-message to be applied to all empty components. this is optional.\n${addSpace(DEFAULT_MESSAGE)}\n${idsStr(idsToTag)}\n${getAutoTagTemplate()}\n`;\n }\n\n parseFileWithMessages(messagesFileContent: string): MessagePerComponent[] {\n let defaultMessage: string | null = null;\n let defaultAutoTagMessage: string | null = null;\n const results: MessagePerComponent[] = [];\n\n const idsToTagStr = this.getIdsToTagStr();\n const idsToAutoTagStr = this.getIdsToAutoTagStr();\n const messagesSplit = messagesFileContent.split('\\n');\n\n // there are 4 sections in the template file. these 4 variables keep track in what section we're at.\n let startedDefaultMessage = false;\n let startedIdsToTag = false;\n let startedAutoTagDefaultMessage = false;\n let startedIdsToAutoTag = false;\n\n messagesSplit.forEach((line) => {\n line = line.trim();\n if (!line) {\n return; // an empty line\n }\n if (line.startsWith('#')) {\n return; // it's a comment\n }\n if (line.startsWith(DEFAULT_MESSAGE)) {\n defaultMessage = line.replace(DEFAULT_MESSAGE, '').trim();\n startedDefaultMessage = true;\n return;\n }\n const idToTag = idsToTagStr.find((id) => line.startsWith(formatId(id)));\n const removeId = (id: string) => line.replace(formatId(id), '').trim();\n if (idToTag) {\n startedIdsToTag = true;\n const msg = removeId(idToTag) || defaultMessage;\n if (!msg) {\n throw new Error(`error: \"${idToTag}\" has no message and the default-message was not set`);\n }\n results.push({\n id: this.idsToTagObject[idToTag],\n msg,\n });\n return;\n }\n if (line.startsWith(DEFAULT_AUTO_TAG_MESSAGE)) {\n startedAutoTagDefaultMessage = true;\n defaultAutoTagMessage = line.replace(DEFAULT_AUTO_TAG_MESSAGE, '').trim();\n return;\n }\n const idToAutoTag = idsToAutoTagStr.find((id) => line.startsWith(formatId(id)));\n if (idToAutoTag) {\n startedIdsToAutoTag = true;\n const msg = removeId(idToAutoTag) || defaultAutoTagMessage;\n if (!msg) {\n throw new Error(`error: \"${idToTag}\" has no message and the default-auto-message was not set`);\n }\n results.push({\n id: this.idsToAutoTagObject[idToAutoTag],\n msg,\n });\n return;\n }\n // must be another line of one of the strings above. let's figure out what was it.\n // the template starts with the default-message, followed by the ids to tag, followed by the\n // auto-tag-default-message, followed by the ids to auto-tag.\n if (!startedDefaultMessage) {\n throw new Error(\n `error: the following line was added \"${line}\". please add the messages to the ids and default fields only`\n );\n }\n if (!startedIdsToTag) {\n defaultMessage += `\\n${line}`;\n return;\n }\n if (!startedAutoTagDefaultMessage) {\n const lastEnteredId = results[results.length - 1];\n lastEnteredId.msg += `\\n${line}`;\n return;\n }\n if (!startedIdsToAutoTag) {\n defaultAutoTagMessage += `\\n${line}`;\n return;\n }\n const lastEnteredId = results[results.length - 1];\n lastEnteredId.msg += `\\n${line}`;\n });\n\n return results;\n }\n\n private async openEditor(templateFilePath: string, editor?: string) {\n const file = { file: templateFilePath, column: DEFAULT_MESSAGE.length + 1, line: 3 };\n\n const editorFromEnvVar = process.env.EDITOR || process.env.VISUAL; // taken from env-editor package\n if (!editorFromEnvVar && !editor) {\n editor = DEFAULT_EDITOR;\n }\n const editorData = openEditor.make([file], { editor });\n if (!editorData.isTerminalEditor) {\n throw new Error(\n `your editor \"${editorData.binary}\" is not a terminal editor. either set $EDITOR in your env variable or pass \"--editor\" with a terminal editor (e.g. \"nano\", \"vim\")`\n );\n }\n loader.stop();\n return new Promise((resolve, reject) => {\n const editorProcess = spawn(editorData.binary, editorData.arguments, { stdio: 'inherit' });\n editorProcess.on('exit', (code) => {\n if (code === 0) {\n resolve('completed');\n } else {\n reject(new Error(`${editor} had non zero exit code: ${code}`));\n }\n });\n });\n }\n\n private getIdsToTagStr() {\n return Object.keys(this.idsToTagObject);\n }\n private getIdsToAutoTagStr() {\n return Object.keys(this.idsToAutoTagObject);\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- import { Command, CommandOptions } from '@teambit/cli';
2
- import { SnappingMain } from './snapping.main.runtime';
1
+ import type { Command, CommandOptions } from '@teambit/cli';
2
+ import type { SnappingMain } from './snapping.main.runtime';
3
3
  export default class ResetCmd implements Command {
4
4
  private snapping;
5
5
  name: string;
@@ -1 +1 @@
1
- {"version":3,"names":["_bitError","data","require","_chalk","_interopRequireDefault","_legacy","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","ResetCmd","constructor","snapping","name","description","COMPONENT_PATTERN_HELP","BASE_DOCS_DOMAIN","report","pattern","all","head","force","soft","neverExported","compIds","resetNeverExported","chalk","green","join","BitError","results","isSoftUntag","reset","titleSuffix","title","length","components","map","result","cyan","id","toStringWithoutVersion","versions","exports"],"sources":["reset-cmd.ts"],"sourcesContent":["import { BitError } from '@teambit/bit-error';\nimport chalk from 'chalk';\nimport { Command, CommandOptions } from '@teambit/cli';\nimport { BASE_DOCS_DOMAIN, COMPONENT_PATTERN_HELP } from '@teambit/legacy.constants';\nimport { SnappingMain } from './snapping.main.runtime';\n\nexport default class ResetCmd implements Command {\n name = 'reset [component-pattern]';\n description = 'revert tagged or snapped versions for component(s)';\n arguments = [\n {\n name: 'component-pattern',\n description: COMPONENT_PATTERN_HELP,\n },\n ];\n group = 'version-control';\n extendedDescription = `${BASE_DOCS_DOMAIN}components/tags#undoing-a-tag`;\n alias = '';\n options = [\n ['a', 'all', 'revert all unexported tags/snaps for all components'],\n ['', 'head', 'revert the head tag/snap only (by default, all local tags/snaps are reverted)'],\n ['', 'soft', 'revert only soft-tags (components tagged with --soft flag)'],\n [\n 'f',\n 'force',\n \"revert the tag even if it's used as a dependency. WARNING: components that depend on this tag will be corrupted\",\n ],\n ['', 'never-exported', 'reset only components that were never exported'],\n ] as CommandOptions;\n loader = true;\n\n constructor(private snapping: SnappingMain) {}\n\n async report(\n [pattern]: [string],\n {\n all = false,\n head = false,\n force = false,\n soft = false,\n neverExported = false,\n }: { all?: boolean; head?: boolean; force?: boolean; soft?: boolean; neverExported?: boolean }\n ) {\n if (neverExported) {\n const compIds = await this.snapping.resetNeverExported();\n return chalk.green(`successfully reset the following never-exported components:\\n${compIds.join('\\n')}`);\n }\n if (!pattern && !all) {\n throw new BitError('please specify a component-pattern or use --all flag');\n }\n if (pattern && all) {\n throw new BitError('please specify either a component-pattern or --all flag, not both');\n }\n if (soft && head) {\n throw new BitError('please specify either --soft or --head flag, not both');\n }\n const { results, isSoftUntag } = await this.snapping.reset(pattern, head, force, soft);\n const titleSuffix = isSoftUntag ? 'soft-untagged (are not candidates for tagging any more)' : 'reset';\n const title = chalk.green(`${results.length} component(s) were ${titleSuffix}:\\n`);\n const components = results.map((result) => {\n return `${chalk.cyan(result.id.toStringWithoutVersion())}. version(s): ${result.versions.join(', ')}`;\n });\n return title + components.join('\\n');\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_bitError","data","require","_chalk","_interopRequireDefault","_legacy","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","ResetCmd","constructor","snapping","name","description","COMPONENT_PATTERN_HELP","BASE_DOCS_DOMAIN","report","pattern","all","head","force","soft","neverExported","compIds","resetNeverExported","chalk","green","join","BitError","results","isSoftUntag","reset","titleSuffix","title","length","components","map","result","cyan","id","toStringWithoutVersion","versions","exports"],"sources":["reset-cmd.ts"],"sourcesContent":["import { BitError } from '@teambit/bit-error';\nimport chalk from 'chalk';\nimport type { Command, CommandOptions } from '@teambit/cli';\nimport { BASE_DOCS_DOMAIN, COMPONENT_PATTERN_HELP } from '@teambit/legacy.constants';\nimport type { SnappingMain } from './snapping.main.runtime';\n\nexport default class ResetCmd implements Command {\n name = 'reset [component-pattern]';\n description = 'revert tagged or snapped versions for component(s)';\n arguments = [\n {\n name: 'component-pattern',\n description: COMPONENT_PATTERN_HELP,\n },\n ];\n group = 'version-control';\n extendedDescription = `${BASE_DOCS_DOMAIN}components/tags#undoing-a-tag`;\n alias = '';\n options = [\n ['a', 'all', 'revert all unexported tags/snaps for all components'],\n ['', 'head', 'revert the head tag/snap only (by default, all local tags/snaps are reverted)'],\n ['', 'soft', 'revert only soft-tags (components tagged with --soft flag)'],\n [\n 'f',\n 'force',\n \"revert the tag even if it's used as a dependency. WARNING: components that depend on this tag will be corrupted\",\n ],\n ['', 'never-exported', 'reset only components that were never exported'],\n ] as CommandOptions;\n loader = true;\n\n constructor(private snapping: SnappingMain) {}\n\n async report(\n [pattern]: [string],\n {\n all = false,\n head = false,\n force = false,\n soft = false,\n neverExported = false,\n }: { all?: boolean; head?: boolean; force?: boolean; soft?: boolean; neverExported?: boolean }\n ) {\n if (neverExported) {\n const compIds = await this.snapping.resetNeverExported();\n return chalk.green(`successfully reset the following never-exported components:\\n${compIds.join('\\n')}`);\n }\n if (!pattern && !all) {\n throw new BitError('please specify a component-pattern or use --all flag');\n }\n if (pattern && all) {\n throw new BitError('please specify either a component-pattern or --all flag, not both');\n }\n if (soft && head) {\n throw new BitError('please specify either --soft or --head flag, not both');\n }\n const { results, isSoftUntag } = await this.snapping.reset(pattern, head, force, soft);\n const titleSuffix = isSoftUntag ? 'soft-untagged (are not candidates for tagging any more)' : 'reset';\n const title = chalk.green(`${results.length} component(s) were ${titleSuffix}:\\n`);\n const components = results.map((result) => {\n return `${chalk.cyan(result.id.toStringWithoutVersion())}. version(s): ${result.versions.join(', ')}`;\n });\n return title + components.join('\\n');\n }\n}\n"],"mappings":";;;;;;AAAA,SAAAA,UAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,SAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,OAAA;EAAA,MAAAF,IAAA,GAAAG,sBAAA,CAAAF,OAAA;EAAAC,MAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAI,QAAA;EAAA,MAAAJ,IAAA,GAAAC,OAAA;EAAAG,OAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAqF,SAAAG,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,gBAAAH,CAAA,EAAAI,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAE,cAAA,CAAAF,CAAA,MAAAJ,CAAA,GAAAO,MAAA,CAAAC,cAAA,CAAAR,CAAA,EAAAI,CAAA,IAAAK,KAAA,EAAAJ,CAAA,EAAAK,UAAA,MAAAC,YAAA,MAAAC,QAAA,UAAAZ,CAAA,CAAAI,CAAA,IAAAC,CAAA,EAAAL,CAAA;AAAA,SAAAM,eAAAD,CAAA,QAAAQ,CAAA,GAAAC,YAAA,CAAAT,CAAA,uCAAAQ,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAT,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAL,CAAA,GAAAK,CAAA,CAAAU,MAAA,CAAAC,WAAA,kBAAAhB,CAAA,QAAAa,CAAA,GAAAb,CAAA,CAAAiB,IAAA,CAAAZ,CAAA,EAAAD,CAAA,uCAAAS,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAAd,CAAA,GAAAe,MAAA,GAAAC,MAAA,EAAAf,CAAA;AAGtE,MAAMgB,QAAQ,CAAoB;EAyB/CC,WAAWA,CAASC,QAAsB,EAAE;IAAA,KAAxBA,QAAsB,GAAtBA,QAAsB;IAAApB,eAAA,eAxBnC,2BAA2B;IAAAA,eAAA,sBACpB,oDAAoD;IAAAA,eAAA,oBACtD,CACV;MACEqB,IAAI,EAAE,mBAAmB;MACzBC,WAAW,EAAEC;IACf,CAAC,CACF;IAAAvB,eAAA,gBACO,iBAAiB;IAAAA,eAAA,8BACH,GAAGwB,0BAAgB,+BAA+B;IAAAxB,eAAA,gBAChE,EAAE;IAAAA,eAAA,kBACA,CACR,CAAC,GAAG,EAAE,KAAK,EAAE,qDAAqD,CAAC,EACnE,CAAC,EAAE,EAAE,MAAM,EAAE,+EAA+E,CAAC,EAC7F,CAAC,EAAE,EAAE,MAAM,EAAE,4DAA4D,CAAC,EAC1E,CACE,GAAG,EACH,OAAO,EACP,iHAAiH,CAClH,EACD,CAAC,EAAE,EAAE,gBAAgB,EAAE,gDAAgD,CAAC,CACzE;IAAAA,eAAA,iBACQ,IAAI;EAEgC;EAE7C,MAAMyB,MAAMA,CACV,CAACC,OAAO,CAAW,EACnB;IACEC,GAAG,GAAG,KAAK;IACXC,IAAI,GAAG,KAAK;IACZC,KAAK,GAAG,KAAK;IACbC,IAAI,GAAG,KAAK;IACZC,aAAa,GAAG;EAC2E,CAAC,EAC9F;IACA,IAAIA,aAAa,EAAE;MACjB,MAAMC,OAAO,GAAG,MAAM,IAAI,CAACZ,QAAQ,CAACa,kBAAkB,CAAC,CAAC;MACxD,OAAOC,gBAAK,CAACC,KAAK,CAAC,gEAAgEH,OAAO,CAACI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1G;IACA,IAAI,CAACV,OAAO,IAAI,CAACC,GAAG,EAAE;MACpB,MAAM,KAAIU,oBAAQ,EAAC,sDAAsD,CAAC;IAC5E;IACA,IAAIX,OAAO,IAAIC,GAAG,EAAE;MAClB,MAAM,KAAIU,oBAAQ,EAAC,mEAAmE,CAAC;IACzF;IACA,IAAIP,IAAI,IAAIF,IAAI,EAAE;MAChB,MAAM,KAAIS,oBAAQ,EAAC,uDAAuD,CAAC;IAC7E;IACA,MAAM;MAAEC,OAAO;MAAEC;IAAY,CAAC,GAAG,MAAM,IAAI,CAACnB,QAAQ,CAACoB,KAAK,CAACd,OAAO,EAAEE,IAAI,EAAEC,KAAK,EAAEC,IAAI,CAAC;IACtF,MAAMW,WAAW,GAAGF,WAAW,GAAG,yDAAyD,GAAG,OAAO;IACrG,MAAMG,KAAK,GAAGR,gBAAK,CAACC,KAAK,CAAC,GAAGG,OAAO,CAACK,MAAM,sBAAsBF,WAAW,KAAK,CAAC;IAClF,MAAMG,UAAU,GAAGN,OAAO,CAACO,GAAG,CAAEC,MAAM,IAAK;MACzC,OAAO,GAAGZ,gBAAK,CAACa,IAAI,CAACD,MAAM,CAACE,EAAE,CAACC,sBAAsB,CAAC,CAAC,CAAC,iBAAiBH,MAAM,CAACI,QAAQ,CAACd,IAAI,CAAC,IAAI,CAAC,EAAE;IACvG,CAAC,CAAC;IACF,OAAOM,KAAK,GAAGE,UAAU,CAACR,IAAI,CAAC,IAAI,CAAC;EACtC;AACF;AAACe,OAAA,CAAApD,OAAA,GAAAmB,QAAA","ignoreList":[]}
@@ -1,8 +1,8 @@
1
- import { ComponentID } from '@teambit/component-id';
2
- import { Consumer } from '@teambit/legacy.consumer';
3
- import { Lane, ModelComponent } from '@teambit/objects';
4
- import { RemoveMain } from '@teambit/remove';
5
- import { Workspace } from '@teambit/workspace';
1
+ import type { ComponentID } from '@teambit/component-id';
2
+ import type { Consumer } from '@teambit/legacy.consumer';
3
+ import type { Lane, ModelComponent } from '@teambit/objects';
4
+ import type { RemoveMain } from '@teambit/remove';
5
+ import type { Workspace } from '@teambit/workspace';
6
6
  export type ResetResult = {
7
7
  id: ComponentID;
8
8
  versions: string[];
@@ -1 +1 @@
1
- {"version":3,"names":["_bitError","data","require","_legacy","_legacy2","_legacy3","removeLocalVersion","consumer","id","lane","head","force","component","scope","getModelComponent","idStr","toString","fromBitmap","bitMap","getComponentIdIfExist","localVersions","getLocalHashes","objects","length","BitError","headRef","getHeadRegardlessOfLane","Error","find","v","isEqual","versionsToRemove","versionsToRemoveStr","switchHashesWithTagsIfExist","dependencyGraph","DependencyGraph","loadAllVersions","forEach","versionToRemove","idWithVersion","toComponentId","changeVersion","dependents","getImmediateDependentsPerId","join","headBefore","getHead","sources","removeComponentVersions","headAfter","versionToSetInBitmap","divergeData","getDivergeData","snapBeforeDetached","commonSnapBeforeDiverge","getTagOfRefIfExists","versions","removeLocalVersionsForAllComponents","workspace","remove","componentsToUntag","getComponentsWithOptionToUntag","removeLocalVersionsForMultipleComponents","candidateComponentsIds","map","bitId","candidateComponentsIdsStr","dependentsNotCandidates","filter","dependent","includes","version","logger","debug","Promise","all","componentList","ComponentsList","laneObj","getCurrentLaneObject","components","listExportPendingComponents","removedStagedIds","getRemovedStaged","removedStagedBitIds","nonExistsInStaged","c","isEqualWithoutVersion","modelComps","push"],"sources":["reset-component.ts"],"sourcesContent":["import { BitError } from '@teambit/bit-error';\nimport { ComponentID } from '@teambit/component-id';\nimport { Consumer } from '@teambit/legacy.consumer';\nimport { ComponentsList } from '@teambit/legacy.component-list';\nimport { logger } from '@teambit/legacy.logger';\nimport { Lane, ModelComponent } from '@teambit/objects';\nimport { RemoveMain } from '@teambit/remove';\nimport { DependencyGraph } from '@teambit/legacy.dependency-graph';\nimport { Workspace } from '@teambit/workspace';\n\nexport type ResetResult = {\n id: ComponentID;\n versions: string[];\n component?: ModelComponent;\n /**\n * relevant when the component was detached head so the head didn't change.\n * we want .bitmap to have the version before the detachment. not as the head.\n */\n versionToSetInBitmap?: string;\n};\n\n/**\n * If head is false, remove all local versions.\n */\nexport async function removeLocalVersion(\n consumer: Consumer,\n id: ComponentID,\n lane?: Lane,\n head?: boolean,\n force = false\n): Promise<ResetResult> {\n const component: ModelComponent = await consumer.scope.getModelComponent(id);\n const idStr = id.toString();\n const fromBitmap = consumer.bitMap.getComponentIdIfExist(id);\n const localVersions = await component.getLocalHashes(consumer.scope.objects, fromBitmap);\n if (!localVersions.length) throw new BitError(`unable to untag ${idStr}, the component is not staged`);\n const headRef = component.getHeadRegardlessOfLane();\n if (!headRef) {\n throw new Error(`unable to reset ${idStr}, it has not head`);\n }\n if (head && !localVersions.find((v) => v.isEqual(headRef))) {\n throw new Error(`unable to reset ${idStr}, the head ${headRef.toString()} is exported`);\n }\n const versionsToRemove = head ? [headRef] : localVersions;\n const versionsToRemoveStr = component.switchHashesWithTagsIfExist(versionsToRemove);\n\n if (!force) {\n const dependencyGraph = await DependencyGraph.loadAllVersions(consumer.scope);\n\n versionsToRemoveStr.forEach((versionToRemove) => {\n const idWithVersion = component.toComponentId().changeVersion(versionToRemove);\n const dependents = dependencyGraph.getImmediateDependentsPerId(idWithVersion);\n if (dependents.length) {\n throw new BitError(\n `unable to reset ${idStr}, the version ${versionToRemove} has the following dependent(s) ${dependents.join(\n ', '\n )}`\n );\n }\n });\n }\n\n const headBefore = component.getHead();\n await consumer.scope.sources.removeComponentVersions(component, versionsToRemove, versionsToRemoveStr, lane, head);\n const headAfter = component.getHead();\n let versionToSetInBitmap;\n if (headBefore && headAfter && headBefore.isEqual(headAfter) && !lane) {\n // if it's on main and the head didn't change, it means that it was in a detached-head state.\n const divergeData = component.getDivergeData();\n const snapBeforeDetached = divergeData.commonSnapBeforeDiverge;\n if (snapBeforeDetached) versionToSetInBitmap = component.getTagOfRefIfExists(snapBeforeDetached);\n }\n\n return { id, versions: versionsToRemoveStr, component, versionToSetInBitmap };\n}\n\nexport async function removeLocalVersionsForAllComponents(\n workspace: Workspace,\n remove: RemoveMain,\n lane?: Lane,\n head?: boolean\n): Promise<ResetResult[]> {\n const componentsToUntag = await getComponentsWithOptionToUntag(workspace, remove);\n const force = true; // when removing local versions from all components, no need to check if the component is used as a dependency\n return removeLocalVersionsForMultipleComponents(workspace.consumer, componentsToUntag, lane, head, force);\n}\n\nexport async function removeLocalVersionsForMultipleComponents(\n consumer: Consumer,\n componentsToUntag: ModelComponent[],\n lane?: Lane,\n head?: boolean,\n force?: boolean\n) {\n if (!componentsToUntag.length) {\n throw new BitError(`no components found to reset on your workspace`);\n }\n // if only head is removed, there is risk of deleting dependencies version without their dependents.\n if (!force && head) {\n const dependencyGraph = await DependencyGraph.loadAllVersions(consumer.scope);\n const candidateComponentsIds = componentsToUntag.map((component) => {\n const bitId = component.toComponentId();\n const headRef = component.getHeadRegardlessOfLane();\n if (!headRef)\n throw new Error(`component ${bitId.toString()} does not have head. it should not be a candidate for reset`);\n\n return bitId.changeVersion(component.getTagOfRefIfExists(headRef) || headRef.toString());\n });\n const candidateComponentsIdsStr = candidateComponentsIds.map((id) => id.toString());\n candidateComponentsIds.forEach((bitId: ComponentID) => {\n const dependents = dependencyGraph.getImmediateDependentsPerId(bitId);\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n const dependentsNotCandidates = dependents.filter((dependent) => !candidateComponentsIdsStr.includes(dependent));\n if (dependentsNotCandidates.length) {\n throw new BitError( // $FlowFixMe\n `unable to untag ${bitId}, the version ${bitId.version} has the following dependent(s) ${dependents.join(\n ', '\n )}`\n );\n }\n });\n }\n logger.debug(`found ${componentsToUntag.length} components to untag`);\n return Promise.all(\n componentsToUntag.map((component) => removeLocalVersion(consumer, component.toComponentId(), lane, head, force))\n );\n}\n\nexport async function getComponentsWithOptionToUntag(\n workspace: Workspace,\n remove: RemoveMain\n): Promise<ModelComponent[]> {\n const componentList = new ComponentsList(workspace);\n const laneObj = await workspace.getCurrentLaneObject();\n const components: ModelComponent[] = await componentList.listExportPendingComponents(laneObj);\n const removedStagedIds = await remove.getRemovedStaged();\n if (!removedStagedIds.length) return components;\n const removedStagedBitIds = removedStagedIds.map((id) => id);\n const nonExistsInStaged = removedStagedBitIds.filter(\n (id) => !components.find((c) => c.toComponentId().isEqualWithoutVersion(id))\n );\n if (!nonExistsInStaged.length) return components;\n const modelComps = await Promise.all(nonExistsInStaged.map((id) => workspace.consumer.scope.getModelComponent(id)));\n components.push(...modelComps);\n\n return components;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_bitError","data","require","_legacy","_legacy2","_legacy3","removeLocalVersion","consumer","id","lane","head","force","component","scope","getModelComponent","idStr","toString","fromBitmap","bitMap","getComponentIdIfExist","localVersions","getLocalHashes","objects","length","BitError","headRef","getHeadRegardlessOfLane","Error","find","v","isEqual","versionsToRemove","versionsToRemoveStr","switchHashesWithTagsIfExist","dependencyGraph","DependencyGraph","loadAllVersions","forEach","versionToRemove","idWithVersion","toComponentId","changeVersion","dependents","getImmediateDependentsPerId","join","headBefore","getHead","sources","removeComponentVersions","headAfter","versionToSetInBitmap","divergeData","getDivergeData","snapBeforeDetached","commonSnapBeforeDiverge","getTagOfRefIfExists","versions","removeLocalVersionsForAllComponents","workspace","remove","componentsToUntag","getComponentsWithOptionToUntag","removeLocalVersionsForMultipleComponents","candidateComponentsIds","map","bitId","candidateComponentsIdsStr","dependentsNotCandidates","filter","dependent","includes","version","logger","debug","Promise","all","componentList","ComponentsList","laneObj","getCurrentLaneObject","components","listExportPendingComponents","removedStagedIds","getRemovedStaged","removedStagedBitIds","nonExistsInStaged","c","isEqualWithoutVersion","modelComps","push"],"sources":["reset-component.ts"],"sourcesContent":["import { BitError } from '@teambit/bit-error';\nimport type { ComponentID } from '@teambit/component-id';\nimport type { Consumer } from '@teambit/legacy.consumer';\nimport { ComponentsList } from '@teambit/legacy.component-list';\nimport { logger } from '@teambit/legacy.logger';\nimport type { Lane, ModelComponent } from '@teambit/objects';\nimport type { RemoveMain } from '@teambit/remove';\nimport { DependencyGraph } from '@teambit/legacy.dependency-graph';\nimport type { Workspace } from '@teambit/workspace';\n\nexport type ResetResult = {\n id: ComponentID;\n versions: string[];\n component?: ModelComponent;\n /**\n * relevant when the component was detached head so the head didn't change.\n * we want .bitmap to have the version before the detachment. not as the head.\n */\n versionToSetInBitmap?: string;\n};\n\n/**\n * If head is false, remove all local versions.\n */\nexport async function removeLocalVersion(\n consumer: Consumer,\n id: ComponentID,\n lane?: Lane,\n head?: boolean,\n force = false\n): Promise<ResetResult> {\n const component: ModelComponent = await consumer.scope.getModelComponent(id);\n const idStr = id.toString();\n const fromBitmap = consumer.bitMap.getComponentIdIfExist(id);\n const localVersions = await component.getLocalHashes(consumer.scope.objects, fromBitmap);\n if (!localVersions.length) throw new BitError(`unable to untag ${idStr}, the component is not staged`);\n const headRef = component.getHeadRegardlessOfLane();\n if (!headRef) {\n throw new Error(`unable to reset ${idStr}, it has not head`);\n }\n if (head && !localVersions.find((v) => v.isEqual(headRef))) {\n throw new Error(`unable to reset ${idStr}, the head ${headRef.toString()} is exported`);\n }\n const versionsToRemove = head ? [headRef] : localVersions;\n const versionsToRemoveStr = component.switchHashesWithTagsIfExist(versionsToRemove);\n\n if (!force) {\n const dependencyGraph = await DependencyGraph.loadAllVersions(consumer.scope);\n\n versionsToRemoveStr.forEach((versionToRemove) => {\n const idWithVersion = component.toComponentId().changeVersion(versionToRemove);\n const dependents = dependencyGraph.getImmediateDependentsPerId(idWithVersion);\n if (dependents.length) {\n throw new BitError(\n `unable to reset ${idStr}, the version ${versionToRemove} has the following dependent(s) ${dependents.join(\n ', '\n )}`\n );\n }\n });\n }\n\n const headBefore = component.getHead();\n await consumer.scope.sources.removeComponentVersions(component, versionsToRemove, versionsToRemoveStr, lane, head);\n const headAfter = component.getHead();\n let versionToSetInBitmap;\n if (headBefore && headAfter && headBefore.isEqual(headAfter) && !lane) {\n // if it's on main and the head didn't change, it means that it was in a detached-head state.\n const divergeData = component.getDivergeData();\n const snapBeforeDetached = divergeData.commonSnapBeforeDiverge;\n if (snapBeforeDetached) versionToSetInBitmap = component.getTagOfRefIfExists(snapBeforeDetached);\n }\n\n return { id, versions: versionsToRemoveStr, component, versionToSetInBitmap };\n}\n\nexport async function removeLocalVersionsForAllComponents(\n workspace: Workspace,\n remove: RemoveMain,\n lane?: Lane,\n head?: boolean\n): Promise<ResetResult[]> {\n const componentsToUntag = await getComponentsWithOptionToUntag(workspace, remove);\n const force = true; // when removing local versions from all components, no need to check if the component is used as a dependency\n return removeLocalVersionsForMultipleComponents(workspace.consumer, componentsToUntag, lane, head, force);\n}\n\nexport async function removeLocalVersionsForMultipleComponents(\n consumer: Consumer,\n componentsToUntag: ModelComponent[],\n lane?: Lane,\n head?: boolean,\n force?: boolean\n) {\n if (!componentsToUntag.length) {\n throw new BitError(`no components found to reset on your workspace`);\n }\n // if only head is removed, there is risk of deleting dependencies version without their dependents.\n if (!force && head) {\n const dependencyGraph = await DependencyGraph.loadAllVersions(consumer.scope);\n const candidateComponentsIds = componentsToUntag.map((component) => {\n const bitId = component.toComponentId();\n const headRef = component.getHeadRegardlessOfLane();\n if (!headRef)\n throw new Error(`component ${bitId.toString()} does not have head. it should not be a candidate for reset`);\n\n return bitId.changeVersion(component.getTagOfRefIfExists(headRef) || headRef.toString());\n });\n const candidateComponentsIdsStr = candidateComponentsIds.map((id) => id.toString());\n candidateComponentsIds.forEach((bitId: ComponentID) => {\n const dependents = dependencyGraph.getImmediateDependentsPerId(bitId);\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n const dependentsNotCandidates = dependents.filter((dependent) => !candidateComponentsIdsStr.includes(dependent));\n if (dependentsNotCandidates.length) {\n throw new BitError( // $FlowFixMe\n `unable to untag ${bitId}, the version ${bitId.version} has the following dependent(s) ${dependents.join(\n ', '\n )}`\n );\n }\n });\n }\n logger.debug(`found ${componentsToUntag.length} components to untag`);\n return Promise.all(\n componentsToUntag.map((component) => removeLocalVersion(consumer, component.toComponentId(), lane, head, force))\n );\n}\n\nexport async function getComponentsWithOptionToUntag(\n workspace: Workspace,\n remove: RemoveMain\n): Promise<ModelComponent[]> {\n const componentList = new ComponentsList(workspace);\n const laneObj = await workspace.getCurrentLaneObject();\n const components: ModelComponent[] = await componentList.listExportPendingComponents(laneObj);\n const removedStagedIds = await remove.getRemovedStaged();\n if (!removedStagedIds.length) return components;\n const removedStagedBitIds = removedStagedIds.map((id) => id);\n const nonExistsInStaged = removedStagedBitIds.filter(\n (id) => !components.find((c) => c.toComponentId().isEqualWithoutVersion(id))\n );\n if (!nonExistsInStaged.length) return components;\n const modelComps = await Promise.all(nonExistsInStaged.map((id) => workspace.consumer.scope.getModelComponent(id)));\n components.push(...modelComps);\n\n return components;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,8 +1,8 @@
1
- import { Command, CommandOptions } from '@teambit/cli';
2
- import { Logger } from '@teambit/logger';
3
- import { SnappingMain, SnapResults } from './snapping.main.runtime';
4
- import { BasicTagSnapParams } from './version-maker';
5
- import { ConfigStoreMain } from '@teambit/config-store';
1
+ import type { Command, CommandOptions } from '@teambit/cli';
2
+ import type { Logger } from '@teambit/logger';
3
+ import type { SnappingMain, SnapResults } from './snapping.main.runtime';
4
+ import type { BasicTagSnapParams } from './version-maker';
5
+ import type { ConfigStoreMain } from '@teambit/config-store';
6
6
  export declare class SnapCmd implements Command {
7
7
  private snapping;
8
8
  private logger;