@teambit/graph 1.0.106 → 1.0.108

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/component-id-graph.ts +76 -0
  2. package/dist/component-graph/component-graph.d.ts +2 -2
  3. package/dist/component-graph/component-graph.js +2 -3
  4. package/dist/component-graph/component-graph.js.map +1 -1
  5. package/dist/component-id-graph.d.ts +4 -4
  6. package/dist/duplicate-dependency.d.ts +1 -1
  7. package/dist/graph-builder.d.ts +1 -1
  8. package/dist/graph-cmd.d.ts +1 -1
  9. package/dist/graph.compare.section.d.ts +2 -2
  10. package/dist/graph.composition.d.ts +2 -2
  11. package/dist/graph.main.runtime.d.ts +1 -1
  12. package/dist/graph.ui.runtime.d.ts +3 -3
  13. package/dist/model/dependency/dependency.d.ts +1 -1
  14. package/dist/model/graph-filters/graph-filters.d.ts +1 -1
  15. package/dist/object-list-to-graph.d.ts +2 -2
  16. package/dist/object-list-to-graph.js +2 -2
  17. package/dist/object-list-to-graph.js.map +1 -1
  18. package/dist/{preview-1703505948637.js → preview-1703647408454.js} +2 -2
  19. package/dist/ui/component-node/component-node.d.ts +2 -2
  20. package/dist/ui/dependencies-compare/compare-node-model.d.ts +1 -1
  21. package/dist/ui/dependencies-compare/dependencies-compare.d.ts +2 -2
  22. package/dist/ui/dependencies-compare/dependencies-compare.js +9 -13
  23. package/dist/ui/dependencies-compare/dependencies-compare.js.map +1 -1
  24. package/dist/ui/dependencies-compare/dependency-compare-node.d.ts +3 -3
  25. package/dist/ui/dependencies-compare/diff-graph.d.ts +1 -1
  26. package/dist/ui/dependencies-compare/diff-graph.js +4 -7
  27. package/dist/ui/dependencies-compare/diff-graph.js.map +1 -1
  28. package/dist/ui/dependencies-graph/calc-elements.d.ts +1 -1
  29. package/dist/ui/dependencies-graph/dep-edge/dep-edge.d.ts +1 -1
  30. package/dist/ui/dependencies-graph/dependencies-graph.d.ts +3 -3
  31. package/dist/ui/dependencies-graph/dependencies-graph.js +4 -5
  32. package/dist/ui/dependencies-graph/dependencies-graph.js.map +1 -1
  33. package/dist/ui/dependencies-graph/graph-context.d.ts +2 -2
  34. package/dist/ui/dependencies-graph/minimap.js +1 -2
  35. package/dist/ui/dependencies-graph/minimap.js.map +1 -1
  36. package/dist/ui/graph-page/graph-filters.d.ts +3 -3
  37. package/dist/ui/graph-page/graph-page.d.ts +3 -3
  38. package/dist/ui/graph.section.d.ts +2 -2
  39. package/dist/ui/query/get-graph.query.d.ts +4 -4
  40. package/dist/ui/query/use-graph-query.d.ts +2 -2
  41. package/dist/ui/query/use-graph-query.js +1 -1
  42. package/dist/ui/query/use-graph-query.js.map +1 -1
  43. package/dist/ui/query/use-graph.d.ts +2 -2
  44. package/duplicate-dependency.ts +18 -0
  45. package/edge-type.ts +5 -0
  46. package/graph-builder.ts +47 -0
  47. package/graph-cmd.ts +111 -0
  48. package/graph.aspect.ts +9 -0
  49. package/graph.graphql.ts +94 -0
  50. package/graph.main.runtime.ts +49 -0
  51. package/index.ts +25 -0
  52. package/object-list-to-graph.ts +66 -0
  53. package/package.json +20 -27
  54. package/tsconfig.json +16 -21
  55. package/types/asset.d.ts +15 -3
@@ -112,25 +112,24 @@ function DependenciesGraph(_ref) {
112
112
  componentWidgets
113
113
  }), [componentWidgets]);
