diff --git a/package.json b/package.json index e2fc9a6..e483aec 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "prop-types": "^15.7.2", "react-dom": "^17.0.2", "react-reconciler": "^0.26.2", - "ts-graphviz": "^0.15.1" + "ts-graphviz": "^0.16.0" }, "devDependencies": { "@testing-library/jest-dom": "^5.12.0", diff --git a/src/__tests__/__snapshots__/render-to-dot.spec.tsx.snap b/src/__tests__/__snapshots__/render-to-dot.spec.tsx.snap index 2e046c0..4b9431d 100644 --- a/src/__tests__/__snapshots__/render-to-dot.spec.tsx.snap +++ b/src/__tests__/__snapshots__/render-to-dot.spec.tsx.snap @@ -2,8 +2,6 @@ exports[`renderToDot render edge 1`] = ` digraph { - "a"; - "b"; "a" -> "b"; } `; @@ -11,8 +9,6 @@ digraph { exports[`renderToDot render subgraph 1`] = ` digraph { subgraph { - "a"; - "b"; "a" -> "b"; } } diff --git a/src/__tests__/__snapshots__/render.test.tsx.snap b/src/__tests__/__snapshots__/render.test.tsx.snap index 472b466..e7921d4 100644 --- a/src/__tests__/__snapshots__/render.test.tsx.snap +++ b/src/__tests__/__snapshots__/render.test.tsx.snap @@ -3,8 +3,6 @@ exports[`renderToDot render to container subgraph test 1`] = ` digraph { subgraph "test" { - "a"; - "b"; "a" -> "b"; } } diff --git a/src/__tests__/render-to-dot.spec.tsx b/src/__tests__/render-to-dot.spec.tsx index 9e439a9..c6adafb 100644 --- a/src/__tests__/render-to-dot.spec.tsx +++ b/src/__tests__/render-to-dot.spec.tsx @@ -1,6 +1,7 @@ // tslint:disable: jsx-no-multiline-js import React from 'react'; import 'jest-graphviz'; +import { EdgeTargetLikeTuple } from 'ts-graphviz'; import { Edge } from '../components/Edge'; import { Subgraph } from '../components/Subgraph'; import { Digraph } from '../components/Digraph'; @@ -19,12 +20,9 @@ describe('renderToDot', () => { }); it('render edge', () => { - const nodes = ['a', 'b']; + const nodes: EdgeTargetLikeTuple = ['a', 'b']; const dot = renderToDot( - {nodes.map((id) => ( - - ))} , ); @@ -32,13 +30,10 @@ describe('renderToDot', () => { }); it('render subgraph', () => { - const nodes = ['a', 'b']; + const nodes: EdgeTargetLikeTuple = ['a', 'b']; const dot = renderToDot( - {nodes.map((id) => ( - - ))} , diff --git a/src/__tests__/render.test.tsx b/src/__tests__/render.test.tsx index ea6eb7b..9227c84 100644 --- a/src/__tests__/render.test.tsx +++ b/src/__tests__/render.test.tsx @@ -1,7 +1,7 @@ /* eslint-disable jest/expect-expect */ import React from 'react'; import 'jest-graphviz'; -import { digraph, toDot } from 'ts-graphviz'; +import { digraph, EdgeTargetLikeTuple, toDot } from 'ts-graphviz'; import { Edge } from '../components/Edge'; import { Node } from '../components/Node'; import { renderExpectToThrow } from '../components/__tests__/utils/renderExpectToThrow'; @@ -24,17 +24,9 @@ describe('renderToDot', () => { }); it('render to container subgraph test', () => { - const nodes = ['a', 'b']; + const nodes: EdgeTargetLikeTuple = ['a', 'b']; const G = digraph(); - const subgraph = render( - <> - {nodes.map((id) => ( - - ))} - - , - G.subgraph('test'), - ); + const subgraph = render(, G.subgraph('test')); expect(G.subgraph('test')).toEqual(subgraph); expect(toDot(G)).toBeValidDotAndMatchSnapshot(); }); diff --git a/src/components/Edge.tsx b/src/components/Edge.tsx index e75ce65..4995d1f 100644 --- a/src/components/Edge.tsx +++ b/src/components/Edge.tsx @@ -17,6 +17,8 @@ export const Edge: VFC = ({ targets, label, ...options }) => { Edge.displayName = 'Edge'; Edge.propTypes = { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore targets: PropTypes.array.isRequired, comment: PropTypes.string, label: PropTypes.oneOfType([PropTypes.element, PropTypes.string]), diff --git a/src/hooks/__tests__/use-edge.spec.ts b/src/hooks/__tests__/use-edge.spec.ts index e8f3658..0af0d17 100644 --- a/src/hooks/__tests__/use-edge.spec.ts +++ b/src/hooks/__tests__/use-edge.spec.ts @@ -1,4 +1,4 @@ -import { Edge } from 'ts-graphviz'; +import { Edge, EdgeTargetLikeTuple } from 'ts-graphviz'; import { renderHook } from '@testing-library/react-hooks'; import { useEdge } from '../use-edge'; import { digraph, graph } from './utils/wrapper'; @@ -34,7 +34,7 @@ describe('useEdge', () => { }); test('throw error if the target is less than 2', () => { - const { result } = renderHook(() => useEdge(['a']), { + const { result } = renderHook(() => useEdge(['a'] as any as EdgeTargetLikeTuple), { wrapper: graph(), }); expect(result.error).toStrictEqual(Error(EdgeTargetLengthErrorMessage)); diff --git a/src/hooks/use-edge.ts b/src/hooks/use-edge.ts index 43b55dd..f59ea9a 100644 --- a/src/hooks/use-edge.ts +++ b/src/hooks/use-edge.ts @@ -1,5 +1,5 @@ import { useEffect, useMemo } from 'react'; -import { EdgeTargetLike, EdgeTargetsLike, IEdge } from 'ts-graphviz'; +import { EdgeTargetLikeTuple, IEdge } from 'ts-graphviz'; import { useCurrentCluster } from './use-current-cluster'; import { EdgeTargetLengthErrorMessage } from '../errors'; import { useHasComment } from './use-comment'; @@ -10,7 +10,7 @@ import { EdgeOptions } from '../types'; * `useEdge` is a hook that creates an instance of Edge * according to the object given by props. */ -export function useEdge(targets: (EdgeTargetLike | EdgeTargetsLike)[], props: EdgeOptions = {}): IEdge { +export function useEdge(targets: EdgeTargetLikeTuple, props: EdgeOptions = {}): IEdge { const { comment, ...attributes } = props; const cluster = useCurrentCluster(); if (targets.length < 2) { diff --git a/src/types.ts b/src/types.ts index dab0b35..9dfbe90 100644 --- a/src/types.ts +++ b/src/types.ts @@ -4,10 +4,9 @@ import { NodeAttributes, ClusterSubgraphAttributes, RootClusterAttributes, - EdgeTargetLike, - EdgeTargetsLike, IHasComment, attribute, + EdgeTargetLikeTuple, } from 'ts-graphviz'; /** Common attribute values of objects under cluster */ @@ -52,7 +51,7 @@ export interface RootClusterProps extends Omit { /** Edge targets */ - targets: (EdgeTargetLike | EdgeTargetsLike)[]; + targets: EdgeTargetLikeTuple; /** Edge label */ label?: ReactElement | string; } diff --git a/yarn.lock b/yarn.lock index e738e66..73ea949 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5064,12 +5064,10 @@ tr46@^2.0.2: dependencies: punycode "^2.1.1" -ts-graphviz@^0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/ts-graphviz/-/ts-graphviz-0.15.1.tgz#4136c1f6674913f30c08d58a3220b0949a2402e1" - integrity sha512-H1JfAL3eRTM7QHIjWU7nCwWYyOyLEVtkD9AZyV2K70icA4hXiu7tJuz5GW+bDR/y8/SyztEYKv385anh4fZ2yw== - dependencies: - tslib "^2.2.0" +ts-graphviz@^0.16.0: + version "0.16.0" + resolved "https://registry.yarnpkg.com/ts-graphviz/-/ts-graphviz-0.16.0.tgz#7a6e6b5434854bc90ab861e70d5af0d6d20729a7" + integrity sha512-3fTPO+G6bSQNvMh/XQQzyiahVLMMj9kqYO99ivUraNJ3Wp05HZOOVtRhi6w9hq7+laP1MKHjLBtGWqTeb1fcpg== ts-jest@^26.5.6: version "26.5.6" @@ -5119,11 +5117,6 @@ tslib@^1.8.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c" - integrity sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w== - tsutils@^3.17.1: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"