cloudstructs 0.4.2 → 0.4.6

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 (160) hide show
  1. package/.gitattributes +3 -0
  2. package/.jsii +121 -4
  3. package/API.md +43 -0
  4. package/README.md +3 -0
  5. package/assets/toolkit-cleaner/clean-images.lambda/index.js +77 -0
  6. package/assets/toolkit-cleaner/clean-objects.lambda/index.js +85 -0
  7. package/assets/toolkit-cleaner/docker/Dockerfile +3 -0
  8. package/assets/toolkit-cleaner/docker/dummy.txt +0 -0
  9. package/assets/toolkit-cleaner/get-stack-names.lambda/index.js +49 -0
  10. package/changelog.md +6 -1
  11. package/lib/codecommit-mirror/index.js +2 -2
  12. package/lib/ecs-service-roller/index.js +2 -2
  13. package/lib/email-receiver/receiver.js +1 -1
  14. package/lib/index.d.ts +1 -0
  15. package/lib/index.js +2 -1
  16. package/lib/saml-identity-provider/index.js +2 -2
  17. package/lib/slack-app/manifest.js +1 -1
  18. package/lib/slack-app/slack-app.js +2 -2
  19. package/lib/slack-events/index.js +1 -1
  20. package/lib/slack-textract/index.js +1 -1
  21. package/lib/state-machine-cr-provider/index.js +1 -1
  22. package/lib/static-website/index.js +7 -3
  23. package/lib/toolkit-cleaner/clean-images-function.d.ts +13 -0
  24. package/lib/toolkit-cleaner/clean-images-function.js +22 -0
  25. package/lib/toolkit-cleaner/clean-images.lambda.d.ts +4 -0
  26. package/lib/toolkit-cleaner/clean-images.lambda.js +49 -0
  27. package/lib/toolkit-cleaner/clean-objects-function.d.ts +13 -0
  28. package/lib/toolkit-cleaner/clean-objects-function.js +22 -0
  29. package/lib/toolkit-cleaner/clean-objects.lambda.d.ts +4 -0
  30. package/lib/toolkit-cleaner/clean-objects.lambda.js +52 -0
  31. package/lib/toolkit-cleaner/get-stack-names-function.d.ts +13 -0
  32. package/lib/toolkit-cleaner/get-stack-names-function.js +22 -0
  33. package/lib/toolkit-cleaner/get-stack-names.lambda.d.ts +1 -0
  34. package/lib/toolkit-cleaner/get-stack-names.lambda.js +22 -0
  35. package/lib/toolkit-cleaner/index.d.ts +41 -0
  36. package/lib/toolkit-cleaner/index.js +118 -0
  37. package/lib/url-shortener/index.js +1 -1
  38. package/node_modules/@sindresorhus/is/dist/index.d.ts +4 -2
  39. package/node_modules/@sindresorhus/is/dist/index.js +3 -1
  40. package/node_modules/@sindresorhus/is/package.json +1 -1
  41. package/node_modules/@sindresorhus/is/readme.md +23 -0
  42. package/node_modules/@slack/logger/node_modules/@types/node/README.md +2 -2
  43. package/node_modules/@slack/logger/node_modules/@types/node/assert.d.ts +1 -1
  44. package/node_modules/@slack/logger/node_modules/@types/node/async_hooks.d.ts +7 -3
  45. package/node_modules/@slack/logger/node_modules/@types/node/buffer.d.ts +9 -9
  46. package/node_modules/@slack/logger/node_modules/@types/node/child_process.d.ts +1 -1
  47. package/node_modules/@slack/logger/node_modules/@types/node/cluster.d.ts +1 -1
  48. package/node_modules/@slack/logger/node_modules/@types/node/console.d.ts +1 -1
  49. package/node_modules/@slack/logger/node_modules/@types/node/crypto.d.ts +2 -2
  50. package/node_modules/@slack/logger/node_modules/@types/node/dgram.d.ts +2 -2
  51. package/node_modules/@slack/logger/node_modules/@types/node/diagnostics_channel.d.ts +1 -1
  52. package/node_modules/@slack/logger/node_modules/@types/node/dns/promises.d.ts +12 -10
  53. package/node_modules/@slack/logger/node_modules/@types/node/dns.d.ts +17 -12
  54. package/node_modules/@slack/logger/node_modules/@types/node/domain.d.ts +1 -1
  55. package/node_modules/@slack/logger/node_modules/@types/node/events.d.ts +2 -2
  56. package/node_modules/@slack/logger/node_modules/@types/node/fs/promises.d.ts +5 -5
  57. package/node_modules/@slack/logger/node_modules/@types/node/fs.d.ts +62 -11
  58. package/node_modules/@slack/logger/node_modules/@types/node/globals.d.ts +3 -3
  59. package/node_modules/@slack/logger/node_modules/@types/node/http.d.ts +31 -4
  60. package/node_modules/@slack/logger/node_modules/@types/node/http2.d.ts +6 -6
  61. package/node_modules/@slack/logger/node_modules/@types/node/https.d.ts +1 -1
  62. package/node_modules/@slack/logger/node_modules/@types/node/index.d.ts +1 -2
  63. package/node_modules/@slack/logger/node_modules/@types/node/inspector.d.ts +4 -5
  64. package/node_modules/@slack/logger/node_modules/@types/node/net.d.ts +15 -14
  65. package/node_modules/@slack/logger/node_modules/@types/node/os.d.ts +1 -1
  66. package/node_modules/@slack/logger/node_modules/@types/node/package.json +2 -7
  67. package/node_modules/@slack/logger/node_modules/@types/node/path.d.ts +9 -1
  68. package/node_modules/@slack/logger/node_modules/@types/node/perf_hooks.d.ts +6 -4
  69. package/node_modules/@slack/logger/node_modules/@types/node/process.d.ts +1 -1
  70. package/node_modules/@slack/logger/node_modules/@types/node/punycode.d.ts +1 -1
  71. package/node_modules/@slack/logger/node_modules/@types/node/querystring.d.ts +1 -1
  72. package/node_modules/@slack/logger/node_modules/@types/node/readline.d.ts +121 -14
  73. package/node_modules/@slack/logger/node_modules/@types/node/repl.d.ts +1 -1
  74. package/node_modules/@slack/logger/node_modules/@types/node/stream/web.d.ts +3 -65
  75. package/node_modules/@slack/logger/node_modules/@types/node/stream.d.ts +10 -10
  76. package/node_modules/@slack/logger/node_modules/@types/node/string_decoder.d.ts +1 -1
  77. package/node_modules/@slack/logger/node_modules/@types/node/timers.d.ts +1 -1
  78. package/node_modules/@slack/logger/node_modules/@types/node/tls.d.ts +3 -2
  79. package/node_modules/@slack/logger/node_modules/@types/node/trace_events.d.ts +1 -1
  80. package/node_modules/@slack/logger/node_modules/@types/node/tty.d.ts +1 -1
  81. package/node_modules/@slack/logger/node_modules/@types/node/url.d.ts +58 -18
  82. package/node_modules/@slack/logger/node_modules/@types/node/util.d.ts +3 -3
  83. package/node_modules/@slack/logger/node_modules/@types/node/v8.d.ts +3 -3
  84. package/node_modules/@slack/logger/node_modules/@types/node/vm.d.ts +1 -1
  85. package/node_modules/@slack/logger/node_modules/@types/node/wasi.d.ts +1 -1
  86. package/node_modules/@slack/logger/node_modules/@types/node/worker_threads.d.ts +4 -4
  87. package/node_modules/@slack/logger/node_modules/@types/node/zlib.d.ts +1 -1
  88. package/node_modules/@slack/web-api/node_modules/@types/node/README.md +2 -2
  89. package/node_modules/@slack/web-api/node_modules/@types/node/assert.d.ts +1 -1
  90. package/node_modules/@slack/web-api/node_modules/@types/node/async_hooks.d.ts +7 -3
  91. package/node_modules/@slack/web-api/node_modules/@types/node/buffer.d.ts +9 -9
  92. package/node_modules/@slack/web-api/node_modules/@types/node/child_process.d.ts +1 -1
  93. package/node_modules/@slack/web-api/node_modules/@types/node/cluster.d.ts +1 -1
  94. package/node_modules/@slack/web-api/node_modules/@types/node/console.d.ts +1 -1
  95. package/node_modules/@slack/web-api/node_modules/@types/node/crypto.d.ts +2 -2
  96. package/node_modules/@slack/web-api/node_modules/@types/node/dgram.d.ts +2 -2
  97. package/node_modules/@slack/web-api/node_modules/@types/node/diagnostics_channel.d.ts +1 -1
  98. package/node_modules/@slack/web-api/node_modules/@types/node/dns/promises.d.ts +12 -10
  99. package/node_modules/@slack/web-api/node_modules/@types/node/dns.d.ts +17 -12
  100. package/node_modules/@slack/web-api/node_modules/@types/node/domain.d.ts +1 -1
  101. package/node_modules/@slack/web-api/node_modules/@types/node/events.d.ts +2 -2
  102. package/node_modules/@slack/web-api/node_modules/@types/node/fs/promises.d.ts +5 -5
  103. package/node_modules/@slack/web-api/node_modules/@types/node/fs.d.ts +62 -11
  104. package/node_modules/@slack/web-api/node_modules/@types/node/globals.d.ts +3 -3
  105. package/node_modules/@slack/web-api/node_modules/@types/node/http.d.ts +31 -4
  106. package/node_modules/@slack/web-api/node_modules/@types/node/http2.d.ts +6 -6
  107. package/node_modules/@slack/web-api/node_modules/@types/node/https.d.ts +1 -1
  108. package/node_modules/@slack/web-api/node_modules/@types/node/index.d.ts +1 -2
  109. package/node_modules/@slack/web-api/node_modules/@types/node/inspector.d.ts +4 -5
  110. package/node_modules/@slack/web-api/node_modules/@types/node/net.d.ts +15 -14
  111. package/node_modules/@slack/web-api/node_modules/@types/node/os.d.ts +1 -1
  112. package/node_modules/@slack/web-api/node_modules/@types/node/package.json +2 -7
  113. package/node_modules/@slack/web-api/node_modules/@types/node/path.d.ts +9 -1
  114. package/node_modules/@slack/web-api/node_modules/@types/node/perf_hooks.d.ts +6 -4
  115. package/node_modules/@slack/web-api/node_modules/@types/node/process.d.ts +1 -1
  116. package/node_modules/@slack/web-api/node_modules/@types/node/punycode.d.ts +1 -1
  117. package/node_modules/@slack/web-api/node_modules/@types/node/querystring.d.ts +1 -1
  118. package/node_modules/@slack/web-api/node_modules/@types/node/readline.d.ts +121 -14
  119. package/node_modules/@slack/web-api/node_modules/@types/node/repl.d.ts +1 -1
  120. package/node_modules/@slack/web-api/node_modules/@types/node/stream/web.d.ts +3 -65
  121. package/node_modules/@slack/web-api/node_modules/@types/node/stream.d.ts +10 -10
  122. package/node_modules/@slack/web-api/node_modules/@types/node/string_decoder.d.ts +1 -1
  123. package/node_modules/@slack/web-api/node_modules/@types/node/timers.d.ts +1 -1
  124. package/node_modules/@slack/web-api/node_modules/@types/node/tls.d.ts +3 -2
  125. package/node_modules/@slack/web-api/node_modules/@types/node/trace_events.d.ts +1 -1
  126. package/node_modules/@slack/web-api/node_modules/@types/node/tty.d.ts +1 -1
  127. package/node_modules/@slack/web-api/node_modules/@types/node/url.d.ts +58 -18
  128. package/node_modules/@slack/web-api/node_modules/@types/node/util.d.ts +3 -3
  129. package/node_modules/@slack/web-api/node_modules/@types/node/v8.d.ts +3 -3
  130. package/node_modules/@slack/web-api/node_modules/@types/node/vm.d.ts +1 -1
  131. package/node_modules/@slack/web-api/node_modules/@types/node/wasi.d.ts +1 -1
  132. package/node_modules/@slack/web-api/node_modules/@types/node/worker_threads.d.ts +4 -4
  133. package/node_modules/@slack/web-api/node_modules/@types/node/zlib.d.ts +1 -1
  134. package/node_modules/@types/cacheable-request/node_modules/@types/node/README.md +2 -2
  135. package/node_modules/@types/cacheable-request/node_modules/@types/node/index.d.ts +0 -1
  136. package/node_modules/@types/cacheable-request/node_modules/@types/node/package.json +2 -7
  137. package/node_modules/@types/is-stream/node_modules/@types/node/README.md +2 -2
  138. package/node_modules/@types/is-stream/node_modules/@types/node/index.d.ts +0 -1
  139. package/node_modules/@types/is-stream/node_modules/@types/node/package.json +2 -7
  140. package/node_modules/@types/keyv/node_modules/@types/node/README.md +2 -2
  141. package/node_modules/@types/keyv/node_modules/@types/node/index.d.ts +0 -1
  142. package/node_modules/@types/keyv/node_modules/@types/node/package.json +2 -7
  143. package/node_modules/@types/responselike/node_modules/@types/node/README.md +2 -2
  144. package/node_modules/@types/responselike/node_modules/@types/node/index.d.ts +0 -1
  145. package/node_modules/@types/responselike/node_modules/@types/node/package.json +2 -7
  146. package/node_modules/follow-redirects/index.js +2 -2
  147. package/node_modules/follow-redirects/package.json +1 -1
  148. package/node_modules/keyv/.nyc_output/37411020-4142-4b08-b825-343ba2427bf7.json +1 -0
  149. package/node_modules/keyv/.nyc_output/cd79f2de-c8b8-4493-bc15-b2bde28efa4b.json +1 -0
  150. package/node_modules/keyv/.nyc_output/processinfo/37411020-4142-4b08-b825-343ba2427bf7.json +1 -0
  151. package/node_modules/keyv/.nyc_output/processinfo/cd79f2de-c8b8-4493-bc15-b2bde28efa4b.json +1 -0
  152. package/node_modules/keyv/.nyc_output/processinfo/index.json +1 -0
  153. package/node_modules/keyv/README.md +9 -8
  154. package/node_modules/keyv/package.json +5 -7
  155. package/node_modules/keyv/test/test.js +132 -0
  156. package/node_modules/keyv/test/testdb.sqlite +0 -0
  157. package/package.json +24 -11
  158. package/releasetag.txt +1 -1
  159. package/version.txt +1 -1
  160. package/node_modules/keyv/LICENSE +0 -21
