@teambit/graph 0.0.879 → 0.0.881
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 +28 -0
- package/dist/component-graph/component-graph.d.ts +9 -0
- package/dist/component-graph/component-graph.js +44 -0
- package/dist/component-graph/component-graph.js.map +1 -1
- package/package-tar/teambit-graph-0.0.881.tgz +0 -0
- package/package.json +10 -10
- package/{preview-1665805128745.js → preview-1666409808293.js} +2 -2
- package/package-tar/teambit-graph-0.0.879.tgz +0 -0
@@ -1,5 +1,6 @@
|
|
1
1
|
import { Component, ComponentID } from '@teambit/component';
|
2
2
|
import { Graph, Node, Edge } from '@teambit/graph.cleargraph';
|
3
|
+
import { uniq } from 'lodash';
|
3
4
|
|
4
5
|
import { Dependency } from '../model/dependency';
|
5
6
|
import { DuplicateDependency, VersionSubgraph } from '../duplicate-dependency';
|
@@ -19,6 +20,33 @@ export class ComponentGraph extends Graph<Component, Dependency> {
|
|
19
20
|
return new ComponentGraph(nodes, edges) as this;
|
20
21
|
}
|
21
22
|
|
23
|
+
/**
|
24
|
+
* check all the routes from the sources to targets and return the components found during this traversal.
|
25
|
+
* e.g.
|
26
|
+
* A -> B -> C -> N.
|
27
|
+
* A -> E -> N.
|
28
|
+
* B -> F -> G.
|
29
|
+
* given source: A, targets: N. The results will be: B, C, E
|
30
|
+
*/
|
31
|
+
findIdsFromSourcesToTargets(sources: ComponentID[], targets: ComponentID[]): ComponentID[] {
|
32
|
+
const removeVerFromIdStr = (idStr: string) => idStr.split('@')[0];
|
33
|
+
const sourcesStr = sources.map((s) => s.toStringWithoutVersion());
|
34
|
+
const targetsStr = targets.map((t) => t.toStringWithoutVersion());
|
35
|
+
const allFlattened = sources.map((source) => this.successors(source.toString())).flat();
|
36
|
+
const allFlattenedIds = uniq(allFlattened.map((f) => f.id));
|
37
|
+
const results: string[] = [];
|
38
|
+
allFlattenedIds.forEach((id) => {
|
39
|
+
const idWithNoVer = removeVerFromIdStr(id);
|
40
|
+
if (sourcesStr.includes(idWithNoVer) || targetsStr.includes(idWithNoVer)) return;
|
41
|
+
const allSuccessors = this.successors(id);
|
42
|
+
const allSuccessorsWithNoVersion = allSuccessors.map((s) => removeVerFromIdStr(s.id));
|
43
|
+
if (allSuccessorsWithNoVersion.find((s) => targetsStr.includes(s))) results.push(id);
|
44
|
+
});
|
45
|
+
const components = this.getNodes(results).map((n) => n.attr);
|
46
|
+
|
47
|
+
return components.map((c) => c.id);
|
48
|
+
}
|
49
|
+
|
22
50
|
/**
|
23
51
|
* overrides the super class to eliminate non-seeders components
|
24
52
|
*/
|
@@ -9,6 +9,15 @@ export declare class ComponentGraph extends Graph<Component, Dependency> {
|
|
9
9
|
seederIds: ComponentID[];
|
10
10
|
constructor(nodes?: ComponentNode[], edges?: DependencyEdge[]);
|
11
11
|
protected create(nodes?: ComponentNode[], edges?: DependencyEdge[]): this;
|
12
|
+
/**
|
13
|
+
* check all the routes from the sources to targets and return the components found during this traversal.
|
14
|
+
* e.g.
|
15
|
+
* A -> B -> C -> N.
|
16
|
+
* A -> E -> N.
|
17
|
+
* B -> F -> G.
|
18
|
+
* given source: A, targets: N. The results will be: B, C, E
|
19
|
+
*/
|
20
|
+
findIdsFromSourcesToTargets(sources: ComponentID[], targets: ComponentID[]): ComponentID[];
|
12
21
|
/**
|
13
22
|
* overrides the super class to eliminate non-seeders components
|
14
23
|
*/
|
@@ -2,8 +2,14 @@
|
|
2
2
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
4
|
|
5
|
+
require("core-js/modules/es.array.flat.js");
|
6
|
+
|
5
7
|
require("core-js/modules/es.array.iterator.js");
|
6
8
|
|
9
|
+
require("core-js/modules/es.array.unscopables.flat.js");
|
10
|
+
|
11
|
+
require("core-js/modules/es.regexp.exec.js");
|
12
|
+
|
7
13
|
Object.defineProperty(exports, "__esModule", {
|
8
14
|
value: true
|
9
15
|
});
|
@@ -29,6 +35,16 @@ function _graph() {
|
|
29
35
|
return data;
|
30
36
|
}
|
31
37
|
|
38
|
+
function _lodash() {
|
39
|
+
const data = require("lodash");
|
40
|
+
|
41
|
+
_lodash = function () {
|
42
|
+
return data;
|
43
|
+
};
|
44
|
+
|
45
|
+
return data;
|
46
|
+
}
|
47
|
+
|
32
48
|
function _duplicateDependency() {
|
33
49
|
const data = require("../duplicate-dependency");
|
34
50
|
|
@@ -52,6 +68,34 @@ class ComponentGraph extends _graph().Graph {
|
|
52
68
|
create(nodes = [], edges = []) {
|
53
69
|
return new ComponentGraph(nodes, edges);
|
54
70
|
}
|
71
|
+
/**
|
72
|
+
* check all the routes from the sources to targets and return the components found during this traversal.
|
73
|
+
* e.g.
|
74
|
+
* A -> B -> C -> N.
|
75
|
+
* A -> E -> N.
|
76
|
+
* B -> F -> G.
|
77
|
+
* given source: A, targets: N. The results will be: B, C, E
|
78
|
+
*/
|
79
|
+
|
80
|
+
|
81
|
+
findIdsFromSourcesToTargets(sources, targets) {
|
82
|
+
const removeVerFromIdStr = idStr => idStr.split('@')[0];
|
83
|
+
|
84
|
+
const sourcesStr = sources.map(s => s.toStringWithoutVersion());
|
85
|
+
const targetsStr = targets.map(t => t.toStringWithoutVersion());
|
86
|
+
const allFlattened = sources.map(source => this.successors(source.toString())).flat();
|
87
|
+
const allFlattenedIds = (0, _lodash().uniq)(allFlattened.map(f => f.id));
|
88
|
+
const results = [];
|
89
|
+
allFlattenedIds.forEach(id => {
|
90
|
+
const idWithNoVer = removeVerFromIdStr(id);
|
91
|
+
if (sourcesStr.includes(idWithNoVer) || targetsStr.includes(idWithNoVer)) return;
|
92
|
+
const allSuccessors = this.successors(id);
|
93
|
+
const allSuccessorsWithNoVersion = allSuccessors.map(s => removeVerFromIdStr(s.id));
|
94
|
+
if (allSuccessorsWithNoVersion.find(s => targetsStr.includes(s))) results.push(id);
|
95
|
+
});
|
96
|
+
const components = this.getNodes(results).map(n => n.attr);
|
97
|
+
return components.map(c => c.id);
|
98
|
+
}
|
55
99
|
/**
|
56
100
|
* overrides the super class to eliminate non-seeders components
|
57
101
|
*/
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["DEPENDENCIES_TYPES","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","_legacy","has","value","get","Object","prototype","hasOwnProperty","call","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 * 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 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._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 = 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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"}
|
1
|
+
{"version":3,"names":["DEPENDENCIES_TYPES","ComponentGraph","Graph","constructor","nodes","edges","create","findIdsFromSourcesToTargets","sources","targets","removeVerFromIdStr","idStr","split","sourcesStr","map","s","toStringWithoutVersion","targetsStr","t","allFlattened","source","successors","toString","flat","allFlattenedIds","uniq","f","id","results","forEach","idWithNoVer","includes","allSuccessors","allSuccessorsWithNoVersion","find","push","components","getNodes","n","attr","c","findCycles","graph","cycles","shouldLimitToSeedersOnly","seederIdsStr","seederIds","cyclesWithSeeders","filter","cycle","some","cycleIdStr","findDuplicateDependencies","versionMap","calculateVersionMap","seederIdsNoVersions","duplicateDependencies","Map","compFullName","versions","allVersionNodes","length","versionSubgraphs","notLatestVersions","version","latestVersionNode","predecessors","predecessorsSubgraph","immediatePredecessors","predecessor","subGraph","buildFromCleargraph","versionSubgraph","versionId","immediateDependents","isSeeder","shouldDisplayDueToBeingSeeder","duplicateDep","DuplicateDependency","set","runtimeOnly","componentIds","successorsSubgraph","edgeFilter","edge","type","node","comp","compKey","_legacy","has","value","get","Object","prototype","hasOwnProperty","call","currentComp","latestComp","head","Date","timestamp"],"sources":["component-graph.ts"],"sourcesContent":["import { Component, ComponentID } from '@teambit/component';\nimport { Graph, Node, Edge } from '@teambit/graph.cleargraph';\nimport { uniq } from 'lodash';\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 * 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 findIdsFromSourcesToTargets(sources: ComponentID[], targets: 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 components = this.getNodes(results).map((n) => n.attr);\n\n return components.map((c) => c.id);\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 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._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 = 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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"}
|
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.881",
|
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.881"
|
10
10
|
},
|
11
11
|
"dependencies": {
|
12
12
|
"chalk": "2.4.2",
|
@@ -26,18 +26,18 @@
|
|
26
26
|
"@teambit/base-ui.text.muted-text": "1.0.1",
|
27
27
|
"@teambit/evangelist.input.checkbox.label": "1.0.3",
|
28
28
|
"@teambit/documenter.ui.heading": "4.1.1",
|
29
|
-
"@teambit/component": "0.0.
|
30
|
-
"@teambit/cli": "0.0.
|
29
|
+
"@teambit/component": "0.0.881",
|
30
|
+
"@teambit/cli": "0.0.591",
|
31
31
|
"@teambit/legacy-bit-id": "0.0.414",
|
32
|
-
"@teambit/graphql": "0.0.
|
33
|
-
"@teambit/logger": "0.0.
|
34
|
-
"@teambit/component-compare": "0.0.
|
35
|
-
"@teambit/ui": "0.0.
|
32
|
+
"@teambit/graphql": "0.0.881",
|
33
|
+
"@teambit/logger": "0.0.684",
|
34
|
+
"@teambit/component-compare": "0.0.129",
|
35
|
+
"@teambit/ui": "0.0.881",
|
36
36
|
"@teambit/component.modules.component-url": "0.0.141",
|
37
37
|
"@teambit/component.ui.deprecation-icon": "0.0.500",
|
38
38
|
"@teambit/design.ui.styles.ellipsis": "0.0.353",
|
39
39
|
"@teambit/envs.ui.env-icon": "0.0.492",
|
40
|
-
"@teambit/component.ui.compare": "0.0.
|
40
|
+
"@teambit/component.ui.compare": "0.0.105",
|
41
41
|
"@teambit/design.ui.round-loader": "0.0.352",
|
42
42
|
"@teambit/design.ui.pages.not-found": "0.0.363",
|
43
43
|
"@teambit/design.ui.pages.server-error": "0.0.363",
|
@@ -60,7 +60,7 @@
|
|
60
60
|
},
|
61
61
|
"peerDependencies": {
|
62
62
|
"@apollo/client": "^3.6.0",
|
63
|
-
"@teambit/legacy": "1.0.
|
63
|
+
"@teambit/legacy": "1.0.374",
|
64
64
|
"react-dom": "^16.8.0 || ^17.0.0",
|
65
65
|
"react": "^16.8.0 || ^17.0.0"
|
66
66
|
},
|
@@ -1,5 +1,5 @@
|
|
1
|
-
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_graph@0.0.
|
2
|
-
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_graph@0.0.
|
1
|
+
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_graph@0.0.881/dist/graph.composition.js';
|
2
|
+
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_graph@0.0.881/dist/graph.docs.md';
|
3
3
|
|
4
4
|
export const compositions = [compositions_0];
|
5
5
|
export const overview = [overview_0];
|
Binary file
|