@fjall/components-infrastructure 0.43.0 → 0.43.1

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.
@@ -4,8 +4,8 @@ import { IConstruct } from "constructs";
4
4
  * Aspect to enforce a standard set of tags on every tag-capable resource in a construct tree.
5
5
  *
6
6
  * Updated for CDK v2.206.0+ compatibility:
7
- * - No longer uses Tags.of() during aspect visitation to avoid infinite loops
8
- * - Directly manipulates CloudFormation resources instead
7
+ * - Avoids using any tagging APIs during aspect visitation to prevent infinite loops
8
+ * - Uses a synthesis-time approach to modify CloudFormation templates
9
9
  * - Maintains the same clean API and automatic tagging benefits
10
10
  */
11
11
  export declare class StandardTagsAspect implements IAspect {
@@ -15,5 +15,6 @@ export declare class StandardTagsAspect implements IAspect {
15
15
  [key: string]: string;
16
16
  });
17
17
  visit(node: IConstruct): void;
18
- private tagCfnResource;
18
+ private processCfnResource;
19
+ private buildTagsArray;
19
20
  }
@@ -6,8 +6,8 @@ const aws_cdk_lib_1 = require("aws-cdk-lib");
6
6
  * Aspect to enforce a standard set of tags on every tag-capable resource in a construct tree.
7
7
  *
8
8
  * Updated for CDK v2.206.0+ compatibility:
9
- * - No longer uses Tags.of() during aspect visitation to avoid infinite loops
10
- * - Directly manipulates CloudFormation resources instead
9
+ * - Avoids using any tagging APIs during aspect visitation to prevent infinite loops
10
+ * - Uses a synthesis-time approach to modify CloudFormation templates
11
11
  * - Maintains the same clean API and automatic tagging benefits
12
12
  */
