aws-cdk 2.1007.0 → 2.1009.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 (254) hide show
  1. package/THIRD_PARTY_LICENSES +52 -34
  2. package/build-info.json +2 -2
  3. package/db.json.gz +0 -0
  4. package/lib/api/aws-auth.d.ts +1 -0
  5. package/lib/api/{logs/index.js → aws-auth.js} +2 -3
  6. package/lib/api/bootstrap.d.ts +1 -0
  7. package/lib/api/bootstrap.js +18 -0
  8. package/lib/api/cloud-assembly.d.ts +1 -0
  9. package/lib/api/cloud-assembly.js +18 -0
  10. package/lib/api/cloudformation.d.ts +1 -0
  11. package/lib/api/cloudformation.js +18 -0
  12. package/lib/api/context.d.ts +1 -40
  13. package/lib/api/context.js +16 -80
  14. package/lib/api/deployments.d.ts +1 -0
  15. package/lib/api/deployments.js +18 -0
  16. package/lib/api/environment.d.ts +1 -0
  17. package/lib/api/environment.js +18 -0
  18. package/lib/api/garbage-collection.d.ts +1 -0
  19. package/lib/api/garbage-collection.js +18 -0
  20. package/lib/api/hotswap.d.ts +1 -0
  21. package/lib/api/hotswap.js +18 -0
  22. package/lib/api/index.d.ts +5 -1
  23. package/lib/api/index.js +6 -2
  24. package/lib/api/logs-monitor.d.ts +1 -0
  25. package/lib/api/logs-monitor.js +18 -0
  26. package/lib/api/notices.d.ts +1 -0
  27. package/lib/api/notices.js +18 -0
  28. package/lib/api/plugin.d.ts +1 -0
  29. package/lib/api/{garbage-collection/index.js → plugin.js} +2 -2
  30. package/lib/api/resource-import.d.ts +1 -0
  31. package/lib/api/resource-import.js +18 -0
  32. package/lib/api/rwlock.d.ts +1 -0
  33. package/lib/api/{resource-import/index.js → rwlock.js} +2 -3
  34. package/lib/api/settings.d.ts +1 -26
  35. package/lib/api/settings.js +16 -103
  36. package/lib/api/stack-events.d.ts +1 -0
  37. package/lib/api/stack-events.js +18 -0
  38. package/lib/api/tags.d.ts +1 -9
  39. package/lib/api/tags.js +16 -8
  40. package/lib/api/toolkit-info.d.ts +1 -52
  41. package/lib/api/toolkit-info.js +16 -152
  42. package/lib/api/tree.d.ts +1 -31
  43. package/lib/api/tree.js +16 -35
  44. package/lib/api/work-graph.d.ts +1 -0
  45. package/lib/api/work-graph.js +18 -0
  46. package/lib/api-private.d.ts +3 -0
  47. package/lib/api-private.js +22 -0
  48. package/lib/cli/cdk-toolkit.d.ts +17 -5
  49. package/lib/cli/cdk-toolkit.js +96 -44
  50. package/lib/cli/cli.d.ts +1 -1
  51. package/lib/cli/cli.js +30 -19
  52. package/lib/cli/io-host/cli-io-host.js +2 -2
  53. package/lib/cli/pretty-print-error.js +3 -1
  54. package/lib/cli/util/npm.d.ts +4 -1
  55. package/lib/cli/util/npm.js +25 -13
  56. package/lib/cli/version.d.ts +1 -1
  57. package/lib/cli/version.js +21 -25
  58. package/lib/commands/context.js +3 -2
  59. package/lib/commands/init/init-hooks.js +28 -6
  60. package/lib/commands/init/init.js +3 -2
  61. package/lib/commands/list-stacks.js +4 -4
  62. package/lib/context-providers/ami.d.ts +1 -13
  63. package/lib/context-providers/ami.js +16 -48
  64. package/lib/context-providers/availability-zones.d.ts +1 -13
  65. package/lib/context-providers/availability-zones.js +16 -25
  66. package/lib/context-providers/cc-api-provider.d.ts +1 -30
  67. package/lib/context-providers/cc-api-provider.js +16 -142
  68. package/lib/context-providers/endpoint-service-availability-zones.d.ts +1 -13
  69. package/lib/context-providers/endpoint-service-availability-zones.js +16 -31
  70. package/lib/context-providers/hosted-zones.d.ts +1 -12
  71. package/lib/context-providers/hosted-zones.js +16 -65
  72. package/lib/context-providers/index.d.ts +1 -44
  73. package/lib/context-providers/index.js +15 -126
  74. package/lib/context-providers/keys.d.ts +1 -13
  75. package/lib/context-providers/keys.js +16 -50
  76. package/lib/context-providers/load-balancers.d.ts +1 -20
  77. package/lib/context-providers/load-balancers.js +16 -154
  78. package/lib/context-providers/security-groups.d.ts +1 -9
  79. package/lib/context-providers/security-groups.js +16 -66
  80. package/lib/context-providers/ssm-parameters.d.ts +1 -25
  81. package/lib/context-providers/ssm-parameters.js +16 -57
  82. package/lib/context-providers/vpcs.d.ts +1 -13
  83. package/lib/context-providers/vpcs.js +16 -285
  84. package/lib/cxapp/cloud-assembly.d.ts +79 -0
  85. package/lib/cxapp/cloud-assembly.js +108 -0
  86. package/lib/{api/cxapp → cxapp}/cloud-executable.d.ts +6 -4
  87. package/lib/cxapp/cloud-executable.js +98 -0
  88. package/lib/{api/cxapp → cxapp}/environments.d.ts +1 -2
  89. package/lib/{api/cxapp → cxapp}/environments.js +2 -2
  90. package/lib/cxapp/exec.d.ts +14 -0
  91. package/lib/cxapp/exec.js +157 -0
  92. package/lib/cxapp/index.d.ts +4 -0
  93. package/lib/{api/bootstrap → cxapp}/index.js +5 -3
  94. package/lib/index.js +135349 -124905
  95. package/lib/init-templates/.init-version.json +1 -1
  96. package/lib/init-templates/.recommended-feature-flags.json +3 -2
  97. package/lib/legacy-aws-auth.d.ts +74 -0
  98. package/lib/legacy-aws-auth.js +40 -0
  99. package/lib/legacy-exports-source.d.ts +13 -18
  100. package/lib/legacy-exports-source.js +42 -49
  101. package/lib/legacy-exports.d.ts +3 -6
  102. package/lib/legacy-exports.js +5 -5
  103. package/lib/legacy-types.d.ts +31 -0
  104. package/lib/legacy-types.js +3 -0
  105. package/package.json +12 -11
  106. package/lib/api/aws-auth/account-cache.d.ts +0 -36
  107. package/lib/api/aws-auth/account-cache.js +0 -99
  108. package/lib/api/aws-auth/awscli-compatible.d.ts +0 -42
  109. package/lib/api/aws-auth/awscli-compatible.js +0 -263
  110. package/lib/api/aws-auth/cached.d.ts +0 -11
  111. package/lib/api/aws-auth/cached.js +0 -26
  112. package/lib/api/aws-auth/credential-plugins.d.ts +0 -36
  113. package/lib/api/aws-auth/credential-plugins.js +0 -152
  114. package/lib/api/aws-auth/index.d.ts +0 -3
  115. package/lib/api/aws-auth/index.js +0 -20
  116. package/lib/api/aws-auth/provider-caching.d.ts +0 -13
  117. package/lib/api/aws-auth/provider-caching.js +0 -24
  118. package/lib/api/aws-auth/sdk-logger.d.ts +0 -69
  119. package/lib/api/aws-auth/sdk-logger.js +0 -124
  120. package/lib/api/aws-auth/sdk-provider.d.ts +0 -207
  121. package/lib/api/aws-auth/sdk-provider.js +0 -357
  122. package/lib/api/aws-auth/sdk.d.ts +0 -229
  123. package/lib/api/aws-auth/sdk.js +0 -373
  124. package/lib/api/aws-auth/tracing.d.ts +0 -11
  125. package/lib/api/aws-auth/tracing.js +0 -60
  126. package/lib/api/aws-auth/user-agent.d.ts +0 -7
  127. package/lib/api/aws-auth/user-agent.js +0 -20
  128. package/lib/api/aws-auth/util.d.ts +0 -6
  129. package/lib/api/aws-auth/util.js +0 -23
  130. package/lib/api/bootstrap/bootstrap-environment.d.ts +0 -35
  131. package/lib/api/bootstrap/bootstrap-environment.js +0 -321
  132. package/lib/api/bootstrap/bootstrap-props.d.ts +0 -130
  133. package/lib/api/bootstrap/bootstrap-props.js +0 -14
  134. package/lib/api/bootstrap/deploy-bootstrap.d.ts +0 -39
  135. package/lib/api/bootstrap/deploy-bootstrap.js +0 -141
  136. package/lib/api/bootstrap/index.d.ts +0 -2
  137. package/lib/api/bootstrap/legacy-template.d.ts +0 -2
  138. package/lib/api/bootstrap/legacy-template.js +0 -82
  139. package/lib/api/cloudformation/evaluate-cloudformation-template.d.ts +0 -85
  140. package/lib/api/cloudformation/evaluate-cloudformation-template.js +0 -440
  141. package/lib/api/cloudformation/index.d.ts +0 -4
  142. package/lib/api/cloudformation/index.js +0 -21
  143. package/lib/api/cloudformation/nested-stack-helpers.d.ts +0 -19
  144. package/lib/api/cloudformation/nested-stack-helpers.js +0 -86
  145. package/lib/api/cloudformation/stack-helpers.d.ts +0 -88
  146. package/lib/api/cloudformation/stack-helpers.js +0 -158
  147. package/lib/api/cloudformation/template-body-parameter.d.ts +0 -22
  148. package/lib/api/cloudformation/template-body-parameter.js +0 -104
  149. package/lib/api/cxapp/cloud-assembly.d.ts +0 -137
  150. package/lib/api/cxapp/cloud-assembly.js +0 -305
  151. package/lib/api/cxapp/cloud-executable.js +0 -89
  152. package/lib/api/cxapp/exec.d.ts +0 -57
  153. package/lib/api/cxapp/exec.js +0 -279
  154. package/lib/api/deployments/asset-manifest-builder.d.ts +0 -8
  155. package/lib/api/deployments/asset-manifest-builder.js +0 -35
  156. package/lib/api/deployments/asset-publishing.d.ts +0 -60
  157. package/lib/api/deployments/asset-publishing.js +0 -141
  158. package/lib/api/deployments/assets.d.ts +0 -11
  159. package/lib/api/deployments/assets.js +0 -109
  160. package/lib/api/deployments/cfn-api.d.ts +0 -138
  161. package/lib/api/deployments/cfn-api.js +0 -438
  162. package/lib/api/deployments/checks.d.ts +0 -9
  163. package/lib/api/deployments/checks.js +0 -72
  164. package/lib/api/deployments/deploy-stack.d.ts +0 -155
  165. package/lib/api/deployments/deploy-stack.js +0 -478
  166. package/lib/api/deployments/deployment-method.d.ts +0 -24
  167. package/lib/api/deployments/deployment-method.js +0 -3
  168. package/lib/api/deployments/deployment-result.d.ts +0 -21
  169. package/lib/api/deployments/deployment-result.js +0 -10
  170. package/lib/api/deployments/deployments.d.ts +0 -296
  171. package/lib/api/deployments/deployments.js +0 -331
  172. package/lib/api/deployments/hotswap-deployments.d.ts +0 -17
  173. package/lib/api/deployments/hotswap-deployments.js +0 -441
  174. package/lib/api/deployments/index.d.ts +0 -5
  175. package/lib/api/deployments/index.js +0 -22
  176. package/lib/api/environment/environment-access.d.ts +0 -140
  177. package/lib/api/environment/environment-access.js +0 -202
  178. package/lib/api/environment/environment-resources.d.ts +0 -75
  179. package/lib/api/environment/environment-resources.js +0 -207
  180. package/lib/api/environment/index.d.ts +0 -3
  181. package/lib/api/environment/index.js +0 -20
  182. package/lib/api/environment/placeholders.d.ts +0 -10
  183. package/lib/api/environment/placeholders.js +0 -23
  184. package/lib/api/garbage-collection/garbage-collector.d.ts +0 -158
  185. package/lib/api/garbage-collection/garbage-collector.js +0 -599
  186. package/lib/api/garbage-collection/index.d.ts +0 -1
  187. package/lib/api/garbage-collection/progress-printer.d.ts +0 -23
  188. package/lib/api/garbage-collection/progress-printer.js +0 -70
  189. package/lib/api/garbage-collection/stack-refresh.d.ts +0 -49
  190. package/lib/api/garbage-collection/stack-refresh.js +0 -151
  191. package/lib/api/hotswap/appsync-mapping-templates.d.ts +0 -4
  192. package/lib/api/hotswap/appsync-mapping-templates.js +0 -162
  193. package/lib/api/hotswap/code-build-projects.d.ts +0 -4
  194. package/lib/api/hotswap/code-build-projects.js +0 -62
  195. package/lib/api/hotswap/common.d.ts +0 -89
  196. package/lib/api/hotswap/common.js +0 -128
  197. package/lib/api/hotswap/ecs-services.d.ts +0 -4
  198. package/lib/api/hotswap/ecs-services.js +0 -159
  199. package/lib/api/hotswap/lambda-functions.d.ts +0 -4
  200. package/lib/api/hotswap/lambda-functions.js +0 -297
  201. package/lib/api/hotswap/s3-bucket-deployments.d.ts +0 -5
  202. package/lib/api/hotswap/s3-bucket-deployments.js +0 -117
  203. package/lib/api/hotswap/stepfunctions-state-machines.d.ts +0 -4
  204. package/lib/api/hotswap/stepfunctions-state-machines.js +0 -48
  205. package/lib/api/logs/find-cloudwatch-logs.d.ts +0 -25
  206. package/lib/api/logs/find-cloudwatch-logs.js +0 -95
  207. package/lib/api/logs/index.d.ts +0 -2
  208. package/lib/api/logs/logs-monitor.d.ts +0 -76
  209. package/lib/api/logs/logs-monitor.js +0 -187
  210. package/lib/api/plugin/context-provider-plugin.d.ts +0 -6
  211. package/lib/api/plugin/context-provider-plugin.js +0 -7
  212. package/lib/api/plugin/index.d.ts +0 -3
  213. package/lib/api/plugin/index.js +0 -20
  214. package/lib/api/plugin/mode.d.ts +0 -4
  215. package/lib/api/plugin/mode.js +0 -9
  216. package/lib/api/plugin/plugin.d.ts +0 -63
  217. package/lib/api/plugin/plugin.js +0 -102
  218. package/lib/api/resource-import/importer.d.ts +0 -215
  219. package/lib/api/resource-import/importer.js +0 -322
  220. package/lib/api/resource-import/index.d.ts +0 -2
  221. package/lib/api/resource-import/migrator.d.ts +0 -26
  222. package/lib/api/resource-import/migrator.js +0 -71
  223. package/lib/api/stack-events/index.d.ts +0 -3
  224. package/lib/api/stack-events/index.js +0 -20
  225. package/lib/api/stack-events/stack-activity-monitor.d.ts +0 -100
  226. package/lib/api/stack-events/stack-activity-monitor.js +0 -142
  227. package/lib/api/stack-events/stack-event-poller.d.ts +0 -69
  228. package/lib/api/stack-events/stack-event-poller.js +0 -128
  229. package/lib/api/stack-events/stack-progress-monitor.d.ts +0 -48
  230. package/lib/api/stack-events/stack-progress-monitor.js +0 -94
  231. package/lib/api/stack-events/stack-status.d.ts +0 -42
  232. package/lib/api/stack-events/stack-status.js +0 -88
  233. package/lib/api/util/rwlock.d.ts +0 -65
  234. package/lib/api/util/rwlock.js +0 -179
  235. package/lib/api/work-graph/index.d.ts +0 -3
  236. package/lib/api/work-graph/index.js +0 -20
  237. package/lib/api/work-graph/work-graph-builder.d.ts +0 -34
  238. package/lib/api/work-graph/work-graph-builder.js +0 -168
  239. package/lib/api/work-graph/work-graph-types.d.ts +0 -50
  240. package/lib/api/work-graph/work-graph-types.js +0 -13
  241. package/lib/api/work-graph/work-graph.d.ts +0 -72
  242. package/lib/api/work-graph/work-graph.js +0 -346
  243. package/lib/cli/activity-printer/base.d.ts +0 -50
  244. package/lib/cli/activity-printer/base.js +0 -114
  245. package/lib/cli/activity-printer/current.d.ts +0 -26
  246. package/lib/cli/activity-printer/current.js +0 -118
  247. package/lib/cli/activity-printer/display.d.ts +0 -13
  248. package/lib/cli/activity-printer/display.js +0 -80
  249. package/lib/cli/activity-printer/history.d.ts +0 -32
  250. package/lib/cli/activity-printer/history.js +0 -108
  251. package/lib/cli/activity-printer/index.d.ts +0 -3
  252. package/lib/cli/activity-printer/index.js +0 -20
  253. package/lib/notices.d.ts +0 -203
  254. package/lib/notices.js +0 -411