114
114
  const handleLoad = (0, _react().useCallback)(instance => {
115
- if (((graph === null || graph === void 0 ? void 0 : graph.nodes.length) ?? 0) <= 3) {
115
+ if ((graph?.nodes.length ?? 0) <= 3) {
116
116
  instance.fitView({
117
117
  padding: 2
118
118
  });
119
119
  } else {
120
120
  instance.fitView();
121
121
  }
122
- onLoad === null || onLoad === void 0 || onLoad(instance);
122
+ onLoad?.(instance);
123
123
  }, [onLoad]);
124
124
 
125
125
  // clear ref on unmount
126
126
  (0, _react().useEffect)(() => () => graphRef.current = undefined, []);
127
127
  (0, _react().useEffect)(() => {
128
128
  setTimeout(() => {
129
- var _graphRef$current, _graphRef$current2;
130
- if (graph.nodes.length <= 3) return (_graphRef$current = graphRef.current) === null || _graphRef$current === void 0 ? void 0 : _graphRef$current.fitView({
129
+ if (graph.nodes.length <= 3) return graphRef.current?.fitView({
131
130
  padding: 2
132
131
  });
133
- return (_graphRef$current2 = graphRef.current) === null || _graphRef$current2 === void 0 ? void 0 : _graphRef$current2.fitView();
132
+ return graphRef.current?.fitView();
134
133
  }, 0);
135
134
  }, [graph]);
136
135
  return /*#__PURE__*/_react().default.createElement(_graphContext().ComponentGraphContext.Provider, {
@@ -1 +1 @@
1
- {"version":3,"names":["_react","data","_interopRequireWildcard","require","_classnames","_interopRequireDefault","_reactFlowRenderer","_componentNode","_calcElements","_minimap","_graphContext","_dependenciesGraphModule","_excluded","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","_extends","assign","bind","target","arguments","length","source","key","apply","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","indexOf","propertyIsEnumerable","sourceKeys","keys","ComponentNodeContainer","props","sourcePosition","Position","Top","targetPosition","Bottom","id","createElement","Handle","type","position","isConnectable","ComponentNode","node","NodeTypes","DependenciesGraph","_ref","graph","rootNode","componentWidgets","className","onLoad","children","rest","graphRef","useRef","elements","calcElements","context","useMemo","handleLoad","useCallback","instance","nodes","fitView","padding","useEffect","current","undefined","setTimeout","_graphRef$current","_graphRef$current2","ComponentGraphContext","Provider","value","ReactFlowProvider","draggable","nodesDraggable","selectNodesOnDrag","nodesConnectable","zoomOnDoubleClick","elementsSelectable","maxZoom","minZoom","classnames","styles","nodeTypes","Background","Controls","controls","MiniMap","nodeColor","calcMinimapColors","minimap"],"sources":["dependencies-graph.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef } from 'react';\nimport classnames from 'classnames';\nimport ReactFlow, {\n Background,\n Controls,\n Handle,\n MiniMap,\n NodeProps,\n NodeTypesType,\n OnLoadParams,\n Position,\n ReactFlowProps,\n ReactFlowProvider,\n} from 'react-flow-renderer';\nimport { ComponentID } from '@teambit/component';\n\nimport { ComponentWidgetSlot } from '../../graph.ui.runtime';\nimport { ComponentNode } from '../component-node';\nimport { EdgeModel, GraphModel, NodeModel } from '../query';\nimport { calcElements } from './calc-elements';\nimport { calcMinimapColors } from './minimap';\nimport { ComponentGraphContext } from './graph-context';\n\nimport styles from './dependencies-graph.module.scss';\n\nfunction ComponentNodeContainer(props: NodeProps) {\n const { sourcePosition = Position.Top, targetPosition = Position.Bottom, data, id } = props;\n\n return (\n <div key={id}>\n <Handle type=\"target\" position={targetPosition} isConnectable={false} />\n <Handle type=\"source\" position={sourcePosition} isConnectable={false} />\n <ComponentNode node={data.node} type={data.type} />\n </div>\n );\n}\n\n// @ts-ignore - incorrect NodeTypes https://github.com/wbkd/react-flow/issues/2101 (#5746)\nconst NodeTypes: NodeTypesType = { ComponentNode: ComponentNodeContainer };\n\nexport type DependenciesGraphProps = {\n rootNode: ComponentID;\n graph: GraphModel<NodeModel, EdgeModel>;\n componentWidgets: ComponentWidgetSlot;\n onLoad?: (instance: OnLoadParams) => void;\n} & Omit<ReactFlowProps, 'elements'>;\n\nexport function DependenciesGraph({\n graph,\n rootNode,\n componentWidgets,\n className,\n onLoad,\n children,\n ...rest\n}: DependenciesGraphProps) {\n const graphRef = useRef<OnLoadParams>();\n const elements = calcElements(graph, { rootNode });\n const context = useMemo(() => ({ componentWidgets }), [componentWidgets]);\n\n const handleLoad = useCallback(\n (instance: OnLoadParams) => {\n if ((graph?.nodes.length ?? 0) <= 3) {\n instance.fitView({\n padding: 2,\n });\n } else {\n instance.fitView();\n }\n onLoad?.(instance);\n },\n [onLoad]\n );\n\n // clear ref on unmount\n useEffect(() => () => (graphRef.current = undefined), []);\n\n useEffect(() => {\n setTimeout(() => {\n if (graph.nodes.length <= 3)\n return graphRef.current?.fitView({\n padding: 2,\n });\n return graphRef.current?.fitView();\n }, 0);\n }, [graph]);\n\n return (\n <ComponentGraphContext.Provider value={context}>\n {/* @ts-ignore - TODO - remove when ReactFlowProvider will be of type `FC<PropsWithChildren<{}>>` instead of `FC` (#5746) */}\n <ReactFlowProvider>\n <ReactFlow\n draggable={false}\n nodesDraggable={true}\n selectNodesOnDrag={false}\n nodesConnectable={false}\n zoomOnDoubleClick={false}\n elementsSelectable={false}\n maxZoom={100}\n minZoom={0}\n {...rest}\n className={classnames(styles.graph, className)}\n elements={elements}\n nodeTypes={NodeTypes}\n onLoad={handleLoad}\n >\n <Background />\n <Controls className={styles.controls} />\n <MiniMap nodeColor={calcMinimapColors} className={styles.minimap} />\n {children}\n </ReactFlow>\n </ReactFlowProvider>\n </ComponentGraphContext.Provider>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","data","_interopRequireWildcard","require","_classnames","_interopRequireDefault","_reactFlowRenderer","_componentNode","_calcElements","_minimap","_graphContext","_dependenciesGraphModule","_excluded","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","_extends","assign","bind","target","arguments","length","source","key","apply","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","indexOf","propertyIsEnumerable","sourceKeys","keys","ComponentNodeContainer","props","sourcePosition","Position","Top","targetPosition","Bottom","id","createElement","Handle","type","position","isConnectable","ComponentNode","node","NodeTypes","DependenciesGraph","_ref","graph","rootNode","componentWidgets","className","onLoad","children","rest","graphRef","useRef","elements","calcElements","context","useMemo","handleLoad","useCallback","instance","nodes","fitView","padding","useEffect","current","undefined","setTimeout","ComponentGraphContext","Provider","value","ReactFlowProvider","draggable","nodesDraggable","selectNodesOnDrag","nodesConnectable","zoomOnDoubleClick","elementsSelectable","maxZoom","minZoom","classnames","styles","nodeTypes","Background","Controls","controls","MiniMap","nodeColor","calcMinimapColors","minimap"],"sources":["dependencies-graph.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef } from 'react';\nimport classnames from 'classnames';\nimport ReactFlow, {\n Background,\n Controls,\n Handle,\n MiniMap,\n NodeProps,\n NodeTypesType,\n OnLoadParams,\n Position,\n ReactFlowProps,\n ReactFlowProvider,\n} from 'react-flow-renderer';\nimport { ComponentID } from '@teambit/component';\n\nimport { ComponentWidgetSlot } from '../../graph.ui.runtime';\nimport { ComponentNode } from '../component-node';\nimport { EdgeModel, GraphModel, NodeModel } from '../query';\nimport { calcElements } from './calc-elements';\nimport { calcMinimapColors } from './minimap';\nimport { ComponentGraphContext } from './graph-context';\n\nimport styles from './dependencies-graph.module.scss';\n\nfunction ComponentNodeContainer(props: NodeProps) {\n const { sourcePosition = Position.Top, targetPosition = Position.Bottom, data, id } = props;\n\n return (\n <div key={id}>\n <Handle type=\"target\" position={targetPosition} isConnectable={false} />\n <Handle type=\"source\" position={sourcePosition} isConnectable={false} />\n <ComponentNode node={data.node} type={data.type} />\n </div>\n );\n}\n\n// @ts-ignore - incorrect NodeTypes https://github.com/wbkd/react-flow/issues/2101 (#5746)\nconst NodeTypes: NodeTypesType = { ComponentNode: ComponentNodeContainer };\n\nexport type DependenciesGraphProps = {\n rootNode: ComponentID;\n graph: GraphModel<NodeModel, EdgeModel>;\n componentWidgets: ComponentWidgetSlot;\n onLoad?: (instance: OnLoadParams) => void;\n} & Omit<ReactFlowProps, 'elements'>;\n\nexport function DependenciesGraph({\n graph,\n rootNode,\n componentWidgets,\n className,\n onLoad,\n children,\n ...rest\n}: DependenciesGraphProps) {\n const graphRef = useRef<OnLoadParams>();\n const elements = calcElements(graph, { rootNode });\n const context = useMemo(() => ({ componentWidgets }), [componentWidgets]);\n\n const handleLoad = useCallback(\n (instance: OnLoadParams) => {\n if ((graph?.nodes.length ?? 0) <= 3) {\n instance.fitView({\n padding: 2,\n });\n } else {\n instance.fitView();\n }\n onLoad?.(instance);\n },\n [onLoad]\n );\n\n // clear ref on unmount\n useEffect(() => () => (graphRef.current = undefined), []);\n\n useEffect(() => {\n setTimeout(() => {\n if (graph.nodes.length <= 3)\n return graphRef.current?.fitView({\n padding: 2,\n });\n return graphRef.current?.fitView();\n }, 0);\n }, [graph]);\n\n return (\n <ComponentGraphContext.Provider value={context}>\n {/* @ts-ignore - TODO - remove when ReactFlowProvider will be of type `FC<PropsWithChildren<{}>>` instead of `FC` (#5746) */}\n <ReactFlowProvider>\n <ReactFlow\n draggable={false}\n nodesDraggable={true}\n selectNodesOnDrag={false}\n nodesConnectable={false}\n zoomOnDoubleClick={false}\n elementsSelectable={false}\n maxZoom={100}\n minZoom={0}\n {...rest}\n className={classnames(styles.graph, className)}\n elements={elements}\n nodeTypes={NodeTypes}\n onLoad={handleLoad}\n >\n <Background />\n <Controls className={styles.controls} />\n <MiniMap nodeColor={calcMinimapColors} className={styles.minimap} />\n {children}\n </ReactFlow>\n </ReactFlowProvider>\n </ComponentGraphContext.Provider>\n );\n}\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  import { ComponentWidgetSlot } from '../../graph.ui.runtime';
3
3
  /** internal context, to pass shared information to all nodes */
4
- export declare type ComponentGraph = {
4
+ export type ComponentGraph = {
5
5
  componentWidgets: ComponentWidgetSlot;
6
6
  };
7
- export declare const ComponentGraphContext: import("react").Context<ComponentGraph | undefined>;
7
+ export declare const ComponentGraphContext: import("react").Context<ComponentGraph>;
@@ -12,8 +12,7 @@ function _componentNode() {
12
12
  return data;
13
13
  }
14
14
  function calcMinimapColors(node) {
15
- var _node$data;
16
- const type = (_node$data = node.data) === null || _node$data === void 0 ? void 0 : _node$data.type;
15
+ const type = node.data?.type;
17
16
  switch (type) {
18
17
  case 'root':
19
18
  return _componentNode().rootNodeColor;
@@ -1 +1 @@
1
- {"version":3,"names":["_componentNode","data","require","calcMinimapColors","node","_node$data","type","rootNodeColor","externalNodeColor","defaultNodeColor"],"sources":["minimap.ts"],"sourcesContent":["import { Node } from 'react-flow-renderer';\nimport { rootNodeColor, defaultNodeColor, externalNodeColor } from '../component-node';\n\nexport function calcMinimapColors(node: Node) {\n const type = node.data?.type;\n\n switch (type) {\n case 'root':\n return rootNodeColor;\n case 'external':\n return externalNodeColor;\n default:\n return defaultNodeColor;\n }\n}\n"],"mappings":";;;;;;AACA,SAAAA,eAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,cAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEO,SAASE,iBAAiBA,CAACC,IAAU,EAAE;EAAA,IAAAC,UAAA;EAC5C,MAAMC,IAAI,IAAAD,UAAA,GAAGD,IAAI,CAACH,IAAI,cAAAI,UAAA,uBAATA,UAAA,CAAWC,IAAI;EAE5B,QAAQA,IAAI;IACV,KAAK,MAAM;MACT,OAAOC,8BAAa;IACtB,KAAK,UAAU;MACb,OAAOC,kCAAiB;IAC1B;MACE,OAAOC,iCAAgB;EAC3B;AACF"}
1
+ {"version":3,"names":["_componentNode","data","require","calcMinimapColors","node","type","rootNodeColor","externalNodeColor","defaultNodeColor"],"sources":["minimap.ts"],"sourcesContent":["import { Node } from 'react-flow-renderer';\nimport { rootNodeColor, defaultNodeColor, externalNodeColor } from '../component-node';\n\nexport function calcMinimapColors(node: Node) {\n const type = node.data?.type;\n\n switch (type) {\n case 'root':\n return rootNodeColor;\n case 'external':\n return externalNodeColor;\n default:\n return defaultNodeColor;\n }\n}\n"],"mappings":";;;;;;AACA,SAAAA,eAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,cAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEO,SAASE,iBAAiBA,CAACC,IAAU,EAAE;EAC5C,MAAMC,IAAI,GAAGD,IAAI,CAACH,IAAI,EAAEI,IAAI;EAE5B,QAAQA,IAAI;IACV,KAAK,MAAM;MACT,OAAOC,8BAAa;IACtB,KAAK,UAAU;MACb,OAAOC,kCAAiB;IAC1B;MACE,OAAOC,iCAAgB;EAC3B;AACF"}
@@ -1,9 +1,9 @@
1
- import React from 'react';
1
+ /// <reference types="react" />
2
2
  import { CardProps } from '@teambit/base-ui.surfaces.card';
3
- declare type GraphFiltersType = {
3
+ type GraphFiltersType = {
4
4
  isFiltered: boolean;
5
5
  onChangeFilter: (isFiltered: boolean) => void;
6
6
  disable?: boolean;
7
7
  } & CardProps;
8
- export declare function GraphFilters({ onChangeFilter, isFiltered, disable, ...rest }: GraphFiltersType): React.JSX.Element;
8
+ export declare function GraphFilters({ onChangeFilter, isFiltered, disable, ...rest }: GraphFiltersType): JSX.Element;
9
9
  export {};
@@ -1,7 +1,7 @@
1
- import React from 'react';
1
+ /// <reference types="react" />
2
2
  import { ComponentWidgetSlot } from '../../graph.ui.runtime';
3
- declare type GraphPageProps = {
3
+ type GraphPageProps = {
4
4
  componentWidgets: ComponentWidgetSlot;
5
5
  };
6
- export declare function GraphPage({ componentWidgets }: GraphPageProps): React.JSX.Element;
6
+ export declare function GraphPage({ componentWidgets }: GraphPageProps): JSX.Element;
7
7
  export {};
@@ -1,12 +1,12 @@
1
+ /// <reference types="react" />
1
2
  import { Section } from '@teambit/component';
2
- import React from 'react';
3
3
  import { ComponentWidgetSlot } from '../graph.ui.runtime';
4
4
  export declare class GraphSection implements Section {
5
5
  private componentWidgetSlot;
6
6
  constructor(componentWidgetSlot: ComponentWidgetSlot);
7
7
  route: {
8
8
  path: string;
9
- element: React.JSX.Element;
9
+ element: JSX.Element;
10
10
  };
11
11
  navigationLink: {
12
12
  href: string;
@@ -1,13 +1,13 @@
1
1
  import { EdgeType } from '@teambit/graph';
2
2
  export declare const GET_GRAPH: import("@apollo/client").DocumentNode;
3
- export declare type RawGraphQuery = {
3
+ export type RawGraphQuery = {
4
4
  graph: RawGraph;
5
5
  };
6
- export declare type RawGraph = {
6
+ export type RawGraph = {
7
7
  nodes: RawNode[];
8
8
  edges: [];
9
9
  };
10
- export declare type RawNode = {
10
+ export type RawNode = {
11
11
  id: string;
12
12
  component: {
13
13
  id: {
@@ -25,7 +25,7 @@ export declare type RawNode = {
25
25
  };
26
26
  };
27
27
  };
28
- export declare type RawEdge = {
28
+ export type RawEdge = {
29
29
  sourceId: string;
30
30
  targetId: string;
31
31
  dependencyLifecycleType: EdgeType;
@@ -2,7 +2,7 @@ import { GraphQlError } from '@teambit/graphql';
2
2
  import { GraphModel } from './graph-model';
3
3
  /** provides dependencies graph data from graphQL */
4
4
  export declare function useGraphQuery(componentId?: string[], filter?: string): {
5
- graph: GraphModel<import("./node-model").NodeModel, import("./edge-model").EdgeModel> | undefined;
6
- error: GraphQlError | undefined;
5
+ graph: GraphModel<import("./node-model").NodeModel, import("./edge-model").EdgeModel>;
6
+ error: GraphQlError;
7
7
  loading: boolean;
8
8
  };
@@ -52,7 +52,7 @@ function useGraphQuery(componentId, filter) {
52
52
  },
53
53
  skip: !componentId
54
54
  });
55
- const rawGraph = data === null || data === void 0 ? void 0 : data.graph;
55
+ const rawGraph = data?.graph;
56
56
  const clientError = !rawGraph && !loading ? new (_graphql().GraphQlError)(404) : undefined;
57
57
  const serverError = error ? new (_graphql().GraphQlError)(500, error.message) : undefined;
58
58
  return (0, _react().useMemo)(() => {
@@ -1 +1 @@
1
- {"version":3,"names":["_react","data","require","_uiFoundationUiHooks","_graphql","_getGraph","_graphModel","useGraphQuery","componentId","filter","error","loading","useDataQuery","GET_GRAPH","variables","ids","skip","rawGraph","graph","clientError","GraphQlError","undefined","serverError","message","useMemo","GraphModel","from"],"sources":["use-graph-query.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { useDataQuery } from '@teambit/ui-foundation.ui.hooks.use-data-query';\nimport { GraphQlError } from '@teambit/graphql';\nimport { GET_GRAPH, RawGraphQuery } from './get-graph.query';\nimport { GraphModel } from './graph-model';\n\ntype QueryVariables = {\n ids?: string[];\n filter?: string;\n};\n\n/** provides dependencies graph data from graphQL */\nexport function useGraphQuery(componentId?: string[], filter?: string) {\n const { data, error, loading } = useDataQuery<RawGraphQuery, QueryVariables>(GET_GRAPH, {\n variables: { ids: componentId, filter },\n skip: !componentId,\n });\n\n const rawGraph = data?.graph;\n const clientError = !rawGraph && !loading ? new GraphQlError(404) : undefined;\n const serverError = error ? new GraphQlError(500, error.message) : undefined;\n\n return useMemo(() => {\n return {\n graph: rawGraph ? GraphModel.from(rawGraph) : undefined,\n error: serverError || clientError,\n loading,\n };\n }, [rawGraph, error]);\n}\n"],"mappings":";;;;;;AAAA,SAAAA,OAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,MAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,qBAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,oBAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,SAAA;EAAA,MAAAH,IAAA,GAAAC,OAAA;EAAAE,QAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,UAAA;EAAA,MAAAJ,IAAA,GAAAC,OAAA;EAAAG,SAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,YAAA;EAAA,MAAAL,IAAA,GAAAC,OAAA;EAAAI,WAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAOA;AACO,SAASM,aAAaA,CAACC,WAAsB,EAAEC,MAAe,EAAE;EACrE,MAAM;IAAER,IAAI;IAAES,KAAK;IAAEC;EAAQ,CAAC,GAAG,IAAAC,mCAAY,EAAgCC,qBAAS,EAAE;IACtFC,SAAS,EAAE;MAAEC,GAAG,EAAEP,WAAW;MAAEC;IAAO,CAAC;IACvCO,IAAI,EAAE,CAACR;EACT,CAAC,CAAC;EAEF,MAAMS,QAAQ,GAAGhB,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEiB,KAAK;EAC5B,MAAMC,WAAW,GAAG,CAACF,QAAQ,IAAI,CAACN,OAAO,GAAG,KAAIS,uBAAY,EAAC,GAAG,CAAC,GAAGC,SAAS;EAC7E,MAAMC,WAAW,GAAGZ,KAAK,GAAG,KAAIU,uBAAY,EAAC,GAAG,EAAEV,KAAK,CAACa,OAAO,CAAC,GAAGF,SAAS;EAE5E,OAAO,IAAAG,gBAAO,EAAC,MAAM;IACnB,OAAO;MACLN,KAAK,EAAED,QAAQ,GAAGQ,wBAAU,CAACC,IAAI,CAACT,QAAQ,CAAC,GAAGI,SAAS;MACvDX,KAAK,EAAEY,WAAW,IAAIH,WAAW;MACjCR;IACF,CAAC;EACH,CAAC,EAAE,CAACM,QAAQ,EAAEP,KAAK,CAAC,CAAC;AACvB"}
1
+ {"version":3,"names":["_react","data","require","_uiFoundationUiHooks","_graphql","_getGraph","_graphModel","useGraphQuery","componentId","filter","error","loading","useDataQuery","GET_GRAPH","variables","ids","skip","rawGraph","graph","clientError","GraphQlError","undefined","serverError","message","useMemo","GraphModel","from"],"sources":["use-graph-query.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { useDataQuery } from '@teambit/ui-foundation.ui.hooks.use-data-query';\nimport { GraphQlError } from '@teambit/graphql';\nimport { GET_GRAPH, RawGraphQuery } from './get-graph.query';\nimport { GraphModel } from './graph-model';\n\ntype QueryVariables = {\n ids?: string[];\n filter?: string;\n};\n\n/** provides dependencies graph data from graphQL */\nexport function useGraphQuery(componentId?: string[], filter?: string) {\n const { data, error, loading } = useDataQuery<RawGraphQuery, QueryVariables>(GET_GRAPH, {\n variables: { ids: componentId, filter },\n skip: !componentId,\n });\n\n const rawGraph = data?.graph;\n const clientError = !rawGraph && !loading ? new GraphQlError(404) : undefined;\n const serverError = error ? new GraphQlError(500, error.message) : undefined;\n\n return useMemo(() => {\n return {\n graph: rawGraph ? GraphModel.from(rawGraph) : undefined,\n error: serverError || clientError,\n loading,\n };\n }, [rawGraph, error]);\n}\n"],"mappings":";;;;;;AAAA,SAAAA,OAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,MAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,qBAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,oBAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,SAAA;EAAA,MAAAH,IAAA,GAAAC,OAAA;EAAAE,QAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,UAAA;EAAA,MAAAJ,IAAA,GAAAC,OAAA;EAAAG,SAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,YAAA;EAAA,MAAAL,IAAA,GAAAC,OAAA;EAAAI,WAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAOA;AACO,SAASM,aAAaA,CAACC,WAAsB,EAAEC,MAAe,EAAE;EACrE,MAAM;IAAER,IAAI;IAAES,KAAK;IAAEC;EAAQ,CAAC,GAAG,IAAAC,mCAAY,EAAgCC,qBAAS,EAAE;IACtFC,SAAS,EAAE;MAAEC,GAAG,EAAEP,WAAW;MAAEC;IAAO,CAAC;IACvCO,IAAI,EAAE,CAACR;EACT,CAAC,CAAC;EAEF,MAAMS,QAAQ,GAAGhB,IAAI,EAAEiB,KAAK;EAC5B,MAAMC,WAAW,GAAG,CAACF,QAAQ,IAAI,CAACN,OAAO,GAAG,KAAIS,uBAAY,EAAC,GAAG,CAAC,GAAGC,SAAS;EAC7E,MAAMC,WAAW,GAAGZ,KAAK,GAAG,KAAIU,uBAAY,EAAC,GAAG,EAAEV,KAAK,CAACa,OAAO,CAAC,GAAGF,SAAS;EAE5E,OAAO,IAAAG,gBAAO,EAAC,MAAM;IACnB,OAAO;MACLN,KAAK,EAAED,QAAQ,GAAGQ,wBAAU,CAACC,IAAI,CAACT,QAAQ,CAAC,GAAGI,SAAS;MACvDX,KAAK,EAAEY,WAAW,IAAIH,WAAW;MACjCR;IACF,CAAC;EACH,CAAC,EAAE,CAACM,QAAQ,EAAEP,KAAK,CAAC,CAAC;AACvB"}
@@ -1,5 +1,5 @@
1
1
  export declare function useGraph(): {
2
- graph: import("./graph-model").GraphModel<import("./node-model").NodeModel, import("./edge-model").EdgeModel> | undefined;
3
- error: import("@teambit/graphql").GraphQlError | undefined;
2
+ graph: import("./graph-model").GraphModel<import("./node-model").NodeModel, import("./edge-model").EdgeModel>;
3
+ error: import("@teambit/graphql").GraphQlError;
4
4
  loading: boolean;
5
5
  };
@@ -0,0 +1,18 @@
1
+ // eslint-disable-next-line import/no-cycle
2
+ import type { ComponentGraph } from './component-graph';
3
+
4
+ export class DuplicateDependency {
5
+ latestVersionId: string;
6
+ priorVersions: VersionSubgraph[];
7
+
8
+ constructor(latestVersionId: string, priorVersions: VersionSubgraph[]) {
9
+ this.latestVersionId = latestVersionId;
10
+ this.priorVersions = priorVersions;
11
+ }
12
+ }
13
+
14
+ export type VersionSubgraph = {
15
+ versionId: string;
16
+ subGraph: ComponentGraph;
17
+ immediateDependents: string[];
18
+ };
package/edge-type.ts ADDED
@@ -0,0 +1,5 @@
1
+ export enum EdgeType {
2
+ dev = 'DEV',
3
+ runtime = 'RUNTIME',
4
+ peer = 'PEER',
5
+ }
@@ -0,0 +1,47 @@
1
+ import { Component, ComponentFactory, ComponentID, ComponentMain } from '@teambit/component';
2
+ import { Edge, Graph } from '@teambit/graph.cleargraph';
3
+ import { ComponentGraph } from './component-graph';
4
+ import { ComponentIdGraph } from './component-id-graph';
5
+ import { Dependency } from './model/dependency';
6
+
7
+ export type GetGraphOpts = {
8
+ host?: ComponentFactory;
9
+ };
10
+
11
+ export class GraphBuilder {
12
+ constructor(private componentAspect: ComponentMain) {}
13
+
14
+ /**
15
+ * important - prefer using `getGraphIds()` it's way better in terms of performance.
16
+ */
17
+ async getGraph(ids?: ComponentID[], opts: GetGraphOpts = {}): Promise<ComponentGraph> {
18
+ const componentHost = opts.host || this.componentAspect.getHost();
19
+
20
+ const graph = await componentHost.getGraph(ids, false);
21
+ const componentGraph = await this.toComponentGraph(graph);
22
+ componentGraph.seederIds = ids || (await componentHost.listIds());
23
+ return componentGraph;
24
+ }
25
+
26
+ async getGraphIds(ids?: ComponentID[], opts: GetGraphOpts = {}): Promise<ComponentIdGraph> {
27
+ const componentHost = opts.host || this.componentAspect.getHost();
28
+
29
+ const graph = await componentHost.getGraphIds(ids, false);
30
+ const componentIdGraph = new ComponentIdGraph(graph.nodes, graph.edges);
31
+ componentIdGraph.seederIds = ids || (await componentHost.listIds());
32
+ return componentIdGraph;
33
+ }
34
+
35
+ private async toComponentGraph(graph: Graph<Component, string>): Promise<ComponentGraph> {
36
+ const newGraph = new ComponentGraph();
37
+ graph.nodes.forEach((node) => {
38
+ newGraph.setNode(node);
39
+ });
40
+ graph.edges.forEach((edge) => {
41
+ const edgeObj =
42
+ edge.attr === 'dependencies' || edge.attr === 'runtime' ? new Dependency('runtime') : new Dependency('dev');
43
+ newGraph.setEdge(new Edge(edge.sourceId, edge.targetId, edgeObj));
44
+ });
45
+ return newGraph;
46
+ }
47
+ }
package/graph-cmd.ts ADDED
@@ -0,0 +1,111 @@
1
+ import chalk from 'chalk';
2
+ import os from 'os';
3
+ import * as path from 'path';
4
+ import GraphLib from 'graphlib';
5
+ import { Command, CommandOptions } from '@teambit/cli';
6
+ import { ComponentID } from '@teambit/component-id';
7
+ import { generateRandomStr } from '@teambit/legacy/dist/utils';
8
+ import VisualDependencyGraph from '@teambit/legacy/dist/scope/graph/vizgraph';
9
+ import { Consumer, loadConsumerIfExist } from '@teambit/legacy/dist/consumer';
10
+ import DependencyGraph from '@teambit/legacy/dist/scope/graph/scope-graph';
11
+ import { ConsumerNotFound } from '@teambit/legacy/dist/consumer/exceptions';
12
+ import getRemoteByName from '@teambit/legacy/dist/remotes/get-remote-by-name';
13
+ import { ComponentMain } from '@teambit/component';
14
+
15
+ type GraphOpt = {
16
+ image?: string;
17
+ remote?: string;
18
+ allVersions?: boolean;
19
+ layout?: string;
20
+ json?: boolean;
21
+ };
22
+
23
+ export class GraphCmd implements Command {
24
+ name = 'graph [id]';
25
+ description = "generate an image file with the workspace components' dependencies graph";
26
+ extendedDescription: 'black arrow is a runtime dependency. red arrow is either dev or peer';
27
+ group = 'discover';
28
+ alias = '';
29
+ options = [
30
+ ['i', 'image <image>', 'image path and format. use one of the following extensions: [gif, png, svg, pdf]'],
31
+ ['r', 'remote [remoteName]', 'remote name (name is optional, leave empty when id is specified)'],
32
+ ['', 'all-versions', 'enter all components versions into the graph, not only latest'],
33
+ [
34
+ '',
35
+ 'layout <name>',
36
+ 'GraphVis layout. default to "dot". options are [circo, dot, fdp, neato, osage, patchwork, sfdp, twopi]',
37
+ ],
38
+ ['j', 'json', 'json format'],
39
+ ] as CommandOptions;
40
+ remoteOp = true;
41
+
42
+ constructor(private componentAspect: ComponentMain) {}
43
+
44
+ async report([id]: [string], { remote, allVersions, layout, image }: GraphOpt): Promise<string> {
45
+ const consumer = await loadConsumerIfExist();
46
+ if (!consumer && !remote) throw new ConsumerNotFound();
47
+
48
+ const graph = await this.generateGraph(consumer, id, remote, allVersions);
49
+
50
+ const config = {};
51
+ // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
52
+ if (layout) config.layout = layout;
53
+ const visualDependencyGraph = await VisualDependencyGraph.loadFromGraphlib(graph, config);
54
+
55
+ image = image || path.join(os.tmpdir(), `${generateRandomStr()}.png`);
56
+ const result = await visualDependencyGraph.image(image);
57
+
58
+ return chalk.green(`image created at ${result}`);
59
+ }
60
+
61
+ private async generateGraph(
62
+ consumer?: Consumer,
63
+ id?: string,
64
+ remote?: string,
65
+ allVersions?: boolean
66
+ ): Promise<GraphLib.Graph> {
67
+ if (!consumer && !remote) throw new ConsumerNotFound();
68
+ const getBitId = (): ComponentID | undefined => {
69
+ if (!id) return undefined;
70
+ if (remote) return ComponentID.fromString(id); // user used --remote so we know it has a scope
71
+ // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
72
+ return consumer.getParsedId(id);
73
+ };
74
+ const bitId = getBitId();
75
+ if (remote) {
76
+ if (id) {
77
+ // @ts-ignore scope must be set as it came from a remote
78
+ const scopeName: string = typeof remote === 'string' ? remote : bitId.scope;
79
+ const remoteScope = await getRemoteByName(scopeName, consumer);
80
+ const componentDepGraph = await remoteScope.graph(bitId);
81
+ return componentDepGraph.graph;
82
+ }
83
+ if (typeof remote !== 'string') {
84
+ throw new Error('please specify remote scope name or enter an id');
85
+ }
86
+ const remoteScope = await getRemoteByName(remote, consumer);
87
+ const componentDepGraph = await remoteScope.graph();
88
+ return componentDepGraph.graph;
89
+ }
90
+
91
+ const onlyLatest = !allVersions;
92
+ // @ts-ignore consumer must be set here
93
+ const workspaceGraph = await DependencyGraph.buildGraphFromWorkspace(consumer, onlyLatest);
94
+ const dependencyGraph = new DependencyGraph(workspaceGraph);
95
+ if (id) {
96
+ // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
97
+ const componentGraph = dependencyGraph.getSubGraphOfConnectedComponents(bitId);
98
+ const componentDepGraph = new DependencyGraph(componentGraph);
99
+ return componentDepGraph.graph;
100
+ }
101
+ return dependencyGraph.graph;
102
+ }
103
+
104
+ async json([id]: [string], { remote, allVersions }: GraphOpt) {
105
+ const consumer = await loadConsumerIfExist();
106
+ if (!consumer && !remote) throw new ConsumerNotFound();
107
+
108
+ const graph = await this.generateGraph(consumer, id, remote, allVersions);
109
+ return GraphLib.json.write(graph);
110
+ }
111
+ }
@@ -0,0 +1,9 @@
1
+ import { Aspect } from '@teambit/harmony';
2
+
3
+ export const GraphAspect = Aspect.create({
4
+ id: 'teambit.component/graph',
5
+ dependencies: [],
6
+ defaultConfig: {},
7
+ });
8
+
9
+ export default GraphAspect;
@@ -0,0 +1,94 @@
1
+ import { ComponentMain } from '@teambit/component';
2
+ import { Schema } from '@teambit/graphql';
3
+ import gql from 'graphql-tag';
4
+
5
+ import { GraphBuilder } from './graph-builder';
6
+ import { ComponentGraph } from './component-graph';
7
+ import { GraphFilter } from './model/graph-filters';
8
+ import { DependencyType } from './model/dependency';
9
+ import { EdgeType } from './edge-type';
10
+
11
+ const textCmp = new Intl.Collator().compare;
12
+
13
+ export function graphSchema(graphBuilder: GraphBuilder, componentAspect: ComponentMain): Schema {
14
+ return {
15
+ typeDefs: gql`
16
+ type ComponentGraph {
17
+ nodes: [ComponentGraphNode]
18
+ edges: [ComponentGraphEdge]
19
+ }
20
+
21
+ type ComponentGraphNode {
22
+ id: String
23
+ component: Component
24
+ }
25
+
26
+ enum DependencyLifecycleType {
27
+ PEER
28
+ RUNTIME
29
+ DEV
30
+ }
31
+
32
+ type ComponentGraphEdge {
33
+ sourceId: String
34
+ targetId: String
35
+ dependencyLifecycleType: DependencyLifecycleType
36
+ }
37
+
38
+ extend type Query {
39
+ graph(ids: [String], filter: String): ComponentGraph
40
+ }
41
+ `,
42
+ resolvers: {
43
+ ComponentGraph: {
44
+ nodes: (graph: ComponentGraph) => {
45
+ return graph.nodes
46
+ .map((node) => {
47
+ return {
48
+ id: node.id,
49
+ component: node.attr,
50
+ };
51
+ })
52
+ .sort((a, b) => textCmp(a.id, b.id));
53
+ },
54
+ edges: (graph: ComponentGraph) => {
55
+ return graph.edges
56
+ .map(
57
+ (edge) =>
58
+ ({
59
+ sourceId: edge.sourceId,
60
+ targetId: edge.targetId,
61
+ dependencyLifecycleType: getDependencyLifecycleType(edge.attr.type),
62
+ } as { sourceId: string; targetId: string; dependencyLifecycleType: EdgeType })
63
+ )
64
+ .sort((a, b) => textCmp(a.sourceId, b.sourceId))
65
+ .sort((a, b) => textCmp(a.targetId, b.targetId));
66
+ },
67
+ },
68
+ Query: {
69
+ graph: async (_parent, { ids, filter }: { ids?: string[]; filter?: GraphFilter }) => {
70
+ const componentsHost = componentAspect.getHost();
71
+ const resolvedIds = ids
72
+ ? await componentsHost.resolveMultipleComponentIds(ids)
73
+ : (await componentsHost.list()).map((x) => x.id);
74
+
75
+ const graph = await graphBuilder.getGraph(resolvedIds);
76
+ if (!graph) return undefined;
77
+
78
+ if (filter === 'runtimeOnly') {
79
+ const runtimeGraph = graph.runtimeOnly(resolvedIds.map((x) => x.toString()));
80
+ return runtimeGraph;
81
+ }
82
+
83
+ return graph;
84
+ },
85
+ },
86
+ },
87
+ };
88
+ }
89
+
90
+ function getDependencyLifecycleType(edgeRawData: DependencyType): EdgeType {
91
+ if (edgeRawData === 'dev') return EdgeType.dev;
92
+ if (edgeRawData === 'runtime') return EdgeType.runtime;
93
+ return EdgeType.peer;
94
+ }
@@ -0,0 +1,49 @@
1
+ import { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';
2
+ import { ComponentMain, ComponentAspect, ComponentID } from '@teambit/component';
3
+ import { GraphqlAspect, GraphqlMain } from '@teambit/graphql';
4
+ import { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';
5
+ import { GetGraphOpts, GraphBuilder } from './graph-builder';
6
+ import { graphSchema } from './graph.graphql';
7
+ import { GraphAspect } from './graph.aspect';
8
+ import { GraphCmd } from './graph-cmd';
9
+ import { ComponentGraph } from './component-graph';
10
+ import { ComponentIdGraph } from './component-id-graph';
11
+
12
+ export class GraphMain {
13
+ constructor(private componentAspect: ComponentMain, private logger: Logger) {}
14
+
15
+ /**
16
+ * important - prefer using `getGraphIds()` it's way better in terms of performance.
17
+ */
18
+ async getGraph(ids?: ComponentID[], opts: GetGraphOpts = {}): Promise<ComponentGraph> {
19
+ const graphBuilder = new GraphBuilder(this.componentAspect);
20
+ return graphBuilder.getGraph(ids, opts);
21
+ }
22
+
23
+ async getGraphIds(ids?: ComponentID[], opts: GetGraphOpts = {}): Promise<ComponentIdGraph> {
24
+ const graphBuilder = new GraphBuilder(this.componentAspect);
25
+ return graphBuilder.getGraphIds(ids, opts);
26
+ }
27
+
28
+ static slots = [];
29
+ static dependencies = [GraphqlAspect, ComponentAspect, CLIAspect, LoggerAspect];
30
+ static runtime = MainRuntime;
31
+ static async provider([graphql, componentAspect, cli, loggerMain]: [
32
+ GraphqlMain,
33
+ ComponentMain,
34
+ CLIMain,
35
+ LoggerMain
36
+ ]) {
37
+ const logger = loggerMain.createLogger(GraphAspect.id);
38
+
39
+ const graphBuilder = new GraphBuilder(componentAspect);
40
+ graphql.register(graphSchema(graphBuilder, componentAspect));
41
+
42
+ const graphMain = new GraphMain(componentAspect, logger);
43
+ cli.register(new GraphCmd(componentAspect));
44
+
45
+ return graphMain;
46
+ }
47
+ }
48
+
49
+ GraphAspect.addRuntime(GraphMain);
package/index.ts ADDED
@@ -0,0 +1,25 @@
1
+ export { DependenciesCompare } from './ui/dependencies-compare';
2
+ export { Dependency } from './model/dependency';
3
+ export { DuplicateDependency } from './duplicate-dependency';
4
+ export { GraphAspect as default, GraphAspect } from './graph.aspect';
5
+ export { IdGraph, objectListToGraph, bitObjectListToGraph } from './object-list-to-graph';
6
+ export {
7
+ calcElements,
8
+ calcLayout,
9
+ calcMinimapColors,
10
+ depTypeToClass,
11
+ depTypeToLabel,
12
+ styles as dependenciesGraphStyles,
13
+ } from './ui/dependencies-graph';
14
+ export { GraphFilters, styles as graphPageStyles } from './ui/graph-page';
15
+ export { EdgeModel, GraphModel, NodeModel, useGraph, useGraphQuery } from './ui/query';
16
+ export { styles as componentNodeStyles, root, defaultNode, external } from './ui/component-node';
17
+ export type { RawGraph } from './ui/query';
18
+ export type { CompIdGraph, DepEdgeType } from './component-id-graph';
19
+ export type { ComponentGraph } from './component-graph';
20
+ export type { ComponentWidget, ComponentWidgetProps, ComponentWidgetSlot, GraphUI } from './graph.ui.runtime';
21
+ export { EdgeType } from './edge-type';
22
+ export type { GraphBuilder } from './graph-builder';
23
+ export type { GraphFilter } from './model/graph-filters';
24
+ export type { GraphMain } from './graph.main.runtime';
25
+ export type { VersionSubgraph } from './duplicate-dependency';