UNPKG

projen

Version:

CDK for software projects

49 lines 5.43 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.51" }; 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC10cmVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Byb2plY3QtdHJlZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLDJDQUF3QztBQUN4QyxpQ0FBa0M7QUFHbEM7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFhLFdBQVksU0FBUSxxQkFBUztJQUd4QyxZQUFtQixPQUFnQjtRQUNqQyxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFaEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLGVBQVEsQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUU7WUFDckQsUUFBUSxFQUFFLElBQUk7WUFDZCxNQUFNLEVBQUUsS0FBSztZQUNiLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO2dCQUNWLENBQUMsSUFBSSxDQUFDLEVBQ0osc0VBQXNFO2dCQUN4RSxHQUFHLGVBQWUsQ0FBQyxPQUFPLENBQUM7YUFDNUIsQ0FBQztTQUNILENBQUMsQ0FBQztJQUNMLENBQUM7O0FBZkgsa0NBZ0JDOzs7QUFTRCxTQUFTLGVBQWUsQ0FBQyxTQUFxQjtJQUM1QyxPQUFPO1FBQ0wsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ25CLFFBQVEsRUFBRSxNQUFNLENBQUMsV0FBVyxDQUMxQixTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FDOUQ7WUFDRCxLQUFLLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTTtnQkFDbkMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FDNUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUNiLEdBQUcsS0FBSztvQkFDUixHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUM7aUJBQ3RCLENBQUMsRUFDRixFQUFFLENBQ0g7Z0JBQ0gsQ0FBQyxDQUFDLFNBQVM7U0FDZDtLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBJQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudFwiO1xuaW1wb3J0IHsgSnNvbkZpbGUgfSBmcm9tIFwiLi9qc29uXCI7XG5pbXBvcnQgdHlwZSB7IFByb2plY3QgfSBmcm9tIFwiLi9wcm9qZWN0XCI7XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgYC5wcm9qZW4vdHJlZS5qc29uYCBmaWxlIHRoYXQgcHJvdmlkZXMgYSBzbmFwc2hvdCBvZiB5b3VyXG4gKiBwcm9qZWN0J3MgY29tcG9uZW50IGhpZXJhcmNoeS4gVGhpcyBmaWxlIGluY2x1ZGVzIG1ldGFkYXRhIGFib3V0IGVhY2hcbiAqIGNvbXBvbmVudCBzdWNoIGFzIGZpbGUgcGF0aHMsIHR5cGVzLCBhbmQgdGhlIHByb2plbiB2ZXJzaW9uIHVzZWQuXG4gKlxuICogVGhlIHRyZWUgZmlsZSBpcyBoZWxwZnVsIGZvcjpcbiAqIC0gVW5kZXJzdGFuZGluZyBob3cgeW91ciBwcm9qZWN0IGlzIHN0cnVjdHVyZWRcbiAqIC0gRGVidWdnaW5nIGNvbXBvbmVudCByZWxhdGlvbnNoaXBzXG4gKiAtIFZlcmlmeWluZyB3aGljaCB2ZXJzaW9ucyBzeW50aGVzaXplZCB0aGUgcHJvamVjdFxuICpcbiAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gKi9cbmV4cG9ydCBjbGFzcyBQcm9qZWN0VHJlZSBleHRlbmRzIENvbXBvbmVudCB7XG4gIHB1YmxpYyBmaWxlOiBKc29uRmlsZTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCkge1xuICAgIHN1cGVyKHByb2plY3QsIG5ldy50YXJnZXQubmFtZSk7XG5cbiAgICB0aGlzLmZpbGUgPSBuZXcgSnNvbkZpbGUocHJvamVjdCwgXCIucHJvamVuL3RyZWUuanNvblwiLCB7XG4gICAgICByZWFkb25seTogdHJ1ZSxcbiAgICAgIG1hcmtlcjogZmFsc2UsXG4gICAgICBvYmo6ICgpID0+ICh7XG4gICAgICAgIFtcIi8vXCJdOlxuICAgICAgICAgIFwiRXhwZXJpbWVudGFsLiBFeHBlY3QgZnJlcXVlbnQgY2hhbmdlcyB0byB0aGUgc3RydWN0dXJlIG9mIHRoaXMgZmlsZS5cIixcbiAgICAgICAgLi4ucmVuZGVyQ29uc3RydWN0KHByb2plY3QpLFxuICAgICAgfSksXG4gICAgfSk7XG4gIH1cbn1cblxudHlwZSBDb25zdHJ1Y3RUcmVlID0gUmVjb3JkPHN0cmluZywgQ29uc3RydWN0TGVhZj47XG5cbmludGVyZmFjZSBDb25zdHJ1Y3RMZWFmIHtcbiAgbWV0YWRhdGE6IGFueTtcbiAgbm9kZXM/OiBDb25zdHJ1Y3RUcmVlO1xufVxuXG5mdW5jdGlvbiByZW5kZXJDb25zdHJ1Y3QoY29uc3RydWN0OiBJQ29uc3RydWN0KTogQ29uc3RydWN0VHJlZSB7XG4gIHJldHVybiB7XG4gICAgW2NvbnN0cnVjdC5ub2RlLmlkXToge1xuICAgICAgbWV0YWRhdGE6IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgICAgY29uc3RydWN0Lm5vZGUubWV0YWRhdGEubWFwKCh7IHR5cGUsIGRhdGEgfSkgPT4gW3R5cGUsIGRhdGFdKSxcbiAgICAgICksXG4gICAgICBub2RlczogY29uc3RydWN0Lm5vZGUuY2hpbGRyZW4ubGVuZ3RoXG4gICAgICAgID8gY29uc3RydWN0Lm5vZGUuY2hpbGRyZW4ucmVkdWNlKFxuICAgICAgICAgICAgKG5vZGVzLCBjKSA9PiAoe1xuICAgICAgICAgICAgICAuLi5ub2RlcyxcbiAgICAgICAgICAgICAgLi4ucmVuZGVyQ29uc3RydWN0KGMpLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICApXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgIH0sXG4gIH07XG59XG4iXX0=