@nikovirtala/projen-constructs 0.1.5 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -204,5 +204,5 @@ class Vitest extends component_1.Component {
204
204
  }
205
205
  exports.Vitest = Vitest;
206
206
  _a = JSII_RTTI_SYMBOL_1;
207
- Vitest[_a] = { fqn: "@nikovirtala/projen-constructs.Vitest", version: "0.1.5" };
207
+ Vitest[_a] = { fqn: "@nikovirtala/projen-constructs.Vitest", version: "0.1.7" };
208
208
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBvbmVudHMvdml0ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0NBQWtDO0FBQ2xDLG9EQUFpRDtBQUNqRCwwREFBeUQ7QUFDekQsc0RBQStEO0FBQy9ELGtEQUErQztBQUUvQyxJQUFZLFdBS1g7QUFMRCxXQUFZLFdBQVc7SUFDbkIsNENBQTZCLENBQUE7SUFDN0Isc0NBQXVCLENBQUE7SUFDdkIsOEJBQWUsQ0FBQTtJQUNmLDRCQUFhLENBQUE7QUFDakIsQ0FBQyxFQUxXLFdBQVcsMkJBQVgsV0FBVyxRQUt0QjtBQUVELElBQVksSUFLWDtBQUxELFdBQVksSUFBSTtJQUNaLHVCQUFlLENBQUE7SUFDZiwyQkFBbUIsQ0FBQTtJQUNuQiwyQkFBbUIsQ0FBQTtJQUNuQiwrQkFBdUIsQ0FBQTtBQUMzQixDQUFDLEVBTFcsSUFBSSxvQkFBSixJQUFJLFFBS2Y7QUFFRCxJQUFZLGdCQUdYO0FBSEQsV0FBWSxnQkFBZ0I7SUFDeEIseUNBQXFCLENBQUE7SUFDckIsNkJBQVMsQ0FBQTtBQUNiLENBQUMsRUFIVyxnQkFBZ0IsZ0NBQWhCLGdCQUFnQixRQUczQjtBQUVELElBQVksZ0JBTVg7QUFORCxXQUFZLGdCQUFnQjtJQUN4QixxQ0FBaUIsQ0FBQTtJQUNqQixpQ0FBYSxDQUFBO0lBQ2IsaUNBQWEsQ0FBQTtJQUNiLGlDQUFhLENBQUE7SUFDYixpQ0FBYSxDQUFBO0FBQ2pCLENBQUMsRUFOVyxnQkFBZ0IsZ0NBQWhCLGdCQUFnQixRQU0zQjtBQTZCRCxNQUFhLE1BQU8sU0FBUSxxQkFBUztJQUMxQixNQUFNLENBQUMsRUFBRSxDQUFDLE9BQW9CO1FBQ2pDLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBWSxFQUFlLEVBQUUsQ0FBQyxDQUFDLFlBQVksTUFBTSxDQUFDO1FBQ3BFLE9BQU8sT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQXVCRCxZQUFZLE9BQW9CLEVBQUUsVUFBeUIsRUFBRTtRQUN6RCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFZixJQUFJLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQyxjQUFjLElBQUksa0JBQWtCLENBQUM7UUFDbkUsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sSUFBSSxDQUFDLGtDQUFrQyxDQUFDLENBQUMsQ0FBQztRQUN4RixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksR0FBRyxDQUNsQixPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sSUFBSTtZQUN2QixvQkFBb0I7WUFDcEIsWUFBWTtZQUNaLGVBQWU7WUFDZixxQ0FBcUM7WUFDckMsc0dBQXNHO1NBQ3pHLENBQ0osQ0FBQztRQUNGLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDO1FBQy9DLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQztRQUMvQyxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsZUFBZSxJQUFJLElBQUksQ0FBQztRQUMvRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUN2RixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsSUFBSSxjQUFjLENBQUM7UUFDM0UsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLElBQUksbUJBQW1CLENBQUM7UUFDbEYsSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLGVBQWUsSUFBSSxJQUFJLENBQUM7UUFDL0QsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLFdBQVcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDO1FBQ25FLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLElBQUksS0FBSyxDQUFDO1FBQ2hELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLGdCQUFnQixJQUFJLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztRQUNoRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3RyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsSUFBSSxVQUFVLENBQUM7UUFDekUsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQztRQUM3QyxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsZUFBZSxJQUFJLElBQUksQ0FBQztRQUMvRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsSUFBSSxJQUFJLENBQUM7UUFDbkUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLElBQUksR0FBRyxDQUFDO1FBRWxFLE9BQU8sQ0FBQyxVQUFVLENBQUMsVUFBVSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFdEQsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztZQUN2RyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUM1QixDQUFDO1FBRUQsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2hGLE9BQU8sQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDbEQsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUVqRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVlLGFBQWE7UUFDekIsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRXRCLEtBQUssTUFBTSxTQUFTLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM5QyxJQUFJLFNBQVMsWUFBWSxpQkFBSSxFQUFFLENBQUM7Z0JBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLENBQUMsQ0FBQztZQUNoRSxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFTSxVQUFVLENBQUMsT0FBZTtRQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRU0sVUFBVSxDQUFDLE9BQWU7UUFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVNLG9CQUFvQixDQUFDLFdBQXdCO1FBQ2hELElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTSx5QkFBeUIsQ0FBQyxRQUEwQjtRQUN2RCxNQUFNLGdCQUFnQixHQUFHO1lBQ3JCLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLEVBQUUsdUJBQXVCLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDNUQsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsRUFBRSw2QkFBNkIsSUFBSSxDQUFDLE9BQU8sRUFBRTtTQUMzRSxDQUFDO1FBRUYsS0FBSyxNQUFNLGVBQWUsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztZQUM1RCxJQUFJLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDeEQsQ0FBQztZQUFDLE1BQU0sQ0FBQztnQkFDTCxTQUFTO1lBQ2IsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEVBQUUsNkJBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuRixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTSwwQkFBMEIsQ0FBQyxTQUFrQztRQUNoRSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO1FBQ25DLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTSxnQkFBZ0I7UUFDbkIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTyxjQUFjO1FBQ2xCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFeEUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQy9DLENBQUM7UUFFRCxRQUFRLENBQUMsVUFBVSxDQUFDLHVCQUF1QixFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVPLG1CQUFtQjtRQUN2QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxLQUFLLFNBQVMsQ0FBQztJQUMxRSxDQUFDO0lBRU8sY0FBYztRQUNsQixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JDLFdBQVcsRUFBRSxJQUFJO1NBQ3BCLENBQUMsQ0FBQztRQUVILE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUU7Z0JBQy9CLElBQUksRUFBRSxjQUFjO2dCQUNwQixXQUFXLEVBQUUsSUFBSTthQUNwQixDQUFDLENBQUM7UUFDUCxDQUFDO1FBRUQsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFO2dCQUNoQyxJQUFJLEVBQUUsaUJBQWlCO2dCQUN2QixXQUFXLEVBQUUsSUFBSTthQUNwQixDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0wsQ0FBQztJQUVPLGdCQUFnQjtRQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFaEQsSUFBSSxtQkFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3BDLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFO1NBQzdCLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxZQUFZO1FBQ2hCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFzQixDQUFDO1FBQzVDLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQ2hELE1BQU0sa0JBQWtCLEdBQ3BCLFdBQVcsS0FBSyxnQ0FBZ0M7WUFDNUMsQ0FBQyxDQUFDLDREQUE0RDtZQUM5RCxDQUFDLENBQUMseUZBQXlGLENBQUM7UUFFcEcsT0FBTztZQUNILGtCQUFrQjtZQUNsQixFQUFFO1lBQ0YsK0JBQStCO1lBQy9CLFdBQVc7WUFDWCxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMzQixNQUFNO1lBQ04sS0FBSztTQUNSLENBQUM7SUFDTixDQUFDO0lBRU8saUJBQWlCO1FBQ3JCLE1BQU0sS0FBSyxHQUFrQixFQUFFLENBQUM7UUFFaEMsS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLEtBQUssQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM5QixLQUFLLENBQUMsSUFBSSxDQUFDLGtCQUFrQixJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQztRQUN0RCxLQUFLLENBQUMsSUFBSSxDQUFDLG9CQUFvQixJQUFJLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxDQUFDO1FBQzFELEtBQUssQ0FBQyxJQUFJLENBQUMsbUJBQW1CLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pFLEtBQUssQ0FBQyxJQUFJLENBQUMsNEJBQTRCLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLENBQUM7UUFDbkUsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyQixLQUFLLENBQUMsSUFBSSxDQUFDLHFCQUFxQixJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQztRQUN0RCxLQUFLLENBQUMsSUFBSSxDQUFDLGdCQUFnQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hFLEtBQUssQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQzVDLEtBQUssQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEUsS0FBSyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7UUFDNUMsS0FBSyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUM7UUFDNUQsS0FBSyxDQUFDLElBQUksQ0FBQywwQkFBMEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQztRQUNoRSxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7UUFDeEMsS0FBSyxDQUFDLElBQUksQ0FBQywwQkFBMEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQztRQUNoRSxLQUFLLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDL0IsS0FBSyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQztRQUN2RCxLQUFLLENBQUMsSUFBSSxDQUFDLG1CQUFtQixJQUFJLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxDQUFDO1FBQ3pELEtBQUssQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLENBQUM7UUFDM0QsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyQixLQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUM7UUFFbkQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQzs7QUExTkwsd0JBMk5DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwicHJvamVuL2xpYi9jb21wb25lbnRcIjtcbmltcG9ydCB7IERlcGVuZGVuY3lUeXBlIH0gZnJvbSBcInByb2plbi9saWIvZGVwZW5kZW5jaWVzXCI7XG5pbXBvcnQgeyBKZXN0LCB0eXBlIE5vZGVQcm9qZWN0IH0gZnJvbSBcInByb2plbi9saWIvamF2YXNjcmlwdFwiO1xuaW1wb3J0IHsgVGV4dEZpbGUgfSBmcm9tIFwicHJvamVuL2xpYi90ZXh0ZmlsZVwiO1xuXG5leHBvcnQgZW51bSBFbnZpcm9ubWVudCB7XG4gICAgRURHRV9SVU5USU1FID0gXCJlZGdlLXJ1bnRpbWVcIixcbiAgICBIQVBQWV9ET00gPSBcImhhcHB5LWRvbVwiLFxuICAgIEpTRE9NID0gXCJqc2RvbVwiLFxuICAgIE5PREUgPSBcIm5vZGVcIixcbn1cblxuZXhwb3J0IGVudW0gUG9vbCB7XG4gICAgRk9SS1MgPSBcImZvcmtzXCIsXG4gICAgVEhSRUFEUyA9IFwidGhyZWFkc1wiLFxuICAgIFZNRk9SS1MgPSBcInZtZm9ya3NcIixcbiAgICBWTVRIUkVBRFMgPSBcInZtdGhyZWFkc1wiLFxufVxuXG5leHBvcnQgZW51bSBDb3ZlcmFnZVByb3ZpZGVyIHtcbiAgICBJU1RBTkJVTCA9IFwiaXN0YW5idWxcIixcbiAgICBWOCA9IFwidjhcIixcbn1cblxuZXhwb3J0IGVudW0gQ292ZXJhZ2VSZXBvcnRlciB7XG4gICAgQ0xPVkVSID0gXCJjbG92ZXJcIixcbiAgICBIVE1MID0gXCJodG1sXCIsXG4gICAgSlNPTiA9IFwianNvblwiLFxuICAgIExDT1YgPSBcImxjb3ZcIixcbiAgICBURVhUID0gXCJ0ZXh0XCIsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVml0ZXN0Q29uZmlnT3B0aW9ucyB7XG4gICAgcmVhZG9ubHkgaW5jbHVkZT86IEFycmF5PHN0cmluZz47XG4gICAgcmVhZG9ubHkgZXhjbHVkZT86IEFycmF5PHN0cmluZz47XG4gICAgcmVhZG9ubHkgZW52aXJvbm1lbnQ/OiBFbnZpcm9ubWVudDtcbiAgICByZWFkb25seSBpc29sYXRlPzogYm9vbGVhbjtcbiAgICByZWFkb25seSBwb29sPzogUG9vbDtcbiAgICByZWFkb25seSBnbG9iYWxzPzogYm9vbGVhbjtcbiAgICByZWFkb25seSBjb3ZlcmFnZUVuYWJsZWQ/OiBib29sZWFuO1xuICAgIHJlYWRvbmx5IGNvdmVyYWdlUHJvdmlkZXI/OiBDb3ZlcmFnZVByb3ZpZGVyO1xuICAgIHJlYWRvbmx5IGNvdmVyYWdlUmVwb3J0ZXJzPzogQXJyYXk8Q292ZXJhZ2VSZXBvcnRlcj47XG4gICAgcmVhZG9ubHkgY292ZXJhZ2VEaXJlY3Rvcnk/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgdHlwZWNoZWNrRW5hYmxlZD86IGJvb2xlYW47XG4gICAgcmVhZG9ubHkgdHlwZWNoZWNrQ2hlY2tlcj86IHN0cmluZztcbiAgICByZWFkb25seSB0eXBlY2hlY2tUc2NvbmZpZz86IHN0cmluZztcbiAgICByZWFkb25seSBwYXNzV2l0aE5vVGVzdHM/OiBib29sZWFuO1xuICAgIHJlYWRvbmx5IGJhaWw/OiBudW1iZXI7XG4gICAgcmVhZG9ubHkgdXBkYXRlU25hcHNob3RzPzogYm9vbGVhbjtcbiAgICByZWFkb25seSBwcmludENvbnNvbGVUcmFjZT86IGJvb2xlYW47XG4gICAgcmVhZG9ubHkgc2xvd1Rlc3RUaHJlc2hvbGQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVml0ZXN0T3B0aW9ucyB7XG4gICAgcmVhZG9ubHkgY29uZmlnRmlsZVBhdGg/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgY29uZmlnPzogVml0ZXN0Q29uZmlnT3B0aW9ucztcbiAgICByZWFkb25seSB2aXRlc3RWZXJzaW9uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgVml0ZXN0IGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBwdWJsaWMgc3RhdGljIG9mKHByb2plY3Q6IE5vZGVQcm9qZWN0KTogVml0ZXN0IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgaXNWaXRlc3QgPSAoYzogQ29tcG9uZW50KTogYyBpcyBWaXRlc3QgPT4gYyBpbnN0YW5jZW9mIFZpdGVzdDtcbiAgICAgICAgcmV0dXJuIHByb2plY3QuY29tcG9uZW50cy5maW5kKGlzVml0ZXN0KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ0ZpbGVQYXRoOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBpbmNsdWRlOiBTZXQ8c3RyaW5nPjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGV4Y2x1ZGU6IFNldDxzdHJpbmc+O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaXNvbGF0ZTogYm9vbGVhbjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBvb2w6IFBvb2w7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjb3ZlcmFnZUVuYWJsZWQ6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSB0eXBlY2hlY2tFbmFibGVkOiBib29sZWFuO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdHlwZWNoZWNrQ2hlY2tlcjogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdHlwZWNoZWNrVHNjb25maWc6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhc3NXaXRoTm9UZXN0czogYm9vbGVhbjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJhaWw6IG51bWJlcjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVwZGF0ZVNuYXBzaG90czogYm9vbGVhbjtcbiAgICBwcml2YXRlIGVudmlyb25tZW50OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBnbG9iYWxzOiBib29sZWFuO1xuICAgIHByaXZhdGUgY292ZXJhZ2VQcm92aWRlcjogQ292ZXJhZ2VQcm92aWRlcjtcbiAgICBwcml2YXRlIGNvdmVyYWdlUmVwb3J0ZXJzOiBBcnJheTxDb3ZlcmFnZVJlcG9ydGVyPjtcbiAgICBwcml2YXRlIGNvdmVyYWdlRGlyZWN0b3J5OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSB2ZXJzaW9uOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBwcmludENvbnNvbGVUcmFjZTogYm9vbGVhbjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNsb3dUZXN0VGhyZXNob2xkOiBudW1iZXI7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBOb2RlUHJvamVjdCwgb3B0aW9uczogVml0ZXN0T3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgICAgIHRoaXMuY29uZmlnRmlsZVBhdGggPSBvcHRpb25zLmNvbmZpZ0ZpbGVQYXRoID8/IFwidml0ZXN0LmNvbmZpZy50c1wiO1xuICAgICAgICB0aGlzLmluY2x1ZGUgPSBuZXcgU2V0KG9wdGlvbnMuY29uZmlnPy5pbmNsdWRlID8/IFtcIioqLyoue3Rlc3Qsc3BlY30uPyhjfG0pW2p0XXM/KHgpXCJdKTtcbiAgICAgICAgdGhpcy5leGNsdWRlID0gbmV3IFNldChcbiAgICAgICAgICAgIG9wdGlvbnMuY29uZmlnPy5leGNsdWRlID8/IFtcbiAgICAgICAgICAgICAgICBcIioqL25vZGVfbW9kdWxlcy8qKlwiLFxuICAgICAgICAgICAgICAgIFwiKiovZGlzdC8qKlwiLFxuICAgICAgICAgICAgICAgIFwiKiovY3lwcmVzcy8qKlwiLFxuICAgICAgICAgICAgICAgIFwiKiovLntpZGVhLGdpdCxjYWNoZSxvdXRwdXQsdGVtcH0vKipcIixcbiAgICAgICAgICAgICAgICBcIioqL3trYXJtYSxyb2xsdXAsd2VicGFjayx2aXRlLHZpdGVzdCxqZXN0LGF2YSxiYWJlbCxueWMsY3lwcmVzcyx0c3VwLGJ1aWxkLGVzbGludCxwcmV0dGllcn0uY29uZmlnLipcIixcbiAgICAgICAgICAgIF0sXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuaXNvbGF0ZSA9IG9wdGlvbnMuY29uZmlnPy5pc29sYXRlID8/IHRydWU7XG4gICAgICAgIHRoaXMucG9vbCA9IG9wdGlvbnMuY29uZmlnPy5wb29sID8/IFBvb2wuRk9SS1M7XG4gICAgICAgIHRoaXMuY292ZXJhZ2VFbmFibGVkID0gb3B0aW9ucy5jb25maWc/LmNvdmVyYWdlRW5hYmxlZCA/PyB0cnVlO1xuICAgICAgICB0aGlzLnR5cGVjaGVja0VuYWJsZWQgPSBvcHRpb25zLmNvbmZpZz8udHlwZWNoZWNrRW5hYmxlZCA/PyB0aGlzLmlzVHlwZXNjcmlwdFByb2plY3QoKTtcbiAgICAgICAgdGhpcy50eXBlY2hlY2tDaGVja2VyID0gb3B0aW9ucy5jb25maWc/LnR5cGVjaGVja0NoZWNrZXIgPz8gXCJ0c2MgLS1ub0VtaXRcIjtcbiAgICAgICAgdGhpcy50eXBlY2hlY2tUc2NvbmZpZyA9IG9wdGlvbnMuY29uZmlnPy50eXBlY2hlY2tUc2NvbmZpZyA/PyBcInRzY29uZmlnLmRldi5qc29uXCI7XG4gICAgICAgIHRoaXMucGFzc1dpdGhOb1Rlc3RzID0gb3B0aW9ucy5jb25maWc/LnBhc3NXaXRoTm9UZXN0cyA/PyB0cnVlO1xuICAgICAgICB0aGlzLmJhaWwgPSBvcHRpb25zLmNvbmZpZz8uYmFpbCA/PyAwO1xuICAgICAgICB0aGlzLmVudmlyb25tZW50ID0gb3B0aW9ucy5jb25maWc/LmVudmlyb25tZW50ID8/IEVudmlyb25tZW50Lk5PREU7XG4gICAgICAgIHRoaXMuZ2xvYmFscyA9IG9wdGlvbnMuY29uZmlnPy5nbG9iYWxzID8/IGZhbHNlO1xuICAgICAgICB0aGlzLmNvdmVyYWdlUHJvdmlkZXIgPSBvcHRpb25zLmNvbmZpZz8uY292ZXJhZ2VQcm92aWRlciA/PyBDb3ZlcmFnZVByb3ZpZGVyLlY4O1xuICAgICAgICB0aGlzLmNvdmVyYWdlUmVwb3J0ZXJzID0gb3B0aW9ucy5jb25maWc/LmNvdmVyYWdlUmVwb3J0ZXJzID8/IFtDb3ZlcmFnZVJlcG9ydGVyLlRFWFQsIENvdmVyYWdlUmVwb3J0ZXIuTENPVl07XG4gICAgICAgIHRoaXMuY292ZXJhZ2VEaXJlY3RvcnkgPSBvcHRpb25zLmNvbmZpZz8uY292ZXJhZ2VEaXJlY3RvcnkgPz8gXCJjb3ZlcmFnZVwiO1xuICAgICAgICB0aGlzLnZlcnNpb24gPSBvcHRpb25zLnZpdGVzdFZlcnNpb24gPz8gXCJeNFwiO1xuICAgICAgICB0aGlzLnVwZGF0ZVNuYXBzaG90cyA9IG9wdGlvbnMuY29uZmlnPy51cGRhdGVTbmFwc2hvdHMgPz8gdHJ1ZTtcbiAgICAgICAgdGhpcy5wcmludENvbnNvbGVUcmFjZSA9IG9wdGlvbnMuY29uZmlnPy5wcmludENvbnNvbGVUcmFjZSA/PyB0cnVlO1xuICAgICAgICB0aGlzLnNsb3dUZXN0VGhyZXNob2xkID0gb3B0aW9ucy5jb25maWc/LnNsb3dUZXN0VGhyZXNob2xkID8/IDMwMDtcblxuICAgICAgICBwcm9qZWN0LmFkZERldkRlcHMoYHZpdGVzdEAke3RoaXMudmVyc2lvbn1gKTtcbiAgICAgICAgdGhpcy5jb25maWd1cmVDb3ZlcmFnZVByb3ZpZGVyKHRoaXMuY292ZXJhZ2VQcm92aWRlcik7XG5cbiAgICAgICAgaWYgKHRoaXMuZ2xvYmFscyAmJiB0aGlzLmlzVHlwZXNjcmlwdFByb2plY3QoKSAmJiB0aGlzLnByb2plY3QudHJ5RmluZE9iamVjdEZpbGUodGhpcy50eXBlY2hlY2tUc2NvbmZpZykpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlndXJlR2xvYmFscygpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY292ZXJhZ2VEaXJlY3RvcnlQYXRoID0gcGF0aC5wb3NpeC5qb2luKFwiL1wiLCB0aGlzLmNvdmVyYWdlRGlyZWN0b3J5LCBcIi9cIik7XG4gICAgICAgIHByb2plY3QubnBtaWdub3JlPy5leGNsdWRlKGNvdmVyYWdlRGlyZWN0b3J5UGF0aCk7XG4gICAgICAgIHByb2plY3QuZ2l0aWdub3JlLmV4Y2x1ZGUoY292ZXJhZ2VEaXJlY3RvcnlQYXRoKTtcblxuICAgICAgICB0aGlzLmFkZFRlc3RDb21tYW5kKCk7XG4gICAgICAgIHRoaXMuc3ludGhlc2l6ZUNvbmZpZygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBwcmVTeW50aGVzaXplKCkge1xuICAgICAgICBzdXBlci5wcmVTeW50aGVzaXplKCk7XG5cbiAgICAgICAgZm9yIChjb25zdCBjb21wb25lbnQgb2YgdGhpcy5wcm9qZWN0LmNvbXBvbmVudHMpIHtcbiAgICAgICAgICAgIGlmIChjb21wb25lbnQgaW5zdGFuY2VvZiBKZXN0KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidml0ZXN0IGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggamVzdFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhZGRJbmNsdWRlKHBhdHRlcm46IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmluY2x1ZGUuYWRkKHBhdHRlcm4pO1xuICAgICAgICB0aGlzLnN5bnRoZXNpemVDb25maWcoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRXhjbHVkZShwYXR0ZXJuOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5leGNsdWRlLmFkZChwYXR0ZXJuKTtcbiAgICAgICAgdGhpcy5zeW50aGVzaXplQ29uZmlnKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNvbmZpZ3VyZUVudmlyb25tZW50KGVudmlyb25tZW50OiBFbnZpcm9ubWVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gICAgICAgIHRoaXMuc3ludGhlc2l6ZUNvbmZpZygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb25maWd1cmVDb3ZlcmFnZVByb3ZpZGVyKHByb3ZpZGVyOiBDb3ZlcmFnZVByb3ZpZGVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHByb3ZpZGVyUGFja2FnZXMgPSB7XG4gICAgICAgICAgICBbQ292ZXJhZ2VQcm92aWRlci5WOF06IGBAdml0ZXN0L2NvdmVyYWdlLXY4QCR7dGhpcy52ZXJzaW9ufWAsXG4gICAgICAgICAgICBbQ292ZXJhZ2VQcm92aWRlci5JU1RBTkJVTF06IGBAdml0ZXN0L2NvdmVyYWdlLWlzdGFuYnVsQCR7dGhpcy52ZXJzaW9ufWAsXG4gICAgICAgIH07XG5cbiAgICAgICAgZm9yIChjb25zdCBwcm92aWRlclBhY2thZ2Ugb2YgT2JqZWN0LnZhbHVlcyhwcm92aWRlclBhY2thZ2VzKSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb2plY3QuZGVwcy5yZW1vdmVEZXBlbmRlbmN5KHByb3ZpZGVyUGFja2FnZSk7XG4gICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgICAvLyBpZ25vcmVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHJvamVjdC5kZXBzLmFkZERlcGVuZGVuY3kocHJvdmlkZXJQYWNrYWdlc1twcm92aWRlcl0sIERlcGVuZGVuY3lUeXBlLkRFVkVOVik7XG4gICAgICAgIHRoaXMuY292ZXJhZ2VQcm92aWRlciA9IHByb3ZpZGVyO1xuICAgICAgICB0aGlzLnN5bnRoZXNpemVDb25maWcoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29uZmlndXJlQ292ZXJhZ2VSZXBvcnRlcnMocmVwb3J0ZXJzOiBBcnJheTxDb3ZlcmFnZVJlcG9ydGVyPik6IHZvaWQge1xuICAgICAgICB0aGlzLmNvdmVyYWdlUmVwb3J0ZXJzID0gcmVwb3J0ZXJzO1xuICAgICAgICB0aGlzLnN5bnRoZXNpemVDb25maWcoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29uZmlndXJlR2xvYmFscygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVUc0NvbmZpZygpO1xuICAgICAgICB0aGlzLnN5bnRoZXNpemVDb25maWcoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVRzQ29uZmlnKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB0c2NvbmZpZyA9IHRoaXMucHJvamVjdC50cnlGaW5kT2JqZWN0RmlsZSh0aGlzLnR5cGVjaGVja1RzY29uZmlnKTtcblxuICAgICAgICBpZiAoIXRzY29uZmlnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1bmFibGUgdG8gZmluZCB0c2NvbmZpZ1wiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRzY29uZmlnLmFkZFRvQXJyYXkoXCJjb21waWxlck9wdGlvbnMudHlwZXNcIiwgXCJ2aXRlc3QvZ2xvYmFsc1wiKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzVHlwZXNjcmlwdFByb2plY3QoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb2plY3QuZGVwcy50cnlHZXREZXBlbmRlbmN5KFwidHlwZXNjcmlwdFwiKSAhPT0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkVGVzdENvbW1hbmQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJvamVjdC50ZXN0VGFzay5leGVjKFwidml0ZXN0IHJ1blwiLCB7XG4gICAgICAgICAgICByZWNlaXZlQXJnczogdHJ1ZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgdGVzdFdhdGNoID0gdGhpcy5wcm9qZWN0LnRhc2tzLnRyeUZpbmQoXCJ0ZXN0OndhdGNoXCIpO1xuICAgICAgICBpZiAoIXRlc3RXYXRjaCkge1xuICAgICAgICAgICAgdGhpcy5wcm9qZWN0LmFkZFRhc2soXCJ0ZXN0OndhdGNoXCIsIHtcbiAgICAgICAgICAgICAgICBleGVjOiBcInZpdGVzdCB3YXRjaFwiLFxuICAgICAgICAgICAgICAgIHJlY2VpdmVBcmdzOiB0cnVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0ZXN0VXBkYXRlU25hcHNob3RzID0gdGhpcy5wcm9qZWN0LnRhc2tzLnRyeUZpbmQoXCJ0ZXN0OnVwZGF0ZVwiKTtcbiAgICAgICAgaWYgKCF0ZXN0VXBkYXRlU25hcHNob3RzKSB7XG4gICAgICAgICAgICB0aGlzLnByb2plY3QuYWRkVGFzayhcInRlc3Q6dXBkYXRlXCIsIHtcbiAgICAgICAgICAgICAgICBleGVjOiBcInZpdGVzdCAtLXVwZGF0ZVwiLFxuICAgICAgICAgICAgICAgIHJlY2VpdmVBcmdzOiB0cnVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN5bnRoZXNpemVDb25maWcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJvamVjdC50cnlSZW1vdmVGaWxlKHRoaXMuY29uZmlnRmlsZVBhdGgpO1xuXG4gICAgICAgIG5ldyBUZXh0RmlsZSh0aGlzLCB0aGlzLmNvbmZpZ0ZpbGVQYXRoLCB7XG4gICAgICAgICAgICBsaW5lczogdGhpcy5yZW5kZXJDb25maWcoKSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW5kZXJDb25maWcoKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHByb2plY3QgPSB0aGlzLnByb2plY3QgYXMgTm9kZVByb2plY3Q7XG4gICAgICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcHJvamVjdC5wYWNrYWdlLnBhY2thZ2VOYW1lO1xuICAgICAgICBjb25zdCBkZWZpbmVDb25maWdJbXBvcnQgPVxuICAgICAgICAgICAgcGFja2FnZU5hbWUgPT09IFwiQG5pa292aXJ0YWxhL3Byb2plbi1jb25zdHJ1Y3RzXCJcbiAgICAgICAgICAgICAgICA/ICdpbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tIFwiLi9saWIvdml0ZXN0LWRlZmluZS1jb25maWdcIjsnXG4gICAgICAgICAgICAgICAgOiAnaW1wb3J0IHsgZGVmaW5lQ29uZmlnIH0gZnJvbSBcIkBuaWtvdmlydGFsYS9wcm9qZW4tY29uc3RydWN0cy9saWIvdml0ZXN0LWRlZmluZS1jb25maWdcIjsnO1xuXG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBkZWZpbmVDb25maWdJbXBvcnQsXG4gICAgICAgICAgICBcIlwiLFxuICAgICAgICAgICAgXCJleHBvcnQgZGVmYXVsdCBkZWZpbmVDb25maWcoe1wiLFxuICAgICAgICAgICAgXCIgIHRlc3Q6IHtcIixcbiAgICAgICAgICAgIC4uLnRoaXMucmVuZGVyVGVzdE9wdGlvbnMoKSxcbiAgICAgICAgICAgIFwiICB9LFwiLFxuICAgICAgICAgICAgXCJ9KTtcIixcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbmRlclRlc3RPcHRpb25zKCk6IEFycmF5PHN0cmluZz4ge1xuICAgICAgICBjb25zdCBsaW5lczogQXJyYXk8c3RyaW5nPiA9IFtdO1xuXG4gICAgICAgIGxpbmVzLnB1c2goYCAgICBiYWlsOiAke3RoaXMuYmFpbH0sYCk7XG4gICAgICAgIGxpbmVzLnB1c2goXCIgICAgY292ZXJhZ2U6IHtcIik7XG4gICAgICAgIGxpbmVzLnB1c2goYCAgICAgIGVuYWJsZWQ6ICR7dGhpcy5jb3ZlcmFnZUVuYWJsZWR9LGApO1xuICAgICAgICBsaW5lcy5wdXNoKGAgICAgICBwcm92aWRlcjogXCIke3RoaXMuY292ZXJhZ2VQcm92aWRlcn1cIixgKTtcbiAgICAgICAgbGluZXMucHVzaChgICAgICAgcmVwb3J0ZXI6ICR7SlNPTi5zdHJpbmdpZnkodGhpcy5jb3ZlcmFnZVJlcG9ydGVycyl9LGApO1xuICAgICAgICBsaW5lcy5wdXNoKGAgICAgICByZXBvcnRzRGlyZWN0b3J5OiBcIiR7dGhpcy5jb3ZlcmFnZURpcmVjdG9yeX1cIixgKTtcbiAgICAgICAgbGluZXMucHVzaChcIiAgICB9LFwiKTtcbiAgICAgICAgbGluZXMucHVzaChgICAgIGVudmlyb25tZW50OiBcIiR7dGhpcy5lbnZpcm9ubWVudH1cIixgKTtcbiAgICAgICAgbGluZXMucHVzaChgICAgIGV4Y2x1ZGU6ICR7SlNPTi5zdHJpbmdpZnkoQXJyYXkuZnJvbSh0aGlzLmV4Y2x1ZGUpKX0sYCk7XG4gICAgICAgIGxpbmVzLnB1c2goYCAgICBnbG9iYWxzOiAke3RoaXMuZ2xvYmFsc30sYCk7XG4gICAgICAgIGxpbmVzLnB1c2goYCAgICBpbmNsdWRlOiAke0pTT04uc3RyaW5naWZ5KEFycmF5LmZyb20odGhpcy5pbmNsdWRlKSl9LGApO1xuICAgICAgICBsaW5lcy5wdXNoKGAgICAgaXNvbGF0ZTogJHt0aGlzLmlzb2xhdGV9LGApO1xuICAgICAgICBsaW5lcy5wdXNoKGAgICAgcGFzc1dpdGhOb1Rlc3RzOiAke3RoaXMucGFzc1dpdGhOb1Rlc3RzfSxgKTtcbiAgICAgICAgbGluZXMucHVzaChgICAgIHByaW50Q29uc29sZVRyYWNlOiAke3RoaXMucHJpbnRDb25zb2xlVHJhY2V9LGApO1xuICAgICAgICBsaW5lcy5wdXNoKGAgICAgcG9vbDogXCIke3RoaXMucG9vbH1cIixgKTtcbiAgICAgICAgbGluZXMucHVzaChgICAgIHNsb3dUZXN0VGhyZXNob2xkOiAke3RoaXMuc2xvd1Rlc3RUaHJlc2hvbGR9LGApO1xuICAgICAgICBsaW5lcy5wdXNoKFwiICAgIHR5cGVjaGVjazoge1wiKTtcbiAgICAgICAgbGluZXMucHVzaChgICAgICAgZW5hYmxlZDogJHt0aGlzLnR5cGVjaGVja0VuYWJsZWR9LGApO1xuICAgICAgICBsaW5lcy5wdXNoKGAgICAgICBjaGVja2VyOiBcIiR7dGhpcy50eXBlY2hlY2tDaGVja2VyfVwiLGApO1xuICAgICAgICBsaW5lcy5wdXNoKGAgICAgICB0c2NvbmZpZzogXCIke3RoaXMudHlwZWNoZWNrVHNjb25maWd9XCIsYCk7XG4gICAgICAgIGxpbmVzLnB1c2goXCIgICAgfSxcIik7XG4gICAgICAgIGxpbmVzLnB1c2goYCAgICB1cGRhdGU6ICR7dGhpcy51cGRhdGVTbmFwc2hvdHN9LGApO1xuXG4gICAgICAgIHJldHVybiBsaW5lcztcbiAgICB9XG59XG4iXX0=
package/lib/config.d.ts CHANGED
@@ -1,5 +1,4 @@
1
- import { awscdk, cdk, javascript, typescript } from "projen";
2
- import { type VitestOptions } from "./components/vitest";
1
+ import { awscdk, type Component, cdk, javascript, typescript } from "projen";
3
2
  export declare const defaults: {
4
3
  readonly jsiiVersion: string;
5
4
  readonly cdkVersion: string;
@@ -9,7 +8,12 @@ export declare const defaults: {
9
8
  readonly authorAddress: "niko.virtala@hey.com";
10
9
  readonly constructsVersion: "10.4.3";
11
10
  };
12
- export declare function applyDefaultConfig(project: awscdk.AwsCdkTypeScriptApp | awscdk.AwsCdkConstructLibrary | typescript.TypeScriptProject | cdk.JsiiProject, vitest?: boolean, vitestOptions?: VitestOptions, mise?: boolean): void;
11
+ interface ComponentConfig {
12
+ component: new (project: never, options?: never) => Component;
13
+ enabled?: boolean;
14
+ options?: unknown;
15
+ }
16
+ export declare function applyDefaults(project: awscdk.AwsCdkTypeScriptApp | awscdk.AwsCdkConstructLibrary | typescript.TypeScriptProject | cdk.JsiiProject, components: ComponentConfig[]): void;
13
17
  export declare const projectDefaultOptions: {
14
18
  defaultReleaseBranch: string;
15
19
  minNodeVersion: string;
@@ -73,7 +77,16 @@ export declare const projectDefaultOptions: {
73
77
  };
74
78
  };
75
79
  };
