UNPKG

@aws/pdk

Version:

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

348 lines (330 loc) 10.4 kB
import { Attribute, AttributeKey, Attributes, AttributesObject, AttributesEntities, AttributeListKind, AttributeListModel, AttributesGroupModel, GraphBaseModel, GraphCommonAttributes, NodeModel, EdgeModel, SubgraphModel, ModelsContext, SubgraphAttributesObject, NodeAttributesObject, EdgeTargetLikeTuple, EdgeAttributesObject, GraphAttributeKey, RootGraphModel, GraphAttributesObject, EdgeTargetTuple, EdgeAttributeKey, NodeAttributeKey, Port, ForwardRefNode, SubgraphAttributeKey, ClusterSubgraphAttributeKey, DotObjectModel, } from '../common/index.js'; import { ConvertFromModelOptions, PrintOptions, ParseOptions, ConvertToModelOptions } from '../ast/index.js'; /** * @group Attribute * * @deprecated Use {@link Attribute.keys} instead. */ type AttributeKeyDict = Attribute.keys; /** * @group Attribute */ declare const attribute: Attribute.keys; /** * Base class for DOT objects. * @group Models */ declare abstract class DotObject {} /** * Base class for DOT objects with attributes. * @group Models */ declare abstract class AttributesBase<T extends AttributeKey> extends DotObject implements Attributes<T> { #private; constructor(attributes?: AttributesObject<T>); get values(): ReadonlyArray<[T, Attribute<T>]>; get size(): number; get<K extends T>(key: K): Attribute<K> | undefined; set<K extends T>(key: K, value: Attribute<K>): void; delete(key: T): void; apply(attributes: AttributesObject<T> | AttributesEntities<T>): void; clear(): void; } /** * A set of attribute values for any object. * @group Models */ declare class AttributeList<K extends AttributeListKind, T extends AttributeKey = AttributeKey> extends AttributesBase<T> implements AttributeListModel<K, T> { readonly $$kind: K; get $$type(): 'AttributeList'; comment?: string; constructor($$kind: K, attributes?: AttributesObject<T>); } /** * A set of attribute values for any object. * @group Models */ declare class AttributesGroup<T extends AttributeKey = AttributeKey> extends AttributesBase<T> implements AttributesGroupModel<T> { comment?: string; } /** * Base class for Graph objects. * @group Models */ declare abstract class GraphBase<T extends AttributeKey> extends AttributesBase<T> implements GraphBaseModel<T> { #private; readonly id?: string; comment?: string; readonly attributes: Readonly<GraphCommonAttributes>; get nodes(): ReadonlyArray<NodeModel>; get edges(): ReadonlyArray<EdgeModel>; get subgraphs(): ReadonlyArray<SubgraphModel>; with(models: Partial<ModelsContext>): void; addNode(node: NodeModel): void; addEdge(edge: EdgeModel): void; addSubgraph(subgraph: SubgraphModel): void; existNode(nodeId: string): boolean; existEdge(edge: EdgeModel): boolean; existSubgraph(subgraph: SubgraphModel): boolean; createSubgraph(id?: string, attributes?: SubgraphAttributesObject): SubgraphModel; createSubgraph(attributes?: SubgraphAttributesObject): SubgraphModel; removeNode(node: NodeModel | string): void; removeEdge(edge: EdgeModel): void; removeSubgraph(subgraph: SubgraphModel): void; createNode(id: string, attributes?: NodeAttributesObject): NodeModel; getSubgraph(id: string): SubgraphModel | undefined; getNode(id: string): NodeModel | undefined; createEdge(targets: EdgeTargetLikeTuple, attributes?: EdgeAttributesObject): EdgeModel; subgraph(id: string, callback?: (subgraph: SubgraphModel) => void): SubgraphModel; subgraph( id: string, attributes: SubgraphAttributesObject, callback?: (subgraph: SubgraphModel) => void, ): SubgraphModel; subgraph(attributes: SubgraphAttributesObject, callback?: (subgraph: SubgraphModel) => void): SubgraphModel; subgraph(callback?: (subgraph: SubgraphModel) => void): SubgraphModel; node(id: string, callback?: (node: NodeModel) => void): NodeModel; node(id: string, attributes: NodeAttributesObject, callback?: (node: NodeModel) => void): NodeModel; node(attributes: NodeAttributesObject): void; edge(targets: EdgeTargetLikeTuple, callback?: (edge: EdgeModel) => void): EdgeModel; edge(targets: EdgeTargetLikeTuple, attributes: EdgeAttributesObject, callback?: (edge: EdgeModel) => void): EdgeModel; edge(attributes: EdgeAttributesObject): void; graph(attributes: SubgraphAttributesObject): void; } /** * Base class representing a root graph(digraph, graph). * @group Models */ declare abstract class RootGraph extends GraphBase<GraphAttributeKey> implements RootGraphModel { get $$type(): 'Graph'; readonly id?: string; abstract readonly directed: boolean; strict: boolean; constructor(id?: string, attributes?: GraphAttributesObject); constructor(id?: string, strict?: boolean, attributes?: GraphAttributesObject); constructor(strict?: boolean, attributes?: GraphAttributesObject); constructor(attributes?: GraphAttributesObject); } /** * DOT object class representing a digraph. * @group Models */ declare class Digraph extends RootGraph { get directed(): boolean; } /** * DOT object class representing a edge. * @group Models */ declare class Edge extends DotObject implements EdgeModel { readonly targets: EdgeTargetTuple; get $$type(): 'Edge'; comment?: string; readonly attributes: AttributesGroupModel<EdgeAttributeKey>; constructor(targets: EdgeTargetTuple, attributes?: EdgeAttributesObject); } /** * DOT object class representing a graph. * @group Models */ declare class Graph extends RootGraph { get directed(): boolean; } /** * DOT object class representing a node. * @group Models */ declare class Node extends DotObject implements NodeModel { readonly id: string; get $$type(): 'Node'; comment?: string; readonly attributes: AttributesGroup<NodeAttributeKey>; constructor(id: string, attributes?: NodeAttributesObject); port(port: string | Partial<Port>): ForwardRefNode; } /** * DOT object class representing a subgraph. * @group Models */ declare class Subgraph extends GraphBase<SubgraphAttributeKey | ClusterSubgraphAttributeKey> implements SubgraphModel { get $$type(): 'Subgraph'; readonly id?: string; constructor(id?: string, attributes?: SubgraphAttributesObject); constructor(attributes?: SubgraphAttributesObject); isSubgraphCluster(): boolean; } /** * ModelFactory is an interface that provides a way to create a {@link RootGraphModel} object. * * @param id - Optional string parameter that specifies the id of the {@link RootGraphModel} object. * @param attributes - Optional GraphAttributesObject parameter that specifies the attributes of the {@link RootGraphModel} object. * @param callback - Optional callback function that takes a {@link RootGraphModel} object as a parameter. * * @returns {@link RootGraphModel} - Returns a {@link RootGraphModel} object. * @group Model Factory */ interface ModelFactory { (id?: string, attributes?: GraphAttributesObject, callback?: (g: RootGraphModel) => void): RootGraphModel; (attributes?: GraphAttributesObject, callback?: (g: RootGraphModel) => void): RootGraphModel; (id?: string, callback?: (g: RootGraphModel) => void): RootGraphModel; (callback?: (g: RootGraphModel) => void): RootGraphModel; } /** * @group Model Factory */ interface ModelFactories { /** * API for creating directional graph objects. */ digraph: ModelFactory; /** * API for creating omnidirectional graph objects. */ graph: ModelFactory; } /** * @group Model Factory */ interface ModelFactoriesWithStrict extends ModelFactories { strict: ModelFactories; } /** * digraph is a factory for creating Digraph objects. * @group Model Factory */ declare const digraph: ModelFactory; /** * graph is a factory for creating Graph objects. * @group Model Factory */ declare const graph: ModelFactory; /** * Provides a strict mode API. * @group Model Factory */ declare const strict: ModelFactories; /** * withContext creates a {@link ModelFactoriesWithStrict} object with the given context. * * @param models - An object containing the models to be used in the context. * * @returns A ModelFactoriesWithStrict object containing the factories. * @group Model Factory */ declare function withContext(models: Partial<ModelsContext>): ModelFactoriesWithStrict; /** * This interface provides options for converting a model to DOT. * @group Convert Model to DOT * @alpha */ interface ToDotOptions { /** * Options for converting the model to DOT. */ convert?: ConvertFromModelOptions; /** * Options for printing DOT. */ print?: PrintOptions; } /** * Convert Model to DOT string. * * @group Convert Model to DOT * * @param model Dot Object Model, like {@link Digraph}, {@link Graph}, {@link Subgraph}, {@link Node}, and {@link Edge} * @param options Optional options for the conversion. * @returns DOT string */ declare function toDot(model: DotObjectModel, options?: ToDotOptions): string; /** * This interface provides options for converting DOT to a model. * @group Convert DOT to Model * @alpha */ interface FromDotOptions<T extends 'Dot' | 'Graph' | 'Node' | 'Edge' | 'Subgraph'> { /** * Options for parsing DOT. */ parse?: ParseOptions<T>; /** * Options for converting the parsed DOT to a model. */ convert?: ConvertToModelOptions; } /** * fromDot is a function that converts a DOT string to a model. * * @group Convert DOT to Model * * @param dot The DOT string to convert. * @param options Options for converting the DOT string to a model. * @returns A model of type {@link RootGraphModel}, {@link NodeModel}, {@link EdgeModel}, or {@link SubgraphModel}, * depending on the type specified in the options. * @beta */ declare function fromDot(dot: string, options?: FromDotOptions<'Dot' | 'Graph'>): RootGraphModel; declare function fromDot(dot: string, options?: FromDotOptions<'Node'>): NodeModel; declare function fromDot(dot: string, options?: FromDotOptions<'Edge'>): EdgeModel; declare function fromDot(dot: string, options?: FromDotOptions<'Subgraph'>): SubgraphModel; export { AttributeKeyDict, AttributeList, AttributesBase, AttributesGroup, Digraph, DotObject, Edge, FromDotOptions, Graph, GraphBase, ModelFactories, ModelFactoriesWithStrict, ModelFactory, Node, RootGraph, Subgraph, ToDotOptions, attribute, digraph, fromDot, graph, strict, toDot, withContext, };