@teambit/graph 0.0.679 → 0.0.682
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.
- package/component-graph/component-graph.ts +3 -8
- package/dist/component-graph/component-graph.d.ts +0 -1
- package/dist/component-graph/component-graph.js +3 -10
- package/dist/component-graph/component-graph.js.map +1 -1
- package/package-tar/teambit-graph-0.0.682.tgz +0 -0
- package/package.json +8 -8
- package/{preview-1647509820722.js → preview-1647791556829.js} +1 -1
- package/package-tar/teambit-graph-0.0.679.tgz +0 -0
@@ -29,16 +29,15 @@ export class ComponentGraph extends Graph<Component, Dependency> {
|
|
29
29
|
if (!this.shouldLimitToSeedersOnly()) {
|
30
30
|
return cycles;
|
31
31
|
}
|
32
|
-
const seederIdsStr = this.
|
32
|
+
const seederIdsStr = this.seederIds.map((id) => id.toString());
|
33
33
|
const cyclesWithSeeders = cycles.filter((cycle) => {
|
34
|
-
|
35
|
-
return cycleNoVersions.some((cycleIdStr) => seederIdsStr.includes(cycleIdStr));
|
34
|
+
return cycle.some((cycleIdStr) => seederIdsStr.includes(cycleIdStr));
|
36
35
|
});
|
37
36
|
return cyclesWithSeeders;
|
38
37
|
}
|
39
38
|
|
40
39
|
findDuplicateDependencies(): Map<string, DuplicateDependency> {
|
41
|
-
const seederIdsNoVersions = this.
|
40
|
+
const seederIdsNoVersions = this.seederIds.map((id) => id.toStringWithoutVersion());
|
42
41
|
const duplicateDependencies: Map<string, DuplicateDependency> = new Map();
|
43
42
|
for (const [compFullName, versions] of this.versionMap) {
|
44
43
|
if (versions.allVersionNodes.length > 1) {
|
@@ -99,10 +98,6 @@ export class ComponentGraph extends Graph<Component, Dependency> {
|
|
99
98
|
return this.seederIds.length;
|
100
99
|
}
|
101
100
|
|
102
|
-
private getSeederIdsStr() {
|
103
|
-
return this.seederIds.map((id) => id.toStringWithoutVersion());
|
104
|
-
}
|
105
|
-
|
106
101
|
_calculateVersionMap() {
|
107
102
|
const versionMap: Map<string, { allVersionNodes: string[]; latestVersionNode: string }> = new Map();
|
108
103
|
for (const node of this.nodes) {
|
@@ -28,7 +28,6 @@ export declare class ComponentGraph extends Graph<Component, Dependency> {
|
|
28
28
|
buildFromCleargraph(graph: Graph<Component, Dependency>): ComponentGraph;
|
29
29
|
runtimeOnly(componentIds: string[]): this;
|
30
30
|
private shouldLimitToSeedersOnly;
|
31
|
-
private getSeederIdsStr;
|
32
31
|
_calculateVersionMap(): Map<string, {
|
33
32
|
allVersionNodes: string[];
|
34
33
|
latestVersionNode: string;
|
@@ -4,8 +4,6 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
4
4
|
|
5
5
|
require("core-js/modules/es.array.iterator.js");
|
6
6
|
|
7
|
-
require("core-js/modules/es.regexp.exec.js");
|
8
|
-
|
9
7
|
Object.defineProperty(exports, "__esModule", {
|
10
8
|
value: true
|
11
9
|
});
|
@@ -68,16 +66,15 @@ class ComponentGraph extends _cleargraph().Graph {
|
|
68
66
|
return cycles;
|
69
67
|
}
|
70
68
|
|
71
|
-
const seederIdsStr = this.
|
69
|
+
const seederIdsStr = this.seederIds.map(id => id.toString());
|
72
70
|
const cyclesWithSeeders = cycles.filter(cycle => {
|
73
|
-
|
74
|
-
return cycleNoVersions.some(cycleIdStr => seederIdsStr.includes(cycleIdStr));
|
71
|
+
return cycle.some(cycleIdStr => seederIdsStr.includes(cycleIdStr));
|
75
72
|
});
|
76
73
|
return cyclesWithSeeders;
|
77
74
|
}
|
78
75
|
|
79
76
|
findDuplicateDependencies() {
|
80
|
-
const seederIdsNoVersions = this.
|
77
|
+
const seederIdsNoVersions = this.seederIds.map(id => id.toStringWithoutVersion());
|
81
78
|
const duplicateDependencies = new Map();
|
82
79
|
|
83
80
|
for (const [compFullName, versions] of this.versionMap) {
|
@@ -139,10 +136,6 @@ class ComponentGraph extends _cleargraph().Graph {
|
|
139
136
|
return this.seederIds.length;
|
140
137
|
}
|
141
138
|
|
142
|
-
getSeederIdsStr() {
|
143
|
-
return this.seederIds.map(id => id.toStringWithoutVersion());
|
144
|
-
}
|
145
|
-
|
146
139
|
_calculateVersionMap() {
|
147
140
|
const versionMap = new Map();
|
148
141
|
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["component-graph.ts"],"names":["DEPENDENCIES_TYPES","ComponentGraph","Graph","constructor","nodes","edges","versionMap","Map","create","findCycles","graph","cycles","shouldLimitToSeedersOnly","seederIdsStr","getSeederIdsStr","cyclesWithSeeders","filter","cycle","cycleNoVersions","map","id","split","some","cycleIdStr","includes","findDuplicateDependencies","seederIdsNoVersions","duplicateDependencies","compFullName","versions","allVersionNodes","length","versionSubgraphs","notLatestVersions","version","latestVersionNode","forEach","predecessors","predecessorsSubgraph","immediatePredecessors","predecessor","subGraph","buildFromCleargraph","versionSubgraph","versionId","immediateDependents","push","isSeeder","shouldDisplayDueToBeingSeeder","duplicateDep","DuplicateDependency","set","newGraph","newGraphNodes","node","attr","newGraphEdges","edge","sourceId","targetId","setNodes","setEdges","runtimeOnly","componentIds","successorsSubgraph","type","seederIds","toStringWithoutVersion","_calculateVersionMap","comp","compKey","_legacy","has","value","get","Object","prototype","hasOwnProperty","call","currentComp","latestComp","isLegacy","head","currentCompVersion","getVersion","latestCompVersion","isLaterThan","Date","timestamp"],"mappings":"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","sourcesContent":["import { Component, ComponentID } from '@teambit/component';\nimport { Graph } from 'cleargraph';\n\nimport { Dependency } from '../model/dependency';\nimport { DuplicateDependency, VersionSubgraph } from '../duplicate-dependency';\n\nexport const DEPENDENCIES_TYPES = ['dependencies', 'devDependencies'];\n\ntype Node = { id: string; node: Component };\ntype Edge = { sourceId: string; targetId: string; edge: Dependency };\n\nexport class ComponentGraph extends Graph<Component, Dependency> {\n versionMap: Map<string, { allVersionNodes: string[]; latestVersionNode: string }>;\n seederIds: ComponentID[] = []; // component IDs that started the graph. (if from workspace, the .bitmap ids normally)\n constructor(nodes: Node[] = [], edges: Edge[] = []) {\n super(nodes, edges);\n this.versionMap = new Map();\n }\n\n protected create(nodes: Node[] = [], edges: Edge[] = []): this {\n return new ComponentGraph(nodes, edges) as this;\n }\n\n /**\n * overrides the super class to eliminate non-seeders components\n */\n findCycles(graph?: this): string[][] {\n const cycles = super.findCycles(graph);\n if (!this.shouldLimitToSeedersOnly()) {\n return cycles;\n }\n const seederIdsStr = this.getSeederIdsStr();\n const cyclesWithSeeders = cycles.filter((cycle) => {\n const cycleNoVersions = cycle.map((id) => id.split('@')[0]);\n return cycleNoVersions.some((cycleIdStr) => seederIdsStr.includes(cycleIdStr));\n });\n return cyclesWithSeeders;\n }\n\n findDuplicateDependencies(): Map<string, DuplicateDependency> {\n const seederIdsNoVersions = this.getSeederIdsStr();\n const duplicateDependencies: Map<string, DuplicateDependency> = new Map();\n for (const [compFullName, versions] of this.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 // TODO: once cleargraph constructor and graph.nodes are consistent we should just use this line\n // this.create(graph.nodes, graph.edges)\n\n const newGraph = new ComponentGraph();\n const newGraphNodes: Node[] = graph.nodes.map((node) => {\n return {\n id: node.id,\n node: node.attr,\n };\n });\n const newGraphEdges: Edge[] = graph.edges.map((edge) => {\n return {\n sourceId: edge.sourceId,\n targetId: edge.targetId,\n edge: edge.attr,\n };\n });\n newGraph.setNodes(newGraphNodes);\n newGraph.setEdges(newGraphEdges);\n\n return newGraph;\n }\n\n runtimeOnly(componentIds: string[]) {\n return this.successorsSubgraph(componentIds, (edge) => edge.attr.type === 'runtime');\n }\n\n private shouldLimitToSeedersOnly() {\n return this.seederIds.length;\n }\n\n private getSeederIdsStr() {\n return this.seederIds.map((id) => id.toStringWithoutVersion());\n }\n\n _calculateVersionMap() {\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._legacy.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 = this.node(compKey)?.attr;\n const latestComp = this.node(value.latestVersionNode)?.attr;\n const isLegacy = !currentComp?.head || !latestComp?.head;\n\n if (isLegacy) {\n const currentCompVersion = currentComp?.id._legacy.getVersion();\n const latestCompVersion = latestComp?.id._legacy.getVersion();\n if (!!currentCompVersion && !!latestCompVersion && currentCompVersion.isLaterThan(latestCompVersion)) {\n value.latestVersionNode = compKey;\n }\n } else if (new Date(currentComp.head.timestamp) > new Date(latestComp.head.timestamp)) {\n value.latestVersionNode = compKey;\n }\n }\n }\n }\n return versionMap;\n }\n}\n"]}
|
1
|
+
{"version":3,"sources":["component-graph.ts"],"names":["DEPENDENCIES_TYPES","ComponentGraph","Graph","constructor","nodes","edges","versionMap","Map","create","findCycles","graph","cycles","shouldLimitToSeedersOnly","seederIdsStr","seederIds","map","id","toString","cyclesWithSeeders","filter","cycle","some","cycleIdStr","includes","findDuplicateDependencies","seederIdsNoVersions","toStringWithoutVersion","duplicateDependencies","compFullName","versions","allVersionNodes","length","versionSubgraphs","notLatestVersions","version","latestVersionNode","forEach","predecessors","predecessorsSubgraph","immediatePredecessors","predecessor","subGraph","buildFromCleargraph","versionSubgraph","versionId","immediateDependents","push","isSeeder","shouldDisplayDueToBeingSeeder","duplicateDep","DuplicateDependency","set","newGraph","newGraphNodes","node","attr","newGraphEdges","edge","sourceId","targetId","setNodes","setEdges","runtimeOnly","componentIds","successorsSubgraph","type","_calculateVersionMap","comp","compKey","_legacy","has","value","get","Object","prototype","hasOwnProperty","call","currentComp","latestComp","isLegacy","head","currentCompVersion","getVersion","latestCompVersion","isLaterThan","Date","timestamp"],"mappings":"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","sourcesContent":["import { Component, ComponentID } from '@teambit/component';\nimport { Graph } from 'cleargraph';\n\nimport { Dependency } from '../model/dependency';\nimport { DuplicateDependency, VersionSubgraph } from '../duplicate-dependency';\n\nexport const DEPENDENCIES_TYPES = ['dependencies', 'devDependencies'];\n\ntype Node = { id: string; node: Component };\ntype Edge = { sourceId: string; targetId: string; edge: Dependency };\n\nexport class ComponentGraph extends Graph<Component, Dependency> {\n versionMap: Map<string, { allVersionNodes: string[]; latestVersionNode: string }>;\n seederIds: ComponentID[] = []; // component IDs that started the graph. (if from workspace, the .bitmap ids normally)\n constructor(nodes: Node[] = [], edges: Edge[] = []) {\n super(nodes, edges);\n this.versionMap = new Map();\n }\n\n protected create(nodes: Node[] = [], edges: Edge[] = []): this {\n return new ComponentGraph(nodes, edges) as this;\n }\n\n /**\n * overrides the super class to eliminate non-seeders components\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 seederIdsNoVersions = this.seederIds.map((id) => id.toStringWithoutVersion());\n const duplicateDependencies: Map<string, DuplicateDependency> = new Map();\n for (const [compFullName, versions] of this.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 // TODO: once cleargraph constructor and graph.nodes are consistent we should just use this line\n // this.create(graph.nodes, graph.edges)\n\n const newGraph = new ComponentGraph();\n const newGraphNodes: Node[] = graph.nodes.map((node) => {\n return {\n id: node.id,\n node: node.attr,\n };\n });\n const newGraphEdges: Edge[] = graph.edges.map((edge) => {\n return {\n sourceId: edge.sourceId,\n targetId: edge.targetId,\n edge: edge.attr,\n };\n });\n newGraph.setNodes(newGraphNodes);\n newGraph.setEdges(newGraphEdges);\n\n return newGraph;\n }\n\n runtimeOnly(componentIds: string[]) {\n return this.successorsSubgraph(componentIds, (edge) => edge.attr.type === 'runtime');\n }\n\n private shouldLimitToSeedersOnly() {\n return this.seederIds.length;\n }\n\n _calculateVersionMap() {\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._legacy.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 = this.node(compKey)?.attr;\n const latestComp = this.node(value.latestVersionNode)?.attr;\n const isLegacy = !currentComp?.head || !latestComp?.head;\n\n if (isLegacy) {\n const currentCompVersion = currentComp?.id._legacy.getVersion();\n const latestCompVersion = latestComp?.id._legacy.getVersion();\n if (!!currentCompVersion && !!latestCompVersion && currentCompVersion.isLaterThan(latestCompVersion)) {\n value.latestVersionNode = compKey;\n }\n } else if (new Date(currentComp.head.timestamp) > new Date(latestComp.head.timestamp)) {\n value.latestVersionNode = compKey;\n }\n }\n }\n }\n return versionMap;\n }\n}\n"]}
|
Binary file
|
package/package.json
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
{
|
2
2
|
"name": "@teambit/graph",
|
3
|
-
"version": "0.0.
|
3
|
+
"version": "0.0.682",
|
4
4
|
"homepage": "https://bit.dev/teambit/component/graph",
|
5
5
|
"main": "dist/index.js",
|
6
6
|
"componentId": {
|
7
7
|
"scope": "teambit.component",
|
8
8
|
"name": "graph",
|
9
|
-
"version": "0.0.
|
9
|
+
"version": "0.0.682"
|
10
10
|
},
|
11
11
|
"dependencies": {
|
12
12
|
"@teambit/harmony": "0.2.11",
|
@@ -23,10 +23,10 @@
|
|
23
23
|
"@teambit/base-ui.text.muted-text": "1.0.1",
|
24
24
|
"@teambit/evangelist.input.checkbox.label": "1.0.3",
|
25
25
|
"@teambit/documenter.ui.heading": "4.1.1",
|
26
|
-
"@teambit/component": "0.0.
|
27
|
-
"@teambit/graphql": "0.0.
|
28
|
-
"@teambit/cli": "0.0.
|
29
|
-
"@teambit/ui": "0.0.
|
26
|
+
"@teambit/component": "0.0.682",
|
27
|
+
"@teambit/graphql": "0.0.682",
|
28
|
+
"@teambit/cli": "0.0.456",
|
29
|
+
"@teambit/ui": "0.0.682",
|
30
30
|
"@teambit/legacy-bit-id": "0.0.399",
|
31
31
|
"@teambit/component.ui.deprecation-icon": "0.0.493",
|
32
32
|
"@teambit/design.ui.styles.ellipsis": "0.0.347",
|
@@ -50,7 +50,7 @@
|
|
50
50
|
},
|
51
51
|
"peerDependencies": {
|
52
52
|
"@apollo/client": "^3.0.0",
|
53
|
-
"@teambit/legacy": "1.0.
|
53
|
+
"@teambit/legacy": "1.0.235",
|
54
54
|
"react-dom": "^16.8.0 || ^17.0.0",
|
55
55
|
"react": "^16.8.0 || ^17.0.0"
|
56
56
|
},
|
@@ -78,7 +78,7 @@
|
|
78
78
|
"react": "-"
|
79
79
|
},
|
80
80
|
"peerDependencies": {
|
81
|
-
"@teambit/legacy": "1.0.
|
81
|
+
"@teambit/legacy": "1.0.235",
|
82
82
|
"react-dom": "^16.8.0 || ^17.0.0",
|
83
83
|
"react": "^16.8.0 || ^17.0.0"
|
84
84
|
}
|
@@ -1 +1 @@
|
|
1
|
-
export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_graph@0.0.
|
1
|
+
export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_graph@0.0.682/dist/graph.docs.md')]
|
Binary file
|