@teambit/graph 1.0.667 → 1.0.668

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.
Files changed (76) hide show
  1. package/component-graph/component-graph.ts +6 -4
  2. package/dist/component-graph/component-graph.d.ts +4 -3
  3. package/dist/component-graph/component-graph.js.map +1 -1
  4. package/dist/component-id-graph.d.ts +2 -1
  5. package/dist/component-id-graph.js.map +1 -1
  6. package/dist/graph-builder.d.ts +1 -1
  7. package/dist/graph-builder.js.map +1 -1
  8. package/dist/graph-cmd.d.ts +3 -3
  9. package/dist/graph-cmd.js.map +1 -1
  10. package/dist/graph.compare.section.d.ts +1 -1
  11. package/dist/graph.compare.section.js.map +1 -1
  12. package/dist/graph.graphql.d.ts +3 -3
  13. package/dist/graph.graphql.js.map +1 -1
  14. package/dist/graph.main.runtime.d.ts +8 -8
  15. package/dist/graph.main.runtime.js.map +1 -1
  16. package/dist/graph.ui.runtime.d.ts +4 -4
  17. package/dist/graph.ui.runtime.js.map +1 -1
  18. package/dist/{preview-1753809186996.js → preview-1753833698619.js} +2 -2
  19. package/dist/ui/component-node/component-node.d.ts +2 -2
  20. package/dist/ui/component-node/component-node.js.map +1 -1
  21. package/dist/ui/dependencies-compare/compare-graph-model.d.ts +3 -2
  22. package/dist/ui/dependencies-compare/compare-graph-model.js.map +1 -1
  23. package/dist/ui/dependencies-compare/compare-node-model.d.ts +1 -1
  24. package/dist/ui/dependencies-compare/compare-node-model.js.map +1 -1
  25. package/dist/ui/dependencies-compare/dependencies-compare.js.map +1 -1
  26. package/dist/ui/dependencies-compare/dependency-compare-node.d.ts +1 -1
  27. package/dist/ui/dependencies-compare/dependency-compare-node.js.map +1 -1
  28. package/dist/ui/dependencies-compare/diff-graph.d.ts +2 -2
  29. package/dist/ui/dependencies-compare/diff-graph.js.map +1 -1
  30. package/dist/ui/dependencies-graph/calc-elements.d.ts +3 -3
  31. package/dist/ui/dependencies-graph/calc-elements.js.map +1 -1
  32. package/dist/ui/dependencies-graph/calc-layout.d.ts +1 -1
  33. package/dist/ui/dependencies-graph/calc-layout.js.map +1 -1
  34. package/dist/ui/dependencies-graph/dependencies-graph.d.ts +4 -4
  35. package/dist/ui/dependencies-graph/dependencies-graph.js.map +1 -1
  36. package/dist/ui/dependencies-graph/graph-context.d.ts +1 -1
  37. package/dist/ui/dependencies-graph/graph-context.js.map +1 -1
  38. package/dist/ui/dependencies-graph/minimap.d.ts +1 -1
  39. package/dist/ui/dependencies-graph/minimap.js.map +1 -1
  40. package/dist/ui/graph-page/graph-filters.d.ts +1 -1
  41. package/dist/ui/graph-page/graph-filters.js.map +1 -1
  42. package/dist/ui/graph-page/graph-page.d.ts +1 -1
  43. package/dist/ui/graph-page/graph-page.js.map +1 -1
  44. package/dist/ui/graph.section.d.ts +2 -2
  45. package/dist/ui/graph.section.js.map +1 -1
  46. package/dist/ui/query/edge-model.d.ts +2 -2
  47. package/dist/ui/query/edge-model.js.map +1 -1
  48. package/dist/ui/query/get-graph.query.d.ts +1 -1
  49. package/dist/ui/query/get-graph.query.js.map +1 -1
  50. package/dist/ui/query/graph-model.d.ts +1 -1
  51. package/dist/ui/query/graph-model.js.map +1 -1
  52. package/dist/ui/query/node-model.d.ts +1 -1
  53. package/dist/ui/query/node-model.js.map +1 -1
  54. package/dist/ui/query/use-graph-query.js.map +1 -1
  55. package/graph.compare.section.tsx +1 -1
  56. package/graph.ui.runtime.tsx +7 -4
  57. package/package.json +15 -15
  58. package/ui/component-node/component-node.tsx +4 -3
  59. package/ui/dependencies-compare/compare-graph-model.ts +3 -2
  60. package/ui/dependencies-compare/compare-node-model.ts +1 -1
  61. package/ui/dependencies-compare/dependencies-compare.tsx +3 -12
  62. package/ui/dependencies-compare/dependency-compare-node.tsx +1 -1
  63. package/ui/dependencies-compare/diff-graph.ts +3 -3
  64. package/ui/dependencies-graph/calc-elements.tsx +4 -3
  65. package/ui/dependencies-graph/calc-layout.tsx +1 -1
  66. package/ui/dependencies-graph/dependencies-graph.tsx +4 -7
  67. package/ui/dependencies-graph/graph-context.ts +1 -1
  68. package/ui/dependencies-graph/minimap.ts +1 -1
  69. package/ui/graph-page/graph-filters.tsx +2 -1
  70. package/ui/graph-page/graph-page.tsx +1 -1
  71. package/ui/graph.section.tsx +2 -2
  72. package/ui/query/edge-model.ts +2 -2
  73. package/ui/query/get-graph.query.ts +1 -1
  74. package/ui/query/graph-model.ts +1 -1
  75. package/ui/query/node-model.ts +1 -1
  76. package/ui/query/use-graph-query.ts +2 -1
@@ -1,8 +1,10 @@
1
- import { Component, ComponentID } from '@teambit/component';
2
- import { Graph, Node, Edge } from '@teambit/graph.cleargraph';
1
+ import type { Component, ComponentID } from '@teambit/component';
2
+ import type { Node, Edge } from '@teambit/graph.cleargraph';
3
+ import { Graph } from '@teambit/graph.cleargraph';
3
4
 
4
- import { Dependency } from '../model/dependency';
5
- import { DuplicateDependency, VersionSubgraph } from '../duplicate-dependency';
5
+ import type { Dependency } from '../model/dependency';
6
+ import type { VersionSubgraph } from '../duplicate-dependency';
7
+ import { DuplicateDependency } from '../duplicate-dependency';
6
8
 
7
9
  export const DEPENDENCIES_TYPES = ['dependencies', 'devDependencies'];
8
10
 
@@ -1,6 +1,7 @@
1
- import { Component, ComponentID } from '@teambit/component';
2
- import { Graph, Node, Edge } from '@teambit/graph.cleargraph';
3
- import { Dependency } from '../model/dependency';
1
+ import type { Component, ComponentID } from '@teambit/component';
2
+ import type { Node, Edge } from '@teambit/graph.cleargraph';
3
+ import { Graph } from '@teambit/graph.cleargraph';
4
+ import type { Dependency } from '../model/dependency';
4
5
  import { DuplicateDependency } from '../duplicate-dependency';
5
6
  export declare const DEPENDENCIES_TYPES: string[];
6
7
  type ComponentNode = Node<Component>;
