@teambit/graph 1.0.539 → 1.0.541
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.
@@ -171,7 +171,7 @@ class ComponentIdGraph extends _graph().Graph {
|
|
171
171
|
/**
|
172
172
|
* overrides the super class to eliminate non-seeders components
|
173
173
|
*/
|
174
|
-
findCycles(graph, includeDeps = false) {
|
174
|
+
findCycles(graph = this, includeDeps = false) {
|
175
175
|
const cycles = super.findCycles(graph);
|
176
176
|
// reverse the order to show a more intuitive cycle order. from the dependent to the dependency.
|
177
177
|
cycles.forEach(cycle => cycle.reverse());
|
@@ -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 { 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":[]}
|
package/dist/graph-cmd.d.ts
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
import { Command, CommandOptions } from '@teambit/cli';
|
2
2
|
import { ComponentMain } from '@teambit/component';
|
3
3
|
type GraphOpt = {
|
4
|
-
image?: string;
|
5
4
|
remote?: string;
|
6
5
|
allVersions?: boolean;
|
7
6
|
layout?: string;
|
7
|
+
cycles?: boolean;
|
8
|
+
png?: boolean;
|
8
9
|
json?: boolean;
|
9
10
|
};
|
10
11
|
export declare class GraphCmd implements Command {
|
@@ -17,8 +18,9 @@ export declare class GraphCmd implements Command {
|
|
17
18
|
options: CommandOptions;
|
18
19
|
remoteOp: boolean;
|
19
20
|
constructor(componentAspect: ComponentMain);
|
20
|
-
report([id]: [string], { remote,
|
21
|
-
private
|
22
|
-
|
21
|
+
report([id]: [string], { remote, layout, png, cycles }: GraphOpt): Promise<string>;
|
22
|
+
private generateGraphFromWorkspace;
|
23
|
+
private generateGraphFromRemote;
|
24
|
+
json([id]: [string], { remote }: GraphOpt): Promise<any>;
|
23
25
|
}
|
24
26
|
export {};
|
package/dist/graph-cmd.js
CHANGED
@@ -11,20 +11,6 @@ function _chalk() {
|
|
11
11
|
};
|
12
12
|
return data;
|
13
13
|
}
|
14
|
-
function _os() {
|
15
|
-
const data = _interopRequireDefault(require("os"));
|
16
|
-
_os = function () {
|
17
|
-
return data;
|
18
|
-
};
|
19
|
-
return data;
|
20
|
-
}
|
21
|
-
function path() {
|
22
|
-
const data = _interopRequireWildcard(require("path"));
|
23
|
-
path = function () {
|
24
|
-
return data;
|
25
|
-
};
|
26
|
-
return data;
|
27
|
-
}
|
28
14
|
function _graphlib() {
|
29
15
|
const data = _interopRequireDefault(require("graphlib"));
|
30
16
|
_graphlib = function () {
|
@@ -32,16 +18,16 @@ function _graphlib() {
|
|
32
18
|
};
|
33
19
|
return data;
|
34
20
|
}
|
35
|
-
function
|
36
|
-
const data = require("
|
37
|
-
|
21
|
+
function _lodash() {
|
22
|
+
const data = require("lodash");
|
23
|
+
_lodash = function () {
|
38
24
|
return data;
|
39
25
|
};
|
40
26
|
return data;
|
41
27
|
}
|
42
|
-
function
|
43
|
-
const data = require("@teambit/
|
44
|
-
|
28
|
+
function _componentId() {
|
29
|
+
const data = require("@teambit/component-id");
|
30
|
+
_componentId = function () {
|
45
31
|
return data;
|
46
32
|
};
|
47
33
|
return data;
|
@@ -67,8 +53,6 @@ function _workspace() {
|
|
67
53
|
};
|
68
54
|
return data;
|
69
55
|
}
|
70
|
-
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
71
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
72
56
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
73
57
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
74
58
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
@@ -77,73 +61,84 @@ class GraphCmd {
|
|
77
61
|
constructor(componentAspect) {
|
78
62
|
this.componentAspect = componentAspect;
|
79
63
|
_defineProperty(this, "name", 'graph [id]');
|
80
|
-
_defineProperty(this, "description", "generate an image file with the workspace components' dependencies graph");
|
64
|
+
_defineProperty(this, "description", "generate an SVG image file with the workspace components' dependencies graph");
|
81
65
|
_defineProperty(this, "extendedDescription", void 0);
|
82
66
|
_defineProperty(this, "group", 'discover');
|
83
67
|
_defineProperty(this, "alias", '');
|
84
|
-
_defineProperty(this, "options", [['
|
68
|
+
_defineProperty(this, "options", [['r', 'remote [remoteName]', 'remote name (name is optional, leave empty when id is specified)'], ['', 'layout <name>', 'GraphVis layout. default to "dot". options are [circo, dot, fdp, neato, osage, patchwork, sfdp, twopi]'], ['', 'png', 'save the graph as a png file instead of svg. requires "graphviz" to be installed'], ['', 'cycles', 'show cycles in the graph'], ['j', 'json', 'json format']]);
|
85
69
|
_defineProperty(this, "remoteOp", true);
|
86
70
|
}
|
87
71
|
async report([id], {
|
88
72
|
remote,
|
89
|
-
allVersions,
|
90
73
|
layout,
|
91
|
-
|
74
|
+
png,
|
75
|
+
cycles
|
92
76
|
}) {
|
93
77
|
const workspace = this.componentAspect.getHost('teambit.workspace/workspace');
|
94
78
|
if (!workspace && !remote) throw new (_workspace().OutsideWorkspaceError)();
|
95
|
-
const graph = await this.generateGraph(workspace, id, remote, allVersions);
|
96
79
|
const config = {};
|
97
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
98
80
|
if (layout) config.layout = layout;
|
99
|
-
const
|
100
|
-
|
101
|
-
|
81
|
+
const getVisualGraph = async () => {
|
82
|
+
if (workspace && !remote) {
|
83
|
+
const graph = await this.generateGraphFromWorkspace(workspace, id);
|
84
|
+
const getIdWithVersion = async () => {
|
85
|
+
if (!id) return undefined;
|
86
|
+
const compId = await workspace.resolveComponentId(id);
|
87
|
+
return workspace.getIdIfExist(compId);
|
88
|
+
};
|
89
|
+
const idWithVersion = await getIdWithVersion();
|
90
|
+
const markIds = idWithVersion ? [idWithVersion.toString()] : undefined;
|
91
|
+
if (!cycles) {
|
92
|
+
return _legacy().VisualDependencyGraph.loadFromClearGraph(graph, config, markIds);
|
93
|
+
}
|
94
|
+
const cyclesGraph = graph.findCycles();
|
95
|
+
const multipleCycles = cyclesGraph.map(cycle => {
|
96
|
+
if (idWithVersion && !cycle.includes(idWithVersion.toString())) return undefined;
|
97
|
+
return graph.subgraph(cycle, {
|
98
|
+
nodeFilter: node => cycle.includes(node.id),
|
99
|
+
edgeFilter: edge => cycle.includes(edge.targetId)
|
100
|
+
});
|
101
|
+
});
|
102
|
+
return _legacy().VisualDependencyGraph.loadFromMultipleClearGraphs((0, _lodash().compact)(multipleCycles), config, markIds);
|
103
|
+
}
|
104
|
+
const graph = await this.generateGraphFromRemote(remote, id, workspace);
|
105
|
+
return _legacy().VisualDependencyGraph.loadFromGraphlib(graph, config);
|
106
|
+
};
|
107
|
+
const visualDependencyGraph = await getVisualGraph();
|
108
|
+
const result = await visualDependencyGraph.render(png ? 'png' : 'svg');
|
102
109
|
return _chalk().default.green(`image created at ${result}`);
|
103
110
|
}
|
104
|
-
async
|
105
|
-
|
106
|
-
const
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
};
|
112
|
-
const bitId = getBitId();
|
113
|
-
if (remote) {
|
114
|
-
if (id) {
|
115
|
-
// @ts-ignore scope must be set as it came from a remote
|
116
|
-
const scopeName = typeof remote === 'string' ? remote : bitId.scope;
|
117
|
-
const remoteScope = await (0, _scope().getRemoteByName)(scopeName, workspace?.consumer);
|
118
|
-
const componentDepGraph = await remoteScope.graph(bitId);
|
119
|
-
return componentDepGraph.graph;
|
120
|
-
}
|
121
|
-
if (typeof remote !== 'string') {
|
122
|
-
throw new Error('please specify remote scope name or enter an id');
|
123
|
-
}
|
124
|
-
const remoteScope = await (0, _scope().getRemoteByName)(remote, workspace?.consumer);
|
125
|
-
const componentDepGraph = await remoteScope.graph();
|
126
|
-
return componentDepGraph.graph;
|
127
|
-
}
|
128
|
-
const onlyLatest = !allVersions;
|
129
|
-
// @ts-ignore workspace must be set here
|
130
|
-
const workspaceGraph = await _legacy().DependencyGraph.buildGraphFromWorkspace(workspace, onlyLatest);
|
131
|
-
const dependencyGraph = new (_legacy().DependencyGraph)(workspaceGraph);
|
111
|
+
async generateGraphFromWorkspace(workspace, id) {
|
112
|
+
const compIds = id ? [await workspace.resolveComponentId(id)] : undefined;
|
113
|
+
const graph = await workspace.getGraphIds(compIds);
|
114
|
+
return graph;
|
115
|
+
}
|
116
|
+
async generateGraphFromRemote(remote, id, workspace) {
|
117
|
+
const bitId = id ? _componentId().ComponentID.fromString(id) : undefined;
|
132
118
|
if (id) {
|
133
|
-
// @ts-ignore
|
134
|
-
const
|
135
|
-
const
|
119
|
+
// @ts-ignore scope must be set as it came from a remote
|
120
|
+
const scopeName = typeof remote === 'string' ? remote : bitId.scope;
|
121
|
+
const remoteScope = await (0, _scope().getRemoteByName)(scopeName, workspace?.consumer);
|
122
|
+
const componentDepGraph = await remoteScope.graph(bitId);
|
136
123
|
return componentDepGraph.graph;
|
137
124
|
}
|
138
|
-
|
125
|
+
if (typeof remote !== 'string') {
|
126
|
+
throw new Error('please specify remote scope name or enter an id');
|
127
|
+
}
|
128
|
+
const remoteScope = await (0, _scope().getRemoteByName)(remote, workspace?.consumer);
|
129
|
+
const componentDepGraph = await remoteScope.graph();
|
130
|
+
return componentDepGraph.graph;
|
139
131
|
}
|
140
132
|
async json([id], {
|
141
|
-
remote
|
142
|
-
allVersions
|
133
|
+
remote
|
143
134
|
}) {
|
144
135
|
const workspace = this.componentAspect.getHost('teambit.workspace/workspace');
|
145
136
|
if (!workspace && !remote) throw new (_workspace().OutsideWorkspaceError)();
|
146
|
-
|
137
|
+
if (workspace && !remote) {
|
138
|
+
const graph = await this.generateGraphFromWorkspace(workspace, id);
|
139
|
+
return graph.toJson();
|
140
|
+
}
|
141
|
+
const graph = await this.generateGraphFromRemote(remote, id, workspace);
|
147
142
|
return _graphlib().default.json.write(graph);
|
148
143
|
}
|
149
144
|
}
|
package/dist/graph-cmd.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_chalk","data","_interopRequireDefault","require","_os","path","_interopRequireWildcard","_graphlib","_componentId","_toolboxString","_legacy","_scope","_workspace","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","GraphCmd","constructor","componentAspect","report","id","remote","allVersions","layout","image","workspace","getHost","OutsideWorkspaceError","graph","generateGraph","config","visualDependencyGraph","VisualDependencyGraph","loadFromGraphlib","join","os","tmpdir","generateRandomStr","result","chalk","green","getBitId","undefined","ComponentID","fromString","consumer","getParsedId","bitId","scopeName","scope","remoteScope","getRemoteByName","componentDepGraph","Error","onlyLatest","workspaceGraph","DependencyGraph","buildGraphFromWorkspace","dependencyGraph","componentGraph","getSubGraphOfConnectedComponents","json","GraphLib","write","exports"],"sources":["graph-cmd.ts"],"sourcesContent":["import chalk from 'chalk';\nimport os from 'os';\nimport * as path from 'path';\nimport GraphLib from 'graphlib';\nimport { Command, CommandOptions } from '@teambit/cli';\nimport { ComponentID } from '@teambit/component-id';\nimport { generateRandomStr } from '@teambit/toolbox.string.random';\nimport { DependencyGraph, VisualDependencyGraph } from '@teambit/legacy.dependency-graph';\nimport { getRemoteByName } from '@teambit/scope.remotes';\nimport { ComponentMain } from '@teambit/component';\nimport { OutsideWorkspaceError, Workspace } from '@teambit/workspace';\n\ntype GraphOpt = {\n image?: string;\n remote?: string;\n allVersions?: boolean;\n layout?: string;\n json?: boolean;\n};\n\nexport class GraphCmd implements Command {\n name = 'graph [id]';\n description = \"generate an image file with the workspace components' dependencies graph\";\n extendedDescription: 'black arrow is a runtime dependency. red arrow is either dev or peer';\n group = 'discover';\n alias = '';\n options = [\n ['i', 'image <image>', 'image path and format. use one of the following extensions: [gif, png, svg, pdf]'],\n ['r', 'remote [remoteName]', 'remote name (name is optional, leave empty when id is specified)'],\n ['', 'all-versions', 'enter all components versions into the graph, not only latest'],\n [\n '',\n 'layout <name>',\n 'GraphVis layout. default to \"dot\". options are [circo, dot, fdp, neato, osage, patchwork, sfdp, twopi]',\n ],\n ['j', 'json', 'json format'],\n ] as CommandOptions;\n remoteOp = true;\n\n constructor(private componentAspect: ComponentMain) {}\n\n async report([id]: [string], { remote, allVersions, layout, image }: GraphOpt): Promise<string> {\n const workspace = this.componentAspect.getHost('teambit.workspace/workspace') as Workspace;\n if (!workspace && !remote) throw new OutsideWorkspaceError();\n\n const graph = await this.generateGraph(workspace, id, remote, allVersions);\n\n const config = {};\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n if (layout) config.layout = layout;\n const visualDependencyGraph = await VisualDependencyGraph.loadFromGraphlib(graph, config);\n\n image = image || path.join(os.tmpdir(), `${generateRandomStr()}.png`);\n const result = await visualDependencyGraph.image(image);\n\n return chalk.green(`image created at ${result}`);\n }\n\n private async generateGraph(\n workspace?: Workspace,\n id?: string,\n remote?: string,\n allVersions?: boolean\n ): Promise<GraphLib.Graph> {\n if (!workspace && !remote) throw new OutsideWorkspaceError();\n const getBitId = (): ComponentID | undefined => {\n if (!id) return undefined;\n if (remote) return ComponentID.fromString(id); // user used --remote so we know it has a scope\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return consumer.getParsedId(id);\n };\n const bitId = getBitId();\n if (remote) {\n if (id) {\n // @ts-ignore scope must be set as it came from a remote\n const scopeName: string = typeof remote === 'string' ? remote : bitId.scope;\n const remoteScope = await getRemoteByName(scopeName, workspace?.consumer);\n const componentDepGraph = await remoteScope.graph(bitId);\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 const onlyLatest = !allVersions;\n // @ts-ignore workspace must be set here\n const workspaceGraph = await DependencyGraph.buildGraphFromWorkspace(workspace, onlyLatest);\n const dependencyGraph = new DependencyGraph(workspaceGraph);\n if (id) {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n const componentGraph = dependencyGraph.getSubGraphOfConnectedComponents(bitId);\n const componentDepGraph = new DependencyGraph(componentGraph);\n return componentDepGraph.graph;\n }\n return dependencyGraph.graph;\n }\n\n async json([id]: [string], { remote, allVersions }: GraphOpt) {\n const workspace = this.componentAspect.getHost('teambit.workspace/workspace') as Workspace;\n if (!workspace && !remote) throw new OutsideWorkspaceError();\n\n const graph = await this.generateGraph(workspace, id, remote, allVersions);\n return GraphLib.json.write(graph);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"names":["_chalk","data","_interopRequireDefault","require","_graphlib","_lodash","_componentId","_legacy","_scope","_workspace","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","GraphCmd","constructor","componentAspect","report","id","remote","layout","png","cycles","workspace","getHost","OutsideWorkspaceError","config","getVisualGraph","graph","generateGraphFromWorkspace","getIdWithVersion","undefined","compId","resolveComponentId","getIdIfExist","idWithVersion","markIds","toString","VisualDependencyGraph","loadFromClearGraph","cyclesGraph","findCycles","multipleCycles","map","cycle","includes","subgraph","nodeFilter","node","edgeFilter","edge","targetId","loadFromMultipleClearGraphs","compact","generateGraphFromRemote","loadFromGraphlib","visualDependencyGraph","result","render","chalk","green","compIds","getGraphIds","bitId","ComponentID","fromString","scopeName","scope","remoteScope","getRemoteByName","consumer","componentDepGraph","Error","json","toJson","GraphLib","write","exports"],"sources":["graph-cmd.ts"],"sourcesContent":["import chalk from 'chalk';\nimport GraphLib from 'graphlib';\nimport { compact } from 'lodash';\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 { OutsideWorkspaceError, Workspace } from '@teambit/workspace';\n\ntype GraphOpt = {\n remote?: string;\n allVersions?: boolean;\n layout?: string;\n cycles?: boolean;\n png?: boolean;\n json?: boolean;\n};\n\nexport class GraphCmd implements Command {\n name = 'graph [id]';\n description = \"generate an SVG image file with the workspace components' dependencies graph\";\n extendedDescription: 'black arrow is a runtime dependency. red arrow is either dev or peer';\n group = 'discover';\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', 'show cycles in the graph'],\n ['j', 'json', 'json format'],\n ] as CommandOptions;\n remoteOp = true;\n\n constructor(private componentAspect: ComponentMain) {}\n\n async report([id]: [string], { remote, layout, png, cycles }: GraphOpt): Promise<string> {\n const workspace = this.componentAspect.getHost('teambit.workspace/workspace') as Workspace;\n if (!workspace && !remote) throw new OutsideWorkspaceError();\n\n const config: GraphConfig = {};\n if (layout) config.layout = layout;\n\n const getVisualGraph = async (): Promise<VisualDependencyGraph> => {\n if (workspace && !remote) {\n const graph = await this.generateGraphFromWorkspace(workspace, id);\n const getIdWithVersion = async () => {\n if (!id) return undefined;\n const compId = await workspace.resolveComponentId(id);\n return workspace.getIdIfExist(compId);\n }\n const idWithVersion = await getIdWithVersion();\n const markIds = idWithVersion ? [idWithVersion.toString()] : undefined;\n if (!cycles) {\n return VisualDependencyGraph.loadFromClearGraph(graph, config, markIds);\n }\n const cyclesGraph = graph.findCycles();\n\n const multipleCycles = cyclesGraph.map((cycle) => {\n if (idWithVersion && !cycle.includes(idWithVersion.toString())) return undefined;\n return graph.subgraph(cycle,\n {\n nodeFilter: (node) => cycle.includes(node.id),\n edgeFilter: (edge) => cycle.includes(edge.targetId)\n },\n );\n });\n return VisualDependencyGraph.loadFromMultipleClearGraphs(compact(multipleCycles), config, markIds);\n }\n const graph = await this.generateGraphFromRemote(remote!, id, workspace);\n return VisualDependencyGraph.loadFromGraphlib(graph, config);\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 private async generateGraphFromWorkspace(workspace: Workspace, id?: string) {\n const compIds = id ? [await workspace.resolveComponentId(id)] : undefined;\n const graph = await workspace.getGraphIds(compIds);\n return graph;\n }\n\n private async generateGraphFromRemote(\n remote: string | boolean,\n id?: string,\n workspace?: Workspace,\n ): Promise<GraphLib.Graph> {\n const bitId = id ? ComponentID.fromString(id) : undefined;\n if (id) {\n // @ts-ignore scope must be set as it came from a remote\n const scopeName: string = typeof remote === 'string' ? remote : bitId.scope;\n const remoteScope = await getRemoteByName(scopeName, workspace?.consumer);\n const componentDepGraph = await remoteScope.graph(bitId);\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 async json([id]: [string], { remote }: GraphOpt) {\n const workspace = this.componentAspect.getHost('teambit.workspace/workspace') as Workspace;\n if (!workspace && !remote) throw new OutsideWorkspaceError();\n\n if (workspace && !remote) {\n const graph = await this.generateGraphFromWorkspace(workspace, id);\n return graph.toJson();\n }\n const graph = await this.generateGraphFromRemote(remote!, id, workspace);\n return GraphLib.json.write(graph);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
@@ -1,5 +1,5 @@
|
|
1
|
-
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.component_graph@1.0.
|
2
|
-
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.component_graph@1.0.
|
1
|
+
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.component_graph@1.0.541/dist/graph.composition.js';
|
2
|
+
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.component_graph@1.0.541/dist/graph.docs.md';
|
3
3
|
|
4
4
|
export const compositions = [compositions_0];
|
5
5
|
export const overview = [overview_0];
|
package/package.json
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
{
|
2
2
|
"name": "@teambit/graph",
|
3
|
-
"version": "1.0.
|
3
|
+
"version": "1.0.541",
|
4
4
|
"homepage": "https://bit.cloud/teambit/component/graph",
|
5
5
|
"main": "dist/index.js",
|
6
6
|
"componentId": {
|
7
7
|
"scope": "teambit.component",
|
8
8
|
"name": "graph",
|
9
|
-
"version": "1.0.
|
9
|
+
"version": "1.0.541"
|
10
10
|
},
|
11
11
|
"dependencies": {
|
12
12
|
"graphlib": "2.1.8",
|
@@ -15,8 +15,8 @@
|
|
15
15
|
"graphql-tag": "2.12.1",
|
16
16
|
"classnames": "2.2.6",
|
17
17
|
"reactflow": "^11.11.3",
|
18
|
-
"@dagrejs/dagre": "^1.1.2",
|
19
18
|
"semver": "7.5.4",
|
19
|
+
"@dagrejs/dagre": "^1.1.2",
|
20
20
|
"@teambit/component-id": "1.2.2",
|
21
21
|
"@teambit/graph.cleargraph": "0.0.11",
|
22
22
|
"@teambit/harmony": "0.4.6",
|
@@ -33,17 +33,16 @@
|
|
33
33
|
"@teambit/design.ui.pages.not-found": "0.0.371",
|
34
34
|
"@teambit/design.ui.pages.server-error": "0.0.368",
|
35
35
|
"@teambit/ui-foundation.ui.react-router.use-query": "0.0.505",
|
36
|
-
"@teambit/legacy.dependency-graph": "0.0.
|
37
|
-
"@teambit/component": "1.0.
|
38
|
-
"@teambit/cli": "0.0.
|
39
|
-
"@teambit/scope.remotes": "0.0.
|
40
|
-
"@teambit/
|
41
|
-
"@teambit/workspace": "1.0.539",
|
36
|
+
"@teambit/legacy.dependency-graph": "0.0.33",
|
37
|
+
"@teambit/component": "1.0.541",
|
38
|
+
"@teambit/cli": "0.0.1118",
|
39
|
+
"@teambit/scope.remotes": "0.0.30",
|
40
|
+
"@teambit/workspace": "1.0.541",
|
42
41
|
"@teambit/component.ui.component-compare.models.component-compare-props": "0.0.119",
|
43
|
-
"@teambit/graphql": "1.0.
|
44
|
-
"@teambit/logger": "0.0.
|
45
|
-
"@teambit/component-compare": "1.0.
|
46
|
-
"@teambit/ui": "1.0.
|
42
|
+
"@teambit/graphql": "1.0.541",
|
43
|
+
"@teambit/logger": "0.0.1211",
|
44
|
+
"@teambit/component-compare": "1.0.541",
|
45
|
+
"@teambit/ui": "1.0.541",
|
47
46
|
"@teambit/component.modules.component-url": "0.0.173",
|
48
47
|
"@teambit/envs.ui.env-icon": "0.0.506",
|
49
48
|
"@teambit/component.ui.component-compare.context": "0.0.122"
|