@@ -1,95 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.findCloudWatchLogGroups = findCloudWatchLogGroups;
4
- const private_1 = require("../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private");
5
- const util_1 = require("../../util");
6
- const cloudformation_1 = require("../cloudformation");
7
- const environment_1 = require("../environment");
8
- const mode_1 = require("../plugin/mode");
9
- const toolkit_info_1 = require("../toolkit-info");
10
- // resource types that have associated CloudWatch Log Groups that should _not_ be monitored
11
- const IGNORE_LOGS_RESOURCE_TYPES = ['AWS::EC2::FlowLog', 'AWS::CloudTrail::Trail', 'AWS::CodeBuild::Project'];
12
- async function findCloudWatchLogGroups(sdkProvider, ioHelper, stackArtifact) {
13
- let sdk;
14
- const resolvedEnv = await sdkProvider.resolveEnvironment(stackArtifact.environment);
15
- // try to assume the lookup role and fallback to the default credentials
16
- try {
17
- sdk = (await new environment_1.EnvironmentAccess(sdkProvider, toolkit_info_1.DEFAULT_TOOLKIT_STACK_NAME, ioHelper).accessStackForLookup(stackArtifact)).sdk;
18
- }
19
- catch (e) {
20
- await ioHelper.notify(private_1.IO.DEFAULT_TOOLKIT_DEBUG.msg(`Failed to access SDK environment: ${(0, util_1.formatErrorMessage)(e)}`));
21
- sdk = (await sdkProvider.forEnvironment(resolvedEnv, mode_1.Mode.ForReading)).sdk;
22
- }
23
- const listStackResources = new cloudformation_1.LazyListStackResources(sdk, stackArtifact.stackName);
24
- const evaluateCfnTemplate = new cloudformation_1.EvaluateCloudFormationTemplate({
25
- stackArtifact,
26
- parameters: {},
27
- account: resolvedEnv.account,
28
- region: resolvedEnv.region,
29
- partition: (await sdk.currentAccount()).partition,
30
- sdk,
31
- });
32
- const stackResources = await listStackResources.listStackResources();
33
- const logGroupNames = findAllLogGroupNames(stackResources, evaluateCfnTemplate);
34
- return {
35
- env: resolvedEnv,
36
- sdk,
37
- logGroupNames,
38
- };
39
- }
40
- /**
41
- * Determine if a CloudWatch Log Group is associated
42
- * with an ignored resource
43
- */
44
- function isReferencedFromIgnoredResource(logGroupResource, evaluateCfnTemplate) {
45
- const resourcesReferencingLogGroup = evaluateCfnTemplate.findReferencesTo(logGroupResource.LogicalResourceId);
46
- return resourcesReferencingLogGroup.some((reference) => {
47
- return IGNORE_LOGS_RESOURCE_TYPES.includes(reference.Type);
48
- });
49
- }
50
- const cloudWatchLogsResolvers = {
51
- 'AWS::Logs::LogGroup': (resource, evaluateCfnTemplate) => {
52
- if (isReferencedFromIgnoredResource(resource, evaluateCfnTemplate)) {
53
- return undefined;
54
- }
55
- return resource.PhysicalResourceId?.toString();
56
- },
57
- // Resource types that will create a CloudWatch log group with a specific name if one is not provided.
58
- // The keys are CFN resource types, and the values are the name of the physical name property of that resource
59
- // and the service name that is used in the automatically created CloudWatch log group.
60
- 'AWS::Lambda::Function': (resource, evaluateCfnTemplate) => {
61
- const loggingConfig = evaluateCfnTemplate.getResourceProperty(resource.LogicalResourceId, 'LoggingConfig');
62
- if (loggingConfig?.LogGroup) {
63
- // if LogGroup is a string then use it as the LogGroupName as it is referred by LogGroup.fromLogGroupArn in CDK
64
- if (typeof loggingConfig.LogGroup === 'string') {
65
- return loggingConfig.LogGroup;
66
- }
67
- // if { Ref: '...' } is used then try to resolve the LogGroupName from the referenced resource in the template
68
- if (typeof loggingConfig.LogGroup === 'object') {
69
- if (loggingConfig.LogGroup.Ref) {
70
- return evaluateCfnTemplate.getResourceProperty(loggingConfig.LogGroup.Ref, 'LogGroupName');
71
- }
72
- }
73
- }
74
- return `/aws/lambda/${resource.PhysicalResourceId}`;
75
- },
76
- };
77
- /**
78
- * Find all CloudWatch Log Groups in the deployed template.
79
- * This will find both explicitly created Log Groups (excluding those associated with ignored resources)
80
- * and Log Groups created implicitly (i.e. Lambda Functions)
81
- */
82
- function findAllLogGroupNames(stackResources, evaluateCfnTemplate) {
83
- const logGroupNames = [];
84
- for (const resource of stackResources) {
85
- const logGroupResolver = cloudWatchLogsResolvers[resource.ResourceType];
86
- if (logGroupResolver) {
87
- const logGroupName = logGroupResolver(resource, evaluateCfnTemplate);
88
- if (logGroupName) {
89
- logGroupNames.push(logGroupName);
90
- }
91
- }
92
- }
93
- return logGroupNames;
94
- }
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1jbG91ZHdhdGNoLWxvZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJmaW5kLWNsb3Vkd2F0Y2gtbG9ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXNDQSwwREFpQ0M7QUFwRUQseUZBQWlGO0FBQ2pGLHFDQUFnRDtBQUVoRCxzREFBMkY7QUFDM0YsZ0RBQW1EO0FBQ25ELHlDQUFzQztBQUN0QyxrREFBNkQ7QUFFN0QsMkZBQTJGO0FBQzNGLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSx3QkFBd0IsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO0FBMEJ2RyxLQUFLLFVBQVUsdUJBQXVCLENBQzNDLFdBQXdCLEVBQ3hCLFFBQWtCLEVBQ2xCLGFBQTBDO0lBRTFDLElBQUksR0FBUSxDQUFDO0lBQ2IsTUFBTSxXQUFXLEdBQUcsTUFBTSxXQUFXLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3BGLHdFQUF3RTtJQUN4RSxJQUFJLENBQUM7UUFDSCxHQUFHLEdBQUcsQ0FBQyxNQUFNLElBQUksK0JBQWlCLENBQUMsV0FBVyxFQUFFLHlDQUEwQixFQUFFLFFBQVEsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQ2pJLENBQUM7SUFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO1FBQ2hCLE1BQU0sUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFFLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLHFDQUFxQyxJQUFBLHlCQUFrQixFQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xILEdBQUcsR0FBRyxDQUFDLE1BQU0sV0FBVyxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsV0FBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQzdFLENBQUM7SUFFRCxNQUFNLGtCQUFrQixHQUFHLElBQUksdUNBQXNCLENBQUMs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Q0FBQztZQUNyRSxJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUNqQixhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ25DLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sYUFBYSxDQUFDO0FBQ3ZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdCwgRW52aXJvbm1lbnQgfSBmcm9tICdAYXdzLWNkay9jeC1hcGknO1xuaW1wb3J0IHR5cGUgeyBTdGFja1Jlc291cmNlU3VtbWFyeSB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgdHlwZSB7IElvSGVscGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vQGF3cy1jZGsvdG1wLXRvb2xraXQtaGVscGVycy9zcmMvYXBpL2lvL3ByaXZhdGUnO1xuaW1wb3J0IHsgSU8gfSBmcm9tICcuLi8uLi8uLi8uLi9AYXdzLWNkay90bXAtdG9vbGtpdC1oZWxwZXJzL3NyYy9hcGkvaW8vcHJpdmF0ZSc7XG5pbXBvcnQgeyBmb3JtYXRFcnJvck1lc3NhZ2UgfSBmcm9tICcuLi8uLi91dGlsJztcbmltcG9ydCB0eXBlIHsgU0RLLCBTZGtQcm92aWRlciB9IGZyb20gJy4uL2F3cy1hdXRoJztcbmltcG9ydCB7IEV2YWx1YXRlQ2xvdWRGb3JtYXRpb25UZW1wbGF0ZSwgTGF6eUxpc3RTdGFja1Jlc291cmNlcyB9IGZyb20gJy4uL2Nsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB7IEVudmlyb25tZW50QWNjZXNzIH0gZnJvbSAnLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgTW9kZSB9IGZyb20gJy4uL3BsdWdpbi9tb2RlJztcbmltcG9ydCB7IERFRkFVTFRfVE9PTEtJVF9TVEFDS19OQU1FIH0gZnJvbSAnLi4vdG9vbGtpdC1pbmZvJztcblxuLy8gcmVzb3VyY2UgdHlwZXMgdGhhdCBoYXZlIGFzc29jaWF0ZWQgQ2xvdWRXYXRjaCBMb2cgR3JvdXBzIHRoYXQgc2hvdWxkIF9ub3RfIGJlIG1vbml0b3JlZFxuY29uc3QgSUdOT1JFX0xPR1NfUkVTT1VSQ0VfVFlQRVMgPSBbJ0FXUzo6RUMyOjpGbG93TG9nJywgJ0FXUzo6Q2xvdWRUcmFpbDo6VHJhaWwnLCAnQVdTOjpDb2RlQnVpbGQ6OlByb2plY3QnXTtcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIG5lZWRlZCB0byBtb25pdG9yIENsb3VkV2F0Y2ggTG9nIEdyb3Vwc1xuICogZm91bmQgaW4gYSBnaXZlbiBDbG91ZEZvcm1hdGlvbiBTdGFja1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZvdW5kTG9nR3JvdXBzUmVzdWx0IHtcbiAgLyoqXG4gICAqIFRoZSByZXNvbHZlZCBlbnZpcm9ubWVudCAoYWNjb3VudC9yZWdpb24pIHRoYXQgdGhlIGxvZ1xuICAgKiBncm91cHMgYXJlIGRlcGxveWVkIGluXG4gICAqL1xuICByZWFkb25seSBlbnY6IEVudmlyb25tZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgU0RLIHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVhZCBldmVudHMgZnJvbSB0aGUgQ2xvdWRXYXRjaFxuICAgKiBMb2cgR3JvdXBzIGluIHRoZSBnaXZlbiBlbnZpcm9ubWVudFxuICAgKi9cbiAgcmVhZG9ubHkgc2RrOiBTREs7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lcyBvZiB0aGUgcmVsZXZhbnQgQ2xvdWRXYXRjaCBMb2cgR3JvdXBzXG4gICAqIGluIHRoZSBnaXZlbiBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZVxuICAgKi9cbiAgcmVhZG9ubHkgbG9nR3JvdXBOYW1lczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmaW5kQ2xvdWRXYXRjaExvZ0dyb3VwcyhcbiAgc2RrUHJvdmlkZXI6IFNka1Byb3ZpZGVyLFxuICBpb0hlbHBlcjogSW9IZWxwZXIsXG4gIHN0YWNrQXJ0aWZhY3Q6IENsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdCxcbik6IFByb21pc2U8Rm91bmRMb2dHcm91cHNSZXN1bHQ+IHtcbiAgbGV0IHNkazogU0RLO1xuICBjb25zdCByZXNvbHZlZEVudiA9IGF3YWl0IHNka1Byb3ZpZGVyLnJlc29sdmVFbnZpcm9ubWVudChzdGFja0FydGlmYWN0LmVudmlyb25tZW50KTtcbiAgLy8gdHJ5IHRvIGFzc3VtZSB0aGUgbG9va3VwIHJvbGUgYW5kIGZhbGxiYWNrIHRvIHRoZSBkZWZhdWx0IGNyZWRlbnRpYWxzXG4gIHRyeSB7XG4gICAgc2RrID0gKGF3YWl0IG5ldyBFbnZpcm9ubWVudEFjY2VzcyhzZGtQcm92aWRlciwgREVGQVVMVF9UT09MS0lUX1NUQUNLX05BTUUsIGlvSGVscGVyKS5hY2Nlc3NTdGFja0Zvckxvb2t1cChzdGFja0FydGlmYWN0KSkuc2RrO1xuICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICBhd2FpdCBpb0hlbHBlci5ub3RpZnkoSU8uREVGQVVMVF9UT09MS0lUX0RFQlVHLm1zZyhgRmFpbGVkIHRvIGFjY2VzcyBTREsgZW52aXJvbm1lbnQ6ICR7Zm9ybWF0RXJyb3JNZXNzYWdlKGUpfWApKTtcbiAgICBzZGsgPSAoYXdhaXQgc2RrUHJvdmlkZXIuZm9yRW52aXJvbm1lbnQocmVzb2x2ZWRFbnYsIE1vZGUuRm9yUmVhZGluZykpLnNkaztcbiAgfVxuXG4gIGNvbnN0IGxpc3RTdGFja1Jlc291cmNlcyA9IG5ldyBMYXp5TGlzdFN0YWNrUmVzb3VyY2VzKHNkaywgc3RhY2tBcnRpZmFjdC5zdGFja05hbWUpO1xuICBjb25zdCBldmFsdWF0ZUNmblRlbXBsYXRlID0gbmV3IEV2YWx1YXRlQ2xvdWRGb3JtYXRpb25UZW1wbGF0ZSh7XG4gICAgc3RhY2tBcnRpZmFjdCxcbiAgICBwYXJhbWV0ZXJzOiB7fSxcbiAgICBhY2NvdW50OiByZXNvbHZlZEVudi5hY2NvdW50LFxuICAgIHJlZ2lvbjogcmVzb2x2ZWRFbnYucmVnaW9uLFxuICAgIHBhcnRpdGlvbjogKGF3YWl0IHNkay5jdXJyZW50QWNjb3VudCgpKS5wYXJ0aXRpb24sXG4gICAgc2RrLFxuICB9KTtcblxuICBjb25zdCBzdGFja1Jlc291cmNlcyA9IGF3YWl0IGxpc3RTdGFja1Jlc291cmNlcy5saXN0U3RhY2tSZXNvdXJjZXMoKTtcbiAgY29uc3QgbG9nR3JvdXBOYW1lcyA9IGZpbmRBbGxMb2dHcm91cE5hbWVzKHN0YWNrUmVzb3VyY2VzLCBldmFsdWF0ZUNmblRlbXBsYXRlKTtcblxuICByZXR1cm4ge1xuICAgIGVudjogcmVzb2x2ZWRFbnYsXG4gICAgc2RrLFxuICAgIGxvZ0dyb3VwTmFtZXMsXG4gIH07XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgQ2xvdWRXYXRjaCBMb2cgR3JvdXAgaXMgYXNzb2NpYXRlZFxuICogd2l0aCBhbiBpZ25vcmVkIHJlc291cmNlXG4gKi9cbmZ1bmN0aW9uIGlzUmVmZXJlbmNlZEZyb21JZ25vcmVkUmVzb3VyY2UoXG4gIGxvZ0dyb3VwUmVzb3VyY2U6IFN0YWNrUmVzb3VyY2VTdW1tYXJ5LFxuICBldmFsdWF0ZUNmblRlbXBsYXRlOiBFdmFsdWF0ZUNsb3VkRm9ybWF0aW9uVGVtcGxhdGUsXG4pOiBib29sZWFuIHtcbiAgY29uc3QgcmVzb3VyY2VzUmVmZXJlbmNpbmdMb2dHcm91cCA9IGV2YWx1YXRlQ2ZuVGVtcGxhdGUuZmluZFJlZmVyZW5jZXNUbyhsb2dHcm91cFJlc291cmNlLkxvZ2ljYWxSZXNvdXJjZUlkISk7XG4gIHJldHVybiByZXNvdXJjZXNSZWZlcmVuY2luZ0xvZ0dyb3VwLnNvbWUoKHJlZmVyZW5jZSkgPT4ge1xuICAgIHJldHVybiBJR05PUkVfTE9HU19SRVNPVVJDRV9UWVBFUy5pbmNsdWRlcyhyZWZlcmVuY2UuVHlwZSk7XG4gIH0pO1xufVxuXG50eXBlIENsb3VkV2F0Y2hMb2dzUmVzb2x2ZXIgPSAoXG4gIHJlc291cmNlOiBTdGFja1Jlc291cmNlU3VtbWFyeSxcbiAgZXZhbHVhdGVDZm5UZW1wbGF0ZTogRXZhbHVhdGVDbG91ZEZvcm1hdGlvblRlbXBsYXRlLFxuKSA9PiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbmNvbnN0IGNsb3VkV2F0Y2hMb2dzUmVzb2x2ZXJzOiBSZWNvcmQ8c3RyaW5nLCBDbG91ZFdhdGNoTG9nc1Jlc29sdmVyPiA9IHtcbiAgJ0FXUzo6TG9nczo6TG9nR3JvdXAnOiAocmVzb3VyY2UsIGV2YWx1YXRlQ2ZuVGVtcGxhdGUpID0+IHtcbiAgICBpZiAoaXNSZWZlcmVuY2VkRnJvbUlnbm9yZWRSZXNvdXJjZShyZXNvdXJjZSwgZXZhbHVhdGVDZm5UZW1wbGF0ZSkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiByZXNvdXJjZS5QaHlzaWNhbFJlc291cmNlSWQ/LnRvU3RyaW5nKCk7XG4gIH0sXG5cbiAgLy8gUmVzb3VyY2UgdHlwZXMgdGhhdCB3aWxsIGNyZWF0ZSBhIENsb3VkV2F0Y2ggbG9nIGdyb3VwIHdpdGggYSBzcGVjaWZpYyBuYW1lIGlmIG9uZSBpcyBub3QgcHJvdmlkZWQuXG4gIC8vIFRoZSBrZXlzIGFyZSBDRk4gcmVzb3VyY2UgdHlwZXMsIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZSBvZiB0aGUgcGh5c2ljYWwgbmFtZSBwcm9wZXJ0eSBvZiB0aGF0IHJlc291cmNlXG4gIC8vIGFuZCB0aGUgc2VydmljZSBuYW1lIHRoYXQgaXMgdXNlZCBpbiB0aGUgYXV0b21hdGljYWxseSBjcmVhdGVkIENsb3VkV2F0Y2ggbG9nIGdyb3VwLlxuICAnQVdTOjpMYW1iZGE6OkZ1bmN0aW9uJzogKHJlc291cmNlLCBldmFsdWF0ZUNmblRlbXBsYXRlKSA9PiB7XG4gICAgY29uc3QgbG9nZ2luZ0NvbmZpZyA9IGV2YWx1YXRlQ2ZuVGVtcGxhdGUuZ2V0UmVzb3VyY2VQcm9wZXJ0eShyZXNvdXJjZS5Mb2dpY2FsUmVzb3VyY2VJZCEsICdMb2dnaW5nQ29uZmlnJyk7XG4gICAgaWYgKGxvZ2dpbmdDb25maWc/LkxvZ0dyb3VwKSB7XG4gICAgICAvLyBpZiBMb2dHcm91cCBpcyBhIHN0cmluZyB0aGVuIHVzZSBpdCBhcyB0aGUgTG9nR3JvdXBOYW1lIGFzIGl0IGlzIHJlZmVycmVkIGJ5IExvZ0dyb3VwLmZyb21Mb2dHcm91cEFybiBpbiBDREtcbiAgICAgIGlmICh0eXBlb2YgbG9nZ2luZ0NvbmZpZy5Mb2dHcm91cCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIGxvZ2dpbmdDb25maWcuTG9nR3JvdXA7XG4gICAgICB9XG5cbiAgICAgIC8vIGlmIHsgUmVmOiAnLi4uJyB9IGlzIHVzZWQgdGhlbiB0cnkgdG8gcmVzb2x2ZSB0aGUgTG9nR3JvdXBOYW1lIGZyb20gdGhlIHJlZmVyZW5jZWQgcmVzb3VyY2UgaW4gdGhlIHRlbXBsYXRlXG4gICAgICBpZiAodHlwZW9mIGxvZ2dpbmdDb25maWcuTG9nR3JvdXAgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGlmIChsb2dnaW5nQ29uZmlnLkxvZ0dyb3VwLlJlZikge1xuICAgICAgICAgIHJldHVybiBldmFsdWF0ZUNmblRlbXBsYXRlLmdldFJlc291cmNlUHJvcGVydHkobG9nZ2luZ0NvbmZpZy5Mb2dHcm91cC5SZWYsICdMb2dHcm91cE5hbWUnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBgL2F3cy9sYW1iZGEvJHtyZXNvdXJjZS5QaHlzaWNhbFJlc291cmNlSWR9YDtcbiAgfSxcbn07XG5cbi8qKlxuICogRmluZCBhbGwgQ2xvdWRXYXRjaCBMb2cgR3JvdXBzIGluIHRoZSBkZXBsb3llZCB0ZW1wbGF0ZS5cbiAqIFRoaXMgd2lsbCBmaW5kIGJvdGggZXhwbGljaXRseSBjcmVhdGVkIExvZyBHcm91cHMgKGV4Y2x1ZGluZyB0aG9zZSBhc3NvY2lhdGVkIHdpdGggaWdub3JlZCByZXNvdXJjZXMpXG4gKiBhbmQgTG9nIEdyb3VwcyBjcmVhdGVkIGltcGxpY2l0bHkgKGkuZS4gTGFtYmRhIEZ1bmN0aW9ucylcbiAqL1xuZnVuY3Rpb24gZmluZEFsbExvZ0dyb3VwTmFtZXMoXG4gIHN0YWNrUmVzb3VyY2VzOiBTdGFja1Jlc291cmNlU3VtbWFyeVtdLFxuICBldmFsdWF0ZUNmblRlbXBsYXRlOiBFdmFsdWF0ZUNsb3VkRm9ybWF0aW9uVGVtcGxhdGUsXG4pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGxvZ0dyb3VwTmFtZXM6IHN0cmluZ1tdID0gW107XG5cbiAgZm9yIChjb25zdCByZXNvdXJjZSBvZiBzdGFja1Jlc291cmNlcykge1xuICAgIGNvbnN0IGxvZ0dyb3VwUmVzb2x2ZXIgPSBjbG91ZFdhdGNoTG9nc1Jlc29sdmVyc1tyZXNvdXJjZS5SZXNvdXJjZVR5cGUhXTtcbiAgICBpZiAobG9nR3JvdXBSZXNvbHZlcikge1xuICAgICAgY29uc3QgbG9nR3JvdXBOYW1lID0gbG9nR3JvdXBSZXNvbHZlcihyZXNvdXJjZSwgZXZhbHVhdGVDZm5UZW1wbGF0ZSk7XG4gICAgICBpZiAobG9nR3JvdXBOYW1lKSB7XG4gICAgICAgIGxvZ0dyb3VwTmFtZXMucHVzaChsb2dHcm91cE5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBsb2dHcm91cE5hbWVzO1xufVxuIl19
@@ -1,2 +0,0 @@
1
- export * from './logs-monitor';
2
- export * from './find-cloudwatch-logs';
@@ -1,76 +0,0 @@
1
- import type * as cxapi from '@aws-cdk/cx-api';
2
- import type { IoHelper } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private';
3
- import type { SDK } from '../aws-auth';
4
- export interface CloudWatchLogEventMonitorProps {
5
- /**
6
- * The IoHost used for messaging
7
- */
8
- readonly ioHelper: IoHelper;
9
- /**
10
- * The time from which we start reading log messages
11
- *
12
- * @default - now
13
- */
14
- readonly startTime?: Date;
15
- }
16
- export declare class CloudWatchLogEventMonitor {
17
- /**
18
- * Determines which events not to display
19
- */
20
- private startTime;
21
- /**
22
- * Map of environment (account:region) to LogGroupsAccessSettings
23
- */
24
- private readonly envsLogGroupsAccessSettings;
25
- /**
26
- * After reading events from all CloudWatch log groups
27
- * how long should we wait to read more events.
28
- *
29
- * If there is some error with reading events (i.e. Throttle)
30
- * then this is also how long we wait until we try again
31
- */
32
- private readonly pollingInterval;
33
- monitorId?: string;
34
- private readonly ioHelper;
35
- constructor(props: CloudWatchLogEventMonitorProps);
36
- /**
37
- * resume reading/printing events
38
- */
39
- activate(): Promise<void>;
40
- /**
41
- * deactivates the monitor so no new events are read
42
- * use case for this is when we are in the middle of performing a deployment
43
- * and don't want to interweave all the logs together with the CFN
44
- * deployment logs
45
- *
46
- * Also resets the start time to be when the new deployment was triggered
47
- * and clears the list of tracked log groups
48
- */
49
- deactivate(): Promise<void>;
50
- /**
51
- * Adds CloudWatch log groups to read log events from.
52
- * Since we could be watching multiple stacks that deploy to
53
- * multiple environments (account+region), we need to store a list of log groups
54
- * per env along with the SDK object that has access to read from
55
- * that environment.
56
- */
57
- addLogGroups(env: cxapi.Environment, sdk: SDK, logGroupNames: string[]): void;
58
- private logGroupNames;
59
- private scheduleNextTick;
60
- private tick;
61
- /**
62
- * Reads all new log events from a set of CloudWatch Log Groups
63
- * in parallel
64
- */
65
- private readNewEvents;
66
- /**
67
- * Print out a cloudwatch event
68
- */
69
- private print;
70
- /**
71
- * Reads all new log events from a CloudWatch Log Group
72
- * starting at either the time the hotswap was triggered or
73
- * when the last event was read on the previous tick
74
- */
75
- private readEventsFromLogGroup;
76
- }
@@ -1,187 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CloudWatchLogEventMonitor = void 0;
4
- const util = require("util");
5
- const chalk = require("chalk");
6
- const uuid = require("uuid");
7
- const private_1 = require("../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private");
8
- const util_1 = require("../../util");
9
- class CloudWatchLogEventMonitor {
10
- constructor(props) {
11
- /**
12
- * Map of environment (account:region) to LogGroupsAccessSettings
13
- */
14
- this.envsLogGroupsAccessSettings = new Map();
15
- /**
16
- * After reading events from all CloudWatch log groups
17
- * how long should we wait to read more events.
18
- *
19
- * If there is some error with reading events (i.e. Throttle)
20
- * then this is also how long we wait until we try again
21
- */
22
- this.pollingInterval = 2000;
23
- this.startTime = props.startTime?.getTime() ?? Date.now();
24
- this.ioHelper = props.ioHelper;
25
- }
26
- /**
27
- * resume reading/printing events
28
- */
29
- async activate() {
30
- this.monitorId = uuid.v4();
31
- await this.ioHelper.notify(private_1.IO.CDK_TOOLKIT_I5032.msg('Start monitoring log groups', {
32
- monitor: this.monitorId,
33
- logGroupNames: this.logGroupNames(),
34
- }));
35
- await this.tick();
36
- this.scheduleNextTick();
37
- }
38
- /**
39
- * deactivates the monitor so no new events are read
40
- * use case for this is when we are in the middle of performing a deployment
41
- * and don't want to interweave all the logs together with the CFN
42
- * deployment logs
43
- *
44
- * Also resets the start time to be when the new deployment was triggered
45
- * and clears the list of tracked log groups
46
- */
47
- async deactivate() {
48
- const oldMonitorId = this.monitorId;
49
- this.monitorId = undefined;
50
- this.startTime = Date.now();
51
- await this.ioHelper.notify(private_1.IO.CDK_TOOLKIT_I5034.msg('Stopped monitoring log groups', {
52
- monitor: oldMonitorId,
53
- logGroupNames: this.logGroupNames(),
54
- }));
55
- this.envsLogGroupsAccessSettings.clear();
56
- }
57
- /**
58
- * Adds CloudWatch log groups to read log events from.
59
- * Since we could be watching multiple stacks that deploy to
60
- * multiple environments (account+region), we need to store a list of log groups
61
- * per env along with the SDK object that has access to read from
62
- * that environment.
63
- */
64
- addLogGroups(env, sdk, logGroupNames) {
65
- const awsEnv = `${env.account}:${env.region}`;
66
- const logGroupsStartTimes = logGroupNames.reduce((acc, groupName) => {
67
- acc[groupName] = this.startTime;
68
- return acc;
69
- }, {});
70
- this.envsLogGroupsAccessSettings.set(awsEnv, {
71
- sdk,
72
- logGroupsStartTimes: {
73
- ...this.envsLogGroupsAccessSettings.get(awsEnv)?.logGroupsStartTimes,
74
- ...logGroupsStartTimes,
75
- },
76
- });
77
- }
78
- logGroupNames() {
79
- return Array.from(this.envsLogGroupsAccessSettings.values()).flatMap((settings) => Object.keys(settings.logGroupsStartTimes));
80
- }
81
- scheduleNextTick() {
82
- if (!this.monitorId) {
83
- return;
84
- }
85
- setTimeout(() => void this.tick(), this.pollingInterval);
86
- }
87
- async tick() {
88
- // excluding from codecoverage because this
89
- // doesn't always run (depends on timing)
90
- /* c8 ignore next */
91
- if (!this.monitorId) {
92
- return;
93
- }
94
- try {
95
- const events = (0, util_1.flatten)(await this.readNewEvents());
96
- for (const event of events) {
97
- await this.print(event);
98
- }
99
- // We might have been stop()ped while the network call was in progress.
100
- if (!this.monitorId) {
101
- return;
102
- }
103
- }
104
- catch (e) {
105
- await this.ioHelper.notify(private_1.IO.CDK_TOOLKIT_E5035.msg('Error occurred while monitoring logs: %s', { error: e }));
106
- }
107
- this.scheduleNextTick();
108
- }
109
- /**
110
- * Reads all new log events from a set of CloudWatch Log Groups
111
- * in parallel
112
- */
113
- async readNewEvents() {
114
- const promises = [];
115
- for (const settings of this.envsLogGroupsAccessSettings.values()) {
116
- for (const group of Object.keys(settings.logGroupsStartTimes)) {
117
- promises.push(this.readEventsFromLogGroup(settings, group));
118
- }
119
- }
120
- // Limited set of log groups
121
- // eslint-disable-next-line @cdklabs/promiseall-no-unbounded-parallelism
122
- return Promise.all(promises);
123
- }
124
- /**
125
- * Print out a cloudwatch event
126
- */
127
- async print(event) {
128
- await this.ioHelper.notify(private_1.IO.CDK_TOOLKIT_I5033.msg(util.format('[%s] %s %s', chalk.blue(event.logGroupName), chalk.yellow(event.timestamp.toLocaleTimeString()), event.message.trim()), event));
129
- }
130
- /**
131
- * Reads all new log events from a CloudWatch Log Group
132
- * starting at either the time the hotswap was triggered or
133
- * when the last event was read on the previous tick
134
- */
135
- async readEventsFromLogGroup(logGroupsAccessSettings, logGroupName) {
136
- const events = [];
137
- // log events from some service are ingested faster than others
138
- // so we need to track the start/end time for each log group individually
139
- // to make sure that we process all events from each log group
140
- const startTime = logGroupsAccessSettings.logGroupsStartTimes[logGroupName] ?? this.startTime;
141
- let endTime = startTime;
142
- try {
143
- const response = await logGroupsAccessSettings.sdk.cloudWatchLogs().filterLogEvents({
144
- logGroupName: logGroupName,
145
- limit: 100,
146
- startTime: startTime,
147
- });
148
- const filteredEvents = response.events ?? [];
149
- for (const event of filteredEvents) {
150
- if (event.message) {
151
- events.push({
152
- message: event.message,
153
- logGroupName,
154
- timestamp: event.timestamp ? new Date(event.timestamp) : new Date(),
155
- });
156
- if (event.timestamp && endTime < event.timestamp) {
157
- endTime = event.timestamp;
158
- }
159
- }
160
- }
161
- // As long as there are _any_ events in the log group `filterLogEvents` will return a nextToken.
162
- // This is true even if these events are before `startTime`. So if we have 100 events and a nextToken
163
- // then assume that we have hit the limit and let the user know some messages have been suppressed.
164
- // We are essentially showing them a sampling (10000 events printed out is not very useful)
165
- if (filteredEvents.length === 100 && response.nextToken) {
166
- events.push({
167
- message: '>>> `watch` shows only the first 100 log messages - the rest have been truncated...',
168
- logGroupName,
169
- timestamp: new Date(endTime),
170
- });
171
- }
172
- }
173
- catch (e) {
174
- // with Lambda functions the CloudWatch is not created
175
- // until something is logged, so just keep polling until
176
- // there is somthing to find
177
- if (e.name === 'ResourceNotFoundException') {
178
- return [];
179
- }
180
- throw e;
181
- }
182
- logGroupsAccessSettings.logGroupsStartTimes[logGroupName] = endTime + 1;
183
- return events;
184
- }
185
- }
186
- exports.CloudWatchLogEventMonitor = CloudWatchLogEventMonitor;
187
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9ncy1tb25pdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibG9ncy1tb25pdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZCQUE2QjtBQUU3QiwrQkFBK0I7QUFDL0IsNkJBQTZCO0FBRzdCLHlGQUFpRjtBQUNqRixxQ0FBcUM7QUFvQ3JDLE1BQWEseUJBQXlCO0lBdUJwQyxZQUFZLEtBQXFDO1FBakJqRDs7V0FFRztRQUNjLGdDQUEyQixHQUFHLElBQUksR0FBRyxFQUFtQyxDQUFDO1FBRTFGOzs7Ozs7V0FNRztRQUNjLG9CQUFlLEdBQVcsSUFBSyxDQUFDO1FBTS9DLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDMUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxRQUFRO1FBQ25CLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBRTNCLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsWUFBRSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsRUFBRTtZQUNqRixPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDdkIsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUU7U0FDcEMsQ0FBQyxDQUFDLENBQUM7UUFFSixNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxLQUFLLENBQUMsVUFBVTtRQUNyQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBVSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNC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d0Q7WUFDeEQsNEJBQTRCO1lBQzVCLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSywyQkFBMkIsRUFBRSxDQUFDO2dCQUMzQyxPQUFPLEVBQUUsQ0FBQztZQUNaLENBQUM7WUFDRCxNQUFNLENBQUMsQ0FBQztRQUNWLENBQUM7UUFDRCx1QkFBdUIsQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ3hFLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRjtBQTFORCw4REEwTkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dGlsIGZyb20gJ3V0aWwnO1xuaW1wb3J0IHR5cGUgKiBhcyBjeGFwaSBmcm9tICdAYXdzLWNkay9jeC1hcGknO1xuaW1wb3J0ICogYXMgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0ICogYXMgdXVpZCBmcm9tICd1dWlkJztcbmltcG9ydCB0eXBlIHsgQ2xvdWRXYXRjaExvZ0V2ZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vQGF3cy1jZGsvdG1wLXRvb2xraXQtaGVscGVycy9zcmMvYXBpL2lvJztcbmltcG9ydCB0eXBlIHsgSW9IZWxwZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9AYXdzLWNkay90bXAtdG9vbGtpdC1oZWxwZXJzL3NyYy9hcGkvaW8vcHJpdmF0ZSc7XG5pbXBvcnQgeyBJTyB9IGZyb20gJy4uLy4uLy4uLy4uL0Bhd3MtY2RrL3RtcC10b29sa2l0LWhlbHBlcnMvc3JjL2FwaS9pby9wcml2YXRlJztcbmltcG9ydCB7IGZsYXR0ZW4gfSBmcm9tICcuLi8uLi91dGlsJztcbmltcG9ydCB0eXBlIHsgU0RLIH0gZnJvbSAnLi4vYXdzLWF1dGgnO1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gdHJhY2tpbmcgaW5mb3JtYXRpb24gb24gdGhlIGxvZyBncm91cHMgdGhhdCBhcmVcbiAqIGJlaW5nIG1vbml0b3JlZFxuICovXG5pbnRlcmZhY2UgTG9nR3JvdXBzQWNjZXNzU2V0dGluZ3Mge1xuICAvKipcbiAgICogVGhlIFNESyBmb3IgYSBnaXZlbiBlbnZpcm9ubWVudCAoYWNjb3VudC9yZWdpb24pXG4gICAqL1xuICByZWFkb25seSBzZGs6IFNESztcblxuICAvKipcbiAgICogQSBtYXAgb2YgbG9nIGdyb3VwcyBhbmQgYXNzb2NpYXRlZCBzdGFydFRpbWUgaW4gYSBnaXZlbiBhY2NvdW50LlxuICAgKlxuICAgKiBUaGUgbW9uaXRvciB3aWxsIHJlYWQgZXZlbnRzIGZyb20gdGhlIGxvZyBncm91cCBzdGFydGluZyBhdCB0aGVcbiAgICogYXNzb2NpYXRlZCBzdGFydFRpbWVcbiAgICovXG4gIHJlYWRvbmx5IGxvZ0dyb3Vwc1N0YXJ0VGltZXM6IHsgW2xvZ0dyb3VwTmFtZTogc3RyaW5nXTogbnVtYmVyIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xvdWRXYXRjaExvZ0V2ZW50TW9uaXRvclByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBJb0hvc3QgdXNlZCBmb3IgbWVzc2FnaW5nXG4gICAqL1xuICByZWFkb25seSBpb0hlbHBlcjogSW9IZWxwZXI7XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lIGZyb20gd2hpY2ggd2Ugc3RhcnQgcmVhZGluZyBsb2cgbWVzc2FnZXNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBub3dcbiAgICovXG4gIHJlYWRvbmx5IHN0YXJ0VGltZT86IERhdGU7XG59XG5cbmV4cG9ydCBjbGFzcyBDbG91ZFdhdGNoTG9nRXZlbnRNb25pdG9yIHtcbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hpY2ggZXZlbnRzIG5vdCB0byBkaXNwbGF5XG4gICAqL1xuICBwcml2YXRlIHN0YXJ0VGltZTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBNYXAgb2YgZW52aXJvbm1lbnQgKGFjY291bnQ6cmVnaW9uKSB0byBMb2dHcm91cHNBY2Nlc3NTZXR0aW5nc1xuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBlbnZzTG9nR3JvdXBzQWNjZXNzU2V0dGluZ3MgPSBuZXcgTWFwPHN0cmluZywgTG9nR3JvdXBzQWNjZXNzU2V0dGluZ3M+KCk7XG5cbiAgLyoqXG4gICAqIEFmdGVyIHJlYWRpbmcgZXZlbnRzIGZyb20gYWxsIENsb3VkV2F0Y2ggbG9nIGdyb3Vwc1xuICAgKiBob3cgbG9uZyBzaG91bGQgd2Ugd2FpdCB0byByZWFkIG1vcmUgZXZlbnRzLlxuICAgKlxuICAgKiBJZiB0aGVyZSBpcyBzb21lIGVycm9yIHdpdGggcmVhZGluZyBldmVudHMgKGkuZS4gVGhyb3R0bGUpXG4gICAqIHRoZW4gdGhpcyBpcyBhbHNvIGhvdyBsb25nIHdlIHdhaXQgdW50aWwgd2UgdHJ5IGFnYWluXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHBvbGxpbmdJbnRlcnZhbDogbnVtYmVyID0gMl8wMDA7XG5cbiAgcHVibGljIG1vbml0b3JJZD86IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBpb0hlbHBlcjogSW9IZWxwZXI7XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IENsb3VkV2F0Y2hMb2dFdmVudE1vbml0b3JQcm9wcykge1xuICAgIHRoaXMuc3RhcnRUaW1lID0gcHJvcHMuc3RhcnRUaW1lPy5nZXRUaW1lKCkgPz8gRGF0ZS5ub3coKTtcbiAgICB0aGlzLmlvSGVscGVyID0gcHJvcHMuaW9IZWxwZXI7XG4gIH1cblxuICAvKipcbiAgICogcmVzdW1lIHJlYWRpbmcvcHJpbnRpbmcgZXZlbnRzXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgYWN0aXZhdGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5tb25pdG9ySWQgPSB1dWlkLnY0KCk7XG5cbiAgICBhd2FpdCB0aGlzLmlvSGVscGVyLm5vdGlmeShJTy5DREtfVE9PTEtJVF9JNTAzMi5tc2coJ1N0YXJ0IG1vbml0b3JpbmcgbG9nIGdyb3VwcycsIHtcbiAgICAgIG1vbml0b3I6IHRoaXMubW9uaXRvcklkLFxuICAgICAgbG9nR3JvdXBOYW1lczogdGhpcy5sb2dHcm91cE5hbWVzKCksXG4gICAgfSkpO1xuXG4gICAgYXdhaXQgdGhpcy50aWNrKCk7XG4gICAgdGhpcy5zY2hlZHVsZU5leHRUaWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogZGVhY3RpdmF0ZXMgdGhlIG1vbml0b3Igc28gbm8gbmV3IGV2ZW50cyBhcmUgcmVhZFxuICAgKiB1c2UgY2FzZSBmb3IgdGhpcyBpcyB3aGVuIHdlIGFyZSBpbiB0aGUgbWlkZGxlIG9mIHBlcmZvcm1pbmcgYSBkZXBsb3ltZW50XG4gICAqIGFuZCBkb24ndCB3YW50IHRvIGludGVyd2VhdmUgYWxsIHRoZSBsb2dzIHRvZ2V0aGVyIHdpdGggdGhlIENGTlxuICAgKiBkZXBsb3ltZW50IGxvZ3NcbiAgICpcbiAgICogQWxzbyByZXNldHMgdGhlIHN0YXJ0IHRpbWUgdG8gYmUgd2hlbiB0aGUgbmV3IGRlcGxveW1lbnQgd2FzIHRyaWdnZXJlZFxuICAgKiBhbmQgY2xlYXJzIHRoZSBsaXN0IG9mIHRyYWNrZWQgbG9nIGdyb3Vwc1xuICAgKi9cbiAgcHVibGljIGFzeW5jIGRlYWN0aXZhdGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgb2xkTW9uaXRvcklkID0gdGhpcy5tb25pdG9ySWQhO1xuICAgIHRoaXMubW9uaXRvcklkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcblxuICAgIGF3YWl0IHRoaXMuaW9IZWxwZXIubm90aWZ5KElPLkNES19UT09MS0lUX0k1MDM0Lm1zZygnU3RvcHBlZCBtb25pdG9yaW5nIGxvZyBncm91cHMnLCB7XG4gICAgICBtb25pdG9yOiBvbGRNb25pdG9ySWQsXG4gICAgICBsb2dHcm91cE5hbWVzOiB0aGlzLmxvZ0dyb3VwTmFtZXMoKSxcbiAgICB9KSk7XG5cbiAgICB0aGlzLmVudnNMb2dHcm91cHNBY2Nlc3NTZXR0aW5ncy5jbGVhcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgQ2xvdWRXYXRjaCBsb2cgZ3JvdXBzIHRvIHJlYWQgbG9nIGV2ZW50cyBmcm9tLlxuICAgKiBTaW5jZSB3ZSBjb3VsZCBiZSB3YXRjaGluZyBtdWx0aXBsZSBzdGFja3MgdGhhdCBkZXBsb3kgdG9cbiAgICogbXVsdGlwbGUgZW52aXJvbm1lbnRzIChhY2NvdW50K3JlZ2lvbiksIHdlIG5lZWQgdG8gc3RvcmUgYSBsaXN0IG9mIGxvZyBncm91cHNcbiAgICogcGVyIGVudiBhbG9uZyB3aXRoIHRoZSBTREsgb2JqZWN0IHRoYXQgaGFzIGFjY2VzcyB0byByZWFkIGZyb21cbiAgICogdGhhdCBlbnZpcm9ubWVudC5cbiAgICovXG4gIHB1YmxpYyBhZGRMb2dHcm91cHMoZW52OiBjeGFwaS5FbnZpcm9ubWVudCwgc2RrOiBTREssIGxvZ0dyb3VwTmFtZXM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgY29uc3QgYXdzRW52ID0gYCR7ZW52LmFjY291bnR9OiR7ZW52LnJlZ2lvbn1gO1xuICAgIGNvbnN0IGxvZ0dyb3Vwc1N0YXJ0VGltZXMgPSBsb2dHcm91cE5hbWVzLnJlZHVjZShcbiAgICAgIChhY2MsIGdyb3VwTmFtZSkgPT4ge1xuICAgICAgICBhY2NbZ3JvdXBOYW1lXSA9IHRoaXMuc3RhcnRUaW1lO1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSxcbiAgICAgIHt9IGFzIHsgW2xvZ0dyb3VwTmFtZTogc3RyaW5nXTogbnVtYmVyIH0sXG4gICAgKTtcbiAgICB0aGlzLmVudnNMb2dHcm91cHNBY2Nlc3NTZXR0aW5ncy5zZXQoYXdzRW52LCB7XG4gICAgICBzZGssXG4gICAgICBsb2dHcm91cHNTdGFydFRpbWVzOiB7XG4gICAgICAgIC4uLnRoaXMuZW52c0xvZ0dyb3Vwc0FjY2Vzc1NldHRpbmdzLmdldChhd3NFbnYpPy5sb2dHcm91cHNTdGFydFRpbWVzLFxuICAgICAgICAuLi5sb2dHcm91cHNTdGFydFRpbWVzLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbG9nR3JvdXBOYW1lcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5lbnZzTG9nR3JvdXBzQWNjZXNzU2V0dGluZ3MudmFsdWVzKCkpLmZsYXRNYXAoKHNldHRpbmdzKSA9PiBPYmplY3Qua2V5cyhzZXR0aW5ncy5sb2dHcm91cHNTdGFydFRpbWVzKSk7XG4gIH1cblxuICBwcml2YXRlIHNjaGVkdWxlTmV4dFRpY2soKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm1vbml0b3JJZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLnRpY2soKSwgdGhpcy5wb2xsaW5nSW50ZXJ2YWwpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB0aWNrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIGV4Y2x1ZGluZyBmcm9tIGNvZGVjb3ZlcmFnZSBiZWNhdXNlIHRoaXNcbiAgICAvLyBkb2Vzbid0IGFsd2F5cyBydW4gKGRlcGVuZHMgb24gdGltaW5nKVxuICAgIC8qIGM4IGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKCF0aGlzLm1vbml0b3JJZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBldmVudHMgPSBmbGF0dGVuKGF3YWl0IHRoaXMucmVhZE5ld0V2ZW50cygpKTtcbiAgICAgIGZvciAoY29uc3QgZXZlbnQgb2YgZXZlbnRzKSB7XG4gICAgICAgIGF3YWl0IHRoaXMucHJpbnQoZXZlbnQpO1xuICAgICAgfVxuXG4gICAgICAvLyBXZSBtaWdodCBoYXZlIGJlZW4gc3RvcCgpcGVkIHdoaWxlIHRoZSBuZXR3b3JrIGNhbGwgd2FzIGluIHByb2dyZXNzLlxuICAgICAgaWYgKCF0aGlzLm1vbml0b3JJZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICBhd2FpdCB0aGlzLmlvSGVscGVyLm5vdGlmeShJTy5DREtfVE9PTEtJVF9FNTAzNS5tc2coJ0Vycm9yIG9jY3VycmVkIHdoaWxlIG1vbml0b3JpbmcgbG9nczogJXMnLCB7IGVycm9yOiBlIH0pKTtcbiAgICB9XG5cbiAgICB0aGlzLnNjaGVkdWxlTmV4dFRpY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkcyBhbGwgbmV3IGxvZyBldmVudHMgZnJvbSBhIHNldCBvZiBDbG91ZFdhdGNoIExvZyBHcm91cHNcbiAgICogaW4gcGFyYWxsZWxcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgcmVhZE5ld0V2ZW50cygpOiBQcm9taXNlPEFycmF5PEFycmF5PENsb3VkV2F0Y2hMb2dFdmVudD4+PiB7XG4gICAgY29uc3QgcHJvbWlzZXM6IEFycmF5PFByb21pc2U8QXJyYXk8Q2xvdWRXYXRjaExvZ0V2ZW50Pj4+ID0gW107XG4gICAgZm9yIChjb25zdCBzZXR0aW5ncyBvZiB0aGlzLmVudnNMb2dHcm91cHNBY2Nlc3NTZXR0aW5ncy52YWx1ZXMoKSkge1xuICAgICAgZm9yIChjb25zdCBncm91cCBvZiBPYmplY3Qua2V5cyhzZXR0aW5ncy5sb2dHcm91cHNTdGFydFRpbWVzKSkge1xuICAgICAgICBwcm9taXNlcy5wdXNoKHRoaXMucmVhZEV2ZW50c0Zyb21Mb2dHcm91cChzZXR0aW5ncywgZ3JvdXApKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gTGltaXRlZCBzZXQgb2YgbG9nIGdyb3Vwc1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAY2RrbGFicy9wcm9taXNlYWxsLW5vLXVuYm91bmRlZC1wYXJhbGxlbGlzbVxuICAgIHJldHVybiBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gIH1cblxuICAvKipcbiAgICogUHJpbnQgb3V0IGEgY2xvdWR3YXRjaCBldmVudFxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBwcmludChldmVudDogQ2xvdWRXYXRjaExvZ0V2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5pb0hlbHBlci5ub3RpZnkoSU8uQ0RLX1RPT0xLSVRfSTUwMzMubXNnKFxuICAgICAgdXRpbC5mb3JtYXQoXG4gICAgICAgICdbJXNdICVzICVzJyxcbiAgICAgICAgY2hhbGsuYmx1ZShldmVudC5sb2dHcm91cE5hbWUpLFxuICAgICAgICBjaGFsay55ZWxsb3coZXZlbnQudGltZXN0YW1wLnRvTG9jYWxlVGltZVN0cmluZygpKSxcbiAgICAgICAgZXZlbnQubWVzc2FnZS50cmltKCksXG4gICAgICApLFxuICAgICAgZXZlbnQsXG4gICAgKSk7XG4gIH1cblxuICAvKipcbiAgICogUmVhZHMgYWxsIG5ldyBsb2cgZXZlbnRzIGZyb20gYSBDbG91ZFdhdGNoIExvZyBHcm91cFxuICAgKiBzdGFydGluZyBhdCBlaXRoZXIgdGhlIHRpbWUgdGhlIGhvdHN3YXAgd2FzIHRyaWdnZXJlZCBvclxuICAgKiB3aGVuIHRoZSBsYXN0IGV2ZW50IHdhcyByZWFkIG9uIHRoZSBwcmV2aW91cyB0aWNrXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHJlYWRFdmVudHNGcm9tTG9nR3JvdXAoXG4gICAgbG9nR3JvdXBzQWNjZXNzU2V0dGluZ3M6IExvZ0dyb3Vwc0FjY2Vzc1NldHRpbmdzLFxuICAgIGxvZ0dyb3VwTmFtZTogc3RyaW5nLFxuICApOiBQcm9taXNlPEFycmF5PENsb3VkV2F0Y2hMb2dFdmVudD4+IHtcbiAgICBjb25zdCBldmVudHM6IENsb3VkV2F0Y2hMb2dFdmVudFtdID0gW107XG5cbiAgICAvLyBsb2cgZXZlbnRzIGZyb20gc29tZSBzZXJ2aWNlIGFyZSBpbmdlc3RlZCBmYXN0ZXIgdGhhbiBvdGhlcnNcbiAgICAvLyBzbyB3ZSBuZWVkIHRvIHRyYWNrIHRoZSBzdGFydC9lbmQgdGltZSBmb3IgZWFjaCBsb2cgZ3JvdXAgaW5kaXZpZHVhbGx5XG4gICAgLy8gdG8gbWFrZSBzdXJlIHRoYXQgd2UgcHJvY2VzcyBhbGwgZXZlbnRzIGZyb20gZWFjaCBsb2cgZ3JvdXBcbiAgICBjb25zdCBzdGFydFRpbWUgPSBsb2dHcm91cHNBY2Nlc3NTZXR0aW5ncy5sb2dHcm91cHNTdGFydFRpbWVzW2xvZ0dyb3VwTmFtZV0gPz8gdGhpcy5zdGFydFRpbWU7XG4gICAgbGV0IGVuZFRpbWUgPSBzdGFydFRpbWU7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgbG9nR3JvdXBzQWNjZXNzU2V0dGluZ3Muc2RrLmNsb3VkV2F0Y2hMb2dzKCkuZmlsdGVyTG9nRXZlbnRzKHtcbiAgICAgICAgbG9nR3JvdXBOYW1lOiBsb2dHcm91cE5hbWUsXG4gICAgICAgIGxpbWl0OiAxMDAsXG4gICAgICAgIHN0YXJ0VGltZTogc3RhcnRUaW1lLFxuICAgICAgfSk7XG4gICAgICBjb25zdCBmaWx0ZXJlZEV2ZW50cyA9IHJlc3BvbnNlLmV2ZW50cyA/PyBbXTtcblxuICAgICAgZm9yIChjb25zdCBldmVudCBvZiBmaWx0ZXJlZEV2ZW50cykge1xuICAgICAgICBpZiAoZXZlbnQubWVzc2FnZSkge1xuICAgICAgICAgIGV2ZW50cy5wdXNoKHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IGV2ZW50Lm1lc3NhZ2UsXG4gICAgICAgICAgICBsb2dHcm91cE5hbWUsXG4gICAgICAgICAgICB0aW1lc3RhbXA6IGV2ZW50LnRpbWVzdGFtcCA/IG5ldyBEYXRlKGV2ZW50LnRpbWVzdGFtcCkgOiBuZXcgRGF0ZSgpLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKGV2ZW50LnRpbWVzdGFtcCAmJiBlbmRUaW1lIDwgZXZlbnQudGltZXN0YW1wKSB7XG4gICAgICAgICAgICBlbmRUaW1lID0gZXZlbnQudGltZXN0YW1wO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gQXMgbG9uZyBhcyB0aGVyZSBhcmUgX2FueV8gZXZlbnRzIGluIHRoZSBsb2cgZ3JvdXAgYGZpbHRlckxvZ0V2ZW50c2Agd2lsbCByZXR1cm4gYSBuZXh0VG9rZW4uXG4gICAgICAvLyBUaGlzIGlzIHRydWUgZXZlbiBpZiB0aGVzZSBldmVudHMgYXJlIGJlZm9yZSBgc3RhcnRUaW1lYC4gU28gaWYgd2UgaGF2ZSAxMDAgZXZlbnRzIGFuZCBhIG5leHRUb2tlblxuICAgICAgLy8gdGhlbiBhc3N1bWUgdGhhdCB3ZSBoYXZlIGhpdCB0aGUgbGltaXQgYW5kIGxldCB0aGUgdXNlciBrbm93IHNvbWUgbWVzc2FnZXMgaGF2ZSBiZWVuIHN1cHByZXNzZWQuXG4gICAgICAvLyBXZSBhcmUgZXNzZW50aWFsbHkgc2hvd2luZyB0aGVtIGEgc2FtcGxpbmcgKDEwMDAwIGV2ZW50cyBwcmludGVkIG91dCBpcyBub3QgdmVyeSB1c2VmdWwpXG4gICAgICBpZiAoZmlsdGVyZWRFdmVudHMubGVuZ3RoID09PSAxMDAgJiYgcmVzcG9uc2UubmV4dFRva2VuKSB7XG4gICAgICAgIGV2ZW50cy5wdXNoKHtcbiAgICAgICAgICBtZXNzYWdlOiAnPj4+IGB3YXRjaGAgc2hvd3Mgb25seSB0aGUgZmlyc3QgMTAwIGxvZyBtZXNzYWdlcyAtIHRoZSByZXN0IGhhdmUgYmVlbiB0cnVuY2F0ZWQuLi4nLFxuICAgICAgICAgIGxvZ0dyb3VwTmFtZSxcbiAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKGVuZFRpbWUpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIC8vIHdpdGggTGFtYmRhIGZ1bmN0aW9ucyB0aGUgQ2xvdWRXYXRjaCBpcyBub3QgY3JlYXRlZFxuICAgICAgLy8gdW50aWwgc29tZXRoaW5nIGlzIGxvZ2dlZCwgc28ganVzdCBrZWVwIHBvbGxpbmcgdW50aWxcbiAgICAgIC8vIHRoZXJlIGlzIHNvbXRoaW5nIHRvIGZpbmRcbiAgICAgIGlmIChlLm5hbWUgPT09ICdSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uJykge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgICBsb2dHcm91cHNBY2Nlc3NTZXR0aW5ncy5sb2dHcm91cHNTdGFydFRpbWVzW2xvZ0dyb3VwTmFtZV0gPSBlbmRUaW1lICsgMTtcbiAgICByZXR1cm4gZXZlbnRzO1xuICB9XG59XG4iXX0=
@@ -1,6 +0,0 @@
1
- export interface ContextProviderPlugin {
2
- getValue(args: {
3
- [key: string]: any;
4
- }): Promise<any>;
5
- }
6
- export declare function isContextProviderPlugin(x: unknown): x is ContextProviderPlugin;
@@ -1,7 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isContextProviderPlugin = isContextProviderPlugin;
4
- function isContextProviderPlugin(x) {
5
- return typeof x === 'object' && !!x && !!x.getValue;
6
- }
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1wcm92aWRlci1wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjb250ZXh0LXByb3ZpZGVyLXBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUlBLDBEQUVDO0FBRkQsU0FBZ0IsdUJBQXVCLENBQUMsQ0FBVTtJQUNoRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBRSxDQUFTLENBQUMsUUFBUSxDQUFDO0FBQy9ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIENvbnRleHRQcm92aWRlclBsdWdpbiB7XG4gIGdldFZhbHVlKGFyZ3M6IHtba2V5OiBzdHJpbmddOiBhbnl9KTogUHJvbWlzZTxhbnk+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNDb250ZXh0UHJvdmlkZXJQbHVnaW4oeDogdW5rbm93bik6IHggaXMgQ29udGV4dFByb3ZpZGVyUGx1Z2luIHtcbiAgcmV0dXJuIHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiAhIXggJiYgISEoeCBhcyBhbnkpLmdldFZhbHVlO1xufVxuIl19
@@ -1,3 +0,0 @@
1
- export * from './plugin';
2
- export * from './mode';
3
- export * from './context-provider-plugin';
@@ -1,20 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./plugin"), exports);
18
- __exportStar(require("./mode"), exports);
19
- __exportStar(require("./context-provider-plugin"), exports);
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQXlCO0FBQ3pCLHlDQUF1QjtBQUN2Qiw0REFBMEMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3BsdWdpbic7XG5leHBvcnQgKiBmcm9tICcuL21vZGUnO1xuZXhwb3J0ICogZnJvbSAnLi9jb250ZXh0LXByb3ZpZGVyLXBsdWdpbic7XG4iXX0=
@@ -1,4 +0,0 @@
1
- export declare enum Mode {
2
- ForReading,
3
- ForWriting
4
- }
@@ -1,9 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Mode = void 0;
4
- var Mode;
5
- (function (Mode) {
6
- Mode[Mode["ForReading"] = 0] = "ForReading";
7
- Mode[Mode["ForWriting"] = 1] = "ForWriting";
8
- })(Mode || (exports.Mode = Mode = {}));
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm1vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsSUFBWSxJQUdYO0FBSEQsV0FBWSxJQUFJO0lBQ2QsMEJBQWEsQ0FBNEIsZ0JBQUEsQ0FBQTtJQUN6QywwQkFBYSxDQUE0QixnQkFBQSxDQUFBO0FBQzNDLENBQUMsRUFIVyxJQUFJLG9CQUFKLElBQUksUUFHZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRm9yUmVhZGluZyBhcyBQbHVnaW5Gb3JSZWFkaW5nLCBGb3JXcml0aW5nIGFzIFBsdWdpbkZvcldyaXRpbmcgfSBmcm9tICdAYXdzLWNkay9jbGktcGx1Z2luLWNvbnRyYWN0JztcblxuZXhwb3J0IGVudW0gTW9kZSB7XG4gIEZvclJlYWRpbmcgPSAwIHNhdGlzZmllcyBQbHVnaW5Gb3JSZWFkaW5nLFxuICBGb3JXcml0aW5nID0gMSBzYXRpc2ZpZXMgUGx1Z2luRm9yV3JpdGluZyxcbn1cbiJdfQ==
@@ -1,63 +0,0 @@
1
- import type { CredentialProviderSource, IPluginHost } from '@aws-cdk/cli-plugin-contract';
2
- import { type ContextProviderPlugin } from './context-provider-plugin';
3
- export declare let TESTING: boolean;
4
- export declare function markTesting(): void;
5
- /**
6
- * A utility to manage plug-ins.
7
- *
8
- */
9
- export declare class PluginHost implements IPluginHost {
10
- static instance: PluginHost;
11
- /**
12
- * Access the currently registered CredentialProviderSources. New sources can
13
- * be registered using the +registerCredentialProviderSource+ method.
14
- */
15
- readonly credentialProviderSources: CredentialProviderSource[];
16
- readonly contextProviderPlugins: Record<string, ContextProviderPlugin>;
17
- constructor();
18
- /**
19
- * Loads a plug-in into this PluginHost.
20
- *
21
- * @param moduleSpec the specification (path or name) of the plug-in module to be loaded.
22
- */
23
- load(moduleSpec: string): void;
24
- /**
25
- * Allows plug-ins to register new CredentialProviderSources.
26
- *
27
- * @param source a new CredentialProviderSource to register.
28
- */
29
- registerCredentialProviderSource(source: CredentialProviderSource): void;
30
- /**
31
- * (EXPERIMENTAL) Allow plugins to register context providers
32
- *
33
- * Context providers are objects with the following method:
34
- *
35
- * ```ts
36
- * getValue(args: {[key: string]: any}): Promise<any>;
37
- * ```
38
- *
39
- * Currently, they cannot reuse the CDK's authentication mechanisms, so they
40
- * must be prepared to either not make AWS calls or use their own source of
41
- * AWS credentials.
42
- *
43
- * This feature is experimental, and only intended to be used internally at Amazon
44
- * as a trial.
45
- *
46
- * After registering with 'my-plugin-name', the provider must be addressed as follows:
47
- *
48
- * ```ts
49
- * const value = ContextProvider.getValue(this, {
50
- * providerName: 'plugin',
51
- * props: {
52
- * pluginName: 'my-plugin-name',
53
- * myParameter1: 'xyz',
54
- * },
55
- * includeEnvironment: true | false,
56
- * dummyValue: 'what-to-return-on-the-first-pass',
57
- * })
58
- * ```
59
- *
60
- * @experimental
61
- */
62
- registerContextProviderAlpha(pluginProviderName: string, provider: ContextProviderPlugin): void;
63
- }