# API Reference <a name="API Reference" id="api-reference"></a>

## Constructs <a name="Constructs" id="Constructs"></a>

### CdkGraph <a name="CdkGraph" id="@aws-prototyping-sdk/cdk-graph.CdkGraph"></a>

CdkGraph construct is the cdk-graph framework controller that is responsible for computing the graph, storing serialized graph, and instrumenting plugins per the plugin contract.

#### Initializers <a name="Initializers" id="@aws-prototyping-sdk/cdk-graph.CdkGraph.Initializer"></a>

```typescript
import { CdkGraph } from '@aws-prototyping-sdk/cdk-graph'

new CdkGraph(root: Construct, props?: ICdkGraphProps)
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraph.Initializer.parameter.root">root</a></code> | <code>constructs.Construct</code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraph.Initializer.parameter.props">props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ICdkGraphProps">ICdkGraphProps</a></code> | *No description.* |

---

##### `root`<sup>Required</sup> <a name="root" id="@aws-prototyping-sdk/cdk-graph.CdkGraph.Initializer.parameter.root"></a>

- *Type:* constructs.Construct

---

##### `props`<sup>Optional</sup> <a name="props" id="@aws-prototyping-sdk/cdk-graph.CdkGraph.Initializer.parameter.props"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ICdkGraphProps">ICdkGraphProps</a>

---

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraph.toString">toString</a></code> | Returns a string representation of this construct. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraph.report">report</a></code> | Asynchronous report generation. This operation enables running expensive and non-synchronous report generation by plugins post synthesis. |

---

##### `toString` <a name="toString" id="@aws-prototyping-sdk/cdk-graph.CdkGraph.toString"></a>

```typescript
public toString(): string
```

Returns a string representation of this construct.

##### `report` <a name="report" id="@aws-prototyping-sdk/cdk-graph.CdkGraph.report"></a>

```typescript
public report(): void
```

Asynchronous report generation. This operation enables running expensive and non-synchronous report generation by plugins post synthesis.

If a given plugin requires performing asynchronous operations or is general expensive, it should
utilize `report` rather than `synthesize`.

#### Static Functions <a name="Static Functions" id="Static Functions"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraph.isConstruct">isConstruct</a></code> | Checks if `x` is a construct. |

---

##### `isConstruct` <a name="isConstruct" id="@aws-prototyping-sdk/cdk-graph.CdkGraph.isConstruct"></a>

```typescript
import { CdkGraph } from '@aws-prototyping-sdk/cdk-graph'

CdkGraph.isConstruct(x: any)
```

Checks if `x` is a construct.

Use this method instead of `instanceof` to properly detect `Construct`
instances, even when the construct library is symlinked.

Explanation: in JavaScript, multiple copies of the `constructs` library on
disk are seen as independent, completely different libraries. As a
consequence, the class `Construct` in each copy of the `constructs` library
is seen as a different class, and an instance of one class will not test as
`instanceof` the other class. `npm install` will not create installations
like this, but users may manually symlink construct libraries together or
use a monorepo tool: in those cases, multiple copies of the `constructs`
library can be accidentally installed, and `instanceof` will behave
unpredictably. It is safest to avoid using `instanceof`, and using
this type-testing method instead.

###### `x`<sup>Required</sup> <a name="x" id="@aws-prototyping-sdk/cdk-graph.CdkGraph.isConstruct.parameter.x"></a>

- *Type:* any

Any object.

---

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraph.property.node">node</a></code> | <code>constructs.Node</code> | The tree node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraph.property.config">config</a></code> | <code>{[ key: string ]: any}</code> | Config. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraph.property.plugins">plugins</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin">ICdkGraphPlugin</a>[]</code> | List of plugins registered with this instance. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraph.property.root">root</a></code> | <code>constructs.Construct</code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraph.property.graphContext">graphContext</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphContext">CdkGraphContext</a></code> | Get the context for the graph instance. |

---

##### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.CdkGraph.property.node"></a>

```typescript
public readonly node: Node;
```

- *Type:* constructs.Node

The tree node.

---

##### `config`<sup>Required</sup> <a name="config" id="@aws-prototyping-sdk/cdk-graph.CdkGraph.property.config"></a>

```typescript
public readonly config: {[ key: string ]: any};
```

- *Type:* {[ key: string ]: any}

Config.

---

##### `plugins`<sup>Required</sup> <a name="plugins" id="@aws-prototyping-sdk/cdk-graph.CdkGraph.property.plugins"></a>

```typescript
public readonly plugins: ICdkGraphPlugin[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin">ICdkGraphPlugin</a>[]

List of plugins registered with this instance.

---

##### `root`<sup>Required</sup> <a name="root" id="@aws-prototyping-sdk/cdk-graph.CdkGraph.property.root"></a>

```typescript
public readonly root: Construct;
```

- *Type:* constructs.Construct

---

##### `graphContext`<sup>Optional</sup> <a name="graphContext" id="@aws-prototyping-sdk/cdk-graph.CdkGraph.property.graphContext"></a>

```typescript
public readonly graphContext: CdkGraphContext;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphContext">CdkGraphContext</a>

Get the context for the graph instance.

This will be `undefined` before construct synthesis has initiated.

---

#### Constants <a name="Constants" id="Constants"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraph.property.ID">ID</a></code> | <code>string</code> | Fixed CdkGraph construct id. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraph.property.VERSION">VERSION</a></code> | <code>string</code> | Current CdkGraph semantic version. |

---

##### `ID`<sup>Required</sup> <a name="ID" id="@aws-prototyping-sdk/cdk-graph.CdkGraph.property.ID"></a>

```typescript
public readonly ID: string;
```

- *Type:* string

Fixed CdkGraph construct id.

---

##### `VERSION`<sup>Required</sup> <a name="VERSION" id="@aws-prototyping-sdk/cdk-graph.CdkGraph.property.VERSION"></a>

```typescript
public readonly VERSION: string;
```

- *Type:* string

Current CdkGraph semantic version.

---

## Structs <a name="Structs" id="Structs"></a>

### CdkGraphArtifact <a name="CdkGraphArtifact" id="@aws-prototyping-sdk/cdk-graph.CdkGraphArtifact"></a>

CdkGraph artifact definition.

#### Initializer <a name="Initializer" id="@aws-prototyping-sdk/cdk-graph.CdkGraphArtifact.Initializer"></a>

```typescript
import { CdkGraphArtifact } from '@aws-prototyping-sdk/cdk-graph'

const cdkGraphArtifact: CdkGraphArtifact = { ... }
```

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphArtifact.property.filename">filename</a></code> | <code>string</code> | Filename of the artifact. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphArtifact.property.filepath">filepath</a></code> | <code>string</code> | Full path where artifact is stored. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphArtifact.property.id">id</a></code> | <code>string</code> | The unique type of the artifact. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphArtifact.property.source">source</a></code> | <code>string</code> | The source of the artifact (such as plugin, or core system, etc). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphArtifact.property.description">description</a></code> | <code>string</code> | Description of artifact. |

---

##### `filename`<sup>Required</sup> <a name="filename" id="@aws-prototyping-sdk/cdk-graph.CdkGraphArtifact.property.filename"></a>

```typescript
public readonly filename: string;
```

- *Type:* string

Filename of the artifact.

---

##### `filepath`<sup>Required</sup> <a name="filepath" id="@aws-prototyping-sdk/cdk-graph.CdkGraphArtifact.property.filepath"></a>

```typescript
public readonly filepath: string;
```

- *Type:* string

Full path where artifact is stored.

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.CdkGraphArtifact.property.id"></a>

```typescript
public readonly id: string;
```

- *Type:* string

The unique type of the artifact.

---

##### `source`<sup>Required</sup> <a name="source" id="@aws-prototyping-sdk/cdk-graph.CdkGraphArtifact.property.source"></a>

```typescript
public readonly source: string;
```

- *Type:* string

The source of the artifact (such as plugin, or core system, etc).

---

##### `description`<sup>Optional</sup> <a name="description" id="@aws-prototyping-sdk/cdk-graph.CdkGraphArtifact.property.description"></a>

```typescript
public readonly description: string;
```

- *Type:* string

Description of artifact.

---

### ConstructInfo <a name="ConstructInfo" id="@aws-prototyping-sdk/cdk-graph.ConstructInfo"></a>

Source information on a construct (class fqn and version).

> [https://github.com/aws/aws-cdk/blob/cea1039e3664fdfa89c6f00cdaeb1a0185a12678/packages/%40aws-cdk/core/lib/private/runtime-info.ts#L22](https://github.com/aws/aws-cdk/blob/cea1039e3664fdfa89c6f00cdaeb1a0185a12678/packages/%40aws-cdk/core/lib/private/runtime-info.ts#L22)

#### Initializer <a name="Initializer" id="@aws-prototyping-sdk/cdk-graph.ConstructInfo.Initializer"></a>

```typescript
import { ConstructInfo } from '@aws-prototyping-sdk/cdk-graph'

const constructInfo: ConstructInfo = { ... }
```

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo.property.fqn">fqn</a></code> | <code>string</code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo.property.version">version</a></code> | <code>string</code> | *No description.* |

---

##### `fqn`<sup>Required</sup> <a name="fqn" id="@aws-prototyping-sdk/cdk-graph.ConstructInfo.property.fqn"></a>

```typescript
public readonly fqn: string;
```

- *Type:* string

---

##### `version`<sup>Required</sup> <a name="version" id="@aws-prototyping-sdk/cdk-graph.ConstructInfo.property.version"></a>

```typescript
public readonly version: string;
```

- *Type:* string

---

### ICdkGraphProps <a name="ICdkGraphProps" id="@aws-prototyping-sdk/cdk-graph.ICdkGraphProps"></a>

{@link CdkGraph} props.

#### Initializer <a name="Initializer" id="@aws-prototyping-sdk/cdk-graph.ICdkGraphProps.Initializer"></a>

```typescript
import { ICdkGraphProps } from '@aws-prototyping-sdk/cdk-graph'

const iCdkGraphProps: ICdkGraphProps = { ... }
```

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICdkGraphProps.property.plugins">plugins</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin">ICdkGraphPlugin</a>[]</code> | List of plugins to extends the graph. |

---

##### `plugins`<sup>Optional</sup> <a name="plugins" id="@aws-prototyping-sdk/cdk-graph.ICdkGraphProps.property.plugins"></a>

```typescript
public readonly plugins: ICdkGraphPlugin[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin">ICdkGraphPlugin</a>[]

List of plugins to extends the graph.

Plugins are invoked at each phases in fifo order.

---

### IGraphFilterPlanFocusConfig <a name="IGraphFilterPlanFocusConfig" id="@aws-prototyping-sdk/cdk-graph.IGraphFilterPlanFocusConfig"></a>

#### Initializer <a name="Initializer" id="@aws-prototyping-sdk/cdk-graph.IGraphFilterPlanFocusConfig.Initializer"></a>

```typescript
import { IGraphFilterPlanFocusConfig } from '@aws-prototyping-sdk/cdk-graph'

const iGraphFilterPlanFocusConfig: IGraphFilterPlanFocusConfig = { ... }
```

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IGraphFilterPlanFocusConfig.property.node">node</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a> \| <a href="#@aws-prototyping-sdk/cdk-graph.IFilterFocusCallback">IFilterFocusCallback</a></code> | The node or resolver to determine the node to focus on. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IGraphFilterPlanFocusConfig.property.noHoist">noHoist</a></code> | <code>boolean</code> | Indicates if ancestral containers are preserved (eg: Stages, Stack). |

---

##### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.IGraphFilterPlanFocusConfig.property.node"></a>

```typescript
public readonly node: Node | IFilterFocusCallback;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a> | <a href="#@aws-prototyping-sdk/cdk-graph.IFilterFocusCallback">IFilterFocusCallback</a>

The node or resolver to determine the node to focus on.

---

##### `noHoist`<sup>Optional</sup> <a name="noHoist" id="@aws-prototyping-sdk/cdk-graph.IGraphFilterPlanFocusConfig.property.noHoist"></a>

```typescript
public readonly noHoist: boolean;
```

- *Type:* boolean
- *Default:* true

Indicates if ancestral containers are preserved (eg: Stages, Stack).

If `false`, the "focused node" will be hoisted to the graph root and all ancestors will be pruned.
If `true`, the "focused" will be left in-place, while all siblings and non-scope ancestors will be pruned.

---

### InferredNodeProps <a name="InferredNodeProps" id="@aws-prototyping-sdk/cdk-graph.InferredNodeProps"></a>

Inferred node props.

#### Initializer <a name="Initializer" id="@aws-prototyping-sdk/cdk-graph.InferredNodeProps.Initializer"></a>

```typescript
import { InferredNodeProps } from '@aws-prototyping-sdk/cdk-graph'

const inferredNodeProps: InferredNodeProps = { ... }
```

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.uuid">uuid</a></code> | <code>string</code> | Universally unique identity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.attributes">attributes</a></code> | <code>{[ key: string ]: string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> \| string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}</code> | Serializable entity attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.flags">flags</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]</code> | Serializable entity flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.metadata">metadata</a></code> | <code>constructs.MetadataEntry[]</code> | Serializable entity metadata. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.tags">tags</a></code> | <code>{[ key: string ]: string}</code> | Serializable entity tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.dependencies">dependencies</a></code> | <code>string[]</code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.unresolvedReferences">unresolvedReferences</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.SGUnresolvedReference">SGUnresolvedReference</a>[]</code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.cfnType">cfnType</a></code> | <code>string</code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.constructInfo">constructInfo</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.logicalId">logicalId</a></code> | <code>string</code> | *No description.* |

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.uuid"></a>

```typescript
public readonly uuid: string;
```

- *Type:* string

Universally unique identity.

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.attributes"></a>

```typescript
public readonly attributes: {[ key: string ]: string | number | boolean | PlainObject | string | number | boolean | PlainObject[]};
```

- *Type:* {[ key: string ]: string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> | string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}

Serializable entity attributes.

> [{@link Attributes }]({@link Attributes })

---

##### `flags`<sup>Optional</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.flags"></a>

```typescript
public readonly flags: FlagEnum[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]

Serializable entity flags.

> [{@link FlagEnum }]({@link FlagEnum })

---

##### `metadata`<sup>Optional</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.metadata"></a>

```typescript
public readonly metadata: MetadataEntry[];
```

- *Type:* constructs.MetadataEntry[]

Serializable entity metadata.

> [{@link Metadata }]({@link Metadata })

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.tags"></a>

```typescript
public readonly tags: {[ key: string ]: string};
```

- *Type:* {[ key: string ]: string}

Serializable entity tags.

> [{@link Tags }]({@link Tags })

---

##### `dependencies`<sup>Required</sup> <a name="dependencies" id="@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.dependencies"></a>

```typescript
public readonly dependencies: string[];
```

- *Type:* string[]

---

##### `unresolvedReferences`<sup>Required</sup> <a name="unresolvedReferences" id="@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.unresolvedReferences"></a>

```typescript
public readonly unresolvedReferences: SGUnresolvedReference[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.SGUnresolvedReference">SGUnresolvedReference</a>[]

---

##### `cfnType`<sup>Optional</sup> <a name="cfnType" id="@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.cfnType"></a>

```typescript
public readonly cfnType: string;
```

- *Type:* string

---

##### `constructInfo`<sup>Optional</sup> <a name="constructInfo" id="@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.constructInfo"></a>

```typescript
public readonly constructInfo: ConstructInfo;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

---

##### `logicalId`<sup>Optional</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.InferredNodeProps.property.logicalId"></a>

```typescript
public readonly logicalId: string;
```

- *Type:* string

---

### PlainObject <a name="PlainObject" id="@aws-prototyping-sdk/cdk-graph.PlainObject"></a>

Serializable plain object value (JSII supported).

#### Initializer <a name="Initializer" id="@aws-prototyping-sdk/cdk-graph.PlainObject.Initializer"></a>

```typescript
import { PlainObject } from '@aws-prototyping-sdk/cdk-graph'

const plainObject: PlainObject = { ... }
```


### SGEdge <a name="SGEdge" id="@aws-prototyping-sdk/cdk-graph.SGEdge"></a>

Serializable graph edge entity.

#### Initializer <a name="Initializer" id="@aws-prototyping-sdk/cdk-graph.SGEdge.Initializer"></a>

```typescript
import { SGEdge } from '@aws-prototyping-sdk/cdk-graph'

const sGEdge: SGEdge = { ... }
```

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGEdge.property.uuid">uuid</a></code> | <code>string</code> | Universally unique identity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGEdge.property.attributes">attributes</a></code> | <code>{[ key: string ]: string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> \| string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}</code> | Serializable entity attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGEdge.property.flags">flags</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]</code> | Serializable entity flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGEdge.property.metadata">metadata</a></code> | <code>constructs.MetadataEntry[]</code> | Serializable entity metadata. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGEdge.property.tags">tags</a></code> | <code>{[ key: string ]: string}</code> | Serializable entity tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGEdge.property.direction">direction</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a></code> | Indicates the direction in which the edge is directed. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGEdge.property.edgeType">edgeType</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum">EdgeTypeEnum</a></code> | Type of edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGEdge.property.source">source</a></code> | <code>string</code> | UUID of edge **source**  node (tail). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGEdge.property.target">target</a></code> | <code>string</code> | UUID of edge **target**  node (head). |

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.SGEdge.property.uuid"></a>

```typescript
public readonly uuid: string;
```

- *Type:* string

Universally unique identity.

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.SGEdge.property.attributes"></a>

```typescript
public readonly attributes: {[ key: string ]: string | number | boolean | PlainObject | string | number | boolean | PlainObject[]};
```

- *Type:* {[ key: string ]: string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> | string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}

Serializable entity attributes.

> [{@link Attributes }]({@link Attributes })

---

##### `flags`<sup>Optional</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.SGEdge.property.flags"></a>

```typescript
public readonly flags: FlagEnum[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]

Serializable entity flags.

> [{@link FlagEnum }]({@link FlagEnum })

---

##### `metadata`<sup>Optional</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.SGEdge.property.metadata"></a>

```typescript
public readonly metadata: MetadataEntry[];
```

- *Type:* constructs.MetadataEntry[]

Serializable entity metadata.

> [{@link Metadata }]({@link Metadata })

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.SGEdge.property.tags"></a>

```typescript
public readonly tags: {[ key: string ]: string};
```

- *Type:* {[ key: string ]: string}

Serializable entity tags.

> [{@link Tags }]({@link Tags })

---

##### `direction`<sup>Required</sup> <a name="direction" id="@aws-prototyping-sdk/cdk-graph.SGEdge.property.direction"></a>

```typescript
public readonly direction: EdgeDirectionEnum;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a>

Indicates the direction in which the edge is directed.

---

##### `edgeType`<sup>Required</sup> <a name="edgeType" id="@aws-prototyping-sdk/cdk-graph.SGEdge.property.edgeType"></a>

```typescript
public readonly edgeType: EdgeTypeEnum;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum">EdgeTypeEnum</a>

Type of edge.

---

##### `source`<sup>Required</sup> <a name="source" id="@aws-prototyping-sdk/cdk-graph.SGEdge.property.source"></a>

```typescript
public readonly source: string;
```

- *Type:* string

UUID of edge **source**  node (tail).

---

##### `target`<sup>Required</sup> <a name="target" id="@aws-prototyping-sdk/cdk-graph.SGEdge.property.target"></a>

```typescript
public readonly target: string;
```

- *Type:* string

UUID of edge **target**  node (head).

---

### SGEntity <a name="SGEntity" id="@aws-prototyping-sdk/cdk-graph.SGEntity"></a>

Serializable graph entity.

#### Initializer <a name="Initializer" id="@aws-prototyping-sdk/cdk-graph.SGEntity.Initializer"></a>

```typescript
import { SGEntity } from '@aws-prototyping-sdk/cdk-graph'

const sGEntity: SGEntity = { ... }
```

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGEntity.property.uuid">uuid</a></code> | <code>string</code> | Universally unique identity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGEntity.property.attributes">attributes</a></code> | <code>{[ key: string ]: string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> \| string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}</code> | Serializable entity attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGEntity.property.flags">flags</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]</code> | Serializable entity flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGEntity.property.metadata">metadata</a></code> | <code>constructs.MetadataEntry[]</code> | Serializable entity metadata. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGEntity.property.tags">tags</a></code> | <code>{[ key: string ]: string}</code> | Serializable entity tags. |

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.SGEntity.property.uuid"></a>

```typescript
public readonly uuid: string;
```

- *Type:* string

Universally unique identity.

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.SGEntity.property.attributes"></a>

```typescript
public readonly attributes: {[ key: string ]: string | number | boolean | PlainObject | string | number | boolean | PlainObject[]};
```

- *Type:* {[ key: string ]: string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> | string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}

Serializable entity attributes.

> [{@link Attributes }]({@link Attributes })

---

##### `flags`<sup>Optional</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.SGEntity.property.flags"></a>

```typescript
public readonly flags: FlagEnum[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]

Serializable entity flags.

> [{@link FlagEnum }]({@link FlagEnum })

---

##### `metadata`<sup>Optional</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.SGEntity.property.metadata"></a>

```typescript
public readonly metadata: MetadataEntry[];
```

- *Type:* constructs.MetadataEntry[]

Serializable entity metadata.

> [{@link Metadata }]({@link Metadata })

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.SGEntity.property.tags"></a>

```typescript
public readonly tags: {[ key: string ]: string};
```

- *Type:* {[ key: string ]: string}

Serializable entity tags.

> [{@link Tags }]({@link Tags })

---

### SGGraphStore <a name="SGGraphStore" id="@aws-prototyping-sdk/cdk-graph.SGGraphStore"></a>

Serializable graph store.

#### Initializer <a name="Initializer" id="@aws-prototyping-sdk/cdk-graph.SGGraphStore.Initializer"></a>

```typescript
import { SGGraphStore } from '@aws-prototyping-sdk/cdk-graph'

const sGGraphStore: SGGraphStore = { ... }
```

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGGraphStore.property.edges">edges</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.SGEdge">SGEdge</a>[]</code> | List of edges. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGGraphStore.property.tree">tree</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode">SGNode</a></code> | Node tree. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGGraphStore.property.version">version</a></code> | <code>string</code> | Store version. |

---

##### `edges`<sup>Required</sup> <a name="edges" id="@aws-prototyping-sdk/cdk-graph.SGGraphStore.property.edges"></a>

```typescript
public readonly edges: SGEdge[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.SGEdge">SGEdge</a>[]

List of edges.

---

##### `tree`<sup>Required</sup> <a name="tree" id="@aws-prototyping-sdk/cdk-graph.SGGraphStore.property.tree"></a>

```typescript
public readonly tree: SGNode;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.SGNode">SGNode</a>

Node tree.

---

##### `version`<sup>Required</sup> <a name="version" id="@aws-prototyping-sdk/cdk-graph.SGGraphStore.property.version"></a>

```typescript
public readonly version: string;
```

- *Type:* string

Store version.

---

### SGNode <a name="SGNode" id="@aws-prototyping-sdk/cdk-graph.SGNode"></a>

Serializable graph node entity.

#### Initializer <a name="Initializer" id="@aws-prototyping-sdk/cdk-graph.SGNode.Initializer"></a>

```typescript
import { SGNode } from '@aws-prototyping-sdk/cdk-graph'

const sGNode: SGNode = { ... }
```

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode.property.uuid">uuid</a></code> | <code>string</code> | Universally unique identity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode.property.attributes">attributes</a></code> | <code>{[ key: string ]: string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> \| string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}</code> | Serializable entity attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode.property.flags">flags</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]</code> | Serializable entity flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode.property.metadata">metadata</a></code> | <code>constructs.MetadataEntry[]</code> | Serializable entity metadata. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode.property.tags">tags</a></code> | <code>{[ key: string ]: string}</code> | Serializable entity tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode.property.id">id</a></code> | <code>string</code> | Node id within parent (unique only between parent child nodes). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode.property.nodeType">nodeType</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a></code> | Node type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode.property.path">path</a></code> | <code>string</code> | Node path. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode.property.cfnType">cfnType</a></code> | <code>string</code> | CloudFormation resource type for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode.property.children">children</a></code> | <code>{[ key: string ]: <a href="#@aws-prototyping-sdk/cdk-graph.SGNode">SGNode</a>}</code> | Child node record. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode.property.constructInfo">constructInfo</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode.property.edges">edges</a></code> | <code>string[]</code> | List of edge UUIDs where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode.property.logicalId">logicalId</a></code> | <code>string</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode.property.parent">parent</a></code> | <code>string</code> | UUID of node parent. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGNode.property.stack">stack</a></code> | <code>string</code> | UUID of node stack. |

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.SGNode.property.uuid"></a>

```typescript
public readonly uuid: string;
```

- *Type:* string

Universally unique identity.

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.SGNode.property.attributes"></a>

```typescript
public readonly attributes: {[ key: string ]: string | number | boolean | PlainObject | string | number | boolean | PlainObject[]};
```

- *Type:* {[ key: string ]: string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> | string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}

Serializable entity attributes.

> [{@link Attributes }]({@link Attributes })

---

##### `flags`<sup>Optional</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.SGNode.property.flags"></a>

```typescript
public readonly flags: FlagEnum[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]

Serializable entity flags.

> [{@link FlagEnum }]({@link FlagEnum })

---

##### `metadata`<sup>Optional</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.SGNode.property.metadata"></a>

```typescript
public readonly metadata: MetadataEntry[];
```

- *Type:* constructs.MetadataEntry[]

Serializable entity metadata.

> [{@link Metadata }]({@link Metadata })

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.SGNode.property.tags"></a>

```typescript
public readonly tags: {[ key: string ]: string};
```

- *Type:* {[ key: string ]: string}

Serializable entity tags.

> [{@link Tags }]({@link Tags })

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.SGNode.property.id"></a>

```typescript
public readonly id: string;
```

- *Type:* string

Node id within parent (unique only between parent child nodes).

---

##### `nodeType`<sup>Required</sup> <a name="nodeType" id="@aws-prototyping-sdk/cdk-graph.SGNode.property.nodeType"></a>

```typescript
public readonly nodeType: NodeTypeEnum;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a>

Node type.

---

##### `path`<sup>Required</sup> <a name="path" id="@aws-prototyping-sdk/cdk-graph.SGNode.property.path"></a>

```typescript
public readonly path: string;
```

- *Type:* string

Node path.

---

##### `cfnType`<sup>Optional</sup> <a name="cfnType" id="@aws-prototyping-sdk/cdk-graph.SGNode.property.cfnType"></a>

```typescript
public readonly cfnType: string;
```

- *Type:* string

CloudFormation resource type for this node.

---

##### `children`<sup>Optional</sup> <a name="children" id="@aws-prototyping-sdk/cdk-graph.SGNode.property.children"></a>

```typescript
public readonly children: {[ key: string ]: SGNode};
```

- *Type:* {[ key: string ]: <a href="#@aws-prototyping-sdk/cdk-graph.SGNode">SGNode</a>}

Child node record.

---

##### `constructInfo`<sup>Optional</sup> <a name="constructInfo" id="@aws-prototyping-sdk/cdk-graph.SGNode.property.constructInfo"></a>

```typescript
public readonly constructInfo: ConstructInfo;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `edges`<sup>Optional</sup> <a name="edges" id="@aws-prototyping-sdk/cdk-graph.SGNode.property.edges"></a>

```typescript
public readonly edges: string[];
```

- *Type:* string[]

List of edge UUIDs where this node is the **source**.

---

##### `logicalId`<sup>Optional</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.SGNode.property.logicalId"></a>

```typescript
public readonly logicalId: string;
```

- *Type:* string

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.SGNode.property.parent"></a>

```typescript
public readonly parent: string;
```

- *Type:* string

UUID of node parent.

---

##### `stack`<sup>Optional</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.SGNode.property.stack"></a>

```typescript
public readonly stack: string;
```

- *Type:* string

UUID of node stack.

---

### SGUnresolvedReference <a name="SGUnresolvedReference" id="@aws-prototyping-sdk/cdk-graph.SGUnresolvedReference"></a>

Unresolved reference struct.

During graph computation references are unresolved and stored in this struct.

#### Initializer <a name="Initializer" id="@aws-prototyping-sdk/cdk-graph.SGUnresolvedReference.Initializer"></a>

```typescript
import { SGUnresolvedReference } from '@aws-prototyping-sdk/cdk-graph'

const sGUnresolvedReference: SGUnresolvedReference = { ... }
```

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGUnresolvedReference.property.referenceType">referenceType</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ReferenceTypeEnum">ReferenceTypeEnum</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGUnresolvedReference.property.source">source</a></code> | <code>string</code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGUnresolvedReference.property.target">target</a></code> | <code>string</code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.SGUnresolvedReference.property.value">value</a></code> | <code>string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> \| string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]</code> | *No description.* |

---

##### `referenceType`<sup>Required</sup> <a name="referenceType" id="@aws-prototyping-sdk/cdk-graph.SGUnresolvedReference.property.referenceType"></a>

```typescript
public readonly referenceType: ReferenceTypeEnum;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ReferenceTypeEnum">ReferenceTypeEnum</a>

---

##### `source`<sup>Required</sup> <a name="source" id="@aws-prototyping-sdk/cdk-graph.SGUnresolvedReference.property.source"></a>

```typescript
public readonly source: string;
```

- *Type:* string

---

##### `target`<sup>Required</sup> <a name="target" id="@aws-prototyping-sdk/cdk-graph.SGUnresolvedReference.property.target"></a>

```typescript
public readonly target: string;
```

- *Type:* string

---

##### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.SGUnresolvedReference.property.value"></a>

```typescript
public readonly value: string | number | boolean | PlainObject | string | number | boolean | PlainObject[];
```

- *Type:* string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> | string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]

---

## Classes <a name="Classes" id="Classes"></a>

### AppNode <a name="AppNode" id="@aws-prototyping-sdk/cdk-graph.AppNode"></a>

AppNode defines a cdk App.

#### Initializers <a name="Initializers" id="@aws-prototyping-sdk/cdk-graph.AppNode.Initializer"></a>

```typescript
import { AppNode } from '@aws-prototyping-sdk/cdk-graph'

new AppNode(props: IAppNodeProps)
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.Initializer.parameter.props">props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.IAppNodeProps">IAppNodeProps</a></code> | *No description.* |

---

##### `props`<sup>Required</sup> <a name="props" id="@aws-prototyping-sdk/cdk-graph.AppNode.Initializer.parameter.props"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IAppNodeProps">IAppNodeProps</a>

---

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.addAttribute">addAttribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.addFlag">addFlag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.addMetadata">addMetadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.addTag">addTag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.applyData">applyData</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.findMetadata">findMetadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.getAttribute">getAttribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.getTag">getTag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.hasAttribute">hasAttribute</a></code> | Indicates if entity has a given attribute defined, and optionally with a specific value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.hasFlag">hasFlag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.hasMetadata">hasMetadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.hasTag">hasTag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.mutateDestroy">mutateDestroy</a></code> | Destroys this node by removing all references and removing this node from the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.setAttribute">setAttribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.setTag">setTag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.addChild">addChild</a></code> | Add *child* node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.addLink">addLink</a></code> | Add *link* to another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.addReverseLink">addReverseLink</a></code> | Add *link* from another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.doesDependOn">doesDependOn</a></code> | Indicates if *this node* depends on *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.doesReference">doesReference</a></code> | Indicates if *this node* references *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.find">find</a></code> | Recursively find the nearest sub-node matching predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.findAll">findAll</a></code> | Return this construct and all of its sub-nodes in the given order. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.findAllLinks">findAllLinks</a></code> | Return all direct links of this node and that of all sub-nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.findAncestor">findAncestor</a></code> | Find nearest *ancestor* of *this node* matching given predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.findChild">findChild</a></code> | Find child with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.findLink">findLink</a></code> | Find link of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.findLinks">findLinks</a></code> | Find all links of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.getCfnProp">getCfnProp</a></code> | Get specific CloudFormation property. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.getChild">getChild</a></code> | Get *child* node with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.getLinkChains">getLinkChains</a></code> | Resolve all link chains. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.getNearestAncestor">getNearestAncestor</a></code> | Gets the nearest **common** *ancestor* shared between *this node* and another *node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.isAncestor">isAncestor</a></code> | Indicates if a specific *node* is an *ancestor* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.isChild">isChild</a></code> | Indicates if specific *node* is a *child* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.mutateCollapse">mutateCollapse</a></code> | Collapses all sub-nodes of *this node* into *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.mutateCollapseTo">mutateCollapseTo</a></code> | Collapses *this node* into *an ancestor*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.mutateCollapseToParent">mutateCollapseToParent</a></code> | Collapses *this node* into *it's parent node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.mutateHoist">mutateHoist</a></code> | Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.mutateMove">mutateMove</a></code> | Move this node into a new parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.mutateRemoveChild">mutateRemoveChild</a></code> | Remove a *child* node from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.mutateRemoveLink">mutateRemoveLink</a></code> | Remove a *link* from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.mutateRemoveReverseLink">mutateRemoveReverseLink</a></code> | Remove a *link* to *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.mutateUncluster">mutateUncluster</a></code> | Hoist all children to parent and collapse node to parent. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.toString">toString</a></code> | Get string representation of this node. |

---

##### `addAttribute` <a name="addAttribute" id="@aws-prototyping-sdk/cdk-graph.AppNode.addAttribute"></a>

```typescript
public addAttribute(key: string, value: any): void
```

Add attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.AppNode.addAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.AppNode.addAttribute.parameter.value"></a>

- *Type:* any

---

##### `addFlag` <a name="addFlag" id="@aws-prototyping-sdk/cdk-graph.AppNode.addFlag"></a>

```typescript
public addFlag(flag: FlagEnum): void
```

Add flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.AppNode.addFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `addMetadata` <a name="addMetadata" id="@aws-prototyping-sdk/cdk-graph.AppNode.addMetadata"></a>

```typescript
public addMetadata(metadataType: string, data: any): void
```

Add metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.AppNode.addMetadata.parameter.metadataType"></a>

- *Type:* string

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.AppNode.addMetadata.parameter.data"></a>

- *Type:* any

---

##### `addTag` <a name="addTag" id="@aws-prototyping-sdk/cdk-graph.AppNode.addTag"></a>

```typescript
public addTag(key: string, value: string): void
```

Add tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.AppNode.addTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.AppNode.addTag.parameter.value"></a>

- *Type:* string

---

##### `applyData` <a name="applyData" id="@aws-prototyping-sdk/cdk-graph.AppNode.applyData"></a>

```typescript
public applyData(data: IBaseEntityDataProps, overwrite?: boolean, applyFlags?: boolean): void
```

Applies data (attributes, metadata, tags, flag) to entity.

Generally used only for mutations such as collapse and consume to retain data.

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.AppNode.applyData.parameter.data"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps">IBaseEntityDataProps</a>

The data to apply.

---

###### `overwrite`<sup>Optional</sup> <a name="overwrite" id="@aws-prototyping-sdk/cdk-graph.AppNode.applyData.parameter.overwrite"></a>

- *Type:* boolean

---

###### `applyFlags`<sup>Optional</sup> <a name="applyFlags" id="@aws-prototyping-sdk/cdk-graph.AppNode.applyData.parameter.applyFlags"></a>

- *Type:* boolean

Indicates if data is overwritten - Indicates if flags should be applied.

---

##### `findMetadata` <a name="findMetadata" id="@aws-prototyping-sdk/cdk-graph.AppNode.findMetadata"></a>

```typescript
public findMetadata(metadataType: string): MetadataEntry[]
```

Retrieves all metadata entries of a given type.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.AppNode.findMetadata.parameter.metadataType"></a>

- *Type:* string

---

##### `getAttribute` <a name="getAttribute" id="@aws-prototyping-sdk/cdk-graph.AppNode.getAttribute"></a>

```typescript
public getAttribute(key: string): any
```

Get attribute by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.AppNode.getAttribute.parameter.key"></a>

- *Type:* string

---

##### `getTag` <a name="getTag" id="@aws-prototyping-sdk/cdk-graph.AppNode.getTag"></a>

```typescript
public getTag(key: string): string
```

Get tag by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.AppNode.getTag.parameter.key"></a>

- *Type:* string

---

##### `hasAttribute` <a name="hasAttribute" id="@aws-prototyping-sdk/cdk-graph.AppNode.hasAttribute"></a>

```typescript
public hasAttribute(key: string, value?: any): boolean
```

Indicates if entity has a given attribute defined, and optionally with a specific value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.AppNode.hasAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.AppNode.hasAttribute.parameter.value"></a>

- *Type:* any

---

##### `hasFlag` <a name="hasFlag" id="@aws-prototyping-sdk/cdk-graph.AppNode.hasFlag"></a>

```typescript
public hasFlag(flag: FlagEnum): boolean
```

Indicates if entity has a given flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.AppNode.hasFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `hasMetadata` <a name="hasMetadata" id="@aws-prototyping-sdk/cdk-graph.AppNode.hasMetadata"></a>

```typescript
public hasMetadata(metadataType: string, data: any): boolean
```

Indicates if entity has matching metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.AppNode.hasMetadata.parameter.metadataType"></a>

- *Type:* string

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.AppNode.hasMetadata.parameter.data"></a>

- *Type:* any

---

##### `hasTag` <a name="hasTag" id="@aws-prototyping-sdk/cdk-graph.AppNode.hasTag"></a>

```typescript
public hasTag(key: string, value?: string): boolean
```

Indicates if entity has tag, optionally verifying tag value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.AppNode.hasTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.AppNode.hasTag.parameter.value"></a>

- *Type:* string

---

##### `mutateDestroy` <a name="mutateDestroy" id="@aws-prototyping-sdk/cdk-graph.AppNode.mutateDestroy"></a>

```typescript
public mutateDestroy(strict?: boolean): void
```

Destroys this node by removing all references and removing this node from the store.

###### `strict`<sup>Optional</sup> <a name="strict" id="@aws-prototyping-sdk/cdk-graph.AppNode.mutateDestroy.parameter.strict"></a>

- *Type:* boolean

Indicates that this node must not have references.

---

##### `setAttribute` <a name="setAttribute" id="@aws-prototyping-sdk/cdk-graph.AppNode.setAttribute"></a>

```typescript
public setAttribute(key: string, value: any): void
```

Set attribute.

This will overwrite existing attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.AppNode.setAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.AppNode.setAttribute.parameter.value"></a>

- *Type:* any

---

##### `setTag` <a name="setTag" id="@aws-prototyping-sdk/cdk-graph.AppNode.setTag"></a>

```typescript
public setTag(key: string, value: string): void
```

Set tag.

Will overwrite existing tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.AppNode.setTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.AppNode.setTag.parameter.value"></a>

- *Type:* string

---

##### `addChild` <a name="addChild" id="@aws-prototyping-sdk/cdk-graph.AppNode.addChild"></a>

```typescript
public addChild(node: Node): void
```

Add *child* node.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.AppNode.addChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `addLink` <a name="addLink" id="@aws-prototyping-sdk/cdk-graph.AppNode.addLink"></a>

```typescript
public addLink(edge: Edge): void
```

Add *link* to another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.AppNode.addLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `addReverseLink` <a name="addReverseLink" id="@aws-prototyping-sdk/cdk-graph.AppNode.addReverseLink"></a>

```typescript
public addReverseLink(edge: Edge): void
```

Add *link* from another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.AppNode.addReverseLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `doesDependOn` <a name="doesDependOn" id="@aws-prototyping-sdk/cdk-graph.AppNode.doesDependOn"></a>

```typescript
public doesDependOn(node: Node): boolean
```

Indicates if *this node* depends on *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.AppNode.doesDependOn.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `doesReference` <a name="doesReference" id="@aws-prototyping-sdk/cdk-graph.AppNode.doesReference"></a>

```typescript
public doesReference(node: Node): boolean
```

Indicates if *this node* references *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.AppNode.doesReference.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `find` <a name="find" id="@aws-prototyping-sdk/cdk-graph.AppNode.find"></a>

```typescript
public find(predicate: INodePredicate): Node
```

Recursively find the nearest sub-node matching predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.AppNode.find.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

---

##### `findAll` <a name="findAll" id="@aws-prototyping-sdk/cdk-graph.AppNode.findAll"></a>

```typescript
public findAll(options?: IFindNodeOptions): Node[]
```

Return this construct and all of its sub-nodes in the given order.

Optionally filter nodes based on predicate.

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.AppNode.findAll.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindNodeOptions">IFindNodeOptions</a>

---

##### `findAllLinks` <a name="findAllLinks" id="@aws-prototyping-sdk/cdk-graph.AppNode.findAllLinks"></a>

```typescript
public findAllLinks(options?: IFindEdgeOptions): Edge[]
```

Return all direct links of this node and that of all sub-nodes.

Optionally filter links based on predicate.

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.AppNode.findAllLinks.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindEdgeOptions">IFindEdgeOptions</a>

---

##### `findAncestor` <a name="findAncestor" id="@aws-prototyping-sdk/cdk-graph.AppNode.findAncestor"></a>

```typescript
public findAncestor(predicate: INodePredicate, max?: number): Node
```

Find nearest *ancestor* of *this node* matching given predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.AppNode.findAncestor.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

Predicate to match ancestor.

---

###### `max`<sup>Optional</sup> <a name="max" id="@aws-prototyping-sdk/cdk-graph.AppNode.findAncestor.parameter.max"></a>

- *Type:* number

---

##### `findChild` <a name="findChild" id="@aws-prototyping-sdk/cdk-graph.AppNode.findChild"></a>

```typescript
public findChild(id: string): Node
```

Find child with given *id*.

Similar to `find` but does not throw error if no child found.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.AppNode.findChild.parameter.id"></a>

- *Type:* string

---

##### `findLink` <a name="findLink" id="@aws-prototyping-sdk/cdk-graph.AppNode.findLink"></a>

```typescript
public findLink(predicate: IEdgePredicate, reverse?: boolean, follow?: boolean, direct?: boolean): Edge
```

Find link of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct link
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.AppNode.findLink.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.AppNode.findLink.parameter.reverse"></a>

- *Type:* boolean

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.AppNode.findLink.parameter.follow"></a>

- *Type:* boolean

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.AppNode.findLink.parameter.direct"></a>

- *Type:* boolean

Indicates that only *direct* links should be searched.

---

##### `findLinks` <a name="findLinks" id="@aws-prototyping-sdk/cdk-graph.AppNode.findLinks"></a>

```typescript
public findLinks(predicate: IEdgePredicate, reverse?: boolean, follow?: boolean, direct?: boolean): Edge[]
```

Find all links of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct links
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.AppNode.findLinks.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.AppNode.findLinks.parameter.reverse"></a>

- *Type:* boolean

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.AppNode.findLinks.parameter.follow"></a>

- *Type:* boolean

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.AppNode.findLinks.parameter.direct"></a>

- *Type:* boolean

Indicates that only *direct* links should be searched.

---

##### `getCfnProp` <a name="getCfnProp" id="@aws-prototyping-sdk/cdk-graph.AppNode.getCfnProp"></a>

```typescript
public getCfnProp(key: string): string | number | boolean | PlainObject | string | number | boolean | PlainObject[]
```

Get specific CloudFormation property.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.AppNode.getCfnProp.parameter.key"></a>

- *Type:* string

---

##### `getChild` <a name="getChild" id="@aws-prototyping-sdk/cdk-graph.AppNode.getChild"></a>

```typescript
public getChild(id: string): Node
```

Get *child* node with given *id*.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.AppNode.getChild.parameter.id"></a>

- *Type:* string

---

##### `getLinkChains` <a name="getLinkChains" id="@aws-prototyping-sdk/cdk-graph.AppNode.getLinkChains"></a>

```typescript
public getLinkChains(reverse?: boolean): any[][]
```

Resolve all link chains.

> [{@link EdgeChain }]({@link EdgeChain })

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.AppNode.getLinkChains.parameter.reverse"></a>

- *Type:* boolean

---

##### `getNearestAncestor` <a name="getNearestAncestor" id="@aws-prototyping-sdk/cdk-graph.AppNode.getNearestAncestor"></a>

```typescript
public getNearestAncestor(node: Node): Node
```

Gets the nearest **common** *ancestor* shared between *this node* and another *node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.AppNode.getNearestAncestor.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `isAncestor` <a name="isAncestor" id="@aws-prototyping-sdk/cdk-graph.AppNode.isAncestor"></a>

```typescript
public isAncestor(ancestor: Node): boolean
```

Indicates if a specific *node* is an *ancestor* of *this node*.

###### `ancestor`<sup>Required</sup> <a name="ancestor" id="@aws-prototyping-sdk/cdk-graph.AppNode.isAncestor.parameter.ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `isChild` <a name="isChild" id="@aws-prototyping-sdk/cdk-graph.AppNode.isChild"></a>

```typescript
public isChild(node: Node): boolean
```

Indicates if specific *node* is a *child* of *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.AppNode.isChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateCollapse` <a name="mutateCollapse" id="@aws-prototyping-sdk/cdk-graph.AppNode.mutateCollapse"></a>

```typescript
public mutateCollapse(): void
```

Collapses all sub-nodes of *this node* into *this node*.

##### `mutateCollapseTo` <a name="mutateCollapseTo" id="@aws-prototyping-sdk/cdk-graph.AppNode.mutateCollapseTo"></a>

```typescript
public mutateCollapseTo(ancestor: Node): Node
```

Collapses *this node* into *an ancestor*.

###### `ancestor`<sup>Required</sup> <a name="ancestor" id="@aws-prototyping-sdk/cdk-graph.AppNode.mutateCollapseTo.parameter.ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateCollapseToParent` <a name="mutateCollapseToParent" id="@aws-prototyping-sdk/cdk-graph.AppNode.mutateCollapseToParent"></a>

```typescript
public mutateCollapseToParent(): Node
```

Collapses *this node* into *it's parent node*.

##### `mutateHoist` <a name="mutateHoist" id="@aws-prototyping-sdk/cdk-graph.AppNode.mutateHoist"></a>

```typescript
public mutateHoist(newParent: Node): void
```

Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor.

###### `newParent`<sup>Required</sup> <a name="newParent" id="@aws-prototyping-sdk/cdk-graph.AppNode.mutateHoist.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateMove` <a name="mutateMove" id="@aws-prototyping-sdk/cdk-graph.AppNode.mutateMove"></a>

```typescript
public mutateMove(newParent: Node): void
```

Move this node into a new parent node.

###### `newParent`<sup>Required</sup> <a name="newParent" id="@aws-prototyping-sdk/cdk-graph.AppNode.mutateMove.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

The parent to move this node to.

---

##### `mutateRemoveChild` <a name="mutateRemoveChild" id="@aws-prototyping-sdk/cdk-graph.AppNode.mutateRemoveChild"></a>

```typescript
public mutateRemoveChild(node: Node): boolean
```

Remove a *child* node from *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.AppNode.mutateRemoveChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateRemoveLink` <a name="mutateRemoveLink" id="@aws-prototyping-sdk/cdk-graph.AppNode.mutateRemoveLink"></a>

```typescript
public mutateRemoveLink(link: Edge): boolean
```

Remove a *link* from *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.AppNode.mutateRemoveLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutateRemoveReverseLink` <a name="mutateRemoveReverseLink" id="@aws-prototyping-sdk/cdk-graph.AppNode.mutateRemoveReverseLink"></a>

```typescript
public mutateRemoveReverseLink(link: Edge): boolean
```

Remove a *link* to *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.AppNode.mutateRemoveReverseLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutateUncluster` <a name="mutateUncluster" id="@aws-prototyping-sdk/cdk-graph.AppNode.mutateUncluster"></a>

```typescript
public mutateUncluster(): void
```

Hoist all children to parent and collapse node to parent.

##### `toString` <a name="toString" id="@aws-prototyping-sdk/cdk-graph.AppNode.toString"></a>

```typescript
public toString(): string
```

Get string representation of this node.

#### Static Functions <a name="Static Functions" id="Static Functions"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.isAppNode">isAppNode</a></code> | Indicates if node is a {@link AppNode}. |

---

##### `isAppNode` <a name="isAppNode" id="@aws-prototyping-sdk/cdk-graph.AppNode.isAppNode"></a>

```typescript
import { AppNode } from '@aws-prototyping-sdk/cdk-graph'

AppNode.isAppNode(node: Node)
```

Indicates if node is a {@link AppNode}.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.AppNode.isAppNode.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.attributes">attributes</a></code> | <code>{[ key: string ]: string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> \| string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}</code> | Get *readonly* record of all attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.flags">flags</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]</code> | Get *readonly* list of all flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.isDestroyed">isDestroyed</a></code> | <code>boolean</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.isMutated">isMutated</a></code> | <code>boolean</code> | Indicates if the entity has had destructive mutations applied. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.metadata">metadata</a></code> | <code>constructs.MetadataEntry[]</code> | Get *readonly* list of all metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Reference to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.tags">tags</a></code> | <code>{[ key: string ]: string}</code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.uuid">uuid</a></code> | <code>string</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.allowDestructiveMutations">allowDestructiveMutations</a></code> | <code>boolean</code> | Indicates if this node allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.children">children</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get all direct child nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.dependedOnBy">dependedOnBy</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *depend on this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.dependencies">dependencies</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *this node depends on*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.dependencyLinks">dependencyLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]</code> | Gets list of {@link Dependency} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.depth">depth</a></code> | <code>number</code> | Indicates the depth of the node relative to root (0). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.id">id</a></code> | <code>string</code> | Node id, which is only unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.isAsset">isAsset</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.ASSET}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.isCfnFqn">isCfnFqn</a></code> | <code>boolean</code> | Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.isCluster">isCluster</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.CLUSTER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.isCustomResource">isCustomResource</a></code> | <code>boolean</code> | Indicates if node is a *Custom Resource*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.isExtraneous">isExtraneous</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.isGraphContainer">isGraphContainer</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.isLeaf">isLeaf</a></code> | <code>boolean</code> | Indicates if this node is a *leaf* node, which means it does not have children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.isTopLevel">isTopLevel</a></code> | <code>boolean</code> | Indicates if node is direct child of the graph root node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.links">links</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]</code> | Gets all links (edges) in which this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.nodeType">nodeType</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a></code> | Type of node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.path">path</a></code> | <code>string</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.referencedBy">referencedBy</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *reference this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.referenceLinks">referenceLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]</code> | Gets list of {@link Reference} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.references">references</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *this node references*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.reverseDependencyLinks">reverseDependencyLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]</code> | Gets list of {@link Dependency} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.reverseLinks">reverseLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]</code> | Gets all links (edges) in which this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.reverseReferenceLinks">reverseReferenceLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]</code> | Gets list of {@link Reference} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.scopes">scopes</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Gets descending ordered list of ancestors from the root. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.siblings">siblings</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of *siblings* of this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.cfnProps">cfnProps</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a></code> | Gets CloudFormation properties for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.cfnType">cfnType</a></code> | <code>string</code> | Get the CloudFormation resource type for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.constructInfo">constructInfo</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.constructInfoFqn">constructInfoFqn</a></code> | <code>string</code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.logicalId">logicalId</a></code> | <code>string</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.parent">parent</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.rootStack">rootStack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Get **root** stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.stack">stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Stack the node is contained in. |

---

##### `attributes`<sup>Required</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.attributes"></a>

```typescript
public readonly attributes: {[ key: string ]: string | number | boolean | PlainObject | string | number | boolean | PlainObject[]};
```

- *Type:* {[ key: string ]: string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> | string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}

Get *readonly* record of all attributes.

---

##### `flags`<sup>Required</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.flags"></a>

```typescript
public readonly flags: FlagEnum[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]

Get *readonly* list of all flags.

---

##### `isDestroyed`<sup>Required</sup> <a name="isDestroyed" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.isDestroyed"></a>

```typescript
public readonly isDestroyed: boolean;
```

- *Type:* boolean

Indicates if the entity has been destroyed (eg: removed from store).

---

##### `isMutated`<sup>Required</sup> <a name="isMutated" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.isMutated"></a>

```typescript
public readonly isMutated: boolean;
```

- *Type:* boolean

Indicates if the entity has had destructive mutations applied.

---

##### `metadata`<sup>Required</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.metadata"></a>

```typescript
public readonly metadata: MetadataEntry[];
```

- *Type:* constructs.MetadataEntry[]

Get *readonly* list of all metadata entries.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.store"></a>

```typescript
public readonly store: Store;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Reference to the store.

---

##### `tags`<sup>Required</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.tags"></a>

```typescript
public readonly tags: {[ key: string ]: string};
```

- *Type:* {[ key: string ]: string}

Get *readonly* record of all tags.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.uuid"></a>

```typescript
public readonly uuid: string;
```

- *Type:* string

Universally unique identifier.

---

##### `allowDestructiveMutations`<sup>Required</sup> <a name="allowDestructiveMutations" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.allowDestructiveMutations"></a>

```typescript
public readonly allowDestructiveMutations: boolean;
```

- *Type:* boolean

Indicates if this node allows destructive mutations.

> [{@link Store.allowDestructiveMutations }]({@link Store.allowDestructiveMutations })

---

##### `children`<sup>Required</sup> <a name="children" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.children"></a>

```typescript
public readonly children: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get all direct child nodes.

---

##### `dependedOnBy`<sup>Required</sup> <a name="dependedOnBy" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.dependedOnBy"></a>

```typescript
public readonly dependedOnBy: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *depend on this node*.

> [{@link Node.reverseDependencyLinks }]({@link Node.reverseDependencyLinks })

---

##### `dependencies`<sup>Required</sup> <a name="dependencies" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.dependencies"></a>

```typescript
public readonly dependencies: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *this node depends on*.

> [{@link Node.dependencyLinks }]({@link Node.dependencyLinks })

---

##### `dependencyLinks`<sup>Required</sup> <a name="dependencyLinks" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.dependencyLinks"></a>

```typescript
public readonly dependencyLinks: Dependency[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]

Gets list of {@link Dependency} links (edges) where this node is the **source**.

---

##### `depth`<sup>Required</sup> <a name="depth" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.depth"></a>

```typescript
public readonly depth: number;
```

- *Type:* number

Indicates the depth of the node relative to root (0).

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.id"></a>

```typescript
public readonly id: string;
```

- *Type:* string

Node id, which is only unique within parent scope.

---

##### `isAsset`<sup>Required</sup> <a name="isAsset" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.isAsset"></a>

```typescript
public readonly isAsset: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.ASSET}.

---

##### `isCfnFqn`<sup>Required</sup> <a name="isCfnFqn" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.isCfnFqn"></a>

```typescript
public readonly isCfnFqn: boolean;
```

- *Type:* boolean

Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct.

> [{@link FlagEnum.CFN_FQN }]({@link FlagEnum.CFN_FQN })

---

##### `isCluster`<sup>Required</sup> <a name="isCluster" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.isCluster"></a>

```typescript
public readonly isCluster: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.CLUSTER}.

---

##### `isCustomResource`<sup>Required</sup> <a name="isCustomResource" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.isCustomResource"></a>

```typescript
public readonly isCustomResource: boolean;
```

- *Type:* boolean

Indicates if node is a *Custom Resource*.

---

##### `isExtraneous`<sup>Required</sup> <a name="isExtraneous" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.isExtraneous"></a>

```typescript
public readonly isExtraneous: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children.

---

##### `isGraphContainer`<sup>Required</sup> <a name="isGraphContainer" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.isGraphContainer"></a>

```typescript
public readonly isGraphContainer: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}.

---

##### `isLeaf`<sup>Required</sup> <a name="isLeaf" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.isLeaf"></a>

```typescript
public readonly isLeaf: boolean;
```

- *Type:* boolean

Indicates if this node is a *leaf* node, which means it does not have children.

---

##### `isTopLevel`<sup>Required</sup> <a name="isTopLevel" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.isTopLevel"></a>

```typescript
public readonly isTopLevel: boolean;
```

- *Type:* boolean

Indicates if node is direct child of the graph root node.

---

##### `links`<sup>Required</sup> <a name="links" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.links"></a>

```typescript
public readonly links: Edge[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]

Gets all links (edges) in which this node is the **source**.

---

##### `nodeType`<sup>Required</sup> <a name="nodeType" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.nodeType"></a>

```typescript
public readonly nodeType: NodeTypeEnum;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a>

Type of node.

---

##### `path`<sup>Required</sup> <a name="path" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.path"></a>

```typescript
public readonly path: string;
```

- *Type:* string

Path of the node.

---

##### `referencedBy`<sup>Required</sup> <a name="referencedBy" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.referencedBy"></a>

```typescript
public readonly referencedBy: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *reference this node*.

> [{@link Node.reverseReferenceLinks }]({@link Node.reverseReferenceLinks })

---

##### `referenceLinks`<sup>Required</sup> <a name="referenceLinks" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.referenceLinks"></a>

```typescript
public readonly referenceLinks: Reference[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]

Gets list of {@link Reference} links (edges) where this node is the **source**.

---

##### `references`<sup>Required</sup> <a name="references" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.references"></a>

```typescript
public readonly references: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *this node references*.

> [{@link Node.referenceLinks }]({@link Node.referenceLinks })

---

##### `reverseDependencyLinks`<sup>Required</sup> <a name="reverseDependencyLinks" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.reverseDependencyLinks"></a>

```typescript
public readonly reverseDependencyLinks: Dependency[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]

Gets list of {@link Dependency} links (edges) where this node is the **target**.

---

##### `reverseLinks`<sup>Required</sup> <a name="reverseLinks" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.reverseLinks"></a>

```typescript
public readonly reverseLinks: Edge[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]

Gets all links (edges) in which this node is the **target**.

---

##### `reverseReferenceLinks`<sup>Required</sup> <a name="reverseReferenceLinks" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.reverseReferenceLinks"></a>

```typescript
public readonly reverseReferenceLinks: Reference[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]

Gets list of {@link Reference} links (edges) where this node is the **target**.

---

##### `scopes`<sup>Required</sup> <a name="scopes" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.scopes"></a>

```typescript
public readonly scopes: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Gets descending ordered list of ancestors from the root.

---

##### `siblings`<sup>Required</sup> <a name="siblings" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.siblings"></a>

```typescript
public readonly siblings: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of *siblings* of this node.

---

##### `cfnProps`<sup>Optional</sup> <a name="cfnProps" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.cfnProps"></a>

```typescript
public readonly cfnProps: PlainObject;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>

Gets CloudFormation properties for this node.

---

##### `cfnType`<sup>Optional</sup> <a name="cfnType" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.cfnType"></a>

```typescript
public readonly cfnType: string;
```

- *Type:* string

Get the CloudFormation resource type for this node.

---

##### `constructInfo`<sup>Optional</sup> <a name="constructInfo" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.constructInfo"></a>

```typescript
public readonly constructInfo: ConstructInfo;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `constructInfoFqn`<sup>Optional</sup> <a name="constructInfoFqn" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.constructInfoFqn"></a>

```typescript
public readonly constructInfoFqn: string;
```

- *Type:* string

Synthesized construct information defining jii resolution data.

---

##### `logicalId`<sup>Optional</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.logicalId"></a>

```typescript
public readonly logicalId: string;
```

- *Type:* string

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.parent"></a>

```typescript
public readonly parent: Node;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

Only the root node should not have parent.

---

##### `rootStack`<sup>Optional</sup> <a name="rootStack" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.rootStack"></a>

```typescript
public readonly rootStack: StackNode;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Get **root** stack.

---

##### `stack`<sup>Optional</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.stack"></a>

```typescript
public readonly stack: StackNode;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained in.

---

#### Constants <a name="Constants" id="Constants"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.PATH">PATH</a></code> | <code>string</code> | Fixed path of the App. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AppNode.property.UUID">UUID</a></code> | <code>string</code> | Fixed UUID for App node. |

---

##### `PATH`<sup>Required</sup> <a name="PATH" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.PATH"></a>

```typescript
public readonly PATH: string;
```

- *Type:* string

Fixed path of the App.

---

##### `UUID`<sup>Required</sup> <a name="UUID" id="@aws-prototyping-sdk/cdk-graph.AppNode.property.UUID"></a>

```typescript
public readonly UUID: string;
```

- *Type:* string

Fixed UUID for App node.

---

### AttributeReference <a name="AttributeReference" id="@aws-prototyping-sdk/cdk-graph.AttributeReference"></a>

Attribute type reference edge.

#### Initializers <a name="Initializers" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.Initializer"></a>

```typescript
import { AttributeReference } from '@aws-prototyping-sdk/cdk-graph'

new AttributeReference(props: IAttributeReferenceProps)
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.Initializer.parameter.props">props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps">IAttributeReferenceProps</a></code> | *No description.* |

---

##### `props`<sup>Required</sup> <a name="props" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.Initializer.parameter.props"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps">IAttributeReferenceProps</a>

---

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.addAttribute">addAttribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.addFlag">addFlag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.addMetadata">addMetadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.addTag">addTag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.applyData">applyData</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.findMetadata">findMetadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.getAttribute">getAttribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.getTag">getTag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.hasAttribute">hasAttribute</a></code> | Indicates if entity has a given attribute defined, and optionally with a specific value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.hasFlag">hasFlag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.hasMetadata">hasMetadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.hasTag">hasTag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.mutateDestroy">mutateDestroy</a></code> | Destroy the edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.setAttribute">setAttribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.setTag">setTag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.isEquivalent">isEquivalent</a></code> | Indicates if this edge is equivalent to another edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.mutateConsume">mutateConsume</a></code> | Merge an equivalent edge's data into this edge and destroy the other edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.mutateDirection">mutateDirection</a></code> | Change the edge **direction**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.mutateSource">mutateSource</a></code> | Change the edge **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.mutateTarget">mutateTarget</a></code> | Change the edge **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.toString">toString</a></code> | Get string representation of this edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.resolveChain">resolveChain</a></code> | Resolve reference chain. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.resolveTargets">resolveTargets</a></code> | Resolve targets by following potential edge chain. |

---

##### `addAttribute` <a name="addAttribute" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.addAttribute"></a>

```typescript
public addAttribute(key: string, value: any): void
```

Add attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.addAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.addAttribute.parameter.value"></a>

- *Type:* any

---

##### `addFlag` <a name="addFlag" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.addFlag"></a>

```typescript
public addFlag(flag: FlagEnum): void
```

Add flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.addFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `addMetadata` <a name="addMetadata" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.addMetadata"></a>

```typescript
public addMetadata(metadataType: string, data: any): void
```

Add metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.addMetadata.parameter.metadataType"></a>

- *Type:* string

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.addMetadata.parameter.data"></a>

- *Type:* any

---

##### `addTag` <a name="addTag" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.addTag"></a>

```typescript
public addTag(key: string, value: string): void
```

Add tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.addTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.addTag.parameter.value"></a>

- *Type:* string

---

##### `applyData` <a name="applyData" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.applyData"></a>

```typescript
public applyData(data: IBaseEntityDataProps, overwrite?: boolean, applyFlags?: boolean): void
```

Applies data (attributes, metadata, tags, flag) to entity.

Generally used only for mutations such as collapse and consume to retain data.

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.applyData.parameter.data"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps">IBaseEntityDataProps</a>

The data to apply.

---

###### `overwrite`<sup>Optional</sup> <a name="overwrite" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.applyData.parameter.overwrite"></a>

- *Type:* boolean

---

###### `applyFlags`<sup>Optional</sup> <a name="applyFlags" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.applyData.parameter.applyFlags"></a>

- *Type:* boolean

Indicates if data is overwritten - Indicates if flags should be applied.

---

##### `findMetadata` <a name="findMetadata" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.findMetadata"></a>

```typescript
public findMetadata(metadataType: string): MetadataEntry[]
```

Retrieves all metadata entries of a given type.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.findMetadata.parameter.metadataType"></a>

- *Type:* string

---

##### `getAttribute` <a name="getAttribute" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.getAttribute"></a>

```typescript
public getAttribute(key: string): any
```

Get attribute by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.getAttribute.parameter.key"></a>

- *Type:* string

---

##### `getTag` <a name="getTag" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.getTag"></a>

```typescript
public getTag(key: string): string
```

Get tag by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.getTag.parameter.key"></a>

- *Type:* string

---

##### `hasAttribute` <a name="hasAttribute" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.hasAttribute"></a>

```typescript
public hasAttribute(key: string, value?: any): boolean
```

Indicates if entity has a given attribute defined, and optionally with a specific value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.hasAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.hasAttribute.parameter.value"></a>

- *Type:* any

---

##### `hasFlag` <a name="hasFlag" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.hasFlag"></a>

```typescript
public hasFlag(flag: FlagEnum): boolean
```

Indicates if entity has a given flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.hasFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `hasMetadata` <a name="hasMetadata" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.hasMetadata"></a>

```typescript
public hasMetadata(metadataType: string, data: any): boolean
```

Indicates if entity has matching metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.hasMetadata.parameter.metadataType"></a>

- *Type:* string

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.hasMetadata.parameter.data"></a>

- *Type:* any

---

##### `hasTag` <a name="hasTag" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.hasTag"></a>

```typescript
public hasTag(key: string, value?: string): boolean
```

Indicates if entity has tag, optionally verifying tag value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.hasTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.hasTag.parameter.value"></a>

- *Type:* string

---

##### `mutateDestroy` <a name="mutateDestroy" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.mutateDestroy"></a>

```typescript
public mutateDestroy(_strict?: boolean): void
```

Destroy the edge.

Remove all references and remove from store.

###### `_strict`<sup>Optional</sup> <a name="_strict" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.mutateDestroy.parameter._strict"></a>

- *Type:* boolean

---

##### `setAttribute` <a name="setAttribute" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.setAttribute"></a>

```typescript
public setAttribute(key: string, value: any): void
```

Set attribute.

This will overwrite existing attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.setAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.setAttribute.parameter.value"></a>

- *Type:* any

---

##### `setTag` <a name="setTag" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.setTag"></a>

```typescript
public setTag(key: string, value: string): void
```

Set tag.

Will overwrite existing tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.setTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.setTag.parameter.value"></a>

- *Type:* string

---

##### `isEquivalent` <a name="isEquivalent" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.isEquivalent"></a>

```typescript
public isEquivalent(edge: Edge): boolean
```

Indicates if this edge is equivalent to another edge.

Edges are considered equivalent if they share same type, source, and target.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.isEquivalent.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutateConsume` <a name="mutateConsume" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.mutateConsume"></a>

```typescript
public mutateConsume(edge: Edge): void
```

Merge an equivalent edge's data into this edge and destroy the other edge.

Used during filtering operations to consolidate equivalent edges.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.mutateConsume.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

The edge to consume.

---

##### `mutateDirection` <a name="mutateDirection" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.mutateDirection"></a>

```typescript
public mutateDirection(direction: EdgeDirectionEnum): void
```

Change the edge **direction**.

###### `direction`<sup>Required</sup> <a name="direction" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.mutateDirection.parameter.direction"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a>

---

##### `mutateSource` <a name="mutateSource" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.mutateSource"></a>

```typescript
public mutateSource(node: Node): void
```

Change the edge **source**.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.mutateSource.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateTarget` <a name="mutateTarget" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.mutateTarget"></a>

```typescript
public mutateTarget(node: Node): void
```

Change the edge **target**.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.mutateTarget.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `toString` <a name="toString" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.toString"></a>

```typescript
public toString(): string
```

Get string representation of this edge.

##### `resolveChain` <a name="resolveChain" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.resolveChain"></a>

```typescript
public resolveChain(): any[]
```

Resolve reference chain.

##### `resolveTargets` <a name="resolveTargets" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.resolveTargets"></a>

```typescript
public resolveTargets(): Node[]
```

Resolve targets by following potential edge chain.

> [{@link EdgeChain }]({@link EdgeChain })

#### Static Functions <a name="Static Functions" id="Static Functions"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.findAllInChain">findAllInChain</a></code> | Find all matching edges based on predicate within an EdgeChain. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.findInChain">findInChain</a></code> | Find first edge matching predicate within an EdgeChain. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.isRef">isRef</a></code> | Indicates if edge is a **Ref** based {@link Reference} edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.isReference">isReference</a></code> | Indicates if edge is a {@link Reference}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.isAtt">isAtt</a></code> | Indicates if edge in an **Fn::GetAtt** {@link Reference}. |

---

##### `findAllInChain` <a name="findAllInChain" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.findAllInChain"></a>

```typescript
import { AttributeReference } from '@aws-prototyping-sdk/cdk-graph'

AttributeReference.findAllInChain(chain: any[], predicate: IEdgePredicate)
```

Find all matching edges based on predicate within an EdgeChain.

###### `chain`<sup>Required</sup> <a name="chain" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.findAllInChain.parameter.chain"></a>

- *Type:* any[]

---

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.findAllInChain.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

---

##### `findInChain` <a name="findInChain" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.findInChain"></a>

```typescript
import { AttributeReference } from '@aws-prototyping-sdk/cdk-graph'

AttributeReference.findInChain(chain: any[], predicate: IEdgePredicate)
```

Find first edge matching predicate within an EdgeChain.

###### `chain`<sup>Required</sup> <a name="chain" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.findInChain.parameter.chain"></a>

- *Type:* any[]

---

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.findInChain.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

---

##### `isRef` <a name="isRef" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.isRef"></a>

```typescript
import { AttributeReference } from '@aws-prototyping-sdk/cdk-graph'

AttributeReference.isRef(edge: Edge)
```

Indicates if edge is a **Ref** based {@link Reference} edge.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.isRef.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `isReference` <a name="isReference" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.isReference"></a>

```typescript
import { AttributeReference } from '@aws-prototyping-sdk/cdk-graph'

AttributeReference.isReference(edge: Edge)
```

Indicates if edge is a {@link Reference}.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.isReference.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `isAtt` <a name="isAtt" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.isAtt"></a>

```typescript
import { AttributeReference } from '@aws-prototyping-sdk/cdk-graph'

AttributeReference.isAtt(edge: Edge)
```

Indicates if edge in an **Fn::GetAtt** {@link Reference}.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.isAtt.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.attributes">attributes</a></code> | <code>{[ key: string ]: string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> \| string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}</code> | Get *readonly* record of all attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.flags">flags</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]</code> | Get *readonly* list of all flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.isDestroyed">isDestroyed</a></code> | <code>boolean</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.isMutated">isMutated</a></code> | <code>boolean</code> | Indicates if the entity has had destructive mutations applied. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.metadata">metadata</a></code> | <code>constructs.MetadataEntry[]</code> | Get *readonly* list of all metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Reference to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.tags">tags</a></code> | <code>{[ key: string ]: string}</code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.uuid">uuid</a></code> | <code>string</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.allowDestructiveMutations">allowDestructiveMutations</a></code> | <code>boolean</code> | Indicates if edge allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.direction">direction</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a></code> | Indicates the direction in which the edge is directed. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.edgeType">edgeType</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum">EdgeTypeEnum</a></code> | Type of edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.isClosed">isClosed</a></code> | <code>boolean</code> | Indicates if the Edge's **source** and **target** are the same, or were the same when it was created (prior to mutations). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.isCrossStack">isCrossStack</a></code> | <code>boolean</code> | Indicates if **source** and **target** nodes reside in different *root* stacks. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.isExtraneous">isExtraneous</a></code> | <code>boolean</code> | Indicates if edge is extraneous which is determined by explicitly having *EXTRANEOUS* flag added and/or being a closed loop (source===target). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.source">source</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Edge **source** is the node that defines the edge (tail). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.target">target</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Edge **target** is the node being referenced by the **source** (head). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.referenceType">referenceType</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ReferenceTypeEnum">ReferenceTypeEnum</a></code> | Get type of reference. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.value">value</a></code> | <code>string</code> | Get the resolved attribute value. |

---

##### `attributes`<sup>Required</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.attributes"></a>

```typescript
public readonly attributes: {[ key: string ]: string | number | boolean | PlainObject | string | number | boolean | PlainObject[]};
```

- *Type:* {[ key: string ]: string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> | string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}

Get *readonly* record of all attributes.

---

##### `flags`<sup>Required</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.flags"></a>

```typescript
public readonly flags: FlagEnum[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]

Get *readonly* list of all flags.

---

##### `isDestroyed`<sup>Required</sup> <a name="isDestroyed" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.isDestroyed"></a>

```typescript
public readonly isDestroyed: boolean;
```

- *Type:* boolean

Indicates if the entity has been destroyed (eg: removed from store).

---

##### `isMutated`<sup>Required</sup> <a name="isMutated" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.isMutated"></a>

```typescript
public readonly isMutated: boolean;
```

- *Type:* boolean

Indicates if the entity has had destructive mutations applied.

---

##### `metadata`<sup>Required</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.metadata"></a>

```typescript
public readonly metadata: MetadataEntry[];
```

- *Type:* constructs.MetadataEntry[]

Get *readonly* list of all metadata entries.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.store"></a>

```typescript
public readonly store: Store;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Reference to the store.

---

##### `tags`<sup>Required</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.tags"></a>

```typescript
public readonly tags: {[ key: string ]: string};
```

- *Type:* {[ key: string ]: string}

Get *readonly* record of all tags.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.uuid"></a>

```typescript
public readonly uuid: string;
```

- *Type:* string

Universally unique identifier.

---

##### `allowDestructiveMutations`<sup>Required</sup> <a name="allowDestructiveMutations" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.allowDestructiveMutations"></a>

```typescript
public readonly allowDestructiveMutations: boolean;
```

- *Type:* boolean

Indicates if edge allows destructive mutations.

---

##### `direction`<sup>Required</sup> <a name="direction" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.direction"></a>

```typescript
public readonly direction: EdgeDirectionEnum;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a>

Indicates the direction in which the edge is directed.

---

##### `edgeType`<sup>Required</sup> <a name="edgeType" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.edgeType"></a>

```typescript
public readonly edgeType: EdgeTypeEnum;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum">EdgeTypeEnum</a>

Type of edge.

---

##### `isClosed`<sup>Required</sup> <a name="isClosed" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.isClosed"></a>

```typescript
public readonly isClosed: boolean;
```

- *Type:* boolean

Indicates if the Edge's **source** and **target** are the same, or were the same when it was created (prior to mutations).

To check whether it was originally closed, use `hasFlag(FlagEnum.CLOSED_EDGE)` instead.

---

##### `isCrossStack`<sup>Required</sup> <a name="isCrossStack" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.isCrossStack"></a>

```typescript
public readonly isCrossStack: boolean;
```

- *Type:* boolean

Indicates if **source** and **target** nodes reside in different *root* stacks.

---

##### `isExtraneous`<sup>Required</sup> <a name="isExtraneous" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.isExtraneous"></a>

```typescript
public readonly isExtraneous: boolean;
```

- *Type:* boolean

Indicates if edge is extraneous which is determined by explicitly having *EXTRANEOUS* flag added and/or being a closed loop (source===target).

---

##### `source`<sup>Required</sup> <a name="source" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.source"></a>

```typescript
public readonly source: Node;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Edge **source** is the node that defines the edge (tail).

---

##### `target`<sup>Required</sup> <a name="target" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.target"></a>

```typescript
public readonly target: Node;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Edge **target** is the node being referenced by the **source** (head).

---

##### `referenceType`<sup>Required</sup> <a name="referenceType" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.referenceType"></a>

```typescript
public readonly referenceType: ReferenceTypeEnum;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ReferenceTypeEnum">ReferenceTypeEnum</a>

Get type of reference.

---

##### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.value"></a>

```typescript
public readonly value: string;
```

- *Type:* string

Get the resolved attribute value.

---

#### Constants <a name="Constants" id="Constants"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.ATT_TYPE">ATT_TYPE</a></code> | <code>string</code> | Attribute defining the type of reference. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.PREFIX">PREFIX</a></code> | <code>string</code> | Edge prefix to denote **Fn::GetAtt** type reference edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference.property.ATT_VALUE">ATT_VALUE</a></code> | <code>string</code> | Attribute key for resolved value of attribute reference. |

---

##### `ATT_TYPE`<sup>Required</sup> <a name="ATT_TYPE" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.ATT_TYPE"></a>

```typescript
public readonly ATT_TYPE: string;
```

- *Type:* string

Attribute defining the type of reference.

---

##### `PREFIX`<sup>Required</sup> <a name="PREFIX" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.PREFIX"></a>

```typescript
public readonly PREFIX: string;
```

- *Type:* string

Edge prefix to denote **Fn::GetAtt** type reference edge.

---

##### `ATT_VALUE`<sup>Required</sup> <a name="ATT_VALUE" id="@aws-prototyping-sdk/cdk-graph.AttributeReference.property.ATT_VALUE"></a>

```typescript
public readonly ATT_VALUE: string;
```

- *Type:* string

Attribute key for resolved value of attribute reference.

---

### BaseEntity <a name="BaseEntity" id="@aws-prototyping-sdk/cdk-graph.BaseEntity"></a>

- *Implements:* <a href="#@aws-prototyping-sdk/cdk-graph.ISerializableEntity">ISerializableEntity</a>

Base class for all store entities (Node and Edges).

#### Initializers <a name="Initializers" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.Initializer"></a>

```typescript
import { BaseEntity } from '@aws-prototyping-sdk/cdk-graph'

new BaseEntity(props: IBaseEntityProps)
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.Initializer.parameter.props">props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityProps">IBaseEntityProps</a></code> | *No description.* |

---

##### `props`<sup>Required</sup> <a name="props" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.Initializer.parameter.props"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityProps">IBaseEntityProps</a>

---

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.addAttribute">addAttribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.addFlag">addFlag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.addMetadata">addMetadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.addTag">addTag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.applyData">applyData</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.findMetadata">findMetadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.getAttribute">getAttribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.getTag">getTag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.hasAttribute">hasAttribute</a></code> | Indicates if entity has a given attribute defined, and optionally with a specific value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.hasFlag">hasFlag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.hasMetadata">hasMetadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.hasTag">hasTag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.mutateDestroy">mutateDestroy</a></code> | Destroy the entity be removing all references and removing from store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.setAttribute">setAttribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.setTag">setTag</a></code> | Set tag. |

---

##### `addAttribute` <a name="addAttribute" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.addAttribute"></a>

```typescript
public addAttribute(key: string, value: any): void
```

Add attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.addAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.addAttribute.parameter.value"></a>

- *Type:* any

---

##### `addFlag` <a name="addFlag" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.addFlag"></a>

```typescript
public addFlag(flag: FlagEnum): void
```

Add flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.addFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `addMetadata` <a name="addMetadata" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.addMetadata"></a>

```typescript
public addMetadata(metadataType: string, data: any): void
```

Add metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.addMetadata.parameter.metadataType"></a>

- *Type:* string

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.addMetadata.parameter.data"></a>

- *Type:* any

---

##### `addTag` <a name="addTag" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.addTag"></a>

```typescript
public addTag(key: string, value: string): void
```

Add tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.addTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.addTag.parameter.value"></a>

- *Type:* string

---

##### `applyData` <a name="applyData" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.applyData"></a>

```typescript
public applyData(data: IBaseEntityDataProps, overwrite?: boolean, applyFlags?: boolean): void
```

Applies data (attributes, metadata, tags, flag) to entity.

Generally used only for mutations such as collapse and consume to retain data.

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.applyData.parameter.data"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps">IBaseEntityDataProps</a>

The data to apply.

---

###### `overwrite`<sup>Optional</sup> <a name="overwrite" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.applyData.parameter.overwrite"></a>

- *Type:* boolean

---

###### `applyFlags`<sup>Optional</sup> <a name="applyFlags" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.applyData.parameter.applyFlags"></a>

- *Type:* boolean

Indicates if data is overwritten - Indicates if flags should be applied.

---

##### `findMetadata` <a name="findMetadata" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.findMetadata"></a>

```typescript
public findMetadata(metadataType: string): MetadataEntry[]
```

Retrieves all metadata entries of a given type.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.findMetadata.parameter.metadataType"></a>

- *Type:* string

---

##### `getAttribute` <a name="getAttribute" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.getAttribute"></a>

```typescript
public getAttribute(key: string): any
```

Get attribute by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.getAttribute.parameter.key"></a>

- *Type:* string

---

##### `getTag` <a name="getTag" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.getTag"></a>

```typescript
public getTag(key: string): string
```

Get tag by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.getTag.parameter.key"></a>

- *Type:* string

---

##### `hasAttribute` <a name="hasAttribute" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.hasAttribute"></a>

```typescript
public hasAttribute(key: string, value?: any): boolean
```

Indicates if entity has a given attribute defined, and optionally with a specific value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.hasAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.hasAttribute.parameter.value"></a>

- *Type:* any

---

##### `hasFlag` <a name="hasFlag" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.hasFlag"></a>

```typescript
public hasFlag(flag: FlagEnum): boolean
```

Indicates if entity has a given flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.hasFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `hasMetadata` <a name="hasMetadata" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.hasMetadata"></a>

```typescript
public hasMetadata(metadataType: string, data: any): boolean
```

Indicates if entity has matching metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.hasMetadata.parameter.metadataType"></a>

- *Type:* string

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.hasMetadata.parameter.data"></a>

- *Type:* any

---

##### `hasTag` <a name="hasTag" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.hasTag"></a>

```typescript
public hasTag(key: string, value?: string): boolean
```

Indicates if entity has tag, optionally verifying tag value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.hasTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.hasTag.parameter.value"></a>

- *Type:* string

---

##### `mutateDestroy` <a name="mutateDestroy" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.mutateDestroy"></a>

```typescript
public mutateDestroy(strict?: boolean): void
```

Destroy the entity be removing all references and removing from store.

###### `strict`<sup>Optional</sup> <a name="strict" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.mutateDestroy.parameter.strict"></a>

- *Type:* boolean

If `strict`, then entity must not have any references remaining when attempting to destroy.

---

##### `setAttribute` <a name="setAttribute" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.setAttribute"></a>

```typescript
public setAttribute(key: string, value: any): void
```

Set attribute.

This will overwrite existing attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.setAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.setAttribute.parameter.value"></a>

- *Type:* any

---

##### `setTag` <a name="setTag" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.setTag"></a>

```typescript
public setTag(key: string, value: string): void
```

Set tag.

Will overwrite existing tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.setTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.setTag.parameter.value"></a>

- *Type:* string

---


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.property.attributes">attributes</a></code> | <code>{[ key: string ]: string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> \| string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}</code> | Get *readonly* record of all attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.property.flags">flags</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]</code> | Get *readonly* list of all flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.property.isDestroyed">isDestroyed</a></code> | <code>boolean</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.property.isMutated">isMutated</a></code> | <code>boolean</code> | Indicates if the entity has had destructive mutations applied. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.property.metadata">metadata</a></code> | <code>constructs.MetadataEntry[]</code> | Get *readonly* list of all metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Reference to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.property.tags">tags</a></code> | <code>{[ key: string ]: string}</code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity.property.uuid">uuid</a></code> | <code>string</code> | Universally unique identifier. |

---

##### `attributes`<sup>Required</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.property.attributes"></a>

```typescript
public readonly attributes: {[ key: string ]: string | number | boolean | PlainObject | string | number | boolean | PlainObject[]};
```

- *Type:* {[ key: string ]: string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> | string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}

Get *readonly* record of all attributes.

---

##### `flags`<sup>Required</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.property.flags"></a>

```typescript
public readonly flags: FlagEnum[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]

Get *readonly* list of all flags.

---

##### `isDestroyed`<sup>Required</sup> <a name="isDestroyed" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.property.isDestroyed"></a>

```typescript
public readonly isDestroyed: boolean;
```

- *Type:* boolean

Indicates if the entity has been destroyed (eg: removed from store).

---

##### `isMutated`<sup>Required</sup> <a name="isMutated" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.property.isMutated"></a>

```typescript
public readonly isMutated: boolean;
```

- *Type:* boolean

Indicates if the entity has had destructive mutations applied.

---

##### `metadata`<sup>Required</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.property.metadata"></a>

```typescript
public readonly metadata: MetadataEntry[];
```

- *Type:* constructs.MetadataEntry[]

Get *readonly* list of all metadata entries.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.property.store"></a>

```typescript
public readonly store: Store;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Reference to the store.

---

##### `tags`<sup>Required</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.property.tags"></a>

```typescript
public readonly tags: {[ key: string ]: string};
```

- *Type:* {[ key: string ]: string}

Get *readonly* record of all tags.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.BaseEntity.property.uuid"></a>

```typescript
public readonly uuid: string;
```

- *Type:* string

Universally unique identifier.

---


### CdkGraphContext <a name="CdkGraphContext" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext"></a>

CdkGraph context.

#### Initializers <a name="Initializers" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.Initializer"></a>

```typescript
import { CdkGraphContext } from '@aws-prototyping-sdk/cdk-graph'

new CdkGraphContext(store: Store, outdir: string)
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphContext.Initializer.parameter.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphContext.Initializer.parameter.outdir">outdir</a></code> | <code>string</code> | *No description.* |

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.Initializer.parameter.store"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

---

##### `outdir`<sup>Required</sup> <a name="outdir" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.Initializer.parameter.outdir"></a>

- *Type:* string

---

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphContext.getArtifact">getArtifact</a></code> | Get CdkGraph artifact by id. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphContext.hasArtifactFile">hasArtifactFile</a></code> | Indicates if context has an artifact with *filename* defined. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphContext.logArtifact">logArtifact</a></code> | Logs an artifact entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphContext.writeArtifact">writeArtifact</a></code> | Writes artifact data to outdir and logs the entry. |

---

##### `getArtifact` <a name="getArtifact" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.getArtifact"></a>

```typescript
public getArtifact(id: string): CdkGraphArtifact
```

Get CdkGraph artifact by id.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.getArtifact.parameter.id"></a>

- *Type:* string

---

##### `hasArtifactFile` <a name="hasArtifactFile" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.hasArtifactFile"></a>

```typescript
public hasArtifactFile(filename: string): boolean
```

Indicates if context has an artifact with *filename* defined.

###### `filename`<sup>Required</sup> <a name="filename" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.hasArtifactFile.parameter.filename"></a>

- *Type:* string

---

##### `logArtifact` <a name="logArtifact" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.logArtifact"></a>

```typescript
public logArtifact(source: CdkGraph | ICdkGraphPlugin, id: string, filepath: string, description?: string): CdkGraphArtifact
```

Logs an artifact entry.

In general this should not be called directly, as `writeArtifact` should be utilized
to perform writing and logging artifacts. However some plugins utilize other tools that generate the artifacts,
in which case the plugin would call this method to log the entry.

###### `source`<sup>Required</sup> <a name="source" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.logArtifact.parameter.source"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.CdkGraph">CdkGraph</a> | <a href="#@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin">ICdkGraphPlugin</a>

The source of the artifact, such as the name of plugin.

---

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.logArtifact.parameter.id"></a>

- *Type:* string

Unique id of the artifact.

---

###### `filepath`<sup>Required</sup> <a name="filepath" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.logArtifact.parameter.filepath"></a>

- *Type:* string

Full path where the artifact is stored.

---

###### `description`<sup>Optional</sup> <a name="description" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.logArtifact.parameter.description"></a>

- *Type:* string

Description of the artifact.

---

##### `writeArtifact` <a name="writeArtifact" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.writeArtifact"></a>

```typescript
public writeArtifact(source: CdkGraph | ICdkGraphPlugin, id: string, filename: string, data: string, description?: string): CdkGraphArtifact
```

Writes artifact data to outdir and logs the entry.

###### `source`<sup>Required</sup> <a name="source" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.writeArtifact.parameter.source"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.CdkGraph">CdkGraph</a> | <a href="#@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin">ICdkGraphPlugin</a>

The source of the artifact, such as the name of plugin.

---

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.writeArtifact.parameter.id"></a>

- *Type:* string

Unique id of the artifact.

---

###### `filename`<sup>Required</sup> <a name="filename" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.writeArtifact.parameter.filename"></a>

- *Type:* string

Relative name of the file.

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.writeArtifact.parameter.data"></a>

- *Type:* string

---

###### `description`<sup>Optional</sup> <a name="description" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.writeArtifact.parameter.description"></a>

- *Type:* string

Description of the artifact.

---


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphContext.property.artifacts">artifacts</a></code> | <code>{[ key: string ]: <a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphArtifact">CdkGraphArtifact</a>}</code> | Get record of all graph artifacts keyed by artifact id. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphContext.property.graphJson">graphJson</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphArtifact">CdkGraphArtifact</a></code> | Get CdkGraph core `graph.json` artifact. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphContext.property.outdir">outdir</a></code> | <code>string</code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphContext.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | *No description.* |

---

##### `artifacts`<sup>Required</sup> <a name="artifacts" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.property.artifacts"></a>

```typescript
public readonly artifacts: {[ key: string ]: CdkGraphArtifact};
```

- *Type:* {[ key: string ]: <a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphArtifact">CdkGraphArtifact</a>}

Get record of all graph artifacts keyed by artifact id.

---

##### `graphJson`<sup>Required</sup> <a name="graphJson" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.property.graphJson"></a>

```typescript
public readonly graphJson: CdkGraphArtifact;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphArtifact">CdkGraphArtifact</a>

Get CdkGraph core `graph.json` artifact.

---

##### `outdir`<sup>Required</sup> <a name="outdir" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.property.outdir"></a>

```typescript
public readonly outdir: string;
```

- *Type:* string

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.CdkGraphContext.property.store"></a>

```typescript
public readonly store: Store;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

---


### CfnResourceNode <a name="CfnResourceNode" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode"></a>

CfnResourceNode defines an L1 cdk resource.

#### Initializers <a name="Initializers" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.Initializer"></a>

```typescript
import { CfnResourceNode } from '@aws-prototyping-sdk/cdk-graph'

new CfnResourceNode(props: ICfnResourceNodeProps)
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.Initializer.parameter.props">props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps">ICfnResourceNodeProps</a></code> | *No description.* |

---

##### `props`<sup>Required</sup> <a name="props" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.Initializer.parameter.props"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps">ICfnResourceNodeProps</a>

---

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addAttribute">addAttribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addFlag">addFlag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addMetadata">addMetadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addTag">addTag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.applyData">applyData</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findMetadata">findMetadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getAttribute">getAttribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getTag">getTag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.hasAttribute">hasAttribute</a></code> | Indicates if entity has a given attribute defined, and optionally with a specific value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.hasFlag">hasFlag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.hasMetadata">hasMetadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.hasTag">hasTag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateDestroy">mutateDestroy</a></code> | Destroys this node by removing all references and removing this node from the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.setAttribute">setAttribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.setTag">setTag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addChild">addChild</a></code> | Add *child* node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addLink">addLink</a></code> | Add *link* to another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addReverseLink">addReverseLink</a></code> | Add *link* from another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.doesDependOn">doesDependOn</a></code> | Indicates if *this node* depends on *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.doesReference">doesReference</a></code> | Indicates if *this node* references *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.find">find</a></code> | Recursively find the nearest sub-node matching predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findAll">findAll</a></code> | Return this construct and all of its sub-nodes in the given order. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findAllLinks">findAllLinks</a></code> | Return all direct links of this node and that of all sub-nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findAncestor">findAncestor</a></code> | Find nearest *ancestor* of *this node* matching given predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findChild">findChild</a></code> | Find child with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findLink">findLink</a></code> | Find link of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findLinks">findLinks</a></code> | Find all links of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getCfnProp">getCfnProp</a></code> | Get specific CloudFormation property. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getChild">getChild</a></code> | Get *child* node with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getLinkChains">getLinkChains</a></code> | Resolve all link chains. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getNearestAncestor">getNearestAncestor</a></code> | Gets the nearest **common** *ancestor* shared between *this node* and another *node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.isAncestor">isAncestor</a></code> | Indicates if a specific *node* is an *ancestor* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.isChild">isChild</a></code> | Indicates if specific *node* is a *child* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateCollapse">mutateCollapse</a></code> | Collapses all sub-nodes of *this node* into *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateCollapseTo">mutateCollapseTo</a></code> | Collapses *this node* into *an ancestor*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateCollapseToParent">mutateCollapseToParent</a></code> | Collapses *this node* into *it's parent node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateHoist">mutateHoist</a></code> | Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateMove">mutateMove</a></code> | Move this node into a new parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateRemoveChild">mutateRemoveChild</a></code> | Remove a *child* node from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateRemoveLink">mutateRemoveLink</a></code> | Remove a *link* from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateRemoveReverseLink">mutateRemoveReverseLink</a></code> | Remove a *link* to *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateUncluster">mutateUncluster</a></code> | Hoist all children to parent and collapse node to parent. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.toString">toString</a></code> | Get string representation of this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.isEquivalentFqn">isEquivalentFqn</a></code> | Evaluates if CfnResourceNode fqn is equivalent to ResourceNode fqn. |

---

##### `addAttribute` <a name="addAttribute" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addAttribute"></a>

```typescript
public addAttribute(key: string, value: any): void
```

Add attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addAttribute.parameter.value"></a>

- *Type:* any

---

##### `addFlag` <a name="addFlag" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addFlag"></a>

```typescript
public addFlag(flag: FlagEnum): void
```

Add flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `addMetadata` <a name="addMetadata" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addMetadata"></a>

```typescript
public addMetadata(metadataType: string, data: any): void
```

Add metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addMetadata.parameter.metadataType"></a>

- *Type:* string

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addMetadata.parameter.data"></a>

- *Type:* any

---

##### `addTag` <a name="addTag" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addTag"></a>

```typescript
public addTag(key: string, value: string): void
```

Add tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addTag.parameter.value"></a>

- *Type:* string

---

##### `applyData` <a name="applyData" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.applyData"></a>

```typescript
public applyData(data: IBaseEntityDataProps, overwrite?: boolean, applyFlags?: boolean): void
```

Applies data (attributes, metadata, tags, flag) to entity.

Generally used only for mutations such as collapse and consume to retain data.

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.applyData.parameter.data"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps">IBaseEntityDataProps</a>

The data to apply.

---

###### `overwrite`<sup>Optional</sup> <a name="overwrite" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.applyData.parameter.overwrite"></a>

- *Type:* boolean

---

###### `applyFlags`<sup>Optional</sup> <a name="applyFlags" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.applyData.parameter.applyFlags"></a>

- *Type:* boolean

Indicates if data is overwritten - Indicates if flags should be applied.

---

##### `findMetadata` <a name="findMetadata" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findMetadata"></a>

```typescript
public findMetadata(metadataType: string): MetadataEntry[]
```

Retrieves all metadata entries of a given type.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findMetadata.parameter.metadataType"></a>

- *Type:* string

---

##### `getAttribute` <a name="getAttribute" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getAttribute"></a>

```typescript
public getAttribute(key: string): any
```

Get attribute by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getAttribute.parameter.key"></a>

- *Type:* string

---

##### `getTag` <a name="getTag" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getTag"></a>

```typescript
public getTag(key: string): string
```

Get tag by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getTag.parameter.key"></a>

- *Type:* string

---

##### `hasAttribute` <a name="hasAttribute" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.hasAttribute"></a>

```typescript
public hasAttribute(key: string, value?: any): boolean
```

Indicates if entity has a given attribute defined, and optionally with a specific value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.hasAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.hasAttribute.parameter.value"></a>

- *Type:* any

---

##### `hasFlag` <a name="hasFlag" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.hasFlag"></a>

```typescript
public hasFlag(flag: FlagEnum): boolean
```

Indicates if entity has a given flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.hasFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `hasMetadata` <a name="hasMetadata" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.hasMetadata"></a>

```typescript
public hasMetadata(metadataType: string, data: any): boolean
```

Indicates if entity has matching metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.hasMetadata.parameter.metadataType"></a>

- *Type:* string

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.hasMetadata.parameter.data"></a>

- *Type:* any

---

##### `hasTag` <a name="hasTag" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.hasTag"></a>

```typescript
public hasTag(key: string, value?: string): boolean
```

Indicates if entity has tag, optionally verifying tag value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.hasTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.hasTag.parameter.value"></a>

- *Type:* string

---

##### `mutateDestroy` <a name="mutateDestroy" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateDestroy"></a>

```typescript
public mutateDestroy(strict?: boolean): void
```

Destroys this node by removing all references and removing this node from the store.

###### `strict`<sup>Optional</sup> <a name="strict" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateDestroy.parameter.strict"></a>

- *Type:* boolean

---

##### `setAttribute` <a name="setAttribute" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.setAttribute"></a>

```typescript
public setAttribute(key: string, value: any): void
```

Set attribute.

This will overwrite existing attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.setAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.setAttribute.parameter.value"></a>

- *Type:* any

---

##### `setTag` <a name="setTag" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.setTag"></a>

```typescript
public setTag(key: string, value: string): void
```

Set tag.

Will overwrite existing tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.setTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.setTag.parameter.value"></a>

- *Type:* string

---

##### `addChild` <a name="addChild" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addChild"></a>

```typescript
public addChild(node: Node): void
```

Add *child* node.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `addLink` <a name="addLink" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addLink"></a>

```typescript
public addLink(edge: Edge): void
```

Add *link* to another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `addReverseLink` <a name="addReverseLink" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addReverseLink"></a>

```typescript
public addReverseLink(edge: Edge): void
```

Add *link* from another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.addReverseLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `doesDependOn` <a name="doesDependOn" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.doesDependOn"></a>

```typescript
public doesDependOn(node: Node): boolean
```

Indicates if *this node* depends on *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.doesDependOn.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `doesReference` <a name="doesReference" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.doesReference"></a>

```typescript
public doesReference(node: Node): boolean
```

Indicates if *this node* references *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.doesReference.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `find` <a name="find" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.find"></a>

```typescript
public find(predicate: INodePredicate): Node
```

Recursively find the nearest sub-node matching predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.find.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

---

##### `findAll` <a name="findAll" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findAll"></a>

```typescript
public findAll(options?: IFindNodeOptions): Node[]
```

Return this construct and all of its sub-nodes in the given order.

Optionally filter nodes based on predicate.

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findAll.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindNodeOptions">IFindNodeOptions</a>

---

##### `findAllLinks` <a name="findAllLinks" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findAllLinks"></a>

```typescript
public findAllLinks(options?: IFindEdgeOptions): Edge[]
```

Return all direct links of this node and that of all sub-nodes.

Optionally filter links based on predicate.

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findAllLinks.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindEdgeOptions">IFindEdgeOptions</a>

---

##### `findAncestor` <a name="findAncestor" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findAncestor"></a>

```typescript
public findAncestor(predicate: INodePredicate, max?: number): Node
```

Find nearest *ancestor* of *this node* matching given predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findAncestor.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

Predicate to match ancestor.

---

###### `max`<sup>Optional</sup> <a name="max" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findAncestor.parameter.max"></a>

- *Type:* number

---

##### `findChild` <a name="findChild" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findChild"></a>

```typescript
public findChild(id: string): Node
```

Find child with given *id*.

Similar to `find` but does not throw error if no child found.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findChild.parameter.id"></a>

- *Type:* string

---

##### `findLink` <a name="findLink" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findLink"></a>

```typescript
public findLink(predicate: IEdgePredicate, reverse?: boolean, follow?: boolean, direct?: boolean): Edge
```

Find link of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct link
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findLink.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findLink.parameter.reverse"></a>

- *Type:* boolean

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findLink.parameter.follow"></a>

- *Type:* boolean

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findLink.parameter.direct"></a>

- *Type:* boolean

Indicates that only *direct* links should be searched.

---

##### `findLinks` <a name="findLinks" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findLinks"></a>

```typescript
public findLinks(predicate: IEdgePredicate, reverse?: boolean, follow?: boolean, direct?: boolean): Edge[]
```

Find all links of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct links
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findLinks.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findLinks.parameter.reverse"></a>

- *Type:* boolean

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findLinks.parameter.follow"></a>

- *Type:* boolean

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.findLinks.parameter.direct"></a>

- *Type:* boolean

Indicates that only *direct* links should be searched.

---

##### `getCfnProp` <a name="getCfnProp" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getCfnProp"></a>

```typescript
public getCfnProp(key: string): string | number | boolean | PlainObject | string | number | boolean | PlainObject[]
```

Get specific CloudFormation property.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getCfnProp.parameter.key"></a>

- *Type:* string

---

##### `getChild` <a name="getChild" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getChild"></a>

```typescript
public getChild(id: string): Node
```

Get *child* node with given *id*.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getChild.parameter.id"></a>

- *Type:* string

---

##### `getLinkChains` <a name="getLinkChains" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getLinkChains"></a>

```typescript
public getLinkChains(reverse?: boolean): any[][]
```

Resolve all link chains.

> [{@link EdgeChain }]({@link EdgeChain })

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getLinkChains.parameter.reverse"></a>

- *Type:* boolean

---

##### `getNearestAncestor` <a name="getNearestAncestor" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getNearestAncestor"></a>

```typescript
public getNearestAncestor(node: Node): Node
```

Gets the nearest **common** *ancestor* shared between *this node* and another *node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.getNearestAncestor.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `isAncestor` <a name="isAncestor" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.isAncestor"></a>

```typescript
public isAncestor(ancestor: Node): boolean
```

Indicates if a specific *node* is an *ancestor* of *this node*.

###### `ancestor`<sup>Required</sup> <a name="ancestor" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.isAncestor.parameter.ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `isChild` <a name="isChild" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.isChild"></a>

```typescript
public isChild(node: Node): boolean
```

Indicates if specific *node* is a *child* of *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.isChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateCollapse` <a name="mutateCollapse" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateCollapse"></a>

```typescript
public mutateCollapse(): void
```

Collapses all sub-nodes of *this node* into *this node*.

##### `mutateCollapseTo` <a name="mutateCollapseTo" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateCollapseTo"></a>

```typescript
public mutateCollapseTo(ancestor: Node): Node
```

Collapses *this node* into *an ancestor*.

###### `ancestor`<sup>Required</sup> <a name="ancestor" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateCollapseTo.parameter.ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateCollapseToParent` <a name="mutateCollapseToParent" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateCollapseToParent"></a>

```typescript
public mutateCollapseToParent(): Node
```

Collapses *this node* into *it's parent node*.

##### `mutateHoist` <a name="mutateHoist" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateHoist"></a>

```typescript
public mutateHoist(newParent: Node): void
```

Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor.

###### `newParent`<sup>Required</sup> <a name="newParent" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateHoist.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateMove` <a name="mutateMove" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateMove"></a>

```typescript
public mutateMove(newParent: Node): void
```

Move this node into a new parent node.

###### `newParent`<sup>Required</sup> <a name="newParent" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateMove.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

The parent to move this node to.

---

##### `mutateRemoveChild` <a name="mutateRemoveChild" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateRemoveChild"></a>

```typescript
public mutateRemoveChild(node: Node): boolean
```

Remove a *child* node from *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateRemoveChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateRemoveLink` <a name="mutateRemoveLink" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateRemoveLink"></a>

```typescript
public mutateRemoveLink(link: Edge): boolean
```

Remove a *link* from *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateRemoveLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutateRemoveReverseLink` <a name="mutateRemoveReverseLink" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateRemoveReverseLink"></a>

```typescript
public mutateRemoveReverseLink(link: Edge): boolean
```

Remove a *link* to *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateRemoveReverseLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutateUncluster` <a name="mutateUncluster" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.mutateUncluster"></a>

```typescript
public mutateUncluster(): void
```

Hoist all children to parent and collapse node to parent.

##### `toString` <a name="toString" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.toString"></a>

```typescript
public toString(): string
```

Get string representation of this node.

##### `isEquivalentFqn` <a name="isEquivalentFqn" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.isEquivalentFqn"></a>

```typescript
public isEquivalentFqn(resource: ResourceNode): boolean
```

Evaluates if CfnResourceNode fqn is equivalent to ResourceNode fqn.

*Example*

```typescript
`aws-cdk-lib.aws_lambda.Function` => `aws-cdk-lib.aws_lambda.CfnFunction`
```


###### `resource`<sup>Required</sup> <a name="resource" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.isEquivalentFqn.parameter.resource"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode">ResourceNode</a>

{@link Graph.ResourceNode } to compare.

---

#### Static Functions <a name="Static Functions" id="Static Functions"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.isCfnResourceNode">isCfnResourceNode</a></code> | Indicates if a node is a {@link CfnResourceNode}. |

---

##### `isCfnResourceNode` <a name="isCfnResourceNode" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.isCfnResourceNode"></a>

```typescript
import { CfnResourceNode } from '@aws-prototyping-sdk/cdk-graph'

CfnResourceNode.isCfnResourceNode(node: Node)
```

Indicates if a node is a {@link CfnResourceNode}.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.isCfnResourceNode.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.attributes">attributes</a></code> | <code>{[ key: string ]: string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> \| string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}</code> | Get *readonly* record of all attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.flags">flags</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]</code> | Get *readonly* list of all flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isDestroyed">isDestroyed</a></code> | <code>boolean</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isMutated">isMutated</a></code> | <code>boolean</code> | Indicates if the entity has had destructive mutations applied. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.metadata">metadata</a></code> | <code>constructs.MetadataEntry[]</code> | Get *readonly* list of all metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Reference to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.tags">tags</a></code> | <code>{[ key: string ]: string}</code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.uuid">uuid</a></code> | <code>string</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.allowDestructiveMutations">allowDestructiveMutations</a></code> | <code>boolean</code> | Indicates if this node allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.children">children</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get all direct child nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.dependedOnBy">dependedOnBy</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *depend on this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.dependencies">dependencies</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *this node depends on*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.dependencyLinks">dependencyLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]</code> | Gets list of {@link Dependency} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.depth">depth</a></code> | <code>number</code> | Indicates the depth of the node relative to root (0). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.id">id</a></code> | <code>string</code> | Node id, which is only unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isAsset">isAsset</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.ASSET}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isCfnFqn">isCfnFqn</a></code> | <code>boolean</code> | Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isCluster">isCluster</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.CLUSTER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isCustomResource">isCustomResource</a></code> | <code>boolean</code> | Indicates if node is a *Custom Resource*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isExtraneous">isExtraneous</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isGraphContainer">isGraphContainer</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isLeaf">isLeaf</a></code> | <code>boolean</code> | Indicates if this node is a *leaf* node, which means it does not have children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isTopLevel">isTopLevel</a></code> | <code>boolean</code> | Indicates if node is direct child of the graph root node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.links">links</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]</code> | Gets all links (edges) in which this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.nodeType">nodeType</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a></code> | Type of node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.path">path</a></code> | <code>string</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.referencedBy">referencedBy</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *reference this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.referenceLinks">referenceLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]</code> | Gets list of {@link Reference} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.references">references</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *this node references*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.reverseDependencyLinks">reverseDependencyLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]</code> | Gets list of {@link Dependency} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.reverseLinks">reverseLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]</code> | Gets all links (edges) in which this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.reverseReferenceLinks">reverseReferenceLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]</code> | Gets list of {@link Reference} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.scopes">scopes</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Gets descending ordered list of ancestors from the root. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.siblings">siblings</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of *siblings* of this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.cfnProps">cfnProps</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a></code> | Gets CloudFormation properties for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.cfnType">cfnType</a></code> | <code>string</code> | Get the CloudFormation resource type for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.constructInfo">constructInfo</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.constructInfoFqn">constructInfoFqn</a></code> | <code>string</code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.logicalId">logicalId</a></code> | <code>string</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.parent">parent</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.rootStack">rootStack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Get **root** stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.stack">stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Stack the node is contained in. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isImport">isImport</a></code> | <code>boolean</code> | Indicates if this CfnResource is imported (eg: `s3.Bucket.fromBucketArn`). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.resource">resource</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode">ResourceNode</a></code> | Reference to the L2 Resource that wraps this L1 CfnResource if it is wrapped. |

---

##### `attributes`<sup>Required</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.attributes"></a>

```typescript
public readonly attributes: {[ key: string ]: string | number | boolean | PlainObject | string | number | boolean | PlainObject[]};
```

- *Type:* {[ key: string ]: string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> | string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}

Get *readonly* record of all attributes.

---

##### `flags`<sup>Required</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.flags"></a>

```typescript
public readonly flags: FlagEnum[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]

Get *readonly* list of all flags.

---

##### `isDestroyed`<sup>Required</sup> <a name="isDestroyed" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isDestroyed"></a>

```typescript
public readonly isDestroyed: boolean;
```

- *Type:* boolean

Indicates if the entity has been destroyed (eg: removed from store).

---

##### `isMutated`<sup>Required</sup> <a name="isMutated" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isMutated"></a>

```typescript
public readonly isMutated: boolean;
```

- *Type:* boolean

Indicates if the entity has had destructive mutations applied.

---

##### `metadata`<sup>Required</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.metadata"></a>

```typescript
public readonly metadata: MetadataEntry[];
```

- *Type:* constructs.MetadataEntry[]

Get *readonly* list of all metadata entries.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.store"></a>

```typescript
public readonly store: Store;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Reference to the store.

---

##### `tags`<sup>Required</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.tags"></a>

```typescript
public readonly tags: {[ key: string ]: string};
```

- *Type:* {[ key: string ]: string}

Get *readonly* record of all tags.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.uuid"></a>

```typescript
public readonly uuid: string;
```

- *Type:* string

Universally unique identifier.

---

##### `allowDestructiveMutations`<sup>Required</sup> <a name="allowDestructiveMutations" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.allowDestructiveMutations"></a>

```typescript
public readonly allowDestructiveMutations: boolean;
```

- *Type:* boolean

Indicates if this node allows destructive mutations.

> [{@link Store.allowDestructiveMutations }]({@link Store.allowDestructiveMutations })

---

##### `children`<sup>Required</sup> <a name="children" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.children"></a>

```typescript
public readonly children: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get all direct child nodes.

---

##### `dependedOnBy`<sup>Required</sup> <a name="dependedOnBy" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.dependedOnBy"></a>

```typescript
public readonly dependedOnBy: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *depend on this node*.

> [{@link Node.reverseDependencyLinks }]({@link Node.reverseDependencyLinks })

---

##### `dependencies`<sup>Required</sup> <a name="dependencies" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.dependencies"></a>

```typescript
public readonly dependencies: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *this node depends on*.

> [{@link Node.dependencyLinks }]({@link Node.dependencyLinks })

---

##### `dependencyLinks`<sup>Required</sup> <a name="dependencyLinks" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.dependencyLinks"></a>

```typescript
public readonly dependencyLinks: Dependency[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]

Gets list of {@link Dependency} links (edges) where this node is the **source**.

---

##### `depth`<sup>Required</sup> <a name="depth" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.depth"></a>

```typescript
public readonly depth: number;
```

- *Type:* number

Indicates the depth of the node relative to root (0).

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.id"></a>

```typescript
public readonly id: string;
```

- *Type:* string

Node id, which is only unique within parent scope.

---

##### `isAsset`<sup>Required</sup> <a name="isAsset" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isAsset"></a>

```typescript
public readonly isAsset: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.ASSET}.

---

##### `isCfnFqn`<sup>Required</sup> <a name="isCfnFqn" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isCfnFqn"></a>

```typescript
public readonly isCfnFqn: boolean;
```

- *Type:* boolean

Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct.

> [{@link FlagEnum.CFN_FQN }]({@link FlagEnum.CFN_FQN })

---

##### `isCluster`<sup>Required</sup> <a name="isCluster" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isCluster"></a>

```typescript
public readonly isCluster: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.CLUSTER}.

---

##### `isCustomResource`<sup>Required</sup> <a name="isCustomResource" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isCustomResource"></a>

```typescript
public readonly isCustomResource: boolean;
```

- *Type:* boolean

Indicates if node is a *Custom Resource*.

---

##### `isExtraneous`<sup>Required</sup> <a name="isExtraneous" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isExtraneous"></a>

```typescript
public readonly isExtraneous: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children.

---

##### `isGraphContainer`<sup>Required</sup> <a name="isGraphContainer" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isGraphContainer"></a>

```typescript
public readonly isGraphContainer: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}.

---

##### `isLeaf`<sup>Required</sup> <a name="isLeaf" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isLeaf"></a>

```typescript
public readonly isLeaf: boolean;
```

- *Type:* boolean

Indicates if this node is a *leaf* node, which means it does not have children.

---

##### `isTopLevel`<sup>Required</sup> <a name="isTopLevel" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isTopLevel"></a>

```typescript
public readonly isTopLevel: boolean;
```

- *Type:* boolean

Indicates if node is direct child of the graph root node.

---

##### `links`<sup>Required</sup> <a name="links" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.links"></a>

```typescript
public readonly links: Edge[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]

Gets all links (edges) in which this node is the **source**.

---

##### `nodeType`<sup>Required</sup> <a name="nodeType" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.nodeType"></a>

```typescript
public readonly nodeType: NodeTypeEnum;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a>

Type of node.

---

##### `path`<sup>Required</sup> <a name="path" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.path"></a>

```typescript
public readonly path: string;
```

- *Type:* string

Path of the node.

---

##### `referencedBy`<sup>Required</sup> <a name="referencedBy" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.referencedBy"></a>

```typescript
public readonly referencedBy: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *reference this node*.

> [{@link Node.reverseReferenceLinks }]({@link Node.reverseReferenceLinks })

---

##### `referenceLinks`<sup>Required</sup> <a name="referenceLinks" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.referenceLinks"></a>

```typescript
public readonly referenceLinks: Reference[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]

Gets list of {@link Reference} links (edges) where this node is the **source**.

---

##### `references`<sup>Required</sup> <a name="references" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.references"></a>

```typescript
public readonly references: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *this node references*.

> [{@link Node.referenceLinks }]({@link Node.referenceLinks })

---

##### `reverseDependencyLinks`<sup>Required</sup> <a name="reverseDependencyLinks" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.reverseDependencyLinks"></a>

```typescript
public readonly reverseDependencyLinks: Dependency[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]

Gets list of {@link Dependency} links (edges) where this node is the **target**.

---

##### `reverseLinks`<sup>Required</sup> <a name="reverseLinks" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.reverseLinks"></a>

```typescript
public readonly reverseLinks: Edge[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]

Gets all links (edges) in which this node is the **target**.

---

##### `reverseReferenceLinks`<sup>Required</sup> <a name="reverseReferenceLinks" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.reverseReferenceLinks"></a>

```typescript
public readonly reverseReferenceLinks: Reference[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]

Gets list of {@link Reference} links (edges) where this node is the **target**.

---

##### `scopes`<sup>Required</sup> <a name="scopes" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.scopes"></a>

```typescript
public readonly scopes: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Gets descending ordered list of ancestors from the root.

---

##### `siblings`<sup>Required</sup> <a name="siblings" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.siblings"></a>

```typescript
public readonly siblings: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of *siblings* of this node.

---

##### `cfnProps`<sup>Optional</sup> <a name="cfnProps" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.cfnProps"></a>

```typescript
public readonly cfnProps: PlainObject;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>

Gets CloudFormation properties for this node.

---

##### `cfnType`<sup>Optional</sup> <a name="cfnType" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.cfnType"></a>

```typescript
public readonly cfnType: string;
```

- *Type:* string

Get the CloudFormation resource type for this node.

---

##### `constructInfo`<sup>Optional</sup> <a name="constructInfo" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.constructInfo"></a>

```typescript
public readonly constructInfo: ConstructInfo;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `constructInfoFqn`<sup>Optional</sup> <a name="constructInfoFqn" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.constructInfoFqn"></a>

```typescript
public readonly constructInfoFqn: string;
```

- *Type:* string

Synthesized construct information defining jii resolution data.

---

##### `logicalId`<sup>Optional</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.logicalId"></a>

```typescript
public readonly logicalId: string;
```

- *Type:* string

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.parent"></a>

```typescript
public readonly parent: Node;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

Only the root node should not have parent.

---

##### `rootStack`<sup>Optional</sup> <a name="rootStack" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.rootStack"></a>

```typescript
public readonly rootStack: StackNode;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Get **root** stack.

---

##### `stack`<sup>Optional</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.stack"></a>

```typescript
public readonly stack: StackNode;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained in.

---

##### `isImport`<sup>Required</sup> <a name="isImport" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.isImport"></a>

```typescript
public readonly isImport: boolean;
```

- *Type:* boolean

Indicates if this CfnResource is imported (eg: `s3.Bucket.fromBucketArn`).

---

##### `resource`<sup>Optional</sup> <a name="resource" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.resource"></a>

```typescript
public readonly resource: ResourceNode;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode">ResourceNode</a>

Reference to the L2 Resource that wraps this L1 CfnResource if it is wrapped.

---

#### Constants <a name="Constants" id="Constants"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.ATT_IMPORT_ARN_TOKEN">ATT_IMPORT_ARN_TOKEN</a></code> | <code>string</code> | Normalized CfnReference attribute. |

---

##### `ATT_IMPORT_ARN_TOKEN`<sup>Required</sup> <a name="ATT_IMPORT_ARN_TOKEN" id="@aws-prototyping-sdk/cdk-graph.CfnResourceNode.property.ATT_IMPORT_ARN_TOKEN"></a>

```typescript
public readonly ATT_IMPORT_ARN_TOKEN: string;
```

- *Type:* string

Normalized CfnReference attribute.

---

### Dependency <a name="Dependency" id="@aws-prototyping-sdk/cdk-graph.Dependency"></a>

Dependency edge class defines CloudFormation dependency between resources.

#### Initializers <a name="Initializers" id="@aws-prototyping-sdk/cdk-graph.Dependency.Initializer"></a>

```typescript
import { Dependency } from '@aws-prototyping-sdk/cdk-graph'

new Dependency(props: ITypedEdgeProps)
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.Initializer.parameter.props">props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps">ITypedEdgeProps</a></code> | *No description.* |

---

##### `props`<sup>Required</sup> <a name="props" id="@aws-prototyping-sdk/cdk-graph.Dependency.Initializer.parameter.props"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps">ITypedEdgeProps</a>

---

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.addAttribute">addAttribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.addFlag">addFlag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.addMetadata">addMetadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.addTag">addTag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.applyData">applyData</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.findMetadata">findMetadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.getAttribute">getAttribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.getTag">getTag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.hasAttribute">hasAttribute</a></code> | Indicates if entity has a given attribute defined, and optionally with a specific value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.hasFlag">hasFlag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.hasMetadata">hasMetadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.hasTag">hasTag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.mutateDestroy">mutateDestroy</a></code> | Destroy the edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.setAttribute">setAttribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.setTag">setTag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.isEquivalent">isEquivalent</a></code> | Indicates if this edge is equivalent to another edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.mutateConsume">mutateConsume</a></code> | Merge an equivalent edge's data into this edge and destroy the other edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.mutateDirection">mutateDirection</a></code> | Change the edge **direction**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.mutateSource">mutateSource</a></code> | Change the edge **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.mutateTarget">mutateTarget</a></code> | Change the edge **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.toString">toString</a></code> | Get string representation of this edge. |

---

##### `addAttribute` <a name="addAttribute" id="@aws-prototyping-sdk/cdk-graph.Dependency.addAttribute"></a>

```typescript
public addAttribute(key: string, value: any): void
```

Add attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Dependency.addAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Dependency.addAttribute.parameter.value"></a>

- *Type:* any

---

##### `addFlag` <a name="addFlag" id="@aws-prototyping-sdk/cdk-graph.Dependency.addFlag"></a>

```typescript
public addFlag(flag: FlagEnum): void
```

Add flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.Dependency.addFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `addMetadata` <a name="addMetadata" id="@aws-prototyping-sdk/cdk-graph.Dependency.addMetadata"></a>

```typescript
public addMetadata(metadataType: string, data: any): void
```

Add metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.Dependency.addMetadata.parameter.metadataType"></a>

- *Type:* string

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.Dependency.addMetadata.parameter.data"></a>

- *Type:* any

---

##### `addTag` <a name="addTag" id="@aws-prototyping-sdk/cdk-graph.Dependency.addTag"></a>

```typescript
public addTag(key: string, value: string): void
```

Add tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Dependency.addTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Dependency.addTag.parameter.value"></a>

- *Type:* string

---

##### `applyData` <a name="applyData" id="@aws-prototyping-sdk/cdk-graph.Dependency.applyData"></a>

```typescript
public applyData(data: IBaseEntityDataProps, overwrite?: boolean, applyFlags?: boolean): void
```

Applies data (attributes, metadata, tags, flag) to entity.

Generally used only for mutations such as collapse and consume to retain data.

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.Dependency.applyData.parameter.data"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps">IBaseEntityDataProps</a>

The data to apply.

---

###### `overwrite`<sup>Optional</sup> <a name="overwrite" id="@aws-prototyping-sdk/cdk-graph.Dependency.applyData.parameter.overwrite"></a>

- *Type:* boolean

---

###### `applyFlags`<sup>Optional</sup> <a name="applyFlags" id="@aws-prototyping-sdk/cdk-graph.Dependency.applyData.parameter.applyFlags"></a>

- *Type:* boolean

Indicates if data is overwritten - Indicates if flags should be applied.

---

##### `findMetadata` <a name="findMetadata" id="@aws-prototyping-sdk/cdk-graph.Dependency.findMetadata"></a>

```typescript
public findMetadata(metadataType: string): MetadataEntry[]
```

Retrieves all metadata entries of a given type.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.Dependency.findMetadata.parameter.metadataType"></a>

- *Type:* string

---

##### `getAttribute` <a name="getAttribute" id="@aws-prototyping-sdk/cdk-graph.Dependency.getAttribute"></a>

```typescript
public getAttribute(key: string): any
```

Get attribute by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Dependency.getAttribute.parameter.key"></a>

- *Type:* string

---

##### `getTag` <a name="getTag" id="@aws-prototyping-sdk/cdk-graph.Dependency.getTag"></a>

```typescript
public getTag(key: string): string
```

Get tag by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Dependency.getTag.parameter.key"></a>

- *Type:* string

---

##### `hasAttribute` <a name="hasAttribute" id="@aws-prototyping-sdk/cdk-graph.Dependency.hasAttribute"></a>

```typescript
public hasAttribute(key: string, value?: any): boolean
```

Indicates if entity has a given attribute defined, and optionally with a specific value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Dependency.hasAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Dependency.hasAttribute.parameter.value"></a>

- *Type:* any

---

##### `hasFlag` <a name="hasFlag" id="@aws-prototyping-sdk/cdk-graph.Dependency.hasFlag"></a>

```typescript
public hasFlag(flag: FlagEnum): boolean
```

Indicates if entity has a given flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.Dependency.hasFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `hasMetadata` <a name="hasMetadata" id="@aws-prototyping-sdk/cdk-graph.Dependency.hasMetadata"></a>

```typescript
public hasMetadata(metadataType: string, data: any): boolean
```

Indicates if entity has matching metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.Dependency.hasMetadata.parameter.metadataType"></a>

- *Type:* string

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.Dependency.hasMetadata.parameter.data"></a>

- *Type:* any

---

##### `hasTag` <a name="hasTag" id="@aws-prototyping-sdk/cdk-graph.Dependency.hasTag"></a>

```typescript
public hasTag(key: string, value?: string): boolean
```

Indicates if entity has tag, optionally verifying tag value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Dependency.hasTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Dependency.hasTag.parameter.value"></a>

- *Type:* string

---

##### `mutateDestroy` <a name="mutateDestroy" id="@aws-prototyping-sdk/cdk-graph.Dependency.mutateDestroy"></a>

```typescript
public mutateDestroy(_strict?: boolean): void
```

Destroy the edge.

Remove all references and remove from store.

###### `_strict`<sup>Optional</sup> <a name="_strict" id="@aws-prototyping-sdk/cdk-graph.Dependency.mutateDestroy.parameter._strict"></a>

- *Type:* boolean

---

##### `setAttribute` <a name="setAttribute" id="@aws-prototyping-sdk/cdk-graph.Dependency.setAttribute"></a>

```typescript
public setAttribute(key: string, value: any): void
```

Set attribute.

This will overwrite existing attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Dependency.setAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Dependency.setAttribute.parameter.value"></a>

- *Type:* any

---

##### `setTag` <a name="setTag" id="@aws-prototyping-sdk/cdk-graph.Dependency.setTag"></a>

```typescript
public setTag(key: string, value: string): void
```

Set tag.

Will overwrite existing tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Dependency.setTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Dependency.setTag.parameter.value"></a>

- *Type:* string

---

##### `isEquivalent` <a name="isEquivalent" id="@aws-prototyping-sdk/cdk-graph.Dependency.isEquivalent"></a>

```typescript
public isEquivalent(edge: Edge): boolean
```

Indicates if this edge is equivalent to another edge.

Edges are considered equivalent if they share same type, source, and target.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.Dependency.isEquivalent.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutateConsume` <a name="mutateConsume" id="@aws-prototyping-sdk/cdk-graph.Dependency.mutateConsume"></a>

```typescript
public mutateConsume(edge: Edge): void
```

Merge an equivalent edge's data into this edge and destroy the other edge.

Used during filtering operations to consolidate equivalent edges.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.Dependency.mutateConsume.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

The edge to consume.

---

##### `mutateDirection` <a name="mutateDirection" id="@aws-prototyping-sdk/cdk-graph.Dependency.mutateDirection"></a>

```typescript
public mutateDirection(direction: EdgeDirectionEnum): void
```

Change the edge **direction**.

###### `direction`<sup>Required</sup> <a name="direction" id="@aws-prototyping-sdk/cdk-graph.Dependency.mutateDirection.parameter.direction"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a>

---

##### `mutateSource` <a name="mutateSource" id="@aws-prototyping-sdk/cdk-graph.Dependency.mutateSource"></a>

```typescript
public mutateSource(node: Node): void
```

Change the edge **source**.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.Dependency.mutateSource.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateTarget` <a name="mutateTarget" id="@aws-prototyping-sdk/cdk-graph.Dependency.mutateTarget"></a>

```typescript
public mutateTarget(node: Node): void
```

Change the edge **target**.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.Dependency.mutateTarget.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `toString` <a name="toString" id="@aws-prototyping-sdk/cdk-graph.Dependency.toString"></a>

```typescript
public toString(): string
```

Get string representation of this edge.

#### Static Functions <a name="Static Functions" id="Static Functions"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.findAllInChain">findAllInChain</a></code> | Find all matching edges based on predicate within an EdgeChain. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.findInChain">findInChain</a></code> | Find first edge matching predicate within an EdgeChain. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.isDependency">isDependency</a></code> | Indicates if given edge is a {@link Dependency} edge. |

---

##### `findAllInChain` <a name="findAllInChain" id="@aws-prototyping-sdk/cdk-graph.Dependency.findAllInChain"></a>

```typescript
import { Dependency } from '@aws-prototyping-sdk/cdk-graph'

Dependency.findAllInChain(chain: any[], predicate: IEdgePredicate)
```

Find all matching edges based on predicate within an EdgeChain.

###### `chain`<sup>Required</sup> <a name="chain" id="@aws-prototyping-sdk/cdk-graph.Dependency.findAllInChain.parameter.chain"></a>

- *Type:* any[]

---

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.Dependency.findAllInChain.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

---

##### `findInChain` <a name="findInChain" id="@aws-prototyping-sdk/cdk-graph.Dependency.findInChain"></a>

```typescript
import { Dependency } from '@aws-prototyping-sdk/cdk-graph'

Dependency.findInChain(chain: any[], predicate: IEdgePredicate)
```

Find first edge matching predicate within an EdgeChain.

###### `chain`<sup>Required</sup> <a name="chain" id="@aws-prototyping-sdk/cdk-graph.Dependency.findInChain.parameter.chain"></a>

- *Type:* any[]

---

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.Dependency.findInChain.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

---

##### `isDependency` <a name="isDependency" id="@aws-prototyping-sdk/cdk-graph.Dependency.isDependency"></a>

```typescript
import { Dependency } from '@aws-prototyping-sdk/cdk-graph'

Dependency.isDependency(edge: Edge)
```

Indicates if given edge is a {@link Dependency} edge.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.Dependency.isDependency.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.property.attributes">attributes</a></code> | <code>{[ key: string ]: string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> \| string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}</code> | Get *readonly* record of all attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.property.flags">flags</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]</code> | Get *readonly* list of all flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.property.isDestroyed">isDestroyed</a></code> | <code>boolean</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.property.isMutated">isMutated</a></code> | <code>boolean</code> | Indicates if the entity has had destructive mutations applied. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.property.metadata">metadata</a></code> | <code>constructs.MetadataEntry[]</code> | Get *readonly* list of all metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Reference to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.property.tags">tags</a></code> | <code>{[ key: string ]: string}</code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.property.uuid">uuid</a></code> | <code>string</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.property.allowDestructiveMutations">allowDestructiveMutations</a></code> | <code>boolean</code> | Indicates if edge allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.property.direction">direction</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a></code> | Indicates the direction in which the edge is directed. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.property.edgeType">edgeType</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum">EdgeTypeEnum</a></code> | Type of edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.property.isClosed">isClosed</a></code> | <code>boolean</code> | Indicates if the Edge's **source** and **target** are the same, or were the same when it was created (prior to mutations). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.property.isCrossStack">isCrossStack</a></code> | <code>boolean</code> | Indicates if **source** and **target** nodes reside in different *root* stacks. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.property.isExtraneous">isExtraneous</a></code> | <code>boolean</code> | Indicates if edge is extraneous which is determined by explicitly having *EXTRANEOUS* flag added and/or being a closed loop (source===target). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.property.source">source</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Edge **source** is the node that defines the edge (tail). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.property.target">target</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Edge **target** is the node being referenced by the **source** (head). |

---

##### `attributes`<sup>Required</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.Dependency.property.attributes"></a>

```typescript
public readonly attributes: {[ key: string ]: string | number | boolean | PlainObject | string | number | boolean | PlainObject[]};
```

- *Type:* {[ key: string ]: string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> | string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}

Get *readonly* record of all attributes.

---

##### `flags`<sup>Required</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.Dependency.property.flags"></a>

```typescript
public readonly flags: FlagEnum[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]

Get *readonly* list of all flags.

---

##### `isDestroyed`<sup>Required</sup> <a name="isDestroyed" id="@aws-prototyping-sdk/cdk-graph.Dependency.property.isDestroyed"></a>

```typescript
public readonly isDestroyed: boolean;
```

- *Type:* boolean

Indicates if the entity has been destroyed (eg: removed from store).

---

##### `isMutated`<sup>Required</sup> <a name="isMutated" id="@aws-prototyping-sdk/cdk-graph.Dependency.property.isMutated"></a>

```typescript
public readonly isMutated: boolean;
```

- *Type:* boolean

Indicates if the entity has had destructive mutations applied.

---

##### `metadata`<sup>Required</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.Dependency.property.metadata"></a>

```typescript
public readonly metadata: MetadataEntry[];
```

- *Type:* constructs.MetadataEntry[]

Get *readonly* list of all metadata entries.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.Dependency.property.store"></a>

```typescript
public readonly store: Store;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Reference to the store.

---

##### `tags`<sup>Required</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.Dependency.property.tags"></a>

```typescript
public readonly tags: {[ key: string ]: string};
```

- *Type:* {[ key: string ]: string}

Get *readonly* record of all tags.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.Dependency.property.uuid"></a>

```typescript
public readonly uuid: string;
```

- *Type:* string

Universally unique identifier.

---

##### `allowDestructiveMutations`<sup>Required</sup> <a name="allowDestructiveMutations" id="@aws-prototyping-sdk/cdk-graph.Dependency.property.allowDestructiveMutations"></a>

```typescript
public readonly allowDestructiveMutations: boolean;
```

- *Type:* boolean

Indicates if edge allows destructive mutations.

---

##### `direction`<sup>Required</sup> <a name="direction" id="@aws-prototyping-sdk/cdk-graph.Dependency.property.direction"></a>

```typescript
public readonly direction: EdgeDirectionEnum;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a>

Indicates the direction in which the edge is directed.

---

##### `edgeType`<sup>Required</sup> <a name="edgeType" id="@aws-prototyping-sdk/cdk-graph.Dependency.property.edgeType"></a>

```typescript
public readonly edgeType: EdgeTypeEnum;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum">EdgeTypeEnum</a>

Type of edge.

---

##### `isClosed`<sup>Required</sup> <a name="isClosed" id="@aws-prototyping-sdk/cdk-graph.Dependency.property.isClosed"></a>

```typescript
public readonly isClosed: boolean;
```

- *Type:* boolean

Indicates if the Edge's **source** and **target** are the same, or were the same when it was created (prior to mutations).

To check whether it was originally closed, use `hasFlag(FlagEnum.CLOSED_EDGE)` instead.

---

##### `isCrossStack`<sup>Required</sup> <a name="isCrossStack" id="@aws-prototyping-sdk/cdk-graph.Dependency.property.isCrossStack"></a>

```typescript
public readonly isCrossStack: boolean;
```

- *Type:* boolean

Indicates if **source** and **target** nodes reside in different *root* stacks.

---

##### `isExtraneous`<sup>Required</sup> <a name="isExtraneous" id="@aws-prototyping-sdk/cdk-graph.Dependency.property.isExtraneous"></a>

```typescript
public readonly isExtraneous: boolean;
```

- *Type:* boolean

Indicates if edge is extraneous which is determined by explicitly having *EXTRANEOUS* flag added and/or being a closed loop (source===target).

---

##### `source`<sup>Required</sup> <a name="source" id="@aws-prototyping-sdk/cdk-graph.Dependency.property.source"></a>

```typescript
public readonly source: Node;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Edge **source** is the node that defines the edge (tail).

---

##### `target`<sup>Required</sup> <a name="target" id="@aws-prototyping-sdk/cdk-graph.Dependency.property.target"></a>

```typescript
public readonly target: Node;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Edge **target** is the node being referenced by the **source** (head).

---

#### Constants <a name="Constants" id="Constants"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency.property.PREFIX">PREFIX</a></code> | <code>string</code> | Edge prefix to denote dependency edge. |

---

##### `PREFIX`<sup>Required</sup> <a name="PREFIX" id="@aws-prototyping-sdk/cdk-graph.Dependency.property.PREFIX"></a>

```typescript
public readonly PREFIX: string;
```

- *Type:* string

Edge prefix to denote dependency edge.

---

### Edge <a name="Edge" id="@aws-prototyping-sdk/cdk-graph.Edge"></a>

- *Implements:* <a href="#@aws-prototyping-sdk/cdk-graph.ISerializableEdge">ISerializableEdge</a>

Edge class defines a link (relationship) between nodes, as in standard [graph theory](https://en.wikipedia.org/wiki/Graph_theory).

#### Initializers <a name="Initializers" id="@aws-prototyping-sdk/cdk-graph.Edge.Initializer"></a>

```typescript
import { Edge } from '@aws-prototyping-sdk/cdk-graph'

new Edge(props: IEdgeProps)
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.Initializer.parameter.props">props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.IEdgeProps">IEdgeProps</a></code> | *No description.* |

---

##### `props`<sup>Required</sup> <a name="props" id="@aws-prototyping-sdk/cdk-graph.Edge.Initializer.parameter.props"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgeProps">IEdgeProps</a>

---

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.addAttribute">addAttribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.addFlag">addFlag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.addMetadata">addMetadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.addTag">addTag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.applyData">applyData</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.findMetadata">findMetadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.getAttribute">getAttribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.getTag">getTag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.hasAttribute">hasAttribute</a></code> | Indicates if entity has a given attribute defined, and optionally with a specific value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.hasFlag">hasFlag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.hasMetadata">hasMetadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.hasTag">hasTag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.mutateDestroy">mutateDestroy</a></code> | Destroy the edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.setAttribute">setAttribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.setTag">setTag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.isEquivalent">isEquivalent</a></code> | Indicates if this edge is equivalent to another edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.mutateConsume">mutateConsume</a></code> | Merge an equivalent edge's data into this edge and destroy the other edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.mutateDirection">mutateDirection</a></code> | Change the edge **direction**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.mutateSource">mutateSource</a></code> | Change the edge **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.mutateTarget">mutateTarget</a></code> | Change the edge **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.toString">toString</a></code> | Get string representation of this edge. |

---

##### `addAttribute` <a name="addAttribute" id="@aws-prototyping-sdk/cdk-graph.Edge.addAttribute"></a>

```typescript
public addAttribute(key: string, value: any): void
```

Add attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Edge.addAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Edge.addAttribute.parameter.value"></a>

- *Type:* any

---

##### `addFlag` <a name="addFlag" id="@aws-prototyping-sdk/cdk-graph.Edge.addFlag"></a>

```typescript
public addFlag(flag: FlagEnum): void
```

Add flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.Edge.addFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `addMetadata` <a name="addMetadata" id="@aws-prototyping-sdk/cdk-graph.Edge.addMetadata"></a>

```typescript
public addMetadata(metadataType: string, data: any): void
```

Add metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.Edge.addMetadata.parameter.metadataType"></a>

- *Type:* string

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.Edge.addMetadata.parameter.data"></a>

- *Type:* any

---

##### `addTag` <a name="addTag" id="@aws-prototyping-sdk/cdk-graph.Edge.addTag"></a>

```typescript
public addTag(key: string, value: string): void
```

Add tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Edge.addTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Edge.addTag.parameter.value"></a>

- *Type:* string

---

##### `applyData` <a name="applyData" id="@aws-prototyping-sdk/cdk-graph.Edge.applyData"></a>

```typescript
public applyData(data: IBaseEntityDataProps, overwrite?: boolean, applyFlags?: boolean): void
```

Applies data (attributes, metadata, tags, flag) to entity.

Generally used only for mutations such as collapse and consume to retain data.

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.Edge.applyData.parameter.data"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps">IBaseEntityDataProps</a>

The data to apply.

---

###### `overwrite`<sup>Optional</sup> <a name="overwrite" id="@aws-prototyping-sdk/cdk-graph.Edge.applyData.parameter.overwrite"></a>

- *Type:* boolean

---

###### `applyFlags`<sup>Optional</sup> <a name="applyFlags" id="@aws-prototyping-sdk/cdk-graph.Edge.applyData.parameter.applyFlags"></a>

- *Type:* boolean

Indicates if data is overwritten - Indicates if flags should be applied.

---

##### `findMetadata` <a name="findMetadata" id="@aws-prototyping-sdk/cdk-graph.Edge.findMetadata"></a>

```typescript
public findMetadata(metadataType: string): MetadataEntry[]
```

Retrieves all metadata entries of a given type.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.Edge.findMetadata.parameter.metadataType"></a>

- *Type:* string

---

##### `getAttribute` <a name="getAttribute" id="@aws-prototyping-sdk/cdk-graph.Edge.getAttribute"></a>

```typescript
public getAttribute(key: string): any
```

Get attribute by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Edge.getAttribute.parameter.key"></a>

- *Type:* string

---

##### `getTag` <a name="getTag" id="@aws-prototyping-sdk/cdk-graph.Edge.getTag"></a>

```typescript
public getTag(key: string): string
```

Get tag by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Edge.getTag.parameter.key"></a>

- *Type:* string

---

##### `hasAttribute` <a name="hasAttribute" id="@aws-prototyping-sdk/cdk-graph.Edge.hasAttribute"></a>

```typescript
public hasAttribute(key: string, value?: any): boolean
```

Indicates if entity has a given attribute defined, and optionally with a specific value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Edge.hasAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Edge.hasAttribute.parameter.value"></a>

- *Type:* any

---

##### `hasFlag` <a name="hasFlag" id="@aws-prototyping-sdk/cdk-graph.Edge.hasFlag"></a>

```typescript
public hasFlag(flag: FlagEnum): boolean
```

Indicates if entity has a given flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.Edge.hasFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `hasMetadata` <a name="hasMetadata" id="@aws-prototyping-sdk/cdk-graph.Edge.hasMetadata"></a>

```typescript
public hasMetadata(metadataType: string, data: any): boolean
```

Indicates if entity has matching metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.Edge.hasMetadata.parameter.metadataType"></a>

- *Type:* string

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.Edge.hasMetadata.parameter.data"></a>

- *Type:* any

---

##### `hasTag` <a name="hasTag" id="@aws-prototyping-sdk/cdk-graph.Edge.hasTag"></a>

```typescript
public hasTag(key: string, value?: string): boolean
```

Indicates if entity has tag, optionally verifying tag value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Edge.hasTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Edge.hasTag.parameter.value"></a>

- *Type:* string

---

##### `mutateDestroy` <a name="mutateDestroy" id="@aws-prototyping-sdk/cdk-graph.Edge.mutateDestroy"></a>

```typescript
public mutateDestroy(_strict?: boolean): void
```

Destroy the edge.

Remove all references and remove from store.

###### `_strict`<sup>Optional</sup> <a name="_strict" id="@aws-prototyping-sdk/cdk-graph.Edge.mutateDestroy.parameter._strict"></a>

- *Type:* boolean

---

##### `setAttribute` <a name="setAttribute" id="@aws-prototyping-sdk/cdk-graph.Edge.setAttribute"></a>

```typescript
public setAttribute(key: string, value: any): void
```

Set attribute.

This will overwrite existing attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Edge.setAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Edge.setAttribute.parameter.value"></a>

- *Type:* any

---

##### `setTag` <a name="setTag" id="@aws-prototyping-sdk/cdk-graph.Edge.setTag"></a>

```typescript
public setTag(key: string, value: string): void
```

Set tag.

Will overwrite existing tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Edge.setTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Edge.setTag.parameter.value"></a>

- *Type:* string

---

##### `isEquivalent` <a name="isEquivalent" id="@aws-prototyping-sdk/cdk-graph.Edge.isEquivalent"></a>

```typescript
public isEquivalent(edge: Edge): boolean
```

Indicates if this edge is equivalent to another edge.

Edges are considered equivalent if they share same type, source, and target.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.Edge.isEquivalent.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutateConsume` <a name="mutateConsume" id="@aws-prototyping-sdk/cdk-graph.Edge.mutateConsume"></a>

```typescript
public mutateConsume(edge: Edge): void
```

Merge an equivalent edge's data into this edge and destroy the other edge.

Used during filtering operations to consolidate equivalent edges.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.Edge.mutateConsume.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

The edge to consume.

---

##### `mutateDirection` <a name="mutateDirection" id="@aws-prototyping-sdk/cdk-graph.Edge.mutateDirection"></a>

```typescript
public mutateDirection(direction: EdgeDirectionEnum): void
```

Change the edge **direction**.

###### `direction`<sup>Required</sup> <a name="direction" id="@aws-prototyping-sdk/cdk-graph.Edge.mutateDirection.parameter.direction"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a>

---

##### `mutateSource` <a name="mutateSource" id="@aws-prototyping-sdk/cdk-graph.Edge.mutateSource"></a>

```typescript
public mutateSource(node: Node): void
```

Change the edge **source**.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.Edge.mutateSource.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateTarget` <a name="mutateTarget" id="@aws-prototyping-sdk/cdk-graph.Edge.mutateTarget"></a>

```typescript
public mutateTarget(node: Node): void
```

Change the edge **target**.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.Edge.mutateTarget.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `toString` <a name="toString" id="@aws-prototyping-sdk/cdk-graph.Edge.toString"></a>

```typescript
public toString(): string
```

Get string representation of this edge.

#### Static Functions <a name="Static Functions" id="Static Functions"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.findAllInChain">findAllInChain</a></code> | Find all matching edges based on predicate within an EdgeChain. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.findInChain">findInChain</a></code> | Find first edge matching predicate within an EdgeChain. |

---

##### `findAllInChain` <a name="findAllInChain" id="@aws-prototyping-sdk/cdk-graph.Edge.findAllInChain"></a>

```typescript
import { Edge } from '@aws-prototyping-sdk/cdk-graph'

Edge.findAllInChain(chain: any[], predicate: IEdgePredicate)
```

Find all matching edges based on predicate within an EdgeChain.

###### `chain`<sup>Required</sup> <a name="chain" id="@aws-prototyping-sdk/cdk-graph.Edge.findAllInChain.parameter.chain"></a>

- *Type:* any[]

---

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.Edge.findAllInChain.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

---

##### `findInChain` <a name="findInChain" id="@aws-prototyping-sdk/cdk-graph.Edge.findInChain"></a>

```typescript
import { Edge } from '@aws-prototyping-sdk/cdk-graph'

Edge.findInChain(chain: any[], predicate: IEdgePredicate)
```

Find first edge matching predicate within an EdgeChain.

###### `chain`<sup>Required</sup> <a name="chain" id="@aws-prototyping-sdk/cdk-graph.Edge.findInChain.parameter.chain"></a>

- *Type:* any[]

---

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.Edge.findInChain.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

---

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.property.attributes">attributes</a></code> | <code>{[ key: string ]: string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> \| string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}</code> | Get *readonly* record of all attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.property.flags">flags</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]</code> | Get *readonly* list of all flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.property.isDestroyed">isDestroyed</a></code> | <code>boolean</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.property.isMutated">isMutated</a></code> | <code>boolean</code> | Indicates if the entity has had destructive mutations applied. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.property.metadata">metadata</a></code> | <code>constructs.MetadataEntry[]</code> | Get *readonly* list of all metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Reference to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.property.tags">tags</a></code> | <code>{[ key: string ]: string}</code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.property.uuid">uuid</a></code> | <code>string</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.property.allowDestructiveMutations">allowDestructiveMutations</a></code> | <code>boolean</code> | Indicates if edge allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.property.direction">direction</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a></code> | Indicates the direction in which the edge is directed. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.property.edgeType">edgeType</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum">EdgeTypeEnum</a></code> | Type of edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.property.isClosed">isClosed</a></code> | <code>boolean</code> | Indicates if the Edge's **source** and **target** are the same, or were the same when it was created (prior to mutations). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.property.isCrossStack">isCrossStack</a></code> | <code>boolean</code> | Indicates if **source** and **target** nodes reside in different *root* stacks. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.property.isExtraneous">isExtraneous</a></code> | <code>boolean</code> | Indicates if edge is extraneous which is determined by explicitly having *EXTRANEOUS* flag added and/or being a closed loop (source===target). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.property.source">source</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Edge **source** is the node that defines the edge (tail). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge.property.target">target</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Edge **target** is the node being referenced by the **source** (head). |

---

##### `attributes`<sup>Required</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.Edge.property.attributes"></a>

```typescript
public readonly attributes: {[ key: string ]: string | number | boolean | PlainObject | string | number | boolean | PlainObject[]};
```

- *Type:* {[ key: string ]: string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> | string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}

Get *readonly* record of all attributes.

---

##### `flags`<sup>Required</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.Edge.property.flags"></a>

```typescript
public readonly flags: FlagEnum[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]

Get *readonly* list of all flags.

---

##### `isDestroyed`<sup>Required</sup> <a name="isDestroyed" id="@aws-prototyping-sdk/cdk-graph.Edge.property.isDestroyed"></a>

```typescript
public readonly isDestroyed: boolean;
```

- *Type:* boolean

Indicates if the entity has been destroyed (eg: removed from store).

---

##### `isMutated`<sup>Required</sup> <a name="isMutated" id="@aws-prototyping-sdk/cdk-graph.Edge.property.isMutated"></a>

```typescript
public readonly isMutated: boolean;
```

- *Type:* boolean

Indicates if the entity has had destructive mutations applied.

---

##### `metadata`<sup>Required</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.Edge.property.metadata"></a>

```typescript
public readonly metadata: MetadataEntry[];
```

- *Type:* constructs.MetadataEntry[]

Get *readonly* list of all metadata entries.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.Edge.property.store"></a>

```typescript
public readonly store: Store;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Reference to the store.

---

##### `tags`<sup>Required</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.Edge.property.tags"></a>

```typescript
public readonly tags: {[ key: string ]: string};
```

- *Type:* {[ key: string ]: string}

Get *readonly* record of all tags.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.Edge.property.uuid"></a>

```typescript
public readonly uuid: string;
```

- *Type:* string

Universally unique identifier.

---

##### `allowDestructiveMutations`<sup>Required</sup> <a name="allowDestructiveMutations" id="@aws-prototyping-sdk/cdk-graph.Edge.property.allowDestructiveMutations"></a>

```typescript
public readonly allowDestructiveMutations: boolean;
```

- *Type:* boolean

Indicates if edge allows destructive mutations.

---

##### `direction`<sup>Required</sup> <a name="direction" id="@aws-prototyping-sdk/cdk-graph.Edge.property.direction"></a>

```typescript
public readonly direction: EdgeDirectionEnum;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a>

Indicates the direction in which the edge is directed.

---

##### `edgeType`<sup>Required</sup> <a name="edgeType" id="@aws-prototyping-sdk/cdk-graph.Edge.property.edgeType"></a>

```typescript
public readonly edgeType: EdgeTypeEnum;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum">EdgeTypeEnum</a>

Type of edge.

---

##### `isClosed`<sup>Required</sup> <a name="isClosed" id="@aws-prototyping-sdk/cdk-graph.Edge.property.isClosed"></a>

```typescript
public readonly isClosed: boolean;
```

- *Type:* boolean

Indicates if the Edge's **source** and **target** are the same, or were the same when it was created (prior to mutations).

To check whether it was originally closed, use `hasFlag(FlagEnum.CLOSED_EDGE)` instead.

---

##### `isCrossStack`<sup>Required</sup> <a name="isCrossStack" id="@aws-prototyping-sdk/cdk-graph.Edge.property.isCrossStack"></a>

```typescript
public readonly isCrossStack: boolean;
```

- *Type:* boolean

Indicates if **source** and **target** nodes reside in different *root* stacks.

---

##### `isExtraneous`<sup>Required</sup> <a name="isExtraneous" id="@aws-prototyping-sdk/cdk-graph.Edge.property.isExtraneous"></a>

```typescript
public readonly isExtraneous: boolean;
```

- *Type:* boolean

Indicates if edge is extraneous which is determined by explicitly having *EXTRANEOUS* flag added and/or being a closed loop (source===target).

---

##### `source`<sup>Required</sup> <a name="source" id="@aws-prototyping-sdk/cdk-graph.Edge.property.source"></a>

```typescript
public readonly source: Node;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Edge **source** is the node that defines the edge (tail).

---

##### `target`<sup>Required</sup> <a name="target" id="@aws-prototyping-sdk/cdk-graph.Edge.property.target"></a>

```typescript
public readonly target: Node;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Edge **target** is the node being referenced by the **source** (head).

---


### ImportReference <a name="ImportReference" id="@aws-prototyping-sdk/cdk-graph.ImportReference"></a>

Import reference defines **Fn::ImportValue** type reference edge.

#### Initializers <a name="Initializers" id="@aws-prototyping-sdk/cdk-graph.ImportReference.Initializer"></a>

```typescript
import { ImportReference } from '@aws-prototyping-sdk/cdk-graph'

new ImportReference(props: ITypedEdgeProps)
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.Initializer.parameter.props">props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps">ITypedEdgeProps</a></code> | *No description.* |

---

##### `props`<sup>Required</sup> <a name="props" id="@aws-prototyping-sdk/cdk-graph.ImportReference.Initializer.parameter.props"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps">ITypedEdgeProps</a>

---

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.addAttribute">addAttribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.addFlag">addFlag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.addMetadata">addMetadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.addTag">addTag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.applyData">applyData</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.findMetadata">findMetadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.getAttribute">getAttribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.getTag">getTag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.hasAttribute">hasAttribute</a></code> | Indicates if entity has a given attribute defined, and optionally with a specific value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.hasFlag">hasFlag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.hasMetadata">hasMetadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.hasTag">hasTag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.mutateDestroy">mutateDestroy</a></code> | Destroy the edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.setAttribute">setAttribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.setTag">setTag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.isEquivalent">isEquivalent</a></code> | Indicates if this edge is equivalent to another edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.mutateConsume">mutateConsume</a></code> | Merge an equivalent edge's data into this edge and destroy the other edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.mutateDirection">mutateDirection</a></code> | Change the edge **direction**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.mutateSource">mutateSource</a></code> | Change the edge **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.mutateTarget">mutateTarget</a></code> | Change the edge **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.toString">toString</a></code> | Get string representation of this edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.resolveChain">resolveChain</a></code> | Resolve reference chain. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.resolveTargets">resolveTargets</a></code> | Resolve targets by following potential edge chain. |

---

##### `addAttribute` <a name="addAttribute" id="@aws-prototyping-sdk/cdk-graph.ImportReference.addAttribute"></a>

```typescript
public addAttribute(key: string, value: any): void
```

Add attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ImportReference.addAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ImportReference.addAttribute.parameter.value"></a>

- *Type:* any

---

##### `addFlag` <a name="addFlag" id="@aws-prototyping-sdk/cdk-graph.ImportReference.addFlag"></a>

```typescript
public addFlag(flag: FlagEnum): void
```

Add flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.ImportReference.addFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `addMetadata` <a name="addMetadata" id="@aws-prototyping-sdk/cdk-graph.ImportReference.addMetadata"></a>

```typescript
public addMetadata(metadataType: string, data: any): void
```

Add metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.ImportReference.addMetadata.parameter.metadataType"></a>

- *Type:* string

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.ImportReference.addMetadata.parameter.data"></a>

- *Type:* any

---

##### `addTag` <a name="addTag" id="@aws-prototyping-sdk/cdk-graph.ImportReference.addTag"></a>

```typescript
public addTag(key: string, value: string): void
```

Add tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ImportReference.addTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ImportReference.addTag.parameter.value"></a>

- *Type:* string

---

##### `applyData` <a name="applyData" id="@aws-prototyping-sdk/cdk-graph.ImportReference.applyData"></a>

```typescript
public applyData(data: IBaseEntityDataProps, overwrite?: boolean, applyFlags?: boolean): void
```

Applies data (attributes, metadata, tags, flag) to entity.

Generally used only for mutations such as collapse and consume to retain data.

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.ImportReference.applyData.parameter.data"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps">IBaseEntityDataProps</a>

The data to apply.

---

###### `overwrite`<sup>Optional</sup> <a name="overwrite" id="@aws-prototyping-sdk/cdk-graph.ImportReference.applyData.parameter.overwrite"></a>

- *Type:* boolean

---

###### `applyFlags`<sup>Optional</sup> <a name="applyFlags" id="@aws-prototyping-sdk/cdk-graph.ImportReference.applyData.parameter.applyFlags"></a>

- *Type:* boolean

Indicates if data is overwritten - Indicates if flags should be applied.

---

##### `findMetadata` <a name="findMetadata" id="@aws-prototyping-sdk/cdk-graph.ImportReference.findMetadata"></a>

```typescript
public findMetadata(metadataType: string): MetadataEntry[]
```

Retrieves all metadata entries of a given type.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.ImportReference.findMetadata.parameter.metadataType"></a>

- *Type:* string

---

##### `getAttribute` <a name="getAttribute" id="@aws-prototyping-sdk/cdk-graph.ImportReference.getAttribute"></a>

```typescript
public getAttribute(key: string): any
```

Get attribute by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ImportReference.getAttribute.parameter.key"></a>

- *Type:* string

---

##### `getTag` <a name="getTag" id="@aws-prototyping-sdk/cdk-graph.ImportReference.getTag"></a>

```typescript
public getTag(key: string): string
```

Get tag by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ImportReference.getTag.parameter.key"></a>

- *Type:* string

---

##### `hasAttribute` <a name="hasAttribute" id="@aws-prototyping-sdk/cdk-graph.ImportReference.hasAttribute"></a>

```typescript
public hasAttribute(key: string, value?: any): boolean
```

Indicates if entity has a given attribute defined, and optionally with a specific value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ImportReference.hasAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ImportReference.hasAttribute.parameter.value"></a>

- *Type:* any

---

##### `hasFlag` <a name="hasFlag" id="@aws-prototyping-sdk/cdk-graph.ImportReference.hasFlag"></a>

```typescript
public hasFlag(flag: FlagEnum): boolean
```

Indicates if entity has a given flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.ImportReference.hasFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `hasMetadata` <a name="hasMetadata" id="@aws-prototyping-sdk/cdk-graph.ImportReference.hasMetadata"></a>

```typescript
public hasMetadata(metadataType: string, data: any): boolean
```

Indicates if entity has matching metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.ImportReference.hasMetadata.parameter.metadataType"></a>

- *Type:* string

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.ImportReference.hasMetadata.parameter.data"></a>

- *Type:* any

---

##### `hasTag` <a name="hasTag" id="@aws-prototyping-sdk/cdk-graph.ImportReference.hasTag"></a>

```typescript
public hasTag(key: string, value?: string): boolean
```

Indicates if entity has tag, optionally verifying tag value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ImportReference.hasTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ImportReference.hasTag.parameter.value"></a>

- *Type:* string

---

##### `mutateDestroy` <a name="mutateDestroy" id="@aws-prototyping-sdk/cdk-graph.ImportReference.mutateDestroy"></a>

```typescript
public mutateDestroy(_strict?: boolean): void
```

Destroy the edge.

Remove all references and remove from store.

###### `_strict`<sup>Optional</sup> <a name="_strict" id="@aws-prototyping-sdk/cdk-graph.ImportReference.mutateDestroy.parameter._strict"></a>

- *Type:* boolean

---

##### `setAttribute` <a name="setAttribute" id="@aws-prototyping-sdk/cdk-graph.ImportReference.setAttribute"></a>

```typescript
public setAttribute(key: string, value: any): void
```

Set attribute.

This will overwrite existing attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ImportReference.setAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ImportReference.setAttribute.parameter.value"></a>

- *Type:* any

---

##### `setTag` <a name="setTag" id="@aws-prototyping-sdk/cdk-graph.ImportReference.setTag"></a>

```typescript
public setTag(key: string, value: string): void
```

Set tag.

Will overwrite existing tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ImportReference.setTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ImportReference.setTag.parameter.value"></a>

- *Type:* string

---

##### `isEquivalent` <a name="isEquivalent" id="@aws-prototyping-sdk/cdk-graph.ImportReference.isEquivalent"></a>

```typescript
public isEquivalent(edge: Edge): boolean
```

Indicates if this edge is equivalent to another edge.

Edges are considered equivalent if they share same type, source, and target.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.ImportReference.isEquivalent.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutateConsume` <a name="mutateConsume" id="@aws-prototyping-sdk/cdk-graph.ImportReference.mutateConsume"></a>

```typescript
public mutateConsume(edge: Edge): void
```

Merge an equivalent edge's data into this edge and destroy the other edge.

Used during filtering operations to consolidate equivalent edges.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.ImportReference.mutateConsume.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

The edge to consume.

---

##### `mutateDirection` <a name="mutateDirection" id="@aws-prototyping-sdk/cdk-graph.ImportReference.mutateDirection"></a>

```typescript
public mutateDirection(direction: EdgeDirectionEnum): void
```

Change the edge **direction**.

###### `direction`<sup>Required</sup> <a name="direction" id="@aws-prototyping-sdk/cdk-graph.ImportReference.mutateDirection.parameter.direction"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a>

---

##### `mutateSource` <a name="mutateSource" id="@aws-prototyping-sdk/cdk-graph.ImportReference.mutateSource"></a>

```typescript
public mutateSource(node: Node): void
```

Change the edge **source**.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.ImportReference.mutateSource.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateTarget` <a name="mutateTarget" id="@aws-prototyping-sdk/cdk-graph.ImportReference.mutateTarget"></a>

```typescript
public mutateTarget(node: Node): void
```

Change the edge **target**.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.ImportReference.mutateTarget.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `toString` <a name="toString" id="@aws-prototyping-sdk/cdk-graph.ImportReference.toString"></a>

```typescript
public toString(): string
```

Get string representation of this edge.

##### `resolveChain` <a name="resolveChain" id="@aws-prototyping-sdk/cdk-graph.ImportReference.resolveChain"></a>

```typescript
public resolveChain(): any[]
```

Resolve reference chain.

##### `resolveTargets` <a name="resolveTargets" id="@aws-prototyping-sdk/cdk-graph.ImportReference.resolveTargets"></a>

```typescript
public resolveTargets(): Node[]
```

Resolve targets by following potential edge chain.

> [{@link EdgeChain }]({@link EdgeChain })

#### Static Functions <a name="Static Functions" id="Static Functions"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.findAllInChain">findAllInChain</a></code> | Find all matching edges based on predicate within an EdgeChain. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.findInChain">findInChain</a></code> | Find first edge matching predicate within an EdgeChain. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.isRef">isRef</a></code> | Indicates if edge is a **Ref** based {@link Reference} edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.isReference">isReference</a></code> | Indicates if edge is a {@link Reference}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.isImport">isImport</a></code> | Indicates if edge is **Fn::ImportValue** based {@link Reference}. |

---

##### `findAllInChain` <a name="findAllInChain" id="@aws-prototyping-sdk/cdk-graph.ImportReference.findAllInChain"></a>

```typescript
import { ImportReference } from '@aws-prototyping-sdk/cdk-graph'

ImportReference.findAllInChain(chain: any[], predicate: IEdgePredicate)
```

Find all matching edges based on predicate within an EdgeChain.

###### `chain`<sup>Required</sup> <a name="chain" id="@aws-prototyping-sdk/cdk-graph.ImportReference.findAllInChain.parameter.chain"></a>

- *Type:* any[]

---

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.ImportReference.findAllInChain.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

---

##### `findInChain` <a name="findInChain" id="@aws-prototyping-sdk/cdk-graph.ImportReference.findInChain"></a>

```typescript
import { ImportReference } from '@aws-prototyping-sdk/cdk-graph'

ImportReference.findInChain(chain: any[], predicate: IEdgePredicate)
```

Find first edge matching predicate within an EdgeChain.

###### `chain`<sup>Required</sup> <a name="chain" id="@aws-prototyping-sdk/cdk-graph.ImportReference.findInChain.parameter.chain"></a>

- *Type:* any[]

---

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.ImportReference.findInChain.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

---

##### `isRef` <a name="isRef" id="@aws-prototyping-sdk/cdk-graph.ImportReference.isRef"></a>

```typescript
import { ImportReference } from '@aws-prototyping-sdk/cdk-graph'

ImportReference.isRef(edge: Edge)
```

Indicates if edge is a **Ref** based {@link Reference} edge.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.ImportReference.isRef.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `isReference` <a name="isReference" id="@aws-prototyping-sdk/cdk-graph.ImportReference.isReference"></a>

```typescript
import { ImportReference } from '@aws-prototyping-sdk/cdk-graph'

ImportReference.isReference(edge: Edge)
```

Indicates if edge is a {@link Reference}.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.ImportReference.isReference.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `isImport` <a name="isImport" id="@aws-prototyping-sdk/cdk-graph.ImportReference.isImport"></a>

```typescript
import { ImportReference } from '@aws-prototyping-sdk/cdk-graph'

ImportReference.isImport(edge: Edge)
```

Indicates if edge is **Fn::ImportValue** based {@link Reference}.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.ImportReference.isImport.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.attributes">attributes</a></code> | <code>{[ key: string ]: string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> \| string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}</code> | Get *readonly* record of all attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.flags">flags</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]</code> | Get *readonly* list of all flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.isDestroyed">isDestroyed</a></code> | <code>boolean</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.isMutated">isMutated</a></code> | <code>boolean</code> | Indicates if the entity has had destructive mutations applied. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.metadata">metadata</a></code> | <code>constructs.MetadataEntry[]</code> | Get *readonly* list of all metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Reference to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.tags">tags</a></code> | <code>{[ key: string ]: string}</code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.uuid">uuid</a></code> | <code>string</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.allowDestructiveMutations">allowDestructiveMutations</a></code> | <code>boolean</code> | Indicates if edge allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.direction">direction</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a></code> | Indicates the direction in which the edge is directed. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.edgeType">edgeType</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum">EdgeTypeEnum</a></code> | Type of edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.isClosed">isClosed</a></code> | <code>boolean</code> | Indicates if the Edge's **source** and **target** are the same, or were the same when it was created (prior to mutations). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.isCrossStack">isCrossStack</a></code> | <code>boolean</code> | Indicates if **source** and **target** nodes reside in different *root* stacks. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.isExtraneous">isExtraneous</a></code> | <code>boolean</code> | Indicates if edge is extraneous which is determined by explicitly having *EXTRANEOUS* flag added and/or being a closed loop (source===target). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.source">source</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Edge **source** is the node that defines the edge (tail). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.target">target</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Edge **target** is the node being referenced by the **source** (head). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.referenceType">referenceType</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ReferenceTypeEnum">ReferenceTypeEnum</a></code> | Get type of reference. |

---

##### `attributes`<sup>Required</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.ImportReference.property.attributes"></a>

```typescript
public readonly attributes: {[ key: string ]: string | number | boolean | PlainObject | string | number | boolean | PlainObject[]};
```

- *Type:* {[ key: string ]: string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> | string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}

Get *readonly* record of all attributes.

---

##### `flags`<sup>Required</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.ImportReference.property.flags"></a>

```typescript
public readonly flags: FlagEnum[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]

Get *readonly* list of all flags.

---

##### `isDestroyed`<sup>Required</sup> <a name="isDestroyed" id="@aws-prototyping-sdk/cdk-graph.ImportReference.property.isDestroyed"></a>

```typescript
public readonly isDestroyed: boolean;
```

- *Type:* boolean

Indicates if the entity has been destroyed (eg: removed from store).

---

##### `isMutated`<sup>Required</sup> <a name="isMutated" id="@aws-prototyping-sdk/cdk-graph.ImportReference.property.isMutated"></a>

```typescript
public readonly isMutated: boolean;
```

- *Type:* boolean

Indicates if the entity has had destructive mutations applied.

---

##### `metadata`<sup>Required</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.ImportReference.property.metadata"></a>

```typescript
public readonly metadata: MetadataEntry[];
```

- *Type:* constructs.MetadataEntry[]

Get *readonly* list of all metadata entries.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.ImportReference.property.store"></a>

```typescript
public readonly store: Store;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Reference to the store.

---

##### `tags`<sup>Required</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.ImportReference.property.tags"></a>

```typescript
public readonly tags: {[ key: string ]: string};
```

- *Type:* {[ key: string ]: string}

Get *readonly* record of all tags.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.ImportReference.property.uuid"></a>

```typescript
public readonly uuid: string;
```

- *Type:* string

Universally unique identifier.

---

##### `allowDestructiveMutations`<sup>Required</sup> <a name="allowDestructiveMutations" id="@aws-prototyping-sdk/cdk-graph.ImportReference.property.allowDestructiveMutations"></a>

```typescript
public readonly allowDestructiveMutations: boolean;
```

- *Type:* boolean

Indicates if edge allows destructive mutations.

---

##### `direction`<sup>Required</sup> <a name="direction" id="@aws-prototyping-sdk/cdk-graph.ImportReference.property.direction"></a>

```typescript
public readonly direction: EdgeDirectionEnum;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a>

Indicates the direction in which the edge is directed.

---

##### `edgeType`<sup>Required</sup> <a name="edgeType" id="@aws-prototyping-sdk/cdk-graph.ImportReference.property.edgeType"></a>

```typescript
public readonly edgeType: EdgeTypeEnum;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum">EdgeTypeEnum</a>

Type of edge.

---

##### `isClosed`<sup>Required</sup> <a name="isClosed" id="@aws-prototyping-sdk/cdk-graph.ImportReference.property.isClosed"></a>

```typescript
public readonly isClosed: boolean;
```

- *Type:* boolean

Indicates if the Edge's **source** and **target** are the same, or were the same when it was created (prior to mutations).

To check whether it was originally closed, use `hasFlag(FlagEnum.CLOSED_EDGE)` instead.

---

##### `isCrossStack`<sup>Required</sup> <a name="isCrossStack" id="@aws-prototyping-sdk/cdk-graph.ImportReference.property.isCrossStack"></a>

```typescript
public readonly isCrossStack: boolean;
```

- *Type:* boolean

Indicates if **source** and **target** nodes reside in different *root* stacks.

---

##### `isExtraneous`<sup>Required</sup> <a name="isExtraneous" id="@aws-prototyping-sdk/cdk-graph.ImportReference.property.isExtraneous"></a>

```typescript
public readonly isExtraneous: boolean;
```

- *Type:* boolean

Indicates if edge is extraneous which is determined by explicitly having *EXTRANEOUS* flag added and/or being a closed loop (source===target).

---

##### `source`<sup>Required</sup> <a name="source" id="@aws-prototyping-sdk/cdk-graph.ImportReference.property.source"></a>

```typescript
public readonly source: Node;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Edge **source** is the node that defines the edge (tail).

---

##### `target`<sup>Required</sup> <a name="target" id="@aws-prototyping-sdk/cdk-graph.ImportReference.property.target"></a>

```typescript
public readonly target: Node;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Edge **target** is the node being referenced by the **source** (head).

---

##### `referenceType`<sup>Required</sup> <a name="referenceType" id="@aws-prototyping-sdk/cdk-graph.ImportReference.property.referenceType"></a>

```typescript
public readonly referenceType: ReferenceTypeEnum;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ReferenceTypeEnum">ReferenceTypeEnum</a>

Get type of reference.

---

#### Constants <a name="Constants" id="Constants"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.ATT_TYPE">ATT_TYPE</a></code> | <code>string</code> | Attribute defining the type of reference. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ImportReference.property.PREFIX">PREFIX</a></code> | <code>string</code> | Edge prefix to denote **Fn::ImportValue** type reference edge. |

---

##### `ATT_TYPE`<sup>Required</sup> <a name="ATT_TYPE" id="@aws-prototyping-sdk/cdk-graph.ImportReference.property.ATT_TYPE"></a>

```typescript
public readonly ATT_TYPE: string;
```

- *Type:* string

Attribute defining the type of reference.

---

##### `PREFIX`<sup>Required</sup> <a name="PREFIX" id="@aws-prototyping-sdk/cdk-graph.ImportReference.property.PREFIX"></a>

```typescript
public readonly PREFIX: string;
```

- *Type:* string

Edge prefix to denote **Fn::ImportValue** type reference edge.

---

### NestedStackNode <a name="NestedStackNode" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode"></a>

NestedStackNode defines a cdk NestedStack.

#### Initializers <a name="Initializers" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.Initializer"></a>

```typescript
import { NestedStackNode } from '@aws-prototyping-sdk/cdk-graph'

new NestedStackNode(props: INestedStackNodeProps)
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.Initializer.parameter.props">props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps">INestedStackNodeProps</a></code> | *No description.* |

---

##### `props`<sup>Required</sup> <a name="props" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.Initializer.parameter.props"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps">INestedStackNodeProps</a>

---

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.addAttribute">addAttribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.addFlag">addFlag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.addMetadata">addMetadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.addTag">addTag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.applyData">applyData</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.findMetadata">findMetadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.getAttribute">getAttribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.getTag">getTag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.hasAttribute">hasAttribute</a></code> | Indicates if entity has a given attribute defined, and optionally with a specific value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.hasFlag">hasFlag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.hasMetadata">hasMetadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.hasTag">hasTag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateDestroy">mutateDestroy</a></code> | Destroys this node by removing all references and removing this node from the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.setAttribute">setAttribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.setTag">setTag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.addChild">addChild</a></code> | Add *child* node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.addLink">addLink</a></code> | Add *link* to another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.addReverseLink">addReverseLink</a></code> | Add *link* from another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.doesDependOn">doesDependOn</a></code> | Indicates if *this node* depends on *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.doesReference">doesReference</a></code> | Indicates if *this node* references *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.find">find</a></code> | Recursively find the nearest sub-node matching predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.findAll">findAll</a></code> | Return this construct and all of its sub-nodes in the given order. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.findAllLinks">findAllLinks</a></code> | Return all direct links of this node and that of all sub-nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.findAncestor">findAncestor</a></code> | Find nearest *ancestor* of *this node* matching given predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.findChild">findChild</a></code> | Find child with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.findLink">findLink</a></code> | Find link of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.findLinks">findLinks</a></code> | Find all links of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.getCfnProp">getCfnProp</a></code> | Get specific CloudFormation property. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.getChild">getChild</a></code> | Get *child* node with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.getLinkChains">getLinkChains</a></code> | Resolve all link chains. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.getNearestAncestor">getNearestAncestor</a></code> | Gets the nearest **common** *ancestor* shared between *this node* and another *node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.isAncestor">isAncestor</a></code> | Indicates if a specific *node* is an *ancestor* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.isChild">isChild</a></code> | Indicates if specific *node* is a *child* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateCollapse">mutateCollapse</a></code> | Collapses all sub-nodes of *this node* into *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateCollapseTo">mutateCollapseTo</a></code> | Collapses *this node* into *an ancestor*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateCollapseToParent">mutateCollapseToParent</a></code> | Collapses *this node* into *it's parent node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateHoist">mutateHoist</a></code> | Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateMove">mutateMove</a></code> | Move this node into a new parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateRemoveChild">mutateRemoveChild</a></code> | Remove a *child* node from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateRemoveLink">mutateRemoveLink</a></code> | Remove a *link* from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateRemoveReverseLink">mutateRemoveReverseLink</a></code> | Remove a *link* to *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateUncluster">mutateUncluster</a></code> | Hoist all children to parent and collapse node to parent. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.toString">toString</a></code> | Get string representation of this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.addOutput">addOutput</a></code> | Associate {@link OutputNode} with this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.addParameter">addParameter</a></code> | Associate {@link ParameterNode} with this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.findOutput">findOutput</a></code> | Find {@link OutputNode} with *logicalId* defined by this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.findParameter">findParameter</a></code> | Find {@link ParameterNode} with *parameterId* defined by this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateRemoveOutput">mutateRemoveOutput</a></code> | Disassociate {@link OutputNode} from this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateRemoveParameter">mutateRemoveParameter</a></code> | Disassociate {@link ParameterNode} from this stack. |

---

##### `addAttribute` <a name="addAttribute" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addAttribute"></a>

```typescript
public addAttribute(key: string, value: any): void
```

Add attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addAttribute.parameter.value"></a>

- *Type:* any

---

##### `addFlag` <a name="addFlag" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addFlag"></a>

```typescript
public addFlag(flag: FlagEnum): void
```

Add flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `addMetadata` <a name="addMetadata" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addMetadata"></a>

```typescript
public addMetadata(metadataType: string, data: any): void
```

Add metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addMetadata.parameter.metadataType"></a>

- *Type:* string

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addMetadata.parameter.data"></a>

- *Type:* any

---

##### `addTag` <a name="addTag" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addTag"></a>

```typescript
public addTag(key: string, value: string): void
```

Add tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addTag.parameter.value"></a>

- *Type:* string

---

##### `applyData` <a name="applyData" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.applyData"></a>

```typescript
public applyData(data: IBaseEntityDataProps, overwrite?: boolean, applyFlags?: boolean): void
```

Applies data (attributes, metadata, tags, flag) to entity.

Generally used only for mutations such as collapse and consume to retain data.

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.applyData.parameter.data"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps">IBaseEntityDataProps</a>

The data to apply.

---

###### `overwrite`<sup>Optional</sup> <a name="overwrite" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.applyData.parameter.overwrite"></a>

- *Type:* boolean

---

###### `applyFlags`<sup>Optional</sup> <a name="applyFlags" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.applyData.parameter.applyFlags"></a>

- *Type:* boolean

Indicates if data is overwritten - Indicates if flags should be applied.

---

##### `findMetadata` <a name="findMetadata" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findMetadata"></a>

```typescript
public findMetadata(metadataType: string): MetadataEntry[]
```

Retrieves all metadata entries of a given type.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findMetadata.parameter.metadataType"></a>

- *Type:* string

---

##### `getAttribute` <a name="getAttribute" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.getAttribute"></a>

```typescript
public getAttribute(key: string): any
```

Get attribute by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.getAttribute.parameter.key"></a>

- *Type:* string

---

##### `getTag` <a name="getTag" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.getTag"></a>

```typescript
public getTag(key: string): string
```

Get tag by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.getTag.parameter.key"></a>

- *Type:* string

---

##### `hasAttribute` <a name="hasAttribute" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.hasAttribute"></a>

```typescript
public hasAttribute(key: string, value?: any): boolean
```

Indicates if entity has a given attribute defined, and optionally with a specific value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.hasAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.hasAttribute.parameter.value"></a>

- *Type:* any

---

##### `hasFlag` <a name="hasFlag" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.hasFlag"></a>

```typescript
public hasFlag(flag: FlagEnum): boolean
```

Indicates if entity has a given flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.hasFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `hasMetadata` <a name="hasMetadata" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.hasMetadata"></a>

```typescript
public hasMetadata(metadataType: string, data: any): boolean
```

Indicates if entity has matching metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.hasMetadata.parameter.metadataType"></a>

- *Type:* string

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.hasMetadata.parameter.data"></a>

- *Type:* any

---

##### `hasTag` <a name="hasTag" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.hasTag"></a>

```typescript
public hasTag(key: string, value?: string): boolean
```

Indicates if entity has tag, optionally verifying tag value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.hasTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.hasTag.parameter.value"></a>

- *Type:* string

---

##### `mutateDestroy` <a name="mutateDestroy" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateDestroy"></a>

```typescript
public mutateDestroy(strict?: boolean): void
```

Destroys this node by removing all references and removing this node from the store.

###### `strict`<sup>Optional</sup> <a name="strict" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateDestroy.parameter.strict"></a>

- *Type:* boolean

---

##### `setAttribute` <a name="setAttribute" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.setAttribute"></a>

```typescript
public setAttribute(key: string, value: any): void
```

Set attribute.

This will overwrite existing attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.setAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.setAttribute.parameter.value"></a>

- *Type:* any

---

##### `setTag` <a name="setTag" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.setTag"></a>

```typescript
public setTag(key: string, value: string): void
```

Set tag.

Will overwrite existing tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.setTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.setTag.parameter.value"></a>

- *Type:* string

---

##### `addChild` <a name="addChild" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addChild"></a>

```typescript
public addChild(node: Node): void
```

Add *child* node.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `addLink` <a name="addLink" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addLink"></a>

```typescript
public addLink(edge: Edge): void
```

Add *link* to another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `addReverseLink` <a name="addReverseLink" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addReverseLink"></a>

```typescript
public addReverseLink(edge: Edge): void
```

Add *link* from another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addReverseLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `doesDependOn` <a name="doesDependOn" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.doesDependOn"></a>

```typescript
public doesDependOn(node: Node): boolean
```

Indicates if *this node* depends on *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.doesDependOn.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `doesReference` <a name="doesReference" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.doesReference"></a>

```typescript
public doesReference(node: Node): boolean
```

Indicates if *this node* references *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.doesReference.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `find` <a name="find" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.find"></a>

```typescript
public find(predicate: INodePredicate): Node
```

Recursively find the nearest sub-node matching predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.find.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

---

##### `findAll` <a name="findAll" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findAll"></a>

```typescript
public findAll(options?: IFindNodeOptions): Node[]
```

Return this construct and all of its sub-nodes in the given order.

Optionally filter nodes based on predicate.

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findAll.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindNodeOptions">IFindNodeOptions</a>

---

##### `findAllLinks` <a name="findAllLinks" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findAllLinks"></a>

```typescript
public findAllLinks(options?: IFindEdgeOptions): Edge[]
```

Return all direct links of this node and that of all sub-nodes.

Optionally filter links based on predicate.

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findAllLinks.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindEdgeOptions">IFindEdgeOptions</a>

---

##### `findAncestor` <a name="findAncestor" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findAncestor"></a>

```typescript
public findAncestor(predicate: INodePredicate, max?: number): Node
```

Find nearest *ancestor* of *this node* matching given predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findAncestor.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

Predicate to match ancestor.

---

###### `max`<sup>Optional</sup> <a name="max" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findAncestor.parameter.max"></a>

- *Type:* number

---

##### `findChild` <a name="findChild" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findChild"></a>

```typescript
public findChild(id: string): Node
```

Find child with given *id*.

Similar to `find` but does not throw error if no child found.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findChild.parameter.id"></a>

- *Type:* string

---

##### `findLink` <a name="findLink" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findLink"></a>

```typescript
public findLink(predicate: IEdgePredicate, reverse?: boolean, follow?: boolean, direct?: boolean): Edge
```

Find link of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct link
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findLink.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findLink.parameter.reverse"></a>

- *Type:* boolean

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findLink.parameter.follow"></a>

- *Type:* boolean

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findLink.parameter.direct"></a>

- *Type:* boolean

Indicates that only *direct* links should be searched.

---

##### `findLinks` <a name="findLinks" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findLinks"></a>

```typescript
public findLinks(predicate: IEdgePredicate, reverse?: boolean, follow?: boolean, direct?: boolean): Edge[]
```

Find all links of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct links
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findLinks.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findLinks.parameter.reverse"></a>

- *Type:* boolean

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findLinks.parameter.follow"></a>

- *Type:* boolean

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findLinks.parameter.direct"></a>

- *Type:* boolean

Indicates that only *direct* links should be searched.

---

##### `getCfnProp` <a name="getCfnProp" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.getCfnProp"></a>

```typescript
public getCfnProp(key: string): string | number | boolean | PlainObject | string | number | boolean | PlainObject[]
```

Get specific CloudFormation property.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.getCfnProp.parameter.key"></a>

- *Type:* string

---

##### `getChild` <a name="getChild" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.getChild"></a>

```typescript
public getChild(id: string): Node
```

Get *child* node with given *id*.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.getChild.parameter.id"></a>

- *Type:* string

---

##### `getLinkChains` <a name="getLinkChains" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.getLinkChains"></a>

```typescript
public getLinkChains(reverse?: boolean): any[][]
```

Resolve all link chains.

> [{@link EdgeChain }]({@link EdgeChain })

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.getLinkChains.parameter.reverse"></a>

- *Type:* boolean

---

##### `getNearestAncestor` <a name="getNearestAncestor" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.getNearestAncestor"></a>

```typescript
public getNearestAncestor(node: Node): Node
```

Gets the nearest **common** *ancestor* shared between *this node* and another *node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.getNearestAncestor.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `isAncestor` <a name="isAncestor" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.isAncestor"></a>

```typescript
public isAncestor(ancestor: Node): boolean
```

Indicates if a specific *node* is an *ancestor* of *this node*.

###### `ancestor`<sup>Required</sup> <a name="ancestor" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.isAncestor.parameter.ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `isChild` <a name="isChild" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.isChild"></a>

```typescript
public isChild(node: Node): boolean
```

Indicates if specific *node* is a *child* of *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.isChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateCollapse` <a name="mutateCollapse" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateCollapse"></a>

```typescript
public mutateCollapse(): void
```

Collapses all sub-nodes of *this node* into *this node*.

##### `mutateCollapseTo` <a name="mutateCollapseTo" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateCollapseTo"></a>

```typescript
public mutateCollapseTo(ancestor: Node): Node
```

Collapses *this node* into *an ancestor*.

###### `ancestor`<sup>Required</sup> <a name="ancestor" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateCollapseTo.parameter.ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateCollapseToParent` <a name="mutateCollapseToParent" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateCollapseToParent"></a>

```typescript
public mutateCollapseToParent(): Node
```

Collapses *this node* into *it's parent node*.

##### `mutateHoist` <a name="mutateHoist" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateHoist"></a>

```typescript
public mutateHoist(newParent: Node): void
```

Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor.

###### `newParent`<sup>Required</sup> <a name="newParent" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateHoist.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateMove` <a name="mutateMove" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateMove"></a>

```typescript
public mutateMove(newParent: Node): void
```

Move this node into a new parent node.

###### `newParent`<sup>Required</sup> <a name="newParent" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateMove.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

The parent to move this node to.

---

##### `mutateRemoveChild` <a name="mutateRemoveChild" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateRemoveChild"></a>

```typescript
public mutateRemoveChild(node: Node): boolean
```

Remove a *child* node from *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateRemoveChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateRemoveLink` <a name="mutateRemoveLink" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateRemoveLink"></a>

```typescript
public mutateRemoveLink(link: Edge): boolean
```

Remove a *link* from *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateRemoveLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutateRemoveReverseLink` <a name="mutateRemoveReverseLink" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateRemoveReverseLink"></a>

```typescript
public mutateRemoveReverseLink(link: Edge): boolean
```

Remove a *link* to *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateRemoveReverseLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutateUncluster` <a name="mutateUncluster" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateUncluster"></a>

```typescript
public mutateUncluster(): void
```

Hoist all children to parent and collapse node to parent.

##### `toString` <a name="toString" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.toString"></a>

```typescript
public toString(): string
```

Get string representation of this node.

##### `addOutput` <a name="addOutput" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addOutput"></a>

```typescript
public addOutput(node: OutputNode): void
```

Associate {@link OutputNode} with this stack.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addOutput.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.OutputNode">OutputNode</a>

---

##### `addParameter` <a name="addParameter" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addParameter"></a>

```typescript
public addParameter(node: ParameterNode): void
```

Associate {@link ParameterNode} with this stack.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.addParameter.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode">ParameterNode</a>

---

##### `findOutput` <a name="findOutput" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findOutput"></a>

```typescript
public findOutput(logicalId: string): OutputNode
```

Find {@link OutputNode} with *logicalId* defined by this stack.

###### `logicalId`<sup>Required</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findOutput.parameter.logicalId"></a>

- *Type:* string

---

##### `findParameter` <a name="findParameter" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findParameter"></a>

```typescript
public findParameter(parameterId: string): ParameterNode
```

Find {@link ParameterNode} with *parameterId* defined by this stack.

###### `parameterId`<sup>Required</sup> <a name="parameterId" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.findParameter.parameter.parameterId"></a>

- *Type:* string

---

##### `mutateRemoveOutput` <a name="mutateRemoveOutput" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateRemoveOutput"></a>

```typescript
public mutateRemoveOutput(node: OutputNode): boolean
```

Disassociate {@link OutputNode} from this stack.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateRemoveOutput.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.OutputNode">OutputNode</a>

---

##### `mutateRemoveParameter` <a name="mutateRemoveParameter" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateRemoveParameter"></a>

```typescript
public mutateRemoveParameter(node: ParameterNode): boolean
```

Disassociate {@link ParameterNode} from this stack.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.mutateRemoveParameter.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode">ParameterNode</a>

---

#### Static Functions <a name="Static Functions" id="Static Functions"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.isStackNode">isStackNode</a></code> | Indicates if node is a {@link StackNode}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.of">of</a></code> | Gets the {@link StackNode} containing a given resource. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.isNestedStackNode">isNestedStackNode</a></code> | Indicates if node is a {@link NestedStackNode}. |

---

##### `isStackNode` <a name="isStackNode" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.isStackNode"></a>

```typescript
import { NestedStackNode } from '@aws-prototyping-sdk/cdk-graph'

NestedStackNode.isStackNode(node: Node)
```

Indicates if node is a {@link StackNode}.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.isStackNode.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `of` <a name="of" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.of"></a>

```typescript
import { NestedStackNode } from '@aws-prototyping-sdk/cdk-graph'

NestedStackNode.of(node: Node)
```

Gets the {@link StackNode} containing a given resource.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.of.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `isNestedStackNode` <a name="isNestedStackNode" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.isNestedStackNode"></a>

```typescript
import { NestedStackNode } from '@aws-prototyping-sdk/cdk-graph'

NestedStackNode.isNestedStackNode(node: Node)
```

Indicates if node is a {@link NestedStackNode}.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.isNestedStackNode.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.attributes">attributes</a></code> | <code>{[ key: string ]: string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> \| string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}</code> | Get *readonly* record of all attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.flags">flags</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]</code> | Get *readonly* list of all flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isDestroyed">isDestroyed</a></code> | <code>boolean</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isMutated">isMutated</a></code> | <code>boolean</code> | Indicates if the entity has had destructive mutations applied. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.metadata">metadata</a></code> | <code>constructs.MetadataEntry[]</code> | Get *readonly* list of all metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Reference to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.tags">tags</a></code> | <code>{[ key: string ]: string}</code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.uuid">uuid</a></code> | <code>string</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.allowDestructiveMutations">allowDestructiveMutations</a></code> | <code>boolean</code> | Indicates if this node allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.children">children</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get all direct child nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.dependedOnBy">dependedOnBy</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *depend on this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.dependencies">dependencies</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *this node depends on*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.dependencyLinks">dependencyLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]</code> | Gets list of {@link Dependency} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.depth">depth</a></code> | <code>number</code> | Indicates the depth of the node relative to root (0). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.id">id</a></code> | <code>string</code> | Node id, which is only unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isAsset">isAsset</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.ASSET}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isCfnFqn">isCfnFqn</a></code> | <code>boolean</code> | Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isCluster">isCluster</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.CLUSTER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isCustomResource">isCustomResource</a></code> | <code>boolean</code> | Indicates if node is a *Custom Resource*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isExtraneous">isExtraneous</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isGraphContainer">isGraphContainer</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isLeaf">isLeaf</a></code> | <code>boolean</code> | Indicates if this node is a *leaf* node, which means it does not have children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isTopLevel">isTopLevel</a></code> | <code>boolean</code> | Indicates if node is direct child of the graph root node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.links">links</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]</code> | Gets all links (edges) in which this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.nodeType">nodeType</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a></code> | Type of node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.path">path</a></code> | <code>string</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.referencedBy">referencedBy</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *reference this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.referenceLinks">referenceLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]</code> | Gets list of {@link Reference} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.references">references</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *this node references*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.reverseDependencyLinks">reverseDependencyLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]</code> | Gets list of {@link Dependency} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.reverseLinks">reverseLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]</code> | Gets all links (edges) in which this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.reverseReferenceLinks">reverseReferenceLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]</code> | Gets list of {@link Reference} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.scopes">scopes</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Gets descending ordered list of ancestors from the root. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.siblings">siblings</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of *siblings* of this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.cfnProps">cfnProps</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a></code> | Gets CloudFormation properties for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.cfnType">cfnType</a></code> | <code>string</code> | Get the CloudFormation resource type for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.constructInfo">constructInfo</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.constructInfoFqn">constructInfoFqn</a></code> | <code>string</code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.logicalId">logicalId</a></code> | <code>string</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.parent">parent</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.rootStack">rootStack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Get **root** stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.stack">stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Stack the node is contained in. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.exports">exports</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode">OutputNode</a>[]</code> | Get all **exported** {@link OutputNode}s defined by this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.outputs">outputs</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode">OutputNode</a>[]</code> | Get all {@link OutputNode}s defined by this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.parameters">parameters</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode">ParameterNode</a>[]</code> | Get all {@link ParameterNode}s defined by this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.stage">stage</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode">StageNode</a></code> | Get {@link StageNode} containing this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.parentStack">parentStack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Get parent stack of this nested stack. |

---

##### `attributes`<sup>Required</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.attributes"></a>

```typescript
public readonly attributes: {[ key: string ]: string | number | boolean | PlainObject | string | number | boolean | PlainObject[]};
```

- *Type:* {[ key: string ]: string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> | string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}

Get *readonly* record of all attributes.

---

##### `flags`<sup>Required</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.flags"></a>

```typescript
public readonly flags: FlagEnum[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]

Get *readonly* list of all flags.

---

##### `isDestroyed`<sup>Required</sup> <a name="isDestroyed" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isDestroyed"></a>

```typescript
public readonly isDestroyed: boolean;
```

- *Type:* boolean

Indicates if the entity has been destroyed (eg: removed from store).

---

##### `isMutated`<sup>Required</sup> <a name="isMutated" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isMutated"></a>

```typescript
public readonly isMutated: boolean;
```

- *Type:* boolean

Indicates if the entity has had destructive mutations applied.

---

##### `metadata`<sup>Required</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.metadata"></a>

```typescript
public readonly metadata: MetadataEntry[];
```

- *Type:* constructs.MetadataEntry[]

Get *readonly* list of all metadata entries.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.store"></a>

```typescript
public readonly store: Store;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Reference to the store.

---

##### `tags`<sup>Required</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.tags"></a>

```typescript
public readonly tags: {[ key: string ]: string};
```

- *Type:* {[ key: string ]: string}

Get *readonly* record of all tags.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.uuid"></a>

```typescript
public readonly uuid: string;
```

- *Type:* string

Universally unique identifier.

---

##### `allowDestructiveMutations`<sup>Required</sup> <a name="allowDestructiveMutations" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.allowDestructiveMutations"></a>

```typescript
public readonly allowDestructiveMutations: boolean;
```

- *Type:* boolean

Indicates if this node allows destructive mutations.

> [{@link Store.allowDestructiveMutations }]({@link Store.allowDestructiveMutations })

---

##### `children`<sup>Required</sup> <a name="children" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.children"></a>

```typescript
public readonly children: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get all direct child nodes.

---

##### `dependedOnBy`<sup>Required</sup> <a name="dependedOnBy" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.dependedOnBy"></a>

```typescript
public readonly dependedOnBy: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *depend on this node*.

> [{@link Node.reverseDependencyLinks }]({@link Node.reverseDependencyLinks })

---

##### `dependencies`<sup>Required</sup> <a name="dependencies" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.dependencies"></a>

```typescript
public readonly dependencies: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *this node depends on*.

> [{@link Node.dependencyLinks }]({@link Node.dependencyLinks })

---

##### `dependencyLinks`<sup>Required</sup> <a name="dependencyLinks" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.dependencyLinks"></a>

```typescript
public readonly dependencyLinks: Dependency[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]

Gets list of {@link Dependency} links (edges) where this node is the **source**.

---

##### `depth`<sup>Required</sup> <a name="depth" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.depth"></a>

```typescript
public readonly depth: number;
```

- *Type:* number

Indicates the depth of the node relative to root (0).

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.id"></a>

```typescript
public readonly id: string;
```

- *Type:* string

Node id, which is only unique within parent scope.

---

##### `isAsset`<sup>Required</sup> <a name="isAsset" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isAsset"></a>

```typescript
public readonly isAsset: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.ASSET}.

---

##### `isCfnFqn`<sup>Required</sup> <a name="isCfnFqn" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isCfnFqn"></a>

```typescript
public readonly isCfnFqn: boolean;
```

- *Type:* boolean

Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct.

> [{@link FlagEnum.CFN_FQN }]({@link FlagEnum.CFN_FQN })

---

##### `isCluster`<sup>Required</sup> <a name="isCluster" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isCluster"></a>

```typescript
public readonly isCluster: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.CLUSTER}.

---

##### `isCustomResource`<sup>Required</sup> <a name="isCustomResource" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isCustomResource"></a>

```typescript
public readonly isCustomResource: boolean;
```

- *Type:* boolean

Indicates if node is a *Custom Resource*.

---

##### `isExtraneous`<sup>Required</sup> <a name="isExtraneous" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isExtraneous"></a>

```typescript
public readonly isExtraneous: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children.

---

##### `isGraphContainer`<sup>Required</sup> <a name="isGraphContainer" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isGraphContainer"></a>

```typescript
public readonly isGraphContainer: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}.

---

##### `isLeaf`<sup>Required</sup> <a name="isLeaf" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isLeaf"></a>

```typescript
public readonly isLeaf: boolean;
```

- *Type:* boolean

Indicates if this node is a *leaf* node, which means it does not have children.

---

##### `isTopLevel`<sup>Required</sup> <a name="isTopLevel" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.isTopLevel"></a>

```typescript
public readonly isTopLevel: boolean;
```

- *Type:* boolean

Indicates if node is direct child of the graph root node.

---

##### `links`<sup>Required</sup> <a name="links" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.links"></a>

```typescript
public readonly links: Edge[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]

Gets all links (edges) in which this node is the **source**.

---

##### `nodeType`<sup>Required</sup> <a name="nodeType" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.nodeType"></a>

```typescript
public readonly nodeType: NodeTypeEnum;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a>

Type of node.

---

##### `path`<sup>Required</sup> <a name="path" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.path"></a>

```typescript
public readonly path: string;
```

- *Type:* string

Path of the node.

---

##### `referencedBy`<sup>Required</sup> <a name="referencedBy" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.referencedBy"></a>

```typescript
public readonly referencedBy: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *reference this node*.

> [{@link Node.reverseReferenceLinks }]({@link Node.reverseReferenceLinks })

---

##### `referenceLinks`<sup>Required</sup> <a name="referenceLinks" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.referenceLinks"></a>

```typescript
public readonly referenceLinks: Reference[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]

Gets list of {@link Reference} links (edges) where this node is the **source**.

---

##### `references`<sup>Required</sup> <a name="references" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.references"></a>

```typescript
public readonly references: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *this node references*.

> [{@link Node.referenceLinks }]({@link Node.referenceLinks })

---

##### `reverseDependencyLinks`<sup>Required</sup> <a name="reverseDependencyLinks" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.reverseDependencyLinks"></a>

```typescript
public readonly reverseDependencyLinks: Dependency[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]

Gets list of {@link Dependency} links (edges) where this node is the **target**.

---

##### `reverseLinks`<sup>Required</sup> <a name="reverseLinks" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.reverseLinks"></a>

```typescript
public readonly reverseLinks: Edge[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]

Gets all links (edges) in which this node is the **target**.

---

##### `reverseReferenceLinks`<sup>Required</sup> <a name="reverseReferenceLinks" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.reverseReferenceLinks"></a>

```typescript
public readonly reverseReferenceLinks: Reference[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]

Gets list of {@link Reference} links (edges) where this node is the **target**.

---

##### `scopes`<sup>Required</sup> <a name="scopes" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.scopes"></a>

```typescript
public readonly scopes: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Gets descending ordered list of ancestors from the root.

---

##### `siblings`<sup>Required</sup> <a name="siblings" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.siblings"></a>

```typescript
public readonly siblings: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of *siblings* of this node.

---

##### `cfnProps`<sup>Optional</sup> <a name="cfnProps" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.cfnProps"></a>

```typescript
public readonly cfnProps: PlainObject;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>

Gets CloudFormation properties for this node.

---

##### `cfnType`<sup>Optional</sup> <a name="cfnType" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.cfnType"></a>

```typescript
public readonly cfnType: string;
```

- *Type:* string

Get the CloudFormation resource type for this node.

---

##### `constructInfo`<sup>Optional</sup> <a name="constructInfo" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.constructInfo"></a>

```typescript
public readonly constructInfo: ConstructInfo;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `constructInfoFqn`<sup>Optional</sup> <a name="constructInfoFqn" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.constructInfoFqn"></a>

```typescript
public readonly constructInfoFqn: string;
```

- *Type:* string

Synthesized construct information defining jii resolution data.

---

##### `logicalId`<sup>Optional</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.logicalId"></a>

```typescript
public readonly logicalId: string;
```

- *Type:* string

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.parent"></a>

```typescript
public readonly parent: Node;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

Only the root node should not have parent.

---

##### `rootStack`<sup>Optional</sup> <a name="rootStack" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.rootStack"></a>

```typescript
public readonly rootStack: StackNode;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Get **root** stack.

---

##### `stack`<sup>Optional</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.stack"></a>

```typescript
public readonly stack: StackNode;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained in.

---

##### `exports`<sup>Required</sup> <a name="exports" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.exports"></a>

```typescript
public readonly exports: OutputNode[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.OutputNode">OutputNode</a>[]

Get all **exported** {@link OutputNode}s defined by this stack.

---

##### `outputs`<sup>Required</sup> <a name="outputs" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.outputs"></a>

```typescript
public readonly outputs: OutputNode[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.OutputNode">OutputNode</a>[]

Get all {@link OutputNode}s defined by this stack.

---

##### `parameters`<sup>Required</sup> <a name="parameters" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.parameters"></a>

```typescript
public readonly parameters: ParameterNode[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode">ParameterNode</a>[]

Get all {@link ParameterNode}s defined by this stack.

---

##### `stage`<sup>Optional</sup> <a name="stage" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.stage"></a>

```typescript
public readonly stage: StageNode;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StageNode">StageNode</a>

Get {@link StageNode} containing this stack.

---

##### `parentStack`<sup>Optional</sup> <a name="parentStack" id="@aws-prototyping-sdk/cdk-graph.NestedStackNode.property.parentStack"></a>

```typescript
public readonly parentStack: StackNode;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Get parent stack of this nested stack.

---


### Node <a name="Node" id="@aws-prototyping-sdk/cdk-graph.Node"></a>

- *Implements:* <a href="#@aws-prototyping-sdk/cdk-graph.ISerializableNode">ISerializableNode</a>

Node class is the base definition of **node** entities in the graph, as in standard [graph theory](https://en.wikipedia.org/wiki/Graph_theory).

#### Initializers <a name="Initializers" id="@aws-prototyping-sdk/cdk-graph.Node.Initializer"></a>

```typescript
import { Node } from '@aws-prototyping-sdk/cdk-graph'

new Node(props: INodeProps)
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.Initializer.parameter.props">props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.INodeProps">INodeProps</a></code> | *No description.* |

---

##### `props`<sup>Required</sup> <a name="props" id="@aws-prototyping-sdk/cdk-graph.Node.Initializer.parameter.props"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodeProps">INodeProps</a>

---

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.addAttribute">addAttribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.addFlag">addFlag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.addMetadata">addMetadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.addTag">addTag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.applyData">applyData</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.findMetadata">findMetadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.getAttribute">getAttribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.getTag">getTag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.hasAttribute">hasAttribute</a></code> | Indicates if entity has a given attribute defined, and optionally with a specific value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.hasFlag">hasFlag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.hasMetadata">hasMetadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.hasTag">hasTag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.mutateDestroy">mutateDestroy</a></code> | Destroys this node by removing all references and removing this node from the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.setAttribute">setAttribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.setTag">setTag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.addChild">addChild</a></code> | Add *child* node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.addLink">addLink</a></code> | Add *link* to another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.addReverseLink">addReverseLink</a></code> | Add *link* from another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.doesDependOn">doesDependOn</a></code> | Indicates if *this node* depends on *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.doesReference">doesReference</a></code> | Indicates if *this node* references *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.find">find</a></code> | Recursively find the nearest sub-node matching predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.findAll">findAll</a></code> | Return this construct and all of its sub-nodes in the given order. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.findAllLinks">findAllLinks</a></code> | Return all direct links of this node and that of all sub-nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.findAncestor">findAncestor</a></code> | Find nearest *ancestor* of *this node* matching given predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.findChild">findChild</a></code> | Find child with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.findLink">findLink</a></code> | Find link of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.findLinks">findLinks</a></code> | Find all links of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.getCfnProp">getCfnProp</a></code> | Get specific CloudFormation property. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.getChild">getChild</a></code> | Get *child* node with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.getLinkChains">getLinkChains</a></code> | Resolve all link chains. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.getNearestAncestor">getNearestAncestor</a></code> | Gets the nearest **common** *ancestor* shared between *this node* and another *node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.isAncestor">isAncestor</a></code> | Indicates if a specific *node* is an *ancestor* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.isChild">isChild</a></code> | Indicates if specific *node* is a *child* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.mutateCollapse">mutateCollapse</a></code> | Collapses all sub-nodes of *this node* into *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.mutateCollapseTo">mutateCollapseTo</a></code> | Collapses *this node* into *an ancestor*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.mutateCollapseToParent">mutateCollapseToParent</a></code> | Collapses *this node* into *it's parent node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.mutateHoist">mutateHoist</a></code> | Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.mutateMove">mutateMove</a></code> | Move this node into a new parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.mutateRemoveChild">mutateRemoveChild</a></code> | Remove a *child* node from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.mutateRemoveLink">mutateRemoveLink</a></code> | Remove a *link* from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.mutateRemoveReverseLink">mutateRemoveReverseLink</a></code> | Remove a *link* to *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.mutateUncluster">mutateUncluster</a></code> | Hoist all children to parent and collapse node to parent. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.toString">toString</a></code> | Get string representation of this node. |

---

##### `addAttribute` <a name="addAttribute" id="@aws-prototyping-sdk/cdk-graph.Node.addAttribute"></a>

```typescript
public addAttribute(key: string, value: any): void
```

Add attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Node.addAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Node.addAttribute.parameter.value"></a>

- *Type:* any

---

##### `addFlag` <a name="addFlag" id="@aws-prototyping-sdk/cdk-graph.Node.addFlag"></a>

```typescript
public addFlag(flag: FlagEnum): void
```

Add flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.Node.addFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `addMetadata` <a name="addMetadata" id="@aws-prototyping-sdk/cdk-graph.Node.addMetadata"></a>

```typescript
public addMetadata(metadataType: string, data: any): void
```

Add metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.Node.addMetadata.parameter.metadataType"></a>

- *Type:* string

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.Node.addMetadata.parameter.data"></a>

- *Type:* any

---

##### `addTag` <a name="addTag" id="@aws-prototyping-sdk/cdk-graph.Node.addTag"></a>

```typescript
public addTag(key: string, value: string): void
```

Add tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Node.addTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Node.addTag.parameter.value"></a>

- *Type:* string

---

##### `applyData` <a name="applyData" id="@aws-prototyping-sdk/cdk-graph.Node.applyData"></a>

```typescript
public applyData(data: IBaseEntityDataProps, overwrite?: boolean, applyFlags?: boolean): void
```

Applies data (attributes, metadata, tags, flag) to entity.

Generally used only for mutations such as collapse and consume to retain data.

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.Node.applyData.parameter.data"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps">IBaseEntityDataProps</a>

The data to apply.

---

###### `overwrite`<sup>Optional</sup> <a name="overwrite" id="@aws-prototyping-sdk/cdk-graph.Node.applyData.parameter.overwrite"></a>

- *Type:* boolean

---

###### `applyFlags`<sup>Optional</sup> <a name="applyFlags" id="@aws-prototyping-sdk/cdk-graph.Node.applyData.parameter.applyFlags"></a>

- *Type:* boolean

Indicates if data is overwritten - Indicates if flags should be applied.

---

##### `findMetadata` <a name="findMetadata" id="@aws-prototyping-sdk/cdk-graph.Node.findMetadata"></a>

```typescript
public findMetadata(metadataType: string): MetadataEntry[]
```

Retrieves all metadata entries of a given type.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.Node.findMetadata.parameter.metadataType"></a>

- *Type:* string

---

##### `getAttribute` <a name="getAttribute" id="@aws-prototyping-sdk/cdk-graph.Node.getAttribute"></a>

```typescript
public getAttribute(key: string): any
```

Get attribute by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Node.getAttribute.parameter.key"></a>

- *Type:* string

---

##### `getTag` <a name="getTag" id="@aws-prototyping-sdk/cdk-graph.Node.getTag"></a>

```typescript
public getTag(key: string): string
```

Get tag by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Node.getTag.parameter.key"></a>

- *Type:* string

---

##### `hasAttribute` <a name="hasAttribute" id="@aws-prototyping-sdk/cdk-graph.Node.hasAttribute"></a>

```typescript
public hasAttribute(key: string, value?: any): boolean
```

Indicates if entity has a given attribute defined, and optionally with a specific value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Node.hasAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Node.hasAttribute.parameter.value"></a>

- *Type:* any

---

##### `hasFlag` <a name="hasFlag" id="@aws-prototyping-sdk/cdk-graph.Node.hasFlag"></a>

```typescript
public hasFlag(flag: FlagEnum): boolean
```

Indicates if entity has a given flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.Node.hasFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `hasMetadata` <a name="hasMetadata" id="@aws-prototyping-sdk/cdk-graph.Node.hasMetadata"></a>

```typescript
public hasMetadata(metadataType: string, data: any): boolean
```

Indicates if entity has matching metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.Node.hasMetadata.parameter.metadataType"></a>

- *Type:* string

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.Node.hasMetadata.parameter.data"></a>

- *Type:* any

---

##### `hasTag` <a name="hasTag" id="@aws-prototyping-sdk/cdk-graph.Node.hasTag"></a>

```typescript
public hasTag(key: string, value?: string): boolean
```

Indicates if entity has tag, optionally verifying tag value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Node.hasTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Node.hasTag.parameter.value"></a>

- *Type:* string

---

##### `mutateDestroy` <a name="mutateDestroy" id="@aws-prototyping-sdk/cdk-graph.Node.mutateDestroy"></a>

```typescript
public mutateDestroy(strict?: boolean): void
```

Destroys this node by removing all references and removing this node from the store.

###### `strict`<sup>Optional</sup> <a name="strict" id="@aws-prototyping-sdk/cdk-graph.Node.mutateDestroy.parameter.strict"></a>

- *Type:* boolean

Indicates that this node must not have references.

---

##### `setAttribute` <a name="setAttribute" id="@aws-prototyping-sdk/cdk-graph.Node.setAttribute"></a>

```typescript
public setAttribute(key: string, value: any): void
```

Set attribute.

This will overwrite existing attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Node.setAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Node.setAttribute.parameter.value"></a>

- *Type:* any

---

##### `setTag` <a name="setTag" id="@aws-prototyping-sdk/cdk-graph.Node.setTag"></a>

```typescript
public setTag(key: string, value: string): void
```

Set tag.

Will overwrite existing tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Node.setTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Node.setTag.parameter.value"></a>

- *Type:* string

---

##### `addChild` <a name="addChild" id="@aws-prototyping-sdk/cdk-graph.Node.addChild"></a>

```typescript
public addChild(node: Node): void
```

Add *child* node.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.Node.addChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `addLink` <a name="addLink" id="@aws-prototyping-sdk/cdk-graph.Node.addLink"></a>

```typescript
public addLink(edge: Edge): void
```

Add *link* to another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.Node.addLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `addReverseLink` <a name="addReverseLink" id="@aws-prototyping-sdk/cdk-graph.Node.addReverseLink"></a>

```typescript
public addReverseLink(edge: Edge): void
```

Add *link* from another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.Node.addReverseLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `doesDependOn` <a name="doesDependOn" id="@aws-prototyping-sdk/cdk-graph.Node.doesDependOn"></a>

```typescript
public doesDependOn(node: Node): boolean
```

Indicates if *this node* depends on *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.Node.doesDependOn.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `doesReference` <a name="doesReference" id="@aws-prototyping-sdk/cdk-graph.Node.doesReference"></a>

```typescript
public doesReference(node: Node): boolean
```

Indicates if *this node* references *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.Node.doesReference.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `find` <a name="find" id="@aws-prototyping-sdk/cdk-graph.Node.find"></a>

```typescript
public find(predicate: INodePredicate): Node
```

Recursively find the nearest sub-node matching predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.Node.find.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

---

##### `findAll` <a name="findAll" id="@aws-prototyping-sdk/cdk-graph.Node.findAll"></a>

```typescript
public findAll(options?: IFindNodeOptions): Node[]
```

Return this construct and all of its sub-nodes in the given order.

Optionally filter nodes based on predicate.

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.Node.findAll.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindNodeOptions">IFindNodeOptions</a>

---

##### `findAllLinks` <a name="findAllLinks" id="@aws-prototyping-sdk/cdk-graph.Node.findAllLinks"></a>

```typescript
public findAllLinks(options?: IFindEdgeOptions): Edge[]
```

Return all direct links of this node and that of all sub-nodes.

Optionally filter links based on predicate.

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.Node.findAllLinks.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindEdgeOptions">IFindEdgeOptions</a>

---

##### `findAncestor` <a name="findAncestor" id="@aws-prototyping-sdk/cdk-graph.Node.findAncestor"></a>

```typescript
public findAncestor(predicate: INodePredicate, max?: number): Node
```

Find nearest *ancestor* of *this node* matching given predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.Node.findAncestor.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

Predicate to match ancestor.

---

###### `max`<sup>Optional</sup> <a name="max" id="@aws-prototyping-sdk/cdk-graph.Node.findAncestor.parameter.max"></a>

- *Type:* number

---

##### `findChild` <a name="findChild" id="@aws-prototyping-sdk/cdk-graph.Node.findChild"></a>

```typescript
public findChild(id: string): Node
```

Find child with given *id*.

Similar to `find` but does not throw error if no child found.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.Node.findChild.parameter.id"></a>

- *Type:* string

---

##### `findLink` <a name="findLink" id="@aws-prototyping-sdk/cdk-graph.Node.findLink"></a>

```typescript
public findLink(predicate: IEdgePredicate, reverse?: boolean, follow?: boolean, direct?: boolean): Edge
```

Find link of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct link
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.Node.findLink.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.Node.findLink.parameter.reverse"></a>

- *Type:* boolean

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.Node.findLink.parameter.follow"></a>

- *Type:* boolean

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.Node.findLink.parameter.direct"></a>

- *Type:* boolean

Indicates that only *direct* links should be searched.

---

##### `findLinks` <a name="findLinks" id="@aws-prototyping-sdk/cdk-graph.Node.findLinks"></a>

```typescript
public findLinks(predicate: IEdgePredicate, reverse?: boolean, follow?: boolean, direct?: boolean): Edge[]
```

Find all links of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct links
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.Node.findLinks.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.Node.findLinks.parameter.reverse"></a>

- *Type:* boolean

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.Node.findLinks.parameter.follow"></a>

- *Type:* boolean

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.Node.findLinks.parameter.direct"></a>

- *Type:* boolean

Indicates that only *direct* links should be searched.

---

##### `getCfnProp` <a name="getCfnProp" id="@aws-prototyping-sdk/cdk-graph.Node.getCfnProp"></a>

```typescript
public getCfnProp(key: string): string | number | boolean | PlainObject | string | number | boolean | PlainObject[]
```

Get specific CloudFormation property.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Node.getCfnProp.parameter.key"></a>

- *Type:* string

---

##### `getChild` <a name="getChild" id="@aws-prototyping-sdk/cdk-graph.Node.getChild"></a>

```typescript
public getChild(id: string): Node
```

Get *child* node with given *id*.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.Node.getChild.parameter.id"></a>

- *Type:* string

---

##### `getLinkChains` <a name="getLinkChains" id="@aws-prototyping-sdk/cdk-graph.Node.getLinkChains"></a>

```typescript
public getLinkChains(reverse?: boolean): any[][]
```

Resolve all link chains.

> [{@link EdgeChain }]({@link EdgeChain })

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.Node.getLinkChains.parameter.reverse"></a>

- *Type:* boolean

---

##### `getNearestAncestor` <a name="getNearestAncestor" id="@aws-prototyping-sdk/cdk-graph.Node.getNearestAncestor"></a>

```typescript
public getNearestAncestor(node: Node): Node
```

Gets the nearest **common** *ancestor* shared between *this node* and another *node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.Node.getNearestAncestor.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `isAncestor` <a name="isAncestor" id="@aws-prototyping-sdk/cdk-graph.Node.isAncestor"></a>

```typescript
public isAncestor(ancestor: Node): boolean
```

Indicates if a specific *node* is an *ancestor* of *this node*.

###### `ancestor`<sup>Required</sup> <a name="ancestor" id="@aws-prototyping-sdk/cdk-graph.Node.isAncestor.parameter.ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `isChild` <a name="isChild" id="@aws-prototyping-sdk/cdk-graph.Node.isChild"></a>

```typescript
public isChild(node: Node): boolean
```

Indicates if specific *node* is a *child* of *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.Node.isChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateCollapse` <a name="mutateCollapse" id="@aws-prototyping-sdk/cdk-graph.Node.mutateCollapse"></a>

```typescript
public mutateCollapse(): void
```

Collapses all sub-nodes of *this node* into *this node*.

##### `mutateCollapseTo` <a name="mutateCollapseTo" id="@aws-prototyping-sdk/cdk-graph.Node.mutateCollapseTo"></a>

```typescript
public mutateCollapseTo(ancestor: Node): Node
```

Collapses *this node* into *an ancestor*.

###### `ancestor`<sup>Required</sup> <a name="ancestor" id="@aws-prototyping-sdk/cdk-graph.Node.mutateCollapseTo.parameter.ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateCollapseToParent` <a name="mutateCollapseToParent" id="@aws-prototyping-sdk/cdk-graph.Node.mutateCollapseToParent"></a>

```typescript
public mutateCollapseToParent(): Node
```

Collapses *this node* into *it's parent node*.

##### `mutateHoist` <a name="mutateHoist" id="@aws-prototyping-sdk/cdk-graph.Node.mutateHoist"></a>

```typescript
public mutateHoist(newParent: Node): void
```

Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor.

###### `newParent`<sup>Required</sup> <a name="newParent" id="@aws-prototyping-sdk/cdk-graph.Node.mutateHoist.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateMove` <a name="mutateMove" id="@aws-prototyping-sdk/cdk-graph.Node.mutateMove"></a>

```typescript
public mutateMove(newParent: Node): void
```

Move this node into a new parent node.

###### `newParent`<sup>Required</sup> <a name="newParent" id="@aws-prototyping-sdk/cdk-graph.Node.mutateMove.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

The parent to move this node to.

---

##### `mutateRemoveChild` <a name="mutateRemoveChild" id="@aws-prototyping-sdk/cdk-graph.Node.mutateRemoveChild"></a>

```typescript
public mutateRemoveChild(node: Node): boolean
```

Remove a *child* node from *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.Node.mutateRemoveChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateRemoveLink` <a name="mutateRemoveLink" id="@aws-prototyping-sdk/cdk-graph.Node.mutateRemoveLink"></a>

```typescript
public mutateRemoveLink(link: Edge): boolean
```

Remove a *link* from *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.Node.mutateRemoveLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutateRemoveReverseLink` <a name="mutateRemoveReverseLink" id="@aws-prototyping-sdk/cdk-graph.Node.mutateRemoveReverseLink"></a>

```typescript
public mutateRemoveReverseLink(link: Edge): boolean
```

Remove a *link* to *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.Node.mutateRemoveReverseLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutateUncluster` <a name="mutateUncluster" id="@aws-prototyping-sdk/cdk-graph.Node.mutateUncluster"></a>

```typescript
public mutateUncluster(): void
```

Hoist all children to parent and collapse node to parent.

##### `toString` <a name="toString" id="@aws-prototyping-sdk/cdk-graph.Node.toString"></a>

```typescript
public toString(): string
```

Get string representation of this node.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.attributes">attributes</a></code> | <code>{[ key: string ]: string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> \| string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}</code> | Get *readonly* record of all attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.flags">flags</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]</code> | Get *readonly* list of all flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.isDestroyed">isDestroyed</a></code> | <code>boolean</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.isMutated">isMutated</a></code> | <code>boolean</code> | Indicates if the entity has had destructive mutations applied. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.metadata">metadata</a></code> | <code>constructs.MetadataEntry[]</code> | Get *readonly* list of all metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Reference to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.tags">tags</a></code> | <code>{[ key: string ]: string}</code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.uuid">uuid</a></code> | <code>string</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.allowDestructiveMutations">allowDestructiveMutations</a></code> | <code>boolean</code> | Indicates if this node allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.children">children</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get all direct child nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.dependedOnBy">dependedOnBy</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *depend on this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.dependencies">dependencies</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *this node depends on*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.dependencyLinks">dependencyLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]</code> | Gets list of {@link Dependency} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.depth">depth</a></code> | <code>number</code> | Indicates the depth of the node relative to root (0). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.id">id</a></code> | <code>string</code> | Node id, which is only unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.isAsset">isAsset</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.ASSET}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.isCfnFqn">isCfnFqn</a></code> | <code>boolean</code> | Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.isCluster">isCluster</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.CLUSTER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.isCustomResource">isCustomResource</a></code> | <code>boolean</code> | Indicates if node is a *Custom Resource*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.isExtraneous">isExtraneous</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.isGraphContainer">isGraphContainer</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.isLeaf">isLeaf</a></code> | <code>boolean</code> | Indicates if this node is a *leaf* node, which means it does not have children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.isTopLevel">isTopLevel</a></code> | <code>boolean</code> | Indicates if node is direct child of the graph root node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.links">links</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]</code> | Gets all links (edges) in which this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.nodeType">nodeType</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a></code> | Type of node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.path">path</a></code> | <code>string</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.referencedBy">referencedBy</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *reference this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.referenceLinks">referenceLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]</code> | Gets list of {@link Reference} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.references">references</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *this node references*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.reverseDependencyLinks">reverseDependencyLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]</code> | Gets list of {@link Dependency} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.reverseLinks">reverseLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]</code> | Gets all links (edges) in which this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.reverseReferenceLinks">reverseReferenceLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]</code> | Gets list of {@link Reference} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.scopes">scopes</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Gets descending ordered list of ancestors from the root. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.siblings">siblings</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of *siblings* of this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.cfnProps">cfnProps</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a></code> | Gets CloudFormation properties for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.cfnType">cfnType</a></code> | <code>string</code> | Get the CloudFormation resource type for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.constructInfo">constructInfo</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.constructInfoFqn">constructInfoFqn</a></code> | <code>string</code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.logicalId">logicalId</a></code> | <code>string</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.parent">parent</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.rootStack">rootStack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Get **root** stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Node.property.stack">stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Stack the node is contained in. |

---

##### `attributes`<sup>Required</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.Node.property.attributes"></a>

```typescript
public readonly attributes: {[ key: string ]: string | number | boolean | PlainObject | string | number | boolean | PlainObject[]};
```

- *Type:* {[ key: string ]: string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> | string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}

Get *readonly* record of all attributes.

---

##### `flags`<sup>Required</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.Node.property.flags"></a>

```typescript
public readonly flags: FlagEnum[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]

Get *readonly* list of all flags.

---

##### `isDestroyed`<sup>Required</sup> <a name="isDestroyed" id="@aws-prototyping-sdk/cdk-graph.Node.property.isDestroyed"></a>

```typescript
public readonly isDestroyed: boolean;
```

- *Type:* boolean

Indicates if the entity has been destroyed (eg: removed from store).

---

##### `isMutated`<sup>Required</sup> <a name="isMutated" id="@aws-prototyping-sdk/cdk-graph.Node.property.isMutated"></a>

```typescript
public readonly isMutated: boolean;
```

- *Type:* boolean

Indicates if the entity has had destructive mutations applied.

---

##### `metadata`<sup>Required</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.Node.property.metadata"></a>

```typescript
public readonly metadata: MetadataEntry[];
```

- *Type:* constructs.MetadataEntry[]

Get *readonly* list of all metadata entries.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.Node.property.store"></a>

```typescript
public readonly store: Store;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Reference to the store.

---

##### `tags`<sup>Required</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.Node.property.tags"></a>

```typescript
public readonly tags: {[ key: string ]: string};
```

- *Type:* {[ key: string ]: string}

Get *readonly* record of all tags.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.Node.property.uuid"></a>

```typescript
public readonly uuid: string;
```

- *Type:* string

Universally unique identifier.

---

##### `allowDestructiveMutations`<sup>Required</sup> <a name="allowDestructiveMutations" id="@aws-prototyping-sdk/cdk-graph.Node.property.allowDestructiveMutations"></a>

```typescript
public readonly allowDestructiveMutations: boolean;
```

- *Type:* boolean

Indicates if this node allows destructive mutations.

> [{@link Store.allowDestructiveMutations }]({@link Store.allowDestructiveMutations })

---

##### `children`<sup>Required</sup> <a name="children" id="@aws-prototyping-sdk/cdk-graph.Node.property.children"></a>

```typescript
public readonly children: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get all direct child nodes.

---

##### `dependedOnBy`<sup>Required</sup> <a name="dependedOnBy" id="@aws-prototyping-sdk/cdk-graph.Node.property.dependedOnBy"></a>

```typescript
public readonly dependedOnBy: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *depend on this node*.

> [{@link Node.reverseDependencyLinks }]({@link Node.reverseDependencyLinks })

---

##### `dependencies`<sup>Required</sup> <a name="dependencies" id="@aws-prototyping-sdk/cdk-graph.Node.property.dependencies"></a>

```typescript
public readonly dependencies: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *this node depends on*.

> [{@link Node.dependencyLinks }]({@link Node.dependencyLinks })

---

##### `dependencyLinks`<sup>Required</sup> <a name="dependencyLinks" id="@aws-prototyping-sdk/cdk-graph.Node.property.dependencyLinks"></a>

```typescript
public readonly dependencyLinks: Dependency[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]

Gets list of {@link Dependency} links (edges) where this node is the **source**.

---

##### `depth`<sup>Required</sup> <a name="depth" id="@aws-prototyping-sdk/cdk-graph.Node.property.depth"></a>

```typescript
public readonly depth: number;
```

- *Type:* number

Indicates the depth of the node relative to root (0).

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.Node.property.id"></a>

```typescript
public readonly id: string;
```

- *Type:* string

Node id, which is only unique within parent scope.

---

##### `isAsset`<sup>Required</sup> <a name="isAsset" id="@aws-prototyping-sdk/cdk-graph.Node.property.isAsset"></a>

```typescript
public readonly isAsset: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.ASSET}.

---

##### `isCfnFqn`<sup>Required</sup> <a name="isCfnFqn" id="@aws-prototyping-sdk/cdk-graph.Node.property.isCfnFqn"></a>

```typescript
public readonly isCfnFqn: boolean;
```

- *Type:* boolean

Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct.

> [{@link FlagEnum.CFN_FQN }]({@link FlagEnum.CFN_FQN })

---

##### `isCluster`<sup>Required</sup> <a name="isCluster" id="@aws-prototyping-sdk/cdk-graph.Node.property.isCluster"></a>

```typescript
public readonly isCluster: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.CLUSTER}.

---

##### `isCustomResource`<sup>Required</sup> <a name="isCustomResource" id="@aws-prototyping-sdk/cdk-graph.Node.property.isCustomResource"></a>

```typescript
public readonly isCustomResource: boolean;
```

- *Type:* boolean

Indicates if node is a *Custom Resource*.

---

##### `isExtraneous`<sup>Required</sup> <a name="isExtraneous" id="@aws-prototyping-sdk/cdk-graph.Node.property.isExtraneous"></a>

```typescript
public readonly isExtraneous: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children.

---

##### `isGraphContainer`<sup>Required</sup> <a name="isGraphContainer" id="@aws-prototyping-sdk/cdk-graph.Node.property.isGraphContainer"></a>

```typescript
public readonly isGraphContainer: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}.

---

##### `isLeaf`<sup>Required</sup> <a name="isLeaf" id="@aws-prototyping-sdk/cdk-graph.Node.property.isLeaf"></a>

```typescript
public readonly isLeaf: boolean;
```

- *Type:* boolean

Indicates if this node is a *leaf* node, which means it does not have children.

---

##### `isTopLevel`<sup>Required</sup> <a name="isTopLevel" id="@aws-prototyping-sdk/cdk-graph.Node.property.isTopLevel"></a>

```typescript
public readonly isTopLevel: boolean;
```

- *Type:* boolean

Indicates if node is direct child of the graph root node.

---

##### `links`<sup>Required</sup> <a name="links" id="@aws-prototyping-sdk/cdk-graph.Node.property.links"></a>

```typescript
public readonly links: Edge[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]

Gets all links (edges) in which this node is the **source**.

---

##### `nodeType`<sup>Required</sup> <a name="nodeType" id="@aws-prototyping-sdk/cdk-graph.Node.property.nodeType"></a>

```typescript
public readonly nodeType: NodeTypeEnum;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a>

Type of node.

---

##### `path`<sup>Required</sup> <a name="path" id="@aws-prototyping-sdk/cdk-graph.Node.property.path"></a>

```typescript
public readonly path: string;
```

- *Type:* string

Path of the node.

---

##### `referencedBy`<sup>Required</sup> <a name="referencedBy" id="@aws-prototyping-sdk/cdk-graph.Node.property.referencedBy"></a>

```typescript
public readonly referencedBy: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *reference this node*.

> [{@link Node.reverseReferenceLinks }]({@link Node.reverseReferenceLinks })

---

##### `referenceLinks`<sup>Required</sup> <a name="referenceLinks" id="@aws-prototyping-sdk/cdk-graph.Node.property.referenceLinks"></a>

```typescript
public readonly referenceLinks: Reference[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]

Gets list of {@link Reference} links (edges) where this node is the **source**.

---

##### `references`<sup>Required</sup> <a name="references" id="@aws-prototyping-sdk/cdk-graph.Node.property.references"></a>

```typescript
public readonly references: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *this node references*.

> [{@link Node.referenceLinks }]({@link Node.referenceLinks })

---

##### `reverseDependencyLinks`<sup>Required</sup> <a name="reverseDependencyLinks" id="@aws-prototyping-sdk/cdk-graph.Node.property.reverseDependencyLinks"></a>

```typescript
public readonly reverseDependencyLinks: Dependency[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]

Gets list of {@link Dependency} links (edges) where this node is the **target**.

---

##### `reverseLinks`<sup>Required</sup> <a name="reverseLinks" id="@aws-prototyping-sdk/cdk-graph.Node.property.reverseLinks"></a>

```typescript
public readonly reverseLinks: Edge[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]

Gets all links (edges) in which this node is the **target**.

---

##### `reverseReferenceLinks`<sup>Required</sup> <a name="reverseReferenceLinks" id="@aws-prototyping-sdk/cdk-graph.Node.property.reverseReferenceLinks"></a>

```typescript
public readonly reverseReferenceLinks: Reference[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]

Gets list of {@link Reference} links (edges) where this node is the **target**.

---

##### `scopes`<sup>Required</sup> <a name="scopes" id="@aws-prototyping-sdk/cdk-graph.Node.property.scopes"></a>

```typescript
public readonly scopes: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Gets descending ordered list of ancestors from the root.

---

##### `siblings`<sup>Required</sup> <a name="siblings" id="@aws-prototyping-sdk/cdk-graph.Node.property.siblings"></a>

```typescript
public readonly siblings: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of *siblings* of this node.

---

##### `cfnProps`<sup>Optional</sup> <a name="cfnProps" id="@aws-prototyping-sdk/cdk-graph.Node.property.cfnProps"></a>

```typescript
public readonly cfnProps: PlainObject;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>

Gets CloudFormation properties for this node.

---

##### `cfnType`<sup>Optional</sup> <a name="cfnType" id="@aws-prototyping-sdk/cdk-graph.Node.property.cfnType"></a>

```typescript
public readonly cfnType: string;
```

- *Type:* string

Get the CloudFormation resource type for this node.

---

##### `constructInfo`<sup>Optional</sup> <a name="constructInfo" id="@aws-prototyping-sdk/cdk-graph.Node.property.constructInfo"></a>

```typescript
public readonly constructInfo: ConstructInfo;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `constructInfoFqn`<sup>Optional</sup> <a name="constructInfoFqn" id="@aws-prototyping-sdk/cdk-graph.Node.property.constructInfoFqn"></a>

```typescript
public readonly constructInfoFqn: string;
```

- *Type:* string

Synthesized construct information defining jii resolution data.

---

##### `logicalId`<sup>Optional</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.Node.property.logicalId"></a>

```typescript
public readonly logicalId: string;
```

- *Type:* string

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.Node.property.parent"></a>

```typescript
public readonly parent: Node;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

Only the root node should not have parent.

---

##### `rootStack`<sup>Optional</sup> <a name="rootStack" id="@aws-prototyping-sdk/cdk-graph.Node.property.rootStack"></a>

```typescript
public readonly rootStack: StackNode;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Get **root** stack.

---

##### `stack`<sup>Optional</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.Node.property.stack"></a>

```typescript
public readonly stack: StackNode;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained in.

---


### OutputNode <a name="OutputNode" id="@aws-prototyping-sdk/cdk-graph.OutputNode"></a>

OutputNode defines a cdk CfnOutput resources.

#### Initializers <a name="Initializers" id="@aws-prototyping-sdk/cdk-graph.OutputNode.Initializer"></a>

```typescript
import { OutputNode } from '@aws-prototyping-sdk/cdk-graph'

new OutputNode(props: IOutputNodeProps)
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.Initializer.parameter.props">props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps">IOutputNodeProps</a></code> | *No description.* |

---

##### `props`<sup>Required</sup> <a name="props" id="@aws-prototyping-sdk/cdk-graph.OutputNode.Initializer.parameter.props"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps">IOutputNodeProps</a>

---

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.addAttribute">addAttribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.addFlag">addFlag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.addMetadata">addMetadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.addTag">addTag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.applyData">applyData</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.findMetadata">findMetadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.getAttribute">getAttribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.getTag">getTag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.hasAttribute">hasAttribute</a></code> | Indicates if entity has a given attribute defined, and optionally with a specific value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.hasFlag">hasFlag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.hasMetadata">hasMetadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.hasTag">hasTag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.mutateDestroy">mutateDestroy</a></code> | Destroys this node by removing all references and removing this node from the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.setAttribute">setAttribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.setTag">setTag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.addChild">addChild</a></code> | Add *child* node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.addLink">addLink</a></code> | Add *link* to another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.addReverseLink">addReverseLink</a></code> | Add *link* from another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.doesDependOn">doesDependOn</a></code> | Indicates if *this node* depends on *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.doesReference">doesReference</a></code> | Indicates if *this node* references *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.find">find</a></code> | Recursively find the nearest sub-node matching predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.findAll">findAll</a></code> | Return this construct and all of its sub-nodes in the given order. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.findAllLinks">findAllLinks</a></code> | Return all direct links of this node and that of all sub-nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.findAncestor">findAncestor</a></code> | Find nearest *ancestor* of *this node* matching given predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.findChild">findChild</a></code> | Find child with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.findLink">findLink</a></code> | Find link of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.findLinks">findLinks</a></code> | Find all links of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.getCfnProp">getCfnProp</a></code> | Get specific CloudFormation property. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.getChild">getChild</a></code> | Get *child* node with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.getLinkChains">getLinkChains</a></code> | Resolve all link chains. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.getNearestAncestor">getNearestAncestor</a></code> | Gets the nearest **common** *ancestor* shared between *this node* and another *node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.isAncestor">isAncestor</a></code> | Indicates if a specific *node* is an *ancestor* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.isChild">isChild</a></code> | Indicates if specific *node* is a *child* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.mutateCollapse">mutateCollapse</a></code> | Collapses all sub-nodes of *this node* into *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.mutateCollapseTo">mutateCollapseTo</a></code> | Collapses *this node* into *an ancestor*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.mutateCollapseToParent">mutateCollapseToParent</a></code> | Collapses *this node* into *it's parent node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.mutateHoist">mutateHoist</a></code> | Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.mutateMove">mutateMove</a></code> | Move this node into a new parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.mutateRemoveChild">mutateRemoveChild</a></code> | Remove a *child* node from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.mutateRemoveLink">mutateRemoveLink</a></code> | Remove a *link* from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.mutateRemoveReverseLink">mutateRemoveReverseLink</a></code> | Remove a *link* to *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.mutateUncluster">mutateUncluster</a></code> | Hoist all children to parent and collapse node to parent. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.toString">toString</a></code> | Get string representation of this node. |

---

##### `addAttribute` <a name="addAttribute" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addAttribute"></a>

```typescript
public addAttribute(key: string, value: any): void
```

Add attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addAttribute.parameter.value"></a>

- *Type:* any

---

##### `addFlag` <a name="addFlag" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addFlag"></a>

```typescript
public addFlag(flag: FlagEnum): void
```

Add flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `addMetadata` <a name="addMetadata" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addMetadata"></a>

```typescript
public addMetadata(metadataType: string, data: any): void
```

Add metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addMetadata.parameter.metadataType"></a>

- *Type:* string

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addMetadata.parameter.data"></a>

- *Type:* any

---

##### `addTag` <a name="addTag" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addTag"></a>

```typescript
public addTag(key: string, value: string): void
```

Add tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addTag.parameter.value"></a>

- *Type:* string

---

##### `applyData` <a name="applyData" id="@aws-prototyping-sdk/cdk-graph.OutputNode.applyData"></a>

```typescript
public applyData(data: IBaseEntityDataProps, overwrite?: boolean, applyFlags?: boolean): void
```

Applies data (attributes, metadata, tags, flag) to entity.

Generally used only for mutations such as collapse and consume to retain data.

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.OutputNode.applyData.parameter.data"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps">IBaseEntityDataProps</a>

The data to apply.

---

###### `overwrite`<sup>Optional</sup> <a name="overwrite" id="@aws-prototyping-sdk/cdk-graph.OutputNode.applyData.parameter.overwrite"></a>

- *Type:* boolean

---

###### `applyFlags`<sup>Optional</sup> <a name="applyFlags" id="@aws-prototyping-sdk/cdk-graph.OutputNode.applyData.parameter.applyFlags"></a>

- *Type:* boolean

Indicates if data is overwritten - Indicates if flags should be applied.

---

##### `findMetadata` <a name="findMetadata" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findMetadata"></a>

```typescript
public findMetadata(metadataType: string): MetadataEntry[]
```

Retrieves all metadata entries of a given type.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findMetadata.parameter.metadataType"></a>

- *Type:* string

---

##### `getAttribute` <a name="getAttribute" id="@aws-prototyping-sdk/cdk-graph.OutputNode.getAttribute"></a>

```typescript
public getAttribute(key: string): any
```

Get attribute by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.OutputNode.getAttribute.parameter.key"></a>

- *Type:* string

---

##### `getTag` <a name="getTag" id="@aws-prototyping-sdk/cdk-graph.OutputNode.getTag"></a>

```typescript
public getTag(key: string): string
```

Get tag by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.OutputNode.getTag.parameter.key"></a>

- *Type:* string

---

##### `hasAttribute` <a name="hasAttribute" id="@aws-prototyping-sdk/cdk-graph.OutputNode.hasAttribute"></a>

```typescript
public hasAttribute(key: string, value?: any): boolean
```

Indicates if entity has a given attribute defined, and optionally with a specific value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.OutputNode.hasAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.OutputNode.hasAttribute.parameter.value"></a>

- *Type:* any

---

##### `hasFlag` <a name="hasFlag" id="@aws-prototyping-sdk/cdk-graph.OutputNode.hasFlag"></a>

```typescript
public hasFlag(flag: FlagEnum): boolean
```

Indicates if entity has a given flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.OutputNode.hasFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `hasMetadata` <a name="hasMetadata" id="@aws-prototyping-sdk/cdk-graph.OutputNode.hasMetadata"></a>

```typescript
public hasMetadata(metadataType: string, data: any): boolean
```

Indicates if entity has matching metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.OutputNode.hasMetadata.parameter.metadataType"></a>

- *Type:* string

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.OutputNode.hasMetadata.parameter.data"></a>

- *Type:* any

---

##### `hasTag` <a name="hasTag" id="@aws-prototyping-sdk/cdk-graph.OutputNode.hasTag"></a>

```typescript
public hasTag(key: string, value?: string): boolean
```

Indicates if entity has tag, optionally verifying tag value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.OutputNode.hasTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.OutputNode.hasTag.parameter.value"></a>

- *Type:* string

---

##### `mutateDestroy` <a name="mutateDestroy" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateDestroy"></a>

```typescript
public mutateDestroy(strict?: boolean): void
```

Destroys this node by removing all references and removing this node from the store.

###### `strict`<sup>Optional</sup> <a name="strict" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateDestroy.parameter.strict"></a>

- *Type:* boolean

---

##### `setAttribute` <a name="setAttribute" id="@aws-prototyping-sdk/cdk-graph.OutputNode.setAttribute"></a>

```typescript
public setAttribute(key: string, value: any): void
```

Set attribute.

This will overwrite existing attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.OutputNode.setAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.OutputNode.setAttribute.parameter.value"></a>

- *Type:* any

---

##### `setTag` <a name="setTag" id="@aws-prototyping-sdk/cdk-graph.OutputNode.setTag"></a>

```typescript
public setTag(key: string, value: string): void
```

Set tag.

Will overwrite existing tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.OutputNode.setTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.OutputNode.setTag.parameter.value"></a>

- *Type:* string

---

##### `addChild` <a name="addChild" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addChild"></a>

```typescript
public addChild(node: Node): void
```

Add *child* node.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `addLink` <a name="addLink" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addLink"></a>

```typescript
public addLink(edge: Edge): void
```

Add *link* to another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `addReverseLink` <a name="addReverseLink" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addReverseLink"></a>

```typescript
public addReverseLink(edge: Edge): void
```

Add *link* from another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.OutputNode.addReverseLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `doesDependOn` <a name="doesDependOn" id="@aws-prototyping-sdk/cdk-graph.OutputNode.doesDependOn"></a>

```typescript
public doesDependOn(node: Node): boolean
```

Indicates if *this node* depends on *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.OutputNode.doesDependOn.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `doesReference` <a name="doesReference" id="@aws-prototyping-sdk/cdk-graph.OutputNode.doesReference"></a>

```typescript
public doesReference(node: Node): boolean
```

Indicates if *this node* references *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.OutputNode.doesReference.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `find` <a name="find" id="@aws-prototyping-sdk/cdk-graph.OutputNode.find"></a>

```typescript
public find(predicate: INodePredicate): Node
```

Recursively find the nearest sub-node matching predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.OutputNode.find.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

---

##### `findAll` <a name="findAll" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findAll"></a>

```typescript
public findAll(options?: IFindNodeOptions): Node[]
```

Return this construct and all of its sub-nodes in the given order.

Optionally filter nodes based on predicate.

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findAll.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindNodeOptions">IFindNodeOptions</a>

---

##### `findAllLinks` <a name="findAllLinks" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findAllLinks"></a>

```typescript
public findAllLinks(options?: IFindEdgeOptions): Edge[]
```

Return all direct links of this node and that of all sub-nodes.

Optionally filter links based on predicate.

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findAllLinks.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindEdgeOptions">IFindEdgeOptions</a>

---

##### `findAncestor` <a name="findAncestor" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findAncestor"></a>

```typescript
public findAncestor(predicate: INodePredicate, max?: number): Node
```

Find nearest *ancestor* of *this node* matching given predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findAncestor.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

Predicate to match ancestor.

---

###### `max`<sup>Optional</sup> <a name="max" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findAncestor.parameter.max"></a>

- *Type:* number

---

##### `findChild` <a name="findChild" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findChild"></a>

```typescript
public findChild(id: string): Node
```

Find child with given *id*.

Similar to `find` but does not throw error if no child found.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findChild.parameter.id"></a>

- *Type:* string

---

##### `findLink` <a name="findLink" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findLink"></a>

```typescript
public findLink(predicate: IEdgePredicate, reverse?: boolean, follow?: boolean, direct?: boolean): Edge
```

Find link of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct link
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findLink.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findLink.parameter.reverse"></a>

- *Type:* boolean

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findLink.parameter.follow"></a>

- *Type:* boolean

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findLink.parameter.direct"></a>

- *Type:* boolean

Indicates that only *direct* links should be searched.

---

##### `findLinks` <a name="findLinks" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findLinks"></a>

```typescript
public findLinks(predicate: IEdgePredicate, reverse?: boolean, follow?: boolean, direct?: boolean): Edge[]
```

Find all links of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct links
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findLinks.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findLinks.parameter.reverse"></a>

- *Type:* boolean

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findLinks.parameter.follow"></a>

- *Type:* boolean

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.OutputNode.findLinks.parameter.direct"></a>

- *Type:* boolean

Indicates that only *direct* links should be searched.

---

##### `getCfnProp` <a name="getCfnProp" id="@aws-prototyping-sdk/cdk-graph.OutputNode.getCfnProp"></a>

```typescript
public getCfnProp(key: string): string | number | boolean | PlainObject | string | number | boolean | PlainObject[]
```

Get specific CloudFormation property.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.OutputNode.getCfnProp.parameter.key"></a>

- *Type:* string

---

##### `getChild` <a name="getChild" id="@aws-prototyping-sdk/cdk-graph.OutputNode.getChild"></a>

```typescript
public getChild(id: string): Node
```

Get *child* node with given *id*.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.OutputNode.getChild.parameter.id"></a>

- *Type:* string

---

##### `getLinkChains` <a name="getLinkChains" id="@aws-prototyping-sdk/cdk-graph.OutputNode.getLinkChains"></a>

```typescript
public getLinkChains(reverse?: boolean): any[][]
```

Resolve all link chains.

> [{@link EdgeChain }]({@link EdgeChain })

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.OutputNode.getLinkChains.parameter.reverse"></a>

- *Type:* boolean

---

##### `getNearestAncestor` <a name="getNearestAncestor" id="@aws-prototyping-sdk/cdk-graph.OutputNode.getNearestAncestor"></a>

```typescript
public getNearestAncestor(node: Node): Node
```

Gets the nearest **common** *ancestor* shared between *this node* and another *node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.OutputNode.getNearestAncestor.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `isAncestor` <a name="isAncestor" id="@aws-prototyping-sdk/cdk-graph.OutputNode.isAncestor"></a>

```typescript
public isAncestor(ancestor: Node): boolean
```

Indicates if a specific *node* is an *ancestor* of *this node*.

###### `ancestor`<sup>Required</sup> <a name="ancestor" id="@aws-prototyping-sdk/cdk-graph.OutputNode.isAncestor.parameter.ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `isChild` <a name="isChild" id="@aws-prototyping-sdk/cdk-graph.OutputNode.isChild"></a>

```typescript
public isChild(node: Node): boolean
```

Indicates if specific *node* is a *child* of *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.OutputNode.isChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateCollapse` <a name="mutateCollapse" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateCollapse"></a>

```typescript
public mutateCollapse(): void
```

Collapses all sub-nodes of *this node* into *this node*.

##### `mutateCollapseTo` <a name="mutateCollapseTo" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateCollapseTo"></a>

```typescript
public mutateCollapseTo(ancestor: Node): Node
```

Collapses *this node* into *an ancestor*.

###### `ancestor`<sup>Required</sup> <a name="ancestor" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateCollapseTo.parameter.ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateCollapseToParent` <a name="mutateCollapseToParent" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateCollapseToParent"></a>

```typescript
public mutateCollapseToParent(): Node
```

Collapses *this node* into *it's parent node*.

##### `mutateHoist` <a name="mutateHoist" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateHoist"></a>

```typescript
public mutateHoist(newParent: Node): void
```

Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor.

###### `newParent`<sup>Required</sup> <a name="newParent" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateHoist.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateMove` <a name="mutateMove" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateMove"></a>

```typescript
public mutateMove(newParent: Node): void
```

Move this node into a new parent node.

###### `newParent`<sup>Required</sup> <a name="newParent" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateMove.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

The parent to move this node to.

---

##### `mutateRemoveChild` <a name="mutateRemoveChild" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateRemoveChild"></a>

```typescript
public mutateRemoveChild(node: Node): boolean
```

Remove a *child* node from *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateRemoveChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateRemoveLink` <a name="mutateRemoveLink" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateRemoveLink"></a>

```typescript
public mutateRemoveLink(link: Edge): boolean
```

Remove a *link* from *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateRemoveLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutateRemoveReverseLink` <a name="mutateRemoveReverseLink" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateRemoveReverseLink"></a>

```typescript
public mutateRemoveReverseLink(link: Edge): boolean
```

Remove a *link* to *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateRemoveReverseLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutateUncluster` <a name="mutateUncluster" id="@aws-prototyping-sdk/cdk-graph.OutputNode.mutateUncluster"></a>

```typescript
public mutateUncluster(): void
```

Hoist all children to parent and collapse node to parent.

##### `toString` <a name="toString" id="@aws-prototyping-sdk/cdk-graph.OutputNode.toString"></a>

```typescript
public toString(): string
```

Get string representation of this node.

#### Static Functions <a name="Static Functions" id="Static Functions"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.isOutputNode">isOutputNode</a></code> | Indicates if node is an {@link OutputNode}. |

---

##### `isOutputNode` <a name="isOutputNode" id="@aws-prototyping-sdk/cdk-graph.OutputNode.isOutputNode"></a>

```typescript
import { OutputNode } from '@aws-prototyping-sdk/cdk-graph'

OutputNode.isOutputNode(node: Node)
```

Indicates if node is an {@link OutputNode}.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.OutputNode.isOutputNode.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.attributes">attributes</a></code> | <code>{[ key: string ]: string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> \| string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}</code> | Get *readonly* record of all attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.flags">flags</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]</code> | Get *readonly* list of all flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.isDestroyed">isDestroyed</a></code> | <code>boolean</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.isMutated">isMutated</a></code> | <code>boolean</code> | Indicates if the entity has had destructive mutations applied. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.metadata">metadata</a></code> | <code>constructs.MetadataEntry[]</code> | Get *readonly* list of all metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Reference to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.tags">tags</a></code> | <code>{[ key: string ]: string}</code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.uuid">uuid</a></code> | <code>string</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.allowDestructiveMutations">allowDestructiveMutations</a></code> | <code>boolean</code> | Indicates if this node allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.children">children</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get all direct child nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.dependedOnBy">dependedOnBy</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *depend on this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.dependencies">dependencies</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *this node depends on*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.dependencyLinks">dependencyLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]</code> | Gets list of {@link Dependency} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.depth">depth</a></code> | <code>number</code> | Indicates the depth of the node relative to root (0). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.id">id</a></code> | <code>string</code> | Node id, which is only unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.isAsset">isAsset</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.ASSET}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.isCfnFqn">isCfnFqn</a></code> | <code>boolean</code> | Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.isCluster">isCluster</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.CLUSTER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.isCustomResource">isCustomResource</a></code> | <code>boolean</code> | Indicates if node is a *Custom Resource*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.isExtraneous">isExtraneous</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.isGraphContainer">isGraphContainer</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.isLeaf">isLeaf</a></code> | <code>boolean</code> | Indicates if this node is a *leaf* node, which means it does not have children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.isTopLevel">isTopLevel</a></code> | <code>boolean</code> | Indicates if node is direct child of the graph root node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.links">links</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]</code> | Gets all links (edges) in which this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.nodeType">nodeType</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a></code> | Type of node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.path">path</a></code> | <code>string</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.referencedBy">referencedBy</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *reference this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.referenceLinks">referenceLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]</code> | Gets list of {@link Reference} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.references">references</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *this node references*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.reverseDependencyLinks">reverseDependencyLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]</code> | Gets list of {@link Dependency} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.reverseLinks">reverseLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]</code> | Gets all links (edges) in which this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.reverseReferenceLinks">reverseReferenceLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]</code> | Gets list of {@link Reference} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.scopes">scopes</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Gets descending ordered list of ancestors from the root. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.siblings">siblings</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of *siblings* of this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.cfnProps">cfnProps</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a></code> | Gets CloudFormation properties for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.cfnType">cfnType</a></code> | <code>string</code> | Get the CloudFormation resource type for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.constructInfo">constructInfo</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.constructInfoFqn">constructInfoFqn</a></code> | <code>string</code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.logicalId">logicalId</a></code> | <code>string</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.parent">parent</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.rootStack">rootStack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Get **root** stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.stack">stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Stack the node is contained in. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.isExport">isExport</a></code> | <code>boolean</code> | Indicates if {@link OutputNode} is **exported**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.value">value</a></code> | <code>any</code> | Get the *value** attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.exportName">exportName</a></code> | <code>string</code> | Get the export name attribute. |

---

##### `attributes`<sup>Required</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.attributes"></a>

```typescript
public readonly attributes: {[ key: string ]: string | number | boolean | PlainObject | string | number | boolean | PlainObject[]};
```

- *Type:* {[ key: string ]: string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> | string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}

Get *readonly* record of all attributes.

---

##### `flags`<sup>Required</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.flags"></a>

```typescript
public readonly flags: FlagEnum[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]

Get *readonly* list of all flags.

---

##### `isDestroyed`<sup>Required</sup> <a name="isDestroyed" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.isDestroyed"></a>

```typescript
public readonly isDestroyed: boolean;
```

- *Type:* boolean

Indicates if the entity has been destroyed (eg: removed from store).

---

##### `isMutated`<sup>Required</sup> <a name="isMutated" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.isMutated"></a>

```typescript
public readonly isMutated: boolean;
```

- *Type:* boolean

Indicates if the entity has had destructive mutations applied.

---

##### `metadata`<sup>Required</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.metadata"></a>

```typescript
public readonly metadata: MetadataEntry[];
```

- *Type:* constructs.MetadataEntry[]

Get *readonly* list of all metadata entries.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.store"></a>

```typescript
public readonly store: Store;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Reference to the store.

---

##### `tags`<sup>Required</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.tags"></a>

```typescript
public readonly tags: {[ key: string ]: string};
```

- *Type:* {[ key: string ]: string}

Get *readonly* record of all tags.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.uuid"></a>

```typescript
public readonly uuid: string;
```

- *Type:* string

Universally unique identifier.

---

##### `allowDestructiveMutations`<sup>Required</sup> <a name="allowDestructiveMutations" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.allowDestructiveMutations"></a>

```typescript
public readonly allowDestructiveMutations: boolean;
```

- *Type:* boolean

Indicates if this node allows destructive mutations.

> [{@link Store.allowDestructiveMutations }]({@link Store.allowDestructiveMutations })

---

##### `children`<sup>Required</sup> <a name="children" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.children"></a>

```typescript
public readonly children: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get all direct child nodes.

---

##### `dependedOnBy`<sup>Required</sup> <a name="dependedOnBy" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.dependedOnBy"></a>

```typescript
public readonly dependedOnBy: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *depend on this node*.

> [{@link Node.reverseDependencyLinks }]({@link Node.reverseDependencyLinks })

---

##### `dependencies`<sup>Required</sup> <a name="dependencies" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.dependencies"></a>

```typescript
public readonly dependencies: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *this node depends on*.

> [{@link Node.dependencyLinks }]({@link Node.dependencyLinks })

---

##### `dependencyLinks`<sup>Required</sup> <a name="dependencyLinks" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.dependencyLinks"></a>

```typescript
public readonly dependencyLinks: Dependency[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]

Gets list of {@link Dependency} links (edges) where this node is the **source**.

---

##### `depth`<sup>Required</sup> <a name="depth" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.depth"></a>

```typescript
public readonly depth: number;
```

- *Type:* number

Indicates the depth of the node relative to root (0).

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.id"></a>

```typescript
public readonly id: string;
```

- *Type:* string

Node id, which is only unique within parent scope.

---

##### `isAsset`<sup>Required</sup> <a name="isAsset" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.isAsset"></a>

```typescript
public readonly isAsset: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.ASSET}.

---

##### `isCfnFqn`<sup>Required</sup> <a name="isCfnFqn" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.isCfnFqn"></a>

```typescript
public readonly isCfnFqn: boolean;
```

- *Type:* boolean

Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct.

> [{@link FlagEnum.CFN_FQN }]({@link FlagEnum.CFN_FQN })

---

##### `isCluster`<sup>Required</sup> <a name="isCluster" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.isCluster"></a>

```typescript
public readonly isCluster: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.CLUSTER}.

---

##### `isCustomResource`<sup>Required</sup> <a name="isCustomResource" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.isCustomResource"></a>

```typescript
public readonly isCustomResource: boolean;
```

- *Type:* boolean

Indicates if node is a *Custom Resource*.

---

##### `isExtraneous`<sup>Required</sup> <a name="isExtraneous" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.isExtraneous"></a>

```typescript
public readonly isExtraneous: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children.

---

##### `isGraphContainer`<sup>Required</sup> <a name="isGraphContainer" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.isGraphContainer"></a>

```typescript
public readonly isGraphContainer: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}.

---

##### `isLeaf`<sup>Required</sup> <a name="isLeaf" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.isLeaf"></a>

```typescript
public readonly isLeaf: boolean;
```

- *Type:* boolean

Indicates if this node is a *leaf* node, which means it does not have children.

---

##### `isTopLevel`<sup>Required</sup> <a name="isTopLevel" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.isTopLevel"></a>

```typescript
public readonly isTopLevel: boolean;
```

- *Type:* boolean

Indicates if node is direct child of the graph root node.

---

##### `links`<sup>Required</sup> <a name="links" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.links"></a>

```typescript
public readonly links: Edge[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]

Gets all links (edges) in which this node is the **source**.

---

##### `nodeType`<sup>Required</sup> <a name="nodeType" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.nodeType"></a>

```typescript
public readonly nodeType: NodeTypeEnum;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a>

Type of node.

---

##### `path`<sup>Required</sup> <a name="path" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.path"></a>

```typescript
public readonly path: string;
```

- *Type:* string

Path of the node.

---

##### `referencedBy`<sup>Required</sup> <a name="referencedBy" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.referencedBy"></a>

```typescript
public readonly referencedBy: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *reference this node*.

> [{@link Node.reverseReferenceLinks }]({@link Node.reverseReferenceLinks })

---

##### `referenceLinks`<sup>Required</sup> <a name="referenceLinks" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.referenceLinks"></a>

```typescript
public readonly referenceLinks: Reference[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]

Gets list of {@link Reference} links (edges) where this node is the **source**.

---

##### `references`<sup>Required</sup> <a name="references" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.references"></a>

```typescript
public readonly references: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *this node references*.

> [{@link Node.referenceLinks }]({@link Node.referenceLinks })

---

##### `reverseDependencyLinks`<sup>Required</sup> <a name="reverseDependencyLinks" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.reverseDependencyLinks"></a>

```typescript
public readonly reverseDependencyLinks: Dependency[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]

Gets list of {@link Dependency} links (edges) where this node is the **target**.

---

##### `reverseLinks`<sup>Required</sup> <a name="reverseLinks" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.reverseLinks"></a>

```typescript
public readonly reverseLinks: Edge[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]

Gets all links (edges) in which this node is the **target**.

---

##### `reverseReferenceLinks`<sup>Required</sup> <a name="reverseReferenceLinks" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.reverseReferenceLinks"></a>

```typescript
public readonly reverseReferenceLinks: Reference[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]

Gets list of {@link Reference} links (edges) where this node is the **target**.

---

##### `scopes`<sup>Required</sup> <a name="scopes" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.scopes"></a>

```typescript
public readonly scopes: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Gets descending ordered list of ancestors from the root.

---

##### `siblings`<sup>Required</sup> <a name="siblings" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.siblings"></a>

```typescript
public readonly siblings: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of *siblings* of this node.

---

##### `cfnProps`<sup>Optional</sup> <a name="cfnProps" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.cfnProps"></a>

```typescript
public readonly cfnProps: PlainObject;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>

Gets CloudFormation properties for this node.

---

##### `cfnType`<sup>Optional</sup> <a name="cfnType" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.cfnType"></a>

```typescript
public readonly cfnType: string;
```

- *Type:* string

Get the CloudFormation resource type for this node.

---

##### `constructInfo`<sup>Optional</sup> <a name="constructInfo" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.constructInfo"></a>

```typescript
public readonly constructInfo: ConstructInfo;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `constructInfoFqn`<sup>Optional</sup> <a name="constructInfoFqn" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.constructInfoFqn"></a>

```typescript
public readonly constructInfoFqn: string;
```

- *Type:* string

Synthesized construct information defining jii resolution data.

---

##### `logicalId`<sup>Optional</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.logicalId"></a>

```typescript
public readonly logicalId: string;
```

- *Type:* string

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.parent"></a>

```typescript
public readonly parent: Node;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

Only the root node should not have parent.

---

##### `rootStack`<sup>Optional</sup> <a name="rootStack" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.rootStack"></a>

```typescript
public readonly rootStack: StackNode;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Get **root** stack.

---

##### `stack`<sup>Optional</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.stack"></a>

```typescript
public readonly stack: StackNode;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained in.

---

##### `isExport`<sup>Required</sup> <a name="isExport" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.isExport"></a>

```typescript
public readonly isExport: boolean;
```

- *Type:* boolean

Indicates if {@link OutputNode} is **exported**.

---

##### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.value"></a>

```typescript
public readonly value: any;
```

- *Type:* any

Get the *value** attribute.

---

##### `exportName`<sup>Optional</sup> <a name="exportName" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.exportName"></a>

```typescript
public readonly exportName: string;
```

- *Type:* string

Get the export name attribute.

---

#### Constants <a name="Constants" id="Constants"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.ATTR_EXPORT_NAME">ATTR_EXPORT_NAME</a></code> | <code>string</code> | Attribute key where output export name is stored. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode.property.ATTR_VALUE">ATTR_VALUE</a></code> | <code>string</code> | Attribute key where output value is stored. |

---

##### `ATTR_EXPORT_NAME`<sup>Required</sup> <a name="ATTR_EXPORT_NAME" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.ATTR_EXPORT_NAME"></a>

```typescript
public readonly ATTR_EXPORT_NAME: string;
```

- *Type:* string

Attribute key where output export name is stored.

---

##### `ATTR_VALUE`<sup>Required</sup> <a name="ATTR_VALUE" id="@aws-prototyping-sdk/cdk-graph.OutputNode.property.ATTR_VALUE"></a>

```typescript
public readonly ATTR_VALUE: string;
```

- *Type:* string

Attribute key where output value is stored.

---

### ParameterNode <a name="ParameterNode" id="@aws-prototyping-sdk/cdk-graph.ParameterNode"></a>

ParameterNode defines a CfnParameter node.

#### Initializers <a name="Initializers" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.Initializer"></a>

```typescript
import { ParameterNode } from '@aws-prototyping-sdk/cdk-graph'

new ParameterNode(props: IParameterNodeProps)
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.Initializer.parameter.props">props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps">IParameterNodeProps</a></code> | *No description.* |

---

##### `props`<sup>Required</sup> <a name="props" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.Initializer.parameter.props"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps">IParameterNodeProps</a>

---

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.addAttribute">addAttribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.addFlag">addFlag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.addMetadata">addMetadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.addTag">addTag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.applyData">applyData</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.findMetadata">findMetadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.getAttribute">getAttribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.getTag">getTag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.hasAttribute">hasAttribute</a></code> | Indicates if entity has a given attribute defined, and optionally with a specific value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.hasFlag">hasFlag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.hasMetadata">hasMetadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.hasTag">hasTag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateDestroy">mutateDestroy</a></code> | Destroys this node by removing all references and removing this node from the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.setAttribute">setAttribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.setTag">setTag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.addChild">addChild</a></code> | Add *child* node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.addLink">addLink</a></code> | Add *link* to another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.addReverseLink">addReverseLink</a></code> | Add *link* from another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.doesDependOn">doesDependOn</a></code> | Indicates if *this node* depends on *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.doesReference">doesReference</a></code> | Indicates if *this node* references *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.find">find</a></code> | Recursively find the nearest sub-node matching predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.findAll">findAll</a></code> | Return this construct and all of its sub-nodes in the given order. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.findAllLinks">findAllLinks</a></code> | Return all direct links of this node and that of all sub-nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.findAncestor">findAncestor</a></code> | Find nearest *ancestor* of *this node* matching given predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.findChild">findChild</a></code> | Find child with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.findLink">findLink</a></code> | Find link of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.findLinks">findLinks</a></code> | Find all links of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.getCfnProp">getCfnProp</a></code> | Get specific CloudFormation property. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.getChild">getChild</a></code> | Get *child* node with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.getLinkChains">getLinkChains</a></code> | Resolve all link chains. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.getNearestAncestor">getNearestAncestor</a></code> | Gets the nearest **common** *ancestor* shared between *this node* and another *node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.isAncestor">isAncestor</a></code> | Indicates if a specific *node* is an *ancestor* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.isChild">isChild</a></code> | Indicates if specific *node* is a *child* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateCollapse">mutateCollapse</a></code> | Collapses all sub-nodes of *this node* into *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateCollapseTo">mutateCollapseTo</a></code> | Collapses *this node* into *an ancestor*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateCollapseToParent">mutateCollapseToParent</a></code> | Collapses *this node* into *it's parent node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateHoist">mutateHoist</a></code> | Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateMove">mutateMove</a></code> | Move this node into a new parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateRemoveChild">mutateRemoveChild</a></code> | Remove a *child* node from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateRemoveLink">mutateRemoveLink</a></code> | Remove a *link* from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateRemoveReverseLink">mutateRemoveReverseLink</a></code> | Remove a *link* to *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateUncluster">mutateUncluster</a></code> | Hoist all children to parent and collapse node to parent. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.toString">toString</a></code> | Get string representation of this node. |

---

##### `addAttribute` <a name="addAttribute" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addAttribute"></a>

```typescript
public addAttribute(key: string, value: any): void
```

Add attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addAttribute.parameter.value"></a>

- *Type:* any

---

##### `addFlag` <a name="addFlag" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addFlag"></a>

```typescript
public addFlag(flag: FlagEnum): void
```

Add flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `addMetadata` <a name="addMetadata" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addMetadata"></a>

```typescript
public addMetadata(metadataType: string, data: any): void
```

Add metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addMetadata.parameter.metadataType"></a>

- *Type:* string

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addMetadata.parameter.data"></a>

- *Type:* any

---

##### `addTag` <a name="addTag" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addTag"></a>

```typescript
public addTag(key: string, value: string): void
```

Add tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addTag.parameter.value"></a>

- *Type:* string

---

##### `applyData` <a name="applyData" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.applyData"></a>

```typescript
public applyData(data: IBaseEntityDataProps, overwrite?: boolean, applyFlags?: boolean): void
```

Applies data (attributes, metadata, tags, flag) to entity.

Generally used only for mutations such as collapse and consume to retain data.

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.applyData.parameter.data"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps">IBaseEntityDataProps</a>

The data to apply.

---

###### `overwrite`<sup>Optional</sup> <a name="overwrite" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.applyData.parameter.overwrite"></a>

- *Type:* boolean

---

###### `applyFlags`<sup>Optional</sup> <a name="applyFlags" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.applyData.parameter.applyFlags"></a>

- *Type:* boolean

Indicates if data is overwritten - Indicates if flags should be applied.

---

##### `findMetadata` <a name="findMetadata" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findMetadata"></a>

```typescript
public findMetadata(metadataType: string): MetadataEntry[]
```

Retrieves all metadata entries of a given type.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findMetadata.parameter.metadataType"></a>

- *Type:* string

---

##### `getAttribute` <a name="getAttribute" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.getAttribute"></a>

```typescript
public getAttribute(key: string): any
```

Get attribute by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.getAttribute.parameter.key"></a>

- *Type:* string

---

##### `getTag` <a name="getTag" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.getTag"></a>

```typescript
public getTag(key: string): string
```

Get tag by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.getTag.parameter.key"></a>

- *Type:* string

---

##### `hasAttribute` <a name="hasAttribute" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.hasAttribute"></a>

```typescript
public hasAttribute(key: string, value?: any): boolean
```

Indicates if entity has a given attribute defined, and optionally with a specific value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.hasAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.hasAttribute.parameter.value"></a>

- *Type:* any

---

##### `hasFlag` <a name="hasFlag" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.hasFlag"></a>

```typescript
public hasFlag(flag: FlagEnum): boolean
```

Indicates if entity has a given flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.hasFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `hasMetadata` <a name="hasMetadata" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.hasMetadata"></a>

```typescript
public hasMetadata(metadataType: string, data: any): boolean
```

Indicates if entity has matching metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.hasMetadata.parameter.metadataType"></a>

- *Type:* string

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.hasMetadata.parameter.data"></a>

- *Type:* any

---

##### `hasTag` <a name="hasTag" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.hasTag"></a>

```typescript
public hasTag(key: string, value?: string): boolean
```

Indicates if entity has tag, optionally verifying tag value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.hasTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.hasTag.parameter.value"></a>

- *Type:* string

---

##### `mutateDestroy` <a name="mutateDestroy" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateDestroy"></a>

```typescript
public mutateDestroy(strict?: boolean): void
```

Destroys this node by removing all references and removing this node from the store.

###### `strict`<sup>Optional</sup> <a name="strict" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateDestroy.parameter.strict"></a>

- *Type:* boolean

---

##### `setAttribute` <a name="setAttribute" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.setAttribute"></a>

```typescript
public setAttribute(key: string, value: any): void
```

Set attribute.

This will overwrite existing attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.setAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.setAttribute.parameter.value"></a>

- *Type:* any

---

##### `setTag` <a name="setTag" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.setTag"></a>

```typescript
public setTag(key: string, value: string): void
```

Set tag.

Will overwrite existing tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.setTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.setTag.parameter.value"></a>

- *Type:* string

---

##### `addChild` <a name="addChild" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addChild"></a>

```typescript
public addChild(node: Node): void
```

Add *child* node.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `addLink` <a name="addLink" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addLink"></a>

```typescript
public addLink(edge: Edge): void
```

Add *link* to another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `addReverseLink` <a name="addReverseLink" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addReverseLink"></a>

```typescript
public addReverseLink(edge: Edge): void
```

Add *link* from another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.addReverseLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `doesDependOn` <a name="doesDependOn" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.doesDependOn"></a>

```typescript
public doesDependOn(node: Node): boolean
```

Indicates if *this node* depends on *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.doesDependOn.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `doesReference` <a name="doesReference" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.doesReference"></a>

```typescript
public doesReference(node: Node): boolean
```

Indicates if *this node* references *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.doesReference.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `find` <a name="find" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.find"></a>

```typescript
public find(predicate: INodePredicate): Node
```

Recursively find the nearest sub-node matching predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.find.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

---

##### `findAll` <a name="findAll" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findAll"></a>

```typescript
public findAll(options?: IFindNodeOptions): Node[]
```

Return this construct and all of its sub-nodes in the given order.

Optionally filter nodes based on predicate.

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findAll.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindNodeOptions">IFindNodeOptions</a>

---

##### `findAllLinks` <a name="findAllLinks" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findAllLinks"></a>

```typescript
public findAllLinks(options?: IFindEdgeOptions): Edge[]
```

Return all direct links of this node and that of all sub-nodes.

Optionally filter links based on predicate.

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findAllLinks.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindEdgeOptions">IFindEdgeOptions</a>

---

##### `findAncestor` <a name="findAncestor" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findAncestor"></a>

```typescript
public findAncestor(predicate: INodePredicate, max?: number): Node
```

Find nearest *ancestor* of *this node* matching given predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findAncestor.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

Predicate to match ancestor.

---

###### `max`<sup>Optional</sup> <a name="max" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findAncestor.parameter.max"></a>

- *Type:* number

---

##### `findChild` <a name="findChild" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findChild"></a>

```typescript
public findChild(id: string): Node
```

Find child with given *id*.

Similar to `find` but does not throw error if no child found.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findChild.parameter.id"></a>

- *Type:* string

---

##### `findLink` <a name="findLink" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findLink"></a>

```typescript
public findLink(predicate: IEdgePredicate, reverse?: boolean, follow?: boolean, direct?: boolean): Edge
```

Find link of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct link
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findLink.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findLink.parameter.reverse"></a>

- *Type:* boolean

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findLink.parameter.follow"></a>

- *Type:* boolean

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findLink.parameter.direct"></a>

- *Type:* boolean

Indicates that only *direct* links should be searched.

---

##### `findLinks` <a name="findLinks" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findLinks"></a>

```typescript
public findLinks(predicate: IEdgePredicate, reverse?: boolean, follow?: boolean, direct?: boolean): Edge[]
```

Find all links of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct links
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findLinks.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findLinks.parameter.reverse"></a>

- *Type:* boolean

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findLinks.parameter.follow"></a>

- *Type:* boolean

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.findLinks.parameter.direct"></a>

- *Type:* boolean

Indicates that only *direct* links should be searched.

---

##### `getCfnProp` <a name="getCfnProp" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.getCfnProp"></a>

```typescript
public getCfnProp(key: string): string | number | boolean | PlainObject | string | number | boolean | PlainObject[]
```

Get specific CloudFormation property.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.getCfnProp.parameter.key"></a>

- *Type:* string

---

##### `getChild` <a name="getChild" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.getChild"></a>

```typescript
public getChild(id: string): Node
```

Get *child* node with given *id*.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.getChild.parameter.id"></a>

- *Type:* string

---

##### `getLinkChains` <a name="getLinkChains" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.getLinkChains"></a>

```typescript
public getLinkChains(reverse?: boolean): any[][]
```

Resolve all link chains.

> [{@link EdgeChain }]({@link EdgeChain })

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.getLinkChains.parameter.reverse"></a>

- *Type:* boolean

---

##### `getNearestAncestor` <a name="getNearestAncestor" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.getNearestAncestor"></a>

```typescript
public getNearestAncestor(node: Node): Node
```

Gets the nearest **common** *ancestor* shared between *this node* and another *node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.getNearestAncestor.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `isAncestor` <a name="isAncestor" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.isAncestor"></a>

```typescript
public isAncestor(ancestor: Node): boolean
```

Indicates if a specific *node* is an *ancestor* of *this node*.

###### `ancestor`<sup>Required</sup> <a name="ancestor" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.isAncestor.parameter.ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `isChild` <a name="isChild" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.isChild"></a>

```typescript
public isChild(node: Node): boolean
```

Indicates if specific *node* is a *child* of *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.isChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateCollapse` <a name="mutateCollapse" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateCollapse"></a>

```typescript
public mutateCollapse(): void
```

Collapses all sub-nodes of *this node* into *this node*.

##### `mutateCollapseTo` <a name="mutateCollapseTo" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateCollapseTo"></a>

```typescript
public mutateCollapseTo(ancestor: Node): Node
```

Collapses *this node* into *an ancestor*.

###### `ancestor`<sup>Required</sup> <a name="ancestor" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateCollapseTo.parameter.ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateCollapseToParent` <a name="mutateCollapseToParent" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateCollapseToParent"></a>

```typescript
public mutateCollapseToParent(): Node
```

Collapses *this node* into *it's parent node*.

##### `mutateHoist` <a name="mutateHoist" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateHoist"></a>

```typescript
public mutateHoist(newParent: Node): void
```

Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor.

###### `newParent`<sup>Required</sup> <a name="newParent" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateHoist.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateMove` <a name="mutateMove" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateMove"></a>

```typescript
public mutateMove(newParent: Node): void
```

Move this node into a new parent node.

###### `newParent`<sup>Required</sup> <a name="newParent" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateMove.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

The parent to move this node to.

---

##### `mutateRemoveChild` <a name="mutateRemoveChild" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateRemoveChild"></a>

```typescript
public mutateRemoveChild(node: Node): boolean
```

Remove a *child* node from *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateRemoveChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateRemoveLink` <a name="mutateRemoveLink" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateRemoveLink"></a>

```typescript
public mutateRemoveLink(link: Edge): boolean
```

Remove a *link* from *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateRemoveLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutateRemoveReverseLink` <a name="mutateRemoveReverseLink" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateRemoveReverseLink"></a>

```typescript
public mutateRemoveReverseLink(link: Edge): boolean
```

Remove a *link* to *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateRemoveReverseLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutateUncluster` <a name="mutateUncluster" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.mutateUncluster"></a>

```typescript
public mutateUncluster(): void
```

Hoist all children to parent and collapse node to parent.

##### `toString` <a name="toString" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.toString"></a>

```typescript
public toString(): string
```

Get string representation of this node.

#### Static Functions <a name="Static Functions" id="Static Functions"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.isParameterNode">isParameterNode</a></code> | Indicates if node is a {@link ParameterNode}. |

---

##### `isParameterNode` <a name="isParameterNode" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.isParameterNode"></a>

```typescript
import { ParameterNode } from '@aws-prototyping-sdk/cdk-graph'

ParameterNode.isParameterNode(node: Node)
```

Indicates if node is a {@link ParameterNode}.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.isParameterNode.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.attributes">attributes</a></code> | <code>{[ key: string ]: string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> \| string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}</code> | Get *readonly* record of all attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.flags">flags</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]</code> | Get *readonly* list of all flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isDestroyed">isDestroyed</a></code> | <code>boolean</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isMutated">isMutated</a></code> | <code>boolean</code> | Indicates if the entity has had destructive mutations applied. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.metadata">metadata</a></code> | <code>constructs.MetadataEntry[]</code> | Get *readonly* list of all metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Reference to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.tags">tags</a></code> | <code>{[ key: string ]: string}</code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.uuid">uuid</a></code> | <code>string</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.allowDestructiveMutations">allowDestructiveMutations</a></code> | <code>boolean</code> | Indicates if this node allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.children">children</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get all direct child nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.dependedOnBy">dependedOnBy</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *depend on this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.dependencies">dependencies</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *this node depends on*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.dependencyLinks">dependencyLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]</code> | Gets list of {@link Dependency} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.depth">depth</a></code> | <code>number</code> | Indicates the depth of the node relative to root (0). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.id">id</a></code> | <code>string</code> | Node id, which is only unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isAsset">isAsset</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.ASSET}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isCfnFqn">isCfnFqn</a></code> | <code>boolean</code> | Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isCluster">isCluster</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.CLUSTER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isCustomResource">isCustomResource</a></code> | <code>boolean</code> | Indicates if node is a *Custom Resource*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isExtraneous">isExtraneous</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isGraphContainer">isGraphContainer</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isLeaf">isLeaf</a></code> | <code>boolean</code> | Indicates if this node is a *leaf* node, which means it does not have children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isTopLevel">isTopLevel</a></code> | <code>boolean</code> | Indicates if node is direct child of the graph root node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.links">links</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]</code> | Gets all links (edges) in which this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.nodeType">nodeType</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a></code> | Type of node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.path">path</a></code> | <code>string</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.referencedBy">referencedBy</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *reference this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.referenceLinks">referenceLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]</code> | Gets list of {@link Reference} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.references">references</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *this node references*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.reverseDependencyLinks">reverseDependencyLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]</code> | Gets list of {@link Dependency} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.reverseLinks">reverseLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]</code> | Gets all links (edges) in which this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.reverseReferenceLinks">reverseReferenceLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]</code> | Gets list of {@link Reference} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.scopes">scopes</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Gets descending ordered list of ancestors from the root. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.siblings">siblings</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of *siblings* of this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.cfnProps">cfnProps</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a></code> | Gets CloudFormation properties for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.cfnType">cfnType</a></code> | <code>string</code> | Get the CloudFormation resource type for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.constructInfo">constructInfo</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.constructInfoFqn">constructInfoFqn</a></code> | <code>string</code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.logicalId">logicalId</a></code> | <code>string</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.parent">parent</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.rootStack">rootStack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Get **root** stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.stack">stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Stack the node is contained in. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isStackReference">isStackReference</a></code> | <code>boolean</code> | Indicates if parameter is a reference to a stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.parameterType">parameterType</a></code> | <code>any</code> | Get the parameter type attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.value">value</a></code> | <code>any</code> | Get the value attribute. |

---

##### `attributes`<sup>Required</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.attributes"></a>

```typescript
public readonly attributes: {[ key: string ]: string | number | boolean | PlainObject | string | number | boolean | PlainObject[]};
```

- *Type:* {[ key: string ]: string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> | string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}

Get *readonly* record of all attributes.

---

##### `flags`<sup>Required</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.flags"></a>

```typescript
public readonly flags: FlagEnum[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]

Get *readonly* list of all flags.

---

##### `isDestroyed`<sup>Required</sup> <a name="isDestroyed" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isDestroyed"></a>

```typescript
public readonly isDestroyed: boolean;
```

- *Type:* boolean

Indicates if the entity has been destroyed (eg: removed from store).

---

##### `isMutated`<sup>Required</sup> <a name="isMutated" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isMutated"></a>

```typescript
public readonly isMutated: boolean;
```

- *Type:* boolean

Indicates if the entity has had destructive mutations applied.

---

##### `metadata`<sup>Required</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.metadata"></a>

```typescript
public readonly metadata: MetadataEntry[];
```

- *Type:* constructs.MetadataEntry[]

Get *readonly* list of all metadata entries.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.store"></a>

```typescript
public readonly store: Store;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Reference to the store.

---

##### `tags`<sup>Required</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.tags"></a>

```typescript
public readonly tags: {[ key: string ]: string};
```

- *Type:* {[ key: string ]: string}

Get *readonly* record of all tags.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.uuid"></a>

```typescript
public readonly uuid: string;
```

- *Type:* string

Universally unique identifier.

---

##### `allowDestructiveMutations`<sup>Required</sup> <a name="allowDestructiveMutations" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.allowDestructiveMutations"></a>

```typescript
public readonly allowDestructiveMutations: boolean;
```

- *Type:* boolean

Indicates if this node allows destructive mutations.

> [{@link Store.allowDestructiveMutations }]({@link Store.allowDestructiveMutations })

---

##### `children`<sup>Required</sup> <a name="children" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.children"></a>

```typescript
public readonly children: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get all direct child nodes.

---

##### `dependedOnBy`<sup>Required</sup> <a name="dependedOnBy" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.dependedOnBy"></a>

```typescript
public readonly dependedOnBy: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *depend on this node*.

> [{@link Node.reverseDependencyLinks }]({@link Node.reverseDependencyLinks })

---

##### `dependencies`<sup>Required</sup> <a name="dependencies" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.dependencies"></a>

```typescript
public readonly dependencies: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *this node depends on*.

> [{@link Node.dependencyLinks }]({@link Node.dependencyLinks })

---

##### `dependencyLinks`<sup>Required</sup> <a name="dependencyLinks" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.dependencyLinks"></a>

```typescript
public readonly dependencyLinks: Dependency[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]

Gets list of {@link Dependency} links (edges) where this node is the **source**.

---

##### `depth`<sup>Required</sup> <a name="depth" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.depth"></a>

```typescript
public readonly depth: number;
```

- *Type:* number

Indicates the depth of the node relative to root (0).

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.id"></a>

```typescript
public readonly id: string;
```

- *Type:* string

Node id, which is only unique within parent scope.

---

##### `isAsset`<sup>Required</sup> <a name="isAsset" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isAsset"></a>

```typescript
public readonly isAsset: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.ASSET}.

---

##### `isCfnFqn`<sup>Required</sup> <a name="isCfnFqn" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isCfnFqn"></a>

```typescript
public readonly isCfnFqn: boolean;
```

- *Type:* boolean

Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct.

> [{@link FlagEnum.CFN_FQN }]({@link FlagEnum.CFN_FQN })

---

##### `isCluster`<sup>Required</sup> <a name="isCluster" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isCluster"></a>

```typescript
public readonly isCluster: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.CLUSTER}.

---

##### `isCustomResource`<sup>Required</sup> <a name="isCustomResource" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isCustomResource"></a>

```typescript
public readonly isCustomResource: boolean;
```

- *Type:* boolean

Indicates if node is a *Custom Resource*.

---

##### `isExtraneous`<sup>Required</sup> <a name="isExtraneous" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isExtraneous"></a>

```typescript
public readonly isExtraneous: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children.

---

##### `isGraphContainer`<sup>Required</sup> <a name="isGraphContainer" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isGraphContainer"></a>

```typescript
public readonly isGraphContainer: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}.

---

##### `isLeaf`<sup>Required</sup> <a name="isLeaf" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isLeaf"></a>

```typescript
public readonly isLeaf: boolean;
```

- *Type:* boolean

Indicates if this node is a *leaf* node, which means it does not have children.

---

##### `isTopLevel`<sup>Required</sup> <a name="isTopLevel" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isTopLevel"></a>

```typescript
public readonly isTopLevel: boolean;
```

- *Type:* boolean

Indicates if node is direct child of the graph root node.

---

##### `links`<sup>Required</sup> <a name="links" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.links"></a>

```typescript
public readonly links: Edge[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]

Gets all links (edges) in which this node is the **source**.

---

##### `nodeType`<sup>Required</sup> <a name="nodeType" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.nodeType"></a>

```typescript
public readonly nodeType: NodeTypeEnum;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a>

Type of node.

---

##### `path`<sup>Required</sup> <a name="path" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.path"></a>

```typescript
public readonly path: string;
```

- *Type:* string

Path of the node.

---

##### `referencedBy`<sup>Required</sup> <a name="referencedBy" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.referencedBy"></a>

```typescript
public readonly referencedBy: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *reference this node*.

> [{@link Node.reverseReferenceLinks }]({@link Node.reverseReferenceLinks })

---

##### `referenceLinks`<sup>Required</sup> <a name="referenceLinks" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.referenceLinks"></a>

```typescript
public readonly referenceLinks: Reference[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]

Gets list of {@link Reference} links (edges) where this node is the **source**.

---

##### `references`<sup>Required</sup> <a name="references" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.references"></a>

```typescript
public readonly references: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *this node references*.

> [{@link Node.referenceLinks }]({@link Node.referenceLinks })

---

##### `reverseDependencyLinks`<sup>Required</sup> <a name="reverseDependencyLinks" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.reverseDependencyLinks"></a>

```typescript
public readonly reverseDependencyLinks: Dependency[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]

Gets list of {@link Dependency} links (edges) where this node is the **target**.

---

##### `reverseLinks`<sup>Required</sup> <a name="reverseLinks" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.reverseLinks"></a>

```typescript
public readonly reverseLinks: Edge[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]

Gets all links (edges) in which this node is the **target**.

---

##### `reverseReferenceLinks`<sup>Required</sup> <a name="reverseReferenceLinks" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.reverseReferenceLinks"></a>

```typescript
public readonly reverseReferenceLinks: Reference[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]

Gets list of {@link Reference} links (edges) where this node is the **target**.

---

##### `scopes`<sup>Required</sup> <a name="scopes" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.scopes"></a>

```typescript
public readonly scopes: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Gets descending ordered list of ancestors from the root.

---

##### `siblings`<sup>Required</sup> <a name="siblings" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.siblings"></a>

```typescript
public readonly siblings: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of *siblings* of this node.

---

##### `cfnProps`<sup>Optional</sup> <a name="cfnProps" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.cfnProps"></a>

```typescript
public readonly cfnProps: PlainObject;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>

Gets CloudFormation properties for this node.

---

##### `cfnType`<sup>Optional</sup> <a name="cfnType" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.cfnType"></a>

```typescript
public readonly cfnType: string;
```

- *Type:* string

Get the CloudFormation resource type for this node.

---

##### `constructInfo`<sup>Optional</sup> <a name="constructInfo" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.constructInfo"></a>

```typescript
public readonly constructInfo: ConstructInfo;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `constructInfoFqn`<sup>Optional</sup> <a name="constructInfoFqn" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.constructInfoFqn"></a>

```typescript
public readonly constructInfoFqn: string;
```

- *Type:* string

Synthesized construct information defining jii resolution data.

---

##### `logicalId`<sup>Optional</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.logicalId"></a>

```typescript
public readonly logicalId: string;
```

- *Type:* string

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.parent"></a>

```typescript
public readonly parent: Node;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

Only the root node should not have parent.

---

##### `rootStack`<sup>Optional</sup> <a name="rootStack" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.rootStack"></a>

```typescript
public readonly rootStack: StackNode;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Get **root** stack.

---

##### `stack`<sup>Optional</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.stack"></a>

```typescript
public readonly stack: StackNode;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained in.

---

##### `isStackReference`<sup>Required</sup> <a name="isStackReference" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.isStackReference"></a>

```typescript
public readonly isStackReference: boolean;
```

- *Type:* boolean

Indicates if parameter is a reference to a stack.

---

##### `parameterType`<sup>Required</sup> <a name="parameterType" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.parameterType"></a>

```typescript
public readonly parameterType: any;
```

- *Type:* any

Get the parameter type attribute.

---

##### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.value"></a>

```typescript
public readonly value: any;
```

- *Type:* any

Get the value attribute.

---

#### Constants <a name="Constants" id="Constants"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.ATTR_TYPE">ATTR_TYPE</a></code> | <code>string</code> | Attribute key where parameter type is stored. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode.property.ATTR_VALUE">ATTR_VALUE</a></code> | <code>string</code> | Attribute key where parameter value is store. |

---

##### `ATTR_TYPE`<sup>Required</sup> <a name="ATTR_TYPE" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.ATTR_TYPE"></a>

```typescript
public readonly ATTR_TYPE: string;
```

- *Type:* string

Attribute key where parameter type is stored.

---

##### `ATTR_VALUE`<sup>Required</sup> <a name="ATTR_VALUE" id="@aws-prototyping-sdk/cdk-graph.ParameterNode.property.ATTR_VALUE"></a>

```typescript
public readonly ATTR_VALUE: string;
```

- *Type:* string

Attribute key where parameter value is store.

---

### Reference <a name="Reference" id="@aws-prototyping-sdk/cdk-graph.Reference"></a>

Reference edge class defines a directed relationship between nodes.

#### Initializers <a name="Initializers" id="@aws-prototyping-sdk/cdk-graph.Reference.Initializer"></a>

```typescript
import { Reference } from '@aws-prototyping-sdk/cdk-graph'

new Reference(props: IReferenceProps)
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.Initializer.parameter.props">props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.IReferenceProps">IReferenceProps</a></code> | *No description.* |

---

##### `props`<sup>Required</sup> <a name="props" id="@aws-prototyping-sdk/cdk-graph.Reference.Initializer.parameter.props"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IReferenceProps">IReferenceProps</a>

---

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.addAttribute">addAttribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.addFlag">addFlag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.addMetadata">addMetadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.addTag">addTag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.applyData">applyData</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.findMetadata">findMetadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.getAttribute">getAttribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.getTag">getTag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.hasAttribute">hasAttribute</a></code> | Indicates if entity has a given attribute defined, and optionally with a specific value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.hasFlag">hasFlag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.hasMetadata">hasMetadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.hasTag">hasTag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.mutateDestroy">mutateDestroy</a></code> | Destroy the edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.setAttribute">setAttribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.setTag">setTag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.isEquivalent">isEquivalent</a></code> | Indicates if this edge is equivalent to another edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.mutateConsume">mutateConsume</a></code> | Merge an equivalent edge's data into this edge and destroy the other edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.mutateDirection">mutateDirection</a></code> | Change the edge **direction**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.mutateSource">mutateSource</a></code> | Change the edge **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.mutateTarget">mutateTarget</a></code> | Change the edge **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.toString">toString</a></code> | Get string representation of this edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.resolveChain">resolveChain</a></code> | Resolve reference chain. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.resolveTargets">resolveTargets</a></code> | Resolve targets by following potential edge chain. |

---

##### `addAttribute` <a name="addAttribute" id="@aws-prototyping-sdk/cdk-graph.Reference.addAttribute"></a>

```typescript
public addAttribute(key: string, value: any): void
```

Add attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Reference.addAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Reference.addAttribute.parameter.value"></a>

- *Type:* any

---

##### `addFlag` <a name="addFlag" id="@aws-prototyping-sdk/cdk-graph.Reference.addFlag"></a>

```typescript
public addFlag(flag: FlagEnum): void
```

Add flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.Reference.addFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `addMetadata` <a name="addMetadata" id="@aws-prototyping-sdk/cdk-graph.Reference.addMetadata"></a>

```typescript
public addMetadata(metadataType: string, data: any): void
```

Add metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.Reference.addMetadata.parameter.metadataType"></a>

- *Type:* string

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.Reference.addMetadata.parameter.data"></a>

- *Type:* any

---

##### `addTag` <a name="addTag" id="@aws-prototyping-sdk/cdk-graph.Reference.addTag"></a>

```typescript
public addTag(key: string, value: string): void
```

Add tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Reference.addTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Reference.addTag.parameter.value"></a>

- *Type:* string

---

##### `applyData` <a name="applyData" id="@aws-prototyping-sdk/cdk-graph.Reference.applyData"></a>

```typescript
public applyData(data: IBaseEntityDataProps, overwrite?: boolean, applyFlags?: boolean): void
```

Applies data (attributes, metadata, tags, flag) to entity.

Generally used only for mutations such as collapse and consume to retain data.

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.Reference.applyData.parameter.data"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps">IBaseEntityDataProps</a>

The data to apply.

---

###### `overwrite`<sup>Optional</sup> <a name="overwrite" id="@aws-prototyping-sdk/cdk-graph.Reference.applyData.parameter.overwrite"></a>

- *Type:* boolean

---

###### `applyFlags`<sup>Optional</sup> <a name="applyFlags" id="@aws-prototyping-sdk/cdk-graph.Reference.applyData.parameter.applyFlags"></a>

- *Type:* boolean

Indicates if data is overwritten - Indicates if flags should be applied.

---

##### `findMetadata` <a name="findMetadata" id="@aws-prototyping-sdk/cdk-graph.Reference.findMetadata"></a>

```typescript
public findMetadata(metadataType: string): MetadataEntry[]
```

Retrieves all metadata entries of a given type.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.Reference.findMetadata.parameter.metadataType"></a>

- *Type:* string

---

##### `getAttribute` <a name="getAttribute" id="@aws-prototyping-sdk/cdk-graph.Reference.getAttribute"></a>

```typescript
public getAttribute(key: string): any
```

Get attribute by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Reference.getAttribute.parameter.key"></a>

- *Type:* string

---

##### `getTag` <a name="getTag" id="@aws-prototyping-sdk/cdk-graph.Reference.getTag"></a>

```typescript
public getTag(key: string): string
```

Get tag by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Reference.getTag.parameter.key"></a>

- *Type:* string

---

##### `hasAttribute` <a name="hasAttribute" id="@aws-prototyping-sdk/cdk-graph.Reference.hasAttribute"></a>

```typescript
public hasAttribute(key: string, value?: any): boolean
```

Indicates if entity has a given attribute defined, and optionally with a specific value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Reference.hasAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Reference.hasAttribute.parameter.value"></a>

- *Type:* any

---

##### `hasFlag` <a name="hasFlag" id="@aws-prototyping-sdk/cdk-graph.Reference.hasFlag"></a>

```typescript
public hasFlag(flag: FlagEnum): boolean
```

Indicates if entity has a given flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.Reference.hasFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `hasMetadata` <a name="hasMetadata" id="@aws-prototyping-sdk/cdk-graph.Reference.hasMetadata"></a>

```typescript
public hasMetadata(metadataType: string, data: any): boolean
```

Indicates if entity has matching metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.Reference.hasMetadata.parameter.metadataType"></a>

- *Type:* string

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.Reference.hasMetadata.parameter.data"></a>

- *Type:* any

---

##### `hasTag` <a name="hasTag" id="@aws-prototyping-sdk/cdk-graph.Reference.hasTag"></a>

```typescript
public hasTag(key: string, value?: string): boolean
```

Indicates if entity has tag, optionally verifying tag value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Reference.hasTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Reference.hasTag.parameter.value"></a>

- *Type:* string

---

##### `mutateDestroy` <a name="mutateDestroy" id="@aws-prototyping-sdk/cdk-graph.Reference.mutateDestroy"></a>

```typescript
public mutateDestroy(_strict?: boolean): void
```

Destroy the edge.

Remove all references and remove from store.

###### `_strict`<sup>Optional</sup> <a name="_strict" id="@aws-prototyping-sdk/cdk-graph.Reference.mutateDestroy.parameter._strict"></a>

- *Type:* boolean

---

##### `setAttribute` <a name="setAttribute" id="@aws-prototyping-sdk/cdk-graph.Reference.setAttribute"></a>

```typescript
public setAttribute(key: string, value: any): void
```

Set attribute.

This will overwrite existing attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Reference.setAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Reference.setAttribute.parameter.value"></a>

- *Type:* any

---

##### `setTag` <a name="setTag" id="@aws-prototyping-sdk/cdk-graph.Reference.setTag"></a>

```typescript
public setTag(key: string, value: string): void
```

Set tag.

Will overwrite existing tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.Reference.setTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Reference.setTag.parameter.value"></a>

- *Type:* string

---

##### `isEquivalent` <a name="isEquivalent" id="@aws-prototyping-sdk/cdk-graph.Reference.isEquivalent"></a>

```typescript
public isEquivalent(edge: Edge): boolean
```

Indicates if this edge is equivalent to another edge.

Edges are considered equivalent if they share same type, source, and target.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.Reference.isEquivalent.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutateConsume` <a name="mutateConsume" id="@aws-prototyping-sdk/cdk-graph.Reference.mutateConsume"></a>

```typescript
public mutateConsume(edge: Edge): void
```

Merge an equivalent edge's data into this edge and destroy the other edge.

Used during filtering operations to consolidate equivalent edges.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.Reference.mutateConsume.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

The edge to consume.

---

##### `mutateDirection` <a name="mutateDirection" id="@aws-prototyping-sdk/cdk-graph.Reference.mutateDirection"></a>

```typescript
public mutateDirection(direction: EdgeDirectionEnum): void
```

Change the edge **direction**.

###### `direction`<sup>Required</sup> <a name="direction" id="@aws-prototyping-sdk/cdk-graph.Reference.mutateDirection.parameter.direction"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a>

---

##### `mutateSource` <a name="mutateSource" id="@aws-prototyping-sdk/cdk-graph.Reference.mutateSource"></a>

```typescript
public mutateSource(node: Node): void
```

Change the edge **source**.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.Reference.mutateSource.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateTarget` <a name="mutateTarget" id="@aws-prototyping-sdk/cdk-graph.Reference.mutateTarget"></a>

```typescript
public mutateTarget(node: Node): void
```

Change the edge **target**.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.Reference.mutateTarget.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `toString` <a name="toString" id="@aws-prototyping-sdk/cdk-graph.Reference.toString"></a>

```typescript
public toString(): string
```

Get string representation of this edge.

##### `resolveChain` <a name="resolveChain" id="@aws-prototyping-sdk/cdk-graph.Reference.resolveChain"></a>

```typescript
public resolveChain(): any[]
```

Resolve reference chain.

##### `resolveTargets` <a name="resolveTargets" id="@aws-prototyping-sdk/cdk-graph.Reference.resolveTargets"></a>

```typescript
public resolveTargets(): Node[]
```

Resolve targets by following potential edge chain.

> [{@link EdgeChain }]({@link EdgeChain })

#### Static Functions <a name="Static Functions" id="Static Functions"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.findAllInChain">findAllInChain</a></code> | Find all matching edges based on predicate within an EdgeChain. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.findInChain">findInChain</a></code> | Find first edge matching predicate within an EdgeChain. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.isRef">isRef</a></code> | Indicates if edge is a **Ref** based {@link Reference} edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.isReference">isReference</a></code> | Indicates if edge is a {@link Reference}. |

---

##### `findAllInChain` <a name="findAllInChain" id="@aws-prototyping-sdk/cdk-graph.Reference.findAllInChain"></a>

```typescript
import { Reference } from '@aws-prototyping-sdk/cdk-graph'

Reference.findAllInChain(chain: any[], predicate: IEdgePredicate)
```

Find all matching edges based on predicate within an EdgeChain.

###### `chain`<sup>Required</sup> <a name="chain" id="@aws-prototyping-sdk/cdk-graph.Reference.findAllInChain.parameter.chain"></a>

- *Type:* any[]

---

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.Reference.findAllInChain.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

---

##### `findInChain` <a name="findInChain" id="@aws-prototyping-sdk/cdk-graph.Reference.findInChain"></a>

```typescript
import { Reference } from '@aws-prototyping-sdk/cdk-graph'

Reference.findInChain(chain: any[], predicate: IEdgePredicate)
```

Find first edge matching predicate within an EdgeChain.

###### `chain`<sup>Required</sup> <a name="chain" id="@aws-prototyping-sdk/cdk-graph.Reference.findInChain.parameter.chain"></a>

- *Type:* any[]

---

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.Reference.findInChain.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

---

##### `isRef` <a name="isRef" id="@aws-prototyping-sdk/cdk-graph.Reference.isRef"></a>

```typescript
import { Reference } from '@aws-prototyping-sdk/cdk-graph'

Reference.isRef(edge: Edge)
```

Indicates if edge is a **Ref** based {@link Reference} edge.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.Reference.isRef.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `isReference` <a name="isReference" id="@aws-prototyping-sdk/cdk-graph.Reference.isReference"></a>

```typescript
import { Reference } from '@aws-prototyping-sdk/cdk-graph'

Reference.isReference(edge: Edge)
```

Indicates if edge is a {@link Reference}.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.Reference.isReference.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.attributes">attributes</a></code> | <code>{[ key: string ]: string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> \| string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}</code> | Get *readonly* record of all attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.flags">flags</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]</code> | Get *readonly* list of all flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.isDestroyed">isDestroyed</a></code> | <code>boolean</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.isMutated">isMutated</a></code> | <code>boolean</code> | Indicates if the entity has had destructive mutations applied. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.metadata">metadata</a></code> | <code>constructs.MetadataEntry[]</code> | Get *readonly* list of all metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Reference to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.tags">tags</a></code> | <code>{[ key: string ]: string}</code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.uuid">uuid</a></code> | <code>string</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.allowDestructiveMutations">allowDestructiveMutations</a></code> | <code>boolean</code> | Indicates if edge allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.direction">direction</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a></code> | Indicates the direction in which the edge is directed. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.edgeType">edgeType</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum">EdgeTypeEnum</a></code> | Type of edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.isClosed">isClosed</a></code> | <code>boolean</code> | Indicates if the Edge's **source** and **target** are the same, or were the same when it was created (prior to mutations). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.isCrossStack">isCrossStack</a></code> | <code>boolean</code> | Indicates if **source** and **target** nodes reside in different *root* stacks. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.isExtraneous">isExtraneous</a></code> | <code>boolean</code> | Indicates if edge is extraneous which is determined by explicitly having *EXTRANEOUS* flag added and/or being a closed loop (source===target). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.source">source</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Edge **source** is the node that defines the edge (tail). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.target">target</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Edge **target** is the node being referenced by the **source** (head). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.referenceType">referenceType</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ReferenceTypeEnum">ReferenceTypeEnum</a></code> | Get type of reference. |

---

##### `attributes`<sup>Required</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.Reference.property.attributes"></a>

```typescript
public readonly attributes: {[ key: string ]: string | number | boolean | PlainObject | string | number | boolean | PlainObject[]};
```

- *Type:* {[ key: string ]: string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> | string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}

Get *readonly* record of all attributes.

---

##### `flags`<sup>Required</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.Reference.property.flags"></a>

```typescript
public readonly flags: FlagEnum[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]

Get *readonly* list of all flags.

---

##### `isDestroyed`<sup>Required</sup> <a name="isDestroyed" id="@aws-prototyping-sdk/cdk-graph.Reference.property.isDestroyed"></a>

```typescript
public readonly isDestroyed: boolean;
```

- *Type:* boolean

Indicates if the entity has been destroyed (eg: removed from store).

---

##### `isMutated`<sup>Required</sup> <a name="isMutated" id="@aws-prototyping-sdk/cdk-graph.Reference.property.isMutated"></a>

```typescript
public readonly isMutated: boolean;
```

- *Type:* boolean

Indicates if the entity has had destructive mutations applied.

---

##### `metadata`<sup>Required</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.Reference.property.metadata"></a>

```typescript
public readonly metadata: MetadataEntry[];
```

- *Type:* constructs.MetadataEntry[]

Get *readonly* list of all metadata entries.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.Reference.property.store"></a>

```typescript
public readonly store: Store;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Reference to the store.

---

##### `tags`<sup>Required</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.Reference.property.tags"></a>

```typescript
public readonly tags: {[ key: string ]: string};
```

- *Type:* {[ key: string ]: string}

Get *readonly* record of all tags.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.Reference.property.uuid"></a>

```typescript
public readonly uuid: string;
```

- *Type:* string

Universally unique identifier.

---

##### `allowDestructiveMutations`<sup>Required</sup> <a name="allowDestructiveMutations" id="@aws-prototyping-sdk/cdk-graph.Reference.property.allowDestructiveMutations"></a>

```typescript
public readonly allowDestructiveMutations: boolean;
```

- *Type:* boolean

Indicates if edge allows destructive mutations.

---

##### `direction`<sup>Required</sup> <a name="direction" id="@aws-prototyping-sdk/cdk-graph.Reference.property.direction"></a>

```typescript
public readonly direction: EdgeDirectionEnum;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a>

Indicates the direction in which the edge is directed.

---

##### `edgeType`<sup>Required</sup> <a name="edgeType" id="@aws-prototyping-sdk/cdk-graph.Reference.property.edgeType"></a>

```typescript
public readonly edgeType: EdgeTypeEnum;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum">EdgeTypeEnum</a>

Type of edge.

---

##### `isClosed`<sup>Required</sup> <a name="isClosed" id="@aws-prototyping-sdk/cdk-graph.Reference.property.isClosed"></a>

```typescript
public readonly isClosed: boolean;
```

- *Type:* boolean

Indicates if the Edge's **source** and **target** are the same, or were the same when it was created (prior to mutations).

To check whether it was originally closed, use `hasFlag(FlagEnum.CLOSED_EDGE)` instead.

---

##### `isCrossStack`<sup>Required</sup> <a name="isCrossStack" id="@aws-prototyping-sdk/cdk-graph.Reference.property.isCrossStack"></a>

```typescript
public readonly isCrossStack: boolean;
```

- *Type:* boolean

Indicates if **source** and **target** nodes reside in different *root* stacks.

---

##### `isExtraneous`<sup>Required</sup> <a name="isExtraneous" id="@aws-prototyping-sdk/cdk-graph.Reference.property.isExtraneous"></a>

```typescript
public readonly isExtraneous: boolean;
```

- *Type:* boolean

Indicates if edge is extraneous which is determined by explicitly having *EXTRANEOUS* flag added and/or being a closed loop (source===target).

---

##### `source`<sup>Required</sup> <a name="source" id="@aws-prototyping-sdk/cdk-graph.Reference.property.source"></a>

```typescript
public readonly source: Node;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Edge **source** is the node that defines the edge (tail).

---

##### `target`<sup>Required</sup> <a name="target" id="@aws-prototyping-sdk/cdk-graph.Reference.property.target"></a>

```typescript
public readonly target: Node;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Edge **target** is the node being referenced by the **source** (head).

---

##### `referenceType`<sup>Required</sup> <a name="referenceType" id="@aws-prototyping-sdk/cdk-graph.Reference.property.referenceType"></a>

```typescript
public readonly referenceType: ReferenceTypeEnum;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ReferenceTypeEnum">ReferenceTypeEnum</a>

Get type of reference.

---

#### Constants <a name="Constants" id="Constants"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.ATT_TYPE">ATT_TYPE</a></code> | <code>string</code> | Attribute defining the type of reference. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference.property.PREFIX">PREFIX</a></code> | <code>string</code> | Edge prefix to denote **Ref** type reference edge. |

---

##### `ATT_TYPE`<sup>Required</sup> <a name="ATT_TYPE" id="@aws-prototyping-sdk/cdk-graph.Reference.property.ATT_TYPE"></a>

```typescript
public readonly ATT_TYPE: string;
```

- *Type:* string

Attribute defining the type of reference.

---

##### `PREFIX`<sup>Required</sup> <a name="PREFIX" id="@aws-prototyping-sdk/cdk-graph.Reference.property.PREFIX"></a>

```typescript
public readonly PREFIX: string;
```

- *Type:* string

Edge prefix to denote **Ref** type reference edge.

---

### ResourceNode <a name="ResourceNode" id="@aws-prototyping-sdk/cdk-graph.ResourceNode"></a>

ResourceNode class defines a L2 cdk resource construct.

#### Initializers <a name="Initializers" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.Initializer"></a>

```typescript
import { ResourceNode } from '@aws-prototyping-sdk/cdk-graph'

new ResourceNode(props: IResourceNodeProps)
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.Initializer.parameter.props">props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps">IResourceNodeProps</a></code> | *No description.* |

---

##### `props`<sup>Required</sup> <a name="props" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.Initializer.parameter.props"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps">IResourceNodeProps</a>

---

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.addAttribute">addAttribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.addFlag">addFlag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.addMetadata">addMetadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.addTag">addTag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.applyData">applyData</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.findMetadata">findMetadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.getAttribute">getAttribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.getTag">getTag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.hasAttribute">hasAttribute</a></code> | Indicates if entity has a given attribute defined, and optionally with a specific value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.hasFlag">hasFlag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.hasMetadata">hasMetadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.hasTag">hasTag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateDestroy">mutateDestroy</a></code> | Destroys this node by removing all references and removing this node from the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.setAttribute">setAttribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.setTag">setTag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.addChild">addChild</a></code> | Add *child* node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.addLink">addLink</a></code> | Add *link* to another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.addReverseLink">addReverseLink</a></code> | Add *link* from another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.doesDependOn">doesDependOn</a></code> | Indicates if *this node* depends on *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.doesReference">doesReference</a></code> | Indicates if *this node* references *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.find">find</a></code> | Recursively find the nearest sub-node matching predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.findAll">findAll</a></code> | Return this construct and all of its sub-nodes in the given order. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.findAllLinks">findAllLinks</a></code> | Return all direct links of this node and that of all sub-nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.findAncestor">findAncestor</a></code> | Find nearest *ancestor* of *this node* matching given predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.findChild">findChild</a></code> | Find child with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.findLink">findLink</a></code> | Find link of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.findLinks">findLinks</a></code> | Find all links of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.getCfnProp">getCfnProp</a></code> | Get specific CloudFormation property. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.getChild">getChild</a></code> | Get *child* node with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.getLinkChains">getLinkChains</a></code> | Resolve all link chains. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.getNearestAncestor">getNearestAncestor</a></code> | Gets the nearest **common** *ancestor* shared between *this node* and another *node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.isAncestor">isAncestor</a></code> | Indicates if a specific *node* is an *ancestor* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.isChild">isChild</a></code> | Indicates if specific *node* is a *child* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateCollapse">mutateCollapse</a></code> | Collapses all sub-nodes of *this node* into *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateCollapseTo">mutateCollapseTo</a></code> | Collapses *this node* into *an ancestor*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateCollapseToParent">mutateCollapseToParent</a></code> | Collapses *this node* into *it's parent node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateHoist">mutateHoist</a></code> | Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateMove">mutateMove</a></code> | Move this node into a new parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateRemoveChild">mutateRemoveChild</a></code> | Remove a *child* node from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateRemoveLink">mutateRemoveLink</a></code> | Remove a *link* from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateRemoveReverseLink">mutateRemoveReverseLink</a></code> | Remove a *link* to *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateUncluster">mutateUncluster</a></code> | Hoist all children to parent and collapse node to parent. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.toString">toString</a></code> | Get string representation of this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateCfnResource">mutateCfnResource</a></code> | Modifies the L1 resource wrapped by this L2 resource. |

---

##### `addAttribute` <a name="addAttribute" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addAttribute"></a>

```typescript
public addAttribute(key: string, value: any): void
```

Add attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addAttribute.parameter.value"></a>

- *Type:* any

---

##### `addFlag` <a name="addFlag" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addFlag"></a>

```typescript
public addFlag(flag: FlagEnum): void
```

Add flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `addMetadata` <a name="addMetadata" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addMetadata"></a>

```typescript
public addMetadata(metadataType: string, data: any): void
```

Add metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addMetadata.parameter.metadataType"></a>

- *Type:* string

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addMetadata.parameter.data"></a>

- *Type:* any

---

##### `addTag` <a name="addTag" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addTag"></a>

```typescript
public addTag(key: string, value: string): void
```

Add tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addTag.parameter.value"></a>

- *Type:* string

---

##### `applyData` <a name="applyData" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.applyData"></a>

```typescript
public applyData(data: IBaseEntityDataProps, overwrite?: boolean, applyFlags?: boolean): void
```

Applies data (attributes, metadata, tags, flag) to entity.

Generally used only for mutations such as collapse and consume to retain data.

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.applyData.parameter.data"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps">IBaseEntityDataProps</a>

The data to apply.

---

###### `overwrite`<sup>Optional</sup> <a name="overwrite" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.applyData.parameter.overwrite"></a>

- *Type:* boolean

---

###### `applyFlags`<sup>Optional</sup> <a name="applyFlags" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.applyData.parameter.applyFlags"></a>

- *Type:* boolean

Indicates if data is overwritten - Indicates if flags should be applied.

---

##### `findMetadata` <a name="findMetadata" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findMetadata"></a>

```typescript
public findMetadata(metadataType: string): MetadataEntry[]
```

Retrieves all metadata entries of a given type.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findMetadata.parameter.metadataType"></a>

- *Type:* string

---

##### `getAttribute` <a name="getAttribute" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.getAttribute"></a>

```typescript
public getAttribute(key: string): any
```

Get attribute by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.getAttribute.parameter.key"></a>

- *Type:* string

---

##### `getTag` <a name="getTag" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.getTag"></a>

```typescript
public getTag(key: string): string
```

Get tag by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.getTag.parameter.key"></a>

- *Type:* string

---

##### `hasAttribute` <a name="hasAttribute" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.hasAttribute"></a>

```typescript
public hasAttribute(key: string, value?: any): boolean
```

Indicates if entity has a given attribute defined, and optionally with a specific value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.hasAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.hasAttribute.parameter.value"></a>

- *Type:* any

---

##### `hasFlag` <a name="hasFlag" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.hasFlag"></a>

```typescript
public hasFlag(flag: FlagEnum): boolean
```

Indicates if entity has a given flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.hasFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `hasMetadata` <a name="hasMetadata" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.hasMetadata"></a>

```typescript
public hasMetadata(metadataType: string, data: any): boolean
```

Indicates if entity has matching metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.hasMetadata.parameter.metadataType"></a>

- *Type:* string

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.hasMetadata.parameter.data"></a>

- *Type:* any

---

##### `hasTag` <a name="hasTag" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.hasTag"></a>

```typescript
public hasTag(key: string, value?: string): boolean
```

Indicates if entity has tag, optionally verifying tag value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.hasTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.hasTag.parameter.value"></a>

- *Type:* string

---

##### `mutateDestroy` <a name="mutateDestroy" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateDestroy"></a>

```typescript
public mutateDestroy(strict?: boolean): void
```

Destroys this node by removing all references and removing this node from the store.

###### `strict`<sup>Optional</sup> <a name="strict" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateDestroy.parameter.strict"></a>

- *Type:* boolean

Indicates that this node must not have references.

---

##### `setAttribute` <a name="setAttribute" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.setAttribute"></a>

```typescript
public setAttribute(key: string, value: any): void
```

Set attribute.

This will overwrite existing attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.setAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.setAttribute.parameter.value"></a>

- *Type:* any

---

##### `setTag` <a name="setTag" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.setTag"></a>

```typescript
public setTag(key: string, value: string): void
```

Set tag.

Will overwrite existing tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.setTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.setTag.parameter.value"></a>

- *Type:* string

---

##### `addChild` <a name="addChild" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addChild"></a>

```typescript
public addChild(node: Node): void
```

Add *child* node.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `addLink` <a name="addLink" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addLink"></a>

```typescript
public addLink(edge: Edge): void
```

Add *link* to another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `addReverseLink` <a name="addReverseLink" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addReverseLink"></a>

```typescript
public addReverseLink(edge: Edge): void
```

Add *link* from another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.addReverseLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `doesDependOn` <a name="doesDependOn" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.doesDependOn"></a>

```typescript
public doesDependOn(node: Node): boolean
```

Indicates if *this node* depends on *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.doesDependOn.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `doesReference` <a name="doesReference" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.doesReference"></a>

```typescript
public doesReference(node: Node): boolean
```

Indicates if *this node* references *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.doesReference.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `find` <a name="find" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.find"></a>

```typescript
public find(predicate: INodePredicate): Node
```

Recursively find the nearest sub-node matching predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.find.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

---

##### `findAll` <a name="findAll" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findAll"></a>

```typescript
public findAll(options?: IFindNodeOptions): Node[]
```

Return this construct and all of its sub-nodes in the given order.

Optionally filter nodes based on predicate.

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findAll.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindNodeOptions">IFindNodeOptions</a>

---

##### `findAllLinks` <a name="findAllLinks" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findAllLinks"></a>

```typescript
public findAllLinks(options?: IFindEdgeOptions): Edge[]
```

Return all direct links of this node and that of all sub-nodes.

Optionally filter links based on predicate.

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findAllLinks.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindEdgeOptions">IFindEdgeOptions</a>

---

##### `findAncestor` <a name="findAncestor" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findAncestor"></a>

```typescript
public findAncestor(predicate: INodePredicate, max?: number): Node
```

Find nearest *ancestor* of *this node* matching given predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findAncestor.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

Predicate to match ancestor.

---

###### `max`<sup>Optional</sup> <a name="max" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findAncestor.parameter.max"></a>

- *Type:* number

---

##### `findChild` <a name="findChild" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findChild"></a>

```typescript
public findChild(id: string): Node
```

Find child with given *id*.

Similar to `find` but does not throw error if no child found.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findChild.parameter.id"></a>

- *Type:* string

---

##### `findLink` <a name="findLink" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findLink"></a>

```typescript
public findLink(predicate: IEdgePredicate, reverse?: boolean, follow?: boolean, direct?: boolean): Edge
```

Find link of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct link
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findLink.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findLink.parameter.reverse"></a>

- *Type:* boolean

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findLink.parameter.follow"></a>

- *Type:* boolean

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findLink.parameter.direct"></a>

- *Type:* boolean

Indicates that only *direct* links should be searched.

---

##### `findLinks` <a name="findLinks" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findLinks"></a>

```typescript
public findLinks(predicate: IEdgePredicate, reverse?: boolean, follow?: boolean, direct?: boolean): Edge[]
```

Find all links of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct links
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findLinks.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findLinks.parameter.reverse"></a>

- *Type:* boolean

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findLinks.parameter.follow"></a>

- *Type:* boolean

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.findLinks.parameter.direct"></a>

- *Type:* boolean

Indicates that only *direct* links should be searched.

---

##### `getCfnProp` <a name="getCfnProp" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.getCfnProp"></a>

```typescript
public getCfnProp(key: string): string | number | boolean | PlainObject | string | number | boolean | PlainObject[]
```

Get specific CloudFormation property.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.getCfnProp.parameter.key"></a>

- *Type:* string

---

##### `getChild` <a name="getChild" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.getChild"></a>

```typescript
public getChild(id: string): Node
```

Get *child* node with given *id*.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.getChild.parameter.id"></a>

- *Type:* string

---

##### `getLinkChains` <a name="getLinkChains" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.getLinkChains"></a>

```typescript
public getLinkChains(reverse?: boolean): any[][]
```

Resolve all link chains.

> [{@link EdgeChain }]({@link EdgeChain })

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.getLinkChains.parameter.reverse"></a>

- *Type:* boolean

---

##### `getNearestAncestor` <a name="getNearestAncestor" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.getNearestAncestor"></a>

```typescript
public getNearestAncestor(node: Node): Node
```

Gets the nearest **common** *ancestor* shared between *this node* and another *node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.getNearestAncestor.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `isAncestor` <a name="isAncestor" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.isAncestor"></a>

```typescript
public isAncestor(ancestor: Node): boolean
```

Indicates if a specific *node* is an *ancestor* of *this node*.

###### `ancestor`<sup>Required</sup> <a name="ancestor" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.isAncestor.parameter.ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `isChild` <a name="isChild" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.isChild"></a>

```typescript
public isChild(node: Node): boolean
```

Indicates if specific *node* is a *child* of *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.isChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateCollapse` <a name="mutateCollapse" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateCollapse"></a>

```typescript
public mutateCollapse(): void
```

Collapses all sub-nodes of *this node* into *this node*.

##### `mutateCollapseTo` <a name="mutateCollapseTo" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateCollapseTo"></a>

```typescript
public mutateCollapseTo(ancestor: Node): Node
```

Collapses *this node* into *an ancestor*.

###### `ancestor`<sup>Required</sup> <a name="ancestor" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateCollapseTo.parameter.ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateCollapseToParent` <a name="mutateCollapseToParent" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateCollapseToParent"></a>

```typescript
public mutateCollapseToParent(): Node
```

Collapses *this node* into *it's parent node*.

##### `mutateHoist` <a name="mutateHoist" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateHoist"></a>

```typescript
public mutateHoist(newParent: Node): void
```

Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor.

###### `newParent`<sup>Required</sup> <a name="newParent" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateHoist.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateMove` <a name="mutateMove" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateMove"></a>

```typescript
public mutateMove(newParent: Node): void
```

Move this node into a new parent node.

###### `newParent`<sup>Required</sup> <a name="newParent" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateMove.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

The parent to move this node to.

---

##### `mutateRemoveChild` <a name="mutateRemoveChild" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateRemoveChild"></a>

```typescript
public mutateRemoveChild(node: Node): boolean
```

Remove a *child* node from *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateRemoveChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateRemoveLink` <a name="mutateRemoveLink" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateRemoveLink"></a>

```typescript
public mutateRemoveLink(link: Edge): boolean
```

Remove a *link* from *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateRemoveLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutateRemoveReverseLink` <a name="mutateRemoveReverseLink" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateRemoveReverseLink"></a>

```typescript
public mutateRemoveReverseLink(link: Edge): boolean
```

Remove a *link* to *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateRemoveReverseLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutateUncluster` <a name="mutateUncluster" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateUncluster"></a>

```typescript
public mutateUncluster(): void
```

Hoist all children to parent and collapse node to parent.

##### `toString` <a name="toString" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.toString"></a>

```typescript
public toString(): string
```

Get string representation of this node.

##### `mutateCfnResource` <a name="mutateCfnResource" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateCfnResource"></a>

```typescript
public mutateCfnResource(cfnResource?: CfnResourceNode): void
```

Modifies the L1 resource wrapped by this L2 resource.

###### `cfnResource`<sup>Optional</sup> <a name="cfnResource" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.mutateCfnResource.parameter.cfnResource"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode">CfnResourceNode</a>

---

#### Static Functions <a name="Static Functions" id="Static Functions"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.isResourceNode">isResourceNode</a></code> | Indicates if node is a {@link ResourceNode}. |

---

##### `isResourceNode` <a name="isResourceNode" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.isResourceNode"></a>

```typescript
import { ResourceNode } from '@aws-prototyping-sdk/cdk-graph'

ResourceNode.isResourceNode(node: Node)
```

Indicates if node is a {@link ResourceNode}.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.isResourceNode.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.attributes">attributes</a></code> | <code>{[ key: string ]: string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> \| string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}</code> | Get *readonly* record of all attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.flags">flags</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]</code> | Get *readonly* list of all flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isDestroyed">isDestroyed</a></code> | <code>boolean</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isMutated">isMutated</a></code> | <code>boolean</code> | Indicates if the entity has had destructive mutations applied. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.metadata">metadata</a></code> | <code>constructs.MetadataEntry[]</code> | Get *readonly* list of all metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Reference to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.tags">tags</a></code> | <code>{[ key: string ]: string}</code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.uuid">uuid</a></code> | <code>string</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.allowDestructiveMutations">allowDestructiveMutations</a></code> | <code>boolean</code> | Indicates if this node allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.children">children</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get all direct child nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.dependedOnBy">dependedOnBy</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *depend on this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.dependencies">dependencies</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *this node depends on*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.dependencyLinks">dependencyLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]</code> | Gets list of {@link Dependency} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.depth">depth</a></code> | <code>number</code> | Indicates the depth of the node relative to root (0). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.id">id</a></code> | <code>string</code> | Node id, which is only unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isAsset">isAsset</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.ASSET}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isCfnFqn">isCfnFqn</a></code> | <code>boolean</code> | Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isCluster">isCluster</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.CLUSTER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isCustomResource">isCustomResource</a></code> | <code>boolean</code> | Indicates if node is a *Custom Resource*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isExtraneous">isExtraneous</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isGraphContainer">isGraphContainer</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isLeaf">isLeaf</a></code> | <code>boolean</code> | Indicates if this node is a *leaf* node, which means it does not have children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isTopLevel">isTopLevel</a></code> | <code>boolean</code> | Indicates if node is direct child of the graph root node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.links">links</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]</code> | Gets all links (edges) in which this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.nodeType">nodeType</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a></code> | Type of node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.path">path</a></code> | <code>string</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.referencedBy">referencedBy</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *reference this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.referenceLinks">referenceLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]</code> | Gets list of {@link Reference} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.references">references</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *this node references*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.reverseDependencyLinks">reverseDependencyLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]</code> | Gets list of {@link Dependency} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.reverseLinks">reverseLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]</code> | Gets all links (edges) in which this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.reverseReferenceLinks">reverseReferenceLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]</code> | Gets list of {@link Reference} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.scopes">scopes</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Gets descending ordered list of ancestors from the root. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.siblings">siblings</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of *siblings* of this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.cfnProps">cfnProps</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a></code> | Get the cfn properties from the L1 resource that this L2 resource wraps. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.cfnType">cfnType</a></code> | <code>string</code> | Get the CloudFormation resource type for this L2 resource or for the L1 resource is wraps. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.constructInfo">constructInfo</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.constructInfoFqn">constructInfoFqn</a></code> | <code>string</code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.logicalId">logicalId</a></code> | <code>string</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.parent">parent</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.rootStack">rootStack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Get **root** stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.stack">stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Stack the node is contained in. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isCdkOwned">isCdkOwned</a></code> | <code>boolean</code> | Indicates if this resource is owned by cdk (defined in cdk library). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isWrapper">isWrapper</a></code> | <code>boolean</code> | Indicates if Resource wraps a single CfnResource. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.cfnResource">cfnResource</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode">CfnResourceNode</a></code> | Get the default/primary CfnResource that this Resource wraps. |

---

##### `attributes`<sup>Required</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.attributes"></a>

```typescript
public readonly attributes: {[ key: string ]: string | number | boolean | PlainObject | string | number | boolean | PlainObject[]};
```

- *Type:* {[ key: string ]: string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> | string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}

Get *readonly* record of all attributes.

---

##### `flags`<sup>Required</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.flags"></a>

```typescript
public readonly flags: FlagEnum[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]

Get *readonly* list of all flags.

---

##### `isDestroyed`<sup>Required</sup> <a name="isDestroyed" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isDestroyed"></a>

```typescript
public readonly isDestroyed: boolean;
```

- *Type:* boolean

Indicates if the entity has been destroyed (eg: removed from store).

---

##### `isMutated`<sup>Required</sup> <a name="isMutated" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isMutated"></a>

```typescript
public readonly isMutated: boolean;
```

- *Type:* boolean

Indicates if the entity has had destructive mutations applied.

---

##### `metadata`<sup>Required</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.metadata"></a>

```typescript
public readonly metadata: MetadataEntry[];
```

- *Type:* constructs.MetadataEntry[]

Get *readonly* list of all metadata entries.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.store"></a>

```typescript
public readonly store: Store;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Reference to the store.

---

##### `tags`<sup>Required</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.tags"></a>

```typescript
public readonly tags: {[ key: string ]: string};
```

- *Type:* {[ key: string ]: string}

Get *readonly* record of all tags.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.uuid"></a>

```typescript
public readonly uuid: string;
```

- *Type:* string

Universally unique identifier.

---

##### `allowDestructiveMutations`<sup>Required</sup> <a name="allowDestructiveMutations" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.allowDestructiveMutations"></a>

```typescript
public readonly allowDestructiveMutations: boolean;
```

- *Type:* boolean

Indicates if this node allows destructive mutations.

> [{@link Store.allowDestructiveMutations }]({@link Store.allowDestructiveMutations })

---

##### `children`<sup>Required</sup> <a name="children" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.children"></a>

```typescript
public readonly children: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get all direct child nodes.

---

##### `dependedOnBy`<sup>Required</sup> <a name="dependedOnBy" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.dependedOnBy"></a>

```typescript
public readonly dependedOnBy: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *depend on this node*.

> [{@link Node.reverseDependencyLinks }]({@link Node.reverseDependencyLinks })

---

##### `dependencies`<sup>Required</sup> <a name="dependencies" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.dependencies"></a>

```typescript
public readonly dependencies: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *this node depends on*.

> [{@link Node.dependencyLinks }]({@link Node.dependencyLinks })

---

##### `dependencyLinks`<sup>Required</sup> <a name="dependencyLinks" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.dependencyLinks"></a>

```typescript
public readonly dependencyLinks: Dependency[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]

Gets list of {@link Dependency} links (edges) where this node is the **source**.

---

##### `depth`<sup>Required</sup> <a name="depth" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.depth"></a>

```typescript
public readonly depth: number;
```

- *Type:* number

Indicates the depth of the node relative to root (0).

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.id"></a>

```typescript
public readonly id: string;
```

- *Type:* string

Node id, which is only unique within parent scope.

---

##### `isAsset`<sup>Required</sup> <a name="isAsset" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isAsset"></a>

```typescript
public readonly isAsset: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.ASSET}.

---

##### `isCfnFqn`<sup>Required</sup> <a name="isCfnFqn" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isCfnFqn"></a>

```typescript
public readonly isCfnFqn: boolean;
```

- *Type:* boolean

Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct.

> [{@link FlagEnum.CFN_FQN }]({@link FlagEnum.CFN_FQN })

---

##### `isCluster`<sup>Required</sup> <a name="isCluster" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isCluster"></a>

```typescript
public readonly isCluster: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.CLUSTER}.

---

##### `isCustomResource`<sup>Required</sup> <a name="isCustomResource" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isCustomResource"></a>

```typescript
public readonly isCustomResource: boolean;
```

- *Type:* boolean

Indicates if node is a *Custom Resource*.

---

##### `isExtraneous`<sup>Required</sup> <a name="isExtraneous" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isExtraneous"></a>

```typescript
public readonly isExtraneous: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children.

---

##### `isGraphContainer`<sup>Required</sup> <a name="isGraphContainer" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isGraphContainer"></a>

```typescript
public readonly isGraphContainer: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}.

---

##### `isLeaf`<sup>Required</sup> <a name="isLeaf" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isLeaf"></a>

```typescript
public readonly isLeaf: boolean;
```

- *Type:* boolean

Indicates if this node is a *leaf* node, which means it does not have children.

---

##### `isTopLevel`<sup>Required</sup> <a name="isTopLevel" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isTopLevel"></a>

```typescript
public readonly isTopLevel: boolean;
```

- *Type:* boolean

Indicates if node is direct child of the graph root node.

---

##### `links`<sup>Required</sup> <a name="links" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.links"></a>

```typescript
public readonly links: Edge[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]

Gets all links (edges) in which this node is the **source**.

---

##### `nodeType`<sup>Required</sup> <a name="nodeType" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.nodeType"></a>

```typescript
public readonly nodeType: NodeTypeEnum;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a>

Type of node.

---

##### `path`<sup>Required</sup> <a name="path" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.path"></a>

```typescript
public readonly path: string;
```

- *Type:* string

Path of the node.

---

##### `referencedBy`<sup>Required</sup> <a name="referencedBy" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.referencedBy"></a>

```typescript
public readonly referencedBy: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *reference this node*.

> [{@link Node.reverseReferenceLinks }]({@link Node.reverseReferenceLinks })

---

##### `referenceLinks`<sup>Required</sup> <a name="referenceLinks" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.referenceLinks"></a>

```typescript
public readonly referenceLinks: Reference[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]

Gets list of {@link Reference} links (edges) where this node is the **source**.

---

##### `references`<sup>Required</sup> <a name="references" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.references"></a>

```typescript
public readonly references: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *this node references*.

> [{@link Node.referenceLinks }]({@link Node.referenceLinks })

---

##### `reverseDependencyLinks`<sup>Required</sup> <a name="reverseDependencyLinks" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.reverseDependencyLinks"></a>

```typescript
public readonly reverseDependencyLinks: Dependency[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]

Gets list of {@link Dependency} links (edges) where this node is the **target**.

---

##### `reverseLinks`<sup>Required</sup> <a name="reverseLinks" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.reverseLinks"></a>

```typescript
public readonly reverseLinks: Edge[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]

Gets all links (edges) in which this node is the **target**.

---

##### `reverseReferenceLinks`<sup>Required</sup> <a name="reverseReferenceLinks" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.reverseReferenceLinks"></a>

```typescript
public readonly reverseReferenceLinks: Reference[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]

Gets list of {@link Reference} links (edges) where this node is the **target**.

---

##### `scopes`<sup>Required</sup> <a name="scopes" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.scopes"></a>

```typescript
public readonly scopes: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Gets descending ordered list of ancestors from the root.

---

##### `siblings`<sup>Required</sup> <a name="siblings" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.siblings"></a>

```typescript
public readonly siblings: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of *siblings* of this node.

---

##### `cfnProps`<sup>Optional</sup> <a name="cfnProps" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.cfnProps"></a>

```typescript
public readonly cfnProps: PlainObject;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>

Get the cfn properties from the L1 resource that this L2 resource wraps.

---

##### `cfnType`<sup>Optional</sup> <a name="cfnType" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.cfnType"></a>

```typescript
public readonly cfnType: string;
```

- *Type:* string

Get the CloudFormation resource type for this L2 resource or for the L1 resource is wraps.

---

##### `constructInfo`<sup>Optional</sup> <a name="constructInfo" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.constructInfo"></a>

```typescript
public readonly constructInfo: ConstructInfo;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `constructInfoFqn`<sup>Optional</sup> <a name="constructInfoFqn" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.constructInfoFqn"></a>

```typescript
public readonly constructInfoFqn: string;
```

- *Type:* string

Synthesized construct information defining jii resolution data.

---

##### `logicalId`<sup>Optional</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.logicalId"></a>

```typescript
public readonly logicalId: string;
```

- *Type:* string

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.parent"></a>

```typescript
public readonly parent: Node;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

Only the root node should not have parent.

---

##### `rootStack`<sup>Optional</sup> <a name="rootStack" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.rootStack"></a>

```typescript
public readonly rootStack: StackNode;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Get **root** stack.

---

##### `stack`<sup>Optional</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.stack"></a>

```typescript
public readonly stack: StackNode;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained in.

---

##### `isCdkOwned`<sup>Required</sup> <a name="isCdkOwned" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isCdkOwned"></a>

```typescript
public readonly isCdkOwned: boolean;
```

- *Type:* boolean

Indicates if this resource is owned by cdk (defined in cdk library).

---

##### `isWrapper`<sup>Required</sup> <a name="isWrapper" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.isWrapper"></a>

```typescript
public readonly isWrapper: boolean;
```

- *Type:* boolean

Indicates if Resource wraps a single CfnResource.

---

##### `cfnResource`<sup>Optional</sup> <a name="cfnResource" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.cfnResource"></a>

```typescript
public readonly cfnResource: CfnResourceNode;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode">CfnResourceNode</a>

Get the default/primary CfnResource that this Resource wraps.

---

#### Constants <a name="Constants" id="Constants"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.ATT_WRAPPED_CFN_PROPS">ATT_WRAPPED_CFN_PROPS</a></code> | <code>string</code> | Attribute key for cfn properties. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode.property.ATT_WRAPPED_CFN_TYPE">ATT_WRAPPED_CFN_TYPE</a></code> | <code>string</code> | Attribute key for cfn resource type. |

---

##### `ATT_WRAPPED_CFN_PROPS`<sup>Required</sup> <a name="ATT_WRAPPED_CFN_PROPS" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.ATT_WRAPPED_CFN_PROPS"></a>

```typescript
public readonly ATT_WRAPPED_CFN_PROPS: string;
```

- *Type:* string

Attribute key for cfn properties.

---

##### `ATT_WRAPPED_CFN_TYPE`<sup>Required</sup> <a name="ATT_WRAPPED_CFN_TYPE" id="@aws-prototyping-sdk/cdk-graph.ResourceNode.property.ATT_WRAPPED_CFN_TYPE"></a>

```typescript
public readonly ATT_WRAPPED_CFN_TYPE: string;
```

- *Type:* string

Attribute key for cfn resource type.

---

### RootNode <a name="RootNode" id="@aws-prototyping-sdk/cdk-graph.RootNode"></a>

RootNode represents the root of the store tree.

#### Initializers <a name="Initializers" id="@aws-prototyping-sdk/cdk-graph.RootNode.Initializer"></a>

```typescript
import { RootNode } from '@aws-prototyping-sdk/cdk-graph'

new RootNode(store: Store)
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.Initializer.parameter.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Reference to the store. |

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.RootNode.Initializer.parameter.store"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Reference to the store.

---

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.addAttribute">addAttribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.addFlag">addFlag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.addMetadata">addMetadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.addTag">addTag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.applyData">applyData</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.findMetadata">findMetadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.getAttribute">getAttribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.getTag">getTag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.hasAttribute">hasAttribute</a></code> | Indicates if entity has a given attribute defined, and optionally with a specific value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.hasFlag">hasFlag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.hasMetadata">hasMetadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.hasTag">hasTag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.mutateDestroy">mutateDestroy</a></code> | Destroys this node by removing all references and removing this node from the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.setAttribute">setAttribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.setTag">setTag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.addChild">addChild</a></code> | Add *child* node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.addLink">addLink</a></code> | Add *link* to another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.addReverseLink">addReverseLink</a></code> | Add *link* from another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.doesDependOn">doesDependOn</a></code> | Indicates if *this node* depends on *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.doesReference">doesReference</a></code> | Indicates if *this node* references *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.find">find</a></code> | Recursively find the nearest sub-node matching predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.findAll">findAll</a></code> | Return this construct and all of its sub-nodes in the given order. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.findAllLinks">findAllLinks</a></code> | Return all direct links of this node and that of all sub-nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.findAncestor">findAncestor</a></code> | Find nearest *ancestor* of *this node* matching given predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.findChild">findChild</a></code> | Find child with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.findLink">findLink</a></code> | Find link of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.findLinks">findLinks</a></code> | Find all links of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.getCfnProp">getCfnProp</a></code> | Get specific CloudFormation property. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.getChild">getChild</a></code> | Get *child* node with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.getLinkChains">getLinkChains</a></code> | Resolve all link chains. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.getNearestAncestor">getNearestAncestor</a></code> | Gets the nearest **common** *ancestor* shared between *this node* and another *node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.isAncestor">isAncestor</a></code> | Indicates if a specific *node* is an *ancestor* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.isChild">isChild</a></code> | Indicates if specific *node* is a *child* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.mutateCollapse">mutateCollapse</a></code> | Collapses all sub-nodes of *this node* into *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.mutateCollapseTo">mutateCollapseTo</a></code> | Collapses *this node* into *an ancestor* > {@link RootNode} does not support this mutation. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.mutateCollapseToParent">mutateCollapseToParent</a></code> | Collapses *this node* into *it's parent node* > {@link RootNode} does not support this mutation. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.mutateHoist">mutateHoist</a></code> | Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.mutateMove">mutateMove</a></code> | Move this node into a new parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.mutateRemoveChild">mutateRemoveChild</a></code> | Remove a *child* node from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.mutateRemoveLink">mutateRemoveLink</a></code> | Remove a *link* from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.mutateRemoveReverseLink">mutateRemoveReverseLink</a></code> | Remove a *link* to *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.mutateUncluster">mutateUncluster</a></code> | Hoist all children to parent and collapse node to parent. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.toString">toString</a></code> | Get string representation of this node. |

---

##### `addAttribute` <a name="addAttribute" id="@aws-prototyping-sdk/cdk-graph.RootNode.addAttribute"></a>

```typescript
public addAttribute(key: string, value: any): void
```

Add attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.RootNode.addAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.RootNode.addAttribute.parameter.value"></a>

- *Type:* any

---

##### `addFlag` <a name="addFlag" id="@aws-prototyping-sdk/cdk-graph.RootNode.addFlag"></a>

```typescript
public addFlag(flag: FlagEnum): void
```

Add flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.RootNode.addFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `addMetadata` <a name="addMetadata" id="@aws-prototyping-sdk/cdk-graph.RootNode.addMetadata"></a>

```typescript
public addMetadata(metadataType: string, data: any): void
```

Add metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.RootNode.addMetadata.parameter.metadataType"></a>

- *Type:* string

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.RootNode.addMetadata.parameter.data"></a>

- *Type:* any

---

##### `addTag` <a name="addTag" id="@aws-prototyping-sdk/cdk-graph.RootNode.addTag"></a>

```typescript
public addTag(key: string, value: string): void
```

Add tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.RootNode.addTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.RootNode.addTag.parameter.value"></a>

- *Type:* string

---

##### `applyData` <a name="applyData" id="@aws-prototyping-sdk/cdk-graph.RootNode.applyData"></a>

```typescript
public applyData(data: IBaseEntityDataProps, overwrite?: boolean, applyFlags?: boolean): void
```

Applies data (attributes, metadata, tags, flag) to entity.

Generally used only for mutations such as collapse and consume to retain data.

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.RootNode.applyData.parameter.data"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps">IBaseEntityDataProps</a>

The data to apply.

---

###### `overwrite`<sup>Optional</sup> <a name="overwrite" id="@aws-prototyping-sdk/cdk-graph.RootNode.applyData.parameter.overwrite"></a>

- *Type:* boolean

---

###### `applyFlags`<sup>Optional</sup> <a name="applyFlags" id="@aws-prototyping-sdk/cdk-graph.RootNode.applyData.parameter.applyFlags"></a>

- *Type:* boolean

Indicates if data is overwritten - Indicates if flags should be applied.

---

##### `findMetadata` <a name="findMetadata" id="@aws-prototyping-sdk/cdk-graph.RootNode.findMetadata"></a>

```typescript
public findMetadata(metadataType: string): MetadataEntry[]
```

Retrieves all metadata entries of a given type.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.RootNode.findMetadata.parameter.metadataType"></a>

- *Type:* string

---

##### `getAttribute` <a name="getAttribute" id="@aws-prototyping-sdk/cdk-graph.RootNode.getAttribute"></a>

```typescript
public getAttribute(key: string): any
```

Get attribute by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.RootNode.getAttribute.parameter.key"></a>

- *Type:* string

---

##### `getTag` <a name="getTag" id="@aws-prototyping-sdk/cdk-graph.RootNode.getTag"></a>

```typescript
public getTag(key: string): string
```

Get tag by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.RootNode.getTag.parameter.key"></a>

- *Type:* string

---

##### `hasAttribute` <a name="hasAttribute" id="@aws-prototyping-sdk/cdk-graph.RootNode.hasAttribute"></a>

```typescript
public hasAttribute(key: string, value?: any): boolean
```

Indicates if entity has a given attribute defined, and optionally with a specific value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.RootNode.hasAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.RootNode.hasAttribute.parameter.value"></a>

- *Type:* any

---

##### `hasFlag` <a name="hasFlag" id="@aws-prototyping-sdk/cdk-graph.RootNode.hasFlag"></a>

```typescript
public hasFlag(flag: FlagEnum): boolean
```

Indicates if entity has a given flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.RootNode.hasFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `hasMetadata` <a name="hasMetadata" id="@aws-prototyping-sdk/cdk-graph.RootNode.hasMetadata"></a>

```typescript
public hasMetadata(metadataType: string, data: any): boolean
```

Indicates if entity has matching metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.RootNode.hasMetadata.parameter.metadataType"></a>

- *Type:* string

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.RootNode.hasMetadata.parameter.data"></a>

- *Type:* any

---

##### `hasTag` <a name="hasTag" id="@aws-prototyping-sdk/cdk-graph.RootNode.hasTag"></a>

```typescript
public hasTag(key: string, value?: string): boolean
```

Indicates if entity has tag, optionally verifying tag value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.RootNode.hasTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.RootNode.hasTag.parameter.value"></a>

- *Type:* string

---

##### `mutateDestroy` <a name="mutateDestroy" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateDestroy"></a>

```typescript
public mutateDestroy(_strict?: boolean): void
```

Destroys this node by removing all references and removing this node from the store.

> {@link RootNode} does not support this mutation

###### `_strict`<sup>Optional</sup> <a name="_strict" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateDestroy.parameter._strict"></a>

- *Type:* boolean

---

##### `setAttribute` <a name="setAttribute" id="@aws-prototyping-sdk/cdk-graph.RootNode.setAttribute"></a>

```typescript
public setAttribute(key: string, value: any): void
```

Set attribute.

This will overwrite existing attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.RootNode.setAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.RootNode.setAttribute.parameter.value"></a>

- *Type:* any

---

##### `setTag` <a name="setTag" id="@aws-prototyping-sdk/cdk-graph.RootNode.setTag"></a>

```typescript
public setTag(key: string, value: string): void
```

Set tag.

Will overwrite existing tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.RootNode.setTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.RootNode.setTag.parameter.value"></a>

- *Type:* string

---

##### `addChild` <a name="addChild" id="@aws-prototyping-sdk/cdk-graph.RootNode.addChild"></a>

```typescript
public addChild(node: Node): void
```

Add *child* node.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.RootNode.addChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `addLink` <a name="addLink" id="@aws-prototyping-sdk/cdk-graph.RootNode.addLink"></a>

```typescript
public addLink(edge: Edge): void
```

Add *link* to another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.RootNode.addLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `addReverseLink` <a name="addReverseLink" id="@aws-prototyping-sdk/cdk-graph.RootNode.addReverseLink"></a>

```typescript
public addReverseLink(edge: Edge): void
```

Add *link* from another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.RootNode.addReverseLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `doesDependOn` <a name="doesDependOn" id="@aws-prototyping-sdk/cdk-graph.RootNode.doesDependOn"></a>

```typescript
public doesDependOn(node: Node): boolean
```

Indicates if *this node* depends on *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.RootNode.doesDependOn.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `doesReference` <a name="doesReference" id="@aws-prototyping-sdk/cdk-graph.RootNode.doesReference"></a>

```typescript
public doesReference(node: Node): boolean
```

Indicates if *this node* references *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.RootNode.doesReference.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `find` <a name="find" id="@aws-prototyping-sdk/cdk-graph.RootNode.find"></a>

```typescript
public find(predicate: INodePredicate): Node
```

Recursively find the nearest sub-node matching predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.RootNode.find.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

---

##### `findAll` <a name="findAll" id="@aws-prototyping-sdk/cdk-graph.RootNode.findAll"></a>

```typescript
public findAll(options?: IFindNodeOptions): Node[]
```

Return this construct and all of its sub-nodes in the given order.

Optionally filter nodes based on predicate.
**The root not is excluded from list**

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.RootNode.findAll.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindNodeOptions">IFindNodeOptions</a>

---

##### `findAllLinks` <a name="findAllLinks" id="@aws-prototyping-sdk/cdk-graph.RootNode.findAllLinks"></a>

```typescript
public findAllLinks(options?: IFindEdgeOptions): Edge[]
```

Return all direct links of this node and that of all sub-nodes.

Optionally filter links based on predicate.

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.RootNode.findAllLinks.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindEdgeOptions">IFindEdgeOptions</a>

---

##### `findAncestor` <a name="findAncestor" id="@aws-prototyping-sdk/cdk-graph.RootNode.findAncestor"></a>

```typescript
public findAncestor(predicate: INodePredicate, max?: number): Node
```

Find nearest *ancestor* of *this node* matching given predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.RootNode.findAncestor.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

Predicate to match ancestor.

---

###### `max`<sup>Optional</sup> <a name="max" id="@aws-prototyping-sdk/cdk-graph.RootNode.findAncestor.parameter.max"></a>

- *Type:* number

---

##### `findChild` <a name="findChild" id="@aws-prototyping-sdk/cdk-graph.RootNode.findChild"></a>

```typescript
public findChild(id: string): Node
```

Find child with given *id*.

Similar to `find` but does not throw error if no child found.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.RootNode.findChild.parameter.id"></a>

- *Type:* string

---

##### `findLink` <a name="findLink" id="@aws-prototyping-sdk/cdk-graph.RootNode.findLink"></a>

```typescript
public findLink(predicate: IEdgePredicate, reverse?: boolean, follow?: boolean, direct?: boolean): Edge
```

Find link of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct link
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.RootNode.findLink.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.RootNode.findLink.parameter.reverse"></a>

- *Type:* boolean

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.RootNode.findLink.parameter.follow"></a>

- *Type:* boolean

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.RootNode.findLink.parameter.direct"></a>

- *Type:* boolean

Indicates that only *direct* links should be searched.

---

##### `findLinks` <a name="findLinks" id="@aws-prototyping-sdk/cdk-graph.RootNode.findLinks"></a>

```typescript
public findLinks(predicate: IEdgePredicate, reverse?: boolean, follow?: boolean, direct?: boolean): Edge[]
```

Find all links of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct links
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.RootNode.findLinks.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.RootNode.findLinks.parameter.reverse"></a>

- *Type:* boolean

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.RootNode.findLinks.parameter.follow"></a>

- *Type:* boolean

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.RootNode.findLinks.parameter.direct"></a>

- *Type:* boolean

Indicates that only *direct* links should be searched.

---

##### `getCfnProp` <a name="getCfnProp" id="@aws-prototyping-sdk/cdk-graph.RootNode.getCfnProp"></a>

```typescript
public getCfnProp(key: string): string | number | boolean | PlainObject | string | number | boolean | PlainObject[]
```

Get specific CloudFormation property.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.RootNode.getCfnProp.parameter.key"></a>

- *Type:* string

---

##### `getChild` <a name="getChild" id="@aws-prototyping-sdk/cdk-graph.RootNode.getChild"></a>

```typescript
public getChild(id: string): Node
```

Get *child* node with given *id*.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.RootNode.getChild.parameter.id"></a>

- *Type:* string

---

##### `getLinkChains` <a name="getLinkChains" id="@aws-prototyping-sdk/cdk-graph.RootNode.getLinkChains"></a>

```typescript
public getLinkChains(reverse?: boolean): any[][]
```

Resolve all link chains.

> [{@link EdgeChain }]({@link EdgeChain })

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.RootNode.getLinkChains.parameter.reverse"></a>

- *Type:* boolean

---

##### `getNearestAncestor` <a name="getNearestAncestor" id="@aws-prototyping-sdk/cdk-graph.RootNode.getNearestAncestor"></a>

```typescript
public getNearestAncestor(node: Node): Node
```

Gets the nearest **common** *ancestor* shared between *this node* and another *node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.RootNode.getNearestAncestor.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `isAncestor` <a name="isAncestor" id="@aws-prototyping-sdk/cdk-graph.RootNode.isAncestor"></a>

```typescript
public isAncestor(ancestor: Node): boolean
```

Indicates if a specific *node* is an *ancestor* of *this node*.

###### `ancestor`<sup>Required</sup> <a name="ancestor" id="@aws-prototyping-sdk/cdk-graph.RootNode.isAncestor.parameter.ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `isChild` <a name="isChild" id="@aws-prototyping-sdk/cdk-graph.RootNode.isChild"></a>

```typescript
public isChild(node: Node): boolean
```

Indicates if specific *node* is a *child* of *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.RootNode.isChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateCollapse` <a name="mutateCollapse" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateCollapse"></a>

```typescript
public mutateCollapse(): void
```

Collapses all sub-nodes of *this node* into *this node*.

> {@link RootNode} does not support this mutation

##### `mutateCollapseTo` <a name="mutateCollapseTo" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateCollapseTo"></a>

```typescript
public mutateCollapseTo(_ancestor: Node): Node
```

Collapses *this node* into *an ancestor* > {@link RootNode} does not support this mutation.

###### `_ancestor`<sup>Required</sup> <a name="_ancestor" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateCollapseTo.parameter._ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateCollapseToParent` <a name="mutateCollapseToParent" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateCollapseToParent"></a>

```typescript
public mutateCollapseToParent(): Node
```

Collapses *this node* into *it's parent node* > {@link RootNode} does not support this mutation.

##### `mutateHoist` <a name="mutateHoist" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateHoist"></a>

```typescript
public mutateHoist(_newParent: Node): void
```

Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor.

> {@link RootNode} does not support this mutation

###### `_newParent`<sup>Required</sup> <a name="_newParent" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateHoist.parameter._newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateMove` <a name="mutateMove" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateMove"></a>

```typescript
public mutateMove(newParent: Node): void
```

Move this node into a new parent node.

###### `newParent`<sup>Required</sup> <a name="newParent" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateMove.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

The parent to move this node to.

---

##### `mutateRemoveChild` <a name="mutateRemoveChild" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateRemoveChild"></a>

```typescript
public mutateRemoveChild(node: Node): boolean
```

Remove a *child* node from *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateRemoveChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateRemoveLink` <a name="mutateRemoveLink" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateRemoveLink"></a>

```typescript
public mutateRemoveLink(link: Edge): boolean
```

Remove a *link* from *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateRemoveLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutateRemoveReverseLink` <a name="mutateRemoveReverseLink" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateRemoveReverseLink"></a>

```typescript
public mutateRemoveReverseLink(link: Edge): boolean
```

Remove a *link* to *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateRemoveReverseLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutateUncluster` <a name="mutateUncluster" id="@aws-prototyping-sdk/cdk-graph.RootNode.mutateUncluster"></a>

```typescript
public mutateUncluster(): void
```

Hoist all children to parent and collapse node to parent.

##### `toString` <a name="toString" id="@aws-prototyping-sdk/cdk-graph.RootNode.toString"></a>

```typescript
public toString(): string
```

Get string representation of this node.

#### Static Functions <a name="Static Functions" id="Static Functions"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.isRootNode">isRootNode</a></code> | Indicates if node is a {@link RootNode}. |

---

##### `isRootNode` <a name="isRootNode" id="@aws-prototyping-sdk/cdk-graph.RootNode.isRootNode"></a>

```typescript
import { RootNode } from '@aws-prototyping-sdk/cdk-graph'

RootNode.isRootNode(node: Node)
```

Indicates if node is a {@link RootNode}.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.RootNode.isRootNode.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.attributes">attributes</a></code> | <code>{[ key: string ]: string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> \| string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}</code> | Get *readonly* record of all attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.flags">flags</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]</code> | Get *readonly* list of all flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.isDestroyed">isDestroyed</a></code> | <code>boolean</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.isMutated">isMutated</a></code> | <code>boolean</code> | Indicates if the entity has had destructive mutations applied. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.metadata">metadata</a></code> | <code>constructs.MetadataEntry[]</code> | Get *readonly* list of all metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Reference to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.tags">tags</a></code> | <code>{[ key: string ]: string}</code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.uuid">uuid</a></code> | <code>string</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.allowDestructiveMutations">allowDestructiveMutations</a></code> | <code>boolean</code> | Indicates if this node allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.children">children</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get all direct child nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.dependedOnBy">dependedOnBy</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *depend on this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.dependencies">dependencies</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *this node depends on*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.dependencyLinks">dependencyLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]</code> | Gets list of {@link Dependency} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.depth">depth</a></code> | <code>number</code> | Indicates the depth of the node relative to root (0). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.id">id</a></code> | <code>string</code> | Node id, which is only unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.isAsset">isAsset</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.ASSET}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.isCfnFqn">isCfnFqn</a></code> | <code>boolean</code> | Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.isCluster">isCluster</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.CLUSTER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.isCustomResource">isCustomResource</a></code> | <code>boolean</code> | Indicates if node is a *Custom Resource*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.isExtraneous">isExtraneous</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.isGraphContainer">isGraphContainer</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.isLeaf">isLeaf</a></code> | <code>boolean</code> | Indicates if this node is a *leaf* node, which means it does not have children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.isTopLevel">isTopLevel</a></code> | <code>boolean</code> | Indicates if node is direct child of the graph root node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.links">links</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]</code> | Gets all links (edges) in which this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.nodeType">nodeType</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a></code> | Type of node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.path">path</a></code> | <code>string</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.referencedBy">referencedBy</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *reference this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.referenceLinks">referenceLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]</code> | Gets list of {@link Reference} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.references">references</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *this node references*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.reverseDependencyLinks">reverseDependencyLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]</code> | Gets list of {@link Dependency} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.reverseLinks">reverseLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]</code> | Gets all links (edges) in which this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.reverseReferenceLinks">reverseReferenceLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]</code> | Gets list of {@link Reference} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.scopes">scopes</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Gets descending ordered list of ancestors from the root. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.siblings">siblings</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of *siblings* of this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.cfnProps">cfnProps</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a></code> | Gets CloudFormation properties for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.cfnType">cfnType</a></code> | <code>string</code> | Get the CloudFormation resource type for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.constructInfo">constructInfo</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.constructInfoFqn">constructInfoFqn</a></code> | <code>string</code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.logicalId">logicalId</a></code> | <code>string</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.parent">parent</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.rootStack">rootStack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Get **root** stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.stack">stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Stack the node is contained in. |

---

##### `attributes`<sup>Required</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.attributes"></a>

```typescript
public readonly attributes: {[ key: string ]: string | number | boolean | PlainObject | string | number | boolean | PlainObject[]};
```

- *Type:* {[ key: string ]: string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> | string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}

Get *readonly* record of all attributes.

---

##### `flags`<sup>Required</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.flags"></a>

```typescript
public readonly flags: FlagEnum[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]

Get *readonly* list of all flags.

---

##### `isDestroyed`<sup>Required</sup> <a name="isDestroyed" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.isDestroyed"></a>

```typescript
public readonly isDestroyed: boolean;
```

- *Type:* boolean

Indicates if the entity has been destroyed (eg: removed from store).

---

##### `isMutated`<sup>Required</sup> <a name="isMutated" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.isMutated"></a>

```typescript
public readonly isMutated: boolean;
```

- *Type:* boolean

Indicates if the entity has had destructive mutations applied.

---

##### `metadata`<sup>Required</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.metadata"></a>

```typescript
public readonly metadata: MetadataEntry[];
```

- *Type:* constructs.MetadataEntry[]

Get *readonly* list of all metadata entries.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.store"></a>

```typescript
public readonly store: Store;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Reference to the store.

---

##### `tags`<sup>Required</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.tags"></a>

```typescript
public readonly tags: {[ key: string ]: string};
```

- *Type:* {[ key: string ]: string}

Get *readonly* record of all tags.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.uuid"></a>

```typescript
public readonly uuid: string;
```

- *Type:* string

Universally unique identifier.

---

##### `allowDestructiveMutations`<sup>Required</sup> <a name="allowDestructiveMutations" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.allowDestructiveMutations"></a>

```typescript
public readonly allowDestructiveMutations: boolean;
```

- *Type:* boolean

Indicates if this node allows destructive mutations.

> [{@link Store.allowDestructiveMutations }]({@link Store.allowDestructiveMutations })

---

##### `children`<sup>Required</sup> <a name="children" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.children"></a>

```typescript
public readonly children: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get all direct child nodes.

---

##### `dependedOnBy`<sup>Required</sup> <a name="dependedOnBy" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.dependedOnBy"></a>

```typescript
public readonly dependedOnBy: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *depend on this node*.

> [{@link Node.reverseDependencyLinks }]({@link Node.reverseDependencyLinks })

---

##### `dependencies`<sup>Required</sup> <a name="dependencies" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.dependencies"></a>

```typescript
public readonly dependencies: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *this node depends on*.

> [{@link Node.dependencyLinks }]({@link Node.dependencyLinks })

---

##### `dependencyLinks`<sup>Required</sup> <a name="dependencyLinks" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.dependencyLinks"></a>

```typescript
public readonly dependencyLinks: Dependency[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]

Gets list of {@link Dependency} links (edges) where this node is the **source**.

---

##### `depth`<sup>Required</sup> <a name="depth" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.depth"></a>

```typescript
public readonly depth: number;
```

- *Type:* number

Indicates the depth of the node relative to root (0).

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.id"></a>

```typescript
public readonly id: string;
```

- *Type:* string

Node id, which is only unique within parent scope.

---

##### `isAsset`<sup>Required</sup> <a name="isAsset" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.isAsset"></a>

```typescript
public readonly isAsset: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.ASSET}.

---

##### `isCfnFqn`<sup>Required</sup> <a name="isCfnFqn" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.isCfnFqn"></a>

```typescript
public readonly isCfnFqn: boolean;
```

- *Type:* boolean

Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct.

> [{@link FlagEnum.CFN_FQN }]({@link FlagEnum.CFN_FQN })

---

##### `isCluster`<sup>Required</sup> <a name="isCluster" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.isCluster"></a>

```typescript
public readonly isCluster: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.CLUSTER}.

---

##### `isCustomResource`<sup>Required</sup> <a name="isCustomResource" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.isCustomResource"></a>

```typescript
public readonly isCustomResource: boolean;
```

- *Type:* boolean

Indicates if node is a *Custom Resource*.

---

##### `isExtraneous`<sup>Required</sup> <a name="isExtraneous" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.isExtraneous"></a>

```typescript
public readonly isExtraneous: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children.

---

##### `isGraphContainer`<sup>Required</sup> <a name="isGraphContainer" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.isGraphContainer"></a>

```typescript
public readonly isGraphContainer: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}.

---

##### `isLeaf`<sup>Required</sup> <a name="isLeaf" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.isLeaf"></a>

```typescript
public readonly isLeaf: boolean;
```

- *Type:* boolean

Indicates if this node is a *leaf* node, which means it does not have children.

---

##### `isTopLevel`<sup>Required</sup> <a name="isTopLevel" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.isTopLevel"></a>

```typescript
public readonly isTopLevel: boolean;
```

- *Type:* boolean

Indicates if node is direct child of the graph root node.

---

##### `links`<sup>Required</sup> <a name="links" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.links"></a>

```typescript
public readonly links: Edge[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]

Gets all links (edges) in which this node is the **source**.

---

##### `nodeType`<sup>Required</sup> <a name="nodeType" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.nodeType"></a>

```typescript
public readonly nodeType: NodeTypeEnum;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a>

Type of node.

---

##### `path`<sup>Required</sup> <a name="path" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.path"></a>

```typescript
public readonly path: string;
```

- *Type:* string

Path of the node.

---

##### `referencedBy`<sup>Required</sup> <a name="referencedBy" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.referencedBy"></a>

```typescript
public readonly referencedBy: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *reference this node*.

> [{@link Node.reverseReferenceLinks }]({@link Node.reverseReferenceLinks })

---

##### `referenceLinks`<sup>Required</sup> <a name="referenceLinks" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.referenceLinks"></a>

```typescript
public readonly referenceLinks: Reference[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]

Gets list of {@link Reference} links (edges) where this node is the **source**.

---

##### `references`<sup>Required</sup> <a name="references" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.references"></a>

```typescript
public readonly references: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *this node references*.

> [{@link Node.referenceLinks }]({@link Node.referenceLinks })

---

##### `reverseDependencyLinks`<sup>Required</sup> <a name="reverseDependencyLinks" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.reverseDependencyLinks"></a>

```typescript
public readonly reverseDependencyLinks: Dependency[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]

Gets list of {@link Dependency} links (edges) where this node is the **target**.

---

##### `reverseLinks`<sup>Required</sup> <a name="reverseLinks" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.reverseLinks"></a>

```typescript
public readonly reverseLinks: Edge[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]

Gets all links (edges) in which this node is the **target**.

---

##### `reverseReferenceLinks`<sup>Required</sup> <a name="reverseReferenceLinks" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.reverseReferenceLinks"></a>

```typescript
public readonly reverseReferenceLinks: Reference[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]

Gets list of {@link Reference} links (edges) where this node is the **target**.

---

##### `scopes`<sup>Required</sup> <a name="scopes" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.scopes"></a>

```typescript
public readonly scopes: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Gets descending ordered list of ancestors from the root.

---

##### `siblings`<sup>Required</sup> <a name="siblings" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.siblings"></a>

```typescript
public readonly siblings: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of *siblings* of this node.

---

##### `cfnProps`<sup>Optional</sup> <a name="cfnProps" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.cfnProps"></a>

```typescript
public readonly cfnProps: PlainObject;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>

Gets CloudFormation properties for this node.

---

##### `cfnType`<sup>Optional</sup> <a name="cfnType" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.cfnType"></a>

```typescript
public readonly cfnType: string;
```

- *Type:* string

Get the CloudFormation resource type for this node.

---

##### `constructInfo`<sup>Optional</sup> <a name="constructInfo" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.constructInfo"></a>

```typescript
public readonly constructInfo: ConstructInfo;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `constructInfoFqn`<sup>Optional</sup> <a name="constructInfoFqn" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.constructInfoFqn"></a>

```typescript
public readonly constructInfoFqn: string;
```

- *Type:* string

Synthesized construct information defining jii resolution data.

---

##### `logicalId`<sup>Optional</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.logicalId"></a>

```typescript
public readonly logicalId: string;
```

- *Type:* string

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.parent"></a>

```typescript
public readonly parent: Node;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

Only the root node should not have parent.

---

##### `rootStack`<sup>Optional</sup> <a name="rootStack" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.rootStack"></a>

```typescript
public readonly rootStack: StackNode;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Get **root** stack.

---

##### `stack`<sup>Optional</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.stack"></a>

```typescript
public readonly stack: StackNode;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained in.

---

#### Constants <a name="Constants" id="Constants"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.PATH">PATH</a></code> | <code>string</code> | Fixed path of root. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode.property.UUID">UUID</a></code> | <code>string</code> | Fixed UUID of root. |

---

##### `PATH`<sup>Required</sup> <a name="PATH" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.PATH"></a>

```typescript
public readonly PATH: string;
```

- *Type:* string

Fixed path of root.

---

##### `UUID`<sup>Required</sup> <a name="UUID" id="@aws-prototyping-sdk/cdk-graph.RootNode.property.UUID"></a>

```typescript
public readonly UUID: string;
```

- *Type:* string

Fixed UUID of root.

---

### StackNode <a name="StackNode" id="@aws-prototyping-sdk/cdk-graph.StackNode"></a>

StackNode defines a cdk Stack.

#### Initializers <a name="Initializers" id="@aws-prototyping-sdk/cdk-graph.StackNode.Initializer"></a>

```typescript
import { StackNode } from '@aws-prototyping-sdk/cdk-graph'

new StackNode(props: IStackNodeProps)
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.Initializer.parameter.props">props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps">IStackNodeProps</a></code> | *No description.* |

---

##### `props`<sup>Required</sup> <a name="props" id="@aws-prototyping-sdk/cdk-graph.StackNode.Initializer.parameter.props"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps">IStackNodeProps</a>

---

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.addAttribute">addAttribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.addFlag">addFlag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.addMetadata">addMetadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.addTag">addTag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.applyData">applyData</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.findMetadata">findMetadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.getAttribute">getAttribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.getTag">getTag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.hasAttribute">hasAttribute</a></code> | Indicates if entity has a given attribute defined, and optionally with a specific value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.hasFlag">hasFlag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.hasMetadata">hasMetadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.hasTag">hasTag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.mutateDestroy">mutateDestroy</a></code> | Destroys this node by removing all references and removing this node from the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.setAttribute">setAttribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.setTag">setTag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.addChild">addChild</a></code> | Add *child* node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.addLink">addLink</a></code> | Add *link* to another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.addReverseLink">addReverseLink</a></code> | Add *link* from another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.doesDependOn">doesDependOn</a></code> | Indicates if *this node* depends on *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.doesReference">doesReference</a></code> | Indicates if *this node* references *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.find">find</a></code> | Recursively find the nearest sub-node matching predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.findAll">findAll</a></code> | Return this construct and all of its sub-nodes in the given order. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.findAllLinks">findAllLinks</a></code> | Return all direct links of this node and that of all sub-nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.findAncestor">findAncestor</a></code> | Find nearest *ancestor* of *this node* matching given predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.findChild">findChild</a></code> | Find child with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.findLink">findLink</a></code> | Find link of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.findLinks">findLinks</a></code> | Find all links of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.getCfnProp">getCfnProp</a></code> | Get specific CloudFormation property. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.getChild">getChild</a></code> | Get *child* node with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.getLinkChains">getLinkChains</a></code> | Resolve all link chains. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.getNearestAncestor">getNearestAncestor</a></code> | Gets the nearest **common** *ancestor* shared between *this node* and another *node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.isAncestor">isAncestor</a></code> | Indicates if a specific *node* is an *ancestor* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.isChild">isChild</a></code> | Indicates if specific *node* is a *child* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.mutateCollapse">mutateCollapse</a></code> | Collapses all sub-nodes of *this node* into *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.mutateCollapseTo">mutateCollapseTo</a></code> | Collapses *this node* into *an ancestor*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.mutateCollapseToParent">mutateCollapseToParent</a></code> | Collapses *this node* into *it's parent node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.mutateHoist">mutateHoist</a></code> | Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.mutateMove">mutateMove</a></code> | Move this node into a new parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveChild">mutateRemoveChild</a></code> | Remove a *child* node from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveLink">mutateRemoveLink</a></code> | Remove a *link* from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveReverseLink">mutateRemoveReverseLink</a></code> | Remove a *link* to *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.mutateUncluster">mutateUncluster</a></code> | Hoist all children to parent and collapse node to parent. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.toString">toString</a></code> | Get string representation of this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.addOutput">addOutput</a></code> | Associate {@link OutputNode} with this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.addParameter">addParameter</a></code> | Associate {@link ParameterNode} with this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.findOutput">findOutput</a></code> | Find {@link OutputNode} with *logicalId* defined by this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.findParameter">findParameter</a></code> | Find {@link ParameterNode} with *parameterId* defined by this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveOutput">mutateRemoveOutput</a></code> | Disassociate {@link OutputNode} from this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveParameter">mutateRemoveParameter</a></code> | Disassociate {@link ParameterNode} from this stack. |

---

##### `addAttribute` <a name="addAttribute" id="@aws-prototyping-sdk/cdk-graph.StackNode.addAttribute"></a>

```typescript
public addAttribute(key: string, value: any): void
```

Add attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StackNode.addAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.StackNode.addAttribute.parameter.value"></a>

- *Type:* any

---

##### `addFlag` <a name="addFlag" id="@aws-prototyping-sdk/cdk-graph.StackNode.addFlag"></a>

```typescript
public addFlag(flag: FlagEnum): void
```

Add flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.StackNode.addFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `addMetadata` <a name="addMetadata" id="@aws-prototyping-sdk/cdk-graph.StackNode.addMetadata"></a>

```typescript
public addMetadata(metadataType: string, data: any): void
```

Add metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.StackNode.addMetadata.parameter.metadataType"></a>

- *Type:* string

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.StackNode.addMetadata.parameter.data"></a>

- *Type:* any

---

##### `addTag` <a name="addTag" id="@aws-prototyping-sdk/cdk-graph.StackNode.addTag"></a>

```typescript
public addTag(key: string, value: string): void
```

Add tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StackNode.addTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.StackNode.addTag.parameter.value"></a>

- *Type:* string

---

##### `applyData` <a name="applyData" id="@aws-prototyping-sdk/cdk-graph.StackNode.applyData"></a>

```typescript
public applyData(data: IBaseEntityDataProps, overwrite?: boolean, applyFlags?: boolean): void
```

Applies data (attributes, metadata, tags, flag) to entity.

Generally used only for mutations such as collapse and consume to retain data.

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.StackNode.applyData.parameter.data"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps">IBaseEntityDataProps</a>

The data to apply.

---

###### `overwrite`<sup>Optional</sup> <a name="overwrite" id="@aws-prototyping-sdk/cdk-graph.StackNode.applyData.parameter.overwrite"></a>

- *Type:* boolean

---

###### `applyFlags`<sup>Optional</sup> <a name="applyFlags" id="@aws-prototyping-sdk/cdk-graph.StackNode.applyData.parameter.applyFlags"></a>

- *Type:* boolean

Indicates if data is overwritten - Indicates if flags should be applied.

---

##### `findMetadata` <a name="findMetadata" id="@aws-prototyping-sdk/cdk-graph.StackNode.findMetadata"></a>

```typescript
public findMetadata(metadataType: string): MetadataEntry[]
```

Retrieves all metadata entries of a given type.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.StackNode.findMetadata.parameter.metadataType"></a>

- *Type:* string

---

##### `getAttribute` <a name="getAttribute" id="@aws-prototyping-sdk/cdk-graph.StackNode.getAttribute"></a>

```typescript
public getAttribute(key: string): any
```

Get attribute by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StackNode.getAttribute.parameter.key"></a>

- *Type:* string

---

##### `getTag` <a name="getTag" id="@aws-prototyping-sdk/cdk-graph.StackNode.getTag"></a>

```typescript
public getTag(key: string): string
```

Get tag by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StackNode.getTag.parameter.key"></a>

- *Type:* string

---

##### `hasAttribute` <a name="hasAttribute" id="@aws-prototyping-sdk/cdk-graph.StackNode.hasAttribute"></a>

```typescript
public hasAttribute(key: string, value?: any): boolean
```

Indicates if entity has a given attribute defined, and optionally with a specific value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StackNode.hasAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.StackNode.hasAttribute.parameter.value"></a>

- *Type:* any

---

##### `hasFlag` <a name="hasFlag" id="@aws-prototyping-sdk/cdk-graph.StackNode.hasFlag"></a>

```typescript
public hasFlag(flag: FlagEnum): boolean
```

Indicates if entity has a given flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.StackNode.hasFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `hasMetadata` <a name="hasMetadata" id="@aws-prototyping-sdk/cdk-graph.StackNode.hasMetadata"></a>

```typescript
public hasMetadata(metadataType: string, data: any): boolean
```

Indicates if entity has matching metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.StackNode.hasMetadata.parameter.metadataType"></a>

- *Type:* string

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.StackNode.hasMetadata.parameter.data"></a>

- *Type:* any

---

##### `hasTag` <a name="hasTag" id="@aws-prototyping-sdk/cdk-graph.StackNode.hasTag"></a>

```typescript
public hasTag(key: string, value?: string): boolean
```

Indicates if entity has tag, optionally verifying tag value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StackNode.hasTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.StackNode.hasTag.parameter.value"></a>

- *Type:* string

---

##### `mutateDestroy` <a name="mutateDestroy" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateDestroy"></a>

```typescript
public mutateDestroy(strict?: boolean): void
```

Destroys this node by removing all references and removing this node from the store.

###### `strict`<sup>Optional</sup> <a name="strict" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateDestroy.parameter.strict"></a>

- *Type:* boolean

---

##### `setAttribute` <a name="setAttribute" id="@aws-prototyping-sdk/cdk-graph.StackNode.setAttribute"></a>

```typescript
public setAttribute(key: string, value: any): void
```

Set attribute.

This will overwrite existing attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StackNode.setAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.StackNode.setAttribute.parameter.value"></a>

- *Type:* any

---

##### `setTag` <a name="setTag" id="@aws-prototyping-sdk/cdk-graph.StackNode.setTag"></a>

```typescript
public setTag(key: string, value: string): void
```

Set tag.

Will overwrite existing tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StackNode.setTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.StackNode.setTag.parameter.value"></a>

- *Type:* string

---

##### `addChild` <a name="addChild" id="@aws-prototyping-sdk/cdk-graph.StackNode.addChild"></a>

```typescript
public addChild(node: Node): void
```

Add *child* node.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StackNode.addChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `addLink` <a name="addLink" id="@aws-prototyping-sdk/cdk-graph.StackNode.addLink"></a>

```typescript
public addLink(edge: Edge): void
```

Add *link* to another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.StackNode.addLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `addReverseLink` <a name="addReverseLink" id="@aws-prototyping-sdk/cdk-graph.StackNode.addReverseLink"></a>

```typescript
public addReverseLink(edge: Edge): void
```

Add *link* from another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.StackNode.addReverseLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `doesDependOn` <a name="doesDependOn" id="@aws-prototyping-sdk/cdk-graph.StackNode.doesDependOn"></a>

```typescript
public doesDependOn(node: Node): boolean
```

Indicates if *this node* depends on *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StackNode.doesDependOn.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `doesReference` <a name="doesReference" id="@aws-prototyping-sdk/cdk-graph.StackNode.doesReference"></a>

```typescript
public doesReference(node: Node): boolean
```

Indicates if *this node* references *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StackNode.doesReference.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `find` <a name="find" id="@aws-prototyping-sdk/cdk-graph.StackNode.find"></a>

```typescript
public find(predicate: INodePredicate): Node
```

Recursively find the nearest sub-node matching predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.StackNode.find.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

---

##### `findAll` <a name="findAll" id="@aws-prototyping-sdk/cdk-graph.StackNode.findAll"></a>

```typescript
public findAll(options?: IFindNodeOptions): Node[]
```

Return this construct and all of its sub-nodes in the given order.

Optionally filter nodes based on predicate.

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.StackNode.findAll.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindNodeOptions">IFindNodeOptions</a>

---

##### `findAllLinks` <a name="findAllLinks" id="@aws-prototyping-sdk/cdk-graph.StackNode.findAllLinks"></a>

```typescript
public findAllLinks(options?: IFindEdgeOptions): Edge[]
```

Return all direct links of this node and that of all sub-nodes.

Optionally filter links based on predicate.

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.StackNode.findAllLinks.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindEdgeOptions">IFindEdgeOptions</a>

---

##### `findAncestor` <a name="findAncestor" id="@aws-prototyping-sdk/cdk-graph.StackNode.findAncestor"></a>

```typescript
public findAncestor(predicate: INodePredicate, max?: number): Node
```

Find nearest *ancestor* of *this node* matching given predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.StackNode.findAncestor.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

Predicate to match ancestor.

---

###### `max`<sup>Optional</sup> <a name="max" id="@aws-prototyping-sdk/cdk-graph.StackNode.findAncestor.parameter.max"></a>

- *Type:* number

---

##### `findChild` <a name="findChild" id="@aws-prototyping-sdk/cdk-graph.StackNode.findChild"></a>

```typescript
public findChild(id: string): Node
```

Find child with given *id*.

Similar to `find` but does not throw error if no child found.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.StackNode.findChild.parameter.id"></a>

- *Type:* string

---

##### `findLink` <a name="findLink" id="@aws-prototyping-sdk/cdk-graph.StackNode.findLink"></a>

```typescript
public findLink(predicate: IEdgePredicate, reverse?: boolean, follow?: boolean, direct?: boolean): Edge
```

Find link of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct link
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.StackNode.findLink.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.StackNode.findLink.parameter.reverse"></a>

- *Type:* boolean

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.StackNode.findLink.parameter.follow"></a>

- *Type:* boolean

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.StackNode.findLink.parameter.direct"></a>

- *Type:* boolean

Indicates that only *direct* links should be searched.

---

##### `findLinks` <a name="findLinks" id="@aws-prototyping-sdk/cdk-graph.StackNode.findLinks"></a>

```typescript
public findLinks(predicate: IEdgePredicate, reverse?: boolean, follow?: boolean, direct?: boolean): Edge[]
```

Find all links of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct links
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.StackNode.findLinks.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.StackNode.findLinks.parameter.reverse"></a>

- *Type:* boolean

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.StackNode.findLinks.parameter.follow"></a>

- *Type:* boolean

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.StackNode.findLinks.parameter.direct"></a>

- *Type:* boolean

Indicates that only *direct* links should be searched.

---

##### `getCfnProp` <a name="getCfnProp" id="@aws-prototyping-sdk/cdk-graph.StackNode.getCfnProp"></a>

```typescript
public getCfnProp(key: string): string | number | boolean | PlainObject | string | number | boolean | PlainObject[]
```

Get specific CloudFormation property.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StackNode.getCfnProp.parameter.key"></a>

- *Type:* string

---

##### `getChild` <a name="getChild" id="@aws-prototyping-sdk/cdk-graph.StackNode.getChild"></a>

```typescript
public getChild(id: string): Node
```

Get *child* node with given *id*.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.StackNode.getChild.parameter.id"></a>

- *Type:* string

---

##### `getLinkChains` <a name="getLinkChains" id="@aws-prototyping-sdk/cdk-graph.StackNode.getLinkChains"></a>

```typescript
public getLinkChains(reverse?: boolean): any[][]
```

Resolve all link chains.

> [{@link EdgeChain }]({@link EdgeChain })

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.StackNode.getLinkChains.parameter.reverse"></a>

- *Type:* boolean

---

##### `getNearestAncestor` <a name="getNearestAncestor" id="@aws-prototyping-sdk/cdk-graph.StackNode.getNearestAncestor"></a>

```typescript
public getNearestAncestor(node: Node): Node
```

Gets the nearest **common** *ancestor* shared between *this node* and another *node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StackNode.getNearestAncestor.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `isAncestor` <a name="isAncestor" id="@aws-prototyping-sdk/cdk-graph.StackNode.isAncestor"></a>

```typescript
public isAncestor(ancestor: Node): boolean
```

Indicates if a specific *node* is an *ancestor* of *this node*.

###### `ancestor`<sup>Required</sup> <a name="ancestor" id="@aws-prototyping-sdk/cdk-graph.StackNode.isAncestor.parameter.ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `isChild` <a name="isChild" id="@aws-prototyping-sdk/cdk-graph.StackNode.isChild"></a>

```typescript
public isChild(node: Node): boolean
```

Indicates if specific *node* is a *child* of *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StackNode.isChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateCollapse` <a name="mutateCollapse" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateCollapse"></a>

```typescript
public mutateCollapse(): void
```

Collapses all sub-nodes of *this node* into *this node*.

##### `mutateCollapseTo` <a name="mutateCollapseTo" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateCollapseTo"></a>

```typescript
public mutateCollapseTo(ancestor: Node): Node
```

Collapses *this node* into *an ancestor*.

###### `ancestor`<sup>Required</sup> <a name="ancestor" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateCollapseTo.parameter.ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateCollapseToParent` <a name="mutateCollapseToParent" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateCollapseToParent"></a>

```typescript
public mutateCollapseToParent(): Node
```

Collapses *this node* into *it's parent node*.

##### `mutateHoist` <a name="mutateHoist" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateHoist"></a>

```typescript
public mutateHoist(newParent: Node): void
```

Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor.

###### `newParent`<sup>Required</sup> <a name="newParent" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateHoist.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateMove` <a name="mutateMove" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateMove"></a>

```typescript
public mutateMove(newParent: Node): void
```

Move this node into a new parent node.

###### `newParent`<sup>Required</sup> <a name="newParent" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateMove.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

The parent to move this node to.

---

##### `mutateRemoveChild` <a name="mutateRemoveChild" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveChild"></a>

```typescript
public mutateRemoveChild(node: Node): boolean
```

Remove a *child* node from *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateRemoveLink` <a name="mutateRemoveLink" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveLink"></a>

```typescript
public mutateRemoveLink(link: Edge): boolean
```

Remove a *link* from *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutateRemoveReverseLink` <a name="mutateRemoveReverseLink" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveReverseLink"></a>

```typescript
public mutateRemoveReverseLink(link: Edge): boolean
```

Remove a *link* to *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveReverseLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutateUncluster` <a name="mutateUncluster" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateUncluster"></a>

```typescript
public mutateUncluster(): void
```

Hoist all children to parent and collapse node to parent.

##### `toString` <a name="toString" id="@aws-prototyping-sdk/cdk-graph.StackNode.toString"></a>

```typescript
public toString(): string
```

Get string representation of this node.

##### `addOutput` <a name="addOutput" id="@aws-prototyping-sdk/cdk-graph.StackNode.addOutput"></a>

```typescript
public addOutput(node: OutputNode): void
```

Associate {@link OutputNode} with this stack.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StackNode.addOutput.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.OutputNode">OutputNode</a>

---

##### `addParameter` <a name="addParameter" id="@aws-prototyping-sdk/cdk-graph.StackNode.addParameter"></a>

```typescript
public addParameter(node: ParameterNode): void
```

Associate {@link ParameterNode} with this stack.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StackNode.addParameter.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode">ParameterNode</a>

---

##### `findOutput` <a name="findOutput" id="@aws-prototyping-sdk/cdk-graph.StackNode.findOutput"></a>

```typescript
public findOutput(logicalId: string): OutputNode
```

Find {@link OutputNode} with *logicalId* defined by this stack.

###### `logicalId`<sup>Required</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.StackNode.findOutput.parameter.logicalId"></a>

- *Type:* string

---

##### `findParameter` <a name="findParameter" id="@aws-prototyping-sdk/cdk-graph.StackNode.findParameter"></a>

```typescript
public findParameter(parameterId: string): ParameterNode
```

Find {@link ParameterNode} with *parameterId* defined by this stack.

###### `parameterId`<sup>Required</sup> <a name="parameterId" id="@aws-prototyping-sdk/cdk-graph.StackNode.findParameter.parameter.parameterId"></a>

- *Type:* string

---

##### `mutateRemoveOutput` <a name="mutateRemoveOutput" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveOutput"></a>

```typescript
public mutateRemoveOutput(node: OutputNode): boolean
```

Disassociate {@link OutputNode} from this stack.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveOutput.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.OutputNode">OutputNode</a>

---

##### `mutateRemoveParameter` <a name="mutateRemoveParameter" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveParameter"></a>

```typescript
public mutateRemoveParameter(node: ParameterNode): boolean
```

Disassociate {@link ParameterNode} from this stack.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StackNode.mutateRemoveParameter.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode">ParameterNode</a>

---

#### Static Functions <a name="Static Functions" id="Static Functions"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.isStackNode">isStackNode</a></code> | Indicates if node is a {@link StackNode}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.of">of</a></code> | Gets the {@link StackNode} containing a given resource. |

---

##### `isStackNode` <a name="isStackNode" id="@aws-prototyping-sdk/cdk-graph.StackNode.isStackNode"></a>

```typescript
import { StackNode } from '@aws-prototyping-sdk/cdk-graph'

StackNode.isStackNode(node: Node)
```

Indicates if node is a {@link StackNode}.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StackNode.isStackNode.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `of` <a name="of" id="@aws-prototyping-sdk/cdk-graph.StackNode.of"></a>

```typescript
import { StackNode } from '@aws-prototyping-sdk/cdk-graph'

StackNode.of(node: Node)
```

Gets the {@link StackNode} containing a given resource.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StackNode.of.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.attributes">attributes</a></code> | <code>{[ key: string ]: string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> \| string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}</code> | Get *readonly* record of all attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.flags">flags</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]</code> | Get *readonly* list of all flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.isDestroyed">isDestroyed</a></code> | <code>boolean</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.isMutated">isMutated</a></code> | <code>boolean</code> | Indicates if the entity has had destructive mutations applied. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.metadata">metadata</a></code> | <code>constructs.MetadataEntry[]</code> | Get *readonly* list of all metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Reference to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.tags">tags</a></code> | <code>{[ key: string ]: string}</code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.uuid">uuid</a></code> | <code>string</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.allowDestructiveMutations">allowDestructiveMutations</a></code> | <code>boolean</code> | Indicates if this node allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.children">children</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get all direct child nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.dependedOnBy">dependedOnBy</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *depend on this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.dependencies">dependencies</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *this node depends on*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.dependencyLinks">dependencyLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]</code> | Gets list of {@link Dependency} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.depth">depth</a></code> | <code>number</code> | Indicates the depth of the node relative to root (0). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.id">id</a></code> | <code>string</code> | Node id, which is only unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.isAsset">isAsset</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.ASSET}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.isCfnFqn">isCfnFqn</a></code> | <code>boolean</code> | Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.isCluster">isCluster</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.CLUSTER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.isCustomResource">isCustomResource</a></code> | <code>boolean</code> | Indicates if node is a *Custom Resource*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.isExtraneous">isExtraneous</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.isGraphContainer">isGraphContainer</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.isLeaf">isLeaf</a></code> | <code>boolean</code> | Indicates if this node is a *leaf* node, which means it does not have children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.isTopLevel">isTopLevel</a></code> | <code>boolean</code> | Indicates if node is direct child of the graph root node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.links">links</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]</code> | Gets all links (edges) in which this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.nodeType">nodeType</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a></code> | Type of node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.path">path</a></code> | <code>string</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.referencedBy">referencedBy</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *reference this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.referenceLinks">referenceLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]</code> | Gets list of {@link Reference} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.references">references</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *this node references*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.reverseDependencyLinks">reverseDependencyLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]</code> | Gets list of {@link Dependency} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.reverseLinks">reverseLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]</code> | Gets all links (edges) in which this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.reverseReferenceLinks">reverseReferenceLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]</code> | Gets list of {@link Reference} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.scopes">scopes</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Gets descending ordered list of ancestors from the root. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.siblings">siblings</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of *siblings* of this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.cfnProps">cfnProps</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a></code> | Gets CloudFormation properties for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.cfnType">cfnType</a></code> | <code>string</code> | Get the CloudFormation resource type for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.constructInfo">constructInfo</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.constructInfoFqn">constructInfoFqn</a></code> | <code>string</code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.logicalId">logicalId</a></code> | <code>string</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.parent">parent</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.rootStack">rootStack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Get **root** stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.stack">stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Stack the node is contained in. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.exports">exports</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode">OutputNode</a>[]</code> | Get all **exported** {@link OutputNode}s defined by this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.outputs">outputs</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.OutputNode">OutputNode</a>[]</code> | Get all {@link OutputNode}s defined by this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.parameters">parameters</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode">ParameterNode</a>[]</code> | Get all {@link ParameterNode}s defined by this stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode.property.stage">stage</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode">StageNode</a></code> | Get {@link StageNode} containing this stack. |

---

##### `attributes`<sup>Required</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.attributes"></a>

```typescript
public readonly attributes: {[ key: string ]: string | number | boolean | PlainObject | string | number | boolean | PlainObject[]};
```

- *Type:* {[ key: string ]: string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> | string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}

Get *readonly* record of all attributes.

---

##### `flags`<sup>Required</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.flags"></a>

```typescript
public readonly flags: FlagEnum[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]

Get *readonly* list of all flags.

---

##### `isDestroyed`<sup>Required</sup> <a name="isDestroyed" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.isDestroyed"></a>

```typescript
public readonly isDestroyed: boolean;
```

- *Type:* boolean

Indicates if the entity has been destroyed (eg: removed from store).

---

##### `isMutated`<sup>Required</sup> <a name="isMutated" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.isMutated"></a>

```typescript
public readonly isMutated: boolean;
```

- *Type:* boolean

Indicates if the entity has had destructive mutations applied.

---

##### `metadata`<sup>Required</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.metadata"></a>

```typescript
public readonly metadata: MetadataEntry[];
```

- *Type:* constructs.MetadataEntry[]

Get *readonly* list of all metadata entries.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.store"></a>

```typescript
public readonly store: Store;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Reference to the store.

---

##### `tags`<sup>Required</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.tags"></a>

```typescript
public readonly tags: {[ key: string ]: string};
```

- *Type:* {[ key: string ]: string}

Get *readonly* record of all tags.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.uuid"></a>

```typescript
public readonly uuid: string;
```

- *Type:* string

Universally unique identifier.

---

##### `allowDestructiveMutations`<sup>Required</sup> <a name="allowDestructiveMutations" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.allowDestructiveMutations"></a>

```typescript
public readonly allowDestructiveMutations: boolean;
```

- *Type:* boolean

Indicates if this node allows destructive mutations.

> [{@link Store.allowDestructiveMutations }]({@link Store.allowDestructiveMutations })

---

##### `children`<sup>Required</sup> <a name="children" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.children"></a>

```typescript
public readonly children: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get all direct child nodes.

---

##### `dependedOnBy`<sup>Required</sup> <a name="dependedOnBy" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.dependedOnBy"></a>

```typescript
public readonly dependedOnBy: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *depend on this node*.

> [{@link Node.reverseDependencyLinks }]({@link Node.reverseDependencyLinks })

---

##### `dependencies`<sup>Required</sup> <a name="dependencies" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.dependencies"></a>

```typescript
public readonly dependencies: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *this node depends on*.

> [{@link Node.dependencyLinks }]({@link Node.dependencyLinks })

---

##### `dependencyLinks`<sup>Required</sup> <a name="dependencyLinks" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.dependencyLinks"></a>

```typescript
public readonly dependencyLinks: Dependency[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]

Gets list of {@link Dependency} links (edges) where this node is the **source**.

---

##### `depth`<sup>Required</sup> <a name="depth" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.depth"></a>

```typescript
public readonly depth: number;
```

- *Type:* number

Indicates the depth of the node relative to root (0).

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.id"></a>

```typescript
public readonly id: string;
```

- *Type:* string

Node id, which is only unique within parent scope.

---

##### `isAsset`<sup>Required</sup> <a name="isAsset" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.isAsset"></a>

```typescript
public readonly isAsset: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.ASSET}.

---

##### `isCfnFqn`<sup>Required</sup> <a name="isCfnFqn" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.isCfnFqn"></a>

```typescript
public readonly isCfnFqn: boolean;
```

- *Type:* boolean

Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct.

> [{@link FlagEnum.CFN_FQN }]({@link FlagEnum.CFN_FQN })

---

##### `isCluster`<sup>Required</sup> <a name="isCluster" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.isCluster"></a>

```typescript
public readonly isCluster: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.CLUSTER}.

---

##### `isCustomResource`<sup>Required</sup> <a name="isCustomResource" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.isCustomResource"></a>

```typescript
public readonly isCustomResource: boolean;
```

- *Type:* boolean

Indicates if node is a *Custom Resource*.

---

##### `isExtraneous`<sup>Required</sup> <a name="isExtraneous" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.isExtraneous"></a>

```typescript
public readonly isExtraneous: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children.

---

##### `isGraphContainer`<sup>Required</sup> <a name="isGraphContainer" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.isGraphContainer"></a>

```typescript
public readonly isGraphContainer: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}.

---

##### `isLeaf`<sup>Required</sup> <a name="isLeaf" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.isLeaf"></a>

```typescript
public readonly isLeaf: boolean;
```

- *Type:* boolean

Indicates if this node is a *leaf* node, which means it does not have children.

---

##### `isTopLevel`<sup>Required</sup> <a name="isTopLevel" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.isTopLevel"></a>

```typescript
public readonly isTopLevel: boolean;
```

- *Type:* boolean

Indicates if node is direct child of the graph root node.

---

##### `links`<sup>Required</sup> <a name="links" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.links"></a>

```typescript
public readonly links: Edge[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]

Gets all links (edges) in which this node is the **source**.

---

##### `nodeType`<sup>Required</sup> <a name="nodeType" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.nodeType"></a>

```typescript
public readonly nodeType: NodeTypeEnum;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a>

Type of node.

---

##### `path`<sup>Required</sup> <a name="path" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.path"></a>

```typescript
public readonly path: string;
```

- *Type:* string

Path of the node.

---

##### `referencedBy`<sup>Required</sup> <a name="referencedBy" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.referencedBy"></a>

```typescript
public readonly referencedBy: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *reference this node*.

> [{@link Node.reverseReferenceLinks }]({@link Node.reverseReferenceLinks })

---

##### `referenceLinks`<sup>Required</sup> <a name="referenceLinks" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.referenceLinks"></a>

```typescript
public readonly referenceLinks: Reference[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]

Gets list of {@link Reference} links (edges) where this node is the **source**.

---

##### `references`<sup>Required</sup> <a name="references" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.references"></a>

```typescript
public readonly references: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *this node references*.

> [{@link Node.referenceLinks }]({@link Node.referenceLinks })

---

##### `reverseDependencyLinks`<sup>Required</sup> <a name="reverseDependencyLinks" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.reverseDependencyLinks"></a>

```typescript
public readonly reverseDependencyLinks: Dependency[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]

Gets list of {@link Dependency} links (edges) where this node is the **target**.

---

##### `reverseLinks`<sup>Required</sup> <a name="reverseLinks" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.reverseLinks"></a>

```typescript
public readonly reverseLinks: Edge[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]

Gets all links (edges) in which this node is the **target**.

---

##### `reverseReferenceLinks`<sup>Required</sup> <a name="reverseReferenceLinks" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.reverseReferenceLinks"></a>

```typescript
public readonly reverseReferenceLinks: Reference[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]

Gets list of {@link Reference} links (edges) where this node is the **target**.

---

##### `scopes`<sup>Required</sup> <a name="scopes" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.scopes"></a>

```typescript
public readonly scopes: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Gets descending ordered list of ancestors from the root.

---

##### `siblings`<sup>Required</sup> <a name="siblings" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.siblings"></a>

```typescript
public readonly siblings: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of *siblings* of this node.

---

##### `cfnProps`<sup>Optional</sup> <a name="cfnProps" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.cfnProps"></a>

```typescript
public readonly cfnProps: PlainObject;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>

Gets CloudFormation properties for this node.

---

##### `cfnType`<sup>Optional</sup> <a name="cfnType" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.cfnType"></a>

```typescript
public readonly cfnType: string;
```

- *Type:* string

Get the CloudFormation resource type for this node.

---

##### `constructInfo`<sup>Optional</sup> <a name="constructInfo" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.constructInfo"></a>

```typescript
public readonly constructInfo: ConstructInfo;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `constructInfoFqn`<sup>Optional</sup> <a name="constructInfoFqn" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.constructInfoFqn"></a>

```typescript
public readonly constructInfoFqn: string;
```

- *Type:* string

Synthesized construct information defining jii resolution data.

---

##### `logicalId`<sup>Optional</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.logicalId"></a>

```typescript
public readonly logicalId: string;
```

- *Type:* string

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.parent"></a>

```typescript
public readonly parent: Node;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

Only the root node should not have parent.

---

##### `rootStack`<sup>Optional</sup> <a name="rootStack" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.rootStack"></a>

```typescript
public readonly rootStack: StackNode;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Get **root** stack.

---

##### `stack`<sup>Optional</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.stack"></a>

```typescript
public readonly stack: StackNode;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained in.

---

##### `exports`<sup>Required</sup> <a name="exports" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.exports"></a>

```typescript
public readonly exports: OutputNode[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.OutputNode">OutputNode</a>[]

Get all **exported** {@link OutputNode}s defined by this stack.

---

##### `outputs`<sup>Required</sup> <a name="outputs" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.outputs"></a>

```typescript
public readonly outputs: OutputNode[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.OutputNode">OutputNode</a>[]

Get all {@link OutputNode}s defined by this stack.

---

##### `parameters`<sup>Required</sup> <a name="parameters" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.parameters"></a>

```typescript
public readonly parameters: ParameterNode[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode">ParameterNode</a>[]

Get all {@link ParameterNode}s defined by this stack.

---

##### `stage`<sup>Optional</sup> <a name="stage" id="@aws-prototyping-sdk/cdk-graph.StackNode.property.stage"></a>

```typescript
public readonly stage: StageNode;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StageNode">StageNode</a>

Get {@link StageNode} containing this stack.

---


### StageNode <a name="StageNode" id="@aws-prototyping-sdk/cdk-graph.StageNode"></a>

StageNode defines a cdk Stage.

#### Initializers <a name="Initializers" id="@aws-prototyping-sdk/cdk-graph.StageNode.Initializer"></a>

```typescript
import { StageNode } from '@aws-prototyping-sdk/cdk-graph'

new StageNode(props: ITypedNodeProps)
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.Initializer.parameter.props">props</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps">ITypedNodeProps</a></code> | *No description.* |

---

##### `props`<sup>Required</sup> <a name="props" id="@aws-prototyping-sdk/cdk-graph.StageNode.Initializer.parameter.props"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps">ITypedNodeProps</a>

---

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.addAttribute">addAttribute</a></code> | Add attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.addFlag">addFlag</a></code> | Add flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.addMetadata">addMetadata</a></code> | Add metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.addTag">addTag</a></code> | Add tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.applyData">applyData</a></code> | Applies data (attributes, metadata, tags, flag) to entity. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.findMetadata">findMetadata</a></code> | Retrieves all metadata entries of a given type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.getAttribute">getAttribute</a></code> | Get attribute by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.getTag">getTag</a></code> | Get tag by key. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.hasAttribute">hasAttribute</a></code> | Indicates if entity has a given attribute defined, and optionally with a specific value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.hasFlag">hasFlag</a></code> | Indicates if entity has a given flag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.hasMetadata">hasMetadata</a></code> | Indicates if entity has matching metadata entry. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.hasTag">hasTag</a></code> | Indicates if entity has tag, optionally verifying tag value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.mutateDestroy">mutateDestroy</a></code> | Destroys this node by removing all references and removing this node from the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.setAttribute">setAttribute</a></code> | Set attribute. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.setTag">setTag</a></code> | Set tag. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.addChild">addChild</a></code> | Add *child* node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.addLink">addLink</a></code> | Add *link* to another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.addReverseLink">addReverseLink</a></code> | Add *link* from another node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.doesDependOn">doesDependOn</a></code> | Indicates if *this node* depends on *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.doesReference">doesReference</a></code> | Indicates if *this node* references *another node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.find">find</a></code> | Recursively find the nearest sub-node matching predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.findAll">findAll</a></code> | Return this construct and all of its sub-nodes in the given order. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.findAllLinks">findAllLinks</a></code> | Return all direct links of this node and that of all sub-nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.findAncestor">findAncestor</a></code> | Find nearest *ancestor* of *this node* matching given predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.findChild">findChild</a></code> | Find child with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.findLink">findLink</a></code> | Find link of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.findLinks">findLinks</a></code> | Find all links of this node based on predicate. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.getCfnProp">getCfnProp</a></code> | Get specific CloudFormation property. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.getChild">getChild</a></code> | Get *child* node with given *id*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.getLinkChains">getLinkChains</a></code> | Resolve all link chains. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.getNearestAncestor">getNearestAncestor</a></code> | Gets the nearest **common** *ancestor* shared between *this node* and another *node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.isAncestor">isAncestor</a></code> | Indicates if a specific *node* is an *ancestor* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.isChild">isChild</a></code> | Indicates if specific *node* is a *child* of *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.mutateCollapse">mutateCollapse</a></code> | Collapses all sub-nodes of *this node* into *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.mutateCollapseTo">mutateCollapseTo</a></code> | Collapses *this node* into *an ancestor*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.mutateCollapseToParent">mutateCollapseToParent</a></code> | Collapses *this node* into *it's parent node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.mutateHoist">mutateHoist</a></code> | Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.mutateMove">mutateMove</a></code> | Move this node into a new parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.mutateRemoveChild">mutateRemoveChild</a></code> | Remove a *child* node from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.mutateRemoveLink">mutateRemoveLink</a></code> | Remove a *link* from *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.mutateRemoveReverseLink">mutateRemoveReverseLink</a></code> | Remove a *link* to *this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.mutateUncluster">mutateUncluster</a></code> | Hoist all children to parent and collapse node to parent. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.toString">toString</a></code> | Get string representation of this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.addStack">addStack</a></code> | Associate a {@link StackNode} with this stage. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.mutateRemoveStack">mutateRemoveStack</a></code> | Disassociate {@link StackNode} from this stage. |

---

##### `addAttribute` <a name="addAttribute" id="@aws-prototyping-sdk/cdk-graph.StageNode.addAttribute"></a>

```typescript
public addAttribute(key: string, value: any): void
```

Add attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StageNode.addAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.StageNode.addAttribute.parameter.value"></a>

- *Type:* any

---

##### `addFlag` <a name="addFlag" id="@aws-prototyping-sdk/cdk-graph.StageNode.addFlag"></a>

```typescript
public addFlag(flag: FlagEnum): void
```

Add flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.StageNode.addFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `addMetadata` <a name="addMetadata" id="@aws-prototyping-sdk/cdk-graph.StageNode.addMetadata"></a>

```typescript
public addMetadata(metadataType: string, data: any): void
```

Add metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.StageNode.addMetadata.parameter.metadataType"></a>

- *Type:* string

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.StageNode.addMetadata.parameter.data"></a>

- *Type:* any

---

##### `addTag` <a name="addTag" id="@aws-prototyping-sdk/cdk-graph.StageNode.addTag"></a>

```typescript
public addTag(key: string, value: string): void
```

Add tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StageNode.addTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.StageNode.addTag.parameter.value"></a>

- *Type:* string

---

##### `applyData` <a name="applyData" id="@aws-prototyping-sdk/cdk-graph.StageNode.applyData"></a>

```typescript
public applyData(data: IBaseEntityDataProps, overwrite?: boolean, applyFlags?: boolean): void
```

Applies data (attributes, metadata, tags, flag) to entity.

Generally used only for mutations such as collapse and consume to retain data.

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.StageNode.applyData.parameter.data"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps">IBaseEntityDataProps</a>

The data to apply.

---

###### `overwrite`<sup>Optional</sup> <a name="overwrite" id="@aws-prototyping-sdk/cdk-graph.StageNode.applyData.parameter.overwrite"></a>

- *Type:* boolean

---

###### `applyFlags`<sup>Optional</sup> <a name="applyFlags" id="@aws-prototyping-sdk/cdk-graph.StageNode.applyData.parameter.applyFlags"></a>

- *Type:* boolean

Indicates if data is overwritten - Indicates if flags should be applied.

---

##### `findMetadata` <a name="findMetadata" id="@aws-prototyping-sdk/cdk-graph.StageNode.findMetadata"></a>

```typescript
public findMetadata(metadataType: string): MetadataEntry[]
```

Retrieves all metadata entries of a given type.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.StageNode.findMetadata.parameter.metadataType"></a>

- *Type:* string

---

##### `getAttribute` <a name="getAttribute" id="@aws-prototyping-sdk/cdk-graph.StageNode.getAttribute"></a>

```typescript
public getAttribute(key: string): any
```

Get attribute by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StageNode.getAttribute.parameter.key"></a>

- *Type:* string

---

##### `getTag` <a name="getTag" id="@aws-prototyping-sdk/cdk-graph.StageNode.getTag"></a>

```typescript
public getTag(key: string): string
```

Get tag by key.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StageNode.getTag.parameter.key"></a>

- *Type:* string

---

##### `hasAttribute` <a name="hasAttribute" id="@aws-prototyping-sdk/cdk-graph.StageNode.hasAttribute"></a>

```typescript
public hasAttribute(key: string, value?: any): boolean
```

Indicates if entity has a given attribute defined, and optionally with a specific value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StageNode.hasAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.StageNode.hasAttribute.parameter.value"></a>

- *Type:* any

---

##### `hasFlag` <a name="hasFlag" id="@aws-prototyping-sdk/cdk-graph.StageNode.hasFlag"></a>

```typescript
public hasFlag(flag: FlagEnum): boolean
```

Indicates if entity has a given flag.

###### `flag`<sup>Required</sup> <a name="flag" id="@aws-prototyping-sdk/cdk-graph.StageNode.hasFlag.parameter.flag"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>

---

##### `hasMetadata` <a name="hasMetadata" id="@aws-prototyping-sdk/cdk-graph.StageNode.hasMetadata"></a>

```typescript
public hasMetadata(metadataType: string, data: any): boolean
```

Indicates if entity has matching metadata entry.

###### `metadataType`<sup>Required</sup> <a name="metadataType" id="@aws-prototyping-sdk/cdk-graph.StageNode.hasMetadata.parameter.metadataType"></a>

- *Type:* string

---

###### `data`<sup>Required</sup> <a name="data" id="@aws-prototyping-sdk/cdk-graph.StageNode.hasMetadata.parameter.data"></a>

- *Type:* any

---

##### `hasTag` <a name="hasTag" id="@aws-prototyping-sdk/cdk-graph.StageNode.hasTag"></a>

```typescript
public hasTag(key: string, value?: string): boolean
```

Indicates if entity has tag, optionally verifying tag value.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StageNode.hasTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Optional</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.StageNode.hasTag.parameter.value"></a>

- *Type:* string

---

##### `mutateDestroy` <a name="mutateDestroy" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateDestroy"></a>

```typescript
public mutateDestroy(strict?: boolean): void
```

Destroys this node by removing all references and removing this node from the store.

###### `strict`<sup>Optional</sup> <a name="strict" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateDestroy.parameter.strict"></a>

- *Type:* boolean

Indicates that this node must not have references.

---

##### `setAttribute` <a name="setAttribute" id="@aws-prototyping-sdk/cdk-graph.StageNode.setAttribute"></a>

```typescript
public setAttribute(key: string, value: any): void
```

Set attribute.

This will overwrite existing attribute.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StageNode.setAttribute.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.StageNode.setAttribute.parameter.value"></a>

- *Type:* any

---

##### `setTag` <a name="setTag" id="@aws-prototyping-sdk/cdk-graph.StageNode.setTag"></a>

```typescript
public setTag(key: string, value: string): void
```

Set tag.

Will overwrite existing tag.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StageNode.setTag.parameter.key"></a>

- *Type:* string

---

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.StageNode.setTag.parameter.value"></a>

- *Type:* string

---

##### `addChild` <a name="addChild" id="@aws-prototyping-sdk/cdk-graph.StageNode.addChild"></a>

```typescript
public addChild(node: Node): void
```

Add *child* node.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StageNode.addChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `addLink` <a name="addLink" id="@aws-prototyping-sdk/cdk-graph.StageNode.addLink"></a>

```typescript
public addLink(edge: Edge): void
```

Add *link* to another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.StageNode.addLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `addReverseLink` <a name="addReverseLink" id="@aws-prototyping-sdk/cdk-graph.StageNode.addReverseLink"></a>

```typescript
public addReverseLink(edge: Edge): void
```

Add *link* from another node.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.StageNode.addReverseLink.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `doesDependOn` <a name="doesDependOn" id="@aws-prototyping-sdk/cdk-graph.StageNode.doesDependOn"></a>

```typescript
public doesDependOn(node: Node): boolean
```

Indicates if *this node* depends on *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StageNode.doesDependOn.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `doesReference` <a name="doesReference" id="@aws-prototyping-sdk/cdk-graph.StageNode.doesReference"></a>

```typescript
public doesReference(node: Node): boolean
```

Indicates if *this node* references *another node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StageNode.doesReference.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `find` <a name="find" id="@aws-prototyping-sdk/cdk-graph.StageNode.find"></a>

```typescript
public find(predicate: INodePredicate): Node
```

Recursively find the nearest sub-node matching predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.StageNode.find.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

---

##### `findAll` <a name="findAll" id="@aws-prototyping-sdk/cdk-graph.StageNode.findAll"></a>

```typescript
public findAll(options?: IFindNodeOptions): Node[]
```

Return this construct and all of its sub-nodes in the given order.

Optionally filter nodes based on predicate.

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.StageNode.findAll.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindNodeOptions">IFindNodeOptions</a>

---

##### `findAllLinks` <a name="findAllLinks" id="@aws-prototyping-sdk/cdk-graph.StageNode.findAllLinks"></a>

```typescript
public findAllLinks(options?: IFindEdgeOptions): Edge[]
```

Return all direct links of this node and that of all sub-nodes.

Optionally filter links based on predicate.

###### `options`<sup>Optional</sup> <a name="options" id="@aws-prototyping-sdk/cdk-graph.StageNode.findAllLinks.parameter.options"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindEdgeOptions">IFindEdgeOptions</a>

---

##### `findAncestor` <a name="findAncestor" id="@aws-prototyping-sdk/cdk-graph.StageNode.findAncestor"></a>

```typescript
public findAncestor(predicate: INodePredicate, max?: number): Node
```

Find nearest *ancestor* of *this node* matching given predicate.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.StageNode.findAncestor.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

Predicate to match ancestor.

---

###### `max`<sup>Optional</sup> <a name="max" id="@aws-prototyping-sdk/cdk-graph.StageNode.findAncestor.parameter.max"></a>

- *Type:* number

---

##### `findChild` <a name="findChild" id="@aws-prototyping-sdk/cdk-graph.StageNode.findChild"></a>

```typescript
public findChild(id: string): Node
```

Find child with given *id*.

Similar to `find` but does not throw error if no child found.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.StageNode.findChild.parameter.id"></a>

- *Type:* string

---

##### `findLink` <a name="findLink" id="@aws-prototyping-sdk/cdk-graph.StageNode.findLink"></a>

```typescript
public findLink(predicate: IEdgePredicate, reverse?: boolean, follow?: boolean, direct?: boolean): Edge
```

Find link of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct link
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.StageNode.findLink.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.StageNode.findLink.parameter.reverse"></a>

- *Type:* boolean

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.StageNode.findLink.parameter.follow"></a>

- *Type:* boolean

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.StageNode.findLink.parameter.direct"></a>

- *Type:* boolean

Indicates that only *direct* links should be searched.

---

##### `findLinks` <a name="findLinks" id="@aws-prototyping-sdk/cdk-graph.StageNode.findLinks"></a>

```typescript
public findLinks(predicate: IEdgePredicate, reverse?: boolean, follow?: boolean, direct?: boolean): Edge[]
```

Find all links of this node based on predicate.

By default this will follow link
chains to evaluate the predicate against and return the matching direct links
of this node.

###### `predicate`<sup>Required</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.StageNode.findLinks.parameter.predicate"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Edge predicate function to match edge.

---

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.StageNode.findLinks.parameter.reverse"></a>

- *Type:* boolean

Indicates if links are search in reverse order.

---

###### `follow`<sup>Optional</sup> <a name="follow" id="@aws-prototyping-sdk/cdk-graph.StageNode.findLinks.parameter.follow"></a>

- *Type:* boolean

Indicates if link chain is followed.

---

###### `direct`<sup>Optional</sup> <a name="direct" id="@aws-prototyping-sdk/cdk-graph.StageNode.findLinks.parameter.direct"></a>

- *Type:* boolean

Indicates that only *direct* links should be searched.

---

##### `getCfnProp` <a name="getCfnProp" id="@aws-prototyping-sdk/cdk-graph.StageNode.getCfnProp"></a>

```typescript
public getCfnProp(key: string): string | number | boolean | PlainObject | string | number | boolean | PlainObject[]
```

Get specific CloudFormation property.

###### `key`<sup>Required</sup> <a name="key" id="@aws-prototyping-sdk/cdk-graph.StageNode.getCfnProp.parameter.key"></a>

- *Type:* string

---

##### `getChild` <a name="getChild" id="@aws-prototyping-sdk/cdk-graph.StageNode.getChild"></a>

```typescript
public getChild(id: string): Node
```

Get *child* node with given *id*.

###### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.StageNode.getChild.parameter.id"></a>

- *Type:* string

---

##### `getLinkChains` <a name="getLinkChains" id="@aws-prototyping-sdk/cdk-graph.StageNode.getLinkChains"></a>

```typescript
public getLinkChains(reverse?: boolean): any[][]
```

Resolve all link chains.

> [{@link EdgeChain }]({@link EdgeChain })

###### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.StageNode.getLinkChains.parameter.reverse"></a>

- *Type:* boolean

---

##### `getNearestAncestor` <a name="getNearestAncestor" id="@aws-prototyping-sdk/cdk-graph.StageNode.getNearestAncestor"></a>

```typescript
public getNearestAncestor(node: Node): Node
```

Gets the nearest **common** *ancestor* shared between *this node* and another *node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StageNode.getNearestAncestor.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `isAncestor` <a name="isAncestor" id="@aws-prototyping-sdk/cdk-graph.StageNode.isAncestor"></a>

```typescript
public isAncestor(ancestor: Node): boolean
```

Indicates if a specific *node* is an *ancestor* of *this node*.

###### `ancestor`<sup>Required</sup> <a name="ancestor" id="@aws-prototyping-sdk/cdk-graph.StageNode.isAncestor.parameter.ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `isChild` <a name="isChild" id="@aws-prototyping-sdk/cdk-graph.StageNode.isChild"></a>

```typescript
public isChild(node: Node): boolean
```

Indicates if specific *node* is a *child* of *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StageNode.isChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateCollapse` <a name="mutateCollapse" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateCollapse"></a>

```typescript
public mutateCollapse(): void
```

Collapses all sub-nodes of *this node* into *this node*.

##### `mutateCollapseTo` <a name="mutateCollapseTo" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateCollapseTo"></a>

```typescript
public mutateCollapseTo(ancestor: Node): Node
```

Collapses *this node* into *an ancestor*.

###### `ancestor`<sup>Required</sup> <a name="ancestor" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateCollapseTo.parameter.ancestor"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateCollapseToParent` <a name="mutateCollapseToParent" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateCollapseToParent"></a>

```typescript
public mutateCollapseToParent(): Node
```

Collapses *this node* into *it's parent node*.

##### `mutateHoist` <a name="mutateHoist" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateHoist"></a>

```typescript
public mutateHoist(newParent: Node): void
```

Hoist *this node* to an *ancestor* by removing it from its current parent node and in turn moving it to the ancestor.

###### `newParent`<sup>Required</sup> <a name="newParent" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateHoist.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateMove` <a name="mutateMove" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateMove"></a>

```typescript
public mutateMove(newParent: Node): void
```

Move this node into a new parent node.

###### `newParent`<sup>Required</sup> <a name="newParent" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateMove.parameter.newParent"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

The parent to move this node to.

---

##### `mutateRemoveChild` <a name="mutateRemoveChild" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateRemoveChild"></a>

```typescript
public mutateRemoveChild(node: Node): boolean
```

Remove a *child* node from *this node*.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateRemoveChild.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `mutateRemoveLink` <a name="mutateRemoveLink" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateRemoveLink"></a>

```typescript
public mutateRemoveLink(link: Edge): boolean
```

Remove a *link* from *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateRemoveLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutateRemoveReverseLink` <a name="mutateRemoveReverseLink" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateRemoveReverseLink"></a>

```typescript
public mutateRemoveReverseLink(link: Edge): boolean
```

Remove a *link* to *this node*.

###### `link`<sup>Required</sup> <a name="link" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateRemoveReverseLink.parameter.link"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutateUncluster` <a name="mutateUncluster" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateUncluster"></a>

```typescript
public mutateUncluster(): void
```

Hoist all children to parent and collapse node to parent.

##### `toString` <a name="toString" id="@aws-prototyping-sdk/cdk-graph.StageNode.toString"></a>

```typescript
public toString(): string
```

Get string representation of this node.

##### `addStack` <a name="addStack" id="@aws-prototyping-sdk/cdk-graph.StageNode.addStack"></a>

```typescript
public addStack(stack: StackNode): void
```

Associate a {@link StackNode} with this stage.

###### `stack`<sup>Required</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.StageNode.addStack.parameter.stack"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

---

##### `mutateRemoveStack` <a name="mutateRemoveStack" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateRemoveStack"></a>

```typescript
public mutateRemoveStack(stack: StackNode): boolean
```

Disassociate {@link StackNode} from this stage.

###### `stack`<sup>Required</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.StageNode.mutateRemoveStack.parameter.stack"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

---

#### Static Functions <a name="Static Functions" id="Static Functions"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.isStageNode">isStageNode</a></code> | Indicates if node is a {@link StageNode}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.of">of</a></code> | Gets the {@link StageNode} containing a given resource. |

---

##### `isStageNode` <a name="isStageNode" id="@aws-prototyping-sdk/cdk-graph.StageNode.isStageNode"></a>

```typescript
import { StageNode } from '@aws-prototyping-sdk/cdk-graph'

StageNode.isStageNode(node: Node)
```

Indicates if node is a {@link StageNode}.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StageNode.isStageNode.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `of` <a name="of" id="@aws-prototyping-sdk/cdk-graph.StageNode.of"></a>

```typescript
import { StageNode } from '@aws-prototyping-sdk/cdk-graph'

StageNode.of(node: Node)
```

Gets the {@link StageNode} containing a given resource.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.StageNode.of.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.attributes">attributes</a></code> | <code>{[ key: string ]: string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> \| string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}</code> | Get *readonly* record of all attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.flags">flags</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]</code> | Get *readonly* list of all flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.isDestroyed">isDestroyed</a></code> | <code>boolean</code> | Indicates if the entity has been destroyed (eg: removed from store). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.isMutated">isMutated</a></code> | <code>boolean</code> | Indicates if the entity has had destructive mutations applied. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.metadata">metadata</a></code> | <code>constructs.MetadataEntry[]</code> | Get *readonly* list of all metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Reference to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.tags">tags</a></code> | <code>{[ key: string ]: string}</code> | Get *readonly* record of all tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.uuid">uuid</a></code> | <code>string</code> | Universally unique identifier. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.allowDestructiveMutations">allowDestructiveMutations</a></code> | <code>boolean</code> | Indicates if this node allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.children">children</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get all direct child nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.dependedOnBy">dependedOnBy</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *depend on this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.dependencies">dependencies</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *this node depends on*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.dependencyLinks">dependencyLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]</code> | Gets list of {@link Dependency} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.depth">depth</a></code> | <code>number</code> | Indicates the depth of the node relative to root (0). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.id">id</a></code> | <code>string</code> | Node id, which is only unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.isAsset">isAsset</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.ASSET}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.isCfnFqn">isCfnFqn</a></code> | <code>boolean</code> | Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.isCluster">isCluster</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.CLUSTER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.isCustomResource">isCustomResource</a></code> | <code>boolean</code> | Indicates if node is a *Custom Resource*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.isExtraneous">isExtraneous</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.isGraphContainer">isGraphContainer</a></code> | <code>boolean</code> | Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.isLeaf">isLeaf</a></code> | <code>boolean</code> | Indicates if this node is a *leaf* node, which means it does not have children. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.isTopLevel">isTopLevel</a></code> | <code>boolean</code> | Indicates if node is direct child of the graph root node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.links">links</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]</code> | Gets all links (edges) in which this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.nodeType">nodeType</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a></code> | Type of node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.path">path</a></code> | <code>string</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.referencedBy">referencedBy</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *reference this node*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.referenceLinks">referenceLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]</code> | Gets list of {@link Reference} links (edges) where this node is the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.references">references</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of **Nodes** that *this node references*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.reverseDependencyLinks">reverseDependencyLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]</code> | Gets list of {@link Dependency} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.reverseLinks">reverseLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]</code> | Gets all links (edges) in which this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.reverseReferenceLinks">reverseReferenceLinks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]</code> | Gets list of {@link Reference} links (edges) where this node is the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.scopes">scopes</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Gets descending ordered list of ancestors from the root. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.siblings">siblings</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Get list of *siblings* of this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.cfnProps">cfnProps</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a></code> | Gets CloudFormation properties for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.cfnType">cfnType</a></code> | <code>string</code> | Get the CloudFormation resource type for this node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.constructInfo">constructInfo</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.constructInfoFqn">constructInfoFqn</a></code> | <code>string</code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.logicalId">logicalId</a></code> | <code>string</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.parent">parent</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.rootStack">rootStack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Get **root** stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.stack">stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Stack the node is contained in. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode.property.stacks">stacks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>[]</code> | Gets all stacks contained by this stage. |

---

##### `attributes`<sup>Required</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.attributes"></a>

```typescript
public readonly attributes: {[ key: string ]: string | number | boolean | PlainObject | string | number | boolean | PlainObject[]};
```

- *Type:* {[ key: string ]: string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> | string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}

Get *readonly* record of all attributes.

---

##### `flags`<sup>Required</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.flags"></a>

```typescript
public readonly flags: FlagEnum[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]

Get *readonly* list of all flags.

---

##### `isDestroyed`<sup>Required</sup> <a name="isDestroyed" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.isDestroyed"></a>

```typescript
public readonly isDestroyed: boolean;
```

- *Type:* boolean

Indicates if the entity has been destroyed (eg: removed from store).

---

##### `isMutated`<sup>Required</sup> <a name="isMutated" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.isMutated"></a>

```typescript
public readonly isMutated: boolean;
```

- *Type:* boolean

Indicates if the entity has had destructive mutations applied.

---

##### `metadata`<sup>Required</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.metadata"></a>

```typescript
public readonly metadata: MetadataEntry[];
```

- *Type:* constructs.MetadataEntry[]

Get *readonly* list of all metadata entries.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.store"></a>

```typescript
public readonly store: Store;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Reference to the store.

---

##### `tags`<sup>Required</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.tags"></a>

```typescript
public readonly tags: {[ key: string ]: string};
```

- *Type:* {[ key: string ]: string}

Get *readonly* record of all tags.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.uuid"></a>

```typescript
public readonly uuid: string;
```

- *Type:* string

Universally unique identifier.

---

##### `allowDestructiveMutations`<sup>Required</sup> <a name="allowDestructiveMutations" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.allowDestructiveMutations"></a>

```typescript
public readonly allowDestructiveMutations: boolean;
```

- *Type:* boolean

Indicates if this node allows destructive mutations.

> [{@link Store.allowDestructiveMutations }]({@link Store.allowDestructiveMutations })

---

##### `children`<sup>Required</sup> <a name="children" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.children"></a>

```typescript
public readonly children: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get all direct child nodes.

---

##### `dependedOnBy`<sup>Required</sup> <a name="dependedOnBy" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.dependedOnBy"></a>

```typescript
public readonly dependedOnBy: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *depend on this node*.

> [{@link Node.reverseDependencyLinks }]({@link Node.reverseDependencyLinks })

---

##### `dependencies`<sup>Required</sup> <a name="dependencies" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.dependencies"></a>

```typescript
public readonly dependencies: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *this node depends on*.

> [{@link Node.dependencyLinks }]({@link Node.dependencyLinks })

---

##### `dependencyLinks`<sup>Required</sup> <a name="dependencyLinks" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.dependencyLinks"></a>

```typescript
public readonly dependencyLinks: Dependency[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]

Gets list of {@link Dependency} links (edges) where this node is the **source**.

---

##### `depth`<sup>Required</sup> <a name="depth" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.depth"></a>

```typescript
public readonly depth: number;
```

- *Type:* number

Indicates the depth of the node relative to root (0).

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.id"></a>

```typescript
public readonly id: string;
```

- *Type:* string

Node id, which is only unique within parent scope.

---

##### `isAsset`<sup>Required</sup> <a name="isAsset" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.isAsset"></a>

```typescript
public readonly isAsset: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.ASSET}.

---

##### `isCfnFqn`<sup>Required</sup> <a name="isCfnFqn" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.isCfnFqn"></a>

```typescript
public readonly isCfnFqn: boolean;
```

- *Type:* boolean

Indicates if node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct.

> [{@link FlagEnum.CFN_FQN }]({@link FlagEnum.CFN_FQN })

---

##### `isCluster`<sup>Required</sup> <a name="isCluster" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.isCluster"></a>

```typescript
public readonly isCluster: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.CLUSTER}.

---

##### `isCustomResource`<sup>Required</sup> <a name="isCustomResource" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.isCustomResource"></a>

```typescript
public readonly isCustomResource: boolean;
```

- *Type:* boolean

Indicates if node is a *Custom Resource*.

---

##### `isExtraneous`<sup>Required</sup> <a name="isExtraneous" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.isExtraneous"></a>

```typescript
public readonly isExtraneous: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.EXTRANEOUS} node or determined to be extraneous: - Clusters that contain no children.

---

##### `isGraphContainer`<sup>Required</sup> <a name="isGraphContainer" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.isGraphContainer"></a>

```typescript
public readonly isGraphContainer: boolean;
```

- *Type:* boolean

Indicates if this node is considered a {@link FlagEnum.GRAPH_CONTAINER}.

---

##### `isLeaf`<sup>Required</sup> <a name="isLeaf" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.isLeaf"></a>

```typescript
public readonly isLeaf: boolean;
```

- *Type:* boolean

Indicates if this node is a *leaf* node, which means it does not have children.

---

##### `isTopLevel`<sup>Required</sup> <a name="isTopLevel" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.isTopLevel"></a>

```typescript
public readonly isTopLevel: boolean;
```

- *Type:* boolean

Indicates if node is direct child of the graph root node.

---

##### `links`<sup>Required</sup> <a name="links" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.links"></a>

```typescript
public readonly links: Edge[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]

Gets all links (edges) in which this node is the **source**.

---

##### `nodeType`<sup>Required</sup> <a name="nodeType" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.nodeType"></a>

```typescript
public readonly nodeType: NodeTypeEnum;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a>

Type of node.

---

##### `path`<sup>Required</sup> <a name="path" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.path"></a>

```typescript
public readonly path: string;
```

- *Type:* string

Path of the node.

---

##### `referencedBy`<sup>Required</sup> <a name="referencedBy" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.referencedBy"></a>

```typescript
public readonly referencedBy: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *reference this node*.

> [{@link Node.reverseReferenceLinks }]({@link Node.reverseReferenceLinks })

---

##### `referenceLinks`<sup>Required</sup> <a name="referenceLinks" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.referenceLinks"></a>

```typescript
public readonly referenceLinks: Reference[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]

Gets list of {@link Reference} links (edges) where this node is the **source**.

---

##### `references`<sup>Required</sup> <a name="references" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.references"></a>

```typescript
public readonly references: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of **Nodes** that *this node references*.

> [{@link Node.referenceLinks }]({@link Node.referenceLinks })

---

##### `reverseDependencyLinks`<sup>Required</sup> <a name="reverseDependencyLinks" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.reverseDependencyLinks"></a>

```typescript
public readonly reverseDependencyLinks: Dependency[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>[]

Gets list of {@link Dependency} links (edges) where this node is the **target**.

---

##### `reverseLinks`<sup>Required</sup> <a name="reverseLinks" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.reverseLinks"></a>

```typescript
public readonly reverseLinks: Edge[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]

Gets all links (edges) in which this node is the **target**.

---

##### `reverseReferenceLinks`<sup>Required</sup> <a name="reverseReferenceLinks" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.reverseReferenceLinks"></a>

```typescript
public readonly reverseReferenceLinks: Reference[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>[]

Gets list of {@link Reference} links (edges) where this node is the **target**.

---

##### `scopes`<sup>Required</sup> <a name="scopes" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.scopes"></a>

```typescript
public readonly scopes: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Gets descending ordered list of ancestors from the root.

---

##### `siblings`<sup>Required</sup> <a name="siblings" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.siblings"></a>

```typescript
public readonly siblings: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Get list of *siblings* of this node.

---

##### `cfnProps`<sup>Optional</sup> <a name="cfnProps" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.cfnProps"></a>

```typescript
public readonly cfnProps: PlainObject;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>

Gets CloudFormation properties for this node.

---

##### `cfnType`<sup>Optional</sup> <a name="cfnType" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.cfnType"></a>

```typescript
public readonly cfnType: string;
```

- *Type:* string

Get the CloudFormation resource type for this node.

---

##### `constructInfo`<sup>Optional</sup> <a name="constructInfo" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.constructInfo"></a>

```typescript
public readonly constructInfo: ConstructInfo;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `constructInfoFqn`<sup>Optional</sup> <a name="constructInfoFqn" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.constructInfoFqn"></a>

```typescript
public readonly constructInfoFqn: string;
```

- *Type:* string

Synthesized construct information defining jii resolution data.

---

##### `logicalId`<sup>Optional</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.logicalId"></a>

```typescript
public readonly logicalId: string;
```

- *Type:* string

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.parent"></a>

```typescript
public readonly parent: Node;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

Only the root node should not have parent.

---

##### `rootStack`<sup>Optional</sup> <a name="rootStack" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.rootStack"></a>

```typescript
public readonly rootStack: StackNode;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Get **root** stack.

---

##### `stack`<sup>Optional</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.stack"></a>

```typescript
public readonly stack: StackNode;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained in.

---

##### `stacks`<sup>Required</sup> <a name="stacks" id="@aws-prototyping-sdk/cdk-graph.StageNode.property.stacks"></a>

```typescript
public readonly stacks: StackNode[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>[]

Gets all stacks contained by this stage.

---


### Store <a name="Store" id="@aws-prototyping-sdk/cdk-graph.Store"></a>

- *Implements:* <a href="#@aws-prototyping-sdk/cdk-graph.ISerializableGraphStore">ISerializableGraphStore</a>

Store class provides the in-memory database-like interface for managing all entities in the graph.

#### Initializers <a name="Initializers" id="@aws-prototyping-sdk/cdk-graph.Store.Initializer"></a>

```typescript
import { Store } from '@aws-prototyping-sdk/cdk-graph'

new Store(allowDestructiveMutations?: boolean)
```

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.Initializer.parameter.allowDestructiveMutations">allowDestructiveMutations</a></code> | <code>boolean</code> | *No description.* |

---

##### `allowDestructiveMutations`<sup>Optional</sup> <a name="allowDestructiveMutations" id="@aws-prototyping-sdk/cdk-graph.Store.Initializer.parameter.allowDestructiveMutations"></a>

- *Type:* boolean

---

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.addEdge">addEdge</a></code> | Add **edge** to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.addNode">addNode</a></code> | Add **node** to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.addStack">addStack</a></code> | Add **stack** node to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.addStage">addStage</a></code> | Add **stage** to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.clone">clone</a></code> | Clone the store to allow destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.computeLogicalUniversalId">computeLogicalUniversalId</a></code> | Compute **universal** *logicalId* based on parent stack and construct *logicalId* (`<stack>:<logicalId>`). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.findNodeByImportArn">findNodeByImportArn</a></code> | Attempts to lookup the {@link Node} associated with a given *import arn token*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.findNodeByLogicalId">findNodeByLogicalId</a></code> | Find node within given **stack** with given *logicalId*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.findNodeByLogicalUniversalId">findNodeByLogicalUniversalId</a></code> | Find node by **universal** *logicalId* (`<stack>:<logicalId>`). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.getEdge">getEdge</a></code> | Get stored **edge** by UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.getNode">getNode</a></code> | Get stored **node** by UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.getStack">getStack</a></code> | Get stored **stack** node by UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.getStage">getStage</a></code> | Get stored **stage** node by UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.mutateRemoveEdge">mutateRemoveEdge</a></code> | Remove **edge** from the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.mutateRemoveNode">mutateRemoveNode</a></code> | Remove **node** from the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.recordImportArn">recordImportArn</a></code> | Records arn tokens from imported resources (eg: `s3.Bucket.fromBucketArn()`) that are used for resolving references. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.recordLogicalId">recordLogicalId</a></code> | Record a **universal** *logicalId* to node mapping in the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.serialize">serialize</a></code> | Serialize the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.verifyDestructiveMutationAllowed">verifyDestructiveMutationAllowed</a></code> | Verifies that the store allows destructive mutations. |

---

##### `addEdge` <a name="addEdge" id="@aws-prototyping-sdk/cdk-graph.Store.addEdge"></a>

```typescript
public addEdge(edge: Edge): void
```

Add **edge** to the store.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.Store.addEdge.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `addNode` <a name="addNode" id="@aws-prototyping-sdk/cdk-graph.Store.addNode"></a>

```typescript
public addNode(node: Node): void
```

Add **node** to the store.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.Store.addNode.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `addStack` <a name="addStack" id="@aws-prototyping-sdk/cdk-graph.Store.addStack"></a>

```typescript
public addStack(stack: StackNode): void
```

Add **stack** node to the store.

###### `stack`<sup>Required</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.Store.addStack.parameter.stack"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

---

##### `addStage` <a name="addStage" id="@aws-prototyping-sdk/cdk-graph.Store.addStage"></a>

```typescript
public addStage(stage: StageNode): void
```

Add **stage** to the store.

###### `stage`<sup>Required</sup> <a name="stage" id="@aws-prototyping-sdk/cdk-graph.Store.addStage.parameter.stage"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StageNode">StageNode</a>

---

##### `clone` <a name="clone" id="@aws-prototyping-sdk/cdk-graph.Store.clone"></a>

```typescript
public clone(allowDestructiveMutations?: boolean): Store
```

Clone the store to allow destructive mutations.

###### `allowDestructiveMutations`<sup>Optional</sup> <a name="allowDestructiveMutations" id="@aws-prototyping-sdk/cdk-graph.Store.clone.parameter.allowDestructiveMutations"></a>

- *Type:* boolean

Indicates if destructive mutations are allowed;

defaults to `true`

---

##### `computeLogicalUniversalId` <a name="computeLogicalUniversalId" id="@aws-prototyping-sdk/cdk-graph.Store.computeLogicalUniversalId"></a>

```typescript
public computeLogicalUniversalId(stack: StackNode, logicalId: string): string
```

Compute **universal** *logicalId* based on parent stack and construct *logicalId* (`<stack>:<logicalId>`).

Construct *logicalIds are only unique within their containing stack, so to use *logicalId*
lookups universally (like resolving references) we need a universal key.

###### `stack`<sup>Required</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.Store.computeLogicalUniversalId.parameter.stack"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

---

###### `logicalId`<sup>Required</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.Store.computeLogicalUniversalId.parameter.logicalId"></a>

- *Type:* string

---

##### `findNodeByImportArn` <a name="findNodeByImportArn" id="@aws-prototyping-sdk/cdk-graph.Store.findNodeByImportArn"></a>

```typescript
public findNodeByImportArn(value: any): Node
```

Attempts to lookup the {@link Node} associated with a given *import arn token*.

###### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.Store.findNodeByImportArn.parameter.value"></a>

- *Type:* any

Import arn value, which is either object to tokenize or already tokenized string.

---

##### `findNodeByLogicalId` <a name="findNodeByLogicalId" id="@aws-prototyping-sdk/cdk-graph.Store.findNodeByLogicalId"></a>

```typescript
public findNodeByLogicalId(stack: StackNode, logicalId: string): Node
```

Find node within given **stack** with given *logicalId*.

###### `stack`<sup>Required</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.Store.findNodeByLogicalId.parameter.stack"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

---

###### `logicalId`<sup>Required</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.Store.findNodeByLogicalId.parameter.logicalId"></a>

- *Type:* string

---

##### `findNodeByLogicalUniversalId` <a name="findNodeByLogicalUniversalId" id="@aws-prototyping-sdk/cdk-graph.Store.findNodeByLogicalUniversalId"></a>

```typescript
public findNodeByLogicalUniversalId(uid: string): Node
```

Find node by **universal** *logicalId* (`<stack>:<logicalId>`).

###### `uid`<sup>Required</sup> <a name="uid" id="@aws-prototyping-sdk/cdk-graph.Store.findNodeByLogicalUniversalId.parameter.uid"></a>

- *Type:* string

---

##### `getEdge` <a name="getEdge" id="@aws-prototyping-sdk/cdk-graph.Store.getEdge"></a>

```typescript
public getEdge(uuid: string): Edge
```

Get stored **edge** by UUID.

###### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.Store.getEdge.parameter.uuid"></a>

- *Type:* string

---

##### `getNode` <a name="getNode" id="@aws-prototyping-sdk/cdk-graph.Store.getNode"></a>

```typescript
public getNode(uuid: string): Node
```

Get stored **node** by UUID.

###### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.Store.getNode.parameter.uuid"></a>

- *Type:* string

---

##### `getStack` <a name="getStack" id="@aws-prototyping-sdk/cdk-graph.Store.getStack"></a>

```typescript
public getStack(uuid: string): StackNode
```

Get stored **stack** node by UUID.

###### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.Store.getStack.parameter.uuid"></a>

- *Type:* string

---

##### `getStage` <a name="getStage" id="@aws-prototyping-sdk/cdk-graph.Store.getStage"></a>

```typescript
public getStage(uuid: string): StageNode
```

Get stored **stage** node by UUID.

###### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.Store.getStage.parameter.uuid"></a>

- *Type:* string

---

##### `mutateRemoveEdge` <a name="mutateRemoveEdge" id="@aws-prototyping-sdk/cdk-graph.Store.mutateRemoveEdge"></a>

```typescript
public mutateRemoveEdge(edge: Edge): boolean
```

Remove **edge** from the store.

###### `edge`<sup>Required</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.Store.mutateRemoveEdge.parameter.edge"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>

---

##### `mutateRemoveNode` <a name="mutateRemoveNode" id="@aws-prototyping-sdk/cdk-graph.Store.mutateRemoveNode"></a>

```typescript
public mutateRemoveNode(node: Node): boolean
```

Remove **node** from the store.

###### `node`<sup>Required</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.Store.mutateRemoveNode.parameter.node"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `recordImportArn` <a name="recordImportArn" id="@aws-prototyping-sdk/cdk-graph.Store.recordImportArn"></a>

```typescript
public recordImportArn(arnToken: string, resource: Node): void
```

Records arn tokens from imported resources (eg: `s3.Bucket.fromBucketArn()`) that are used for resolving references.

###### `arnToken`<sup>Required</sup> <a name="arnToken" id="@aws-prototyping-sdk/cdk-graph.Store.recordImportArn.parameter.arnToken"></a>

- *Type:* string

---

###### `resource`<sup>Required</sup> <a name="resource" id="@aws-prototyping-sdk/cdk-graph.Store.recordImportArn.parameter.resource"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `recordLogicalId` <a name="recordLogicalId" id="@aws-prototyping-sdk/cdk-graph.Store.recordLogicalId"></a>

```typescript
public recordLogicalId(stack: StackNode, logicalId: string, resource: Node): void
```

Record a **universal** *logicalId* to node mapping in the store.

###### `stack`<sup>Required</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.Store.recordLogicalId.parameter.stack"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

---

###### `logicalId`<sup>Required</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.Store.recordLogicalId.parameter.logicalId"></a>

- *Type:* string

---

###### `resource`<sup>Required</sup> <a name="resource" id="@aws-prototyping-sdk/cdk-graph.Store.recordLogicalId.parameter.resource"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

---

##### `serialize` <a name="serialize" id="@aws-prototyping-sdk/cdk-graph.Store.serialize"></a>

```typescript
public serialize(): SGGraphStore
```

Serialize the store.

##### `verifyDestructiveMutationAllowed` <a name="verifyDestructiveMutationAllowed" id="@aws-prototyping-sdk/cdk-graph.Store.verifyDestructiveMutationAllowed"></a>

```typescript
public verifyDestructiveMutationAllowed(): void
```

Verifies that the store allows destructive mutations.

#### Static Functions <a name="Static Functions" id="Static Functions"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.fromSerializedStore">fromSerializedStore</a></code> | Builds store from serialized store data. |

---

##### `fromSerializedStore` <a name="fromSerializedStore" id="@aws-prototyping-sdk/cdk-graph.Store.fromSerializedStore"></a>

```typescript
import { Store } from '@aws-prototyping-sdk/cdk-graph'

Store.fromSerializedStore(serializedStore: SGGraphStore)
```

Builds store from serialized store data.

###### `serializedStore`<sup>Required</sup> <a name="serializedStore" id="@aws-prototyping-sdk/cdk-graph.Store.fromSerializedStore.parameter.serializedStore"></a>

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.SGGraphStore">SGGraphStore</a>

---

#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.property.allowDestructiveMutations">allowDestructiveMutations</a></code> | <code>boolean</code> | Indicates if the store allows destructive mutations. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.property.counts">counts</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.IStoreCounts">IStoreCounts</a></code> | Get record of all store counters. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.property.edges">edges</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]</code> | Gets all stored **edges**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.property.nodes">nodes</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]</code> | Gets all stored **nodes**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.property.root">root</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.RootNode">RootNode</a></code> | Root node in the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.property.rootStacks">rootStacks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>[]</code> | Gets all stored **root stack** nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.property.stacks">stacks</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>[]</code> | Gets all stored **stack** nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.property.stages">stages</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StageNode">StageNode</a>[]</code> | Gets all stored **stage** nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.Store.property.version">version</a></code> | <code>string</code> | Current SemVer version of the store. |

---

##### `allowDestructiveMutations`<sup>Required</sup> <a name="allowDestructiveMutations" id="@aws-prototyping-sdk/cdk-graph.Store.property.allowDestructiveMutations"></a>

```typescript
public readonly allowDestructiveMutations: boolean;
```

- *Type:* boolean

Indicates if the store allows destructive mutations.

Destructive mutations are only allowed on clones of the store to prevent plugins and filters from
mutating the store for downstream plugins.

All `mutate*` methods are only allowed on stores that allow destructive mutations.

This behavior may change in the future if the need arises for plugins to pass mutated stores
to downstream plugins. But it will be done cautiously with ensuring the intent of
downstream plugin is to receive the mutated store.

---

##### `counts`<sup>Required</sup> <a name="counts" id="@aws-prototyping-sdk/cdk-graph.Store.property.counts"></a>

```typescript
public readonly counts: IStoreCounts;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IStoreCounts">IStoreCounts</a>

Get record of all store counters.

---

##### `edges`<sup>Required</sup> <a name="edges" id="@aws-prototyping-sdk/cdk-graph.Store.property.edges"></a>

```typescript
public readonly edges: Edge[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>[]

Gets all stored **edges**.

---

##### `nodes`<sup>Required</sup> <a name="nodes" id="@aws-prototyping-sdk/cdk-graph.Store.property.nodes"></a>

```typescript
public readonly nodes: Node[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>[]

Gets all stored **nodes**.

---

##### `root`<sup>Required</sup> <a name="root" id="@aws-prototyping-sdk/cdk-graph.Store.property.root"></a>

```typescript
public readonly root: RootNode;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.RootNode">RootNode</a>

Root node in the store.

The **root** node is not the computed root, but the graph root
which is auto-generated and can not be mutated.

---

##### `rootStacks`<sup>Required</sup> <a name="rootStacks" id="@aws-prototyping-sdk/cdk-graph.Store.property.rootStacks"></a>

```typescript
public readonly rootStacks: StackNode[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>[]

Gets all stored **root stack** nodes.

---

##### `stacks`<sup>Required</sup> <a name="stacks" id="@aws-prototyping-sdk/cdk-graph.Store.property.stacks"></a>

```typescript
public readonly stacks: StackNode[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>[]

Gets all stored **stack** nodes.

---

##### `stages`<sup>Required</sup> <a name="stages" id="@aws-prototyping-sdk/cdk-graph.Store.property.stages"></a>

```typescript
public readonly stages: StageNode[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StageNode">StageNode</a>[]

Gets all stored **stage** nodes.

---

##### `version`<sup>Required</sup> <a name="version" id="@aws-prototyping-sdk/cdk-graph.Store.property.version"></a>

```typescript
public readonly version: string;
```

- *Type:* string

Current SemVer version of the store.

---


## Protocols <a name="Protocols" id="Protocols"></a>

### IAppNodeProps <a name="IAppNodeProps" id="@aws-prototyping-sdk/cdk-graph.IAppNodeProps"></a>

- *Extends:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps">IBaseEntityDataProps</a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IAppNodeProps">IAppNodeProps</a>

{@link AppNode} props.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.attributes">attributes</a></code> | <code>{[ key: string ]: string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> \| string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}</code> | Attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.flags">flags</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]</code> | Flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.metadata">metadata</a></code> | <code>constructs.MetadataEntry[]</code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.tags">tags</a></code> | <code>{[ key: string ]: string}</code> | Tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.cfnType">cfnType</a></code> | <code>string</code> | Type of CloudFormation resource. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.constructInfo">constructInfo</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.logicalId">logicalId</a></code> | <code>string</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.parent">parent</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Parent node. |

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.attributes"></a>

```typescript
public readonly attributes: {[ key: string ]: string | number | boolean | PlainObject | string | number | boolean | PlainObject[]};
```

- *Type:* {[ key: string ]: string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> | string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}

Attributes.

---

##### `flags`<sup>Optional</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.flags"></a>

```typescript
public readonly flags: FlagEnum[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]

Flags.

---

##### `metadata`<sup>Optional</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.metadata"></a>

```typescript
public readonly metadata: MetadataEntry[];
```

- *Type:* constructs.MetadataEntry[]

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.tags"></a>

```typescript
public readonly tags: {[ key: string ]: string};
```

- *Type:* {[ key: string ]: string}

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.store"></a>

```typescript
public readonly store: Store;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Store.

---

##### `cfnType`<sup>Optional</sup> <a name="cfnType" id="@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.cfnType"></a>

```typescript
public readonly cfnType: string;
```

- *Type:* string

Type of CloudFormation resource.

---

##### `constructInfo`<sup>Optional</sup> <a name="constructInfo" id="@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.constructInfo"></a>

```typescript
public readonly constructInfo: ConstructInfo;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `logicalId`<sup>Optional</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.logicalId"></a>

```typescript
public readonly logicalId: string;
```

- *Type:* string

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.IAppNodeProps.property.parent"></a>

```typescript
public readonly parent: Node;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

---

### IAttributeReferenceProps <a name="IAttributeReferenceProps" id="@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps"></a>

- *Extends:* <a href="#@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps">ITypedEdgeProps</a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps">IAttributeReferenceProps</a>

Attribute type reference props.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.attributes">attributes</a></code> | <code>{[ key: string ]: string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> \| string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}</code> | Attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.flags">flags</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]</code> | Flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.metadata">metadata</a></code> | <code>constructs.MetadataEntry[]</code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.tags">tags</a></code> | <code>{[ key: string ]: string}</code> | Tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.uuid">uuid</a></code> | <code>string</code> | UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.source">source</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Edge **source** is the node that defines the edge (tail). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.target">target</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Edge **target** is the node being referenced by the **source** (head). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.value">value</a></code> | <code>string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> \| string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]</code> | Resolved attribute value. |

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.attributes"></a>

```typescript
public readonly attributes: {[ key: string ]: string | number | boolean | PlainObject | string | number | boolean | PlainObject[]};
```

- *Type:* {[ key: string ]: string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> | string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}

Attributes.

---

##### `flags`<sup>Optional</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.flags"></a>

```typescript
public readonly flags: FlagEnum[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]

Flags.

---

##### `metadata`<sup>Optional</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.metadata"></a>

```typescript
public readonly metadata: MetadataEntry[];
```

- *Type:* constructs.MetadataEntry[]

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.tags"></a>

```typescript
public readonly tags: {[ key: string ]: string};
```

- *Type:* {[ key: string ]: string}

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.store"></a>

```typescript
public readonly store: Store;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Store.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.uuid"></a>

```typescript
public readonly uuid: string;
```

- *Type:* string

UUID.

---

##### `source`<sup>Required</sup> <a name="source" id="@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.source"></a>

```typescript
public readonly source: Node;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Edge **source** is the node that defines the edge (tail).

---

##### `target`<sup>Required</sup> <a name="target" id="@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.target"></a>

```typescript
public readonly target: Node;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Edge **target** is the node being referenced by the **source** (head).

---

##### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps.property.value"></a>

```typescript
public readonly value: string | number | boolean | PlainObject | string | number | boolean | PlainObject[];
```

- *Type:* string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> | string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]

Resolved attribute value.

---

### IBaseEntityDataProps <a name="IBaseEntityDataProps" id="@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps"></a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IAppNodeProps">IAppNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps">IAttributeReferenceProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps">IBaseEntityDataProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityProps">IBaseEntityProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps">ICfnResourceNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IEdgeProps">IEdgeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps">INestedStackNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.INodeProps">INodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps">IOutputNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps">IParameterNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IReferenceProps">IReferenceProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps">IResourceNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps">IStackNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps">ITypedEdgeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps">ITypedNodeProps</a>

Base interface for all store entities **data** props.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps.property.attributes">attributes</a></code> | <code>{[ key: string ]: string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> \| string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}</code> | Attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps.property.flags">flags</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]</code> | Flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps.property.metadata">metadata</a></code> | <code>constructs.MetadataEntry[]</code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps.property.tags">tags</a></code> | <code>{[ key: string ]: string}</code> | Tags. |

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps.property.attributes"></a>

```typescript
public readonly attributes: {[ key: string ]: string | number | boolean | PlainObject | string | number | boolean | PlainObject[]};
```

- *Type:* {[ key: string ]: string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> | string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}

Attributes.

---

##### `flags`<sup>Optional</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps.property.flags"></a>

```typescript
public readonly flags: FlagEnum[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]

Flags.

---

##### `metadata`<sup>Optional</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps.property.metadata"></a>

```typescript
public readonly metadata: MetadataEntry[];
```

- *Type:* constructs.MetadataEntry[]

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps.property.tags"></a>

```typescript
public readonly tags: {[ key: string ]: string};
```

- *Type:* {[ key: string ]: string}

Tags.

---

### IBaseEntityProps <a name="IBaseEntityProps" id="@aws-prototyping-sdk/cdk-graph.IBaseEntityProps"></a>

- *Extends:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityDataProps">IBaseEntityDataProps</a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps">IAttributeReferenceProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityProps">IBaseEntityProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps">ICfnResourceNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IEdgeProps">IEdgeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps">INestedStackNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.INodeProps">INodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps">IOutputNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps">IParameterNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IReferenceProps">IReferenceProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps">IResourceNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps">IStackNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps">ITypedEdgeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps">ITypedNodeProps</a>

Base interface for all store entities props.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityProps.property.attributes">attributes</a></code> | <code>{[ key: string ]: string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> \| string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}</code> | Attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityProps.property.flags">flags</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]</code> | Flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityProps.property.metadata">metadata</a></code> | <code>constructs.MetadataEntry[]</code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityProps.property.tags">tags</a></code> | <code>{[ key: string ]: string}</code> | Tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityProps.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityProps.property.uuid">uuid</a></code> | <code>string</code> | UUID. |

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.IBaseEntityProps.property.attributes"></a>

```typescript
public readonly attributes: {[ key: string ]: string | number | boolean | PlainObject | string | number | boolean | PlainObject[]};
```

- *Type:* {[ key: string ]: string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> | string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}

Attributes.

---

##### `flags`<sup>Optional</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.IBaseEntityProps.property.flags"></a>

```typescript
public readonly flags: FlagEnum[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]

Flags.

---

##### `metadata`<sup>Optional</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.IBaseEntityProps.property.metadata"></a>

```typescript
public readonly metadata: MetadataEntry[];
```

- *Type:* constructs.MetadataEntry[]

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.IBaseEntityProps.property.tags"></a>

```typescript
public readonly tags: {[ key: string ]: string};
```

- *Type:* {[ key: string ]: string}

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.IBaseEntityProps.property.store"></a>

```typescript
public readonly store: Store;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Store.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.IBaseEntityProps.property.uuid"></a>

```typescript
public readonly uuid: string;
```

- *Type:* string

UUID.

---

### ICdkGraphPlugin <a name="ICdkGraphPlugin" id="@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin"></a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin">ICdkGraphPlugin</a>

CdkGraph **Plugin** interface.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin.property.id">id</a></code> | <code>string</code> | Unique identifier for this plugin. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin.property.version">version</a></code> | <code>string</code> | Plugin version. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin.property.dependencies">dependencies</a></code> | <code>string[]</code> | List of plugins this plugin depends on, including optional semver version (eg: ["foo", "bar@1.2"]). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin.property.bind">bind</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.IGraphPluginBindCallback">IGraphPluginBindCallback</a></code> | Binds the plugin to the CdkGraph instance. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin.property.inspect">inspect</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.IGraphVisitorCallback">IGraphVisitorCallback</a></code> | Node visitor callback for construct tree traversal. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin.property.report">report</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.IGraphReportCallback">IGraphReportCallback</a></code> | Generate asynchronous reports based on the graph. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin.property.synthesize">synthesize</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.IGraphSynthesizeCallback">IGraphSynthesizeCallback</a></code> | Called during CDK synthesize to generate synchronous artifacts based on the in-memory graph passed to the plugin. |

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin.property.id"></a>

```typescript
public readonly id: string;
```

- *Type:* string

Unique identifier for this plugin.

---

##### `version`<sup>Required</sup> <a name="version" id="@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin.property.version"></a>

```typescript
public readonly version: string;
```

- *Type:* string

Plugin version.

---

##### `dependencies`<sup>Optional</sup> <a name="dependencies" id="@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin.property.dependencies"></a>

```typescript
public readonly dependencies: string[];
```

- *Type:* string[]

List of plugins this plugin depends on, including optional semver version (eg: ["foo", "bar@1.2"]).

---

##### `bind`<sup>Required</sup> <a name="bind" id="@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin.property.bind"></a>

```typescript
public readonly bind: IGraphPluginBindCallback;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IGraphPluginBindCallback">IGraphPluginBindCallback</a>

Binds the plugin to the CdkGraph instance.

Enables plugins to receive base configs.

---

##### `inspect`<sup>Optional</sup> <a name="inspect" id="@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin.property.inspect"></a>

```typescript
public readonly inspect: IGraphVisitorCallback;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IGraphVisitorCallback">IGraphVisitorCallback</a>

Node visitor callback for construct tree traversal.

This follows IAspect.visit pattern, but the order
of visitor traversal in managed by the CdkGraph.

---

##### `report`<sup>Optional</sup> <a name="report" id="@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin.property.report"></a>

```typescript
public readonly report: IGraphReportCallback;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IGraphReportCallback">IGraphReportCallback</a>

Generate asynchronous reports based on the graph.

This is not automatically called when synthesizing CDK.
Developer must explicitly add `await graphInstance.report()` to the CDK bin or invoke this outside
of the CDK synth. In either case, the plugin receives the in-memory graph interface when invoked, as the
CdkGraph will deserialize the graph prior to invoking the plugin report.

---

##### `synthesize`<sup>Optional</sup> <a name="synthesize" id="@aws-prototyping-sdk/cdk-graph.ICdkGraphPlugin.property.synthesize"></a>

```typescript
public readonly synthesize: IGraphSynthesizeCallback;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IGraphSynthesizeCallback">IGraphSynthesizeCallback</a>

Called during CDK synthesize to generate synchronous artifacts based on the in-memory graph passed to the plugin.

This is called in fifo order of plugins.

---

### ICfnResourceNodeProps <a name="ICfnResourceNodeProps" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps"></a>

- *Extends:* <a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps">ITypedNodeProps</a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps">ICfnResourceNodeProps</a>

CfnResourceNode props.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.attributes">attributes</a></code> | <code>{[ key: string ]: string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> \| string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}</code> | Attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.flags">flags</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]</code> | Flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.metadata">metadata</a></code> | <code>constructs.MetadataEntry[]</code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.tags">tags</a></code> | <code>{[ key: string ]: string}</code> | Tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.uuid">uuid</a></code> | <code>string</code> | UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.id">id</a></code> | <code>string</code> | Node id, which is unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.path">path</a></code> | <code>string</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.cfnType">cfnType</a></code> | <code>string</code> | Type of CloudFormation resource. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.constructInfo">constructInfo</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.logicalId">logicalId</a></code> | <code>string</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.parent">parent</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.stack">stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Stack the node is contained. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.importArnToken">importArnToken</a></code> | <code>string</code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.nodeType">nodeType</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a></code> | *No description.* |

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.attributes"></a>

```typescript
public readonly attributes: {[ key: string ]: string | number | boolean | PlainObject | string | number | boolean | PlainObject[]};
```

- *Type:* {[ key: string ]: string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> | string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}

Attributes.

---

##### `flags`<sup>Optional</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.flags"></a>

```typescript
public readonly flags: FlagEnum[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]

Flags.

---

##### `metadata`<sup>Optional</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.metadata"></a>

```typescript
public readonly metadata: MetadataEntry[];
```

- *Type:* constructs.MetadataEntry[]

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.tags"></a>

```typescript
public readonly tags: {[ key: string ]: string};
```

- *Type:* {[ key: string ]: string}

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.store"></a>

```typescript
public readonly store: Store;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Store.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.uuid"></a>

```typescript
public readonly uuid: string;
```

- *Type:* string

UUID.

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.id"></a>

```typescript
public readonly id: string;
```

- *Type:* string

Node id, which is unique within parent scope.

---

##### `path`<sup>Required</sup> <a name="path" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.path"></a>

```typescript
public readonly path: string;
```

- *Type:* string

Path of the node.

---

##### `cfnType`<sup>Optional</sup> <a name="cfnType" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.cfnType"></a>

```typescript
public readonly cfnType: string;
```

- *Type:* string

Type of CloudFormation resource.

---

##### `constructInfo`<sup>Optional</sup> <a name="constructInfo" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.constructInfo"></a>

```typescript
public readonly constructInfo: ConstructInfo;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `logicalId`<sup>Optional</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.logicalId"></a>

```typescript
public readonly logicalId: string;
```

- *Type:* string

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.parent"></a>

```typescript
public readonly parent: Node;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

---

##### `stack`<sup>Optional</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.stack"></a>

```typescript
public readonly stack: StackNode;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained.

---

##### `importArnToken`<sup>Optional</sup> <a name="importArnToken" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.importArnToken"></a>

```typescript
public readonly importArnToken: string;
```

- *Type:* string

---

##### `nodeType`<sup>Optional</sup> <a name="nodeType" id="@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps.property.nodeType"></a>

```typescript
public readonly nodeType: NodeTypeEnum;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a>

---

### IEdgePredicate <a name="IEdgePredicate" id="@aws-prototyping-sdk/cdk-graph.IEdgePredicate"></a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Predicate to match edge.



### IEdgeProps <a name="IEdgeProps" id="@aws-prototyping-sdk/cdk-graph.IEdgeProps"></a>

- *Extends:* <a href="#@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps">ITypedEdgeProps</a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgeProps">IEdgeProps</a>

Edge props interface.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.attributes">attributes</a></code> | <code>{[ key: string ]: string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> \| string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}</code> | Attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.flags">flags</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]</code> | Flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.metadata">metadata</a></code> | <code>constructs.MetadataEntry[]</code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.tags">tags</a></code> | <code>{[ key: string ]: string}</code> | Tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.uuid">uuid</a></code> | <code>string</code> | UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.source">source</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Edge **source** is the node that defines the edge (tail). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.target">target</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Edge **target** is the node being referenced by the **source** (head). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.direction">direction</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a></code> | Indicates the direction in which the edge is directed. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.edgeType">edgeType</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum">EdgeTypeEnum</a></code> | Type of edge. |

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.attributes"></a>

```typescript
public readonly attributes: {[ key: string ]: string | number | boolean | PlainObject | string | number | boolean | PlainObject[]};
```

- *Type:* {[ key: string ]: string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> | string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}

Attributes.

---

##### `flags`<sup>Optional</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.flags"></a>

```typescript
public readonly flags: FlagEnum[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]

Flags.

---

##### `metadata`<sup>Optional</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.metadata"></a>

```typescript
public readonly metadata: MetadataEntry[];
```

- *Type:* constructs.MetadataEntry[]

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.tags"></a>

```typescript
public readonly tags: {[ key: string ]: string};
```

- *Type:* {[ key: string ]: string}

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.store"></a>

```typescript
public readonly store: Store;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Store.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.uuid"></a>

```typescript
public readonly uuid: string;
```

- *Type:* string

UUID.

---

##### `source`<sup>Required</sup> <a name="source" id="@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.source"></a>

```typescript
public readonly source: Node;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Edge **source** is the node that defines the edge (tail).

---

##### `target`<sup>Required</sup> <a name="target" id="@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.target"></a>

```typescript
public readonly target: Node;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Edge **target** is the node being referenced by the **source** (head).

---

##### `direction`<sup>Required</sup> <a name="direction" id="@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.direction"></a>

```typescript
public readonly direction: EdgeDirectionEnum;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum">EdgeDirectionEnum</a>

Indicates the direction in which the edge is directed.

---

##### `edgeType`<sup>Required</sup> <a name="edgeType" id="@aws-prototyping-sdk/cdk-graph.IEdgeProps.property.edgeType"></a>

```typescript
public readonly edgeType: EdgeTypeEnum;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum">EdgeTypeEnum</a>

Type of edge.

---

### IFilterFocusCallback <a name="IFilterFocusCallback" id="@aws-prototyping-sdk/cdk-graph.IFilterFocusCallback"></a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IFilterFocusCallback">IFilterFocusCallback</a>

Determines focus node of filter plan.



### IFindEdgeOptions <a name="IFindEdgeOptions" id="@aws-prototyping-sdk/cdk-graph.IFindEdgeOptions"></a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindEdgeOptions">IFindEdgeOptions</a>

Options for edge based search operations.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IFindEdgeOptions.property.order">order</a></code> | <code>constructs.ConstructOrder</code> | The order of traversal during search path. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IFindEdgeOptions.property.predicate">predicate</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a></code> | The predicate to match edges(s). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IFindEdgeOptions.property.reverse">reverse</a></code> | <code>boolean</code> | Indicates reverse order. |

---

##### `order`<sup>Optional</sup> <a name="order" id="@aws-prototyping-sdk/cdk-graph.IFindEdgeOptions.property.order"></a>

```typescript
public readonly order: ConstructOrder;
```

- *Type:* constructs.ConstructOrder

The order of traversal during search path.

---

##### `predicate`<sup>Optional</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.IFindEdgeOptions.property.predicate"></a>

```typescript
public readonly predicate: IEdgePredicate;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

The predicate to match edges(s).

---

##### `reverse`<sup>Optional</sup> <a name="reverse" id="@aws-prototyping-sdk/cdk-graph.IFindEdgeOptions.property.reverse"></a>

```typescript
public readonly reverse: boolean;
```

- *Type:* boolean

Indicates reverse order.

---

### IFindNodeOptions <a name="IFindNodeOptions" id="@aws-prototyping-sdk/cdk-graph.IFindNodeOptions"></a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IFindNodeOptions">IFindNodeOptions</a>

Options for node based search operations.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IFindNodeOptions.property.order">order</a></code> | <code>constructs.ConstructOrder</code> | The order of traversal during search path. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IFindNodeOptions.property.predicate">predicate</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a></code> | The predicate to match node(s). |

---

##### `order`<sup>Optional</sup> <a name="order" id="@aws-prototyping-sdk/cdk-graph.IFindNodeOptions.property.order"></a>

```typescript
public readonly order: ConstructOrder;
```

- *Type:* constructs.ConstructOrder

The order of traversal during search path.

---

##### `predicate`<sup>Optional</sup> <a name="predicate" id="@aws-prototyping-sdk/cdk-graph.IFindNodeOptions.property.predicate"></a>

```typescript
public readonly predicate: INodePredicate;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

The predicate to match node(s).

---

### IGraphFilter <a name="IGraphFilter" id="@aws-prototyping-sdk/cdk-graph.IGraphFilter"></a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IGraphFilter">IGraphFilter</a>

Graph filter.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IGraphFilter.property.allNodes">allNodes</a></code> | <code>boolean</code> | Indicates that all nodes will be filtered, rather than just Resource and CfnResource nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IGraphFilter.property.edge">edge</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a></code> | Predicate to match edges. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IGraphFilter.property.inverse">inverse</a></code> | <code>boolean</code> | Indicates that matches will be filtered, as opposed to non-matches. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IGraphFilter.property.node">node</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a></code> | Predicate to match nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IGraphFilter.property.strategy">strategy</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.FilterStrategy">FilterStrategy</a></code> | Filter strategy to apply to matching nodes. |

---

##### `allNodes`<sup>Optional</sup> <a name="allNodes" id="@aws-prototyping-sdk/cdk-graph.IGraphFilter.property.allNodes"></a>

```typescript
public readonly allNodes: boolean;
```

- *Type:* boolean

Indicates that all nodes will be filtered, rather than just Resource and CfnResource nodes.

By enabling this, all Stages, Stacks, and structural construct boundaries will be filtered as well.
In general, most users intent is to operate against resources and desire to preserve structural groupings,
which is common in most Cfn/Cdk based filtering where inputs are "include" lists.

Defaults to value of containing {@link IGraphFilterPlan.allNodes}

---

##### `edge`<sup>Optional</sup> <a name="edge" id="@aws-prototyping-sdk/cdk-graph.IGraphFilter.property.edge"></a>

```typescript
public readonly edge: IEdgePredicate;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IEdgePredicate">IEdgePredicate</a>

Predicate to match edges.

Edges are evaluated after nodes are filtered.

---

##### `inverse`<sup>Optional</sup> <a name="inverse" id="@aws-prototyping-sdk/cdk-graph.IGraphFilter.property.inverse"></a>

```typescript
public readonly inverse: boolean;
```

- *Type:* boolean
- *Default:* false - Preserve matches, and filter out non-matches.

Indicates that matches will be filtered, as opposed to non-matches.

The default follows common [Javascript Array.filter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter)
precedence of preserving matches during filtering, while pruning non-matches.

---

##### `node`<sup>Optional</sup> <a name="node" id="@aws-prototyping-sdk/cdk-graph.IGraphFilter.property.node"></a>

```typescript
public readonly node: INodePredicate;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

Predicate to match nodes.

---

##### `strategy`<sup>Optional</sup> <a name="strategy" id="@aws-prototyping-sdk/cdk-graph.IGraphFilter.property.strategy"></a>

```typescript
public readonly strategy: FilterStrategy;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FilterStrategy">FilterStrategy</a>
- *Default:* {FilterStrategy.PRUNE}

Filter strategy to apply to matching nodes.

Edges do not have a strategy, they are always pruned.

---

### IGraphFilterPlan <a name="IGraphFilterPlan" id="@aws-prototyping-sdk/cdk-graph.IGraphFilterPlan"></a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IGraphFilterPlan">IGraphFilterPlan</a>

Graph filter plan.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IGraphFilterPlan.property.allNodes">allNodes</a></code> | <code>boolean</code> | Indicates that all nodes will be filtered, rather than just Resource and CfnResource nodes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IGraphFilterPlan.property.filters">filters</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.IGraphFilter">IGraphFilter</a> \| <a href="#@aws-prototyping-sdk/cdk-graph.IGraphStoreFilter">IGraphStoreFilter</a>[]</code> | Ordered list of {@link IGraphFilter} and {@link IGraphStoreFilter} filters to apply to the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IGraphFilterPlan.property.focus">focus</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a> \| <a href="#@aws-prototyping-sdk/cdk-graph.IFilterFocusCallback">IFilterFocusCallback</a> \| <a href="#@aws-prototyping-sdk/cdk-graph.IGraphFilterPlanFocusConfig">IGraphFilterPlanFocusConfig</a></code> | Config to focus the graph on specific node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IGraphFilterPlan.property.order">order</a></code> | <code>constructs.ConstructOrder</code> | The order to visit nodes and edges during filtering. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IGraphFilterPlan.property.preset">preset</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.FilterPreset">FilterPreset</a></code> | Optional preset filter to apply before other filters. |

---

##### `allNodes`<sup>Optional</sup> <a name="allNodes" id="@aws-prototyping-sdk/cdk-graph.IGraphFilterPlan.property.allNodes"></a>

```typescript
public readonly allNodes: boolean;
```

- *Type:* boolean
- *Default:* false By default only Resource and CfnResource nodes are filtered.

Indicates that all nodes will be filtered, rather than just Resource and CfnResource nodes.

By enabling this, all Stages, Stacks, and structural construct boundaries will be filtered as well.
In general, most users intent is to operate against resources and desire to preserve structural groupings,
which is common in most Cfn/Cdk based filtering where inputs are "include" lists.

---

##### `filters`<sup>Optional</sup> <a name="filters" id="@aws-prototyping-sdk/cdk-graph.IGraphFilterPlan.property.filters"></a>

```typescript
public readonly filters: IGraphFilter | IGraphStoreFilter[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.IGraphFilter">IGraphFilter</a> | <a href="#@aws-prototyping-sdk/cdk-graph.IGraphStoreFilter">IGraphStoreFilter</a>[]

Ordered list of {@link IGraphFilter} and {@link IGraphStoreFilter} filters to apply to the store.

Filters are applied *after* the preset filtering is applied if present.
- Filters are applied sequentially against all nodes, as opposed to IAspect.visitor pattern
which are sequentially applied per node.

---

##### `focus`<sup>Optional</sup> <a name="focus" id="@aws-prototyping-sdk/cdk-graph.IGraphFilterPlan.property.focus"></a>

```typescript
public readonly focus: Node | IFilterFocusCallback | IGraphFilterPlanFocusConfig;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a> | <a href="#@aws-prototyping-sdk/cdk-graph.IFilterFocusCallback">IFilterFocusCallback</a> | <a href="#@aws-prototyping-sdk/cdk-graph.IGraphFilterPlanFocusConfig">IGraphFilterPlanFocusConfig</a>

Config to focus the graph on specific node.

---

##### `order`<sup>Optional</sup> <a name="order" id="@aws-prototyping-sdk/cdk-graph.IGraphFilterPlan.property.order"></a>

```typescript
public readonly order: ConstructOrder;
```

- *Type:* constructs.ConstructOrder
- *Default:* {ConstructOrder.PREORDER}

The order to visit nodes and edges during filtering.

---

##### `preset`<sup>Optional</sup> <a name="preset" id="@aws-prototyping-sdk/cdk-graph.IGraphFilterPlan.property.preset"></a>

```typescript
public readonly preset: FilterPreset;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FilterPreset">FilterPreset</a>

Optional preset filter to apply before other filters.

---

### IGraphPluginBindCallback <a name="IGraphPluginBindCallback" id="@aws-prototyping-sdk/cdk-graph.IGraphPluginBindCallback"></a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IGraphPluginBindCallback">IGraphPluginBindCallback</a>

Callback signature for graph `Plugin.bind` operation.



### IGraphReportCallback <a name="IGraphReportCallback" id="@aws-prototyping-sdk/cdk-graph.IGraphReportCallback"></a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IGraphReportCallback">IGraphReportCallback</a>

Callback signature for graph `Plugin.report` operation.



### IGraphStoreFilter <a name="IGraphStoreFilter" id="@aws-prototyping-sdk/cdk-graph.IGraphStoreFilter"></a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IGraphStoreFilter">IGraphStoreFilter</a>

Store filter callback interface used to perform filtering operations directly against the store, as opposed to using {@link IGraphFilter} definitions.



### IGraphSynthesizeCallback <a name="IGraphSynthesizeCallback" id="@aws-prototyping-sdk/cdk-graph.IGraphSynthesizeCallback"></a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IGraphSynthesizeCallback">IGraphSynthesizeCallback</a>

Callback signature for graph `Plugin.synthesize` operation.



### IGraphVisitorCallback <a name="IGraphVisitorCallback" id="@aws-prototyping-sdk/cdk-graph.IGraphVisitorCallback"></a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IGraphVisitorCallback">IGraphVisitorCallback</a>

Callback signature for graph `Plugin.inspect` operation.



### INestedStackNodeProps <a name="INestedStackNodeProps" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps"></a>

- *Extends:* <a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps">IStackNodeProps</a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps">INestedStackNodeProps</a>

{@link NestedStackNode} props.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.attributes">attributes</a></code> | <code>{[ key: string ]: string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> \| string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}</code> | Attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.flags">flags</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]</code> | Flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.metadata">metadata</a></code> | <code>constructs.MetadataEntry[]</code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.tags">tags</a></code> | <code>{[ key: string ]: string}</code> | Tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.uuid">uuid</a></code> | <code>string</code> | UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.id">id</a></code> | <code>string</code> | Node id, which is unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.path">path</a></code> | <code>string</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.cfnType">cfnType</a></code> | <code>string</code> | Type of CloudFormation resource. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.constructInfo">constructInfo</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.logicalId">logicalId</a></code> | <code>string</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.parent">parent</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.stack">stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Stack the node is contained. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.nodeType">nodeType</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a></code> | Type of node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.parentStack">parentStack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Parent stack. |

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.attributes"></a>

```typescript
public readonly attributes: {[ key: string ]: string | number | boolean | PlainObject | string | number | boolean | PlainObject[]};
```

- *Type:* {[ key: string ]: string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> | string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}

Attributes.

---

##### `flags`<sup>Optional</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.flags"></a>

```typescript
public readonly flags: FlagEnum[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]

Flags.

---

##### `metadata`<sup>Optional</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.metadata"></a>

```typescript
public readonly metadata: MetadataEntry[];
```

- *Type:* constructs.MetadataEntry[]

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.tags"></a>

```typescript
public readonly tags: {[ key: string ]: string};
```

- *Type:* {[ key: string ]: string}

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.store"></a>

```typescript
public readonly store: Store;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Store.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.uuid"></a>

```typescript
public readonly uuid: string;
```

- *Type:* string

UUID.

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.id"></a>

```typescript
public readonly id: string;
```

- *Type:* string

Node id, which is unique within parent scope.

---

##### `path`<sup>Required</sup> <a name="path" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.path"></a>

```typescript
public readonly path: string;
```

- *Type:* string

Path of the node.

---

##### `cfnType`<sup>Optional</sup> <a name="cfnType" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.cfnType"></a>

```typescript
public readonly cfnType: string;
```

- *Type:* string

Type of CloudFormation resource.

---

##### `constructInfo`<sup>Optional</sup> <a name="constructInfo" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.constructInfo"></a>

```typescript
public readonly constructInfo: ConstructInfo;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `logicalId`<sup>Optional</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.logicalId"></a>

```typescript
public readonly logicalId: string;
```

- *Type:* string

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.parent"></a>

```typescript
public readonly parent: Node;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

---

##### `stack`<sup>Optional</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.stack"></a>

```typescript
public readonly stack: StackNode;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained.

---

##### `nodeType`<sup>Optional</sup> <a name="nodeType" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.nodeType"></a>

```typescript
public readonly nodeType: NodeTypeEnum;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a>

Type of node.

---

##### `parentStack`<sup>Required</sup> <a name="parentStack" id="@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps.property.parentStack"></a>

```typescript
public readonly parentStack: StackNode;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Parent stack.

---

### INodePredicate <a name="INodePredicate" id="@aws-prototyping-sdk/cdk-graph.INodePredicate"></a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.INodePredicate">INodePredicate</a>

Predicate to match node.



### INodeProps <a name="INodeProps" id="@aws-prototyping-sdk/cdk-graph.INodeProps"></a>

- *Extends:* <a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps">ITypedNodeProps</a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.INodeProps">INodeProps</a>

Node props.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INodeProps.property.attributes">attributes</a></code> | <code>{[ key: string ]: string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> \| string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}</code> | Attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INodeProps.property.flags">flags</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]</code> | Flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INodeProps.property.metadata">metadata</a></code> | <code>constructs.MetadataEntry[]</code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INodeProps.property.tags">tags</a></code> | <code>{[ key: string ]: string}</code> | Tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INodeProps.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INodeProps.property.uuid">uuid</a></code> | <code>string</code> | UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INodeProps.property.id">id</a></code> | <code>string</code> | Node id, which is unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INodeProps.property.path">path</a></code> | <code>string</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INodeProps.property.cfnType">cfnType</a></code> | <code>string</code> | Type of CloudFormation resource. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INodeProps.property.constructInfo">constructInfo</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INodeProps.property.logicalId">logicalId</a></code> | <code>string</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INodeProps.property.parent">parent</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INodeProps.property.stack">stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Stack the node is contained. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.INodeProps.property.nodeType">nodeType</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a></code> | Type of node. |

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.INodeProps.property.attributes"></a>

```typescript
public readonly attributes: {[ key: string ]: string | number | boolean | PlainObject | string | number | boolean | PlainObject[]};
```

- *Type:* {[ key: string ]: string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> | string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}

Attributes.

---

##### `flags`<sup>Optional</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.INodeProps.property.flags"></a>

```typescript
public readonly flags: FlagEnum[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]

Flags.

---

##### `metadata`<sup>Optional</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.INodeProps.property.metadata"></a>

```typescript
public readonly metadata: MetadataEntry[];
```

- *Type:* constructs.MetadataEntry[]

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.INodeProps.property.tags"></a>

```typescript
public readonly tags: {[ key: string ]: string};
```

- *Type:* {[ key: string ]: string}

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.INodeProps.property.store"></a>

```typescript
public readonly store: Store;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Store.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.INodeProps.property.uuid"></a>

```typescript
public readonly uuid: string;
```

- *Type:* string

UUID.

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.INodeProps.property.id"></a>

```typescript
public readonly id: string;
```

- *Type:* string

Node id, which is unique within parent scope.

---

##### `path`<sup>Required</sup> <a name="path" id="@aws-prototyping-sdk/cdk-graph.INodeProps.property.path"></a>

```typescript
public readonly path: string;
```

- *Type:* string

Path of the node.

---

##### `cfnType`<sup>Optional</sup> <a name="cfnType" id="@aws-prototyping-sdk/cdk-graph.INodeProps.property.cfnType"></a>

```typescript
public readonly cfnType: string;
```

- *Type:* string

Type of CloudFormation resource.

---

##### `constructInfo`<sup>Optional</sup> <a name="constructInfo" id="@aws-prototyping-sdk/cdk-graph.INodeProps.property.constructInfo"></a>

```typescript
public readonly constructInfo: ConstructInfo;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `logicalId`<sup>Optional</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.INodeProps.property.logicalId"></a>

```typescript
public readonly logicalId: string;
```

- *Type:* string

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.INodeProps.property.parent"></a>

```typescript
public readonly parent: Node;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

---

##### `stack`<sup>Optional</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.INodeProps.property.stack"></a>

```typescript
public readonly stack: StackNode;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained.

---

##### `nodeType`<sup>Required</sup> <a name="nodeType" id="@aws-prototyping-sdk/cdk-graph.INodeProps.property.nodeType"></a>

```typescript
public readonly nodeType: NodeTypeEnum;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a>

Type of node.

---

### IOutputNodeProps <a name="IOutputNodeProps" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps"></a>

- *Extends:* <a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps">ITypedNodeProps</a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps">IOutputNodeProps</a>

OutputNode props.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.attributes">attributes</a></code> | <code>{[ key: string ]: string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> \| string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}</code> | Attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.flags">flags</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]</code> | Flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.metadata">metadata</a></code> | <code>constructs.MetadataEntry[]</code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.tags">tags</a></code> | <code>{[ key: string ]: string}</code> | Tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.uuid">uuid</a></code> | <code>string</code> | UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.id">id</a></code> | <code>string</code> | Node id, which is unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.path">path</a></code> | <code>string</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.cfnType">cfnType</a></code> | <code>string</code> | Type of CloudFormation resource. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.constructInfo">constructInfo</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.logicalId">logicalId</a></code> | <code>string</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.parent">parent</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.stack">stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Stack the node is contained. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.value">value</a></code> | <code>any</code> | Resolved output value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.description">description</a></code> | <code>string</code> | Description. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.exportName">exportName</a></code> | <code>string</code> | Export name. |

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.attributes"></a>

```typescript
public readonly attributes: {[ key: string ]: string | number | boolean | PlainObject | string | number | boolean | PlainObject[]};
```

- *Type:* {[ key: string ]: string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> | string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}

Attributes.

---

##### `flags`<sup>Optional</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.flags"></a>

```typescript
public readonly flags: FlagEnum[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]

Flags.

---

##### `metadata`<sup>Optional</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.metadata"></a>

```typescript
public readonly metadata: MetadataEntry[];
```

- *Type:* constructs.MetadataEntry[]

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.tags"></a>

```typescript
public readonly tags: {[ key: string ]: string};
```

- *Type:* {[ key: string ]: string}

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.store"></a>

```typescript
public readonly store: Store;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Store.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.uuid"></a>

```typescript
public readonly uuid: string;
```

- *Type:* string

UUID.

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.id"></a>

```typescript
public readonly id: string;
```

- *Type:* string

Node id, which is unique within parent scope.

---

##### `path`<sup>Required</sup> <a name="path" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.path"></a>

```typescript
public readonly path: string;
```

- *Type:* string

Path of the node.

---

##### `cfnType`<sup>Optional</sup> <a name="cfnType" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.cfnType"></a>

```typescript
public readonly cfnType: string;
```

- *Type:* string

Type of CloudFormation resource.

---

##### `constructInfo`<sup>Optional</sup> <a name="constructInfo" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.constructInfo"></a>

```typescript
public readonly constructInfo: ConstructInfo;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `logicalId`<sup>Optional</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.logicalId"></a>

```typescript
public readonly logicalId: string;
```

- *Type:* string

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.parent"></a>

```typescript
public readonly parent: Node;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

---

##### `stack`<sup>Optional</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.stack"></a>

```typescript
public readonly stack: StackNode;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained.

---

##### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.value"></a>

```typescript
public readonly value: any;
```

- *Type:* any

Resolved output value.

---

##### `description`<sup>Optional</sup> <a name="description" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.description"></a>

```typescript
public readonly description: string;
```

- *Type:* string

Description.

---

##### `exportName`<sup>Optional</sup> <a name="exportName" id="@aws-prototyping-sdk/cdk-graph.IOutputNodeProps.property.exportName"></a>

```typescript
public readonly exportName: string;
```

- *Type:* string

Export name.

---

### IParameterNodeProps <a name="IParameterNodeProps" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps"></a>

- *Extends:* <a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps">ITypedNodeProps</a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps">IParameterNodeProps</a>

{@link ParameterNode} props.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.attributes">attributes</a></code> | <code>{[ key: string ]: string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> \| string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}</code> | Attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.flags">flags</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]</code> | Flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.metadata">metadata</a></code> | <code>constructs.MetadataEntry[]</code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.tags">tags</a></code> | <code>{[ key: string ]: string}</code> | Tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.uuid">uuid</a></code> | <code>string</code> | UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.id">id</a></code> | <code>string</code> | Node id, which is unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.path">path</a></code> | <code>string</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.cfnType">cfnType</a></code> | <code>string</code> | Type of CloudFormation resource. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.constructInfo">constructInfo</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.logicalId">logicalId</a></code> | <code>string</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.parent">parent</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.stack">stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Stack the node is contained. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.parameterType">parameterType</a></code> | <code>string</code> | Parameter type. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.value">value</a></code> | <code>any</code> | Resolved value. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.description">description</a></code> | <code>string</code> | Description. |

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.attributes"></a>

```typescript
public readonly attributes: {[ key: string ]: string | number | boolean | PlainObject | string | number | boolean | PlainObject[]};
```

- *Type:* {[ key: string ]: string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> | string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}

Attributes.

---

##### `flags`<sup>Optional</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.flags"></a>

```typescript
public readonly flags: FlagEnum[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]

Flags.

---

##### `metadata`<sup>Optional</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.metadata"></a>

```typescript
public readonly metadata: MetadataEntry[];
```

- *Type:* constructs.MetadataEntry[]

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.tags"></a>

```typescript
public readonly tags: {[ key: string ]: string};
```

- *Type:* {[ key: string ]: string}

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.store"></a>

```typescript
public readonly store: Store;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Store.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.uuid"></a>

```typescript
public readonly uuid: string;
```

- *Type:* string

UUID.

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.id"></a>

```typescript
public readonly id: string;
```

- *Type:* string

Node id, which is unique within parent scope.

---

##### `path`<sup>Required</sup> <a name="path" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.path"></a>

```typescript
public readonly path: string;
```

- *Type:* string

Path of the node.

---

##### `cfnType`<sup>Optional</sup> <a name="cfnType" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.cfnType"></a>

```typescript
public readonly cfnType: string;
```

- *Type:* string

Type of CloudFormation resource.

---

##### `constructInfo`<sup>Optional</sup> <a name="constructInfo" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.constructInfo"></a>

```typescript
public readonly constructInfo: ConstructInfo;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `logicalId`<sup>Optional</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.logicalId"></a>

```typescript
public readonly logicalId: string;
```

- *Type:* string

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.parent"></a>

```typescript
public readonly parent: Node;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

---

##### `stack`<sup>Optional</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.stack"></a>

```typescript
public readonly stack: StackNode;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained.

---

##### `parameterType`<sup>Required</sup> <a name="parameterType" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.parameterType"></a>

```typescript
public readonly parameterType: string;
```

- *Type:* string

Parameter type.

---

##### `value`<sup>Required</sup> <a name="value" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.value"></a>

```typescript
public readonly value: any;
```

- *Type:* any

Resolved value.

---

##### `description`<sup>Optional</sup> <a name="description" id="@aws-prototyping-sdk/cdk-graph.IParameterNodeProps.property.description"></a>

```typescript
public readonly description: string;
```

- *Type:* string

Description.

---

### IReferenceProps <a name="IReferenceProps" id="@aws-prototyping-sdk/cdk-graph.IReferenceProps"></a>

- *Extends:* <a href="#@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps">ITypedEdgeProps</a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IReferenceProps">IReferenceProps</a>

Reference edge props.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.attributes">attributes</a></code> | <code>{[ key: string ]: string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> \| string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}</code> | Attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.flags">flags</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]</code> | Flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.metadata">metadata</a></code> | <code>constructs.MetadataEntry[]</code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.tags">tags</a></code> | <code>{[ key: string ]: string}</code> | Tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.uuid">uuid</a></code> | <code>string</code> | UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.source">source</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Edge **source** is the node that defines the edge (tail). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.target">target</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Edge **target** is the node being referenced by the **source** (head). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.referenceType">referenceType</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ReferenceTypeEnum">ReferenceTypeEnum</a></code> | Type of reference. |

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.attributes"></a>

```typescript
public readonly attributes: {[ key: string ]: string | number | boolean | PlainObject | string | number | boolean | PlainObject[]};
```

- *Type:* {[ key: string ]: string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> | string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}

Attributes.

---

##### `flags`<sup>Optional</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.flags"></a>

```typescript
public readonly flags: FlagEnum[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]

Flags.

---

##### `metadata`<sup>Optional</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.metadata"></a>

```typescript
public readonly metadata: MetadataEntry[];
```

- *Type:* constructs.MetadataEntry[]

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.tags"></a>

```typescript
public readonly tags: {[ key: string ]: string};
```

- *Type:* {[ key: string ]: string}

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.store"></a>

```typescript
public readonly store: Store;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Store.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.uuid"></a>

```typescript
public readonly uuid: string;
```

- *Type:* string

UUID.

---

##### `source`<sup>Required</sup> <a name="source" id="@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.source"></a>

```typescript
public readonly source: Node;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Edge **source** is the node that defines the edge (tail).

---

##### `target`<sup>Required</sup> <a name="target" id="@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.target"></a>

```typescript
public readonly target: Node;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Edge **target** is the node being referenced by the **source** (head).

---

##### `referenceType`<sup>Optional</sup> <a name="referenceType" id="@aws-prototyping-sdk/cdk-graph.IReferenceProps.property.referenceType"></a>

```typescript
public readonly referenceType: ReferenceTypeEnum;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ReferenceTypeEnum">ReferenceTypeEnum</a>

Type of reference.

---

### IResourceNodeProps <a name="IResourceNodeProps" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps"></a>

- *Extends:* <a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps">ITypedNodeProps</a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps">IResourceNodeProps</a>

ResourceNode props.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.attributes">attributes</a></code> | <code>{[ key: string ]: string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> \| string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}</code> | Attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.flags">flags</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]</code> | Flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.metadata">metadata</a></code> | <code>constructs.MetadataEntry[]</code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.tags">tags</a></code> | <code>{[ key: string ]: string}</code> | Tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.uuid">uuid</a></code> | <code>string</code> | UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.id">id</a></code> | <code>string</code> | Node id, which is unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.path">path</a></code> | <code>string</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.cfnType">cfnType</a></code> | <code>string</code> | Type of CloudFormation resource. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.constructInfo">constructInfo</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.logicalId">logicalId</a></code> | <code>string</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.parent">parent</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.stack">stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Stack the node is contained. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.cdkOwned">cdkOwned</a></code> | <code>boolean</code> | Indicates if this resource is owned by cdk (defined in cdk library). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.nodeType">nodeType</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a></code> | Type of node. |

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.attributes"></a>

```typescript
public readonly attributes: {[ key: string ]: string | number | boolean | PlainObject | string | number | boolean | PlainObject[]};
```

- *Type:* {[ key: string ]: string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> | string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}

Attributes.

---

##### `flags`<sup>Optional</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.flags"></a>

```typescript
public readonly flags: FlagEnum[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]

Flags.

---

##### `metadata`<sup>Optional</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.metadata"></a>

```typescript
public readonly metadata: MetadataEntry[];
```

- *Type:* constructs.MetadataEntry[]

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.tags"></a>

```typescript
public readonly tags: {[ key: string ]: string};
```

- *Type:* {[ key: string ]: string}

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.store"></a>

```typescript
public readonly store: Store;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Store.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.uuid"></a>

```typescript
public readonly uuid: string;
```

- *Type:* string

UUID.

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.id"></a>

```typescript
public readonly id: string;
```

- *Type:* string

Node id, which is unique within parent scope.

---

##### `path`<sup>Required</sup> <a name="path" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.path"></a>

```typescript
public readonly path: string;
```

- *Type:* string

Path of the node.

---

##### `cfnType`<sup>Optional</sup> <a name="cfnType" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.cfnType"></a>

```typescript
public readonly cfnType: string;
```

- *Type:* string

Type of CloudFormation resource.

---

##### `constructInfo`<sup>Optional</sup> <a name="constructInfo" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.constructInfo"></a>

```typescript
public readonly constructInfo: ConstructInfo;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `logicalId`<sup>Optional</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.logicalId"></a>

```typescript
public readonly logicalId: string;
```

- *Type:* string

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.parent"></a>

```typescript
public readonly parent: Node;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

---

##### `stack`<sup>Optional</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.stack"></a>

```typescript
public readonly stack: StackNode;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained.

---

##### `cdkOwned`<sup>Required</sup> <a name="cdkOwned" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.cdkOwned"></a>

```typescript
public readonly cdkOwned: boolean;
```

- *Type:* boolean

Indicates if this resource is owned by cdk (defined in cdk library).

---

##### `nodeType`<sup>Optional</sup> <a name="nodeType" id="@aws-prototyping-sdk/cdk-graph.IResourceNodeProps.property.nodeType"></a>

```typescript
public readonly nodeType: NodeTypeEnum;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a>

Type of node.

---

### ISerializableEdge <a name="ISerializableEdge" id="@aws-prototyping-sdk/cdk-graph.ISerializableEdge"></a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference">AttributeReference</a>, <a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>, <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>, <a href="#@aws-prototyping-sdk/cdk-graph.ImportReference">ImportReference</a>, <a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>, <a href="#@aws-prototyping-sdk/cdk-graph.ISerializableEdge">ISerializableEdge</a>

Interface for serializable graph edge entity.



### ISerializableEntity <a name="ISerializableEntity" id="@aws-prototyping-sdk/cdk-graph.ISerializableEntity"></a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.AppNode">AppNode</a>, <a href="#@aws-prototyping-sdk/cdk-graph.AttributeReference">AttributeReference</a>, <a href="#@aws-prototyping-sdk/cdk-graph.BaseEntity">BaseEntity</a>, <a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode">CfnResourceNode</a>, <a href="#@aws-prototyping-sdk/cdk-graph.Dependency">Dependency</a>, <a href="#@aws-prototyping-sdk/cdk-graph.Edge">Edge</a>, <a href="#@aws-prototyping-sdk/cdk-graph.ImportReference">ImportReference</a>, <a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode">NestedStackNode</a>, <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>, <a href="#@aws-prototyping-sdk/cdk-graph.OutputNode">OutputNode</a>, <a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode">ParameterNode</a>, <a href="#@aws-prototyping-sdk/cdk-graph.Reference">Reference</a>, <a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode">ResourceNode</a>, <a href="#@aws-prototyping-sdk/cdk-graph.RootNode">RootNode</a>, <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>, <a href="#@aws-prototyping-sdk/cdk-graph.StageNode">StageNode</a>, <a href="#@aws-prototyping-sdk/cdk-graph.ISerializableEntity">ISerializableEntity</a>

Interface for serializable graph entities.



### ISerializableGraphStore <a name="ISerializableGraphStore" id="@aws-prototyping-sdk/cdk-graph.ISerializableGraphStore"></a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>, <a href="#@aws-prototyping-sdk/cdk-graph.ISerializableGraphStore">ISerializableGraphStore</a>

Interface for serializable graph store.

#### Methods <a name="Methods" id="Methods"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ISerializableGraphStore.serialize">serialize</a></code> | *No description.* |

---

##### `serialize` <a name="serialize" id="@aws-prototyping-sdk/cdk-graph.ISerializableGraphStore.serialize"></a>

```typescript
public serialize(): SGGraphStore
```


### ISerializableNode <a name="ISerializableNode" id="@aws-prototyping-sdk/cdk-graph.ISerializableNode"></a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.AppNode">AppNode</a>, <a href="#@aws-prototyping-sdk/cdk-graph.CfnResourceNode">CfnResourceNode</a>, <a href="#@aws-prototyping-sdk/cdk-graph.NestedStackNode">NestedStackNode</a>, <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>, <a href="#@aws-prototyping-sdk/cdk-graph.OutputNode">OutputNode</a>, <a href="#@aws-prototyping-sdk/cdk-graph.ParameterNode">ParameterNode</a>, <a href="#@aws-prototyping-sdk/cdk-graph.ResourceNode">ResourceNode</a>, <a href="#@aws-prototyping-sdk/cdk-graph.RootNode">RootNode</a>, <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>, <a href="#@aws-prototyping-sdk/cdk-graph.StageNode">StageNode</a>, <a href="#@aws-prototyping-sdk/cdk-graph.ISerializableNode">ISerializableNode</a>

Interface for serializable graph node entity.



### IStackNodeProps <a name="IStackNodeProps" id="@aws-prototyping-sdk/cdk-graph.IStackNodeProps"></a>

- *Extends:* <a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps">ITypedNodeProps</a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps">INestedStackNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps">IStackNodeProps</a>

{@link StackNode} props.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.attributes">attributes</a></code> | <code>{[ key: string ]: string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> \| string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}</code> | Attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.flags">flags</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]</code> | Flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.metadata">metadata</a></code> | <code>constructs.MetadataEntry[]</code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.tags">tags</a></code> | <code>{[ key: string ]: string}</code> | Tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.uuid">uuid</a></code> | <code>string</code> | UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.id">id</a></code> | <code>string</code> | Node id, which is unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.path">path</a></code> | <code>string</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.cfnType">cfnType</a></code> | <code>string</code> | Type of CloudFormation resource. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.constructInfo">constructInfo</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.logicalId">logicalId</a></code> | <code>string</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.parent">parent</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.stack">stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Stack the node is contained. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.nodeType">nodeType</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a></code> | Type of node. |

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.attributes"></a>

```typescript
public readonly attributes: {[ key: string ]: string | number | boolean | PlainObject | string | number | boolean | PlainObject[]};
```

- *Type:* {[ key: string ]: string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> | string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}

Attributes.

---

##### `flags`<sup>Optional</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.flags"></a>

```typescript
public readonly flags: FlagEnum[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]

Flags.

---

##### `metadata`<sup>Optional</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.metadata"></a>

```typescript
public readonly metadata: MetadataEntry[];
```

- *Type:* constructs.MetadataEntry[]

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.tags"></a>

```typescript
public readonly tags: {[ key: string ]: string};
```

- *Type:* {[ key: string ]: string}

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.store"></a>

```typescript
public readonly store: Store;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Store.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.uuid"></a>

```typescript
public readonly uuid: string;
```

- *Type:* string

UUID.

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.id"></a>

```typescript
public readonly id: string;
```

- *Type:* string

Node id, which is unique within parent scope.

---

##### `path`<sup>Required</sup> <a name="path" id="@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.path"></a>

```typescript
public readonly path: string;
```

- *Type:* string

Path of the node.

---

##### `cfnType`<sup>Optional</sup> <a name="cfnType" id="@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.cfnType"></a>

```typescript
public readonly cfnType: string;
```

- *Type:* string

Type of CloudFormation resource.

---

##### `constructInfo`<sup>Optional</sup> <a name="constructInfo" id="@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.constructInfo"></a>

```typescript
public readonly constructInfo: ConstructInfo;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `logicalId`<sup>Optional</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.logicalId"></a>

```typescript
public readonly logicalId: string;
```

- *Type:* string

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.parent"></a>

```typescript
public readonly parent: Node;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

---

##### `stack`<sup>Optional</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.stack"></a>

```typescript
public readonly stack: StackNode;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained.

---

##### `nodeType`<sup>Optional</sup> <a name="nodeType" id="@aws-prototyping-sdk/cdk-graph.IStackNodeProps.property.nodeType"></a>

```typescript
public readonly nodeType: NodeTypeEnum;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum">NodeTypeEnum</a>

Type of node.

---

### IStoreCounts <a name="IStoreCounts" id="@aws-prototyping-sdk/cdk-graph.IStoreCounts"></a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IStoreCounts">IStoreCounts</a>

Interface for store counts.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStoreCounts.property.cfnResources">cfnResources</a></code> | <code>{[ key: string ]: number}</code> | Returns {@link ICounterRecord} containing total number of each *cfnResourceType*. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStoreCounts.property.edges">edges</a></code> | <code>number</code> | Counts total number of edges in the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStoreCounts.property.edgeTypes">edgeTypes</a></code> | <code>{[ key: string ]: number}</code> | Returns {@link ICounterRecord} containing total number of each *edge type* ({@link EdgeTypeEnum}). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStoreCounts.property.nodes">nodes</a></code> | <code>number</code> | Counts total number of nodes in the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStoreCounts.property.nodeTypes">nodeTypes</a></code> | <code>{[ key: string ]: number}</code> | Returns {@link ICounterRecord} containing total number of each *node type* ({@link NodeTypeEnum}). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStoreCounts.property.stacks">stacks</a></code> | <code>number</code> | Counts total number of stacks in the store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.IStoreCounts.property.stages">stages</a></code> | <code>number</code> | Counts total number of stages in the store. |

---

##### `cfnResources`<sup>Required</sup> <a name="cfnResources" id="@aws-prototyping-sdk/cdk-graph.IStoreCounts.property.cfnResources"></a>

```typescript
public readonly cfnResources: {[ key: string ]: number};
```

- *Type:* {[ key: string ]: number}

Returns {@link ICounterRecord} containing total number of each *cfnResourceType*.

---

##### `edges`<sup>Required</sup> <a name="edges" id="@aws-prototyping-sdk/cdk-graph.IStoreCounts.property.edges"></a>

```typescript
public readonly edges: number;
```

- *Type:* number

Counts total number of edges in the store.

---

##### `edgeTypes`<sup>Required</sup> <a name="edgeTypes" id="@aws-prototyping-sdk/cdk-graph.IStoreCounts.property.edgeTypes"></a>

```typescript
public readonly edgeTypes: {[ key: string ]: number};
```

- *Type:* {[ key: string ]: number}

Returns {@link ICounterRecord} containing total number of each *edge type* ({@link EdgeTypeEnum}).

---

##### `nodes`<sup>Required</sup> <a name="nodes" id="@aws-prototyping-sdk/cdk-graph.IStoreCounts.property.nodes"></a>

```typescript
public readonly nodes: number;
```

- *Type:* number

Counts total number of nodes in the store.

---

##### `nodeTypes`<sup>Required</sup> <a name="nodeTypes" id="@aws-prototyping-sdk/cdk-graph.IStoreCounts.property.nodeTypes"></a>

```typescript
public readonly nodeTypes: {[ key: string ]: number};
```

- *Type:* {[ key: string ]: number}

Returns {@link ICounterRecord} containing total number of each *node type* ({@link NodeTypeEnum}).

---

##### `stacks`<sup>Required</sup> <a name="stacks" id="@aws-prototyping-sdk/cdk-graph.IStoreCounts.property.stacks"></a>

```typescript
public readonly stacks: number;
```

- *Type:* number

Counts total number of stacks in the store.

---

##### `stages`<sup>Required</sup> <a name="stages" id="@aws-prototyping-sdk/cdk-graph.IStoreCounts.property.stages"></a>

```typescript
public readonly stages: number;
```

- *Type:* number

Counts total number of stages in the store.

---

### ITypedEdgeProps <a name="ITypedEdgeProps" id="@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps"></a>

- *Extends:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityProps">IBaseEntityProps</a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.IAttributeReferenceProps">IAttributeReferenceProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IEdgeProps">IEdgeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IReferenceProps">IReferenceProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps">ITypedEdgeProps</a>

Base edge props agnostic to edge type.

Used for extending per edge class with type specifics.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps.property.attributes">attributes</a></code> | <code>{[ key: string ]: string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> \| string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}</code> | Attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps.property.flags">flags</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]</code> | Flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps.property.metadata">metadata</a></code> | <code>constructs.MetadataEntry[]</code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps.property.tags">tags</a></code> | <code>{[ key: string ]: string}</code> | Tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps.property.uuid">uuid</a></code> | <code>string</code> | UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps.property.source">source</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Edge **source** is the node that defines the edge (tail). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps.property.target">target</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Edge **target** is the node being referenced by the **source** (head). |

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps.property.attributes"></a>

```typescript
public readonly attributes: {[ key: string ]: string | number | boolean | PlainObject | string | number | boolean | PlainObject[]};
```

- *Type:* {[ key: string ]: string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> | string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}

Attributes.

---

##### `flags`<sup>Optional</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps.property.flags"></a>

```typescript
public readonly flags: FlagEnum[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]

Flags.

---

##### `metadata`<sup>Optional</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps.property.metadata"></a>

```typescript
public readonly metadata: MetadataEntry[];
```

- *Type:* constructs.MetadataEntry[]

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps.property.tags"></a>

```typescript
public readonly tags: {[ key: string ]: string};
```

- *Type:* {[ key: string ]: string}

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps.property.store"></a>

```typescript
public readonly store: Store;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Store.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps.property.uuid"></a>

```typescript
public readonly uuid: string;
```

- *Type:* string

UUID.

---

##### `source`<sup>Required</sup> <a name="source" id="@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps.property.source"></a>

```typescript
public readonly source: Node;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Edge **source** is the node that defines the edge (tail).

---

##### `target`<sup>Required</sup> <a name="target" id="@aws-prototyping-sdk/cdk-graph.ITypedEdgeProps.property.target"></a>

```typescript
public readonly target: Node;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Edge **target** is the node being referenced by the **source** (head).

---

### ITypedNodeProps <a name="ITypedNodeProps" id="@aws-prototyping-sdk/cdk-graph.ITypedNodeProps"></a>

- *Extends:* <a href="#@aws-prototyping-sdk/cdk-graph.IBaseEntityProps">IBaseEntityProps</a>

- *Implemented By:* <a href="#@aws-prototyping-sdk/cdk-graph.ICfnResourceNodeProps">ICfnResourceNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.INestedStackNodeProps">INestedStackNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.INodeProps">INodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IOutputNodeProps">IOutputNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IParameterNodeProps">IParameterNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IResourceNodeProps">IResourceNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.IStackNodeProps">IStackNodeProps</a>, <a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps">ITypedNodeProps</a>

Base node props agnostic to node type.

Used for extending per node class with type specifics.


#### Properties <a name="Properties" id="Properties"></a>

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.attributes">attributes</a></code> | <code>{[ key: string ]: string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> \| string \| number \| boolean \| <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}</code> | Attributes. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.flags">flags</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]</code> | Flags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.metadata">metadata</a></code> | <code>constructs.MetadataEntry[]</code> | Metadata entries. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.tags">tags</a></code> | <code>{[ key: string ]: string}</code> | Tags. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.store">store</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a></code> | Store. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.uuid">uuid</a></code> | <code>string</code> | UUID. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.id">id</a></code> | <code>string</code> | Node id, which is unique within parent scope. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.path">path</a></code> | <code>string</code> | Path of the node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.cfnType">cfnType</a></code> | <code>string</code> | Type of CloudFormation resource. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.constructInfo">constructInfo</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a></code> | Synthesized construct information defining jii resolution data. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.logicalId">logicalId</a></code> | <code>string</code> | Logical id of the node, which is only unique within containing stack. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.parent">parent</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a></code> | Parent node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.stack">stack</a></code> | <code><a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a></code> | Stack the node is contained. |

---

##### `attributes`<sup>Optional</sup> <a name="attributes" id="@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.attributes"></a>

```typescript
public readonly attributes: {[ key: string ]: string | number | boolean | PlainObject | string | number | boolean | PlainObject[]};
```

- *Type:* {[ key: string ]: string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a> | string | number | boolean | <a href="#@aws-prototyping-sdk/cdk-graph.PlainObject">PlainObject</a>[]}

Attributes.

---

##### `flags`<sup>Optional</sup> <a name="flags" id="@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.flags"></a>

```typescript
public readonly flags: FlagEnum[];
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum">FlagEnum</a>[]

Flags.

---

##### `metadata`<sup>Optional</sup> <a name="metadata" id="@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.metadata"></a>

```typescript
public readonly metadata: MetadataEntry[];
```

- *Type:* constructs.MetadataEntry[]

Metadata entries.

---

##### `tags`<sup>Optional</sup> <a name="tags" id="@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.tags"></a>

```typescript
public readonly tags: {[ key: string ]: string};
```

- *Type:* {[ key: string ]: string}

Tags.

---

##### `store`<sup>Required</sup> <a name="store" id="@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.store"></a>

```typescript
public readonly store: Store;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Store">Store</a>

Store.

---

##### `uuid`<sup>Required</sup> <a name="uuid" id="@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.uuid"></a>

```typescript
public readonly uuid: string;
```

- *Type:* string

UUID.

---

##### `id`<sup>Required</sup> <a name="id" id="@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.id"></a>

```typescript
public readonly id: string;
```

- *Type:* string

Node id, which is unique within parent scope.

---

##### `path`<sup>Required</sup> <a name="path" id="@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.path"></a>

```typescript
public readonly path: string;
```

- *Type:* string

Path of the node.

---

##### `cfnType`<sup>Optional</sup> <a name="cfnType" id="@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.cfnType"></a>

```typescript
public readonly cfnType: string;
```

- *Type:* string

Type of CloudFormation resource.

---

##### `constructInfo`<sup>Optional</sup> <a name="constructInfo" id="@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.constructInfo"></a>

```typescript
public readonly constructInfo: ConstructInfo;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfo">ConstructInfo</a>

Synthesized construct information defining jii resolution data.

---

##### `logicalId`<sup>Optional</sup> <a name="logicalId" id="@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.logicalId"></a>

```typescript
public readonly logicalId: string;
```

- *Type:* string

Logical id of the node, which is only unique within containing stack.

---

##### `parent`<sup>Optional</sup> <a name="parent" id="@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.parent"></a>

```typescript
public readonly parent: Node;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.Node">Node</a>

Parent node.

---

##### `stack`<sup>Optional</sup> <a name="stack" id="@aws-prototyping-sdk/cdk-graph.ITypedNodeProps.property.stack"></a>

```typescript
public readonly stack: StackNode;
```

- *Type:* <a href="#@aws-prototyping-sdk/cdk-graph.StackNode">StackNode</a>

Stack the node is contained.

---

## Enums <a name="Enums" id="Enums"></a>

### CdkConstructIds <a name="CdkConstructIds" id="@aws-prototyping-sdk/cdk-graph.CdkConstructIds"></a>

Common cdk construct ids.

#### Members <a name="Members" id="Members"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkConstructIds.DEFAULT">DEFAULT</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkConstructIds.RESOURCE">RESOURCE</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkConstructIds.EXPORTS">EXPORTS</a></code> | *No description.* |

---

##### `DEFAULT` <a name="DEFAULT" id="@aws-prototyping-sdk/cdk-graph.CdkConstructIds.DEFAULT"></a>

---


##### `RESOURCE` <a name="RESOURCE" id="@aws-prototyping-sdk/cdk-graph.CdkConstructIds.RESOURCE"></a>

---


##### `EXPORTS` <a name="EXPORTS" id="@aws-prototyping-sdk/cdk-graph.CdkConstructIds.EXPORTS"></a>

---


### CdkGraphArtifacts <a name="CdkGraphArtifacts" id="@aws-prototyping-sdk/cdk-graph.CdkGraphArtifacts"></a>

CdkGraph core artifacts.

#### Members <a name="Members" id="Members"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphArtifacts.GRAPH_METADATA">GRAPH_METADATA</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CdkGraphArtifacts.GRAPH">GRAPH</a></code> | *No description.* |

---

##### `GRAPH_METADATA` <a name="GRAPH_METADATA" id="@aws-prototyping-sdk/cdk-graph.CdkGraphArtifacts.GRAPH_METADATA"></a>

---


##### `GRAPH` <a name="GRAPH" id="@aws-prototyping-sdk/cdk-graph.CdkGraphArtifacts.GRAPH"></a>

---


### CfnAttributesEnum <a name="CfnAttributesEnum" id="@aws-prototyping-sdk/cdk-graph.CfnAttributesEnum"></a>

Common cfn attribute keys.

#### Members <a name="Members" id="Members"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnAttributesEnum.TYPE">TYPE</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.CfnAttributesEnum.PROPS">PROPS</a></code> | *No description.* |

---

##### `TYPE` <a name="TYPE" id="@aws-prototyping-sdk/cdk-graph.CfnAttributesEnum.TYPE"></a>

---


##### `PROPS` <a name="PROPS" id="@aws-prototyping-sdk/cdk-graph.CfnAttributesEnum.PROPS"></a>

---


### ConstructInfoFqnEnum <a name="ConstructInfoFqnEnum" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum"></a>

Commonly used cdk construct info fqn (jsii fully-qualified ids).

#### Members <a name="Members" id="Members"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.APP">APP</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.PDKAPP_MONO">PDKAPP_MONO</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.PDKAPP">PDKAPP</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.STAGE">STAGE</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.STACK">STACK</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.NESTED_STACK">NESTED_STACK</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_STACK">CFN_STACK</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_OUTPUT">CFN_OUTPUT</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_PARAMETER">CFN_PARAMETER</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CUSTOM_RESOURCE">CUSTOM_RESOURCE</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.AWS_CUSTOM_RESOURCE">AWS_CUSTOM_RESOURCE</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CUSTOM_RESOURCE_PROVIDER">CUSTOM_RESOURCE_PROVIDER</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CUSTOM_RESOURCE_PROVIDER_2">CUSTOM_RESOURCE_PROVIDER_2</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.LAMBDA">LAMBDA</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_LAMBDA">CFN_LAMBDA</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.LAMBDA_LAYER_VERSION">LAMBDA_LAYER_VERSION</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_LAMBDA_LAYER_VERSION">CFN_LAMBDA_LAYER_VERSION</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.LAMBDA_ALIAS">LAMBDA_ALIAS</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_LAMBDA_ALIAS">CFN_LAMBDA_ALIAS</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.LAMBDA_BASE">LAMBDA_BASE</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.LAMBDA_SINGLETON">LAMBDA_SINGLETON</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.LAMBDA_LAYER_AWSCLI">LAMBDA_LAYER_AWSCLI</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_LAMBDA_PERMISSIONS">CFN_LAMBDA_PERMISSIONS</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.ASSET_STAGING">ASSET_STAGING</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.S3_ASSET">S3_ASSET</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.ECR_TARBALL_ASSET">ECR_TARBALL_ASSET</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.EC2_INSTANCE">EC2_INSTANCE</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_EC2_INSTANCE">CFN_EC2_INSTANCE</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.SECURITY_GROUP">SECURITY_GROUP</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_SECURITY_GROUP">CFN_SECURITY_GROUP</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.VPC">VPC</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_VPC">CFN_VPC</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.PRIVATE_SUBNET">PRIVATE_SUBNET</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_PRIVATE_SUBNET">CFN_PRIVATE_SUBNET</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.PUBLIC_SUBNET">PUBLIC_SUBNET</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_PUBLIC_SUBNET">CFN_PUBLIC_SUBNET</a></code> | *No description.* |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.IAM_ROLE">IAM_ROLE</a></code> | *No description.* |

---

##### `APP` <a name="APP" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.APP"></a>

---


##### `PDKAPP_MONO` <a name="PDKAPP_MONO" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.PDKAPP_MONO"></a>

---


##### `PDKAPP` <a name="PDKAPP" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.PDKAPP"></a>

---


##### `STAGE` <a name="STAGE" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.STAGE"></a>

---


##### `STACK` <a name="STACK" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.STACK"></a>

---


##### `NESTED_STACK` <a name="NESTED_STACK" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.NESTED_STACK"></a>

---


##### `CFN_STACK` <a name="CFN_STACK" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_STACK"></a>

---


##### `CFN_OUTPUT` <a name="CFN_OUTPUT" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_OUTPUT"></a>

---


##### `CFN_PARAMETER` <a name="CFN_PARAMETER" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_PARAMETER"></a>

---


##### `CUSTOM_RESOURCE` <a name="CUSTOM_RESOURCE" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CUSTOM_RESOURCE"></a>

---


##### `AWS_CUSTOM_RESOURCE` <a name="AWS_CUSTOM_RESOURCE" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.AWS_CUSTOM_RESOURCE"></a>

---


##### `CUSTOM_RESOURCE_PROVIDER` <a name="CUSTOM_RESOURCE_PROVIDER" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CUSTOM_RESOURCE_PROVIDER"></a>

---


##### `CUSTOM_RESOURCE_PROVIDER_2` <a name="CUSTOM_RESOURCE_PROVIDER_2" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CUSTOM_RESOURCE_PROVIDER_2"></a>

---


##### `LAMBDA` <a name="LAMBDA" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.LAMBDA"></a>

---


##### `CFN_LAMBDA` <a name="CFN_LAMBDA" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_LAMBDA"></a>

---


##### `LAMBDA_LAYER_VERSION` <a name="LAMBDA_LAYER_VERSION" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.LAMBDA_LAYER_VERSION"></a>

---


##### `CFN_LAMBDA_LAYER_VERSION` <a name="CFN_LAMBDA_LAYER_VERSION" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_LAMBDA_LAYER_VERSION"></a>

---


##### `LAMBDA_ALIAS` <a name="LAMBDA_ALIAS" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.LAMBDA_ALIAS"></a>

---


##### `CFN_LAMBDA_ALIAS` <a name="CFN_LAMBDA_ALIAS" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_LAMBDA_ALIAS"></a>

---


##### `LAMBDA_BASE` <a name="LAMBDA_BASE" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.LAMBDA_BASE"></a>

---


##### `LAMBDA_SINGLETON` <a name="LAMBDA_SINGLETON" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.LAMBDA_SINGLETON"></a>

---


##### `LAMBDA_LAYER_AWSCLI` <a name="LAMBDA_LAYER_AWSCLI" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.LAMBDA_LAYER_AWSCLI"></a>

---


##### `CFN_LAMBDA_PERMISSIONS` <a name="CFN_LAMBDA_PERMISSIONS" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_LAMBDA_PERMISSIONS"></a>

---


##### `ASSET_STAGING` <a name="ASSET_STAGING" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.ASSET_STAGING"></a>

---


##### `S3_ASSET` <a name="S3_ASSET" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.S3_ASSET"></a>

---


##### `ECR_TARBALL_ASSET` <a name="ECR_TARBALL_ASSET" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.ECR_TARBALL_ASSET"></a>

---


##### `EC2_INSTANCE` <a name="EC2_INSTANCE" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.EC2_INSTANCE"></a>

---


##### `CFN_EC2_INSTANCE` <a name="CFN_EC2_INSTANCE" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_EC2_INSTANCE"></a>

---


##### `SECURITY_GROUP` <a name="SECURITY_GROUP" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.SECURITY_GROUP"></a>

---


##### `CFN_SECURITY_GROUP` <a name="CFN_SECURITY_GROUP" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_SECURITY_GROUP"></a>

---


##### `VPC` <a name="VPC" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.VPC"></a>

---


##### `CFN_VPC` <a name="CFN_VPC" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_VPC"></a>

---


##### `PRIVATE_SUBNET` <a name="PRIVATE_SUBNET" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.PRIVATE_SUBNET"></a>

---


##### `CFN_PRIVATE_SUBNET` <a name="CFN_PRIVATE_SUBNET" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_PRIVATE_SUBNET"></a>

---


##### `PUBLIC_SUBNET` <a name="PUBLIC_SUBNET" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.PUBLIC_SUBNET"></a>

---


##### `CFN_PUBLIC_SUBNET` <a name="CFN_PUBLIC_SUBNET" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.CFN_PUBLIC_SUBNET"></a>

---


##### `IAM_ROLE` <a name="IAM_ROLE" id="@aws-prototyping-sdk/cdk-graph.ConstructInfoFqnEnum.IAM_ROLE"></a>

---


### EdgeDirectionEnum <a name="EdgeDirectionEnum" id="@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum"></a>

EdgeDirection specifies in which direction the edge is directed or if it is undirected.

#### Members <a name="Members" id="Members"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum.NONE">NONE</a></code> | Indicates that edge is *undirected*; |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum.FORWARD">FORWARD</a></code> | Indicates the edge is *directed* from the **source** to the **target**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum.BACK">BACK</a></code> | Indicates the edge is *directed* from the **target** to the **source**. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum.BOTH">BOTH</a></code> | Indicates the edge is *bi-directional*. |

---

##### `NONE` <a name="NONE" id="@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum.NONE"></a>

Indicates that edge is *undirected*;

meaning there is no directional relationship between the **source** and **target**.

---


##### `FORWARD` <a name="FORWARD" id="@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum.FORWARD"></a>

Indicates the edge is *directed* from the **source** to the **target**.

---


##### `BACK` <a name="BACK" id="@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum.BACK"></a>

Indicates the edge is *directed* from the **target** to the **source**.

---


##### `BOTH` <a name="BOTH" id="@aws-prototyping-sdk/cdk-graph.EdgeDirectionEnum.BOTH"></a>

Indicates the edge is *bi-directional*.

---


### EdgeTypeEnum <a name="EdgeTypeEnum" id="@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum"></a>

Edge types handles by the graph.

#### Members <a name="Members" id="Members"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum.CUSTOM">CUSTOM</a></code> | Custom edge. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum.REFERENCE">REFERENCE</a></code> | Reference edge (Ref, Fn::GetAtt, Fn::ImportValue). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum.DEPENDENCY">DEPENDENCY</a></code> | CloudFormation dependency edge. |

---

##### `CUSTOM` <a name="CUSTOM" id="@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum.CUSTOM"></a>

Custom edge.

---


##### `REFERENCE` <a name="REFERENCE" id="@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum.REFERENCE"></a>

Reference edge (Ref, Fn::GetAtt, Fn::ImportValue).

---


##### `DEPENDENCY` <a name="DEPENDENCY" id="@aws-prototyping-sdk/cdk-graph.EdgeTypeEnum.DEPENDENCY"></a>

CloudFormation dependency edge.

---


### FilterPreset <a name="FilterPreset" id="@aws-prototyping-sdk/cdk-graph.FilterPreset"></a>

Filter presets.

#### Members <a name="Members" id="Members"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.FilterPreset.COMPACT">COMPACT</a></code> | Collapses extraneous nodes to parent and cdk created nodes on themselves, and prunes extraneous edges. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.FilterPreset.NON_EXTRANEOUS">NON_EXTRANEOUS</a></code> | Collapses extraneous nodes to parent and prunes extraneous edges. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.FilterPreset.NONE">NONE</a></code> | No filtering is performed which will output **verbose** graph. |

---

##### `COMPACT` <a name="COMPACT" id="@aws-prototyping-sdk/cdk-graph.FilterPreset.COMPACT"></a>

Collapses extraneous nodes to parent and cdk created nodes on themselves, and prunes extraneous edges.

This most closely represents the developers code for the current application
and reduces the noise one expects.

---


##### `NON_EXTRANEOUS` <a name="NON_EXTRANEOUS" id="@aws-prototyping-sdk/cdk-graph.FilterPreset.NON_EXTRANEOUS"></a>

Collapses extraneous nodes to parent and prunes extraneous edges.

---


##### `NONE` <a name="NONE" id="@aws-prototyping-sdk/cdk-graph.FilterPreset.NONE"></a>

No filtering is performed which will output **verbose** graph.

---


### FilterStrategy <a name="FilterStrategy" id="@aws-prototyping-sdk/cdk-graph.FilterStrategy"></a>

Filter strategy to apply to filter matches.

#### Members <a name="Members" id="Members"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.FilterStrategy.PRUNE">PRUNE</a></code> | Remove filtered entity and all its edges. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.FilterStrategy.COLLAPSE">COLLAPSE</a></code> | Collapse all child entities of filtered entity into filtered entity; |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.FilterStrategy.COLLAPSE_TO_PARENT">COLLAPSE_TO_PARENT</a></code> | Collapse all filtered entities into their parent entity; |

---

##### `PRUNE` <a name="PRUNE" id="@aws-prototyping-sdk/cdk-graph.FilterStrategy.PRUNE"></a>

Remove filtered entity and all its edges.

---


##### `COLLAPSE` <a name="COLLAPSE" id="@aws-prototyping-sdk/cdk-graph.FilterStrategy.COLLAPSE"></a>

Collapse all child entities of filtered entity into filtered entity;

and hoist all edges.

---


##### `COLLAPSE_TO_PARENT` <a name="COLLAPSE_TO_PARENT" id="@aws-prototyping-sdk/cdk-graph.FilterStrategy.COLLAPSE_TO_PARENT"></a>

Collapse all filtered entities into their parent entity;

and hoist its edges to parent.

---


### FlagEnum <a name="FlagEnum" id="@aws-prototyping-sdk/cdk-graph.FlagEnum"></a>

Graph flags.

#### Members <a name="Members" id="Members"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum.CLUSTER">CLUSTER</a></code> | Indicates that node is a cluster (container) and treated like an emphasized subgraph. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum.GRAPH_CONTAINER">GRAPH_CONTAINER</a></code> | Indicates that node is non-resource container (Root, App) and used for structural purpose in the graph only. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum.EXTRANEOUS">EXTRANEOUS</a></code> | Indicates that the entity is extraneous and considered collapsible to parent without impact of intent. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum.ASSET">ASSET</a></code> | Indicates node is considered a CDK Asset (Lambda Code, Docker Image, etc). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum.CDK_OWNED">CDK_OWNED</a></code> | Indicates that node was created by CDK. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum.CFN_FQN">CFN_FQN</a></code> | Indicates node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum.CLOSED_EDGE">CLOSED_EDGE</a></code> | Indicates that edge is closed; |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum.MUTATED">MUTATED</a></code> | Indicates that entity was mutated; |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum.IMPORT">IMPORT</a></code> | Indicates that resource is imported into CDK (eg: `lambda.Function.fromFunctionName()`, `s3.Bucket.fromBucketArn()`). |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum.CUSTOM_RESOURCE">CUSTOM_RESOURCE</a></code> | Indicates if node is a CustomResource. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum.AWS_CUSTOM_RESOURCE">AWS_CUSTOM_RESOURCE</a></code> | Indicates if node is an AwsCustomResource, which is a custom resource that simply calls the AWS SDK API via singleton provider. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.FlagEnum.AWS_API_CALL_LAMBDA">AWS_API_CALL_LAMBDA</a></code> | Indicates if lambda function resource is a singleton AWS API call lambda for AwsCustomResources. |

---

##### `CLUSTER` <a name="CLUSTER" id="@aws-prototyping-sdk/cdk-graph.FlagEnum.CLUSTER"></a>

Indicates that node is a cluster (container) and treated like an emphasized subgraph.

---


##### `GRAPH_CONTAINER` <a name="GRAPH_CONTAINER" id="@aws-prototyping-sdk/cdk-graph.FlagEnum.GRAPH_CONTAINER"></a>

Indicates that node is non-resource container (Root, App) and used for structural purpose in the graph only.

---


##### `EXTRANEOUS` <a name="EXTRANEOUS" id="@aws-prototyping-sdk/cdk-graph.FlagEnum.EXTRANEOUS"></a>

Indicates that the entity is extraneous and considered collapsible to parent without impact of intent.

---


##### `ASSET` <a name="ASSET" id="@aws-prototyping-sdk/cdk-graph.FlagEnum.ASSET"></a>

Indicates node is considered a CDK Asset (Lambda Code, Docker Image, etc).

---


##### `CDK_OWNED` <a name="CDK_OWNED" id="@aws-prototyping-sdk/cdk-graph.FlagEnum.CDK_OWNED"></a>

Indicates that node was created by CDK.

> [https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.Resource.html#static-iswbrownedwbrresourceconstruct](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.Resource.html#static-iswbrownedwbrresourceconstruct)

---


##### `CFN_FQN` <a name="CFN_FQN" id="@aws-prototyping-sdk/cdk-graph.FlagEnum.CFN_FQN"></a>

Indicates node ConstructInfoFqn denotes a `aws-cdk-lib.*.Cfn*` construct.

---


##### `CLOSED_EDGE` <a name="CLOSED_EDGE" id="@aws-prototyping-sdk/cdk-graph.FlagEnum.CLOSED_EDGE"></a>

Indicates that edge is closed;

meaning `source === target`. This flag only gets applied on creation of edge, not during mutations to maintain initial intent.

---


##### `MUTATED` <a name="MUTATED" id="@aws-prototyping-sdk/cdk-graph.FlagEnum.MUTATED"></a>

Indicates that entity was mutated;

meaning a mutation was performed to change originally computed graph value.

---


##### `IMPORT` <a name="IMPORT" id="@aws-prototyping-sdk/cdk-graph.FlagEnum.IMPORT"></a>

Indicates that resource is imported into CDK (eg: `lambda.Function.fromFunctionName()`, `s3.Bucket.fromBucketArn()`).

---


##### `CUSTOM_RESOURCE` <a name="CUSTOM_RESOURCE" id="@aws-prototyping-sdk/cdk-graph.FlagEnum.CUSTOM_RESOURCE"></a>

Indicates if node is a CustomResource.

> [https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.custom_resources-readme.html](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.custom_resources-readme.html)

---


##### `AWS_CUSTOM_RESOURCE` <a name="AWS_CUSTOM_RESOURCE" id="@aws-prototyping-sdk/cdk-graph.FlagEnum.AWS_CUSTOM_RESOURCE"></a>

Indicates if node is an AwsCustomResource, which is a custom resource that simply calls the AWS SDK API via singleton provider.

> [https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.custom_resources.AwsCustomResource.html](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.custom_resources.AwsCustomResource.html)

---


##### `AWS_API_CALL_LAMBDA` <a name="AWS_API_CALL_LAMBDA" id="@aws-prototyping-sdk/cdk-graph.FlagEnum.AWS_API_CALL_LAMBDA"></a>

Indicates if lambda function resource is a singleton AWS API call lambda for AwsCustomResources.

> [https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.custom_resources.AwsCustomResource.html](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.custom_resources.AwsCustomResource.html)

---


### MetadataTypeEnum <a name="MetadataTypeEnum" id="@aws-prototyping-sdk/cdk-graph.MetadataTypeEnum"></a>

Common cdk metadata types.

#### Members <a name="Members" id="Members"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.MetadataTypeEnum.LOGICAL_ID">LOGICAL_ID</a></code> | *No description.* |

---

##### `LOGICAL_ID` <a name="LOGICAL_ID" id="@aws-prototyping-sdk/cdk-graph.MetadataTypeEnum.LOGICAL_ID"></a>

---


### NodeTypeEnum <a name="NodeTypeEnum" id="@aws-prototyping-sdk/cdk-graph.NodeTypeEnum"></a>

Node types handled by the graph.

#### Members <a name="Members" id="Members"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.DEFAULT">DEFAULT</a></code> | Default node type - used for all nodes that don't have explicit type defined. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.CFN_RESOURCE">CFN_RESOURCE</a></code> | L1 cfn resource node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.RESOURCE">RESOURCE</a></code> | L2 cdk resource node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.CUSTOM_RESOURCE">CUSTOM_RESOURCE</a></code> | Cdk customer resource node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.ROOT">ROOT</a></code> | Graph root node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.APP">APP</a></code> | Cdk App node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.STAGE">STAGE</a></code> | Cdk Stage node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.STACK">STACK</a></code> | Cdk Stack node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.NESTED_STACK">NESTED_STACK</a></code> | Cdk NestedStack node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.OUTPUT">OUTPUT</a></code> | CfnOutput node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.PARAMETER">PARAMETER</a></code> | CfnParameter node. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.ASSET">ASSET</a></code> | Cdk asset node. |

---

##### `DEFAULT` <a name="DEFAULT" id="@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.DEFAULT"></a>

Default node type - used for all nodes that don't have explicit type defined.

---


##### `CFN_RESOURCE` <a name="CFN_RESOURCE" id="@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.CFN_RESOURCE"></a>

L1 cfn resource node.

---


##### `RESOURCE` <a name="RESOURCE" id="@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.RESOURCE"></a>

L2 cdk resource node.

---


##### `CUSTOM_RESOURCE` <a name="CUSTOM_RESOURCE" id="@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.CUSTOM_RESOURCE"></a>

Cdk customer resource node.

---


##### `ROOT` <a name="ROOT" id="@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.ROOT"></a>

Graph root node.

---


##### `APP` <a name="APP" id="@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.APP"></a>

Cdk App node.

---


##### `STAGE` <a name="STAGE" id="@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.STAGE"></a>

Cdk Stage node.

---


##### `STACK` <a name="STACK" id="@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.STACK"></a>

Cdk Stack node.

---


##### `NESTED_STACK` <a name="NESTED_STACK" id="@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.NESTED_STACK"></a>

Cdk NestedStack node.

---


##### `OUTPUT` <a name="OUTPUT" id="@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.OUTPUT"></a>

CfnOutput node.

---


##### `PARAMETER` <a name="PARAMETER" id="@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.PARAMETER"></a>

CfnParameter node.

---


##### `ASSET` <a name="ASSET" id="@aws-prototyping-sdk/cdk-graph.NodeTypeEnum.ASSET"></a>

Cdk asset node.

---


### ReferenceTypeEnum <a name="ReferenceTypeEnum" id="@aws-prototyping-sdk/cdk-graph.ReferenceTypeEnum"></a>

Reference edge types.

#### Members <a name="Members" id="Members"></a>

| **Name** | **Description** |
| --- | --- |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ReferenceTypeEnum.REF">REF</a></code> | CloudFormation **Ref** reference. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ReferenceTypeEnum.ATTRIBUTE">ATTRIBUTE</a></code> | CloudFormation **Fn::GetAtt** reference. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ReferenceTypeEnum.IMPORT">IMPORT</a></code> | CloudFormation **Fn::ImportValue** reference. |
| <code><a href="#@aws-prototyping-sdk/cdk-graph.ReferenceTypeEnum.IMPORT_ARN">IMPORT_ARN</a></code> | CloudFormation **Fn::Join** reference of imported resourced (eg: `s3.Bucket.fromBucketArn()`). |

---

##### `REF` <a name="REF" id="@aws-prototyping-sdk/cdk-graph.ReferenceTypeEnum.REF"></a>

CloudFormation **Ref** reference.

---


##### `ATTRIBUTE` <a name="ATTRIBUTE" id="@aws-prototyping-sdk/cdk-graph.ReferenceTypeEnum.ATTRIBUTE"></a>

CloudFormation **Fn::GetAtt** reference.

---


##### `IMPORT` <a name="IMPORT" id="@aws-prototyping-sdk/cdk-graph.ReferenceTypeEnum.IMPORT"></a>

CloudFormation **Fn::ImportValue** reference.

---


##### `IMPORT_ARN` <a name="IMPORT_ARN" id="@aws-prototyping-sdk/cdk-graph.ReferenceTypeEnum.IMPORT_ARN"></a>

CloudFormation **Fn::Join** reference of imported resourced (eg: `s3.Bucket.fromBucketArn()`).

---

