UNPKG

@aws/pdk

Version:

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

53 lines 5.69 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Diagram = void 0; /*! Copyright [Amazon.com](http://amazon.com/), Inc. or its affiliates. All Rights Reserved. SPDX-License-Identifier: Apache-2.0 */ const Dot = require("ts-graphviz"); const theme_1 = require("../theme"); /** * Diagram class defines the root {@link Dot.Digraph} of the diagram * @internal */ class Diagram extends Dot.Digraph { /** @internal */ constructor(label, imagepath) { const { graph, node, edge } = theme_1.GraphTheme.instance; super("ROOT", { label, imagepath, }); this._trackedImages = new Set(); this.imagepath = imagepath; this.apply(graph); if (theme_1.GraphTheme.instance.rendering.layout === "vertical") { this.set("rankdir", "LR"); } // NB: do not apply "subgraph" attributes as there seems to be bug where it overrides the diagram attributes // The subgraph class will apply them directly so not a concern this.attributes.node.apply(node); this.attributes.edge.apply(edge); } /** * Track image used in the graph for downstream tooling support integration. * * @see [dot-wasm options](https://hpcc-systems.github.io/hpcc-js-wasm/classes/graphviz.Graphviz.html#layout) * @param image Image to track */ trackImage(image) { this._trackedImages.add(image); } /** Get list of all tracked images */ getTrackedImages() { return Array.from(this._trackedImages); } /** * Converts the diagram to **dot** string format * @see {@link Dot.toDot} */ toDot() { return Dot.toDot(this); } } exports.Diagram = Diagram; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZ3JhcGhzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBO3NDQUNzQztBQUN0QyxtQ0FBbUM7QUFDbkMsb0NBQXNDO0FBRXRDOzs7R0FHRztBQUNILE1BQWEsT0FBUSxTQUFRLEdBQUcsQ0FBQyxPQUFPO0lBT3RDLGdCQUFnQjtJQUNoQixZQUFZLEtBQWEsRUFBRSxTQUFpQjtRQUMxQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxrQkFBVSxDQUFDLFFBQVEsQ0FBQztRQUNsRCxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ1osS0FBSztZQUNMLFNBQVM7U0FDVixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7UUFFeEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFFM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVsQixJQUFJLGtCQUFVLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDeEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDNUIsQ0FBQztRQUVELDRHQUE0RztRQUM1RywrREFBK0Q7UUFFL0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxVQUFVLENBQUMsS0FBYTtRQUN0QixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQscUNBQXFDO0lBQ3JDLGdCQUFnQjtRQUNkLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUs7UUFDSCxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekIsQ0FBQztDQUNGO0FBdERELDBCQXNEQyIsInNvdXJjZXNDb250ZW50IjpbIi8qISBDb3B5cmlnaHQgW0FtYXpvbi5jb21dKGh0dHA6Ly9hbWF6b24uY29tLyksIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCAqL1xuaW1wb3J0ICogYXMgRG90IGZyb20gXCJ0cy1ncmFwaHZpelwiO1xuaW1wb3J0IHsgR3JhcGhUaGVtZSB9IGZyb20gXCIuLi90aGVtZVwiO1xuXG4vKipcbiAqIERpYWdyYW0gY2xhc3MgZGVmaW5lcyB0aGUgcm9vdCB7QGxpbmsgRG90LkRpZ3JhcGh9IG9mIHRoZSBkaWFncmFtXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNsYXNzIERpYWdyYW0gZXh0ZW5kcyBEb3QuRGlncmFwaCB7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfdHJhY2tlZEltYWdlczogU2V0PHN0cmluZz47XG5cbiAgLyoqIEltYWdlIHBhdGggYXR0cmlidXRlIG9mIHRoZSBkaWFncmFtIHVzZWQgdG8gcHJlZml4IHJlbGF0aXZlIHBhdGhzICovXG4gIHJlYWRvbmx5IGltYWdlcGF0aDogc3RyaW5nO1xuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgY29uc3RydWN0b3IobGFiZWw6IHN0cmluZywgaW1hZ2VwYXRoOiBzdHJpbmcpIHtcbiAgICBjb25zdCB7IGdyYXBoLCBub2RlLCBlZGdlIH0gPSBHcmFwaFRoZW1lLmluc3RhbmNlO1xuICAgIHN1cGVyKFwiUk9PVFwiLCB7XG4gICAgICBsYWJlbCxcbiAgICAgIGltYWdlcGF0aCxcbiAgICB9KTtcblxuICAgIHRoaXMuX3RyYWNrZWRJbWFnZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgIHRoaXMuaW1hZ2VwYXRoID0gaW1hZ2VwYXRoO1xuXG4gICAgdGhpcy5hcHBseShncmFwaCk7XG5cbiAgICBpZiAoR3JhcGhUaGVtZS5pbnN0YW5jZS5yZW5kZXJpbmcubGF5b3V0ID09PSBcInZlcnRpY2FsXCIpIHtcbiAgICAgIHRoaXMuc2V0KFwicmFua2RpclwiLCBcIkxSXCIpO1xuICAgIH1cblxuICAgIC8vIE5COiBkbyBub3QgYXBwbHkgXCJzdWJncmFwaFwiIGF0dHJpYnV0ZXMgYXMgdGhlcmUgc2VlbXMgdG8gYmUgYnVnIHdoZXJlIGl0IG92ZXJyaWRlcyB0aGUgZGlhZ3JhbSBhdHRyaWJ1dGVzXG4gICAgLy8gVGhlIHN1YmdyYXBoIGNsYXNzIHdpbGwgYXBwbHkgdGhlbSBkaXJlY3RseSBzbyBub3QgYSBjb25jZXJuXG5cbiAgICB0aGlzLmF0dHJpYnV0ZXMubm9kZS5hcHBseShub2RlKTtcbiAgICB0aGlzLmF0dHJpYnV0ZXMuZWRnZS5hcHBseShlZGdlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFjayBpbWFnZSB1c2VkIGluIHRoZSBncmFwaCBmb3IgZG93bnN0cmVhbSB0b29saW5nIHN1cHBvcnQgaW50ZWdyYXRpb24uXG4gICAqXG4gICAqIEBzZWUgW2RvdC13YXNtIG9wdGlvbnNdKGh0dHBzOi8vaHBjYy1zeXN0ZW1zLmdpdGh1Yi5pby9ocGNjLWpzLXdhc20vY2xhc3Nlcy9ncmFwaHZpei5HcmFwaHZpei5odG1sI2xheW91dClcbiAgICogQHBhcmFtIGltYWdlIEltYWdlIHRvIHRyYWNrXG4gICAqL1xuICB0cmFja0ltYWdlKGltYWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl90cmFja2VkSW1hZ2VzLmFkZChpbWFnZSk7XG4gIH1cblxuICAvKiogR2V0IGxpc3Qgb2YgYWxsIHRyYWNrZWQgaW1hZ2VzICovXG4gIGdldFRyYWNrZWRJbWFnZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuX3RyYWNrZWRJbWFnZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBkaWFncmFtIHRvICoqZG90Kiogc3RyaW5nIGZvcm1hdFxuICAgKiBAc2VlIHtAbGluayBEb3QudG9Eb3R9XG4gICAqL1xuICB0b0RvdCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBEb3QudG9Eb3QodGhpcyk7XG4gIH1cbn1cbiJdfQ==