cdk-dia 0.2.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +40 -4
  3. package/{bin → dist/bin}/cli.d.ts +0 -0
  4. package/{bin → dist/bin}/cli.js +17 -18
  5. package/dist/bin/cli.js.map +1 -0
  6. package/dist/index.d.ts +4 -0
  7. package/dist/index.js +17 -0
  8. package/dist/index.js.map +1 -0
  9. package/{src → dist/src}/cdk/cdk-tree.d.ts +8 -6
  10. package/{src → dist/src}/cdk/cdk-tree.js +28 -12
  11. package/dist/src/cdk/cdk-tree.js.map +1 -0
  12. package/{src → dist/src}/cdk/construct-decorator.d.ts +4 -0
  13. package/{src → dist/src}/cdk/construct-decorator.js +10 -1
  14. package/{src → dist/src}/cdk/construct-decorator.js.map +1 -1
  15. package/{src → dist/src}/cdk/index.d.ts +0 -0
  16. package/{src → dist/src}/cdk/index.js +0 -0
  17. package/{src → dist/src}/cdk/index.js.map +0 -0
  18. package/{src/diagram/tests/aws-edge-resolver.test.d.ts → dist/src/cdk/tests/cdk-tree.test.d.ts} +0 -0
  19. package/dist/src/cdk/tests/cdk-tree.test.js +65 -0
  20. package/dist/src/cdk/tests/cdk-tree.test.js.map +1 -0
  21. package/{src → dist/src}/cdk/tree-json-loader.d.ts +0 -0
  22. package/{src → dist/src}/cdk/tree-json-loader.js +0 -0
  23. package/{src → dist/src}/cdk/tree-json-loader.js.map +0 -0
  24. package/dist/src/cdk-dia.d.ts +9 -0
  25. package/{src → dist/src}/cdk-dia.js +23 -5
  26. package/dist/src/cdk-dia.js.map +1 -0
  27. package/{src → dist/src}/diagram/aws/aws-diagram-generator.d.ts +3 -2
  28. package/{src → dist/src}/diagram/aws/aws-diagram-generator.js +43 -10
  29. package/dist/src/diagram/aws/aws-diagram-generator.js.map +1 -0
  30. package/{src → dist/src}/diagram/aws/aws-edge-resolver.d.ts +3 -2
  31. package/{src → dist/src}/diagram/aws/aws-edge-resolver.js +45 -29
  32. package/dist/src/diagram/aws/aws-edge-resolver.js.map +1 -0
  33. package/{src → dist/src}/diagram/aws/aws-icon-supplier.d.ts +0 -0
  34. package/{src → dist/src}/diagram/aws/aws-icon-supplier.js +0 -0
  35. package/{src → dist/src}/diagram/aws/aws-icon-supplier.js.map +0 -0
  36. package/{src → dist/src}/diagram/aws/awsResouceIconMatches.json +21 -4
  37. package/dist/src/diagram/aws/edge-target.d.ts +17 -0
  38. package/dist/src/diagram/aws/edge-target.js +45 -0
  39. package/dist/src/diagram/aws/edge-target.js.map +1 -0
  40. package/dist/src/diagram/aws/stack-exports-container.d.ts +8 -0
  41. package/dist/src/diagram/aws/stack-exports-container.js +35 -0
  42. package/dist/src/diagram/aws/stack-exports-container.js.map +1 -0
  43. package/{src → dist/src}/diagram/component/component.d.ts +3 -1
  44. package/{src → dist/src}/diagram/component/component.js +6 -1
  45. package/{src → dist/src}/diagram/component/component.js.map +1 -1
  46. package/{src → dist/src}/diagram/component/customizable-attribute.d.ts +0 -0
  47. package/{src → dist/src}/diagram/component/customizable-attribute.js +0 -0
  48. package/{src → dist/src}/diagram/component/customizable-attribute.js.map +0 -0
  49. package/{src → dist/src}/diagram/component/diagram-component.d.ts +0 -0
  50. package/{src → dist/src}/diagram/component/diagram-component.js +0 -0
  51. package/{src → dist/src}/diagram/component/diagram-component.js.map +0 -0
  52. package/{src → dist/src}/diagram/component/icon.d.ts +0 -0
  53. package/{src → dist/src}/diagram/component/icon.js +0 -0
  54. package/{src → dist/src}/diagram/component/icon.js.map +0 -0
  55. package/{src → dist/src}/diagram/component/link.d.ts +0 -0
  56. package/{src → dist/src}/diagram/component/link.js +0 -0
  57. package/{src → dist/src}/diagram/component/link.js.map +0 -0
  58. package/{src → dist/src}/diagram/component/root-component.d.ts +0 -0
  59. package/{src → dist/src}/diagram/component/root-component.js +0 -0
  60. package/{src → dist/src}/diagram/component/root-component.js.map +0 -0
  61. package/{src → dist/src}/diagram/component-links.d.ts +0 -0
  62. package/{src → dist/src}/diagram/component-links.js +0 -0
  63. package/{src → dist/src}/diagram/component-links.js.map +0 -0
  64. package/{src → dist/src}/diagram/diagram.d.ts +0 -0
  65. package/{src → dist/src}/diagram/diagram.js +0 -0
  66. package/{src → dist/src}/diagram/diagram.js.map +0 -0
  67. package/{src → dist/src}/diagram/index.d.ts +1 -0
  68. package/{src → dist/src}/diagram/index.js +1 -0
  69. package/{src → dist/src}/diagram/index.js.map +1 -1
  70. package/{src/graphviz/tests/generator.test.d.ts → dist/src/diagram/tests/aws-edge-resolver.test.d.ts} +0 -0
  71. package/{src → dist/src}/diagram/tests/aws-edge-resolver.test.js +75 -14
  72. package/dist/src/diagram/tests/aws-edge-resolver.test.js.map +1 -0
  73. package/{src → dist/src}/diagram/tests/generator.test.d.ts +0 -0
  74. package/{src → dist/src}/diagram/tests/generator.test.js +0 -0
  75. package/{src → dist/src}/diagram/tests/generator.test.js.map +0 -0
  76. package/dist/src/diagram/tests/stack-exports-container.test.d.ts +1 -0
  77. package/dist/src/diagram/tests/stack-exports-container.test.js +50 -0
  78. package/dist/src/diagram/tests/stack-exports-container.test.js.map +1 -0
  79. package/dist/src/render/cytoscape/base/bundle.css +4 -0
  80. package/dist/src/render/cytoscape/base/bundle.css.map +1 -0
  81. package/dist/src/render/cytoscape/base/index.html +1 -0
  82. package/dist/src/render/cytoscape/base/js/app.8e9fe77f.js +39504 -0
  83. package/dist/src/render/cytoscape/base/js/app.8e9fe77f.js.map +1 -0
  84. package/dist/src/render/cytoscape/cytoscape-element.d.ts +16 -0
  85. package/dist/src/render/cytoscape/cytoscape-element.js +3 -0
  86. package/dist/src/render/cytoscape/cytoscape-element.js.map +1 -0
  87. package/dist/src/render/cytoscape/cytoscape-generator.d.ts +8 -0
  88. package/dist/src/render/cytoscape/cytoscape-generator.js +126 -0
  89. package/dist/src/render/cytoscape/cytoscape-generator.js.map +1 -0
  90. package/dist/src/render/cytoscape/cytoscape.d.ts +18 -0
  91. package/dist/src/render/cytoscape/cytoscape.js +75 -0
  92. package/dist/src/render/cytoscape/cytoscape.js.map +1 -0
  93. package/dist/src/render/cytoscape/index.d.ts +1 -0
  94. package/{src/graphviz → dist/src/render/cytoscape}/index.js +1 -2
  95. package/dist/src/render/cytoscape/index.js.map +1 -0
  96. package/dist/src/render/cytoscape/tests/generator.test.d.ts +1 -0
  97. package/dist/src/render/cytoscape/tests/generator.test.js +56 -0
  98. package/dist/src/render/cytoscape/tests/generator.test.js.map +1 -0
  99. package/dist/src/render/diagram-renderer.d.ts +15 -0
  100. package/{src/graphviz/rendering-error.js → dist/src/render/diagram-renderer.js} +5 -2
  101. package/dist/src/render/diagram-renderer.js.map +1 -0
  102. package/dist/src/render/graphviz/GraphvizGenerator.d.ts +11 -0
  103. package/{src/graphviz/generator.js → dist/src/render/graphviz/GraphvizGenerator.js} +16 -69
  104. package/dist/src/render/graphviz/GraphvizGenerator.js.map +1 -0
  105. package/dist/src/render/graphviz/graphviz.d.ts +20 -0
  106. package/dist/src/render/graphviz/graphviz.js +115 -0
  107. package/dist/src/render/graphviz/graphviz.js.map +1 -0
  108. package/dist/src/render/graphviz/index.d.ts +1 -0
  109. package/dist/src/render/graphviz/index.js +14 -0
  110. package/dist/src/render/graphviz/index.js.map +1 -0
  111. package/{src → dist/src/render}/graphviz/styling.d.ts +1 -4
  112. package/{src → dist/src/render}/graphviz/styling.js +4 -15
  113. package/dist/src/render/graphviz/styling.js.map +1 -0
  114. package/dist/src/render/graphviz/tests/generator.test.d.ts +1 -0
  115. package/{src → dist/src/render}/graphviz/tests/generator.test.js +8 -13
  116. package/dist/src/render/graphviz/tests/generator.test.js.map +1 -0
  117. package/dist/src/render/index.d.ts +1 -0
  118. package/dist/src/render/index.js +14 -0
  119. package/dist/src/render/index.js.map +1 -0
  120. package/dist/src/render/styling.d.ts +3 -0
  121. package/dist/src/render/styling.js +16 -0
  122. package/dist/src/render/styling.js.map +1 -0
  123. package/{src → dist/src}/test-fixtures/testCases.d.ts +0 -0
  124. package/{src → dist/src}/test-fixtures/testCases.js +19 -1
  125. package/{src → dist/src}/test-fixtures/testCases.js.map +1 -1
  126. package/icons/aws/Resource/Res_Compute/Res_48_Dark/Res_Amazon-EC2_C6g-Instance_48_Dark.png +0 -0
  127. package/icons/aws/Resource/Res_Compute/Res_48_Dark/Res_Amazon-EC2_D3-Instance_48_Dark.png +0 -0
  128. package/icons/aws/Resource/Res_Compute/Res_48_Dark/Res_Amazon-EC2_D3en-Instance_48_Dark.png +0 -0
  129. package/icons/aws/Resource/Res_Compute/Res_48_Dark/Res_Amazon-EC2_G4ad-Instance_48_Dark.png +0 -0
  130. package/icons/aws/Resource/Res_Compute/Res_48_Dark/Res_Amazon-EC2_M6g-Instance_48_Dark.png +0 -0
  131. package/icons/aws/Resource/Res_Compute/Res_48_Dark/Res_Amazon-EC2_Mac-Instance_48_Dark.png +0 -0
  132. package/icons/aws/Resource/Res_Compute/Res_48_Dark/Res_Amazon-EC2_P3dn-Instance_48_Dark.png +0 -0
  133. package/icons/aws/Resource/Res_Compute/Res_48_Dark/Res_Amazon-EC2_P4-Instance_48_Dark.png +0 -0
  134. package/icons/aws/Resource/Res_Compute/Res_48_Dark/Res_Amazon-EC2_P4d-Instance_48_Dark.png +0 -0
  135. package/icons/aws/Resource/Res_Compute/Res_48_Dark/Res_Amazon-EC2_R6g-Instance_48_Dark.png +0 -0
  136. package/icons/aws/Resource/Res_Compute/Res_48_Dark/Res_Amazon-EC2_T3a-Instance_48_Dark.png +0 -0
  137. package/icons/aws/Resource/Res_Compute/Res_48_Dark/Res_Amazon-EC2_T4g-Instance_48_Dark.png +0 -0
  138. package/icons/aws/Resource/Res_Compute/Res_48_Dark/Res_Amazon-EC2_Trainium-Instance_48_Dark.png +0 -0
  139. package/icons/aws/Service/Arch_Security-Identity-Compliance/64/Arch_Amazon-Cognito_64.png +0 -0
  140. package/icons/aws/cloudwatch_metric_filter.png +0 -0
  141. package/icons/aws/security_group.png +0 -0
  142. package/package.json +13 -6
  143. package/bin/cli.js.map +0 -1
  144. package/src/cdk/cdk-tree.js.map +0 -1
  145. package/src/cdk-dia.d.ts +0 -3
  146. package/src/cdk-dia.js.map +0 -1
  147. package/src/diagram/aws/aws-diagram-generator.js.map +0 -1
  148. package/src/diagram/aws/aws-edge-resolver.js.map +0 -1
  149. package/src/diagram/tests/aws-edge-resolver.test.js.map +0 -1
  150. package/src/graphviz/generator.d.ts +0 -15
  151. package/src/graphviz/generator.js.map +0 -1
  152. package/src/graphviz/index.d.ts +0 -2
  153. package/src/graphviz/index.js.map +0 -1
  154. package/src/graphviz/rendering-error.d.ts +0 -5
  155. package/src/graphviz/rendering-error.js.map +0 -1
  156. package/src/graphviz/styling.js.map +0 -1
  157. package/src/graphviz/tests/generator.test.js.map +0 -1
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2021 Tom Roshko @Pistazie
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,10 +1,11 @@
1
1
  [![Mentioned in Awesome CDK](https://awesome.re/mentioned-badge.svg)](https://github.com/kolomied/awesome-cdk)
2
2
  ![Test](https://github.com/pistazie/cdk-dia/workflows/Test/badge.svg)
3
3
  [![npm version](https://badge.fury.io/js/cdk-dia.svg)](https://badge.fury.io/js/cdk-dia)
4
+ [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](code_of_conduct.md)
4
5
 
5
6
  # 🎡 CDK-Dia - Automated diagrams for CDK infrastructure
6
7
 
7
- _Cdk-dia diagrams your CDK provisioned infrastructure using the Grpahviz dot lanuguage._
8
+ _Cdk-dia diagrams your CDK provisioned infrastructure using the Graphviz dot lanuguage._
8
9
 
9
10
  ## Example
10
11
 
@@ -13,7 +14,7 @@ This Diagram was automatically generated from an AWS CDK stack
13
14
  <img src="docs/diagram.png" />
14
15
  </p>
15
16
 
16
- ## Getting started
17
+ ## Getting started - Typescript / Javascript
17
18
  Add cdk-dia to your CDK project
18
19
  ```sh
19
20
  $ npm install cdk-dia
@@ -31,10 +32,39 @@ Synthesize your CDK application
31
32
  $ cdk synth
32
33
  ```
33
34
 
34
- Generate a CDK-DIA diagram
35
+ Generate a CDK-DIA diagram PNG
35
36
  ```sh
36
37
  $ npx cdk-dia
37
38
  ```
39
+
40
+ Generate a CDK-DIA diagram as an interactive HTML (experimental)
41
+ ```sh
42
+ $ npx cdk-dia --rendering cytoscape-html
43
+ ```
44
+ <br/>
45
+
46
+ ## Getting started - any other CDK language
47
+ Globally install cdk-dia
48
+ ```sh
49
+ $ npm install cdk-dia -g
50
+ ```
51
+
52
+ Install Graphviz
53
+ ```sh
54
+ $ brew install graphviz
55
+ ```
56
+ * If you don't use brew: Graphviz installation in many environments is [well documented](https://graphviz.org/download/).
57
+ * make sure Graphviz's dot binary is available in your PATH.
58
+
59
+ Synthesize your CDK application
60
+ ```sh
61
+ $ cdk synth
62
+ ```
63
+
64
+ Generate a CDK-DIA diagram
65
+ ```sh
66
+ $ cdk-dia
67
+ ```
38
68
  <br/>
39
69
 
40
70
  ## Customize diagrams
@@ -42,7 +72,10 @@ $ npx cdk-dia
42
72
  In some cases it is useful to be able to tweak a diagram. For this purpose CDK-DIA includes customizers/decorators
43
73
  you can use with your CDK constructs in order to tweak the diagram.
44
74
 
45
- * In order to customize you have to add cdk-dia as a npm project dependency (globally installing it using `npm -g` won't allow you to use the `CdkDiaDecorator` class)
75
+ ### Limitations:
76
+
77
+ * Customization and decorators are currently only support for Typescript/Javascript CDK projects.
78
+ * In order to customize you have to add cdk-dia as a npm project dependency (globally installing it using `npm i -g` won't allow you to use the `CdkDiaDecorator` class)
46
79
 
47
80
  ### Example:
48
81
  Consider the following diagram of a 3-Tier CDK Stack:
@@ -66,3 +99,6 @@ This results in a Diagram where the DB-Tier was not collapsed providing more det
66
99
  * ```npx cdk-dia --help``` - Get possible arguments
67
100
  * ```npx cdk-dia --stacks stackOne stackFour``` - only diagram chosen aws-cdk stacks
68
101
  * ```npx cdk-dia --stacks pipelinestack/prod/database``` - choose stacks by path (nested stacks, pipeline stacks)
102
+
103
+ ## 🙏🏽 Contributing
104
+ Contribution is covered in the [CONTRIBUTING.md](./CONTRIBUTING.md) markdown.
File without changes
@@ -24,17 +24,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  const chalk_1 = __importDefault(require("chalk"));
27
- const terminal_link_1 = __importDefault(require("terminal-link"));
28
27
  const yargs_1 = __importDefault(require("yargs/yargs"));
29
28
  const path = __importStar(require("path"));
30
- const graphviz_1 = require("../src/graphviz");
31
29
  const cdk_dia_1 = require("../src/cdk-dia");
30
+ const rendering = __importStar(require("../src/render/index"));
32
31
  async function initCli() {
33
- return yargs_1.default(process.argv.slice(2)).options({
32
+ return (0, yargs_1.default)(process.argv.slice(2)).options({
34
33
  'cdk-tree-path': { type: 'string', alias: 'tree', default: 'cdk.out/tree.json', describe: 'Path of synthesized cdk cloud assembly' },
35
34
  'target-path': { type: 'string', alias: 'target', default: 'diagram.png', describe: 'Target path for rendered PNG' },
36
35
  'collapse': { type: 'boolean', default: true, describe: 'Collapse CDK Constructs' },
37
- 'stacks': { type: 'array', describe: 'Stacks to include (if not specified all stacks are diagramed)' }
36
+ 'stacks': { type: 'array', describe: 'Stacks to include (if not specified all stacks are diagramed)' },
37
+ 'rendering': { type: 'string', choices: [cdk_dia_1.Renderers.GRAPHVIZ, cdk_dia_1.Renderers.CYTOSCAPE], default: cdk_dia_1.Renderers.GRAPHVIZ, describe: 'The rendering engine to use' }
38
38
  }).version(false).argv;
39
39
  }
40
40
  async function generateDiagram(args) {
@@ -43,27 +43,23 @@ async function generateDiagram(args) {
43
43
  if (args.stacks !== undefined) {
44
44
  includedStacks = args.stacks.map(it => it.toString());
45
45
  }
46
- const packageBasePath = path.dirname(require.resolve('cdk-dia/package.json'));
47
- cdkDia.generateDiagram(args["cdk-tree-path"], args["target-path"], args.collapse, packageBasePath, includedStacks).then((pngFilename) => {
48
- if (terminal_link_1.default.isSupported)
49
- console.log(chalk_1.default.green(`CDK code diagram generated to PNG at ${chalk_1.default.bold(terminal_link_1.default(pngFilename, pngFilename))}`));
50
- else
51
- console.log(chalk_1.default.green(`CDK code diagram generated to PNG at ${chalk_1.default.bold(pngFilename)}`));
52
- }).catch(e => {
46
+ const packageBasePath = path.dirname(require.resolve('../../package.json'));
47
+ cdkDia.generateDiagram(args["cdk-tree-path"], args["target-path"], args.collapse, packageBasePath, includedStacks, args["rendering"])
48
+ .then((output) => output.userOutput())
49
+ .catch(e => {
50
+ console.error(`Failed to generate diagram - ${e}`);
53
51
  throw e;
54
52
  });
55
53
  }
56
54
  function printError(e) {
57
- if (e instanceof graphviz_1.RenderingError) {
55
+ if (e instanceof rendering.RenderingError) {
58
56
  notifyRenderingError(e);
59
57
  }
60
58
  else {
61
- console.log(e);
62
- notifyRenderingError(new graphviz_1.RenderingError(`Unexpected error occurred: ${e.message}`));
59
+ notifyRenderingError(new rendering.RenderingError(`Unexpected error occurred: ${e.message}`));
63
60
  }
64
61
  }
65
62
  function notifyRenderingError(e) {
66
- console.log(e);
67
63
  console.log(`${chalk_1.default.red.bold(`Failed to render diagram: ${e.message}`)}`);
68
64
  if (e.fixTips.length > 0)
69
65
  console.log(`${chalk_1.default.underline(`What could you try?`)}`);
@@ -71,7 +67,10 @@ function notifyRenderingError(e) {
71
67
  console.log(`\t${tip}`);
72
68
  });
73
69
  }
74
- initCli().then(args => {
75
- generateDiagram(args).catch(printError);
76
- }).catch(printError);
70
+ initCli()
71
+ .then(args => {
72
+ generateDiagram(args)
73
+ .catch(printError);
74
+ })
75
+ .catch(printError);
77
76
  //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../bin/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from "./src/cdk/construct-decorator";
2
+ export * from "./src/cdk";
3
+ export * from "./src/render/graphviz";
4
+ export * from "./src/diagram";
package/dist/index.js ADDED
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./src/cdk/construct-decorator"), exports);
14
+ __exportStar(require("./src/cdk"), exports);
15
+ __exportStar(require("./src/render/graphviz"), exports);
16
+ __exportStar(require("./src/diagram"), exports);
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,gEAA6C;AAC7C,4CAAyB;AACzB,wDAAqC;AACrC,gDAA6B"}
@@ -3,13 +3,16 @@ export declare class Tree {
3
3
  tree: Node;
4
4
  static fromObject(object: Record<string, unknown>): Tree;
5
5
  }
6
+ export declare enum ConstructInfoFqnType {
7
+ STACK = 0,
8
+ STAGE = 1,
9
+ APP = 2,
10
+ CUSTOM_RESOURCE = 3
11
+ }
6
12
  export declare class ConstructInfoFqn {
7
- static STACK: ConstructInfoFqn;
8
- static STAGE: ConstructInfoFqn;
9
- static APP: ConstructInfoFqn;
10
13
  static of: (val: string) => ConstructInfoFqn | undefined;
11
- constructor(cdkVal: string);
12
- readonly cdkVal: string;
14
+ constructor(cdkType: ConstructInfoFqnType);
15
+ readonly typ: ConstructInfoFqnType;
13
16
  }
14
17
  export declare class Node {
15
18
  id: string;
@@ -17,7 +20,6 @@ export declare class Node {
17
20
  children: Map<string, Node>;
18
21
  attributes: Map<string, string | Node | Record<string, string>>;
19
22
  constructInfoFqn: ConstructInfoFqn | undefined;
20
- pathParts: () => Array<string>;
21
23
  findInSubTree(predicate: (Node: any) => boolean): Node | null;
22
24
  static fromObject(object: Record<string, unknown | Record<string, string>>): Node;
23
25
  }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Node = exports.ConstructInfoFqn = exports.Tree = void 0;
3
+ exports.Node = exports.ConstructInfoFqn = exports.ConstructInfoFqnType = exports.Tree = void 0;
4
4
  class Tree {
5
5
  static fromObject(object) {
6
6
  const tree = new Tree();
@@ -10,24 +10,40 @@ class Tree {
10
10
  }
11
11
  }
12
12
  exports.Tree = Tree;
13
+ var ConstructInfoFqnType;
14
+ (function (ConstructInfoFqnType) {
15
+ ConstructInfoFqnType[ConstructInfoFqnType["STACK"] = 0] = "STACK";
16
+ ConstructInfoFqnType[ConstructInfoFqnType["STAGE"] = 1] = "STAGE";
17
+ ConstructInfoFqnType[ConstructInfoFqnType["APP"] = 2] = "APP";
18
+ ConstructInfoFqnType[ConstructInfoFqnType["CUSTOM_RESOURCE"] = 3] = "CUSTOM_RESOURCE";
19
+ })(ConstructInfoFqnType = exports.ConstructInfoFqnType || (exports.ConstructInfoFqnType = {}));
13
20
  class ConstructInfoFqn {
14
- constructor(cdkVal) {
15
- this.cdkVal = cdkVal;
21
+ constructor(cdkType) {
22
+ this.typ = cdkType;
16
23
  }
17
24
  }
18
25
  exports.ConstructInfoFqn = ConstructInfoFqn;
19
- ConstructInfoFqn.STACK = new ConstructInfoFqn("@aws-cdk/core.Stack");
20
- ConstructInfoFqn.STAGE = new ConstructInfoFqn("@aws-cdk/core.Stage");
21
- ConstructInfoFqn.APP = new ConstructInfoFqn("@aws-cdk/core.App");
22
- ConstructInfoFqn.of = (val) => [
23
- ConstructInfoFqn.STACK,
24
- ConstructInfoFqn.STAGE,
25
- ConstructInfoFqn.APP
26
- ].find(fqn => fqn.cdkVal === val);
26
+ ConstructInfoFqn.of = (val) => {
27
+ switch (val) {
28
+ case "@aws-cdk/core.Stack":
29
+ case "aws-cdk-lib.Stack":
30
+ return new ConstructInfoFqn(ConstructInfoFqnType.STACK);
31
+ case "@aws-cdk/core.Stage":
32
+ case "aws-cdk-lib.Stage":
33
+ return new ConstructInfoFqn(ConstructInfoFqnType.STAGE);
34
+ case "@aws-cdk/core.App":
35
+ case "aws-cdk-lib.App":
36
+ return new ConstructInfoFqn(ConstructInfoFqnType.APP);
37
+ case "@aws-cdk/core.CustomResource":
38
+ case "aws-cdk-lib.CustomResource":
39
+ return new ConstructInfoFqn(ConstructInfoFqnType.CUSTOM_RESOURCE);
40
+ default:
41
+ return undefined;
42
+ }
43
+ };
27
44
  class Node {
28
45
  constructor() {
29
46
  this.constructInfoFqn = undefined;
30
- this.pathParts = () => this.path.split("/");
31
47
  }
32
48
  findInSubTree(predicate) {
33
49
  if (predicate(this))
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdk-tree.js","sourceRoot":"","sources":["../../../src/cdk/cdk-tree.ts"],"names":[],"mappings":"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"}
@@ -11,3 +11,7 @@ export declare class CdkDiaDecorator {
11
11
  [key: string]: string;
12
12
  };
13
13
  }
14
+ export declare function DiagramOptions(options: DiagramOptionValues): ClassDecorator;
15
+ export interface DiagramOptionValues {
16
+ collapse: CollapseTypes;
17
+ }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CdkDiaDecorator = exports.CdkDia = void 0;
3
+ exports.DiagramOptions = exports.CdkDiaDecorator = exports.CdkDia = void 0;
4
4
  const customizable_attribute_1 = require("../diagram/component/customizable-attribute");
5
5
  class CdkDia {
6
6
  static decorate(inspector, decorator) {
@@ -25,4 +25,13 @@ class CdkDiaDecorator {
25
25
  }
26
26
  }
27
27
  exports.CdkDiaDecorator = CdkDiaDecorator;
28
+ function DiagramOptions(options) {
29
+ return function (target) {
30
+ target.prototype.inspect = function (inspector) {
31
+ const decorator = new CdkDiaDecorator().collapse(options.collapse);
32
+ CdkDia.decorate(inspector, decorator);
33
+ };
34
+ };
35
+ }
36
+ exports.DiagramOptions = DiagramOptions;
28
37
  //# sourceMappingURL=construct-decorator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"construct-decorator.js","sourceRoot":"","sources":["../../../src/cdk/construct-decorator.ts"],"names":[],"mappings":";;;AAAA,wFAAgG;AAGhG,MAAa,MAAM;IAIf,MAAM,CAAC,QAAQ,CAAC,SAAwB,EAAE,SAA0B;QAChE,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,EAAE,CAAA;QACpC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;YAC3B,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,GAAG,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;SAClE;IACL,CAAC;;AATL,wBAUC;AARmB,iBAAU,GAAG,UAAU,CAAA;AAU3C,MAAa,eAAe;IAA5B;QAEY,eAAU,GAA4B,EAAE,CAAA;IAUpD,CAAC;IARG,QAAQ,CAAC,GAAkB;QACvB,IAAI,CAAC,UAAU,CAAC,8CAAqB,CAAC,IAAI,CAAC,GAAG,GAAG,CAAA;QACjD,OAAO,IAAI,CAAA;IACf,CAAC;IAED,KAAK;QACD,OAAO,IAAI,CAAC,UAAU,CAAA;IAC1B,CAAC;CACJ;AAZD,0CAYC"}
1
+ {"version":3,"file":"construct-decorator.js","sourceRoot":"","sources":["../../../src/cdk/construct-decorator.ts"],"names":[],"mappings":";;;AAAA,wFAAgG;AAGhG,MAAa,MAAM;IAIf,MAAM,CAAC,QAAQ,CAAC,SAAwB,EAAE,SAA0B;QAChE,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,EAAE,CAAA;QACpC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;YAC1B,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,GAAG,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;SACnE;IACL,CAAC;;AATL,wBAUC;AARmB,iBAAU,GAAG,UAAU,CAAA;AAU3C,MAAa,eAAe;IAA5B;QAEY,eAAU,GAA4B,EAAE,CAAA;IAUpD,CAAC;IARG,QAAQ,CAAC,GAAkB;QACvB,IAAI,CAAC,UAAU,CAAC,8CAAqB,CAAC,IAAI,CAAC,GAAG,GAAG,CAAA;QACjD,OAAO,IAAI,CAAA;IACf,CAAC;IAED,KAAK;QACD,OAAO,IAAI,CAAC,UAAU,CAAA;IAC1B,CAAC;CACJ;AAZD,0CAYC;AAED,SAAgB,cAAc,CAAC,OAA4B;IAEvD,OAAO,UAAsC,MAAiB;QAC1D,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,UAAS,SAAwB;YACxD,MAAM,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACnE,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC1C,CAAC,CAAC;IACN,CAAC,CAAC;AACN,CAAC;AARD,wCAQC"}
File without changes
File without changes
File without changes
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ const cdk = __importStar(require("../cdk-tree"));
26
+ const testCases_1 = require("../../test-fixtures/testCases");
27
+ const tree_json_loader_1 = require("../tree-json-loader");
28
+ const path_1 = __importDefault(require("path"));
29
+ if (global['jest-specific-init'] == undefined) {
30
+ global['jest-specific-init'] = true;
31
+ require("jest-specific-snapshot");
32
+ }
33
+ describe("cdk-tree parsing", () => {
34
+ testCases_1.testCases.forEach(test => {
35
+ it(`${test.cdkTreePath} - ${test.jsonTreeFile} - ${test.id}`, () => {
36
+ const cdkTree = tree_json_loader_1.TreeJsonLoader.load(`${test.cdkTreePath}${test.jsonTreeFile}.json`);
37
+ const pathToSnap = path_1.default.resolve(process.cwd(), `./snapshots/cdk-tree-parsing-as-expected-${test.jsonTreeFile}-${test.id}.snapshot`);
38
+ expect(cdkTree.tree).toMatchSpecificSnapshot(pathToSnap);
39
+ });
40
+ });
41
+ });
42
+ describe('cdk-tree', () => {
43
+ it('fromComponent() - parses exports', () => {
44
+ const exportsNode = cdk.Node.fromObject({
45
+ "id": "Exports",
46
+ "path": "stack-with-topic/Exports",
47
+ "children": {
48
+ "Output{\"Ref\":\"thetopic9E1A294D\"}": {
49
+ "id": "Output{\"Ref\":\"thetopic9E1A294D\"}",
50
+ "path": "stack-with-topic/Exports/Output{\"Ref\":\"thetopic9E1A294D\"}",
51
+ "constructInfo": {
52
+ "fqn": "aws-cdk-lib.CfnOutput",
53
+ "version": "2.0.0"
54
+ }
55
+ }
56
+ },
57
+ "constructInfo": {
58
+ "fqn": "constructs.Construct",
59
+ "version": "10.0.9"
60
+ }
61
+ });
62
+ expect(exportsNode.id).toEqual("Exports");
63
+ });
64
+ });
65
+ //# sourceMappingURL=cdk-tree.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdk-tree.test.js","sourceRoot":"","sources":["../../../../src/cdk/tests/cdk-tree.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAkC;AAClC,6DAAuD;AACvD,0DAAkD;AAClD,gDAAuB;AAEvB,IAAI,MAAM,CAAC,oBAAoB,CAAC,IAAI,SAAS,EAAE;IAC3C,MAAM,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAA;IACnC,OAAO,CAAC,wBAAwB,CAAC,CAAA;CACpC;AAED,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAC9B,qBAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAErB,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,MAAM,IAAI,CAAC,YAAY,MAAM,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE;YAC/D,MAAM,OAAO,GAAG,iCAAc,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,OAAO,CAAC,CAAA;YACnF,MAAM,UAAU,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,4CAA4C,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;YAEpI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAA;QAC5D,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACtB,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QACxC,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,CAAE;YACrC,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,0BAA0B;YAClC,UAAU,EAAE;gBACR,sCAAsC,EAAE;oBACpC,IAAI,EAAE,sCAAsC;oBAC5C,MAAM,EAAE,+DAA+D;oBACvE,eAAe,EAAE;wBACb,KAAK,EAAE,uBAAuB;wBAC9B,SAAS,EAAE,OAAO;qBACrB;iBACJ;aACJ;YACD,eAAe,EAAE;gBACb,KAAK,EAAE,sBAAsB;gBAC7B,SAAS,EAAE,QAAQ;aACtB;SACJ,CAAC,CAAA;QAEH,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IAC5C,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
File without changes
File without changes
File without changes
@@ -0,0 +1,9 @@
1
+ import * as graphviz from "../src/render/graphviz";
2
+ import * as cytoscape from "../src/render/cytoscape";
3
+ export declare enum Renderers {
4
+ GRAPHVIZ = "graphviz-png",
5
+ CYTOSCAPE = "cytoscape-html"
6
+ }
7
+ export declare class CdkDia {
8
+ generateDiagram(treeJsonPath: string, targetPath: string, collapse: boolean, cdkBasePath: string, includedStacks: string[] | false, renderer: Renderers): Promise<graphviz.GraphvizRenderingOutput | cytoscape.CytoscapeJsOutput>;
9
+ }
@@ -19,18 +19,36 @@ var __importStar = (this && this.__importStar) || function (mod) {
19
19
  return result;
20
20
  };
21
21
  Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.CdkDia = void 0;
22
+ exports.CdkDia = exports.Renderers = void 0;
23
23
  const cdk = __importStar(require("../src/cdk"));
24
24
  const path = __importStar(require("path"));
25
25
  const diagrams = __importStar(require("../src/diagram"));
26
- const graphviz = __importStar(require("../src/graphviz"));
26
+ const graphviz = __importStar(require("../src/render/graphviz"));
27
+ const cytoscape = __importStar(require("../src/render/cytoscape"));
28
+ var Renderers;
29
+ (function (Renderers) {
30
+ Renderers["GRAPHVIZ"] = "graphviz-png";
31
+ Renderers["CYTOSCAPE"] = "cytoscape-html";
32
+ })(Renderers = exports.Renderers || (exports.Renderers = {}));
27
33
  class CdkDia {
28
- async generateDiagram(treeJsonPath, targetPath, collapse, cdkBasePath = require.resolve('cdk-dia/package.json'), includedStacks = false) {
34
+ async generateDiagram(treeJsonPath, targetPath, collapse, cdkBasePath = require.resolve('cdk-dia/package.json'), includedStacks = false, renderer) {
29
35
  const cdkTree = cdk.TreeJsonLoader.load(path.isAbsolute(treeJsonPath) ? treeJsonPath : path.join(process.cwd(), treeJsonPath));
30
36
  const generator = new diagrams.AwsDiagramGenerator(new diagrams.AwsEdgeResolver(), new diagrams.AwsIconSupplier(`${cdkBasePath}`));
31
37
  const diagram = generator.generate(cdkTree, collapse, includedStacks);
32
- const renderer = new graphviz.Generator(diagram);
33
- return renderer.generatePng(`${targetPath}`);
38
+ switch (renderer) {
39
+ case Renderers.GRAPHVIZ:
40
+ return new graphviz.Graphviz().render({
41
+ diagram: diagram,
42
+ path: `${targetPath}`
43
+ });
44
+ case Renderers.CYTOSCAPE:
45
+ return new cytoscape.Cytoscape().render({
46
+ diagram: diagram,
47
+ path: `${targetPath}`
48
+ });
49
+ default:
50
+ throw Error(`Unknown renderer: ${renderer}`);
51
+ }
34
52
  }
35
53
  }
36
54
  exports.CdkDia = CdkDia;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdk-dia.js","sourceRoot":"","sources":["../../src/cdk-dia.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAiC;AACjC,2CAA4B;AAC5B,yDAA0C;AAC1C,iEAAkD;AAClD,mEAAoD;AAEpD,IAAY,SAGX;AAHD,WAAY,SAAS;IACjB,sCAAuB,CAAA;IACvB,yCAA0B,CAAA;AAC9B,CAAC,EAHW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAGpB;AAED,MAAa,MAAM;IAEf,KAAK,CAAC,eAAe,CAAC,YAAoB,EACpB,UAAkB,EAClB,QAAiB,EACjB,cAAsB,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAC7D,iBAAmC,KAAK,EACxC,QAAmB;QAGrC,MAAM,OAAO,GAAG,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,CAAC,CAAA;QAG9H,MAAM,SAAS,GAAG,IAAI,QAAQ,CAAC,mBAAmB,CAAC,IAAI,QAAQ,CAAC,eAAe,EAAE,EAAE,IAAI,QAAQ,CAAC,eAAe,CAAC,GAAG,WAAW,EAAE,CAAC,CAAC,CAAA;QAClI,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAA;QAGrE,QAAQ,QAAQ,EAAE;YACd,KAAK,SAAS,CAAC,QAAQ;gBACnB,OAAO,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC;oBAClC,OAAO,EAAE,OAAO;oBAChB,IAAI,EAAE,GAAG,UAAU,EAAE;iBACxB,CAAC,CAAA;YACN,KAAK,SAAS,CAAC,SAAS;gBACpB,OAAO,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC;oBACpC,OAAO,EAAE,OAAO;oBAChB,IAAI,EAAE,GAAG,UAAU,EAAE;iBACxB,CAAC,CAAA;YACN;gBACI,MAAM,KAAK,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAA;SACnD;IACL,CAAC;CACJ;AAhCD,wBAgCC"}
@@ -14,8 +14,9 @@ export declare class AwsDiagramGenerator extends DiagramGenerator {
14
14
  private idIncluded;
15
15
  private applyAttributeSetCustomizers;
16
16
  private generateCfnComponent;
17
- private cfnProps;
18
- private hasCfnProps;
17
+ private static cfnProps;
18
+ private static generateCfnProps;
19
+ private static hasCfnProps;
19
20
  private collapseCdkConstructs;
20
21
  private collapseSubtreeToNode;
21
22
  private removeCdkAssets;
@@ -1,9 +1,30 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
2
21
  Object.defineProperty(exports, "__esModule", { value: true });
3
22
  exports.AwsDiagramGenerator = void 0;
23
+ const cdk = __importStar(require("../../cdk"));
4
24
  const cdk_1 = require("../../cdk");
5
25
  const __1 = require("..");
6
26
  const customizable_attribute_1 = require("../component/customizable-attribute");
27
+ const stack_exports_container_1 = require("./stack-exports-container");
7
28
  class AwsDiagramGenerator extends __1.DiagramGenerator {
8
29
  constructor(edgeResolver, iconSupplier) {
9
30
  super();
@@ -50,23 +71,30 @@ class AwsDiagramGenerator extends __1.DiagramGenerator {
50
71
  return component;
51
72
  }
52
73
  generateComponent(cdkNode, parentComponent) {
53
- const { cfnType, label } = this.cfnProps(cdkNode);
74
+ const { cfnType, label } = AwsDiagramGenerator.cfnProps(cdkNode);
54
75
  let component;
55
76
  if (cfnType != null) {
56
77
  component = this.generateCfnComponent(cdkNode, cfnType, label, parentComponent);
57
78
  }
58
79
  else {
59
80
  const relevantNode = cdkNode.findInSubTree(node => {
60
- return this.hasCfnProps(node);
81
+ return AwsDiagramGenerator.hasCfnProps(node);
61
82
  });
62
83
  if (relevantNode == null)
63
84
  return null;
64
85
  component = new __1.DiagramComponent(AwsDiagramGenerator.sanitizeComponentId(cdkNode.path), [cdkNode.id], parentComponent);
65
86
  }
66
- if (cdkNode.constructInfoFqn === cdk_1.ConstructInfoFqn.STACK) {
87
+ if (cdkNode.constructInfoFqn && cdkNode.constructInfoFqn.typ === cdk.ConstructInfoFqnType.STACK) {
67
88
  component.tags.set(__1.ComponentTags.isCdkStack, "true");
89
+ const exportsNode = cdkNode.children.get('Exports');
90
+ if (exportsNode) {
91
+ try {
92
+ component.stackExportsContainer = stack_exports_container_1.StackExportsContainer.fromComponent(exportsNode);
93
+ }
94
+ catch (e) { }
95
+ }
68
96
  }
69
- if (cdkNode.constructInfoFqn === cdk_1.ConstructInfoFqn.STAGE) {
97
+ if (cdkNode.constructInfoFqn && cdkNode.constructInfoFqn.typ === cdk.ConstructInfoFqnType.STAGE) {
70
98
  component.tags.set(__1.ComponentTags.isCdkStage, "true");
71
99
  }
72
100
  this.applyAttributeSetCustomizers(cdkNode, component);
@@ -135,17 +163,22 @@ class AwsDiagramGenerator extends __1.DiagramGenerator {
135
163
  component.label = component.label.filter(it => { return it.toUpperCase() != "RESOURCE"; });
136
164
  return component;
137
165
  }
138
- cfnProps(tree) {
166
+ static cfnProps(tree) {
139
167
  const cfnTypeAttr = tree.attributes.get("aws:cdk:cloudformation:type");
140
168
  if (cfnTypeAttr !== undefined) {
141
- const cfnType = cfnTypeAttr;
142
- const label = cfnType.split("::").slice(1).join(" ");
143
- return { cfnType: cfnType, label: label };
169
+ return AwsDiagramGenerator.generateCfnProps(cfnTypeAttr);
170
+ }
171
+ if (tree.constructInfoFqn && tree.constructInfoFqn.typ === cdk.ConstructInfoFqnType.CUSTOM_RESOURCE) {
172
+ return AwsDiagramGenerator.generateCfnProps("AWS::CloudFormation::CustomResource");
144
173
  }
145
174
  return { cfnType: null, label: null };
146
175
  }
147
- hasCfnProps(node) {
148
- const { cfnType } = this.cfnProps(node);
176
+ static generateCfnProps(cfnType) {
177
+ const label = cfnType.split("::").slice(1).join(" ");
178
+ return { cfnType: cfnType, label: label };
179
+ }
180
+ static hasCfnProps(node) {
181
+ const { cfnType } = AwsDiagramGenerator.cfnProps(node);
149
182
  return cfnType != null || node.constructInfoFqn !== undefined;
150
183
  }
151
184
  collapseCdkConstructs(node) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aws-diagram-generator.js","sourceRoot":"","sources":["../../../../src/diagram/aws/aws-diagram-generator.ts"],"names":[],"mappings":"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"}