76
- export declare const typescriptProjectDefaultOptions: Partial<typescript.TypeScriptProjectOptions>;
77
- export declare const jsiiProjectDefaultOptions: Partial<cdk.JsiiProjectOptions>;
78
- export declare const cdkAppDefaultOptions: Partial<awscdk.AwsCdkTypeScriptAppOptions>;
79
- export declare const cdkConstructDefaultOptions: Partial<awscdk.AwsCdkConstructLibraryOptions>;
80
+ export declare const defaultOptions: {
81
+ typescript: {
82
+ TypeScriptProject: Partial<typescript.TypeScriptProjectOptions>;
83
+ };
84
+ cdk: {
85
+ JsiiProject: Partial<cdk.JsiiProjectOptions>;
86
+ };
87
+ awscdk: {
88
+ AwsCdkTypeScriptApp: Partial<awscdk.AwsCdkTypeScriptAppOptions>;
89
+ AwsCdkConstructLibrary: Partial<awscdk.AwsCdkConstructLibraryOptions>;
90
+ };
91
+ };
92
+ export {};
package/lib/config.js CHANGED
@@ -1,10 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.cdkConstructDefaultOptions = exports.cdkAppDefaultOptions = exports.jsiiProjectDefaultOptions = exports.typescriptProjectDefaultOptions = exports.projectDefaultOptions = exports.defaults = void 0;
4
- exports.applyDefaultConfig = applyDefaultConfig;
3
+ exports.defaultOptions = exports.projectDefaultOptions = exports.defaults = void 0;
4
+ exports.applyDefaults = applyDefaults;
5
5
  const projen_1 = require("projen");
