@taimos/projen 0.1.63 → 0.1.65

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.
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- var _a;
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
3
  exports.TaimosCdkApp = void 0;
5
4
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
@@ -10,6 +9,7 @@ const projen_1 = require("projen");
10
9
  * @pjid taimos-cdk-app
11
10
  */
12
11
  class TaimosCdkApp extends projen_1.awscdk.AwsCdkTypeScriptApp {
12
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@taimos/projen.TaimosCdkApp", version: "0.1.65" };
13
13
  constructor(options) {
14
14
  super({
15
15
  authorEmail: 'info@taimos.de',
@@ -44,6 +44,4 @@ class TaimosCdkApp extends projen_1.awscdk.AwsCdkTypeScriptApp {
44
44
  }
45
45
  }
46
46
  exports.TaimosCdkApp = TaimosCdkApp;
47
- _a = JSII_RTTI_SYMBOL_1;
48
- TaimosCdkApp[_a] = { fqn: "@taimos/projen.TaimosCdkApp", version: "0.1.63" };
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWFwcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9qZWN0cy9jZGstYXBwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUNBQTRDO0FBaUI1Qzs7OztHQUlHO0FBQ0gsTUFBYSxZQUFhLFNBQVEsZUFBTSxDQUFDLG1CQUFtQjtJQUUxRCxZQUFZLE9BQTRCO1FBQ3RDLEtBQUssQ0FBQztZQUNKLFdBQVcsRUFBRSxnQkFBZ0I7WUFDN0IsVUFBVSxFQUFFLGlCQUFpQjtZQUM3QixrQkFBa0IsRUFBRSxJQUFJO1lBQ3hCLFNBQVMsRUFBRSx1QkFBdUI7WUFDbEMsY0FBYyxFQUFFLGFBQWE7WUFDN0IsZUFBZSxFQUFFLE1BQU07WUFDdkIsZUFBZSxFQUFFLGVBQU0sQ0FBQyxhQUFhLENBQUMsS0FBSztZQUMzQyxpQkFBaUIsRUFBRSxJQUFJO1lBQ3ZCLGlCQUFpQixFQUFFLFFBQVE7WUFDM0IsVUFBVSxFQUFFLElBQUk7WUFDaEIsY0FBYyxFQUFFLG1CQUFVLENBQUMsa0JBQWtCLENBQUMsR0FBRztZQUNqRCxHQUFHLE9BQU8sSUFBSSxFQUFFO1lBQ2hCLGFBQWEsRUFBRTtnQkFDYixPQUFPLEVBQUUsS0FBSztnQkFDZCxHQUFHLE9BQU8sQ0FBQyxhQUFhLElBQUksRUFBRTthQUMvQjtZQUNELFFBQVEsRUFBRTtnQkFDUixHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksRUFBRTtnQkFDekIsZUFBZSxFQUFFO29CQUNmLGVBQWUsRUFBRSxJQUFJO29CQUNyQixHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsZUFBZSxJQUFJLEVBQUU7aUJBQzNDO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFbEMsSUFBSSxPQUFPLENBQUMsVUFBVSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ2hDLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsSUFBSSxXQUFXLENBQUM7WUFDakUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsa0NBQWtDLEVBQUUsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ2pGLENBQUM7SUFDSCxDQUFDOztBQWxDSCxvQ0FvQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhd3NjZGssIGphdmFzY3JpcHQgfSBmcm9tICdwcm9qZW4nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRhaW1vc0Nka0FwcE9wdGlvbnMgZXh0ZW5kcyBhd3NjZGsuQXdzQ2RrVHlwZVNjcmlwdEFwcE9wdGlvbnMge1xuICAvKipcbiAgICogV2hldGhlciB0byBlbmFibGUgcHJpdmF0ZSBOUE0gcmVnaXN0cnkgYXV0aGVudGljYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBwcml2YXRlTnBtPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lIGNvbnRhaW5pbmcgdGhlIE5QTSBhdXRoZW50aWNhdGlvbiB0b2tlbi5cbiAgICpcbiAgICogQGRlZmF1bHQgJ05QTV9UT0tFTidcbiAgICovXG4gIHJlYWRvbmx5IHByaXZhdGVOcG1Ub2tlbkVudlZhcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBV1MgQ0RLIGFwcCBpbiBUeXBlU2NyaXB0XG4gKlxuICogQHBqaWQgdGFpbW9zLWNkay1hcHBcbiAqL1xuZXhwb3J0IGNsYXNzIFRhaW1vc0Nka0FwcCBleHRlbmRzIGF3c2Nkay5Bd3NDZGtUeXBlU2NyaXB0QXBwIHtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBUYWltb3NDZGtBcHBPcHRpb25zKSB7XG4gICAgc3VwZXIoe1xuICAgICAgYXV0aG9yRW1haWw6ICdpbmZvQHRhaW1vcy5kZScsXG4gICAgICBhdXRob3JOYW1lOiAnVGhvcnN0ZW4gSG9lZ2VyJyxcbiAgICAgIGF1dGhvck9yZ2FuaXphdGlvbjogdHJ1ZSxcbiAgICAgIGF1dGhvclVybDogJ2h0dHBzOi8vd3d3LnRhaW1vcy5kZScsXG4gICAgICBjb3B5cmlnaHRPd25lcjogJ1RhaW1vcyBHbWJIJyxcbiAgICAgIGNvcHlyaWdodFBlcmlvZDogJzIwMjUnLFxuICAgICAgcmVxdWlyZUFwcHJvdmFsOiBhd3NjZGsuQXBwcm92YWxMZXZlbC5ORVZFUixcbiAgICAgIGNka1ZlcnNpb25QaW5uaW5nOiB0cnVlLFxuICAgICAgY29uc3RydWN0c1ZlcnNpb246ICcxMC40LjInLFxuICAgICAgcHJvamVucmNUczogdHJ1ZSxcbiAgICAgIHBhY2thZ2VNYW5hZ2VyOiBqYXZhc2NyaXB0Lk5vZGVQYWNrYWdlTWFuYWdlci5OUE0sXG4gICAgICAuLi5vcHRpb25zID8/IHt9LFxuICAgICAgZ2l0aHViT3B0aW9uczoge1xuICAgICAgICBtZXJnaWZ5OiBmYWxzZSxcbiAgICAgICAgLi4ub3B0aW9ucy5naXRodWJPcHRpb25zID8/IHt9LFxuICAgICAgfSxcbiAgICAgIHRzY29uZmlnOiB7XG4gICAgICAgIC4uLm9wdGlvbnMudHNjb25maWcgPz8ge30sXG4gICAgICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgICAgIGVzTW9kdWxlSW50ZXJvcDogdHJ1ZSxcbiAgICAgICAgICAuLi5vcHRpb25zLnRzY29uZmlnPy5jb21waWxlck9wdGlvbnMgPz8ge30sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICAgIHRoaXMuYWRkRGV2RGVwcygnQHRhaW1vcy9wcm9qZW4nKTtcblxuICAgIGlmIChvcHRpb25zLnByaXZhdGVOcG0gPz8gZmFsc2UpIHtcbiAgICAgIGNvbnN0IHRva2VuRW52VmFyID0gb3B0aW9ucy5wcml2YXRlTnBtVG9rZW5FbnZWYXIgPz8gJ05QTV9UT0tFTic7XG4gICAgICB0aGlzLm5wbXJjLmFkZENvbmZpZygnLy9yZWdpc3RyeS5ucG1qcy5vcmcvOl9hdXRoVG9rZW4nLCBgXFwkeyR7dG9rZW5FbnZWYXJ9fWApO1xuICAgIH1cbiAgfVxuXG59XG4iXX0=
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWFwcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9qZWN0cy9jZGstYXBwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxtQ0FBNEM7QUFpQjVDOzs7O0dBSUc7QUFDSCxNQUFhLFlBQWEsU0FBUSxlQUFNLENBQUMsbUJBQW1COztJQUUxRCxZQUFZLE9BQTRCO1FBQ3RDLEtBQUssQ0FBQztZQUNKLFdBQVcsRUFBRSxnQkFBZ0I7WUFDN0IsVUFBVSxFQUFFLGlCQUFpQjtZQUM3QixrQkFBa0IsRUFBRSxJQUFJO1lBQ3hCLFNBQVMsRUFBRSx1QkFBdUI7WUFDbEMsY0FBYyxFQUFFLGFBQWE7WUFDN0IsZUFBZSxFQUFFLE1BQU07WUFDdkIsZUFBZSxFQUFFLGVBQU0sQ0FBQyxhQUFhLENBQUMsS0FBSztZQUMzQyxpQkFBaUIsRUFBRSxJQUFJO1lBQ3ZCLGlCQUFpQixFQUFFLFFBQVE7WUFDM0IsVUFBVSxFQUFFLElBQUk7WUFDaEIsY0FBYyxFQUFFLG1CQUFVLENBQUMsa0JBQWtCLENBQUMsR0FBRztZQUNqRCxHQUFHLE9BQU8sSUFBSSxFQUFFO1lBQ2hCLGFBQWEsRUFBRTtnQkFDYixPQUFPLEVBQUUsS0FBSztnQkFDZCxHQUFHLE9BQU8sQ0FBQyxhQUFhLElBQUksRUFBRTthQUMvQjtZQUNELFFBQVEsRUFBRTtnQkFDUixHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksRUFBRTtnQkFDekIsZUFBZSxFQUFFO29CQUNmLGVBQWUsRUFBRSxJQUFJO29CQUNyQixHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsZUFBZSxJQUFJLEVBQUU7aUJBQzNDO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFbEMsSUFBSSxPQUFPLENBQUMsVUFBVSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ2hDLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsSUFBSSxXQUFXLENBQUM7WUFDakUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsa0NBQWtDLEVBQUUsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ2pGLENBQUM7SUFDSCxDQUFDOztBQWxDSCxvQ0FvQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhd3NjZGssIGphdmFzY3JpcHQgfSBmcm9tICdwcm9qZW4nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRhaW1vc0Nka0FwcE9wdGlvbnMgZXh0ZW5kcyBhd3NjZGsuQXdzQ2RrVHlwZVNjcmlwdEFwcE9wdGlvbnMge1xuICAvKipcbiAgICogV2hldGhlciB0byBlbmFibGUgcHJpdmF0ZSBOUE0gcmVnaXN0cnkgYXV0aGVudGljYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBwcml2YXRlTnBtPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lIGNvbnRhaW5pbmcgdGhlIE5QTSBhdXRoZW50aWNhdGlvbiB0b2tlbi5cbiAgICpcbiAgICogQGRlZmF1bHQgJ05QTV9UT0tFTidcbiAgICovXG4gIHJlYWRvbmx5IHByaXZhdGVOcG1Ub2tlbkVudlZhcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBV1MgQ0RLIGFwcCBpbiBUeXBlU2NyaXB0XG4gKlxuICogQHBqaWQgdGFpbW9zLWNkay1hcHBcbiAqL1xuZXhwb3J0IGNsYXNzIFRhaW1vc0Nka0FwcCBleHRlbmRzIGF3c2Nkay5Bd3NDZGtUeXBlU2NyaXB0QXBwIHtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBUYWltb3NDZGtBcHBPcHRpb25zKSB7XG4gICAgc3VwZXIoe1xuICAgICAgYXV0aG9yRW1haWw6ICdpbmZvQHRhaW1vcy5kZScsXG4gICAgICBhdXRob3JOYW1lOiAnVGhvcnN0ZW4gSG9lZ2VyJyxcbiAgICAgIGF1dGhvck9yZ2FuaXphdGlvbjogdHJ1ZSxcbiAgICAgIGF1dGhvclVybDogJ2h0dHBzOi8vd3d3LnRhaW1vcy5kZScsXG4gICAgICBjb3B5cmlnaHRPd25lcjogJ1RhaW1vcyBHbWJIJyxcbiAgICAgIGNvcHlyaWdodFBlcmlvZDogJzIwMjUnLFxuICAgICAgcmVxdWlyZUFwcHJvdmFsOiBhd3NjZGsuQXBwcm92YWxMZXZlbC5ORVZFUixcbiAgICAgIGNka1ZlcnNpb25QaW5uaW5nOiB0cnVlLFxuICAgICAgY29uc3RydWN0c1ZlcnNpb246ICcxMC40LjInLFxuICAgICAgcHJvamVucmNUczogdHJ1ZSxcbiAgICAgIHBhY2thZ2VNYW5hZ2VyOiBqYXZhc2NyaXB0Lk5vZGVQYWNrYWdlTWFuYWdlci5OUE0sXG4gICAgICAuLi5vcHRpb25zID8/IHt9LFxuICAgICAgZ2l0aHViT3B0aW9uczoge1xuICAgICAgICBtZXJnaWZ5OiBmYWxzZSxcbiAgICAgICAgLi4ub3B0aW9ucy5naXRodWJPcHRpb25zID8/IHt9LFxuICAgICAgfSxcbiAgICAgIHRzY29uZmlnOiB7XG4gICAgICAgIC4uLm9wdGlvbnMudHNjb25maWcgPz8ge30sXG4gICAgICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgICAgIGVzTW9kdWxlSW50ZXJvcDogdHJ1ZSxcbiAgICAgICAgICAuLi5vcHRpb25zLnRzY29uZmlnPy5jb21waWxlck9wdGlvbnMgPz8ge30sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICAgIHRoaXMuYWRkRGV2RGVwcygnQHRhaW1vcy9wcm9qZW4nKTtcblxuICAgIGlmIChvcHRpb25zLnByaXZhdGVOcG0gPz8gZmFsc2UpIHtcbiAgICAgIGNvbnN0IHRva2VuRW52VmFyID0gb3B0aW9ucy5wcml2YXRlTnBtVG9rZW5FbnZWYXIgPz8gJ05QTV9UT0tFTic7XG4gICAgICB0aGlzLm5wbXJjLmFkZENvbmZpZygnLy9yZWdpc3RyeS5ucG1qcy5vcmcvOl9hdXRoVG9rZW4nLCBgXFwkeyR7dG9rZW5FbnZWYXJ9fWApO1xuICAgIH1cbiAgfVxuXG59XG4iXX0=
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- var _a;
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
3
  exports.TaimosCdkConstructLibrary = void 0;
5
4
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
@@ -10,6 +9,7 @@ const projen_1 = require("projen");
10
9
  * @pjid taimos-awscdk-construct
11
10
  */
12
11
  class TaimosCdkConstructLibrary extends projen_1.awscdk.AwsCdkConstructLibrary {
12
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@taimos/projen.TaimosCdkConstructLibrary", version: "0.1.65" };
13
13
  constructor(options) {
14
14
  super({
15
15
  authorOrganization: true,
@@ -63,6 +63,4 @@ class TaimosCdkConstructLibrary extends projen_1.awscdk.AwsCdkConstructLibrary {
63
63
  }
64
64
  }
65
65
  exports.TaimosCdkConstructLibrary = TaimosCdkConstructLibrary;
66
- _a = JSII_RTTI_SYMBOL_1;
67
- TaimosCdkConstructLibrary[_a] = { fqn: "@taimos/projen.TaimosCdkConstructLibrary", version: "0.1.63" };
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWNvbnN0cnVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9qZWN0cy9jZGstY29uc3RydWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUNBQW9EO0FBaUJwRDs7OztHQUlHO0FBQ0gsTUFBYSx5QkFBMEIsU0FBUSxlQUFNLENBQUMsc0JBQXNCO0lBRTFFLFlBQVksT0FBeUM7UUFDbkQsS0FBSyxDQUFDO1lBQ0osa0JBQWtCLEVBQUUsSUFBSTtZQUN4QixjQUFjLEVBQUUsYUFBYTtZQUM3QixlQUFlLEVBQUUsTUFBTTtZQUN2QixPQUFPLEVBQUU7Z0JBQ1AsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsT0FBTyxFQUFFLFVBQVU7YUFDcEI7WUFDRCxPQUFPLEVBQUUsWUFBWTtZQUNyQixTQUFTLEVBQUUsY0FBYztZQUN6QixZQUFZLEVBQUUsSUFBSTtZQUNsQixvQkFBb0IsRUFBRSxJQUFJO1lBQzFCLFNBQVMsRUFBRSxtQkFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNO1lBQ3RDLE1BQU0sRUFBRSxLQUFLO1lBQ2IsbUJBQW1CLEVBQUUsSUFBSTtZQUN6QixrQkFBa0IsRUFBRSxFQUFFLGdCQUFnQixFQUFFLENBQUMsVUFBVSxFQUFFLG9CQUFvQixDQUFDLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRTtZQUNwRyxrQkFBa0IsRUFBRSxFQUFFLGVBQWUsRUFBRSxFQUFFLFFBQVEsRUFBRSxtQkFBVSxDQUFDLDJCQUEyQixDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3BHLGFBQWEsRUFBRTtnQkFDYixpQkFBaUIsRUFBRSxlQUFNLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFO2FBQ3REO1lBQ0QsMkJBQTJCLEVBQUUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt5QkFzQlgsQ0FBQztZQUNwQixHQUFHLE9BQU87U0FDWCxDQUFDLENBQUM7UUFFSCxJQUFJLE9BQU8sQ0FBQyxVQUFVLElBQUksS0FBSyxFQUFFLENBQUM7WUFDaEMsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixJQUFJLFdBQVcsQ0FBQztZQUNqRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxrQ0FBa0MsRUFBRSxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDakYsQ0FBQztJQUVILENBQUM7O0FBdERILDhEQXdEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGF3c2NkaywgamF2YXNjcmlwdCwgZ2l0aHViIH0gZnJvbSAncHJvamVuJztcblxuZXhwb3J0IGludGVyZmFjZSBUYWltb3NDZGtDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9ucyBleHRlbmRzIGF3c2Nkay5Bd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGVuYWJsZSBwcml2YXRlIE5QTSByZWdpc3RyeSBhdXRoZW50aWNhdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHByaXZhdGVOcG0/OiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWUgY29udGFpbmluZyB0aGUgTlBNIGF1dGhlbnRpY2F0aW9uIHRva2VuLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnTlBNX1RPS0VOJ1xuICAgKi9cbiAgcmVhZG9ubHkgcHJpdmF0ZU5wbVRva2VuRW52VmFyPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFR5cGVTY3JpcHQgbGlicmFyeVxuICpcbiAqIEBwamlkIHRhaW1vcy1hd3NjZGstY29uc3RydWN0XG4gKi9cbmV4cG9ydCBjbGFzcyBUYWltb3NDZGtDb25zdHJ1Y3RMaWJyYXJ5IGV4dGVuZHMgYXdzY2RrLkF3c0Nka0NvbnN0cnVjdExpYnJhcnkge1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFRhaW1vc0Nka0NvbnN0cnVjdExpYnJhcnlPcHRpb25zKSB7XG4gICAgc3VwZXIoe1xuICAgICAgYXV0aG9yT3JnYW5pemF0aW9uOiB0cnVlLFxuICAgICAgY29weXJpZ2h0T3duZXI6ICdUYWltb3MgR21iSCcsXG4gICAgICBjb3B5cmlnaHRQZXJpb2Q6ICcyMDI1JyxcbiAgICAgIGNhdGFsb2c6IHtcbiAgICAgICAgYW5ub3VuY2U6IHRydWUsXG4gICAgICAgIHR3aXR0ZXI6ICdob2VnZXJ0bicsXG4gICAgICB9LFxuICAgICAgbGljZW5zZTogJ0FwYWNoZS0yLjAnLFxuICAgICAgc3RhYmlsaXR5OiAnZXhwZXJpbWVudGFsJyxcbiAgICAgIHJlbGVhc2VUb05wbTogdHJ1ZSxcbiAgICAgIG5wbVRydXN0ZWRQdWJsaXNoaW5nOiB0cnVlLFxuICAgICAgbnBtQWNjZXNzOiBqYXZhc2NyaXB0Lk5wbUFjY2Vzcy5QVUJMSUMsXG4gICAgICBnaXRwb2Q6IGZhbHNlLFxuICAgICAgYXV0b0FwcHJvdmVVcGdyYWRlczogdHJ1ZSxcbiAgICAgIGF1dG9BcHByb3ZlT3B0aW9uczogeyBhbGxvd2VkVXNlcm5hbWVzOiBbJ2hvZWdlcnRuJywgJ3RhaW1vcy1wcm9qZW5bYm90XSddLCBzZWNyZXQ6ICdHSVRIVUJfVE9LRU4nIH0sXG4gICAgICBkZXBzVXBncmFkZU9wdGlvbnM6IHsgd29ya2Zsb3dPcHRpb25zOiB7IHNjaGVkdWxlOiBqYXZhc2NyaXB0LlVwZ3JhZGVEZXBlbmRlbmNpZXNTY2hlZHVsZS5XRUVLTFkgfSB9LFxuICAgICAgZ2l0aHViT3B0aW9uczoge1xuICAgICAgICBwcm9qZW5DcmVkZW50aWFsczogZ2l0aHViLkdpdGh1YkNyZWRlbnRpYWxzLmZyb21BcHAoKSxcbiAgICAgIH0sXG4gICAgICBwdWxsUmVxdWVzdFRlbXBsYXRlQ29udGVudHM6IFtgKiAqKlBsZWFzZSBjaGVjayBpZiB0aGUgUFIgZnVsZmlsbHMgdGhlc2UgcmVxdWlyZW1lbnRzKipcbi0gWyBdIFRoZSBjb21taXQgbWVzc2FnZSBkZXNjcmliZXMgeW91ciBjaGFuZ2Vcbi0gWyBdIFRlc3RzIGZvciB0aGUgY2hhbmdlcyBoYXZlIGJlZW4gYWRkZWQgaWYgcG9zc2libGUgKGZvciBidWcgZml4ZXMgLyBmZWF0dXJlcylcbi0gWyBdIERvY3MgaGF2ZSBiZWVuIGFkZGVkIC8gdXBkYXRlZCAoZm9yIGJ1ZyBmaXhlcyAvIGZlYXR1cmVzKVxuXG5cbiogKipXaGF0IGtpbmQgb2YgY2hhbmdlIGRvZXMgdGhpcyBQUiBpbnRyb2R1Y2U/KiogKEJ1ZyBmaXgsIGZlYXR1cmUsIGRvY3MgdXBkYXRlLCAuLi4pXG5cblxuXG4qICoqV2hhdCBpcyB0aGUgY3VycmVudCBiZWhhdmlvcj8qKiAoWW91IGNhbiBhbHNvIGxpbmsgdG8gYW4gb3BlbiBpc3N1ZSBoZXJlKVxuXG5cblxuKiAqKldoYXQgaXMgdGhlIG5ldyBiZWhhdmlvciAoaWYgdGhpcyBpcyBhIGZlYXR1cmUgY2hhbmdlKT8qKlxuXG5cblxuKiAqKkRvZXMgdGhpcyBQUiBpbnRyb2R1Y2UgYSBicmVha2luZyBjaGFuZ2U/KiogKFdoYXQgY2hhbmdlcyBtaWdodCB1c2VycyBuZWVkIHRvIG1ha2UgaW4gdGhlaXIgc2V0dXAgZHVlIHRvIHRoaXMgUFI/KVxuXG5cblxuKiAqKk90aGVyIGluZm9ybWF0aW9uKio6YF0sXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuXG4gICAgaWYgKG9wdGlvbnMucHJpdmF0ZU5wbSA/PyBmYWxzZSkge1xuICAgICAgY29uc3QgdG9rZW5FbnZWYXIgPSBvcHRpb25zLnByaXZhdGVOcG1Ub2tlbkVudlZhciA/PyAnTlBNX1RPS0VOJztcbiAgICAgIHRoaXMubnBtcmMuYWRkQ29uZmlnKCcvL3JlZ2lzdHJ5Lm5wbWpzLm9yZy86X2F1dGhUb2tlbicsIGBcXCR7JHt0b2tlbkVudlZhcn19YCk7XG4gICAgfVxuXG4gIH1cblxufVxuIl19
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWNvbnN0cnVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9qZWN0cy9jZGstY29uc3RydWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxtQ0FBb0Q7QUFpQnBEOzs7O0dBSUc7QUFDSCxNQUFhLHlCQUEwQixTQUFRLGVBQU0sQ0FBQyxzQkFBc0I7O0lBRTFFLFlBQVksT0FBeUM7UUFDbkQsS0FBSyxDQUFDO1lBQ0osa0JBQWtCLEVBQUUsSUFBSTtZQUN4QixjQUFjLEVBQUUsYUFBYTtZQUM3QixlQUFlLEVBQUUsTUFBTTtZQUN2QixPQUFPLEVBQUU7Z0JBQ1AsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsT0FBTyxFQUFFLFVBQVU7YUFDcEI7WUFDRCxPQUFPLEVBQUUsWUFBWTtZQUNyQixTQUFTLEVBQUUsY0FBYztZQUN6QixZQUFZLEVBQUUsSUFBSTtZQUNsQixvQkFBb0IsRUFBRSxJQUFJO1lBQzFCLFNBQVMsRUFBRSxtQkFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNO1lBQ3RDLE1BQU0sRUFBRSxLQUFLO1lBQ2IsbUJBQW1CLEVBQUUsSUFBSTtZQUN6QixrQkFBa0IsRUFBRSxFQUFFLGdCQUFnQixFQUFFLENBQUMsVUFBVSxFQUFFLG9CQUFvQixDQUFDLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRTtZQUNwRyxrQkFBa0IsRUFBRSxFQUFFLGVBQWUsRUFBRSxFQUFFLFFBQVEsRUFBRSxtQkFBVSxDQUFDLDJCQUEyQixDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3BHLGFBQWEsRUFBRTtnQkFDYixpQkFBaUIsRUFBRSxlQUFNLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFO2FBQ3REO1lBQ0QsMkJBQTJCLEVBQUUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt5QkFzQlgsQ0FBQztZQUNwQixHQUFHLE9BQU87U0FDWCxDQUFDLENBQUM7UUFFSCxJQUFJLE9BQU8sQ0FBQyxVQUFVLElBQUksS0FBSyxFQUFFLENBQUM7WUFDaEMsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixJQUFJLFdBQVcsQ0FBQztZQUNqRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxrQ0FBa0MsRUFBRSxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDakYsQ0FBQztJQUVILENBQUM7O0FBdERILDhEQXdEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGF3c2NkaywgamF2YXNjcmlwdCwgZ2l0aHViIH0gZnJvbSAncHJvamVuJztcblxuZXhwb3J0IGludGVyZmFjZSBUYWltb3NDZGtDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9ucyBleHRlbmRzIGF3c2Nkay5Bd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGVuYWJsZSBwcml2YXRlIE5QTSByZWdpc3RyeSBhdXRoZW50aWNhdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHByaXZhdGVOcG0/OiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWUgY29udGFpbmluZyB0aGUgTlBNIGF1dGhlbnRpY2F0aW9uIHRva2VuLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnTlBNX1RPS0VOJ1xuICAgKi9cbiAgcmVhZG9ubHkgcHJpdmF0ZU5wbVRva2VuRW52VmFyPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFR5cGVTY3JpcHQgbGlicmFyeVxuICpcbiAqIEBwamlkIHRhaW1vcy1hd3NjZGstY29uc3RydWN0XG4gKi9cbmV4cG9ydCBjbGFzcyBUYWltb3NDZGtDb25zdHJ1Y3RMaWJyYXJ5IGV4dGVuZHMgYXdzY2RrLkF3c0Nka0NvbnN0cnVjdExpYnJhcnkge1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFRhaW1vc0Nka0NvbnN0cnVjdExpYnJhcnlPcHRpb25zKSB7XG4gICAgc3VwZXIoe1xuICAgICAgYXV0aG9yT3JnYW5pemF0aW9uOiB0cnVlLFxuICAgICAgY29weXJpZ2h0T3duZXI6ICdUYWltb3MgR21iSCcsXG4gICAgICBjb3B5cmlnaHRQZXJpb2Q6ICcyMDI1JyxcbiAgICAgIGNhdGFsb2c6IHtcbiAgICAgICAgYW5ub3VuY2U6IHRydWUsXG4gICAgICAgIHR3aXR0ZXI6ICdob2VnZXJ0bicsXG4gICAgICB9LFxuICAgICAgbGljZW5zZTogJ0FwYWNoZS0yLjAnLFxuICAgICAgc3RhYmlsaXR5OiAnZXhwZXJpbWVudGFsJyxcbiAgICAgIHJlbGVhc2VUb05wbTogdHJ1ZSxcbiAgICAgIG5wbVRydXN0ZWRQdWJsaXNoaW5nOiB0cnVlLFxuICAgICAgbnBtQWNjZXNzOiBqYXZhc2NyaXB0Lk5wbUFjY2Vzcy5QVUJMSUMsXG4gICAgICBnaXRwb2Q6IGZhbHNlLFxuICAgICAgYXV0b0FwcHJvdmVVcGdyYWRlczogdHJ1ZSxcbiAgICAgIGF1dG9BcHByb3ZlT3B0aW9uczogeyBhbGxvd2VkVXNlcm5hbWVzOiBbJ2hvZWdlcnRuJywgJ3RhaW1vcy1wcm9qZW5bYm90XSddLCBzZWNyZXQ6ICdHSVRIVUJfVE9LRU4nIH0sXG4gICAgICBkZXBzVXBncmFkZU9wdGlvbnM6IHsgd29ya2Zsb3dPcHRpb25zOiB7IHNjaGVkdWxlOiBqYXZhc2NyaXB0LlVwZ3JhZGVEZXBlbmRlbmNpZXNTY2hlZHVsZS5XRUVLTFkgfSB9LFxuICAgICAgZ2l0aHViT3B0aW9uczoge1xuICAgICAgICBwcm9qZW5DcmVkZW50aWFsczogZ2l0aHViLkdpdGh1YkNyZWRlbnRpYWxzLmZyb21BcHAoKSxcbiAgICAgIH0sXG4gICAgICBwdWxsUmVxdWVzdFRlbXBsYXRlQ29udGVudHM6IFtgKiAqKlBsZWFzZSBjaGVjayBpZiB0aGUgUFIgZnVsZmlsbHMgdGhlc2UgcmVxdWlyZW1lbnRzKipcbi0gWyBdIFRoZSBjb21taXQgbWVzc2FnZSBkZXNjcmliZXMgeW91ciBjaGFuZ2Vcbi0gWyBdIFRlc3RzIGZvciB0aGUgY2hhbmdlcyBoYXZlIGJlZW4gYWRkZWQgaWYgcG9zc2libGUgKGZvciBidWcgZml4ZXMgLyBmZWF0dXJlcylcbi0gWyBdIERvY3MgaGF2ZSBiZWVuIGFkZGVkIC8gdXBkYXRlZCAoZm9yIGJ1ZyBmaXhlcyAvIGZlYXR1cmVzKVxuXG5cbiogKipXaGF0IGtpbmQgb2YgY2hhbmdlIGRvZXMgdGhpcyBQUiBpbnRyb2R1Y2U/KiogKEJ1ZyBmaXgsIGZlYXR1cmUsIGRvY3MgdXBkYXRlLCAuLi4pXG5cblxuXG4qICoqV2hhdCBpcyB0aGUgY3VycmVudCBiZWhhdmlvcj8qKiAoWW91IGNhbiBhbHNvIGxpbmsgdG8gYW4gb3BlbiBpc3N1ZSBoZXJlKVxuXG5cblxuKiAqKldoYXQgaXMgdGhlIG5ldyBiZWhhdmlvciAoaWYgdGhpcyBpcyBhIGZlYXR1cmUgY2hhbmdlKT8qKlxuXG5cblxuKiAqKkRvZXMgdGhpcyBQUiBpbnRyb2R1Y2UgYSBicmVha2luZyBjaGFuZ2U/KiogKFdoYXQgY2hhbmdlcyBtaWdodCB1c2VycyBuZWVkIHRvIG1ha2UgaW4gdGhlaXIgc2V0dXAgZHVlIHRvIHRoaXMgUFI/KVxuXG5cblxuKiAqKk90aGVyIGluZm9ybWF0aW9uKio6YF0sXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuXG4gICAgaWYgKG9wdGlvbnMucHJpdmF0ZU5wbSA/PyBmYWxzZSkge1xuICAgICAgY29uc3QgdG9rZW5FbnZWYXIgPSBvcHRpb25zLnByaXZhdGVOcG1Ub2tlbkVudlZhciA/PyAnTlBNX1RPS0VOJztcbiAgICAgIHRoaXMubnBtcmMuYWRkQ29uZmlnKCcvL3JlZ2lzdHJ5Lm5wbWpzLm9yZy86X2F1dGhUb2tlbicsIGBcXCR7JHt0b2tlbkVudlZhcn19YCk7XG4gICAgfVxuXG4gIH1cblxufVxuIl19
@@ -4,3 +4,4 @@ export * from './private-ts-lib';
4
4
  export * from './private-cdk-app';
5
5
  export * from './cdk-construct';
6
6
  export * from './prod-cdk-app';
7
+ export * from './monorepo';
@@ -20,4 +20,5 @@ __exportStar(require("./private-ts-lib"), exports);
20
20
  __exportStar(require("./private-cdk-app"), exports);
21
21
  __exportStar(require("./cdk-construct"), exports);
22
22
  __exportStar(require("./prod-cdk-app"), exports);
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvamVjdHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDRDQUEwQjtBQUMxQiwyQ0FBeUI7QUFDekIsbURBQWlDO0FBQ2pDLG9EQUFrQztBQUNsQyxrREFBZ0M7QUFDaEMsaURBQStCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jZGstYXBwJztcbmV4cG9ydCAqIGZyb20gJy4vdHMtbGliJztcbmV4cG9ydCAqIGZyb20gJy4vcHJpdmF0ZS10cy1saWInO1xuZXhwb3J0ICogZnJvbSAnLi9wcml2YXRlLWNkay1hcHAnO1xuZXhwb3J0ICogZnJvbSAnLi9jZGstY29uc3RydWN0JztcbmV4cG9ydCAqIGZyb20gJy4vcHJvZC1jZGstYXBwJztcbiJdfQ==
23
+ __exportStar(require("./monorepo"), exports);
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvamVjdHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDRDQUEwQjtBQUMxQiwyQ0FBeUI7QUFDekIsbURBQWlDO0FBQ2pDLG9EQUFrQztBQUNsQyxrREFBZ0M7QUFDaEMsaURBQStCO0FBQy9CLDZDQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY2RrLWFwcCc7XG5leHBvcnQgKiBmcm9tICcuL3RzLWxpYic7XG5leHBvcnQgKiBmcm9tICcuL3ByaXZhdGUtdHMtbGliJztcbmV4cG9ydCAqIGZyb20gJy4vcHJpdmF0ZS1jZGstYXBwJztcbmV4cG9ydCAqIGZyb20gJy4vY2RrLWNvbnN0cnVjdCc7XG5leHBvcnQgKiBmcm9tICcuL3Byb2QtY2RrLWFwcCc7XG5leHBvcnQgKiBmcm9tICcuL21vbm9yZXBvJztcbiJdfQ==
@@ -0,0 +1,204 @@
1
+ import { github, typescript, YamlFile } from 'projen';
2
+ import { GitHubAssignApprover } from 'projen-pipelines';
3
+ /**
4
+ * The frontend framework an Amplify Hosting application is built with.
5
+ *
6
+ * Selects sensible defaults for the build command, artifact directory and
7
+ * cache paths in the generated `amplify.yml`.
8
+ */
9
+ export declare enum MonorepoAmplifyFramework {
10
+ /** A Next.js app — artifacts in `<appRoot>/.next`, built via `run build`. */
11
+ NEXTJS = "nextjs",
12
+ /** An Angular app — artifacts in `<appRoot>/dist/<filter>/browser`, built via `run build:${BUILD_ENV}`. */
13
+ ANGULAR = "angular"
14
+ }
15
+ /**
16
+ * One AWS Amplify Hosting application served from a workspace package.
17
+ *
18
+ * Renders a single entry under `applications:` in the generated `amplify.yml`.
19
+ * Amplify does not auto-detect PNPM workspaces, so the generated build spec
20
+ * runs `corepack enable` + a root `pnpm install` and pre-builds any shared
21
+ * packages before building the app from its `appRoot` (see ADR-0002).
22
+ */
23
+ export interface MonorepoAmplifyApp {
24
+ /**
25
+ * The package path that is the Amplify app root, e.g. `packages/frontend`.
26
+ */
27
+ readonly appRoot: string;
28
+ /**
29
+ * The frontend framework, used to pick build/artifact/cache defaults.
30
+ */
31
+ readonly framework: MonorepoAmplifyFramework;
32
+ /**
33
+ * The pnpm package name to build, used as the `--filter` target,
34
+ * e.g. `deploymon-frontend` or `radball-digital-portal`.
35
+ */
36
+ readonly buildFilter: string;
37
+ /**
38
+ * Workspace packages to build before the app, as `--filter` targets.
39
+ *
40
+ * Typically the shared API package the app consumes via `workspace:*`,
41
+ * e.g. `['@taimos/deploymon-api']`.
42
+ *
43
+ * @default []
44
+ */
45
+ readonly preBuildFilters?: string[];
46
+ /**
47
+ * Override the build command run in the Amplify `build` phase.
48
+ *
49
+ * @default - `pnpm --filter <buildFilter> run build` for Next.js, or
50
+ * `pnpm --filter <buildFilter> run build:${BUILD_ENV}` for Angular.
51
+ */
52
+ readonly buildCommand?: string;
53
+ /**
54
+ * Override the artifact base directory.
55
+ *
56
+ * @default - `<appRoot>/.next` for Next.js, or
57
+ * `<appRoot>/dist/<buildFilter>/browser` for Angular.
58
+ */
59
+ readonly artifactBaseDirectory?: string;
60
+ /**
61
+ * Override the Amplify build cache paths.
62
+ *
63
+ * @default - `node_modules/**` plus the framework build cache
64
+ * (`<appRoot>/.next/cache/**` or `<appRoot>/.angular/cache/**`).
65
+ */
66
+ readonly cachePaths?: string[];
67
+ }
68
+ /**
69
+ * PNPM workspace tuning for the generated `pnpm-workspace.yaml`.
70
+ */
71
+ export interface MonorepoWorkspaceOptions {
72
+ /**
73
+ * The workspace package globs.
74
+ *
75
+ * @default ['packages/*']
76
+ */
77
+ readonly packages?: string[];
78
+ /**
79
+ * Version overrides forced across the whole workspace
80
+ * (the `overrides:` field). Omitted from the file when empty.
81
+ *
82
+ * @default {}
83
+ */
84
+ readonly overrides?: {
85
+ [name: string]: string;
86
+ };
87
+ /**
88
+ * Dependencies allowed to run install/build scripts. pnpm >= 10 blocks these
89
+ * by default. The list populates both `allowBuilds` and
90
+ * `onlyBuiltDependencies` so pnpm does not treat `node_modules` as stale.
91
+ *
92
+ * @default ['@aws-amplify/cli', 'esbuild', 'sharp', 'unrs-resolver']
93
+ */
94
+ readonly allowedBuilds?: string[];
95
+ /**
96
+ * Minimum age in minutes a published version must have before it may be
97
+ * installed (`minimumReleaseAge`).
98
+ *
99
+ * @default 2880 // 2 days
100
+ */
101
+ readonly minimumReleaseAge?: number;
102
+ /**
103
+ * Packages exempt from `minimumReleaseAge` so our own tooling can update
104
+ * without the cooldown.
105
+ *
106
+ * @default ['projen-pipelines', 'cdk-serverless', '@taimos/projen']
107
+ */
108
+ readonly minimumReleaseAgeExclude?: string[];
109
+ }
110
+ /**
111
+ * One author-to-approvers routing rule for the PR approver assignment.
112
+ */
113
+ export interface MonorepoApproverMapping {
114
+ /**
115
+ * The GitHub username opening the PR.
116
+ */
117
+ readonly author: string;
118
+ /**
119
+ * The GitHub usernames assigned to review when `author` opens a PR.
120
+ */
121
+ readonly approvers: string[];
122
+ }
123
+ export interface MonorepoProjectOptions extends typescript.TypeScriptProjectOptions {
124
+ /**
125
+ * The pnpm version pinned for the workspace and CI.
126
+ *
127
+ * @default '10.33.0'
128
+ */
129
+ readonly pnpmWorkspaceVersion?: string;
130
+ /**
131
+ * The Node.js version used in the generated build workflow.
132
+ *
133
+ * @default '22'
134
+ */
135
+ readonly nodeVersion?: string;
136
+ /**
137
+ * PNPM workspace tuning for the generated `pnpm-workspace.yaml`.
138
+ */
139
+ readonly workspaceOptions?: MonorepoWorkspaceOptions;
140
+ /**
141
+ * Whether to add `cdk-serverless` as a workspace dev dependency.
142
+ *
143
+ * @default false
144
+ */
145
+ readonly cdkServerless?: boolean;
146
+ /**
147
+ * Whether to assign PR approvers via `GitHubAssignApprover`.
148
+ *
149
+ * @default true
150
+ */
151
+ readonly assignApprover?: boolean;
152
+ /**
153
+ * Author-to-approvers routing for the PR approver assignment.
154
+ * Only used when `assignApprover` is enabled.
155
+ *
156
+ * @default - hoegertn and hoegerma review each other
157
+ */
158
+ readonly approverMapping?: MonorepoApproverMapping[];
159
+ /**
160
+ * Approvers assigned when no author-specific mapping matches.
161
+ * Only used when `assignApprover` is enabled.
162
+ *
163
+ * @default ['hoegertn', 'hoegerma']
164
+ */
165
+ readonly defaultApprovers?: string[];
166
+ /**
167
+ * Whether the unified build workflow also runs `pnpm -r run test`.
168
+ *
169
+ * @default true
170
+ */
171
+ readonly runTestsInBuild?: boolean;
172
+ /**
173
+ * AWS Amplify Hosting applications. When set, an `amplify.yml` is generated
174
+ * with one entry per app. When omitted, no `amplify.yml` is created.
175
+ *
176
+ * @default []
177
+ */
178
+ readonly amplifyApps?: MonorepoAmplifyApp[];
179
+ }
180
+ /**
181
+ * Private PNPM-workspace monorepo root, following Taimos ADR-0002.
182
+ *
183
+ * The root only orchestrates the workspace — building, testing and linting are
184
+ * delegated to the workspace packages via `pnpm -r`. This project generates the
185
+ * `pnpm-workspace.yaml`, the root convenience scripts, a unified PR build
186
+ * workflow and (optionally) an Amplify Hosting build spec. The projen-managed
187
+ * sub-projects (api, backend, infra) are added with the `parent`/`outdir`
188
+ * pattern in the consuming `.projenrc.ts`; plain workspace packages (e.g.
189
+ * Next.js apps) are picked up by the `packages/*` glob.
190
+ *
191
+ * @pjid taimos-monorepo
192
+ */
193
+ export declare class MonorepoProject extends typescript.TypeScriptProject {
194
+ /** The generated `pnpm-workspace.yaml`. */
195
+ readonly workspaceFile: YamlFile;
196
+ /** The unified PR build workflow. */
197
+ readonly prBuildWorkflow: github.GithubWorkflow;
198
+ /** The generated `amplify.yml`, if any Amplify apps were configured. */
199
+ readonly amplifyFile?: YamlFile;
200
+ /** The PR approver assignment, if enabled. */
201
+ readonly assignApprover?: GitHubAssignApprover;
202
+ constructor(options: MonorepoProjectOptions);
203
+ private renderAmplifyApp;
204
+ }
@@ -0,0 +1,210 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MonorepoProject = exports.MonorepoAmplifyFramework = void 0;
4
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
+ const projen_1 = require("projen");
6
+ const projen_pipelines_1 = require("projen-pipelines");
7
+ /**
8
+ * The frontend framework an Amplify Hosting application is built with.
9
+ *
10
+ * Selects sensible defaults for the build command, artifact directory and
11
+ * cache paths in the generated `amplify.yml`.
12
+ */
13
+ var MonorepoAmplifyFramework;
14
+ (function (MonorepoAmplifyFramework) {
15
+ /** A Next.js app — artifacts in `<appRoot>/.next`, built via `run build`. */
16
+ MonorepoAmplifyFramework["NEXTJS"] = "nextjs";
17
+ /** An Angular app — artifacts in `<appRoot>/dist/<filter>/browser`, built via `run build:${BUILD_ENV}`. */
18
+ MonorepoAmplifyFramework["ANGULAR"] = "angular";
19
+ })(MonorepoAmplifyFramework || (exports.MonorepoAmplifyFramework = MonorepoAmplifyFramework = {}));
20
+ /**
21
+ * Private PNPM-workspace monorepo root, following Taimos ADR-0002.
22
+ *
23
+ * The root only orchestrates the workspace — building, testing and linting are
24
+ * delegated to the workspace packages via `pnpm -r`. This project generates the
25
+ * `pnpm-workspace.yaml`, the root convenience scripts, a unified PR build
26
+ * workflow and (optionally) an Amplify Hosting build spec. The projen-managed
27
+ * sub-projects (api, backend, infra) are added with the `parent`/`outdir`
28
+ * pattern in the consuming `.projenrc.ts`; plain workspace packages (e.g.
29
+ * Next.js apps) are picked up by the `packages/*` glob.
30
+ *
31
+ * @pjid taimos-monorepo
32
+ */
33
+ class MonorepoProject extends projen_1.typescript.TypeScriptProject {
34
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@taimos/projen.MonorepoProject", version: "0.1.65" };
35
+ /** The generated `pnpm-workspace.yaml`. */
36
+ workspaceFile;
37
+ /** The unified PR build workflow. */
38
+ prBuildWorkflow;
39
+ /** The generated `amplify.yml`, if any Amplify apps were configured. */
40
+ amplifyFile;
41
+ /** The PR approver assignment, if enabled. */
42
+ assignApprover;
43
+ constructor(options) {
44
+ const pnpmVersion = options.pnpmWorkspaceVersion ?? '10.33.0';
45
+ super({
46
+ licensed: false,
47
+ release: false,
48
+ depsUpgrade: false,
49
+ // The root only orchestrates the workspace — no app code lives here.
50
+ jest: false,
51
+ eslint: false,
52
+ sampleCode: false,
53
+ // CI is the single hand-rolled workflow below that delegates to packages.
54
+ buildWorkflow: false,
55
+ ...options,
56
+ // Forced — defining what a Taimos monorepo root is.
57
+ packageManager: projen_1.javascript.NodePackageManager.PNPM,
58
+ pnpmVersion,
59
+ projenrcTs: true,
60
+ github: true,
61
+ githubOptions: {
62
+ projenCredentials: projen_1.github.GithubCredentials.fromApp(),
63
+ mergify: false,
64
+ mergeQueue: true,
65
+ ...options.githubOptions,
66
+ mergeQueueOptions: {
67
+ autoQueue: true,
68
+ ...options.githubOptions?.mergeQueueOptions,
69
+ },
70
+ pullRequestLintOptions: {
71
+ ...options.githubOptions?.pullRequestLintOptions,
72
+ semanticTitleOptions: {
73
+ ...options.githubOptions?.pullRequestLintOptions?.semanticTitleOptions,
74
+ // Fixed allowed PR title types for a Taimos monorepo.
75
+ types: ['feat', 'fix', 'chore', 'docs', 'spec', 'ci'],
76
+ },
77
+ },
78
+ },
79
+ devDeps: [
80
+ '@taimos/projen',
81
+ 'projen-pipelines',
82
+ ...(options.cdkServerless ?? false ? ['cdk-serverless'] : []),
83
+ ...options.devDeps ?? [],
84
+ ],
85
+ });
86
+ // Private workspace root — never published, resolves packages locally.
87
+ this.package.addField('private', true);
88
+ // PR approver routing.
89
+ if (options.assignApprover ?? true) {
90
+ this.assignApprover = new projen_pipelines_1.GitHubAssignApprover(this, {
91
+ approverMapping: options.approverMapping ?? [
92
+ { author: 'hoegertn', approvers: ['hoegerma'] },
93
+ { author: 'hoegerma', approvers: ['hoegertn'] },
94
+ ],
95
+ defaultApprovers: options.defaultApprovers ?? ['hoegertn', 'hoegerma'],
96
+ });
97
+ }
98
+ // The projenrc is split into modules under .projen/ — make them part of the
99
+ // dev tsconfig so the IDE and ts-node type-check them.
100
+ this.tsconfigDev?.addInclude('.projen/*.ts');
101
+ // pnpm workspace definition.
102
+ const ws = options.workspaceOptions ?? {};
103
+ const allowedBuilds = ws.allowedBuilds ?? ['@aws-amplify/cli', 'esbuild', 'sharp', 'unrs-resolver'];
104
+ const allowBuilds = {};
105
+ for (const dep of allowedBuilds) {
106
+ allowBuilds[dep] = true;
107
+ }
108
+ this.workspaceFile = new projen_1.YamlFile(this, 'pnpm-workspace.yaml', {
109
+ obj: {
110
+ packages: ws.packages ?? ['packages/*'],
111
+ // Allow native/build-step packages to run install scripts (pnpm >= 10
112
+ // blocks these by default), so pnpm does not treat node_modules as stale.
113
+ allowBuilds,
114
+ onlyBuiltDependencies: allowedBuilds,
115
+ ...(ws.overrides && Object.keys(ws.overrides).length > 0 ? { overrides: ws.overrides } : {}),
116
+ minimumReleaseAge: ws.minimumReleaseAge ?? 2880, // 2 days in minutes
117
+ minimumReleaseAgeExclude: ws.minimumReleaseAgeExclude ?? [
118
+ 'projen-pipelines',
119
+ 'cdk-serverless',
120
+ '@taimos/projen',
121
+ ],
122
+ },
123
+ });
124
+ // Convenience root scripts delegate to the workspace.
125
+ const rootPkg = this.tryFindObjectFile('package.json');
126
+ rootPkg.addOverride('scripts.build', 'pnpm -r run build');
127
+ rootPkg.addOverride('scripts.test', 'pnpm -r run test');
128
+ rootPkg.addOverride('scripts.lint', 'pnpm -r run eslint');
129
+ // Unified PR build workflow — builds (and optionally tests) every workspace
130
+ // package in dependency order.
131
+ const nodeVersion = options.nodeVersion ?? '22';
132
+ const buildSteps = [
133
+ { name: 'Checkout', uses: 'actions/checkout@v4' },
134
+ { name: 'Setup pnpm', uses: 'pnpm/action-setup@v4', with: { version: pnpmVersion } },
135
+ {
136
+ name: 'Setup Node.js',
137
+ uses: 'actions/setup-node@v4',
138
+ with: { 'node-version': nodeVersion, 'cache': 'pnpm' },
139
+ },
140
+ { name: 'Install', run: 'pnpm install --frozen-lockfile' },
141
+ { name: 'Build', run: 'pnpm -r run build' },
142
+ ];
143
+ if (options.runTestsInBuild ?? true) {
144
+ buildSteps.push({ name: 'Test', run: 'pnpm -r run test' });
145
+ }
146
+ // Path filter: only trigger builds when workspace package files change.
147
+ // Changes to specs or docs alone should not trigger a new build.
148
+ const workspacePackages = ws.packages ?? ['packages/*'];
149
+ const buildPaths = workspacePackages.map((pkg) => `${pkg}/**`);
150
+ this.prBuildWorkflow = new projen_1.github.GithubWorkflow(this.github, 'build');
151
+ this.prBuildWorkflow.on({
152
+ pullRequest: { paths: buildPaths },
153
+ push: { branches: ['main'], paths: buildPaths },
154
+ workflowDispatch: {},
155
+ });
156
+ this.prBuildWorkflow.addJob('build', {
157
+ runsOn: ['ubuntu-latest'],
158
+ permissions: { contents: projen_1.github.workflows.JobPermission.READ },
159
+ steps: buildSteps,
160
+ });
161
+ // AWS Amplify Hosting build spec. PNPM workspaces are not auto-detected by
162
+ // Amplify, so each app installs at the repo root, pre-builds its shared
163
+ // packages, then builds from its appRoot (see ADR-0002).
164
+ if (options.amplifyApps && options.amplifyApps.length > 0) {
165
+ this.amplifyFile = new projen_1.YamlFile(this, 'amplify.yml', {
166
+ obj: {
167
+ version: 1,
168
+ applications: options.amplifyApps.map((app) => this.renderAmplifyApp(app)),
169
+ },
170
+ });
171
+ }
172
+ }
173
+ renderAmplifyApp(app) {
174
+ const angular = app.framework === MonorepoAmplifyFramework.ANGULAR;
175
+ const preBuild = [
176
+ 'corepack enable',
177
+ // Force pnpm's hoisted linker for the Amplify build only — Amplify's
178
+ // managed compute traces runtime deps from a flat node_modules.
179
+ 'pnpm install --frozen-lockfile --node-linker hoisted',
180
+ ...(app.preBuildFilters ?? []).map((f) => `pnpm --filter ${f} run build`),
181
+ ];
182
+ // BUILD_ENV (dev|prod) is provided as an Amplify environment variable.
183
+ const buildCommand = app.buildCommand ?? (angular
184
+ ? `pnpm --filter ${app.buildFilter} run build:\${BUILD_ENV}`
185
+ : `pnpm --filter ${app.buildFilter} run build`);
186
+ const baseDirectory = app.artifactBaseDirectory ?? (angular
187
+ ? `${app.appRoot}/dist/${app.buildFilter}/browser`
188
+ : `${app.appRoot}/.next`);
189
+ const cachePaths = app.cachePaths ?? [
190
+ 'node_modules/**/*',
191
+ angular ? `${app.appRoot}/.angular/cache/**/*` : `${app.appRoot}/.next/cache/**/*`,
192
+ ];
193
+ return {
194
+ appRoot: app.appRoot,
195
+ frontend: {
196
+ // Install/build from the monorepo root so the workspace root
197
+ // package.json and pnpm-lock.yaml are available.
198
+ buildPath: '/',
199
+ phases: {
200
+ preBuild: { commands: preBuild },
201
+ build: { commands: [buildCommand] },
202
+ },
203
+ artifacts: { baseDirectory, files: ['**/*'] },
204
+ cache: { paths: cachePaths },
205
+ },
206
+ };
207
+ }
208
+ }
209
+ exports.MonorepoProject = MonorepoProject;
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ub3JlcG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvamVjdHMvbW9ub3JlcG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLG1DQUFrRTtBQUNsRSx1REFBd0Q7QUFFeEQ7Ozs7O0dBS0c7QUFDSCxJQUFZLHdCQUtYO0FBTEQsV0FBWSx3QkFBd0I7SUFDbEMsNkVBQTZFO0lBQzdFLDZDQUFpQixDQUFBO0lBQ2pCLDJHQUEyRztJQUMzRywrQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBTFcsd0JBQXdCLHdDQUF4Qix3QkFBd0IsUUFLbkM7QUE0TEQ7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBYSxlQUFnQixTQUFRLG1CQUFVLENBQUMsaUJBQWlCOztJQUUvRCwyQ0FBMkM7SUFDM0IsYUFBYSxDQUFXO0lBRXhDLHFDQUFxQztJQUNyQixlQUFlLENBQXdCO0lBRXZELHdFQUF3RTtJQUN4RCxXQUFXLENBQVk7SUFFdkMsOENBQThDO0lBQzlCLGNBQWMsQ0FBd0I7SUFFdEQsWUFBWSxPQUErQjtRQUN6QyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsb0JBQW9CLElBQUksU0FBUyxDQUFDO1FBRTlELEtBQUssQ0FBQztZQUNKLFFBQVEsRUFBRSxLQUFLO1lBQ2YsT0FBTyxFQUFFLEtBQUs7WUFDZCxXQUFXLEVBQUUsS0FBSztZQUNsQixxRUFBcUU7WUFDckUsSUFBSSxFQUFFLEtBQUs7WUFDWCxNQUFNLEVBQUUsS0FBSztZQUNiLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLDBFQUEwRTtZQUMxRSxhQUFhLEVBQUUsS0FBSztZQUNwQixHQUFHLE9BQU87WUFDVixvREFBb0Q7WUFDcEQsY0FBYyxFQUFFLG1CQUFVLENBQUMsa0JBQWtCLENBQUMsSUFBSTtZQUNsRCxXQUFXO1lBQ1gsVUFBVSxFQUFFLElBQUk7WUFDaEIsTUFBTSxFQUFFLElBQUk7WUFDWixhQUFhLEVBQUU7Z0JBQ2IsaUJBQWlCLEVBQUUsZUFBTSxDQUFD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QUFDLE9BQU8sc0JBQXNCLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLE9BQU8sbUJBQW1CO1NBQ25GLENBQUM7UUFDRixPQUFPO1lBQ0wsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPO1lBQ3BCLFFBQVEsRUFBRTtnQkFDUiw2REFBNkQ7Z0JBQzdELGlEQUFpRDtnQkFDakQsU0FBUyxFQUFFLEdBQUc7Z0JBQ2QsTUFBTSxFQUFFO29CQUNOLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUU7b0JBQ2hDLEtBQUssRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFO2lCQUNwQztnQkFDRCxTQUFTLEVBQUUsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQzdDLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7YUFDN0I7U0FDRixDQUFDO0lBQ0osQ0FBQzs7QUE1TEgsMENBNkxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2l0aHViLCBqYXZhc2NyaXB0LCB0eXBlc2NyaXB0LCBZYW1sRmlsZSB9IGZyb20gJ3Byb2plbic7XG5pbXBvcnQgeyBHaXRIdWJBc3NpZ25BcHByb3ZlciB9IGZyb20gJ3Byb2plbi1waXBlbGluZXMnO1xuXG4vKipcbiAqIFRoZSBmcm9udGVuZCBmcmFtZXdvcmsgYW4gQW1wbGlmeSBIb3N0aW5nIGFwcGxpY2F0aW9uIGlzIGJ1aWx0IHdpdGguXG4gKlxuICogU2VsZWN0cyBzZW5zaWJsZSBkZWZhdWx0cyBmb3IgdGhlIGJ1aWxkIGNvbW1hbmQsIGFydGlmYWN0IGRpcmVjdG9yeSBhbmRcbiAqIGNhY2hlIHBhdGhzIGluIHRoZSBnZW5lcmF0ZWQgYGFtcGxpZnkueW1sYC5cbiAqL1xuZXhwb3J0IGVudW0gTW9ub3JlcG9BbXBsaWZ5RnJhbWV3b3JrIHtcbiAgLyoqIEEgTmV4dC5qcyBhcHAg4oCUIGFydGlmYWN0cyBpbiBgPGFwcFJvb3Q+Ly5uZXh0YCwgYnVpbHQgdmlhIGBydW4gYnVpbGRgLiAqL1xuICBORVhUSlMgPSAnbmV4dGpzJyxcbiAgLyoqIEFuIEFuZ3VsYXIgYXBwIOKAlCBhcnRpZmFjdHMgaW4gYDxhcHBSb290Pi9kaXN0LzxmaWx0ZXI+L2Jyb3dzZXJgLCBidWlsdCB2aWEgYHJ1biBidWlsZDoke0JVSUxEX0VOVn1gLiAqL1xuICBBTkdVTEFSID0gJ2FuZ3VsYXInLFxufVxuXG4vKipcbiAqIE9uZSBBV1MgQW1wbGlmeSBIb3N0aW5nIGFwcGxpY2F0aW9uIHNlcnZlZCBmcm9tIGEgd29ya3NwYWNlIHBhY2thZ2UuXG4gKlxuICogUmVuZGVycyBhIHNpbmdsZSBlbnRyeSB1bmRlciBgYXBwbGljYXRpb25zOmAgaW4gdGhlIGdlbmVyYXRlZCBgYW1wbGlmeS55bWxgLlxuICogQW1wbGlmeSBkb2VzIG5vdCBhdXRvLWRldGVjdCBQTlBNIHdvcmtzcGFjZXMsIHNvIHRoZSBnZW5lcmF0ZWQgYnVpbGQgc3BlY1xuICogcnVucyBgY29yZXBhY2sgZW5hYmxlYCArIGEgcm9vdCBgcG5wbSBpbnN0YWxsYCBhbmQgcHJlLWJ1aWxkcyBhbnkgc2hhcmVkXG4gKiBwYWNrYWdlcyBiZWZvcmUgYnVpbGRpbmcgdGhlIGFwcCBmcm9tIGl0cyBgYXBwUm9vdGAgKHNlZSBBRFItMDAwMikuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9ub3JlcG9BbXBsaWZ5QXBwIHtcbiAgLyoqXG4gICAqIFRoZSBwYWNrYWdlIHBhdGggdGhhdCBpcyB0aGUgQW1wbGlmeSBhcHAgcm9vdCwgZS5nLiBgcGFja2FnZXMvZnJvbnRlbmRgLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwUm9vdDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZnJvbnRlbmQgZnJhbWV3b3JrLCB1c2VkIHRvIHBpY2sgYnVpbGQvYXJ0aWZhY3QvY2FjaGUgZGVmYXVsdHMuXG4gICAqL1xuICByZWFkb25seSBmcmFtZXdvcms6IE1vbm9yZXBvQW1wbGlmeUZyYW1ld29yaztcblxuICAvKipcbiAgICogVGhlIHBucG0gcGFja2FnZSBuYW1lIHRvIGJ1aWxkLCB1c2VkIGFzIHRoZSBgLS1maWx0ZXJgIHRhcmdldCxcbiAgICogZS5nLiBgZGVwbG95bW9uLWZyb250ZW5kYCBvciBgcmFkYmFsbC1kaWdpdGFsLXBvcnRhbGAuXG4gICAqL1xuICByZWFkb25seSBidWlsZEZpbHRlcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXb3Jrc3BhY2UgcGFja2FnZXMgdG8gYnVpbGQgYmVmb3JlIHRoZSBhcHAsIGFzIGAtLWZpbHRlcmAgdGFyZ2V0cy5cbiAgICpcbiAgICogVHlwaWNhbGx5IHRoZSBzaGFyZWQgQVBJIHBhY2thZ2UgdGhlIGFwcCBjb25zdW1lcyB2aWEgYHdvcmtzcGFjZToqYCxcbiAgICogZS5nLiBgWydAdGFpbW9zL2RlcGxveW1vbi1hcGknXWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICByZWFkb25seSBwcmVCdWlsZEZpbHRlcnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogT3ZlcnJpZGUgdGhlIGJ1aWxkIGNvbW1hbmQgcnVuIGluIHRoZSBBbXBsaWZ5IGBidWlsZGAgcGhhc2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYHBucG0gLS1maWx0ZXIgPGJ1aWxkRmlsdGVyPiBydW4gYnVpbGRgIGZvciBOZXh0LmpzLCBvclxuICAgKiBgcG5wbSAtLWZpbHRlciA8YnVpbGRGaWx0ZXI+IHJ1biBidWlsZDoke0JVSUxEX0VOVn1gIGZvciBBbmd1bGFyLlxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRDb21tYW5kPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPdmVycmlkZSB0aGUgYXJ0aWZhY3QgYmFzZSBkaXJlY3RvcnkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYDxhcHBSb290Pi8ubmV4dGAgZm9yIE5leHQuanMsIG9yXG4gICAqIGA8YXBwUm9vdD4vZGlzdC88YnVpbGRGaWx0ZXI+L2Jyb3dzZXJgIGZvciBBbmd1bGFyLlxuICAgKi9cbiAgcmVhZG9ubHkgYXJ0aWZhY3RCYXNlRGlyZWN0b3J5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPdmVycmlkZSB0aGUgQW1wbGlmeSBidWlsZCBjYWNoZSBwYXRocy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBgbm9kZV9tb2R1bGVzLyoqYCBwbHVzIHRoZSBmcmFtZXdvcmsgYnVpbGQgY2FjaGVcbiAgICogKGA8YXBwUm9vdD4vLm5leHQvY2FjaGUvKipgIG9yIGA8YXBwUm9vdD4vLmFuZ3VsYXIvY2FjaGUvKipgKS5cbiAgICovXG4gIHJlYWRvbmx5IGNhY2hlUGF0aHM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBQTlBNIHdvcmtzcGFjZSB0dW5pbmcgZm9yIHRoZSBnZW5lcmF0ZWQgYHBucG0td29ya3NwYWNlLnlhbWxgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1vbm9yZXBvV29ya3NwYWNlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgd29ya3NwYWNlIHBhY2thZ2UgZ2xvYnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IFsncGFja2FnZXMvKiddXG4gICAqL1xuICByZWFkb25seSBwYWNrYWdlcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBWZXJzaW9uIG92ZXJyaWRlcyBmb3JjZWQgYWNyb3NzIHRoZSB3aG9sZSB3b3Jrc3BhY2VcbiAgICogKHRoZSBgb3ZlcnJpZGVzOmAgZmllbGQpLiBPbWl0dGVkIGZyb20gdGhlIGZpbGUgd2hlbiBlbXB0eS5cbiAgICpcbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIHJlYWRvbmx5IG92ZXJyaWRlcz86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBEZXBlbmRlbmNpZXMgYWxsb3dlZCB0byBydW4gaW5zdGFsbC9idWlsZCBzY3JpcHRzLiBwbnBtID49IDEwIGJsb2NrcyB0aGVzZVxuICAgKiBieSBkZWZhdWx0LiBUaGUgbGlzdCBwb3B1bGF0ZXMgYm90aCBgYWxsb3dCdWlsZHNgIGFuZFxuICAgKiBgb25seUJ1aWx0RGVwZW5kZW5jaWVzYCBzbyBwbnBtIGRvZXMgbm90IHRyZWF0IGBub2RlX21vZHVsZXNgIGFzIHN0YWxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBbJ0Bhd3MtYW1wbGlmeS9jbGknLCAnZXNidWlsZCcsICdzaGFycCcsICd1bnJzLXJlc29sdmVyJ11cbiAgICovXG4gIHJlYWRvbmx5IGFsbG93ZWRCdWlsZHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogTWluaW11bSBhZ2UgaW4gbWludXRlcyBhIHB1Ymxpc2hlZCB2ZXJzaW9uIG11c3QgaGF2ZSBiZWZvcmUgaXQgbWF5IGJlXG4gICAqIGluc3RhbGxlZCAoYG1pbmltdW1SZWxlYXNlQWdlYCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IDI4ODAgLy8gMiBkYXlzXG4gICAqL1xuICByZWFkb25seSBtaW5pbXVtUmVsZWFzZUFnZT86IG51bWJlcjtcblxuICAvKipcbiAgICogUGFja2FnZXMgZXhlbXB0IGZyb20gYG1pbmltdW1SZWxlYXNlQWdlYCBzbyBvdXIgb3duIHRvb2xpbmcgY2FuIHVwZGF0ZVxuICAgKiB3aXRob3V0IHRoZSBjb29sZG93bi5cbiAgICpcbiAgICogQGRlZmF1bHQgWydwcm9qZW4tcGlwZWxpbmVzJywgJ2Nkay1zZXJ2ZXJsZXNzJywgJ0B0YWltb3MvcHJvamVuJ11cbiAgICovXG4gIHJlYWRvbmx5IG1pbmltdW1SZWxlYXNlQWdlRXhjbHVkZT86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIE9uZSBhdXRob3ItdG8tYXBwcm92ZXJzIHJvdXRpbmcgcnVsZSBmb3IgdGhlIFBSIGFwcHJvdmVyIGFzc2lnbm1lbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9ub3JlcG9BcHByb3Zlck1hcHBpbmcge1xuICAvKipcbiAgICogVGhlIEdpdEh1YiB1c2VybmFtZSBvcGVuaW5nIHRoZSBQUi5cbiAgICovXG4gIHJlYWRvbmx5IGF1dGhvcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgR2l0SHViIHVzZXJuYW1lcyBhc3NpZ25lZCB0byByZXZpZXcgd2hlbiBgYXV0aG9yYCBvcGVucyBhIFBSLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwcm92ZXJzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNb25vcmVwb1Byb2plY3RPcHRpb25zIGV4dGVuZHMgdHlwZXNjcmlwdC5UeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHBucG0gdmVyc2lvbiBwaW5uZWQgZm9yIHRoZSB3b3Jrc3BhY2UgYW5kIENJLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnMTAuMzMuMCdcbiAgICovXG4gIHJlYWRvbmx5IHBucG1Xb3Jrc3BhY2VWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgTm9kZS5qcyB2ZXJzaW9uIHVzZWQgaW4gdGhlIGdlbmVyYXRlZCBidWlsZCB3b3JrZmxvdy5cbiAgICpcbiAgICogQGRlZmF1bHQgJzIyJ1xuICAgKi9cbiAgcmVhZG9ubHkgbm9kZVZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBOUE0gd29ya3NwYWNlIHR1bmluZyBmb3IgdGhlIGdlbmVyYXRlZCBgcG5wbS13b3Jrc3BhY2UueWFtbGAuXG4gICAqL1xuICByZWFkb25seSB3b3Jrc3BhY2VPcHRpb25zPzogTW9ub3JlcG9Xb3Jrc3BhY2VPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGFkZCBgY2RrLXNlcnZlcmxlc3NgIGFzIGEgd29ya3NwYWNlIGRldiBkZXBlbmRlbmN5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgY2RrU2VydmVybGVzcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYXNzaWduIFBSIGFwcHJvdmVycyB2aWEgYEdpdEh1YkFzc2lnbkFwcHJvdmVyYC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgYXNzaWduQXBwcm92ZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBdXRob3ItdG8tYXBwcm92ZXJzIHJvdXRpbmcgZm9yIHRoZSBQUiBhcHByb3ZlciBhc3NpZ25tZW50LlxuICAgKiBPbmx5IHVzZWQgd2hlbiBgYXNzaWduQXBwcm92ZXJgIGlzIGVuYWJsZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gaG9lZ2VydG4gYW5kIGhvZWdlcm1hIHJldmlldyBlYWNoIG90aGVyXG4gICAqL1xuICByZWFkb25seSBhcHByb3Zlck1hcHBpbmc/OiBNb25vcmVwb0FwcHJvdmVyTWFwcGluZ1tdO1xuXG4gIC8qKlxuICAgKiBBcHByb3ZlcnMgYXNzaWduZWQgd2hlbiBubyBhdXRob3Itc3BlY2lmaWMgbWFwcGluZyBtYXRjaGVzLlxuICAgKiBPbmx5IHVzZWQgd2hlbiBgYXNzaWduQXBwcm92ZXJgIGlzIGVuYWJsZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IFsnaG9lZ2VydG4nLCAnaG9lZ2VybWEnXVxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdEFwcHJvdmVycz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSB1bmlmaWVkIGJ1aWxkIHdvcmtmbG93IGFsc28gcnVucyBgcG5wbSAtciBydW4gdGVzdGAuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHJ1blRlc3RzSW5CdWlsZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFXUyBBbXBsaWZ5IEhvc3RpbmcgYXBwbGljYXRpb25zLiBXaGVuIHNldCwgYW4gYGFtcGxpZnkueW1sYCBpcyBnZW5lcmF0ZWRcbiAgICogd2l0aCBvbmUgZW50cnkgcGVyIGFwcC4gV2hlbiBvbWl0dGVkLCBubyBgYW1wbGlmeS55bWxgIGlzIGNyZWF0ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICByZWFkb25seSBhbXBsaWZ5QXBwcz86IE1vbm9yZXBvQW1wbGlmeUFwcFtdO1xufVxuXG4vKipcbiAqIFByaXZhdGUgUE5QTS13b3Jrc3BhY2UgbW9ub3JlcG8gcm9vdCwgZm9sbG93aW5nIFRhaW1vcyBBRFItMDAwMi5cbiAqXG4gKiBUaGUgcm9vdCBvbmx5IG9yY2hlc3RyYXRlcyB0aGUgd29ya3NwYWNlIOKAlCBidWlsZGluZywgdGVzdGluZyBhbmQgbGludGluZyBhcmVcbiAqIGRlbGVnYXRlZCB0byB0aGUgd29ya3NwYWNlIHBhY2thZ2VzIHZpYSBgcG5wbSAtcmAuIFRoaXMgcHJvamVjdCBnZW5lcmF0ZXMgdGhlXG4gKiBgcG5wbS13b3Jrc3BhY2UueWFtbGAsIHRoZSByb290IGNvbnZlbmllbmNlIHNjcmlwdHMsIGEgdW5pZmllZCBQUiBidWlsZFxuICogd29ya2Zsb3cgYW5kIChvcHRpb25hbGx5KSBhbiBBbXBsaWZ5IEhvc3RpbmcgYnVpbGQgc3BlYy4gVGhlIHByb2plbi1tYW5hZ2VkXG4gKiBzdWItcHJvamVjdHMgKGFwaSwgYmFja2VuZCwgaW5mcmEpIGFyZSBhZGRlZCB3aXRoIHRoZSBgcGFyZW50YC9gb3V0ZGlyYFxuICogcGF0dGVybiBpbiB0aGUgY29uc3VtaW5nIGAucHJvamVucmMudHNgOyBwbGFpbiB3b3Jrc3BhY2UgcGFja2FnZXMgKGUuZy5cbiAqIE5leHQuanMgYXBwcykgYXJlIHBpY2tlZCB1cCBieSB0aGUgYHBhY2thZ2VzLypgIGdsb2IuXG4gKlxuICogQHBqaWQgdGFpbW9zLW1vbm9yZXBvXG4gKi9cbmV4cG9ydCBjbGFzcyBNb25vcmVwb1Byb2plY3QgZXh0ZW5kcyB0eXBlc2NyaXB0LlR5cGVTY3JpcHRQcm9qZWN0IHtcblxuICAvKiogVGhlIGdlbmVyYXRlZCBgcG5wbS13b3Jrc3BhY2UueWFtbGAuICovXG4gIHB1YmxpYyByZWFkb25seSB3b3Jrc3BhY2VGaWxlOiBZYW1sRmlsZTtcblxuICAvKiogVGhlIHVuaWZpZWQgUFIgYnVpbGQgd29ya2Zsb3cuICovXG4gIHB1YmxpYyByZWFkb25seSBwckJ1aWxkV29ya2Zsb3c6IGdpdGh1Yi5HaXRodWJXb3JrZmxvdztcblxuICAvKiogVGhlIGdlbmVyYXRlZCBgYW1wbGlmeS55bWxgLCBpZiBhbnkgQW1wbGlmeSBhcHBzIHdlcmUgY29uZmlndXJlZC4gKi9cbiAgcHVibGljIHJlYWRvbmx5IGFtcGxpZnlGaWxlPzogWWFtbEZpbGU7XG5cbiAgLyoqIFRoZSBQUiBhcHByb3ZlciBhc3NpZ25tZW50LCBpZiBlbmFibGVkLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXNzaWduQXBwcm92ZXI/OiBHaXRIdWJBc3NpZ25BcHByb3ZlcjtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBNb25vcmVwb1Byb2plY3RPcHRpb25zKSB7XG4gICAgY29uc3QgcG5wbVZlcnNpb24gPSBvcHRpb25zLnBucG1Xb3Jrc3BhY2VWZXJzaW9uID8/ICcxMC4zMy4wJztcblxuICAgIHN1cGVyKHtcbiAgICAgIGxpY2Vuc2VkOiBmYWxzZSxcbiAgICAgIHJlbGVhc2U6IGZhbHNlLFxuICAgICAgZGVwc1VwZ3JhZGU6IGZhbHNlLFxuICAgICAgLy8gVGhlIHJvb3Qgb25seSBvcmNoZXN0cmF0ZXMgdGhlIHdvcmtzcGFjZSDigJQgbm8gYXBwIGNvZGUgbGl2ZXMgaGVyZS5cbiAgICAgIGplc3Q6IGZhbHNlLFxuICAgICAgZXNsaW50OiBmYWxzZSxcbiAgICAgIHNhbXBsZUNvZGU6IGZhbHNlLFxuICAgICAgLy8gQ0kgaXMgdGhlIHNpbmdsZSBoYW5kLXJvbGxlZCB3b3JrZmxvdyBiZWxvdyB0aGF0IGRlbGVnYXRlcyB0byBwYWNrYWdlcy5cbiAgICAgIGJ1aWxkV29ya2Zsb3c6IGZhbHNlLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIC8vIEZvcmNlZCDigJQgZGVmaW5pbmcgd2hhdCBhIFRhaW1vcyBtb25vcmVwbyByb290IGlzLlxuICAgICAgcGFja2FnZU1hbmFnZXI6IGphdmFzY3JpcHQuTm9kZVBhY2thZ2VNYW5hZ2VyLlBOUE0sXG4gICAgICBwbnBtVmVyc2lvbixcbiAgICAgIHByb2plbnJjVHM6IHRydWUsXG4gICAgICBnaXRodWI6IHRydWUsXG4gICAgICBnaXRodWJPcHRpb25zOiB7XG4gICAgICAgIHByb2plbkNyZWRlbnRpYWxzOiBnaXRodWIuR2l0aHViQ3JlZGVudGlhbHMuZnJvbUFwcCgpLFxuICAgICAgICBtZXJnaWZ5OiBmYWxzZSxcbiAgICAgICAgbWVyZ2VRdWV1ZTogdHJ1ZSxcbiAgICAgICAgLi4ub3B0aW9ucy5naXRodWJPcHRpb25zLFxuICAgICAgICBtZXJnZVF1ZXVlT3B0aW9uczoge1xuICAgICAgICAgIGF1dG9RdWV1ZTogdHJ1ZSxcbiAgICAgICAgICAuLi5vcHRpb25zLmdpdGh1Yk9wdGlvbnM/Lm1lcmdlUXVldWVPcHRpb25zLFxuICAgICAgICB9LFxuICAgICAgICBwdWxsUmVxdWVzdExpbnRPcHRpb25zOiB7XG4gICAgICAgICAgLi4ub3B0aW9ucy5naXRodWJPcHRpb25zPy5wdWxsUmVxdWVzdExpbnRPcHRpb25zLFxuICAgICAgICAgIHNlbWFudGljVGl0bGVPcHRpb25zOiB7XG4gICAgICAgICAgICAuLi5vcHRpb25zLmdpdGh1Yk9wdGlvbnM/LnB1bGxSZXF1ZXN0TGludE9wdGlvbnM/LnNlbWFudGljVGl0bGVPcHRpb25zLFxuICAgICAgICAgICAgLy8gRml4ZWQgYWxsb3dlZCBQUiB0aXRsZSB0eXBlcyBmb3IgYSBUYWltb3MgbW9ub3JlcG8uXG4gICAgICAgICAgICB0eXBlczogWydmZWF0JywgJ2ZpeCcsICdjaG9yZScsICdkb2NzJywgJ3NwZWMnLCAnY2knXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGRldkRlcHM6IFtcbiAgICAgICAgJ0B0YWltb3MvcHJvamVuJyxcbiAgICAgICAgJ3Byb2plbi1waXBlbGluZXMnLFxuICAgICAgICAuLi4ob3B0aW9ucy5jZGtTZXJ2ZXJsZXNzID8/IGZhbHNlID8gWydjZGstc2VydmVybGVzcyddIDogW10pLFxuICAgICAgICAuLi5vcHRpb25zLmRldkRlcHMgPz8gW10sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gUHJpdmF0ZSB3b3Jrc3BhY2Ugcm9vdCDigJQgbmV2ZXIgcHVibGlzaGVkLCByZXNvbHZlcyBwYWNrYWdlcyBsb2NhbGx5LlxuICAgIHRoaXMucGFja2FnZS5hZGRGaWVsZCgncHJpdmF0ZScsIHRydWUpO1xuXG4gICAgLy8gUFIgYXBwcm92ZXIgcm91dGluZy5cbiAgICBpZiAob3B0aW9ucy5hc3NpZ25BcHByb3ZlciA/PyB0cnVlKSB7XG4gICAgICB0aGlzLmFzc2lnbkFwcHJvdmVyID0gbmV3IEdpdEh1YkFzc2lnbkFwcHJvdmVyKHRoaXMsIHtcbiAgICAgICAgYXBwcm92ZXJNYXBwaW5nOiBvcHRpb25zLmFwcHJvdmVyTWFwcGluZyA/PyBbXG4gICAgICAgICAgeyBhdXRob3I6ICdob2VnZXJ0bicsIGFwcHJvdmVyczogWydob2VnZXJtYSddIH0sXG4gICAgICAgICAgeyBhdXRob3I6ICdob2VnZXJtYScsIGFwcHJvdmVyczogWydob2VnZXJ0biddIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGRlZmF1bHRBcHByb3ZlcnM6IG9wdGlvbnMuZGVmYXVsdEFwcHJvdmVycyA/PyBbJ2hvZWdlcnRuJywgJ2hvZWdlcm1hJ10sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBUaGUgcHJvamVucmMgaXMgc3BsaXQgaW50byBtb2R1bGVzIHVuZGVyIC5wcm9qZW4vIOKAlCBtYWtlIHRoZW0gcGFydCBvZiB0aGVcbiAgICAvLyBkZXYgdHNjb25maWcgc28gdGhlIElERSBhbmQgdHMtbm9kZSB0eXBlLWNoZWNrIHRoZW0uXG4gICAgdGhpcy50c2NvbmZpZ0Rldj8uYWRkSW5jbHVkZSgnLnByb2plbi8qLnRzJyk7XG5cbiAgICAvLyBwbnBtIHdvcmtzcGFjZSBkZWZpbml0aW9uLlxuICAgIGNvbnN0IHdzID0gb3B0aW9ucy53b3Jrc3BhY2VPcHRpb25zID8/IHt9O1xuICAgIGNvbnN0IGFsbG93ZWRCdWlsZHMgPSB3cy5hbGxvd2VkQnVpbGRzID8/IFsnQGF3cy1hbXBsaWZ5L2NsaScsICdlc2J1aWxkJywgJ3NoYXJwJywgJ3VucnMtcmVzb2x2ZXInXTtcbiAgICBjb25zdCBhbGxvd0J1aWxkczogeyBbbmFtZTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge307XG4gICAgZm9yIChjb25zdCBkZXAgb2YgYWxsb3dlZEJ1aWxkcykge1xuICAgICAgYWxsb3dCdWlsZHNbZGVwXSA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMud29ya3NwYWNlRmlsZSA9IG5ldyBZYW1sRmlsZSh0aGlzLCAncG5wbS13b3Jrc3BhY2UueWFtbCcsIHtcbiAgICAgIG9iajoge1xuICAgICAgICBwYWNrYWdlczogd3MucGFja2FnZXMgPz8gWydwYWNrYWdlcy8qJ10sXG4gICAgICAgIC8vIEFsbG93IG5hdGl2ZS9idWlsZC1zdGVwIHBhY2thZ2VzIHRvIHJ1biBpbnN0YWxsIHNjcmlwdHMgKHBucG0gPj0gMTBcbiAgICAgICAgLy8gYmxvY2tzIHRoZXNlIGJ5IGRlZmF1bHQpLCBzbyBwbnBtIGRvZXMgbm90IHRyZWF0IG5vZGVfbW9kdWxlcyBhcyBzdGFsZS5cbiAgICAgICAgYWxsb3dCdWlsZHMsXG4gICAgICAgIG9ubHlCdWlsdERlcGVuZGVuY2llczogYWxsb3dlZEJ1aWxkcyxcbiAgICAgICAgLi4uKHdzLm92ZXJyaWRlcyAmJiBPYmplY3Qua2V5cyh3cy5vdmVycmlkZXMpLmxlbmd0aCA+IDAgPyB7IG92ZXJyaWRlczogd3Mub3ZlcnJpZGVzIH0gOiB7fSksXG4gICAgICAgIG1pbmltdW1SZWxlYXNlQWdlOiB3cy5taW5pbXVtUmVsZWFzZUFnZSA/PyAyODgwLCAvLyAyIGRheXMgaW4gbWludXRlc1xuICAgICAgICBtaW5pbXVtUmVsZWFzZUFnZUV4Y2x1ZGU6IHdzLm1pbmltdW1SZWxlYXNlQWdlRXhjbHVkZSA/PyBbXG4gICAgICAgICAgJ3Byb2plbi1waXBlbGluZXMnLFxuICAgICAgICAgICdjZGstc2VydmVybGVzcycsXG4gICAgICAgICAgJ0B0YWltb3MvcHJvamVuJyxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBDb252ZW5pZW5jZSByb290IHNjcmlwdHMgZGVsZWdhdGUgdG8gdGhlIHdvcmtzcGFjZS5cbiAgICBjb25zdCByb290UGtnID0gdGhpcy50cnlGaW5kT2JqZWN0RmlsZSgncGFja2FnZS5qc29uJykhO1xuICAgIHJvb3RQa2cuYWRkT3ZlcnJpZGUoJ3NjcmlwdHMuYnVpbGQnLCAncG5wbSAtciBydW4gYnVpbGQnKTtcbiAgICByb290UGtnLmFkZE92ZXJyaWRlKCdzY3JpcHRzLnRlc3QnLCAncG5wbSAtciBydW4gdGVzdCcpO1xuICAgIHJvb3RQa2cuYWRkT3ZlcnJpZGUoJ3NjcmlwdHMubGludCcsICdwbnBtIC1yIHJ1biBlc2xpbnQnKTtcblxuICAgIC8vIFVuaWZpZWQgUFIgYnVpbGQgd29ya2Zsb3cg4oCUIGJ1aWxkcyAoYW5kIG9wdGlvbmFsbHkgdGVzdHMpIGV2ZXJ5IHdvcmtzcGFjZVxuICAgIC8vIHBhY2thZ2UgaW4gZGVwZW5kZW5jeSBvcmRlci5cbiAgICBjb25zdCBub2RlVmVyc2lvbiA9IG9wdGlvbnMubm9kZVZlcnNpb24gPz8gJzIyJztcbiAgICBjb25zdCBidWlsZFN0ZXBzOiBnaXRodWIud29ya2Zsb3dzLkpvYlN0ZXBbXSA9IFtcbiAgICAgIHsgbmFtZTogJ0NoZWNrb3V0JywgdXNlczogJ2FjdGlvbnMvY2hlY2tvdXRAdjQnIH0sXG4gICAgICB7IG5hbWU6ICdTZXR1cCBwbnBtJywgdXNlczogJ3BucG0vYWN0aW9uLXNldHVwQHY0Jywgd2l0aDogeyB2ZXJzaW9uOiBwbnBtVmVyc2lvbiB9IH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdTZXR1cCBOb2RlLmpzJyxcbiAgICAgICAgdXNlczogJ2FjdGlvbnMvc2V0dXAtbm9kZUB2NCcsXG4gICAgICAgIHdpdGg6IHsgJ25vZGUtdmVyc2lvbic6IG5vZGVWZXJzaW9uLCAnY2FjaGUnOiAncG5wbScgfSxcbiAgICAgIH0sXG4gICAgICB7IG5hbWU6ICdJbnN0YWxsJywgcnVuOiAncG5wbSBpbnN0YWxsIC0tZnJvemVuLWxvY2tmaWxlJyB9LFxuICAgICAgeyBuYW1lOiAnQnVpbGQnLCBydW46ICdwbnBtIC1yIHJ1biBidWlsZCcgfSxcbiAgICBdO1xuICAgIGlmIChvcHRpb25zLnJ1blRlc3RzSW5CdWlsZCA/PyB0cnVlKSB7XG4gICAgICBidWlsZFN0ZXBzLnB1c2goeyBuYW1lOiAnVGVzdCcsIHJ1bjogJ3BucG0gLXIgcnVuIHRlc3QnIH0pO1xuICAgIH1cbiAgICAvLyBQYXRoIGZpbHRlcjogb25seSB0cmlnZ2VyIGJ1aWxkcyB3aGVuIHdvcmtzcGFjZSBwYWNrYWdlIGZpbGVzIGNoYW5nZS5cbiAgICAvLyBDaGFuZ2VzIHRvIHNwZWNzIG9yIGRvY3MgYWxvbmUgc2hvdWxkIG5vdCB0cmlnZ2VyIGEgbmV3IGJ1aWxkLlxuICAgIGNvbnN0IHdvcmtzcGFjZVBhY2thZ2VzID0gd3MucGFja2FnZXMgPz8gWydwYWNrYWdlcy8qJ107XG4gICAgY29uc3QgYnVpbGRQYXRocyA9IHdvcmtzcGFjZVBhY2thZ2VzLm1hcCgocGtnKSA9PiBgJHtwa2d9LyoqYCk7XG5cbiAgICB0aGlzLnByQnVpbGRXb3JrZmxvdyA9IG5ldyBnaXRodWIuR2l0aHViV29ya2Zsb3codGhpcy5naXRodWIhLCAnYnVpbGQnKTtcbiAgICB0aGlzLnByQnVpbGRXb3JrZmxvdy5vbih7XG4gICAgICBwdWxsUmVxdWVzdDogeyBwYXRoczogYnVpbGRQYXRocyB9LFxuICAgICAgcHVzaDogeyBicmFuY2hlczogWydtYWluJ10sIHBhdGhzOiBidWlsZFBhdGhzIH0sXG4gICAgICB3b3JrZmxvd0Rpc3BhdGNoOiB7fSxcbiAgICB9KTtcbiAgICB0aGlzLnByQnVpbGRXb3JrZmxvdy5hZGRKb2IoJ2J1aWxkJywge1xuICAgICAgcnVuc09uOiBbJ3VidW50dS1sYXRlc3QnXSxcbiAgICAgIHBlcm1pc3Npb25zOiB7IGNvbnRlbnRzOiBnaXRodWIud29ya2Zsb3dzLkpvYlBlcm1pc3Npb24uUkVBRCB9LFxuICAgICAgc3RlcHM6IGJ1aWxkU3RlcHMsXG4gICAgfSk7XG5cbiAgICAvLyBBV1MgQW1wbGlmeSBIb3N0aW5nIGJ1aWxkIHNwZWMuIFBOUE0gd29ya3NwYWNlcyBhcmUgbm90IGF1dG8tZGV0ZWN0ZWQgYnlcbiAgICAvLyBBbXBsaWZ5LCBzbyBlYWNoIGFwcCBpbnN0YWxscyBhdCB0aGUgcmVwbyByb290LCBwcmUtYnVpbGRzIGl0cyBzaGFyZWRcbiAgICAvLyBwYWNrYWdlcywgdGhlbiBidWlsZHMgZnJvbSBpdHMgYXBwUm9vdCAoc2VlIEFEUi0wMDAyKS5cbiAgICBpZiAob3B0aW9ucy5hbXBsaWZ5QXBwcyAmJiBvcHRpb25zLmFtcGxpZnlBcHBzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuYW1wbGlmeUZpbGUgPSBuZXcgWWFtbEZpbGUodGhpcywgJ2FtcGxpZnkueW1sJywge1xuICAgICAgICBvYmo6IHtcbiAgICAgICAgICB2ZXJzaW9uOiAxLFxuICAgICAgICAgIGFwcGxpY2F0aW9uczogb3B0aW9ucy5hbXBsaWZ5QXBwcy5tYXAoKGFwcCkgPT4gdGhpcy5yZW5kZXJBbXBsaWZ5QXBwKGFwcCkpLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJBbXBsaWZ5QXBwKGFwcDogTW9ub3JlcG9BbXBsaWZ5QXBwKSB7XG4gICAgY29uc3QgYW5ndWxhciA9IGFwcC5mcmFtZXdvcmsgPT09IE1vbm9yZXBvQW1wbGlmeUZyYW1ld29yay5BTkdVTEFSO1xuICAgIGNvbnN0IHByZUJ1aWxkID0gW1xuICAgICAgJ2NvcmVwYWNrIGVuYWJsZScsXG4gICAgICAvLyBGb3JjZSBwbnBtJ3MgaG9pc3RlZCBsaW5rZXIgZm9yIHRoZSBBbXBsaWZ5IGJ1aWxkIG9ubHkg4oCUIEFtcGxpZnknc1xuICAgICAgLy8gbWFuYWdlZCBjb21wdXRlIHRyYWNlcyBydW50aW1lIGRlcHMgZnJvbSBhIGZsYXQgbm9kZV9tb2R1bGVzLlxuICAgICAgJ3BucG0gaW5zdGFsbCAtLWZyb3plbi1sb2NrZmlsZSAtLW5vZGUtbGlua2VyIGhvaXN0ZWQnLFxuICAgICAgLi4uKGFwcC5wcmVCdWlsZEZpbHRlcnMgPz8gW10pLm1hcCgoZikgPT4gYHBucG0gLS1maWx0ZXIgJHtmfSBydW4gYnVpbGRgKSxcbiAgICBdO1xuICAgIC8vIEJVSUxEX0VOViAoZGV2fHByb2QpIGlzIHByb3ZpZGVkIGFzIGFuIEFtcGxpZnkgZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gICAgY29uc3QgYnVpbGRDb21tYW5kID0gYXBwLmJ1aWxkQ29tbWFuZCA/PyAoYW5ndWxhclxuICAgICAgPyBgcG5wbSAtLWZpbHRlciAke2FwcC5idWlsZEZpbHRlcn0gcnVuIGJ1aWxkOlxcJHtCVUlMRF9FTlZ9YFxuICAgICAgOiBgcG5wbSAtLWZpbHRlciAke2FwcC5idWlsZEZpbHRlcn0gcnVuIGJ1aWxkYCk7XG4gICAgY29uc3QgYmFzZURpcmVjdG9yeSA9IGFwcC5hcnRpZmFjdEJhc2VEaXJlY3RvcnkgPz8gKGFuZ3VsYXJcbiAgICAgID8gYCR7YXBwLmFwcFJvb3R9L2Rpc3QvJHthcHAuYnVpbGRGaWx0ZXJ9L2Jyb3dzZXJgXG4gICAgICA6IGAke2FwcC5hcHBSb290fS8ubmV4dGApO1xuICAgIGNvbnN0IGNhY2hlUGF0aHMgPSBhcHAuY2FjaGVQYXRocyA/PyBbXG4gICAgICAnbm9kZV9tb2R1bGVzLyoqLyonLFxuICAgICAgYW5ndWxhciA/IGAke2FwcC5hcHBSb290fS8uYW5ndWxhci9jYWNoZS8qKi8qYCA6IGAke2FwcC5hcHBSb290fS8ubmV4dC9jYWNoZS8qKi8qYCxcbiAgICBdO1xuICAgIHJldHVybiB7XG4gICAgICBhcHBSb290OiBhcHAuYXBwUm9vdCxcbiAgICAgIGZyb250ZW5kOiB7XG4gICAgICAgIC8vIEluc3RhbGwvYnVpbGQgZnJvbSB0aGUgbW9ub3JlcG8gcm9vdCBzbyB0aGUgd29ya3NwYWNlIHJvb3RcbiAgICAgICAgLy8gcGFja2FnZS5qc29uIGFuZCBwbnBtLWxvY2sueWFtbCBhcmUgYXZhaWxhYmxlLlxuICAgICAgICBidWlsZFBhdGg6ICcvJyxcbiAgICAgICAgcGhhc2VzOiB7XG4gICAgICAgICAgcHJlQnVpbGQ6IHsgY29tbWFuZHM6IHByZUJ1aWxkIH0sXG4gICAgICAgICAgYnVpbGQ6IHsgY29tbWFuZHM6IFtidWlsZENvbW1hbmRdIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGFydGlmYWN0czogeyBiYXNlRGlyZWN0b3J5LCBmaWxlczogWycqKi8qJ10gfSxcbiAgICAgICAgY2FjaGU6IHsgcGF0aHM6IGNhY2hlUGF0aHMgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- var _a;
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
3
  exports.PrivateTaimosCdkApp = void 0;
5
4
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
@@ -11,6 +10,7 @@ const cdk_app_1 = require("./cdk-app");
11
10
  * @pjid taimos-cdk-app-private
12
11
  */
13
12
  class PrivateTaimosCdkApp extends cdk_app_1.TaimosCdkApp {
13
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@taimos/projen.PrivateTaimosCdkApp", version: "0.1.65" };
14
14
  constructor(options) {
15
15
  super({
16
16
  licensed: false,
@@ -22,6 +22,4 @@ class PrivateTaimosCdkApp extends cdk_app_1.TaimosCdkApp {
22
22
  }
23
23
  }
24
24
  exports.PrivateTaimosCdkApp = PrivateTaimosCdkApp;
25
- _a = JSII_RTTI_SYMBOL_1;
26
- PrivateTaimosCdkApp[_a] = { fqn: "@taimos/projen.PrivateTaimosCdkApp", version: "0.1.63" };
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmF0ZS1jZGstYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb2plY3RzL3ByaXZhdGUtY2RrLWFwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1DQUFvQztBQUNwQyx1Q0FBOEQ7QUFNOUQ7Ozs7R0FJRztBQUNILE1BQWEsbUJBQW9CLFNBQVEsc0JBQVk7SUFFbkQsWUFBWSxPQUFtQztRQUM3QyxLQUFLLENBQUM7WUFDSixRQUFRLEVBQUUsS0FBSztZQUNmLFNBQVMsRUFBRSxtQkFBVSxDQUFDLFNBQVMsQ0FBQyxVQUFVO1lBQzFDLEdBQUcsT0FBTztTQUNYLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDckMsQ0FBQzs7QUFYSCxrREFZQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGphdmFzY3JpcHQgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgVGFpbW9zQ2RrQXBwLCBUYWltb3NDZGtBcHBPcHRpb25zIH0gZnJvbSAnLi9jZGstYXBwJztcblxuZXhwb3J0IGludGVyZmFjZSBQcml2YXRlVGFpbW9zQ2RrQXBwT3B0aW9ucyBleHRlbmRzIFRhaW1vc0Nka0FwcE9wdGlvbnMge1xuICAvL1xufVxuXG4vKipcbiAqIFByaXZhdGUgQVdTIENESyBhcHAgaW4gVHlwZVNjcmlwdFxuICpcbiAqIEBwamlkIHRhaW1vcy1jZGstYXBwLXByaXZhdGVcbiAqL1xuZXhwb3J0IGNsYXNzIFByaXZhdGVUYWltb3NDZGtBcHAgZXh0ZW5kcyBUYWltb3NDZGtBcHAge1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFByaXZhdGVUYWltb3NDZGtBcHBPcHRpb25zKSB7XG4gICAgc3VwZXIoe1xuICAgICAgbGljZW5zZWQ6IGZhbHNlLFxuICAgICAgbnBtQWNjZXNzOiBqYXZhc2NyaXB0Lk5wbUFjY2Vzcy5SRVNUUklDVEVELFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkRGV2RGVwcygnQHRhaW1vcy9wcm9qZW4nKTtcbiAgICB0aGlzLmFkZERlcHMoJ0B0YWltb3MvY29uc3RydWN0cycpO1xuICB9XG59Il19
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmF0ZS1jZGstYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb2plY3RzL3ByaXZhdGUtY2RrLWFwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsbUNBQW9DO0FBQ3BDLHVDQUE4RDtBQU05RDs7OztHQUlHO0FBQ0gsTUFBYSxtQkFBb0IsU0FBUSxzQkFBWTs7SUFFbkQsWUFBWSxPQUFtQztRQUM3QyxLQUFLLENBQUM7WUFDSixRQUFRLEVBQUUsS0FBSztZQUNmLFNBQVMsRUFBRSxtQkFBVSxDQUFDLFNBQVMsQ0FBQyxVQUFVO1lBQzFDLEdBQUcsT0FBTztTQUNYLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDckMsQ0FBQzs7QUFYSCxrREFZQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGphdmFzY3JpcHQgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgVGFpbW9zQ2RrQXBwLCBUYWltb3NDZGtBcHBPcHRpb25zIH0gZnJvbSAnLi9jZGstYXBwJztcblxuZXhwb3J0IGludGVyZmFjZSBQcml2YXRlVGFpbW9zQ2RrQXBwT3B0aW9ucyBleHRlbmRzIFRhaW1vc0Nka0FwcE9wdGlvbnMge1xuICAvL1xufVxuXG4vKipcbiAqIFByaXZhdGUgQVdTIENESyBhcHAgaW4gVHlwZVNjcmlwdFxuICpcbiAqIEBwamlkIHRhaW1vcy1jZGstYXBwLXByaXZhdGVcbiAqL1xuZXhwb3J0IGNsYXNzIFByaXZhdGVUYWltb3NDZGtBcHAgZXh0ZW5kcyBUYWltb3NDZGtBcHAge1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFByaXZhdGVUYWltb3NDZGtBcHBPcHRpb25zKSB7XG4gICAgc3VwZXIoe1xuICAgICAgbGljZW5zZWQ6IGZhbHNlLFxuICAgICAgbnBtQWNjZXNzOiBqYXZhc2NyaXB0Lk5wbUFjY2Vzcy5SRVNUUklDVEVELFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkRGV2RGVwcygnQHRhaW1vcy9wcm9qZW4nKTtcbiAgICB0aGlzLmFkZERlcHMoJ0B0YWltb3MvY29uc3RydWN0cycpO1xuICB9XG59Il19
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- var _a;
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
3
  exports.TaimosPrivateTypescriptLibrary = void 0;
5
4
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
@@ -11,6 +10,7 @@ const ts_lib_1 = require("./ts-lib");
11
10
  * @pjid taimos-ts-lib-private
12
11
  */
13
12
  class TaimosPrivateTypescriptLibrary extends ts_lib_1.TaimosTypescriptLibrary {
13
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@taimos/projen.TaimosPrivateTypescriptLibrary", version: "0.1.65" };
14
14
  constructor(options) {
15
15
  super({
16
16
  licensed: false,
@@ -20,6 +20,4 @@ class TaimosPrivateTypescriptLibrary extends ts_lib_1.TaimosTypescriptLibrary {
20
20
  }
21
21
  }
22
22
  exports.TaimosPrivateTypescriptLibrary = TaimosPrivateTypescriptLibrary;
23
- _a = JSII_RTTI_SYMBOL_1;
24
- TaimosPrivateTypescriptLibrary[_a] = { fqn: "@taimos/projen.TaimosPrivateTypescriptLibrary", version: "0.1.63" };
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmF0ZS10cy1saWIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvamVjdHMvcHJpdmF0ZS10cy1saWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBb0M7QUFDcEMscUNBQW1GO0FBTW5GOzs7O0dBSUc7QUFDSCxNQUFhLDhCQUErQixTQUFRLGdDQUF1QjtJQUV6RSxZQUFZLE9BQThDO1FBQ3hELEtBQUssQ0FBQztZQUNKLFFBQVEsRUFBRSxLQUFLO1lBQ2YsU0FBUyxFQUFFLG1CQUFVLENBQUMsU0FBUyxDQUFDLFVBQVU7WUFDMUMsR0FBRyxPQUFPO1NBQ1gsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUFSSCx3RUFVQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGphdmFzY3JpcHQgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgVGFpbW9zVHlwZXNjcmlwdExpYnJhcnksIFRhaW1vc1R5cGVzY3JpcHRMaWJyYXJ5T3B0aW9ucyB9IGZyb20gJy4vdHMtbGliJztcblxuZXhwb3J0IGludGVyZmFjZSBUYWltb3NQcml2YXRlVHlwZXNjcmlwdExpYnJhcnlPcHRpb25zIGV4dGVuZHMgVGFpbW9zVHlwZXNjcmlwdExpYnJhcnlPcHRpb25zIHtcbiAgLy9cbn1cblxuLyoqXG4gKiBQcml2YXRlIFR5cGVTY3JpcHQgbGlicmFyeVxuICpcbiAqIEBwamlkIHRhaW1vcy10cy1saWItcHJpdmF0ZVxuICovXG5leHBvcnQgY2xhc3MgVGFpbW9zUHJpdmF0ZVR5cGVzY3JpcHRMaWJyYXJ5IGV4dGVuZHMgVGFpbW9zVHlwZXNjcmlwdExpYnJhcnkge1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFRhaW1vc1ByaXZhdGVUeXBlc2NyaXB0TGlicmFyeU9wdGlvbnMpIHtcbiAgICBzdXBlcih7XG4gICAgICBsaWNlbnNlZDogZmFsc2UsXG4gICAgICBucG1BY2Nlc3M6IGphdmFzY3JpcHQuTnBtQWNjZXNzLlJFU1RSSUNURUQsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbn1cbiJdfQ==
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmF0ZS10cy1saWIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvamVjdHMvcHJpdmF0ZS10cy1saWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLG1DQUFvQztBQUNwQyxxQ0FBbUY7QUFNbkY7Ozs7R0FJRztBQUNILE1BQWEsOEJBQStCLFNBQVEsZ0NBQXVCOztJQUV6RSxZQUFZLE9BQThDO1FBQ3hELEtBQUssQ0FBQztZQUNKLFFBQVEsRUFBRSxLQUFLO1lBQ2YsU0FBUyxFQUFFLG1CQUFVLENBQUMsU0FBUyxDQUFDLFVBQVU7WUFDMUMsR0FBRyxPQUFPO1NBQ1gsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUFSSCx3RUFVQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGphdmFzY3JpcHQgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgVGFpbW9zVHlwZXNjcmlwdExpYnJhcnksIFRhaW1vc1R5cGVzY3JpcHRMaWJyYXJ5T3B0aW9ucyB9IGZyb20gJy4vdHMtbGliJztcblxuZXhwb3J0IGludGVyZmFjZSBUYWltb3NQcml2YXRlVHlwZXNjcmlwdExpYnJhcnlPcHRpb25zIGV4dGVuZHMgVGFpbW9zVHlwZXNjcmlwdExpYnJhcnlPcHRpb25zIHtcbiAgLy9cbn1cblxuLyoqXG4gKiBQcml2YXRlIFR5cGVTY3JpcHQgbGlicmFyeVxuICpcbiAqIEBwamlkIHRhaW1vcy10cy1saWItcHJpdmF0ZVxuICovXG5leHBvcnQgY2xhc3MgVGFpbW9zUHJpdmF0ZVR5cGVzY3JpcHRMaWJyYXJ5IGV4dGVuZHMgVGFpbW9zVHlwZXNjcmlwdExpYnJhcnkge1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFRhaW1vc1ByaXZhdGVUeXBlc2NyaXB0TGlicmFyeU9wdGlvbnMpIHtcbiAgICBzdXBlcih7XG4gICAgICBsaWNlbnNlZDogZmFsc2UsXG4gICAgICBucG1BY2Nlc3M6IGphdmFzY3JpcHQuTnBtQWNjZXNzLlJFU1RSSUNURUQsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbn1cbiJdfQ==