## Diagram Plugin - Cdk Graph
`@aws-prototyping-sdk/cdk-graph-plugin-diagram`
![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)
![alpha](https://img.shields.io/badge/version-alpha-red.svg) \
[![API Documentation](https://img.shields.io/badge/view-API_Documentation-blue.svg)](https://aws.github.io/aws-prototyping-sdk/typescript/cdk-graph-plugin-diagram/index.html)
[![Source Code](https://img.shields.io/badge/view-Source_Code-blue.svg)](https://github.com/aws/aws-prototyping-sdk/tree/mainline/packages/cdk-graph-plugin-diagram)
This plugin generates diagrams utilizing the [cdk-graph](https://aws.github.io/aws-prototyping-sdk/typescript/cdk-graph/index.html) framework.
> More comprehensive documentation to come as this package stabilizes.
> **Disclaimer:** This is the first **cdk graph** plugin, it is highly *experimental*, and subject to major refactors as we gain feedback from the community.
> **BREAKING CHANGES** (pre-release)
>
> * `<= v0.14.8`: Only the last stage of a multi stage app will be rendered by default, which is commonly the production stage. Use the `theme.rendering.stage` config option to override this for each graph or in defaults.
| | |
| -------------------------------------------------------------------------- | ----------------------------------------------------------------------- |
| <img src="docs/assets/cdk-graph-plugin-diagram/default.png" width="300" /> | <img src="docs/assets/cdk-graph-plugin-diagram/dark.png" width="300" /> |
### Quick Start
```python
// bin/app.ts
// Must wrap cdk app with async IIFE function to enable async cdk-graph report
(async () => {
const app = new App();
// ... add stacks, etc
const graph = new CdkGraph(app, {
plugins: [new CdkGraphDiagramPlugin()],
});
app.synth();
// async cdk-graph reporting hook
await graph.report();
})();
// => cdk.out/diagram.dot
// => cdk.out/diagram.svg
// => cdk.out/diagram.png
```
> This plugin currently only supports `async report()` generation following the above example. **Make sure to wrap the cdk app with *async IIFE*.**
### Supported Formats
| Format | Status | Extends | Provider |
| ----------------------------------------------- | ---------------------------------------------------------- | ----------------------------------------------- | ----------------------------------- |
| [DOT](https://graphviz.org/docs/outputs/canon/) | ![beta](https://img.shields.io/badge/status-beta-cyan.svg) | - | [Graphviz](docs/graphviz/README.md) |
| [SVG](https://graphviz.org/docs/outputs/svg/) | ![beta](https://img.shields.io/badge/status-beta-cyan.svg) | [DOT](https://graphviz.org/docs/outputs/canon/) | [Graphviz](docs/graphviz/README.md) |
| [PNG](https://graphviz.org/docs/outputs/png/) | ![beta](https://img.shields.io/badge/status-beta-cyan.svg) | [SVG](https://graphviz.org/docs/outputs/canon/) | [Graphviz](docs/graphviz/README.md) |
---
### Diagram Providers
| Provider | Status | Formats |
| ----------------------------------- | -------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| [Graphviz](docs/graphviz/README.md) | ![alpha](https://img.shields.io/badge/status-alpha-orange.svg) | [DOT](https://graphviz.org/docs/outputs/canon/), [SVG](https://graphviz.org/docs/outputs/svg/), [PNG](https://graphviz.org/docs/outputs/png/) |
| [Drawio](docs/drawio/README.md) | ![design](https://img.shields.io/badge/status-design-tan.svg) | *TBD: very early stage design and development* |
---
### Configuration
See [IPluginConfig](https://aws.github.io/aws-prototyping-sdk/typescript/cdk-graph-plugin-diagram/index.html#ipluginconfig) interface for details, and look in [unit tests](https://github.com/aws/aws-prototyping-sdk/tree/mainline/packages/cdk-graph-plugin-diagram/test/graphviz) for additional examples.
By default the diagram plugin will generate a single "compact" preset diagram.
It is capable of creating multiple diagrams each with different configurations, as well as defining the defaults to use.
**Defaults Option**
Changing the `defaults` option will modify default options for all diagrams, including the default diagram.
> See [IDiagramConfigBase](https://aws.github.io/aws-prototyping-sdk/typescript/cdk-graph-plugin-diagram/index.html#idiagramconfigbase) interface for `plugin.defaults` options.
```python
new CdkGraphDiagramPlugin({
defaults: {
theme: "dark",
filterPlan: {
preset: FilterPreset.NONE,
},
},
});
// => results in a single diagram that is "verbose" and "dark", since no resources are filtered
```
**Diagrams Option**
By modifying the `diagrams` option of the plugin you have full control over the rendering of diagrams, and can render **multiple** diagrams.
> See [IDiagramConfig](https://aws.github.io/aws-prototyping-sdk/typescript/cdk-graph-plugin-diagram/index.html#idiagramconfig) interface for diagram config options.
```python
new CdkGraphDiagramPlugin({
diagrams: [
{
name: "diagram-1",
title: "Diagram 1 (dark + compact)",
theme: "dark",
// the default `filterPlan: { preset: FilterPreset.COMPACT }` will still apply
},
{
name: "diagram-2",
title: "Diagram 2 (dark + verbose)",
theme: "dark",
filterPlan: {
preset: FilterPreset.NONE,
},
},
{
name: "diagram-3",
title: "Diagram 3 (no defaults)",
ignoreDefaults: true, // default options will not be applied (theme, filterPlan, etc)
},
],
});
```
#### Example Diagram Configs (expand below)
The below examples define individual diagram configs in the `diagrams` options of the plugin as described above.
```python
new CdkGraphDiagramPlugin({
diagrams: [
// ... insert diagram config(s) here - see below for examples
],
});
```
##### **Presets**
<details>
<summary>Preset: compact</summary>
[<img src="docs/assets/cdk-graph-plugin-diagram/compact.png" height="200" />](docs/assets/cdk-graph-plugin-diagram/compact.png)
```python
{
name: "compact",
title: "Compact Diagram",
filterPlan: {
preset: FilterPreset.COMPACT,
},
},
```
</details><details>
<summary>Preset: verbose</summary>
[<img src="docs/assets/cdk-graph-plugin-diagram/verbose.png" height="200" />](docs/assets/cdk-graph-plugin-diagram/verbose.png)
```python
{
name: "verbose",
title: "Verbose Diagram",
format: DiagramFormat.PNG,
ignoreDefaults: true,
},
```
</details>
##### **Focus**
<details>
<summary>Focus: hoist</summary>
[<img src="docs/assets/cdk-graph-plugin-diagram/focus.png" height="200" />](docs/assets/cdk-graph-plugin-diagram/focus.png)
```python
{
name: "focus",
title: "Focus Lambda Diagram (non-extraneous)",
filterPlan: {
focus: (store) =>
store.getNode(getConstructUUID(app.stack.lambda)),
preset: FilterPreset.NON_EXTRANEOUS,
},
ignoreDefaults: true,
},
```
</details><details>
<summary>Focus: no hoist</summary>
[<img src="docs/assets/cdk-graph-plugin-diagram/focus-nohoist.png" height="200" />](docs/assets/cdk-graph-plugin-diagram/focus-nohoist.png)
```python
{
name: "focus-nohoist",
title: "Focus WebServer Diagram (noHoist, verbose)",
filterPlan: {
focus: {
node: (store) =>
store.getNode(getConstructUUID(app.stack.webServer)),
noHoist: true,
},
},
ignoreDefaults: true,
},
```
</details>
##### **Filters**
<details>
<summary>Filter: Include specific cfn resource types</summary>
[<img src="docs/assets/cdk-graph-plugin-diagram/filter-cfntype-include.png" height="200" />](docs/assets/cdk-graph-plugin-diagram/filter-cfntype-include.png)
```python
{
name: "includeCfnType",
title: "Include CfnType Diagram (filter)",
filterPlan: {
filters: [
Filters.includeCfnType([
aws_arch.CfnSpec.ServiceResourceDictionary.EC2.Instance,
/AWS::Lambda::Function.*/,
"AWS::IAM::Role",
]),
Filters.compact(),
],
},
},
```
</details><details>
<summary>Filter: Exclude specific cfn resource types</summary>
[<img src="docs/assets/cdk-graph-plugin-diagram/filter-cfntype-exclude.png" height="200" />](docs/assets/cdk-graph-plugin-diagram/filter-cfntype-exclude.png)
```python
{
name: "excludeCfnType",
title: "Exclude CfnType Diagram (filter)",
filterPlan: {
filters: [
Filters.excludeCfnType([
/AWS::EC2::VPC.*/,
aws_arch.CfnSpec.ServiceResourceDictionary.IAM.Role,
]),
Filters.compact(),
],
},
},
```
</details><details>
<summary>Filter: Include specific graph node types</summary>
[<img src="docs/assets/cdk-graph-plugin-diagram/filter-nodetype-include.png" height="200" />](docs/assets/cdk-graph-plugin-diagram/filter-nodetype-include.png)
```python
{
name: "includeNodeType",
title: "Include NodeType Diagram (filter)",
filterPlan: {
filters: [
Filters.includeNodeType([
NodeTypeEnum.STACK,
NodeTypeEnum.RESOURCE,
]),
Filters.compact(),
],
},
},
```
</details><details>
<summary>Filter: Include specific graph node types</summary>
[<img src="docs/assets/cdk-graph-plugin-diagram/filter-nodetype-include.png" height="200" />](docs/assets/cdk-graph-plugin-diagram/filter-nodetype-include.png)
```python
{
name: "includeNodeType",
title: "Include NodeType Diagram (filter)",
filterPlan: {
filters: [
Filters.includeNodeType([
NodeTypeEnum.STACK,
NodeTypeEnum.RESOURCE,
]),
Filters.compact(),
],
},
},
```
</details><details>
<summary>Filter: Exclude specific graph node types</summary>
[<img src="docs/assets/cdk-graph-plugin-diagram/filter-nodetype-exclude.png" height="200" />](docs/assets/cdk-graph-plugin-diagram/filter-nodetype-exclude.png)
```python
{
name: "excludeNodeType",
title: "Exclude NodeType Diagram (filter)",
filterPlan: {
filters: [
Filters.excludeNodeType([
NodeTypeEnum.NESTED_STACK,
NodeTypeEnum.CFN_RESOURCE,
NodeTypeEnum.OUTPUT,
NodeTypeEnum.PARAMETER,
]),
Filters.compact(),
],
},
},
```
</details>
##### **Themes**
<details>
<summary>Theme: Dark</summary>
[<img src="docs/assets/cdk-graph-plugin-diagram/dark.png" height="200" />](docs/assets/cdk-graph-plugin-diagram/dark.png)
```python
{
name: "Dark",
title: "Dark Theme Diagram",
theme: theme,
},
```
</details><details>
<summary>Theme: Dark - render service icons</summary>
[<img src="docs/assets/cdk-graph-plugin-diagram/dark-services.png" height="200" />](docs/assets/cdk-graph-plugin-diagram/dark-services.png)
```python
{
name: "dark-services",
title: "Dark Theme Custom Diagram",
theme: {
theme: theme,
rendering: {
resourceIconMin: GraphThemeRenderingIconTarget.SERVICE,
resourceIconMax: GraphThemeRenderingIconTarget.CATEGORY,
cfnResourceIconMin: GraphThemeRenderingIconTarget.DATA,
cfnResourceIconMax: GraphThemeRenderingIconTarget.RESOURCE,
},
},
},
```
</details>
<details>
<summary>Theme: Dark - verbose</summary>
[<img src="docs/assets/cdk-graph-plugin-diagram/dark-verbose.png" height="200" />](docs/assets/cdk-graph-plugin-diagram/dark-verbose.png)
```python
{
name: "dark-verbose",
title: "Dark Theme Verbose Diagram",
ignoreDefaults: true,
theme: theme,
},
```
</details>---
### Next Steps
* [ ] Battle test in the wild and get community feedback
* [ ] Improve image coverage and non-image node rendering
* [ ] Add drawio support
* [ ] Add common filter patterns and helpers
* [ ] Enable generating diagrams outside of synthesis process (maybe CLI)
* [ ] Implement interactive diagram, with potential for dynamic filtering and config generation
* [ ] Support using interactive diagram as config generator for other plugins (or as separate plugin that depends on this)
---
Inspired by [cdk-dia](https://github.com/pistazie/cdk-dia) and [cfn-dia](https://github.com/mhlabs/cfn-diagram) with ❤️
Raw data
{
"_id": null,
"home_page": "https://github.com/aws/aws-prototyping-sdk",
"name": "aws-prototyping-sdk.cdk-graph-plugin-diagram",
"maintainer": "",
"docs_url": null,
"requires_python": "~=3.7",
"maintainer_email": "",
"keywords": "",
"author": "AWS APJ COPE<apj-cope@amazon.com>",
"author_email": "",
"download_url": "https://files.pythonhosted.org/packages/46/db/a2250ae01f6578c93c81bc97928515cde85450962d194168d90371abb63e/aws_prototyping_sdk.cdk_graph_plugin_diagram-0.19.68.tar.gz",
"platform": null,
"description": "## Diagram Plugin - Cdk Graph\n\n`@aws-prototyping-sdk/cdk-graph-plugin-diagram`\n\n![experimental](https://img.shields.io/badge/stability-experimental-orange.svg)\n![alpha](https://img.shields.io/badge/version-alpha-red.svg) \\\n[![API Documentation](https://img.shields.io/badge/view-API_Documentation-blue.svg)](https://aws.github.io/aws-prototyping-sdk/typescript/cdk-graph-plugin-diagram/index.html)\n[![Source Code](https://img.shields.io/badge/view-Source_Code-blue.svg)](https://github.com/aws/aws-prototyping-sdk/tree/mainline/packages/cdk-graph-plugin-diagram)\n\nThis plugin generates diagrams utilizing the [cdk-graph](https://aws.github.io/aws-prototyping-sdk/typescript/cdk-graph/index.html) framework.\n\n> More comprehensive documentation to come as this package stabilizes.\n\n> **Disclaimer:** This is the first **cdk graph** plugin, it is highly *experimental*, and subject to major refactors as we gain feedback from the community.\n\n> **BREAKING CHANGES** (pre-release)\n>\n> * `<= v0.14.8`: Only the last stage of a multi stage app will be rendered by default, which is commonly the production stage. Use the `theme.rendering.stage` config option to override this for each graph or in defaults.\n\n| | |\n| -------------------------------------------------------------------------- | ----------------------------------------------------------------------- |\n| <img src=\"docs/assets/cdk-graph-plugin-diagram/default.png\" width=\"300\" /> | <img src=\"docs/assets/cdk-graph-plugin-diagram/dark.png\" width=\"300\" /> |\n\n### Quick Start\n\n```python\n// bin/app.ts\n\n// Must wrap cdk app with async IIFE function to enable async cdk-graph report\n(async () => {\n const app = new App();\n // ... add stacks, etc\n const graph = new CdkGraph(app, {\n plugins: [new CdkGraphDiagramPlugin()],\n });\n\n app.synth();\n\n // async cdk-graph reporting hook\n await graph.report();\n})();\n\n// => cdk.out/diagram.dot\n// => cdk.out/diagram.svg\n// => cdk.out/diagram.png\n```\n\n> This plugin currently only supports `async report()` generation following the above example. **Make sure to wrap the cdk app with *async IIFE*.**\n\n### Supported Formats\n\n| Format | Status | Extends | Provider |\n| ----------------------------------------------- | ---------------------------------------------------------- | ----------------------------------------------- | ----------------------------------- |\n| [DOT](https://graphviz.org/docs/outputs/canon/) | ![beta](https://img.shields.io/badge/status-beta-cyan.svg) | - | [Graphviz](docs/graphviz/README.md) |\n| [SVG](https://graphviz.org/docs/outputs/svg/) | ![beta](https://img.shields.io/badge/status-beta-cyan.svg) | [DOT](https://graphviz.org/docs/outputs/canon/) | [Graphviz](docs/graphviz/README.md) |\n| [PNG](https://graphviz.org/docs/outputs/png/) | ![beta](https://img.shields.io/badge/status-beta-cyan.svg) | [SVG](https://graphviz.org/docs/outputs/canon/) | [Graphviz](docs/graphviz/README.md) |\n\n---\n\n\n### Diagram Providers\n\n| Provider | Status | Formats |\n| ----------------------------------- | -------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |\n| [Graphviz](docs/graphviz/README.md) | ![alpha](https://img.shields.io/badge/status-alpha-orange.svg) | [DOT](https://graphviz.org/docs/outputs/canon/), [SVG](https://graphviz.org/docs/outputs/svg/), [PNG](https://graphviz.org/docs/outputs/png/) |\n| [Drawio](docs/drawio/README.md) | ![design](https://img.shields.io/badge/status-design-tan.svg) | *TBD: very early stage design and development* |\n\n---\n\n\n### Configuration\n\nSee [IPluginConfig](https://aws.github.io/aws-prototyping-sdk/typescript/cdk-graph-plugin-diagram/index.html#ipluginconfig) interface for details, and look in [unit tests](https://github.com/aws/aws-prototyping-sdk/tree/mainline/packages/cdk-graph-plugin-diagram/test/graphviz) for additional examples.\n\nBy default the diagram plugin will generate a single \"compact\" preset diagram.\nIt is capable of creating multiple diagrams each with different configurations, as well as defining the defaults to use.\n\n**Defaults Option**\n\nChanging the `defaults` option will modify default options for all diagrams, including the default diagram.\n\n> See [IDiagramConfigBase](https://aws.github.io/aws-prototyping-sdk/typescript/cdk-graph-plugin-diagram/index.html#idiagramconfigbase) interface for `plugin.defaults` options.\n\n```python\nnew CdkGraphDiagramPlugin({\n defaults: {\n theme: \"dark\",\n filterPlan: {\n preset: FilterPreset.NONE,\n },\n },\n});\n\n// => results in a single diagram that is \"verbose\" and \"dark\", since no resources are filtered\n```\n\n**Diagrams Option**\n\nBy modifying the `diagrams` option of the plugin you have full control over the rendering of diagrams, and can render **multiple** diagrams.\n\n> See [IDiagramConfig](https://aws.github.io/aws-prototyping-sdk/typescript/cdk-graph-plugin-diagram/index.html#idiagramconfig) interface for diagram config options.\n\n```python\nnew CdkGraphDiagramPlugin({\n diagrams: [\n {\n name: \"diagram-1\",\n title: \"Diagram 1 (dark + compact)\",\n theme: \"dark\",\n // the default `filterPlan: { preset: FilterPreset.COMPACT }` will still apply\n },\n {\n name: \"diagram-2\",\n title: \"Diagram 2 (dark + verbose)\",\n theme: \"dark\",\n filterPlan: {\n preset: FilterPreset.NONE,\n },\n },\n {\n name: \"diagram-3\",\n title: \"Diagram 3 (no defaults)\",\n ignoreDefaults: true, // default options will not be applied (theme, filterPlan, etc)\n },\n ],\n});\n```\n\n#### Example Diagram Configs (expand below)\n\nThe below examples define individual diagram configs in the `diagrams` options of the plugin as described above.\n\n```python\nnew CdkGraphDiagramPlugin({\n diagrams: [\n // ... insert diagram config(s) here - see below for examples\n ],\n});\n```\n\n##### **Presets**\n\n<details>\n<summary>Preset: compact</summary>\n\n[<img src=\"docs/assets/cdk-graph-plugin-diagram/compact.png\" height=\"200\" />](docs/assets/cdk-graph-plugin-diagram/compact.png)\n\n```python\n{\n name: \"compact\",\n title: \"Compact Diagram\",\n filterPlan: {\n preset: FilterPreset.COMPACT,\n },\n},\n```\n\n</details><details>\n<summary>Preset: verbose</summary>\n\n[<img src=\"docs/assets/cdk-graph-plugin-diagram/verbose.png\" height=\"200\" />](docs/assets/cdk-graph-plugin-diagram/verbose.png)\n\n```python\n{\n name: \"verbose\",\n title: \"Verbose Diagram\",\n format: DiagramFormat.PNG,\n ignoreDefaults: true,\n},\n```\n\n</details>\n\n##### **Focus**\n\n<details>\n<summary>Focus: hoist</summary>\n\n[<img src=\"docs/assets/cdk-graph-plugin-diagram/focus.png\" height=\"200\" />](docs/assets/cdk-graph-plugin-diagram/focus.png)\n\n```python\n{\n name: \"focus\",\n title: \"Focus Lambda Diagram (non-extraneous)\",\n filterPlan: {\n focus: (store) =>\n store.getNode(getConstructUUID(app.stack.lambda)),\n preset: FilterPreset.NON_EXTRANEOUS,\n },\n ignoreDefaults: true,\n},\n```\n\n</details><details>\n<summary>Focus: no hoist</summary>\n\n[<img src=\"docs/assets/cdk-graph-plugin-diagram/focus-nohoist.png\" height=\"200\" />](docs/assets/cdk-graph-plugin-diagram/focus-nohoist.png)\n\n```python\n{\n name: \"focus-nohoist\",\n title: \"Focus WebServer Diagram (noHoist, verbose)\",\n filterPlan: {\n focus: {\n node: (store) =>\n store.getNode(getConstructUUID(app.stack.webServer)),\n noHoist: true,\n },\n },\n ignoreDefaults: true,\n},\n```\n\n</details>\n\n##### **Filters**\n\n<details>\n<summary>Filter: Include specific cfn resource types</summary>\n\n[<img src=\"docs/assets/cdk-graph-plugin-diagram/filter-cfntype-include.png\" height=\"200\" />](docs/assets/cdk-graph-plugin-diagram/filter-cfntype-include.png)\n\n```python\n{\n name: \"includeCfnType\",\n title: \"Include CfnType Diagram (filter)\",\n filterPlan: {\n filters: [\n Filters.includeCfnType([\n aws_arch.CfnSpec.ServiceResourceDictionary.EC2.Instance,\n /AWS::Lambda::Function.*/,\n \"AWS::IAM::Role\",\n ]),\n Filters.compact(),\n ],\n },\n},\n```\n\n</details><details>\n<summary>Filter: Exclude specific cfn resource types</summary>\n\n[<img src=\"docs/assets/cdk-graph-plugin-diagram/filter-cfntype-exclude.png\" height=\"200\" />](docs/assets/cdk-graph-plugin-diagram/filter-cfntype-exclude.png)\n\n```python\n{\n name: \"excludeCfnType\",\n title: \"Exclude CfnType Diagram (filter)\",\n filterPlan: {\n filters: [\n Filters.excludeCfnType([\n /AWS::EC2::VPC.*/,\n aws_arch.CfnSpec.ServiceResourceDictionary.IAM.Role,\n ]),\n Filters.compact(),\n ],\n },\n},\n```\n\n</details><details>\n<summary>Filter: Include specific graph node types</summary>\n\n[<img src=\"docs/assets/cdk-graph-plugin-diagram/filter-nodetype-include.png\" height=\"200\" />](docs/assets/cdk-graph-plugin-diagram/filter-nodetype-include.png)\n\n```python\n{\n name: \"includeNodeType\",\n title: \"Include NodeType Diagram (filter)\",\n filterPlan: {\n filters: [\n Filters.includeNodeType([\n NodeTypeEnum.STACK,\n NodeTypeEnum.RESOURCE,\n ]),\n Filters.compact(),\n ],\n },\n},\n```\n\n</details><details>\n<summary>Filter: Include specific graph node types</summary>\n\n[<img src=\"docs/assets/cdk-graph-plugin-diagram/filter-nodetype-include.png\" height=\"200\" />](docs/assets/cdk-graph-plugin-diagram/filter-nodetype-include.png)\n\n```python\n{\n name: \"includeNodeType\",\n title: \"Include NodeType Diagram (filter)\",\n filterPlan: {\n filters: [\n Filters.includeNodeType([\n NodeTypeEnum.STACK,\n NodeTypeEnum.RESOURCE,\n ]),\n Filters.compact(),\n ],\n },\n},\n```\n\n</details><details>\n<summary>Filter: Exclude specific graph node types</summary>\n\n[<img src=\"docs/assets/cdk-graph-plugin-diagram/filter-nodetype-exclude.png\" height=\"200\" />](docs/assets/cdk-graph-plugin-diagram/filter-nodetype-exclude.png)\n\n```python\n{\n name: \"excludeNodeType\",\n title: \"Exclude NodeType Diagram (filter)\",\n filterPlan: {\n filters: [\n Filters.excludeNodeType([\n NodeTypeEnum.NESTED_STACK,\n NodeTypeEnum.CFN_RESOURCE,\n NodeTypeEnum.OUTPUT,\n NodeTypeEnum.PARAMETER,\n ]),\n Filters.compact(),\n ],\n },\n},\n```\n\n</details>\n\n##### **Themes**\n\n<details>\n<summary>Theme: Dark</summary>\n\n[<img src=\"docs/assets/cdk-graph-plugin-diagram/dark.png\" height=\"200\" />](docs/assets/cdk-graph-plugin-diagram/dark.png)\n\n```python\n{\n name: \"Dark\",\n title: \"Dark Theme Diagram\",\n theme: theme,\n},\n```\n\n</details><details>\n<summary>Theme: Dark - render service icons</summary>\n\n[<img src=\"docs/assets/cdk-graph-plugin-diagram/dark-services.png\" height=\"200\" />](docs/assets/cdk-graph-plugin-diagram/dark-services.png)\n\n```python\n{\n name: \"dark-services\",\n title: \"Dark Theme Custom Diagram\",\n theme: {\n theme: theme,\n rendering: {\n resourceIconMin: GraphThemeRenderingIconTarget.SERVICE,\n resourceIconMax: GraphThemeRenderingIconTarget.CATEGORY,\n cfnResourceIconMin: GraphThemeRenderingIconTarget.DATA,\n cfnResourceIconMax: GraphThemeRenderingIconTarget.RESOURCE,\n },\n },\n},\n```\n\n</details>\n<details>\n<summary>Theme: Dark - verbose</summary>\n\n[<img src=\"docs/assets/cdk-graph-plugin-diagram/dark-verbose.png\" height=\"200\" />](docs/assets/cdk-graph-plugin-diagram/dark-verbose.png)\n\n```python\n{\n name: \"dark-verbose\",\n title: \"Dark Theme Verbose Diagram\",\n ignoreDefaults: true,\n theme: theme,\n},\n```\n\n</details>---\n\n\n### Next Steps\n\n* [ ] Battle test in the wild and get community feedback\n* [ ] Improve image coverage and non-image node rendering\n* [ ] Add drawio support\n* [ ] Add common filter patterns and helpers\n* [ ] Enable generating diagrams outside of synthesis process (maybe CLI)\n* [ ] Implement interactive diagram, with potential for dynamic filtering and config generation\n* [ ] Support using interactive diagram as config generator for other plugins (or as separate plugin that depends on this)\n\n---\n\n\nInspired by [cdk-dia](https://github.com/pistazie/cdk-dia) and [cfn-dia](https://github.com/mhlabs/cfn-diagram) with \u2764\ufe0f\n\n\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "@aws-prototyping-sdk/cdk-graph-plugin-diagram",
"version": "0.19.68",
"project_urls": {
"Homepage": "https://github.com/aws/aws-prototyping-sdk",
"Source": "https://github.com/aws/aws-prototyping-sdk"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "30a13ddd721a3e8a2100dc18daadd98c4f04c4e2979c8a63706fd3056f629d7d",
"md5": "f7798379a53edddc8a7fc9add9149763",
"sha256": "b271fcf40fc6de712ef6fda94a3fe58feb1fcc1abc087d883d30e2ab911b348f"
},
"downloads": -1,
"filename": "aws_prototyping_sdk.cdk_graph_plugin_diagram-0.19.68-py3-none-any.whl",
"has_sig": false,
"md5_digest": "f7798379a53edddc8a7fc9add9149763",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "~=3.7",
"size": 85062563,
"upload_time": "2023-08-24T23:16:28",
"upload_time_iso_8601": "2023-08-24T23:16:28.301855Z",
"url": "https://files.pythonhosted.org/packages/30/a1/3ddd721a3e8a2100dc18daadd98c4f04c4e2979c8a63706fd3056f629d7d/aws_prototyping_sdk.cdk_graph_plugin_diagram-0.19.68-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "46dba2250ae01f6578c93c81bc97928515cde85450962d194168d90371abb63e",
"md5": "9dc0741e9e3fbe50684e4fc74249ba5c",
"sha256": "d13ea40e74eca87988ec1d64e65c431da30e8a6a4cf8db93d4a81cb8d9cd0682"
},
"downloads": -1,
"filename": "aws_prototyping_sdk.cdk_graph_plugin_diagram-0.19.68.tar.gz",
"has_sig": false,
"md5_digest": "9dc0741e9e3fbe50684e4fc74249ba5c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "~=3.7",
"size": 85065228,
"upload_time": "2023-08-24T23:16:33",
"upload_time_iso_8601": "2023-08-24T23:16:33.271983Z",
"url": "https://files.pythonhosted.org/packages/46/db/a2250ae01f6578c93c81bc97928515cde85450962d194168d90371abb63e/aws_prototyping_sdk.cdk_graph_plugin_diagram-0.19.68.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-08-24 23:16:33",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "aws",
"github_project": "aws-prototyping-sdk",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "aws-prototyping-sdk.cdk-graph-plugin-diagram"
}