13
13
  class StandardTagsAspect {
@@ -20,15 +20,13 @@ class StandardTagsAspect {
20
20
  if (this.taggedResources.has(node)) {
21
21
  return;
22
22
  }
23
- // Only process CfnResource nodes to avoid the Tags.of() issue
23
+ // Process L1 (CFN) resources only
24
24
  if (aws_cdk_lib_1.CfnResource.isCfnResource(node)) {
25
- this.tagCfnResource(node);
25
+ this.processCfnResource(node);
26
26
  this.taggedResources.add(node);
27
27
  }
28
28
  }
29
- tagCfnResource(resource) {
30
- // Check if resource supports tags
31
- const cfnResourceType = resource.cfnResourceType;
29
+ processCfnResource(resource) {
32
30
  // List of CloudFormation resource types that don't support tags
33
31
  const unsupportedTypes = [
34
32
  'AWS::CloudFormation::WaitConditionHandle',
@@ -38,26 +36,36 @@ class StandardTagsAspect {
38
36
  'AWS::IAM::Role',
39
37
  'AWS::IAM::User',
40
38
  'AWS::IAM::Group',
39
+ 'AWS::IAM::ManagedPolicy',
40
+ 'AWS::IAM::InstanceProfile',
41
41
  'AWS::Logs::LogGroup',
42
42
  'AWS::Logs::LogStream',
43
- 'AWS::Events::Rule'
43
+ 'AWS::Events::Rule',
44
+ 'AWS::Route53::RecordSet',
45
+ 'AWS::Route53::RecordSetGroup',
46
+ 'AWS::CloudWatch::Alarm',
47
+ 'AWS::CloudWatch::Dashboard'
44
48
  ];
45
- if (unsupportedTypes.includes(cfnResourceType)) {
49
+ if (unsupportedTypes.includes(resource.cfnResourceType)) {
46
50
  return;
47
51
  }
48
- // Get existing tags
49
- let tags = resource.tags;
50
- if (!tags) {
51
- // Initialize tags if not present
52
- resource.tags = [];
53
- tags = resource.tags;
54
- }
55
- // Convert to map for easier manipulation
52
+ // Add a synthesis hook to modify the CloudFormation template
53
+ const stack = aws_cdk_lib_1.Stack.of(resource);
54
+ const logicalId = stack.getLogicalId(resource);
55
+ // Use addTransform to add tags during synthesis
56
+ resource.addPropertyOverride('Tags', this.buildTagsArray(resource));
57
+ }
58
+ buildTagsArray(resource) {
56
59
  const tagMap = new Map();
57
- // Add existing tags
58
- if (Array.isArray(tags)) {
59
- tags.forEach((tag) => {
60
- if (tag && typeof tag === 'object' && 'key' in tag && 'value' in tag) {
60
+ // Get any existing tags if they exist
61
+ const existingTags = resource.tags || [];
62
+ // Process existing tags if they're in array format
63
+ if (Array.isArray(existingTags)) {
64
+ existingTags.forEach((tag) => {
65
+ if (tag && typeof tag === 'object' && 'Key' in tag && 'Value' in tag) {
66
+ tagMap.set(tag.Key, tag.Value);
67
+ }
68
+ else if (tag && typeof tag === 'object' && 'key' in tag && 'value' in tag) {
61
69
  tagMap.set(tag.key, tag.value);
62
70
  }
63
71
  });
@@ -78,12 +86,12 @@ class StandardTagsAspect {
78
86
  Object.entries(this.requiredTags).forEach(([key, value]) => {
79
87
  tagMap.set(key, value);
80
88
  });
81
- // Convert back to array format
82
- resource.tags = Array.from(tagMap.entries()).map(([key, value]) => ({
83
- key,
84
- value
89
+ // Convert to CloudFormation format
90
+ return Array.from(tagMap.entries()).map(([key, value]) => ({
91
+ Key: key,
92
+ Value: value
85
93
  }));
86
94
  }
87
95
  }
88
96
  exports.StandardTagsAspect = StandardTagsAspect;
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmRUYWdzQXNwZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3V0aWxzL3N0YW5kYXJkVGFnc0FzcGVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBMEQ7QUFHMUQ7Ozs7Ozs7R0FPRztBQUNILE1BQWEsa0JBQWtCO0lBSTdCLFlBQVksWUFBdUM7UUFGbEMsb0JBQWUsR0FBRyxJQUFJLE9BQU8sRUFBYyxDQUFDO1FBRzNELElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0lBQ25DLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBZ0I7UUFDcEIsNEJBQTRCO1FBQzVCLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNuQyxPQUFPO1FBQ1QsQ0FBQztRQUVELDhEQUE4RDtRQUM5RCxJQUFJLHlCQUFXLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFtQixDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsQ0FBQztJQUNILENBQUM7SUFFTyxjQUFjLENBQUMsUUFBcUI7UUFDMUMsa0NBQWtDO1FBQ2xDLE1BQU0sZUFBZSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUM7UUFFakQsZ0VBQWdFO1FBQ2hFLE1BQU0sZ0JBQWdCLEdBQUc7WUFDdkIsMENBQTBDO1lBQzFDLG9DQUFvQztZQUNwQyx5QkFBeUI7WUFDekIsa0JBQWtCO1lBQ2xCLGdCQUFnQjtZQUNoQixnQkFBZ0I7WUFDaEIsaUJBQWlCO1lBQ2pCLHFCQUFxQjtZQUNyQixzQkFBc0I7WUFDdEIsbUJBQW1CO1NBQ3BCLENBQUM7UUFFRixJQUFJLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1lBQy9DLE9BQU87UUFDVCxDQUFDO1FBRUQsb0JBQW9CO1FBQ3BCLElBQUksSUFBSSxHQUFJLFFBQWdCLENBQUMsSUFBSSxDQUFDO1FBRWxDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLGlDQUFpQztZQUNoQyxRQUFnQixDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7WUFDNUIsSUFBSSxHQUFJLFFBQWdCLENBQUMsSUFBSSxDQUFDO1FBQ2hDLENBQUM7UUFFRCx5Q0FBeUM7UUFDekMsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7UUFFekMsb0JBQW9CO1FBQ3BCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDeEIsSUFBSSxHQUFHLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLEtBQUssSUFBSSxHQUFHLElBQUksT0FBTyxJQUFJLEdBQUcsRUFBRSxDQUFDO29CQUNyRSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNqQyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsb0NBQW9DO1FBQ3BDLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3hDLE1BQU0sa0JBQWtCLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssbUJBQW1CLENBQUMsQ0FBQztRQUNoRixrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDN0IsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDekMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtvQkFDOUMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQzt3QkFDOUIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQ3pCLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxnREFBZ0Q7UUFDaEQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUN6RCxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztRQUVILCtCQUErQjtRQUM5QixRQUFnQixDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzNFLEdBQUc7WUFDSCxLQUFLO1NBQ04sQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0NBQ0Y7QUF4RkQsZ0RBd0ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUFzcGVjdCwgU3RhY2ssIENmblJlc291cmNlIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBJQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuLyoqXG4gKiBBc3BlY3QgdG8gZW5mb3JjZSBhIHN0YW5kYXJkIHNldCBvZiB0YWdzIG9uIGV2ZXJ5IHRhZy1jYXBhYmxlIHJlc291cmNlIGluIGEgY29uc3RydWN0IHRyZWUuXG4gKiBcbiAqIFVwZGF0ZWQgZm9yIENESyB2Mi4yMDYuMCsgY29tcGF0aWJpbGl0eTpcbiAqIC0gTm8gbG9uZ2VyIHVzZXMgVGFncy5vZigpIGR1cmluZyBhc3BlY3QgdmlzaXRhdGlvbiB0byBhdm9pZCBpbmZpbml0ZSBsb29wc1xuICogLSBEaXJlY3RseSBtYW5pcHVsYXRlcyBDbG91ZEZvcm1hdGlvbiByZXNvdXJjZXMgaW5zdGVhZFxuICogLSBNYWludGFpbnMgdGhlIHNhbWUgY2xlYW4gQVBJIGFuZCBhdXRvbWF0aWMgdGFnZ2luZyBiZW5lZml0c1xuICovXG5leHBvcnQgY2xhc3MgU3RhbmRhcmRUYWdzQXNwZWN0IGltcGxlbWVudHMgSUFzcGVjdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVxdWlyZWRUYWdzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICBwcml2YXRlIHJlYWRvbmx5IHRhZ2dlZFJlc291cmNlcyA9IG5ldyBXZWFrU2V0PElDb25zdHJ1Y3Q+KCk7XG5cbiAgY29uc3RydWN0b3IocmVxdWlyZWRUYWdzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KSB7XG4gICAgdGhpcy5yZXF1aXJlZFRhZ3MgPSByZXF1aXJlZFRhZ3M7XG4gIH1cblxuICB2aXNpdChub2RlOiBJQ29uc3RydWN0KTogdm9pZCB7XG4gICAgLy8gU2tpcCBpZiBhbHJlYWR5IHByb2Nlc3NlZFxuICAgIGlmICh0aGlzLnRhZ2dlZFJlc291cmNlcy5oYXMobm9kZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgLy8gT25seSBwcm9jZXNzIENmblJlc291cmNlIG5vZGVzIHRvIGF2b2lkIHRoZSBUYWdzLm9mKCkgaXNzdWVcbiAgICBpZiAoQ2ZuUmVzb3VyY2UuaXNDZm5SZXNvdXJjZShub2RlKSkge1xuICAgICAgdGhpcy50YWdDZm5SZXNvdXJjZShub2RlIGFzIENmblJlc291cmNlKTtcbiAgICAgIHRoaXMudGFnZ2VkUmVzb3VyY2VzLmFkZChub2RlKTtcbiAgICB9XG4gIH1cbiAgXG4gIHByaXZhdGUgdGFnQ2ZuUmVzb3VyY2UocmVzb3VyY2U6IENmblJlc291cmNlKTogdm9pZCB7XG4gICAgLy8gQ2hlY2sgaWYgcmVzb3VyY2Ugc3VwcG9ydHMgdGFnc1xuICAgIGNvbnN0IGNmblJlc291cmNlVHlwZSA9IHJlc291cmNlLmNmblJlc291cmNlVHlwZTtcbiAgICBcbiAgICAvLyBMaXN0IG9mIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIHR5cGVzIHRoYXQgZG9uJ3Qgc3VwcG9ydCB0YWdzXG4gICAgY29uc3QgdW5zdXBwb3J0ZWRUeXBlcyA9IFtcbiAgICAgICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpXYWl0Q29uZGl0aW9uSGFuZGxlJyxcbiAgICAgICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpXYWl0Q29uZGl0aW9uJyxcbiAgICAgICdBV1M6OkxhbWJkYTo6UGVybWlzc2lvbicsXG4gICAgICAnQVdTOjpJQU06OlBvbGljeScsXG4gICAgICAnQVdTOjpJQU06OlJvbGUnLFxuICAgICAgJ0FXUzo6SUFNOjpVc2VyJyxcbiAgICAgICdBV1M6OklBTTo6R3JvdXAnLFxuICAgICAgJ0FXUzo6TG9nczo6TG9nR3JvdXAnLFxuICAgICAgJ0FXUzo6TG9nczo6TG9nU3RyZWFtJyxcbiAgICAgICdBV1M6OkV2ZW50czo6UnVsZSdcbiAgICBdO1xuICAgIFxuICAgIGlmICh1bnN1cHBvcnRlZFR5cGVzLmluY2x1ZGVzKGNmblJlc291cmNlVHlwZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgLy8gR2V0IGV4aXN0aW5nIHRhZ3NcbiAgICBsZXQgdGFncyA9IChyZXNvdXJjZSBhcyBhbnkpLnRhZ3M7XG4gICAgXG4gICAgaWYgKCF0YWdzKSB7XG4gICAgICAvLyBJbml0aWFsaXplIHRhZ3MgaWYgbm90IHByZXNlbnRcbiAgICAgIChyZXNvdXJjZSBhcyBhbnkpLnRhZ3MgPSBbXTtcbiAgICAgIHRhZ3MgPSAocmVzb3VyY2UgYXMgYW55KS50YWdzO1xuICAgIH1cbiAgICBcbiAgICAvLyBDb252ZXJ0IHRvIG1hcCBmb3IgZWFzaWVyIG1hbmlwdWxhdGlvblxuICAgIGNvbnN0IHRhZ01hcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgXG4gICAgLy8gQWRkIGV4aXN0aW5nIHRhZ3NcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0YWdzKSkge1xuICAgICAgdGFncy5mb3JFYWNoKCh0YWc6IGFueSkgPT4ge1xuICAgICAgICBpZiAodGFnICYmIHR5cGVvZiB0YWcgPT09ICdvYmplY3QnICYmICdrZXknIGluIHRhZyAmJiAndmFsdWUnIGluIHRhZykge1xuICAgICAgICAgIHRhZ01hcC5zZXQodGFnLmtleSwgdGFnLnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIFxuICAgIC8vIENoZWNrIGZvciBkaXJlY3QgdGFncyBpbiBtZXRhZGF0YVxuICAgIGNvbnN0IG1ldGFkYXRhID0gcmVzb3VyY2Uubm9kZS5tZXRhZGF0YTtcbiAgICBjb25zdCBkaXJlY3RUYWdzTWV0YWRhdGEgPSBtZXRhZGF0YS5maWx0ZXIobSA9PiBtLnR5cGUgPT09ICdmamFsbDpkaXJlY3QtdGFncycpO1xuICAgIGRpcmVjdFRhZ3NNZXRhZGF0YS5mb3JFYWNoKG0gPT4ge1xuICAgICAgaWYgKG0uZGF0YSAmJiB0eXBlb2YgbS5kYXRhID09PSAnb2JqZWN0Jykge1xuICAgICAgICBPYmplY3QuZW50cmllcyhtLmRhdGEpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0YWdNYXAuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgXG4gICAgLy8gQWRkIHJlcXVpcmVkIHRhZ3MgKG92ZXJ3cml0aW5nIGlmIHRoZXkgZXhpc3QpXG4gICAgT2JqZWN0LmVudHJpZXModGhpcy5yZXF1aXJlZFRhZ3MpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgdGFnTWFwLnNldChrZXksIHZhbHVlKTtcbiAgICB9KTtcbiAgICBcbiAgICAvLyBDb252ZXJ0IGJhY2sgdG8gYXJyYXkgZm9ybWF0XG4gICAgKHJlc291cmNlIGFzIGFueSkudGFncyA9IEFycmF5LmZyb20odGFnTWFwLmVudHJpZXMoKSkubWFwKChba2V5LCB2YWx1ZV0pID0+ICh7XG4gICAgICBrZXksXG4gICAgICB2YWx1ZVxuICAgIH0pKTtcbiAgfVxufVxuIl19
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmRUYWdzQXNwZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3V0aWxzL3N0YW5kYXJkVGFnc0FzcGVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBMEQ7QUFHMUQ7Ozs7Ozs7R0FPRztBQUNILE1BQWEsa0JBQWtCO0lBSTdCLFlBQVksWUFBdUM7UUFGbEMsb0JBQWUsR0FBRyxJQUFJLE9BQU8sRUFBYyxDQUFDO1FBRzNELElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0lBQ25DLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBZ0I7UUFDcEIsNEJBQTRCO1FBQzVCLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNuQyxPQUFPO1FBQ1QsQ0FBQztRQUVELGtDQUFrQztRQUNsQyxJQUFJLHlCQUFXLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQW1CLENBQUMsQ0FBQztZQUM3QyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxDQUFDO0lBQ0gsQ0FBQztJQUVPLGtCQUFrQixDQUFDLFFBQXFCO1FBQzlDLGdFQUFnRTtRQUNoRSxNQUFNLGdCQUFnQixHQUFHO1lBQ3ZCLDBDQUEwQztZQUMxQyxvQ0FBb0M7WUFDcEMseUJBQXlCO1lBQ3pCLGtCQUFrQjtZQUNsQixnQkFBZ0I7WUFDaEIsZ0JBQWdCO1lBQ2hCLGlCQUFpQjtZQUNqQix5QkFBeUI7WUFDekIsMkJBQTJCO1lBQzNCLHFCQUFxQjtZQUNyQixzQkFBc0I7WUFDdEIsbUJBQW1CO1lBQ25CLHlCQUF5QjtZQUN6Qiw4QkFBOEI7WUFDOUIsd0JBQXdCO1lBQ3hCLDRCQUE0QjtTQUM3QixDQUFDO1FBRUYsSUFBSSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsUUFBUSxD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LENBQUM7SUFDTixDQUFDO0NBQ0Y7QUEvRkQsZ0RBK0ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUFzcGVjdCwgQ2ZuUmVzb3VyY2UsIFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBJQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuLyoqXG4gKiBBc3BlY3QgdG8gZW5mb3JjZSBhIHN0YW5kYXJkIHNldCBvZiB0YWdzIG9uIGV2ZXJ5IHRhZy1jYXBhYmxlIHJlc291cmNlIGluIGEgY29uc3RydWN0IHRyZWUuXG4gKiBcbiAqIFVwZGF0ZWQgZm9yIENESyB2Mi4yMDYuMCsgY29tcGF0aWJpbGl0eTpcbiAqIC0gQXZvaWRzIHVzaW5nIGFueSB0YWdnaW5nIEFQSXMgZHVyaW5nIGFzcGVjdCB2aXNpdGF0aW9uIHRvIHByZXZlbnQgaW5maW5pdGUgbG9vcHNcbiAqIC0gVXNlcyBhIHN5bnRoZXNpcy10aW1lIGFwcHJvYWNoIHRvIG1vZGlmeSBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZXNcbiAqIC0gTWFpbnRhaW5zIHRoZSBzYW1lIGNsZWFuIEFQSSBhbmQgYXV0b21hdGljIHRhZ2dpbmcgYmVuZWZpdHNcbiAqL1xuZXhwb3J0IGNsYXNzIFN0YW5kYXJkVGFnc0FzcGVjdCBpbXBsZW1lbnRzIElBc3BlY3Qge1xuICBwcml2YXRlIHJlYWRvbmx5IHJlcXVpcmVkVGFnczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgcHJpdmF0ZSByZWFkb25seSB0YWdnZWRSZXNvdXJjZXMgPSBuZXcgV2Vha1NldDxJQ29uc3RydWN0PigpO1xuXG4gIGNvbnN0cnVjdG9yKHJlcXVpcmVkVGFnczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSkge1xuICAgIHRoaXMucmVxdWlyZWRUYWdzID0gcmVxdWlyZWRUYWdzO1xuICB9XG5cbiAgdmlzaXQobm9kZTogSUNvbnN0cnVjdCk6IHZvaWQge1xuICAgIC8vIFNraXAgaWYgYWxyZWFkeSBwcm9jZXNzZWRcbiAgICBpZiAodGhpcy50YWdnZWRSZXNvdXJjZXMuaGFzKG5vZGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIC8vIFByb2Nlc3MgTDEgKENGTikgcmVzb3VyY2VzIG9ubHlcbiAgICBpZiAoQ2ZuUmVzb3VyY2UuaXNDZm5SZXNvdXJjZShub2RlKSkge1xuICAgICAgdGhpcy5wcm9jZXNzQ2ZuUmVzb3VyY2Uobm9kZSBhcyBDZm5SZXNvdXJjZSk7XG4gICAgICB0aGlzLnRhZ2dlZFJlc291cmNlcy5hZGQobm9kZSk7XG4gICAgfVxuICB9XG4gIFxuICBwcml2YXRlIHByb2Nlc3NDZm5SZXNvdXJjZShyZXNvdXJjZTogQ2ZuUmVzb3VyY2UpOiB2b2lkIHtcbiAgICAvLyBMaXN0IG9mIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIHR5cGVzIHRoYXQgZG9uJ3Qgc3VwcG9ydCB0YWdzXG4gICAgY29uc3QgdW5zdXBwb3J0ZWRUeXBlcyA9IFtcbiAgICAgICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpXYWl0Q29uZGl0aW9uSGFuZGxlJyxcbiAgICAgICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpXYWl0Q29uZGl0aW9uJyxcbiAgICAgICdBV1M6OkxhbWJkYTo6UGVybWlzc2lvbicsXG4gICAgICAnQVdTOjpJQU06OlBvbGljeScsXG4gICAgICAnQVdTOjpJQU06OlJvbGUnLFxuICAgICAgJ0FXUzo6SUFNOjpVc2VyJyxcbiAgICAgICdBV1M6OklBTTo6R3JvdXAnLFxuICAgICAgJ0FXUzo6SUFNOjpNYW5hZ2VkUG9saWN5JyxcbiAgICAgICdBV1M6OklBTTo6SW5zdGFuY2VQcm9maWxlJyxcbiAgICAgICdBV1M6OkxvZ3M6OkxvZ0dyb3VwJyxcbiAgICAgICdBV1M6OkxvZ3M6OkxvZ1N0cmVhbScsXG4gICAgICAnQVdTOjpFdmVudHM6OlJ1bGUnLFxuICAgICAgJ0FXUzo6Um91dGU1Mzo6UmVjb3JkU2V0JyxcbiAgICAgICdBV1M6OlJvdXRlNTM6OlJlY29yZFNldEdyb3VwJyxcbiAgICAgICdBV1M6OkNsb3VkV2F0Y2g6OkFsYXJtJyxcbiAgICAgICdBV1M6OkNsb3VkV2F0Y2g6OkRhc2hib2FyZCdcbiAgICBdO1xuICAgIFxuICAgIGlmICh1bnN1cHBvcnRlZFR5cGVzLmluY2x1ZGVzKHJlc291cmNlLmNmblJlc291cmNlVHlwZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgLy8gQWRkIGEgc3ludGhlc2lzIGhvb2sgdG8gbW9kaWZ5IHRoZSBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZVxuICAgIGNvbnN0IHN0YWNrID0gU3RhY2sub2YocmVzb3VyY2UpO1xuICAgIGNvbnN0IGxvZ2ljYWxJZCA9IHN0YWNrLmdldExvZ2ljYWxJZChyZXNvdXJjZSk7XG4gICAgXG4gICAgLy8gVXNlIGFkZFRyYW5zZm9ybSB0byBhZGQgdGFncyBkdXJpbmcgc3ludGhlc2lzXG4gICAgcmVzb3VyY2UuYWRkUHJvcGVydHlPdmVycmlkZSgnVGFncycsIHRoaXMuYnVpbGRUYWdzQXJyYXkocmVzb3VyY2UpKTtcbiAgfVxuICBcbiAgcHJpdmF0ZSBidWlsZFRhZ3NBcnJheShyZXNvdXJjZTogQ2ZuUmVzb3VyY2UpOiBhbnlbXSB7XG4gICAgY29uc3QgdGFnTWFwID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgICBcbiAgICAvLyBHZXQgYW55IGV4aXN0aW5nIHRhZ3MgaWYgdGhleSBleGlzdFxuICAgIGNvbnN0IGV4aXN0aW5nVGFncyA9IChyZXNvdXJjZSBhcyBhbnkpLnRhZ3MgfHwgW107XG4gICAgXG4gICAgLy8gUHJvY2VzcyBleGlzdGluZyB0YWdzIGlmIHRoZXkncmUgaW4gYXJyYXkgZm9ybWF0XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZXhpc3RpbmdUYWdzKSkge1xuICAgICAgZXhpc3RpbmdUYWdzLmZvckVhY2goKHRhZzogYW55KSA9PiB7XG4gICAgICAgIGlmICh0YWcgJiYgdHlwZW9mIHRhZyA9PT0gJ29iamVjdCcgJiYgJ0tleScgaW4gdGFnICYmICdWYWx1ZScgaW4gdGFnKSB7XG4gICAgICAgICAgdGFnTWFwLnNldCh0YWcuS2V5LCB0YWcuVmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKHRhZyAmJiB0eXBlb2YgdGFnID09PSAnb2JqZWN0JyAmJiAna2V5JyBpbiB0YWcgJiYgJ3ZhbHVlJyBpbiB0YWcpIHtcbiAgICAgICAgICB0YWdNYXAuc2V0KHRhZy5rZXksIHRhZy52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBcbiAgICAvLyBDaGVjayBmb3IgZGlyZWN0IHRhZ3MgaW4gbWV0YWRhdGFcbiAgICBjb25zdCBtZXRhZGF0YSA9IHJlc291cmNlLm5vZGUubWV0YWRhdGE7XG4gICAgY29uc3QgZGlyZWN0VGFnc01ldGFkYXRhID0gbWV0YWRhdGEuZmlsdGVyKG0gPT4gbS50eXBlID09PSAnZmphbGw6ZGlyZWN0LXRhZ3MnKTtcbiAgICBkaXJlY3RUYWdzTWV0YWRhdGEuZm9yRWFjaChtID0+IHtcbiAgICAgIGlmIChtLmRhdGEgJiYgdHlwZW9mIG0uZGF0YSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgT2JqZWN0LmVudHJpZXMobS5kYXRhKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdGFnTWFwLnNldChrZXksIHZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIFxuICAgIC8vIEFkZCByZXF1aXJlZCB0YWdzIChvdmVyd3JpdGluZyBpZiB0aGV5IGV4aXN0KVxuICAgIE9iamVjdC5lbnRyaWVzKHRoaXMucmVxdWlyZWRUYWdzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIHRhZ01hcC5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgfSk7XG4gICAgXG4gICAgLy8gQ29udmVydCB0byBDbG91ZEZvcm1hdGlvbiBmb3JtYXRcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0YWdNYXAuZW50cmllcygpKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gKHtcbiAgICAgIEtleToga2V5LFxuICAgICAgVmFsdWU6IHZhbHVlXG4gICAgfSkpO1xuICB9XG59XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fjall/components-infrastructure",
3
- "version": "0.43.0",
3
+ "version": "0.43.1",
4
4
  "bin": {
5
5
  "infrastructure": "bin/infrastructure.js"
6
6
  },
@@ -35,7 +35,7 @@
35
35
  "dependencies": {
36
36
  "@aws-sdk/client-cost-explorer": "^3.717.0",
37
37
  "@aws-sdk/client-organizations": "^3.716.0",
38
- "@fjall/util": "^0.43.0",
38
+ "@fjall/util": "^0.43.1",
39
39
  "@pepperize/cdk-organizations": "^0.7.135",
40
40
  "aws-lambda": "^1.0.7",
41
41
  "cdk-time-sleep": "^1.0.0",
@@ -46,7 +46,7 @@
46
46
  "overrides": {
47
47
  "@smithy/core": "2.5.5"
48
48
  },
49
- "gitHead": "5047b77a5628b74cf48634f2a803ab77c1af3536",
49
+ "gitHead": "948c10f7e2fd66f4a2854c953622334555b733b9",
50
50
  "peerDependencies": {
51
51
  "aws-cdk": "^2.206.0",
52
52
  "aws-cdk-lib": "^2.206.0",