@aws/pdk
Version:
All documentation is located at: https://aws.github.io/aws-pdk
1,834 lines (1,831 loc) • 188 kB
TypeScript
import { $keywords, $keywordsValidation } from '../utils/index.js';
/**
* Directive indicating which direction the Edge should point.
* @group Attribute Types
*/
type Compass = Compass.values;
/** @hidden */
declare namespace Compass {
type values = Exclude<keyof $values, keyof $exclude | symbol | number>;
interface $values extends $keywords<'n' | 'ne' | 'e' | 'se' | 's' | 'sw' | 'w' | 'nw' | 'c' | '_'> {}
interface $exclude extends $keywordsValidation {}
}
/**
* A value specifying an empty string for resetting some values.
* @group Attribute Types
*/
type Blank = '';
/**
* A double with an optional prefix `'+'`.
*
* @see {@link https://graphviz.gitlab.io/docs/attr-types/addDouble/ addDouble}
* @group Attribute Types
*/
type AddDouble = `+${Double}`;
/**
* Double-precision floating point number.
*
* @see {@link https://graphviz.gitlab.io/docs/attr-types/double/ double}
* @group Attribute Types
*/
type Double = number;
/**
* Port Position
*
* @see {@link https://graphviz.gitlab.io/docs/attr-types/portPos/ portPos}
* @group Attribute Types
*/
type PortPos = `${string}:${Compass}` | Compass;
/**
* A colon-separated list of doubles: `"%f(:%f)*"` where each %f is a double.
*
* @see {@link https://graphviz.gitlab.io/docs/attr-types/doubleList/ doubleList}
* @group Attribute Types
*/
type DoubleList =
| Double
| `${Double}:${Double}`
| `${Double}:${Double}:${Double}`
| `${Double}:${Double}:${Double}:${Double}`
| `${Double}:${Double}:${Double}:${Double}:${Double}`
| `${Double}:${Double}:${Double}:${Double}:${Double}:${Double}`
| `${Double}:${Double}:${Double}:${Double}:${Double}:${Double}:${Double}`
| `${Double}:${Double}:${Double}:${Double}:${Double}:${Double}:${Double}:${Double}`
| `${Double}:${Double}:${Double}:${Double}:${Double}:${Double}:${Double}:${Double}:${Double}`;
/**
* Integer number.
*
* @see {@link https://graphviz.gitlab.io/docs/attr-types/int/ int}
* @group Attribute Types
*/
type Int = number;
/**
* @see {@link https://graphviz.gitlab.io/docs/attr-types/shape/ shape}
* @group Attribute Types
*/
type Shape = string;
/**
* @see {@link https://graphviz.gitlab.io/docs/attr-types/smoothType/ smoothType}
* @group Attribute Types
*/
type SmoothType = SmoothType.values;
/** @hidden */
declare namespace SmoothType {
type values = Exclude<keyof $values, keyof $exclude | symbol | number>;
interface $values
extends $keywords<'none' | 'avg_dist' | 'graph_dist' | 'power_dist' | 'rng' | 'spring' | 'triangle'> {}
interface $exclude extends $keywordsValidation {}
}
/**
* @see {@link https://graphviz.gitlab.io/docs/attr-types/splineType/ splineType}
* @group Attribute Types
*/
type SplineType = SplineType.spline | string;
/** @hidden */
declare namespace SplineType {
type prefix = endp | startp | `${endp}${startp}` | '';
type spline = `${prefix}point ${triple}`;
type triple = `${Point} ${Point} ${Point}`;
type endp = `e,${Double},${Double} `;
type startp = `s,${Double},${Double} `;
}
/**
* @see {@link https://graphviz.gitlab.io/docs/attr-types/startType/ startType}
* @group Attribute Types
*/
type StartType = `${StartType.style}${StartType.seed}`;
/** @hidden */
declare namespace StartType {
type style = Exclude<keyof $style, keyof $exclude>;
interface $style extends $keywords<'regular' | 'self' | 'random'> {}
type seed = number;
interface $exclude extends $keywordsValidation {}
}
/**
* @see {@link https://graphviz.gitlab.io/docs/attr-types/style/ style}
* @group Attribute Types
*/
type Style =
| Style.styleItem
| `${Style.styleItem},${Style.styleItem}`
| `${Style.styleItem},${Style.styleItem},${Style.styleItem}`
| `${Style.styleItem},${Style.styleItem},${Style.styleItem},${Style.styleItem}`;
/** @hidden */
declare namespace Style {
type styleItem = Exclude<keyof $styleItem, keyof $exclude>;
interface $styleItem
extends $keywords<
| 'dashed'
| 'dotted'
| 'solid'
| 'invis'
| 'bold'
| 'tapered'
| 'filled'
| 'striped'
| 'wedged'
| 'diagonals'
| 'rounded'
| 'filled'
| 'striped'
| 'rounded'
| 'radial'
> {}
interface $exclude extends $keywordsValidation {}
}
/**
* @see {@link https://graphviz.gitlab.io/docs/attr-types/viewPort/ viewPort}
* @group Attribute Types
*/
type ViewPort = `${Double},${Double},${Double},${Double},${Double}` | `${Double},${Double},${Double},${string}`;
/**
* list of strings separated by characters from the layersep attribute (by default, colons, tabs or spaces),
* defining layer names and implicitly numbered 1,2,…
*
* @see {@link https://graphviz.gitlab.io/docs/attr-types/layerList/ layerList}
* @group Attribute Types
*/
type LayerList = string;
/**
* specifies a list of layers defined by the layers attribute.
*
* @see {@link https://graphviz.gitlab.io/docs/attr-types/layerRange/ layerRange}
* @group Attribute Types
*/
type LayerRange = string;
/**
* String with Escape Sequences
*
* A string allowing escape sequences which are replaced according to the context.
*
* For node attributes, the substring `"\N"` is replaced by the name of the node,
* and the substring `"\G"` by the name of the graph.
*
* For graph or cluster attributes, the substring `"\G"` is replaced by the name of the graph or cluster.
*
* For edge attributes, the substring `"\E"` is replaced by the name of the edge, the substring `"\G"` is replaced by the name of the graph or cluster,
* and the substrings `"\T"` and `"\H"` by the names of the tail and head nodes,
* respectively.
*
* The name of an edge is the string formed from the name of the tail node,
* the appropriate edge operator (`"--"` or `"->"`) and the name of the head node.
*
* In all cases, the substring `"\L"` is replaced by the object's label attribute.
* @see {@link https://graphviz.gitlab.io/docs/attr-types/escString/ escString}
* @group Attribute Types
*/
type EscString = string;
/**
* @see {@link https://graphviz.org/doc/info/shapes.html#html HTML-Like Labels}
* @group Attribute Types
*/
type HTMLLikeLabel = `<${string}>`;
/**
* An escString or an HTML label.
*
* @see {@link https://graphviz.gitlab.io/docs/attr-types/lblString/ lblString}
* @group Attribute Types
*/
type LblString = HTMLLikeLabel | EscString;
/**
* `"%f,%f('!')?"` representing the point (x,y).
*
* The optional `'!'` indicates the node position should not change (input-only).
*
* If dim=3, point may also have the format `"%f,%f,%f('!')?"` to represent the point (x,y,z).
* @group Attribute Types
*/
type Point = Point.position | `${Point.position}!`;
/** @hidden */
declare namespace Point {
type position =
| `${Double},${Double}`
| `${Double},${Double},${Double}`
| `${Double},${Double},${Double},${Double},${Double}`
| `${Double},${Double},${Double},${Double},${Double},${Double}`
| `${Double},${Double},${Double},${Double},${Double},${Double},${Double}`
| `${Double},${Double},${Double},${Double},${Double},${Double},${Double},${Double}`
| `${Double},${Double},${Double},${Double},${Double},${Double},${Double},${Double},${Double}`
| `${Double},${Double},${Double},${Double},${Double},${Double},${Double},${Double},${Double},${number}`;
}
/**
* A point with an optional prefix `'+'`.
*
* @see {@link https://graphviz.gitlab.io/docs/attr-types/addPoint/ addPoint}
* @group Attribute Types
*/
type AddPoint = `+${Point}`;
/**
* @see {@link https://graphviz.gitlab.io/docs/attr-types/pointList/ pointList}
* @group Attribute Types
*/
type PointList = Point | `${Point} ${Point}` | `${Point} ${Point} ${Point}` | `${Point} ${Point} ${Point} ${Point}`;
/**
* These specify the order in which nodes and edges are drawn in concrete output.
*
* - The default `"breadthfirst"` is the simplest, but when the graph layout does not avoid edge-node overlap, this mode will sometimes have edges drawn over nodes and sometimes on top of nodes.
* - If the mode `"nodesfirst"` is chosen, all nodes are drawn first, followed by the edges. This guarantees an edge-node overlap will not be mistaken for an edge ending at a node.
* - On the other hand, usually for aesthetic reasons, it may be desirable that all edges appear beneath nodes, even if the resulting drawing is ambiguous. This can be achieved by choosing `"edgesfirst"`.
*
* @see {@link https://graphviz.gitlab.io/docs/attr-types/outputMode/ outputMode}
* @group Attribute Types
*/
type OutputMode = OutputMode.values;
/** @hidden */
declare namespace OutputMode {
type values = Exclude<keyof $values, keyof $exclude | symbol | number>;
interface $values extends $keywords<'breadthfirst' | 'nodesfirst' | 'edgesfirst'> {}
interface $exclude extends $keywordsValidation {}
}
/**
* @see {@link https://graphviz.org/docs/attr-types/packMode/ packMode}
* @group Attribute Types
*/
type PackMode = keyof PickMode.$values | `array${string}`;
/** @hidden */
declare namespace PickMode {
type values = Exclude<keyof $values, keyof $exclude | symbol | number>;
interface $values extends $keywords<'node' | 'clust' | 'graph'> {}
interface $exclude extends $keywordsValidation {}
}
/**
* Using `"fast"` gives about a 2-4 times overall speedup compared with `"normal"`,
* though layout quality can suffer a little.
*
* @see {@link https://graphviz.gitlab.io/docs/attr-types/quadType/ quadType}
* @group Attribute Types
*/
type QuadType = QuadType.values;
/** @hidden */
declare namespace QuadType {
type values = Exclude<keyof $values, keyof $exclude | symbol | number>;
interface $values extends $keywords<'normal' | 'fast' | 'none'> {}
interface $exclude extends $keywordsValidation {}
}
/**
* Rank Direction
*
* Corresponding to directed graphs drawn from top to bottom,
* from left to right, from bottom to top, and from right to left, respectively.
*
* @see {@link https://graphviz.gitlab.io/docs/attr-types/rankdir/ rankdir}
* @group Attribute Types
*/
type Rankdir = 'TB' | 'BT' | 'LR' | 'RL';
/**
* @see {@link https://graphviz.gitlab.io/docs/attr-types/rankType/ rankType}
* @group Attribute Types
*/
type RankType = RankType.values;
/** @hidden */
declare namespace RankType {
type values = Exclude<keyof $values, keyof $exclude | symbol | number>;
interface $values extends $keywords<'same' | 'min' | 'source' | 'max' | 'sink'> {}
interface $exclude extends $keywordsValidation {}
}
/**
* Which rank to move floating (loose) nodes to
*
* Valid options:
* - "min": Move floating (loose) nodes to minimum rank.
* - "max": Move floating (loose) nodes to maximum rank.
* - Otherwise, floating nodes are placed anywhere.
*
* Despite the name TBbalance ("Top-Bottom Balance"), this also works with left-right ranks, e.g. rankdir=LR.
*
* @see {@link https://graphviz.org/docs/attrs/TBbalance/ TBbalance}
* @group Attribute Types
*/
type TBbalanceType = TBbalanceType.values;
/** @hidden */
declare namespace TBbalanceType {
type values = Exclude<keyof $values, keyof $exclude | symbol | number>;
interface $values extends $keywords<'min' | 'max'> {}
interface $exclude extends $keywordsValidation {}
}
/**
* `"%f,%f,%f,%f"`
*
* The rectangle `llx,lly,urx,ury` gives the coordinates, in points,
* of the lower-left corner `(llx,lly)` and the upper-right corner `(urx,ury)`.
*
* @see {@link https://graphviz.gitlab.io/docs/attr-types/rect/ rect}
* @group Attribute Types
*/
type Rect = `${Double},${Double},${Double},${Double}`;
/**
* The examples above show a set of commonly used arrow shapes.
*
* There is a grammar of arrow shapes which can be used to describe a collection of 3,111,696 arrow
* combinations of the 42 variations of the primitive set of 11 arrows.
*
* @see {@link https://graphviz.org/docs/attr-types/arrowType/ arrowType}
* @group Attribute Types
*/
type ArrowType = ArrowType.aname | `${ArrowType.aname}${ArrowType.aname}`;
/** @hidden */
declare namespace ArrowType {
type shape = keyof $shape;
interface $shape
extends $keywords<
'box' | 'crow' | 'curve' | 'icurve' | 'diamond' | 'dot' | 'inv' | 'none' | 'normal' | 'tee' | 'vee'
> {}
type side = 'l' | 'r';
type modifiers = side | 'o' | `o${side}`;
type aname = shape | `${modifiers}${shape}`;
}
/**
* @see {@link https://graphviz.gitlab.io/docs/attr-types/clusterMode/ clusterMode}
* @group Attribute Types
*/
type ClusterMode = ClusterMode.values;
declare namespace ClusterMode {
type values = Exclude<keyof $values, keyof $exclude | symbol | number>;
interface $values extends $keywords<'local' | 'global' | 'none'> {}
interface $exclude extends $keywordsValidation {}
}
/**
* @see {@link https://graphviz.gitlab.io/docs/attr-types/color/ color}
* @group Attribute Types
*/
type Color = Color.RGB_RGBA | Color.HSV | Color.ColorName | number;
/** @hidden */
declare namespace Color {
/**
* `"#%2x%2x%2x"` Red-Green-Blue (RGB)
*
* `"#%2x%2x%2x%2x"` Red-Green-Blue-Alpha (RGBA)
* @note A type that is too complicated to express in TypeScript.
*/
type RGB_RGBA = `#${string}`;
/**
* Hue-Saturation-Value (HSV) 0.0 <= H,S,V <= 1.0
*/
type HSV = `${number}+${number}+${number}`;
/**
* Color names are resolved in the context of a color scheme.
*
* Graphviz currently supports the X11 scheme, the SVG scheme, and the Brewer schemes, with X11 being the default.
* @see {@link https://graphviz.org/doc/info/colors.html Color Names}
*/
type ColorName = Exclude<keyof $colors, keyof $exclude>;
interface $colors
extends $keywords<
| 'aliceblue'
| 'antiquewhite'
| 'antiquewhite1'
| 'antiquewhite2'
| 'antiquewhite3'
| 'antiquewhite4'
| 'aqua'
| 'aquamarine'
| 'aquamarine1'
| 'aquamarine2'
| 'aquamarine3'
| 'aquamarine4'
| 'azure'
| 'azure1'
| 'azure2'
| 'azure3'
| 'azure4'
| 'beige'
| 'bisque'
| 'bisque1'
| 'bisque2'
| 'bisque3'
| 'bisque4'
| 'black'
| 'blanchedalmond'
| 'blue'
| 'blue1'
| 'blue2'
| 'blue3'
| 'blue4'
| 'blueviolet'
| 'brown'
| 'brown1'
| 'brown2'
| 'brown3'
| 'brown4'
| 'burlywood'
| 'burlywood1'
| 'burlywood2'
| 'burlywood3'
| 'burlywood4'
| 'cadetblue'
| 'cadetblue1'
| 'cadetblue2'
| 'cadetblue3'
| 'cadetblue4'
| 'chartreuse'
| 'chartreuse1'
| 'chartreuse2'
| 'chartreuse3'
| 'chartreuse4'
| 'chocolate'
| 'chocolate1'
| 'chocolate2'
| 'chocolate3'
| 'chocolate4'
| 'coral'
| 'coral1'
| 'coral2'
| 'coral3'
| 'coral4'
| 'cornflowerblue'
| 'cornsilk'
| 'cornsilk1'
| 'cornsilk2'
| 'cornsilk3'
| 'cornsilk4'
| 'crimson'
| 'cyan'
| 'cyan1'
| 'cyan2'
| 'cyan3'
| 'cyan4'
| 'darkblue'
| 'darkcyan'
| 'darkgoldenrod'
| 'darkgoldenrod1'
| 'darkgoldenrod2'
| 'darkgoldenrod3'
| 'darkgoldenrod4'
| 'darkgray'
| 'darkgreen'
| 'darkgrey'
| 'darkkhaki'
| 'darkmagenta'
| 'darkolivegreen'
| 'darkolivegreen1'
| 'darkolivegreen2'
| 'darkolivegreen3'
| 'darkolivegreen4'
| 'darkorange'
| 'darkorange1'
| 'darkorange2'
| 'darkorange3'
| 'darkorange4'
| 'darkorchid'
| 'darkorchid1'
| 'darkorchid2'
| 'darkorchid3'
| 'darkorchid4'
| 'darkred'
| 'darksalmon'
| 'darkseagreen'
| 'darkseagreen1'
| 'darkseagreen2'
| 'darkseagreen3'
| 'darkseagreen4'
| 'darkslateblue'
| 'darkslategray'
| 'darkslategray1'
| 'darkslategray2'
| 'darkslategray3'
| 'darkslategray4'
| 'darkslategrey'
| 'darkturquoise'
| 'darkviolet'
| 'deeppink'
| 'deeppink1'
| 'deeppink2'
| 'deeppink3'
| 'deeppink4'
| 'deepskyblue'
| 'deepskyblue1'
| 'deepskyblue2'
| 'deepskyblue3'
| 'deepskyblue4'
| 'dimgray'
| 'dimgrey'
| 'dodgerblue'
| 'dodgerblue1'
| 'dodgerblue2'
| 'dodgerblue3'
| 'dodgerblue4'
| 'firebrick'
| 'firebrick1'
| 'firebrick2'
| 'firebrick3'
| 'firebrick4'
| 'floralwhite'
| 'forestgreen'
| 'fuchsia'
| 'gainsboro'
| 'ghostwhite'
| 'gold'
| 'gold1'
| 'gold2'
| 'gold3'
| 'gold4'
| 'goldenrod'
| 'goldenrod1'
| 'goldenrod2'
| 'goldenrod3'
| 'goldenrod4'
| 'gray'
| 'gray0'
| 'gray1'
| 'gray10'
| 'gray100'
| 'gray11'
| 'gray12'
| 'gray13'
| 'gray14'
| 'gray15'
| 'gray16'
| 'gray17'
| 'gray18'
| 'gray19'
| 'gray2'
| 'gray20'
| 'gray21'
| 'gray22'
| 'gray23'
| 'gray24'
| 'gray25'
| 'gray26'
| 'gray27'
| 'gray28'
| 'gray29'
| 'gray3'
| 'gray30'
| 'gray31'
| 'gray32'
| 'gray33'
| 'gray34'
| 'gray35'
| 'gray36'
| 'gray37'
| 'gray38'
| 'gray39'
| 'gray4'
| 'gray40'
| 'gray41'
| 'gray42'
| 'gray43'
| 'gray44'
| 'gray45'
| 'gray46'
| 'gray47'
| 'gray48'
| 'gray49'
| 'gray5'
| 'gray50'
| 'gray51'
| 'gray52'
| 'gray53'
| 'gray54'
| 'gray55'
| 'gray56'
| 'gray57'
| 'gray58'
| 'gray59'
| 'gray6'
| 'gray60'
| 'gray61'
| 'gray62'
| 'gray63'
| 'gray64'
| 'gray65'
| 'gray66'
| 'gray67'
| 'gray68'
| 'gray69'
| 'gray7'
| 'gray70'
| 'gray71'
| 'gray72'
| 'gray73'
| 'gray74'
| 'gray75'
| 'gray76'
| 'gray77'
| 'gray78'
| 'gray79'
| 'gray8'
| 'gray80'
| 'gray81'
| 'gray82'
| 'gray83'
| 'gray84'
| 'gray85'
| 'gray86'
| 'gray87'
| 'gray88'
| 'gray89'
| 'gray9'
| 'gray90'
| 'gray91'
| 'gray92'
| 'gray93'
| 'gray94'
| 'gray95'
| 'gray96'
| 'gray97'
| 'gray98'
| 'gray99'
| 'green'
| 'green1'
| 'green2'
| 'green3'
| 'green4'
| 'greenyellow'
| 'grey'
| 'grey0'
| 'grey1'
| 'grey10'
| 'grey100'
| 'grey11'
| 'grey12'
| 'grey13'
| 'grey14'
| 'grey15'
| 'grey16'
| 'grey17'
| 'grey18'
| 'grey19'
| 'grey2'
| 'grey20'
| 'grey21'
| 'grey22'
| 'grey23'
| 'grey24'
| 'grey25'
| 'grey26'
| 'grey27'
| 'grey28'
| 'grey29'
| 'grey3'
| 'grey30'
| 'grey31'
| 'grey32'
| 'grey33'
| 'grey34'
| 'grey35'
| 'grey36'
| 'grey37'
| 'grey38'
| 'grey39'
| 'grey4'
| 'grey40'
| 'grey41'
| 'grey42'
| 'grey43'
| 'grey44'
| 'grey45'
| 'grey46'
| 'grey47'
| 'grey48'
| 'grey49'
| 'grey5'
| 'grey50'
| 'grey51'
| 'grey52'
| 'grey53'
| 'grey54'
| 'grey55'
| 'grey56'
| 'grey57'
| 'grey58'
| 'grey59'
| 'grey6'
| 'grey60'
| 'grey61'
| 'grey62'
| 'grey63'
| 'grey64'
| 'grey65'
| 'grey66'
| 'grey67'
| 'grey68'
| 'grey69'
| 'grey7'
| 'grey70'
| 'grey71'
| 'grey72'
| 'grey73'
| 'grey74'
| 'grey75'
| 'grey76'
| 'grey77'
| 'grey78'
| 'grey79'
| 'grey8'
| 'grey80'
| 'grey81'
| 'grey82'
| 'grey83'
| 'grey84'
| 'grey85'
| 'grey86'
| 'grey87'
| 'grey88'
| 'grey89'
| 'grey9'
| 'grey90'
| 'grey91'
| 'grey92'
| 'grey93'
| 'grey94'
| 'grey95'
| 'grey96'
| 'grey97'
| 'grey98'
| 'grey99'
| 'honeydew'
| 'honeydew1'
| 'honeydew2'
| 'honeydew3'
| 'honeydew4'
| 'hotpink'
| 'hotpink1'
| 'hotpink2'
| 'hotpink3'
| 'hotpink4'
| 'indianred'
| 'indianred1'
| 'indianred2'
| 'indianred3'
| 'indianred4'
| 'indigo'
| 'invis'
| 'ivory'
| 'ivory1'
| 'ivory2'
| 'ivory3'
| 'ivory4'
| 'khaki'
| 'khaki1'
| 'khaki2'
| 'khaki3'
| 'khaki4'
| 'lavender'
| 'lavenderblush'
| 'lavenderblush1'
| 'lavenderblush2'
| 'lavenderblush3'
| 'lavenderblush4'
| 'lawngreen'
| 'lemonchiffon'
| 'lemonchiffon1'
| 'lemonchiffon2'
| 'lemonchiffon3'
| 'lemonchiffon4'
| 'lightblue'
| 'lightblue1'
| 'lightblue2'
| 'lightblue3'
| 'lightblue4'
| 'lightcoral'
| 'lightcyan'
| 'lightcyan1'
| 'lightcyan2'
| 'lightcyan3'
| 'lightcyan4'
| 'lightgoldenrod'
| 'lightgoldenrod1'
| 'lightgoldenrod2'
| 'lightgoldenrod3'
| 'lightgoldenrod4'
| 'lightgoldenrodyellow'
| 'lightgray'
| 'lightgreen'
| 'lightgrey'
| 'lightpink'
| 'lightpink1'
| 'lightpink2'
| 'lightpink3'
| 'lightpink4'
| 'lightsalmon'
| 'lightsalmon1'
| 'lightsalmon2'
| 'lightsalmon3'
| 'lightsalmon4'
| 'lightseagreen'
| 'lightskyblue'
| 'lightskyblue1'
| 'lightskyblue2'
| 'lightskyblue3'
| 'lightskyblue4'
| 'lightslateblue'
| 'lightslategray'
| 'lightslategrey'
| 'lightsteelblue'
| 'lightsteelblue1'
| 'lightsteelblue2'
| 'lightsteelblue3'
| 'lightsteelblue4'
| 'lightyellow'
| 'lightyellow1'
| 'lightyellow2'
| 'lightyellow3'
| 'lightyellow4'
| 'lime'
| 'limegreen'
| 'linen'
| 'magenta'
| 'magenta1'
| 'magenta2'
| 'magenta3'
| 'magenta4'
| 'maroon'
| 'maroon1'
| 'maroon2'
| 'maroon3'
| 'maroon4'
| 'mediumaquamarine'
| 'mediumblue'
| 'mediumorchid'
| 'mediumorchid1'
| 'mediumorchid2'
| 'mediumorchid3'
| 'mediumorchid4'
| 'mediumpurple'
| 'mediumpurple1'
| 'mediumpurple2'
| 'mediumpurple3'
| 'mediumpurple4'
| 'mediumseagreen'
| 'mediumslateblue'
| 'mediumspringgreen'
| 'mediumturquoise'
| 'mediumvioletred'
| 'midnightblue'
| 'mintcream'
| 'mistyrose'
| 'mistyrose1'
| 'mistyrose2'
| 'mistyrose3'
| 'mistyrose4'
| 'moccasin'
| 'navajowhite'
| 'navajowhite1'
| 'navajowhite2'
| 'navajowhite3'
| 'navajowhite4'
| 'navy'
| 'navyblue'
| 'none'
| 'oldlace'
| 'olive'
| 'olivedrab'
| 'olivedrab1'
| 'olivedrab2'
| 'olivedrab3'
| 'olivedrab4'
| 'orange'
| 'orange1'
| 'orange2'
| 'orange3'
| 'orange4'
| 'orangered'
| 'orangered1'
| 'orangered2'
| 'orangered3'
| 'orangered4'
| 'orchid'
| 'orchid1'
| 'orchid2'
| 'orchid3'
| 'orchid4'
| 'palegoldenrod'
| 'palegreen'
| 'palegreen1'
| 'palegreen2'
| 'palegreen3'
| 'palegreen4'
| 'paleturquoise'
| 'paleturquoise1'
| 'paleturquoise2'
| 'paleturquoise3'
| 'paleturquoise4'
| 'palevioletred'
| 'palevioletred1'
| 'palevioletred2'
| 'palevioletred3'
| 'palevioletred4'
| 'papayawhip'
| 'peachpuff'
| 'peachpuff1'
| 'peachpuff2'
| 'peachpuff3'
| 'peachpuff4'
| 'peru'
| 'pink'
| 'pink1'
| 'pink2'
| 'pink3'
| 'pink4'
| 'plum'
| 'plum1'
| 'plum2'
| 'plum3'
| 'plum4'
| 'powderblue'
| 'purple'
| 'purple1'
| 'purple2'
| 'purple3'
| 'purple4'
| 'rebeccapurple'
| 'red'
| 'red1'
| 'red2'
| 'red3'
| 'red4'
| 'rosybrown'
| 'rosybrown1'
| 'rosybrown2'
| 'rosybrown3'
| 'rosybrown4'
| 'royalblue'
| 'royalblue1'
| 'royalblue2'
| 'royalblue3'
| 'royalblue4'
| 'saddlebrown'
| 'salmon'
| 'salmon1'
| 'salmon2'
| 'salmon3'
| 'salmon4'
| 'sandybrown'
| 'seagreen'
| 'seagreen1'
| 'seagreen2'
| 'seagreen3'
| 'seagreen4'
| 'seashell'
| 'seashell1'
| 'seashell2'
| 'seashell3'
| 'seashell4'
| 'sienna'
| 'sienna1'
| 'sienna2'
| 'sienna3'
| 'sienna4'
| 'silver'
| 'skyblue'
| 'skyblue1'
| 'skyblue2'
| 'skyblue3'
| 'skyblue4'
| 'slateblue'
| 'slateblue1'
| 'slateblue2'
| 'slateblue3'
| 'slateblue4'
| 'slategray'
| 'slategray1'
| 'slategray2'
| 'slategray3'
| 'slategray4'
| 'slategrey'
| 'snow'
| 'snow1'
| 'snow2'
| 'snow3'
| 'snow4'
| 'springgreen'
| 'springgreen1'
| 'springgreen2'
| 'springgreen3'
| 'springgreen4'
| 'steelblue'
| 'steelblue1'
| 'steelblue2'
| 'steelblue3'
| 'steelblue4'
| 'tan'
| 'tan1'
| 'tan2'
| 'tan3'
| 'tan4'
| 'teal'
| 'thistle'
| 'thistle1'
| 'thistle2'
| 'thistle3'
| 'thistle4'
| 'tomato'
| 'tomato1'
| 'tomato2'
| 'tomato3'
| 'tomato4'
| 'transparent'
| 'turquoise'
| 'turquoise1'
| 'turquoise2'
| 'turquoise3'
| 'turquoise4'
| 'violet'
| 'violetred'
| 'violetred1'
| 'violetred2'
| 'violetred3'
| 'violetred4'
| 'webgray'
| 'webgreen'
| 'webgrey'
| 'webmaroon'
| 'webpurple'
| 'wheat'
| 'wheat1'
| 'wheat2'
| 'wheat3'
| 'wheat4'
| 'white'
| 'whitesmoke'
| 'x11gray'
| 'x11green'
| 'x11grey'
| 'x11maroon'
| 'x11purple'
| 'yellow'
| 'yellow1'
| 'yellow2'
| 'yellow3'
| 'yellow4'
| 'yellowgreen'
| 'aliceblue'
| 'antiquewhite'
| 'aqua'
| 'aquamarine'
| 'azure'
| 'beige'
| 'bisque'
| 'black'
| 'blanchedalmond'
| 'blue'
| 'blueviolet'
| 'brown'
| 'burlywood'
| 'cadetblue'
| 'chartreuse'
| 'chocolate'
| 'coral'
| 'cornflowerblue'
| 'cornsilk'
| 'crimson'
| 'cyan'
| 'darkblue'
| 'darkcyan'
| 'darkgoldenrod'
| 'darkgray'
| 'darkgreen'
| 'darkgrey'
| 'darkkhaki'
| 'darkmagenta'
| 'darkolivegreen'
| 'darkorange'
| 'darkorchid'
| 'darkred'
| 'darksalmon'
| 'darkseagreen'
| 'darkslateblue'
| 'darkslategray'
| 'darkslategrey'
| 'darkturquoise'
| 'darkviolet'
| 'deeppink'
| 'deepskyblue'
| 'dimgray'
| 'dimgrey'
| 'dodgerblue'
| 'firebrick'
| 'floralwhite'
| 'forestgreen'
| 'fuchsia'
| 'gainsboro'
| 'ghostwhite'
| 'gold'
| 'goldenrod'
| 'gray'
| 'grey'
| 'green'
| 'greenyellow'
| 'honeydew'
| 'hotpink'
| 'indianred'
| 'indigo'
| 'ivory'
| 'khaki'
| 'lavender'
| 'lavenderblush'
| 'lawngreen'
| 'lemonchiffon'
| 'lightblue'
| 'lightcoral'
| 'lightcyan'
| 'lightgoldenrodyellow'
| 'lightgray'
| 'lightgreen'
| 'lightgrey'
| 'lightpink'
| 'lightsalmon'
| 'lightseagreen'
| 'lightskyblue'
| 'lightslategray'
| 'lightslategrey'
| 'lightsteelblue'
| 'lightyellow'
| 'lime'
| 'limegreen'
| 'linen'
| 'magenta'
| 'maroon'
| 'mediumaquamarine'
| 'mediumblue'
| 'mediumorchid'
| 'mediumpurple'
| 'mediumseagreen'
| 'mediumslateblue'
| 'mediumspringgreen'
| 'mediumturquoise'
| 'mediumvioletred'
| 'midnightblue'
| 'mintcream'
| 'mistyrose'
| 'moccasin'
| 'navajowhite'
| 'navy'
| 'oldlace'
| 'olive'
| 'olivedrab'
| 'orange'
| 'orangered'
| 'orchid'
| 'palegoldenrod'
| 'palegreen'
| 'paleturquoise'
| 'palevioletred'
| 'papayawhip'
| 'peachpuff'
| 'peru'
| 'pink'
| 'plum'
| 'powderblue'
| 'purple'
| 'red'
| 'rosybrown'
| 'royalblue'
| 'saddlebrown'
| 'salmon'
| 'sandybrown'
| 'seagreen'
| 'seashell'
| 'sienna'
| 'silver'
| 'skyblue'
| 'slateblue'
| 'slategray'
| 'slategrey'
| 'snow'
| 'springgreen'
| 'steelblue'
| 'tan'
| 'teal'
| 'thistle'
| 'tomato'
| 'turquoise'
| 'violet'
| 'wheat'
| 'white'
| 'whitesmoke'
| 'yellow'
| 'yellowgreen'
> {}
interface $exclude extends $keywordsValidation {}
}
/**
* A colon-separated list of weighted color values: WC(:WC)* where each WC has the form C(;F)? with C a color value and the optional F a floating-point number, 0 ≤ F ≤ 1.
*
* The sum of the floating-point numbers in a colorList must sum to at most 1.
*
* @note A type that is too complicated to express in TypeScript.
*
* @see {@link https://graphviz.gitlab.io/docs/attr-types/colorList/}
* @group Attribute Types
*/
type ColorList = string;
/**
* Direction Type
*
* @see {@link https://graphviz.gitlab.io/docs/attr-types/dirType/ dirType}
* @group Attribute Types
*/
type DirType = DirType.values;
/** @hidden */
declare namespace DirType {
type values = Exclude<keyof $values, keyof $exclude | symbol | number>;
interface $values extends $keywords<'forward' | 'back' | 'both' | 'none'> {}
interface $exclude extends $keywordsValidation {}
}
/**
* Page Direction
*
* @see {@link https://graphviz.org/docs/attr-types/pagedir/ pagedir}
* @group Attribute Types
*/
type Pagedir = `${Pagedir.TB}${Pagedir.RL}`;
/** @hidden */
declare namespace Pagedir {
type TB = 'T' | 'B';
type RL = 'R' | 'L';
}
/**
* Attribute types available for edges.
* @group Attribute
*/
type EdgeAttributeKey = EdgeAttributeKey.values;
/** @hidden */
declare namespace EdgeAttributeKey {
type values = Exclude<keyof $values, keyof $exclude | symbol | number>;
interface $values
extends $keywords<
| 'URL'
| 'arrowhead'
| 'arrowsize'
| 'arrowtail'
| 'color'
| 'colorscheme'
| 'comment'
| 'constraint'
| 'decorate'
| 'dir'
| 'edgeURL'
| 'edgehref'
| 'edgetarget'
| 'edgetooltip'
| 'fillcolor'
| 'fontcolor'
| 'fontname'
| 'fontsize'
| 'headURL'
| 'head_lp'
| 'headclip'
| 'headhref'
| 'headlabel'
| 'headport'
| 'headtarget'
| 'headtooltip'
| 'href'
| 'id'
| 'label'
| 'labelURL'
| 'labelangle'
| 'labeldistance'
| 'labelfloat'
| 'labelfontcolor'
| 'labelfontname'
| 'labelfontsize'
| 'labelhref'
| 'labeltarget'
| 'labeltooltip'
| 'layer'
| 'len'
| 'lhead'
| 'lp'
| 'ltail'
| 'minlen'
| 'nojustify'
| 'penwidth'
| 'pos'
| 'samehead'
| 'sametail'
| 'showboxes'
| 'style'
| 'tailURL'
| 'tail_lp'
| 'tailclip'
| 'tailhref'
| 'taillabel'
| 'tailport'
| 'tailtarget'
| 'tailtooltip'
| 'target'
| 'tooltip'
| 'weight'
| 'xlabel'
| 'xlp'
| 'class'
> {}
interface $exclude extends $keywordsValidation {}
}
/**
* Attribute types available for nodes.
* @group Attribute
*/
type NodeAttributeKey = NodeAttributeKey.values;
/** @hidden */
declare namespace NodeAttributeKey {
type values = Exclude<keyof $values, keyof $exclude | symbol | number>;
interface $values
extends $keywords<
| 'URL'
| 'area'
| 'color'
| 'colorscheme'
| 'comment'
| 'distortion'
| 'fillcolor'
| 'fixedsize'
| 'fontcolor'
| 'fontname'
| 'fontsize'
| 'gradientangle'
| 'group'
| 'height'
| 'href'
| 'id'
| 'image'
| 'imagepos'
| 'imagescale'
| 'label'
| 'labelloc'
| 'layer'
| 'margin'
| 'nojustify'
| 'ordering'
| 'orientation'
| 'penwidth'
| 'peripheries'
| 'pin'
| 'pos'
| 'rects'
| 'regular'
| 'root'
| 'samplepoints'
| 'shape'
| 'shapefile'
| 'showboxes'
| 'sides'
| 'skew'
| 'sortv'
| 'style'
| 'target'
| 'tooltip'
| 'vertices'
| 'width'
| 'xlabel'
| 'xlp'
| 'z'
| 'class'
> {}
interface $exclude extends $keywordsValidation {}
}
/**
* Attribute types available for graph.
* @group Attribute
*/
type GraphAttributeKey = GraphAttributeKey.values;
/** @hidden */
declare namespace GraphAttributeKey {
type values = Exclude<keyof $values, keyof $exclude | symbol | number>;
interface $values
extends $keywords<
| 'Damping'
| 'K'
| 'URL'
| '_background'
| 'bb'
| 'bgcolor'
| 'center'
| 'charset'
| 'clusterrank'
| 'colorscheme'
| 'comment'
| 'compound'
| 'concentrate'
| 'defaultdist'
| 'dim'
| 'dimen'
| 'diredgeconstraints'
| 'dpi'
| 'epsilon'
| 'esep'
| 'fontcolor'
| 'fontname'
| 'fontnames'
| 'fontpath'
| 'fontsize'
| 'forcelabels'
| 'gradientangle'
| 'href'
| 'id'
| 'imagepath'
| 'inputscale'
| 'label'
| 'label_scheme'
| 'labeljust'
| 'labelloc'
| 'landscape'
| 'layerlistsep'
| 'layers'
| 'layerselect'
| 'layersep'
| 'layout'
| 'levels'
| 'levelsgap'
| 'lheight'
| 'lp'
| 'lwidth'
| 'margin'
| 'maxiter'
| 'mclimit'
| 'mindist'
| 'mode'
| 'model'
| 'mosek'
| 'newrank'
| 'nodesep'
| 'nojustify'
| 'normalize'
| 'notranslate'
| 'nslimit'
| 'nslimit1'
| 'ordering'
| 'orientation'
| 'outputorder'
| 'overlap'
| 'overlap_scaling'
| 'overlap_shrink'
| 'pack'
| 'packmode'
| 'pad'
| 'page'
| 'pagedir'
| 'quadtree'
| 'quantum'
| 'rankdir'
| 'ranksep'
| 'ratio'
| 'remincross'
| 'repulsiveforce'
| 'resolution'
| 'root'
| 'rotate'
| 'rotation'
| 'scale'
| 'searchsize'
| 'sep'
| 'showboxes'
| 'size'
| 'smoothing'
| 'sortv'
| 'splines'
| 'start'
| 'style'
| 'stylesheet'
| 'target'
| 'truecolor'
| 'viewport'
| 'voro_margin'
| 'xdotversion'
| 'class'
| 'TBbalance'
> {}
interface $exclude extends $keywordsValidation {}
}
/**
* Attribute types available for subgraph.
* @group Attribute
*/
type SubgraphAttributeKey = SubgraphAttributeKey.values;
/** @hidden */
declare namespace SubgraphAttributeKey {
type values = Exclude<keyof $values, keyof $exclude | symbol | number>;
interface $values extends $keywords<'rank'> {}
interface $exclude extends $keywordsValidation {}
}
/**
* Attribute types available for cluster subgraph.
* @group Attribute
*/
type ClusterSubgraphAttributeKey = ClusterSubgraphAttributeKey.values;
/** @hidden */
declare namespace ClusterSubgraphAttributeKey {
type values = Exclude<keyof $values, keyof $exclude | symbol | number>;
interface $values
extends $keywords<
| 'K'
| 'URL'
| 'area'
| 'bgcolor'
| 'color'
| 'colorscheme'
| 'fillcolor'
| 'fontcolor'
| 'fontname'
| 'fontsize'
| 'gradientangle'
| 'href'
| 'id'
| 'label'
| 'labeljust'
| 'labelloc'
| 'layer'
| 'lheight'
| 'lp'
| 'lwidth'
| 'margin'
| 'nojustify'
| 'pencolor'
| 'penwidth'
| 'peripheries'
| 'sortv'
| 'style'
| 'target'
| 'tooltip'
| 'class'
> {}
interface $exclude extends $keywordsValidation {}
}
/**
* Attribute types.
* @group Attribute
*/
type AttributeKey =
| NodeAttributeKey
| EdgeAttributeKey
| GraphAttributeKey
| SubgraphAttributeKey
| ClusterSubgraphAttributeKey;
/**
* This type represents an Attribute, which is a key-value mapping of an {@link AttributeKey} to a value.
*
* @param T The {@link AttributeKey} to be mapped to a value.
* @group Attribute
*/
type Attribute<T extends AttributeKey> = Attribute.types[T];
declare namespace Attribute {
type keys = Omit<$keys, keyof $exclude | symbol | number>;
type types = Omit<$types, keyof $exclude | symbol | number>;
/** @hidden */
interface $keys extends $keywords<AttributeKey> {}
interface $exclude extends $keywordsValidation {}
/**
* @group Attribute
*/
interface $keys {
/**
* Factor damping force motions.
* On each iteration, a nodes movement is limited to this factor of its potential motion.
* By being less than 1.0, the system tends to ``cool'', thereby preventing cycling.
*
* @see {@link https://graphviz.org/docs/attrs/Damping/ Node, Edge and Graph Attributes#Damping}
* @graphvizType {@link https://graphviz.org/docs/attr-types/double/ double}
* @graphvizDefault 0.99
* @graphvizMinimum 0
* @graphvizNotes neato only
* @graphvizUsedBy G
* @category Attribute
*/
Damping: 'Damping';
/**
* Spring constant used in virtual physical model.
* It roughly corresponds to an ideal edge length (in inches), in that increasing K tends to increase the distance between nodes.
* Note that the edge attribute {@link len} can be used to override this value for adjacent nodes.
*
* @see {@link https://graphviz.org/docs/attrs/K/ Node, Edge and Graph Attributes#K}
* @graphvizType {@link https://graphviz.org/docs/attr-types/double/ double}
* @graphvizDefault 0.3
* @graphvizMinimum 0
* @graphvizNotes sfdp, fdp only
* @graphvizUsedBy GC
* @category Attribute
*/
K: 'K';
/**
* Hyperlinks incorporated into device-dependent output.
* At present, used in ps2, cmap, i*map and svg formats.
* For all these formats, URLs can be attached to nodes, edges and clusters.
* URL attributes can also be attached to the root graph in ps2, cmap and i*map formats.
* This serves as the base URL for relative URLs in the former, and as the default image map file in the latter.
*
* For svg, cmapx and imap output, the active area for a node is its visible image.
* For example, an unfilled node with no drawn boundary will only be active on its label.
* For other output, the active area is its bounding box.
* The active area for a cluster is its bounding box.
* For edges, the active areas are small circles where the edge contacts its head and tail nodes.
* In addition, for svg, cmapx and imap, the active area includes a thin polygon approximating the edge.
* The circles may overlap the related node, and the edge URL dominates.
* If the edge has a label, this will also be active. Finally, if the edge has a head or tail label, this will also be active.
*
* Note that, for edges, the attributes {@link headURL}, {@link tailURL}, {@link labelURL} and {@link edgeURL} allow control of various parts of an edge.
* Also note that, if active areas of two edges overlap, it is unspecified which area dominates.
*
* @see {@link https://graphviz.org/docs/attrs/URL/ Node, Edge and Graph Attributes#URL}
* @graphvizType {@link https://graphviz.org/docs/attr-types/escString/ escString}
* @graphvizDefault <none>
* @graphvizNotes svg, postscript, map only
* @graphvizUsedBy ENGC
* @category Attribute
*/
URL: 'URL';
/**
* A string in the {@link https://graphviz.org/_pages/doc/info/output.html#d:xdot xdot format} specifying an arbitrary background.
* During rendering, the canvas is first filled as described in the {@link bgcolor} attribute.
* Then, if _background is defined, the graphics operations described in the string are performed on the canvas.
*
* @see {@link https://graphviz.org/docs/attrs/_background/ Node, Edge and Graph Attributes#_background}
* @graphvizType {@link https://graphviz.org/docs/attr-types/string/ string}
* @graphvizDefault <none>
* @graphvizUsedBy G
* @category Attribute
*/
_background: '_background';
/**
* Indicates the preferred area for a node or empty cluster when laid out by patchwork.
*
* @see {@link https://graphviz.org/docs/attrs/area/ Node, Edge and Graph Attributes#area}
* @graphvizType {@link https://graphviz.org/docs/attr-types/double/ double}
* @graphvizDefault 1
* @graphvizMinimum >0
* @graphvizNotes patchwork only
* @graphvizUsedBy NC
* @category Attribute
*/
area: 'area';
/**
* Style of arrowhead on the head node of an edge.
* This will only appear if the {@link dir} attribute is "forward" or "both".
*
* See the {@link https://graphviz.org/doc/info/attrs.html#undir_note limitation}.
*
* @see {@link https://graphviz.org/docs/attrs/arrowhead/ Node, Edge and Graph Attributes#arrowhead}
* @graphvizType {@link https://graphviz.org/docs/attr-types/arrowType/ arrowType}
* @graphvizDefault normal
* @graphvizUsedBy E
* @category Attribute
*/
arrowhead: 'arrowhead';
/**
* Multiplicative scale factor for arrowheads.
*
* @see {@link https://graphviz.org/docs/attrs/arrowsize/ Node, Edge and Graph Attributes#arrowsize}
* @graphvizType {@link https://graphviz.org/docs/attr-types/double/ double}
* @graphvizDefault 1
* @graphvizMinimum 0
* @graphvizUsedBy E
* @category Attribute
*/
arrowsize: 'arrowsize';
/**
* Style of arrowhead on the tail node of an edge.
* This will only appear if the {@link dir} attribute is "back" or "both".
*
* See the {@link https://graphviz.org/doc/info/attrs.html#undir_note limitation}.
*
* @see {@link https://graphviz.org/docs/attrs/arrowtail/ Node, Edge and Graph Attributes#arrowtail}
* @graphvizType {@link https://graphviz.org/docs/attr-types/arrowType/ arrowType}
* @graphvizDefault normal
* @graphvizUsedBy E
* @category Attribute
*/
arrowtail: 'arrowtail';
/**
* Bounding box of drawing in points.
*
* @graphvizType {@link https://graphviz.org/docs/attr-types/rect/ rect}
* @graphvizNotes write only
* @graphvizUsedBy G
* @category Attribute
*/
bb: 'bb';
/**
* When attached to the root graph, this color is used as the background for entire canvas.
* When a cluster attribute, it is used as the initial background for the cluster.
* If a cluster has a filled {@link style}, the cluster's {@link fillcolor} will overlay the background color.
*
* @see {@link https://graphviz.org/docs/attrs/bgcolor/ Node, Edge and Graph Attributes#bgcolor}
* @graphvizType {@link https://graphviz.org/docs/attr-types/color/ color}/{@link https://graphviz.org/docs/attr-types/color/List colorList}
* @graphvizDefault <none>
* @graphvizUsedBy GC
* @category Attribute
*/
bgcolor: 'bgcolor';
/**
* If true, the drawing is centered in the output canvas.
*
* @see {@link https://graphviz.org/docs/attrs/center/ Node, Edge and Graph Attributes#center}
* @graphvizType {@link https://graphviz.org/docs/attr-types/bool bool}
* @graphvizDefault FALSE
* @graphvizUsedBy G
* @category Attribute
*/
center: 'center';
/**
* Specifies the character encoding used when interpreting string input as a text label.
* The default value is "UTF-8". The other legal value is "iso-8859-1" or, equivalently, "Latin1".
* The charset attribute is case-insensitive.
* Note that if the character encoding used in the input does not match the charset value, the resulting output may be very strange.
*
* @see {@link https://graphviz.org/docs/attrs/charset/ Node, Edge and Graph Attributes#charset}
* @graphvizType {@link https://graphviz.org/docs/attr-types/string/ string}
* @graphvizDefault "UTF-8"
* @graphvizUsedBy G
*
* @category Attribute
*/
charset: 'charset';
/**
* Classnames to attach to the node, edge, graph, or cluster's SVG element.
* Combine with stylesheet for styling SVG output using CSS classnames.
*
* @see {@link https://graphviz.org/docs/attrs/class/ class}
* @graphvizType {@link https://graphviz.org/docs/attr-types/string/ string}
* @graphvizDefault ""
* @graphvizUsedBy ENCG
*/
class: 'class';
/**
* Mode used for handling clusters.
* If clusterrank is "local", a subgraph whose name begins with "cluster" is given special treatment.
* The subgraph is laid out separately, and then integrated as a unit into its parent graph, with a bounding rectangle drawn about it.
* If the cluster has a label parameter, this label is displayed within the rectangle.
* Note also that there can be clusters within clusters.
* At present, the modes "global" and "none" appear to be identical, both turning off the special cluster processing.
*
* @see {@link https://graphviz.org/docs/attrs/clusterrank/ Node, Edge and Graph Attributes#clusterrank}
* @graphvizType {@link https://graphviz.org/_pages/doc/info/attrs.html#k:clusterMode clusterMode}
* @graphvizDefault local
* @graphvizNotes dot only
* @graphvizUsedBy G
* @category Attribute
*/
clusterrank: 'clusterrank';
/**
* Basic drawing color for graphics, not text.
* For the latter, use the fontcolor attribute.
*
* For edges, the value can either be a single color or a colorList.
* In the latter case, if colorList has no fractions, the edge is drawn using parallel splines or lines, one for each color in the list, in the order given.
* The head arrow, if any, is drawn using the first color in the list, and the tail arrow, if any, the second color.
* This supports the common case of drawing opposing edges, but using parallel splines instead of separately routed multiedges.
* If any fraction is used, the colors are drawn in series, with each color being given roughly its specified fraction of the edge.
* For example, the graph
*
* ```dot
* digraph G {
* a -> b [dir=both color="red:blue"]
* c -> d [dir=none color="green:red;0.25:blue"]
* }
* ```
*
* yields
*
* 
*
* @see {@link https://graphviz.org/docs/attrs/color/ Node, Edge and Graph Attributes#color}
* @graphvizType {@link https://graphviz.org/docs/attr-types/color/ color}/{@link https://graphviz.org/docs/attr-types/color/List colorList}
* @graphvizDefault black
* @graphvizUsedBy ENC
* @category Attribute
*/
color: 'color';
/**
* This attribute specifies a color scheme namespace.
* If defined, it specifies the context for interpreting color names.
* In particular, if a color value has form "xxx" or "//xxx", then the color xxx will be evaluated according to the current color scheme.
* If no color scheme is set, the standard X11 naming is used.
* For example, if colorscheme=bugn9, then color=7 is interpreted as "/bugn9/7".
*
* @see {@link https://graphviz.org/docs/attrs/colorscheme/ Node, Edge and Graph Attributes#colorscheme}
* @graphvizType {@link https://graphviz.org/docs/attr-types/string/ string}
* @graphvizDefault ""
* @graphvizUsedBy ENCG
* @category Attribute
*/
colorscheme: 'colorscheme';
/**
* Comments are inserted into output.
* Device-dependent
*
* @see {@link https://graphviz.org/docs/attrs/comment/ Node, Edge and Graph Attributes#comment}
* @graphvizType {@link https://graphviz.org/docs/attr-types/string/ string}
* @graphvizDefault ""
* @graphvizUsedBy ENG
* @category Attribute
*/
comment: 'comment';
/**
* If true, allow edges between clusters. (See {@link lhead} and {@link ltail} below.)
*
* @see {@link https://graphviz.org/docs/attrs/compound/ Node, Edge and Graph Attributes#compound}
* @graphvizType {@link https://graphviz.org/docs/attr-types/bool bool}
* @graphvizDefault FALSE
* @graphvizNotes dot only
* @graphvizUsedBy G
* @category Attribute
*/
compound: 'compound';
/**
* If true, use edge concentrators.
* This merges multiedges into a single edge and causes partially parallel edges to share part of their paths.
* The latter feature is not yet available outside of dot.
*
* @see {@link https://graphviz.org/docs/attrs/concen