@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.
@@ -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.getSeederIdsStr();
32
+ const seederIdsStr = this.seederIds.map((id) => id.toString());
33
33
  const cyclesWithSeeders = cycles.filter((cycle) => {
34
- const cycleNoVersions = cycle.map((id) => id.split('@')[0]);
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.getSeederIdsStr();
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.getSeederIdsStr();
69
+ const seederIdsStr = this.seederIds.map(id => id.toString());
72
70
  const cyclesWithSeeders = cycles.filter(cycle => {
73
- const cycleNoVersions = cycle.map(id => id.split('@')[0]);
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.getSeederIdsStr();
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"]}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/graph",
3
- "version": "0.0.679",
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.679"
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.679",
27
- "@teambit/graphql": "0.0.679",
28
- "@teambit/cli": "0.0.454",
29
- "@teambit/ui": "0.0.679",
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.233",
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.233",
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.679/dist/graph.docs.md')]
1
+ export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_graph@0.0.682/dist/graph.docs.md')]