@@ -1 +1 @@
1
- {"version":3,"names":["_graph","data","require","_duplicateDependency","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","DEPENDENCIES_TYPES","exports","ComponentGraph","Graph","constructor","nodes","edges","create","findCycles","graph","cycles","shouldLimitToSeedersOnly","seederIdsStr","seederIds","map","id","toString","cyclesWithSeeders","filter","cycle","some","cycleIdStr","includes","findDuplicateDependencies","versionMap","calculateVersionMap","seederIdsNoVersions","toStringWithoutVersion","duplicateDependencies","Map","compFullName","versions","allVersionNodes","length","versionSubgraphs","notLatestVersions","version","latestVersionNode","forEach","predecessors","predecessorsSubgraph","immediatePredecessors","predecessor","subGraph","buildFromCleargraph","versionSubgraph","versionId","immediateDependents","push","isSeeder","shouldDisplayDueToBeingSeeder","duplicateDep","DuplicateDependency","set","runtimeOnly","componentIds","successorsSubgraph","edgeFilter","edge","attr","type","node","comp","compKey","has","get","prototype","hasOwnProperty","currentComp","latestComp","head","Date","timestamp"],"sources":["component-graph.ts"],"sourcesContent":["import { Component, ComponentID } from '@teambit/component';\nimport { Graph, Node, Edge } from '@teambit/graph.cleargraph';\n\nimport { Dependency } from '../model/dependency';\nimport { DuplicateDependency, VersionSubgraph } from '../duplicate-dependency';\n\nexport const DEPENDENCIES_TYPES = ['dependencies', 'devDependencies'];\n\ntype ComponentNode = Node<Component>;\ntype DependencyEdge = Edge<Dependency>;\n\nexport class ComponentGraph extends Graph<Component, Dependency> {\n seederIds: ComponentID[] = []; // component IDs that started the graph. (if from workspace, the .bitmap ids normally)\n constructor(nodes: ComponentNode[] = [], edges: DependencyEdge[] = []) {\n super(nodes, edges);\n }\n\n protected create(nodes: ComponentNode[] = [], edges: DependencyEdge[] = []): this {\n return new ComponentGraph(nodes, edges) as this;\n }\n\n /**\n * @deprecate use graph.getGraphIds().findCycles()\n */\n findCycles(graph?: this): string[][] {\n const cycles = super.findCycles(graph);\n if (!this.shouldLimitToSeedersOnly()) {\n return cycles;\n }\n const seederIdsStr = this.seederIds.map((id) => id.toString());\n const cyclesWithSeeders = cycles.filter((cycle) => {\n return cycle.some((cycleIdStr) => seederIdsStr.includes(cycleIdStr));\n });\n return cyclesWithSeeders;\n }\n\n findDuplicateDependencies(): Map<string, DuplicateDependency> {\n const versionMap = this.calculateVersionMap();\n const seederIdsNoVersions = this.seederIds.map((id) => id.toStringWithoutVersion());\n const duplicateDependencies: Map<string, DuplicateDependency> = new Map();\n for (const [compFullName, versions] of versionMap) {\n if (versions.allVersionNodes.length > 1) {\n const versionSubgraphs: VersionSubgraph[] = [];\n const notLatestVersions = versions.allVersionNodes.filter((version) => version !== versions.latestVersionNode);\n notLatestVersions.forEach((version) => {\n const predecessors = this.predecessorsSubgraph(version);\n const immediatePredecessors = this.predecessors(version).map((predecessor) => predecessor.id);\n const subGraph = this.buildFromCleargraph(predecessors);\n const versionSubgraph: VersionSubgraph = {\n versionId: version,\n subGraph,\n // TODO: validate that this is working correctly\n immediateDependents: immediatePredecessors,\n };\n versionSubgraphs.push(versionSubgraph);\n });\n const isSeeder = seederIdsNoVersions.includes(compFullName);\n const shouldDisplayDueToBeingSeeder = !this.shouldLimitToSeedersOnly() || isSeeder;\n if (shouldDisplayDueToBeingSeeder && versionSubgraphs.length > 0) {\n const duplicateDep = new DuplicateDependency(versions.latestVersionNode, versionSubgraphs);\n duplicateDependencies.set(compFullName, duplicateDep);\n }\n }\n }\n return duplicateDependencies;\n }\n\n buildFromCleargraph(graph: Graph<Component, Dependency>): ComponentGraph {\n return this.create(graph.nodes, graph.edges);\n }\n\n runtimeOnly(componentIds: string[]) {\n return this.successorsSubgraph(componentIds, {\n edgeFilter: (edge: DependencyEdge) => edge.attr.type === 'runtime',\n });\n }\n\n private shouldLimitToSeedersOnly() {\n return this.seederIds.length;\n }\n\n private calculateVersionMap(): Map<string, { allVersionNodes: string[]; latestVersionNode: string }> {\n const versionMap: Map<string, { allVersionNodes: string[]; latestVersionNode: string }> = new Map();\n for (const node of this.nodes) {\n const comp = node.attr;\n const compKey = node.id;\n const compFullName = comp.id.toStringWithoutVersion();\n if (!versionMap.has(compFullName)) {\n versionMap.set(compFullName, {\n allVersionNodes: [compKey],\n latestVersionNode: compKey,\n });\n } else {\n const value = versionMap.get(compFullName);\n if (value) {\n if (Object.prototype.hasOwnProperty.call(value, 'allVersionNodes')) {\n value.allVersionNodes.push(compKey);\n }\n const currentComp = comp;\n const latestComp = this.node(value.latestVersionNode)?.attr;\n // @todo: this check won't work when the component doesn't have head.\n // it happens when a dependency is needed in an old version (not head). which Bit doesn't fetch the head\n // Version object, and as a result, the `Component.head` is empty.\n // for now it's probably good enough because it's used only for `findDuplicateDependencies`, which only\n // checks the components on the workspace.\n if (\n currentComp.head &&\n latestComp?.head &&\n new Date(currentComp.head.timestamp) > new Date(latestComp.head.timestamp)\n ) {\n value.latestVersionNode = compKey;\n }\n }\n }\n }\n return versionMap;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_graph","data","require","_duplicateDependency","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","DEPENDENCIES_TYPES","exports","ComponentGraph","Graph","constructor","nodes","edges","create","findCycles","graph","cycles","shouldLimitToSeedersOnly","seederIdsStr","seederIds","map","id","toString","cyclesWithSeeders","filter","cycle","some","cycleIdStr","includes","findDuplicateDependencies","versionMap","calculateVersionMap","seederIdsNoVersions","toStringWithoutVersion","duplicateDependencies","Map","compFullName","versions","allVersionNodes","length","versionSubgraphs","notLatestVersions","version","latestVersionNode","forEach","predecessors","predecessorsSubgraph","immediatePredecessors","predecessor","subGraph","buildFromCleargraph","versionSubgraph","versionId","immediateDependents","push","isSeeder","shouldDisplayDueToBeingSeeder","duplicateDep","DuplicateDependency","set","runtimeOnly","componentIds","successorsSubgraph","edgeFilter","edge","attr","type","node","comp","compKey","has","get","prototype","hasOwnProperty","currentComp","latestComp","head","Date","timestamp"],"sources":["component-graph.ts"],"sourcesContent":["import type { Component, ComponentID } from '@teambit/component';\nimport type { Node, Edge } from '@teambit/graph.cleargraph';\nimport { Graph } from '@teambit/graph.cleargraph';\n\nimport type { Dependency } from '../model/dependency';\nimport type { VersionSubgraph } from '../duplicate-dependency';\nimport { DuplicateDependency } from '../duplicate-dependency';\n\nexport const DEPENDENCIES_TYPES = ['dependencies', 'devDependencies'];\n\ntype ComponentNode = Node<Component>;\ntype DependencyEdge = Edge<Dependency>;\n\nexport class ComponentGraph extends Graph<Component, Dependency> {\n seederIds: ComponentID[] = []; // component IDs that started the graph. (if from workspace, the .bitmap ids normally)\n constructor(nodes: ComponentNode[] = [], edges: DependencyEdge[] = []) {\n super(nodes, edges);\n }\n\n protected create(nodes: ComponentNode[] = [], edges: DependencyEdge[] = []): this {\n return new ComponentGraph(nodes, edges) as this;\n }\n\n /**\n * @deprecate use graph.getGraphIds().findCycles()\n */\n findCycles(graph?: this): string[][] {\n const cycles = super.findCycles(graph);\n if (!this.shouldLimitToSeedersOnly()) {\n return cycles;\n }\n const seederIdsStr = this.seederIds.map((id) => id.toString());\n const cyclesWithSeeders = cycles.filter((cycle) => {\n return cycle.some((cycleIdStr) => seederIdsStr.includes(cycleIdStr));\n });\n return cyclesWithSeeders;\n }\n\n findDuplicateDependencies(): Map<string, DuplicateDependency> {\n const versionMap = this.calculateVersionMap();\n const seederIdsNoVersions = this.seederIds.map((id) => id.toStringWithoutVersion());\n const duplicateDependencies: Map<string, DuplicateDependency> = new Map();\n for (const [compFullName, versions] of versionMap) {\n if (versions.allVersionNodes.length > 1) {\n const versionSubgraphs: VersionSubgraph[] = [];\n const notLatestVersions = versions.allVersionNodes.filter((version) => version !== versions.latestVersionNode);\n notLatestVersions.forEach((version) => {\n const predecessors = this.predecessorsSubgraph(version);\n const immediatePredecessors = this.predecessors(version).map((predecessor) => predecessor.id);\n const subGraph = this.buildFromCleargraph(predecessors);\n const versionSubgraph: VersionSubgraph = {\n versionId: version,\n subGraph,\n // TODO: validate that this is working correctly\n immediateDependents: immediatePredecessors,\n };\n versionSubgraphs.push(versionSubgraph);\n });\n const isSeeder = seederIdsNoVersions.includes(compFullName);\n const shouldDisplayDueToBeingSeeder = !this.shouldLimitToSeedersOnly() || isSeeder;\n if (shouldDisplayDueToBeingSeeder && versionSubgraphs.length > 0) {\n const duplicateDep = new DuplicateDependency(versions.latestVersionNode, versionSubgraphs);\n duplicateDependencies.set(compFullName, duplicateDep);\n }\n }\n }\n return duplicateDependencies;\n }\n\n buildFromCleargraph(graph: Graph<Component, Dependency>): ComponentGraph {\n return this.create(graph.nodes, graph.edges);\n }\n\n runtimeOnly(componentIds: string[]) {\n return this.successorsSubgraph(componentIds, {\n edgeFilter: (edge: DependencyEdge) => edge.attr.type === 'runtime',\n });\n }\n\n private shouldLimitToSeedersOnly() {\n return this.seederIds.length;\n }\n\n private calculateVersionMap(): Map<string, { allVersionNodes: string[]; latestVersionNode: string }> {\n const versionMap: Map<string, { allVersionNodes: string[]; latestVersionNode: string }> = new Map();\n for (const node of this.nodes) {\n const comp = node.attr;\n const compKey = node.id;\n const compFullName = comp.id.toStringWithoutVersion();\n if (!versionMap.has(compFullName)) {\n versionMap.set(compFullName, {\n allVersionNodes: [compKey],\n latestVersionNode: compKey,\n });\n } else {\n const value = versionMap.get(compFullName);\n if (value) {\n if (Object.prototype.hasOwnProperty.call(value, 'allVersionNodes')) {\n value.allVersionNodes.push(compKey);\n }\n const currentComp = comp;\n const latestComp = this.node(value.latestVersionNode)?.attr;\n // @todo: this check won't work when the component doesn't have head.\n // it happens when a dependency is needed in an old version (not head). which Bit doesn't fetch the head\n // Version object, and as a result, the `Component.head` is empty.\n // for now it's probably good enough because it's used only for `findDuplicateDependencies`, which only\n // checks the components on the workspace.\n if (\n currentComp.head &&\n latestComp?.head &&\n new Date(currentComp.head.timestamp) > new Date(latestComp.head.timestamp)\n ) {\n value.latestVersionNode = compKey;\n }\n }\n }\n }\n return versionMap;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,6 @@
1
1
  import { ComponentID } from '@teambit/component-id';
2
- import { Graph, Node, Edge } from '@teambit/graph.cleargraph';
2
+ import type { Node, Edge } from '@teambit/graph.cleargraph';
3
+ import { Graph } from '@teambit/graph.cleargraph';
3
4
  import type { DependenciesInfo } from '@teambit/legacy.dependency-graph';
4
5
  import GraphLib from 'graphlib';
5
6
  export type DepEdgeType = 'prod' | 'dev' | 'ext' | 'peer';
@@ -1 +1 @@
1
- {"version":3,"names":["_componentId","data","require","_graph","_graphlib","_interopRequireDefault","_lodash","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","ComponentIdGraph","Graph","constructor","nodes","edges","graphLib","_graphLib","GraphLib","forEach","node","setNode","id","toString","edge","setEdge","sourceId","targetId","attr","create","findIdsFromSourcesToTargets","sources","targets","through","removeVerFromIdStr","idStr","split","sourcesStr","map","s","toStringWithoutVersion","targetsStr","allFlattened","source","successors","flat","allFlattenedIds","uniq","f","results","idWithNoVer","includes","allSuccessors","allSuccessorsWithNoVersion","find","push","componentIds","getNodes","n","length","resultsWithThrough","throughStr","allGraph","subgraph","allGraphWithNoVersion","every","findAllPathsFromSourcesToTargets","findAllPathsBFS","start","end","paths","visited","Set","queue","path","shift","add","outEdges","successor","has","allPaths","filter","pathWithVer","pathWithoutVer","p","filtered","firstDep","sort","a","b","findCycles","graph","includeDeps","cycles","cycle","reverse","shouldLimitToSeedersOnly","seederIdsStr","seederIds","cyclesWithSeeders","some","cycleIdStr","buildFromCleargraph","runtimeOnly","successorsSubgraph","edgeFilter","getDependenciesInfo","dijkstraResults","alg","dijkstra","dependencies","keys","distance","Infinity","predecessor","dependencyType","depth","parent","getDependenciesAsObjectTree","depsInfo","ComponentID","fromString","populateTreeItems","treeItems","children","depInfo","child","compId","label","currentNodes","tree","exports"],"sources":["component-id-graph.ts"],"sourcesContent":["import { ComponentID } from '@teambit/component-id';\nimport { Graph, Node, Edge } from '@teambit/graph.cleargraph';\nimport type { DependenciesInfo } from '@teambit/legacy.dependency-graph';\nimport GraphLib from 'graphlib';\nimport { uniq } from 'lodash';\n\nexport type DepEdgeType = 'prod' | 'dev' | 'ext' | 'peer';\n\ntype ComponentIdNode = Node<ComponentID>;\ntype DependencyEdge = Edge<DepEdgeType>;\nexport type CompIdGraph = Graph<ComponentID, DepEdgeType>;\n\nexport class ComponentIdGraph extends Graph<ComponentID, DepEdgeType> {\n private _graphLib: GraphLib.Graph;\n seederIds: ComponentID[] = []; // component IDs that started the graph. (if from workspace, the .bitmap ids normally)\n constructor(nodes: ComponentIdNode[] = [], edges: DependencyEdge[] = []) {\n super(nodes, edges);\n }\n\n get graphLib() {\n if (!this._graphLib) {\n // convert clearGraph to graphLib\n this._graphLib = new GraphLib.Graph();\n this.nodes.forEach((node) => {\n this._graphLib.setNode(node.id.toString());\n });\n this.edges.forEach((edge) => {\n this._graphLib.setEdge(edge.sourceId.toString(), edge.targetId.toString(), edge.attr);\n });\n }\n return this._graphLib;\n }\n\n protected create(nodes: ComponentIdNode[] = [], edges: DependencyEdge[] = []): this {\n return new ComponentIdGraph(nodes, edges) as this;\n }\n\n /**\n * check all the routes from the sources to targets and return the components found during this traversal.\n * e.g.\n * A -> B -> C -> N.\n * A -> E -> N.\n * B -> F -> G.\n * given source: A, targets: N. The results will be: [B, C, E].\n *\n * if through is provided, it will only return the components that are connected to the through components.\n * with the example above, if through is B, the results will be: [B, C].\n */\n findIdsFromSourcesToTargets(sources: ComponentID[], targets: ComponentID[], through?: ComponentID[]): ComponentID[] {\n const removeVerFromIdStr = (idStr: string) => idStr.split('@')[0];\n const sourcesStr = sources.map((s) => s.toStringWithoutVersion());\n const targetsStr = targets.map((t) => t.toStringWithoutVersion());\n const allFlattened = sources.map((source) => this.successors(source.toString())).flat();\n const allFlattenedIds = uniq(allFlattened.map((f) => f.id));\n const results: string[] = [];\n allFlattenedIds.forEach((id) => {\n const idWithNoVer = removeVerFromIdStr(id);\n if (sourcesStr.includes(idWithNoVer) || targetsStr.includes(idWithNoVer)) return;\n const allSuccessors = this.successors(id);\n const allSuccessorsWithNoVersion = allSuccessors.map((s) => removeVerFromIdStr(s.id));\n if (allSuccessorsWithNoVersion.find((s) => targetsStr.includes(s))) results.push(id);\n });\n const componentIds = this.getNodes(results).map((n) => n.attr);\n\n if (!through?.length) {\n return componentIds;\n }\n\n const resultsWithThrough: ComponentID[] = [];\n const throughStr = through.map((t) => t.toStringWithoutVersion());\n componentIds.forEach((id) => {\n const allGraph = this.subgraph(id.toString()).nodes.map((n) => n.id); // successors and predecessors\n const allGraphWithNoVersion = allGraph.map((s) => removeVerFromIdStr(s));\n if (throughStr.every((t) => allGraphWithNoVersion.includes(t))) resultsWithThrough.push(id);\n });\n\n return resultsWithThrough;\n }\n\n /**\n * check all the routes from the sources to targets and return the components found during this traversal.\n * e.g.\n * A -> B -> C -> N.\n * A -> E -> N.\n * B -> F -> G.\n * given source: A, targets: N. The results will be: [B, C, E].\n *\n * if through is provided, it will only return the components that are connected to the through components.\n * with the example above, if through is B, the results will be: [B, C].\n */\n findAllPathsFromSourcesToTargets(\n sources: ComponentID[],\n targets: ComponentID[],\n through?: ComponentID[]\n ): string[][] {\n const removeVerFromIdStr = (idStr: string) => idStr.split('@')[0];\n\n const findAllPathsBFS = (start: string[], end: string[]): string[][] => {\n const paths: string[][] = [];\n const visited = new Set<string>();\n const queue: { node: string; path: string[] }[] = [];\n start.forEach((s) => queue.push({ node: s, path: [s] }));\n while (queue.length) {\n const { node, path } = queue.shift()!;\n if (end.includes(removeVerFromIdStr(node))) {\n paths.push([...path]);\n } else {\n visited.add(node);\n const successors = this.outEdges(node).map((e) => e.targetId);\n for (const successor of successors) {\n if (!visited.has(successor)) {\n queue.push({ node: successor, path: [...path, successor] });\n }\n }\n }\n }\n return paths;\n };\n\n const targetsStr = targets.map((t) => t.toStringWithoutVersion());\n const sourcesStr = sources.map((s) => s.toString());\n\n let allPaths = findAllPathsBFS(sourcesStr, targetsStr);\n\n if (through?.length) {\n allPaths = allPaths.filter((pathWithVer) => {\n const pathWithoutVer = pathWithVer.map((p) => removeVerFromIdStr(p));\n return through.every((t) => pathWithoutVer.includes(t.toStringWithoutVersion()));\n });\n }\n\n const filtered = allPaths.filter((path) => {\n if (path.length < 3) {\n // if length is 1, the source and target are the same.\n // if length is 2, the target is a direct dependency of the source. we don't care about it.\n return false;\n }\n const [, firstDep] = path;\n if (sourcesStr.includes(firstDep)) {\n // the first item is the source. the second item \"firstDep\" can be a direct dependency of one of the sources.\n // if this is the case, we have already an exact path without this firstDep.\n return true;\n }\n return true;\n });\n\n return filtered.sort((a, b) => a.length - b.length);\n }\n\n /**\n * overrides the super class to eliminate non-seeders components\n */\n findCycles(graph = this, includeDeps = false): string[][] {\n const cycles = super.findCycles(graph);\n // reverse the order to show a more intuitive cycle order. from the dependent to the dependency.\n cycles.forEach((cycle) => cycle.reverse());\n if (!this.shouldLimitToSeedersOnly() || includeDeps) {\n return cycles;\n }\n const seederIdsStr = this.seederIds.map((id) => id.toString());\n const cyclesWithSeeders = cycles.filter((cycle) => {\n return cycle.some((cycleIdStr) => seederIdsStr.includes(cycleIdStr));\n });\n return cyclesWithSeeders;\n }\n\n buildFromCleargraph(graph: Graph<ComponentID, DepEdgeType>): ComponentIdGraph {\n return this.create(graph.nodes, graph.edges);\n }\n\n runtimeOnly(componentIds: string[]) {\n return this.successorsSubgraph(componentIds, {\n edgeFilter: (edge: DependencyEdge) => edge.attr === 'prod',\n });\n }\n\n getDependenciesInfo(id: ComponentID): DependenciesInfo[] {\n const dijkstraResults = GraphLib.alg.dijkstra(this.graphLib, id.toString());\n const dependencies: DependenciesInfo[] = [];\n Object.keys(dijkstraResults).forEach((idStr) => {\n const distance = dijkstraResults[idStr].distance;\n if (distance === Infinity || distance === 0) {\n // there is no dependency or it's the same component (distance zero)\n return;\n }\n const predecessor = dijkstraResults[idStr].predecessor;\n const dependencyType = this.edge(predecessor, idStr);\n dependencies.push({\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n id: this.node(idStr)!.attr,\n depth: distance,\n parent: predecessor,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n dependencyType: dependencyType!.attr,\n });\n });\n dependencies.sort((a, b) => a.depth - b.depth);\n return dependencies;\n }\n\n getDependenciesAsObjectTree(idStr: string): Record<string, any> {\n const depsInfo = this.getDependenciesInfo(ComponentID.fromString(idStr));\n const populateTreeItems = (id: string, treeItems: Array<{ label: string; nodes?: Array<Record<string, any>> }>) => {\n const children = depsInfo.filter((depInfo) => depInfo.parent === id);\n if (!children || children.length === 0) {\n return;\n }\n children.forEach((child) => {\n const { id: compId } = child;\n const label = compId.toString();\n const currentNodes = [];\n treeItems.push({ label, nodes: currentNodes });\n populateTreeItems(label, currentNodes);\n });\n };\n\n const currentNodes = [];\n const tree = { label: idStr, nodes: currentNodes };\n populateTreeItems(idStr, currentNodes);\n return tree;\n }\n\n private shouldLimitToSeedersOnly() {\n return this.seederIds.length;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_componentId","data","require","_graph","_graphlib","_interopRequireDefault","_lodash","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","ComponentIdGraph","Graph","constructor","nodes","edges","graphLib","_graphLib","GraphLib","forEach","node","setNode","id","toString","edge","setEdge","sourceId","targetId","attr","create","findIdsFromSourcesToTargets","sources","targets","through","removeVerFromIdStr","idStr","split","sourcesStr","map","s","toStringWithoutVersion","targetsStr","allFlattened","source","successors","flat","allFlattenedIds","uniq","f","results","idWithNoVer","includes","allSuccessors","allSuccessorsWithNoVersion","find","push","componentIds","getNodes","n","length","resultsWithThrough","throughStr","allGraph","subgraph","allGraphWithNoVersion","every","findAllPathsFromSourcesToTargets","findAllPathsBFS","start","end","paths","visited","Set","queue","path","shift","add","outEdges","successor","has","allPaths","filter","pathWithVer","pathWithoutVer","p","filtered","firstDep","sort","a","b","findCycles","graph","includeDeps","cycles","cycle","reverse","shouldLimitToSeedersOnly","seederIdsStr","seederIds","cyclesWithSeeders","some","cycleIdStr","buildFromCleargraph","runtimeOnly","successorsSubgraph","edgeFilter","getDependenciesInfo","dijkstraResults","alg","dijkstra","dependencies","keys","distance","Infinity","predecessor","dependencyType","depth","parent","getDependenciesAsObjectTree","depsInfo","ComponentID","fromString","populateTreeItems","treeItems","children","depInfo","child","compId","label","currentNodes","tree","exports"],"sources":["component-id-graph.ts"],"sourcesContent":["import { ComponentID } from '@teambit/component-id';\nimport type { Node, Edge } from '@teambit/graph.cleargraph';\nimport { Graph } from '@teambit/graph.cleargraph';\nimport type { DependenciesInfo } from '@teambit/legacy.dependency-graph';\nimport GraphLib from 'graphlib';\nimport { uniq } from 'lodash';\n\nexport type DepEdgeType = 'prod' | 'dev' | 'ext' | 'peer';\n\ntype ComponentIdNode = Node<ComponentID>;\ntype DependencyEdge = Edge<DepEdgeType>;\nexport type CompIdGraph = Graph<ComponentID, DepEdgeType>;\n\nexport class ComponentIdGraph extends Graph<ComponentID, DepEdgeType> {\n private _graphLib: GraphLib.Graph;\n seederIds: ComponentID[] = []; // component IDs that started the graph. (if from workspace, the .bitmap ids normally)\n constructor(nodes: ComponentIdNode[] = [], edges: DependencyEdge[] = []) {\n super(nodes, edges);\n }\n\n get graphLib() {\n if (!this._graphLib) {\n // convert clearGraph to graphLib\n this._graphLib = new GraphLib.Graph();\n this.nodes.forEach((node) => {\n this._graphLib.setNode(node.id.toString());\n });\n this.edges.forEach((edge) => {\n this._graphLib.setEdge(edge.sourceId.toString(), edge.targetId.toString(), edge.attr);\n });\n }\n return this._graphLib;\n }\n\n protected create(nodes: ComponentIdNode[] = [], edges: DependencyEdge[] = []): this {\n return new ComponentIdGraph(nodes, edges) as this;\n }\n\n /**\n * check all the routes from the sources to targets and return the components found during this traversal.\n * e.g.\n * A -> B -> C -> N.\n * A -> E -> N.\n * B -> F -> G.\n * given source: A, targets: N. The results will be: [B, C, E].\n *\n * if through is provided, it will only return the components that are connected to the through components.\n * with the example above, if through is B, the results will be: [B, C].\n */\n findIdsFromSourcesToTargets(sources: ComponentID[], targets: ComponentID[], through?: ComponentID[]): ComponentID[] {\n const removeVerFromIdStr = (idStr: string) => idStr.split('@')[0];\n const sourcesStr = sources.map((s) => s.toStringWithoutVersion());\n const targetsStr = targets.map((t) => t.toStringWithoutVersion());\n const allFlattened = sources.map((source) => this.successors(source.toString())).flat();\n const allFlattenedIds = uniq(allFlattened.map((f) => f.id));\n const results: string[] = [];\n allFlattenedIds.forEach((id) => {\n const idWithNoVer = removeVerFromIdStr(id);\n if (sourcesStr.includes(idWithNoVer) || targetsStr.includes(idWithNoVer)) return;\n const allSuccessors = this.successors(id);\n const allSuccessorsWithNoVersion = allSuccessors.map((s) => removeVerFromIdStr(s.id));\n if (allSuccessorsWithNoVersion.find((s) => targetsStr.includes(s))) results.push(id);\n });\n const componentIds = this.getNodes(results).map((n) => n.attr);\n\n if (!through?.length) {\n return componentIds;\n }\n\n const resultsWithThrough: ComponentID[] = [];\n const throughStr = through.map((t) => t.toStringWithoutVersion());\n componentIds.forEach((id) => {\n const allGraph = this.subgraph(id.toString()).nodes.map((n) => n.id); // successors and predecessors\n const allGraphWithNoVersion = allGraph.map((s) => removeVerFromIdStr(s));\n if (throughStr.every((t) => allGraphWithNoVersion.includes(t))) resultsWithThrough.push(id);\n });\n\n return resultsWithThrough;\n }\n\n /**\n * check all the routes from the sources to targets and return the components found during this traversal.\n * e.g.\n * A -> B -> C -> N.\n * A -> E -> N.\n * B -> F -> G.\n * given source: A, targets: N. The results will be: [B, C, E].\n *\n * if through is provided, it will only return the components that are connected to the through components.\n * with the example above, if through is B, the results will be: [B, C].\n */\n findAllPathsFromSourcesToTargets(\n sources: ComponentID[],\n targets: ComponentID[],\n through?: ComponentID[]\n ): string[][] {\n const removeVerFromIdStr = (idStr: string) => idStr.split('@')[0];\n\n const findAllPathsBFS = (start: string[], end: string[]): string[][] => {\n const paths: string[][] = [];\n const visited = new Set<string>();\n const queue: { node: string; path: string[] }[] = [];\n start.forEach((s) => queue.push({ node: s, path: [s] }));\n while (queue.length) {\n const { node, path } = queue.shift()!;\n if (end.includes(removeVerFromIdStr(node))) {\n paths.push([...path]);\n } else {\n visited.add(node);\n const successors = this.outEdges(node).map((e) => e.targetId);\n for (const successor of successors) {\n if (!visited.has(successor)) {\n queue.push({ node: successor, path: [...path, successor] });\n }\n }\n }\n }\n return paths;\n };\n\n const targetsStr = targets.map((t) => t.toStringWithoutVersion());\n const sourcesStr = sources.map((s) => s.toString());\n\n let allPaths = findAllPathsBFS(sourcesStr, targetsStr);\n\n if (through?.length) {\n allPaths = allPaths.filter((pathWithVer) => {\n const pathWithoutVer = pathWithVer.map((p) => removeVerFromIdStr(p));\n return through.every((t) => pathWithoutVer.includes(t.toStringWithoutVersion()));\n });\n }\n\n const filtered = allPaths.filter((path) => {\n if (path.length < 3) {\n // if length is 1, the source and target are the same.\n // if length is 2, the target is a direct dependency of the source. we don't care about it.\n return false;\n }\n const [, firstDep] = path;\n if (sourcesStr.includes(firstDep)) {\n // the first item is the source. the second item \"firstDep\" can be a direct dependency of one of the sources.\n // if this is the case, we have already an exact path without this firstDep.\n return true;\n }\n return true;\n });\n\n return filtered.sort((a, b) => a.length - b.length);\n }\n\n /**\n * overrides the super class to eliminate non-seeders components\n */\n findCycles(graph = this, includeDeps = false): string[][] {\n const cycles = super.findCycles(graph);\n // reverse the order to show a more intuitive cycle order. from the dependent to the dependency.\n cycles.forEach((cycle) => cycle.reverse());\n if (!this.shouldLimitToSeedersOnly() || includeDeps) {\n return cycles;\n }\n const seederIdsStr = this.seederIds.map((id) => id.toString());\n const cyclesWithSeeders = cycles.filter((cycle) => {\n return cycle.some((cycleIdStr) => seederIdsStr.includes(cycleIdStr));\n });\n return cyclesWithSeeders;\n }\n\n buildFromCleargraph(graph: Graph<ComponentID, DepEdgeType>): ComponentIdGraph {\n return this.create(graph.nodes, graph.edges);\n }\n\n runtimeOnly(componentIds: string[]) {\n return this.successorsSubgraph(componentIds, {\n edgeFilter: (edge: DependencyEdge) => edge.attr === 'prod',\n });\n }\n\n getDependenciesInfo(id: ComponentID): DependenciesInfo[] {\n const dijkstraResults = GraphLib.alg.dijkstra(this.graphLib, id.toString());\n const dependencies: DependenciesInfo[] = [];\n Object.keys(dijkstraResults).forEach((idStr) => {\n const distance = dijkstraResults[idStr].distance;\n if (distance === Infinity || distance === 0) {\n // there is no dependency or it's the same component (distance zero)\n return;\n }\n const predecessor = dijkstraResults[idStr].predecessor;\n const dependencyType = this.edge(predecessor, idStr);\n dependencies.push({\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n id: this.node(idStr)!.attr,\n depth: distance,\n parent: predecessor,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n dependencyType: dependencyType!.attr,\n });\n });\n dependencies.sort((a, b) => a.depth - b.depth);\n return dependencies;\n }\n\n getDependenciesAsObjectTree(idStr: string): Record<string, any> {\n const depsInfo = this.getDependenciesInfo(ComponentID.fromString(idStr));\n const populateTreeItems = (id: string, treeItems: Array<{ label: string; nodes?: Array<Record<string, any>> }>) => {\n const children = depsInfo.filter((depInfo) => depInfo.parent === id);\n if (!children || children.length === 0) {\n return;\n }\n children.forEach((child) => {\n const { id: compId } = child;\n const label = compId.toString();\n const currentNodes = [];\n treeItems.push({ label, nodes: currentNodes });\n populateTreeItems(label, currentNodes);\n });\n };\n\n const currentNodes = [];\n const tree = { label: idStr, nodes: currentNodes };\n populateTreeItems(idStr, currentNodes);\n return tree;\n }\n\n private shouldLimitToSeedersOnly() {\n return this.seederIds.length;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { ComponentFactory, ComponentID, ComponentMain } from '@teambit/component';
1
+ import type { ComponentFactory, ComponentID, ComponentMain } from '@teambit/component';
2
2
  import { ComponentGraph } from './component-graph';
3
3
  import { ComponentIdGraph } from './component-id-graph';
4
4
  export type GetGraphOpts = {
@@ -1 +1 @@
1
- {"version":3,"names":["_graph","data","require","_componentGraph","_componentIdGraph","_dependency","GraphBuilder","constructor","componentAspect","getGraph","ids","opts","componentHost","host","getHost","graph","componentGraph","toComponentGraph","seederIds","listIds","getGraphIds","componentIdGraph","ComponentIdGraph","nodes","edges","newGraph","ComponentGraph","forEach","node","setNode","edge","edgeObj","attr","Dependency","setEdge","Edge","sourceId","targetId","exports"],"sources":["graph-builder.ts"],"sourcesContent":["import { Component, ComponentFactory, ComponentID, ComponentMain } from '@teambit/component';\nimport { Edge, Graph } from '@teambit/graph.cleargraph';\nimport { ComponentGraph } from './component-graph';\nimport { ComponentIdGraph } from './component-id-graph';\nimport { Dependency } from './model/dependency';\n\nexport type GetGraphOpts = {\n host?: ComponentFactory;\n};\n\nexport class GraphBuilder {\n constructor(private componentAspect: ComponentMain) {}\n\n /**\n * important - prefer using `getGraphIds()` it's way better in terms of performance.\n */\n async getGraph(ids?: ComponentID[], opts: GetGraphOpts = {}): Promise<ComponentGraph> {\n const componentHost = opts.host || this.componentAspect.getHost();\n\n const graph = await componentHost.getGraph(ids, false);\n const componentGraph = await this.toComponentGraph(graph);\n componentGraph.seederIds = ids || (await componentHost.listIds());\n return componentGraph;\n }\n\n async getGraphIds(ids?: ComponentID[], opts: GetGraphOpts = {}): Promise<ComponentIdGraph> {\n const componentHost = opts.host || this.componentAspect.getHost();\n\n const graph = await componentHost.getGraphIds(ids, false);\n const componentIdGraph = new ComponentIdGraph(graph.nodes, graph.edges);\n componentIdGraph.seederIds = ids || (await componentHost.listIds());\n return componentIdGraph;\n }\n\n private async toComponentGraph(graph: Graph<Component, string>): Promise<ComponentGraph> {\n const newGraph = new ComponentGraph();\n graph.nodes.forEach((node) => {\n newGraph.setNode(node);\n });\n graph.edges.forEach((edge) => {\n const edgeObj =\n edge.attr === 'dependencies' || edge.attr === 'runtime' ? new Dependency('runtime') : new Dependency('dev');\n newGraph.setEdge(new Edge(edge.sourceId, edge.targetId, edgeObj));\n });\n return newGraph;\n }\n}\n"],"mappings":";;;;;;AACA,SAAAA,OAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,MAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,gBAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,eAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,kBAAA;EAAA,MAAAH,IAAA,GAAAC,OAAA;EAAAE,iBAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,YAAA;EAAA,MAAAJ,IAAA,GAAAC,OAAA;EAAAG,WAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAMO,MAAMK,YAAY,CAAC;EACxBC,WAAWA,CAASC,eAA8B,EAAE;IAAA,KAAhCA,eAA8B,GAA9BA,eAA8B;EAAG;;EAErD;AACF;AACA;EACE,MAAMC,QAAQA,CAACC,GAAmB,EAAEC,IAAkB,GAAG,CAAC,CAAC,EAA2B;IACpF,MAAMC,aAAa,GAAGD,IAAI,CAACE,IAAI,IAAI,IAAI,CAACL,eAAe,CAACM,OAAO,CAAC,CAAC;IAEjE,MAAMC,KAAK,GAAG,MAAMH,aAAa,CAACH,QAAQ,CAACC,GAAG,EAAE,KAAK,CAAC;IACtD,MAAMM,cAAc,GAAG,MAAM,IAAI,CAACC,gBAAgB,CAACF,KAAK,CAAC;IACzDC,cAAc,CAACE,SAAS,GAAGR,GAAG,KAAK,MAAME,aAAa,CAACO,OAAO,CAAC,CAAC,CAAC;IACjE,OAAOH,cAAc;EACvB;EAEA,MAAMI,WAAWA,CAACV,GAAmB,EAAEC,IAAkB,GAAG,CAAC,CAAC,EAA6B;IACzF,MAAMC,aAAa,GAAGD,IAAI,CAACE,IAAI,IAAI,IAAI,CAACL,eAAe,CAACM,OAAO,CAAC,CAAC;IAEjE,MAAMC,KAAK,GAAG,MAAMH,aAAa,CAACQ,WAAW,CAACV,GAAG,EAAE,KAAK,CAAC;IACzD,MAAMW,gBAAgB,GAAG,KAAIC,oCAAgB,EAACP,KAAK,CAACQ,KAAK,EAAER,KAAK,CAACS,KAAK,CAAC;IACvEH,gBAAgB,CAACH,SAAS,GAAGR,GAAG,KAAK,MAAME,aAAa,CAACO,OAAO,CAAC,CAAC,CAAC;IACnE,OAAOE,gBAAgB;EACzB;EAEA,MAAcJ,gBAAgBA,CAACF,KAA+B,EAA2B;IACvF,MAAMU,QAAQ,GAAG,KAAIC,gCAAc,EAAC,CAAC;IACrCX,KAAK,CAACQ,KAAK,CAACI,OAAO,CAAEC,IAAI,IAAK;MAC5BH,QAAQ,CAACI,OAAO,CAACD,IAAI,CAAC;IACxB,CAAC,CAAC;IACFb,KAAK,CAACS,KAAK,CAACG,OAAO,CAAEG,IAAI,IAAK;MAC5B,MAAMC,OAAO,GACXD,IAAI,CAACE,IAAI,KAAK,cAAc,IAAIF,IAAI,CAACE,IAAI,KAAK,SAAS,GAAG,KAAIC,wBAAU,EAAC,SAAS,CAAC,GAAG,KAAIA,wBAAU,EAAC,KAAK,CAAC;MAC7GR,QAAQ,CAACS,OAAO,CAAC,KAAIC,aAAI,EAACL,IAAI,CAACM,QAAQ,EAAEN,IAAI,CAACO,QAAQ,EAAEN,OAAO,CAAC,CAAC;IACnE,CAAC,CAAC;IACF,OAAON,QAAQ;EACjB;AACF;AAACa,OAAA,CAAAhC,YAAA,GAAAA,YAAA","ignoreList":[]}
1
+ {"version":3,"names":["_graph","data","require","_componentGraph","_componentIdGraph","_dependency","GraphBuilder","constructor","componentAspect","getGraph","ids","opts","componentHost","host","getHost","graph","componentGraph","toComponentGraph","seederIds","listIds","getGraphIds","componentIdGraph","ComponentIdGraph","nodes","edges","newGraph","ComponentGraph","forEach","node","setNode","edge","edgeObj","attr","Dependency","setEdge","Edge","sourceId","targetId","exports"],"sources":["graph-builder.ts"],"sourcesContent":["import type { Component, ComponentFactory, ComponentID, ComponentMain } from '@teambit/component';\nimport type { Graph } from '@teambit/graph.cleargraph';\nimport { Edge } from '@teambit/graph.cleargraph';\nimport { ComponentGraph } from './component-graph';\nimport { ComponentIdGraph } from './component-id-graph';\nimport { Dependency } from './model/dependency';\n\nexport type GetGraphOpts = {\n host?: ComponentFactory;\n};\n\nexport class GraphBuilder {\n constructor(private componentAspect: ComponentMain) {}\n\n /**\n * important - prefer using `getGraphIds()` it's way better in terms of performance.\n */\n async getGraph(ids?: ComponentID[], opts: GetGraphOpts = {}): Promise<ComponentGraph> {\n const componentHost = opts.host || this.componentAspect.getHost();\n\n const graph = await componentHost.getGraph(ids, false);\n const componentGraph = await this.toComponentGraph(graph);\n componentGraph.seederIds = ids || (await componentHost.listIds());\n return componentGraph;\n }\n\n async getGraphIds(ids?: ComponentID[], opts: GetGraphOpts = {}): Promise<ComponentIdGraph> {\n const componentHost = opts.host || this.componentAspect.getHost();\n\n const graph = await componentHost.getGraphIds(ids, false);\n const componentIdGraph = new ComponentIdGraph(graph.nodes, graph.edges);\n componentIdGraph.seederIds = ids || (await componentHost.listIds());\n return componentIdGraph;\n }\n\n private async toComponentGraph(graph: Graph<Component, string>): Promise<ComponentGraph> {\n const newGraph = new ComponentGraph();\n graph.nodes.forEach((node) => {\n newGraph.setNode(node);\n });\n graph.edges.forEach((edge) => {\n const edgeObj =\n edge.attr === 'dependencies' || edge.attr === 'runtime' ? new Dependency('runtime') : new Dependency('dev');\n newGraph.setEdge(new Edge(edge.sourceId, edge.targetId, edgeObj));\n });\n return newGraph;\n }\n}\n"],"mappings":";;;;;;AAEA,SAAAA,OAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,MAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,gBAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,eAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,kBAAA;EAAA,MAAAH,IAAA,GAAAC,OAAA;EAAAE,iBAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,YAAA;EAAA,MAAAJ,IAAA,GAAAC,OAAA;EAAAG,WAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAMO,MAAMK,YAAY,CAAC;EACxBC,WAAWA,CAASC,eAA8B,EAAE;IAAA,KAAhCA,eAA8B,GAA9BA,eAA8B;EAAG;;EAErD;AACF;AACA;EACE,MAAMC,QAAQA,CAACC,GAAmB,EAAEC,IAAkB,GAAG,CAAC,CAAC,EAA2B;IACpF,MAAMC,aAAa,GAAGD,IAAI,CAACE,IAAI,IAAI,IAAI,CAACL,eAAe,CAACM,OAAO,CAAC,CAAC;IAEjE,MAAMC,KAAK,GAAG,MAAMH,aAAa,CAACH,QAAQ,CAACC,GAAG,EAAE,KAAK,CAAC;IACtD,MAAMM,cAAc,GAAG,MAAM,IAAI,CAACC,gBAAgB,CAACF,KAAK,CAAC;IACzDC,cAAc,CAACE,SAAS,GAAGR,GAAG,KAAK,MAAME,aAAa,CAACO,OAAO,CAAC,CAAC,CAAC;IACjE,OAAOH,cAAc;EACvB;EAEA,MAAMI,WAAWA,CAACV,GAAmB,EAAEC,IAAkB,GAAG,CAAC,CAAC,EAA6B;IACzF,MAAMC,aAAa,GAAGD,IAAI,CAACE,IAAI,IAAI,IAAI,CAACL,eAAe,CAACM,OAAO,CAAC,CAAC;IAEjE,MAAMC,KAAK,GAAG,MAAMH,aAAa,CAACQ,WAAW,CAACV,GAAG,EAAE,KAAK,CAAC;IACzD,MAAMW,gBAAgB,GAAG,KAAIC,oCAAgB,EAACP,KAAK,CAACQ,KAAK,EAAER,KAAK,CAACS,KAAK,CAAC;IACvEH,gBAAgB,CAACH,SAAS,GAAGR,GAAG,KAAK,MAAME,aAAa,CAACO,OAAO,CAAC,CAAC,CAAC;IACnE,OAAOE,gBAAgB;EACzB;EAEA,MAAcJ,gBAAgBA,CAACF,KAA+B,EAA2B;IACvF,MAAMU,QAAQ,GAAG,KAAIC,gCAAc,EAAC,CAAC;IACrCX,KAAK,CAACQ,KAAK,CAACI,OAAO,CAAEC,IAAI,IAAK;MAC5BH,QAAQ,CAACI,OAAO,CAACD,IAAI,CAAC;IACxB,CAAC,CAAC;IACFb,KAAK,CAACS,KAAK,CAACG,OAAO,CAAEG,IAAI,IAAK;MAC5B,MAAMC,OAAO,GACXD,IAAI,CAACE,IAAI,KAAK,cAAc,IAAIF,IAAI,CAACE,IAAI,KAAK,SAAS,GAAG,KAAIC,wBAAU,EAAC,SAAS,CAAC,GAAG,KAAIA,wBAAU,EAAC,KAAK,CAAC;MAC7GR,QAAQ,CAACS,OAAO,CAAC,KAAIC,aAAI,EAACL,IAAI,CAACM,QAAQ,EAAEN,IAAI,CAACO,QAAQ,EAAEN,OAAO,CAAC,CAAC;IACnE,CAAC,CAAC;IACF,OAAON,QAAQ;EACjB;AACF;AAACa,OAAA,CAAAhC,YAAA,GAAAA,YAAA","ignoreList":[]}
@@ -1,6 +1,6 @@
1
- import { Command, CommandOptions } from '@teambit/cli';
2
- import { ComponentMain } from '@teambit/component';
3
- import { GraphMain } from './graph.main.runtime';
1
+ import type { Command, CommandOptions } from '@teambit/cli';
2
+ import type { ComponentMain } from '@teambit/component';
3
+ import type { GraphMain } from './graph.main.runtime';
4
4
  export type GraphOpt = {
5
5
  remote?: string;
6
6
  layout?: string;
@@ -1 +1 @@
1
- {"version":3,"names":["_chalk","data","_interopRequireDefault","require","_graphlib","_componentId","_legacy","_scope","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","GraphCmd","constructor","componentAspect","graph","report","id","graphOpts","remote","layout","png","includeLocalOnly","includeDependencies","host","getHost","getVisualGraph","config","generateGraphFromRemote","VisualDependencyGraph","loadFromGraphlib","compId","resolveComponentId","undefined","compIds","modifiedOpts","getVisualGraphIds","visualDependencyGraph","result","render","chalk","green","json","shouldIncludeLocalOnly","getGraphIds","filteredGraph","list","listIds","listStr","map","toString","successorsSubgraph","nodeFilter","node","includes","edgeFilter","edge","targetId","sourceId","jsonGraph","toJson","nodes","GraphLib","write","getWorkspaceIfExist","workspace","ComponentID","fromString","scopeName","scope","remoteScope","getRemoteByName","consumer","componentDepGraph","Error","exports"],"sources":["graph-cmd.ts"],"sourcesContent":["import chalk from 'chalk';\nimport GraphLib from 'graphlib';\nimport { Command, CommandOptions } from '@teambit/cli';\nimport { ComponentID } from '@teambit/component-id';\nimport { GraphConfig, VisualDependencyGraph } from '@teambit/legacy.dependency-graph';\nimport { getRemoteByName } from '@teambit/scope.remotes';\nimport { ComponentMain } from '@teambit/component';\nimport type { Workspace } from '@teambit/workspace';\nimport { GraphMain } from './graph.main.runtime';\n\nexport type GraphOpt = {\n remote?: string;\n layout?: string;\n cycles?: boolean;\n png?: boolean;\n json?: boolean;\n includeLocalOnly?: boolean;\n includeDependencies?: boolean;\n};\n\nexport class GraphCmd implements Command {\n name = 'graph [id]';\n description = \"generate an SVG image file with the components' dependencies graph\";\n extendedDescription: 'black arrow is a runtime dependency. red arrow is either dev or peer';\n group = 'info-analysis';\n alias = '';\n options = [\n ['r', 'remote [remoteName]', 'remote name (name is optional, leave empty when id is specified)'],\n [\n '',\n 'layout <name>',\n 'GraphVis layout. default to \"dot\". options are [circo, dot, fdp, neato, osage, patchwork, sfdp, twopi]',\n ],\n ['', 'png', 'save the graph as a png file instead of svg. requires \"graphviz\" to be installed'],\n ['', 'cycles', 'generate a graph of cycles only'],\n [\n '',\n 'include-local-only',\n 'DEPRECATED: include only the components in the workspace (or local scope). This is now the default behavior.',\n ],\n [\n '',\n 'include-dependencies',\n 'include all dependencies recursively, not just workspace (or local scope) components',\n ],\n ['j', 'json', 'json format'],\n ] as CommandOptions;\n remoteOp = true;\n\n constructor(\n private componentAspect: ComponentMain,\n private graph: GraphMain\n ) {}\n\n async report([id]: [string], graphOpts: GraphOpt): Promise<string> {\n const { remote, layout, png, includeLocalOnly, includeDependencies } = graphOpts;\n const host = this.componentAspect.getHost();\n\n const getVisualGraph = async (): Promise<VisualDependencyGraph> => {\n if (remote) {\n const config: GraphConfig = {};\n if (layout) config.layout = layout;\n const graph = await this.generateGraphFromRemote(remote, id);\n return VisualDependencyGraph.loadFromGraphlib(graph, config);\n }\n const compId = id ? await host.resolveComponentId(id) : undefined;\n const compIds = compId ? [compId] : undefined;\n\n // New logic: local-only is now the default behavior\n // includeDependencies flag overrides this to show all dependencies\n const modifiedOpts = {\n ...graphOpts,\n includeLocalOnly: includeDependencies ? false : includeLocalOnly !== false, // true by default unless includeDependencies is used\n };\n\n return this.graph.getVisualGraphIds(compIds, modifiedOpts);\n };\n\n const visualDependencyGraph = await getVisualGraph();\n const result = await visualDependencyGraph.render(png ? 'png' : 'svg');\n\n return chalk.green(`image created at ${result}`);\n }\n\n async json([id]: [string], graphOpts: GraphOpt) {\n const { remote, includeLocalOnly, includeDependencies } = graphOpts;\n const host = this.componentAspect.getHost();\n if (!remote) {\n // For JSON output, we need to manually filter if needed\n // Since getGraphIds doesn't accept the same options as getVisualGraphIds\n const shouldIncludeLocalOnly = includeDependencies ? false : includeLocalOnly !== false;\n\n const graph = await this.graph.getGraphIds(id ? [await host.resolveComponentId(id)] : undefined);\n\n let filteredGraph = graph;\n if (shouldIncludeLocalOnly) {\n // Filter to only include local components\n const list = await host.listIds();\n const listStr = list.map((compId) => compId.toString());\n filteredGraph = graph.successorsSubgraph(listStr, {\n nodeFilter: (node) => listStr.includes(node.id),\n edgeFilter: (edge) => listStr.includes(edge.targetId) && listStr.includes(edge.sourceId),\n });\n }\n\n const jsonGraph = filteredGraph.toJson();\n if (jsonGraph.nodes) {\n jsonGraph.nodes = jsonGraph.nodes.map((node) => node.id);\n }\n return jsonGraph;\n }\n const graph = await this.generateGraphFromRemote(remote!, id);\n return GraphLib.json.write(graph);\n }\n\n private getWorkspaceIfExist(): Workspace | undefined {\n try {\n return this.componentAspect.getHost('teambit.workspace/workspace') as Workspace | undefined;\n } catch {\n return undefined;\n }\n }\n\n private async generateGraphFromRemote(remote: string | boolean, id?: string): Promise<GraphLib.Graph> {\n const workspace = this.getWorkspaceIfExist();\n const compId = id ? ComponentID.fromString(id) : undefined;\n if (compId) {\n const scopeName: string = typeof remote === 'string' ? remote : compId.scope;\n const remoteScope = await getRemoteByName(scopeName, workspace?.consumer);\n const componentDepGraph = await remoteScope.graph(compId);\n return componentDepGraph.graph;\n }\n if (typeof remote !== 'string') {\n throw new Error('please specify remote scope name or enter an id');\n }\n const remoteScope = await getRemoteByName(remote, workspace?.consumer);\n const componentDepGraph = await remoteScope.graph();\n return componentDepGraph.graph;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_chalk","data","_interopRequireDefault","require","_graphlib","_componentId","_legacy","_scope","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","GraphCmd","constructor","componentAspect","graph","report","id","graphOpts","remote","layout","png","includeLocalOnly","includeDependencies","host","getHost","getVisualGraph","config","generateGraphFromRemote","VisualDependencyGraph","loadFromGraphlib","compId","resolveComponentId","undefined","compIds","modifiedOpts","getVisualGraphIds","visualDependencyGraph","result","render","chalk","green","json","shouldIncludeLocalOnly","getGraphIds","filteredGraph","list","listIds","listStr","map","toString","successorsSubgraph","nodeFilter","node","includes","edgeFilter","edge","targetId","sourceId","jsonGraph","toJson","nodes","GraphLib","write","getWorkspaceIfExist","workspace","ComponentID","fromString","scopeName","scope","remoteScope","getRemoteByName","consumer","componentDepGraph","Error","exports"],"sources":["graph-cmd.ts"],"sourcesContent":["import chalk from 'chalk';\nimport GraphLib from 'graphlib';\nimport type { Command, CommandOptions } from '@teambit/cli';\nimport { ComponentID } from '@teambit/component-id';\nimport type { GraphConfig } from '@teambit/legacy.dependency-graph';\nimport { VisualDependencyGraph } from '@teambit/legacy.dependency-graph';\nimport { getRemoteByName } from '@teambit/scope.remotes';\nimport type { ComponentMain } from '@teambit/component';\nimport type { Workspace } from '@teambit/workspace';\nimport type { GraphMain } from './graph.main.runtime';\n\nexport type GraphOpt = {\n remote?: string;\n layout?: string;\n cycles?: boolean;\n png?: boolean;\n json?: boolean;\n includeLocalOnly?: boolean;\n includeDependencies?: boolean;\n};\n\nexport class GraphCmd implements Command {\n name = 'graph [id]';\n description = \"generate an SVG image file with the components' dependencies graph\";\n extendedDescription: 'black arrow is a runtime dependency. red arrow is either dev or peer';\n group = 'info-analysis';\n alias = '';\n options = [\n ['r', 'remote [remoteName]', 'remote name (name is optional, leave empty when id is specified)'],\n [\n '',\n 'layout <name>',\n 'GraphVis layout. default to \"dot\". options are [circo, dot, fdp, neato, osage, patchwork, sfdp, twopi]',\n ],\n ['', 'png', 'save the graph as a png file instead of svg. requires \"graphviz\" to be installed'],\n ['', 'cycles', 'generate a graph of cycles only'],\n [\n '',\n 'include-local-only',\n 'DEPRECATED: include only the components in the workspace (or local scope). This is now the default behavior.',\n ],\n [\n '',\n 'include-dependencies',\n 'include all dependencies recursively, not just workspace (or local scope) components',\n ],\n ['j', 'json', 'json format'],\n ] as CommandOptions;\n remoteOp = true;\n\n constructor(\n private componentAspect: ComponentMain,\n private graph: GraphMain\n ) {}\n\n async report([id]: [string], graphOpts: GraphOpt): Promise<string> {\n const { remote, layout, png, includeLocalOnly, includeDependencies } = graphOpts;\n const host = this.componentAspect.getHost();\n\n const getVisualGraph = async (): Promise<VisualDependencyGraph> => {\n if (remote) {\n const config: GraphConfig = {};\n if (layout) config.layout = layout;\n const graph = await this.generateGraphFromRemote(remote, id);\n return VisualDependencyGraph.loadFromGraphlib(graph, config);\n }\n const compId = id ? await host.resolveComponentId(id) : undefined;\n const compIds = compId ? [compId] : undefined;\n\n // New logic: local-only is now the default behavior\n // includeDependencies flag overrides this to show all dependencies\n const modifiedOpts = {\n ...graphOpts,\n includeLocalOnly: includeDependencies ? false : includeLocalOnly !== false, // true by default unless includeDependencies is used\n };\n\n return this.graph.getVisualGraphIds(compIds, modifiedOpts);\n };\n\n const visualDependencyGraph = await getVisualGraph();\n const result = await visualDependencyGraph.render(png ? 'png' : 'svg');\n\n return chalk.green(`image created at ${result}`);\n }\n\n async json([id]: [string], graphOpts: GraphOpt) {\n const { remote, includeLocalOnly, includeDependencies } = graphOpts;\n const host = this.componentAspect.getHost();\n if (!remote) {\n // For JSON output, we need to manually filter if needed\n // Since getGraphIds doesn't accept the same options as getVisualGraphIds\n const shouldIncludeLocalOnly = includeDependencies ? false : includeLocalOnly !== false;\n\n const graph = await this.graph.getGraphIds(id ? [await host.resolveComponentId(id)] : undefined);\n\n let filteredGraph = graph;\n if (shouldIncludeLocalOnly) {\n // Filter to only include local components\n const list = await host.listIds();\n const listStr = list.map((compId) => compId.toString());\n filteredGraph = graph.successorsSubgraph(listStr, {\n nodeFilter: (node) => listStr.includes(node.id),\n edgeFilter: (edge) => listStr.includes(edge.targetId) && listStr.includes(edge.sourceId),\n });\n }\n\n const jsonGraph = filteredGraph.toJson();\n if (jsonGraph.nodes) {\n jsonGraph.nodes = jsonGraph.nodes.map((node) => node.id);\n }\n return jsonGraph;\n }\n const graph = await this.generateGraphFromRemote(remote!, id);\n return GraphLib.json.write(graph);\n }\n\n private getWorkspaceIfExist(): Workspace | undefined {\n try {\n return this.componentAspect.getHost('teambit.workspace/workspace') as Workspace | undefined;\n } catch {\n return undefined;\n }\n }\n\n private async generateGraphFromRemote(remote: string | boolean, id?: string): Promise<GraphLib.Graph> {\n const workspace = this.getWorkspaceIfExist();\n const compId = id ? ComponentID.fromString(id) : undefined;\n if (compId) {\n const scopeName: string = typeof remote === 'string' ? remote : compId.scope;\n const remoteScope = await getRemoteByName(scopeName, workspace?.consumer);\n const componentDepGraph = await remoteScope.graph(compId);\n return componentDepGraph.graph;\n }\n if (typeof remote !== 'string') {\n throw new Error('please specify remote scope name or enter an id');\n }\n const remoteScope = await getRemoteByName(remote, workspace?.consumer);\n const componentDepGraph = await remoteScope.graph();\n return componentDepGraph.graph;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { Section } from '@teambit/component';
1
+ import type { Section } from '@teambit/component';
2
2
  import { ChangeType } from '@teambit/component.ui.component-compare.models.component-compare-change-type';
3
3
  import type { TabItem } from '@teambit/component.ui.component-compare.models.component-compare-props';
4
4
  export declare class GraphCompareSection implements Section, TabItem {
@@ -1 +1 @@
1
- {"version":3,"names":["_react","data","_interopRequireDefault","require","_componentUiComponentCompareModels","_dependenciesCompare","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","GraphCompareSection","constructor","href","children","navigationLink","path","element","createElement","DependenciesCompare","ChangeType","DEPENDENCY","exports"],"sources":["graph.compare.section.tsx"],"sourcesContent":["import React from 'react';\nimport { Section } from '@teambit/component';\nimport { ChangeType } from '@teambit/component.ui.component-compare.models.component-compare-change-type';\nimport type { TabItem } from '@teambit/component.ui.component-compare.models.component-compare-props';\nimport { DependenciesCompare } from './ui/dependencies-compare';\n\nexport class GraphCompareSection implements Section, TabItem {\n navigationLink = {\n href: 'dependencies',\n children: 'Dependencies',\n };\n\n props = this.navigationLink;\n\n route = {\n path: 'dependencies/*',\n element: <DependenciesCompare />,\n };\n\n order = 25;\n changeType = ChangeType.DEPENDENCY;\n id = 'dependencies';\n}\n"],"mappings":";;;;;;AAAA,SAAAA,OAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,MAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAG,mCAAA;EAAA,MAAAH,IAAA,GAAAE,OAAA;EAAAC,kCAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAI,qBAAA;EAAA,MAAAJ,IAAA,GAAAE,OAAA;EAAAE,oBAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAgE,SAAAC,uBAAAI,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;AAEzD,MAAMgB,mBAAmB,CAA6B;EAAAC,YAAA;IAAAnB,eAAA,yBAC1C;MACfoB,IAAI,EAAE,cAAc;MACpBC,QAAQ,EAAE;IACZ,CAAC;IAAArB,eAAA,gBAEO,IAAI,CAACsB,cAAc;IAAAtB,eAAA,gBAEnB;MACNuB,IAAI,EAAE,gBAAgB;MACtBC,OAAO,eAAEjC,MAAA,GAAAQ,OAAA,CAAA0B,aAAA,CAAC7B,oBAAA,GAAA8B,mBAAmB,MAAE;IACjC,CAAC;IAAA1B,eAAA,gBAEO,EAAE;IAAAA,eAAA,qBACG2B,+CAAU,CAACC,UAAU;IAAA5B,eAAA,aAC7B,cAAc;EAAA;AACrB;AAAC6B,OAAA,CAAAX,mBAAA,GAAAA,mBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_react","data","_interopRequireDefault","require","_componentUiComponentCompareModels","_dependenciesCompare","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","GraphCompareSection","constructor","href","children","navigationLink","path","element","createElement","DependenciesCompare","ChangeType","DEPENDENCY","exports"],"sources":["graph.compare.section.tsx"],"sourcesContent":["import React from 'react';\nimport type { Section } from '@teambit/component';\nimport { ChangeType } from '@teambit/component.ui.component-compare.models.component-compare-change-type';\nimport type { TabItem } from '@teambit/component.ui.component-compare.models.component-compare-props';\nimport { DependenciesCompare } from './ui/dependencies-compare';\n\nexport class GraphCompareSection implements Section, TabItem {\n navigationLink = {\n href: 'dependencies',\n children: 'Dependencies',\n };\n\n props = this.navigationLink;\n\n route = {\n path: 'dependencies/*',\n element: <DependenciesCompare />,\n };\n\n order = 25;\n changeType = ChangeType.DEPENDENCY;\n id = 'dependencies';\n}\n"],"mappings":";;;;;;AAAA,SAAAA,OAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,MAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAG,mCAAA;EAAA,MAAAH,IAAA,GAAAE,OAAA;EAAAC,kCAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAI,qBAAA;EAAA,MAAAJ,IAAA,GAAAE,OAAA;EAAAE,oBAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAgE,SAAAC,uBAAAI,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;AAEzD,MAAMgB,mBAAmB,CAA6B;EAAAC,YAAA;IAAAnB,eAAA,yBAC1C;MACfoB,IAAI,EAAE,cAAc;MACpBC,QAAQ,EAAE;IACZ,CAAC;IAAArB,eAAA,gBAEO,IAAI,CAACsB,cAAc;IAAAtB,eAAA,gBAEnB;MACNuB,IAAI,EAAE,gBAAgB;MACtBC,OAAO,eAAEjC,MAAA,GAAAQ,OAAA,CAAA0B,aAAA,CAAC7B,oBAAA,GAAA8B,mBAAmB,MAAE;IACjC,CAAC;IAAA1B,eAAA,gBAEO,EAAE;IAAAA,eAAA,qBACG2B,+CAAU,CAACC,UAAU;IAAA5B,eAAA,aAC7B,cAAc;EAAA;AACrB;AAAC6B,OAAA,CAAAX,mBAAA,GAAAA,mBAAA","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { ComponentMain } from '@teambit/component';
2
- import { Schema } from '@teambit/graphql';
3
- import { GraphBuilder } from './graph-builder';
1
+ import type { ComponentMain } from '@teambit/component';
2
+ import type { Schema } from '@teambit/graphql';
3
+ import type { GraphBuilder } from './graph-builder';
4
4
  export declare function graphSchema(graphBuilder: GraphBuilder, componentAspect: ComponentMain): Schema;
@@ -1 +1 @@
1
- {"version":3,"names":["_graphqlTag","data","require","_edgeType","textCmp","Intl","Collator","compare","graphSchema","graphBuilder","componentAspect","typeDefs","gql","resolvers","ComponentGraph","nodes","graph","map","node","id","component","attr","sort","a","b","edges","edge","sourceId","targetId","dependencyLifecycleType","getDependencyLifecycleType","type","Query","_parent","ids","filter","_context","info","componentsHost","getHost","resolvedIds","resolveMultipleComponentIds","list","x","isComponentFieldQueried","fieldNodes","selectionSet","selections","some","selection","kind","name","value","subSelection","getGraph","getGraphIds","undefined","runtimeGraph","runtimeOnly","toString","edgeRawData","EdgeType","dev","runtime","peer"],"sources":["graph.graphql.ts"],"sourcesContent":["import { ComponentMain } from '@teambit/component';\nimport { Schema } from '@teambit/graphql';\nimport { gql } from 'graphql-tag';\n\nimport { GraphBuilder } from './graph-builder';\nimport { ComponentGraph } from './component-graph';\nimport { GraphFilter } from './model/graph-filters';\nimport { DependencyType } from './model/dependency';\nimport { EdgeType } from './edge-type';\n\nconst textCmp = new Intl.Collator().compare;\n\nexport function graphSchema(graphBuilder: GraphBuilder, componentAspect: ComponentMain): Schema {\n return {\n typeDefs: gql`\n type ComponentGraph {\n nodes: [ComponentGraphNode]\n edges: [ComponentGraphEdge]\n }\n\n type ComponentGraphNode {\n id: String\n component: Component\n }\n\n enum DependencyLifecycleType {\n PEER\n RUNTIME\n DEV\n }\n\n type ComponentGraphEdge {\n sourceId: String\n targetId: String\n dependencyLifecycleType: DependencyLifecycleType\n }\n\n extend type Query {\n graph(ids: [String], filter: String): ComponentGraph\n }\n `,\n resolvers: {\n ComponentGraph: {\n nodes: (graph: ComponentGraph) => {\n return graph.nodes\n .map((node) => {\n return {\n id: node.id,\n component: node.attr,\n };\n })\n .sort((a, b) => textCmp(a.id, b.id));\n },\n edges: (graph: ComponentGraph) => {\n return graph.edges\n .map(\n (edge) =>\n ({\n sourceId: edge.sourceId,\n targetId: edge.targetId,\n dependencyLifecycleType: getDependencyLifecycleType(edge.attr.type),\n }) as { sourceId: string; targetId: string; dependencyLifecycleType: EdgeType }\n )\n .sort((a, b) => textCmp(a.sourceId, b.sourceId))\n .sort((a, b) => textCmp(a.targetId, b.targetId));\n },\n },\n Query: {\n graph: async (_parent, { ids, filter }: { ids?: string[]; filter?: GraphFilter }, _context, info) => {\n const componentsHost = componentAspect.getHost();\n const resolvedIds = ids\n ? await componentsHost.resolveMultipleComponentIds(ids)\n : (await componentsHost.list()).map((x) => x.id);\n\n const isComponentFieldQueried = info.fieldNodes[0].selectionSet?.selections.some(\n (selection: any) =>\n selection.kind === 'Field' &&\n selection.name.value === 'nodes' &&\n selection.selectionSet?.selections.some(\n (subSelection: any) => subSelection.kind === 'Field' && subSelection.name.value === 'component'\n )\n );\n\n const graph = isComponentFieldQueried\n ? await graphBuilder.getGraph(resolvedIds)\n : await graphBuilder.getGraphIds(resolvedIds);\n\n if (!graph) return undefined;\n\n if (filter === 'runtimeOnly') {\n const runtimeGraph = graph.runtimeOnly(resolvedIds.map((x) => x.toString()));\n return runtimeGraph;\n }\n\n return graph;\n },\n },\n },\n };\n}\n\nfunction getDependencyLifecycleType(edgeRawData: DependencyType): EdgeType {\n if (edgeRawData === 'dev') return EdgeType.dev;\n if (edgeRawData === 'runtime') return EdgeType.runtime;\n return EdgeType.peer;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_graphqlTag","data","require","_edgeType","textCmp","Intl","Collator","compare","graphSchema","graphBuilder","componentAspect","typeDefs","gql","resolvers","ComponentGraph","nodes","graph","map","node","id","component","attr","sort","a","b","edges","edge","sourceId","targetId","dependencyLifecycleType","getDependencyLifecycleType","type","Query","_parent","ids","filter","_context","info","componentsHost","getHost","resolvedIds","resolveMultipleComponentIds","list","x","isComponentFieldQueried","fieldNodes","selectionSet","selections","some","selection","kind","name","value","subSelection","getGraph","getGraphIds","undefined","runtimeGraph","runtimeOnly","toString","edgeRawData","EdgeType","dev","runtime","peer"],"sources":["graph.graphql.ts"],"sourcesContent":["import type { ComponentMain } from '@teambit/component';\nimport type { Schema } from '@teambit/graphql';\nimport { gql } from 'graphql-tag';\n\nimport type { GraphBuilder } from './graph-builder';\nimport type { ComponentGraph } from './component-graph';\nimport type { GraphFilter } from './model/graph-filters';\nimport type { DependencyType } from './model/dependency';\nimport { EdgeType } from './edge-type';\n\nconst textCmp = new Intl.Collator().compare;\n\nexport function graphSchema(graphBuilder: GraphBuilder, componentAspect: ComponentMain): Schema {\n return {\n typeDefs: gql`\n type ComponentGraph {\n nodes: [ComponentGraphNode]\n edges: [ComponentGraphEdge]\n }\n\n type ComponentGraphNode {\n id: String\n component: Component\n }\n\n enum DependencyLifecycleType {\n PEER\n RUNTIME\n DEV\n }\n\n type ComponentGraphEdge {\n sourceId: String\n targetId: String\n dependencyLifecycleType: DependencyLifecycleType\n }\n\n extend type Query {\n graph(ids: [String], filter: String): ComponentGraph\n }\n `,\n resolvers: {\n ComponentGraph: {\n nodes: (graph: ComponentGraph) => {\n return graph.nodes\n .map((node) => {\n return {\n id: node.id,\n component: node.attr,\n };\n })\n .sort((a, b) => textCmp(a.id, b.id));\n },\n edges: (graph: ComponentGraph) => {\n return graph.edges\n .map(\n (edge) =>\n ({\n sourceId: edge.sourceId,\n targetId: edge.targetId,\n dependencyLifecycleType: getDependencyLifecycleType(edge.attr.type),\n }) as { sourceId: string; targetId: string; dependencyLifecycleType: EdgeType }\n )\n .sort((a, b) => textCmp(a.sourceId, b.sourceId))\n .sort((a, b) => textCmp(a.targetId, b.targetId));\n },\n },\n Query: {\n graph: async (_parent, { ids, filter }: { ids?: string[]; filter?: GraphFilter }, _context, info) => {\n const componentsHost = componentAspect.getHost();\n const resolvedIds = ids\n ? await componentsHost.resolveMultipleComponentIds(ids)\n : (await componentsHost.list()).map((x) => x.id);\n\n const isComponentFieldQueried = info.fieldNodes[0].selectionSet?.selections.some(\n (selection: any) =>\n selection.kind === 'Field' &&\n selection.name.value === 'nodes' &&\n selection.selectionSet?.selections.some(\n (subSelection: any) => subSelection.kind === 'Field' && subSelection.name.value === 'component'\n )\n );\n\n const graph = isComponentFieldQueried\n ? await graphBuilder.getGraph(resolvedIds)\n : await graphBuilder.getGraphIds(resolvedIds);\n\n if (!graph) return undefined;\n\n if (filter === 'runtimeOnly') {\n const runtimeGraph = graph.runtimeOnly(resolvedIds.map((x) => x.toString()));\n return runtimeGraph;\n }\n\n return graph;\n },\n },\n },\n };\n}\n\nfunction getDependencyLifecycleType(edgeRawData: DependencyType): EdgeType {\n if (edgeRawData === 'dev') return EdgeType.dev;\n if (edgeRawData === 'runtime') return EdgeType.runtime;\n return EdgeType.peer;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,11 +1,11 @@
1
- import { CLIMain } from '@teambit/cli';
2
- import { ComponentMain, ComponentID } from '@teambit/component';
3
- import { GraphqlMain } from '@teambit/graphql';
4
- import { Logger, LoggerMain } from '@teambit/logger';
5
- import { GetGraphOpts } from './graph-builder';
6
- import { GraphOpt } from './graph-cmd';
7
- import { ComponentGraph } from './component-graph';
8
- import { ComponentIdGraph } from './component-id-graph';
1
+ import type { CLIMain } from '@teambit/cli';
2
+ import type { ComponentMain, ComponentID } from '@teambit/component';
3
+ import type { GraphqlMain } from '@teambit/graphql';
4
+ import type { Logger, LoggerMain } from '@teambit/logger';
5
+ import type { GetGraphOpts } from './graph-builder';
6
+ import type { GraphOpt } from './graph-cmd';
7
+ import type { ComponentGraph } from './component-graph';
8
+ import type { ComponentIdGraph } from './component-id-graph';
9
9
  import { VisualDependencyGraph } from '@teambit/legacy.dependency-graph';
10
10
  export declare class GraphMain {
11
11
  private componentAspect;
@@ -1 +1 @@
1
- {"version":3,"names":["_cli","data","require","_component","_graphql","_logger","_lodash","_graphBuilder","_graph","_graph2","_graphCmd","_legacy","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","GraphMain","constructor","componentAspect","logger","getGraph","ids","opts","graphBuilder","GraphBuilder","getGraphIds","getVisualGraphIds","setStatusLine","layout","includeLocalOnly","cycles","graphVizOpts","graphIdsAll","host","getHost","list","listIds","idsWithVersion","getIdsWithVersions","listStr","map","id","toString","graphIds","successorsSubgraph","nodeFilter","node","includes","edgeFilter","edge","targetId","sourceId","getVisualCyclesFromGraph","VisualDependencyGraph","loadFromClearGraph","cyclesGraph","findCycles","multipleCycles","cycle","intersection","length","undefined","subgraph","loadFromMultipleClearGraphs","compact","comps","getMany","comp","provider","graphql","cli","loggerMain","createLogger","GraphAspect","register","graphSchema","graphMain","GraphCmd","exports","GraphqlAspect","ComponentAspect","CLIAspect","LoggerAspect","MainRuntime","addRuntime"],"sources":["graph.main.runtime.ts"],"sourcesContent":["import { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { ComponentMain, ComponentAspect, ComponentID } from '@teambit/component';\nimport { GraphqlAspect, GraphqlMain } from '@teambit/graphql';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { compact, intersection } from 'lodash';\nimport { GetGraphOpts, GraphBuilder } from './graph-builder';\nimport { graphSchema } from './graph.graphql';\nimport { GraphAspect } from './graph.aspect';\nimport { GraphCmd, GraphOpt } from './graph-cmd';\nimport { ComponentGraph } from './component-graph';\nimport { ComponentIdGraph } from './component-id-graph';\nimport { GraphConfig, VisualDependencyGraph } from '@teambit/legacy.dependency-graph';\n\nexport class GraphMain {\n constructor(\n private componentAspect: ComponentMain,\n private logger: Logger\n ) {}\n\n /**\n * important - prefer using `getGraphIds()` it's way better in terms of performance.\n */\n async getGraph(ids?: ComponentID[], opts: GetGraphOpts = {}): Promise<ComponentGraph> {\n const graphBuilder = new GraphBuilder(this.componentAspect);\n return graphBuilder.getGraph(ids, opts);\n }\n\n async getGraphIds(ids?: ComponentID[], opts: GetGraphOpts = {}): Promise<ComponentIdGraph> {\n const graphBuilder = new GraphBuilder(this.componentAspect);\n return graphBuilder.getGraphIds(ids, opts);\n }\n\n /**\n * this visual graph-ids can render the graph as a SVG/png and other formats.\n */\n async getVisualGraphIds(ids?: ComponentID[], opts: GraphOpt = {}): Promise<VisualDependencyGraph> {\n this.logger.setStatusLine('loading graph');\n const { layout, includeLocalOnly, cycles } = opts;\n const graphVizOpts: GraphConfig = {};\n if (layout) graphVizOpts.layout = layout;\n const graphIdsAll = await this.getGraphIds(ids);\n\n const host = this.componentAspect.getHost();\n const list = await host.listIds();\n const idsWithVersion = await this.getIdsWithVersions(ids);\n const listStr = list.map((id) => id.toString());\n const graphIds = includeLocalOnly\n ? graphIdsAll.successorsSubgraph(idsWithVersion || listStr, {\n nodeFilter: (node) => listStr.includes(node.id),\n edgeFilter: (edge) => listStr.includes(edge.targetId) && listStr.includes(edge.sourceId),\n })\n : graphIdsAll;\n this.logger.setStatusLine('rendering graph');\n if (cycles) {\n return this.getVisualCyclesFromGraph(graphIds, idsWithVersion, graphVizOpts);\n }\n return VisualDependencyGraph.loadFromClearGraph(graphIds, graphVizOpts, idsWithVersion);\n }\n\n private async getVisualCyclesFromGraph(\n graphIds: ComponentIdGraph,\n idsWithVersion?: string[],\n graphVizOpts: GraphConfig = {}\n ): Promise<VisualDependencyGraph> {\n const cyclesGraph = graphIds.findCycles();\n const multipleCycles = cyclesGraph.map((cycle) => {\n if (idsWithVersion && intersection(idsWithVersion, cycle).length < 1) return undefined;\n return graphIds.subgraph(cycle, {\n nodeFilter: (node) => cycle.includes(node.id),\n edgeFilter: (edge) => cycle.includes(edge.targetId),\n });\n });\n return VisualDependencyGraph.loadFromMultipleClearGraphs(compact(multipleCycles), graphVizOpts, idsWithVersion);\n }\n\n private async getIdsWithVersions(ids?: ComponentID[]): Promise<string[] | undefined> {\n const host = this.componentAspect.getHost();\n if (!ids) return undefined;\n const comps = await host.getMany(ids);\n if (comps.length) return comps.map((comp) => comp.id.toString());\n return undefined;\n }\n\n static slots = [];\n static dependencies = [GraphqlAspect, ComponentAspect, CLIAspect, LoggerAspect];\n static runtime = MainRuntime;\n static async provider([graphql, componentAspect, cli, loggerMain]: [\n GraphqlMain,\n ComponentMain,\n CLIMain,\n LoggerMain,\n ]) {\n const logger = loggerMain.createLogger(GraphAspect.id);\n\n const graphBuilder = new GraphBuilder(componentAspect);\n graphql.register(() => graphSchema(graphBuilder, componentAspect));\n\n const graphMain = new GraphMain(componentAspect, logger);\n cli.register(new GraphCmd(componentAspect, graphMain));\n\n return graphMain;\n }\n}\n\nGraphAspect.addRuntime(GraphMain);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_cli","data","require","_component","_graphql","_logger","_lodash","_graphBuilder","_graph","_graph2","_graphCmd","_legacy","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","GraphMain","constructor","componentAspect","logger","getGraph","ids","opts","graphBuilder","GraphBuilder","getGraphIds","getVisualGraphIds","setStatusLine","layout","includeLocalOnly","cycles","graphVizOpts","graphIdsAll","host","getHost","list","listIds","idsWithVersion","getIdsWithVersions","listStr","map","id","toString","graphIds","successorsSubgraph","nodeFilter","node","includes","edgeFilter","edge","targetId","sourceId","getVisualCyclesFromGraph","VisualDependencyGraph","loadFromClearGraph","cyclesGraph","findCycles","multipleCycles","cycle","intersection","length","undefined","subgraph","loadFromMultipleClearGraphs","compact","comps","getMany","comp","provider","graphql","cli","loggerMain","createLogger","GraphAspect","register","graphSchema","graphMain","GraphCmd","exports","GraphqlAspect","ComponentAspect","CLIAspect","LoggerAspect","MainRuntime","addRuntime"],"sources":["graph.main.runtime.ts"],"sourcesContent":["import type { CLIMain } from '@teambit/cli';\nimport { CLIAspect, MainRuntime } from '@teambit/cli';\nimport type { ComponentMain, ComponentID } from '@teambit/component';\nimport { ComponentAspect } from '@teambit/component';\nimport type { GraphqlMain } from '@teambit/graphql';\nimport { GraphqlAspect } from '@teambit/graphql';\nimport type { Logger, LoggerMain } from '@teambit/logger';\nimport { LoggerAspect } from '@teambit/logger';\nimport { compact, intersection } from 'lodash';\nimport type { GetGraphOpts } from './graph-builder';\nimport { GraphBuilder } from './graph-builder';\nimport { graphSchema } from './graph.graphql';\nimport { GraphAspect } from './graph.aspect';\nimport type { GraphOpt } from './graph-cmd';\nimport { GraphCmd } from './graph-cmd';\nimport type { ComponentGraph } from './component-graph';\nimport type { ComponentIdGraph } from './component-id-graph';\nimport type { GraphConfig } from '@teambit/legacy.dependency-graph';\nimport { VisualDependencyGraph } from '@teambit/legacy.dependency-graph';\n\nexport class GraphMain {\n constructor(\n private componentAspect: ComponentMain,\n private logger: Logger\n ) {}\n\n /**\n * important - prefer using `getGraphIds()` it's way better in terms of performance.\n */\n async getGraph(ids?: ComponentID[], opts: GetGraphOpts = {}): Promise<ComponentGraph> {\n const graphBuilder = new GraphBuilder(this.componentAspect);\n return graphBuilder.getGraph(ids, opts);\n }\n\n async getGraphIds(ids?: ComponentID[], opts: GetGraphOpts = {}): Promise<ComponentIdGraph> {\n const graphBuilder = new GraphBuilder(this.componentAspect);\n return graphBuilder.getGraphIds(ids, opts);\n }\n\n /**\n * this visual graph-ids can render the graph as a SVG/png and other formats.\n */\n async getVisualGraphIds(ids?: ComponentID[], opts: GraphOpt = {}): Promise<VisualDependencyGraph> {\n this.logger.setStatusLine('loading graph');\n const { layout, includeLocalOnly, cycles } = opts;\n const graphVizOpts: GraphConfig = {};\n if (layout) graphVizOpts.layout = layout;\n const graphIdsAll = await this.getGraphIds(ids);\n\n const host = this.componentAspect.getHost();\n const list = await host.listIds();\n const idsWithVersion = await this.getIdsWithVersions(ids);\n const listStr = list.map((id) => id.toString());\n const graphIds = includeLocalOnly\n ? graphIdsAll.successorsSubgraph(idsWithVersion || listStr, {\n nodeFilter: (node) => listStr.includes(node.id),\n edgeFilter: (edge) => listStr.includes(edge.targetId) && listStr.includes(edge.sourceId),\n })\n : graphIdsAll;\n this.logger.setStatusLine('rendering graph');\n if (cycles) {\n return this.getVisualCyclesFromGraph(graphIds, idsWithVersion, graphVizOpts);\n }\n return VisualDependencyGraph.loadFromClearGraph(graphIds, graphVizOpts, idsWithVersion);\n }\n\n private async getVisualCyclesFromGraph(\n graphIds: ComponentIdGraph,\n idsWithVersion?: string[],\n graphVizOpts: GraphConfig = {}\n ): Promise<VisualDependencyGraph> {\n const cyclesGraph = graphIds.findCycles();\n const multipleCycles = cyclesGraph.map((cycle) => {\n if (idsWithVersion && intersection(idsWithVersion, cycle).length < 1) return undefined;\n return graphIds.subgraph(cycle, {\n nodeFilter: (node) => cycle.includes(node.id),\n edgeFilter: (edge) => cycle.includes(edge.targetId),\n });\n });\n return VisualDependencyGraph.loadFromMultipleClearGraphs(compact(multipleCycles), graphVizOpts, idsWithVersion);\n }\n\n private async getIdsWithVersions(ids?: ComponentID[]): Promise<string[] | undefined> {\n const host = this.componentAspect.getHost();\n if (!ids) return undefined;\n const comps = await host.getMany(ids);\n if (comps.length) return comps.map((comp) => comp.id.toString());\n return undefined;\n }\n\n static slots = [];\n static dependencies = [GraphqlAspect, ComponentAspect, CLIAspect, LoggerAspect];\n static runtime = MainRuntime;\n static async provider([graphql, componentAspect, cli, loggerMain]: [\n GraphqlMain,\n ComponentMain,\n CLIMain,\n LoggerMain,\n ]) {\n const logger = loggerMain.createLogger(GraphAspect.id);\n\n const graphBuilder = new GraphBuilder(componentAspect);\n graphql.register(() => graphSchema(graphBuilder, componentAspect));\n\n const graphMain = new GraphMain(componentAspect, logger);\n cli.register(new GraphCmd(componentAspect, graphMain));\n\n return graphMain;\n }\n}\n\nGraphAspect.addRuntime(GraphMain);\n"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,7 @@
1
- import { ComponentType } from 'react';
2
- import { SlotRegistry } from '@teambit/harmony';
3
- import { ComponentCompareUI } from '@teambit/component-compare';
4
- import { ComponentUI, ComponentModel } from '@teambit/component';
1
+ import type { ComponentType } from 'react';
2
+ import type { SlotRegistry } from '@teambit/harmony';
3
+ import type { ComponentCompareUI } from '@teambit/component-compare';
4
+ import type { ComponentUI, ComponentModel } from '@teambit/component';
5
5
  import { DependenciesGraph } from './ui/dependencies-graph';
6
6
  export interface ComponentWidgetProps extends React.HTMLAttributes<HTMLDivElement> {
7
7
  component: ComponentModel;
@@ -1 +1 @@
1
- {"version":3,"names":["_ui","data","require","_harmony","_componentCompare","_component","_graph","_graph2","_graphCompare","_dependenciesGraph","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","GraphUI","getDependenciesGraph","DependenciesGraph","registerComponentWidget","componentWidgetSlot","register","constructor","provider","componentUI","componentCompare","config","graphUI","section","GraphSection","graphSection","GraphCompareSection","componentTab","registerNavigation","navigationLink","order","registerRoute","route","registerRoutes","exports","ComponentAspect","ComponentCompareAspect","UIRuntime","Slot","withType","GraphAspect","addRuntime"],"sources":["graph.ui.runtime.tsx"],"sourcesContent":["import { ComponentType } from 'react';\nimport { UIRuntime } from '@teambit/ui';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport { ComponentCompareUI, ComponentCompareAspect } from '@teambit/component-compare';\nimport { ComponentAspect, ComponentUI, ComponentModel } from '@teambit/component';\nimport { GraphAspect } from './graph.aspect';\nimport { GraphSection } from './ui/graph.section';\nimport { GraphCompareSection } from './graph.compare.section';\nimport { DependenciesGraph } from './ui/dependencies-graph';\n\nexport interface ComponentWidgetProps extends React.HTMLAttributes<HTMLDivElement> {\n component: ComponentModel;\n}\nexport type ComponentWidget = ComponentType<ComponentWidgetProps>;\nexport type ComponentWidgetSlot = SlotRegistry<ComponentWidget>;\n\nexport type GraphUIConfig = {\n componentTab: boolean;\n};\n\n/**\n * Presents dependencies graph in the component page\n */\nexport class GraphUI {\n getDependenciesGraph() {\n return DependenciesGraph;\n }\n\n /**\n * adds plugins to component nodes\n * @param value\n */\n registerComponentWidget(value: ComponentWidget) {\n this.componentWidgetSlot.register(value);\n }\n\n constructor(private componentWidgetSlot: ComponentWidgetSlot) {}\n static dependencies = [ComponentAspect, ComponentCompareAspect];\n static runtime = UIRuntime;\n static slots = [Slot.withType<ComponentWidget>()];\n static defaultConfig = {\n componentTab: true,\n };\n\n static async provider(\n [componentUI, componentCompare]: [ComponentUI, ComponentCompareUI],\n config: GraphUIConfig,\n [componentWidgetSlot]: [ComponentWidgetSlot]\n ) {\n const graphUI = new GraphUI(componentWidgetSlot);\n const section = new GraphSection(componentWidgetSlot);\n const graphSection = new GraphCompareSection();\n if (config.componentTab) componentUI.registerNavigation(section.navigationLink, section.order);\n componentUI.registerRoute(section.route);\n componentCompare.registerNavigation(graphSection);\n componentCompare.registerRoutes([graphSection.route]);\n return graphUI;\n }\n}\n\nGraphAspect.addRuntime(GraphUI);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_ui","data","require","_harmony","_componentCompare","_component","_graph","_graph2","_graphCompare","_dependenciesGraph","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","GraphUI","getDependenciesGraph","DependenciesGraph","registerComponentWidget","componentWidgetSlot","register","constructor","provider","componentUI","componentCompare","config","graphUI","section","GraphSection","graphSection","GraphCompareSection","componentTab","registerNavigation","navigationLink","order","registerRoute","route","registerRoutes","exports","ComponentAspect","ComponentCompareAspect","UIRuntime","Slot","withType","GraphAspect","addRuntime"],"sources":["graph.ui.runtime.tsx"],"sourcesContent":["import type { ComponentType } from 'react';\nimport { UIRuntime } from '@teambit/ui';\nimport type { SlotRegistry } from '@teambit/harmony';\nimport { Slot } from '@teambit/harmony';\nimport type { ComponentCompareUI } from '@teambit/component-compare';\nimport { ComponentCompareAspect } from '@teambit/component-compare';\nimport type { ComponentUI, ComponentModel } from '@teambit/component';\nimport { ComponentAspect } from '@teambit/component';\nimport { GraphAspect } from './graph.aspect';\nimport { GraphSection } from './ui/graph.section';\nimport { GraphCompareSection } from './graph.compare.section';\nimport { DependenciesGraph } from './ui/dependencies-graph';\n\nexport interface ComponentWidgetProps extends React.HTMLAttributes<HTMLDivElement> {\n component: ComponentModel;\n}\nexport type ComponentWidget = ComponentType<ComponentWidgetProps>;\nexport type ComponentWidgetSlot = SlotRegistry<ComponentWidget>;\n\nexport type GraphUIConfig = {\n componentTab: boolean;\n};\n\n/**\n * Presents dependencies graph in the component page\n */\nexport class GraphUI {\n getDependenciesGraph() {\n return DependenciesGraph;\n }\n\n /**\n * adds plugins to component nodes\n * @param value\n */\n registerComponentWidget(value: ComponentWidget) {\n this.componentWidgetSlot.register(value);\n }\n\n constructor(private componentWidgetSlot: ComponentWidgetSlot) {}\n static dependencies = [ComponentAspect, ComponentCompareAspect];\n static runtime = UIRuntime;\n static slots = [Slot.withType<ComponentWidget>()];\n static defaultConfig = {\n componentTab: true,\n };\n\n static async provider(\n [componentUI, componentCompare]: [ComponentUI, ComponentCompareUI],\n config: GraphUIConfig,\n [componentWidgetSlot]: [ComponentWidgetSlot]\n ) {\n const graphUI = new GraphUI(componentWidgetSlot);\n const section = new GraphSection(componentWidgetSlot);\n const graphSection = new GraphCompareSection();\n if (config.componentTab) componentUI.registerNavigation(section.navigationLink, section.order);\n componentUI.registerRoute(section.route);\n componentCompare.registerNavigation(graphSection);\n componentCompare.registerRoutes([graphSection.route]);\n return graphUI;\n }\n}\n\nGraphAspect.addRuntime(GraphUI);\n"],"mappings":";;;;;;AACA,SAAAA,IAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,GAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAE,SAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,QAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAG,kBAAA;EAAA,MAAAH,IAAA,GAAAC,OAAA;EAAAE,iBAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAI,WAAA;EAAA,MAAAJ,IAAA,GAAAC,OAAA;EAAAG,UAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,OAAA;EAAA,MAAAL,IAAA,GAAAC,OAAA;EAAAI,MAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAM,QAAA;EAAA,MAAAN,IAAA,GAAAC,OAAA;EAAAK,OAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAO,cAAA;EAAA,MAAAP,IAAA,GAAAC,OAAA;EAAAM,aAAA,YAAAA,CAAA;IAAA,OAAAP,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAQ,mBAAA;EAAA,MAAAR,IAAA,GAAAC,OAAA;EAAAO,kBAAA,YAAAA,CAAA;IAAA,OAAAR,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA4D,SAAAS,gBAAAC,CAAA,EAAAC,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAE,cAAA,CAAAF,CAAA,MAAAD,CAAA,GAAAI,MAAA,CAAAC,cAAA,CAAAL,CAAA,EAAAC,CAAA,IAAAK,KAAA,EAAAJ,CAAA,EAAAK,UAAA,MAAAC,YAAA,MAAAC,QAAA,UAAAT,CAAA,CAAAC,CAAA,IAAAC,CAAA,EAAAF,CAAA;AAAA,SAAAG,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,MAAAF,CAAA,GAAAE,CAAA,CAAAU,MAAA,CAAAC,WAAA,kBAAAb,CAAA,QAAAU,CAAA,GAAAV,CAAA,CAAAc,IAAA,CAAAZ,CAAA,EAAAD,CAAA,uCAAAS,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAAd,CAAA,GAAAe,MAAA,GAAAC,MAAA,EAAAf,CAAA;AAY5D;AACA;AACA;AACO,MAAMgB,OAAO,CAAC;EACnBC,oBAAoBA,CAAA,EAAG;IACrB,OAAOC,sCAAiB;EAC1B;;EAEA;AACF;AACA;AACA;EACEC,uBAAuBA,CAACf,KAAsB,EAAE;IAC9C,IAAI,CAACgB,mBAAmB,CAACC,QAAQ,CAACjB,KAAK,CAAC;EAC1C;EAEAkB,WAAWA,CAASF,mBAAwC,EAAE;IAAA,KAA1CA,mBAAwC,GAAxCA,mBAAwC;EAAG;EAQ/D,aAAaG,QAAQA,CACnB,CAACC,WAAW,EAAEC,gBAAgB,CAAoC,EAClEC,MAAqB,EACrB,CAACN,mBAAmB,CAAwB,EAC5C;IACA,MAAMO,OAAO,GAAG,IAAIX,OAAO,CAACI,mBAAmB,CAAC;IAChD,MAAMQ,OAAO,GAAG,KAAIC,sBAAY,EAACT,mBAAmB,CAAC;IACrD,MAAMU,YAAY,GAAG,KAAIC,mCAAmB,EAAC,CAAC;IAC9C,IAAIL,MAAM,CAACM,YAAY,EAAER,WAAW,CAACS,kBAAkB,CAACL,OAAO,CAACM,cAAc,EAAEN,OAAO,CAACO,KAAK,CAAC;IAC9FX,WAAW,CAACY,aAAa,CAACR,OAAO,CAACS,KAAK,CAAC;IACxCZ,gBAAgB,CAACQ,kBAAkB,CAACH,YAAY,CAAC;IACjDL,gBAAgB,CAACa,cAAc,CAAC,CAACR,YAAY,CAACO,KAAK,CAAC,CAAC;IACrD,OAAOV,OAAO;EAChB;AACF;AAACY,OAAA,CAAAvB,OAAA,GAAAA,OAAA;AAAAnB,eAAA,CAnCYmB,OAAO,kBAcI,CAACwB,4BAAe,EAAEC,0CAAsB,CAAC;AAAA5C,eAAA,CAdpDmB,OAAO,aAeD0B,eAAS;AAAA7C,eAAA,CAffmB,OAAO,WAgBH,CAAC2B,eAAI,CAACC,QAAQ,CAAkB,CAAC,CAAC;AAAA/C,eAAA,CAhBtCmB,OAAO,mBAiBK;EACrBgB,YAAY,EAAE;AAChB,CAAC;AAkBHa,oBAAW,CAACC,UAAU,CAAC9B,OAAO,CAAC","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.component_graph@1.0.667/dist/graph.composition.js';
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.component_graph@1.0.667/dist/graph.docs.md';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.component_graph@1.0.668/dist/graph.composition.js';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.component_graph@1.0.668/dist/graph.docs.md';
3
3
 
4
4
  export const compositions = [compositions_0];
5
5
  export const overview = [overview_0];
@@ -1,5 +1,5 @@
1
- import { CardProps } from '@teambit/base-ui.surfaces.card';
2
- import { NodeModel } from '../query/node-model';
1
+ import type { CardProps } from '@teambit/base-ui.surfaces.card';
2
+ import type { NodeModel } from '../query/node-model';
3
3
  export interface IComponentNode extends CardProps {
4
4
  node: NodeModel;
5
5
  type: string;
@@ -1 +1 @@
1
- {"version":3,"names":["_react","data","_interopRequireWildcard","require","_classnames","_interopRequireDefault","_baseUiText","_componentUi","_envsUi","_designUiStyles","_baseUiSurfaces","_baseUiRouting","_componentModules","_dependenciesGraph","_componentNodeModule","_variantsModule","_excluded","_excluded2","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_extends","assign","bind","arguments","length","apply","_objectWithoutProperties","_objectWithoutPropertiesLoose","getOwnPropertySymbols","indexOf","propertyIsEnumerable","ComponentNode","_ref","node","type","rest","graphContext","useContext","ComponentGraphContext","component","componentId","id","createElement","Card","className","classnames","styles","compNode","variants","elevation","firstRow","EnvIcon","envIcon","Breadcrumbs","mutedText","nameLine","NavLink","link","external","href","ComponentUrl","toUrl","includeVersion","name","ellipsis","version","buffs","DeprecationIcon","componentWidgets","toArray","map","widgetId","Widget","key","_ref2","scope","namespace","showSep","breadcrumbs"],"sources":["component-node.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport classnames from 'classnames';\nimport { mutedText } from '@teambit/base-ui.text.muted-text';\nimport { ComponentID } from '@teambit/component';\nimport { DeprecationIcon } from '@teambit/component.ui.deprecation-icon';\nimport { EnvIcon } from '@teambit/envs.ui.env-icon';\nimport { ellipsis } from '@teambit/design.ui.styles.ellipsis';\nimport { Card, CardProps } from '@teambit/base-ui.surfaces.card';\nimport { NavLink } from '@teambit/base-ui.routing.nav-link';\nimport { ComponentUrl } from '@teambit/component.modules.component-url';\nimport { NodeModel } from '../query/node-model';\nimport { ComponentGraphContext } from '../dependencies-graph/';\n\n// keep order: styles, then variants\nimport styles from './component-node.module.scss';\nimport variants from './variants.module.scss';\n\nexport interface IComponentNode extends CardProps {\n node: NodeModel;\n type: string;\n}\n\nexport function ComponentNode({ node, type = 'defaultNode', ...rest }: IComponentNode) {\n const graphContext = useContext(ComponentGraphContext);\n const { component, componentId } = node;\n const id = component?.id || componentId;\n\n return (\n <Card className={classnames(styles.compNode, variants[type])} elevation=\"none\" {...rest}>\n <div className={styles.firstRow}>\n {component && <EnvIcon component={component} className={styles.envIcon} />}\n <Breadcrumbs componentId={id} className={mutedText} />\n </div>\n <div className={styles.nameLine}>\n <NavLink className={styles.link} external={true} href={ComponentUrl.toUrl(id, { includeVersion: false })}>\n <span className={classnames(styles.name, ellipsis)}>{id.name}</span>\n </NavLink>\n {id.version && <span className={classnames(styles.version, ellipsis)}>{id.version}</span>}\n\n <div className={styles.buffs}>\n {component && <DeprecationIcon component={component} />}\n {component &&\n graphContext &&\n graphContext.componentWidgets\n .toArray()\n .map(([widgetId, Widget]) => <Widget key={widgetId} component={component} />)}\n </div>\n </div>\n </Card>\n );\n}\n\ntype BreadcrumbsProps = { componentId: ComponentID } & React.HTMLAttributes<HTMLDivElement>;\n\nfunction Breadcrumbs({ componentId, className, ...rest }: BreadcrumbsProps) {\n const { scope, namespace } = componentId;\n const showSep = !!scope && !!namespace;\n\n return (\n <div {...rest} className={classnames(styles.breadcrumbs, ellipsis, className)}>\n {scope}\n {showSep && '/'}\n {namespace}\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","data","_interopRequireWildcard","require","_classnames","_interopRequireDefault","_baseUiText","_componentUi","_envsUi","_designUiStyles","_baseUiSurfaces","_baseUiRouting","_componentModules","_dependenciesGraph","_componentNodeModule","_variantsModule","_excluded","_excluded2","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_extends","assign","bind","arguments","length","apply","_objectWithoutProperties","_objectWithoutPropertiesLoose","getOwnPropertySymbols","indexOf","propertyIsEnumerable","ComponentNode","_ref","node","type","rest","graphContext","useContext","ComponentGraphContext","component","componentId","id","createElement","Card","className","classnames","styles","compNode","variants","elevation","firstRow","EnvIcon","envIcon","Breadcrumbs","mutedText","nameLine","NavLink","link","external","href","ComponentUrl","toUrl","includeVersion","name","ellipsis","version","buffs","DeprecationIcon","componentWidgets","toArray","map","widgetId","Widget","key","_ref2","scope","namespace","showSep","breadcrumbs"],"sources":["component-node.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport classnames from 'classnames';\nimport { mutedText } from '@teambit/base-ui.text.muted-text';\nimport type { ComponentID } from '@teambit/component';\nimport { DeprecationIcon } from '@teambit/component.ui.deprecation-icon';\nimport { EnvIcon } from '@teambit/envs.ui.env-icon';\nimport { ellipsis } from '@teambit/design.ui.styles.ellipsis';\nimport type { CardProps } from '@teambit/base-ui.surfaces.card';\nimport { Card } from '@teambit/base-ui.surfaces.card';\nimport { NavLink } from '@teambit/base-ui.routing.nav-link';\nimport { ComponentUrl } from '@teambit/component.modules.component-url';\nimport type { NodeModel } from '../query/node-model';\nimport { ComponentGraphContext } from '../dependencies-graph/';\n\n// keep order: styles, then variants\nimport styles from './component-node.module.scss';\nimport variants from './variants.module.scss';\n\nexport interface IComponentNode extends CardProps {\n node: NodeModel;\n type: string;\n}\n\nexport function ComponentNode({ node, type = 'defaultNode', ...rest }: IComponentNode) {\n const graphContext = useContext(ComponentGraphContext);\n const { component, componentId } = node;\n const id = component?.id || componentId;\n\n return (\n <Card className={classnames(styles.compNode, variants[type])} elevation=\"none\" {...rest}>\n <div className={styles.firstRow}>\n {component && <EnvIcon component={component} className={styles.envIcon} />}\n <Breadcrumbs componentId={id} className={mutedText} />\n </div>\n <div className={styles.nameLine}>\n <NavLink className={styles.link} external={true} href={ComponentUrl.toUrl(id, { includeVersion: false })}>\n <span className={classnames(styles.name, ellipsis)}>{id.name}</span>\n </NavLink>\n {id.version && <span className={classnames(styles.version, ellipsis)}>{id.version}</span>}\n\n <div className={styles.buffs}>\n {component && <DeprecationIcon component={component} />}\n {component &&\n graphContext &&\n graphContext.componentWidgets\n .toArray()\n .map(([widgetId, Widget]) => <Widget key={widgetId} component={component} />)}\n </div>\n </div>\n </Card>\n );\n}\n\ntype BreadcrumbsProps = { componentId: ComponentID } & React.HTMLAttributes<HTMLDivElement>;\n\nfunction Breadcrumbs({ componentId, className, ...rest }: BreadcrumbsProps) {\n const { scope, namespace } = componentId;\n const showSep = !!scope && !!namespace;\n\n return (\n <div {...rest} className={classnames(styles.breadcrumbs, ellipsis, className)}>\n {scope}\n {showSep && '/'}\n {namespace}\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}