@fjall/components-infrastructure 0.88.1 → 0.88.4

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.
Files changed (146) hide show
  1. package/dist/lib/app.d.ts +34 -11
  2. package/dist/lib/app.js +83 -39
  3. package/dist/lib/aspects/index.d.ts +1 -0
  4. package/dist/lib/aspects/index.js +6 -0
  5. package/dist/lib/config/aws/accountAuditRole.d.ts +20 -0
  6. package/dist/lib/config/aws/accountAuditRole.js +38 -0
  7. package/dist/lib/config/aws/accountMonitoringRole.d.ts +22 -0
  8. package/dist/lib/config/aws/accountMonitoringRole.js +133 -0
  9. package/dist/lib/config/aws/cloudTrail.d.ts +0 -3
  10. package/dist/lib/config/aws/cloudTrail.js +2 -2
  11. package/dist/lib/config/aws/disasterRecovery.js +26 -14
  12. package/dist/lib/config/aws/ecrDefaultImage.js +4 -3
  13. package/dist/lib/config/aws/identityCenter.d.ts +4 -4
  14. package/dist/lib/config/aws/identityCenter.js +17 -62
  15. package/dist/lib/config/aws/identityCenterGroupMembership.js +27 -37
  16. package/dist/lib/config/aws/index.d.ts +4 -7
  17. package/dist/lib/config/aws/index.js +5 -8
  18. package/dist/lib/config/aws/oidcConnector.d.ts +8 -0
  19. package/dist/lib/config/aws/oidcConnector.js +46 -0
  20. package/dist/lib/config/aws/platform.d.ts +2 -0
  21. package/dist/lib/config/aws/platform.js +6 -0
  22. package/dist/lib/config/index.d.ts +2 -0
  23. package/dist/lib/config/index.js +21 -0
  24. package/dist/lib/layers/layers/secrets-resolver/bin/resolve-secrets +30 -0
  25. package/dist/lib/layers/layers/secrets-resolver/bin/resolve-secrets.mjs +212 -0
  26. package/dist/lib/layers/secrets-resolver/bin/resolve-secrets +30 -0
  27. package/dist/lib/layers/secrets-resolver/bin/resolve-secrets.mjs +212 -0
  28. package/dist/lib/patterns/aws/account.js +45 -19
  29. package/dist/lib/patterns/aws/cdn.d.ts +19 -40
  30. package/dist/lib/patterns/aws/cdn.js +21 -17
  31. package/dist/lib/patterns/aws/compute.d.ts +6 -7
  32. package/dist/lib/patterns/aws/compute.js +7 -9
  33. package/dist/lib/patterns/aws/database.d.ts +9 -89
  34. package/dist/lib/patterns/aws/database.js +17 -40
  35. package/dist/lib/patterns/aws/index.d.ts +1 -1
  36. package/dist/lib/patterns/aws/index.js +2 -2
  37. package/dist/lib/patterns/aws/interfaces/cdn.d.ts +26 -0
  38. package/dist/lib/patterns/aws/interfaces/cdn.js +14 -0
  39. package/dist/lib/patterns/aws/interfaces/connector.d.ts +4 -181
  40. package/dist/lib/patterns/aws/interfaces/connector.js +16 -113
  41. package/dist/lib/patterns/aws/interfaces/index.d.ts +1 -0
  42. package/dist/lib/patterns/aws/interfaces/index.js +5 -2
  43. package/dist/lib/patterns/aws/interfaces/pattern.d.ts +6 -6
  44. package/dist/lib/patterns/aws/interfaces/pattern.js +1 -1
  45. package/dist/lib/patterns/aws/network.js +6 -9
  46. package/dist/lib/patterns/aws/organisation.d.ts +6 -17
  47. package/dist/lib/patterns/aws/organisation.js +22 -67
  48. package/dist/lib/patterns/aws/payload.js +11 -12
  49. package/dist/lib/patterns/aws/storage.d.ts +3 -2
  50. package/dist/lib/patterns/aws/storage.js +1 -1
  51. package/dist/lib/resources/aws/audit/auditRole.js +4 -4
  52. package/dist/lib/resources/aws/audit/index.d.ts +1 -0
  53. package/dist/lib/resources/aws/audit/index.js +6 -0
  54. package/dist/lib/resources/aws/backup/backupPlan.js +3 -2
  55. package/dist/lib/resources/aws/backup/backupVault.js +5 -3
  56. package/dist/lib/resources/aws/base/awsStack.d.ts +4 -2
  57. package/dist/lib/resources/aws/base/awsStack.js +8 -2
  58. package/dist/lib/resources/aws/cdn/cloudFront.d.ts +14 -0
  59. package/dist/lib/resources/aws/cdn/cloudFront.js +52 -18
  60. package/dist/lib/resources/aws/compute/ec2.js +18 -22
  61. package/dist/lib/resources/aws/compute/ecs.d.ts +9 -8
  62. package/dist/lib/resources/aws/compute/ecs.js +53 -41
  63. package/dist/lib/resources/aws/compute/index.d.ts +1 -0
  64. package/dist/lib/resources/aws/compute/index.js +2 -1
  65. package/dist/lib/resources/aws/compute/lambda.d.ts +12 -3
  66. package/dist/lib/resources/aws/compute/lambda.js +48 -36
  67. package/dist/lib/resources/aws/database/dynamodb.js +3 -13
  68. package/dist/lib/resources/aws/database/index.d.ts +8 -2
  69. package/dist/lib/resources/aws/database/index.js +19 -3
  70. package/dist/lib/resources/aws/database/rdsAurora.d.ts +2 -3
  71. package/dist/lib/resources/aws/database/rdsAurora.js +33 -69
  72. package/dist/lib/resources/aws/database/rdsAuroraGlobal.d.ts +6 -6
  73. package/dist/lib/resources/aws/database/rdsAuroraGlobal.js +25 -29
  74. package/dist/lib/resources/aws/database/rdsDefaults.d.ts +11 -0
  75. package/dist/lib/resources/aws/database/rdsDefaults.js +15 -0
  76. package/dist/lib/resources/aws/database/rdsHelpers.d.ts +39 -0
  77. package/dist/lib/resources/aws/database/rdsHelpers.js +75 -0
  78. package/dist/lib/resources/aws/database/rdsInstance.d.ts +7 -8
  79. package/dist/lib/resources/aws/database/rdsInstance.js +40 -84
  80. package/dist/lib/resources/aws/database/rdsProxyOutput.d.ts +7 -0
  81. package/dist/lib/resources/aws/database/rdsProxyOutput.js +18 -0
  82. package/dist/lib/resources/aws/iam/identityCenter/assignment.d.ts +0 -2
  83. package/dist/lib/resources/aws/iam/identityCenter/assignment.js +9 -45
  84. package/dist/lib/resources/aws/iam/identityCenter/group.d.ts +1 -3
  85. package/dist/lib/resources/aws/iam/identityCenter/group.js +7 -82
  86. package/dist/lib/resources/aws/iam/identityCenter/permissionSet.d.ts +1 -3
  87. package/dist/lib/resources/aws/iam/identityCenter/permissionSet.js +9 -93
  88. package/dist/lib/resources/aws/iam/index.d.ts +0 -1
  89. package/dist/lib/resources/aws/iam/index.js +1 -2
  90. package/dist/lib/resources/aws/index.d.ts +0 -1
  91. package/dist/lib/resources/aws/index.js +1 -2
  92. package/dist/lib/resources/aws/logging/cloudTrail.js +13 -3
  93. package/dist/lib/resources/aws/logging/index.d.ts +2 -0
  94. package/dist/lib/resources/aws/logging/index.js +19 -0
  95. package/dist/lib/resources/aws/messaging/index.d.ts +3 -2
  96. package/dist/lib/resources/aws/messaging/index.js +4 -3
  97. package/dist/lib/resources/aws/messaging/sqs.js +14 -11
  98. package/dist/lib/resources/aws/messaging/utils.d.ts +1 -2
  99. package/dist/lib/resources/aws/messaging/utils.js +3 -4
  100. package/dist/lib/resources/aws/monitoring/index.d.ts +0 -1
  101. package/dist/lib/resources/aws/monitoring/index.js +4 -17
  102. package/dist/lib/resources/aws/networking/hostedZone.d.ts +28 -0
  103. package/dist/lib/resources/aws/networking/hostedZone.js +153 -0
  104. package/dist/lib/resources/aws/networking/index.d.ts +2 -0
  105. package/dist/lib/resources/aws/networking/index.js +3 -1
  106. package/dist/lib/resources/aws/networking/ipamPool.js +110 -31
  107. package/dist/lib/resources/aws/networking/securityGroup.d.ts +5 -0
  108. package/dist/lib/resources/aws/networking/securityGroup.js +14 -0
  109. package/dist/lib/resources/aws/networking/vpc.js +9 -4
  110. package/dist/lib/resources/aws/organisation/costAllocationTagActivator.d.ts +17 -0
  111. package/dist/lib/resources/aws/organisation/costAllocationTagActivator.js +66 -0
  112. package/dist/lib/resources/aws/organisation/index.d.ts +1 -0
  113. package/dist/lib/resources/aws/organisation/index.js +4 -2
  114. package/dist/lib/resources/aws/secrets/index.d.ts +0 -1
  115. package/dist/lib/resources/aws/secrets/index.js +1 -2
  116. package/dist/lib/resources/aws/secrets/parameter.js +5 -3
  117. package/dist/lib/resources/aws/storage/ecr.d.ts +0 -1
  118. package/dist/lib/resources/aws/storage/ecr.js +5 -7
  119. package/dist/lib/resources/aws/storage/s3.d.ts +3 -3
  120. package/dist/lib/resources/aws/storage/s3.js +1 -1
  121. package/dist/lib/resources/aws/utilities/index.d.ts +5 -0
  122. package/dist/lib/resources/aws/utilities/index.js +22 -0
  123. package/dist/lib/utils/backupTierMapping.d.ts +11 -0
  124. package/dist/lib/utils/backupTierMapping.js +17 -0
  125. package/dist/lib/utils/capitaliseString.d.ts +6 -0
  126. package/dist/lib/utils/capitaliseString.js +10 -1
  127. package/dist/lib/utils/connections.d.ts +46 -0
  128. package/dist/lib/utils/connections.js +159 -0
  129. package/dist/lib/utils/connector.d.ts +183 -0
  130. package/dist/lib/utils/connector.js +117 -0
  131. package/dist/lib/utils/databaseTypes.d.ts +85 -0
  132. package/dist/lib/utils/databaseTypes.js +34 -0
  133. package/dist/lib/utils/env.d.ts +42 -0
  134. package/dist/lib/utils/env.js +128 -0
  135. package/dist/lib/utils/getConfig.d.ts +0 -2
  136. package/dist/lib/utils/getConfig.js +1 -4
  137. package/dist/lib/utils/index.d.ts +6 -0
  138. package/dist/lib/utils/index.js +7 -1
  139. package/dist/lib/utils/removalPolicy.d.ts +2 -0
  140. package/dist/lib/utils/removalPolicy.js +16 -0
  141. package/dist/lib/utils/resourceNaming.js +4 -7
  142. package/dist/lib/utils/standardTagsAspect.d.ts +4 -0
  143. package/dist/lib/utils/standardTagsAspect.js +8 -8
  144. package/dist/lib/utils/vpcUtils.d.ts +14 -0
  145. package/dist/lib/utils/vpcUtils.js +28 -0
  146. package/package.json +8 -8
@@ -1,5 +1,4 @@
1
1
  export * from "./alias";
2
- export * from "../database/database";
3
2
  export * from "./kms";
4
3
  export * from "./parameter";
5
4
  export * from "./secret";
@@ -15,8 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./alias"), exports);
18
- __exportStar(require("../database/database"), exports);
19
18
  __exportStar(require("./kms"), exports);
20
19
  __exportStar(require("./parameter"), exports);
