UNPKG

projen

Version:

CDK for software projects

48 lines 5.45 kB
"use strict"; 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 { static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.ProjectTree", version: "0.103.12" }; file; 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; 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC10cmVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Byb2plY3QtdHJlZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQ0EsMkNBQXdDO0FBQ3hDLGlDQUFrQztBQUdsQzs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQWEsV0FBWSxTQUFRLHFCQUFTOztJQUNqQyxJQUFJLENBQVc7SUFFdEIsWUFBbUIsT0FBZ0I7UUFDakMsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWhDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxlQUFRLENBQUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFO1lBQ3JELFFBQVEsRUFBRSxJQUFJO1lBQ2QsTUFBTSxFQUFFLEtBQUs7WUFDYixHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDVixDQUFDLElBQUksQ0FBQyxFQUNKLHNFQUFzRTtnQkFDeEUsR0FBRyxlQUFlLENBQUMsT0FBTyxDQUFDO2FBQzVCLENBQUM7U0FDSCxDQUFDLENBQUM7SUFDTCxDQUFDOztBQWZILGtDQWdCQztBQVNELFNBQVMsZUFBZSxDQUFDLFNBQXFCO0lBQzVDLE9BQU87UUFDTCxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDbkIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQzFCLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUM5RDtZQUNELEtBQUssRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNO2dCQUNuQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUM1QixDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ2IsR0FBRyxLQUFLO29CQUNSLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQztpQkFDdEIsQ0FBQyxFQUNGLEVBQUUsQ0FDSDtnQkFDSCxDQUFDLENBQUMsU0FBUztTQUNkO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IElDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcIi4vY29tcG9uZW50XCI7XG5pbXBvcnQgeyBKc29uRmlsZSB9IGZyb20gXCIuL2pzb25cIjtcbmltcG9ydCB0eXBlIHsgUHJvamVjdCB9IGZyb20gXCIuL3Byb2plY3RcIjtcblxuLyoqXG4gKiBHZW5lcmF0ZXMgYSBgLnByb2plbi90cmVlLmpzb25gIGZpbGUgdGhhdCBwcm92aWRlcyBhIHNuYXBzaG90IG9mIHlvdXJcbiAqIHByb2plY3QncyBjb21wb25lbnQgaGllcmFyY2h5LiBUaGlzIGZpbGUgaW5jbHVkZXMgbWV0YWRhdGEgYWJvdXQgZWFjaFxuICogY29tcG9uZW50IHN1Y2ggYXMgZmlsZSBwYXRocywgdHlwZXMsIGFuZCB0aGUgcHJvamVuIHZlcnNpb24gdXNlZC5cbiAqXG4gKiBUaGUgdHJlZSBmaWxlIGlzIGhlbHBmdWwgZm9yOlxuICogLSBVbmRlcnN0YW5kaW5nIGhvdyB5b3VyIHByb2plY3QgaXMgc3RydWN0dXJlZFxuICogLSBEZWJ1Z2dpbmcgY29tcG9uZW50IHJlbGF0aW9uc2hpcHNcbiAqIC0gVmVyaWZ5aW5nIHdoaWNoIHZlcnNpb25zIHN5bnRoZXNpemVkIHRoZSBwcm9qZWN0XG4gKlxuICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAqL1xuZXhwb3J0IGNsYXNzIFByb2plY3RUcmVlIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgcHVibGljIGZpbGU6IEpzb25GaWxlO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0KSB7XG4gICAgc3VwZXIocHJvamVjdCwgbmV3LnRhcmdldC5uYW1lKTtcblxuICAgIHRoaXMuZmlsZSA9IG5ldyBKc29uRmlsZShwcm9qZWN0LCBcIi5wcm9qZW4vdHJlZS5qc29uXCIsIHtcbiAgICAgIHJlYWRvbmx5OiB0cnVlLFxuICAgICAgbWFya2VyOiBmYWxzZSxcbiAgICAgIG9iajogKCkgPT4gKHtcbiAgICAgICAgW1wiLy9cIl06XG4gICAgICAgICAgXCJFeHBlcmltZW50YWwuIEV4cGVjdCBmcmVxdWVudCBjaGFuZ2VzIHRvIHRoZSBzdHJ1Y3R1cmUgb2YgdGhpcyBmaWxlLlwiLFxuICAgICAgICAuLi5yZW5kZXJDb25zdHJ1Y3QocHJvamVjdCksXG4gICAgICB9KSxcbiAgICB9KTtcbiAgfVxufVxuXG50eXBlIENvbnN0cnVjdFRyZWUgPSBSZWNvcmQ8c3RyaW5nLCBDb25zdHJ1Y3RMZWFmPjtcblxuaW50ZXJmYWNlIENvbnN0cnVjdExlYWYge1xuICBtZXRhZGF0YTogYW55O1xuICBub2Rlcz86IENvbnN0cnVjdFRyZWU7XG59XG5cbmZ1bmN0aW9uIHJlbmRlckNvbnN0cnVjdChjb25zdHJ1Y3Q6IElDb25zdHJ1Y3QpOiBDb25zdHJ1Y3RUcmVlIHtcbiAgcmV0dXJuIHtcbiAgICBbY29uc3RydWN0Lm5vZGUuaWRdOiB7XG4gICAgICBtZXRhZGF0YTogT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICBjb25zdHJ1Y3Qubm9kZS5tZXRhZGF0YS5tYXAoKHsgdHlwZSwgZGF0YSB9KSA9PiBbdHlwZSwgZGF0YV0pLFxuICAgICAgKSxcbiAgICAgIG5vZGVzOiBjb25zdHJ1Y3Qubm9kZS5jaGlsZHJlbi5sZW5ndGhcbiAgICAgICAgPyBjb25zdHJ1Y3Qubm9kZS5jaGlsZHJlbi5yZWR1Y2UoXG4gICAgICAgICAgICAobm9kZXMsIGMpID0+ICh7XG4gICAgICAgICAgICAgIC4uLm5vZGVzLFxuICAgICAgICAgICAgICAuLi5yZW5kZXJDb25zdHJ1Y3QoYyksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgIClcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgfSxcbiAgfTtcbn1cbiJdfQ==