package/.gitattributes CHANGED
@@ -18,5 +18,8 @@
18
18
  /.projen/tasks.json linguist-generated
19
19
  /LICENSE linguist-generated
20
20
  /package.json linguist-generated
21
+ /src/toolkit-cleaner/clean-images-function.ts linguist-generated
22
+ /src/toolkit-cleaner/clean-objects-function.ts linguist-generated
23
+ /src/toolkit-cleaner/get-stack-names-function.ts linguist-generated
21
24
  /tsconfig.dev.json linguist-generated
22
25
  /yarn.lock linguist-generated
package/.jsii CHANGED
@@ -2844,7 +2844,7 @@
2844
2844
  "stability": "stable"
2845
2845
  },
2846
2846
  "homepage": "https://github.com/jogold/cloudstructs.git",
2847
- "jsiiVersion": "1.48.0 (build 05dd13a)",
2847
+ "jsiiVersion": "1.52.1 (build 5ccc8f6)",
2848
2848
  "keywords": [
2849
2849
  "cdk"
2850
2850
  ],
@@ -2859,7 +2859,7 @@
2859
2859
  },
2860
2860
  "name": "cloudstructs",
2861
2861
  "readme": {
2862
- "markdown": "# cloudstructs\n\nHigh-level constructs for AWS CDK\n\n## Installation\n\n`npm install cloudstructs` or `yarn add cloudstructs`\n\nVersion >= 0.2.0 requires AWS CDK v2.\n\n## Constructs\n\n* [`CodeCommitMirror`](src/codecommit-mirror) Mirror a repository to AWS CodeCommit on schedule\n\n* [`EcsServiceRoller`](src/ecs-service-roller) Roll your ECS service tasks on schedule or with\n a rule\n\n* [`EmailReceiver`](src/email-receiver) Receive emails through SES, save them to S3\n and invoke a Lambda function\n\n* [`SlackApp`](src/slack-app) Deploy Slack apps from manifests\n\n* [`SlackEvents`](src/slack-events) Send Slack events to Amazon EventBridge\n\n* [`SlackTextract`](src/slack-textract) Extract text from images posted to Slack\n using Amazon Textract. The extracted text is posted in a thread under the image\n and gets indexed!\n\n* [`StateMachineCustomResourceProvider`](src/state-machine-cr-provider) Implement custom\n resources with AWS Step Functions state machines\n\n* [`StaticWebsite`](src/static-website) A CloudFront static website hosted on S3 with\n HTTPS redirect, SPA redirect, HTTP security headers and backend configuration saved\n to the bucket.\n\n* [`UrlShortener`](src/url-shortener) Deploy an URL shortener API\n"
2862
+ "markdown": "# cloudstructs\n\nHigh-level constructs for AWS CDK\n\n## Installation\n\n`npm install cloudstructs` or `yarn add cloudstructs`\n\nVersion >= 0.2.0 requires AWS CDK v2.\n\n## Constructs\n\n* [`CodeCommitMirror`](src/codecommit-mirror) Mirror a repository to AWS CodeCommit on schedule\n\n* [`EcsServiceRoller`](src/ecs-service-roller) Roll your ECS service tasks on schedule or with\n a rule\n\n* [`EmailReceiver`](src/email-receiver) Receive emails through SES, save them to S3\n and invoke a Lambda function\n\n* [`SlackApp`](src/slack-app) Deploy Slack apps from manifests\n\n* [`SlackEvents`](src/slack-events) Send Slack events to Amazon EventBridge\n\n* [`SlackTextract`](src/slack-textract) Extract text from images posted to Slack\n using Amazon Textract. The extracted text is posted in a thread under the image\n and gets indexed!\n\n* [`StateMachineCustomResourceProvider`](src/state-machine-cr-provider) Implement custom\n resources with AWS Step Functions state machines\n\n* [`StaticWebsite`](src/static-website) A CloudFront static website hosted on S3 with\n HTTPS redirect, SPA redirect, HTTP security headers and backend configuration saved\n to the bucket.\n\n* [`ToolkitCleaner`](src/toolkit-cleaner) Clean unused S3 and ECR assets from your CDK\n Toolkit.\n\n* [`UrlShortener`](src/url-shortener) Deploy an URL shortener API\n"
2863
2863
  },
2864
2864
  "repository": {
2865
2865
  "type": "git",
@@ -5798,6 +5798,123 @@
5798
5798
  ],
5799
5799
  "symbolId": "src/static-website/index:StaticWebsiteProps"
5800
5800
  },
