@fjall/components-infrastructure 0.75.3 → 0.76.0

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 (174) hide show
  1. package/dist/lib/app.d.ts +32 -8
  2. package/dist/lib/app.js +58 -11
  3. package/dist/lib/config/aws/backupGlobalSettings.d.ts +1 -1
  4. package/dist/lib/config/aws/backupGlobalSettings.js +1 -1
  5. package/dist/lib/config/aws/cloudTrail.d.ts +1 -1
  6. package/dist/lib/config/aws/cloudTrail.js +2 -2
  7. package/dist/lib/config/aws/disasterRecovery.js +1 -1
  8. package/dist/lib/config/aws/ecrDefaultImage.d.ts +1 -1
  9. package/dist/lib/config/aws/ecrDefaultImage.js +2 -2
  10. package/dist/lib/config/aws/identityCenter.d.ts +3 -3
  11. package/dist/lib/config/aws/identityCenter.js +1 -1
  12. package/dist/lib/config/aws/identityCenterGroupMembership.d.ts +2 -2
  13. package/dist/lib/config/aws/identityCenterGroupMembership.js +1 -1
  14. package/dist/lib/config/aws/ipam.js +2 -4
  15. package/dist/lib/config/aws/organisation.d.ts +3 -3
  16. package/dist/lib/config/aws/organisation.js +1 -1
  17. package/dist/lib/config/aws/organisationsAccess.d.ts +1 -1
  18. package/dist/lib/config/aws/organisationsAccess.js +1 -1
  19. package/dist/lib/config/monitoring.d.ts +18 -0
  20. package/dist/lib/config/monitoring.js +22 -0
  21. package/dist/lib/patterns/aws/buildkite.d.ts +3 -3
  22. package/dist/lib/patterns/aws/buildkite.js +1 -1
  23. package/dist/lib/patterns/aws/compute.d.ts +8 -8
  24. package/dist/lib/patterns/aws/compute.js +5 -5
  25. package/dist/lib/patterns/aws/database.d.ts +191 -24
  26. package/dist/lib/patterns/aws/database.js +201 -42
  27. package/dist/lib/patterns/aws/fivetranProxy.d.ts +5 -5
  28. package/dist/lib/patterns/aws/fivetranProxy.js +1 -1
  29. package/dist/lib/patterns/aws/hostedZone.d.ts +2 -2
  30. package/dist/lib/patterns/aws/hostedZone.js +1 -1
  31. package/dist/lib/patterns/aws/managedAccount.d.ts +2 -2
  32. package/dist/lib/patterns/aws/managedAccount.js +1 -1
  33. package/dist/lib/patterns/aws/managedIdentityCenter.js +1 -1
  34. package/dist/lib/patterns/aws/managedOrganisation.d.ts +3 -3
  35. package/dist/lib/patterns/aws/managedOrganisation.js +1 -1
  36. package/dist/lib/patterns/aws/managedPlatform.d.ts +2 -2
  37. package/dist/lib/patterns/aws/managedPlatform.js +2 -4
  38. package/dist/lib/patterns/aws/storage.d.ts +4 -55
  39. package/dist/lib/patterns/aws/storage.js +3 -103
  40. package/dist/lib/resources/aws/backup/backupPlan.d.ts +2 -2
  41. package/dist/lib/resources/aws/backup/backupPlan.js +1 -1
  42. package/dist/lib/resources/aws/backup/backupVault.d.ts +2 -2
  43. package/dist/lib/resources/aws/backup/backupVault.js +1 -1
  44. package/dist/lib/resources/aws/base/awsStack.js +1 -1
  45. package/dist/lib/resources/aws/compute/ec2.d.ts +3 -3
  46. package/dist/lib/resources/aws/compute/ec2.js +1 -1
  47. package/dist/lib/resources/aws/compute/ecs.d.ts +9 -9
  48. package/dist/lib/resources/aws/compute/ecs.js +63 -19
  49. package/dist/lib/resources/aws/compute/ecsFreeTier.d.ts +6 -7
  50. package/dist/lib/resources/aws/compute/ecsFreeTier.js +3 -7
  51. package/dist/lib/resources/aws/compute/ecsSpot.d.ts +6 -7
  52. package/dist/lib/resources/aws/compute/ecsSpot.js +3 -11
  53. package/dist/lib/resources/aws/compute/lambda.d.ts +4 -4
  54. package/dist/lib/resources/aws/compute/lambda.js +1 -1
  55. package/dist/lib/resources/aws/database/database.d.ts +2 -2
  56. package/dist/lib/resources/aws/database/database.js +1 -1
  57. package/dist/lib/resources/aws/database/databaseInstance.d.ts +2 -2
  58. package/dist/lib/resources/aws/database/databaseInstance.js +2 -2
  59. package/dist/lib/resources/aws/database/index.d.ts +0 -1
  60. package/dist/lib/resources/aws/database/index.js +1 -2
  61. package/dist/lib/resources/aws/database/rdsAurora.d.ts +22 -6
  62. package/dist/lib/resources/aws/database/rdsAurora.js +212 -84
  63. package/dist/lib/resources/aws/database/rdsAuroraGlobal.d.ts +39 -6
  64. package/dist/lib/resources/aws/database/rdsAuroraGlobal.js +34 -5
  65. package/dist/lib/resources/aws/database/rdsInstance.d.ts +16 -10
  66. package/dist/lib/resources/aws/database/rdsInstance.js +126 -63
  67. package/dist/lib/resources/aws/iam/identityCenter/assignment.d.ts +1 -1
  68. package/dist/lib/resources/aws/iam/identityCenter/assignment.js +1 -1
  69. package/dist/lib/resources/aws/iam/identityCenter/attachManagedPolicy.d.ts +1 -1
  70. package/dist/lib/resources/aws/iam/identityCenter/attachManagedPolicy.js +1 -1
  71. package/dist/lib/resources/aws/iam/identityCenter/group.d.ts +1 -1
  72. package/dist/lib/resources/aws/iam/identityCenter/group.js +1 -1
  73. package/dist/lib/resources/aws/iam/identityCenter/permissionSet.d.ts +2 -2
  74. package/dist/lib/resources/aws/iam/identityCenter/permissionSet.js +1 -1
  75. package/dist/lib/resources/aws/iam/instanceProfile.d.ts +1 -1
  76. package/dist/lib/resources/aws/iam/instanceProfile.js +1 -1
  77. package/dist/lib/resources/aws/iam/managedPolicy.d.ts +1 -1
  78. package/dist/lib/resources/aws/iam/managedPolicy.js +1 -1
  79. package/dist/lib/resources/aws/iam/policy.d.ts +1 -1
  80. package/dist/lib/resources/aws/iam/policy.js +1 -1
  81. package/dist/lib/resources/aws/iam/role.d.ts +1 -1
  82. package/dist/lib/resources/aws/iam/role.js +1 -1
  83. package/dist/lib/resources/aws/iam/securityGroup.d.ts +1 -1
  84. package/dist/lib/resources/aws/iam/securityGroup.js +1 -1
  85. package/dist/lib/resources/aws/index.d.ts +1 -0
  86. package/dist/lib/resources/aws/index.js +2 -1
  87. package/dist/lib/resources/aws/logging/logGroup.d.ts +2 -2
  88. package/dist/lib/resources/aws/logging/logGroup.js +1 -1
  89. package/dist/lib/resources/aws/monitoring/index.d.ts +1 -0
  90. package/dist/lib/resources/aws/monitoring/index.js +18 -0
  91. package/dist/lib/resources/aws/monitoring/monitoringRole.d.ts +28 -0
  92. package/dist/lib/resources/aws/monitoring/monitoringRole.js +69 -0
  93. package/dist/lib/resources/aws/networking/ipam.d.ts +1 -1
  94. package/dist/lib/resources/aws/networking/ipam.js +1 -1
  95. package/dist/lib/resources/aws/networking/ipamPool.d.ts +1 -1
  96. package/dist/lib/resources/aws/networking/ipamPool.js +1 -2
  97. package/dist/lib/resources/aws/networking/vpc.d.ts +3 -3
  98. package/dist/lib/resources/aws/networking/vpc.js +1 -1
  99. package/dist/lib/resources/aws/networking/vpcEndpoint.d.ts +2 -2
  100. package/dist/lib/resources/aws/networking/vpcEndpoint.js +1 -1
  101. package/dist/lib/resources/aws/secrets/alias.d.ts +1 -1
  102. package/dist/lib/resources/aws/secrets/alias.js +1 -1
  103. package/dist/lib/resources/aws/secrets/parameter.d.ts +1 -1
  104. package/dist/lib/resources/aws/secrets/parameter.js +1 -1
  105. package/dist/lib/resources/aws/secrets/secret.d.ts +8 -4
  106. package/dist/lib/resources/aws/secrets/secret.js +19 -2
  107. package/dist/lib/resources/aws/storage/ecr.d.ts +4 -4
  108. package/dist/lib/resources/aws/storage/ecr.js +1 -1
  109. package/dist/lib/resources/aws/storage/s3.d.ts +2 -2
  110. package/dist/lib/resources/aws/storage/s3.js +1 -1
  111. package/dist/lib/resources/aws/utilities/awsCustomResource.d.ts +1 -1
  112. package/dist/lib/resources/aws/utilities/awsCustomResource.js +1 -1
  113. package/dist/lib/resources/aws/utilities/cfnOutput.d.ts +1 -1
  114. package/dist/lib/resources/aws/utilities/cfnOutput.js +1 -1
  115. package/dist/lib/resources/aws/utilities/codeBuild.d.ts +1 -1
  116. package/dist/lib/resources/aws/utilities/codeBuild.js +1 -1
  117. package/dist/lib/resources/aws/utilities/customResource.d.ts +3 -3
  118. package/dist/lib/resources/aws/utilities/customResource.js +1 -1
  119. package/dist/lib/resources/aws/utilities/customResourceProvider.d.ts +2 -2
  120. package/dist/lib/resources/aws/utilities/customResourceProvider.js +1 -1
  121. package/dist/lib/resources/aws/utilities/resourceShare.d.ts +2 -2
  122. package/dist/lib/resources/aws/utilities/resourceShare.js +1 -1
  123. package/dist/lib/utils/getAsync.d.ts +1 -1
  124. package/dist/lib/utils/getAsync.js +1 -1
  125. package/dist/lib/utils/getConfig.d.ts +2 -2
  126. package/dist/lib/utils/getConfig.js +3 -3
  127. package/dist/lib/utils/standardTagsAspect.d.ts +2 -2
  128. package/dist/lib/utils/standardTagsAspect.js +6 -5
  129. package/dist/lib/utils/tagResource.d.ts +1 -1
  130. package/dist/lib/utils/tagResource.js +1 -1
  131. package/package.json +3 -3
  132. package/dist/lib/__tests__/patterns/__snapshots__/compute.test.js.snap +0 -433
  133. package/dist/lib/__tests__/patterns/compute.test.d.ts +0 -1
  134. package/dist/lib/__tests__/patterns/compute.test.js +0 -137
  135. package/dist/lib/__tests__/simple.test.d.ts +0 -0
  136. package/dist/lib/__tests__/simple.test.js +0 -12
  137. package/dist/lib/patterns/aws/basicApp.d.ts +0 -0
  138. package/dist/lib/patterns/aws/basicApp.js +0 -150
  139. package/dist/lib/patterns/aws/freeTierApp.d.ts +0 -44
  140. package/dist/lib/patterns/aws/freeTierApp.js +0 -83
  141. package/dist/lib/patterns/aws/spotInstanceApp.d.ts +0 -45
  142. package/dist/lib/patterns/aws/spotInstanceApp.js +0 -85
  143. package/dist/lib/resources/aws/database/databaseFreeTier.d.ts +0 -15
  144. package/dist/lib/resources/aws/database/databaseFreeTier.js +0 -29
  145. package/dist/lib/resources/aws/database/rdsFreeTier.d.ts +0 -37
  146. package/dist/lib/resources/aws/database/rdsFreeTier.js +0 -84
  147. package/dist/lib/resources/aws/organisations/account.d.ts +0 -37
  148. package/dist/lib/resources/aws/organisations/account.js +0 -220
  149. package/dist/lib/resources/aws/organisations/delegatedAdministrator.d.ts +0 -14
  150. package/dist/lib/resources/aws/organisations/delegatedAdministrator.js +0 -61
  151. package/dist/lib/resources/aws/organisations/index.d.ts +0 -8
  152. package/dist/lib/resources/aws/organisations/index.js +0 -22
  153. package/dist/lib/resources/aws/organisations/interfaces.d.ts +0 -105
  154. package/dist/lib/resources/aws/organisations/interfaces.js +0 -3
  155. package/dist/lib/resources/aws/organisations/organisation.d.ts +0 -47
  156. package/dist/lib/resources/aws/organisations/organisation.js +0 -263
  157. package/dist/lib/resources/aws/organisations/organisationalUnit.d.ts +0 -28
  158. package/dist/lib/resources/aws/organisations/organisationalUnit.js +0 -170
  159. package/dist/lib/resources/aws/organisations/policy.d.ts +0 -17
  160. package/dist/lib/resources/aws/organisations/policy.js +0 -93
  161. package/dist/lib/resources/aws/organisations/trustedServiceAccess.d.ts +0 -13
  162. package/dist/lib/resources/aws/organisations/trustedServiceAccess.js +0 -58
  163. package/dist/lib/resources/aws/organisations/types.d.ts +0 -165
  164. package/dist/lib/resources/aws/organisations/types.js +0 -36
  165. package/dist/lib/utils/directTagging.d.ts +0 -31
  166. package/dist/lib/utils/directTagging.js +0 -86
  167. package/dist/lib/utils/fjallConstruct.d.ts +0 -8
  168. package/dist/lib/utils/fjallConstruct.js +0 -18
  169. package/dist/lib/utils/fjallStackSynthesizer.d.ts +0 -9
  170. package/dist/lib/utils/fjallStackSynthesizer.js +0 -22
  171. package/dist/lib/utils/tagContext.d.ts +0 -28
  172. package/dist/lib/utils/tagContext.js +0 -53
  173. package/dist/lib/utils/tagSynthesizer.d.ts +0 -13
  174. package/dist/lib/utils/tagSynthesizer.js +0 -55
