From a820963086c363274c111ac0df027762c61c1cf3 Mon Sep 17 00:00:00 2001 From: David Newell Date: Fri, 30 Jun 2017 11:12:58 -0400 Subject: [PATCH 01/10] Updating dagre Cleaning up white space --- types/dagre/index.d.ts | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/types/dagre/index.d.ts b/types/dagre/index.d.ts index 7408d145cf..ebc53a090d 100644 --- a/types/dagre/index.d.ts +++ b/types/dagre/index.d.ts @@ -12,15 +12,27 @@ export namespace graphlib { nodes(): string[]; node(id: any): any; setDefaultEdgeLabel(callback: () => void): Graph; - setEdge(sourceId: string, targetId: string, options?: { [key: string]: any }): Graph; + setDefaultNodeLabel(callback: () => void): Graph; + setEdge(sourceId: string, targetId: string, options?: { [key: string]: any }, value?: string): Graph; setGraph(options: { [key: string]: any }): Graph; setNode(id: string, node: { [key: string]: any }): Graph; + graph(): GraphOptions; + + constructor(opt?: {}); + setParent(name: string, parentName: string): void; + hasNode(name: string): boolean; } } +export interface GraphOptions { + width: number; + height: number; +} + export function layout(graph: graphlib.Graph): void; export interface Edge { v: string; w: string; + name?: string; } From 101ffe819477461f8209ceab517e91ea68c66037 Mon Sep 17 00:00:00 2001 From: David Newell Date: Wed, 5 Jul 2017 12:07:33 -0400 Subject: [PATCH 02/10] Updates based on feedback --- types/dagre/index.d.ts | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/types/dagre/index.d.ts b/types/dagre/index.d.ts index ebc53a090d..c66709ca29 100644 --- a/types/dagre/index.d.ts +++ b/types/dagre/index.d.ts @@ -11,22 +11,27 @@ export namespace graphlib { edge(id: any): any; nodes(): string[]; node(id: any): any; - setDefaultEdgeLabel(callback: () => void): Graph; - setDefaultNodeLabel(callback: () => void): Graph; + setDefaultEdgeLabel(callback: string|(() => string)): Graph; + setDefaultNodeLabel(callback: string|(() => string)): Graph; setEdge(sourceId: string, targetId: string, options?: { [key: string]: any }, value?: string): Graph; - setGraph(options: { [key: string]: any }): Graph; + setEdge(params: {v: string, w: string, name?: string}, value?: string): Graph; + setGraph(label: GraphLabel): Graph; setNode(id: string, node: { [key: string]: any }): Graph; - graph(): GraphOptions; + graph(): GraphLabel; - constructor(opt?: {}); + constructor(opt?: {directed?: boolean, multigraph?: boolean, compound?: boolean}); setParent(name: string, parentName: string): void; hasNode(name: string): boolean; } } -export interface GraphOptions { - width: number; - height: number; +export interface GraphLabel { + width?: number; + height?: number; + compound: boolean; + rankdir: string; + nodesep: number; + edgesep: number; } export function layout(graph: graphlib.Graph): void; From 6f5e9a281407a1d261ac831c59cd92a3c2057316 Mon Sep 17 00:00:00 2001 From: David Newell Date: Mon, 24 Jul 2017 15:39:35 -0400 Subject: [PATCH 03/10] Fixing tests --- types/dagre/index.d.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/types/dagre/index.d.ts b/types/dagre/index.d.ts index c66709ca29..2c6c6e38ab 100644 --- a/types/dagre/index.d.ts +++ b/types/dagre/index.d.ts @@ -11,8 +11,8 @@ export namespace graphlib { edge(id: any): any; nodes(): string[]; node(id: any): any; - setDefaultEdgeLabel(callback: string|(() => string)): Graph; - setDefaultNodeLabel(callback: string|(() => string)): Graph; + setDefaultEdgeLabel(callback: string|(() => string|void)): Graph; + setDefaultNodeLabel(callback: string|(() => string|void)): Graph; setEdge(sourceId: string, targetId: string, options?: { [key: string]: any }, value?: string): Graph; setEdge(params: {v: string, w: string, name?: string}, value?: string): Graph; setGraph(label: GraphLabel): Graph; @@ -28,10 +28,10 @@ export namespace graphlib { export interface GraphLabel { width?: number; height?: number; - compound: boolean; - rankdir: string; - nodesep: number; - edgesep: number; + compound?: boolean; + rankdir?: string; + nodesep?: number; + edgesep?: number; } export function layout(graph: graphlib.Graph): void; From 982861b8ec28dfd231ee8991fcdce5243c3da0cb Mon Sep 17 00:00:00 2001 From: David Newell Date: Wed, 15 Nov 2017 11:55:04 -0500 Subject: [PATCH 04/10] Updating Dagre types --- types/dagre/index.d.ts | 104 ++++++++++++++++++++++++++++++++++------- 1 file changed, 87 insertions(+), 17 deletions(-) diff --git a/types/dagre/index.d.ts b/types/dagre/index.d.ts index 55d98b0535..e7a968e902 100644 --- a/types/dagre/index.d.ts +++ b/types/dagre/index.d.ts @@ -3,6 +3,7 @@ // Definitions by: Qinfeng Chen // Lisa Vallfors // Pete Vilter +// David Newell // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.2 @@ -10,27 +11,67 @@ export as namespace dagre; export namespace graphlib { class Graph { - edges(): Edge[]; - edge(id: any): any; - nodes(): string[]; - node(id: any): any; - setDefaultEdgeLabel(callback: string|(() => string|object)): Graph; - setDefaultNodeLabel(callback: string|(() => string|object)): Graph; - setEdge(sourceId: string, targetId: string, options?: { [key: string]: any }, value?: string): Graph; - setEdge(params: {v: string, w: string, name?: string}, value?: string): Graph; - setGraph(label: GraphLabel): Graph; - setNode(id: string, node: { [key: string]: any }): Graph; - graph(): GraphLabel; - constructor(opt?: {directed?: boolean, multigraph?: boolean, compound?: boolean}); - setParent(name: string, parentName: string): void; + + graph(): GraphLabel; + isDirected(): boolean; + isMultiGraph(): boolean; + setGraph(label: GraphLabel): Graph; + + edge(edgeObj: EdgeLabel): Edge; + edge(outNodeName: string, inNodeName: string, name?: string): Edge; + edgeCount(): number; + edges(): EdgeLabel[]; + hasEdge(edgeObj: EdgeLabel): boolean; + hasEdge(outNodeName: string, inNodeName: string, name?: string): boolean; + inEdges(inNodeName: string, outNodeName?: string): EdgeLabel[]|undefined; + outEdges(outNodeName: string, inNodeName?: string): EdgeLabel[]|undefined; + removeEdge(outNodeName: string, inNodeName: string): Graph; + setDefaultEdgeLabel(callback: string|(() => string|object)): Graph; + setEdge(params: EdgeLabel, value?: string|{[key: string]: any}): Graph; + setEdge(sourceId: string, targetId: string, value?: string|{ [key: string]: any }, name?: string): Graph; + + children(parentName: string): string|undefined; hasNode(name: string): boolean; + neighbors(name: string): Node[]|undefined; + node(id: string|object): Node; + nodeCount(): number; + nodes(): string[]; + parent(childName: string): string|undefined; + predecessors(name: string): Node[]|undefined; + removeNode(name: string): Graph; + setDefaultNodeLabel(callback: string|(() => string|object)): Graph; + setNode(id: string, node: NodeConfig): Graph; + setParent(childName: string, parentName: string): void; + sources(): Node[]; + successors(name: string): Node[]|undefined; + } + + class json { + static read(graph: object): Graph; + static write(graph: Graph): object; + } + + class alg { + static components(graph: Graph): string[][]; + static dijkstra(graph: Graph, source: string, weightFn?: WeightFn, edgeFn?: EdgeFn): object; + static dijkstraAll(graph: Graph, weightFn?: WeightFn, edgeFn?: EdgeFn): object; + static findCycles(graph: Graph): string[][]; + static floydWarchall(graph: Graph, weightFn?: WeightFn, edgeFn?: EdgeFn): object; + static isAcyclic(graph: Graph): boolean; + static postorder(graph: Graph, nodeNames: string|string[]): string[]; + static preorder(graph: Graph, nodeNames: string|string[]): string[]; + static prim(graph: Graph, weightFn?: WeightFn): Graph; + static tarjam(graph: Graph): string[][]; + static topsort(graph: Graph): string[]; } } +export type WeightFn = (edge: EdgeLabel) => number; +export type EdgeFn = (outNodeName: string) => Edge[]; + export interface GraphLabel { - width?: number; - height?: number; + label?: string; compound?: boolean; rankdir?: string; align?: string; @@ -41,12 +82,41 @@ export interface GraphLabel { marginy?: number; acyclicer?: string; ranker?: string; + width?: number; + height?: number; } -export function layout(graph: graphlib.Graph): void; +export interface NodeConfig { + width?: number; + height?: number; +} -export interface Edge { +export interface EdgeConfig { + minlen: number; + weight: number; + width: number; + height: number; + lablepos: 'l'|'c'|'r'; + labeloffest: number; +} + +export function layout(graph: graphlib.Graph, layout?: GraphLabel&NodeConfig&EdgeConfig): void; + +export interface EdgeLabel { v: string; w: string; name?: string; } + +export interface Edge { + points: Array<{x: number, y: number}>; + [key: string]: any; +} + +export interface Node { + x: number; + y: number; + width: number; + height: number; + [key: string]: any; +} From 9f303bef267edc8e2d45d3ff35b5a3be4017bb5d Mon Sep 17 00:00:00 2001 From: David Newell Date: Wed, 15 Nov 2017 12:12:54 -0500 Subject: [PATCH 05/10] Updatinge the Dagre types --- types/dagre/index.d.ts | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/types/dagre/index.d.ts b/types/dagre/index.d.ts index e7a968e902..e8f0706cfe 100644 --- a/types/dagre/index.d.ts +++ b/types/dagre/index.d.ts @@ -18,17 +18,17 @@ export namespace graphlib { isMultiGraph(): boolean; setGraph(label: GraphLabel): Graph; - edge(edgeObj: EdgeLabel): Edge; - edge(outNodeName: string, inNodeName: string, name?: string): Edge; + edge(edgeObj: Edge): GraphEdge; + edge(outNodeName: string, inNodeName: string, name?: string): GraphEdge; edgeCount(): number; - edges(): EdgeLabel[]; - hasEdge(edgeObj: EdgeLabel): boolean; + edges(): Edge[]; + hasEdge(edgeObj: Edge): boolean; hasEdge(outNodeName: string, inNodeName: string, name?: string): boolean; - inEdges(inNodeName: string, outNodeName?: string): EdgeLabel[]|undefined; - outEdges(outNodeName: string, inNodeName?: string): EdgeLabel[]|undefined; + inEdges(inNodeName: string, outNodeName?: string): Edge[]|undefined; + outEdges(outNodeName: string, inNodeName?: string): Edge[]|undefined; removeEdge(outNodeName: string, inNodeName: string): Graph; setDefaultEdgeLabel(callback: string|(() => string|object)): Graph; - setEdge(params: EdgeLabel, value?: string|{[key: string]: any}): Graph; + setEdge(params: Edge, value?: string|{[key: string]: any}): Graph; setEdge(sourceId: string, targetId: string, value?: string|{ [key: string]: any }, name?: string): Graph; children(parentName: string): string|undefined; @@ -67,11 +67,12 @@ export namespace graphlib { } } -export type WeightFn = (edge: EdgeLabel) => number; -export type EdgeFn = (outNodeName: string) => Edge[]; +export type WeightFn = (edge: Edge) => number; +export type EdgeFn = (outNodeName: string) => GraphEdge[]; export interface GraphLabel { - label?: string; + width?: number; + height?: number; compound?: boolean; rankdir?: string; align?: string; @@ -82,8 +83,6 @@ export interface GraphLabel { marginy?: number; acyclicer?: string; ranker?: string; - width?: number; - height?: number; } export interface NodeConfig { @@ -102,13 +101,13 @@ export interface EdgeConfig { export function layout(graph: graphlib.Graph, layout?: GraphLabel&NodeConfig&EdgeConfig): void; -export interface EdgeLabel { +export interface Edge { v: string; w: string; name?: string; } -export interface Edge { +export interface GraphEdge { points: Array<{x: number, y: number}>; [key: string]: any; } From 6b38199523ab99134e89e5a54fa1bbf9583de1cf Mon Sep 17 00:00:00 2001 From: David Newell Date: Wed, 15 Nov 2017 12:56:41 -0500 Subject: [PATCH 06/10] Removing object --- types/dagre/index.d.ts | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/types/dagre/index.d.ts b/types/dagre/index.d.ts index e8f0706cfe..dff86254db 100644 --- a/types/dagre/index.d.ts +++ b/types/dagre/index.d.ts @@ -27,20 +27,20 @@ export namespace graphlib { inEdges(inNodeName: string, outNodeName?: string): Edge[]|undefined; outEdges(outNodeName: string, inNodeName?: string): Edge[]|undefined; removeEdge(outNodeName: string, inNodeName: string): Graph; - setDefaultEdgeLabel(callback: string|(() => string|object)): Graph; + setDefaultEdgeLabel(callback: string|((edge: Edge) => string|Label)): Graph; setEdge(params: Edge, value?: string|{[key: string]: any}): Graph; - setEdge(sourceId: string, targetId: string, value?: string|{ [key: string]: any }, name?: string): Graph; + setEdge(sourceId: string, targetId: string, value?: string|Label, name?: string): Graph; children(parentName: string): string|undefined; hasNode(name: string): boolean; neighbors(name: string): Node[]|undefined; - node(id: string|object): Node; + node(id: string|Label): Node; nodeCount(): number; nodes(): string[]; parent(childName: string): string|undefined; predecessors(name: string): Node[]|undefined; removeNode(name: string): Graph; - setDefaultNodeLabel(callback: string|(() => string|object)): Graph; + setDefaultNodeLabel(callback: string|((nodeId: string) => string|Label)): Graph; setNode(id: string, node: NodeConfig): Graph; setParent(childName: string, parentName: string): void; sources(): Node[]; @@ -48,16 +48,16 @@ export namespace graphlib { } class json { - static read(graph: object): Graph; - static write(graph: Graph): object; + static read(graph: any): Graph; + static write(graph: Graph): any; } class alg { static components(graph: Graph): string[][]; - static dijkstra(graph: Graph, source: string, weightFn?: WeightFn, edgeFn?: EdgeFn): object; - static dijkstraAll(graph: Graph, weightFn?: WeightFn, edgeFn?: EdgeFn): object; + static dijkstra(graph: Graph, source: string, weightFn?: WeightFn, edgeFn?: EdgeFn): any; + static dijkstraAll(graph: Graph, weightFn?: WeightFn, edgeFn?: EdgeFn): any; static findCycles(graph: Graph): string[][]; - static floydWarchall(graph: Graph, weightFn?: WeightFn, edgeFn?: EdgeFn): object; + static floydWarchall(graph: Graph, weightFn?: WeightFn, edgeFn?: EdgeFn): any; static isAcyclic(graph: Graph): boolean; static postorder(graph: Graph, nodeNames: string|string[]): string[]; static preorder(graph: Graph, nodeNames: string|string[]): string[]; @@ -67,6 +67,7 @@ export namespace graphlib { } } +export type Label = {[key: string]: any}; export type WeightFn = (edge: Edge) => number; export type EdgeFn = (outNodeName: string) => GraphEdge[]; From 8d9593b67c540541c3858fe7343b20dbf0d24067 Mon Sep 17 00:00:00 2001 From: David Newell Date: Wed, 15 Nov 2017 12:57:24 -0500 Subject: [PATCH 07/10] Adding sinks function --- types/dagre/index.d.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/types/dagre/index.d.ts b/types/dagre/index.d.ts index dff86254db..1210f2ddd6 100644 --- a/types/dagre/index.d.ts +++ b/types/dagre/index.d.ts @@ -43,6 +43,7 @@ export namespace graphlib { setDefaultNodeLabel(callback: string|((nodeId: string) => string|Label)): Graph; setNode(id: string, node: NodeConfig): Graph; setParent(childName: string, parentName: string): void; + sinks(): Node[]; sources(): Node[]; successors(name: string): Node[]|undefined; } From 21f198290fc0c5110c5c149b3f6269eda7f2d271 Mon Sep 17 00:00:00 2001 From: David Newell Date: Wed, 15 Nov 2017 12:59:03 -0500 Subject: [PATCH 08/10] Lint --- types/dagre/index.d.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/types/dagre/index.d.ts b/types/dagre/index.d.ts index 1210f2ddd6..67574e4ced 100644 --- a/types/dagre/index.d.ts +++ b/types/dagre/index.d.ts @@ -68,7 +68,9 @@ export namespace graphlib { } } -export type Label = {[key: string]: any}; +export interface Label { + [key: string]: any; +} export type WeightFn = (edge: Edge) => number; export type EdgeFn = (outNodeName: string) => GraphEdge[]; From 74f02acb84716e6441de87ddddc0b02b6806f9bc Mon Sep 17 00:00:00 2001 From: David Newell Date: Wed, 15 Nov 2017 13:17:56 -0500 Subject: [PATCH 09/10] Using namespaces --- types/dagre/index.d.ts | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/types/dagre/index.d.ts b/types/dagre/index.d.ts index 67574e4ced..3e9e10908e 100644 --- a/types/dagre/index.d.ts +++ b/types/dagre/index.d.ts @@ -48,23 +48,23 @@ export namespace graphlib { successors(name: string): Node[]|undefined; } - class json { - static read(graph: any): Graph; - static write(graph: Graph): any; + namespace json { + function read(graph: any): Graph; + function write(graph: Graph): any; } - class alg { - static components(graph: Graph): string[][]; - static dijkstra(graph: Graph, source: string, weightFn?: WeightFn, edgeFn?: EdgeFn): any; - static dijkstraAll(graph: Graph, weightFn?: WeightFn, edgeFn?: EdgeFn): any; - static findCycles(graph: Graph): string[][]; - static floydWarchall(graph: Graph, weightFn?: WeightFn, edgeFn?: EdgeFn): any; - static isAcyclic(graph: Graph): boolean; - static postorder(graph: Graph, nodeNames: string|string[]): string[]; - static preorder(graph: Graph, nodeNames: string|string[]): string[]; - static prim(graph: Graph, weightFn?: WeightFn): Graph; - static tarjam(graph: Graph): string[][]; - static topsort(graph: Graph): string[]; + namespace alg { + function components(graph: Graph): string[][]; + function dijkstra(graph: Graph, source: string, weightFn?: WeightFn, edgeFn?: EdgeFn): any; + function dijkstraAll(graph: Graph, weightFn?: WeightFn, edgeFn?: EdgeFn): any; + function findCycles(graph: Graph): string[][]; + function floydWarchall(graph: Graph, weightFn?: WeightFn, edgeFn?: EdgeFn): any; + function isAcyclic(graph: Graph): boolean; + function postorder(graph: Graph, nodeNames: string|string[]): string[]; + function preorder(graph: Graph, nodeNames: string|string[]): string[]; + function prim(graph: Graph, weightFn?: WeightFn): Graph; + function tarjam(graph: Graph): string[][]; + function topsort(graph: Graph): string[]; } } From 85375868a1a55da1e355e775831ec4363f28fbbe Mon Sep 17 00:00:00 2001 From: David Newell Date: Wed, 15 Nov 2017 13:22:06 -0500 Subject: [PATCH 10/10] Typo --- types/dagre/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/dagre/index.d.ts b/types/dagre/index.d.ts index 3e9e10908e..852fe33973 100644 --- a/types/dagre/index.d.ts +++ b/types/dagre/index.d.ts @@ -3,7 +3,7 @@ // Definitions by: Qinfeng Chen // Lisa Vallfors // Pete Vilter -// David Newell +// David Newell // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.2