5801
+ "cloudstructs.ToolkitCleaner": {
5802
+ "assembly": "cloudstructs",
5803
+ "base": "constructs.Construct",
5804
+ "docs": {
5805
+ "stability": "stable",
5806
+ "summary": "Clean unused S3 and ECR assets from your CDK Toolkit."
5807
+ },
5808
+ "fqn": "cloudstructs.ToolkitCleaner",
5809
+ "initializer": {
5810
+ "docs": {
5811
+ "stability": "stable"
5812
+ },
5813
+ "locationInModule": {
5814
+ "filename": "src/toolkit-cleaner/index.ts",
5815
+ "line": 44
5816
+ },
5817
+ "parameters": [
5818
+ {
5819
+ "name": "scope",
5820
+ "type": {
5821
+ "fqn": "constructs.Construct"
5822
+ }
5823
+ },
5824
+ {
5825
+ "name": "id",
5826
+ "type": {
5827
+ "primitive": "string"
5828
+ }
5829
+ },
5830
+ {
5831
+ "name": "props",
5832
+ "optional": true,
5833
+ "type": {
5834
+ "fqn": "cloudstructs.ToolkitCleanerProps"
5835
+ }
5836
+ }
5837
+ ]
5838
+ },
5839
+ "kind": "class",
5840
+ "locationInModule": {
5841
+ "filename": "src/toolkit-cleaner/index.ts",
5842
+ "line": 43
5843
+ },
5844
+ "name": "ToolkitCleaner",
5845
+ "symbolId": "src/toolkit-cleaner/index:ToolkitCleaner"
5846
+ },
5847
+ "cloudstructs.ToolkitCleanerProps": {
5848
+ "assembly": "cloudstructs",
5849
+ "datatype": true,
5850
+ "docs": {
5851
+ "stability": "stable",
5852
+ "summary": "Properties for a ToolkitCleaner."
5853
+ },
5854
+ "fqn": "cloudstructs.ToolkitCleanerProps",
5855
+ "kind": "interface",
5856
+ "locationInModule": {
5857
+ "filename": "src/toolkit-cleaner/index.ts",
5858
+ "line": 18
5859
+ },
5860
+ "name": "ToolkitCleanerProps",
5861
+ "properties": [
5862
+ {
5863
+ "abstract": true,
5864
+ "docs": {
5865
+ "stability": "stable",
5866
+ "summary": "Only output number of assets and total size that would be deleted but without actually deleting assets."
5867
+ },
5868
+ "immutable": true,
5869
+ "locationInModule": {
5870
+ "filename": "src/toolkit-cleaner/index.ts",
5871
+ "line": 30
5872
+ },
5873
+ "name": "dryRun",
5874
+ "optional": true,
5875
+ "type": {
5876
+ "primitive": "boolean"
5877
+ }
5878
+ },
5879
+ {
5880
+ "abstract": true,
5881
+ "docs": {
5882
+ "default": "- all unused assets are removed",
5883
+ "stability": "stable",
5884
+ "summary": "Retain unused assets that were created recently."
5885
+ },
5886
+ "immutable": true,
5887
+ "locationInModule": {
5888
+ "filename": "src/toolkit-cleaner/index.ts",
5889
+ "line": 37
5890
+ },
5891
+ "name": "retainAssetsNewerThan",
5892
+ "optional": true,
5893
+ "type": {
5894
+ "fqn": "aws-cdk-lib.Duration"
5895
+ }
5896
+ },
5897
+ {
5898
+ "abstract": true,
5899
+ "docs": {
5900
+ "default": "- every day",
5901
+ "stability": "stable",
5902
+ "summary": "The schedule for the cleaner."
5903
+ },
5904
+ "immutable": true,
5905
+ "locationInModule": {
5906
+ "filename": "src/toolkit-cleaner/index.ts",
5907
+ "line": 24
5908
+ },
5909
+ "name": "schedule",
5910
+ "optional": true,
5911
+ "type": {
5912
+ "fqn": "aws-cdk-lib.aws_events.Schedule"
5913
+ }
5914
+ }
5915
+ ],
5916
+ "symbolId": "src/toolkit-cleaner/index:ToolkitCleanerProps"
5917
+ },
5801
5918
  "cloudstructs.UrlShortener": {
5802
5919
  "assembly": "cloudstructs",
5803
5920
  "base": "constructs.Construct",
@@ -5948,6 +6065,6 @@
5948
6065
  "symbolId": "src/url-shortener/index:UrlShortenerProps"
5949
6066
  }
5950
6067
  },
5951
- "version": "0.4.2",
5952
- "fingerprint": "S5wl5eH9gWX8kPpU3GGEHtTysMAmxKxLkvc4rnLLRWk="
6068
+ "version": "0.4.6",
6069
+ "fingerprint": "XgzNYzXTGFsfrVJbN9Aiov64F3vOUZm2fykGISCMFow="
5953
6070
  }