@@ -1,93 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Policy = void 0;
4
- const aws_cdk_lib_1 = require("aws-cdk-lib");
5
- const customResources = require("aws-cdk-lib/custom-resources");
6
- const aws_iam_1 = require("aws-cdk-lib/aws-iam");
7
- const constructs_1 = require("constructs");
8
- const awsCustomResource_1 = require("../utilities/awsCustomResource");
9
- /**
10
- * AWS Organisations Policy construct for managing policies
11
- */
12
- class Policy extends constructs_1.Construct {
13
- constructor(scope, id, props) {
14
- super(scope, id);
15
- this.policyName = props.policyName;
16
- this.policyType = props.policyType;
17
- const importOnDuplicate = props.importOnDuplicate ?? true;
18
- // Create policy
19
- const policyResource = new awsCustomResource_1.AwsCustomResource(this, "PolicyResource", {
20
- functionName: `managePolicy${this.normalizePolicyName(props.policyName)}`,
21
- onCreate: {
22
- service: "organizations",
23
- action: "CreatePolicyCommand",
24
- parameters: {
25
- Name: props.policyName,
26
- Description: props.description,
27
- Content: props.content,
28
- Type: props.policyType
29
- },
30
- physicalResourceId: customResources.PhysicalResourceId.of(`policy-${props.policyName}-${props.policyType}`),
31
- ignoreErrorCodesMatching: importOnDuplicate
32
- ? "DuplicatePolicyException"
33
- : undefined
34
- },
35
- onUpdate: {
36
- service: "organizations",
37
- action: "UpdatePolicyCommand",
38
- parameters: {
39
- PolicyId: this.policyId,
40
- Name: props.policyName,
41
- Description: props.description,
42
- Content: props.content
43
- },
44
- physicalResourceId: customResources.PhysicalResourceId.of(`policy-${props.policyName}-${props.policyType}`)
45
- },
46
- onDelete: {
47
- service: "organizations",
48
- action: "DeletePolicyCommand",
49
- parameters: {
50
- PolicyId: this.policyId
51
- }
52
- },
53
- resourceType: "Custom::Policy",
54
- policy: customResources.AwsCustomResourcePolicy.fromStatements([
55
- new aws_iam_1.PolicyStatement({
56
- actions: [
57
- "organizations:CreatePolicy",
58
- "organizations:UpdatePolicy",
59
- "organizations:DeletePolicy",
60
- "organizations:DescribePolicy",
61
- "organizations:ListPolicies"
62
- ],
63
- resources: ["*"],
64
- effect: aws_iam_1.Effect.ALLOW
65
- })
66
- ])
67
- });
68
- // Get policy details from the create operation
69
- this.policyId = policyResource.getResponseField("Policy.PolicySummary.Id");
70
- this.policyArn = policyResource.getResponseField("Policy.PolicySummary.Arn");
71
- // Export policy details
72
- new aws_cdk_lib_1.CfnOutput(this, "PolicyId", {
73
- key: `${id}Id`,
74
- value: this.policyId,
75
- exportName: `${id}Id`
76
- });
77
- new aws_cdk_lib_1.CfnOutput(this, "PolicyArn", {
78
- key: `${id}Arn`,
79
- value: this.policyArn,
80
- exportName: `${id}Arn`
81
- });
82
- }
83
- /**
84
- * Helper to normalize policy names for construct IDs
85
- */
86
- normalizePolicyName(policyName) {
87
- return policyName
88
- .replace(/[^a-zA-Z0-9]/g, "")
89
- .replace(/^([a-z])/, (match) => match.toUpperCase());
90
- }
91
- }
92
- exports.Policy = Policy;
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9saWN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3Mvb3JnYW5pc2F0aW9ucy9wb2xpY3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXVEO0FBQ3ZELGdFQUFnRTtBQUNoRSxpREFBOEQ7QUFDOUQsMkNBQXVDO0FBR3ZDLHNFQUFtRTtBQUVuRTs7R0FFRztBQUNILE1BQWEsTUFBTyxTQUFRLHNCQUFTO0lBTW5DLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBa0I7UUFDMUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQ25DLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQztRQUUxRCxnQkFBZ0I7UUFDaEIsTUFBTSxjQUFjLEdBQUcsSUFBSSxxQ0FBaUIsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7WUFDbkUsWUFBWSxFQUFFLGVBQWUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUN6RSxRQUFRLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLGVBQWU7Z0JBQ3hCLE1BQU0sRUFBRSxxQkFBcUI7Z0JBQzdCLFVBQVUsRUFBRTtvQkFDVixJQUFJLEVBQUUsS0FBSyxDQUFDLFVBQVU7b0JBQ3RCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztvQkFDOUIsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO29CQUN0QixJQUFJLEVBQUUsS0FBSyxDQUFDLFVBQVU7aUJBQ3ZCO2dCQUNELGtCQUFrQixFQUFFLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQ3ZELFVBQVUsS0FBSyxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQ2pEO2dCQUNELHdCQUF3QixFQUFFLGlCQUFpQjtvQkFDekMsQ0FBQyxDQUFDLDBCQUEwQjtvQkFDNUIsQ0FBQyxDQUFDLFNBQVM7YUFDZDtZQUNELFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUsZUFBZTtnQkFDeEIsTUFBTSxFQUFFLHFCQUFxQjtnQkFDN0IsVUFBVSxFQUFFO29CQUNWLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtvQkFDdkIsSUFBSSxFQUFFLEtBQUssQ0FBQyxVQUFVO29CQUN0QixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7b0JBQzlCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztpQkFDdkI7Z0JBQ0Qsa0JBQWtCLEVBQUUsZUFBZSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FDdkQsVUFBVSxLQUFLLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FDakQ7YUFDRjtZQUNELFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUsZUFBZTtnQkFDeEIsTUFBTSxFQUFFLHFCQUFxQjtnQkFDN0IsVUFBVSxFQUFFO29CQUNWLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtpQkFDeEI7YUFDRjtZQUNELFlBQVksRUFBRSxnQkFBZ0I7WUFDOUIsTUFBTSxFQUFFLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxjQUFjLENBQUM7Z0JBQzdELElBQUkseUJBQWUsQ0FBQztvQkFDbEIsT0FBTyxFQUFFO3dCQUNQLDRCQUE0Qjt3QkFDNUIsNEJBQTRCO3dCQUM1Qiw0QkFBNEI7d0JBQzVCLDhCQUE4Qjt3QkFDOUIsNEJBQTRCO3FCQUM3QjtvQkFDRCxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUM7b0JBQ2hCLE1BQU0sRUFBRSxnQkFBTSxDQUFDLEtBQUs7aUJBQ3JCLENBQUM7YUFDSCxDQUFDO1NBQ0gsQ0FBQyxDQUFDO1FBRUgsK0NBQStDO1FBQy9DLElBQUksQ0FBQyxRQUFRLEdBQUcsY0FBYyxDQUFDLGdCQUFnQixDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDM0UsSUFBSSxDQUFDLFNBQVMsR0FBRyxjQUFjLENBQUMsZ0JBQWdCLENBQzlDLDBCQUEwQixDQUMzQixDQUFDO1FBRUYsd0JBQXdCO1FBQ3hCLElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQzlCLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSTtZQUNkLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUTtZQUNwQixVQUFVLEVBQUUsR0FBRyxFQUFFLElBQUk7U0FDdEIsQ0FBQyxDQUFDO1FBRUgsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUU7WUFDL0IsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLO1lBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3JCLFVBQVUsRUFBRSxHQUFHLEVBQUUsS0FBSztTQUN2QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxtQkFBbUIsQ0FBQyxVQUFrQjtRQUM1QyxPQUFPLFVBQVU7YUFDZCxPQUFPLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQzthQUM1QixPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDO0NBQ0Y7QUFoR0Qsd0JBZ0dDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuT3V0cHV0LCBSZW1vdmFsUG9saWN5IH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgKiBhcyBjdXN0b21SZXNvdXJjZXMgZnJvbSBcImF3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXNcIjtcbmltcG9ydCB7IEVmZmVjdCwgUG9saWN5U3RhdGVtZW50IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBJUG9saWN5IH0gZnJvbSBcIi4vaW50ZXJmYWNlc1wiO1xuaW1wb3J0IHsgUG9saWN5UHJvcHMsIFBvbGljeVR5cGUgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgQXdzQ3VzdG9tUmVzb3VyY2UgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2F3c0N1c3RvbVJlc291cmNlXCI7XG5cbi8qKlxuICogQVdTIE9yZ2FuaXNhdGlvbnMgUG9saWN5IGNvbnN0cnVjdCBmb3IgbWFuYWdpbmcgcG9saWNpZXNcbiAqL1xuZXhwb3J0IGNsYXNzIFBvbGljeSBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElQb2xpY3kge1xuICByZWFkb25seSBwb2xpY3lJZDogc3RyaW5nO1xuICByZWFkb25seSBwb2xpY3lBcm46IHN0cmluZztcbiAgcmVhZG9ubHkgcG9saWN5TmFtZTogc3RyaW5nO1xuICByZWFkb25seSBwb2xpY3lUeXBlOiBQb2xpY3lUeXBlO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQb2xpY3lQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnBvbGljeU5hbWUgPSBwcm9wcy5wb2xpY3lOYW1lO1xuICAgIHRoaXMucG9saWN5VHlwZSA9IHByb3BzLnBvbGljeVR5cGU7XG4gICAgY29uc3QgaW1wb3J0T25EdXBsaWNhdGUgPSBwcm9wcy5pbXBvcnRPbkR1cGxpY2F0ZSA/PyB0cnVlO1xuXG4gICAgLy8gQ3JlYXRlIHBvbGljeVxuICAgIGNvbnN0IHBvbGljeVJlc291cmNlID0gbmV3IEF3c0N1c3RvbVJlc291cmNlKHRoaXMsIFwiUG9saWN5UmVzb3VyY2VcIiwge1xuICAgICAgZnVuY3Rpb25OYW1lOiBgbWFuYWdlUG9saWN5JHt0aGlzLm5vcm1hbGl6ZVBvbGljeU5hbWUocHJvcHMucG9saWN5TmFtZSl9YCxcbiAgICAgIG9uQ3JlYXRlOiB7XG4gICAgICAgIHNlcnZpY2U6IFwib3JnYW5pemF0aW9uc1wiLFxuICAgICAgICBhY3Rpb246IFwiQ3JlYXRlUG9saWN5Q29tbWFuZFwiLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgTmFtZTogcHJvcHMucG9saWN5TmFtZSxcbiAgICAgICAgICBEZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICAgICAgQ29udGVudDogcHJvcHMuY29udGVudCxcbiAgICAgICAgICBUeXBlOiBwcm9wcy5wb2xpY3lUeXBlXG4gICAgICAgIH0sXG4gICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogY3VzdG9tUmVzb3VyY2VzLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcbiAgICAgICAgICBgcG9saWN5LSR7cHJvcHMucG9saWN5TmFtZX0tJHtwcm9wcy5wb2xpY3lUeXBlfWBcbiAgICAgICAgKSxcbiAgICAgICAgaWdub3JlRXJyb3JDb2Rlc01hdGNoaW5nOiBpbXBvcnRPbkR1cGxpY2F0ZVxuICAgICAgICAgID8gXCJEdXBsaWNhdGVQb2xpY3lFeGNlcHRpb25cIlxuICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICB9LFxuICAgICAgb25VcGRhdGU6IHtcbiAgICAgICAgc2VydmljZTogXCJvcmdhbml6YXRpb25zXCIsXG4gICAgICAgIGFjdGlvbjogXCJVcGRhdGVQb2xpY3lDb21tYW5kXCIsXG4gICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBQb2xpY3lJZDogdGhpcy5wb2xpY3lJZCxcbiAgICAgICAgICBOYW1lOiBwcm9wcy5wb2xpY3lOYW1lLFxuICAgICAgICAgIERlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgICAgICBDb250ZW50OiBwcm9wcy5jb250ZW50XG4gICAgICAgIH0sXG4gICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogY3VzdG9tUmVzb3VyY2VzLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcbiAgICAgICAgICBgcG9saWN5LSR7cHJvcHMucG9saWN5TmFtZX0tJHtwcm9wcy5wb2xpY3lUeXBlfWBcbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIG9uRGVsZXRlOiB7XG4gICAgICAgIHNlcnZpY2U6IFwib3JnYW5pemF0aW9uc1wiLFxuICAgICAgICBhY3Rpb246IFwiRGVsZXRlUG9saWN5Q29tbWFuZFwiLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgUG9saWN5SWQ6IHRoaXMucG9saWN5SWRcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHJlc291cmNlVHlwZTogXCJDdXN0b206OlBvbGljeVwiLFxuICAgICAgcG9saWN5OiBjdXN0b21SZXNvdXJjZXMuQXdzQ3VzdG9tUmVzb3VyY2VQb2xpY3kuZnJvbVN0YXRlbWVudHMoW1xuICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICBcIm9yZ2FuaXphdGlvbnM6Q3JlYXRlUG9saWN5XCIsXG4gICAgICAgICAgICBcIm9yZ2FuaXphdGlvbnM6VXBkYXRlUG9saWN5XCIsXG4gICAgICAgICAgICBcIm9yZ2FuaXphdGlvbnM6RGVsZXRlUG9saWN5XCIsXG4gICAgICAgICAgICBcIm9yZ2FuaXphdGlvbnM6RGVzY3JpYmVQb2xpY3lcIixcbiAgICAgICAgICAgIFwib3JnYW5pemF0aW9uczpMaXN0UG9saWNpZXNcIlxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdLFxuICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XXG4gICAgICAgIH0pXG4gICAgICBdKVxuICAgIH0pO1xuXG4gICAgLy8gR2V0IHBvbGljeSBkZXRhaWxzIGZyb20gdGhlIGNyZWF0ZSBvcGVyYXRpb25cbiAgICB0aGlzLnBvbGljeUlkID0gcG9saWN5UmVzb3VyY2UuZ2V0UmVzcG9uc2VGaWVsZChcIlBvbGljeS5Qb2xpY3lTdW1tYXJ5LklkXCIpO1xuICAgIHRoaXMucG9saWN5QXJuID0gcG9saWN5UmVzb3VyY2UuZ2V0UmVzcG9uc2VGaWVsZChcbiAgICAgIFwiUG9saWN5LlBvbGljeVN1bW1hcnkuQXJuXCJcbiAgICApO1xuXG4gICAgLy8gRXhwb3J0IHBvbGljeSBkZXRhaWxzXG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBcIlBvbGljeUlkXCIsIHtcbiAgICAgIGtleTogYCR7aWR9SWRgLFxuICAgICAgdmFsdWU6IHRoaXMucG9saWN5SWQsXG4gICAgICBleHBvcnROYW1lOiBgJHtpZH1JZGBcbiAgICB9KTtcblxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgXCJQb2xpY3lBcm5cIiwge1xuICAgICAga2V5OiBgJHtpZH1Bcm5gLFxuICAgICAgdmFsdWU6IHRoaXMucG9saWN5QXJuLFxuICAgICAgZXhwb3J0TmFtZTogYCR7aWR9QXJuYFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciB0byBub3JtYWxpemUgcG9saWN5IG5hbWVzIGZvciBjb25zdHJ1Y3QgSURzXG4gICAqL1xuICBwcml2YXRlIG5vcm1hbGl6ZVBvbGljeU5hbWUocG9saWN5TmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcG9saWN5TmFtZVxuICAgICAgLnJlcGxhY2UoL1teYS16QS1aMC05XS9nLCBcIlwiKVxuICAgICAgLnJlcGxhY2UoL14oW2Etel0pLywgKG1hdGNoKSA9PiBtYXRjaC50b1VwcGVyQ2FzZSgpKTtcbiAgfVxufVxuIl19
@@ -1,13 +0,0 @@
1
- import { Construct } from "constructs";
2
- import { TrustedServiceAccessProps } from "./types";
3
- /**
4
- * AWS Organisations Trusted Service Access construct
5
- */
6
- export declare class TrustedServiceAccess extends Construct {
7
- readonly servicePrincipal: string;
8
- constructor(scope: Construct, id: string, props: TrustedServiceAccessProps);
9
- /**
10
- * Helper to normalize service names for construct IDs
11
- */
12
- private normalizeServiceName;
13
- }
@@ -1,58 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TrustedServiceAccess = void 0;
4
- const customResources = require("aws-cdk-lib/custom-resources");
5
- const aws_iam_1 = require("aws-cdk-lib/aws-iam");
6
- const constructs_1 = require("constructs");
7
- const awsCustomResource_1 = require("../utilities/awsCustomResource");
8
- /**
9
- * AWS Organisations Trusted Service Access construct
10
- */
11
- class TrustedServiceAccess extends constructs_1.Construct {
12
- constructor(scope, id, props) {
13
- super(scope, id);
14
- this.servicePrincipal = props.servicePrincipal;
15
- const serviceName = this.normalizeServiceName(props.servicePrincipal);
16
- // Enable trusted service access
17
- new awsCustomResource_1.AwsCustomResource(this, "TrustedServiceAccessResource", {
18
- functionName: `enableTrustedService${serviceName}`,
19
- onCreate: {
20
- service: "organizations",
21
- action: "EnableAWSServiceAccessCommand",
22
- parameters: {
23
- ServicePrincipal: props.servicePrincipal
24
- },
25
- physicalResourceId: customResources.PhysicalResourceId.of(`trusted-service-${props.servicePrincipal}`)
26
- },
27
- onDelete: {
28
- service: "organizations",
29
- action: "DisableAWSServiceAccessCommand",
30
- parameters: {
31
- ServicePrincipal: props.servicePrincipal
32
- }
33
- },
34
- resourceType: "Custom::TrustedServiceAccess",
35
- policy: customResources.AwsCustomResourcePolicy.fromStatements([
36
- new aws_iam_1.PolicyStatement({
37
- actions: [
38
- "organizations:EnableAWSServiceAccess",
39
- "organizations:DisableAWSServiceAccess",
40
- "organizations:ListAWSServiceAccessForOrganization"
41
- ],
42
- resources: ["*"],
43
- effect: aws_iam_1.Effect.ALLOW
44
- })
45
- ])
46
- });
47
- }
48
- /**
49
- * Helper to normalize service names for construct IDs
50
- */
51
- normalizeServiceName(servicePrincipal) {
52
- return servicePrincipal
53
- .replace(/[^a-zA-Z0-9]/g, "")
54
- .replace(/^([a-z])/, (match) => match.toUpperCase());
55
- }
56
- }
57
- exports.TrustedServiceAccess = TrustedServiceAccess;
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1c3RlZFNlcnZpY2VBY2Nlc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9vcmdhbmlzYXRpb25zL3RydXN0ZWRTZXJ2aWNlQWNjZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGdFQUFnRTtBQUNoRSxpREFBOEQ7QUFDOUQsMkNBQXVDO0FBRXZDLHNFQUFtRTtBQUVuRTs7R0FFRztBQUNILE1BQWEsb0JBQXFCLFNBQVEsc0JBQVM7SUFHakQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFnQztRQUN4RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsZ0JBQWdCLENBQUM7UUFFL0MsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRXRFLGdDQUFnQztRQUNoQyxJQUFJLHFDQUFpQixDQUFDLElBQUksRUFBRSw4QkFBOEIsRUFBRTtZQUMxRCxZQUFZLEVBQUUsdUJBQXVCLFdBQVcsRUFBRTtZQUNsRCxRQUFRLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLGVBQWU7Z0JBQ3hCLE1BQU0sRUFBRSwrQkFBK0I7Z0JBQ3ZDLFVBQVUsRUFBRTtvQkFDVixnQkFBZ0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCO2lCQUN6QztnQkFDRCxrQkFBa0IsRUFBRSxlQUFlLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUN2RCxtQkFBbUIsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQzVDO2FBQ0Y7WUFDRCxRQUFRLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLGVBQWU7Z0JBQ3hCLE1BQU0sRUFBRSxnQ0FBZ0M7Z0JBQ3hDLFVBQVUsRUFBRTtvQkFDVixnQkFBZ0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCO2lCQUN6QzthQUNGO1lBQ0QsWUFBWSxFQUFFLDhCQUE4QjtZQUM1QyxNQUFNLEVBQUUsZUFBZSxDQUFDLHVCQUF1QixDQUFDLGNBQWMsQ0FBQztnQkFDN0QsSUFBSSx5QkFBZSxDQUFDO29CQUNsQixPQUFPLEVBQUU7d0JBQ1Asc0NBQXNDO3dCQUN0Qyx1Q0FBdUM7d0JBQ3ZDLG1EQUFtRDtxQkFDcEQ7b0JBQ0QsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO29CQUNoQixNQUFNLEVBQUUsZ0JBQU0sQ0FBQyxLQUFLO2lCQUNyQixDQUFDO2FBQ0gsQ0FBQztTQUNILENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNLLG9CQUFvQixDQUFDLGdCQUF3QjtRQUNuRCxPQUFPLGdCQUFnQjthQUNwQixPQUFPLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQzthQUM1QixPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDO0NBQ0Y7QUFyREQsb0RBcURDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY3VzdG9tUmVzb3VyY2VzIGZyb20gXCJhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzXCI7XG5pbXBvcnQgeyBFZmZlY3QsIFBvbGljeVN0YXRlbWVudCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgVHJ1c3RlZFNlcnZpY2VBY2Nlc3NQcm9wcyB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBBd3NDdXN0b21SZXNvdXJjZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXdzQ3VzdG9tUmVzb3VyY2VcIjtcblxuLyoqXG4gKiBBV1MgT3JnYW5pc2F0aW9ucyBUcnVzdGVkIFNlcnZpY2UgQWNjZXNzIGNvbnN0cnVjdFxuICovXG5leHBvcnQgY2xhc3MgVHJ1c3RlZFNlcnZpY2VBY2Nlc3MgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICByZWFkb25seSBzZXJ2aWNlUHJpbmNpcGFsOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFRydXN0ZWRTZXJ2aWNlQWNjZXNzUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5zZXJ2aWNlUHJpbmNpcGFsID0gcHJvcHMuc2VydmljZVByaW5jaXBhbDtcblxuICAgIGNvbnN0IHNlcnZpY2VOYW1lID0gdGhpcy5ub3JtYWxpemVTZXJ2aWNlTmFtZShwcm9wcy5zZXJ2aWNlUHJpbmNpcGFsKTtcblxuICAgIC8vIEVuYWJsZSB0cnVzdGVkIHNlcnZpY2UgYWNjZXNzXG4gICAgbmV3IEF3c0N1c3RvbVJlc291cmNlKHRoaXMsIFwiVHJ1c3RlZFNlcnZpY2VBY2Nlc3NSZXNvdXJjZVwiLCB7XG4gICAgICBmdW5jdGlvbk5hbWU6IGBlbmFibGVUcnVzdGVkU2VydmljZSR7c2VydmljZU5hbWV9YCxcbiAgICAgIG9uQ3JlYXRlOiB7XG4gICAgICAgIHNlcnZpY2U6IFwib3JnYW5pemF0aW9uc1wiLFxuICAgICAgICBhY3Rpb246IFwiRW5hYmxlQVdTU2VydmljZUFjY2Vzc0NvbW1hbmRcIixcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIFNlcnZpY2VQcmluY2lwYWw6IHByb3BzLnNlcnZpY2VQcmluY2lwYWxcbiAgICAgICAgfSxcbiAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiBjdXN0b21SZXNvdXJjZXMuUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFxuICAgICAgICAgIGB0cnVzdGVkLXNlcnZpY2UtJHtwcm9wcy5zZXJ2aWNlUHJpbmNpcGFsfWBcbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIG9uRGVsZXRlOiB7XG4gICAgICAgIHNlcnZpY2U6IFwib3JnYW5pemF0aW9uc1wiLFxuICAgICAgICBhY3Rpb246IFwiRGlzYWJsZUFXU1NlcnZpY2VBY2Nlc3NDb21tYW5kXCIsXG4gICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBTZXJ2aWNlUHJpbmNpcGFsOiBwcm9wcy5zZXJ2aWNlUHJpbmNpcGFsXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICByZXNvdXJjZVR5cGU6IFwiQ3VzdG9tOjpUcnVzdGVkU2VydmljZUFjY2Vzc1wiLFxuICAgICAgcG9saWN5OiBjdXN0b21SZXNvdXJjZXMuQXdzQ3VzdG9tUmVzb3VyY2VQb2xpY3kuZnJvbVN0YXRlbWVudHMoW1xuICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICBcIm9yZ2FuaXphdGlvbnM6RW5hYmxlQVdTU2VydmljZUFjY2Vzc1wiLFxuICAgICAgICAgICAgXCJvcmdhbml6YXRpb25zOkRpc2FibGVBV1NTZXJ2aWNlQWNjZXNzXCIsXG4gICAgICAgICAgICBcIm9yZ2FuaXphdGlvbnM6TGlzdEFXU1NlcnZpY2VBY2Nlc3NGb3JPcmdhbml6YXRpb25cIlxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdLFxuICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XXG4gICAgICAgIH0pXG4gICAgICBdKVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciB0byBub3JtYWxpemUgc2VydmljZSBuYW1lcyBmb3IgY29uc3RydWN0IElEc1xuICAgKi9cbiAgcHJpdmF0ZSBub3JtYWxpemVTZXJ2aWNlTmFtZShzZXJ2aWNlUHJpbmNpcGFsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBzZXJ2aWNlUHJpbmNpcGFsXG4gICAgICAucmVwbGFjZSgvW15hLXpBLVowLTldL2csIFwiXCIpXG4gICAgICAucmVwbGFjZSgvXihbYS16XSkvLCAobWF0Y2gpID0+IG1hdGNoLnRvVXBwZXJDYXNlKCkpO1xuICB9XG59XG4iXX0=
@@ -1,165 +0,0 @@
1
- import { RemovalPolicy } from "aws-cdk-lib";
2
- /**
3
- * Feature set for AWS Organisations
4
- */
5
- export declare enum FeatureSet {
6
- /**
7
- * Consolidated Billing features only
8
- */
9
- CONSOLIDATED_BILLING = "CONSOLIDATED_BILLING",
10
- /**
11
- * All features including SCPs, delegated administrators, etc.
12
- */
13
- ALL = "ALL"
14
- }
15
- /**
16
- * AWS Organisations policy types
17
- */
18
- export declare enum PolicyType {
19
- SERVICE_CONTROL_POLICY = "SERVICE_CONTROL_POLICY",
20
- TAG_POLICY = "TAG_POLICY",
21
- BACKUP_POLICY = "BACKUP_POLICY",
22
- AISERVICES_OPT_OUT_POLICY = "AISERVICES_OPT_OUT_POLICY"
23
- }
24
- /**
25
- * IAM user access to billing information
26
- */
27
- export declare enum IamUserAccessToBilling {
28
- ALLOW = "ALLOW",
29
- DENY = "DENY"
30
- }
31
- /**
32
- * Basic organisational unit interface for type references
33
- */
34
- export interface IOrganisationalUnitBasic {
35
- readonly organisationalUnitId: string;
36
- readonly organisationalUnitArn: string;
37
- readonly organisationalUnitName: string;
38
- }
39
- /**
40
- * Properties for creating an Organisation
41
- */
42
- export interface OrganisationProps {
43
- /**
44
- * Feature set for the organisation
45
- * @default FeatureSet.ALL
46
- */
47
- readonly featureSet?: FeatureSet;
48
- /**
49
- * Whether to import existing organisation if found
50
- * @default true
51
- */
52
- readonly importOnDuplicate?: boolean;
53
- }
54
- /**
55
- * Properties for creating an Organisational Unit
56
- */
57
- export interface OrganisationalUnitProps {
58
- /**
59
- * Name of the organisational unit
60
- */
61
- readonly organisationalUnitName: string;
62
- /**
63
- * Parent organisation or organisational unit
64
- */
65
- readonly parent: IOrganisationalUnitBasic;
66
- /**
67
- * Whether to import existing OU if found
68
- * @default true
69
- */
70
- readonly importOnDuplicate?: boolean;
71
- /**
72
- * Removal policy for this resource
73
- * @default RemovalPolicy.RETAIN
74
- */
75
- readonly removalPolicy?: RemovalPolicy;
76
- }
77
- /**
78
- * Properties for creating an Account
79
- */
80
- export interface AccountProps {
81
- /**
82
- * Name of the account
83
- */
84
- readonly accountName: string;
85
- /**
86
- * Email address for the account
87
- */
88
- readonly email: string;
89
- /**
90
- * Parent organisation or organisational unit
91
- */
92
- readonly parent: IOrganisationalUnitBasic;
93
- /**
94
- * Whether to import existing account if found
95
- * @default true
96
- */
97
- readonly importOnDuplicate?: boolean;
98
- /**
99
- * Removal policy for this resource
100
- * @default RemovalPolicy.RETAIN
101
- */
102
- readonly removalPolicy?: RemovalPolicy;
103
- /**
104
- * IAM user access to billing
105
- * @default IamUserAccessToBilling.ALLOW
106
- */
107
- readonly iamUserAccessToBilling?: IamUserAccessToBilling;
108
- /**
109
- * Cross-account role name for management access
110
- * @default "OrganisationAccountAccessRole"
111
- */
112
- readonly roleName?: string;
113
- }
114
- /**
115
- * Properties for creating a Policy
116
- */
117
- export interface PolicyProps {
118
- /**
119
- * Name of the policy
120
- */
121
- readonly policyName: string;
122
- /**
123
- * Description of the policy
124
- */
125
- readonly description: string;
126
- /**
127
- * Policy content as JSON string
128
- */
129
- readonly content: string;
130
- /**
131
- * Type of policy
132
- */
133
- readonly policyType: PolicyType;
134
- /**
135
- * Whether to import existing policy if found
136
- * @default true
137
- */
138
- readonly importOnDuplicate?: boolean;
139
- }
140
- /**
141
- * Properties for delegated administrator
142
- */
143
- export interface DelegatedAdministratorProps {
144
- /**
145
- * AWS service principal (e.g., "stacksets.amazonaws.com")
146
- */
147
- readonly servicePrincipal: string;
148
- /**
149
- * Account ID to delegate administrator privileges to
150
- */
151
- readonly accountId: string;
152
- }
153
- /**
154
- * Properties for trusted service access
155
- */
156
- export interface TrustedServiceAccessProps {
157
- /**
158
- * AWS service principal (e.g., "sso.amazonaws.com")
159
- */
160
- readonly servicePrincipal: string;
161
- }
162
- /**
163
- * Account configuration for multi-environment setups
164
- */
165
- export type AccountsConfig = Record<string, string | string[]>;
@@ -1,36 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IamUserAccessToBilling = exports.PolicyType = exports.FeatureSet = void 0;
4
- /**
5
- * Feature set for AWS Organisations
6
- */
7
- var FeatureSet;
8
- (function (FeatureSet) {
9
- /**
10
- * Consolidated Billing features only
11
- */
12
- FeatureSet["CONSOLIDATED_BILLING"] = "CONSOLIDATED_BILLING";
13
- /**
14
- * All features including SCPs, delegated administrators, etc.
15
- */
16
- FeatureSet["ALL"] = "ALL";
17
- })(FeatureSet || (exports.FeatureSet = FeatureSet = {}));
18
- /**
19
- * AWS Organisations policy types
20
- */
21
- var PolicyType;
22
- (function (PolicyType) {
23
- PolicyType["SERVICE_CONTROL_POLICY"] = "SERVICE_CONTROL_POLICY";
24
- PolicyType["TAG_POLICY"] = "TAG_POLICY";
25
- PolicyType["BACKUP_POLICY"] = "BACKUP_POLICY";
26
- PolicyType["AISERVICES_OPT_OUT_POLICY"] = "AISERVICES_OPT_OUT_POLICY";
27
- })(PolicyType || (exports.PolicyType = PolicyType = {}));
28
- /**
29
- * IAM user access to billing information
30
- */
31
- var IamUserAccessToBilling;
32
- (function (IamUserAccessToBilling) {
33
- IamUserAccessToBilling["ALLOW"] = "ALLOW";
34
- IamUserAccessToBilling["DENY"] = "DENY";
35
- })(IamUserAccessToBilling || (exports.IamUserAccessToBilling = IamUserAccessToBilling = {}));
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9vcmdhbmlzYXRpb25zL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ0gsSUFBWSxVQVVYO0FBVkQsV0FBWSxVQUFVO0lBQ3BCOztPQUVHO0lBQ0gsMkRBQTZDLENBQUE7SUFFN0M7O09BRUc7SUFDSCx5QkFBVyxDQUFBO0FBQ2IsQ0FBQyxFQVZXLFVBQVUsMEJBQVYsVUFBVSxRQVVyQjtBQUVEOztHQUVHO0FBQ0gsSUFBWSxVQUtYO0FBTEQsV0FBWSxVQUFVO0lBQ3BCLCtEQUFpRCxDQUFBO0lBQ2pELHVDQUF5QixDQUFBO0lBQ3pCLDZDQUErQixDQUFBO0lBQy9CLHFFQUF1RCxDQUFBO0FBQ3pELENBQUMsRUFMVyxVQUFVLDBCQUFWLFVBQVUsUUFLckI7QUFFRDs7R0FFRztBQUNILElBQVksc0JBR1g7QUFIRCxXQUFZLHNCQUFzQjtJQUNoQyx5Q0FBZSxDQUFBO0lBQ2YsdUNBQWEsQ0FBQTtBQUNmLENBQUMsRUFIVyxzQkFBc0Isc0NBQXRCLHNCQUFzQixRQUdqQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlbW92YWxQb2xpY3ksIFN0YWNrUHJvcHMgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcblxuLyoqXG4gKiBGZWF0dXJlIHNldCBmb3IgQVdTIE9yZ2FuaXNhdGlvbnNcbiAqL1xuZXhwb3J0IGVudW0gRmVhdHVyZVNldCB7XG4gIC8qKlxuICAgKiBDb25zb2xpZGF0ZWQgQmlsbGluZyBmZWF0dXJlcyBvbmx5XG4gICAqL1xuICBDT05TT0xJREFURURfQklMTElORyA9IFwiQ09OU09MSURBVEVEX0JJTExJTkdcIixcblxuICAvKipcbiAgICogQWxsIGZlYXR1cmVzIGluY2x1ZGluZyBTQ1BzLCBkZWxlZ2F0ZWQgYWRtaW5pc3RyYXRvcnMsIGV0Yy5cbiAgICovXG4gIEFMTCA9IFwiQUxMXCJcbn1cblxuLyoqXG4gKiBBV1MgT3JnYW5pc2F0aW9ucyBwb2xpY3kgdHlwZXNcbiAqL1xuZXhwb3J0IGVudW0gUG9saWN5VHlwZSB7XG4gIFNFUlZJQ0VfQ09OVFJPTF9QT0xJQ1kgPSBcIlNFUlZJQ0VfQ09OVFJPTF9QT0xJQ1lcIixcbiAgVEFHX1BPTElDWSA9IFwiVEFHX1BPTElDWVwiLFxuICBCQUNLVVBfUE9MSUNZID0gXCJCQUNLVVBfUE9MSUNZXCIsXG4gIEFJU0VSVklDRVNfT1BUX09VVF9QT0xJQ1kgPSBcIkFJU0VSVklDRVNfT1BUX09VVF9QT0xJQ1lcIlxufVxuXG4vKipcbiAqIElBTSB1c2VyIGFjY2VzcyB0byBiaWxsaW5nIGluZm9ybWF0aW9uXG4gKi9cbmV4cG9ydCBlbnVtIElhbVVzZXJBY2Nlc3NUb0JpbGxpbmcge1xuICBBTExPVyA9IFwiQUxMT1dcIixcbiAgREVOWSA9IFwiREVOWVwiXG59XG5cbi8qKlxuICogQmFzaWMgb3JnYW5pc2F0aW9uYWwgdW5pdCBpbnRlcmZhY2UgZm9yIHR5cGUgcmVmZXJlbmNlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElPcmdhbmlzYXRpb25hbFVuaXRCYXNpYyB7XG4gIHJlYWRvbmx5IG9yZ2FuaXNhdGlvbmFsVW5pdElkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG9yZ2FuaXNhdGlvbmFsVW5pdEFybjogc3RyaW5nO1xuICByZWFkb25seSBvcmdhbmlzYXRpb25hbFVuaXROYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYW4gT3JnYW5pc2F0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3JnYW5pc2F0aW9uUHJvcHMge1xuICAvKipcbiAgICogRmVhdHVyZSBzZXQgZm9yIHRoZSBvcmdhbmlzYXRpb25cbiAgICogQGRlZmF1bHQgRmVhdHVyZVNldC5BTExcbiAgICovXG4gIHJlYWRvbmx5IGZlYXR1cmVTZXQ/OiBGZWF0dXJlU2V0O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGltcG9ydCBleGlzdGluZyBvcmdhbmlzYXRpb24gaWYgZm91bmRcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1wb3J0T25EdXBsaWNhdGU/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGFuIE9yZ2FuaXNhdGlvbmFsIFVuaXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPcmdhbmlzYXRpb25hbFVuaXRQcm9wcyB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBvcmdhbmlzYXRpb25hbCB1bml0XG4gICAqL1xuICByZWFkb25seSBvcmdhbmlzYXRpb25hbFVuaXROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBhcmVudCBvcmdhbmlzYXRpb24gb3Igb3JnYW5pc2F0aW9uYWwgdW5pdFxuICAgKi9cbiAgcmVhZG9ubHkgcGFyZW50OiBJT3JnYW5pc2F0aW9uYWxVbml0QmFzaWM7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW1wb3J0IGV4aXN0aW5nIE9VIGlmIGZvdW5kXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGltcG9ydE9uRHVwbGljYXRlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUmVtb3ZhbCBwb2xpY3kgZm9yIHRoaXMgcmVzb3VyY2VcbiAgICogQGRlZmF1bHQgUmVtb3ZhbFBvbGljeS5SRVRBSU5cbiAgICovXG4gIHJlYWRvbmx5IHJlbW92YWxQb2xpY3k/OiBSZW1vdmFsUG9saWN5O1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGFuIEFjY291bnRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBY2NvdW50UHJvcHMge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgYWNjb3VudFxuICAgKi9cbiAgcmVhZG9ubHkgYWNjb3VudE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogRW1haWwgYWRkcmVzcyBmb3IgdGhlIGFjY291bnRcbiAgICovXG4gIHJlYWRvbmx5IGVtYWlsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBhcmVudCBvcmdhbmlzYXRpb24gb3Igb3JnYW5pc2F0aW9uYWwgdW5pdFxuICAgKi9cbiAgcmVhZG9ubHkgcGFyZW50OiBJT3JnYW5pc2F0aW9uYWxVbml0QmFzaWM7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW1wb3J0IGV4aXN0aW5nIGFjY291bnQgaWYgZm91bmRcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1wb3J0T25EdXBsaWNhdGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSZW1vdmFsIHBvbGljeSBmb3IgdGhpcyByZXNvdXJjZVxuICAgKiBAZGVmYXVsdCBSZW1vdmFsUG9saWN5LlJFVEFJTlxuICAgKi9cbiAgcmVhZG9ubHkgcmVtb3ZhbFBvbGljeT86IFJlbW92YWxQb2xpY3k7XG5cbiAgLyoqXG4gICAqIElBTSB1c2VyIGFjY2VzcyB0byBiaWxsaW5nXG4gICAqIEBkZWZhdWx0IElhbVVzZXJBY2Nlc3NUb0JpbGxpbmcuQUxMT1dcbiAgICovXG4gIHJlYWRvbmx5IGlhbVVzZXJBY2Nlc3NUb0JpbGxpbmc/OiBJYW1Vc2VyQWNjZXNzVG9CaWxsaW5nO1xuXG4gIC8qKlxuICAgKiBDcm9zcy1hY2NvdW50IHJvbGUgbmFtZSBmb3IgbWFuYWdlbWVudCBhY2Nlc3NcbiAgICogQGRlZmF1bHQgXCJPcmdhbmlzYXRpb25BY2NvdW50QWNjZXNzUm9sZVwiXG4gICAqL1xuICByZWFkb25seSByb2xlTmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhIFBvbGljeVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBvbGljeVByb3BzIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIHBvbGljeVxuICAgKi9cbiAgcmVhZG9ubHkgcG9saWN5TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZXNjcmlwdGlvbiBvZiB0aGUgcG9saWN5XG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQb2xpY3kgY29udGVudCBhcyBKU09OIHN0cmluZ1xuICAgKi9cbiAgcmVhZG9ubHkgY29udGVudDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUeXBlIG9mIHBvbGljeVxuICAgKi9cbiAgcmVhZG9ubHkgcG9saWN5VHlwZTogUG9saWN5VHlwZTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBpbXBvcnQgZXhpc3RpbmcgcG9saWN5IGlmIGZvdW5kXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGltcG9ydE9uRHVwbGljYXRlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBkZWxlZ2F0ZWQgYWRtaW5pc3RyYXRvclxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlbGVnYXRlZEFkbWluaXN0cmF0b3JQcm9wcyB7XG4gIC8qKlxuICAgKiBBV1Mgc2VydmljZSBwcmluY2lwYWwgKGUuZy4sIFwic3RhY2tzZXRzLmFtYXpvbmF3cy5jb21cIilcbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VQcmluY2lwYWw6IHN0cmluZztcblxuICAvKipcbiAgICogQWNjb3VudCBJRCB0byBkZWxlZ2F0ZSBhZG1pbmlzdHJhdG9yIHByaXZpbGVnZXMgdG9cbiAgICovXG4gIHJlYWRvbmx5IGFjY291bnRJZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIHRydXN0ZWQgc2VydmljZSBhY2Nlc3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUcnVzdGVkU2VydmljZUFjY2Vzc1Byb3BzIHtcbiAgLyoqXG4gICAqIEFXUyBzZXJ2aWNlIHByaW5jaXBhbCAoZS5nLiwgXCJzc28uYW1hem9uYXdzLmNvbVwiKVxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZVByaW5jaXBhbDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFjY291bnQgY29uZmlndXJhdGlvbiBmb3IgbXVsdGktZW52aXJvbm1lbnQgc2V0dXBzXG4gKi9cbmV4cG9ydCB0eXBlIEFjY291bnRzQ29uZmlnID0gUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10+O1xuIl19
@@ -1,31 +0,0 @@
1
- import { Stack, CfnResource } from "aws-cdk-lib";
2
- import { IConstruct } from "constructs";
3
- /**
4
- * DirectTagging provides a way to apply tags to resources without using aspects.
5
- * This approach works by directly manipulating CloudFormation resources during
6
- * stack initialization, avoiding the infinite loop issue in CDK v2.206.0+
7
- */
8
- export declare class DirectTagging {
9
- private static globalTags;
10
- private static stackTags;
11
- /**
12
- * Set global tags that will be applied to all resources
13
- */
14
- static setGlobalTags(tags: {
15
- [key: string]: string;
16
- }): void;
17
- /**
18
- * Set tags for a specific stack
19
- */
20
- static setStackTags(stack: Stack, tags: {
21
- [key: string]: string;
22
- }): void;
23
- /**
24
- * Apply tags to a CloudFormation resource directly
25
- */
26
- static tagCfnResource(resource: CfnResource): void;
27
- /**
28
- * Process a construct tree and tag all CloudFormation resources
29
- */
30
- static processConstructTree(root: IConstruct): void;
31
- }
@@ -1,86 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DirectTagging = void 0;
4
- const aws_cdk_lib_1 = require("aws-cdk-lib");
5
- /**
6
- * DirectTagging provides a way to apply tags to resources without using aspects.
7
- * This approach works by directly manipulating CloudFormation resources during
8
- * stack initialization, avoiding the infinite loop issue in CDK v2.206.0+
9
- */
10
- class DirectTagging {
11
- /**
12
- * Set global tags that will be applied to all resources
13
- */
14
- static setGlobalTags(tags) {
15
- DirectTagging.globalTags = {
16
- ...DirectTagging.globalTags,
17
- ...tags
18
- };
19
- }
20
- /**
21
- * Set tags for a specific stack
22
- */
23
- static setStackTags(stack, tags) {
24
- const existingTags = DirectTagging.stackTags.get(stack) || {};
25
- DirectTagging.stackTags.set(stack, {
26
- ...existingTags,
27
- ...tags
28
- });
29
- }
30
- /**
31
- * Apply tags to a CloudFormation resource directly
32
- */
33
- static tagCfnResource(resource) {
34
- const stack = aws_cdk_lib_1.Stack.of(resource);
35
- const stackTags = DirectTagging.stackTags.get(stack) || {};
36
- const allTags = {
37
- ...DirectTagging.globalTags,
38
- ...stackTags
39
- };
40
- if (Object.keys(allTags).length === 0) {
41
- return;
42
- }
43
- // Check if resource supports tags
44
- if (!('tags' in resource) || typeof resource.tags !== 'object') {
45
- return;
46
- }
47
- // Get existing tags
48
- const existingTags = resource.tags || [];
49
- const tagMap = new Map();
50
- // Add existing tags to map
51
- if (Array.isArray(existingTags)) {
52
- existingTags.forEach((tag) => {
53
- if (tag.key && tag.value) {
54
- tagMap.set(tag.key, tag.value);
55
- }
56
- });
57
- }
58
- // Add new tags (overwriting if they exist)
59
- Object.entries(allTags).forEach(([key, value]) => {
60
- tagMap.set(key, value);
61
- });
62
- // Convert back to array format
63
- resource.tags = Array.from(tagMap.entries()).map(([key, value]) => ({
64
- key,
65
- value
66
- }));
67
- }
68
- /**
69
- * Process a construct tree and tag all CloudFormation resources
70
- */
71
- static processConstructTree(root) {
72
- const processNode = (node) => {
73
- // Check if this is a CloudFormation resource
74
- if (aws_cdk_lib_1.CfnResource.isCfnResource(node)) {
75
- DirectTagging.tagCfnResource(node);
76
- }
77
- // Process children
78
- node.node.children.forEach(child => processNode(child));
79
- };
80
- processNode(root);
81
- }
82
- }
83
- exports.DirectTagging = DirectTagging;
84
- DirectTagging.globalTags = {};
85
- DirectTagging.stackTags = new Map();
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0VGFnZ2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi91dGlscy9kaXJlY3RUYWdnaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFpRDtBQUdqRDs7OztHQUlHO0FBQ0gsTUFBYSxhQUFhO0lBSXhCOztPQUVHO0lBQ0ksTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUErQjtRQUN6RCxhQUFhLENBQUMsVUFBVSxHQUFHO1lBQ3pCLEdBQUcsYUFBYSxDQUFDLFVBQVU7WUFDM0IsR0FBRyxJQUFJO1NBQ1IsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBWSxFQUFFLElBQStCO1FBQ3RFLE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM5RCxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUU7WUFDakMsR0FBRyxZQUFZO1lBQ2YsR0FBRyxJQUFJO1NBQ1IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFxQjtRQUNoRCxNQUFNLEtBQUssR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqQyxNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0QsTUFBTSxPQUFPLEdBQUc7WUFDZCxHQUFHLGFBQWEsQ0FBQyxVQUFVO1lBQzNCLEdBQUcsU0FBUztTQUNiLENBQUM7UUFFRixJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3RDLE9BQU87UUFDVCxDQUFDO1FBRUQsa0NBQWtDO1FBQ2xDLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUMsSUFBSSxPQUFPLFFBQVEsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDL0QsT0FBTztRQUNULENBQUM7UUFFRCxvQkFBb0I7UUFDcEIsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7UUFDekMsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7UUFFekMsMkJBQTJCO1FBQzNCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQ2hDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDaEMsSUFBSSxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDekIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDakMsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELDJDQUEyQztRQUMzQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDL0MsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7UUFFSCwrQkFBK0I7UUFDL0IsUUFBUSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2xFLEdBQUc7WUFDSCxLQUFLO1NBQ04sQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsb0JBQW9CLENBQUMsSUFBZ0I7UUFDakQsTUFBTSxXQUFXLEdBQUcsQ0FBQyxJQUFnQixFQUFFLEVBQUU7WUFDdkMsNkNBQTZDO1lBQzdDLElBQUkseUJBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDcEMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyQyxDQUFDO1lBRUQsbUJBQW1CO1lBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FBQztRQUVGLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQixDQUFDOztBQXJGSCxzQ0FzRkM7QUFyRmdCLHdCQUFVLEdBQThCLEVBQUUsQ0FBQztBQUMzQyx1QkFBUyxHQUEwQyxJQUFJLEdBQUcsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhY2ssIENmblJlc291cmNlIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBJQ29uc3RydWN0LCBOb2RlIH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuLyoqXG4gKiBEaXJlY3RUYWdnaW5nIHByb3ZpZGVzIGEgd2F5IHRvIGFwcGx5IHRhZ3MgdG8gcmVzb3VyY2VzIHdpdGhvdXQgdXNpbmcgYXNwZWN0cy5cbiAqIFRoaXMgYXBwcm9hY2ggd29ya3MgYnkgZGlyZWN0bHkgbWFuaXB1bGF0aW5nIENsb3VkRm9ybWF0aW9uIHJlc291cmNlcyBkdXJpbmdcbiAqIHN0YWNrIGluaXRpYWxpemF0aW9uLCBhdm9pZGluZyB0aGUgaW5maW5pdGUgbG9vcCBpc3N1ZSBpbiBDREsgdjIuMjA2LjArXG4gKi9cbmV4cG9ydCBjbGFzcyBEaXJlY3RUYWdnaW5nIHtcbiAgcHJpdmF0ZSBzdGF0aWMgZ2xvYmFsVGFnczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuICBwcml2YXRlIHN0YXRpYyBzdGFja1RhZ3M6IE1hcDxTdGFjaywgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfT4gPSBuZXcgTWFwKCk7XG4gIFxuICAvKipcbiAgICogU2V0IGdsb2JhbCB0YWdzIHRoYXQgd2lsbCBiZSBhcHBsaWVkIHRvIGFsbCByZXNvdXJjZXNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc2V0R2xvYmFsVGFncyh0YWdzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KTogdm9pZCB7XG4gICAgRGlyZWN0VGFnZ2luZy5nbG9iYWxUYWdzID0ge1xuICAgICAgLi4uRGlyZWN0VGFnZ2luZy5nbG9iYWxUYWdzLFxuICAgICAgLi4udGFnc1xuICAgIH07XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBTZXQgdGFncyBmb3IgYSBzcGVjaWZpYyBzdGFja1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzZXRTdGFja1RhZ3Moc3RhY2s6IFN0YWNrLCB0YWdzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KTogdm9pZCB7XG4gICAgY29uc3QgZXhpc3RpbmdUYWdzID0gRGlyZWN0VGFnZ2luZy5zdGFja1RhZ3MuZ2V0KHN0YWNrKSB8fCB7fTtcbiAgICBEaXJlY3RUYWdnaW5nLnN0YWNrVGFncy5zZXQoc3RhY2ssIHtcbiAgICAgIC4uLmV4aXN0aW5nVGFncyxcbiAgICAgIC4uLnRhZ3NcbiAgICB9KTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIEFwcGx5IHRhZ3MgdG8gYSBDbG91ZEZvcm1hdGlvbiByZXNvdXJjZSBkaXJlY3RseVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB0YWdDZm5SZXNvdXJjZShyZXNvdXJjZTogQ2ZuUmVzb3VyY2UpOiB2b2lkIHtcbiAgICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHJlc291cmNlKTtcbiAgICBjb25zdCBzdGFja1RhZ3MgPSBEaXJlY3RUYWdnaW5nLnN0YWNrVGFncy5nZXQoc3RhY2spIHx8IHt9O1xuICAgIGNvbnN0IGFsbFRhZ3MgPSB7XG4gICAgICAuLi5EaXJlY3RUYWdnaW5nLmdsb2JhbFRhZ3MsXG4gICAgICAuLi5zdGFja1RhZ3NcbiAgICB9O1xuICAgIFxuICAgIGlmIChPYmplY3Qua2V5cyhhbGxUYWdzKS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgLy8gQ2hlY2sgaWYgcmVzb3VyY2Ugc3VwcG9ydHMgdGFnc1xuICAgIGlmICghKCd0YWdzJyBpbiByZXNvdXJjZSkgfHwgdHlwZW9mIHJlc291cmNlLnRhZ3MgIT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIC8vIEdldCBleGlzdGluZyB0YWdzXG4gICAgY29uc3QgZXhpc3RpbmdUYWdzID0gcmVzb3VyY2UudGFncyB8fCBbXTtcbiAgICBjb25zdCB0YWdNYXAgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICAgIFxuICAgIC8vIEFkZCBleGlzdGluZyB0YWdzIHRvIG1hcFxuICAgIGlmIChBcnJheS5pc0FycmF5KGV4aXN0aW5nVGFncykpIHtcbiAgICAgIGV4aXN0aW5nVGFncy5mb3JFYWNoKCh0YWc6IGFueSkgPT4ge1xuICAgICAgICBpZiAodGFnLmtleSAmJiB0YWcudmFsdWUpIHtcbiAgICAgICAgICB0YWdNYXAuc2V0KHRhZy5rZXksIHRhZy52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBcbiAgICAvLyBBZGQgbmV3IHRhZ3MgKG92ZXJ3cml0aW5nIGlmIHRoZXkgZXhpc3QpXG4gICAgT2JqZWN0LmVudHJpZXMoYWxsVGFncykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICB0YWdNYXAuc2V0KGtleSwgdmFsdWUpO1xuICAgIH0pO1xuICAgIFxuICAgIC8vIENvbnZlcnQgYmFjayB0byBhcnJheSBmb3JtYXRcbiAgICByZXNvdXJjZS50YWdzID0gQXJyYXkuZnJvbSh0YWdNYXAuZW50cmllcygpKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gKHtcbiAgICAgIGtleSxcbiAgICAgIHZhbHVlXG4gICAgfSkpO1xuICB9XG4gIFxuICAvKipcbiAgICogUHJvY2VzcyBhIGNvbnN0cnVjdCB0cmVlIGFuZCB0YWcgYWxsIENsb3VkRm9ybWF0aW9uIHJlc291cmNlc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBwcm9jZXNzQ29uc3RydWN0VHJlZShyb290OiBJQ29uc3RydWN0KTogdm9pZCB7XG4gICAgY29uc3QgcHJvY2Vzc05vZGUgPSAobm9kZTogSUNvbnN0cnVjdCkgPT4ge1xuICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBpcyBhIENsb3VkRm9ybWF0aW9uIHJlc291cmNlXG4gICAgICBpZiAoQ2ZuUmVzb3VyY2UuaXNDZm5SZXNvdXJjZShub2RlKSkge1xuICAgICAgICBEaXJlY3RUYWdnaW5nLnRhZ0NmblJlc291cmNlKG5vZGUpO1xuICAgICAgfVxuICAgICAgXG4gICAgICAvLyBQcm9jZXNzIGNoaWxkcmVuXG4gICAgICBub2RlLm5vZGUuY2hpbGRyZW4uZm9yRWFjaChjaGlsZCA9PiBwcm9jZXNzTm9kZShjaGlsZCkpO1xuICAgIH07XG4gICAgXG4gICAgcHJvY2Vzc05vZGUocm9vdCk7XG4gIH1cbn1cbiJdfQ==
@@ -1,8 +0,0 @@
1
- import { Construct } from "constructs";
2
- /**
3
- * Base construct for Fjall resources that automatically
4
- * applies tags from context during construction.
5
- */
6
- export declare class FjallConstruct extends Construct {
7
- constructor(scope: Construct, id: string);
8
- }
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FjallConstruct = void 0;
4
- const constructs_1 = require("constructs");
5
- const tagContext_1 = require("./tagContext");
6
- /**
7
- * Base construct for Fjall resources that automatically
8
- * applies tags from context during construction.
9
- */
10
- class FjallConstruct extends constructs_1.Construct {
11
- constructor(scope, id) {
12
- super(scope, id);
13
- // Apply tags from context during construction
14
- tagContext_1.TagContext.applyTagsFromContext(this.node);
15
- }
16
- }
17
- exports.FjallConstruct = FjallConstruct;
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmphbGxDb25zdHJ1Y3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvdXRpbHMvZmphbGxDb25zdHJ1Y3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXVDO0FBQ3ZDLDZDQUEwQztBQUUxQzs7O0dBR0c7QUFDSCxNQUFhLGNBQWUsU0FBUSxzQkFBUztJQUMzQyxZQUFZLEtBQWdCLEVBQUUsRUFBVTtRQUN0QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLDhDQUE4QztRQUM5Qyx1QkFBVSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QyxDQUFDO0NBQ0Y7QUFQRCx3Q0FPQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBUYWdDb250ZXh0IH0gZnJvbSBcIi4vdGFnQ29udGV4dFwiO1xuXG4vKipcbiAqIEJhc2UgY29uc3RydWN0IGZvciBGamFsbCByZXNvdXJjZXMgdGhhdCBhdXRvbWF0aWNhbGx5XG4gKiBhcHBsaWVzIHRhZ3MgZnJvbSBjb250ZXh0IGR1cmluZyBjb25zdHJ1Y3Rpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBGamFsbENvbnN0cnVjdCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIFxuICAgIC8vIEFwcGx5IHRhZ3MgZnJvbSBjb250ZXh0IGR1cmluZyBjb25zdHJ1Y3Rpb25cbiAgICBUYWdDb250ZXh0LmFwcGx5VGFnc0Zyb21Db250ZXh0KHRoaXMubm9kZSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,9 +0,0 @@
1
- import { DefaultStackSynthesizer } from "aws-cdk-lib";
2
- import { ISynthesisSession } from "aws-cdk-lib/core";
3
- /**
4
- * Custom stack synthesizer that applies tags during synthesis.
5
- * This avoids the infinite loop issue with aspects in CDK v2.206.0+
6
- */
7
- export declare class FjallStackSynthesizer extends DefaultStackSynthesizer {
8
- synthesize(session: ISynthesisSession): void;
9
- }
@@ -1,22 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FjallStackSynthesizer = void 0;
4
- const aws_cdk_lib_1 = require("aws-cdk-lib");
5
- const directTagging_1 = require("./directTagging");
6
- /**
7
- * Custom stack synthesizer that applies tags during synthesis.
8
- * This avoids the infinite loop issue with aspects in CDK v2.206.0+
9
- */
10
- class FjallStackSynthesizer extends aws_cdk_lib_1.DefaultStackSynthesizer {
11
- synthesize(session) {
12
- const stack = this.boundStack;
13
- // Process the entire construct tree to apply tags
14
- if (stack) {
15
- directTagging_1.DirectTagging.processConstructTree(stack);
16
- }
17
- // Continue with normal synthesis
18
- super.synthesize(session);
19
- }
20
- }
21
- exports.FjallStackSynthesizer = FjallStackSynthesizer;
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmphbGxTdGFja1N5bnRoZXNpemVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3V0aWxzL2ZqYWxsU3RhY2tTeW50aGVzaXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBc0Q7QUFFdEQsbURBQWdEO0FBRWhEOzs7R0FHRztBQUNILE1BQWEscUJBQXNCLFNBQVEscUNBQXVCO0lBQ3pELFVBQVUsQ0FBQyxPQUEwQjtRQUMxQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBRTlCLGtEQUFrRDtRQUNsRCxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsNkJBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBRUQsaUNBQWlDO1FBQ2pDLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUIsQ0FBQztDQUNGO0FBWkQsc0RBWUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZWZhdWx0U3RhY2tTeW50aGVzaXplciB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgSVN5bnRoZXNpc1Nlc3Npb24gfSBmcm9tIFwiYXdzLWNkay1saWIvY29yZVwiO1xuaW1wb3J0IHsgRGlyZWN0VGFnZ2luZyB9IGZyb20gXCIuL2RpcmVjdFRhZ2dpbmdcIjtcblxuLyoqXG4gKiBDdXN0b20gc3RhY2sgc3ludGhlc2l6ZXIgdGhhdCBhcHBsaWVzIHRhZ3MgZHVyaW5nIHN5bnRoZXNpcy5cbiAqIFRoaXMgYXZvaWRzIHRoZSBpbmZpbml0ZSBsb29wIGlzc3VlIHdpdGggYXNwZWN0cyBpbiBDREsgdjIuMjA2LjArXG4gKi9cbmV4cG9ydCBjbGFzcyBGamFsbFN0YWNrU3ludGhlc2l6ZXIgZXh0ZW5kcyBEZWZhdWx0U3RhY2tTeW50aGVzaXplciB7XG4gIHB1YmxpYyBzeW50aGVzaXplKHNlc3Npb246IElTeW50aGVzaXNTZXNzaW9uKTogdm9pZCB7XG4gICAgY29uc3Qgc3RhY2sgPSB0aGlzLmJvdW5kU3RhY2s7XG4gICAgXG4gICAgLy8gUHJvY2VzcyB0aGUgZW50aXJlIGNvbnN0cnVjdCB0cmVlIHRvIGFwcGx5IHRhZ3NcbiAgICBpZiAoc3RhY2spIHtcbiAgICAgIERpcmVjdFRhZ2dpbmcucHJvY2Vzc0NvbnN0cnVjdFRyZWUoc3RhY2spO1xuICAgIH1cbiAgICBcbiAgICAvLyBDb250aW51ZSB3aXRoIG5vcm1hbCBzeW50aGVzaXNcbiAgICBzdXBlci5zeW50aGVzaXplKHNlc3Npb24pO1xuICB9XG59XG4iXX0=
@@ -1,28 +0,0 @@
1
- import { Node } from "constructs";
2
- /**
3
- * TagContext provides a CDK context-based approach for passing tags
4
- * down the construct tree without using aspects.
5
- *
6
- * This avoids the infinite loop issue with Tags.of() creating aspects
7
- * during the aspect visitation phase in CDK v2.206.0+
8
- */
9
- export declare class TagContext {
10
- private static readonly TAG_CONTEXT_KEY;
11
- /**
12
- * Set tags in the context for a construct
13
- */
14
- static setTags(node: Node, tags: {
15
- [key: string]: string;
16
- }): void;
17
- /**
18
- * Get tags from the context, including inherited tags from parent constructs
19
- */
20
- static getTags(node: Node): {
21
- [key: string]: string;
22
- };
23
- /**
24
- * Apply tags from context to a construct using a safe approach
25
- * This should be called during construction, not during synthesis
26
- */
27
- static applyTagsFromContext(node: Node): void;
28
- }