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
@@ -0,0 +1,16 @@
1
+ export interface CytoscapeElementNode {
2
+ data: {
3
+ id: string;
4
+ [x: string]: any;
5
+ };
6
+ [x: string]: any;
7
+ }
8
+ export interface CytoscapeElementEdge {
9
+ data: {
10
+ source: string;
11
+ target: string;
12
+ [x: string]: any;
13
+ };
14
+ [x: string]: any;
15
+ }
16
+ export declare type CytoscapeElement = CytoscapeElementNode | CytoscapeElementEdge;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=cytoscape-element.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cytoscape-element.js","sourceRoot":"","sources":["../../../../src/render/cytoscape/cytoscape-element.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import * as diagram from "../../diagram";
2
+ export declare class CytoscapeGenerator {
3
+ static generate(dia: diagram.Diagram): any[][];
4
+ private static styles;
5
+ private static elements;
6
+ private static generateNodes;
7
+ private static addEdges;
8
+ }
@@ -0,0 +1,126 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.CytoscapeGenerator = void 0;
23
+ const _ = __importStar(require("lodash"));
24
+ const styling_1 = require("../styling");
25
+ class CytoscapeGenerator {
26
+ static generate(dia) {
27
+ const elements = this.elements(dia);
28
+ const styles = CytoscapeGenerator.styles();
29
+ return [elements, styles];
30
+ }
31
+ static styles() {
32
+ const styles = [
33
+ {
34
+ selector: 'node',
35
+ style: {
36
+ 'label': 'data(id)',
37
+ 'border-style': 'solid',
38
+ 'border-width': '1px',
39
+ 'border-color': 'green',
40
+ }
41
+ },
42
+ {
43
+ selector: 'edge',
44
+ style: {
45
+ "width": 2,
46
+ "line-color": "#D58714",
47
+ "target-arrow-color": "#D58714",
48
+ "target-arrow-shape": "circle",
49
+ "curve-style": "taxi",
50
+ "taxi-direction": "auto",
51
+ "taxi-turn": 50,
52
+ "taxi-turn-min-distance": 5
53
+ }
54
+ }
55
+ ];
56
+ for (let depth = 0; depth < 16; depth++) {
57
+ styles.push({
58
+ selector: `node.depth${depth}`,
59
+ style: {
60
+ 'background-color': styling_1.ColorPalette.byInd(depth)
61
+ }
62
+ });
63
+ }
64
+ return styles;
65
+ }
66
+ static elements(diagram) {
67
+ const nodes = this.generateNodes(diagram.root);
68
+ const edges = this.addEdges(diagram.root);
69
+ return [...nodes, ...edges];
70
+ }
71
+ static generateNodes(node, parentId = undefined) {
72
+ const data = {
73
+ id: node.id
74
+ };
75
+ if (parentId)
76
+ data.parent = parentId;
77
+ const style = {
78
+ 'shape': 'rectangle',
79
+ 'label': node.label
80
+ };
81
+ if (node.subComponents().length > 0) {
82
+ const nodeElement = {
83
+ data, style, classes: 'depth' + node.depth()
84
+ };
85
+ const subComponentsNodeElements = _.flatten(node.subComponents().map(sub => this.generateNodes(sub, node.id)));
86
+ return [nodeElement, ...subComponentsNodeElements];
87
+ }
88
+ else {
89
+ style.width = '100px';
90
+ style.height = '100px';
91
+ if (node.icon != null && node.icon.path != null) {
92
+ let cleanedIconPath = node.icon.path;
93
+ const iconsCleaningRe = /\/icons\/(.*)/;
94
+ const matches = node.icon.path.match(iconsCleaningRe);
95
+ if (matches) {
96
+ cleanedIconPath = `icons/${matches[1]}`;
97
+ }
98
+ else {
99
+ cleanedIconPath = `../${cleanedIconPath}`;
100
+ }
101
+ style['background-fit'] = 'cover';
102
+ style['background-image'] = cleanedIconPath;
103
+ }
104
+ const nodeElement = {
105
+ data, style, classes: 'depth' + node.depth()
106
+ };
107
+ return [nodeElement];
108
+ }
109
+ }
110
+ static addEdges(node) {
111
+ const linkedComponentEdges = node.links.getLinkedComponents().map(edgeNode => {
112
+ return {
113
+ data: {
114
+ source: node.id,
115
+ target: edgeNode.id
116
+ }
117
+ };
118
+ });
119
+ const subComponentEdges = node.subComponents().map(sub => {
120
+ return this.addEdges(sub);
121
+ });
122
+ return [...linkedComponentEdges, ..._.flatten(subComponentEdges)];
123
+ }
124
+ }
125
+ exports.CytoscapeGenerator = CytoscapeGenerator;
126
+ //# sourceMappingURL=cytoscape-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cytoscape-generator.js","sourceRoot":"","sources":["../../../../src/render/cytoscape/cytoscape-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import * as diagram from "../../diagram";
2
+ import { DiagramRenderer, RenderingOutput } from "../diagram-renderer";
3
+ export declare class CytoscapeJsOutput implements RenderingOutput {
4
+ private staticFolderName;
5
+ private staticSiteFullPath;
6
+ constructor(staticFolderName: string, staticSiteFullPath: string);
7
+ userOutput(): void;
8
+ }
9
+ interface CytoscapeProps {
10
+ diagram: diagram.Diagram;
11
+ path: string;
12
+ }
13
+ export declare class Cytoscape implements DiagramRenderer {
14
+ render(props: CytoscapeProps): Promise<CytoscapeJsOutput>;
15
+ private renderToCytoscape;
16
+ private copyFolder;
17
+ }
18
+ export {};
@@ -0,0 +1,75 @@
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
+ exports.Cytoscape = exports.CytoscapeJsOutput = void 0;
26
+ const fs = __importStar(require("fs"));
27
+ const chalk_1 = __importDefault(require("chalk"));
28
+ const path_1 = __importStar(require("path"));
29
+ const cytoscape_generator_1 = require("./cytoscape-generator");
30
+ const ncp = require('ncp').ncp;
31
+ ncp.limit = 8;
32
+ class CytoscapeJsOutput {
33
+ constructor(staticFolderName, staticSiteFullPath) {
34
+ this.staticFolderName = staticFolderName;
35
+ this.staticSiteFullPath = staticSiteFullPath;
36
+ }
37
+ userOutput() {
38
+ console.log(chalk_1.default.green(`generated a static website with your diagram at ${this.staticSiteFullPath}' }`));
39
+ console.log(chalk_1.default.green(`run 'npx http-server ${this.staticFolderName} -o' to view your interactive diagram`));
40
+ }
41
+ }
42
+ exports.CytoscapeJsOutput = CytoscapeJsOutput;
43
+ class Cytoscape {
44
+ async render(props) {
45
+ const basePath = props.path.replace(/\.[^/.]+$/, "");
46
+ let iconsPath;
47
+ if (__dirname.includes("dist")) {
48
+ iconsPath = (0, path_1.dirname)((0, path_1.dirname)((0, path_1.dirname)((0, path_1.dirname)(__dirname))));
49
+ }
50
+ else {
51
+ iconsPath = (0, path_1.dirname)((0, path_1.dirname)((0, path_1.dirname)(__dirname)));
52
+ }
53
+ await this.renderToCytoscape(props.diagram, basePath, iconsPath);
54
+ return new CytoscapeJsOutput(path_1.default.basename(basePath), path_1.default.resolve(basePath));
55
+ }
56
+ async renderToCytoscape(dia, targetFolder, iconsPath) {
57
+ await this.copyFolder(__dirname + '/base', targetFolder);
58
+ await this.copyFolder(iconsPath + '/icons', targetFolder + '/icons');
59
+ const [cyElements, cyStyles] = cytoscape_generator_1.CytoscapeGenerator.generate(dia);
60
+ fs.writeFileSync(`${targetFolder}/cy-elements.json`, JSON.stringify(cyElements));
61
+ fs.writeFileSync(`${targetFolder}/cy-styles.json`, JSON.stringify(cyStyles));
62
+ }
63
+ copyFolder(src, dst) {
64
+ return new Promise((resolve, reject) => {
65
+ ncp(src, dst, function (err) {
66
+ if (err) {
67
+ reject(err);
68
+ }
69
+ resolve(undefined);
70
+ });
71
+ });
72
+ }
73
+ }
74
+ exports.Cytoscape = Cytoscape;
75
+ //# sourceMappingURL=cytoscape.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cytoscape.js","sourceRoot":"","sources":["../../../../src/render/cytoscape/cytoscape.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAwB;AACxB,kDAAyB;AACzB,6CAAkC;AAGlC,+DAAwD;AAExD,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAA;AAC9B,GAAG,CAAC,KAAK,GAAG,CAAC,CAAA;AAEb,MAAa,iBAAiB;IAC1B,YAAoB,gBAAwB,EAAU,kBAA0B;QAA5D,qBAAgB,GAAhB,gBAAgB,CAAQ;QAAU,uBAAkB,GAAlB,kBAAkB,CAAQ;IAAG,CAAC;IAEpF,UAAU;QACF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,mDAAmD,IAAI,CAAC,kBAAkB,KAAK,CAAC,CAAC,CAAA;QACzG,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,wBAAwB,IAAI,CAAC,gBAAgB,uCAAuC,CAAC,CAAC,CAAA;IACtH,CAAC;CACJ;AAPD,8CAOC;AAOD,MAAa,SAAS;IAElB,KAAK,CAAC,MAAM,CAAC,KAAqB;QAC9B,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;QAEpD,IAAI,SAAiB,CAAA;QACrB,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAC;YAC3B,SAAS,GAAG,IAAA,cAAO,EAAC,IAAA,cAAO,EAAC,IAAA,cAAO,EAAC,IAAA,cAAO,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;SAC5D;aAAM;YACH,SAAS,GAAG,IAAA,cAAO,EAAC,IAAA,cAAO,EAAC,IAAA,cAAO,EAAC,SAAS,CAAC,CAAC,CAAC,CAAA;SACnD;QAED,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAA;QAChE,OAAO,IAAI,iBAAiB,CAAC,cAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAG,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAA;IAClF,CAAC;IAKO,KAAK,CAAC,iBAAiB,CAAC,GAAoB,EAAE,YAAoB,EAAE,SAAiB;QAGzF,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,OAAO,EAAE,YAAY,CAAC,CAAA;QAExD,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,QAAQ,EAAG,YAAY,GAAE,QAAQ,CAAC,CAAA;QAGpE,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,wCAAkB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;QAC/D,EAAE,CAAC,aAAa,CAAC,GAAG,YAAY,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAA;QAChF,EAAE,CAAC,aAAa,CAAC,GAAG,YAAY,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAA;IAChF,CAAC;IAEO,UAAU,CAAC,GAAW,EAAE,GAAW;QACvC,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACzC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,GAAG;gBACnB,IAAI,GAAG,EAAE;oBACL,MAAM,CAAC,GAAG,CAAC,CAAA;iBACd;gBACD,OAAO,CAAC,SAAS,CAAC,CAAC;YACvB,CAAC,CACJ,CAAA;QACL,CAAC,CAAC,CAAA;IACN,CAAC;CACJ;AA3CD,8BA2CC"}
@@ -0,0 +1 @@
1
+ export * from "./cytoscape";
@@ -10,6 +10,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
10
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- __exportStar(require("./generator"), exports);
14
- __exportStar(require("./rendering-error"), exports);
13
+ __exportStar(require("./cytoscape"), exports);
15
14
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/render/cytoscape/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAA2B"}
@@ -0,0 +1,56 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ const fs = __importStar(require("fs"));
23
+ const testCases_1 = require("../../../test-fixtures/testCases");
24
+ const generator_test_1 = require("../../../diagram/tests/generator.test");
25
+ const cytoscape_1 = require("../cytoscape");
26
+ const basePath = `${process.cwd()}/test-generated`;
27
+ describe('Cytoscape static website generated as expected', () => {
28
+ it.each(testCases_1.testCases)(`%# - %p`, async (testCase) => {
29
+ const diagram = (0, generator_test_1.givenDiagram)(testCase);
30
+ const filePath = `${basePath}/${testCase.jsonTreeFile}-${testCase.id}`;
31
+ await new cytoscape_1.Cytoscape().render({
32
+ diagram: diagram,
33
+ path: filePath
34
+ });
35
+ const index = new File(`${filePath}/index.html`);
36
+ expect(index.stats.size).toBeGreaterThanOrEqual(300);
37
+ expect(index.body).toContain("CDK-Dia");
38
+ const icons = new File(`${filePath}/icons`);
39
+ expect(icons.stats.isDirectory()).toBeTruthy();
40
+ const js = new File(`${filePath}/js`);
41
+ expect(js.stats.isDirectory()).toBeTruthy();
42
+ const elementsJson = new File(`${filePath}/cy-elements.json`);
43
+ expect(JSON.parse(elementsJson.body).length).toBeGreaterThanOrEqual(2);
44
+ const stylesJson = new File(`${filePath}/cy-styles.json`);
45
+ expect(JSON.parse(stylesJson.body).length).toBeGreaterThanOrEqual(15);
46
+ }, 100000);
47
+ });
48
+ class File {
49
+ constructor(path) {
50
+ this.stats = fs.statSync(path);
51
+ if (!this.stats.isDirectory()) {
52
+ this.body = fs.readFileSync(path).toString();
53
+ }
54
+ }
55
+ }
56
+ //# sourceMappingURL=generator.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.test.js","sourceRoot":"","sources":["../../../../../src/render/cytoscape/tests/generator.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,uCAAwB;AACxB,gEAA0D;AAC1D,0EAAkE;AAClE,4CAAsC;AAGtC,MAAM,QAAQ,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,iBAAiB,CAAA;AAElD,QAAQ,CAAC,gDAAgD,EAAE,GAAG,EAAE;IAE5D,EAAE,CAAC,IAAI,CAAC,qBAAS,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;QAE7C,MAAM,OAAO,GAAG,IAAA,6BAAY,EAAC,QAAQ,CAAC,CAAA;QAEtC,MAAM,QAAQ,GAAG,GAAG,QAAQ,IAAI,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAA;QAEtE,MAAM,IAAI,qBAAS,EAAE,CAAC,MAAM,CAAC;YACzB,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,QAAQ;SACjB,CAAC,CAAA;QAEF,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,GAAG,QAAQ,aAAa,CAAC,CAAA;QAChD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAA;QACpD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;QAEvC,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,GAAG,QAAQ,QAAQ,CAAC,CAAA;QAC3C,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,UAAU,EAAE,CAAA;QAE9C,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,QAAQ,KAAK,CAAC,CAAA;QACrC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,UAAU,EAAE,CAAA;QAE3C,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,GAAG,QAAQ,mBAAmB,CAAC,CAAA;QAC7D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAA;QAEtE,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,GAAG,QAAQ,iBAAiB,CAAC,CAAA;QACzD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAA;IACzE,CAAC,EAAE,MAAM,CAAC,CAAA;AACd,CAAC,CAAC,CAAA;AAEF,MAAM,IAAI;IAIN,YAAY,IAAY;QACpB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAE9B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE;YAC3B,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAA;SAC/C;IACL,CAAC;CACJ"}
@@ -0,0 +1,15 @@
1
+ import * as diagram from "../diagram/index";
2
+ export interface DiagramRenderer {
3
+ render(props: RenderingProps): Promise<RenderingOutput>;
4
+ }
5
+ export declare abstract class RenderingProps {
6
+ diagram: diagram.Diagram;
7
+ }
8
+ export interface RenderingOutput {
9
+ userOutput(): any;
10
+ }
11
+ export declare class RenderingError extends Error {
12
+ readonly debugInfo: string[];
13
+ readonly fixTips: string[];
14
+ constructor(message: string, debugInfo?: string[], fixTips?: string[]);
15
+ }
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RenderingError = void 0;
3
+ exports.RenderingError = exports.RenderingProps = void 0;
4
+ class RenderingProps {
5
+ }
6
+ exports.RenderingProps = RenderingProps;
4
7
  class RenderingError extends Error {
5
8
  constructor(message, debugInfo = [], fixTips = []) {
6
9
  super(message);
@@ -11,4 +14,4 @@ class RenderingError extends Error {
11
14
  }
12
15
  }
13
16
  exports.RenderingError = RenderingError;
14
- //# sourceMappingURL=rendering-error.js.map
17
+ //# sourceMappingURL=diagram-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagram-renderer.js","sourceRoot":"","sources":["../../../src/render/diagram-renderer.ts"],"names":[],"mappings":";;;AAMA,MAAsB,cAAc;CAEnC;AAFD,wCAEC;AAKD,MAAa,cAAe,SAAQ,KAAK;IAKrC,YAAY,OAAe,EAAE,YAAsB,EAAE,EAAE,UAAoB,EAAE;QACzE,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC;QAEhC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IAC1B,CAAC;CACJ;AAdD,wCAcC"}
@@ -0,0 +1,11 @@
1
+ import { Digraph } from "ts-graphviz";
2
+ import * as diagram from "../../diagram";
3
+ export declare class GraphvizGenerator {
4
+ generate(dia: diagram.Diagram): Digraph;
5
+ private breakLineEveryMaxChars;
6
+ private wordsToLabel;
7
+ private diagramGraph;
8
+ private addToGraph;
9
+ private addEdges;
10
+ private findFirstArbitraryClusterDirectLeaf;
11
+ }
@@ -22,51 +22,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
22
22
  return (mod && mod.__esModule) ? mod : { "default": mod };
23
23
  };
