@digitraffic/common 2022.10.25-1 → 2022.10.31-1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (283) hide show
  1. package/.editorconfig +9 -0
  2. package/.eslintignore +4 -0
  3. package/.eslintrc.json +27 -0
  4. package/.github/CODEOWNERS +2 -0
  5. package/.github/workflows/build.yml +36 -0
  6. package/.github/workflows/eslint.yml +38 -0
  7. package/.github/workflows/mirror.yml +15 -0
  8. package/.gitignore +29 -0
  9. package/.husky/pre-commit +4 -0
  10. package/.prettierrc.json +10 -0
  11. package/dist/aws/infra/api/integration.js +52 -0
  12. package/dist/aws/infra/api/response.js +61 -0
  13. package/dist/aws/infra/api/responses.js +82 -0
  14. package/dist/aws/infra/api/static-integration.js +54 -0
  15. package/dist/aws/infra/canaries/canary-alarm.js +26 -0
  16. package/dist/aws/infra/canaries/canary-keys.js +7 -0
  17. package/dist/aws/infra/canaries/canary-parameters.js +3 -0
  18. package/dist/aws/infra/canaries/canary-role.js +46 -0
  19. package/dist/aws/infra/canaries/canary.js +32 -0
  20. package/dist/aws/infra/canaries/database-canary.js +70 -0
  21. package/dist/aws/infra/canaries/database-checker.js +103 -0
  22. package/dist/aws/infra/canaries/url-canary.js +47 -0
  23. package/dist/aws/infra/canaries/url-checker.js +252 -0
  24. package/dist/aws/infra/documentation.js +95 -0
  25. package/dist/aws/infra/scheduler.js +31 -0
  26. package/dist/aws/infra/security-rule.js +39 -0
  27. package/dist/aws/infra/sqs-integration.js +93 -0
  28. package/dist/aws/infra/sqs-queue.js +130 -0
  29. package/dist/aws/infra/stack/lambda-configs.js +105 -0
  30. package/dist/aws/infra/stack/monitoredfunction.js +143 -0
  31. package/dist/aws/infra/stack/rest_apis.js +185 -0
  32. package/dist/aws/infra/stack/stack-checking-aspect.js +174 -0
  33. package/dist/aws/infra/stack/stack.js +67 -0
  34. package/dist/aws/infra/stack/subscription.js +42 -0
  35. package/dist/aws/infra/usage-plans.js +42 -0
  36. package/dist/aws/runtime/apikey.js +13 -0
  37. package/dist/aws/runtime/digitraffic-integration-response.js +26 -0
  38. package/dist/aws/runtime/environment.js +12 -0
  39. package/dist/aws/runtime/messaging.js +31 -0
  40. package/dist/aws/runtime/s3.js +30 -0
  41. package/dist/aws/runtime/secrets/dbsecret.js +96 -0
  42. package/dist/aws/runtime/secrets/proxy-holder.js +27 -0
  43. package/dist/aws/runtime/secrets/rds-holder.js +27 -0
  44. package/dist/aws/runtime/secrets/secret-holder.js +76 -0
  45. package/dist/aws/runtime/secrets/secret.js +43 -0
  46. package/dist/aws/types/errors.js +16 -0
  47. package/dist/aws/types/lambda-response.js +33 -0
  48. package/dist/aws/types/mediatypes.js +16 -0
  49. package/dist/aws/types/model-with-reference.js +3 -0
  50. package/dist/aws/types/proxytypes.js +3 -0
  51. package/dist/aws/types/tags.js +7 -0
  52. package/dist/database/cached.js +32 -0
  53. package/dist/database/database.js +70 -0
  54. package/dist/database/last-updated.js +54 -0
  55. package/dist/database/models.js +3 -0
  56. package/dist/marine/id_utils.js +33 -0
  57. package/dist/marine/rtz.js +3 -0
  58. package/dist/test/asserter.js +45 -0
  59. package/dist/test/db-testutils.js +31 -0
  60. package/dist/test/httpserver.js +74 -0
  61. package/dist/test/secret.js +25 -0
  62. package/dist/test/secrets-manager.js +59 -0
  63. package/dist/test/testutils.js +44 -0
  64. package/dist/types/either.js +3 -0
  65. package/dist/types/input-error.js +7 -0
  66. package/dist/types/language.js +10 -0
  67. package/dist/types/traffictype.js +13 -0
  68. package/dist/types/validator.js +14 -0
  69. package/dist/utils/api-model.js +129 -0
  70. package/dist/utils/base64.js +21 -0
  71. package/dist/utils/date-utils.js +34 -0
  72. package/dist/utils/geojson-types.js +18 -0
  73. package/dist/utils/geometry.js +164 -0
  74. package/dist/utils/retry.js +50 -0
  75. package/dist/utils/slack.js +25 -0
  76. package/dist/utils/utils.js +75 -0
  77. package/jest.config.js +15 -0
  78. package/package.json +15 -13
  79. package/src/@types/geojson-validation/index.d.ts +4 -0
  80. package/src/aws/infra/api/integration.ts +73 -0
  81. package/src/aws/infra/api/response.ts +67 -0
  82. package/src/aws/infra/api/responses.ts +124 -0
  83. package/src/aws/infra/api/static-integration.ts +62 -0
  84. package/src/aws/infra/canaries/canary-alarm.ts +31 -0
  85. package/src/aws/infra/canaries/canary-keys.ts +3 -0
  86. package/{aws/infra/canaries/canary-parameters.d.ts → src/aws/infra/canaries/canary-parameters.ts} +7 -6
  87. package/src/aws/infra/canaries/canary-role.ts +47 -0
  88. package/src/aws/infra/canaries/canary.ts +46 -0
  89. package/src/aws/infra/canaries/database-canary.ts +98 -0
  90. package/src/aws/infra/canaries/database-checker.ts +155 -0
  91. package/src/aws/infra/canaries/url-canary.ts +74 -0
  92. package/src/aws/infra/canaries/url-checker.ts +366 -0
  93. package/src/aws/infra/documentation.ts +124 -0
  94. package/src/aws/infra/scheduler.ts +59 -0
  95. package/src/aws/infra/security-rule.ts +38 -0
  96. package/src/aws/infra/sqs-integration.ts +102 -0
  97. package/src/aws/infra/sqs-queue.ts +148 -0
  98. package/src/aws/infra/stack/lambda-configs.ts +207 -0
  99. package/src/aws/infra/stack/monitoredfunction.ts +342 -0
  100. package/src/aws/infra/stack/rest_apis.ts +223 -0
  101. package/src/aws/infra/stack/stack-checking-aspect.ts +279 -0
  102. package/src/aws/infra/stack/stack.ts +145 -0
  103. package/src/aws/infra/stack/subscription.ts +58 -0
  104. package/src/aws/infra/usage-plans.ts +41 -0
  105. package/src/aws/runtime/apikey.ts +9 -0
  106. package/src/aws/runtime/digitraffic-integration-response.ts +28 -0
  107. package/src/aws/runtime/environment.ts +9 -0
  108. package/src/aws/runtime/messaging.ts +26 -0
  109. package/src/aws/runtime/s3.ts +44 -0
  110. package/src/aws/runtime/secrets/dbsecret.ts +116 -0
  111. package/src/aws/runtime/secrets/proxy-holder.ts +37 -0
  112. package/src/aws/runtime/secrets/rds-holder.ts +33 -0
  113. package/src/aws/runtime/secrets/secret-holder.ts +116 -0
  114. package/src/aws/runtime/secrets/secret.ts +50 -0
  115. package/src/aws/types/errors.ts +14 -0
  116. package/src/aws/types/lambda-response.ts +43 -0
  117. package/{aws/types/mediatypes.d.ts → src/aws/types/mediatypes.ts} +4 -3
  118. package/{aws/types/model-with-reference.d.ts → src/aws/types/model-with-reference.ts} +2 -1
  119. package/src/aws/types/proxytypes.ts +27 -0
  120. package/src/aws/types/tags.ts +3 -0
  121. package/src/database/cached.ts +35 -0
  122. package/src/database/database.ts +96 -0
  123. package/src/database/last-updated.ts +59 -0
  124. package/{database/models.d.ts → src/database/models.ts} +1 -0
  125. package/src/marine/id_utils.ts +30 -0
  126. package/src/marine/rtz.ts +57 -0
  127. package/src/test/asserter.ts +48 -0
  128. package/src/test/db-testutils.ts +44 -0
  129. package/src/test/httpserver.ts +96 -0
  130. package/src/test/secret.ts +23 -0
  131. package/src/test/secrets-manager.ts +34 -0
  132. package/src/test/testutils.ts +39 -0
  133. package/src/types/either.ts +3 -0
  134. package/src/types/input-error.ts +2 -0
  135. package/src/types/language.ts +3 -0
  136. package/src/types/traffictype.ts +8 -0
  137. package/src/types/validator.ts +10 -0
  138. package/src/utils/api-model.ts +133 -0
  139. package/src/utils/base64.ts +16 -0
  140. package/src/utils/date-utils.ts +30 -0
  141. package/src/utils/geojson-types.ts +22 -0
  142. package/src/utils/geometry.ts +164 -0
  143. package/src/utils/retry.ts +49 -0
  144. package/src/utils/slack.ts +22 -0
  145. package/src/utils/utils.ts +105 -0
  146. package/test/marine/id_utils.test.ts +57 -0
  147. package/test/promise/promise.test.ts +143 -0
  148. package/test/secrets/dbsecret.test.ts +59 -0
  149. package/test/secrets/secret-holder.test.ts +143 -0
  150. package/test/secrets/secret.test.ts +49 -0
  151. package/test/test/httpserver.test.ts +128 -0
  152. package/test/utils/date-utils.test.ts +28 -0
  153. package/test/utils/geometry.test.ts +29 -0
  154. package/test/utils/utils.test.ts +64 -0
  155. package/tsconfig.eslint.json +4 -0
  156. package/tsconfig.json +22 -0
  157. package/yarn.lock +4060 -0
  158. package/aws/infra/api/integration.d.ts +0 -21
  159. package/aws/infra/api/integration.js +0 -52
  160. package/aws/infra/api/response.d.ts +0 -22
  161. package/aws/infra/api/response.js +0 -61
  162. package/aws/infra/api/responses.d.ts +0 -39
  163. package/aws/infra/api/responses.js +0 -79
  164. package/aws/infra/api/static-integration.d.ts +0 -15
  165. package/aws/infra/api/static-integration.js +0 -54
  166. package/aws/infra/canaries/canary-alarm.d.ts +0 -6
  167. package/aws/infra/canaries/canary-alarm.js +0 -26
  168. package/aws/infra/canaries/canary-parameters.js +0 -3
  169. package/aws/infra/canaries/canary-role.d.ts +0 -6
  170. package/aws/infra/canaries/canary-role.js +0 -46
  171. package/aws/infra/canaries/canary.d.ts +0 -8
  172. package/aws/infra/canaries/canary.js +0 -32
  173. package/aws/infra/canaries/database-canary.d.ts +0 -18
  174. package/aws/infra/canaries/database-canary.js +0 -55
  175. package/aws/infra/canaries/database-checker.d.ts +0 -21
  176. package/aws/infra/canaries/database-checker.js +0 -109
  177. package/aws/infra/canaries/url-canary.d.ts +0 -19
  178. package/aws/infra/canaries/url-canary.js +0 -46
  179. package/aws/infra/canaries/url-checker.d.ts +0 -46
  180. package/aws/infra/canaries/url-checker.js +0 -238
  181. package/aws/infra/documentation.d.ts +0 -56
  182. package/aws/infra/documentation.js +0 -95
  183. package/aws/infra/scheduler.d.ts +0 -12
  184. package/aws/infra/scheduler.js +0 -31
  185. package/aws/infra/security-rule.d.ts +0 -12
  186. package/aws/infra/security-rule.js +0 -39
  187. package/aws/infra/sqs-integration.d.ts +0 -7
  188. package/aws/infra/sqs-integration.js +0 -93
  189. package/aws/infra/sqs-queue.d.ts +0 -16
  190. package/aws/infra/sqs-queue.js +0 -130
  191. package/aws/infra/stack/lambda-configs.d.ts +0 -72
  192. package/aws/infra/stack/lambda-configs.js +0 -93
  193. package/aws/infra/stack/monitoredfunction.d.ts +0 -84
  194. package/aws/infra/stack/monitoredfunction.js +0 -135
  195. package/aws/infra/stack/rest_apis.d.ts +0 -41
  196. package/aws/infra/stack/rest_apis.js +0 -185
  197. package/aws/infra/stack/stack-checking-aspect.d.ts +0 -21
  198. package/aws/infra/stack/stack-checking-aspect.js +0 -174
  199. package/aws/infra/stack/stack.d.ts +0 -44
  200. package/aws/infra/stack/stack.js +0 -60
  201. package/aws/infra/stack/subscription.d.ts +0 -17
  202. package/aws/infra/stack/subscription.js +0 -41
  203. package/aws/infra/usage-plans.d.ts +0 -15
  204. package/aws/infra/usage-plans.js +0 -42
  205. package/aws/runtime/apikey.d.ts +0 -2
  206. package/aws/runtime/apikey.js +0 -13
  207. package/aws/runtime/digitraffic-integration-response.d.ts +0 -8
  208. package/aws/runtime/digitraffic-integration-response.js +0 -26
  209. package/aws/runtime/environment.d.ts +0 -1
  210. package/aws/runtime/environment.js +0 -12
  211. package/aws/runtime/messaging.d.ts +0 -10
  212. package/aws/runtime/messaging.js +0 -31
  213. package/aws/runtime/s3.d.ts +0 -2
  214. package/aws/runtime/s3.js +0 -30
  215. package/aws/runtime/secrets/dbsecret.d.ts +0 -54
  216. package/aws/runtime/secrets/dbsecret.js +0 -96
  217. package/aws/runtime/secrets/proxy-holder.d.ts +0 -9
  218. package/aws/runtime/secrets/proxy-holder.js +0 -26
  219. package/aws/runtime/secrets/rds-holder.d.ts +0 -9
  220. package/aws/runtime/secrets/rds-holder.js +0 -26
  221. package/aws/runtime/secrets/secret-holder.d.ts +0 -26
  222. package/aws/runtime/secrets/secret-holder.js +0 -73
  223. package/aws/runtime/secrets/secret.d.ts +0 -8
  224. package/aws/runtime/secrets/secret.js +0 -43
  225. package/aws/types/errors.d.ts +0 -4
  226. package/aws/types/errors.js +0 -9
  227. package/aws/types/lambda-response.d.ts +0 -12
  228. package/aws/types/lambda-response.js +0 -28
  229. package/aws/types/mediatypes.js +0 -15
  230. package/aws/types/model-with-reference.js +0 -3
  231. package/aws/types/proxytypes.d.ts +0 -26
  232. package/aws/types/proxytypes.js +0 -3
  233. package/aws/types/tags.d.ts +0 -2
  234. package/aws/types/tags.js +0 -7
  235. package/database/cached.d.ts +0 -7
  236. package/database/cached.js +0 -32
  237. package/database/database.d.ts +0 -19
  238. package/database/database.js +0 -62
  239. package/database/last-updated.d.ts +0 -16
  240. package/database/last-updated.js +0 -54
  241. package/database/models.js +0 -3
  242. package/index.d.ts +0 -1
  243. package/index.js +0 -18
  244. package/marine/id_utils.d.ts +0 -3
  245. package/marine/id_utils.js +0 -33
  246. package/marine/rtz.d.ts +0 -48
  247. package/marine/rtz.js +0 -3
  248. package/test/asserter.d.ts +0 -11
  249. package/test/asserter.js +0 -45
  250. package/test/db-testutils.d.ts +0 -2
  251. package/test/db-testutils.js +0 -31
  252. package/test/httpserver.d.ts +0 -18
  253. package/test/httpserver.js +0 -67
  254. package/test/secret.d.ts +0 -3
  255. package/test/secret.js +0 -25
  256. package/test/secrets-manager.d.ts +0 -9
  257. package/test/secrets-manager.js +0 -59
  258. package/test/testutils.d.ts +0 -12
  259. package/test/testutils.js +0 -44
  260. package/types/input-error.d.ts +0 -2
  261. package/types/input-error.js +0 -7
  262. package/types/language.d.ts +0 -5
  263. package/types/language.js +0 -10
  264. package/types/traffictype.d.ts +0 -8
  265. package/types/traffictype.js +0 -13
  266. package/types/validator.d.ts +0 -4
  267. package/types/validator.js +0 -14
  268. package/utils/api-model.d.ts +0 -87
  269. package/utils/api-model.js +0 -129
  270. package/utils/base64.d.ts +0 -12
  271. package/utils/base64.js +0 -21
  272. package/utils/date-utils.d.ts +0 -17
  273. package/utils/date-utils.js +0 -34
  274. package/utils/geojson-types.d.ts +0 -14
  275. package/utils/geojson-types.js +0 -18
  276. package/utils/geometry.d.ts +0 -36
  277. package/utils/geometry.js +0 -140
  278. package/utils/retry.d.ts +0 -13
  279. package/utils/retry.js +0 -50
  280. package/utils/slack.d.ts +0 -5
  281. package/utils/slack.js +0 -25
  282. package/utils/utils.d.ts +0 -30
  283. package/utils/utils.js +0 -64
