cdktg
Version:
Agile Threat Modeling as Code
40 lines • 5.14 kB
JavaScript
;
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Project = void 0;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
const constructs_1 = require("constructs");
const fs = require("fs-extra");
const common_1 = require("./common");
const manifest_1 = require("./manifest");
const model_1 = require("./model");
class Project extends constructs_1.Construct {
constructor(props = {}) {
super(undefined, "");
this.outdir = props.outdir ?? common_1.CDKTG_OUT_DIR;
this.skipValidation = props.skipValidation;
if (!fs.existsSync(this.outdir)) {
fs.mkdirSync(this.outdir, { recursive: true });
}
this.manifest = new manifest_1.Manifest(common_1.CDKTG_VERSION, this.outdir);
}
/**
* Synthesizes the model to the output directory
*/
synth() {
const session = {
outdir: this.outdir,
skipValidation: this.skipValidation,
manifest: this.manifest,
};
const models = this.node
.findAll()
.filter((c) => c instanceof model_1.Model);
models.forEach((model) => model.synthesizer.synthesize(session));
this.manifest.writeToFile();
}
}
exports.Project = Project;
_a = JSII_RTTI_SYMBOL_1;
Project[_a] = { fqn: "cdktg.Project", version: "0.0.40" };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm9qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsMkNBQXVDO0FBQ3ZDLCtCQUErQjtBQUUvQixxQ0FBd0Q7QUFDeEQseUNBQXNDO0FBQ3RDLG1DQUFnQztBQW1CaEMsTUFBYSxPQUFRLFNBQVEsc0JBQVM7SUFhcEMsWUFBWSxRQUFzQixFQUFFO1FBQ2xDLEtBQUssQ0FBQyxTQUFnQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRTVCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sSUFBSSxzQkFBYSxDQUFDO1FBQzVDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQztRQUUzQyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDL0IsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7U0FDaEQ7UUFFRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksbUJBQVEsQ0FBQyxzQkFBYSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLO1FBQ1YsTUFBTSxPQUFPLEdBQXNCO1lBQ2pDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDbkMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1NBQ3hCLENBQUM7UUFFRixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSTthQUNyQixPQUFPLEVBQUU7YUFDVCxNQUFNLENBQVEsQ0FBQyxDQUFDLEVBQWMsRUFBRSxDQUFDLENBQUMsWUFBWSxhQUFLLENBQUMsQ0FBQztRQUV4RCxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBRWpFLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDOUIsQ0FBQzs7QUEzQ0gsMEJBNENDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmcy1leHRyYVwiO1xuXG5pbXBvcnQgeyBDREtUR19PVVRfRElSLCBDREtUR19WRVJTSU9OIH0gZnJvbSBcIi4vY29tbW9uXCI7XG5pbXBvcnQgeyBNYW5pZmVzdCB9IGZyb20gXCIuL21hbmlmZXN0XCI7XG5pbXBvcnQgeyBNb2RlbCB9IGZyb20gXCIuL21vZGVsXCI7XG5pbXBvcnQgeyBJU3ludGhlc2lzU2Vzc2lvbiB9IGZyb20gXCIuL3N5bnRoZXNpemVyXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvamVjdFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBkaXJlY3RvcnkgdG8gb3V0cHV0IHRoZSB0aHJlYWRnaWxlIG1vZGVsLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIC5cbiAgICovXG4gIHJlYWRvbmx5IG91dGRpcj86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0byBza2lwIHRoZSB2YWxpZGF0aW9uIGR1cmluZyBzeW50aGVzaXMgb2YgdGhlIHByb2plY3RcbiAgICpcbiAgICogQGRlZmF1bHQgLSBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc2tpcFZhbGlkYXRpb24/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgUHJvamVjdCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBUaGUgb3V0cHV0IGRpcmVjdG9yeSBpbnRvIHdoaWNoIG1vZGVscyB3aWxsIGJlIHN5bnRoZXNpemVkLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG91dGRpcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNraXAgdGhlIHZhbGlkYXRpb24gZHVyaW5nIHN5bnRoZXNpcyBvZiB0aGUgYXBwXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2tpcFZhbGlkYXRpb24/OiBib29sZWFuO1xuXG4gIHB1YmxpYyByZWFkb25seSBtYW5pZmVzdDogTWFuaWZlc3Q7XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IFByb2plY3RQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIodW5kZWZpbmVkIGFzIGFueSwgXCJcIik7XG5cbiAgICB0aGlzLm91dGRpciA9IHByb3BzLm91dGRpciA/PyBDREtUR19PVVRfRElSO1xuICAgIHRoaXMuc2tpcFZhbGlkYXRpb24gPSBwcm9wcy5za2lwVmFsaWRhdGlvbjtcblxuICAgIGlmICghZnMuZXhpc3RzU3luYyh0aGlzLm91dGRpcikpIHtcbiAgICAgIGZzLm1rZGlyU3luYyh0aGlzLm91dGRpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5tYW5pZmVzdCA9IG5ldyBNYW5pZmVzdChDREtUR19WRVJTSU9OLCB0aGlzLm91dGRpcik7XG4gIH1cblxuICAvKipcbiAgICogU3ludGhlc2l6ZXMgdGhlIG1vZGVsIHRvIHRoZSBvdXRwdXQgZGlyZWN0b3J5XG4gICAqL1xuICBwdWJsaWMgc3ludGgoKTogdm9pZCB7XG4gICAgY29uc3Qgc2Vzc2lvbjogSVN5bnRoZXNpc1Nlc3Npb24gPSB7XG4gICAgICBvdXRkaXI6IHRoaXMub3V0ZGlyLFxuICAgICAgc2tpcFZhbGlkYXRpb246IHRoaXMuc2tpcFZhbGlkYXRpb24sXG4gICAgICBtYW5pZmVzdDogdGhpcy5tYW5pZmVzdCxcbiAgICB9O1xuXG4gICAgY29uc3QgbW9kZWxzID0gdGhpcy5ub2RlXG4gICAgICAuZmluZEFsbCgpXG4gICAgICAuZmlsdGVyPE1vZGVsPigoYyk6IGMgaXMgTW9kZWwgPT4gYyBpbnN0YW5jZW9mIE1vZGVsKTtcblxuICAgIG1vZGVscy5mb3JFYWNoKChtb2RlbCkgPT4gbW9kZWwuc3ludGhlc2l6ZXIuc3ludGhlc2l6ZShzZXNzaW9uKSk7XG5cbiAgICB0aGlzLm1hbmlmZXN0LndyaXRlVG9GaWxlKCk7XG4gIH1cbn1cbiJdfQ==