6
- const mise_1 = require("./components/mise");
7
- const vitest_1 = require("./components/vitest");
8
6
  const utils_1 = require("./utils");
9
7
  const versions = require("./versions.json");
10
8
  exports.defaults = {
@@ -16,8 +14,7 @@ exports.defaults = {
16
14
  return `~${this.typescriptVersion}`;
17
15
  },
18
16
  };
19
- function applyDefaultConfig(project, vitest = true, vitestOptions, mise = true) {
20
- const nodeVersion = project.minNodeVersion ?? exports.defaults.minNodeVersion;
17
+ function configureProject(project) {
21
18
  if ((project instanceof projen_1.awscdk.AwsCdkTypeScriptApp || project instanceof projen_1.typescript.TypeScriptProject) &&
22
19
  !(project instanceof projen_1.cdk.JsiiProject) &&
23
20
  !(project instanceof projen_1.awscdk.AwsCdkConstructLibrary)) {
@@ -37,9 +34,6 @@ function applyDefaultConfig(project, vitest = true, vitestOptions, mise = true)
37
34
  "editor.formatOnSave": true,
38
35
  "editor.tabSize": 4,
39
36
  });
40
- if (mise ?? true) {
41
- new mise_1.Mise(project, { nodeVersion });
42
- }
43
37
  if (project instanceof projen_1.cdk.JsiiProject || project instanceof projen_1.awscdk.AwsCdkConstructLibrary) {
44
38
  // use node.js 24.x to get new enough npm to satisfy: trusted publishing requires npm CLI version 11.5.1 or later.
45
39
  project.github
@@ -49,10 +43,18 @@ function applyDefaultConfig(project, vitest = true, vitestOptions, mise = true)
49
43
  }
50
44
  // remove once configured correctly to biome, mise and vitest components
51
45
  project.npmignore?.addPatterns("biome.jsonc", "mise.toml", "vitest.config.ts");
52
- if (vitest ?? true) {
53
- new vitest_1.Vitest(project, vitestOptions);
46
+ }
47
+ function injectComponents(project, components) {
48
+ for (const { component, enabled, options } of components) {
49
+ if (enabled ?? true) {
50
+ new component(project, options);
51
+ }
54
52
  }
55
53
  }
54
+ function applyDefaults(project, components) {
55
+ configureProject(project);
56
+ injectComponents(project, components);
57
+ }
56
58
  exports.projectDefaultOptions = {
57
59
  defaultReleaseBranch: "main",
58
60
  minNodeVersion: exports.defaults.minNodeVersion,
@@ -136,8 +138,18 @@ const cdkDefaultVersionOptions = {
136
138
  cdkVersion: exports.defaults.cdkVersion,
137
139
  constructsVersion: exports.defaults.constructsVersion,
138
140
  };
139
- exports.typescriptProjectDefaultOptions = (0, utils_1.mergeAll)(exports.projectDefaultOptions, esModuleTsconfigOptions);
140
- exports.jsiiProjectDefaultOptions = (0, utils_1.mergeAll)(exports.projectDefaultOptions, publishableProjectDefaultOptions, { jsiiVersion: exports.defaults.jsiiVersion });
141
- exports.cdkAppDefaultOptions = (0, utils_1.mergeAll)(exports.projectDefaultOptions, esModuleTsconfigOptions, cdkDefaultVersionOptions);
142
- exports.cdkConstructDefaultOptions = (0, utils_1.mergeAll)(exports.projectDefaultOptions, publishableProjectDefaultOptions, cdkDefaultVersionOptions);
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFpQkEsZ0RBd0RDO0FBekVELG1DQUF3RTtBQUV4RSw0Q0FBeUM7QUFDekMsZ0RBQWlFO0FBQ2pFLG1DQUFtQztBQUNuQyw0Q0FBNEM7QUFFL0IsUUFBQSxRQUFRLEdBQUc7SUFDcEIsTUFBTSxFQUFFLGNBQWM7SUFDdEIsYUFBYSxFQUFFLHNCQUFzQjtJQUNyQyxpQkFBaUIsRUFBRSxRQUFRO0lBQzNCLEdBQUcsUUFBUTtJQUNYLElBQUksV0FBVztRQUNYLE9BQU8sSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0NBQ0ssQ0FBQztBQUVYLFNBQWdCLGtCQUFrQixDQUM5QixPQUlxQixFQUNyQixTQUFrQixJQUFJLEVBQ3RCLGFBQTZCLEVBQzdCLE9BQWdCLElBQUk7SUFFcEIsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLGNBQWMsSUFBSSxnQkFBUSxDQUFDLGNBQWMsQ0FBQztJQUV0RSxJQUNJLENBQUMsT0FBTyxZQUFZLGVBQU0sQ0FBQyxtQkFBbUIsSUFBSSxPQUFPLFlBQVksbUJBQVUsQ0FBQyxpQkFBaUIsQ0FBQztRQUNsRyxDQUFDLENBQUMsT0FBTyxZQUFZLFlBQUcsQ0FBQyxXQUFXLENBQUM7UUFDckMsQ0FBQyxDQUFDLE9BQU8sWUFBWSxlQUFNLENBQUMsc0JBQXNCLENBQUMsRUFDckQsQ0FBQztRQUNDLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN6QyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLE9BQU8sQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDN0Is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QUU3QyxRQUFBLCtCQUErQixHQUFHLElBQUEsZ0JBQVEsRUFDbkQsNkJBQXFCLEVBQ3JCLHVCQUF1QixDQUMxQixDQUFDO0FBRVcsUUFBQSx5QkFBeUIsR0FBRyxJQUFBLGdCQUFRLEVBQzdDLDZCQUFxQixFQUNyQixnQ0FBZ0MsRUFDaEMsRUFBRSxXQUFXLEVBQUUsZ0JBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FDeEMsQ0FBQztBQUVXLFFBQUEsb0JBQW9CLEdBQUcsSUFBQSxnQkFBUSxFQUN4Qyw2QkFBcUIsRUFDckIsdUJBQXVCLEVBQ3ZCLHdCQUF3QixDQUMzQixDQUFDO0FBRVcsUUFBQSwwQkFBMEIsR0FBRyxJQUFBLGdCQUFRLEVBQzlDLDZCQUFxQixFQUNyQixnQ0FBZ0MsRUFDaEMsd0JBQXdCLENBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhd3NjZGssIGNkaywgSnNvblBhdGNoLCBqYXZhc2NyaXB0LCB0eXBlc2NyaXB0IH0gZnJvbSBcInByb2plblwiO1xuaW1wb3J0IHR5cGUgeyBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMgfSBmcm9tIFwicHJvamVuL2xpYi90eXBlc2NyaXB0XCI7XG5pbXBvcnQgeyBNaXNlIH0gZnJvbSBcIi4vY29tcG9uZW50cy9taXNlXCI7XG5pbXBvcnQgeyBWaXRlc3QsIHR5cGUgVml0ZXN0T3B0aW9ucyB9IGZyb20gXCIuL2NvbXBvbmVudHMvdml0ZXN0XCI7XG5pbXBvcnQgeyBtZXJnZUFsbCB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgKiBhcyB2ZXJzaW9ucyBmcm9tIFwiLi92ZXJzaW9ucy5qc29uXCI7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICBhdXRob3I6IFwiTmlrbyBWaXJ0YWxhXCIsXG4gICAgYXV0aG9yQWRkcmVzczogXCJuaWtvLnZpcnRhbGFAaGV5LmNvbVwiLFxuICAgIGNvbnN0cnVjdHNWZXJzaW9uOiBcIjEwLjQuM1wiLFxuICAgIC4uLnZlcnNpb25zLFxuICAgIGdldCBqc2lpVmVyc2lvbigpIHtcbiAgICAgICAgcmV0dXJuIGB+JHt0aGlzLnR5cGVzY3JpcHRWZXJzaW9ufWA7XG4gICAgfSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseURlZmF1bHRDb25maWcoXG4gICAgcHJvamVjdDpcbiAgICAgICAgfCBhd3NjZGsuQXdzQ2RrVHlwZVNjcmlwdEFwcFxuICAgICAgICB8IGF3c2Nkay5Bd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5XG4gICAgICAgIHwgdHlwZXNjcmlwdC5UeXBlU2NyaXB0UHJvamVjdFxuICAgICAgICB8IGNkay5Kc2lpUHJvamVjdCxcbiAgICB2aXRlc3Q6IGJvb2xlYW4gPSB0cnVlLFxuICAgIHZpdGVzdE9wdGlvbnM/OiBWaXRlc3RPcHRpb25zLFxuICAgIG1pc2U6IGJvb2xlYW4gPSB0cnVlLFxuKSB7XG4gICAgY29uc3Qgbm9kZVZlcnNpb24gPSBwcm9qZWN0Lm1pbk5vZGVWZXJzaW9uID8/IGRlZmF1bHRzLm1pbk5vZGVWZXJzaW9uO1xuXG4gICAgaWYgKFxuICAgICAgICAocHJvamVjdCBpbnN0YW5jZW9mIGF3c2Nkay5Bd3NDZGtUeXBlU2NyaXB0QXBwIHx8IHByb2plY3QgaW5zdGFuY2VvZiB0eXBlc2NyaXB0LlR5cGVTY3JpcHRQcm9qZWN0KSAmJlxuICAgICAgICAhKHByb2plY3QgaW5zdGFuY2VvZiBjZGsuSnNpaVByb2plY3QpICYmXG4gICAgICAgICEocHJvamVjdCBpbnN0YW5jZW9mIGF3c2Nkay5Bd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5KVxuICAgICkge1xuICAgICAgICBwcm9qZWN0LnBhY2thZ2UuYWRkRmllbGQoXCJ0eXBlXCIsIFwibW9kdWxlXCIpO1xuICAgIH1cblxuICAgIHByb2plY3QuZGVwcy5yZW1vdmVEZXBlbmRlbmN5KFwidHMtbm9kZVwiKTtcbiAgICBwcm9qZWN0LmFkZERldkRlcHMoXCJ0c3hcIik7XG4gICAgcHJvamVjdC5kZWZhdWx0VGFzaz8ucmVzZXQoKTtcbiAgICBwcm9qZWN0LmRlZmF1bHRUYXNrPy5leGVjKGB0c3ggLS10c2NvbmZpZyAke3Byb2plY3QudHNjb25maWdEZXYuZmlsZS5wYXRofSAucHJvamVucmMudHNgKTtcblxuICAgIHByb2plY3QubnBtcmMuYWRkQ29uZmlnKFwibm9kZS1saW5rZXJcIiwgXCJob2lzdGVkXCIpO1xuXG4gICAgcHJvamVjdC52c2NvZGU/LmV4dGVuc2lvbnMuYWRkUmVjb21tZW5kYXRpb25zKFwiYmlvbWVqcy5iaW9tZVwiKTtcbiAgICBwcm9qZWN0LnZzY29kZT8uc2V0dGluZ3MuYWRkU2V0dGluZ3Moe1xuICAgICAgICBcImVkaXRvci5jb2RlQWN0aW9uc09uU2F2ZVwiOiB7XG4gICAgICAgICAgICBcInNvdXJjZS5vcmdhbml6ZUltcG9ydHMuYmlvbWVcIjogXCJhbHdheXNcIixcbiAgICAgICAgfSxcbiAgICAgICAgXCJlZGl0b3IuZGVmYXVsdEZvcm1hdHRlclwiOiBcImJpb21lanMuYmlvbWVcIixcbiAgICAgICAgXCJlZGl0b3IuZm9ybWF0T25TYXZlXCI6IHRydWUsXG4gICAgICAgIFwiZWRpdG9yLnRhYlNpemVcIjogNCxcbiAgICB9KTtcblxuICAgIGlmIChtaXNlID8/IHRydWUpIHtcbiAgICAgICAgbmV3IE1pc2UocHJvamVjdCwgeyBub2RlVmVyc2lvbiB9KTtcbiAgICB9XG5cbiAgICBpZiAocHJvamVjdCBpbnN0YW5jZW9mIGNkay5Kc2lpUHJvamVjdCB8fCBwcm9qZWN0IGluc3RhbmNlb2YgYXdzY2RrLkF3c0Nka0NvbnN0cnVjdExpYnJhcnkpIHtcbiAgICAgICAgLy8gdXNlIG5vZGUuanMgMjQueCB0byBnZXQgbmV3IGVub3VnaCBucG0gdG8gc2F0aXNmeTogdHJ1c3RlZCBwdWJsaXNoaW5nIHJlcXVpcmVzIG5wbSBDTEkgdmVyc2lvbiAxMS41LjEgb3IgbGF0ZXIuXG4gICAgICAgIHByb2plY3QuZ2l0aHViXG4gICAgICAgICAgICA/LnRyeUZpbmRXb3JrZmxvdyhcInJlbGVhc2VcIilcbiAgICAgICAgICAgID8uZmlsZT8ucGF0Y2goSnNvblBhdGNoLnJlcGxhY2UoXCIvam9icy9yZWxlYXNlX25wbS9zdGVwcy8wL3dpdGgvbm9kZS12ZXJzaW9uXCIsIFwiMjQueFwiKSk7XG5cbiAgICAgICAgcHJvamVjdC5wYWNrYWdlLmFkZEZpZWxkKFwicHVibGlzaENvbmZpZ1wiLCB7IGFjY2VzczogXCJwdWJsaWNcIiB9KTtcbiAgICB9XG5cbiAgICAvLyByZW1vdmUgb25jZSBjb25maWd1cmVkIGNvcnJlY3RseSB0byBiaW9tZSwgbWlzZSBhbmQgdml0ZXN0IGNvbXBvbmVudHNcbiAgICBwcm9qZWN0Lm5wbWlnbm9yZT8uYWRkUGF0dGVybnMoXCJiaW9tZS5qc29uY1wiLCBcIm1pc2UudG9tbFwiLCBcInZpdGVzdC5jb25maWcudHNcIik7XG5cbiAgICBpZiAodml0ZXN0ID8/IHRydWUpIHtcbiAgICAgICAgbmV3IFZpdGVzdChwcm9qZWN0LCB2aXRlc3RPcHRpb25zKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCBwcm9qZWN0RGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgZGVmYXVsdFJlbGVhc2VCcmFuY2g6IFwibWFpblwiLFxuICAgIG1pbk5vZGVWZXJzaW9uOiBkZWZhdWx0cy5taW5Ob2RlVmVyc2lvbixcbiAgICBhdXRvQXBwcm92ZU9wdGlvbnM6IHtcbiAgICAgICAgc2VjcmV0OiBcIkdJVEhVQl9UT0tFTlwiLFxuICAgICAgICBhbGxvd2VkVXNlcm5hbWVzOiBbXCJuaWtvdmlydGFsYVwiXSxcbiAgICB9LFxuICAgIGRlcGVuZGFib3Q6IGZhbHNlLFxuICAgIGRlcHNVcGdyYWRlT3B0aW9uczoge1xuICAgICAgICB3b3JrZmxvd09wdGlvbnM6IHtcbiAgICAgICAgICAgIGxhYmVsczogW1wiYXV0by1hcHByb3ZlXCIsIFwiYXV0by1tZXJnZVwiXSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGdpdGh1YjogdHJ1ZSxcbiAgICBtZXJnaWZ5OiB0cnVlLFxuICAgIGF1dG9NZXJnZTogdHJ1ZSxcbiAgICBqZXN0OiBmYWxzZSxcbiAgICBlc2xpbnQ6IGZhbHNlLFxuICAgIHByZXR0aWVyOiBmYWxzZSxcbiAgICBiaW9tZTogdHJ1ZSxcbiAgICBiaW9tZU9wdGlvbnM6IHtcbiAgICAgICAgYmlvbWVDb25maWc6IHtcbiAgICAgICAgICAgIGZvcm1hdHRlcjoge1xuICAgICAgICAgICAgICAgIGluZGVudFN0eWxlOiBqYXZhc2NyaXB0LmJpb21lX2NvbmZpZy5JbmRlbnRTdHlsZS5TUEFDRSxcbiAgICAgICAgICAgICAgICBpbmRlbnRXaWR0aDogNCxcbiAgICAgICAgICAgICAgICBsaW5lV2lkdGg6IDEyMCxcbiAgICAgICAgICAgICAgICB1c2VFZGl0b3Jjb25maWc6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZm9ybWF0dGVyOiB0cnVlLFxuICAgICAgICBsaW50ZXI6IHRydWUsXG4gICAgfSxcbiAgICBwYWNrYWdlTWFuYWdlcjogamF2YXNjcmlwdC5Ob2RlUGFja2FnZU1hbmFnZXIuUE5QTSxcbiAgICBwbnBtVmVyc2lvbjogXCIxMFwiLFxuICAgIHByb2plbnJjVHM6IHRydWUsXG4gICAgdHlwZXNjcmlwdFZlcnNpb246IGRlZmF1bHRzLnR5cGVzY3JpcHRWZXJzaW9uLFxuICAgIHRzY29uZmlnOiB7XG4gICAgICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgICAgICAgYWxsb3dTeW50aGV0aWNEZWZhdWx0SW1wb3J0czogdHJ1ZSxcbiAgICAgICAgICAgIGFsd2F5c1N0cmljdDogdHJ1ZSxcbiAgICAgICAgICAgIGRlY2xhcmF0aW9uOiB0cnVlLFxuICAgICAgICAgICAgZXNNb2R1bGVJbnRlcm9wOiB0cnVlLFxuICAgICAgICAgICAgZXhwZXJpbWVudGFsRGVjb3JhdG9yczogdHJ1ZSxcbiAgICAgICAgICAgIGlubGluZVNvdXJjZU1hcDogdHJ1ZSxcbiAgICAgICAgICAgIGlubGluZVNvdXJjZXM6IHRydWUsXG4gICAgICAgICAgICBpc29sYXRlZE1vZHVsZXM6IHRydWUsXG4gICAgICAgICAgICBub0VtaXQ6IHRydWUsXG4gICAgICAgICAgICBub0VtaXRPbkVycm9yOiBmYWxzZSxcbiAgICAgICAgICAgIG5vRmFsbHRocm91Z2hDYXNlc0luU3dpdGNoOiB0cnVlLFxuICAgICAgICAgICAgbm9JbXBsaWNpdEFueTogdHJ1ZSxcbiAgICAgICAgICAgIG5vSW1wbGljaXRPdmVycmlkZTogdHJ1ZSxcbiAgICAgICAgICAgIG5vSW1wbGljaXRSZXR1cm5zOiB0cnVlLFxuICAgICAgICAgICAgbm9JbXBsaWNpdFRoaXM6IHRydWUsXG4gICAgICAgICAgICBub1VudXNlZExvY2FsczogdHJ1ZSxcbiAgICAgICAgICAgIG5vVW51c2VkUGFyYW1ldGVyczogdHJ1ZSxcbiAgICAgICAgICAgIHJlc29sdmVKc29uTW9kdWxlOiB0cnVlLFxuICAgICAgICAgICAgc3RyaWN0OiB0cnVlLFxuICAgICAgICAgICAgc3RyaWN0TnVsbENoZWNrczogdHJ1ZSxcbiAgICAgICAgICAgIHN0cmljdFByb3BlcnR5SW5pdGlhbGl6YXRpb246IHRydWUsXG4gICAgICAgICAgICBzdHJpcEludGVybmFsOiB0cnVlLFxuICAgICAgICB9LFxuICAgIH0sXG59IHNhdGlzZmllcyBQYXJ0aWFsPFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucz47XG5cbmNvbnN0IGVzTW9kdWxlVHNjb25maWdPcHRpb25zID0ge1xuICAgIHRzY29uZmlnOiB7XG4gICAgICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgICAgICAgYWxsb3dJbXBvcnRpbmdUc0V4dGVuc2lvbnM6IHRydWUsXG4gICAgICAgICAgICBsaWI6IFtcImVzbmV4dFwiXSxcbiAgICAgICAgICAgIG1vZHVsZTogXCJub2RlbmV4dFwiLFxuICAgICAgICAgICAgbW9kdWxlUmVzb2x1dGlvbjogamF2YXNjcmlwdC5UeXBlU2NyaXB0TW9kdWxlUmVzb2x1dGlvbi5OT0RFX05FWFQsXG4gICAgICAgICAgICB0YXJnZXQ6IFwiZXNuZXh0XCIsXG4gICAgICAgIH0sXG4gICAgfSxcbn0gc2F0aXNmaWVzIFBhcnRpYWw8VHlwZVNjcmlwdFByb2plY3RPcHRpb25zPjtcblxuY29uc3QgcHVibGlzaGFibGVQcm9qZWN0RGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgYXV0aG9yOiBkZWZhdWx0cy5hdXRob3IsXG4gICAgYXV0aG9yQWRkcmVzczogZGVmYXVsdHMuYXV0aG9yQWRkcmVzcyxcbiAgICBucG1UcnVzdGVkUHVibGlzaGluZzogdHJ1ZSxcbn0gc2F0aXNmaWVzIFBhcnRpYWw8Y2RrLkpzaWlQcm9qZWN0T3B0aW9ucz47XG5cbmNvbnN0IGNka0RlZmF1bHRWZXJzaW9uT3B0aW9ucyA9IHtcbiAgICBjZGtWZXJzaW9uOiBkZWZhdWx0cy5jZGtWZXJzaW9uLFxuICAgIGNvbnN0cnVjdHNWZXJzaW9uOiBkZWZhdWx0cy5jb25zdHJ1Y3RzVmVyc2lvbixcbn0gc2F0aXNmaWVzIFBhcnRpYWw8YXdzY2RrLkF3c0Nka0NvbnN0cnVjdExpYnJhcnlPcHRpb25zPjtcblxuZXhwb3J0IGNvbnN0IHR5cGVzY3JpcHRQcm9qZWN0RGVmYXVsdE9wdGlvbnMgPSBtZXJnZUFsbDx0eXBlc2NyaXB0LlR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucz4oXG4gICAgcHJvamVjdERlZmF1bHRPcHRpb25zLFxuICAgIGVzTW9kdWxlVHNjb25maWdPcHRpb25zLFxuKTtcblxuZXhwb3J0IGNvbnN0IGpzaWlQcm9qZWN0RGVmYXVsdE9wdGlvbnMgPSBtZXJnZUFsbDxjZGsuSnNpaVByb2plY3RPcHRpb25zPihcbiAgICBwcm9qZWN0RGVmYXVsdE9wdGlvbnMsXG4gICAgcHVibGlzaGFibGVQcm9qZWN0RGVmYXVsdE9wdGlvbnMsXG4gICAgeyBqc2lpVmVyc2lvbjogZGVmYXVsdHMuanNpaVZlcnNpb24gfSxcbik7XG5cbmV4cG9ydCBjb25zdCBjZGtBcHBEZWZhdWx0T3B0aW9ucyA9IG1lcmdlQWxsPGF3c2Nkay5Bd3NDZGtUeXBlU2NyaXB0QXBwT3B0aW9ucz4oXG4gICAgcHJvamVjdERlZmF1bHRPcHRpb25zLFxuICAgIGVzTW9kdWxlVHNjb25maWdPcHRpb25zLFxuICAgIGNka0RlZmF1bHRWZXJzaW9uT3B0aW9ucyxcbik7XG5cbmV4cG9ydCBjb25zdCBjZGtDb25zdHJ1Y3REZWZhdWx0T3B0aW9ucyA9IG1lcmdlQWxsPGF3c2Nkay5Bd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9ucz4oXG4gICAgcHJvamVjdERlZmF1bHRPcHRpb25zLFxuICAgIHB1Ymxpc2hhYmxlUHJvamVjdERlZmF1bHRPcHRpb25zLFxuICAgIGNka0RlZmF1bHRWZXJzaW9uT3B0aW9ucyxcbik7XG4iXX0=
141
+ exports.defaultOptions = {
142
+ typescript: {
143
+ TypeScriptProject: (0, utils_1.mergeAll)(exports.projectDefaultOptions, esModuleTsconfigOptions),
144
+ },
145
+ cdk: {
146
+ JsiiProject: (0, utils_1.mergeAll)(exports.projectDefaultOptions, publishableProjectDefaultOptions, {
147
+ jsiiVersion: exports.defaults.jsiiVersion,
148
+ }),
149
+ },
150
+ awscdk: {
151
+ AwsCdkTypeScriptApp: (0, utils_1.mergeAll)(exports.projectDefaultOptions, esModuleTsconfigOptions, cdkDefaultVersionOptions),
152
+ AwsCdkConstructLibrary: (0, utils_1.mergeAll)(exports.projectDefaultOptions, publishableProjectDefaultOptions, cdkDefaultVersionOptions),
153
+ },
154
+ };
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFpRkEsc0NBVUM7QUEzRkQsbUNBQXdGO0FBRXhGLG1DQUFtQztBQUNuQyw0Q0FBNEM7QUFFL0IsUUFBQSxRQUFRLEdBQUc7SUFDcEIsTUFBTSxFQUFFLGNBQWM7SUFDdEIsYUFBYSxFQUFFLHNCQUFzQjtJQUNyQyxpQkFBaUIsRUFBRSxRQUFRO0lBQzNCLEdBQUcsUUFBUTtJQUNYLElBQUksV0FBVztRQUNYLE9BQU8sSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0NBQ0ssQ0FBQztBQVFYLFNBQVMsZ0JBQWdCLENBQ3JCLE9BSXFCO0lBRXJCLElBQ0ksQ0FBQyxPQUFPLFlBQVksZUFBTSxDQUFDLG1CQUFtQixJQUFJLE9BQU8sWUFBWSxtQkFBVSxDQUFDLGlCQUFpQixDQUFDO1FBQ2xHLENBQUMsQ0FBQyxPQUFPLFlBQVksWUFBRyxDQUFDLFdBQVcsQ0FBQztRQUNyQyxDQUFDLENBQUMsT0FBTyxZQUFZLGVBQU0sQ0FBQyxzQkFBc0IsQ0FBQyxFQUNyRCxDQUFDO1FBQ0MsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3pDLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsT0FBTyxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUM3QixPQUFPLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxlQUFlLENBQUMsQ0FBQztJQUUxRixPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsU0FB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USxDQUFDLGlCQUFpQjtDQUNRLENBQUM7QUFFN0MsUUFBQSxjQUFjLEdBQUc7SUFDMUIsVUFBVSxFQUFFO1FBQ1IsaUJBQWlCLEVBQUUsSUFBQSxnQkFBUSxFQUN2Qiw2QkFBcUIsRUFDckIsdUJBQXVCLENBQzFCO0tBQ0o7SUFDRCxHQUFHLEVBQUU7UUFDRCxXQUFXLEVBQUUsSUFBQSxnQkFBUSxFQUF5Qiw2QkFBcUIsRUFBRSxnQ0FBZ0MsRUFBRTtZQUNuRyxXQUFXLEVBQUUsZ0JBQVEsQ0FBQyxXQUFXO1NBQ3BDLENBQUM7S0FDTDtJQUNELE1BQU0sRUFBRTtRQUNKLG1CQUFtQixFQUFFLElBQUEsZ0JBQVEsRUFDekIsNkJBQXFCLEVBQ3JCLHVCQUF1QixFQUN2Qix3QkFBd0IsQ0FDM0I7UUFDRCxzQkFBc0IsRUFBRSxJQUFBLGdCQUFRLEVBQzVCLDZCQUFxQixFQUNyQixnQ0FBZ0MsRUFDaEMsd0JBQXdCLENBQzNCO0tBQ0o7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXdzY2RrLCB0eXBlIENvbXBvbmVudCwgY2RrLCBKc29uUGF0Y2gsIGphdmFzY3JpcHQsIHR5cGVzY3JpcHQgfSBmcm9tIFwicHJvamVuXCI7XG5pbXBvcnQgdHlwZSB7IFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyB9IGZyb20gXCJwcm9qZW4vbGliL3R5cGVzY3JpcHRcIjtcbmltcG9ydCB7IG1lcmdlQWxsIH0gZnJvbSBcIi4vdXRpbHNcIjtcbmltcG9ydCAqIGFzIHZlcnNpb25zIGZyb20gXCIuL3ZlcnNpb25zLmpzb25cIjtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRzID0ge1xuICAgIGF1dGhvcjogXCJOaWtvIFZpcnRhbGFcIixcbiAgICBhdXRob3JBZGRyZXNzOiBcIm5pa28udmlydGFsYUBoZXkuY29tXCIsXG4gICAgY29uc3RydWN0c1ZlcnNpb246IFwiMTAuNC4zXCIsXG4gICAgLi4udmVyc2lvbnMsXG4gICAgZ2V0IGpzaWlWZXJzaW9uKCkge1xuICAgICAgICByZXR1cm4gYH4ke3RoaXMudHlwZXNjcmlwdFZlcnNpb259YDtcbiAgICB9LFxufSBhcyBjb25zdDtcblxuaW50ZXJmYWNlIENvbXBvbmVudENvbmZpZyB7XG4gICAgY29tcG9uZW50OiBuZXcgKHByb2plY3Q6IG5ldmVyLCBvcHRpb25zPzogbmV2ZXIpID0+IENvbXBvbmVudDtcbiAgICBlbmFibGVkPzogYm9vbGVhbjtcbiAgICBvcHRpb25zPzogdW5rbm93bjtcbn1cblxuZnVuY3Rpb24gY29uZmlndXJlUHJvamVjdChcbiAgICBwcm9qZWN0OlxuICAgICAgICB8IGF3c2Nkay5Bd3NDZGtUeXBlU2NyaXB0QXBwXG4gICAgICAgIHwgYXdzY2RrLkF3c0Nka0NvbnN0cnVjdExpYnJhcnlcbiAgICAgICAgfCB0eXBlc2NyaXB0LlR5cGVTY3JpcHRQcm9qZWN0XG4gICAgICAgIHwgY2RrLkpzaWlQcm9qZWN0LFxuKSB7XG4gICAgaWYgKFxuICAgICAgICAocHJvamVjdCBpbnN0YW5jZW9mIGF3c2Nkay5Bd3NDZGtUeXBlU2NyaXB0QXBwIHx8IHByb2plY3QgaW5zdGFuY2VvZiB0eXBlc2NyaXB0LlR5cGVTY3JpcHRQcm9qZWN0KSAmJlxuICAgICAgICAhKHByb2plY3QgaW5zdGFuY2VvZiBjZGsuSnNpaVByb2plY3QpICYmXG4gICAgICAgICEocHJvamVjdCBpbnN0YW5jZW9mIGF3c2Nkay5Bd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5KVxuICAgICkge1xuICAgICAgICBwcm9qZWN0LnBhY2thZ2UuYWRkRmllbGQoXCJ0eXBlXCIsIFwibW9kdWxlXCIpO1xuICAgIH1cblxuICAgIHByb2plY3QuZGVwcy5yZW1vdmVEZXBlbmRlbmN5KFwidHMtbm9kZVwiKTtcbiAgICBwcm9qZWN0LmFkZERldkRlcHMoXCJ0c3hcIik7XG4gICAgcHJvamVjdC5kZWZhdWx0VGFzaz8ucmVzZXQoKTtcbiAgICBwcm9qZWN0LmRlZmF1bHRUYXNrPy5leGVjKGB0c3ggLS10c2NvbmZpZyAke3Byb2plY3QudHNjb25maWdEZXYuZmlsZS5wYXRofSAucHJvamVucmMudHNgKTtcblxuICAgIHByb2plY3QubnBtcmMuYWRkQ29uZmlnKFwibm9kZS1saW5rZXJcIiwgXCJob2lzdGVkXCIpO1xuXG4gICAgcHJvamVjdC52c2NvZGU/LmV4dGVuc2lvbnMuYWRkUmVjb21tZW5kYXRpb25zKFwiYmlvbWVqcy5iaW9tZVwiKTtcbiAgICBwcm9qZWN0LnZzY29kZT8uc2V0dGluZ3MuYWRkU2V0dGluZ3Moe1xuICAgICAgICBcImVkaXRvci5jb2RlQWN0aW9uc09uU2F2ZVwiOiB7XG4gICAgICAgICAgICBcInNvdXJjZS5vcmdhbml6ZUltcG9ydHMuYmlvbWVcIjogXCJhbHdheXNcIixcbiAgICAgICAgfSxcbiAgICAgICAgXCJlZGl0b3IuZGVmYXVsdEZvcm1hdHRlclwiOiBcImJpb21lanMuYmlvbWVcIixcbiAgICAgICAgXCJlZGl0b3IuZm9ybWF0T25TYXZlXCI6IHRydWUsXG4gICAgICAgIFwiZWRpdG9yLnRhYlNpemVcIjogNCxcbiAgICB9KTtcblxuICAgIGlmIChwcm9qZWN0IGluc3RhbmNlb2YgY2RrLkpzaWlQcm9qZWN0IHx8IHByb2plY3QgaW5zdGFuY2VvZiBhd3NjZGsuQXdzQ2RrQ29uc3RydWN0TGlicmFyeSkge1xuICAgICAgICAvLyB1c2Ugbm9kZS5qcyAyNC54IHRvIGdldCBuZXcgZW5vdWdoIG5wbSB0byBzYXRpc2Z5OiB0cnVzdGVkIHB1Ymxpc2hpbmcgcmVxdWlyZXMgbnBtIENMSSB2ZXJzaW9uIDExLjUuMSBvciBsYXRlci5cbiAgICAgICAgcHJvamVjdC5naXRodWJcbiAgICAgICAgICAgID8udHJ5RmluZFdvcmtmbG93KFwicmVsZWFzZVwiKVxuICAgICAgICAgICAgPy5maWxlPy5wYXRjaChKc29uUGF0Y2gucmVwbGFjZShcIi9qb2JzL3JlbGVhc2VfbnBtL3N0ZXBzLzAvd2l0aC9ub2RlLXZlcnNpb25cIiwgXCIyNC54XCIpKTtcblxuICAgICAgICBwcm9qZWN0LnBhY2thZ2UuYWRkRmllbGQoXCJwdWJsaXNoQ29uZmlnXCIsIHsgYWNjZXNzOiBcInB1YmxpY1wiIH0pO1xuICAgIH1cblxuICAgIC8vIHJlbW92ZSBvbmNlIGNvbmZpZ3VyZWQgY29ycmVjdGx5IHRvIGJpb21lLCBtaXNlIGFuZCB2aXRlc3QgY29tcG9uZW50c1xuICAgIHByb2plY3QubnBtaWdub3JlPy5hZGRQYXR0ZXJucyhcImJpb21lLmpzb25jXCIsIFwibWlzZS50b21sXCIsIFwidml0ZXN0LmNvbmZpZy50c1wiKTtcbn1cblxuZnVuY3Rpb24gaW5qZWN0Q29tcG9uZW50cyhcbiAgICBwcm9qZWN0OlxuICAgICAgICB8IGF3c2Nkay5Bd3NDZGtUeXBlU2NyaXB0QXBwXG4gICAgICAgIHwgYXdzY2RrLkF3c0Nka0NvbnN0cnVjdExpYnJhcnlcbiAgICAgICAgfCB0eXBlc2NyaXB0LlR5cGVTY3JpcHRQcm9qZWN0XG4gICAgICAgIHwgY2RrLkpzaWlQcm9qZWN0LFxuICAgIGNvbXBvbmVudHM6IENvbXBvbmVudENvbmZpZ1tdLFxuKSB7XG4gICAgZm9yIChjb25zdCB7IGNvbXBvbmVudCwgZW5hYmxlZCwgb3B0aW9ucyB9IG9mIGNvbXBvbmVudHMpIHtcbiAgICAgICAgaWYgKGVuYWJsZWQgPz8gdHJ1ZSkge1xuICAgICAgICAgICAgbmV3IGNvbXBvbmVudChwcm9qZWN0IGFzIG5ldmVyLCBvcHRpb25zIGFzIG5ldmVyKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5RGVmYXVsdHMoXG4gICAgcHJvamVjdDpcbiAgICAgICAgfCBhd3NjZGsuQXdzQ2RrVHlwZVNjcmlwdEFwcFxuICAgICAgICB8IGF3c2Nkay5Bd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5XG4gICAgICAgIHwgdHlwZXNjcmlwdC5UeXBlU2NyaXB0UHJvamVjdFxuICAgICAgICB8IGNkay5Kc2lpUHJvamVjdCxcbiAgICBjb21wb25lbnRzOiBDb21wb25lbnRDb25maWdbXSxcbikge1xuICAgIGNvbmZpZ3VyZVByb2plY3QocHJvamVjdCk7XG4gICAgaW5qZWN0Q29tcG9uZW50cyhwcm9qZWN0LCBjb21wb25lbnRzKTtcbn1cblxuZXhwb3J0IGNvbnN0IHByb2plY3REZWZhdWx0T3B0aW9ucyA9IHtcbiAgICBkZWZhdWx0UmVsZWFzZUJyYW5jaDogXCJtYWluXCIsXG4gICAgbWluTm9kZVZlcnNpb246IGRlZmF1bHRzLm1pbk5vZGVWZXJzaW9uLFxuICAgIGF1dG9BcHByb3ZlT3B0aW9uczoge1xuICAgICAgICBzZWNyZXQ6IFwiR0lUSFVCX1RPS0VOXCIsXG4gICAgICAgIGFsbG93ZWRVc2VybmFtZXM6IFtcIm5pa292aXJ0YWxhXCJdLFxuICAgIH0sXG4gICAgZGVwZW5kYWJvdDogZmFsc2UsXG4gICAgZGVwc1VwZ3JhZGVPcHRpb25zOiB7XG4gICAgICAgIHdvcmtmbG93T3B0aW9uczoge1xuICAgICAgICAgICAgbGFiZWxzOiBbXCJhdXRvLWFwcHJvdmVcIiwgXCJhdXRvLW1lcmdlXCJdLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgZ2l0aHViOiB0cnVlLFxuICAgIG1lcmdpZnk6IHRydWUsXG4gICAgYXV0b01lcmdlOiB0cnVlLFxuICAgIGplc3Q6IGZhbHNlLFxuICAgIGVzbGludDogZmFsc2UsXG4gICAgcHJldHRpZXI6IGZhbHNlLFxuICAgIGJpb21lOiB0cnVlLFxuICAgIGJpb21lT3B0aW9uczoge1xuICAgICAgICBiaW9tZUNvbmZpZzoge1xuICAgICAgICAgICAgZm9ybWF0dGVyOiB7XG4gICAgICAgICAgICAgICAgaW5kZW50U3R5bGU6IGphdmFzY3JpcHQuYmlvbWVfY29uZmlnLkluZGVudFN0eWxlLlNQQUNFLFxuICAgICAgICAgICAgICAgIGluZGVudFdpZHRoOiA0LFxuICAgICAgICAgICAgICAgIGxpbmVXaWR0aDogMTIwLFxuICAgICAgICAgICAgICAgIHVzZUVkaXRvcmNvbmZpZzogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBmb3JtYXR0ZXI6IHRydWUsXG4gICAgICAgIGxpbnRlcjogdHJ1ZSxcbiAgICB9LFxuICAgIHBhY2thZ2VNYW5hZ2VyOiBqYXZhc2NyaXB0Lk5vZGVQYWNrYWdlTWFuYWdlci5QTlBNLFxuICAgIHBucG1WZXJzaW9uOiBcIjEwXCIsXG4gICAgcHJvamVucmNUczogdHJ1ZSxcbiAgICB0eXBlc2NyaXB0VmVyc2lvbjogZGVmYXVsdHMudHlwZXNjcmlwdFZlcnNpb24sXG4gICAgdHNjb25maWc6IHtcbiAgICAgICAgY29tcGlsZXJPcHRpb25zOiB7XG4gICAgICAgICAgICBhbGxvd1N5bnRoZXRpY0RlZmF1bHRJbXBvcnRzOiB0cnVlLFxuICAgICAgICAgICAgYWx3YXlzU3RyaWN0OiB0cnVlLFxuICAgICAgICAgICAgZGVjbGFyYXRpb246IHRydWUsXG4gICAgICAgICAgICBlc01vZHVsZUludGVyb3A6IHRydWUsXG4gICAgICAgICAgICBleHBlcmltZW50YWxEZWNvcmF0b3JzOiB0cnVlLFxuICAgICAgICAgICAgaW5saW5lU291cmNlTWFwOiB0cnVlLFxuICAgICAgICAgICAgaW5saW5lU291cmNlczogdHJ1ZSxcbiAgICAgICAgICAgIGlzb2xhdGVkTW9kdWxlczogdHJ1ZSxcbiAgICAgICAgICAgIG5vRW1pdDogdHJ1ZSxcbiAgICAgICAgICAgIG5vRW1pdE9uRXJyb3I6IGZhbHNlLFxuICAgICAgICAgICAgbm9GYWxsdGhyb3VnaENhc2VzSW5Td2l0Y2g6IHRydWUsXG4gICAgICAgICAgICBub0ltcGxpY2l0QW55OiB0cnVlLFxuICAgICAgICAgICAgbm9JbXBsaWNpdE92ZXJyaWRlOiB0cnVlLFxuICAgICAgICAgICAgbm9JbXBsaWNpdFJldHVybnM6IHRydWUsXG4gICAgICAgICAgICBub0ltcGxpY2l0VGhpczogdHJ1ZSxcbiAgICAgICAgICAgIG5vVW51c2VkTG9jYWxzOiB0cnVlLFxuICAgICAgICAgICAgbm9VbnVzZWRQYXJhbWV0ZXJzOiB0cnVlLFxuICAgICAgICAgICAgcmVzb2x2ZUpzb25Nb2R1bGU6IHRydWUsXG4gICAgICAgICAgICBzdHJpY3Q6IHRydWUsXG4gICAgICAgICAgICBzdHJpY3ROdWxsQ2hlY2tzOiB0cnVlLFxuICAgICAgICAgICAgc3RyaWN0UHJvcGVydHlJbml0aWFsaXphdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgIHN0cmlwSW50ZXJuYWw6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfSxcbn0gc2F0aXNmaWVzIFBhcnRpYWw8VHlwZVNjcmlwdFByb2plY3RPcHRpb25zPjtcblxuY29uc3QgZXNNb2R1bGVUc2NvbmZpZ09wdGlvbnMgPSB7XG4gICAgdHNjb25maWc6IHtcbiAgICAgICAgY29tcGlsZXJPcHRpb25zOiB7XG4gICAgICAgICAgICBhbGxvd0ltcG9ydGluZ1RzRXh0ZW5zaW9uczogdHJ1ZSxcbiAgICAgICAgICAgIGxpYjogW1wiZXNuZXh0XCJdLFxuICAgICAgICAgICAgbW9kdWxlOiBcIm5vZGVuZXh0XCIsXG4gICAgICAgICAgICBtb2R1bGVSZXNvbHV0aW9uOiBqYXZhc2NyaXB0LlR5cGVTY3JpcHRNb2R1bGVSZXNvbHV0aW9uLk5PREVfTkVYVCxcbiAgICAgICAgICAgIHRhcmdldDogXCJlc25leHRcIixcbiAgICAgICAgfSxcbiAgICB9LFxufSBzYXRpc2ZpZXMgUGFydGlhbDxUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnM+O1xuXG5jb25zdCBwdWJsaXNoYWJsZVByb2plY3REZWZhdWx0T3B0aW9ucyA9IHtcbiAgICBhdXRob3I6IGRlZmF1bHRzLmF1dGhvcixcbiAgICBhdXRob3JBZGRyZXNzOiBkZWZhdWx0cy5hdXRob3JBZGRyZXNzLFxuICAgIG5wbVRydXN0ZWRQdWJsaXNoaW5nOiB0cnVlLFxufSBzYXRpc2ZpZXMgUGFydGlhbDxjZGsuSnNpaVByb2plY3RPcHRpb25zPjtcblxuY29uc3QgY2RrRGVmYXVsdFZlcnNpb25PcHRpb25zID0ge1xuICAgIGNka1ZlcnNpb246IGRlZmF1bHRzLmNka1ZlcnNpb24sXG4gICAgY29uc3RydWN0c1ZlcnNpb246IGRlZmF1bHRzLmNvbnN0cnVjdHNWZXJzaW9uLFxufSBzYXRpc2ZpZXMgUGFydGlhbDxhd3NjZGsuQXdzQ2RrQ29uc3RydWN0TGlicmFyeU9wdGlvbnM+O1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgdHlwZXNjcmlwdDoge1xuICAgICAgICBUeXBlU2NyaXB0UHJvamVjdDogbWVyZ2VBbGw8dHlwZXNjcmlwdC5UeXBlU2NyaXB0UHJvamVjdE9wdGlvbnM+KFxuICAgICAgICAgICAgcHJvamVjdERlZmF1bHRPcHRpb25zLFxuICAgICAgICAgICAgZXNNb2R1bGVUc2NvbmZpZ09wdGlvbnMsXG4gICAgICAgICksXG4gICAgfSxcbiAgICBjZGs6IHtcbiAgICAgICAgSnNpaVByb2plY3Q6IG1lcmdlQWxsPGNkay5Kc2lpUHJvamVjdE9wdGlvbnM+KHByb2plY3REZWZhdWx0T3B0aW9ucywgcHVibGlzaGFibGVQcm9qZWN0RGVmYXVsdE9wdGlvbnMsIHtcbiAgICAgICAgICAgIGpzaWlWZXJzaW9uOiBkZWZhdWx0cy5qc2lpVmVyc2lvbixcbiAgICAgICAgfSksXG4gICAgfSxcbiAgICBhd3NjZGs6IHtcbiAgICAgICAgQXdzQ2RrVHlwZVNjcmlwdEFwcDogbWVyZ2VBbGw8YXdzY2RrLkF3c0Nka1R5cGVTY3JpcHRBcHBPcHRpb25zPihcbiAgICAgICAgICAgIHByb2plY3REZWZhdWx0T3B0aW9ucyxcbiAgICAgICAgICAgIGVzTW9kdWxlVHNjb25maWdPcHRpb25zLFxuICAgICAgICAgICAgY2RrRGVmYXVsdFZlcnNpb25PcHRpb25zLFxuICAgICAgICApLFxuICAgICAgICBBd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5OiBtZXJnZUFsbDxhd3NjZGsuQXdzQ2RrQ29uc3RydWN0TGlicmFyeU9wdGlvbnM+KFxuICAgICAgICAgICAgcHJvamVjdERlZmF1bHRPcHRpb25zLFxuICAgICAgICAgICAgcHVibGlzaGFibGVQcm9qZWN0RGVmYXVsdE9wdGlvbnMsXG4gICAgICAgICAgICBjZGtEZWZhdWx0VmVyc2lvbk9wdGlvbnMsXG4gICAgICAgICksXG4gICAgfSxcbn07XG4iXX0=
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Error thrown when attempting to decrease indent level below zero in CodeBuffer
3
+ */
4
+ export declare class InvalidIndentLevelError extends Error {
5
+ constructor();
6
+ }
7
+ /**
8
+ * Error thrown when base class format is invalid
9
+ */
10
+ export declare class InvalidBaseClassFormatError extends Error {
11
+ readonly baseClass: string;
12
+ constructor(baseClass: string);
13
+ }
14
+ /**
15
+ * Error thrown when file path is invalid or missing directory separator
16
+ */
17
+ export declare class InvalidFilePathError extends Error {
18
+ readonly filePath: string;
19
+ constructor(filePath: string);
20
+ }
package/lib/errors.js ADDED
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InvalidFilePathError = exports.InvalidBaseClassFormatError = exports.InvalidIndentLevelError = void 0;
4
+ /**
5
+ * Error thrown when attempting to decrease indent level below zero in CodeBuffer
6
+ */
7
+ class InvalidIndentLevelError extends Error {
8
+ constructor() {
9
+ super("Cannot decrease indent level below zero");
10
+ this.name = "InvalidIndentLevelError";
11
+ }
12
+ }
13
+ exports.InvalidIndentLevelError = InvalidIndentLevelError;
14
+ /**
15
+ * Error thrown when base class format is invalid
16
+ */
17
+ class InvalidBaseClassFormatError extends Error {
18
+ constructor(baseClass) {
19
+ super(`Base class must be in format "module.ClassName", got: ${baseClass}`);
20
+ this.baseClass = baseClass;
21
+ this.name = "InvalidBaseClassFormatError";
22
+ }
23
+ }
24
+ exports.InvalidBaseClassFormatError = InvalidBaseClassFormatError;
25
+ /**
26
+ * Error thrown when file path is invalid or missing directory separator
27
+ */
28
+ class InvalidFilePathError extends Error {
29
+ constructor(filePath) {
30
+ super(`File path must contain directory separator, got: ${filePath}`);
31
+ this.filePath = filePath;
32
+ this.name = "InvalidFilePathError";
33
+ }
34
+ }
35
+ exports.InvalidFilePathError = InvalidFilePathError;
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7R0FFRztBQUNILE1BQWEsdUJBQXdCLFNBQVEsS0FBSztJQUM5QztRQUNJLEtBQUssQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxJQUFJLEdBQUcseUJBQXlCLENBQUM7SUFDMUMsQ0FBQztDQUNKO0FBTEQsMERBS0M7QUFFRDs7R0FFRztBQUNILE1BQWEsMkJBQTRCLFNBQVEsS0FBSztJQUNsRCxZQUE0QixTQUFpQjtRQUN6QyxLQUFLLENBQUMseURBQXlELFNBQVMsRUFBRSxDQUFDLENBQUM7UUFEcEQsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUV6QyxJQUFJLENBQUMsSUFBSSxHQUFHLDZCQUE2QixDQUFDO0lBQzlDLENBQUM7Q0FDSjtBQUxELGtFQUtDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLG9CQUFxQixTQUFRLEtBQUs7SUFDM0MsWUFBNEIsUUFBZ0I7UUFDeEMsS0FBSyxDQUFDLG9EQUFvRCxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRDlDLGFBQVEsR0FBUixRQUFRLENBQVE7UUFFeEMsSUFBSSxDQUFDLElBQUksR0FBRyxzQkFBc0IsQ0FBQztJQUN2QyxDQUFDO0NBQ0o7QUFMRCxvREFLQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRXJyb3IgdGhyb3duIHdoZW4gYXR0ZW1wdGluZyB0byBkZWNyZWFzZSBpbmRlbnQgbGV2ZWwgYmVsb3cgemVybyBpbiBDb2RlQnVmZmVyXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnZhbGlkSW5kZW50TGV2ZWxFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoXCJDYW5ub3QgZGVjcmVhc2UgaW5kZW50IGxldmVsIGJlbG93IHplcm9cIik7XG4gICAgICAgIHRoaXMubmFtZSA9IFwiSW52YWxpZEluZGVudExldmVsRXJyb3JcIjtcbiAgICB9XG59XG5cbi8qKlxuICogRXJyb3IgdGhyb3duIHdoZW4gYmFzZSBjbGFzcyBmb3JtYXQgaXMgaW52YWxpZFxuICovXG5leHBvcnQgY2xhc3MgSW52YWxpZEJhc2VDbGFzc0Zvcm1hdEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBiYXNlQ2xhc3M6IHN0cmluZykge1xuICAgICAgICBzdXBlcihgQmFzZSBjbGFzcyBtdXN0IGJlIGluIGZvcm1hdCBcIm1vZHVsZS5DbGFzc05hbWVcIiwgZ290OiAke2Jhc2VDbGFzc31gKTtcbiAgICAgICAgdGhpcy5uYW1lID0gXCJJbnZhbGlkQmFzZUNsYXNzRm9ybWF0RXJyb3JcIjtcbiAgICB9XG59XG5cbi8qKlxuICogRXJyb3IgdGhyb3duIHdoZW4gZmlsZSBwYXRoIGlzIGludmFsaWQgb3IgbWlzc2luZyBkaXJlY3Rvcnkgc2VwYXJhdG9yXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnZhbGlkRmlsZVBhdGhFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgZmlsZVBhdGg6IHN0cmluZykge1xuICAgICAgICBzdXBlcihgRmlsZSBwYXRoIG11c3QgY29udGFpbiBkaXJlY3Rvcnkgc2VwYXJhdG9yLCBnb3Q6ICR7ZmlsZVBhdGh9YCk7XG4gICAgICAgIHRoaXMubmFtZSA9IFwiSW52YWxpZEZpbGVQYXRoRXJyb3JcIjtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,173 @@
1
+ import type { Property } from "@jsii/spec";
2
+ import type { Project, SourceCodeOptions } from "projen";
3
+ import { Component } from "projen";
4
+ type ProjenModule = "typescript" | "cdk" | "awscdk";
5
+ type ProjenBaseClass<M extends ProjenModule> = `${M}.${string}`;
6
+ /**
7
+ * Configuration for a component to be integrated into a generated project
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * const config: ComponentConfig = {
12
+ * component: Vitest,
13
+ * optionsProperty: "vitestOptions"
14
+ * };
15
+ * ```
16
+ */
17
+ interface ComponentConfig<T extends Component = Component> {
18
+ /**
19
+ * Component class constructor
20
+ */
21
+ readonly component: new (project: never, options?: never) => T;
22
+ /**
23
+ * Options property configuration for the generated options interface
24
+ *
25
+ * When specified, adds an options property to the interface allowing
26
+ * users to configure the component.
27
+ */
28
+ readonly optionsProperty?: {
29
+ /**
30
+ * Name of the options property (e.g., "vitestOptions")
31
+ */
32
+ readonly name: string;
33
+ /**
34
+ * Fully qualified type name (e.g., "@nikovirtala/projen-constructs.VitestOptions")
35
+ */
36
+ readonly type: string;
37
+ /**
38
+ * Documentation summary
39
+ */
40
+ readonly docs?: string;
41
+ };
42
+ }
43
+ /**
44
+ * Options for ProjectGenerator component
45
+ *
46
+ * Configures the generation of a TypeScript project class that extends a Projen base class
47
+ * with standard configuration and component integration.
48
+ *
49
+ * @example
50
+ * ```typescript
51
+ * new ProjectGenerator(project, {
52
+ * name: "TypeScriptProject",
53
+ * baseClass: "typescript.TypeScriptProject",
54
+ * filePath: "src/projects/typescript.generated.ts",
55
+ * components: [{ component: Vitest, optionsProperty: "vitestOptions" }]
56
+ * });
57
+ * ```
58
+ */
59
+ export interface ProjectGeneratorOptions<M extends ProjenModule = ProjenModule> extends SourceCodeOptions {
60
+ /**
61
+ * Name of the generated class (e.g., "TypeScriptProject")
62
+ *
63
+ * The options interface will be named `${name}Options`.
64
+ */
65
+ readonly name: string;
66
+ /**
67
+ * Fully qualified base class to extend in format "module.ClassName"
68
+ *
69
+ * Must be a valid Projen class reference like "typescript.TypeScriptProject",
70
+ * "cdk.JsiiProject", or "awscdk.AwsCdkTypeScriptApp".
71
+ *
72
+ * @example "typescript.TypeScriptProject"
73
+ * @example "cdk.JsiiProject"
74
+ */
75
+ readonly baseClass: ProjenBaseClass<M>;
76
+ /**
77
+ * Output file path for the generated class
78
+ *
79
+ * Must contain a directory separator. The options interface will be generated
80
+ * in the same directory with a ".generated.ts" suffix.
81
+ *
82
+ * @example "src/projects/typescript.generated.ts"
83
+ */
84
+ readonly filePath: string;
85
+ /**
86
+ * Components to integrate into the project
87
+ *
88
+ * Each component will be instantiated during project construction and can be
89
+ * configured via an optional options property in the generated interface.
90
+ *
91
+ * @default [{ component: Mise }, { component: Vitest, optionsProperty: { name: "vitestOptions", type: "...", docs: "..." } }]
92
+ */
93
+ readonly components?: ComponentConfig[];
94
+ /**
95
+ * Additional properties to add to the generated options interface
96
+ *
97
+ * Use this to extend the base options with custom properties specific to
98
+ * your project type.
99
+ */
100
+ readonly additionalOptions?: Property[];
101
+ /**
102
+ * Property names to omit from the base options interface
103
+ *
104
+ * Use this to hide base class options that should not be configurable
105
+ * in the generated project type.
106
+ */
107
+ readonly omitOptions?: string[];
108
+ }
109
+ /**
110
+ * Projen component that generates TypeScript project classes with standard configuration
111
+ *
112
+ * This component automates the creation of project classes that extend Projen base classes
113
+ * with opinionated defaults and component integration. It generates both:
114
+ * 1. An options interface (via ProjenStruct) that extends the base Projen options
115
+ * 2. A project class that applies default configuration and instantiates components
116
+ *
117
+ * The generated code follows a consistent pattern:
118
+ * - Imports required modules and components
119
+ * - Re-exports the generated options interface
120
+ * - Defines a class extending the Projen base class
121
+ * - Constructor merges defaults with user options and applies components
122
+ *
123
+ * @example
124
+ * ```typescript
125
+ * new ProjectGenerator(project, {
126
+ * name: "TypeScriptProject",
127
+ * baseClass: "typescript.TypeScriptProject",
128
+ * filePath: "src/projects/typescript.generated.ts",
129
+ * components: [{ component: Vitest, optionsProperty: "vitestOptions" }]
130
+ * });
131
+ * ```
132
+ */
133
+ export declare class ProjectGenerator extends Component {
134
+ private readonly options;
135
+ private renderer;
136
+ /**
137
+ * @param project - Projen project instance
138
+ * @param options - Generator configuration
139
+ */
140
+ constructor(project: Project, options: ProjectGeneratorOptions<ProjenModule>);
141
+ /**
142
+ * Casts project to TypeScript project type
143
+ *
144
+ * ProjenStruct requires a TypeScriptProject instance. This generator is only used
145
+ * within TypeScript projects, so the cast is safe in practice.
146
+ *
147
+ * Note: Type assertion is necessary here because Projen's type system doesn't provide
148
+ * a runtime type guard for TypeScriptProject.
149
+ *
150
+ * @param project - Projen project instance
151
+ * @returns TypeScript project instance
152
+ */
153
+ private asTypeScriptProject;
154
+ /**
155
+ * Derives the file path for the generated options interface
156
+ *
157
+ * Places the options interface file in the same directory as the class file
158
+ * with a ".generated.ts" suffix.
159
+ *
160
+ * @param optionsInterface - Name of the options interface
161
+ * @returns File path for the options interface
162
+ * @throws {InvalidFilePathError} When filePath doesn't contain a directory separator
163
+ */
164
+ private getOptionsFilePath;
165
+ /**
166
+ * Generates the TypeScript class file during Projen synthesis
167
+ *
168
+ * Called by Projen during the synthesis phase to generate the project class file.
169
+ * The file is marked as readonly to prevent manual editing.
170
+ */
171
+ preSynthesize(): void;
172
+ }
173
+ export {};