@@ -1,21 +0,0 @@
1
- import { IAspect } from "aws-cdk-lib";
2
- import { DigitrafficStack } from "./stack";
3
- import { IConstruct } from "constructs";
4
- export declare class StackCheckingAspect implements IAspect {
5
- private readonly stackShortName?;
6
- private readonly whitelistedResources?;
7
- constructor(stackShortName?: string, whitelistedResources?: string[]);
8
- static create(stack: DigitrafficStack): StackCheckingAspect;
9
- visit(node: IConstruct): void;
10
- private isWhitelisted;
11
- private addAnnotation;
12
- private checkStack;
13
- private checkFunction;
14
- private checkTags;
15
- private checkBucket;
16
- private static isValidPath;
17
- private static isValidQueryString;
18
- private checkResourceCasing;
19
- private checkQueueEncryption;
20
- private checkLogGroupRetention;
21
- }
@@ -1,174 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StackCheckingAspect = void 0;
4
- const aws_cdk_lib_1 = require("aws-cdk-lib");
5
- const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
6
- const aws_s3_1 = require("aws-cdk-lib/aws-s3");
7
- const stack_1 = require("./stack");
8
- const aws_apigateway_1 = require("aws-cdk-lib/aws-apigateway");
9
- const change_case_1 = require("change-case");
10
- const aws_sqs_1 = require("aws-cdk-lib/aws-sqs");
11
- const aws_logs_1 = require("aws-cdk-lib/aws-logs");
12
- const MAX_CONCURRENCY_LIMIT = 100;
13
- const NODE_RUNTIME = aws_lambda_1.Runtime.NODEJS_14_X.name;
14
- var ResourceType;
15
- (function (ResourceType) {
16
- ResourceType["stackName"] = "STACK_NAME";
17
- ResourceType["reservedConcurrentConcurrency"] = "RESERVED_CONCURRENT_CONCURRENCY";
18
- ResourceType["functionTimeout"] = "FUNCTION_TIMEOUT";
19
- ResourceType["functionMemorySize"] = "FUNCTION_MEMORY_SIZE";
20
- ResourceType["functionRuntime"] = "FUNCTION_RUNTIME";
21
- ResourceType["functionName"] = "FUNCTION_NAME";
22
- ResourceType["tagSolution"] = "TAG_SOLUTION";
23
- ResourceType["bucketPublicity"] = "BUCKET_PUBLICITY";
24
- ResourceType["resourcePath"] = "RESOURCE_PATH";
25
- ResourceType["queueEncryption"] = "QUEUE_ENCRYPTION";
26
- ResourceType["logGroupRetention"] = "LOG_GROUP_RETENTION";
27
- })(ResourceType || (ResourceType = {}));
28
- class StackCheckingAspect {
29
- constructor(stackShortName, whitelistedResources) {
30
- this.stackShortName = stackShortName;
31
- this.whitelistedResources = whitelistedResources;
32
- }
33
- static create(stack) {
34
- return new StackCheckingAspect(stack.configuration.shortName, stack.configuration.whitelistedResources);
35
- }
36
- visit(node) {
37
- //console.info("visiting class " + node.constructor.name);
38
- this.checkStack(node);
39
- this.checkFunction(node);
40
- this.checkTags(node);
41
- this.checkBucket(node);
42
- this.checkResourceCasing(node);
43
- this.checkQueueEncryption(node);
44
- this.checkLogGroupRetention(node);
45
- }
46
- isWhitelisted(key) {
47
- return this.whitelistedResources?.some((wl) => {
48
- return key.matchAll(new RegExp(wl, "g"));
49
- });
50
- }
51
- addAnnotation(node, key, message, isError = true) {
52
- const resourceKey = `${node.node.path}/${key}`;
53
- const isWhiteListed = this.isWhitelisted(resourceKey);
54
- const annotationMessage = `${resourceKey}:${message}`;
55
- // error && whitelisted -> warning
56
- // warning && whitelisted -> nothing
57
- if (isError && !isWhiteListed) {
58
- aws_cdk_lib_1.Annotations.of(node).addError(annotationMessage);
59
- }
60
- else if ((!isError && !isWhiteListed) || (isError && isWhiteListed)) {
61
- aws_cdk_lib_1.Annotations.of(node).addWarning(annotationMessage);
62
- }
63
- }
64
- checkStack(node) {
65
- if (node instanceof stack_1.DigitrafficStack) {
66
- if ((node.stackName.includes("Test") ||
67
- node.stackName.includes("Tst")) &&
68
- node.configuration.production) {
69
- this.addAnnotation(node, ResourceType.stackName, "Production is set for Test-stack");
70
- }
71
- if ((node.stackName.includes("Prod") ||
72
- node.stackName.includes("Prd")) &&
73
- !node.configuration.production) {
74
- this.addAnnotation(node, ResourceType.stackName, "Production is not set for Production-stack");
75
- }
76
- }
77
- }
78
- checkFunction(node) {
79
- if (node instanceof aws_lambda_1.CfnFunction) {
80
- if (!node.reservedConcurrentExecutions) {
81
- this.addAnnotation(node, ResourceType.reservedConcurrentConcurrency, "Function must have reservedConcurrentConcurrency");
82
- }
83
- else if (node.reservedConcurrentExecutions > MAX_CONCURRENCY_LIMIT) {
84
- this.addAnnotation(node, ResourceType.reservedConcurrentConcurrency, "Function reservedConcurrentConcurrency too high!");
85
- }
86
- if (!node.timeout) {
87
- this.addAnnotation(node, ResourceType.functionTimeout, "Function must have timeout");
88
- }
89
- if (!node.memorySize) {
90
- this.addAnnotation(node, ResourceType.functionMemorySize, "Function must have memorySize");
91
- }
92
- if (node.runtime !== NODE_RUNTIME) {
93
- this.addAnnotation(node, ResourceType.functionRuntime, `Function has wrong runtime ${node.runtime}`);
94
- }
95
- if (this.stackShortName &&
96
- node.functionName &&
97
- !node.functionName.startsWith(this.stackShortName)) {
98
- this.addAnnotation(node, ResourceType.functionName, `Function name does not begin with ${this.stackShortName}`);
99
- }
100
- }
101
- }
102
- checkTags(node) {
103
- if (node instanceof aws_cdk_lib_1.Stack) {
104
- if (!node.tags.tagValues()[stack_1.SOLUTION_KEY]) {
105
- this.addAnnotation(node, ResourceType.tagSolution, "Solution tag is missing");
106
- }
107
- }
108
- }
109
- checkBucket(node) {
110
- if (node instanceof aws_s3_1.CfnBucket) {
111
- const c = node.publicAccessBlockConfiguration;
112
- if (c) {
113
- if (!c.blockPublicAcls ||
114
- !c.blockPublicPolicy ||
115
- !c.ignorePublicAcls ||
116
- !c.restrictPublicBuckets) {
117
- this.addAnnotation(node, ResourceType.bucketPublicity, "Check bucket publicity");
118
- }
119
- }
120
- }
121
- }
122
- static isValidPath(path) {
123
- // if path includes . or { check only the trailing part of path
124
- if (path.includes(".")) {
125
- return this.isValidPath(path.split(".")[0]);
126
- }
127
- if (path.includes("{")) {
128
- return this.isValidPath(path.split("{")[0]);
129
- }
130
- return (0, change_case_1.paramCase)(path) === path;
131
- }
132
- static isValidQueryString(name) {
133
- return (0, change_case_1.snakeCase)(name) === name;
134
- }
135
- checkResourceCasing(node) {
136
- if (node instanceof aws_apigateway_1.CfnResource) {
137
- if (!StackCheckingAspect.isValidPath(node.pathPart)) {
138
- this.addAnnotation(node, ResourceType.resourcePath, "Path part should be in kebab-case");
139
- }
140
- }
141
- else if (node instanceof aws_apigateway_1.CfnMethod) {
142
- const integration = node.integration;
143
- if (integration && integration.requestParameters) {
144
- Object.keys(integration.requestParameters).forEach((key) => {
145
- const split = key.split(".");
146
- const type = split[2];
147
- const name = split[3];
148
- if (type === "querystring" &&
149
- !StackCheckingAspect.isValidQueryString(name)) {
150
- this.addAnnotation(node, name, "Querystring should be in snake_case");
151
- }
152
- });
153
- }
154
- }
155
- }
156
- checkQueueEncryption(node) {
157
- if (node instanceof aws_sqs_1.CfnQueue) {
158
- if (!node.kmsMasterKeyId) {
159
- this.addAnnotation(node, ResourceType.queueEncryption, "Queue must have encryption enabled");
160
- }
161
- }
162
- }
163
- checkLogGroupRetention(node) {
164
- if (node instanceof aws_logs_1.LogRetention) {
165
- const child = node.node.defaultChild;
166
- const retention = child._cfnProperties.RetentionInDays;
167
- if (!retention) {
168
- this.addAnnotation(node, ResourceType.logGroupRetention, "Log group must define log group retention");
169
- }
170
- }
171
- }
172
- }
173
- exports.StackCheckingAspect = StackCheckingAspect;
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2stY2hlY2tpbmctYXNwZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2F3cy9pbmZyYS9zdGFjay9zdGFjay1jaGVja2luZy1hc3BlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQTBEO0FBQzFELHVEQUE4RDtBQUM5RCwrQ0FBK0M7QUFDL0MsbUNBQXlEO0FBRXpELCtEQUFvRTtBQUNwRSw2Q0FBbUQ7QUFDbkQsaURBQStDO0FBQy9DLG1EQUFvRDtBQUdwRCxNQUFNLHFCQUFxQixHQUFHLEdBQUcsQ0FBQztBQUNsQyxNQUFNLFlBQVksR0FBRyxvQkFBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7QUFFOUMsSUFBSyxZQVlKO0FBWkQsV0FBSyxZQUFZO0lBQ2Isd0NBQXdCLENBQUE7SUFDeEIsaUZBQWlFLENBQUE7SUFDakUsb0RBQW9DLENBQUE7SUFDcEMsMkRBQTJDLENBQUE7SUFDM0Msb0RBQW9DLENBQUE7SUFDcEMsOENBQThCLENBQUE7SUFDOUIsNENBQTRCLENBQUE7SUFDNUIsb0RBQW9DLENBQUE7SUFDcEMsOENBQThCLENBQUE7SUFDOUIsb0RBQW9DLENBQUE7SUFDcEMseURBQXlDLENBQUE7QUFDN0MsQ0FBQyxFQVpJLFlBQVksS0FBWixZQUFZLFFBWWhCO0FBRUQsTUFBYSxtQkFBbUI7SUFJNUIsWUFBWSxjQUF1QixFQUFFLG9CQUErQjtRQUNoRSxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUNyQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsb0JBQW9CLENBQUM7SUFDckQsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBdUI7UUFDakMsT0FBTyxJQUFJLG1CQUFtQixDQUMxQixLQUFLLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFDN0IsS0FBSyxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FDM0MsQ0FBQztJQUNOLENBQUM7SUFFTSxLQUFLLENBQUMs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QkFBWSxFQUFFO1lBQzlCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFHdkIsQ0FBQztZQUNGLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDO1lBRXZELElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLGFBQWEsQ0FDZCxJQUFJLEVBQ0osWUFBWSxDQUFDLGlCQUFpQixFQUM5QiwyQ0FBMkMsQ0FDOUMsQ0FBQzthQUNMO1NBQ0o7SUFDTCxDQUFDO0NBQ0o7QUExUEQsa0RBMFBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQW5ub3RhdGlvbnMsIElBc3BlY3QsIFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBDZm5GdW5jdGlvbiwgUnVudGltZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQgeyBDZm5CdWNrZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzXCI7XG5pbXBvcnQgeyBEaWdpdHJhZmZpY1N0YWNrLCBTT0xVVElPTl9LRVkgfSBmcm9tIFwiLi9zdGFja1wiO1xuaW1wb3J0IHsgSUNvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBDZm5NZXRob2QsIENmblJlc291cmNlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5XCI7XG5pbXBvcnQgeyBwYXJhbUNhc2UsIHNuYWtlQ2FzZSB9IGZyb20gXCJjaGFuZ2UtY2FzZVwiO1xuaW1wb3J0IHsgQ2ZuUXVldWUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNxc1wiO1xuaW1wb3J0IHsgTG9nUmV0ZW50aW9uIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sb2dzXCI7XG5pbXBvcnQgSW50ZWdyYXRpb25Qcm9wZXJ0eSA9IENmbk1ldGhvZC5JbnRlZ3JhdGlvblByb3BlcnR5O1xuXG5jb25zdCBNQVhfQ09OQ1VSUkVOQ1lfTElNSVQgPSAxMDA7XG5jb25zdCBOT0RFX1JVTlRJTUUgPSBSdW50aW1lLk5PREVKU18xNF9YLm5hbWU7XG5cbmVudW0gUmVzb3VyY2VUeXBlIHtcbiAgICBzdGFja05hbWUgPSBcIlNUQUNLX05BTUVcIixcbiAgICByZXNlcnZlZENvbmN1cnJlbnRDb25jdXJyZW5jeSA9IFwiUkVTRVJWRURfQ09OQ1VSUkVOVF9DT05DVVJSRU5DWVwiLFxuICAgIGZ1bmN0aW9uVGltZW91dCA9IFwiRlVOQ1RJT05fVElNRU9VVFwiLFxuICAgIGZ1bmN0aW9uTWVtb3J5U2l6ZSA9IFwiRlVOQ1RJT05fTUVNT1JZX1NJWkVcIixcbiAgICBmdW5jdGlvblJ1bnRpbWUgPSBcIkZVTkNUSU9OX1JVTlRJTUVcIixcbiAgICBmdW5jdGlvbk5hbWUgPSBcIkZVTkNUSU9OX05BTUVcIixcbiAgICB0YWdTb2x1dGlvbiA9IFwiVEFHX1NPTFVUSU9OXCIsXG4gICAgYnVja2V0UHVibGljaXR5ID0gXCJCVUNLRVRfUFVCTElDSVRZXCIsXG4gICAgcmVzb3VyY2VQYXRoID0gXCJSRVNPVVJDRV9QQVRIXCIsXG4gICAgcXVldWVFbmNyeXB0aW9uID0gXCJRVUVVRV9FTkNSWVBUSU9OXCIsXG4gICAgbG9nR3JvdXBSZXRlbnRpb24gPSBcIkxPR19HUk9VUF9SRVRFTlRJT05cIixcbn1cblxuZXhwb3J0IGNsYXNzIFN0YWNrQ2hlY2tpbmdBc3BlY3QgaW1wbGVtZW50cyBJQXNwZWN0IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0YWNrU2hvcnROYW1lPzogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgd2hpdGVsaXN0ZWRSZXNvdXJjZXM/OiBzdHJpbmdbXTtcblxuICAgIGNvbnN0cnVjdG9yKHN0YWNrU2hvcnROYW1lPzogc3RyaW5nLCB3aGl0ZWxpc3RlZFJlc291cmNlcz86IHN0cmluZ1tdKSB7XG4gICAgICAgIHRoaXMuc3RhY2tTaG9ydE5hbWUgPSBzdGFja1Nob3J0TmFtZTtcbiAgICAgICAgdGhpcy53aGl0ZWxpc3RlZFJlc291cmNlcyA9IHdoaXRlbGlzdGVkUmVzb3VyY2VzO1xuICAgIH1cblxuICAgIHN0YXRpYyBjcmVhdGUoc3RhY2s6IERpZ2l0cmFmZmljU3RhY2spIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdGFja0NoZWNraW5nQXNwZWN0KFxuICAgICAgICAgICAgc3RhY2suY29uZmlndXJhdGlvbi5zaG9ydE5hbWUsXG4gICAgICAgICAgICBzdGFjay5jb25maWd1cmF0aW9uLndoaXRlbGlzdGVkUmVzb3VyY2VzXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIHZpc2l0KG5vZGU6IElDb25zdHJ1Y3QpOiB2b2lkIHtcbiAgICAgICAgLy9jb25zb2xlLmluZm8oXCJ2aXNpdGluZyBjbGFzcyBcIiArIG5vZGUuY29uc3RydWN0b3IubmFtZSk7XG5cbiAgICAgICAgdGhpcy5jaGVja1N0YWNrKG5vZGUpO1xuICAgICAgICB0aGlzLmNoZWNrRnVuY3Rpb24obm9kZSk7XG4gICAgICAgIHRoaXMuY2hlY2tUYWdzKG5vZGUpO1xuICAgICAgICB0aGlzLmNoZWNrQnVja2V0KG5vZGUpO1xuICAgICAgICB0aGlzLmNoZWNrUmVzb3VyY2VDYXNpbmcobm9kZSk7XG4gICAgICAgIHRoaXMuY2hlY2tRdWV1ZUVuY3J5cHRpb24obm9kZSk7XG4gICAgICAgIHRoaXMuY2hlY2tMb2dHcm91cFJldGVudGlvbihub2RlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzV2hpdGVsaXN0ZWQoa2V5OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2hpdGVsaXN0ZWRSZXNvdXJjZXM/LnNvbWUoKHdsKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ga2V5Lm1hdGNoQWxsKG5ldyBSZWdFeHAod2wsIFwiZ1wiKSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkQW5ub3RhdGlvbihcbiAgICAgICAgbm9kZTogSUNvbnN0cnVjdCxcbiAgICAgICAga2V5OiBSZXNvdXJjZVR5cGUgfCBzdHJpbmcsXG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgICAgaXNFcnJvciA9IHRydWVcbiAgICApIHtcbiAgICAgICAgY29uc3QgcmVzb3VyY2VLZXkgPSBgJHtub2RlLm5vZGUucGF0aH0vJHtrZXl9YDtcbiAgICAgICAgY29uc3QgaXNXaGl0ZUxpc3RlZCA9IHRoaXMuaXNXaGl0ZWxpc3RlZChyZXNvdXJjZUtleSk7XG4gICAgICAgIGNvbnN0IGFubm90YXRpb25NZXNzYWdlID0gYCR7cmVzb3VyY2VLZXl9OiR7bWVzc2FnZX1gO1xuXG4gICAgICAgIC8vIGVycm9yICYmIHdoaXRlbGlzdGVkIC0+IHdhcm5pbmdcbiAgICAgICAgLy8gd2FybmluZyAmJiB3aGl0ZWxpc3RlZCAtPiBub3RoaW5nXG4gICAgICAgIGlmIChpc0Vycm9yICYmICFpc1doaXRlTGlzdGVkKSB7XG4gICAgICAgICAgICBBbm5vdGF0aW9ucy5vZihub2RlKS5hZGRFcnJvcihhbm5vdGF0aW9uTWVzc2FnZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoKCFpc0Vycm9yICYmICFpc1doaXRlTGlzdGVkKSB8fCAoaXNFcnJvciAmJiBpc1doaXRlTGlzdGVkKSkge1xuICAgICAgICAgICAgQW5ub3RhdGlvbnMub2Yobm9kZSkuYWRkV2FybmluZyhhbm5vdGF0aW9uTWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrU3RhY2sobm9kZTogSUNvbnN0cnVjdCkge1xuICAgICAgICBpZiAobm9kZSBpbnN0YW5jZW9mIERpZ2l0cmFmZmljU3RhY2spIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAobm9kZS5zdGFja05hbWUuaW5jbHVkZXMoXCJUZXN0XCIpIHx8XG4gICAgICAgICAgICAgICAgICAgIG5vZGUuc3RhY2tOYW1lLmluY2x1ZGVzKFwiVHN0XCIpKSAmJlxuICAgICAgICAgICAgICAgIG5vZGUuY29uZmlndXJhdGlvbi5wcm9kdWN0aW9uXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEFubm90YXRpb24oXG4gICAgICAgICAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICAgICAgICAgIFJlc291cmNlVHlwZS5zdGFja05hbWUsXG4gICAgICAgICAgICAgICAgICAgIFwiUHJvZHVjdGlvbiBpcyBzZXQgZm9yIFRlc3Qtc3RhY2tcIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAobm9kZS5zdGFja05hbWUuaW5jbHVkZXMoXCJQcm9kXCIpIHx8XG4gICAgICAgICAgICAgICAgICAgIG5vZGUuc3RhY2tOYW1lLmluY2x1ZGVzKFwiUHJkXCIpKSAmJlxuICAgICAgICAgICAgICAgICFub2RlLmNvbmZpZ3VyYXRpb24ucHJvZHVjdGlvblxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRBbm5vdGF0aW9uKFxuICAgICAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVR5cGUuc3RhY2tOYW1lLFxuICAgICAgICAgICAgICAgICAgICBcIlByb2R1Y3Rpb24gaXMgbm90IHNldCBmb3IgUHJvZHVjdGlvbi1zdGFja1wiXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tGdW5jdGlvbihub2RlOiBJQ29uc3RydWN0KSB7XG4gICAgICAgIGlmIChub2RlIGluc3RhbmNlb2YgQ2ZuRnVuY3Rpb24pIHtcbiAgICAgICAgICAgIGlmICghbm9kZS5yZXNlcnZlZENvbmN1cnJlbnRFeGVjdXRpb25zKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRBbm5vdGF0aW9uKFxuICAgICAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVR5cGUucmVzZXJ2ZWRDb25jdXJyZW50Q29uY3VycmVuY3ksXG4gICAgICAgICAgICAgICAgICAgIFwiRnVuY3Rpb24gbXVzdCBoYXZlIHJlc2VydmVkQ29uY3VycmVudENvbmN1cnJlbmN5XCJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBub2RlLnJlc2VydmVkQ29uY3VycmVudEV4ZWN1dGlvbnMgPiBNQVhfQ09OQ1VSUkVOQ1lfTElNSVRcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkQW5ub3RhdGlvbihcbiAgICAgICAgICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VUeXBlLnJlc2VydmVkQ29uY3VycmVudENvbmN1cnJlbmN5LFxuICAgICAgICAgICAgICAgICAgICBcIkZ1bmN0aW9uIHJlc2VydmVkQ29uY3VycmVudENvbmN1cnJlbmN5IHRvbyBoaWdoIVwiXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFub2RlLnRpbWVvdXQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEFubm90YXRpb24oXG4gICAgICAgICAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICAgICAgICAgIFJlc291cmNlVHlwZS5mdW5jdGlvblRpbWVvdXQsXG4gICAgICAgICAgICAgICAgICAgIFwiRnVuY3Rpb24gbXVzdCBoYXZlIHRpbWVvdXRcIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghbm9kZS5tZW1vcnlTaXplKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRBbm5vdGF0aW9uKFxuICAgICAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVR5cGUuZnVuY3Rpb25NZW1vcnlTaXplLFxuICAgICAgICAgICAgICAgICAgICBcIkZ1bmN0aW9uIG11c3QgaGF2ZSBtZW1vcnlTaXplXCJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobm9kZS5ydW50aW1lICE9PSBOT0RFX1JVTlRJTUUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEFubm90YXRpb24oXG4gICAgICAgICAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICAgICAgICAgIFJlc291cmNlVHlwZS5mdW5jdGlvblJ1bnRpbWUsXG4gICAgICAgICAgICAgICAgICAgIGBGdW5jdGlvbiBoYXMgd3JvbmcgcnVudGltZSAke25vZGUucnVudGltZSF9YFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLnN0YWNrU2hvcnROYW1lICYmXG4gICAgICAgICAgICAgICAgbm9kZS5mdW5jdGlvbk5hbWUgJiZcbiAgICAgICAgICAgICAgICAhbm9kZS5mdW5jdGlvbk5hbWUuc3RhcnRzV2l0aCh0aGlzLnN0YWNrU2hvcnROYW1lKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRBbm5vdGF0aW9uKFxuICAgICAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVR5cGUuZnVuY3Rpb25OYW1lLFxuICAgICAgICAgICAgICAgICAgICBgRnVuY3Rpb24gbmFtZSBkb2VzIG5vdCBiZWdpbiB3aXRoICR7dGhpcy5zdGFja1Nob3J0TmFtZX1gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tUYWdzKG5vZGU6IElDb25zdHJ1Y3QpIHtcbiAgICAgICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBTdGFjaykge1xuICAgICAgICAgICAgaWYgKCFub2RlLnRhZ3MudGFnVmFsdWVzKClbU09MVVRJT05fS0VZXSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkQW5ub3RhdGlvbihcbiAgICAgICAgICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VUeXBlLnRhZ1NvbHV0aW9uLFxuICAgICAgICAgICAgICAgICAgICBcIlNvbHV0aW9uIHRhZyBpcyBtaXNzaW5nXCJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja0J1Y2tldChub2RlOiBJQ29uc3RydWN0KSB7XG4gICAgICAgIGlmIChub2RlIGluc3RhbmNlb2YgQ2ZuQnVja2V0KSB7XG4gICAgICAgICAgICBjb25zdCBjID1cbiAgICAgICAgICAgICAgICBub2RlLnB1YmxpY0FjY2Vzc0Jsb2NrQ29uZmlndXJhdGlvbiBhcyBDZm5CdWNrZXQuUHVibGljQWNjZXNzQmxvY2tDb25maWd1cmF0aW9uUHJvcGVydHk7XG5cbiAgICAgICAgICAgIGlmIChjKSB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAhYy5ibG9ja1B1YmxpY0FjbHMgfHxcbiAgICAgICAgICAgICAgICAgICAgIWMuYmxvY2tQdWJsaWNQb2xpY3kgfHxcbiAgICAgICAgICAgICAgICAgICAgIWMuaWdub3JlUHVibGljQWNscyB8fFxuICAgICAgICAgICAgICAgICAgICAhYy5yZXN0cmljdFB1YmxpY0J1Y2tldHNcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRBbm5vdGF0aW9uKFxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlVHlwZS5idWNrZXRQdWJsaWNpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICBcIkNoZWNrIGJ1Y2tldCBwdWJsaWNpdHlcIlxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGlzVmFsaWRQYXRoKHBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBpZiBwYXRoIGluY2x1ZGVzIC4gb3IgeyBjaGVjayBvbmx5IHRoZSB0cmFpbGluZyBwYXJ0IG9mIHBhdGhcbiAgICAgICAgaWYgKHBhdGguaW5jbHVkZXMoXCIuXCIpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkUGF0aChwYXRoLnNwbGl0KFwiLlwiKVswXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGF0aC5pbmNsdWRlcyhcIntcIikpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWRQYXRoKHBhdGguc3BsaXQoXCJ7XCIpWzBdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXJhbUNhc2UocGF0aCkgPT09IHBhdGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgaXNWYWxpZFF1ZXJ5U3RyaW5nKG5hbWU6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gc25ha2VDYXNlKG5hbWUpID09PSBuYW1lO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tSZXNvdXJjZUNhc2luZyhub2RlOiBJQ29uc3RydWN0KSB7XG4gICAgICAgIGlmIChub2RlIGluc3RhbmNlb2YgQ2ZuUmVzb3VyY2UpIHtcbiAgICAgICAgICAgIGlmICghU3RhY2tDaGVja2luZ0FzcGVjdC5pc1ZhbGlkUGF0aChub2RlLnBhdGhQYXJ0KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkQW5ub3RhdGlvbihcbiAgICAgICAgICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VUeXBlLnJlc291cmNlUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgXCJQYXRoIHBhcnQgc2hvdWxkIGJlIGluIGtlYmFiLWNhc2VcIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAobm9kZSBpbnN0YW5jZW9mIENmbk1ldGhvZCkge1xuICAgICAgICAgICAgY29uc3QgaW50ZWdyYXRpb24gPSBub2RlLmludGVncmF0aW9uIGFzIEludGVncmF0aW9uUHJvcGVydHk7XG5cbiAgICAgICAgICAgIGlmIChpbnRlZ3JhdGlvbiAmJiBpbnRlZ3JhdGlvbi5yZXF1ZXN0UGFyYW1ldGVycykge1xuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGludGVncmF0aW9uLnJlcXVlc3RQYXJhbWV0ZXJzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3BsaXQgPSBrZXkuc3BsaXQoXCIuXCIpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlID0gc3BsaXRbMl07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBzcGxpdFszXTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlID09PSBcInF1ZXJ5c3RyaW5nXCIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICFTdGFja0NoZWNraW5nQXNwZWN0LmlzVmFsaWRRdWVyeVN0cmluZyhuYW1lKVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkQW5ub3RhdGlvbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJRdWVyeXN0cmluZyBzaG91bGQgYmUgaW4gc25ha2VfY2FzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrUXVldWVFbmNyeXB0aW9uKG5vZGU6IElDb25zdHJ1Y3QpIHtcbiAgICAgICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBDZm5RdWV1ZSkge1xuICAgICAgICAgICAgaWYgKCFub2RlLmttc01hc3RlcktleUlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRBbm5vdGF0aW9uKFxuICAgICAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVR5cGUucXVldWVFbmNyeXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICBcIlF1ZXVlIG11c3QgaGF2ZSBlbmNyeXB0aW9uIGVuYWJsZWRcIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrTG9nR3JvdXBSZXRlbnRpb24obm9kZTogSUNvbnN0cnVjdCkge1xuICAgICAgICBpZiAobm9kZSBpbnN0YW5jZW9mIExvZ1JldGVudGlvbikge1xuICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBub2RlLm5vZGUuZGVmYXVsdENoaWxkIGFzIHVua25vd24gYXMgUmVjb3JkPFxuICAgICAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgICAgICBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4gICAgICAgICAgICA+O1xuICAgICAgICAgICAgY29uc3QgcmV0ZW50aW9uID0gY2hpbGQuX2NmblByb3BlcnRpZXMuUmV0ZW50aW9uSW5EYXlzO1xuXG4gICAgICAgICAgICBpZiAoIXJldGVudGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkQW5ub3RhdGlvbihcbiAgICAgICAgICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VUeXBlLmxvZ0dyb3VwUmV0ZW50aW9uLFxuICAgICAgICAgICAgICAgICAgICBcIkxvZyBncm91cCBtdXN0IGRlZmluZSBsb2cgZ3JvdXAgcmV0ZW50aW9uXCJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -1,44 +0,0 @@
1
- import { Stack, StackProps } from "aws-cdk-lib";
2
- import { IVpc } from "aws-cdk-lib/aws-ec2";
3
- import { ISecurityGroup } from "aws-cdk-lib/aws-ec2/lib/security-group";
4
- import { ITopic } from "aws-cdk-lib/aws-sns";
5
- import { ISecret } from "aws-cdk-lib/aws-secretsmanager";
6
- import { Function as AWSFunction } from "aws-cdk-lib/aws-lambda";
7
- import { Construct } from "constructs";
8
- import { TrafficType } from "../../../types/traffictype";
9
- import { DBLambdaEnvironment } from "./lambda-configs";
10
- export declare const SOLUTION_KEY = "Solution";
11
- export declare const SSM_KEY_WARNING_TOPIC: string;
12
- export declare const SSM_KEY_ALARM_TOPIC: string;
13
- export interface StackConfiguration {
14
- readonly shortName?: string;
15
- readonly secretId?: string;
16
- readonly alarmTopicArn: string;
17
- readonly warningTopicArn: string;
18
- readonly logsDestinationArn?: string;
19
- readonly vpcId?: string;
20
- readonly lambdaDbSgId?: string;
21
- readonly privateSubnetIds?: string[];
22
- readonly availabilityZones?: string[];
23
- readonly trafficType: TrafficType;
24
- readonly production: boolean;
25
- readonly stackProps: StackProps;
26
- readonly stackFeatures?: {
27
- readonly enableCanaries?: boolean;
28
- readonly enableDocumentation?: boolean;
29
- };
30
- readonly whitelistedResources?: string[];
31
- }
32
- export declare class DigitrafficStack extends Stack {
33
- readonly vpc: IVpc;
34
- readonly lambdaDbSg: ISecurityGroup;
35
- readonly alarmTopic: ITopic;
36
- readonly warningTopic: ITopic;
37
- readonly secret: ISecret;
38
- readonly configuration: StackConfiguration;
39
- constructor(scope: Construct, id: string, configuration: StackConfiguration);
40
- addAspects(): void;
41
- createLambdaEnvironment(): DBLambdaEnvironment;
42
- createDefaultLambdaEnvironment(dbApplication: string): DBLambdaEnvironment;
43
- grantSecret(...lambdas: AWSFunction[]): void;
44
- }
@@ -1,60 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DigitrafficStack = exports.SSM_KEY_ALARM_TOPIC = exports.SSM_KEY_WARNING_TOPIC = exports.SOLUTION_KEY = void 0;
4
- const aws_cdk_lib_1 = require("aws-cdk-lib");
5
- const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
6
- const aws_sns_1 = require("aws-cdk-lib/aws-sns");
7
- const aws_ssm_1 = require("aws-cdk-lib/aws-ssm");
8
- const aws_secretsmanager_1 = require("aws-cdk-lib/aws-secretsmanager");
9
- const stack_checking_aspect_1 = require("./stack-checking-aspect");
10
- const SSM_ROOT = "/digitraffic";
11
- exports.SOLUTION_KEY = "Solution";
12
- const MONITORING_ROOT = "/monitoring";
13
- exports.SSM_KEY_WARNING_TOPIC = `${SSM_ROOT}${MONITORING_ROOT}/warning-topic`;
14
- exports.SSM_KEY_ALARM_TOPIC = `${SSM_ROOT}${MONITORING_ROOT}/alarm-topic`;
15
- class DigitrafficStack extends aws_cdk_lib_1.Stack {
16
- constructor(scope, id, configuration) {
17
- super(scope, id, configuration.stackProps);
18
- this.configuration = configuration;
19
- if (configuration.secretId) {
20
- this.secret = aws_secretsmanager_1.Secret.fromSecretNameV2(this, "Secret", configuration.secretId);
21
- }
22
- // VPC reference construction requires vpcId and availability zones
23
- // private subnets are used in Lambda configuration
24
- if (configuration.vpcId) {
25
- this.vpc = aws_ec2_1.Vpc.fromVpcAttributes(this, "vpc", {
26
- vpcId: configuration.vpcId,
27
- privateSubnetIds: configuration.privateSubnetIds,
28
- availabilityZones: configuration.availabilityZones,
29
- });
30
- }
31
- // security group that allows Lambda database access
32
- if (configuration.lambdaDbSgId) {
33
- this.lambdaDbSg = aws_ec2_1.SecurityGroup.fromSecurityGroupId(this, "LambdaDbSG", configuration.lambdaDbSgId);
34
- }
35
- this.alarmTopic = aws_sns_1.Topic.fromTopicArn(this, "AlarmTopic", aws_ssm_1.StringParameter.fromStringParameterName(this, "AlarmTopicParam", exports.SSM_KEY_ALARM_TOPIC).stringValue);
36
- this.warningTopic = aws_sns_1.Topic.fromTopicArn(this, "WarningTopic", aws_ssm_1.StringParameter.fromStringParameterName(this, "WarningTopicParam", exports.SSM_KEY_WARNING_TOPIC).stringValue);
37
- this.addAspects();
38
- }
39
- addAspects() {
40
- aws_cdk_lib_1.Aspects.of(this).add(stack_checking_aspect_1.StackCheckingAspect.create(this));
41
- }
42
- createLambdaEnvironment() {
43
- return this.createDefaultLambdaEnvironment(this.configuration.shortName);
44
- }
45
- createDefaultLambdaEnvironment(dbApplication) {
46
- return this.configuration.secretId
47
- ? {
48
- SECRET_ID: this.configuration.secretId,
49
- DB_APPLICATION: dbApplication,
50
- }
51
- : {
52
- DB_APPLICATION: dbApplication,
53
- };
54
- }
55
- grantSecret(...lambdas) {
56
- lambdas.forEach((l) => this.secret.grantRead(l));
57
- }
58
- }
59
- exports.DigitrafficStack = DigitrafficStack;
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXdzL2luZnJhL3N0YWNrL3N0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUF5RDtBQUN6RCxpREFBK0Q7QUFFL0QsaURBQW9EO0FBQ3BELGlEQUFzRDtBQUN0RCx1RUFBaUU7QUFHakUsbUVBQThEO0FBSzlELE1BQU0sUUFBUSxHQUFHLGNBQWMsQ0FBQztBQUNuQixRQUFBLFlBQVksR0FBRyxVQUFVLENBQUM7QUFDdkMsTUFBTSxlQUFlLEdBQUcsYUFBYSxDQUFDO0FBRXpCLFFBQUEscUJBQXFCLEdBQUcsR0FBRyxRQUFRLEdBQUcsZUFBZSxnQkFBZ0IsQ0FBQztBQUN0RSxRQUFBLG1CQUFtQixHQUFHLEdBQUcsUUFBUSxHQUFHLGVBQWUsY0FBYyxDQUFDO0FBMkIvRSxNQUFhLGdCQUFpQixTQUFRLG1CQUFLO0lBU3ZDLFlBQ0ksS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLGFBQWlDO1FBRWpDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUUzQyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUVuQyxJQUFJLGFBQWEsQ0FBQyxRQUFRLEVBQUU7WUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRywyQkFBTSxDQUFDLGdCQUFnQixDQUNqQyxJQUFJLEVBQ0osUUFBUSxFQUNSLGFBQWEsQ0FBQyxRQUFRLENBQ3pCLENBQUM7U0FDTDtRQUVELG1FQUFtRTtRQUNuRSxtREFBbUQ7UUFDbkQsSUFBSSxhQUFhLENBQUMsS0FBSyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxHQUFHLEdBQUcsYUFBRyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxLQUFLLEVBQUU7Z0JBQzFDLEtBQUssRUFBRSxhQUFhLENBQUMsS0FBSztnQkFDMUIsZ0JBQWdCLEVBQUUsYUFBYSxDQUFDLGdCQUFnQjtnQkFDaEQsaUJBQWlCLEVBQUUsYUFBYSxDQUFDLGlCQUFrQjthQUN0RCxDQUFDLENBQUM7U0FDTjtRQUVELG9EQUFvRDtRQUNwRCxJQUFJLGFBQWEsQ0FBQyxZQUFZLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFVBQVUsR0FBRyx1QkFBYSxDQUFDLG1CQUFtQixDQUMvQyxJQUFJLEVBQ0osWUFBWSxFQUNaLGFBQWEsQ0FBQyxZQUFZLENBQzdCLENBQUM7U0FDTDtRQUVELElBQUksQ0FBQyxVQUFVLEdBQUcsZUFBSyxDQUFDLFlBQVksQ0FDaEMsSUFBSSxFQUNKLFlBQVksRUFDWix5QkFBZSxDQUFDLHVCQUF1QixDQUNuQyxJQUFJLEVBQ0osaUJBQWlCLEVBQ2pCLDJCQUFtQixDQUN0QixDQUFDLFdBQVcsQ0FDaEIsQ0FBQztRQUNGLElBQUksQ0FBQyxZQUFZLEdBQUcsZUFBSyxDQUFDLFlBQVksQ0FDbEMsSUFBSSxFQUNKLGNBQWMsRUFDZCx5QkFBZSxDQUFDLHVCQUF1QixDQUNuQyxJQUFJLEVBQ0osbUJBQW1CLEVBQ25CLDZCQUFxQixDQUN4QixDQUFDLFdBQVcsQ0FDaEIsQ0FBQztRQUVGLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsVUFBVTtRQUNOLHFCQUFPLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQywyQ0FBbUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsdUJBQXVCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLDhCQUE4QixDQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVUsQ0FDaEMsQ0FBQztJQUNOLENBQUM7SUFFRCw4QkFBOEIsQ0FBQyxhQUFxQjtRQUNoRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUTtZQUM5QixDQUFDLENBQUM7Z0JBQ0ksU0FBUyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUTtnQkFDdEMsY0FBYyxFQUFFLGFBQWE7YUFDaEM7WUFDSCxDQUFDLENBQUM7Z0JBQ0ksY0FBYyxFQUFFLGFBQWE7YUFDaEMsQ0FBQztJQUNaLENBQUM7SUFFRCxXQUFXLENBQUMsR0FBRyxPQUFzQjtRQUNqQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBYyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7Q0FDSjtBQTNGRCw0Q0EyRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3BlY3RzLCBTdGFjaywgU3RhY2tQcm9wcyB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgSVZwYywgU2VjdXJpdHlHcm91cCwgVnBjIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCB7IElTZWN1cml0eUdyb3VwIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzIvbGliL3NlY3VyaXR5LWdyb3VwXCI7XG5pbXBvcnQgeyBJVG9waWMsIFRvcGljIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zbnNcIjtcbmltcG9ydCB7IFN0cmluZ1BhcmFtZXRlciB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc3NtXCI7XG5pbXBvcnQgeyBJU2VjcmV0LCBTZWNyZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyXCI7XG5pbXBvcnQgeyBGdW5jdGlvbiBhcyBBV1NGdW5jdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5cbmltcG9ydCB7IFN0YWNrQ2hlY2tpbmdBc3BlY3QgfSBmcm9tIFwiLi9zdGFjay1jaGVja2luZy1hc3BlY3RcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBUcmFmZmljVHlwZSB9IGZyb20gXCIuLi8uLi8uLi90eXBlcy90cmFmZmljdHlwZVwiO1xuaW1wb3J0IHsgREJMYW1iZGFFbnZpcm9ubWVudCB9IGZyb20gXCIuL2xhbWJkYS1jb25maWdzXCI7XG5cbmNvbnN0IFNTTV9ST09UID0gXCIvZGlnaXRyYWZmaWNcIjtcbmV4cG9ydCBjb25zdCBTT0xVVElPTl9LRVkgPSBcIlNvbHV0aW9uXCI7XG5jb25zdCBNT05JVE9SSU5HX1JPT1QgPSBcIi9tb25pdG9yaW5nXCI7XG5cbmV4cG9ydCBjb25zdCBTU01fS0VZX1dBUk5JTkdfVE9QSUMgPSBgJHtTU01fUk9PVH0ke01PTklUT1JJTkdfUk9PVH0vd2FybmluZy10b3BpY2A7XG5leHBvcnQgY29uc3QgU1NNX0tFWV9BTEFSTV9UT1BJQyA9IGAke1NTTV9ST09UfSR7TU9OSVRPUklOR19ST09UfS9hbGFybS10b3BpY2A7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhY2tDb25maWd1cmF0aW9uIHtcbiAgICByZWFkb25seSBzaG9ydE5hbWU/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgc2VjcmV0SWQ/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgYWxhcm1Ub3BpY0Fybjogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHdhcm5pbmdUb3BpY0Fybjogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGxvZ3NEZXN0aW5hdGlvbkFybj86IHN0cmluZztcblxuICAgIHJlYWRvbmx5IHZwY0lkPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGxhbWJkYURiU2dJZD86IHN0cmluZztcbiAgICByZWFkb25seSBwcml2YXRlU3VibmV0SWRzPzogc3RyaW5nW107XG4gICAgcmVhZG9ubHkgYXZhaWxhYmlsaXR5Wm9uZXM/OiBzdHJpbmdbXTtcblxuICAgIHJlYWRvbmx5IHRyYWZmaWNUeXBlOiBUcmFmZmljVHlwZTtcbiAgICByZWFkb25seSBwcm9kdWN0aW9uOiBib29sZWFuO1xuICAgIHJlYWRvbmx5IHN0YWNrUHJvcHM6IFN0YWNrUHJvcHM7XG5cbiAgICByZWFkb25seSBzdGFja0ZlYXR1cmVzPzoge1xuICAgICAgICByZWFkb25seSBlbmFibGVDYW5hcmllcz86IGJvb2xlYW47XG4gICAgICAgIHJlYWRvbmx5IGVuYWJsZURvY3VtZW50YXRpb24/OiBib29sZWFuO1xuICAgIH07XG5cbiAgICAvLy8gd2hpdGVsaXN0IHJlc291cmNlcyBmb3IgU3RhY2tDaGVja2luZ0FzcGVjdFxuICAgIHJlYWRvbmx5IHdoaXRlbGlzdGVkUmVzb3VyY2VzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBjbGFzcyBEaWdpdHJhZmZpY1N0YWNrIGV4dGVuZHMgU3RhY2sge1xuICAgIHJlYWRvbmx5IHZwYzogSVZwYztcbiAgICByZWFkb25seSBsYW1iZGFEYlNnOiBJU2VjdXJpdHlHcm91cDtcbiAgICByZWFkb25seSBhbGFybVRvcGljOiBJVG9waWM7XG4gICAgcmVhZG9ubHkgd2FybmluZ1RvcGljOiBJVG9waWM7XG4gICAgcmVhZG9ubHkgc2VjcmV0OiBJU2VjcmV0O1xuXG4gICAgcmVhZG9ubHkgY29uZmlndXJhdGlvbjogU3RhY2tDb25maWd1cmF0aW9uO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgICAgIGlkOiBzdHJpbmcsXG4gICAgICAgIGNvbmZpZ3VyYXRpb246IFN0YWNrQ29uZmlndXJhdGlvblxuICAgICkge1xuICAgICAgICBzdXBlcihzY29wZSwgaWQsIGNvbmZpZ3VyYXRpb24uc3RhY2tQcm9wcyk7XG5cbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbjtcblxuICAgICAgICBpZiAoY29uZmlndXJhdGlvbi5zZWNyZXRJZCkge1xuICAgICAgICAgICAgdGhpcy5zZWNyZXQgPSBTZWNyZXQuZnJvbVNlY3JldE5hbWVWMihcbiAgICAgICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgICAgIFwiU2VjcmV0XCIsXG4gICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi5zZWNyZXRJZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFZQQyByZWZlcmVuY2UgY29uc3RydWN0aW9uIHJlcXVpcmVzIHZwY0lkIGFuZCBhdmFpbGFiaWxpdHkgem9uZXNcbiAgICAgICAgLy8gcHJpdmF0ZSBzdWJuZXRzIGFyZSB1c2VkIGluIExhbWJkYSBjb25maWd1cmF0aW9uXG4gICAgICAgIGlmIChjb25maWd1cmF0aW9uLnZwY0lkKSB7XG4gICAgICAgICAgICB0aGlzLnZwYyA9IFZwYy5mcm9tVnBjQXR0cmlidXRlcyh0aGlzLCBcInZwY1wiLCB7XG4gICAgICAgICAgICAgICAgdnBjSWQ6IGNvbmZpZ3VyYXRpb24udnBjSWQsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZVN1Ym5ldElkczogY29uZmlndXJhdGlvbi5wcml2YXRlU3VibmV0SWRzLFxuICAgICAgICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmVzOiBjb25maWd1cmF0aW9uLmF2YWlsYWJpbGl0eVpvbmVzISxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gc2VjdXJpdHkgZ3JvdXAgdGhhdCBhbGxvd3MgTGFtYmRhIGRhdGFiYXNlIGFjY2Vzc1xuICAgICAgICBpZiAoY29uZmlndXJhdGlvbi5sYW1iZGFEYlNnSWQpIHtcbiAgICAgICAgICAgIHRoaXMubGFtYmRhRGJTZyA9IFNlY3VyaXR5R3JvdXAuZnJvbVNlY3VyaXR5R3JvdXBJZChcbiAgICAgICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgICAgIFwiTGFtYmRhRGJTR1wiLFxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ubGFtYmRhRGJTZ0lkXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hbGFybVRvcGljID0gVG9waWMuZnJvbVRvcGljQXJuKFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgIFwiQWxhcm1Ub3BpY1wiLFxuICAgICAgICAgICAgU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJOYW1lKFxuICAgICAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICAgICAgXCJBbGFybVRvcGljUGFyYW1cIixcbiAgICAgICAgICAgICAgICBTU01fS0VZX0FMQVJNX1RPUElDXG4gICAgICAgICAgICApLnN0cmluZ1ZhbHVlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMud2FybmluZ1RvcGljID0gVG9waWMuZnJvbVRvcGljQXJuKFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgIFwiV2FybmluZ1RvcGljXCIsXG4gICAgICAgICAgICBTdHJpbmdQYXJhbWV0ZXIuZnJvbVN0cmluZ1BhcmFtZXRlck5hbWUoXG4gICAgICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgICAgICBcIldhcm5pbmdUb3BpY1BhcmFtXCIsXG4gICAgICAgICAgICAgICAgU1NNX0tFWV9XQVJOSU5HX1RPUElDXG4gICAgICAgICAgICApLnN0cmluZ1ZhbHVlXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5hZGRBc3BlY3RzKCk7XG4gICAgfVxuXG4gICAgYWRkQXNwZWN0cygpIHtcbiAgICAgICAgQXNwZWN0cy5vZih0aGlzKS5hZGQoU3RhY2tDaGVja2luZ0FzcGVjdC5jcmVhdGUodGhpcykpO1xuICAgIH1cblxuICAgIGNyZWF0ZUxhbWJkYUVudmlyb25tZW50KCk6IERCTGFtYmRhRW52aXJvbm1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVEZWZhdWx0TGFtYmRhRW52aXJvbm1lbnQoXG4gICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uc2hvcnROYW1lIVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNyZWF0ZURlZmF1bHRMYW1iZGFFbnZpcm9ubWVudChkYkFwcGxpY2F0aW9uOiBzdHJpbmcpOiBEQkxhbWJkYUVudmlyb25tZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvbi5zZWNyZXRJZFxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICBTRUNSRVRfSUQ6IHRoaXMuY29uZmlndXJhdGlvbi5zZWNyZXRJZCxcbiAgICAgICAgICAgICAgICAgIERCX0FQUExJQ0FUSU9OOiBkYkFwcGxpY2F0aW9uLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgIERCX0FQUExJQ0FUSU9OOiBkYkFwcGxpY2F0aW9uLFxuICAgICAgICAgICAgICB9O1xuICAgIH1cblxuICAgIGdyYW50U2VjcmV0KC4uLmxhbWJkYXM6IEFXU0Z1bmN0aW9uW10pIHtcbiAgICAgICAgbGFtYmRhcy5mb3JFYWNoKChsOiBBV1NGdW5jdGlvbikgPT4gdGhpcy5zZWNyZXQuZ3JhbnRSZWFkKGwpKTtcbiAgICB9XG59XG4iXX0=
@@ -1,17 +0,0 @@
1
- import { CfnSubscriptionFilter } from 'aws-cdk-lib/aws-logs';
2
- import { Function } from 'aws-cdk-lib/aws-lambda';
3
- import { DigitrafficStack } from "./stack";
4
- import { Construct } from "constructs";
5
- import { MonitoredFunction } from "./monitoredfunction";
6
- /**
7
- * Creates a subscription filter that subscribes to a Lambda Log Group and delivers the logs to another destination.
8
- * https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-subscriptionfilter.html
9
- * @param lambda The Lambda function, needed to create a dependency
10
- * @param lambdaName The Lambda name from which the Log Group name is derived
11
- * @param logDestinationArn Destination for streamed logs
12
- * @param stack CloudFormation stack
13
- */
14
- export declare function createSubscription(lambda: Function, lambdaName: string, logDestinationArn: string | undefined, stack: Construct): CfnSubscriptionFilter | undefined;
15
- export declare class DigitrafficLogSubscriptions {
16
- constructor(stack: DigitrafficStack, ...lambdas: MonitoredFunction[]);
17
- }
@@ -1,41 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DigitrafficLogSubscriptions = exports.createSubscription = void 0;
4
- const aws_logs_1 = require("aws-cdk-lib/aws-logs");
5
- /**
6
- * Creates a subscription filter that subscribes to a Lambda Log Group and delivers the logs to another destination.
7
- * https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-subscriptionfilter.html
8
- * @param lambda The Lambda function, needed to create a dependency
9
- * @param lambdaName The Lambda name from which the Log Group name is derived
10
- * @param logDestinationArn Destination for streamed logs
11
- * @param stack CloudFormation stack
12
- */
13
- function createSubscription(lambda, lambdaName, logDestinationArn, stack) {
14
- if (logDestinationArn == undefined) {
15
- return undefined;
16
- }
17
- const filter = new aws_logs_1.CfnSubscriptionFilter(stack, `${lambdaName}LogsSubscription`, {
18
- logGroupName: `/aws/lambda/${lambdaName}`,
19
- filterPattern: '',
20
- destinationArn: logDestinationArn,
21
- });
22
- filter.node.addDependency(lambda);
23
- return filter;
24
- }
25
- exports.createSubscription = createSubscription;
26
- class DigitrafficLogSubscriptions {
27
- constructor(stack, ...lambdas) {
28
- if (stack.configuration.logsDestinationArn) {
29
- lambdas.forEach(lambda => {
30
- const filter = new aws_logs_1.CfnSubscriptionFilter(stack, `${lambda.givenName}LogsSubscription`, {
31
- logGroupName: `/aws/lambda/${lambda.givenName}`,
32
- filterPattern: '',
33
- destinationArn: stack.configuration.logsDestinationArn,
34
- });
35
- filter.node.addDependency(lambda);
36
- });
37
- }
38
- }
39
- }
40
- exports.DigitrafficLogSubscriptions = DigitrafficLogSubscriptions;
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2F3cy9pbmZyYS9zdGFjay9zdWJzY3JpcHRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBQTJEO0FBTTNEOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixrQkFBa0IsQ0FBQyxNQUFnQixFQUFFLFVBQWtCLEVBQUUsaUJBQXFDLEVBQUUsS0FBZ0I7SUFDNUgsSUFBSSxpQkFBaUIsSUFBSSxTQUFTLEVBQUU7UUFDaEMsT0FBTyxTQUFTLENBQUM7S0FDcEI7SUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLGdDQUFxQixDQUFDLEtBQUssRUFBRSxHQUFHLFVBQVUsa0JBQWtCLEVBQUU7UUFDN0UsWUFBWSxFQUFFLGVBQWUsVUFBVSxFQUFFO1FBQ3pDLGFBQWEsRUFBRSxFQUFFO1FBQ2pCLGNBQWMsRUFBRSxpQkFBaUI7S0FDcEMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFbEMsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQztBQWJELGdEQWFDO0FBRUQsTUFBYSwyQkFBMkI7SUFDcEMsWUFBWSxLQUF1QixFQUFFLEdBQUcsT0FBNEI7UUFDaEUsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLGtCQUFrQixFQUFFO1lBQ3hDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ3JCLE1BQU0sTUFBTSxHQUFHLElBQUksZ0NBQXFCLENBQUMsS0FBSyxFQUFFLEdBQUcsTUFBTSxDQUFDLFNBQVMsa0JBQWtCLEVBQUU7b0JBQ25GLFlBQVksRUFBRSxlQUFlLE1BQU0sQ0FBQyxTQUFTLEVBQUU7b0JBQy9DLGFBQWEsRUFBRSxFQUFFO29CQUNqQixjQUFjLEVBQUUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxrQkFBNEI7aUJBQ25FLENBQUMsQ0FBQztnQkFFSCxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN0QyxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztDQUNKO0FBZEQsa0VBY0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NmblN1YnNjcmlwdGlvbkZpbHRlcn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0IHtGdW5jdGlvbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQge0RpZ2l0cmFmZmljU3RhY2t9IGZyb20gXCIuL3N0YWNrXCI7XG5pbXBvcnQge0NvbnN0cnVjdH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7TW9uaXRvcmVkRnVuY3Rpb259IGZyb20gXCIuL21vbml0b3JlZGZ1bmN0aW9uXCI7XG5cbi8qKlxuICogQ3JlYXRlcyBhIHN1YnNjcmlwdGlvbiBmaWx0ZXIgdGhhdCBzdWJzY3JpYmVzIHRvIGEgTGFtYmRhIExvZyBHcm91cCBhbmQgZGVsaXZlcnMgdGhlIGxvZ3MgdG8gYW5vdGhlciBkZXN0aW5hdGlvbi5cbiAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1sb2dzLXN1YnNjcmlwdGlvbmZpbHRlci5odG1sXG4gKiBAcGFyYW0gbGFtYmRhIFRoZSBMYW1iZGEgZnVuY3Rpb24sIG5lZWRlZCB0byBjcmVhdGUgYSBkZXBlbmRlbmN5XG4gKiBAcGFyYW0gbGFtYmRhTmFtZSBUaGUgTGFtYmRhIG5hbWUgZnJvbSB3aGljaCB0aGUgTG9nIEdyb3VwIG5hbWUgaXMgZGVyaXZlZFxuICogQHBhcmFtIGxvZ0Rlc3RpbmF0aW9uQXJuIERlc3RpbmF0aW9uIGZvciBzdHJlYW1lZCBsb2dzXG4gKiBAcGFyYW0gc3RhY2sgQ2xvdWRGb3JtYXRpb24gc3RhY2tcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVN1YnNjcmlwdGlvbihsYW1iZGE6IEZ1bmN0aW9uLCBsYW1iZGFOYW1lOiBzdHJpbmcsIGxvZ0Rlc3RpbmF0aW9uQXJuOiBzdHJpbmcgfCB1bmRlZmluZWQsIHN0YWNrOiBDb25zdHJ1Y3QpOiBDZm5TdWJzY3JpcHRpb25GaWx0ZXIgfCB1bmRlZmluZWQge1xuICAgIGlmIChsb2dEZXN0aW5hdGlvbkFybiA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3QgZmlsdGVyID0gbmV3IENmblN1YnNjcmlwdGlvbkZpbHRlcihzdGFjaywgYCR7bGFtYmRhTmFtZX1Mb2dzU3Vic2NyaXB0aW9uYCwge1xuICAgICAgICBsb2dHcm91cE5hbWU6IGAvYXdzL2xhbWJkYS8ke2xhbWJkYU5hbWV9YCxcbiAgICAgICAgZmlsdGVyUGF0dGVybjogJycsXG4gICAgICAgIGRlc3RpbmF0aW9uQXJuOiBsb2dEZXN0aW5hdGlvbkFybixcbiAgICB9KTtcblxuICAgIGZpbHRlci5ub2RlLmFkZERlcGVuZGVuY3kobGFtYmRhKTtcblxuICAgIHJldHVybiBmaWx0ZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBEaWdpdHJhZmZpY0xvZ1N1YnNjcmlwdGlvbnMge1xuICAgIGNvbnN0cnVjdG9yKHN0YWNrOiBEaWdpdHJhZmZpY1N0YWNrLCAuLi5sYW1iZGFzOiBNb25pdG9yZWRGdW5jdGlvbltdKSB7XG4gICAgICAgIGlmIChzdGFjay5jb25maWd1cmF0aW9uLmxvZ3NEZXN0aW5hdGlvbkFybikge1xuICAgICAgICAgICAgbGFtYmRhcy5mb3JFYWNoKGxhbWJkYSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyID0gbmV3IENmblN1YnNjcmlwdGlvbkZpbHRlcihzdGFjaywgYCR7bGFtYmRhLmdpdmVuTmFtZX1Mb2dzU3Vic2NyaXB0aW9uYCwge1xuICAgICAgICAgICAgICAgICAgICBsb2dHcm91cE5hbWU6IGAvYXdzL2xhbWJkYS8ke2xhbWJkYS5naXZlbk5hbWV9YCxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGF0dGVybjogJycsXG4gICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uQXJuOiBzdGFjay5jb25maWd1cmF0aW9uLmxvZ3NEZXN0aW5hdGlvbkFybiBhcyBzdHJpbmcsXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBmaWx0ZXIubm9kZS5hZGREZXBlbmRlbmN5KGxhbWJkYSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -1,15 +0,0 @@
1
- import { IApiKey, RestApi } from 'aws-cdk-lib/aws-apigateway';
2
- /**
3
- * Creates an usage plan for a REST API with a single API key
4
- * @param api The REST API
5
- * @param apiKeyId Id for the API key, this is a surrogate id for CDK, not displayed anywhere
6
- * @param apiKeyName Name for the API key, this is displayed in the AWS Console
7
- * @deprecated Creates randomized API key names, use createDefaultUsagePlan instead
8
- */
9
- export declare function createUsagePlan(api: RestApi, apiKeyId: string, apiKeyName: string): IApiKey;
10
- /**
11
- * Creates a default usage plan for a REST API with a single API key
12
- * @param api The REST API
13
- * @param apiName Name of the api. Will generate key: apiName + ' API Key' and plan: apiName + ' API Usage Plan'
14
- */
15
- export declare function createDefaultUsagePlan(api: RestApi, apiName: string): IApiKey;
@@ -1,42 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createDefaultUsagePlan = exports.createUsagePlan = void 0;
4
- /**
5
- * Creates an usage plan for a REST API with a single API key
6
- * @param api The REST API
7
- * @param apiKeyId Id for the API key, this is a surrogate id for CDK, not displayed anywhere
8
- * @param apiKeyName Name for the API key, this is displayed in the AWS Console
9
- * @deprecated Creates randomized API key names, use createDefaultUsagePlan instead
10
- */
11
- function createUsagePlan(api, apiKeyId, apiKeyName) {
12
- const apiKey = api.addApiKey(apiKeyId);
13
- const plan = api.addUsagePlan(apiKeyName, {
14
- name: apiKeyName,
15
- });
16
- plan.addApiStage({
17
- stage: api.deploymentStage,
18
- });
19
- plan.addApiKey(apiKey);
20
- return apiKey;
21
- }
22
- exports.createUsagePlan = createUsagePlan;
23
- /**
24
- * Creates a default usage plan for a REST API with a single API key
25
- * @param api The REST API
26
- * @param apiName Name of the api. Will generate key: apiName + ' API Key' and plan: apiName + ' API Usage Plan'
27
- */
28
- function createDefaultUsagePlan(api, apiName) {
29
- const apiKeyName = apiName + ' API Key';
30
- const usagePlanName = apiName + ' API Usage Plan';
31
- const apiKey = api.addApiKey(apiKeyName, { apiKeyName: apiKeyName });
32
- const plan = api.addUsagePlan(usagePlanName, {
33
- name: usagePlanName,
34
- });
35
- plan.addApiStage({
36
- stage: api.deploymentStage,
37
- });
38
- plan.addApiKey(apiKey);
39
- return apiKey;
40
- }
41
- exports.createDefaultUsagePlan = createDefaultUsagePlan;
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNhZ2UtcGxhbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2luZnJhL3VzYWdlLXBsYW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOzs7Ozs7R0FNRztBQUNILFNBQWdCLGVBQWUsQ0FBQyxHQUFZLEVBQUUsUUFBZ0IsRUFBRSxVQUFrQjtJQUM5RSxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFO1FBQ3RDLElBQUksRUFBRSxVQUFVO0tBQ25CLENBQUMsQ0FBQztJQUNILElBQUksQ0FBQyxXQUFXLENBQUM7UUFDYixLQUFLLEVBQUUsR0FBRyxDQUFDLGVBQWU7S0FDN0IsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUV2QixPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDO0FBWEQsMENBV0M7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0Isc0JBQXNCLENBQUMsR0FBWSxFQUFFLE9BQWU7SUFDaEUsTUFBTSxVQUFVLEdBQUcsT0FBTyxHQUFHLFVBQVUsQ0FBQztJQUN4QyxNQUFNLGFBQWEsR0FBRyxPQUFPLEdBQUcsaUJBQWlCLENBQUM7SUFDbEQsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUNyRSxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRTtRQUN6QyxJQUFJLEVBQUUsYUFBYTtLQUN0QixDQUFDLENBQUM7SUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ2IsS0FBSyxFQUFFLEdBQUcsQ0FBQyxlQUFlO0tBQzdCLENBQUMsQ0FBQztJQUNILElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFdkIsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQztBQWJELHdEQWFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJQXBpS2V5LCBSZXN0QXBpfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYXBpZ2F0ZXdheSc7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiB1c2FnZSBwbGFuIGZvciBhIFJFU1QgQVBJIHdpdGggYSBzaW5nbGUgQVBJIGtleVxuICogQHBhcmFtIGFwaSBUaGUgUkVTVCBBUElcbiAqIEBwYXJhbSBhcGlLZXlJZCBJZCBmb3IgdGhlIEFQSSBrZXksIHRoaXMgaXMgYSBzdXJyb2dhdGUgaWQgZm9yIENESywgbm90IGRpc3BsYXllZCBhbnl3aGVyZVxuICogQHBhcmFtIGFwaUtleU5hbWUgTmFtZSBmb3IgdGhlIEFQSSBrZXksIHRoaXMgaXMgZGlzcGxheWVkIGluIHRoZSBBV1MgQ29uc29sZVxuICogQGRlcHJlY2F0ZWQgQ3JlYXRlcyByYW5kb21pemVkIEFQSSBrZXkgbmFtZXMsIHVzZSBjcmVhdGVEZWZhdWx0VXNhZ2VQbGFuIGluc3RlYWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVVzYWdlUGxhbihhcGk6IFJlc3RBcGksIGFwaUtleUlkOiBzdHJpbmcsIGFwaUtleU5hbWU6IHN0cmluZyk6IElBcGlLZXkge1xuICAgIGNvbnN0IGFwaUtleSA9IGFwaS5hZGRBcGlLZXkoYXBpS2V5SWQpO1xuICAgIGNvbnN0IHBsYW4gPSBhcGkuYWRkVXNhZ2VQbGFuKGFwaUtleU5hbWUsIHtcbiAgICAgICAgbmFtZTogYXBpS2V5TmFtZSxcbiAgICB9KTtcbiAgICBwbGFuLmFkZEFwaVN0YWdlKHtcbiAgICAgICAgc3RhZ2U6IGFwaS5kZXBsb3ltZW50U3RhZ2UsXG4gICAgfSk7XG4gICAgcGxhbi5hZGRBcGlLZXkoYXBpS2V5KTtcblxuICAgIHJldHVybiBhcGlLZXk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGRlZmF1bHQgdXNhZ2UgcGxhbiBmb3IgYSBSRVNUIEFQSSB3aXRoIGEgc2luZ2xlIEFQSSBrZXlcbiAqIEBwYXJhbSBhcGkgVGhlIFJFU1QgQVBJXG4gKiBAcGFyYW0gYXBpTmFtZSBOYW1lIG9mIHRoZSBhcGkuIFdpbGwgZ2VuZXJhdGUga2V5OiBhcGlOYW1lICsgJyBBUEkgS2V5JyBhbmQgcGxhbjogYXBpTmFtZSArICcgQVBJIFVzYWdlIFBsYW4nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEZWZhdWx0VXNhZ2VQbGFuKGFwaTogUmVzdEFwaSwgYXBpTmFtZTogc3RyaW5nKTogSUFwaUtleSB7XG4gICAgY29uc3QgYXBpS2V5TmFtZSA9IGFwaU5hbWUgKyAnIEFQSSBLZXknO1xuICAgIGNvbnN0IHVzYWdlUGxhbk5hbWUgPSBhcGlOYW1lICsgJyBBUEkgVXNhZ2UgUGxhbic7XG4gICAgY29uc3QgYXBpS2V5ID0gYXBpLmFkZEFwaUtleShhcGlLZXlOYW1lLCB7IGFwaUtleU5hbWU6IGFwaUtleU5hbWUgfSk7XG4gICAgY29uc3QgcGxhbiA9IGFwaS5hZGRVc2FnZVBsYW4odXNhZ2VQbGFuTmFtZSwge1xuICAgICAgICBuYW1lOiB1c2FnZVBsYW5OYW1lLFxuICAgIH0pO1xuICAgIHBsYW4uYWRkQXBpU3RhZ2Uoe1xuICAgICAgICBzdGFnZTogYXBpLmRlcGxveW1lbnRTdGFnZSxcbiAgICB9KTtcbiAgICBwbGFuLmFkZEFwaUtleShhcGlLZXkpO1xuXG4gICAgcmV0dXJuIGFwaUtleTtcbn1cbiJdfQ==
@@ -1,2 +0,0 @@
1
- import { APIGateway } from "aws-sdk";
2
- export declare function getApiKeyFromAPIGateway(keyId: string): Promise<APIGateway.Types.ApiKey>;
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getApiKeyFromAPIGateway = void 0;
4
- const aws_sdk_1 = require("aws-sdk");
5
- function getApiKeyFromAPIGateway(keyId) {
6
- const agw = new aws_sdk_1.APIGateway();
7
- return agw.getApiKey({
8
- apiKey: keyId,
9
- includeValue: true,
10
- }).promise();
11
- }
12
- exports.getApiKeyFromAPIGateway = getApiKeyFromAPIGateway;
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpa2V5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9ydW50aW1lL2FwaWtleS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQ0FBbUM7QUFFbkMsU0FBZ0IsdUJBQXVCLENBQUMsS0FBYTtJQUNqRCxNQUFNLEdBQUcsR0FBRyxJQUFJLG9CQUFVLEVBQUUsQ0FBQztJQUM3QixPQUFPLEdBQUcsQ0FBQyxTQUFTLENBQUM7UUFDakIsTUFBTSxFQUFFLEtBQUs7UUFDYixZQUFZLEVBQUUsSUFBSTtLQUNyQixDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDakIsQ0FBQztBQU5ELDBEQU1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBUElHYXRld2F5fSBmcm9tIFwiYXdzLXNka1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXBpS2V5RnJvbUFQSUdhdGV3YXkoa2V5SWQ6IHN0cmluZyk6IFByb21pc2U8QVBJR2F0ZXdheS5UeXBlcy5BcGlLZXk+IHtcbiAgICBjb25zdCBhZ3cgPSBuZXcgQVBJR2F0ZXdheSgpO1xuICAgIHJldHVybiBhZ3cuZ2V0QXBpS2V5KHtcbiAgICAgICAgYXBpS2V5OiBrZXlJZCxcbiAgICAgICAgaW5jbHVkZVZhbHVlOiB0cnVlLFxuICAgIH0pLnByb21pc2UoKTtcbn1cbiJdfQ==
@@ -1,8 +0,0 @@
1
- import { IntegrationResponse } from "aws-cdk-lib/aws-apigateway";
2
- import { MediaType } from "../types/mediatypes";
3
- export declare abstract class DigitrafficIntegrationResponse {
4
- static ok(mediaType: MediaType): IntegrationResponse;
5
- static badRequest(mediaType?: MediaType): IntegrationResponse;
6
- static notImplemented(mediaType?: MediaType): IntegrationResponse;
7
- static create(statusCode: string, mediaType: MediaType): IntegrationResponse;
8
- }
@@ -1,26 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DigitrafficIntegrationResponse = void 0;
4
- const mediatypes_1 = require("../types/mediatypes");
5
- const response_1 = require("../infra/api/response");
6
- class DigitrafficIntegrationResponse {
7
- static ok(mediaType) {
8
- return this.create("200", mediaType);
9
- }
10
- static badRequest(mediaType) {
11
- return this.create("400", mediaType ?? mediatypes_1.MediaType.TEXT_PLAIN);
12
- }
13
- static notImplemented(mediaType) {
14
- return this.create("501", mediaType ?? mediatypes_1.MediaType.TEXT_PLAIN);
15
- }
16
- static create(statusCode, mediaType) {
17
- return {
18
- statusCode,
19
- responseTemplates: {
20
- [mediaType]: response_1.RESPONSE_DEFAULT_LAMBDA,
21
- },
22
- };
23
- }
24
- }
25
- exports.DigitrafficIntegrationResponse = DigitrafficIntegrationResponse;
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXRyYWZmaWMtaW50ZWdyYXRpb24tcmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL3J1bnRpbWUvZGlnaXRyYWZmaWMtaW50ZWdyYXRpb24tcmVzcG9uc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0Esb0RBQThDO0FBQzlDLG9EQUE4RDtBQUU5RCxNQUFzQiw4QkFBOEI7SUFFaEQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxTQUFvQjtRQUMxQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLFNBQXFCO1FBQ25DLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsU0FBUyxJQUFJLHNCQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBcUI7UUFDdkMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxTQUFTLElBQUksc0JBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFrQixFQUFFLFNBQW9CO1FBQ2xELE9BQU87WUFDSCxVQUFVO1lBQ1YsaUJBQWlCLEVBQUU7Z0JBQ2YsQ0FBQyxTQUFTLENBQUMsRUFBRSxrQ0FBdUI7YUFDdkM7U0FDSixDQUFDO0lBQ04sQ0FBQztDQUNKO0FBdEJELHdFQXNCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW50ZWdyYXRpb25SZXNwb25zZX0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5XCI7XG5pbXBvcnQge01lZGlhVHlwZX0gZnJvbSBcIi4uL3R5cGVzL21lZGlhdHlwZXNcIjtcbmltcG9ydCB7UkVTUE9OU0VfREVGQVVMVF9MQU1CREF9IGZyb20gXCIuLi9pbmZyYS9hcGkvcmVzcG9uc2VcIjtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERpZ2l0cmFmZmljSW50ZWdyYXRpb25SZXNwb25zZSB7XG5cbiAgICBzdGF0aWMgb2sobWVkaWFUeXBlOiBNZWRpYVR5cGUpOiBJbnRlZ3JhdGlvblJlc3BvbnNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlKFwiMjAwXCIsIG1lZGlhVHlwZSk7XG4gICAgfVxuXG4gICAgc3RhdGljIGJhZFJlcXVlc3QobWVkaWFUeXBlPzogTWVkaWFUeXBlKTogSW50ZWdyYXRpb25SZXNwb25zZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZShcIjQwMFwiLCBtZWRpYVR5cGUgPz8gTWVkaWFUeXBlLlRFWFRfUExBSU4pO1xuICAgIH1cblxuICAgIHN0YXRpYyBub3RJbXBsZW1lbnRlZChtZWRpYVR5cGU/OiBNZWRpYVR5cGUpOiBJbnRlZ3JhdGlvblJlc3BvbnNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlKFwiNTAxXCIsIG1lZGlhVHlwZSA/PyBNZWRpYVR5cGUuVEVYVF9QTEFJTik7XG4gICAgfVxuXG4gICAgc3RhdGljIGNyZWF0ZShzdGF0dXNDb2RlOiBzdHJpbmcsIG1lZGlhVHlwZTogTWVkaWFUeXBlKTogSW50ZWdyYXRpb25SZXNwb25zZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdGF0dXNDb2RlLFxuICAgICAgICAgICAgcmVzcG9uc2VUZW1wbGF0ZXM6IHtcbiAgICAgICAgICAgICAgICBbbWVkaWFUeXBlXTogUkVTUE9OU0VfREVGQVVMVF9MQU1CREEsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbn1cblxuIl19
@@ -1 +0,0 @@
1
- export declare function envValue(key: string): string;
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.envValue = void 0;
4
- function envValue(key) {
5
- const value = process.env[key];
6
- if (value == null) {
7
- throw new Error(`Missing environment value ${key}`);
8
- }
9
- return value;
10
- }
11
- exports.envValue = envValue;
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL3J1bnRpbWUvZW52aXJvbm1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsU0FBZ0IsUUFBUSxDQUFDLEdBQVc7SUFDaEMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUUvQixJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUU7UUFDZixNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixHQUFHLEVBQUUsQ0FBQyxDQUFDO0tBQ3ZEO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQztBQVJELDRCQVFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGVudlZhbHVlKGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB2YWx1ZSA9IHByb2Nlc3MuZW52W2tleV07XG5cbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgZW52aXJvbm1lbnQgdmFsdWUgJHtrZXl9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xufVxuIl19
@@ -1,10 +0,0 @@
1
- import { SNS } from "aws-sdk";
2
- /**
3
- * Utility function for publishing SNS messages.
4
- * Made because using *await* with AWS APIs doesn't require calling promise() but nothing works if it isn't called.
5
- * Retries a single time in case of failure.
6
- * @param message
7
- * @param topicArn
8
- * @param sns
9
- */
10
- export declare function snsPublish(message: string, topicArn: string, sns: SNS): Promise<void>;
@@ -1,31 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.snsPublish = void 0;
4
- /**
5
- * Utility function for publishing SNS messages.
6
- * Made because using *await* with AWS APIs doesn't require calling promise() but nothing works if it isn't called.
7
- * Retries a single time in case of failure.
8
- * @param message
9
- * @param topicArn
10
- * @param sns
11
- */
12
- async function snsPublish(message, topicArn, sns) {
13
- const publishParams = {
14
- Message: message,
15
- TopicArn: topicArn,
16
- };
17
- try {
18
- await sns.publish(publishParams).promise();
19
- }
20
- catch (error) {
21
- console.error('method=snsPublish error, retrying', error);
22
- try {
23
- await sns.publish(publishParams).promise();
24
- }
25
- catch (e2) {
26
- console.error('method=snsPublish error after retry', e2);
27
- }
28
- }
29
- }
30
- exports.snsPublish = snsPublish;
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9ydW50aW1lL21lc3NhZ2luZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQTs7Ozs7OztHQU9HO0FBQ0ksS0FBSyxVQUFVLFVBQVUsQ0FBQyxPQUFlLEVBQUUsUUFBZ0IsRUFBRSxHQUFRO0lBQ3hFLE1BQU0sYUFBYSxHQUFHO1FBQ2xCLE9BQU8sRUFBRSxPQUFPO1FBQ2hCLFFBQVEsRUFBRSxRQUFRO0tBQ3JCLENBQUM7SUFDRixJQUFJO1FBQ0EsTUFBTSxHQUFHLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0tBQzlDO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDWixPQUFPLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzFELElBQUk7WUFDQSxNQUFNLEdBQUcsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDOUM7UUFBQyxPQUFPLEVBQUUsRUFBRTtZQUNULE9BQU8sQ0FBQyxLQUFLLENBQUMscUNBQXFDLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDNUQ7S0FDSjtBQUNMLENBQUM7QUFmRCxnQ0FlQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U05TfSBmcm9tIFwiYXdzLXNka1wiO1xuXG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb24gZm9yIHB1Ymxpc2hpbmcgU05TIG1lc3NhZ2VzLlxuICogTWFkZSBiZWNhdXNlIHVzaW5nICphd2FpdCogd2l0aCBBV1MgQVBJcyBkb2Vzbid0IHJlcXVpcmUgY2FsbGluZyBwcm9taXNlKCkgYnV0IG5vdGhpbmcgd29ya3MgaWYgaXQgaXNuJ3QgY2FsbGVkLlxuICogUmV0cmllcyBhIHNpbmdsZSB0aW1lIGluIGNhc2Ugb2YgZmFpbHVyZS5cbiAqIEBwYXJhbSBtZXNzYWdlXG4gKiBAcGFyYW0gdG9waWNBcm5cbiAqIEBwYXJhbSBzbnNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNuc1B1Ymxpc2gobWVzc2FnZTogc3RyaW5nLCB0b3BpY0Fybjogc3RyaW5nLCBzbnM6IFNOUykge1xuICAgIGNvbnN0IHB1Ymxpc2hQYXJhbXMgPSB7XG4gICAgICAgIE1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICAgIFRvcGljQXJuOiB0b3BpY0FybixcbiAgICB9O1xuICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHNucy5wdWJsaXNoKHB1Ymxpc2hQYXJhbXMpLnByb21pc2UoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdtZXRob2Q9c25zUHVibGlzaCBlcnJvciwgcmV0cnlpbmcnLCBlcnJvcik7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBzbnMucHVibGlzaChwdWJsaXNoUGFyYW1zKS5wcm9taXNlKCk7XG4gICAgICAgIH0gY2F0Y2ggKGUyKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdtZXRob2Q9c25zUHVibGlzaCBlcnJvciBhZnRlciByZXRyeScsIGUyKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -1,2 +0,0 @@
1
- import { S3 } from "aws-sdk";
2
- export declare function uploadToS3<Body extends S3.Body | undefined>(bucketName: string, body: Body, objectName: string, cannedAcl?: string, contentType?: string): Promise<void>;