@bitblit/ratchet-aws 4.0.420-alpha → 4.0.421-alpha

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 (303) hide show
  1. package/lib/batch/aws-batch-background-processor.d.ts +8 -0
  2. package/lib/batch/aws-batch-background-processor.js +46 -0
  3. package/lib/batch/aws-batch-background-processor.js.map +1 -0
  4. package/lib/batch/aws-batch-ratchet.d.ts +13 -0
  5. package/lib/batch/aws-batch-ratchet.js +56 -0
  6. package/lib/batch/aws-batch-ratchet.js.map +1 -0
  7. package/lib/batch/index.d.ts +2 -0
  8. package/lib/batch/index.js +3 -0
  9. package/lib/batch/index.js.map +1 -0
  10. package/lib/build/index.d.ts +1 -0
  11. package/lib/build/index.js +2 -0
  12. package/lib/build/index.js.map +1 -0
  13. package/lib/build/ratchet-aws-info.d.ts +5 -0
  14. package/lib/build/ratchet-aws-info.js +15 -0
  15. package/lib/build/ratchet-aws-info.js.map +1 -0
  16. package/lib/cache/index.d.ts +5 -0
  17. package/lib/cache/index.js +6 -0
  18. package/lib/cache/index.js.map +1 -0
  19. package/lib/cache/memory-storage-provider.d.ts +10 -0
  20. package/lib/cache/memory-storage-provider.js +28 -0
  21. package/lib/cache/memory-storage-provider.js.map +1 -0
  22. package/lib/cache/simple-cache-object-wrapper.d.ts +7 -0
  23. package/lib/cache/simple-cache-object-wrapper.js +2 -0
  24. package/lib/cache/simple-cache-object-wrapper.js.map +1 -0
  25. package/lib/cache/simple-cache-read-options.d.ts +5 -0
  26. package/lib/cache/simple-cache-read-options.js +2 -0
  27. package/lib/cache/simple-cache-read-options.js.map +1 -0
  28. package/lib/cache/simple-cache-storage-provider.d.ts +8 -0
  29. package/lib/cache/simple-cache-storage-provider.js +2 -0
  30. package/lib/cache/simple-cache-storage-provider.js.map +1 -0
  31. package/lib/cache/simple-cache.d.ts +14 -0
  32. package/lib/cache/simple-cache.js +65 -0
  33. package/lib/cache/simple-cache.js.map +1 -0
  34. package/lib/cloudwatch/cloud-watch-log-group-ratchet.d.ts +10 -0
  35. package/lib/cloudwatch/cloud-watch-log-group-ratchet.js +75 -0
  36. package/lib/cloudwatch/cloud-watch-log-group-ratchet.js.map +1 -0
  37. package/lib/cloudwatch/cloud-watch-logs-ratchet.d.ts +15 -0
  38. package/lib/cloudwatch/cloud-watch-logs-ratchet.js +174 -0
  39. package/lib/cloudwatch/cloud-watch-logs-ratchet.js.map +1 -0
  40. package/lib/cloudwatch/cloud-watch-metrics-ratchet.d.ts +10 -0
  41. package/lib/cloudwatch/cloud-watch-metrics-ratchet.js +57 -0
  42. package/lib/cloudwatch/cloud-watch-metrics-ratchet.js.map +1 -0
  43. package/lib/cloudwatch/index.d.ts +3 -0
  44. package/lib/cloudwatch/index.js +4 -0
  45. package/lib/cloudwatch/index.js.map +1 -0
  46. package/lib/daemon/daemon-like.d.ts +16 -0
  47. package/lib/daemon/daemon-like.js +2 -0
  48. package/lib/daemon/daemon-like.js.map +1 -0
  49. package/lib/daemon/daemon-process-create-options.d.ts +7 -0
  50. package/lib/daemon/daemon-process-create-options.js +2 -0
  51. package/lib/daemon/daemon-process-create-options.js.map +1 -0
  52. package/lib/daemon/daemon-process-state-public-token.d.ts +4 -0
  53. package/lib/daemon/daemon-process-state-public-token.js +2 -0
  54. package/lib/daemon/daemon-process-state-public-token.js.map +1 -0
  55. package/lib/daemon/daemon-process-state.d.ts +13 -0
  56. package/lib/daemon/daemon-process-state.js +2 -0
  57. package/lib/daemon/daemon-process-state.js.map +1 -0
  58. package/lib/daemon/daemon-stream-data-options.d.ts +5 -0
  59. package/lib/daemon/daemon-stream-data-options.js +2 -0
  60. package/lib/daemon/daemon-stream-data-options.js.map +1 -0
  61. package/lib/daemon/daemon-util.d.ts +17 -0
  62. package/lib/daemon/daemon-util.js +154 -0
  63. package/lib/daemon/daemon-util.js.map +1 -0
  64. package/lib/daemon/daemon.d.ts +32 -0
  65. package/lib/daemon/daemon.js +129 -0
  66. package/lib/daemon/daemon.js.map +1 -0
  67. package/lib/daemon/index.d.ts +7 -0
  68. package/lib/daemon/index.js +8 -0
  69. package/lib/daemon/index.js.map +1 -0
  70. package/lib/dao/example-prototype-dao-item.d.ts +8 -0
  71. package/lib/dao/example-prototype-dao-item.js +2 -0
  72. package/lib/dao/example-prototype-dao-item.js.map +1 -0
  73. package/lib/dao/index.d.ts +8 -0
  74. package/lib/dao/index.js +9 -0
  75. package/lib/dao/index.js.map +1 -0
  76. package/lib/dao/memory-prototype-dao-provider.d.ts +7 -0
  77. package/lib/dao/memory-prototype-dao-provider.js +11 -0
  78. package/lib/dao/memory-prototype-dao-provider.js.map +1 -0
  79. package/lib/dao/prototype-dao-config.d.ts +8 -0
  80. package/lib/dao/prototype-dao-config.js +2 -0
  81. package/lib/dao/prototype-dao-config.js.map +1 -0
  82. package/lib/dao/prototype-dao-db.d.ts +4 -0
  83. package/lib/dao/prototype-dao-db.js +2 -0
  84. package/lib/dao/prototype-dao-db.js.map +1 -0
  85. package/lib/dao/prototype-dao-provider.d.ts +5 -0
  86. package/lib/dao/prototype-dao-provider.js +2 -0
  87. package/lib/dao/prototype-dao-provider.js.map +1 -0
  88. package/lib/dao/prototype-dao.d.ts +15 -0
  89. package/lib/dao/prototype-dao.js +89 -0
  90. package/lib/dao/prototype-dao.js.map +1 -0
  91. package/lib/dao/s3-simple-dao.d.ts +15 -0
  92. package/lib/dao/s3-simple-dao.js +77 -0
  93. package/lib/dao/s3-simple-dao.js.map +1 -0
  94. package/lib/dao/simple-dao-item.d.ts +5 -0
  95. package/lib/dao/simple-dao-item.js +2 -0
  96. package/lib/dao/simple-dao-item.js.map +1 -0
  97. package/lib/dynamodb/dynamo-ratchet-like.d.ts +25 -0
  98. package/lib/dynamodb/dynamo-ratchet-like.js +2 -0
  99. package/lib/dynamodb/dynamo-ratchet-like.js.map +1 -0
  100. package/lib/dynamodb/dynamo-ratchet.d.ts +34 -0
  101. package/lib/dynamodb/dynamo-ratchet.js +671 -0
  102. package/lib/dynamodb/dynamo-ratchet.js.map +1 -0
  103. package/lib/dynamodb/dynamo-table-ratchet.d.ts +13 -0
  104. package/lib/dynamodb/dynamo-table-ratchet.js +140 -0
  105. package/lib/dynamodb/dynamo-table-ratchet.js.map +1 -0
  106. package/lib/dynamodb/hash-spreader.d.ts +15 -0
  107. package/lib/dynamodb/hash-spreader.js +66 -0
  108. package/lib/dynamodb/hash-spreader.js.map +1 -0
  109. package/lib/dynamodb/impl/dynamo-db-storage-provider.d.ts +25 -0
  110. package/lib/dynamodb/impl/dynamo-db-storage-provider.js +110 -0
  111. package/lib/dynamodb/impl/dynamo-db-storage-provider.js.map +1 -0
  112. package/lib/dynamodb/impl/dynamo-db-sync-lock.d.ts +10 -0
  113. package/lib/dynamodb/impl/dynamo-db-sync-lock.js +71 -0
  114. package/lib/dynamodb/impl/dynamo-db-sync-lock.js.map +1 -0
  115. package/lib/dynamodb/impl/dynamo-expiring-code-provider.d.ts +12 -0
  116. package/lib/dynamodb/impl/dynamo-expiring-code-provider.js +25 -0
  117. package/lib/dynamodb/impl/dynamo-expiring-code-provider.js.map +1 -0
  118. package/lib/dynamodb/impl/dynamo-runtime-parameter-provider.d.ts +11 -0
  119. package/lib/dynamodb/impl/dynamo-runtime-parameter-provider.js +37 -0
  120. package/lib/dynamodb/impl/dynamo-runtime-parameter-provider.js.map +1 -0
  121. package/lib/dynamodb/index.d.ts +8 -0
  122. package/lib/dynamodb/index.js +9 -0
  123. package/lib/dynamodb/index.js.map +1 -0
  124. package/lib/ec2/ec2-ratchet.d.ts +16 -0
  125. package/lib/ec2/ec2-ratchet.js +114 -0
  126. package/lib/ec2/ec2-ratchet.js.map +1 -0
  127. package/lib/ec2/index.d.ts +1 -0
  128. package/lib/ec2/index.js +2 -0
  129. package/lib/ec2/index.js.map +1 -0
  130. package/lib/ecr/ecr-unused-image-cleaner-options.d.ts +7 -0
  131. package/lib/ecr/ecr-unused-image-cleaner-options.js +2 -0
  132. package/lib/ecr/ecr-unused-image-cleaner-options.js.map +1 -0
  133. package/lib/ecr/ecr-unused-image-cleaner-output.d.ts +7 -0
  134. package/lib/ecr/ecr-unused-image-cleaner-output.js +2 -0
  135. package/lib/ecr/ecr-unused-image-cleaner-output.js.map +1 -0
  136. package/lib/ecr/ecr-unused-image-cleaner-repository-output.d.ts +8 -0
  137. package/lib/ecr/ecr-unused-image-cleaner-repository-output.js +2 -0
  138. package/lib/ecr/ecr-unused-image-cleaner-repository-output.js.map +1 -0
  139. package/lib/ecr/ecr-unused-image-cleaner.d.ts +18 -0
  140. package/lib/ecr/ecr-unused-image-cleaner.js +136 -0
  141. package/lib/ecr/ecr-unused-image-cleaner.js.map +1 -0
  142. package/lib/ecr/index.d.ts +9 -0
  143. package/lib/ecr/index.js +10 -0
  144. package/lib/ecr/index.js.map +1 -0
  145. package/lib/ecr/retained-image-descriptor.d.ts +6 -0
  146. package/lib/ecr/retained-image-descriptor.js +2 -0
  147. package/lib/ecr/retained-image-descriptor.js.map +1 -0
  148. package/lib/ecr/retained-image-reason.d.ts +4 -0
  149. package/lib/ecr/retained-image-reason.js +6 -0
  150. package/lib/ecr/retained-image-reason.js.map +1 -0
  151. package/lib/ecr/used-image-finder.d.ts +3 -0
  152. package/lib/ecr/used-image-finder.js +2 -0
  153. package/lib/ecr/used-image-finder.js.map +1 -0
  154. package/lib/ecr/used-image-finders/aws-batch-used-image-finder.d.ts +8 -0
  155. package/lib/ecr/used-image-finders/aws-batch-used-image-finder.js +32 -0
  156. package/lib/ecr/used-image-finders/aws-batch-used-image-finder.js.map +1 -0
  157. package/lib/ecr/used-image-finders/lambda-used-image-finder.d.ts +8 -0
  158. package/lib/ecr/used-image-finders/lambda-used-image-finder.js +40 -0
  159. package/lib/ecr/used-image-finders/lambda-used-image-finder.js.map +1 -0
  160. package/lib/environment/cascade-environment-service-provider.d.ts +6 -0
  161. package/lib/environment/cascade-environment-service-provider.js +25 -0
  162. package/lib/environment/cascade-environment-service-provider.js.map +1 -0
  163. package/lib/environment/env-var-environment-service-provider.d.ts +6 -0
  164. package/lib/environment/env-var-environment-service-provider.js +31 -0
  165. package/lib/environment/env-var-environment-service-provider.js.map +1 -0
  166. package/lib/environment/environment-service-config.d.ts +4 -0
  167. package/lib/environment/environment-service-config.js +2 -0
  168. package/lib/environment/environment-service-config.js.map +1 -0
  169. package/lib/environment/environment-service-provider.d.ts +3 -0
  170. package/lib/environment/environment-service-provider.js +2 -0
  171. package/lib/environment/environment-service-provider.js.map +1 -0
  172. package/lib/environment/environment-service.d.ts +11 -0
  173. package/lib/environment/environment-service.js +51 -0
  174. package/lib/environment/environment-service.js.map +1 -0
  175. package/lib/environment/fixed-environment-service-provider.d.ts +7 -0
  176. package/lib/environment/fixed-environment-service-provider.js +22 -0
  177. package/lib/environment/fixed-environment-service-provider.js.map +1 -0
  178. package/lib/environment/index.d.ts +7 -0
  179. package/lib/environment/index.js +8 -0
  180. package/lib/environment/index.js.map +1 -0
  181. package/lib/environment/ssm-environment-service-provider.d.ts +8 -0
  182. package/lib/environment/ssm-environment-service-provider.js +59 -0
  183. package/lib/environment/ssm-environment-service-provider.js.map +1 -0
  184. package/lib/expiring-code/expiring-code-params.d.ts +7 -0
  185. package/lib/expiring-code/expiring-code-params.js +2 -0
  186. package/lib/expiring-code/expiring-code-params.js.map +1 -0
  187. package/lib/expiring-code/expiring-code-provider.d.ts +5 -0
  188. package/lib/expiring-code/expiring-code-provider.js +2 -0
  189. package/lib/expiring-code/expiring-code-provider.js.map +1 -0
  190. package/lib/expiring-code/expiring-code-ratchet.d.ts +10 -0
  191. package/lib/expiring-code/expiring-code-ratchet.js +35 -0
  192. package/lib/expiring-code/expiring-code-ratchet.js.map +1 -0
  193. package/lib/expiring-code/expiring-code.d.ts +6 -0
  194. package/lib/expiring-code/expiring-code.js +2 -0
  195. package/lib/expiring-code/expiring-code.js.map +1 -0
  196. package/lib/expiring-code/index.d.ts +4 -0
  197. package/lib/expiring-code/index.js +5 -0
  198. package/lib/expiring-code/index.js.map +1 -0
  199. package/lib/iam/aws-credentials-ratchet.d.ts +4 -0
  200. package/lib/iam/aws-credentials-ratchet.js +19 -0
  201. package/lib/iam/aws-credentials-ratchet.js.map +1 -0
  202. package/lib/iam/index.d.ts +1 -0
  203. package/lib/iam/index.js +2 -0
  204. package/lib/iam/index.js.map +1 -0
  205. package/lib/lambda/index.d.ts +2 -0
  206. package/lib/lambda/index.js +3 -0
  207. package/lib/lambda/index.js.map +1 -0
  208. package/lib/lambda/lambda-event-detector.d.ts +15 -0
  209. package/lib/lambda/lambda-event-detector.js +42 -0
  210. package/lib/lambda/lambda-event-detector.js.map +1 -0
  211. package/lib/lambda/lambda-event-type-guards.d.ts +11 -0
  212. package/lib/lambda/lambda-event-type-guards.js +28 -0
  213. package/lib/lambda/lambda-event-type-guards.js.map +1 -0
  214. package/lib/model/cloud-watch-metrics-minute-level-dynamo-count-request.d.ts +12 -0
  215. package/lib/model/cloud-watch-metrics-minute-level-dynamo-count-request.js +2 -0
  216. package/lib/model/cloud-watch-metrics-minute-level-dynamo-count-request.js.map +1 -0
  217. package/lib/model/dynamo-count-result.d.ts +5 -0
  218. package/lib/model/dynamo-count-result.js +2 -0
  219. package/lib/model/dynamo-count-result.js.map +1 -0
  220. package/lib/model/index.d.ts +2 -0
  221. package/lib/model/index.js +3 -0
  222. package/lib/model/index.js.map +1 -0
  223. package/lib/route53/index.d.ts +1 -0
  224. package/lib/route53/index.js +2 -0
  225. package/lib/route53/index.js.map +1 -0
  226. package/lib/route53/route-53-ratchet.d.ts +8 -0
  227. package/lib/route53/route-53-ratchet.js +59 -0
  228. package/lib/route53/route-53-ratchet.js.map +1 -0
  229. package/lib/runtime-parameter/cached-stored-runtime-parameter.d.ts +4 -0
  230. package/lib/runtime-parameter/cached-stored-runtime-parameter.js +2 -0
  231. package/lib/runtime-parameter/cached-stored-runtime-parameter.js.map +1 -0
  232. package/lib/runtime-parameter/global-variable-override-runtime-parameter-provider.d.ts +17 -0
  233. package/lib/runtime-parameter/global-variable-override-runtime-parameter-provider.js +52 -0
  234. package/lib/runtime-parameter/global-variable-override-runtime-parameter-provider.js.map +1 -0
  235. package/lib/runtime-parameter/index.d.ts +6 -0
  236. package/lib/runtime-parameter/index.js +7 -0
  237. package/lib/runtime-parameter/index.js.map +1 -0
  238. package/lib/runtime-parameter/memory-runtime-parameter-provider.d.ts +10 -0
  239. package/lib/runtime-parameter/memory-runtime-parameter-provider.js +35 -0
  240. package/lib/runtime-parameter/memory-runtime-parameter-provider.js.map +1 -0
  241. package/lib/runtime-parameter/runtime-parameter-provider.d.ts +6 -0
  242. package/lib/runtime-parameter/runtime-parameter-provider.js +2 -0
  243. package/lib/runtime-parameter/runtime-parameter-provider.js.map +1 -0
  244. package/lib/runtime-parameter/runtime-parameter-ratchet.d.ts +15 -0
  245. package/lib/runtime-parameter/runtime-parameter-ratchet.js +72 -0
  246. package/lib/runtime-parameter/runtime-parameter-ratchet.js.map +1 -0
  247. package/lib/runtime-parameter/stored-runtime-parameter.d.ts +6 -0
  248. package/lib/runtime-parameter/stored-runtime-parameter.js +2 -0
  249. package/lib/runtime-parameter/stored-runtime-parameter.js.map +1 -0
  250. package/lib/s3/expanded-file-children.d.ts +5 -0
  251. package/lib/s3/expanded-file-children.js +2 -0
  252. package/lib/s3/expanded-file-children.js.map +1 -0
  253. package/lib/s3/impl/s3-environment-service-provider.d.ts +15 -0
  254. package/lib/s3/impl/s3-environment-service-provider.js +28 -0
  255. package/lib/s3/impl/s3-environment-service-provider.js.map +1 -0
  256. package/lib/s3/impl/s3-expiring-code-provider.d.ts +17 -0
  257. package/lib/s3/impl/s3-expiring-code-provider.js +49 -0
  258. package/lib/s3/impl/s3-expiring-code-provider.js.map +1 -0
  259. package/lib/s3/impl/s3-prototype-dao-provider.d.ts +10 -0
  260. package/lib/s3/impl/s3-prototype-dao-provider.js +27 -0
  261. package/lib/s3/impl/s3-prototype-dao-provider.js.map +1 -0
  262. package/lib/s3/impl/s3-storage-provider.d.ts +14 -0
  263. package/lib/s3/impl/s3-storage-provider.js +44 -0
  264. package/lib/s3/impl/s3-storage-provider.js.map +1 -0
  265. package/lib/s3/index.d.ts +9 -0
  266. package/lib/s3/index.js +10 -0
  267. package/lib/s3/index.js.map +1 -0
  268. package/lib/s3/s3-cache-ratchet-like.d.ts +25 -0
  269. package/lib/s3/s3-cache-ratchet-like.js +2 -0
  270. package/lib/s3/s3-cache-ratchet-like.js.map +1 -0
  271. package/lib/s3/s3-cache-ratchet.d.ts +35 -0
  272. package/lib/s3/s3-cache-ratchet.js +360 -0
  273. package/lib/s3/s3-cache-ratchet.js.map +1 -0
  274. package/lib/s3/s3-location-sync-ratchet.d.ts +21 -0
  275. package/lib/s3/s3-location-sync-ratchet.js +140 -0
  276. package/lib/s3/s3-location-sync-ratchet.js.map +1 -0
  277. package/lib/s3/s3-ratchet.d.ts +5 -0
  278. package/lib/s3/s3-ratchet.js +23 -0
  279. package/lib/s3/s3-ratchet.js.map +1 -0
  280. package/lib/ses/index.d.ts +1 -0
  281. package/lib/ses/index.js +2 -0
  282. package/lib/ses/index.js.map +1 -0
  283. package/lib/ses/ses-mail-sending-provider.d.ts +15 -0
  284. package/lib/ses/ses-mail-sending-provider.js +68 -0
  285. package/lib/ses/ses-mail-sending-provider.js.map +1 -0
  286. package/lib/sns/index.d.ts +1 -0
  287. package/lib/sns/index.js +2 -0
  288. package/lib/sns/index.js.map +1 -0
  289. package/lib/sns/sns-ratchet.d.ts +9 -0
  290. package/lib/sns/sns-ratchet.js +49 -0
  291. package/lib/sns/sns-ratchet.js.map +1 -0
  292. package/lib/sync-lock/index.d.ts +2 -0
  293. package/lib/sync-lock/index.js +3 -0
  294. package/lib/sync-lock/index.js.map +1 -0
  295. package/lib/sync-lock/memory-sync-lock.d.ts +8 -0
  296. package/lib/sync-lock/memory-sync-lock.js +36 -0
  297. package/lib/sync-lock/memory-sync-lock.js.map +1 -0
  298. package/lib/sync-lock/sync-lock-provider.d.ts +5 -0
  299. package/lib/sync-lock/sync-lock-provider.js +2 -0
  300. package/lib/sync-lock/sync-lock-provider.js.map +1 -0
  301. package/package.json +55 -56
  302. package/lib/index.mjs +0 -2
  303. package/lib/types.d.ts +0 -818
