UNPKG

@aws/pdk

Version:

All documentation is located at: https://aws.github.io/aws-pdk

1,834 lines (1,831 loc) 188 kB
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 * * ![colorlist](https://graphviz.org/_pages/doc/info/colorlist.gif) * * @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