package/API.md CHANGED
@@ -18,6 +18,7 @@ Name|Description
18
18
  [SlackTextract](#cloudstructs-slacktextract)|Extract text from images posted to Slack using Amazon Textract.
19
19
  [StateMachineCustomResourceProvider](#cloudstructs-statemachinecustomresourceprovider)|A state machine custom resource provider.
20
20
  [StaticWebsite](#cloudstructs-staticwebsite)|A CloudFront static website hosted on S3.
21
+ [ToolkitCleaner](#cloudstructs-toolkitcleaner)|Clean unused S3 and ECR assets from your CDK Toolkit.
21
22
  [UrlShortener](#cloudstructs-urlshortener)|URL shortener.
22
23
 
23
24
 
@@ -44,6 +45,7 @@ Name|Description
44
45
  [SlackkAppManifestBotUser](#cloudstructs-slackkappmanifestbotuser)|Bot user configuration.
45
46
  [StateMachineCustomResourceProviderProps](#cloudstructs-statemachinecustomresourceproviderprops)|Properties for a StateMachineCustomResourceProvider.
46
47
  [StaticWebsiteProps](#cloudstructs-staticwebsiteprops)|Properties for a StaticWebsite.
48
+ [ToolkitCleanerProps](#cloudstructs-toolkitcleanerprops)|Properties for a ToolkitCleaner.
47
49
  [UrlShortenerProps](#cloudstructs-urlshortenerprops)|Properties for a UrlShortener.
48
50
 
49
51
 
@@ -626,6 +628,32 @@ Name | Type | Description
626
628
 
627
629
 
628
630
 
631
+ ## class ToolkitCleaner <a id="cloudstructs-toolkitcleaner"></a>
632
+
633
+ Clean unused S3 and ECR assets from your CDK Toolkit.
634
+
635
+ __Implements__: [IConstruct](#constructs-iconstruct), [IDependable](#constructs-idependable)
636
+ __Extends__: [Construct](#constructs-construct)
637
+
638
+ ### Initializer
639
+
640
+
641
+
642
+
643
+ ```ts
644
+ new ToolkitCleaner(scope: Construct, id: string, props?: ToolkitCleanerProps)
645
+ ```
646
+
647
+ * **scope** (<code>[Construct](#constructs-construct)</code>) *No description*
648
+ * **id** (<code>string</code>) *No description*
649
+ * **props** (<code>[ToolkitCleanerProps](#cloudstructs-toolkitcleanerprops)</code>) *No description*
650
+ * **dryRun** (<code>boolean</code>) Only output number of assets and total size that would be deleted but without actually deleting assets. __*Optional*__
651
+ * **retainAssetsNewerThan** (<code>[Duration](#aws-cdk-lib-duration)</code>) Retain unused assets that were created recently. __*Default*__: all unused assets are removed
652
+ * **schedule** (<code>[aws_events.Schedule](#aws-cdk-lib-aws-events-schedule)</code>) The schedule for the cleaner. __*Default*__: every day
653
+
654
+
655
+
656
+
629
657
  ## class UrlShortener <a id="cloudstructs-urlshortener"></a>
630
658
 
631
659
  URL shortener.
@@ -981,6 +1009,21 @@ Name | Type | Description
981
1009
 
982
1010
 
983
1011
 
1012
+ ## struct ToolkitCleanerProps <a id="cloudstructs-toolkitcleanerprops"></a>
1013
+
1014
+
1015
+ Properties for a ToolkitCleaner.
1016
+
1017
+
1018
+
1019
+ Name | Type | Description
1020
+ -----|------|-------------
1021
+ **dryRun**? | <code>boolean</code> | Only output number of assets and total size that would be deleted but without actually deleting assets.<br/>__*Optional*__
1022
+ **retainAssetsNewerThan**? | <code>[Duration](#aws-cdk-lib-duration)</code> | Retain unused assets that were created recently.<br/>__*Default*__: all unused assets are removed
1023
+ **schedule**? | <code>[aws_events.Schedule](#aws-cdk-lib-aws-events-schedule)</code> | The schedule for the cleaner.<br/>__*Default*__: every day
1024
+
1025
+
1026
+
984
1027
  ## struct UrlShortenerProps <a id="cloudstructs-urlshortenerprops"></a>
985
1028
 
986
1029
 
package/README.md CHANGED
@@ -33,4 +33,7 @@ Version >= 0.2.0 requires AWS CDK v2.
33
33
  HTTPS redirect, SPA redirect, HTTP security headers and backend configuration saved
34
34
  to the bucket.
35
35
 
36
+ * [`ToolkitCleaner`](src/toolkit-cleaner) Clean unused S3 and ECR assets from your CDK
37
+ Toolkit.
38
+
36
39
  * [`UrlShortener`](src/url-shortener) Deploy an URL shortener API
@@ -0,0 +1,77 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __reExport = (target, module2, copyDefault, desc) => {
11
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
12
+ for (let key of __getOwnPropNames(module2))
13
+ if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
14
+ __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
15
+ }
16
+ return target;
17
+ };
18
+ var __toCommonJS = /* @__PURE__ */ ((cache) => {
19
+ return (module2, temp) => {
20
+ return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
21
+ };
22
+ })(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
23
+
24
+ // src/toolkit-cleaner/clean-images.lambda.ts
25
+ var clean_images_lambda_exports = {};
26
+ __export(clean_images_lambda_exports, {
27
+ handler: () => handler
28
+ });
29
+ var import_aws_sdk = require("aws-sdk");
30
+ var ecr = new import_aws_sdk.ECR();
31
+ async function handler(assetHashes) {
32
+ var _a;
33
+ if (!process.env.REPOSITORY_NAME) {
34
+ throw new Error("Missing REPOSITORY_NAME");
35
+ }
36
+ let deleted = 0;
37
+ let reclaimed = 0;
38
+ let nextToken;
39
+ let finished = false;
40
+ while (!finished) {
41
+ const response = await ecr.describeImages({
42
+ repositoryName: process.env.REPOSITORY_NAME,
43
+ nextToken
44
+ }).promise();
45
+ const toDelete = (_a = response.imageDetails) == null ? void 0 : _a.filter((x) => {
46
+ let pred = x.imageTags && !assetHashes.includes(x.imageTags[0]);
47
+ if (process.env.RETAIN_MILLISECONDS) {
48
+ const limitDate = new Date(Date.now() - parseInt(process.env.RETAIN_MILLISECONDS));
49
+ pred = pred && x.imagePushedAt && x.imagePushedAt < limitDate;
50
+ }
51
+ return pred;
52
+ });
53
+ if (toDelete && toDelete.length !== 0) {
54
+ if (process.env.RUN) {
55
+ await ecr.batchDeleteImage({
56
+ repositoryName: process.env.REPOSITORY_NAME,
57
+ imageIds: toDelete.map((x) => ({ imageTag: x.imageTags[0] }))
58
+ }).promise();
59
+ }
60
+ deleted += toDelete.length;
61
+ reclaimed += toDelete.reduce((acc, x) => acc + (x.imageSizeInBytes ?? 0), 0);
62
+ }
63
+ nextToken = response.nextToken;
64
+ if (nextToken === void 0) {
65
+ finished = true;
66
+ }
67
+ }
68
+ return {
69
+ Deleted: deleted,
70
+ Reclaimed: reclaimed
71
+ };
72
+ }
73
+ module.exports = __toCommonJS(clean_images_lambda_exports);
74
+ // Annotate the CommonJS export names for ESM import in node:
75
+ 0 && (module.exports = {
76
+ handler
77
+ });
@@ -0,0 +1,85 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __reExport = (target, module2, copyDefault, desc) => {
13
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
14
+ for (let key of __getOwnPropNames(module2))
15
+ if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
16
+ __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
17
+ }
18
+ return target;
19
+ };
20
+ var __toESM = (module2, isNodeMode) => {
21
+ return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
22
+ };
23
+ var __toCommonJS = /* @__PURE__ */ ((cache) => {
24
+ return (module2, temp) => {
25
+ return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
26
+ };
27
+ })(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
28
+
29
+ // src/toolkit-cleaner/clean-objects.lambda.ts
30
+ var clean_objects_lambda_exports = {};
31
+ __export(clean_objects_lambda_exports, {
32
+ handler: () => handler
33
+ });
34
+ var path = __toESM(require("path"));
35
+ var import_aws_sdk = require("aws-sdk");
36
+ var s3 = new import_aws_sdk.S3();
37
+ async function handler(assetHashes) {
38
+ var _a;
39
+ if (!process.env.BUCKET_NAME) {
40
+ throw new Error("Missing BUCKET_NAME");
41
+ }
42
+ let deleted = 0;
43
+ let reclaimed = 0;
44
+ let nextToken;
45
+ let finished = false;
46
+ while (!finished) {
47
+ const response = await s3.listObjectsV2({
48
+ Bucket: process.env.BUCKET_NAME,
49
+ ContinuationToken: nextToken
50
+ }).promise();
51
+ const toDelete = (_a = response.Contents) == null ? void 0 : _a.filter((x) => {
52
+ let pred = x.Key && !assetHashes.includes(path.basename(x.Key));
53
+ if (process.env.RETAIN_MILLISECONDS) {
54
+ const limitDate = new Date(Date.now() - parseInt(process.env.RETAIN_MILLISECONDS));
55
+ pred = pred && x.LastModified && x.LastModified < limitDate;
56
+ }
57
+ return pred;
58
+ });
59
+ if (toDelete && toDelete.length !== 0) {
60
+ if (process.env.RUN) {
61
+ await s3.deleteObjects({
62
+ Bucket: process.env.BUCKET_NAME,
63
+ Delete: {
64
+ Objects: toDelete.map((x) => ({ Key: x.Key }))
65
+ }
66
+ }).promise();
67
+ }
68
+ deleted += toDelete.length;
69
+ reclaimed += toDelete.reduce((acc, x) => acc + (x.Size ?? 0), 0);
70
+ }
71
+ nextToken = response.NextContinuationToken;
72
+ if (nextToken === void 0) {
73
+ finished = true;
74
+ }
75
+ }
76
+ return {
77
+ Deleted: deleted,
78
+ Reclaimed: reclaimed
79
+ };
80
+ }
81
+ module.exports = __toCommonJS(clean_objects_lambda_exports);
82
+ // Annotate the CommonJS export names for ESM import in node:
83
+ 0 && (module.exports = {
84
+ handler
85
+ });
@@ -0,0 +1,3 @@
1
+ FROM scratch
2
+
3
+ ADD dummy.txt /
File without changes
@@ -0,0 +1,49 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __reExport = (target, module2, copyDefault, desc) => {
11
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
12
+ for (let key of __getOwnPropNames(module2))
13
+ if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
14
+ __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
15
+ }
16
+ return target;
17
+ };
18
+ var __toCommonJS = /* @__PURE__ */ ((cache) => {
19
+ return (module2, temp) => {
20
+ return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
21
+ };
22
+ })(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
23
+
24
+ // src/toolkit-cleaner/get-stack-names.lambda.ts
25
+ var get_stack_names_lambda_exports = {};
26
+ __export(get_stack_names_lambda_exports, {
27
+ handler: () => handler
28
+ });
29
+ var import_aws_sdk = require("aws-sdk");
30
+ var cloudFormation = new import_aws_sdk.CloudFormation();
31
+ async function handler() {
32
+ const res = [];
33
+ let nextToken;
34
+ let finished = false;
35
+ while (!finished) {
36
+ const response = await cloudFormation.describeStacks({ NextToken: nextToken }).promise();
37
+ res.push(...(response.Stacks ?? []).map((s) => s.StackName));
38
+ nextToken = response.NextToken;
39
+ if (nextToken === void 0) {
40
+ finished = true;
41
+ }
42
+ }
43
+ return res;
44
+ }
45
+ module.exports = __toCommonJS(get_stack_names_lambda_exports);
46
+ // Annotate the CommonJS export names for ESM import in node:
47
+ 0 && (module.exports = {
48
+ handler
49
+ });
package/changelog.md CHANGED
@@ -1,2 +1,7 @@
1
1
 
2
- ### [0.4.2](https://github.com/jogold/cloudstructs/compare/v0.4.1...v0.4.2) (2022-01-19)
2
+ ### [0.4.6](https://github.com/jogold/cloudstructs/compare/v0.4.5...v0.4.6) (2022-02-01)
3
+
4
+
5
+ ### Features
6
+
7
+ * **toolkit-cleaner:** clean unused S3 and ECR assets from CDK Toolkit ([#151](https://github.com/jogold/cloudstructs/issues/151)) ([ddec460](https://github.com/jogold/cloudstructs/commit/ddec4608d1a95ea1492d90942fc6c22328328cad))
@@ -45,7 +45,7 @@ class CodeCommitMirrorSourceRepository {
45
45
  }
46
46
  exports.CodeCommitMirrorSourceRepository = CodeCommitMirrorSourceRepository;
47
47
  _a = JSII_RTTI_SYMBOL_1;
48
- CodeCommitMirrorSourceRepository[_a] = { fqn: "cloudstructs.CodeCommitMirrorSourceRepository", version: "0.4.2" };
48
+ CodeCommitMirrorSourceRepository[_a] = { fqn: "cloudstructs.CodeCommitMirrorSourceRepository", version: "0.4.6" };
49
49
  /**
50
50
  * Mirror a repository to AWS CodeCommit on schedule.
51
51
  *
@@ -99,5 +99,5 @@ class CodeCommitMirror extends constructs_1.Construct {
99
99
  }
100
100
  exports.CodeCommitMirror = CodeCommitMirror;
101
101
  _b = JSII_RTTI_SYMBOL_1;
102
- CodeCommitMirror[_b] = { fqn: "cloudstructs.CodeCommitMirror", version: "0.4.2" };
102
+ CodeCommitMirror[_b] = { fqn: "cloudstructs.CodeCommitMirror", version: "0.4.6" };
103
103
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29kZWNvbW1pdC1taXJyb3IvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2QkFBNkI7QUFDN0IseURBQXlEO0FBQ3pELDJDQUEyQztBQUMzQywyQ0FBMkM7QUFDM0MsaURBQWlEO0FBQ2pELDBEQUEwRDtBQUMxRCwyQ0FBMkM7QUFDM0MsNkNBQTZDO0FBQzdDLDJDQUF1Qzs7Ozs7O0FBa0J2QyxNQUFzQixnQ0FBZ0M7Ozs7OztJQUU3QyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQWEsRUFBRSxJQUFZO1FBQzlDLE9BQU87WUFDTCxJQUFJO1lBQ0osWUFBWSxFQUFFLHNCQUFzQixLQUFLLElBQUksSUFBSSxFQUFFO1NBQ3BELENBQUM7SUFDSixDQUFDOzs7Ozs7OztJQUdNLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBWSxFQUFFLEdBQWU7UUFDakQsT0FBTztZQUNMLElBQUk7WUFDSixTQUFTLEVBQUUsR0FBRztTQUNmLENBQUM7SUFDSixDQUFDOztBQWZILDRFQXlCQzs7Ozs7Ozs7QUFHRCxNQUFhLGdCQUFpQixTQUFRLHNCQUFTOzs7O0lBQzdDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBNEI7O1FBQ3BFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxXQUFXLEdBQUcsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUU7WUFDaEUsY0FBYyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSTtZQUNyQyxXQUFXLEVBQUUsYUFBYSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRTtTQUNsRCxDQUFDLENBQUM7UUFFSCxNQUFNLGNBQWMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUU3RSxjQUFjLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRTtZQUN2QyxLQUFLLEVBQUUsR0FBRyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDOUcsT0FBTyxFQUFFLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQztnQkFDNUIsWUFBWSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSTtnQkFDbkMsWUFBWSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVTthQUM1QyxDQUFDO1lBQ0YsV0FBVyxFQUFFO2dCQUNYLElBQUksRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUk7Z0JBQzNCLFdBQVcsRUFBRSxXQUFXLENBQUMscUJBQXFCO2dCQUM5QyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsWUFBWTtvQkFDOUIsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFO29CQUMzQyxDQUFDLENBQUMsRUFBRTthQUNQO1lBQ0QsT0FBTyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsU0FBUztnQkFDakMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFO2dCQUN4QyxDQUFDLENBQUMsU0FBUztTQUNkLENBQUMsQ0FBQztRQUVILGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7WUFDekQsT0FBTyxFQUFFLENBQUMsb0JBQW9CLENBQUM7WUFDL0IsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQztTQUN2QyxDQUFDLENBQUMsQ0FBQztRQUVKLE1BQU0sSUFBSSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQ3pDLFFBQVEsUUFBRSxLQUFLLENBQUMsUUFBUSxtQ0FBSSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztnQkFDL0MsTUFBTSxFQUFFLEdBQUc7Z0JBQ1gsSUFBSSxFQUFFLEdBQUc7YUFDVixDQUFDO1NBQ0gsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUM7WUFDakMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1lBQ3RCLGNBQWM7WUFDZCxlQUFlLFFBQUUsS0FBSyxDQUFDLGVBQWUsbUNBQUksRUFBRSxVQUFVLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUU7U0FDaEYsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDOztBQTlDSCw0Q0ErQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgY29kZWNvbW1pdCBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29kZWNvbW1pdCc7XG5pbXBvcnQgKiBhcyBlYzIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgKiBhcyBlY3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjcyc7XG5pbXBvcnQgKiBhcyBldmVudHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cyc7XG5pbXBvcnQgKiBhcyB0YXJnZXRzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMtdGFyZ2V0cyc7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBsb2dzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGludGVyZmFjZSBDb2RlQ29tbWl0TWlycm9yUHJvcHMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgcmVwb3NpdG9yeTogQ29kZUNvbW1pdE1pcnJvclNvdXJjZVJlcG9zaXRvcnk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBjbHVzdGVyOiBlY3MuSUNsdXN0ZXI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBzY2hlZHVsZT86IGV2ZW50cy5TY2hlZHVsZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHN1Ym5ldFNlbGVjdGlvbj86IGVjMi5TdWJuZXRTZWxlY3Rpb247XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ29kZUNvbW1pdE1pcnJvclNvdXJjZVJlcG9zaXRvcnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHN0YXRpYyBnaXRIdWIob3duZXI6IHN0cmluZywgbmFtZTogc3RyaW5nKTogQ29kZUNvbW1pdE1pcnJvclNvdXJjZVJlcG9zaXRvcnkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lLFxuICAgICAgcGxhaW5UZXh0VXJsOiBgaHR0cHM6Ly9naXRodWIuY29tLyR7b3duZXJ9LyR7bmFtZX1gLFxuICAgIH07XG4gIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgc3RhdGljIHByaXZhdGUobmFtZTogc3RyaW5nLCB1cmw6IGVjcy5TZWNyZXQpOiBDb2RlQ29tbWl0TWlycm9yU291cmNlUmVwb3NpdG9yeSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWUsXG4gICAgICBzZWNyZXRVcmw6IHVybCxcbiAgICB9O1xuICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBwbGFpblRleHRVcmw/OiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHNlY3JldFVybD86IGVjcy5TZWNyZXQ7XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGNsYXNzIENvZGVDb21taXRNaXJyb3IgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQ29kZUNvbW1pdE1pcnJvclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGRlc3RpbmF0aW9uID0gbmV3IGNvZGVjb21taXQuUmVwb3NpdG9yeSh0aGlzLCAnUmVwb3NpdG9yeScsIHtcbiAgICAgIHJlcG9zaXRvcnlOYW1lOiBwcm9wcy5yZXBvc2l0b3J5Lm5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogYE1pcnJvciBvZiAke3Byb3BzLnJlcG9zaXRvcnkubmFtZX1gLFxuICAgIH0pO1xuXG4gICAgY29uc3QgdGFza0RlZmluaXRpb24gPSBuZXcgZWNzLkZhcmdhdGVUYXNrRGVmaW5pdGlvbih0aGlzLCAnVGFza0RlZmluaXRpb24nKTtcblxuICAgIHRhc2tEZWZpbml0aW9uLmFkZENvbnRhaW5lcignQ29udGFpbmVyJywge1xuICAgICAgaW1hZ2U6IGVjcy5Db250YWluZXJJbWFnZS5mcm9tQXNzZXQocGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgJy4uJywgJ2Fzc2V0cycsICdjb2RlY29tbWl0LW1pcnJvcicsICdkb2NrZXInKSksXG4gICAgICBsb2dnaW5nOiBuZXcgZWNzLkF3c0xvZ0RyaXZlcih7XG4gICAgICAgIHN0cmVhbVByZWZpeDogcHJvcHMucmVwb3NpdG9yeS5uYW1lLFxuICAgICAgICBsb2dSZXRlbnRpb246IGxvZ3MuUmV0ZW50aW9uRGF5cy5UV09fTU9OVEhTLFxuICAgICAgfSksXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBOQU1FOiBwcm9wcy5yZXBvc2l0b3J5Lm5hbWUsXG4gICAgICAgIERFU1RJTkFUSU9OOiBkZXN0aW5hdGlvbi5yZXBvc2l0b3J5Q2xvbmVVcmxHcmMsXG4gICAgICAgIC4uLnByb3BzLnJlcG9zaXRvcnkucGxhaW5UZXh0VXJsXG4gICAgICAgICAgPyB7IFNPVVJDRTogcHJvcHMucmVwb3NpdG9yeS5wbGFpblRleHRVcmwgfVxuICAgICAgICAgIDoge30sXG4gICAgICB9LFxuICAgICAgc2VjcmV0czogcHJvcHMucmVwb3NpdG9yeS5zZWNyZXRVcmxcbiAgICAgICAgPyB7IFNPVVJDRTogcHJvcHMucmVwb3NpdG9yeS5zZWNyZXRVcmwgfVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9KTtcblxuICAgIHRhc2tEZWZpbml0aW9uLmFkZFRvVGFza1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgYWN0aW9uczogWydjb2RlY29tbWl0OkdpdFB1c2gnXSxcbiAgICAgIHJlc291cmNlczogW2Rlc3RpbmF0aW9uLnJlcG9zaXRvcnlBcm5dLFxuICAgIH0pKTtcblxuICAgIGNvbnN0IHJ1bGUgPSBuZXcgZXZlbnRzLlJ1bGUodGhpcywgJ1J1bGUnLCB7XG4gICAgICBzY2hlZHVsZTogcHJvcHMuc2NoZWR1bGUgPz8gZXZlbnRzLlNjaGVkdWxlLmNyb24oe1xuICAgICAgICBtaW51dGU6ICcwJyxcbiAgICAgICAgaG91cjogJzAnLFxuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICBydWxlLmFkZFRhcmdldChuZXcgdGFyZ2V0cy5FY3NUYXNrKHtcbiAgICAgIGNsdXN0ZXI6IHByb3BzLmNsdXN0ZXIsXG4gICAgICB0YXNrRGVmaW5pdGlvbixcbiAgICAgIHN1Ym5ldFNlbGVjdGlvbjogcHJvcHMuc3VibmV0U2VsZWN0aW9uID8/IHsgc3VibmV0VHlwZTogZWMyLlN1Ym5ldFR5cGUuUFVCTElDIH0sXG4gICAgfSkpO1xuICB9XG59XG4iXX0=
@@ -33,7 +33,7 @@ class RollTrigger {
33
33
  }
34
34
  exports.RollTrigger = RollTrigger;
35
35
  _a = JSII_RTTI_SYMBOL_1;
36
- RollTrigger[_a] = { fqn: "cloudstructs.RollTrigger", version: "0.4.2" };
36
+ RollTrigger[_a] = { fqn: "cloudstructs.RollTrigger", version: "0.4.6" };
37
37
  /**
38
38
  * Roll your ECS service tasks on schedule or with a rule.
39
39
  *
@@ -75,5 +75,5 @@ class EcsServiceRoller extends constructs_1.Construct {
75
75
  }
76
76
  exports.EcsServiceRoller = EcsServiceRoller;
77
77
  _b = JSII_RTTI_SYMBOL_1;
78
- EcsServiceRoller[_b] = { fqn: "cloudstructs.EcsServiceRoller", version: "0.4.2" };
78
+ EcsServiceRoller[_b] = { fqn: "cloudstructs.EcsServiceRoller", version: "0.4.6" };
79
79
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZWNzLXNlcnZpY2Utcm9sbGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQW9DO0FBRXBDLGlEQUFpRDtBQUNqRCwwREFBMEQ7QUFDMUQsMkNBQTJDO0FBQzNDLDJDQUF1Qzs7Ozs7O0FBZXZDLE1BQXNCLFdBQVc7Ozs7OztJQUV4QixNQUFNLENBQUMsWUFBWSxDQUFDLFFBQXlCO1FBQ2xELE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQztJQUN0QixDQUFDOzs7Ozs7SUFHTSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQWlCO1FBQ3RDLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNsQixDQUFDOztBQVRILGtDQWdCQzs7Ozs7Ozs7QUFHRCxNQUFhLGdCQUFpQixTQUFRLHNCQUFTOzs7O0lBQzdDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBNEI7O1FBQ3BFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxJQUFJLGVBQUcsS0FBSyxDQUFDLE9BQU8sMENBQUUsSUFBSSxtQ0FBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRTtZQUNoRSxRQUFRLGNBQUUsS0FBSyxDQUFDLE9BQU8sMENBQUUsUUFBUSxtQ0FBSSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztnQkFDeEQsTUFBTSxFQUFFLEdBQUc7Z0JBQ1gsSUFBSSxFQUFFLEdBQUc7YUFDVixDQUFDO1NBQ0gsQ0FBQyxDQUFDO1FBR0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDaEMsT0FBTyxFQUFFLEtBQUs7WUFDZCxNQUFNLEVBQUUsZUFBZTtZQUN2QixVQUFVLEVBQUU7Z0JBQ1YsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVztnQkFDbEMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVztnQkFDbEMsa0JBQWtCLEVBQUUsSUFBSTthQUNPO1lBQ2pDLHVHQUF1RztZQUN2Ryx1RUFBdUU7WUFDdkUsZUFBZSxFQUFFLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQztnQkFDdkMsT0FBTyxFQUFFLENBQUMsbUJBQW1CLENBQUM7Z0JBQzlCLFNBQVMsRUFBRSxDQUFDLG1CQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQzt3QkFDbkMsT0FBTyxFQUFFLEtBQUs7d0JBQ2QsUUFBUSxFQUFFLFNBQVM7d0JBQ25CLFlBQVksRUFBRSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFO3FCQUMxRSxDQUFDLENBQUM7YUFDSixDQUFDO1NBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDOztBQS9CSCw0Q0FnQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGVjcyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNzJztcbmltcG9ydCAqIGFzIGV2ZW50cyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZXZlbnRzJztcbmltcG9ydCAqIGFzIHRhcmdldHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cy10YXJnZXRzJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGludGVyZmFjZSBFY3NTZXJ2aWNlUm9sbGVyUHJvcHMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBjbHVzdGVyOiBlY3MuSUNsdXN0ZXI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHNlcnZpY2U6IGVjcy5JU2VydmljZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHRyaWdnZXI/OiBSb2xsVHJpZ2dlcjtcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFJvbGxUcmlnZ2VyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHN0YXRpYyBmcm9tU2NoZWR1bGUoc2NoZWR1bGU6IGV2ZW50cy5TY2hlZHVsZSk6IFJvbGxUcmlnZ2VyIHtcbiAgICByZXR1cm4geyBzY2hlZHVsZSB9O1xuICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgc3RhdGljIGZyb21SdWxlKHJ1bGU6IGV2ZW50cy5SdWxlKTogUm9sbFRyaWdnZXIge1xuICAgIHJldHVybiB7IHJ1bGUgfTtcbiAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgc2NoZWR1bGU/OiBldmVudHMuU2NoZWR1bGU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHJ1bGU/OiBldmVudHMuUnVsZTtcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBjbGFzcyBFY3NTZXJ2aWNlUm9sbGVyIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEVjc1NlcnZpY2VSb2xsZXJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBydWxlID0gcHJvcHMudHJpZ2dlcj8ucnVsZSA/PyBuZXcgZXZlbnRzLlJ1bGUodGhpcywgJ1J1bGUnLCB7XG4gICAgICBzY2hlZHVsZTogcHJvcHMudHJpZ2dlcj8uc2NoZWR1bGUgPz8gZXZlbnRzLlNjaGVkdWxlLmNyb24oe1xuICAgICAgICBtaW51dGU6ICcwJyxcbiAgICAgICAgaG91cjogJzAnLFxuICAgICAgfSksXG4gICAgfSk7XG5cblxuICAgIHJ1bGUuYWRkVGFyZ2V0KG5ldyB0YXJnZXRzLkF3c0FwaSh7XG4gICAgICBzZXJ2aWNlOiAnRUNTJyxcbiAgICAgIGFjdGlvbjogJ3VwZGF0ZVNlcnZpY2UnLFxuICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICBzZXJ2aWNlOiBwcm9wcy5zZXJ2aWNlLnNlcnZpY2VOYW1lLFxuICAgICAgICBjbHVzdGVyOiBwcm9wcy5jbHVzdGVyLmNsdXN0ZXJOYW1lLFxuICAgICAgICBmb3JjZU5ld0RlcGxveW1lbnQ6IHRydWUsXG4gICAgICB9IGFzIEFXUy5FQ1MuVXBkYXRlU2VydmljZVJlcXVlc3QsXG4gICAgICAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uRUNTL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9lY3Mtc3VwcG9ydGVkLWlhbS1hY3Rpb25zLXJlc291cmNlcy5odG1sXG4gICAgICAvLyBhcm46YXdzOmVjczo8cmVnaW9uPjo8YWNjb3VudD46c2VydmljZS88Y2x1c3Rlci1uYW1lPi88c2VydmljZS1uYW1lPlxuICAgICAgcG9saWN5U3RhdGVtZW50OiBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFsnZWNzOlVwZGF0ZVNlcnZpY2UnXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbU3RhY2sub2YodGhpcykuZm9ybWF0QXJuKHtcbiAgICAgICAgICBzZXJ2aWNlOiAnZWNzJyxcbiAgICAgICAgICByZXNvdXJjZTogJ3NlcnZpY2UnLFxuICAgICAgICAgIHJlc291cmNlTmFtZTogYCR7cHJvcHMuY2x1c3Rlci5jbHVzdGVyTmFtZX0vJHtwcm9wcy5zZXJ2aWNlLnNlcnZpY2VOYW1lfWAsXG4gICAgICAgIH0pXSxcbiAgICAgIH0pLFxuICAgIH0pKTtcbiAgfVxufVxuIl19
@@ -66,5 +66,5 @@ class EmailReceiver extends constructs_1.Construct {
66
66
  }
67
67
  exports.EmailReceiver = EmailReceiver;
68
68
  _a = JSII_RTTI_SYMBOL_1;
69
- EmailReceiver[_a] = { fqn: "cloudstructs.EmailReceiver", version: "0.4.2" };
69
+ EmailReceiver[_a] = { fqn: "cloudstructs.EmailReceiver", version: "0.4.6" };
70
70
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjZWl2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZW1haWwtcmVjZWl2ZXIvcmVjZWl2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FBdUM7QUFDdkMsaURBQWlEO0FBQ2pELG9FQUFvRTtBQUNwRSx3REFBd0Q7QUFDeEQsNkNBQTZDO0FBQzdDLHlDQUF5QztBQUN6QywyQ0FBMkM7QUFDM0MsdURBQXVEO0FBQ3ZELDJDQUEyQztBQUMzQyxtRUFBbUU7QUFDbkUsMkNBQXVDOzs7Ozs7QUFxQnZDLE1BQWEsYUFBYyxTQUFRLHNCQUFTOzs7O0lBQzFDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBeUI7UUFDakUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRTtZQUMzRCxPQUFPLEVBQUUsS0FBSyxDQUFDLGNBQWM7WUFDN0IsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVO1lBQzVCLEtBQUssRUFBRSxLQUFLLENBQUMsU0FBUztTQUN2QixDQUFDLENBQUM7UUFFSCxNQUFNLE1BQU0sR0FBRyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUMzQyxpQkFBaUIsRUFBRSxFQUFFLENBQUMsaUJBQWlCLENBQUMsU0FBUztZQUNqRCxVQUFVLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFVBQVU7WUFDMUMsY0FBYyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsc0JBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUNuRCxDQUFDLENBQUM7UUFDSCxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGlCQUFpQjtRQUVuRCxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRTNDLFVBQVU7UUFDVixJQUFJLEtBQUssQ0FBQyxlQUFlLEVBQUU7WUFDekIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFDcEUsV0FBVyxFQUFFO29CQUNYLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxlQUFlO2lCQUN4QztnQkFDRCxZQUFZLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTO2FBQzNDLENBQUMsQ0FBQztZQUVILFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDO2dCQUN2QyxRQUFRLEVBQUUsZ0JBQWdCO2dCQUMxQixjQUFjLEVBQUUsT0FBTyxDQUFDLG9CQUFvQixDQUFDLGdCQUFnQjthQUM5RCxDQUFDLENBQUMsQ0FBQztTQUNMO1FBRUQsV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDbkMsTUFBTTtZQUNOLEtBQUs7U0FDTixDQUFDLENBQUMsQ0FBQztRQUVKLE1BQU0sU0FBUyxHQUFHLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO1lBQ3RELE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVc7WUFDbkMsWUFBWSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUztZQUMxQyxTQUFTLEVBQUUsSUFBSSxZQUFZLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRTtnQkFDNUQsWUFBWSxFQUFFLElBQUk7YUFDbkIsQ0FBQztTQUNILENBQUMsQ0FBQztRQUVILEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBSSxhQUFhLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7SUFDbkYsQ0FBQzs7QUFoREgsc0NBaURDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHVyYXRpb24gfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgKiBhcyBkZXN0aW5hdGlvbnMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYS1kZXN0aW5hdGlvbnMnO1xuaW1wb3J0ICogYXMgbm9kZWpzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEtbm9kZWpzJztcbmltcG9ydCAqIGFzIGxvZ3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0ICogYXMgczMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCAqIGFzIHNlcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc2VzJztcbmltcG9ydCAqIGFzIGFjdGlvbnMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXNlcy1hY3Rpb25zJztcbmltcG9ydCAqIGFzIHNucyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc25zJztcbmltcG9ydCAqIGFzIHN1YnNjcmlwdGlvbnMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXNucy1zdWJzY3JpcHRpb25zJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBpbnRlcmZhY2UgRW1haWxSZWNlaXZlclByb3BzIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgcmVjZWlwdFJ1bGVTZXQ6IHNlcy5JUmVjZWlwdFJ1bGVTZXQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgcmVjaXBpZW50czogc3RyaW5nW107XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBmdW5jdGlvbjogbGFtYmRhLklGdW5jdGlvbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBzb3VyY2VXaGl0ZWxpc3Q/OiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBhZnRlclJ1bGU/OiBzZXMuSVJlY2VpcHRSdWxlO1xufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBjbGFzcyBFbWFpbFJlY2VpdmVyIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEVtYWlsUmVjZWl2ZXJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCByZWNlaXB0UnVsZSA9IG5ldyBzZXMuUmVjZWlwdFJ1bGUodGhpcywgJ1JlY2VpcHRSdWxlJywge1xuICAgICAgcnVsZVNldDogcHJvcHMucmVjZWlwdFJ1bGVTZXQsXG4gICAgICByZWNpcGllbnRzOiBwcm9wcy5yZWNpcGllbnRzLFxuICAgICAgYWZ0ZXI6IHByb3BzLmFmdGVyUnVsZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGJ1Y2tldCA9IG5ldyBzMy5CdWNrZXQodGhpcywgJ0J1Y2tldCcsIHtcbiAgICAgIGJsb2NrUHVibGljQWNjZXNzOiBzMy5CbG9ja1B1YmxpY0FjY2Vzcy5CTE9DS19BTEwsXG4gICAgICBlbmNyeXB0aW9uOiBzMy5CdWNrZXRFbmNyeXB0aW9uLlMzX01BTkFHRUQsXG4gICAgICBsaWZlY3ljbGVSdWxlczogW3sgZXhwaXJhdGlvbjogRHVyYXRpb24uZGF5cygxKSB9XSxcbiAgICB9KTtcbiAgICBidWNrZXQuZ3JhbnRSZWFkKHByb3BzLmZ1bmN0aW9uKTsgLy8gRG93bmxvYWQgZW1haWxcblxuICAgIGNvbnN0IHRvcGljID0gbmV3IHNucy5Ub3BpYyh0aGlzLCAnVG9waWMnKTtcblxuICAgIC8vIEFjdGlvbnNcbiAgICBpZiAocHJvcHMuc291cmNlV2hpdGVsaXN0KSB7XG4gICAgICBjb25zdCB3aGl0ZWxpc3RIYW5kbGVyID0gbmV3IG5vZGVqcy5Ob2RlanNGdW5jdGlvbih0aGlzLCAnd2hpdGVsaXN0Jywge1xuICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgIFNPVVJDRV9XSElURUxJU1Q6IHByb3BzLnNvdXJjZVdoaXRlbGlzdCxcbiAgICAgICAgfSxcbiAgICAgICAgbG9nUmV0ZW50aW9uOiBsb2dzLlJldGVudGlvbkRheXMuT05FX01PTlRILFxuICAgICAgfSk7XG5cbiAgICAgIHJlY2VpcHRSdWxlLmFkZEFjdGlvbihuZXcgYWN0aW9ucy5MYW1iZGEoe1xuICAgICAgICBmdW5jdGlvbjogd2hpdGVsaXN0SGFuZGxlcixcbiAgICAgICAgaW52b2NhdGlvblR5cGU6IGFjdGlvbnMuTGFtYmRhSW52b2NhdGlvblR5cGUuUkVRVUVTVF9SRVNQT05TRSxcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICByZWNlaXB0UnVsZS5hZGRBY3Rpb24obmV3IGFjdGlvbnMuUzMoe1xuICAgICAgYnVja2V0LFxuICAgICAgdG9waWMsXG4gICAgfSkpO1xuXG4gICAgY29uc3QgczNIYW5kbGVyID0gbmV3IG5vZGVqcy5Ob2RlanNGdW5jdGlvbih0aGlzLCAnczMnLCB7XG4gICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMTRfWCxcbiAgICAgIGxvZ1JldGVudGlvbjogbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9NT05USCxcbiAgICAgIG9uU3VjY2VzczogbmV3IGRlc3RpbmF0aW9ucy5MYW1iZGFEZXN0aW5hdGlvbihwcm9wcy5mdW5jdGlvbiwge1xuICAgICAgICByZXNwb25zZU9ubHk6IHRydWUsXG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIHRvcGljLmFkZFN1YnNjcmlwdGlvbihuZXcgc3Vic2NyaXB0aW9ucy5MYW1iZGFTdWJzY3JpcHRpb24oczNIYW5kbGVyKSk7IC8vIE5vdGlmeVxuICB9XG59XG4iXX0=
package/lib/index.d.ts CHANGED
@@ -8,3 +8,4 @@ export * from './url-shortener';
8
8
  export * from './saml-identity-provider';
9
9
  export * from './codecommit-mirror';
10
10
  export * from './slack-app';
11
+ export * from './toolkit-cleaner';
package/lib/index.js CHANGED
@@ -20,4 +20,5 @@ __exportStar(require("./url-shortener"), exports);
20
20
  __exportStar(require("./saml-identity-provider"), exports);
21
21
  __exportStar(require("./codecommit-mirror"), exports);
22
22
  __exportStar(require("./slack-app"), exports);
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsaURBQStCO0FBQy9CLG1EQUFpQztBQUNqQyxtREFBaUM7QUFDakMsOERBQTRDO0FBQzVDLG1EQUFpQztBQUNqQyx1REFBcUM7QUFDckMsa0RBQWdDO0FBQ2hDLDJEQUF5QztBQUN6QyxzREFBb0M7QUFDcEMsOENBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zbGFjay1ldmVudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9zbGFjay10ZXh0cmFjdCc7XG5leHBvcnQgKiBmcm9tICcuL3N0YXRpYy13ZWJzaXRlJztcbmV4cG9ydCAqIGZyb20gJy4vc3RhdGUtbWFjaGluZS1jci1wcm92aWRlcic7XG5leHBvcnQgKiBmcm9tICcuL2VtYWlsLXJlY2VpdmVyJztcbmV4cG9ydCAqIGZyb20gJy4vZWNzLXNlcnZpY2Utcm9sbGVyJztcbmV4cG9ydCAqIGZyb20gJy4vdXJsLXNob3J0ZW5lcic7XG5leHBvcnQgKiBmcm9tICcuL3NhbWwtaWRlbnRpdHktcHJvdmlkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9jb2RlY29tbWl0LW1pcnJvcic7XG5leHBvcnQgKiBmcm9tICcuL3NsYWNrLWFwcCc7XG4iXX0=
23
+ __exportStar(require("./toolkit-cleaner"), exports);
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsaURBQStCO0FBQy9CLG1EQUFpQztBQUNqQyxtREFBaUM7QUFDakMsOERBQTRDO0FBQzVDLG1EQUFpQztBQUNqQyx1REFBcUM7QUFDckMsa0RBQWdDO0FBQ2hDLDJEQUF5QztBQUN6QyxzREFBb0M7QUFDcEMsOENBQTRCO0FBQzVCLG9EQUFrQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2xhY2stZXZlbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vc2xhY2stdGV4dHJhY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9zdGF0aWMtd2Vic2l0ZSc7XG5leHBvcnQgKiBmcm9tICcuL3N0YXRlLW1hY2hpbmUtY3ItcHJvdmlkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9lbWFpbC1yZWNlaXZlcic7XG5leHBvcnQgKiBmcm9tICcuL2Vjcy1zZXJ2aWNlLXJvbGxlcic7XG5leHBvcnQgKiBmcm9tICcuL3VybC1zaG9ydGVuZXInO1xuZXhwb3J0ICogZnJvbSAnLi9zYW1sLWlkZW50aXR5LXByb3ZpZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vY29kZWNvbW1pdC1taXJyb3InO1xuZXhwb3J0ICogZnJvbSAnLi9zbGFjay1hcHAnO1xuZXhwb3J0ICogZnJvbSAnLi90b29sa2l0LWNsZWFuZXInO1xuIl19
@@ -69,7 +69,7 @@ class SamlIdentityProvider extends constructs_1.Construct {
69
69
  }
70
70
  exports.SamlIdentityProvider = SamlIdentityProvider;
71
71
  _a = JSII_RTTI_SYMBOL_1;
72
- SamlIdentityProvider[_a] = { fqn: "cloudstructs.SamlIdentityProvider", version: "0.4.2" };
72
+ SamlIdentityProvider[_a] = { fqn: "cloudstructs.SamlIdentityProvider", version: "0.4.6" };
73
73
  /**
74
74
  * (deprecated) Principal entity that represents a SAML federated identity provider.
75
75
  *
@@ -89,5 +89,5 @@ class SamlFederatedPrincipal extends iam.FederatedPrincipal {
89
89
  }
90
90
  exports.SamlFederatedPrincipal = SamlFederatedPrincipal;
91
91
  _b = JSII_RTTI_SYMBOL_1;
92
- SamlFederatedPrincipal[_b] = { fqn: "cloudstructs.SamlFederatedPrincipal", version: "0.4.2" };
92
+ SamlFederatedPrincipal[_b] = { fqn: "cloudstructs.SamlFederatedPrincipal", version: "0.4.6" };
93
93
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2FtbC1pZGVudGl0eS1wcm92aWRlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUEyQztBQUMzQywyQ0FBMkM7QUFDM0MsbURBQW1EO0FBRW5ELDJDQUF1Qzs7Ozs7O0FBWXZDLE1BQWEsb0JBQXFCLFNBQVEsc0JBQVM7Ozs7SUFJakQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFnQzs7UUFDeEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLElBQUksU0FBRyxLQUFLLENBQUMsSUFBSSxtQ0FBSSxHQUFHLG1CQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztRQUVyRSxNQUFNLEdBQUcsR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDbkMsT0FBTyxFQUFFLEtBQUs7WUFDZCxNQUFNLEVBQUUsRUFBRTtZQUNWLFFBQVEsRUFBRSxlQUFlO1lBQ3pCLFlBQVksRUFBRSxJQUFJO1NBQ25CLENBQUMsQ0FBQztRQUVILE1BQU0sR0FBRyxHQUFHLElBQUksRUFBRSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDckQsWUFBWSxFQUFFLDhCQUE4QjtZQUM1QyxRQUFRLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsTUFBTSxFQUFFLG9CQUFvQjtnQkFDNUIsVUFBVSxFQUFFO29CQUNWLElBQUksRUFBRSxJQUFJO29CQUNWLG9CQUFvQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7aUJBQ1o7Z0JBQ2xDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUM7YUFDMUU7WUFDRCxRQUFRLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsTUFBTSxFQUFFLG9CQUFvQjtnQkFDNUIsVUFBVSxFQUFFO29CQUNWLGVBQWUsRUFBRSxJQUFJLEVBQUUsQ0FBQywyQkFBMkIsRUFBRSxDQUFDLE1BQU0sRUFBRTtvQkFDOUQsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtpQkFDWjtnQkFDbEMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQzthQUMxRTtZQUNELFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUsS0FBSztnQkFDZCxNQUFNLEVBQUUsb0JBQW9CO2dCQUM1QixVQUFVLEVBQUU7b0JBQ1YsZUFBZSxFQUFFLElBQUksRUFBRSxDQUFDLDJCQUEyQixFQUFFLENBQUMsTUFBTSxFQUFFO2lCQUM5QjthQUNuQztZQUNELE1BQU0sRUFBRSxFQUFFLENBQUMsdUJBQXVCLENBQUMsY0FBYyxDQUFDO2dCQUNoRCxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7b0JBQ3RCLE9BQU8sRUFBRTt3QkFDUCx3QkFBd0I7d0JBQ3hCLHdCQUF3Qjt3QkFDeEIsd0JBQXdCO3FCQUN6QjtvQkFDRCxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUM7aUJBQ2pCLENBQUM7YUFDSCxDQUFDO1NBQ0gsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLHVCQUF1QixHQUFHLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7O0FBeERILG9EQXlEQzs7Ozs7Ozs7QUFHRCxNQUFhLHNCQUF1QixTQUFRLEdBQUcsQ0FBQyxrQkFBa0I7Ozs7SUFDaEUsWUFBWSxnQkFBc0M7UUFDaEQsS0FBSyxDQUNILGdCQUFnQixDQUFDLHVCQUF1QixFQUN4QztZQUNFLFlBQVksRUFBRTtnQkFDWixVQUFVLEVBQUUsb0NBQW9DO2FBQ2pEO1NBQ0YsRUFDRCx3QkFBd0IsQ0FDekIsQ0FBQztJQUNKLENBQUM7O0FBWEgsd0RBWUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOYW1lcywgU3RhY2sgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBjciBmcm9tICdhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzJztcbmltcG9ydCB7IElBTSB9IGZyb20gJ2F3cy1zZGsnOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBpbnRlcmZhY2UgU2FtbElkZW50aXR5UHJvdmlkZXJQcm9wcyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgbWV0YWRhdGFEb2N1bWVudDogc3RyaW5nO1xufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgU2FtbElkZW50aXR5UHJvdmlkZXIgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSBzYW1sSWRlbnRpdHlQcm92aWRlckFybjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTYW1sSWRlbnRpdHlQcm92aWRlclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IG5hbWUgPSBwcm9wcy5uYW1lID8/IGAke05hbWVzLnVuaXF1ZUlkKHRoaXMpfUlkZW50aXR5UHJvdmlkZXJgO1xuXG4gICAgY29uc3QgYXJuID0gU3RhY2sub2YodGhpcykuZm9ybWF0QXJuKHtcbiAgICAgIHNlcnZpY2U6ICdpYW0nLFxuICAgICAgcmVnaW9uOiAnJyxcbiAgICAgIHJlc291cmNlOiAnc2FtbC1wcm92aWRlcicsXG4gICAgICByZXNvdXJjZU5hbWU6IG5hbWUsXG4gICAgfSk7XG5cbiAgICBjb25zdCBpZHAgPSBuZXcgY3IuQXdzQ3VzdG9tUmVzb3VyY2UodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgcmVzb3VyY2VUeXBlOiAnQ3VzdG9tOjpTYW1sSWRlbnRpdHlQcm92aWRlcicsXG4gICAgICBvbkNyZWF0ZToge1xuICAgICAgICBzZXJ2aWNlOiAnSUFNJyxcbiAgICAgICAgYWN0aW9uOiAnY3JlYXRlU0FNTFByb3ZpZGVyJyxcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIE5hbWU6IG5hbWUsXG4gICAgICAgICAgU0FNTE1ldGFkYXRhRG9jdW1lbnQ6IHByb3BzLm1ldGFkYXRhRG9jdW1lbnQsXG4gICAgICAgIH0gYXMgSUFNLkNyZWF0ZVNBTUxQcm92aWRlclJlcXVlc3QsXG4gICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogY3IuUGh5c2ljYWxSZXNvdXJjZUlkLmZyb21SZXNwb25zZSgnU0FNTFByb3ZpZGVyQXJuJyksXG4gICAgICB9LFxuICAgICAgb25VcGRhdGU6IHtcbiAgICAgICAgc2VydmljZTogJ0lBTScsXG4gICAgICAgIGFjdGlvbjogJ3VwZGF0ZVNBTUxQcm92aWRlcicsXG4gICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBTQU1MUHJvdmlkZXJBcm46IG5ldyBjci5QaHlzaWNhbFJlc291cmNlSWRSZWZlcmVuY2UoKS50b0pTT04oKSxcbiAgICAgICAgICBTQU1MTWV0YWRhdGFEb2N1bWVudDogcHJvcHMubWV0YWRhdGFEb2N1bWVudCxcbiAgICAgICAgfSBhcyBJQU0uVXBkYXRlU0FNTFByb3ZpZGVyUmVxdWVzdCxcbiAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiBjci5QaHlzaWNhbFJlc291cmNlSWQuZnJvbVJlc3BvbnNlKCdTQU1MUHJvdmlkZXJBcm4nKSxcbiAgICAgIH0sXG4gICAgICBvbkRlbGV0ZToge1xuICAgICAgICBzZXJ2aWNlOiAnSUFNJyxcbiAgICAgICAgYWN0aW9uOiAnZGVsZXRlU0FNTFByb3ZpZGVyJyxcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIFNBTUxQcm92aWRlckFybjogbmV3IGNyLlBoeXNpY2FsUmVzb3VyY2VJZFJlZmVyZW5jZSgpLnRvSlNPTigpLFxuICAgICAgICB9IGFzIElBTS5EZWxldGVTQU1MUHJvdmlkZXJSZXF1ZXN0LFxuICAgICAgfSxcbiAgICAgIHBvbGljeTogY3IuQXdzQ3VzdG9tUmVzb3VyY2VQb2xpY3kuZnJvbVN0YXRlbWVudHMoW1xuICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgJ2lhbTpjcmVhdGVTQU1MUHJvdmlkZXInLFxuICAgICAgICAgICAgJ2lhbTp1cGRhdGVTQU1MUHJvdmlkZXInLFxuICAgICAgICAgICAgJ2lhbTpkZWxldGVTQU1MUHJvdmlkZXInLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbYXJuXSxcbiAgICAgICAgfSksXG4gICAgICBdKSxcbiAgICB9KTtcblxuICAgIHRoaXMuc2FtbElkZW50aXR5UHJvdmlkZXJBcm4gPSBpZHAuZ2V0UmVzcG9uc2VGaWVsZCgnU0FNTFByb3ZpZGVyQXJuJyk7XG4gIH1cbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgU2FtbEZlZGVyYXRlZFByaW5jaXBhbCBleHRlbmRzIGlhbS5GZWRlcmF0ZWRQcmluY2lwYWwge1xuICBjb25zdHJ1Y3RvcihpZGVudGl0eVByb3ZpZGVyOiBTYW1sSWRlbnRpdHlQcm92aWRlcikge1xuICAgIHN1cGVyKFxuICAgICAgaWRlbnRpdHlQcm92aWRlci5zYW1sSWRlbnRpdHlQcm92aWRlckFybixcbiAgICAgIHtcbiAgICAgICAgU3RyaW5nRXF1YWxzOiB7XG4gICAgICAgICAgJ1NBTUw6YXVkJzogJ2h0dHBzOi8vc2lnbmluLmF3cy5hbWF6b24uY29tL3NhbWwnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgICdzdHM6QXNzdW1lUm9sZVdpdGhTQU1MJyxcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -142,7 +142,7 @@ class SlackAppManifest {
142
142
  }
143
143
  exports.SlackAppManifest = SlackAppManifest;
144
144
  _a = JSII_RTTI_SYMBOL_1;
145
- SlackAppManifest[_a] = { fqn: "cloudstructs.SlackAppManifest", version: "0.4.2" };
145
+ SlackAppManifest[_a] = { fqn: "cloudstructs.SlackAppManifest", version: "0.4.6" };
146
146
  function prefixWith(prefix, string) {
147
147
  if (!string) {
148
148
  return undefined;