24
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
- exports.Generator = void 0;
26
- const fs = __importStar(require("fs"));
27
- const util = __importStar(require("util"));
28
- const _ = __importStar(require("lodash"));
29
- const hasbin = __importStar(require("hasbin"));
30
- const word_wrap_1 = __importDefault(require("word-wrap"));
31
- const child_process_1 = __importDefault(require("child_process"));
25
+ exports.GraphvizGenerator = void 0;
32
26
  const ts_graphviz_1 = require("ts-graphviz");
33
27
  const styling = __importStar(require("./styling"));
34
- const rendering_error_1 = require("./rendering-error");
35
- const exec = util.promisify(child_process_1.default.exec);
36
- class Generator {
37
- constructor(dia) {
38
- this.rootGraph = ts_graphviz_1.digraph('Diagram');
39
- styling.applyBaseGraphStyling(this.rootGraph);
40
- this.diagramGraph(dia);
41
- }
42
- async generatePng(path) {
43
- const dotFileName = this.generateDot(path);
44
- try {
45
- await this.dotToPng(dotFileName, path);
46
- }
47
- catch (e) {
48
- if (!hasbin.sync(Generator.graphvizBinary)) {
49
- throw new rendering_error_1.RenderingError("Graphvig '" + Generator.graphvizBinary + "' binary does not exist locally or in PATH", [], [
50
- "Install Graphviz and make sure it is available in PATH",
51
- "Using brew: 'brew install graphviz'"
52
- ]);
53
- }
54
- else {
55
- if (e instanceof rendering_error_1.RenderingError) {
56
- throw e;
57
- }
58
- else {
59
- throw new rendering_error_1.RenderingError(e.message);
60
- }
61
- }
62
- }
63
- return path;
64
- }
65
- generateDot(path) {
66
- const data = ts_graphviz_1.toDot(this.rootGraph);
67
- const fullPath = `${path}.dot`;
68
- fs.writeFileSync(fullPath, data);
69
- return fullPath;
28
+ const _ = __importStar(require("lodash"));
29
+ const word_wrap_1 = __importDefault(require("word-wrap"));
30
+ class GraphvizGenerator {
31
+ generate(dia) {
32
+ const rootGraph = (0, ts_graphviz_1.digraph)('Diagram');
33
+ styling.applyBaseGraphStyling(rootGraph);
34
+ this.diagramGraph(rootGraph, dia);
35
+ return rootGraph;
70
36
  }
71
37
  breakLineEveryMaxChars(label, charsPerLine) {
72
38
  let fullWords;
@@ -109,7 +75,7 @@ class Generator {
109
75
  words.push(word);
110
76
  }
111
77
  else {
112
- const wrapped = word_wrap_1.default(word, {
78
+ const wrapped = (0, word_wrap_1.default)(word, {
113
79
  cut: true,
114
80
  width: charsPerLine
115
81
  }).trim();
@@ -118,10 +84,10 @@ class Generator {
118
84
  });
119
85
  return words;
120
86
  }
121
- diagramGraph(d) {
122
- const root = this.rootGraph.createSubgraph(d.root.id);
123
- this.addToGraph(root, d.root);
124
- this.addEdges(this.rootGraph, d.root);
87
+ diagramGraph(rootGraph, diagram1) {
88
+ const root = rootGraph.createSubgraph(diagram1.root.id);
89
+ this.addToGraph(root, diagram1.root);
90
+ this.addEdges(rootGraph, diagram1.root);
125
91
  }
126
92
  addToGraph(g, node) {
127
93
  const labelFontSize = 12;
@@ -168,25 +134,6 @@ class Generator {
168
134
  findFirstArbitraryClusterDirectLeaf(node) {
169
135
  return node.subComponents().find(sub => { return sub.subComponents().length == 0; });
170
136
  }
171
- async dotToPng(sourceDotFile, targetPngFile) {
172
- const cmd = `${Generator.graphvizBinary} ${sourceDotFile} -T png > ${targetPngFile}`;
173
- try {
174
- const { stdout, stderr } = await exec(cmd);
175
- const fileExists = fs.existsSync(targetPngFile);
176
- if (!fileExists) {
177
- throw new rendering_error_1.RenderingError("Failed to generate PNG: file does not exist.");
178
- }
179
- const stats = fs.lstatSync(targetPngFile);
180
- if (stats.size < 2) {
181
- throw new rendering_error_1.RenderingError("Generated PNG doesn't seem valid: file size is too small.", [stdout, stderr], [". make sure Graphviz is installed and available in the PATH"]);
182
- }
183
- }
184
- catch (e) {
185
- throw new rendering_error_1.RenderingError(e.message);
186
- }
187
- return true;
188
- }
189
137
  }
190
- exports.Generator = Generator;
191
- Generator.graphvizBinary = "dot";
192
- //# sourceMappingURL=generator.js.map
138
+ exports.GraphvizGenerator = GraphvizGenerator;
139
+ //# sourceMappingURL=GraphvizGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphvizGenerator.js","sourceRoot":"","sources":["../../../../src/render/graphviz/GraphvizGenerator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import * as diagram from "../../diagram";
2
+ import { DiagramRenderer, RenderingOutput, RenderingProps } from "../diagram-renderer";
3
+ export declare class GraphvizRenderingProps extends RenderingProps {
4
+ diagram: diagram.Diagram;
5
+ path: string;
6
+ }
7
+ export declare class GraphvizRenderingOutput implements RenderingOutput {
8
+ private imagePath;
9
+ private imageType;
10
+ constructor(imagePath: string, imageType: string);
11
+ userOutput(): void;
12
+ }
13
+ export declare class Graphviz implements DiagramRenderer {
14
+ render(props: GraphvizRenderingProps): Promise<GraphvizRenderingOutput>;
15
+ renderToDot(dia: diagram.Diagram, targetDotPath: string): void;
16
+ private static generatePng;
17
+ private static sanitizeAndResolvePath;
18
+ private static dotToPng;
19
+ private static GRAPHVIZ_BINARY;
20
+ }