UNPKG

projen

Version:

CDK for software projects

49 lines 5.42 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.ProjectTree = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const component_1 = require("./component"); const json_1 = require("./json"); /** * Generates a `.projen/tree.json` file that provides a snapshot of your * project's component hierarchy. This file includes metadata about each * component such as file paths, types, and the projen version used. * * The tree file is helpful for: * - Understanding how your project is structured * - Debugging component relationships * - Verifying which versions synthesized the project * * @stability experimental */ class ProjectTree extends component_1.Component { constructor(project) { super(project, new.target.name); this.file = new json_1.JsonFile(project, ".projen/tree.json", { readonly: true, marker: false, obj: () => ({ ["//"]: "Experimental. Expect frequent changes to the structure of this file.", ...renderConstruct(project), }), }); } } exports.ProjectTree = ProjectTree; _a = JSII_RTTI_SYMBOL_1; ProjectTree[_a] = { fqn: "projen.ProjectTree", version: "0.99.3" }; function renderConstruct(construct) { return { [construct.node.id]: { metadata: Object.fromEntries(construct.node.metadata.map(({ type, data }) => [type, data])), nodes: construct.node.children.length ? construct.node.children.reduce((nodes, c) => ({ ...nodes, ...renderConstruct(c), }), {}) : undefined, }, }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC10cmVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Byb2plY3QtdHJlZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLDJDQUF3QztBQUN4QyxpQ0FBa0M7QUFHbEM7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFhLFdBQVksU0FBUSxxQkFBUztJQUd4QyxZQUFtQixPQUFnQjtRQUNqQyxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFaEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLGVBQVEsQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUU7WUFDckQsUUFBUSxFQUFFLElBQUk7WUFDZCxNQUFNLEVBQUUsS0FBSztZQUNiLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO2dCQUNWLENBQUMsSUFBSSxDQUFDLEVBQ0osc0VBQXNFO2dCQUN4RSxHQUFHLGVBQWUsQ0FBQyxPQUFPLENBQUM7YUFDNUIsQ0FBQztTQUNILENBQUMsQ0FBQztJQUNMLENBQUM7O0FBZkgsa0NBZ0JDOzs7QUFTRCxTQUFTLGVBQWUsQ0FBQyxTQUFxQjtJQUM1QyxPQUFPO1FBQ0wsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ25CLFFBQVEsRUFBRSxNQUFNLENBQUMsV0FBVyxDQUMxQixTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FDOUQ7WUFDRCxLQUFLLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTTtnQkFDbkMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FDNUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUNiLEdBQUcsS0FBSztvQkFDUixHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUM7aUJBQ3RCLENBQUMsRUFDRixFQUFFLENBQ0g7Z0JBQ0gsQ0FBQyxDQUFDLFNBQVM7U0FDZDtLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUNvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwiLi9jb21wb25lbnRcIjtcbmltcG9ydCB7IEpzb25GaWxlIH0gZnJvbSBcIi4vanNvblwiO1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gXCIuL3Byb2plY3RcIjtcblxuLyoqXG4gKiBHZW5lcmF0ZXMgYSBgLnByb2plbi90cmVlLmpzb25gIGZpbGUgdGhhdCBwcm92aWRlcyBhIHNuYXBzaG90IG9mIHlvdXJcbiAqIHByb2plY3QncyBjb21wb25lbnQgaGllcmFyY2h5LiBUaGlzIGZpbGUgaW5jbHVkZXMgbWV0YWRhdGEgYWJvdXQgZWFjaFxuICogY29tcG9uZW50IHN1Y2ggYXMgZmlsZSBwYXRocywgdHlwZXMsIGFuZCB0aGUgcHJvamVuIHZlcnNpb24gdXNlZC5cbiAqXG4gKiBUaGUgdHJlZSBmaWxlIGlzIGhlbHBmdWwgZm9yOlxuICogLSBVbmRlcnN0YW5kaW5nIGhvdyB5b3VyIHByb2plY3QgaXMgc3RydWN0dXJlZFxuICogLSBEZWJ1Z2dpbmcgY29tcG9uZW50IHJlbGF0aW9uc2hpcHNcbiAqIC0gVmVyaWZ5aW5nIHdoaWNoIHZlcnNpb25zIHN5bnRoZXNpemVkIHRoZSBwcm9qZWN0XG4gKlxuICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAqL1xuZXhwb3J0IGNsYXNzIFByb2plY3RUcmVlIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgcHVibGljIGZpbGU6IEpzb25GaWxlO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0KSB7XG4gICAgc3VwZXIocHJvamVjdCwgbmV3LnRhcmdldC5uYW1lKTtcblxuICAgIHRoaXMuZmlsZSA9IG5ldyBKc29uRmlsZShwcm9qZWN0LCBcIi5wcm9qZW4vdHJlZS5qc29uXCIsIHtcbiAgICAgIHJlYWRvbmx5OiB0cnVlLFxuICAgICAgbWFya2VyOiBmYWxzZSxcbiAgICAgIG9iajogKCkgPT4gKHtcbiAgICAgICAgW1wiLy9cIl06XG4gICAgICAgICAgXCJFeHBlcmltZW50YWwuIEV4cGVjdCBmcmVxdWVudCBjaGFuZ2VzIHRvIHRoZSBzdHJ1Y3R1cmUgb2YgdGhpcyBmaWxlLlwiLFxuICAgICAgICAuLi5yZW5kZXJDb25zdHJ1Y3QocHJvamVjdCksXG4gICAgICB9KSxcbiAgICB9KTtcbiAgfVxufVxuXG50eXBlIENvbnN0cnVjdFRyZWUgPSBSZWNvcmQ8c3RyaW5nLCBDb25zdHJ1Y3RMZWFmPjtcblxuaW50ZXJmYWNlIENvbnN0cnVjdExlYWYge1xuICBtZXRhZGF0YTogYW55O1xuICBub2Rlcz86IENvbnN0cnVjdFRyZWU7XG59XG5cbmZ1bmN0aW9uIHJlbmRlckNvbnN0cnVjdChjb25zdHJ1Y3Q6IElDb25zdHJ1Y3QpOiBDb25zdHJ1Y3RUcmVlIHtcbiAgcmV0dXJuIHtcbiAgICBbY29uc3RydWN0Lm5vZGUuaWRdOiB7XG4gICAgICBtZXRhZGF0YTogT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICBjb25zdHJ1Y3Qubm9kZS5tZXRhZGF0YS5tYXAoKHsgdHlwZSwgZGF0YSB9KSA9PiBbdHlwZSwgZGF0YV0pXG4gICAgICApLFxuICAgICAgbm9kZXM6IGNvbnN0cnVjdC5ub2RlLmNoaWxkcmVuLmxlbmd0aFxuICAgICAgICA/IGNvbnN0cnVjdC5ub2RlLmNoaWxkcmVuLnJlZHVjZShcbiAgICAgICAgICAgIChub2RlcywgYykgPT4gKHtcbiAgICAgICAgICAgICAgLi4ubm9kZXMsXG4gICAgICAgICAgICAgIC4uLnJlbmRlckNvbnN0cnVjdChjKSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAge31cbiAgICAgICAgICApXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgIH0sXG4gIH07XG59XG4iXX0=