21
20
  __exportStar(require("./secret"), exports);
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9zZWNyZXRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwQ0FBd0I7QUFDeEIsdURBQXFDO0FBQ3JDLHdDQUFzQjtBQUN0Qiw4Q0FBNEI7QUFDNUIsMkNBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vYWxpYXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuLi9kYXRhYmFzZS9kYXRhYmFzZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4va21zXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wYXJhbWV0ZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NlY3JldFwiO1xuIl19
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9zZWNyZXRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwQ0FBd0I7QUFDeEIsd0NBQXNCO0FBQ3RCLDhDQUE0QjtBQUM1QiwyQ0FBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9hbGlhc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4va21zXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wYXJhbWV0ZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NlY3JldFwiO1xuIl19
@@ -38,7 +38,9 @@ class SecureStringParameter extends constructs_1.Construct {
38
38
  parameters: {
39
39
  Name: props.name,
40
40
  Description: props.description || `${id} secure parameter`,
41
- Value: props.value || process.env.CDK_SECURE_STRING || "placeholderValue",
41
+ Value: props.value ||
42
+ process.env[`CDK_SECURE_STRING_${id}`] ||
43
+ "placeholderValue",
42
44
  Type: "SecureString",
43
45
  KeyId: this.cmk.alias.keyId
44
46
  // TODO: Add tags to the parameter
@@ -52,7 +54,7 @@ class SecureStringParameter extends constructs_1.Construct {
52
54
  Name: props.name,
53
55
  Description: props.description || `${id} secure parameter`,
54
56
  Value: props.value ||
55
- `process.env.CDK_SECURE_STRING_${id}` ||
57
+ process.env[`CDK_SECURE_STRING_${id}`] ||
56
58
  "placeholderValue",
57
59
  Overwrite: props.overwrite,
58
60
  Type: "SecureString",
@@ -95,4 +97,4 @@ class SecureStringParameter extends constructs_1.Construct {
95
97
  }
96
98
  }
97
99
  exports.SecureStringParameter = SecureStringParameter;
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3Mvc2VjcmV0cy9wYXJhbWV0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQTZDO0FBQzdDLGlEQUFzRDtBQUN0RCxtRUFHc0M7QUFDdEMsMkNBQXVDO0FBRXZDLHlCQUF3QztBQUN4QyxzRUFBbUU7QUFFbkUsTUFBYSxlQUFnQixTQUFRLHFCQUFHLENBQUMsZUFBZTtJQUN0RCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQStCO1FBQ3ZFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsR0FBRyxLQUFLO1lBQ1IsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLElBQUksR0FBRyxFQUFFLGdCQUFnQjtZQUN2RCxJQUFJLEVBQUUscUJBQUcsQ0FBQyxhQUFhLENBQUMsbUJBQW1CO1NBQzVDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQVJELDBDQVFDO0FBY0QsTUFBYSxxQkFBc0IsU0FBUSxzQkFBUztJQUtsRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWlDO1FBQ3pFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBRXZCLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDO1FBQ3ZCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLHFCQUFrQixDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFO2dCQUNsRCxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsSUFBSSxHQUFHLEVBQUUsVUFBVTtnQkFDakQsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO2FBQzNCLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUkscUNBQWlCLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSx1QkFBdUIsRUFBRTtZQUN6RSxZQUFZLEVBQUUsK0JBQStCO1lBQzdDLFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUscUJBQXFCO2dCQUM5QixNQUFNLEVBQUUsY0FBYztnQkFDdEIsVUFBVSxFQUFFO29CQUNWLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtvQkFDaEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLElBQUksR0FBRyxFQUFFLG1CQUFtQjtvQkFDMUQsS0FBSyxFQUNILEtBQUssQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsSUFBSSxrQkFBa0I7b0JBQ3BFLElBQUksRUFBRSxjQUFjO29CQUNwQixLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSztvQkFDM0Isa0NBQWtDO2lCQUNuQztnQkFDRCxrQkFBa0IsRUFBRSxxQ0FBa0IsQ0FBQyxFQUFFLENBQUMsNkJBQTZCLENBQUM7YUFDekU7WUFDRCxRQUFRLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLHFCQUFxQjtnQkFDOUIsTUFBTSxFQUFFLGNBQWM7Z0JBQ3RCLFVBQVUsRUFBRTtvQkFDVixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7b0JBQ2hCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVyxJQUFJLEdBQUcsRUFBRSxtQkFBbUI7b0JBQzFELEtBQUssRUFDSCxLQUFLLENBQUMsS0FBSzt3QkFDWCxpQ0FBaUMsRUFBRSxFQUFFO3dCQUNyQyxrQkFBa0I7b0JBQ3BCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztvQkFDMUIsSUFBSSxFQUFFLGNBQWM7b0JBQ3BCLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLO29CQUMzQixrQ0FBa0M7aUJBQ25DO2dCQUNELGtCQUFrQixFQUFFLHFDQUFrQixDQUFDLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQzthQUN6RTtZQUNELFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUscUJBQXFCO2dCQUM5QixNQUFNLEVBQUUsaUJBQWlCO2dCQUN6QixVQUFVLEVBQUU7b0JBQ1YsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO2lCQUNqQjthQUNGO1lBQ0QsTUFBTSxFQUFFLDBDQUF1QixDQUFDLGNBQWMsQ0FBQztnQkFDN0MsSUFBSSx5QkFBZSxDQUFDO29CQUNsQixPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUM7b0JBQ3hCLFNBQVMsRUFBRTt3QkFDVCxlQUFlLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLFNBQVMsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUU7cUJBQzNFO2lCQUNGLENBQUM7Z0JBQ0YsSUFBSSx5QkFBZSxDQUFDO29CQUNsQixPQUFPLEVBQUU7d0JBQ1AscUJBQXFCO3dCQUNyQixrQkFBa0I7d0JBQ2xCLHVCQUF1Qjt3QkFDdkIsNEJBQTRCO3dCQUM1Qix5QkFBeUI7cUJBQzFCO29CQUNELFNBQVMsRUFBRTt3QkFDVCxlQUFlLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLFNBQVMsYUFBYSxLQUFLLENBQUMsSUFBSSxFQUFFO3FCQUN4RTtpQkFDRixDQUFDO2FBQ0gsQ0FBQztTQUNILENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlDLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFyRkQsc0RBcUZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXdzX3NzbSBhcyBzc20gfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IFBvbGljeVN0YXRlbWVudCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQge1xuICBBd3NDdXN0b21SZXNvdXJjZVBvbGljeSxcbiAgUGh5c2ljYWxSZXNvdXJjZUlkXG59IGZyb20gXCJhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgdHlwZSBLZXlWYWx1ZSB9IGZyb20gXCIuLi8uLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsgQ3VzdG9tZXJNYW5hZ2VkS2V5IH0gZnJvbSBcIi4vXCI7XG5pbXBvcnQgeyBBd3NDdXN0b21SZXNvdXJjZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXdzQ3VzdG9tUmVzb3VyY2VcIjtcblxuZXhwb3J0IGNsYXNzIFN0cmluZ1BhcmFtZXRlciBleHRlbmRzIHNzbS5TdHJpbmdQYXJhbWV0ZXIge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogc3NtLlN0cmluZ1BhcmFtZXRlclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbiB8fCBgJHtpZH0gU1NNIFBhcmFtZXRlcmAsXG4gICAgICB0aWVyOiBzc20uUGFyYW1ldGVyVGllci5JTlRFTExJR0VOVF9USUVSSU5HXG4gICAgfSk7XG4gIH1cbn1cblxuaW50ZXJmYWNlIFNlY3VyZVN0cmluZ1BhcmFtZXRlclByb3BzIHtcbiAgYWNjb3VudElkOiBzdHJpbmc7XG4gIGFsaWFzTmFtZT86IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgb3ZlcndyaXRlPzogYm9vbGVhbjtcbiAgcmVnaW9uOiBzdHJpbmc7XG4gIHRhZ3M6IEtleVZhbHVlO1xuICB2YWx1ZT86IHN0cmluZztcbiAgY21rPzogQ3VzdG9tZXJNYW5hZ2VkS2V5O1xufVxuXG5leHBvcnQgY2xhc3MgU2VjdXJlU3RyaW5nUGFyYW1ldGVyIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IGNtazogQ3VzdG9tZXJNYW5hZ2VkS2V5O1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgcGFyYW1ldGVyOiBBd3NDdXN0b21SZXNvdXJjZTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU2VjdXJlU3RyaW5nUGFyYW1ldGVyUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5uYW1lID0gcHJvcHMubmFtZTtcblxuICAgIGlmIChwcm9wcy5jbWspIHtcbiAgICAgIHRoaXMuY21rID0gcHJvcHMuY21rO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNtayA9IG5ldyBDdXN0b21lck1hbmFnZWRLZXkodGhpcywgYCR7aWR9S2V5YCwge1xuICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24gfHwgYCR7aWR9IEtNUyBLZXlgLFxuICAgICAgICBhbGlhc05hbWU6IHByb3BzLmFsaWFzTmFtZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5wYXJhbWV0ZXIgPSBuZXcgQXdzQ3VzdG9tUmVzb3VyY2UodGhpcywgYCR7aWR9U2VjdXJlU3RyaW5nUGFyYW1ldGVyYCwge1xuICAgICAgcmVzb3VyY2VUeXBlOiBcIkN1c3RvbTo6U2VjdXJlU3RyaW5nUGFyYW1ldGVyXCIsXG4gICAgICBvbkNyZWF0ZToge1xuICAgICAgICBzZXJ2aWNlOiBcIkBhd3Mtc2RrL2NsaWVudC1zc21cIixcbiAgICAgICAgYWN0aW9uOiBcIlB1dFBhcmFtZXRlclwiLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgTmFtZTogcHJvcHMubmFtZSxcbiAgICAgICAgICBEZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24gfHwgYCR7aWR9IHNlY3VyZSBwYXJhbWV0ZXJgLFxuICAgICAgICAgIFZhbHVlOlxuICAgICAgICAgICAgcHJvcHMudmFsdWUgfHwgcHJvY2Vzcy5lbnYuQ0RLX1NFQ1VSRV9TVFJJTkcgfHwgXCJwbGFjZWhvbGRlclZhbHVlXCIsXG4gICAgICAgICAgVHlwZTogXCJTZWN1cmVTdHJpbmdcIixcbiAgICAgICAgICBLZXlJZDogdGhpcy5jbWsuYWxpYXMua2V5SWRcbiAgICAgICAgICAvLyBUT0RPOiBBZGQgdGFncyB0byB0aGUgcGFyYW1ldGVyXG4gICAgICAgIH0sXG4gICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFwiY3JlYXRlU2VjdXJlU3RyaW5nUGFyYW1ldGVyXCIpXG4gICAgICB9LFxuICAgICAgb25VcGRhdGU6IHtcbiAgICAgICAgc2VydmljZTogXCJAYXdzLXNkay9jbGllbnQtc3NtXCIsXG4gICAgICAgIGFjdGlvbjogXCJQdXRQYXJhbWV0ZXJcIixcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIE5hbWU6IHByb3BzLm5hbWUsXG4gICAgICAgICAgRGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uIHx8IGAke2lkfSBzZWN1cmUgcGFyYW1ldGVyYCxcbiAgICAgICAgICBWYWx1ZTpcbiAgICAgICAgICAgIHByb3BzLnZhbHVlIHx8XG4gICAgICAgICAgICBgcHJvY2Vzcy5lbnYuQ0RLX1NFQ1VSRV9TVFJJTkdfJHtpZH1gIHx8XG4gICAgICAgICAgICBcInBsYWNlaG9sZGVyVmFsdWVcIixcbiAgICAgICAgICBPdmVyd3JpdGU6IHByb3BzLm92ZXJ3cml0ZSxcbiAgICAgICAgICBUeXBlOiBcIlNlY3VyZVN0cmluZ1wiLFxuICAgICAgICAgIEtleUlkOiB0aGlzLmNtay5hbGlhcy5rZXlJZFxuICAgICAgICAgIC8vIFRPRE86IEFkZCB0YWdzIHRvIHRoZSBwYXJhbWV0ZXJcbiAgICAgICAgfSxcbiAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiBQaHlzaWNhbFJlc291cmNlSWQub2YoXCJ1cGRhdGVTZWN1cmVTdHJpbmdQYXJhbWV0ZXJcIilcbiAgICAgIH0sXG4gICAgICBvbkRlbGV0ZToge1xuICAgICAgICBzZXJ2aWNlOiBcIkBhd3Mtc2RrL2NsaWVudC1zc21cIixcbiAgICAgICAgYWN0aW9uOiBcIkRlbGV0ZVBhcmFtZXRlclwiLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgTmFtZTogcHJvcHMubmFtZVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcG9saWN5OiBBd3NDdXN0b21SZXNvdXJjZVBvbGljeS5mcm9tU3RhdGVtZW50cyhbXG4gICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFtcImttczpFbmNyeXB0XCJdLFxuICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgYGFybjphd3M6a21zOiR7cHJvcHMucmVnaW9ufToke3Byb3BzLmFjY291bnRJZH06a2V5LyR7dGhpcy5jbWsua2V5LmtleUlkfWBcbiAgICAgICAgICBdXG4gICAgICAgIH0pLFxuICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICBcInNzbTpEZWxldGVQYXJhbWV0ZXJcIixcbiAgICAgICAgICAgIFwic3NtOlB1dFBhcmFtZXRlclwiLFxuICAgICAgICAgICAgXCJzc206QWRkVGFnc1RvUmVzb3VyY2VcIixcbiAgICAgICAgICAgIFwibG9nczpEZWxldGVSZXRlbnRpb25Qb2xpY3lcIixcbiAgICAgICAgICAgIFwibG9nczpQdXRSZXRlbnRpb25Qb2xpY3lcIlxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICBgYXJuOmF3czpzc206JHtwcm9wcy5yZWdpb259OiR7cHJvcHMuYWNjb3VudElkfTpwYXJhbWV0ZXIke3Byb3BzLm5hbWV9YFxuICAgICAgICAgIF1cbiAgICAgICAgfSlcbiAgICAgIF0pXG4gICAgfSk7XG5cbiAgICBpZiAoIXByb3BzLmNtaykge1xuICAgICAgdGhpcy5wYXJhbWV0ZXIubm9kZS5hZGREZXBlbmRlbmN5KHRoaXMuY21rKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3Mvc2VjcmV0cy9wYXJhbWV0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQTZDO0FBQzdDLGlEQUFzRDtBQUN0RCxtRUFHc0M7QUFDdEMsMkNBQXVDO0FBRXZDLHlCQUF3QztBQUN4QyxzRUFBbUU7QUFFbkUsTUFBYSxlQUFnQixTQUFRLHFCQUFHLENBQUMsZUFBZTtJQUN0RCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQStCO1FBQ3ZFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsR0FBRyxLQUFLO1lBQ1IsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLElBQUksR0FBRyxFQUFFLGdCQUFnQjtZQUN2RCxJQUFJLEVBQUUscUJBQUcsQ0FBQyxhQUFhLENBQUMsbUJBQW1CO1NBQzVDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQVJELDBDQVFDO0FBY0QsTUFBYSxxQkFBc0IsU0FBUSxzQkFBUztJQUtsRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWlDO1FBQ3pFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBRXZCLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDO1FBQ3ZCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLHFCQUFrQixDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFO2dCQUNsRCxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsSUFBSSxHQUFHLEVBQUUsVUFBVTtnQkFDakQsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO2FBQzNCLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUkscUNBQWlCLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSx1QkFBdUIsRUFBRTtZQUN6RSxZQUFZLEVBQUUsK0JBQStCO1lBQzdDLFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUscUJBQXFCO2dCQUM5QixNQUFNLEVBQUUsY0FBYztnQkFDdEIsVUFBVSxFQUFFO29CQUNWLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtvQkFDaEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLElBQUksR0FBRyxFQUFFLG1CQUFtQjtvQkFDMUQsS0FBSyxFQUNILEtBQUssQ0FBQyxLQUFLO3dCQUNYLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLEVBQUUsRUFBRSxDQUFDO3dCQUN0QyxrQkFBa0I7b0JBQ3BCLElBQUksRUFBRSxjQUFjO29CQUNwQixLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSztvQkFDM0Isa0NBQWtDO2lCQUNuQztnQkFDRCxrQkFBa0IsRUFBRSxxQ0FBa0IsQ0FBQyxFQUFFLENBQUMsNkJBQTZCLENBQUM7YUFDekU7WUFDRCxRQUFRLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLHFCQUFxQjtnQkFDOUIsTUFBTSxFQUFFLGNBQWM7Z0JBQ3RCLFVBQVUsRUFBRTtvQkFDVixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7b0JBQ2hCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVyxJQUFJLEdBQUcsRUFBRSxtQkFBbUI7b0JBQzFELEtBQUssRUFDSCxLQUFLLENBQUMsS0FBSzt3QkFDWCxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixFQUFFLEVBQUUsQ0FBQzt3QkFDdEMsa0JBQWtCO29CQUNwQixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7b0JBQzFCLElBQUksRUFBRSxjQUFjO29CQUNwQixLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSztvQkFDM0Isa0NBQWtDO2lCQUNuQztnQkFDRCxrQkFBa0IsRUFBRSxxQ0FBa0IsQ0FBQyxFQUFFLENBQUMsNkJBQTZCLENBQUM7YUFDekU7WUFDRCxRQUFRLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLHFCQUFxQjtnQkFDOUIsTUFBTSxFQUFFLGlCQUFpQjtnQkFDekIsVUFBVSxFQUFFO29CQUNWLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtpQkFDakI7YUFDRjtZQUNELE1BQU0sRUFBRSwwQ0FBdUIsQ0FBQyxjQUFjLENBQUM7Z0JBQzdDLElBQUkseUJBQWUsQ0FBQztvQkFDbEIsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDO29CQUN4QixTQUFTLEVBQUU7d0JBQ1QsZUFBZSxLQUFLLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxTQUFTLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFO3FCQUMzRTtpQkFDRixDQUFDO2dCQUNGLElBQUkseUJBQWUsQ0FBQztvQkFDbEIsT0FBTyxFQUFFO3dCQUNQLHFCQUFxQjt3QkFDckIsa0JBQWtCO3dCQUNsQix1QkFBdUI7d0JBQ3ZCLDRCQUE0Qjt3QkFDNUIseUJBQXlCO3FCQUMxQjtvQkFDRCxTQUFTLEVBQUU7d0JBQ1QsZUFBZSxLQUFLLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxTQUFTLGFBQWEsS0FBSyxDQUFDLElBQUksRUFBRTtxQkFDeEU7aUJBQ0YsQ0FBQzthQUNILENBQUM7U0FDSCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QyxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBdkZELHNEQXVGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGF3c19zc20gYXMgc3NtIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBQb2xpY3lTdGF0ZW1lbnQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0IHtcbiAgQXdzQ3VzdG9tUmVzb3VyY2VQb2xpY3ksXG4gIFBoeXNpY2FsUmVzb3VyY2VJZFxufSBmcm9tIFwiYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlc1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IHR5cGUgS2V5VmFsdWUgfSBmcm9tIFwiLi4vLi4vLi4vdHlwZXNcIjtcbmltcG9ydCB7IEN1c3RvbWVyTWFuYWdlZEtleSB9IGZyb20gXCIuL1wiO1xuaW1wb3J0IHsgQXdzQ3VzdG9tUmVzb3VyY2UgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2F3c0N1c3RvbVJlc291cmNlXCI7XG5cbmV4cG9ydCBjbGFzcyBTdHJpbmdQYXJhbWV0ZXIgZXh0ZW5kcyBzc20uU3RyaW5nUGFyYW1ldGVyIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IHNzbS5TdHJpbmdQYXJhbWV0ZXJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24gfHwgYCR7aWR9IFNTTSBQYXJhbWV0ZXJgLFxuICAgICAgdGllcjogc3NtLlBhcmFtZXRlclRpZXIuSU5URUxMSUdFTlRfVElFUklOR1xuICAgIH0pO1xuICB9XG59XG5cbmludGVyZmFjZSBTZWN1cmVTdHJpbmdQYXJhbWV0ZXJQcm9wcyB7XG4gIGFjY291bnRJZDogc3RyaW5nO1xuICBhbGlhc05hbWU/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIG92ZXJ3cml0ZT86IGJvb2xlYW47XG4gIHJlZ2lvbjogc3RyaW5nO1xuICB0YWdzOiBLZXlWYWx1ZTtcbiAgdmFsdWU/OiBzdHJpbmc7XG4gIGNtaz86IEN1c3RvbWVyTWFuYWdlZEtleTtcbn1cblxuZXhwb3J0IGNsYXNzIFNlY3VyZVN0cmluZ1BhcmFtZXRlciBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBjbWs6IEN1c3RvbWVyTWFuYWdlZEtleTtcbiAgcHVibGljIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHBhcmFtZXRlcjogQXdzQ3VzdG9tUmVzb3VyY2U7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFNlY3VyZVN0cmluZ1BhcmFtZXRlclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMubmFtZSA9IHByb3BzLm5hbWU7XG5cbiAgICBpZiAocHJvcHMuY21rKSB7XG4gICAgICB0aGlzLmNtayA9IHByb3BzLmNtaztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbWsgPSBuZXcgQ3VzdG9tZXJNYW5hZ2VkS2V5KHRoaXMsIGAke2lkfUtleWAsIHtcbiAgICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uIHx8IGAke2lkfSBLTVMgS2V5YCxcbiAgICAgICAgYWxpYXNOYW1lOiBwcm9wcy5hbGlhc05hbWVcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMucGFyYW1ldGVyID0gbmV3IEF3c0N1c3RvbVJlc291cmNlKHRoaXMsIGAke2lkfVNlY3VyZVN0cmluZ1BhcmFtZXRlcmAsIHtcbiAgICAgIHJlc291cmNlVHlwZTogXCJDdXN0b206OlNlY3VyZVN0cmluZ1BhcmFtZXRlclwiLFxuICAgICAgb25DcmVhdGU6IHtcbiAgICAgICAgc2VydmljZTogXCJAYXdzLXNkay9jbGllbnQtc3NtXCIsXG4gICAgICAgIGFjdGlvbjogXCJQdXRQYXJhbWV0ZXJcIixcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIE5hbWU6IHByb3BzLm5hbWUsXG4gICAgICAgICAgRGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uIHx8IGAke2lkfSBzZWN1cmUgcGFyYW1ldGVyYCxcbiAgICAgICAgICBWYWx1ZTpcbiAgICAgICAgICAgIHByb3BzLnZhbHVlIHx8XG4gICAgICAgICAgICBwcm9jZXNzLmVudltgQ0RLX1NFQ1VSRV9TVFJJTkdfJHtpZH1gXSB8fFxuICAgICAgICAgICAgXCJwbGFjZWhvbGRlclZhbHVlXCIsXG4gICAgICAgICAgVHlwZTogXCJTZWN1cmVTdHJpbmdcIixcbiAgICAgICAgICBLZXlJZDogdGhpcy5jbWsuYWxpYXMua2V5SWRcbiAgICAgICAgICAvLyBUT0RPOiBBZGQgdGFncyB0byB0aGUgcGFyYW1ldGVyXG4gICAgICAgIH0sXG4gICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFwiY3JlYXRlU2VjdXJlU3RyaW5nUGFyYW1ldGVyXCIpXG4gICAgICB9LFxuICAgICAgb25VcGRhdGU6IHtcbiAgICAgICAgc2VydmljZTogXCJAYXdzLXNkay9jbGllbnQtc3NtXCIsXG4gICAgICAgIGFjdGlvbjogXCJQdXRQYXJhbWV0ZXJcIixcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIE5hbWU6IHByb3BzLm5hbWUsXG4gICAgICAgICAgRGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uIHx8IGAke2lkfSBzZWN1cmUgcGFyYW1ldGVyYCxcbiAgICAgICAgICBWYWx1ZTpcbiAgICAgICAgICAgIHByb3BzLnZhbHVlIHx8XG4gICAgICAgICAgICBwcm9jZXNzLmVudltgQ0RLX1NFQ1VSRV9TVFJJTkdfJHtpZH1gXSB8fFxuICAgICAgICAgICAgXCJwbGFjZWhvbGRlclZhbHVlXCIsXG4gICAgICAgICAgT3ZlcndyaXRlOiBwcm9wcy5vdmVyd3JpdGUsXG4gICAgICAgICAgVHlwZTogXCJTZWN1cmVTdHJpbmdcIixcbiAgICAgICAgICBLZXlJZDogdGhpcy5jbWsuYWxpYXMua2V5SWRcbiAgICAgICAgICAvLyBUT0RPOiBBZGQgdGFncyB0byB0aGUgcGFyYW1ldGVyXG4gICAgICAgIH0sXG4gICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFwidXBkYXRlU2VjdXJlU3RyaW5nUGFyYW1ldGVyXCIpXG4gICAgICB9LFxuICAgICAgb25EZWxldGU6IHtcbiAgICAgICAgc2VydmljZTogXCJAYXdzLXNkay9jbGllbnQtc3NtXCIsXG4gICAgICAgIGFjdGlvbjogXCJEZWxldGVQYXJhbWV0ZXJcIixcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIE5hbWU6IHByb3BzLm5hbWVcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHBvbGljeTogQXdzQ3VzdG9tUmVzb3VyY2VQb2xpY3kuZnJvbVN0YXRlbWVudHMoW1xuICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbXCJrbXM6RW5jcnlwdFwiXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgIGBhcm46YXdzOmttczoke3Byb3BzLnJlZ2lvbn06JHtwcm9wcy5hY2NvdW50SWR9OmtleS8ke3RoaXMuY21rLmtleS5rZXlJZH1gXG4gICAgICAgICAgXVxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgXCJzc206RGVsZXRlUGFyYW1ldGVyXCIsXG4gICAgICAgICAgICBcInNzbTpQdXRQYXJhbWV0ZXJcIixcbiAgICAgICAgICAgIFwic3NtOkFkZFRhZ3NUb1Jlc291cmNlXCIsXG4gICAgICAgICAgICBcImxvZ3M6RGVsZXRlUmV0ZW50aW9uUG9saWN5XCIsXG4gICAgICAgICAgICBcImxvZ3M6UHV0UmV0ZW50aW9uUG9saWN5XCJcbiAgICAgICAgICBdLFxuICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgYGFybjphd3M6c3NtOiR7cHJvcHMucmVnaW9ufToke3Byb3BzLmFjY291bnRJZH06cGFyYW1ldGVyJHtwcm9wcy5uYW1lfWBcbiAgICAgICAgICBdXG4gICAgICAgIH0pXG4gICAgICBdKVxuICAgIH0pO1xuXG4gICAgaWYgKCFwcm9wcy5jbWspIHtcbiAgICAgIHRoaXMucGFyYW1ldGVyLm5vZGUuYWRkRGVwZW5kZW5jeSh0aGlzLmNtayk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -9,7 +9,6 @@ export declare class EcrFactory {
9
9
  static build(id: string, props?: EcrProps): (app: App, scope: Construct) => Ecr;
10
10
  }
11
11
  export declare class Ecr extends Repository {
12
- private outputs;
13
12
  constructor(scope: Construct, id: string, props?: EcrProps);
14
13
  static getRepositoryProps(props?: EcrProps): RepositoryProps;
15
14
  static build(id: string, props?: EcrProps): (scope: StackBuilder) => Ecr;
@@ -21,14 +21,11 @@ exports.EcrFactory = EcrFactory;
21
21
  class Ecr extends aws_ecr_1.Repository {
22
22
  constructor(scope, id, props) {
23
23
  super(scope, id, Ecr.getRepositoryProps(props));
24
- this.outputs = [];
25
- this.outputs.push(
26
- // TODO: revert to `${id}RepositoryName` after webapp redeploy (temp fix to preserve cross-stack export)
27
- new aws_cdk_lib_1.CfnOutput(this, "ecrRepository", {
24
+ new aws_cdk_lib_1.CfnOutput(this, `${id}RepositoryName`, {
28
25
  key: `${id}RepositoryName`,
29
26
  value: this.repositoryName,
30
27
  exportName: `${id}RepositoryName`
31
- }));
28
+ });
32
29
  }
33
30
  static getRepositoryProps(props) {
34
31
  // todo: lifeCycleRules
@@ -37,7 +34,8 @@ class Ecr extends aws_ecr_1.Repository {
37
34
  ...(props?.repositoryName && { repositoryName: props.repositoryName }),
38
35
  imageScanOnPush: true,
39
36
  imageTagMutability: aws_ecr_1.TagMutability.MUTABLE,
40
- removalPolicy: aws_cdk_lib_1.RemovalPolicy.RETAIN
37
+ emptyOnDelete: true,
38
+ removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY
41
39
  };
42
40
  }
43
41
  static build(id, props) {
@@ -45,4 +43,4 @@ class Ecr extends aws_ecr_1.Repository {
45
43
  }
46
44
  }
47
45
  exports.Ecr = Ecr;
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3Mvc3RvcmFnZS9lY3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsaURBSTZCO0FBQzdCLDZDQUF1RDtBQVV2RCxNQUFhLFVBQVU7SUFDckIsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFVLEVBQUUsS0FBZ0I7UUFDdkMsT0FBTyxDQUFDLEdBQVEsRUFBRSxLQUFnQixFQUFFLEVBQUU7WUFDcEMsTUFBTSxRQUFRLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUM3QixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBRXpDLG9FQUFvRTtZQUNwRSxNQUFNLFdBQVcsR0FBZ0I7Z0JBQy9CLGNBQWMsRUFBRSxHQUFHLENBQUMsY0FBYzthQUNuQyxDQUFDO1lBQ0YsR0FBRyxDQUFDLG9CQUFvQixFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRS9DLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBZkQsZ0NBZUM7QUFFRCxNQUFhLEdBQUksU0FBUSxvQkFBVTtJQUdqQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWdCO1FBQ3hELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBSDFDLFlBQU8sR0FBZ0IsRUFBRSxDQUFDO1FBS2hDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSTtRQUNmLHdHQUF3RztRQUN4RyxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRTtZQUNuQyxHQUFHLEVBQUUsR0FBRyxFQUFFLGdCQUFnQjtZQUMxQixLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDMUIsVUFBVSxFQUFFLEdBQUcsRUFBRSxnQkFBZ0I7U0FDbEMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEtBQWdCO1FBQ3hDLHVCQUF1QjtRQUN2QixvRUFBb0U7UUFDcEUsT0FBTztZQUNMLEdBQUcsQ0FBQyxLQUFLLEVBQUUsY0FBYyxJQUFJLEVBQUUsY0FBYyxFQUFFLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN0RSxlQUFlLEVBQUUsSUFBSTtZQUNyQixrQkFBa0IsRUFBRSx1QkFBYSxDQUFDLE9BQU87WUFDekMsYUFBYSxFQUFFLDJCQUFhLENBQUMsTUFBTTtTQUNwQyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBVSxFQUFFLEtBQWdCO1FBQ3ZDLE9BQU8sQ0FBQyxLQUFtQixFQUFFLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7Q0FDRjtBQTlCRCxrQkE4QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge1xuICBSZXBvc2l0b3J5LFxuICB0eXBlIFJlcG9zaXRvcnlQcm9wcyxcbiAgVGFnTXV0YWJpbGl0eVxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjclwiO1xuaW1wb3J0IHsgQ2ZuT3V0cHV0LCBSZW1vdmFsUG9saWN5IH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5cbmltcG9ydCB0eXBlIEFwcCBmcm9tIFwiLi4vLi4vLi4vYXBwXCI7XG5pbXBvcnQgeyB0eXBlIFN0YWNrQnVpbGRlciB9IGZyb20gXCIuLi9iYXNlL2F3c1N0YWNrXCI7XG5pbXBvcnQgeyB0eXBlIE1hbmlmZXN0RWNyIH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL21hbmlmZXN0V3JpdGVyLmpzXCI7XG5cbmludGVyZmFjZSBFY3JQcm9wcyB7XG4gIHJlcG9zaXRvcnlOYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgRWNyRmFjdG9yeSB7XG4gIHN0YXRpYyBidWlsZChpZDogc3RyaW5nLCBwcm9wcz86IEVjclByb3BzKSB7XG4gICAgcmV0dXJuIChhcHA6IEFwcCwgc2NvcGU6IENvbnN0cnVjdCkgPT4ge1xuICAgICAgY29uc3QgZWNyUHJvcHMgPSBwcm9wcyA/PyB7fTtcbiAgICAgIGNvbnN0IGVjciA9IG5ldyBFY3Ioc2NvcGUsIGlkLCBlY3JQcm9wcyk7XG5cbiAgICAgIC8vIFJlZ2lzdGVyIEVDUiByZXBvc2l0b3J5IHdpdGggbWFuaWZlc3QgY29sbGVjdG9yIGZvciBDTEkgZGlzY292ZXJ5XG4gICAgICBjb25zdCBtYW5pZmVzdEVjcjogTWFuaWZlc3RFY3IgPSB7XG4gICAgICAgIHJlcG9zaXRvcnlOYW1lOiBlY3IucmVwb3NpdG9yeU5hbWVcbiAgICAgIH07XG4gICAgICBhcHAuZ2V0TWFuaWZlc3RDb2xsZWN0b3IoKS5zZXRFY3IobWFuaWZlc3RFY3IpO1xuXG4gICAgICByZXR1cm4gZWNyO1xuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVjciBleHRlbmRzIFJlcG9zaXRvcnkge1xuICBwcml2YXRlIG91dHB1dHM6IENmbk91dHB1dFtdID0gW107XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBFY3JQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgRWNyLmdldFJlcG9zaXRvcnlQcm9wcyhwcm9wcykpO1xuXG4gICAgdGhpcy5vdXRwdXRzLnB1c2goXG4gICAgICAvLyBUT0RPOiByZXZlcnQgdG8gYCR7aWR9UmVwb3NpdG9yeU5hbWVgIGFmdGVyIHdlYmFwcCByZWRlcGxveSAodGVtcCBmaXggdG8gcHJlc2VydmUgY3Jvc3Mtc3RhY2sgZXhwb3J0KVxuICAgICAgbmV3IENmbk91dHB1dCh0aGlzLCBcImVjclJlcG9zaXRvcnlcIiwge1xuICAgICAgICBrZXk6IGAke2lkfVJlcG9zaXRvcnlOYW1lYCxcbiAgICAgICAgdmFsdWU6IHRoaXMucmVwb3NpdG9yeU5hbWUsXG4gICAgICAgIGV4cG9ydE5hbWU6IGAke2lkfVJlcG9zaXRvcnlOYW1lYFxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgc3RhdGljIGdldFJlcG9zaXRvcnlQcm9wcyhwcm9wcz86IEVjclByb3BzKTogUmVwb3NpdG9yeVByb3BzIHtcbiAgICAvLyB0b2RvOiBsaWZlQ3ljbGVSdWxlc1xuICAgIC8vIHRvZG86IEVuY3J5cHRpb24gJiBFbmNyeXB0aW9uS2V5IChkZWZhdWx0IGlzIEFXUyBtYW5hZ2VkIEtNUyBrZXkpXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLihwcm9wcz8ucmVwb3NpdG9yeU5hbWUgJiYgeyByZXBvc2l0b3J5TmFtZTogcHJvcHMucmVwb3NpdG9yeU5hbWUgfSksXG4gICAgICBpbWFnZVNjYW5PblB1c2g6IHRydWUsXG4gICAgICBpbWFnZVRhZ011dGFiaWxpdHk6IFRhZ011dGFiaWxpdHkuTVVUQUJMRSxcbiAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuUkVUQUlOXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZChpZDogc3RyaW5nLCBwcm9wcz86IEVjclByb3BzKTogKHNjb3BlOiBTdGFja0J1aWxkZXIpID0+IEVjciB7XG4gICAgcmV0dXJuIChzY29wZTogU3RhY2tCdWlsZGVyKSA9PiBuZXcgRWNyKHNjb3BlLmdldFN0YWNrKCksIGlkLCBwcm9wcyk7XG4gIH1cbn1cbiJdfQ==
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3Mvc3RvcmFnZS9lY3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsaURBSTZCO0FBQzdCLDZDQUF1RDtBQVV2RCxNQUFhLFVBQVU7SUFDckIsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFVLEVBQUUsS0FBZ0I7UUFDdkMsT0FBTyxDQUFDLEdBQVEsRUFBRSxLQUFnQixFQUFFLEVBQUU7WUFDcEMsTUFBTSxRQUFRLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUM3QixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBRXpDLG9FQUFvRTtZQUNwRSxNQUFNLFdBQVcsR0FBZ0I7Z0JBQy9CLGNBQWMsRUFBRSxHQUFHLENBQUMsY0FBYzthQUNuQyxDQUFDO1lBQ0YsR0FBRyxDQUFDLG9CQUFvQixFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRS9DLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBZkQsZ0NBZUM7QUFFRCxNQUFhLEdBQUksU0FBUSxvQkFBVTtJQUNqQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWdCO1FBQ3hELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRWhELElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLGdCQUFnQixFQUFFO1lBQ3pDLEdBQUcsRUFBRSxHQUFHLEVBQUUsZ0JBQWdCO1lBQzFCLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYztZQUMxQixVQUFVLEVBQUUsR0FBRyxFQUFFLGdCQUFnQjtTQUNsQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEtBQWdCO1FBQ3hDLHVCQUF1QjtRQUN2QixvRUFBb0U7UUFDcEUsT0FBTztZQUNMLEdBQUcsQ0FBQyxLQUFLLEVBQUUsY0FBYyxJQUFJLEVBQUUsY0FBYyxFQUFFLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN0RSxlQUFlLEVBQUUsSUFBSTtZQUNyQixrQkFBa0IsRUFBRSx1QkFBYSxDQUFDLE9BQU87WUFDekMsYUFBYSxFQUFFLElBQUk7WUFDbkIsYUFBYSxFQUFFLDJCQUFhLENBQUMsT0FBTztTQUNyQyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBVSxFQUFFLEtBQWdCO1FBQ3ZDLE9BQU8sQ0FBQyxLQUFtQixFQUFFLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7Q0FDRjtBQTFCRCxrQkEwQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge1xuICBSZXBvc2l0b3J5LFxuICB0eXBlIFJlcG9zaXRvcnlQcm9wcyxcbiAgVGFnTXV0YWJpbGl0eVxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjclwiO1xuaW1wb3J0IHsgQ2ZuT3V0cHV0LCBSZW1vdmFsUG9saWN5IH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5cbmltcG9ydCB0eXBlIEFwcCBmcm9tIFwiLi4vLi4vLi4vYXBwXCI7XG5pbXBvcnQgeyB0eXBlIFN0YWNrQnVpbGRlciB9IGZyb20gXCIuLi9iYXNlL2F3c1N0YWNrXCI7XG5pbXBvcnQgeyB0eXBlIE1hbmlmZXN0RWNyIH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL21hbmlmZXN0V3JpdGVyLmpzXCI7XG5cbmludGVyZmFjZSBFY3JQcm9wcyB7XG4gIHJlcG9zaXRvcnlOYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgRWNyRmFjdG9yeSB7XG4gIHN0YXRpYyBidWlsZChpZDogc3RyaW5nLCBwcm9wcz86IEVjclByb3BzKSB7XG4gICAgcmV0dXJuIChhcHA6IEFwcCwgc2NvcGU6IENvbnN0cnVjdCkgPT4ge1xuICAgICAgY29uc3QgZWNyUHJvcHMgPSBwcm9wcyA/PyB7fTtcbiAgICAgIGNvbnN0IGVjciA9IG5ldyBFY3Ioc2NvcGUsIGlkLCBlY3JQcm9wcyk7XG5cbiAgICAgIC8vIFJlZ2lzdGVyIEVDUiByZXBvc2l0b3J5IHdpdGggbWFuaWZlc3QgY29sbGVjdG9yIGZvciBDTEkgZGlzY292ZXJ5XG4gICAgICBjb25zdCBtYW5pZmVzdEVjcjogTWFuaWZlc3RFY3IgPSB7XG4gICAgICAgIHJlcG9zaXRvcnlOYW1lOiBlY3IucmVwb3NpdG9yeU5hbWVcbiAgICAgIH07XG4gICAgICBhcHAuZ2V0TWFuaWZlc3RDb2xsZWN0b3IoKS5zZXRFY3IobWFuaWZlc3RFY3IpO1xuXG4gICAgICByZXR1cm4gZWNyO1xuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVjciBleHRlbmRzIFJlcG9zaXRvcnkge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IEVjclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBFY3IuZ2V0UmVwb3NpdG9yeVByb3BzKHByb3BzKSk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke2lkfVJlcG9zaXRvcnlOYW1lYCwge1xuICAgICAga2V5OiBgJHtpZH1SZXBvc2l0b3J5TmFtZWAsXG4gICAgICB2YWx1ZTogdGhpcy5yZXBvc2l0b3J5TmFtZSxcbiAgICAgIGV4cG9ydE5hbWU6IGAke2lkfVJlcG9zaXRvcnlOYW1lYFxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGdldFJlcG9zaXRvcnlQcm9wcyhwcm9wcz86IEVjclByb3BzKTogUmVwb3NpdG9yeVByb3BzIHtcbiAgICAvLyB0b2RvOiBsaWZlQ3ljbGVSdWxlc1xuICAgIC8vIHRvZG86IEVuY3J5cHRpb24gJiBFbmNyeXB0aW9uS2V5IChkZWZhdWx0IGlzIEFXUyBtYW5hZ2VkIEtNUyBrZXkpXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLihwcm9wcz8ucmVwb3NpdG9yeU5hbWUgJiYgeyByZXBvc2l0b3J5TmFtZTogcHJvcHMucmVwb3NpdG9yeU5hbWUgfSksXG4gICAgICBpbWFnZVNjYW5PblB1c2g6IHRydWUsXG4gICAgICBpbWFnZVRhZ011dGFiaWxpdHk6IFRhZ011dGFiaWxpdHkuTVVUQUJMRSxcbiAgICAgIGVtcHR5T25EZWxldGU6IHRydWUsXG4gICAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1lcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkKGlkOiBzdHJpbmcsIHByb3BzPzogRWNyUHJvcHMpOiAoc2NvcGU6IFN0YWNrQnVpbGRlcikgPT4gRWNyIHtcbiAgICByZXR1cm4gKHNjb3BlOiBTdGFja0J1aWxkZXIpID0+IG5ldyBFY3Ioc2NvcGUuZ2V0U3RhY2soKSwgaWQsIHByb3BzKTtcbiAgfVxufVxuIl19
@@ -1,16 +1,16 @@
1
1
  import { Bucket, type BucketProps } from "aws-cdk-lib/aws-s3";
2
2
  import { type Construct } from "constructs";
3
- export type BackupVaultTier = "standard" | "resilient" | "enterprise";
3
+ import { type BackupTier } from "../../../utils/backupTierMapping";
4
4
  export interface WebsiteHostingConfig {
5
5
  readonly indexDocument: string;
6
6
  readonly errorDocument?: string;
7
7
  }
8
8
  export interface S3BucketProps extends BucketProps {
9
- backupVaultTier?: BackupVaultTier;
9
+ backupVaultTier?: BackupTier;
10
10
  publicReadAccess?: boolean;
11
11
  websiteHosting?: WebsiteHostingConfig;
12
12
  }
13
13
  export declare class S3Bucket extends Bucket {
14
- readonly backupVaultTier?: BackupVaultTier;
14
+ readonly backupVaultTier?: BackupTier;
15
15
  constructor(scope: Construct, id: string, props?: S3BucketProps);
16
16
  }
@@ -39,4 +39,4 @@ class S3Bucket extends aws_s3_1.Bucket {
39
39
  }
40
40
  }
41
41
  exports.S3Bucket = S3Bucket;
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9zdG9yYWdlL3MzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFzRDtBQUN0RCwrQ0FJNEI7QUFnQjVCLFNBQVMsaUJBQWlCLENBQUMsSUFBc0I7SUFDL0MsT0FBTyxJQUFJLEtBQUssV0FBVyxJQUFJLElBQUksS0FBSyxZQUFZLENBQUM7QUFDdkQsQ0FBQztBQUVELE1BQWEsUUFBUyxTQUFRLGVBQU07SUFHbEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxRQUF1QixFQUFFO1FBQ2pFLE1BQU0sRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLEdBQUcsUUFBUSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQy9ELE1BQU0sUUFBUSxHQUNaLEtBQUssQ0FBQyxnQkFBZ0IsS0FBSyxJQUFJLElBQUksY0FBYyxLQUFLLFNBQVMsQ0FBQztRQUNsRSxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsYUFBYSxLQUFLLDJCQUFhLENBQUMsTUFBTSxDQUFDO1FBQ2hFLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLElBQUksaUJBQWlCLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFeEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixHQUFHLFFBQVE7WUFDWCxVQUFVLEVBQUUsSUFBSTtZQUNoQixpQkFBaUIsRUFBRSxDQUFDLFVBQVU7WUFDOUIsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhLElBQUksMkJBQWEsQ0FBQyxPQUFPO1lBRTNELGdCQUFnQixFQUFFLFFBQVE7WUFDMUIsR0FBRyxDQUFDLFFBQVEsSUFBSTtnQkFDZCxpQkFBaUIsRUFBRSxJQUFJLDBCQUFpQixDQUFDO29CQUN2QyxlQUFlLEVBQUUsS0FBSztvQkFDdEIsaUJBQWlCLEVBQUUsS0FBSztvQkFDeEIsZ0JBQWdCLEVBQUUsS0FBSztvQkFDdkIscUJBQXFCLEVBQUUsS0FBSztpQkFDN0IsQ0FBQzthQUNILENBQUM7WUFFRixHQUFHLENBQUMsY0FBYyxJQUFJO2dCQUNwQixvQkFBb0IsRUFBRSxjQUFjLENBQUMsYUFBYTtnQkFDbEQsb0JBQW9CLEVBQUUsY0FBYyxDQUFDLGFBQWEsSUFBSSxZQUFZO2FBQ25FLENBQUM7WUFFRixTQUFTO1lBQ1QsY0FBYyxFQUNaLFNBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjO2dCQUNoQyxDQUFDLENBQUMsQ0FBQyxFQUFFLDJCQUEyQixFQUFFLHNCQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFDckUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxjQUFjO1NBQzNCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDO0lBQ3pDLENBQUM7Q0FDRjtBQXhDRCw0QkF3Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEdXJhdGlvbiwgUmVtb3ZhbFBvbGljeSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHtcbiAgQmxvY2tQdWJsaWNBY2Nlc3MsXG4gIEJ1Y2tldCxcbiAgdHlwZSBCdWNrZXRQcm9wc1xufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzXCI7XG5pbXBvcnQgeyB0eXBlIENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmV4cG9ydCB0eXBlIEJhY2t1cFZhdWx0VGllciA9IFwic3RhbmRhcmRcIiB8IFwicmVzaWxpZW50XCIgfCBcImVudGVycHJpc2VcIjtcblxuZXhwb3J0IGludGVyZmFjZSBXZWJzaXRlSG9zdGluZ0NvbmZpZyB7XG4gIHJlYWRvbmx5IGluZGV4RG9jdW1lbnQ6IHN0cmluZztcbiAgcmVhZG9ubHkgZXJyb3JEb2N1bWVudD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTM0J1Y2tldFByb3BzIGV4dGVuZHMgQnVja2V0UHJvcHMge1xuICBiYWNrdXBWYXVsdFRpZXI/OiBCYWNrdXBWYXVsdFRpZXI7XG4gIHB1YmxpY1JlYWRBY2Nlc3M/OiBib29sZWFuO1xuICB3ZWJzaXRlSG9zdGluZz86IFdlYnNpdGVIb3N0aW5nQ29uZmlnO1xufVxuXG5mdW5jdGlvbiBzaG91bGRBdXRvVmVyc2lvbih0aWVyPzogQmFja3VwVmF1bHRUaWVyKTogYm9vbGVhbiB7XG4gIHJldHVybiB0aWVyID09PSBcInJlc2lsaWVudFwiIHx8IHRpZXIgPT09IFwiZW50ZXJwcmlzZVwiO1xufVxuXG5leHBvcnQgY2xhc3MgUzNCdWNrZXQgZXh0ZW5kcyBCdWNrZXQge1xuICBwdWJsaWMgcmVhZG9ubHkgYmFja3VwVmF1bHRUaWVyPzogQmFja3VwVmF1bHRUaWVyO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTM0J1Y2tldFByb3BzID0ge30pIHtcbiAgICBjb25zdCB7IHdlYnNpdGVIb3N0aW5nLCBiYWNrdXBWYXVsdFRpZXIsIC4uLmNka1Byb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBpc1B1YmxpYyA9XG4gICAgICBwcm9wcy5wdWJsaWNSZWFkQWNjZXNzID09PSB0cnVlIHx8IHdlYnNpdGVIb3N0aW5nICE9PSB1bmRlZmluZWQ7XG4gICAgY29uc3QgaXNSZXRhaW5lZCA9IHByb3BzLnJlbW92YWxQb2xpY3kgPT09IFJlbW92YWxQb2xpY3kuUkVUQUlOO1xuICAgIGNvbnN0IHZlcnNpb25lZCA9IHByb3BzLnZlcnNpb25lZCA/PyBzaG91bGRBdXRvVmVyc2lvbihiYWNrdXBWYXVsdFRpZXIpO1xuXG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5jZGtQcm9wcyxcbiAgICAgIGVuZm9yY2VTU0w6IHRydWUsXG4gICAgICBhdXRvRGVsZXRlT2JqZWN0czogIWlzUmV0YWluZWQsXG4gICAgICByZW1vdmFsUG9saWN5OiBwcm9wcy5yZW1vdmFsUG9saWN5ID8/IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcblxuICAgICAgcHVibGljUmVhZEFjY2VzczogaXNQdWJsaWMsXG4gICAgICAuLi4oaXNQdWJsaWMgJiYge1xuICAgICAgICBibG9ja1B1YmxpY0FjY2VzczogbmV3IEJsb2NrUHVibGljQWNjZXNzKHtcbiAgICAgICAgICBibG9ja1B1YmxpY0FjbHM6IGZhbHNlLFxuICAgICAgICAgIGJsb2NrUHVibGljUG9saWN5OiBmYWxzZSxcbiAgICAgICAgICBpZ25vcmVQdWJsaWNBY2xzOiBmYWxzZSxcbiAgICAgICAgICByZXN0cmljdFB1YmxpY0J1Y2tldHM6IGZhbHNlXG4gICAgICAgIH0pXG4gICAgICB9KSxcblxuICAgICAgLi4uKHdlYnNpdGVIb3N0aW5nICYmIHtcbiAgICAgICAgd2Vic2l0ZUluZGV4RG9jdW1lbnQ6IHdlYnNpdGVIb3N0aW5nLmluZGV4RG9jdW1lbnQsXG4gICAgICAgIHdlYnNpdGVFcnJvckRvY3VtZW50OiB3ZWJzaXRlSG9zdGluZy5lcnJvckRvY3VtZW50ID8/IFwiZXJyb3IuaHRtbFwiXG4gICAgICB9KSxcblxuICAgICAgdmVyc2lvbmVkLFxuICAgICAgbGlmZWN5Y2xlUnVsZXM6XG4gICAgICAgIHZlcnNpb25lZCAmJiAhcHJvcHMubGlmZWN5Y2xlUnVsZXNcbiAgICAgICAgICA/IFt7IG5vbmN1cnJlbnRWZXJzaW9uRXhwaXJhdGlvbjogRHVyYXRpb24uZGF5cygzMCksIGVuYWJsZWQ6IHRydWUgfV1cbiAgICAgICAgICA6IHByb3BzLmxpZmVjeWNsZVJ1bGVzXG4gICAgfSk7XG5cbiAgICB0aGlzLmJhY2t1cFZhdWx0VGllciA9IGJhY2t1cFZhdWx0VGllcjtcbiAgfVxufVxuIl19
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9zdG9yYWdlL3MzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFzRDtBQUN0RCwrQ0FJNEI7QUFlNUIsU0FBUyxpQkFBaUIsQ0FBQyxJQUFpQjtJQUMxQyxPQUFPLElBQUksS0FBSyxXQUFXLElBQUksSUFBSSxLQUFLLFlBQVksQ0FBQztBQUN2RCxDQUFDO0FBRUQsTUFBYSxRQUFTLFNBQVEsZUFBTTtJQUdsQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLFFBQXVCLEVBQUU7UUFDakUsTUFBTSxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsR0FBRyxRQUFRLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDL0QsTUFBTSxRQUFRLEdBQ1osS0FBSyxDQUFDLGdCQUFnQixLQUFLLElBQUksSUFBSSxjQUFjLEtBQUssU0FBUyxDQUFDO1FBQ2xFLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxhQUFhLEtBQUssMkJBQWEsQ0FBQyxNQUFNLENBQUM7UUFDaEUsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsSUFBSSxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUV4RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLEdBQUcsUUFBUTtZQUNYLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLGlCQUFpQixFQUFFLENBQUMsVUFBVTtZQUM5QixhQUFhLEVBQUUsS0FBSyxDQUFDLGFBQWEsSUFBSSwyQkFBYSxDQUFDLE9BQU87WUFFM0QsZ0JBQWdCLEVBQUUsUUFBUTtZQUMxQixHQUFHLENBQUMsUUFBUSxJQUFJO2dCQUNkLGlCQUFpQixFQUFFLElBQUksMEJBQWlCLENBQUM7b0JBQ3ZDLGVBQWUsRUFBRSxLQUFLO29CQUN0QixpQkFBaUIsRUFBRSxLQUFLO29CQUN4QixnQkFBZ0IsRUFBRSxLQUFLO29CQUN2QixxQkFBcUIsRUFBRSxLQUFLO2lCQUM3QixDQUFDO2FBQ0gsQ0FBQztZQUVGLEdBQUcsQ0FBQyxjQUFjLElBQUk7Z0JBQ3BCLG9CQUFvQixFQUFFLGNBQWMsQ0FBQyxhQUFhO2dCQUNsRCxvQkFBb0IsRUFBRSxjQUFjLENBQUMsYUFBYSxJQUFJLFlBQVk7YUFDbkUsQ0FBQztZQUVGLFNBQVM7WUFDVCxjQUFjLEVBQ1osU0FBUyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWM7Z0JBQ2hDLENBQUMsQ0FBQyxDQUFDLEVBQUUsMkJBQTJCLEVBQUUsc0JBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO2dCQUNyRSxDQUFDLENBQUMsS0FBSyxDQUFDLGNBQWM7U0FDM0IsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7SUFDekMsQ0FBQztDQUNGO0FBeENELDRCQXdDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IER1cmF0aW9uLCBSZW1vdmFsUG9saWN5IH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQge1xuICBCbG9ja1B1YmxpY0FjY2VzcyxcbiAgQnVja2V0LFxuICB0eXBlIEJ1Y2tldFByb3BzXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtczNcIjtcbmltcG9ydCB7IHR5cGUgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IHR5cGUgQmFja3VwVGllciB9IGZyb20gXCIuLi8uLi8uLi91dGlscy9iYWNrdXBUaWVyTWFwcGluZ1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdlYnNpdGVIb3N0aW5nQ29uZmlnIHtcbiAgcmVhZG9ubHkgaW5kZXhEb2N1bWVudDogc3RyaW5nO1xuICByZWFkb25seSBlcnJvckRvY3VtZW50Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFMzQnVja2V0UHJvcHMgZXh0ZW5kcyBCdWNrZXRQcm9wcyB7XG4gIGJhY2t1cFZhdWx0VGllcj86IEJhY2t1cFRpZXI7XG4gIHB1YmxpY1JlYWRBY2Nlc3M/OiBib29sZWFuO1xuICB3ZWJzaXRlSG9zdGluZz86IFdlYnNpdGVIb3N0aW5nQ29uZmlnO1xufVxuXG5mdW5jdGlvbiBzaG91bGRBdXRvVmVyc2lvbih0aWVyPzogQmFja3VwVGllcik6IGJvb2xlYW4ge1xuICByZXR1cm4gdGllciA9PT0gXCJyZXNpbGllbnRcIiB8fCB0aWVyID09PSBcImVudGVycHJpc2VcIjtcbn1cblxuZXhwb3J0IGNsYXNzIFMzQnVja2V0IGV4dGVuZHMgQnVja2V0IHtcbiAgcHVibGljIHJlYWRvbmx5IGJhY2t1cFZhdWx0VGllcj86IEJhY2t1cFRpZXI7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFMzQnVja2V0UHJvcHMgPSB7fSkge1xuICAgIGNvbnN0IHsgd2Vic2l0ZUhvc3RpbmcsIGJhY2t1cFZhdWx0VGllciwgLi4uY2RrUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGlzUHVibGljID1cbiAgICAgIHByb3BzLnB1YmxpY1JlYWRBY2Nlc3MgPT09IHRydWUgfHwgd2Vic2l0ZUhvc3RpbmcgIT09IHVuZGVmaW5lZDtcbiAgICBjb25zdCBpc1JldGFpbmVkID0gcHJvcHMucmVtb3ZhbFBvbGljeSA9PT0gUmVtb3ZhbFBvbGljeS5SRVRBSU47XG4gICAgY29uc3QgdmVyc2lvbmVkID0gcHJvcHMudmVyc2lvbmVkID8/IHNob3VsZEF1dG9WZXJzaW9uKGJhY2t1cFZhdWx0VGllcik7XG5cbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLmNka1Byb3BzLFxuICAgICAgZW5mb3JjZVNTTDogdHJ1ZSxcbiAgICAgIGF1dG9EZWxldGVPYmplY3RzOiAhaXNSZXRhaW5lZCxcbiAgICAgIHJlbW92YWxQb2xpY3k6IHByb3BzLnJlbW92YWxQb2xpY3kgPz8gUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuXG4gICAgICBwdWJsaWNSZWFkQWNjZXNzOiBpc1B1YmxpYyxcbiAgICAgIC4uLihpc1B1YmxpYyAmJiB7XG4gICAgICAgIGJsb2NrUHVibGljQWNjZXNzOiBuZXcgQmxvY2tQdWJsaWNBY2Nlc3Moe1xuICAgICAgICAgIGJsb2NrUHVibGljQWNsczogZmFsc2UsXG4gICAgICAgICAgYmxvY2tQdWJsaWNQb2xpY3k6IGZhbHNlLFxuICAgICAgICAgIGlnbm9yZVB1YmxpY0FjbHM6IGZhbHNlLFxuICAgICAgICAgIHJlc3RyaWN0UHVibGljQnVja2V0czogZmFsc2VcbiAgICAgICAgfSlcbiAgICAgIH0pLFxuXG4gICAgICAuLi4od2Vic2l0ZUhvc3RpbmcgJiYge1xuICAgICAgICB3ZWJzaXRlSW5kZXhEb2N1bWVudDogd2Vic2l0ZUhvc3RpbmcuaW5kZXhEb2N1bWVudCxcbiAgICAgICAgd2Vic2l0ZUVycm9yRG9jdW1lbnQ6IHdlYnNpdGVIb3N0aW5nLmVycm9yRG9jdW1lbnQgPz8gXCJlcnJvci5odG1sXCJcbiAgICAgIH0pLFxuXG4gICAgICB2ZXJzaW9uZWQsXG4gICAgICBsaWZlY3ljbGVSdWxlczpcbiAgICAgICAgdmVyc2lvbmVkICYmICFwcm9wcy5saWZlY3ljbGVSdWxlc1xuICAgICAgICAgID8gW3sgbm9uY3VycmVudFZlcnNpb25FeHBpcmF0aW9uOiBEdXJhdGlvbi5kYXlzKDMwKSwgZW5hYmxlZDogdHJ1ZSB9XVxuICAgICAgICAgIDogcHJvcHMubGlmZWN5Y2xlUnVsZXNcbiAgICB9KTtcblxuICAgIHRoaXMuYmFja3VwVmF1bHRUaWVyID0gYmFja3VwVmF1bHRUaWVyO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,5 @@
1
+ export * from "./awsCustomResource";
2
+ export * from "./codeBuild";
3
+ export * from "./customResource";
4
+ export * from "./customResourceProvider";
5
+ export * from "./resourceShare";
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./awsCustomResource"), exports);
18
+ __exportStar(require("./codeBuild"), exports);
19
+ __exportStar(require("./customResource"), exports);
20
+ __exportStar(require("./customResourceProvider"), exports);
21
+ __exportStar(require("./resourceShare"), exports);
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy91dGlsaXRpZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNEQUFvQztBQUNwQyw4Q0FBNEI7QUFDNUIsbURBQWlDO0FBQ2pDLDJEQUF5QztBQUN6QyxrREFBZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9hd3NDdXN0b21SZXNvdXJjZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29kZUJ1aWxkXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jdXN0b21SZXNvdXJjZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY3VzdG9tUmVzb3VyY2VQcm92aWRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcmVzb3VyY2VTaGFyZVwiO1xuIl19
@@ -0,0 +1,11 @@
1
+ /** Tag key used by AWS Backup plan selection rules */
2
+ export declare const BACKUP_TIER_TAG_KEY = "fjall:disasterRecovery:tier";
3
+ /** Valid backup tier names */
4
+ export type BackupTier = "standard" | "resilient" | "enterprise";
5
+ /**
6
+ * Shared mapping from application backup tier names to AWS Backup plan tag values.
7
+ *
8
+ * Used by both App.applyBackupTag() (app-level tag) and StandardTagsAspect
9
+ * (per-resource override tag) to ensure consistent tier → tag translation.
10
+ */
11
+ export declare const BACKUP_TIER_TAG_MAP: Readonly<Record<BackupTier, string>>;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BACKUP_TIER_TAG_MAP = exports.BACKUP_TIER_TAG_KEY = void 0;
4
+ /** Tag key used by AWS Backup plan selection rules */
5
+ exports.BACKUP_TIER_TAG_KEY = "fjall:disasterRecovery:tier";
6
+ /**
7
+ * Shared mapping from application backup tier names to AWS Backup plan tag values.
8
+ *
9
+ * Used by both App.applyBackupTag() (app-level tag) and StandardTagsAspect
10
+ * (per-resource override tag) to ensure consistent tier → tag translation.
11
+ */
12
+ exports.BACKUP_TIER_TAG_MAP = Object.freeze({
13
+ standard: "default",
14
+ resilient: "resilient",
15
+ enterprise: "enterprise"
16
+ });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja3VwVGllck1hcHBpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvdXRpbHMvYmFja3VwVGllck1hcHBpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsc0RBQXNEO0FBQ3pDLFFBQUEsbUJBQW1CLEdBQUcsNkJBQTZCLENBQUM7QUFLakU7Ozs7O0dBS0c7QUFDVSxRQUFBLG1CQUFtQixHQUM5QixNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ1osUUFBUSxFQUFFLFNBQVM7SUFDbkIsU0FBUyxFQUFFLFdBQVc7SUFDdEIsVUFBVSxFQUFFLFlBQVk7Q0FDekIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIFRhZyBrZXkgdXNlZCBieSBBV1MgQmFja3VwIHBsYW4gc2VsZWN0aW9uIHJ1bGVzICovXG5leHBvcnQgY29uc3QgQkFDS1VQX1RJRVJfVEFHX0tFWSA9IFwiZmphbGw6ZGlzYXN0ZXJSZWNvdmVyeTp0aWVyXCI7XG5cbi8qKiBWYWxpZCBiYWNrdXAgdGllciBuYW1lcyAqL1xuZXhwb3J0IHR5cGUgQmFja3VwVGllciA9IFwic3RhbmRhcmRcIiB8IFwicmVzaWxpZW50XCIgfCBcImVudGVycHJpc2VcIjtcblxuLyoqXG4gKiBTaGFyZWQgbWFwcGluZyBmcm9tIGFwcGxpY2F0aW9uIGJhY2t1cCB0aWVyIG5hbWVzIHRvIEFXUyBCYWNrdXAgcGxhbiB0YWcgdmFsdWVzLlxuICpcbiAqIFVzZWQgYnkgYm90aCBBcHAuYXBwbHlCYWNrdXBUYWcoKSAoYXBwLWxldmVsIHRhZykgYW5kIFN0YW5kYXJkVGFnc0FzcGVjdFxuICogKHBlci1yZXNvdXJjZSBvdmVycmlkZSB0YWcpIHRvIGVuc3VyZSBjb25zaXN0ZW50IHRpZXIg4oaSIHRhZyB0cmFuc2xhdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IEJBQ0tVUF9USUVSX1RBR19NQVA6IFJlYWRvbmx5PFJlY29yZDxCYWNrdXBUaWVyLCBzdHJpbmc+PiA9XG4gIE9iamVjdC5mcmVlemUoe1xuICAgIHN0YW5kYXJkOiBcImRlZmF1bHRcIixcbiAgICByZXNpbGllbnQ6IFwicmVzaWxpZW50XCIsXG4gICAgZW50ZXJwcmlzZTogXCJlbnRlcnByaXNlXCJcbiAgfSk7XG4iXX0=
@@ -10,3 +10,9 @@ export declare function toPascalCase(name: string): string;
10
10
  * e.g., "MyApp" -> "my-app", "AWSLambda" -> "aws-lambda", "myApp" -> "my-app"
11
11
  */
12
12
  export declare function toKebab(str: string): string;
13
+ /**
14
+ * Convert a name to a valid RDS database name (snake_case).
15
+ * RDS API allows letters, numbers, and underscores for PostgreSQL/MySQL DatabaseName.
16
+ * Hyphens are rejected, so convert them to underscores.
17
+ */
18
+ export declare function toValidDatabaseName(name: string): string;
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.capitaliseString = capitaliseString;
4
4
  exports.toPascalCase = toPascalCase;
5
5
  exports.toKebab = toKebab;
6
+ exports.toValidDatabaseName = toValidDatabaseName;
6
7
  function capitaliseString(string) {
7
8
  return String(string).charAt(0).toUpperCase() + String(string).slice(1);
8
9
  }
@@ -27,4 +28,12 @@ function toKebab(str) {
27
28
  .replace(/[\s_]+/g, "-")
28
29
  .toLowerCase();
29
30
  }
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FwaXRhbGlzZVN0cmluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi91dGlscy9jYXBpdGFsaXNlU3RyaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNENBRUM7QUFNRCxvQ0FJQztBQU9ELDBCQU1DO0FBekJELFNBQWdCLGdCQUFnQixDQUFDLE1BQWM7SUFDN0MsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUUsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLFlBQVksQ0FBQyxJQUFZO0lBQ3ZDLE9BQU8sSUFBSTtTQUNSLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDOUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixPQUFPLENBQUMsR0FBVztJQUNqQyxPQUFPLEdBQUc7U0FDUCxPQUFPLENBQUMsdUJBQXVCLEVBQUUsT0FBTyxDQUFDO1NBQ3pDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLENBQUM7U0FDckMsT0FBTyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUM7U0FDdkIsV0FBVyxFQUFFLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBjYXBpdGFsaXNlU3RyaW5nKHN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIFN0cmluZyhzdHJpbmcpLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgU3RyaW5nKHN0cmluZykuc2xpY2UoMSk7XG59XG5cbi8qKlxuICogQ29udmVydCBhIGtlYmFiLWNhc2Ugb3Igc25ha2VfY2FzZSBuYW1lIHRvIFBhc2NhbENhc2UuXG4gKiBlLmcuLCBcIm15LWFwcFwiIC0+IFwiTXlBcHBcIiwgXCJteV9hcHBcIiAtPiBcIk15QXBwXCJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvUGFzY2FsQ2FzZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gbmFtZVxuICAgIC5yZXBsYWNlKC9bLV9dKC4pL2csIChfLCBjKSA9PiBjLnRvVXBwZXJDYXNlKCkpXG4gICAgLnJlcGxhY2UoL14uLywgKGMpID0+IGMudG9VcHBlckNhc2UoKSk7XG59XG5cbi8qKlxuICogQ29udmVydCBhbnkgY2FzZSAoUGFzY2FsQ2FzZSwgY2FtZWxDYXNlLCBrZWJhYi1jYXNlLCBzbmFrZV9jYXNlKSB0byBrZWJhYi1jYXNlLlxuICogVGhyZWUtcGFzcyByZWdleDogc3BsaXQgYWNyb255bXMsIHNwbGl0IGNhbWVsIGJvdW5kYXJpZXMsIHJlcGxhY2Ugc2VwYXJhdG9ycy5cbiAqIGUuZy4sIFwiTXlBcHBcIiAtPiBcIm15LWFwcFwiLCBcIkFXU0xhbWJkYVwiIC0+IFwiYXdzLWxhbWJkYVwiLCBcIm15QXBwXCIgLT4gXCJteS1hcHBcIlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9LZWJhYihzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBzdHJcbiAgICAucmVwbGFjZSgvKFtBLVpdKykoW0EtWl1bYS16XSkvZywgXCIkMS0kMlwiKVxuICAgIC5yZXBsYWNlKC8oW2EtelxcZF0pKFtBLVpdKS9nLCBcIiQxLSQyXCIpXG4gICAgLnJlcGxhY2UoL1tcXHNfXSsvZywgXCItXCIpXG4gICAgLnRvTG93ZXJDYXNlKCk7XG59XG4iXX0=
31
+ /**
32
+ * Convert a name to a valid RDS database name (snake_case).
33
+ * RDS API allows letters, numbers, and underscores for PostgreSQL/MySQL DatabaseName.
34
+ * Hyphens are rejected, so convert them to underscores.
35
+ */
36
+ function toValidDatabaseName(name) {
37
+ return toKebab(name).replace(/-/g, "_");
38
+ }
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FwaXRhbGlzZVN0cmluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi91dGlscy9jYXBpdGFsaXNlU3RyaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNENBRUM7QUFNRCxvQ0FJQztBQU9ELDBCQU1DO0FBT0Qsa0RBRUM7QUFsQ0QsU0FBZ0IsZ0JBQWdCLENBQUMsTUFBYztJQUM3QyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxRSxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0IsWUFBWSxDQUFDLElBQVk7SUFDdkMsT0FBTyxJQUFJO1NBQ1IsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUM5QyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztBQUMzQyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLE9BQU8sQ0FBQyxHQUFXO0lBQ2pDLE9BQU8sR0FBRztTQUNQLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxPQUFPLENBQUM7U0FDekMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLE9BQU8sQ0FBQztTQUNyQyxPQUFPLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQztTQUN2QixXQUFXLEVBQUUsQ0FBQztBQUNuQixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLG1CQUFtQixDQUFDLElBQVk7SUFDOUMsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGNhcGl0YWxpc2VTdHJpbmcoc3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gU3RyaW5nKHN0cmluZykuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBTdHJpbmcoc3RyaW5nKS5zbGljZSgxKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEga2ViYWItY2FzZSBvciBzbmFrZV9jYXNlIG5hbWUgdG8gUGFzY2FsQ2FzZS5cbiAqIGUuZy4sIFwibXktYXBwXCIgLT4gXCJNeUFwcFwiLCBcIm15X2FwcFwiIC0+IFwiTXlBcHBcIlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9QYXNjYWxDYXNlKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBuYW1lXG4gICAgLnJlcGxhY2UoL1stX10oLikvZywgKF8sIGMpID0+IGMudG9VcHBlckNhc2UoKSlcbiAgICAucmVwbGFjZSgvXi4vLCAoYykgPT4gYy50b1VwcGVyQ2FzZSgpKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGFueSBjYXNlIChQYXNjYWxDYXNlLCBjYW1lbENhc2UsIGtlYmFiLWNhc2UsIHNuYWtlX2Nhc2UpIHRvIGtlYmFiLWNhc2UuXG4gKiBUaHJlZS1wYXNzIHJlZ2V4OiBzcGxpdCBhY3Jvbnltcywgc3BsaXQgY2FtZWwgYm91bmRhcmllcywgcmVwbGFjZSBzZXBhcmF0b3JzLlxuICogZS5nLiwgXCJNeUFwcFwiIC0+IFwibXktYXBwXCIsIFwiQVdTTGFtYmRhXCIgLT4gXCJhd3MtbGFtYmRhXCIsIFwibXlBcHBcIiAtPiBcIm15LWFwcFwiXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0tlYmFiKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0clxuICAgIC5yZXBsYWNlKC8oW0EtWl0rKShbQS1aXVthLXpdKS9nLCBcIiQxLSQyXCIpXG4gICAgLnJlcGxhY2UoLyhbYS16XFxkXSkoW0EtWl0pL2csIFwiJDEtJDJcIilcbiAgICAucmVwbGFjZSgvW1xcc19dKy9nLCBcIi1cIilcbiAgICAudG9Mb3dlckNhc2UoKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgbmFtZSB0byBhIHZhbGlkIFJEUyBkYXRhYmFzZSBuYW1lIChzbmFrZV9jYXNlKS5cbiAqIFJEUyBBUEkgYWxsb3dzIGxldHRlcnMsIG51bWJlcnMsIGFuZCB1bmRlcnNjb3JlcyBmb3IgUG9zdGdyZVNRTC9NeVNRTCBEYXRhYmFzZU5hbWUuXG4gKiBIeXBoZW5zIGFyZSByZWplY3RlZCwgc28gY29udmVydCB0aGVtIHRvIHVuZGVyc2NvcmVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9WYWxpZERhdGFiYXNlTmFtZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdG9LZWJhYihuYW1lKS5yZXBsYWNlKC8tL2csIFwiX1wiKTtcbn1cbiJdfQ==
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Shared connection processor for unified connector interface.
3
+ *
4
+ * This module provides the `processConnections` function that handles
5
+ * both security group rules (IConnectable) and IAM grants (IGrantable)
6
+ * in a unified way.
7
+ *
8
+ * @example
9
+ * // In ECS service setup
10
+ * processConnections(
11
+ * serviceProps.connections,
12
+ * serviceData.taskRole, // IGrantable for IAM
13
+ * service // IConnectable for security groups
14
+ * );
15
+ *
16
+ * @example
17
+ * // In Lambda setup
18
+ * processConnections(
19
+ * props.connections,
20
+ * this.lambdaFunction, // IGrantable (execution role)
21
+ * this.lambdaFunction // IConnectable (security group)
22
+ * );
23
+ */
24
+ import { type IConnectable } from "aws-cdk-lib/aws-ec2";
25
+ import { type IGrantable } from "aws-cdk-lib/aws-iam";
26
+ import { type ConnectionSpec, type ConnectionResult } from "./connector.js";
27
+ /**
28
+ * Process connections from compute resources to data resources.
29
+ *
30
+ * Handles the unified connector interface, dispatching to:
31
+ * - Security group rules for IConnectable and ISecurityGroupConnector resources
32
+ * - IAM grants for IStorageConnector, IDynamoDBConnector, and IQueueConnector resources
33
+ *
34
+ * @param connections - Array of connection specifications
35
+ * @param grantee - The IAM grantee (task role, execution role, etc.)
36
+ * @param connectable - Optional IConnectable for security group rules
37
+ * @returns Array of connection results
38
+ *
39
+ * @example
40
+ * processConnections(
41
+ * [database, { resource: bucket, access: "read" }, queue],
42
+ * taskRole,
43
+ * service
44
+ * );
45
+ */
46
+ export declare function processConnections(connections: ConnectionSpec[], grantee: IGrantable, connectable?: IConnectable): ConnectionResult[];
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+ /**
3
+ * Shared connection processor for unified connector interface.
4
+ *
5
+ * This module provides the `processConnections` function that handles
6
+ * both security group rules (IConnectable) and IAM grants (IGrantable)
7
+ * in a unified way.
8
+ *
9
+ * @example
10
+ * // In ECS service setup
11
+ * processConnections(
12
+ * serviceProps.connections,
13
+ * serviceData.taskRole, // IGrantable for IAM
14
+ * service // IConnectable for security groups
15
+ * );
16
+ *
17
+ * @example
18
+ * // In Lambda setup
19
+ * processConnections(
20
+ * props.connections,
21
+ * this.lambdaFunction, // IGrantable (execution role)
22
+ * this.lambdaFunction // IConnectable (security group)
23
+ * );
24
+ */
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.processConnections = processConnections;
27
+ const connector_js_1 = require("./connector.js");
28
+ /** Default access levels for each connector type. */
29
+ const DEFAULT_ACCESS = {
30
+ storage: "readWrite",
31
+ dynamodb: "readWrite",
32
+ queue: "full"
33
+ };
34
+ /** Grant storage access based on access level. */
35
+ function processStorageConnection(connector, grantee, access) {
36
+ switch (access) {
37
+ case "read":
38
+ return connector.grantRead(grantee);
39
+ case "write":
40
+ return connector.grantWrite(grantee);
41
+ case "readWrite":
42
+ return connector.grantReadWrite(grantee);
43
+ }
44
+ }
45
+ /** Grant DynamoDB access based on access level. */
46
+ function processDynamoDBConnection(connector, grantee, access) {
47
+ switch (access) {
48
+ case "read":
49
+ return connector.grantReadData(grantee);
50
+ case "write":
51
+ return connector.grantWriteData(grantee);
52
+ case "readWrite":
53
+ return connector.grantReadWriteData(grantee);
54
+ }
55
+ }
56
+ /** Grant queue access based on access level. */
57
+ function processQueueConnection(connector, grantee, access) {
58
+ switch (access) {
59
+ case "send":
60
+ return connector.grantSendMessages(grantee);
61
+ case "consume":
62
+ return connector.grantConsumeMessages(grantee);
63
+ case "full":
64
+ return connector.grantFull(grantee);
65
+ }
66
+ }
67
+ /** Build an IAM connection result. */
68
+ function buildIamResult(connector, grant) {
69
+ return { resource: connector, grant, connectionType: connector_js_1.CONNECTION_TYPE.IAM };
70
+ }
71
+ /** Build a security group connection result. */
72
+ function buildSecurityGroupResult(resource) {
73
+ return { resource, connectionType: connector_js_1.CONNECTION_TYPE.SECURITY_GROUP };
74
+ }
75
+ /** Validate and narrow access type for storage/dynamodb connectors. */
76
+ function validateConnectionAccess(access, connectorType, defaultAccess) {
77
+ if (access === undefined)
78
+ return defaultAccess;
79
+ if ((0, connector_js_1.isConnectionAccess)(access))
80
+ return access;
81
+ throw new Error(`Invalid access "${access}" for ${connectorType} connector. ` +
82
+ `Valid values: read, write, readWrite`);
83
+ }
84
+ /** Validate and narrow access type for queue connectors. */
85
+ function validateMessagingAccess(access, defaultAccess) {
86
+ if (access === undefined)
87
+ return defaultAccess;
88
+ if ((0, connector_js_1.isMessagingAccess)(access))
89
+ return access;
90
+ throw new Error(`Invalid access "${access}" for queue connector. ` +
91
+ `Valid values: send, consume, full`);
92
+ }
93
+ /**
94
+ * Require IConnectable for security group operations.
95
+ * Throws a descriptive error if not provided.
96
+ */
97
+ function requireConnectable(connectable, context) {
98
+ if (!connectable) {
99
+ throw new Error(`${context} requires an IConnectable to be provided. ` +
100
+ "Ensure the compute resource (ECS, EC2, Lambda with VPC) implements IConnectable.");
101
+ }
102
+ }
103
+ /**
104
+ * Process connections from compute resources to data resources.
105
+ *
106
+ * Handles the unified connector interface, dispatching to:
107
+ * - Security group rules for IConnectable and ISecurityGroupConnector resources
108
+ * - IAM grants for IStorageConnector, IDynamoDBConnector, and IQueueConnector resources
109
+ *
110
+ * @param connections - Array of connection specifications
111
+ * @param grantee - The IAM grantee (task role, execution role, etc.)
112
+ * @param connectable - Optional IConnectable for security group rules
113
+ * @returns Array of connection results
114
+ *
115
+ * @example
116
+ * processConnections(
117
+ * [database, { resource: bucket, access: "read" }, queue],
118
+ * taskRole,
119
+ * service
120
+ * );
121
+ */
122
+ function processConnections(connections, grantee, connectable) {
123
+ return connections.map((spec) => {
124
+ const { resource, access } = (0, connector_js_1.isConnectionConfig)(spec)
125
+ ? { resource: spec.resource, access: spec.access }
126
+ : { resource: spec, access: undefined };
127
+ // Handle unified connector interface (isConnector now returns AnyConnector)
128
+ if ((0, connector_js_1.isConnector)(resource)) {
129
+ switch (resource.connectorType) {
130
+ case "storage": {
131
+ const validAccess = validateConnectionAccess(access, "storage", DEFAULT_ACCESS.storage);
132
+ return buildIamResult(resource, processStorageConnection(resource, grantee, validAccess));
133
+ }
134
+ case "dynamodb": {
135
+ const validAccess = validateConnectionAccess(access, "dynamodb", DEFAULT_ACCESS.dynamodb);
136
+ return buildIamResult(resource, processDynamoDBConnection(resource, grantee, validAccess));
137
+ }
138
+ case "queue": {
139
+ const validAccess = validateMessagingAccess(access, DEFAULT_ACCESS.queue);
140
+ return buildIamResult(resource, processQueueConnection(resource, grantee, validAccess));
141
+ }
142
+ case "securityGroup":
143
+ case "relational": {
144
+ requireConnectable(connectable, `${resource.connectorType} connector`);
145
+ connectable.connections.allowToDefaultPort(resource);
146
+ return buildSecurityGroupResult(resource);
147
+ }
148
+ }
149
+ }
150
+ // Legacy IConnectable path
151
+ if ((0, connector_js_1.isConnectable)(resource)) {
152
+ requireConnectable(connectable, "IConnectable resource");
153
+ connectable.connections.allowToDefaultPort(resource);
154
+ return buildSecurityGroupResult(resource);
155
+ }
156
+ throw new Error("Connection resource must be either an IConnector or IConnectable");
157
+ });
158
+ }
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvdXRpbHMvY29ubmVjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHOztBQXlKSCxnREF1RUM7QUE1TkQsaURBZXdCO0FBRXhCLHFEQUFxRDtBQUNyRCxNQUFNLGNBQWMsR0FBRztJQUNyQixPQUFPLEVBQUUsV0FBVztJQUNwQixRQUFRLEVBQUUsV0FBVztJQUNyQixLQUFLLEVBQUUsTUFBTTtDQUNMLENBQUM7QUFFWCxrREFBa0Q7QUFDbEQsU0FBUyx3QkFBd0IsQ0FDL0IsU0FBNEIsRUFDNUIsT0FBbUIsRUFDbkIsTUFBd0I7SUFFeEIsUUFBUSxNQUFNLEVBQUUsQ0FBQztRQUNmLEtBQUssTUFBTTtZQUNULE9BQU8sU0FBUyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0QyxLQUFLLE9BQU87WUFDVixPQUFPLFNBQVMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkMsS0FBSyxXQUFXO1lBQ2QsT0FBTyxTQUFTLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdDLENBQUM7QUFDSCxDQUFDO0FBRUQsbURBQW1EO0FBQ25ELFNBQVMseUJBQXlCLENBQ2hDLFNBQTZCLEVBQzdCLE9BQW1CLEVBQ25CLE1BQXdCO0lBRXhCLFFBQVEsTUFBTSxFQUFFLENBQUM7UUFDZixLQUFLLE1BQU07WUFDVCxPQUFPLFNBQVMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUMsS0FBSyxPQUFPO1lBQ1YsT0FBTyxTQUFTLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNDLEtBQUssV0FBVztZQUNkLE9BQU8sU0FBUyxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELENBQUM7QUFDSCxDQUFDO0FBRUQsZ0RBQWdEO0FBQ2hE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QzVDLENBQUM7UUFFRCxNQUFNLElBQUksS0FBSyxDQUNiLGtFQUFrRSxDQUNuRSxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTaGFyZWQgY29ubmVjdGlvbiBwcm9jZXNzb3IgZm9yIHVuaWZpZWQgY29ubmVjdG9yIGludGVyZmFjZS5cbiAqXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyB0aGUgYHByb2Nlc3NDb25uZWN0aW9uc2AgZnVuY3Rpb24gdGhhdCBoYW5kbGVzXG4gKiBib3RoIHNlY3VyaXR5IGdyb3VwIHJ1bGVzIChJQ29ubmVjdGFibGUpIGFuZCBJQU0gZ3JhbnRzIChJR3JhbnRhYmxlKVxuICogaW4gYSB1bmlmaWVkIHdheS5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSW4gRUNTIHNlcnZpY2Ugc2V0dXBcbiAqIHByb2Nlc3NDb25uZWN0aW9ucyhcbiAqICAgc2VydmljZVByb3BzLmNvbm5lY3Rpb25zLFxuICogICBzZXJ2aWNlRGF0YS50YXNrUm9sZSwgIC8vIElHcmFudGFibGUgZm9yIElBTVxuICogICBzZXJ2aWNlICAgICAgICAgICAgICAgLy8gSUNvbm5lY3RhYmxlIGZvciBzZWN1cml0eSBncm91cHNcbiAqICk7XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEluIExhbWJkYSBzZXR1cFxuICogcHJvY2Vzc0Nvbm5lY3Rpb25zKFxuICogICBwcm9wcy5jb25uZWN0aW9ucyxcbiAqICAgdGhpcy5sYW1iZGFGdW5jdGlvbiwgIC8vIElHcmFudGFibGUgKGV4ZWN1dGlvbiByb2xlKVxuICogICB0aGlzLmxhbWJkYUZ1bmN0aW9uICAgLy8gSUNvbm5lY3RhYmxlIChzZWN1cml0eSBncm91cClcbiAqICk7XG4gKi9cblxuaW1wb3J0IHsgdHlwZSBJQ29ubmVjdGFibGUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0IHsgdHlwZSBJR3JhbnRhYmxlLCB0eXBlIEdyYW50IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7XG4gIHR5cGUgQ29ubmVjdGlvblNwZWMsXG4gIHR5cGUgQ29ubmVjdGlvblJlc3VsdCxcbiAgdHlwZSBDb25uZWN0aW9uQWNjZXNzLFxuICB0eXBlIE1lc3NhZ2luZ0FjY2VzcyxcbiAgdHlwZSBBbnlDb25uZWN0b3IsXG4gIHR5cGUgSVN0b3JhZ2VDb25uZWN0b3IsXG4gIHR5cGUgSUR5bmFtb0RCQ29ubmVjdG9yLFxuICB0eXBlIElRdWV1ZUNvbm5lY3RvcixcbiAgQ09OTkVDVElPTl9UWVBFLFxuICBpc0Nvbm5lY3Rpb25Db25maWcsXG4gIGlzQ29ubmVjdG9yLFxuICBpc0Nvbm5lY3RhYmxlLFxuICBpc0Nvbm5lY3Rpb25BY2Nlc3MsXG4gIGlzTWVzc2FnaW5nQWNjZXNzXG59IGZyb20gXCIuL2Nvbm5lY3Rvci5qc1wiO1xuXG4vKiogRGVmYXVsdCBhY2Nlc3MgbGV2ZWxzIGZvciBlYWNoIGNvbm5lY3RvciB0eXBlLiAqL1xuY29uc3QgREVGQVVMVF9BQ0NFU1MgPSB7XG4gIHN0b3JhZ2U6IFwicmVhZFdyaXRlXCIsXG4gIGR5bmFtb2RiOiBcInJlYWRXcml0ZVwiLFxuICBxdWV1ZTogXCJmdWxsXCJcbn0gYXMgY29uc3Q7XG5cbi8qKiBHcmFudCBzdG9yYWdlIGFjY2VzcyBiYXNlZCBvbiBhY2Nlc3MgbGV2ZWwuICovXG5mdW5jdGlvbiBwcm9jZXNzU3RvcmFnZUNvbm5lY3Rpb24oXG4gIGNvbm5lY3RvcjogSVN0b3JhZ2VDb25uZWN0b3IsXG4gIGdyYW50ZWU6IElHcmFudGFibGUsXG4gIGFjY2VzczogQ29ubmVjdGlvbkFjY2Vzc1xuKTogR3JhbnQge1xuICBzd2l0Y2ggKGFjY2Vzcykge1xuICAgIGNhc2UgXCJyZWFkXCI6XG4gICAgICByZXR1cm4gY29ubmVjdG9yLmdyYW50UmVhZChncmFudGVlKTtcbiAgICBjYXNlIFwid3JpdGVcIjpcbiAgICAgIHJldHVybiBjb25uZWN0b3IuZ3JhbnRXcml0ZShncmFudGVlKTtcbiAgICBjYXNlIFwicmVhZFdyaXRlXCI6XG4gICAgICByZXR1cm4gY29ubmVjdG9yLmdyYW50UmVhZFdyaXRlKGdyYW50ZWUpO1xuICB9XG59XG5cbi8qKiBHcmFudCBEeW5hbW9EQiBhY2Nlc3MgYmFzZWQgb24gYWNjZXNzIGxldmVsLiAqL1xuZnVuY3Rpb24gcHJvY2Vzc0R5bmFtb0RCQ29ubmVjdGlvbihcbiAgY29ubmVjdG9yOiBJRHluYW1vREJDb25uZWN0b3IsXG4gIGdyYW50ZWU6IElHcmFudGFibGUsXG4gIGFjY2VzczogQ29ubmVjdGlvbkFjY2Vzc1xuKTogR3JhbnQge1xuICBzd2l0Y2ggKGFjY2Vzcykge1xuICAgIGNhc2UgXCJyZWFkXCI6XG4gICAgICByZXR1cm4gY29ubmVjdG9yLmdyYW50UmVhZERhdGEoZ3JhbnRlZSk7XG4gICAgY2FzZSBcIndyaXRlXCI6XG4gICAgICByZXR1cm4gY29ubmVjdG9yLmdyYW50V3JpdGVEYXRhKGdyYW50ZWUpO1xuICAgIGNhc2UgXCJyZWFkV3JpdGVcIjpcbiAgICAgIHJldHVybiBjb25uZWN0b3IuZ3JhbnRSZWFkV3JpdGVEYXRhKGdyYW50ZWUpO1xuICB9XG59XG5cbi8qKiBHcmFudCBxdWV1ZSBhY2Nlc3MgYmFzZWQgb24gYWNjZXNzIGxldmVsLiAqL1xuZnVuY3Rpb24gcHJvY2Vzc1F1ZXVlQ29ubmVjdGlvbihcbiAgY29ubmVjdG9yOiBJUXVldWVDb25uZWN0b3IsXG4gIGdyYW50ZWU6IElHcmFudGFibGUsXG4gIGFjY2VzczogTWVzc2FnaW5nQWNjZXNzXG4pOiBHcmFudCB7XG4gIHN3aXRjaCAoYWNjZXNzKSB7XG4gICAgY2FzZSBcInNlbmRcIjpcbiAgICAgIHJldHVybiBjb25uZWN0b3IuZ3JhbnRTZW5kTWVzc2FnZXMoZ3JhbnRlZSk7XG4gICAgY2FzZSBcImNvbnN1bWVcIjpcbiAgICAgIHJldHVybiBjb25uZWN0b3IuZ3JhbnRDb25zdW1lTWVzc2FnZXMoZ3JhbnRlZSk7XG4gICAgY2FzZSBcImZ1bGxcIjpcbiAgICAgIHJldHVybiBjb25uZWN0b3IuZ3JhbnRGdWxsKGdyYW50ZWUpO1xuICB9XG59XG5cbi8qKiBCdWlsZCBhbiBJQU0gY29ubmVjdGlvbiByZXN1bHQuICovXG5mdW5jdGlvbiBidWlsZElhbVJlc3VsdChcbiAgY29ubmVjdG9yOiBBbnlDb25uZWN0b3IsXG4gIGdyYW50OiBHcmFudFxuKTogQ29ubmVjdGlvblJlc3VsdCB7XG4gIHJldHVybiB7IHJlc291cmNlOiBjb25uZWN0b3IsIGdyYW50LCBjb25uZWN0aW9uVHlwZTogQ09OTkVDVElPTl9UWVBFLklBTSB9O1xufVxuXG4vKiogQnVpbGQgYSBzZWN1cml0eSBncm91cCBjb25uZWN0aW9uIHJlc3VsdC4gKi9cbmZ1bmN0aW9uIGJ1aWxkU2VjdXJpdHlHcm91cFJlc3VsdChcbiAgcmVzb3VyY2U6IEFueUNvbm5lY3RvciB8IElDb25uZWN0YWJsZVxuKTogQ29ubmVjdGlvblJlc3VsdCB7XG4gIHJldHVybiB7IHJlc291cmNlLCBjb25uZWN0aW9uVHlwZTogQ09OTkVDVElPTl9UWVBFLlNFQ1VSSVRZX0dST1VQIH07XG59XG5cbi8qKiBWYWxpZGF0ZSBhbmQgbmFycm93IGFjY2VzcyB0eXBlIGZvciBzdG9yYWdlL2R5bmFtb2RiIGNvbm5lY3RvcnMuICovXG5mdW5jdGlvbiB2YWxpZGF0ZUNvbm5lY3Rpb25BY2Nlc3MoXG4gIGFjY2VzczogQ29ubmVjdGlvbkFjY2VzcyB8IE1lc3NhZ2luZ0FjY2VzcyB8IHVuZGVmaW5lZCxcbiAgY29ubmVjdG9yVHlwZTogc3RyaW5nLFxuICBkZWZhdWx0QWNjZXNzOiBDb25uZWN0aW9uQWNjZXNzXG4pOiBDb25uZWN0aW9uQWNjZXNzIHtcbiAgaWYgKGFjY2VzcyA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZGVmYXVsdEFjY2VzcztcbiAgaWYgKGlzQ29ubmVjdGlvbkFjY2VzcyhhY2Nlc3MpKSByZXR1cm4gYWNjZXNzO1xuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgYEludmFsaWQgYWNjZXNzIFwiJHthY2Nlc3N9XCIgZm9yICR7Y29ubmVjdG9yVHlwZX0gY29ubmVjdG9yLiBgICtcbiAgICAgIGBWYWxpZCB2YWx1ZXM6IHJlYWQsIHdyaXRlLCByZWFkV3JpdGVgXG4gICk7XG59XG5cbi8qKiBWYWxpZGF0ZSBhbmQgbmFycm93IGFjY2VzcyB0eXBlIGZvciBxdWV1ZSBjb25uZWN0b3JzLiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVNZXNzYWdpbmdBY2Nlc3MoXG4gIGFjY2VzczogQ29ubmVjdGlvbkFjY2VzcyB8IE1lc3NhZ2luZ0FjY2VzcyB8IHVuZGVmaW5lZCxcbiAgZGVmYXVsdEFjY2VzczogTWVzc2FnaW5nQWNjZXNzXG4pOiBNZXNzYWdpbmdBY2Nlc3Mge1xuICBpZiAoYWNjZXNzID09PSB1bmRlZmluZWQpIHJldHVybiBkZWZhdWx0QWNjZXNzO1xuICBpZiAoaXNNZXNzYWdpbmdBY2Nlc3MoYWNjZXNzKSkgcmV0dXJuIGFjY2VzcztcbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgIGBJbnZhbGlkIGFjY2VzcyBcIiR7YWNjZXNzfVwiIGZvciBxdWV1ZSBjb25uZWN0b3IuIGAgK1xuICAgICAgYFZhbGlkIHZhbHVlczogc2VuZCwgY29uc3VtZSwgZnVsbGBcbiAgKTtcbn1cblxuLyoqXG4gKiBSZXF1aXJlIElDb25uZWN0YWJsZSBmb3Igc2VjdXJpdHkgZ3JvdXAgb3BlcmF0aW9ucy5cbiAqIFRocm93cyBhIGRlc2NyaXB0aXZlIGVycm9yIGlmIG5vdCBwcm92aWRlZC5cbiAqL1xuZnVuY3Rpb24gcmVxdWlyZUNvbm5lY3RhYmxlKFxuICBjb25uZWN0YWJsZTogSUNvbm5lY3RhYmxlIHwgdW5kZWZpbmVkLFxuICBjb250ZXh0OiBzdHJpbmdcbik6IGFzc2VydHMgY29ubmVjdGFibGUgaXMgSUNvbm5lY3RhYmxlIHtcbiAgaWYgKCFjb25uZWN0YWJsZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGAke2NvbnRleHR9IHJlcXVpcmVzIGFuIElDb25uZWN0YWJsZSB0byBiZSBwcm92aWRlZC4gYCArXG4gICAgICAgIFwiRW5zdXJlIHRoZSBjb21wdXRlIHJlc291cmNlIChFQ1MsIEVDMiwgTGFtYmRhIHdpdGggVlBDKSBpbXBsZW1lbnRzIElDb25uZWN0YWJsZS5cIlxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBQcm9jZXNzIGNvbm5lY3Rpb25zIGZyb20gY29tcHV0ZSByZXNvdXJjZXMgdG8gZGF0YSByZXNvdXJjZXMuXG4gKlxuICogSGFuZGxlcyB0aGUgdW5pZmllZCBjb25uZWN0b3IgaW50ZXJmYWNlLCBkaXNwYXRjaGluZyB0bzpcbiAqIC0gU2VjdXJpdHkgZ3JvdXAgcnVsZXMgZm9yIElDb25uZWN0YWJsZSBhbmQgSVNlY3VyaXR5R3JvdXBDb25uZWN0b3IgcmVzb3VyY2VzXG4gKiAtIElBTSBncmFudHMgZm9yIElTdG9yYWdlQ29ubmVjdG9yLCBJRHluYW1vREJDb25uZWN0b3IsIGFuZCBJUXVldWVDb25uZWN0b3IgcmVzb3VyY2VzXG4gKlxuICogQHBhcmFtIGNvbm5lY3Rpb25zIC0gQXJyYXkgb2YgY29ubmVjdGlvbiBzcGVjaWZpY2F0aW9uc1xuICogQHBhcmFtIGdyYW50ZWUgLSBUaGUgSUFNIGdyYW50ZWUgKHRhc2sgcm9sZSwgZXhlY3V0aW9uIHJvbGUsIGV0Yy4pXG4gKiBAcGFyYW0gY29ubmVjdGFibGUgLSBPcHRpb25hbCBJQ29ubmVjdGFibGUgZm9yIHNlY3VyaXR5IGdyb3VwIHJ1bGVzXG4gKiBAcmV0dXJucyBBcnJheSBvZiBjb25uZWN0aW9uIHJlc3VsdHNcbiAqXG4gKiBAZXhhbXBsZVxuICogcHJvY2Vzc0Nvbm5lY3Rpb25zKFxuICogICBbZGF0YWJhc2UsIHsgcmVzb3VyY2U6IGJ1Y2tldCwgYWNjZXNzOiBcInJlYWRcIiB9LCBxdWV1ZV0sXG4gKiAgIHRhc2tSb2xlLFxuICogICBzZXJ2aWNlXG4gKiApO1xuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvY2Vzc0Nvbm5lY3Rpb25zKFxuICBjb25uZWN0aW9uczogQ29ubmVjdGlvblNwZWNbXSxcbiAgZ3JhbnRlZTogSUdyYW50YWJsZSxcbiAgY29ubmVjdGFibGU/OiBJQ29ubmVjdGFibGVcbik6IENvbm5lY3Rpb25SZXN1bHRbXSB7XG4gIHJldHVybiBjb25uZWN0aW9ucy5tYXAoKHNwZWMpID0+IHtcbiAgICBjb25zdCB7IHJlc291cmNlLCBhY2Nlc3MgfSA9IGlzQ29ubmVjdGlvbkNvbmZpZyhzcGVjKVxuICAgICAgPyB7IHJlc291cmNlOiBzcGVjLnJlc291cmNlLCBhY2Nlc3M6IHNwZWMuYWNjZXNzIH1cbiAgICAgIDogeyByZXNvdXJjZTogc3BlYywgYWNjZXNzOiB1bmRlZmluZWQgfTtcblxuICAgIC8vIEhhbmRsZSB1bmlmaWVkIGNvbm5lY3RvciBpbnRlcmZhY2UgKGlzQ29ubmVjdG9yIG5vdyByZXR1cm5zIEFueUNvbm5lY3RvcilcbiAgICBpZiAoaXNDb25uZWN0b3IocmVzb3VyY2UpKSB7XG4gICAgICBzd2l0Y2ggKHJlc291cmNlLmNvbm5lY3RvclR5cGUpIHtcbiAgICAgICAgY2FzZSBcInN0b3JhZ2VcIjoge1xuICAgICAgICAgIGNvbnN0IHZhbGlkQWNjZXNzID0gdmFsaWRhdGVDb25uZWN0aW9uQWNjZXNzKFxuICAgICAgICAgICAgYWNjZXNzLFxuICAgICAgICAgICAgXCJzdG9yYWdlXCIsXG4gICAgICAgICAgICBERUZBVUxUX0FDQ0VTUy5zdG9yYWdlXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gYnVpbGRJYW1SZXN1bHQoXG4gICAgICAgICAgICByZXNvdXJjZSxcbiAgICAgICAgICAgIHByb2Nlc3NTdG9yYWdlQ29ubmVjdGlvbihyZXNvdXJjZSwgZ3JhbnRlZSwgdmFsaWRBY2Nlc3MpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgXCJkeW5hbW9kYlwiOiB7XG4gICAgICAgICAgY29uc3QgdmFsaWRBY2Nlc3MgPSB2YWxpZGF0ZUNvbm5lY3Rpb25BY2Nlc3MoXG4gICAgICAgICAgICBhY2Nlc3MsXG4gICAgICAgICAgICBcImR5bmFtb2RiXCIsXG4gICAgICAgICAgICBERUZBVUxUX0FDQ0VTUy5keW5hbW9kYlxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIGJ1aWxkSWFtUmVzdWx0KFxuICAgICAgICAgICAgcmVzb3VyY2UsXG4gICAgICAgICAgICBwcm9jZXNzRHluYW1vREJDb25uZWN0aW9uKHJlc291cmNlLCBncmFudGVlLCB2YWxpZEFjY2VzcylcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY2FzZSBcInF1ZXVlXCI6IHtcbiAgICAgICAgICBjb25zdCB2YWxpZEFjY2VzcyA9IHZhbGlkYXRlTWVzc2FnaW5nQWNjZXNzKFxuICAgICAgICAgICAgYWNjZXNzLFxuICAgICAgICAgICAgREVGQVVMVF9BQ0NFU1MucXVldWVcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiBidWlsZElhbVJlc3VsdChcbiAgICAgICAgICAgIHJlc291cmNlLFxuICAgICAgICAgICAgcHJvY2Vzc1F1ZXVlQ29ubmVjdGlvbihyZXNvdXJjZSwgZ3JhbnRlZSwgdmFsaWRBY2Nlc3MpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgXCJzZWN1cml0eUdyb3VwXCI6XG4gICAgICAgIGNhc2UgXCJyZWxhdGlvbmFsXCI6IHtcbiAgICAgICAgICByZXF1aXJlQ29ubmVjdGFibGUoXG4gICAgICAgICAgICBjb25uZWN0YWJsZSxcbiAgICAgICAgICAgIGAke3Jlc291cmNlLmNvbm5lY3RvclR5cGV9IGNvbm5lY3RvcmBcbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbm5lY3RhYmxlLmNvbm5lY3Rpb25zLmFsbG93VG9EZWZhdWx0UG9ydChyZXNvdXJjZSk7XG4gICAgICAgICAgcmV0dXJuIGJ1aWxkU2VjdXJpdHlHcm91cFJlc3VsdChyZXNvdXJjZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBMZWdhY3kgSUNvbm5lY3RhYmxlIHBhdGhcbiAgICBpZiAoaXNDb25uZWN0YWJsZShyZXNvdXJjZSkpIHtcbiAgICAgIHJlcXVpcmVDb25uZWN0YWJsZShjb25uZWN0YWJsZSwgXCJJQ29ubmVjdGFibGUgcmVzb3VyY2VcIik7XG4gICAgICBjb25uZWN0YWJsZS5jb25uZWN0aW9ucy5hbGxvd1RvRGVmYXVsdFBvcnQocmVzb3VyY2UpO1xuICAgICAgcmV0dXJuIGJ1aWxkU2VjdXJpdHlHcm91cFJlc3VsdChyZXNvdXJjZSk7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJDb25uZWN0aW9uIHJlc291cmNlIG11c3QgYmUgZWl0aGVyIGFuIElDb25uZWN0b3Igb3IgSUNvbm5lY3RhYmxlXCJcbiAgICApO1xuICB9KTtcbn1cbiJdfQ==