@@ -0,0 +1,174 @@
1
+ import { CloudWatchLogsClient, DeleteLogGroupCommand, DeleteLogStreamCommand, DescribeLogGroupsCommand, DescribeLogStreamsCommand, GetQueryResultsCommand, OrderBy, StartQueryCommand, StopQueryCommand, } from '@aws-sdk/client-cloudwatch-logs';
2
+ import { Logger } from '@bitblit/ratchet-common/logger/logger';
3
+ import { PromiseRatchet } from '@bitblit/ratchet-common/lang/promise-ratchet';
4
+ import { RequireRatchet } from '@bitblit/ratchet-common/lang/require-ratchet';
5
+ import { StringRatchet } from '@bitblit/ratchet-common/lang/string-ratchet';
6
+ export class CloudWatchLogsRatchet {
7
+ static MAX_DELETE_RETRIES = 5;
8
+ cwLogs;
9
+ constructor(cloudwatchLogs = null) {
10
+ this.cwLogs = cloudwatchLogs ? cloudwatchLogs : new CloudWatchLogsClient({ region: 'us-east-1' });
11
+ }
12
+ get cloudWatchLogsClient() {
13
+ return this.cwLogs;
14
+ }
15
+ async removeEmptyOrOldLogStreams(logGroupName, maxToRemove = 1000, oldestEventEpochMS = null) {
16
+ Logger.info('Removing empty streams from %s, oldest event epoch MS : %d', logGroupName, oldestEventEpochMS);
17
+ const streamSearchParams = {
18
+ logGroupName: logGroupName,
19
+ orderBy: OrderBy.LastEventTime,
20
+ };
21
+ const oldestEventTester = oldestEventEpochMS || 1;
22
+ let totalStreams = 0;
23
+ const removedStreams = [];
24
+ const failedRemovedStreams = [];
25
+ let waitPerDescribe = 10;
26
+ do {
27
+ Logger.debug('Executing search for streams');
28
+ try {
29
+ const streams = await this.cwLogs.send(new DescribeLogStreamsCommand(streamSearchParams));
30
+ totalStreams += streams.logStreams.length;
31
+ Logger.debug('Found %d streams (%d so far, %d to delete)', streams.logStreams.length, totalStreams, removedStreams.length);
32
+ for (let i = 0; i < streams.logStreams.length && removedStreams.length < maxToRemove; i++) {
33
+ const st = streams.logStreams[i];
34
+ if (!st.firstEventTimestamp) {
35
+ removedStreams.push(st);
36
+ }
37
+ else if (st.lastEventTimestamp < oldestEventTester) {
38
+ removedStreams.push(st);
39
+ }
40
+ }
41
+ streamSearchParams['nextToken'] = streams.nextToken;
42
+ }
43
+ catch (err) {
44
+ const oldWait = waitPerDescribe;
45
+ waitPerDescribe = Math.min(1000, waitPerDescribe * 1.5);
46
+ Logger.info('Caught while describing %s, increasing wait between deletes (was %d, now %d)', err, oldWait, waitPerDescribe);
47
+ }
48
+ } while (!!streamSearchParams['nextToken'] && removedStreams.length < maxToRemove);
49
+ Logger.info('Found %d streams to delete', removedStreams.length);
50
+ let waitPer = 10;
51
+ for (let i = 0; i < removedStreams.length; i++) {
52
+ const delParams = {
53
+ logGroupName: logGroupName,
54
+ logStreamName: removedStreams[i].logStreamName,
55
+ };
56
+ const type = removedStreams[i].storedBytes === 0 ? 'empty' : 'old';
57
+ Logger.info('Removing %s stream %s', type, removedStreams[i].logStreamName);
58
+ let removed = false;
59
+ let retry = 0;
60
+ while (!removed && retry < CloudWatchLogsRatchet.MAX_DELETE_RETRIES) {
61
+ try {
62
+ await this.cwLogs.send(new DeleteLogStreamCommand(delParams));
63
+ removed = true;
64
+ await PromiseRatchet.wait(waitPer);
65
+ }
66
+ catch (err) {
67
+ retry++;
68
+ const oldWait = waitPer;
69
+ waitPer = Math.min(1000, waitPer * 1.5);
70
+ Logger.info('Caught %s, increasing wait between deletes and retrying (wait was %d, now %d) (Retry %d of %d)', err, oldWait, waitPer, retry, CloudWatchLogsRatchet.MAX_DELETE_RETRIES);
71
+ }
72
+ }
73
+ if (!removed) {
74
+ failedRemovedStreams.push(removedStreams[i]);
75
+ }
76
+ }
77
+ Logger.warn('Failed to remove streams : %j', failedRemovedStreams);
78
+ return removedStreams;
79
+ }
80
+ async findOldestEventTimestampInGroup(logGroupName) {
81
+ const stream = await this.findStreamWithOldestEventInGroup(logGroupName);
82
+ return stream ? stream.firstEventTimestamp : null;
83
+ }
84
+ async findStreamWithOldestEventInGroup(logGroupName) {
85
+ Logger.info('Finding oldest event in : %s', logGroupName);
86
+ let rval = null;
87
+ try {
88
+ const streamSearchParams = {
89
+ logGroupName: logGroupName,
90
+ orderBy: OrderBy.LastEventTime,
91
+ };
92
+ let totalStreams = 0;
93
+ do {
94
+ Logger.debug('Executing search for streams');
95
+ const streams = await this.cwLogs.send(new DescribeLogStreamsCommand(streamSearchParams));
96
+ totalStreams += streams.logStreams.length;
97
+ Logger.debug('Found %d streams (%d so far)', streams.logStreams.length, totalStreams);
98
+ streams.logStreams.forEach((s) => {
99
+ if (s.firstEventTimestamp && (rval === null || s.firstEventTimestamp < rval.firstEventTimestamp)) {
100
+ rval = s;
101
+ }
102
+ });
103
+ streamSearchParams['nextToken'] = streams.nextToken;
104
+ } while (streamSearchParams['nextToken']);
105
+ }
106
+ catch (err) {
107
+ Logger.error('Error attempting to find oldest event in group : %s : %s', logGroupName, err, err);
108
+ }
109
+ return rval;
110
+ }
111
+ async findLogGroups(prefix) {
112
+ RequireRatchet.notNullOrUndefined(prefix);
113
+ const params = {
114
+ logGroupNamePrefix: prefix,
115
+ };
116
+ let rval = [];
117
+ do {
118
+ Logger.info('%d found, pulling log groups : %j', rval.length, params);
119
+ const res = await this.cwLogs.send(new DescribeLogGroupsCommand(params));
120
+ rval = rval.concat(res.logGroups);
121
+ params.nextToken = res.nextToken;
122
+ } while (params.nextToken);
123
+ return rval;
124
+ }
125
+ async removeLogGroups(groups) {
126
+ RequireRatchet.notNullOrUndefined(groups);
127
+ const rval = [];
128
+ for (let i = 0; i < groups.length; i++) {
129
+ try {
130
+ Logger.info('Deleting %j', groups[i]);
131
+ const req = {
132
+ logGroupName: groups[i].logGroupName,
133
+ };
134
+ await this.cwLogs.send(new DeleteLogGroupCommand(req));
135
+ rval.push(true);
136
+ }
137
+ catch (err) {
138
+ Logger.error('Failure to delete %j : %s', groups[i], err);
139
+ rval.push(false);
140
+ }
141
+ }
142
+ return rval;
143
+ }
144
+ async removeLogGroupsWithPrefix(prefix) {
145
+ RequireRatchet.notNullOrUndefined(prefix);
146
+ RequireRatchet.true(StringRatchet.trimToEmpty(prefix).length > 0);
147
+ Logger.info('Removing log groups with prefix %s', prefix);
148
+ const groups = await this.findLogGroups(prefix);
149
+ return await this.removeLogGroups(groups);
150
+ }
151
+ async fullyExecuteInsightsQuery(sqr) {
152
+ RequireRatchet.notNullOrUndefined(sqr);
153
+ Logger.debug('Starting insights query : %j', sqr);
154
+ const resp = await this.cwLogs.send(new StartQueryCommand(sqr));
155
+ Logger.debug('Got query id %j', resp);
156
+ let rval = null;
157
+ let delayMS = 100;
158
+ while (!rval || ['Running', 'Scheduled'].includes(rval.status)) {
159
+ rval = await this.cwLogs.send(new GetQueryResultsCommand({ queryId: resp.queryId }));
160
+ await PromiseRatchet.wait(delayMS);
161
+ delayMS *= 2;
162
+ Logger.info('Got : %j', rval);
163
+ }
164
+ return rval;
165
+ }
166
+ async abortInsightsQuery(queryId) {
167
+ let rval = null;
168
+ if (queryId) {
169
+ rval = await this.cwLogs.send(new StopQueryCommand({ queryId: queryId }));
170
+ }
171
+ return rval;
172
+ }
173
+ }
174
+ //# sourceMappingURL=cloud-watch-logs-ratchet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-watch-logs-ratchet.js","sourceRoot":"","sources":["../../src/cloudwatch/cloud-watch-logs-ratchet.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EAErB,sBAAsB,EACtB,wBAAwB,EAGxB,yBAAyB,EAEzB,sBAAsB,EAItB,OAAO,EACP,iBAAiB,EAGjB,gBAAgB,GAEjB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAE5E,MAAM,OAAO,qBAAqB;IACxB,MAAM,CAAU,kBAAkB,GAAG,CAAC,CAAC;IACvC,MAAM,CAAuB;IAErC,YAAY,iBAAuC,IAAI;QACrD,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,oBAAoB,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IACpG,CAAC;IAED,IAAW,oBAAoB;QAC7B,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAEM,KAAK,CAAC,0BAA0B,CACrC,YAAoB,EACpB,WAAW,GAAG,IAAI,EAClB,qBAA6B,IAAI;QAEjC,MAAM,CAAC,IAAI,CAAC,4DAA4D,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC;QAC5G,MAAM,kBAAkB,GAAQ;YAC9B,YAAY,EAAE,YAAY;YAC1B,OAAO,EAAE,OAAO,CAAC,aAAa;SAC/B,CAAC;QAEF,MAAM,iBAAiB,GAAW,kBAAkB,IAAI,CAAC,CAAC;QAC1D,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,MAAM,cAAc,GAAgB,EAAE,CAAC;QACvC,MAAM,oBAAoB,GAAgB,EAAE,CAAC;QAC7C,IAAI,eAAe,GAAG,EAAE,CAAC;QAEzB,GAAG,CAAC;YACF,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAC7C,IAAI,CAAC;gBACH,MAAM,OAAO,GAAoC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,yBAAyB,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBAC3H,YAAY,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC;gBAE1C,MAAM,CAAC,KAAK,CAAC,4CAA4C,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;gBAE3H,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,IAAI,cAAc,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC1F,MAAM,EAAE,GAAc,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;oBAC5C,IAAI,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC;wBAC5B,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC1B,CAAC;yBAAM,IAAI,EAAE,CAAC,kBAAkB,GAAG,iBAAiB,EAAE,CAAC;wBACrD,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC1B,CAAC;gBACH,CAAC;gBAED,kBAAkB,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;YACtD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,OAAO,GAAW,eAAe,CAAC;gBACxC,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,eAAe,GAAG,GAAG,CAAC,CAAC;gBACxD,MAAM,CAAC,IAAI,CAAC,8EAA8E,EAAE,GAAG,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;YAC7H,CAAC;QACH,CAAC,QAAQ,CAAC,CAAC,kBAAkB,CAAC,WAAW,CAAC,IAAI,cAAc,CAAC,MAAM,GAAG,WAAW,EAAE;QAEnF,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;QACjE,IAAI,OAAO,GAAG,EAAE,CAAC;QAEjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/C,MAAM,SAAS,GAAG;gBAChB,YAAY,EAAE,YAAY;gBAC1B,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,aAAa;aAC/C,CAAC;YAEF,MAAM,IAAI,GAAW,cAAc,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;YAC3E,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;YAC5E,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,OAAO,CAAC,OAAO,IAAI,KAAK,GAAG,qBAAqB,CAAC,kBAAkB,EAAE,CAAC;gBACpE,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC;oBAC9D,OAAO,GAAG,IAAI,CAAC;oBACf,MAAM,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACrC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,KAAK,EAAE,CAAC;oBACR,MAAM,OAAO,GAAW,OAAO,CAAC;oBAChC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,GAAG,GAAG,CAAC,CAAC;oBACxC,MAAM,CAAC,IAAI,CACT,gGAAgG,EAChG,GAAG,EACH,OAAO,EACP,OAAO,EACP,KAAK,EACL,qBAAqB,CAAC,kBAAkB,CACzC,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,IAAI,CAAC,OAAO,EAAE,CAAC;gBAEb,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,oBAAoB,CAAC,CAAC;QACnE,OAAO,cAAc,CAAC;IACxB,CAAC;IAEM,KAAK,CAAC,+BAA+B,CAAC,YAAoB;QAC/D,MAAM,MAAM,GAAc,MAAM,IAAI,CAAC,gCAAgC,CAAC,YAAY,CAAC,CAAC;QACpF,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC;IACpD,CAAC;IAEM,KAAK,CAAC,gCAAgC,CAAC,YAAoB;QAChE,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE,YAAY,CAAC,CAAC;QAC1D,IAAI,IAAI,GAAc,IAAI,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,kBAAkB,GAAG;gBACzB,YAAY,EAAE,YAAY;gBAC1B,OAAO,EAAE,OAAO,CAAC,aAAa;aAC/B,CAAC;YAEF,IAAI,YAAY,GAAG,CAAC,CAAC;YACrB,GAAG,CAAC;gBACF,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;gBAC7C,MAAM,OAAO,GAAoC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,yBAAyB,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBAC3H,YAAY,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC;gBAE1C,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;gBAEtF,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;oBAC/B,IAAI,CAAC,CAAC,mBAAmB,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC;wBACjG,IAAI,GAAG,CAAC,CAAC;oBACX,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,kBAAkB,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;YACtD,CAAC,QAAQ,kBAAkB,CAAC,WAAW,CAAC,EAAE;QAC5C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,0DAA0D,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACnG,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,MAAc;QACvC,cAAc,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAE1C,MAAM,MAAM,GAAkC;YAC5C,kBAAkB,EAAE,MAAM;SAC3B,CAAC;QACF,IAAI,IAAI,GAAe,EAAE,CAAC;QAE1B,GAAG,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,mCAAmC,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACtE,MAAM,GAAG,GAAmC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC;YACzG,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAClC,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;QACnC,CAAC,QAAQ,MAAM,CAAC,SAAS,EAAE;QAE3B,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,MAAkB;QAC7C,cAAc,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAc,EAAE,CAAC;QAE3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtC,MAAM,GAAG,GAA+B;oBACtC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY;iBACrC,CAAC;gBACF,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC1D,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,yBAAyB,CAAC,MAAc;QACnD,cAAc,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC1C,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAElE,MAAM,CAAC,IAAI,CAAC,oCAAoC,EAAE,MAAM,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAe,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC5D,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAEM,KAAK,CAAC,yBAAyB,CAAC,GAA2B;QAChE,cAAc,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC;QAClD,MAAM,IAAI,GAA4B,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;QACzF,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;QAEtC,IAAI,IAAI,GAAiC,IAAI,CAAC;QAC9C,IAAI,OAAO,GAAW,GAAG,CAAC;QAC1B,OAAO,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/D,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,sBAAsB,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACrF,MAAM,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACnC,OAAO,IAAI,CAAC,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAChC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAAC,OAAe;QAC7C,IAAI,IAAI,GAA2B,IAAI,CAAC;QACxC,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { CloudWatchClient, StandardUnit } from '@aws-sdk/client-cloudwatch';
2
+ import { CloudWatchMetricsMinuteLevelDynamoCountRequest } from '../model/cloud-watch-metrics-minute-level-dynamo-count-request.js';
3
+ import { KeyValue } from '@bitblit/ratchet-common/lang/key-value';
4
+ export declare class CloudWatchMetricsRatchet {
5
+ private cw;
6
+ constructor(cloudWatch?: CloudWatchClient);
7
+ get cloudWatchClient(): CloudWatchClient;
8
+ writeSingleMetric(namespace: string, metric: string, dims: KeyValue<any>[], unit: StandardUnit, value: number, timestampDate?: Date, highResolution?: boolean): Promise<any>;
9
+ writeDynamoCountAsMinuteLevelMetric(req: CloudWatchMetricsMinuteLevelDynamoCountRequest): Promise<number>;
10
+ }
@@ -0,0 +1,57 @@
1
+ import { CloudWatchClient, PutMetricDataCommand, StandardUnit, } from '@aws-sdk/client-cloudwatch';
2
+ import { DateTime } from 'luxon';
3
+ import { Logger } from '@bitblit/ratchet-common/logger/logger';
4
+ export class CloudWatchMetricsRatchet {
5
+ cw;
6
+ constructor(cloudWatch = null) {
7
+ this.cw = cloudWatch ? cloudWatch : new CloudWatchClient({ region: 'us-east-1', apiVersion: '2010-08-01' });
8
+ }
9
+ get cloudWatchClient() {
10
+ return this.cw;
11
+ }
12
+ async writeSingleMetric(namespace, metric, dims, unit = StandardUnit.None, value, timestampDate = new Date(), highResolution = false) {
13
+ const cwDims = [];
14
+ if (!!dims && dims.length > 0) {
15
+ dims.forEach((d) => {
16
+ cwDims.push({ Name: d.key, Value: d.value });
17
+ });
18
+ }
19
+ const storageResolution = highResolution ? 1 : 60;
20
+ const metricData = {
21
+ Namespace: namespace,
22
+ MetricData: [
23
+ {
24
+ MetricName: metric,
25
+ Dimensions: cwDims,
26
+ Unit: unit,
27
+ Value: value,
28
+ Timestamp: timestampDate,
29
+ StorageResolution: storageResolution,
30
+ },
31
+ ],
32
+ };
33
+ Logger.silly('Writing metric to cw : %j', metricData);
34
+ const result = await this.cw.send(new PutMetricDataCommand(metricData));
35
+ Logger.silly('Result: %j', result);
36
+ return result;
37
+ }
38
+ async writeDynamoCountAsMinuteLevelMetric(req) {
39
+ Logger.info('Publishing %s / %s metric for %s UTC', req.namespace, req.metric, req.minuteUTC);
40
+ if (!!req.scan && !!req.query) {
41
+ throw new Error('Must send query or scan, but not both');
42
+ }
43
+ if (!req.scan && !req.query) {
44
+ throw new Error('You must specify either a scan or a query');
45
+ }
46
+ const cnt = req.query
47
+ ? await req.dynamoRatchet.fullyExecuteQueryCount(req.query)
48
+ : await req.dynamoRatchet.fullyExecuteScanCount(req.scan);
49
+ Logger.debug('%s / %s for %s are %j', req.namespace, req.metric, req.minuteUTC, cnt);
50
+ const parseDateString = req.minuteUTC.split(' ').join('T') + ':00Z';
51
+ const parseDate = DateTime.fromISO(parseDateString).toJSDate();
52
+ const metricRes = await this.writeSingleMetric(req.namespace, req.metric, req.dims, StandardUnit.Count, cnt.count, parseDate, false);
53
+ Logger.debug('Metrics response: %j', metricRes);
54
+ return cnt.count;
55
+ }
56
+ }
57
+ //# sourceMappingURL=cloud-watch-metrics-ratchet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-watch-metrics-ratchet.js","sourceRoot":"","sources":["../../src/cloudwatch/cloud-watch-metrics-ratchet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './cloud-watch-log-group-ratchet.js';
2
+ export * from './cloud-watch-logs-ratchet.js';
3
+ export * from './cloud-watch-metrics-ratchet.js';
@@ -0,0 +1,4 @@
1
+ export * from './cloud-watch-log-group-ratchet.js';
2
+ export * from './cloud-watch-logs-ratchet.js';
3
+ export * from './cloud-watch-metrics-ratchet.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cloudwatch/index.ts"],"names":[],"mappings":"AAIA,cAAc,oCAAoC,CAAC;AACnD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { DaemonProcessState } from './daemon-process-state.js';
2
+ import { DaemonProcessCreateOptions } from './daemon-process-create-options.js';
3
+ export interface DaemonLike {
4
+ get defaultGroup(): string;
5
+ keyToPublicToken(key: string, expirationSeconds: number): Promise<string>;
6
+ start(options: DaemonProcessCreateOptions): Promise<DaemonProcessState>;
7
+ clean(group?: string, olderThanSeconds?: number): Promise<DaemonProcessState[]>;
8
+ listKeys(group?: string): Promise<string[]>;
9
+ list(group?: string): Promise<DaemonProcessState[]>;
10
+ updateMessage(id: string, newMessage: string): Promise<DaemonProcessState>;
11
+ statFromPublicToken(publicToken: string): Promise<DaemonProcessState>;
12
+ stat(key: string): Promise<DaemonProcessState>;
13
+ abort(id: string): Promise<DaemonProcessState>;
14
+ error(id: string, error: string): Promise<DaemonProcessState>;
15
+ finalize(id: string, contents: Buffer): Promise<DaemonProcessState>;
16
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=daemon-like.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon-like.js","sourceRoot":"","sources":["../../src/daemon/daemon-like.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ export interface DaemonProcessCreateOptions {
2
+ title: string;
3
+ contentType: string;
4
+ group: string;
5
+ meta: any;
6
+ targetFileName: string;
7
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=daemon-process-create-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon-process-create-options.js","sourceRoot":"","sources":["../../src/daemon/daemon-process-create-options.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import { JwtTokenBase } from '@bitblit/ratchet-common/jwt/jwt-token-base';
2
+ export interface DaemonProcessStatePublicToken extends JwtTokenBase {
3
+ daemonKey: string;
4
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=daemon-process-state-public-token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon-process-state-public-token.js","sourceRoot":"","sources":["../../src/daemon/daemon-process-state-public-token.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ export interface DaemonProcessState {
2
+ id: string;
3
+ title: string;
4
+ targetFileName: string;
5
+ lastUpdatedEpochMS: number;
6
+ lastUpdatedMessage: string;
7
+ startedEpochMS: number;
8
+ completedEpochMS: number;
9
+ meta: any;
10
+ error: string;
11
+ link: string;
12
+ contentType: string;
13
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=daemon-process-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon-process-state.js","sourceRoot":"","sources":["../../src/daemon/daemon-process-state.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import { Progress } from '@aws-sdk/lib-storage';
2
+ export interface DaemonStreamDataOptions {
3
+ overrideTargetFileName?: string;
4
+ progressFn?: (progress: Progress) => void;
5
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=daemon-stream-data-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon-stream-data-options.js","sourceRoot":"","sources":["../../src/daemon/daemon-stream-data-options.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ import { DaemonProcessState } from './daemon-process-state.js';
2
+ import { DaemonProcessCreateOptions } from './daemon-process-create-options.js';
3
+ import { Readable } from 'stream';
4
+ import { S3CacheRatchetLike } from '../s3/s3-cache-ratchet-like.js';
5
+ import { DaemonStreamDataOptions } from './daemon-stream-data-options.js';
6
+ export declare class DaemonUtil {
7
+ static DEFAULT_CONTENT: Buffer;
8
+ static DAEMON_METADATA_KEY: string;
9
+ static start(cache: S3CacheRatchetLike, id: string, s3Key: string, options: DaemonProcessCreateOptions): Promise<DaemonProcessState>;
10
+ static writeState(cache: S3CacheRatchetLike, s3Key: string, newState: DaemonProcessState, contents: Uint8Array): Promise<DaemonProcessState>;
11
+ static streamDataAndFinish(cache: S3CacheRatchetLike, s3Key: string, data: Readable, options?: DaemonStreamDataOptions): Promise<DaemonProcessState>;
12
+ static updateMessage(cache: S3CacheRatchetLike, s3Key: string, newMessage: string): Promise<DaemonProcessState>;
13
+ static stat(s3Cache: S3CacheRatchetLike, path: string): Promise<DaemonProcessState>;
14
+ static abort(s3Cache: S3CacheRatchetLike, path: string): Promise<DaemonProcessState>;
15
+ static error(s3Cache: S3CacheRatchetLike, path: string, error: string): Promise<DaemonProcessState>;
16
+ static finalize(s3Cache: S3CacheRatchetLike, path: string, contents: Buffer): Promise<DaemonProcessState>;
17
+ }
@@ -0,0 +1,154 @@
1
+ import { PutObjectCommand, } from '@aws-sdk/client-s3';
2
+ import { Upload } from '@aws-sdk/lib-storage';
3
+ import { Logger } from '@bitblit/ratchet-common/logger/logger';
4
+ import { StringRatchet } from '@bitblit/ratchet-common/lang/string-ratchet';
5
+ export class DaemonUtil {
6
+ static DEFAULT_CONTENT = Buffer.from('DAEMON_PLACEHOLDER');
7
+ static DAEMON_METADATA_KEY = 'daemon_meta';
8
+ static async start(cache, id, s3Key, options) {
9
+ try {
10
+ options.meta = options.meta || {};
11
+ Logger.info('Starting daemon, key: %s, options: %j', s3Key, options);
12
+ const now = new Date().getTime();
13
+ const newState = {
14
+ id: id,
15
+ title: options.title,
16
+ lastUpdatedEpochMS: now,
17
+ lastUpdatedMessage: 'Created',
18
+ targetFileName: options.targetFileName,
19
+ startedEpochMS: now,
20
+ completedEpochMS: null,
21
+ meta: options.meta,
22
+ error: null,
23
+ link: null,
24
+ contentType: options.contentType,
25
+ };
26
+ const rval = await DaemonUtil.writeState(cache, s3Key, newState, DaemonUtil.DEFAULT_CONTENT);
27
+ return rval;
28
+ }
29
+ catch (err) {
30
+ Logger.error('Error while trying to start a daemon: %j %s', options, err);
31
+ throw err;
32
+ }
33
+ }
34
+ static async writeState(cache, s3Key, newState, contents) {
35
+ try {
36
+ const s3meta = {};
37
+ newState.lastUpdatedEpochMS = new Date().getTime();
38
+ s3meta[DaemonUtil.DAEMON_METADATA_KEY] = JSON.stringify(newState);
39
+ const params = {
40
+ Bucket: cache.getDefaultBucket(),
41
+ Key: s3Key,
42
+ ContentType: newState.contentType,
43
+ Metadata: s3meta,
44
+ Body: contents,
45
+ };
46
+ if (newState.targetFileName) {
47
+ params.ContentDisposition = 'attachment;filename="' + newState.targetFileName + '"';
48
+ }
49
+ const written = await cache.getS3Client().send(new PutObjectCommand(params));
50
+ Logger.silly('Daemon wrote : %s', written);
51
+ return DaemonUtil.stat(cache, s3Key);
52
+ }
53
+ catch (err) {
54
+ Logger.error('Error while trying to write a daemon stat: %j %s', newState, err);
55
+ throw err;
56
+ }
57
+ }
58
+ static async streamDataAndFinish(cache, s3Key, data, options) {
59
+ Logger.debug('Streaming data to %s', s3Key);
60
+ const inStat = await DaemonUtil.updateMessage(cache, s3Key, 'Streaming data');
61
+ inStat.completedEpochMS = new Date().getTime();
62
+ inStat.lastUpdatedMessage = 'Complete';
63
+ const s3meta = {};
64
+ s3meta[DaemonUtil.DAEMON_METADATA_KEY] = JSON.stringify(inStat);
65
+ const params = {
66
+ Bucket: cache.getDefaultBucket(),
67
+ Key: s3Key,
68
+ ContentType: inStat.contentType,
69
+ Metadata: s3meta,
70
+ Body: data,
71
+ };
72
+ const targetFileName = StringRatchet.trimToNull(options?.overrideTargetFileName) || StringRatchet.trimToNull(inStat?.targetFileName);
73
+ if (targetFileName) {
74
+ params.ContentDisposition = 'attachment;filename="' + targetFileName + '"';
75
+ }
76
+ const upload = new Upload({
77
+ client: cache.getS3Client(),
78
+ params: params,
79
+ tags: [],
80
+ queueSize: 4,
81
+ partSize: 1024 * 1024 * 5,
82
+ leavePartsOnError: false,
83
+ });
84
+ if (options?.progressFn) {
85
+ upload.on('httpUploadProgress', options.progressFn);
86
+ }
87
+ const written = await upload.done();
88
+ Logger.silly('Daemon wrote : %s', written);
89
+ return DaemonUtil.stat(cache, s3Key);
90
+ }
91
+ static async updateMessage(cache, s3Key, newMessage) {
92
+ try {
93
+ const inStat = await DaemonUtil.stat(cache, s3Key);
94
+ inStat.lastUpdatedMessage = newMessage;
95
+ return DaemonUtil.writeState(cache, s3Key, inStat, DaemonUtil.DEFAULT_CONTENT);
96
+ }
97
+ catch (err) {
98
+ Logger.error('Error while trying to update a daemon message: %j %s', s3Key, err);
99
+ throw err;
100
+ }
101
+ }
102
+ static async stat(s3Cache, path) {
103
+ try {
104
+ Logger.debug('Daemon stat for path %s / %s', s3Cache.getDefaultBucket(), path);
105
+ let stat = null;
106
+ const meta = await s3Cache.fetchMetaForCacheFile(path);
107
+ Logger.debug('Daemon: Meta is %j', meta);
108
+ const metaString = meta && meta.Metadata ? meta.Metadata[DaemonUtil.DAEMON_METADATA_KEY] : null;
109
+ if (metaString) {
110
+ stat = JSON.parse(metaString);
111
+ if (stat.completedEpochMS && !stat.error) {
112
+ stat.link = await s3Cache.preSignedDownloadUrlForCacheFile(path);
113
+ }
114
+ }
115
+ else {
116
+ Logger.warn('No metadata found! (Head was %j)', meta);
117
+ }
118
+ return stat;
119
+ }
120
+ catch (err) {
121
+ Logger.error('Error while trying to fetch a daemon state: %j %s', path, err);
122
+ throw err;
123
+ }
124
+ }
125
+ static async abort(s3Cache, path) {
126
+ return DaemonUtil.error(s3Cache, path, 'Aborted');
127
+ }
128
+ static async error(s3Cache, path, error) {
129
+ try {
130
+ const inStat = await DaemonUtil.stat(s3Cache, path);
131
+ inStat.error = error;
132
+ inStat.completedEpochMS = new Date().getTime();
133
+ return DaemonUtil.writeState(s3Cache, path, inStat, DaemonUtil.DEFAULT_CONTENT);
134
+ }
135
+ catch (err) {
136
+ Logger.error('Error while trying to write a daemon error: %j %s', path, err);
137
+ throw err;
138
+ }
139
+ }
140
+ static async finalize(s3Cache, path, contents) {
141
+ try {
142
+ Logger.info('Finalizing daemon %s with %d bytes', path, contents.length);
143
+ const inStat = await DaemonUtil.stat(s3Cache, path);
144
+ inStat.completedEpochMS = new Date().getTime();
145
+ inStat.lastUpdatedMessage = 'Complete';
146
+ return DaemonUtil.writeState(s3Cache, path, inStat, contents);
147
+ }
148
+ catch (err) {
149
+ Logger.error('Error while trying to finalize a daemon: %j %s', path, err);
150
+ throw err;
151
+ }
152
+ }
153
+ }
154
+ //# sourceMappingURL=daemon-util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon-util.js","sourceRoot":"","sources":["../../src/daemon/daemon-util.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { DaemonProcessState } from './daemon-process-state.js';
2
+ import { DaemonProcessCreateOptions } from './daemon-process-create-options.js';
3
+ import { DaemonLike } from './daemon-like.js';
4
+ import { S3Client } from '@aws-sdk/client-s3';
5
+ import { JwtRatchetLike } from '@bitblit/ratchet-common/jwt/jwt-ratchet-like';
6
+ export declare class Daemon implements DaemonLike {
7
+ private s3;
8
+ private bucket;
9
+ private prefix;
10
+ private _defaultGroup;
11
+ private jwtRatchet?;
12
+ static DEFAULT_DEFAULT_GROUP: string;
13
+ private cache;
14
+ constructor(s3: S3Client, bucket: string, prefix?: string, _defaultGroup?: string, jwtRatchet?: JwtRatchetLike);
15
+ get defaultGroup(): string;
16
+ keyToPublicToken(key: string, expirationSeconds: number): Promise<string>;
17
+ private keyToPath;
18
+ private pathToKey;
19
+ private generatePath;
20
+ private generatePrefix;
21
+ start(options: DaemonProcessCreateOptions): Promise<DaemonProcessState>;
22
+ private writeState;
23
+ clean(group?: string, olderThanSeconds?: number): Promise<DaemonProcessState[]>;
24
+ listKeys(group?: string): Promise<string[]>;
25
+ list(group?: string): Promise<DaemonProcessState[]>;
26
+ updateMessage(id: string, newMessage: string): Promise<DaemonProcessState>;
27
+ stat(key: string): Promise<DaemonProcessState>;
28
+ statFromPublicToken(publicToken: string): Promise<DaemonProcessState>;
29
+ abort(id: string): Promise<DaemonProcessState>;
30
+ error(id: string, error: string): Promise<DaemonProcessState>;
31
+ finalize(id: string, contents: Buffer): Promise<DaemonProcessState>;
32
+ }