@mavogel/awscdk-rootmail 0.0.290 → 0.0.291

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 (99) hide show
  1. package/.jsii +589 -84
  2. package/.prettierrc +0 -0
  3. package/API.md +49 -5
  4. package/CONTRIBUTING.md +13 -2
  5. package/README.md +8 -0
  6. package/integ-tests/functions/cleanup-handler.ts +2 -2
  7. package/integ-tests/functions/close-opsitem-handler.ts +5 -7
  8. package/integ-tests/functions/send-email-handler.ts +3 -5
  9. package/integ-tests/integ.rootmail-custom-santa.ts +2 -20
  10. package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/RootmailIntegTestStack.assets.json +15 -15
  11. package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/RootmailIntegTestStack.template.json +435 -65
  12. package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/SetupTestIntegStackDefaultTestDeployAssert6EB6FF77.assets.json +6 -6
  13. package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/SetupTestIntegStackDefaultTestDeployAssert6EB6FF77.template.json +137 -5
  14. package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/asset.2819175352ad1ce0dae768e83fc328fb70fb5f10b4a8ff0ccbcb791f02b0716d/index.js +1 -0
  15. package/integ-tests/{integ.rootmail-filter-subject.ts.snapshot/asset.d2b520d86fd9d964c83dc0d5ce2e4456dbde5fa7ae0c791a71865cbdfe2fb855 → integ.rootmail-custom-santa.ts.snapshot/asset.2b86f8b255c50c6eba274c368849bab1c7a3747c30ef5df4c96f8dea8fffa21e}/index.js +3 -3
  16. package/integ-tests/{integ.rootmail-filter-subject.ts.snapshot/asset.9ac6d29f0cc4b20ec46e4c186d9a6f6448c7ea11b689e70a5dda69671a9d6848 → integ.rootmail-custom-santa.ts.snapshot/asset.b01091642674a865788c271ec84db9d88a8dfbe14d4d95583aca8814cfa848b9}/index.js +63 -60
  17. package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/cfn-response.js +1 -0
  18. package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/framework.js +3 -0
  19. package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/outbound.js +1 -0
  20. package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/util.js +1 -0
  21. package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/{asset.53e8368959effe94a6e51bef9c7c5bf0eaf5c4d64eece81632ca62aa34517978.bundle → asset.f692c9f68e4daba2abc99103efd3518bced1e9d7a2a89847b9b5d5473c64f1bd.bundle}/index.js +22701 -24111
  22. package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/integ.json +2 -2
  23. package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/manifest.json +35 -3
  24. package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/tree.json +782 -424
  25. package/integ-tests/integ.rootmail-filter-subject.ts +2 -20
  26. package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/RootmailIntegTestStack.assets.json +15 -15
  27. package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/RootmailIntegTestStack.template.json +435 -65
  28. package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/SetupTestIntegStackDefaultTestDeployAssert6EB6FF77.assets.json +6 -6
  29. package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/SetupTestIntegStackDefaultTestDeployAssert6EB6FF77.template.json +137 -5
  30. package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/asset.2819175352ad1ce0dae768e83fc328fb70fb5f10b4a8ff0ccbcb791f02b0716d/index.js +1 -0
  31. package/integ-tests/{integ.rootmail-custom-santa.ts.snapshot/asset.d2b520d86fd9d964c83dc0d5ce2e4456dbde5fa7ae0c791a71865cbdfe2fb855 → integ.rootmail-filter-subject.ts.snapshot/asset.2b86f8b255c50c6eba274c368849bab1c7a3747c30ef5df4c96f8dea8fffa21e}/index.js +3 -3
  32. package/integ-tests/{integ.rootmail-custom-santa.ts.snapshot/asset.9ac6d29f0cc4b20ec46e4c186d9a6f6448c7ea11b689e70a5dda69671a9d6848 → integ.rootmail-filter-subject.ts.snapshot/asset.b01091642674a865788c271ec84db9d88a8dfbe14d4d95583aca8814cfa848b9}/index.js +63 -60
  33. package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/cfn-response.js +1 -0
  34. package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/framework.js +3 -0
  35. package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/outbound.js +1 -0
  36. package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/util.js +1 -0
  37. package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/{asset.53e8368959effe94a6e51bef9c7c5bf0eaf5c4d64eece81632ca62aa34517978.bundle → asset.f692c9f68e4daba2abc99103efd3518bced1e9d7a2a89847b9b5d5473c64f1bd.bundle}/index.js +22701 -24111
  38. package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/integ.json +2 -2
  39. package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/manifest.json +35 -3
  40. package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/tree.json +782 -424
  41. package/integ-tests/integ.rootmail.ts +4 -30
  42. package/integ-tests/integ.rootmail.ts.snapshot/RootmailIntegTestStack.assets.json +18 -18
  43. package/integ-tests/integ.rootmail.ts.snapshot/RootmailIntegTestStack.template.json +437 -72
  44. package/integ-tests/integ.rootmail.ts.snapshot/SetupTestIntegStackDefaultTestDeployAssert6EB6FF77.assets.json +6 -6
  45. package/integ-tests/integ.rootmail.ts.snapshot/SetupTestIntegStackDefaultTestDeployAssert6EB6FF77.template.json +139 -7
  46. package/integ-tests/integ.rootmail.ts.snapshot/asset.2819175352ad1ce0dae768e83fc328fb70fb5f10b4a8ff0ccbcb791f02b0716d/index.js +1 -0
  47. package/integ-tests/integ.rootmail.ts.snapshot/{asset.d2b520d86fd9d964c83dc0d5ce2e4456dbde5fa7ae0c791a71865cbdfe2fb855 → asset.2b86f8b255c50c6eba274c368849bab1c7a3747c30ef5df4c96f8dea8fffa21e}/index.js +3 -3
  48. package/integ-tests/integ.rootmail.ts.snapshot/{asset.070f758ea9c89b8ceea9bb5141ea511633e1d72ab992b608da4efb3d6eeb2ba5 → asset.6ae1d1fcc0e69b0216c406dcb73136e88857dfc9a29784c57838e1fb0f9f7496}/index.js +5 -5
  49. package/integ-tests/integ.rootmail.ts.snapshot/{asset.adf960437fc6c552bee317e122c1e6839152590b199f7c44c0eee7bfbb744187 → asset.8621467f8f2410fb7445cc07fab37b2e996e541b6f7acb8549df9e88e1def73c}/index.js +63 -60
  50. package/integ-tests/integ.rootmail.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/cfn-response.js +1 -0
  51. package/integ-tests/integ.rootmail.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/framework.js +3 -0
  52. package/integ-tests/integ.rootmail.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/outbound.js +1 -0
  53. package/integ-tests/integ.rootmail.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/util.js +1 -0
  54. package/integ-tests/integ.rootmail.ts.snapshot/{asset.53e8368959effe94a6e51bef9c7c5bf0eaf5c4d64eece81632ca62aa34517978.bundle → asset.f692c9f68e4daba2abc99103efd3518bced1e9d7a2a89847b9b5d5473c64f1bd.bundle}/index.js +22701 -24111
  55. package/integ-tests/integ.rootmail.ts.snapshot/integ.json +2 -2
  56. package/integ-tests/integ.rootmail.ts.snapshot/manifest.json +35 -3
  57. package/integ-tests/integ.rootmail.ts.snapshot/tree.json +798 -445
  58. package/lib/hosted-zone-dkim-propagation.js +1 -11
  59. package/lib/hosted-zone-dkim-verification-records.js +1 -6
  60. package/lib/rootmail-autowire-dns.js +1 -11
  61. package/lib/rootmail.d.ts +15 -1
  62. package/lib/rootmail.js +5 -2
  63. package/lib/ses-receipt-ruleset-activation.js +1 -11
  64. package/lib/ses-receive.d.ts +12 -0
  65. package/lib/ses-receive.js +5 -7
  66. package/node_modules/cdk-nag/.jsii +2 -2
  67. package/node_modules/cdk-nag/lib/ignore-suppression-conditions.js +5 -5
  68. package/node_modules/cdk-nag/lib/nag-logger.js +2 -2
  69. package/node_modules/cdk-nag/lib/nag-pack.js +1 -1
  70. package/node_modules/cdk-nag/lib/nag-rules.js +1 -1
  71. package/node_modules/cdk-nag/lib/nag-suppressions.js +1 -1
  72. package/node_modules/cdk-nag/lib/packs/aws-solutions.js +1 -1
  73. package/node_modules/cdk-nag/lib/packs/hipaa-security.js +1 -1
  74. package/node_modules/cdk-nag/lib/packs/nist-800-53-r4.js +1 -1
  75. package/node_modules/cdk-nag/lib/packs/nist-800-53-r5.js +1 -1
  76. package/node_modules/cdk-nag/lib/packs/pci-dss-321.js +1 -1
  77. package/node_modules/cdk-nag/package.json +2 -2
  78. package/package.json +25 -21
  79. package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/asset.5cc92ed0cea39e2b8de2dbc527dfb5980a3af9564bd1084d840b9787c7d0467e/index.d.ts +0 -14
  80. package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/asset.5cc92ed0cea39e2b8de2dbc527dfb5980a3af9564bd1084d840b9787c7d0467e/index.js +0 -1
  81. package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/asset.f2d30cfc360482320a52a4fcde8a70f3569df79ab30be24650fda58eb60052cf/cfn-response.js +0 -1
  82. package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/asset.f2d30cfc360482320a52a4fcde8a70f3569df79ab30be24650fda58eb60052cf/framework.js +0 -3
  83. package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/asset.f2d30cfc360482320a52a4fcde8a70f3569df79ab30be24650fda58eb60052cf/outbound.js +0 -1
  84. package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/asset.f2d30cfc360482320a52a4fcde8a70f3569df79ab30be24650fda58eb60052cf/util.js +0 -1
  85. package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/asset.5cc92ed0cea39e2b8de2dbc527dfb5980a3af9564bd1084d840b9787c7d0467e/index.d.ts +0 -14
  86. package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/asset.5cc92ed0cea39e2b8de2dbc527dfb5980a3af9564bd1084d840b9787c7d0467e/index.js +0 -1
  87. package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/asset.f2d30cfc360482320a52a4fcde8a70f3569df79ab30be24650fda58eb60052cf/cfn-response.js +0 -1
  88. package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/asset.f2d30cfc360482320a52a4fcde8a70f3569df79ab30be24650fda58eb60052cf/framework.js +0 -3
  89. package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/asset.f2d30cfc360482320a52a4fcde8a70f3569df79ab30be24650fda58eb60052cf/outbound.js +0 -1
  90. package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/asset.f2d30cfc360482320a52a4fcde8a70f3569df79ab30be24650fda58eb60052cf/util.js +0 -1
  91. package/integ-tests/integ.rootmail.ts.snapshot/asset.5cc92ed0cea39e2b8de2dbc527dfb5980a3af9564bd1084d840b9787c7d0467e/index.d.ts +0 -14
  92. package/integ-tests/integ.rootmail.ts.snapshot/asset.5cc92ed0cea39e2b8de2dbc527dfb5980a3af9564bd1084d840b9787c7d0467e/index.js +0 -1
  93. package/integ-tests/integ.rootmail.ts.snapshot/asset.f2d30cfc360482320a52a4fcde8a70f3569df79ab30be24650fda58eb60052cf/cfn-response.js +0 -1
  94. package/integ-tests/integ.rootmail.ts.snapshot/asset.f2d30cfc360482320a52a4fcde8a70f3569df79ab30be24650fda58eb60052cf/framework.js +0 -3
  95. package/integ-tests/integ.rootmail.ts.snapshot/asset.f2d30cfc360482320a52a4fcde8a70f3569df79ab30be24650fda58eb60052cf/outbound.js +0 -1
  96. package/integ-tests/integ.rootmail.ts.snapshot/asset.f2d30cfc360482320a52a4fcde8a70f3569df79ab30be24650fda58eb60052cf/util.js +0 -1
  97. /package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/{asset.f2d30cfc360482320a52a4fcde8a70f3569df79ab30be24650fda58eb60052cf → asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca}/consts.js +0 -0
  98. /package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/{asset.f2d30cfc360482320a52a4fcde8a70f3569df79ab30be24650fda58eb60052cf → asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca}/consts.js +0 -0
  99. /package/integ-tests/integ.rootmail.ts.snapshot/{asset.f2d30cfc360482320a52a4fcde8a70f3569df79ab30be24650fda58eb60052cf → asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca}/consts.js +0 -0
@@ -1,20 +1,20 @@
1
1
  {
2
- "version": "33.0.0",
2
+ "version": "39.0.0",
3
3
  "files": {
4
- "53e8368959effe94a6e51bef9c7c5bf0eaf5c4d64eece81632ca62aa34517978": {
4
+ "f692c9f68e4daba2abc99103efd3518bced1e9d7a2a89847b9b5d5473c64f1bd": {
5
5
  "source": {
6
- "path": "asset.53e8368959effe94a6e51bef9c7c5bf0eaf5c4d64eece81632ca62aa34517978.bundle",
6
+ "path": "asset.f692c9f68e4daba2abc99103efd3518bced1e9d7a2a89847b9b5d5473c64f1bd.bundle",
7
7
  "packaging": "zip"
8
8
  },
9
9
  "destinations": {
10
10
  "current_account-current_region": {
11
11
  "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}",
12
- "objectKey": "53e8368959effe94a6e51bef9c7c5bf0eaf5c4d64eece81632ca62aa34517978.zip",
12
+ "objectKey": "f692c9f68e4daba2abc99103efd3518bced1e9d7a2a89847b9b5d5473c64f1bd.zip",
13
13
  "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}"
14
14
  }
15
15
  }
16
16
  },
17
- "46f8181b53a98509099db7143d04c1ae028cdfc0b6a171595dbe17f6e440ffd6": {
17
+ "4ea83ffd388150d1d0e4243ab8d5b0ee3b614fbc6a14b774e56c2a686804120d": {
18
18
  "source": {
19
19
  "path": "SetupTestIntegStackDefaultTestDeployAssert6EB6FF77.template.json",
20
20
  "packaging": "file"
@@ -22,7 +22,7 @@
22
22
  "destinations": {
23
23
  "current_account-current_region": {
24
24
  "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}",
25
- "objectKey": "46f8181b53a98509099db7143d04c1ae028cdfc0b6a171595dbe17f6e440ffd6.json",
25
+ "objectKey": "4ea83ffd388150d1d0e4243ab8d5b0ee3b614fbc6a14b774e56c2a686804120d.json",
26
26
  "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}"
27
27
  }
28
28
  }
@@ -11,7 +11,7 @@
11
11
  },
12
12
  "service": "Lambda",
13
13
  "api": "invoke",
14
- "expected": "{\"$ObjectLike\":{\"Payload\":{\"sendStatusCode\":200}}}",
14
+ "expected": "{\"$ObjectLike\":{\"Payload\":\"\\\"OK\\\"\"}}",
15
15
  "parameters": {
16
16
  "FunctionName": {
17
17
  "Fn::Join": [
@@ -45,7 +45,7 @@
45
45
  }
46
46
  },
47
47
  "flattenResponse": "false",
48
- "salt": "1736073703251"
48
+ "salt": "1739026199773"
49
49
  },
50
50
  "DependsOn": [
51
51
  "AwsApiCallSSMgetParameterd4c847c906a9dd9484fbf0d62db16d9b"
@@ -155,12 +155,20 @@
155
155
  "SingletonFunction1488541a7b23466481b69b4408076b81HandlerCD40AE9F": {
156
156
  "Type": "AWS::Lambda::Function",
157
157
  "Properties": {
158
- "Runtime": "nodejs18.x",
158
+ "Runtime": {
159
+ "Fn::FindInMap": [
160
+ "LatestNodeRuntimeMap",
161
+ {
162
+ "Ref": "AWS::Region"
163
+ },
164
+ "value"
165
+ ]
166
+ },
159
167
  "Code": {
160
168
  "S3Bucket": {
161
169
  "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"
162
170
  },
163
- "S3Key": "53e8368959effe94a6e51bef9c7c5bf0eaf5c4d64eece81632ca62aa34517978.zip"
171
+ "S3Key": "f692c9f68e4daba2abc99103efd3518bced1e9d7a2a89847b9b5d5473c64f1bd.zip"
164
172
  },
165
173
  "Timeout": 120,
166
174
  "Handler": "index.handler",
@@ -188,7 +196,7 @@
188
196
  "Name": "\"/rootmail/domain_name_servers\""
189
197
  },
190
198
  "flattenResponse": "false",
191
- "salt": "1736073703251"
199
+ "salt": "1739026199773"
192
200
  },
193
201
  "UpdateReplacePolicy": "Delete",
194
202
  "DeletionPolicy": "Delete"
@@ -212,6 +220,130 @@
212
220
  }
213
221
  }
214
222
  },
223
+ "Mappings": {
224
+ "LatestNodeRuntimeMap": {
225
+ "af-south-1": {
226
+ "value": "nodejs20.x"
227
+ },
228
+ "ap-east-1": {
229
+ "value": "nodejs20.x"
230
+ },
231
+ "ap-northeast-1": {
232
+ "value": "nodejs20.x"
233
+ },
234
+ "ap-northeast-2": {
235
+ "value": "nodejs20.x"
236
+ },
237
+ "ap-northeast-3": {
238
+ "value": "nodejs20.x"
239
+ },
240
+ "ap-south-1": {
241
+ "value": "nodejs20.x"
242
+ },
243
+ "ap-south-2": {
244
+ "value": "nodejs20.x"
245
+ },
246
+ "ap-southeast-1": {
247
+ "value": "nodejs20.x"
248
+ },
249
+ "ap-southeast-2": {
250
+ "value": "nodejs20.x"
251
+ },
252
+ "ap-southeast-3": {
253
+ "value": "nodejs20.x"
254
+ },
255
+ "ap-southeast-4": {
256
+ "value": "nodejs20.x"
257
+ },
258
+ "ap-southeast-5": {
259
+ "value": "nodejs20.x"
260
+ },
261
+ "ap-southeast-7": {
262
+ "value": "nodejs20.x"
263
+ },
264
+ "ca-central-1": {
265
+ "value": "nodejs20.x"
266
+ },
267
+ "ca-west-1": {
268
+ "value": "nodejs20.x"
269
+ },
270
+ "cn-north-1": {
271
+ "value": "nodejs18.x"
272
+ },
273
+ "cn-northwest-1": {
274
+ "value": "nodejs18.x"
275
+ },
276
+ "eu-central-1": {
277
+ "value": "nodejs20.x"
278
+ },
279
+ "eu-central-2": {
280
+ "value": "nodejs20.x"
281
+ },
282
+ "eu-isoe-west-1": {
283
+ "value": "nodejs18.x"
284
+ },
285
+ "eu-north-1": {
286
+ "value": "nodejs20.x"
287
+ },
288
+ "eu-south-1": {
289
+ "value": "nodejs20.x"
290
+ },
291
+ "eu-south-2": {
292
+ "value": "nodejs20.x"
293
+ },
294
+ "eu-west-1": {
295
+ "value": "nodejs20.x"
296
+ },
297
+ "eu-west-2": {
298
+ "value": "nodejs20.x"
299
+ },
300
+ "eu-west-3": {
301
+ "value": "nodejs20.x"
302
+ },
303
+ "il-central-1": {
304
+ "value": "nodejs20.x"
305
+ },
306
+ "me-central-1": {
307
+ "value": "nodejs20.x"
308
+ },
309
+ "me-south-1": {
310
+ "value": "nodejs20.x"
311
+ },
312
+ "mx-central-1": {
313
+ "value": "nodejs20.x"
314
+ },
315
+ "sa-east-1": {
316
+ "value": "nodejs20.x"
317
+ },
318
+ "us-east-1": {
319
+ "value": "nodejs20.x"
320
+ },
321
+ "us-east-2": {
322
+ "value": "nodejs20.x"
323
+ },
324
+ "us-gov-east-1": {
325
+ "value": "nodejs18.x"
326
+ },
327
+ "us-gov-west-1": {
328
+ "value": "nodejs18.x"
329
+ },
330
+ "us-iso-east-1": {
331
+ "value": "nodejs18.x"
332
+ },
333
+ "us-iso-west-1": {
334
+ "value": "nodejs18.x"
335
+ },
336
+ "us-isob-east-1": {
337
+ "value": "nodejs18.x"
338
+ },
339
+ "us-west-1": {
340
+ "value": "nodejs20.x"
341
+ },
342
+ "us-west-2": {
343
+ "value": "nodejs20.x"
344
+ }
345
+ }
346
+ },
215
347
  "Parameters": {
216
348
  "BootstrapVersion": {
217
349
  "Type": "AWS::SSM::Parameter::Value<String>",
@@ -0,0 +1 @@
1
+ "use strict";var h=Object.create,d=Object.defineProperty,P=Object.getOwnPropertyDescriptor,C=Object.getOwnPropertyNames,b=Object.getPrototypeOf,S=Object.prototype.hasOwnProperty,E=(e,o)=>{for(var n in o)d(e,n,{get:o[n],enumerable:!0})},p=(e,o,n,t)=>{if(o&&typeof o=="object"||typeof o=="function")for(let r of C(o))!S.call(e,r)&&r!==n&&d(e,r,{get:()=>o[r],enumerable:!(t=P(o,r))||t.enumerable});return e},G=(e,o,n)=>(n=e!=null?h(b(e)):{},p(o||!e||!e.__esModule?d(n,"default",{value:e,enumerable:!0}):n,e)),x=e=>p(d({},"__esModule",{value:!0}),e),O={};E(O,{disableSleepForTesting:()=>I,handler:()=>q}),module.exports=x(O);var i=G(require("@aws-sdk/client-cloudwatch-logs")),w=!1;function I(){w=!0}async function R(e,o,n){await n(async()=>{try{let t={logGroupName:e},r=new i.CreateLogGroupCommand(t);await o.send(r)}catch(t){if(t.name==="ResourceAlreadyExistsException")return;throw t}})}async function k(e,o,n){await n(async()=>{try{let t={logGroupName:e},r=new i.DeleteLogGroupCommand(t);await o.send(r)}catch(t){if(t.name==="ResourceNotFoundException")return;throw t}})}async function y(e,o,n,t){await n(async()=>{if(t){let r={logGroupName:e,retentionInDays:t},s=new i.PutRetentionPolicyCommand(r);await o.send(s)}else{let r={logGroupName:e},s=new i.DeleteRetentionPolicyCommand(r);await o.send(s)}})}async function q(e,o){try{console.log(JSON.stringify({...e,ResponseURL:"..."}));let t=e.ResourceProperties.LogGroupName,r=e.ResourceProperties.LogGroupRegion,s=L(e.ResourceProperties.SdkRetry?.maxRetries)??10,a=N(s),m={logger:console,region:r},c=new i.CloudWatchLogsClient(m);if((e.RequestType==="Create"||e.RequestType==="Update")&&(await R(t,c,a),await y(t,c,a,L(e.ResourceProperties.RetentionInDays)),e.RequestType==="Create")){let g=new i.CloudWatchLogsClient({logger:console,region:process.env.AWS_REGION});await R(`/aws/lambda/${o.functionName}`,g,a),await y(`/aws/lambda/${o.functionName}`,g,a,1)}e.RequestType==="Delete"&&e.ResourceProperties.RemovalPolicy==="destroy"&&await k(t,c,a),await n("SUCCESS","OK",t)}catch(t){console.log(t),await n("FAILED",t.message,e.ResourceProperties.LogGroupName)}function n(t,r,s){let a=JSON.stringify({Status:t,Reason:r,PhysicalResourceId:s,StackId:e.StackId,RequestId:e.RequestId,LogicalResourceId:e.LogicalResourceId,Data:{LogGroupName:e.ResourceProperties.LogGroupName}});console.log("Responding",a);let m=require("url").parse(e.ResponseURL),c={hostname:m.hostname,path:m.path,method:"PUT",headers:{"content-type":"","content-length":Buffer.byteLength(a,"utf8")}};return new Promise((g,l)=>{try{let u=require("https").request(c,g);u.on("error",l),u.write(a),u.end()}catch(u){l(u)}})}}function L(e,o=10){if(e!==void 0)return parseInt(e,o)}function N(e,o=1e3,n=6e4){return async t=>{let r=0;do try{return await t()}catch(s){if(f("OperationAbortedException",s)||f("ThrottlingException",s))if(r<e){r++,await D(W(r,o,n));continue}else throw new Error("Out of attempts to change log group");throw s}while(!0)}}function f(e,o){return o.name===e||o.message.includes(e)}function W(e,o,n){return Math.min(Math.round(Math.random()*o*2**e),n)}async function D(e){w&&(e=0),await new Promise(o=>setTimeout(o,e))}
@@ -60,20 +60,20 @@ var handler = async (event) => {
60
60
  messageId: res.MessageId,
61
61
  err: `httpStatusCode: ${res.$metadata.httpStatusCode}`
62
62
  });
63
- return { sendStatusCode: 500, err: res.$metadata.httpStatusCode };
63
+ return "NOK";
64
64
  }
65
65
  log({
66
66
  message: "Email sent",
67
67
  params,
68
68
  res
69
69
  });
70
- return { sendStatusCode: 200 };
70
+ return "OK";
71
71
  } catch (err) {
72
72
  log({
73
73
  message: "Error (catch) sending email",
74
74
  err
75
75
  });
76
- return { sendStatusCode: 500, err };
76
+ return "NOK";
77
77
  }
78
78
  };
79
79
  function log(msg) {
@@ -29370,20 +29370,22 @@ var require_stringify = __commonJS({
29370
29370
  return mod && mod.__esModule ? mod : { "default": mod };
29371
29371
  };
29372
29372
  Object.defineProperty(exports2, "__esModule", { value: true });
29373
- exports2.innerText = exports2.textContent = exports2.getText = exports2.getInnerHTML = exports2.getOuterHTML = void 0;
29373
+ exports2.getOuterHTML = getOuterHTML;
29374
+ exports2.getInnerHTML = getInnerHTML;
29375
+ exports2.getText = getText;
29376
+ exports2.textContent = textContent;
29377
+ exports2.innerText = innerText;
29374
29378
  var domhandler_1 = require_lib3();
29375
29379
  var dom_serializer_1 = __importDefault(require_lib5());
29376
29380
  var domelementtype_1 = require_lib2();
29377
29381
  function getOuterHTML(node, options) {
29378
29382
  return (0, dom_serializer_1.default)(node, options);
29379
29383
  }
29380
- exports2.getOuterHTML = getOuterHTML;
29381
29384
  function getInnerHTML(node, options) {
29382
29385
  return (0, domhandler_1.hasChildren)(node) ? node.children.map(function(node2) {
29383
29386
  return getOuterHTML(node2, options);
29384
29387
  }).join("") : "";
29385
29388
  }
29386
- exports2.getInnerHTML = getInnerHTML;
29387
29389
  function getText(node) {
29388
29390
  if (Array.isArray(node))
29389
29391
  return node.map(getText).join("");
@@ -29395,7 +29397,6 @@ var require_stringify = __commonJS({
29395
29397
  return node.data;
29396
29398
  return "";
29397
29399
  }
29398
- exports2.getText = getText;
29399
29400
  function textContent(node) {
29400
29401
  if (Array.isArray(node))
29401
29402
  return node.map(textContent).join("");
@@ -29406,7 +29407,6 @@ var require_stringify = __commonJS({
29406
29407
  return node.data;
29407
29408
  return "";
29408
29409
  }
29409
- exports2.textContent = textContent;
29410
29410
  function innerText(node) {
29411
29411
  if (Array.isArray(node))
29412
29412
  return node.map(innerText).join("");
@@ -29417,7 +29417,6 @@ var require_stringify = __commonJS({
29417
29417
  return node.data;
29418
29418
  return "";
29419
29419
  }
29420
- exports2.innerText = innerText;
29421
29420
  }
29422
29421
  });
29423
29422
 
@@ -29426,16 +29425,21 @@ var require_traversal = __commonJS({
29426
29425
  "node_modules/domutils/lib/traversal.js"(exports2) {
29427
29426
  "use strict";
29428
29427
  Object.defineProperty(exports2, "__esModule", { value: true });
29429
- exports2.prevElementSibling = exports2.nextElementSibling = exports2.getName = exports2.hasAttrib = exports2.getAttributeValue = exports2.getSiblings = exports2.getParent = exports2.getChildren = void 0;
29428
+ exports2.getChildren = getChildren;
29429
+ exports2.getParent = getParent;
29430
+ exports2.getSiblings = getSiblings;
29431
+ exports2.getAttributeValue = getAttributeValue;
29432
+ exports2.hasAttrib = hasAttrib;
29433
+ exports2.getName = getName;
29434
+ exports2.nextElementSibling = nextElementSibling;
29435
+ exports2.prevElementSibling = prevElementSibling;
29430
29436
  var domhandler_1 = require_lib3();
29431
29437
  function getChildren(elem) {
29432
29438
  return (0, domhandler_1.hasChildren)(elem) ? elem.children : [];
29433
29439
  }
29434
- exports2.getChildren = getChildren;
29435
29440
  function getParent(elem) {
29436
29441
  return elem.parent || null;
29437
29442
  }
29438
- exports2.getParent = getParent;
29439
29443
  function getSiblings(elem) {
29440
29444
  var _a, _b;
29441
29445
  var parent = getParent(elem);
@@ -29453,20 +29457,16 @@ var require_traversal = __commonJS({
29453
29457
  }
29454
29458
  return siblings;
29455
29459
  }
29456
- exports2.getSiblings = getSiblings;
29457
29460
  function getAttributeValue(elem, name) {
29458
29461
  var _a;
29459
29462
  return (_a = elem.attribs) === null || _a === void 0 ? void 0 : _a[name];
29460
29463
  }
29461
- exports2.getAttributeValue = getAttributeValue;
29462
29464
  function hasAttrib(elem, name) {
29463
29465
  return elem.attribs != null && Object.prototype.hasOwnProperty.call(elem.attribs, name) && elem.attribs[name] != null;
29464
29466
  }
29465
- exports2.hasAttrib = hasAttrib;
29466
29467
  function getName(elem) {
29467
29468
  return elem.name;
29468
29469
  }
29469
- exports2.getName = getName;
29470
29470
  function nextElementSibling(elem) {
29471
29471
  var _a;
29472
29472
  var next = elem.next;
@@ -29474,7 +29474,6 @@ var require_traversal = __commonJS({
29474
29474
  _a = next, next = _a.next;
29475
29475
  return next;
29476
29476
  }
29477
- exports2.nextElementSibling = nextElementSibling;
29478
29477
  function prevElementSibling(elem) {
29479
29478
  var _a;
29480
29479
  var prev = elem.prev;
@@ -29482,7 +29481,6 @@ var require_traversal = __commonJS({
29482
29481
  _a = prev, prev = _a.prev;
29483
29482
  return prev;
29484
29483
  }
29485
- exports2.prevElementSibling = prevElementSibling;
29486
29484
  }
29487
29485
  });
29488
29486
 
@@ -29491,7 +29489,12 @@ var require_manipulation = __commonJS({
29491
29489
  "node_modules/domutils/lib/manipulation.js"(exports2) {
29492
29490
  "use strict";
29493
29491
  Object.defineProperty(exports2, "__esModule", { value: true });
29494
- exports2.prepend = exports2.prependChild = exports2.append = exports2.appendChild = exports2.replaceElement = exports2.removeElement = void 0;
29492
+ exports2.removeElement = removeElement;
29493
+ exports2.replaceElement = replaceElement;
29494
+ exports2.appendChild = appendChild;
29495
+ exports2.append = append;
29496
+ exports2.prependChild = prependChild;
29497
+ exports2.prepend = prepend;
29495
29498
  function removeElement(elem) {
29496
29499
  if (elem.prev)
29497
29500
  elem.prev.next = elem.next;
@@ -29508,7 +29511,6 @@ var require_manipulation = __commonJS({
29508
29511
  elem.prev = null;
29509
29512
  elem.parent = null;
29510
29513
  }
29511
- exports2.removeElement = removeElement;
29512
29514
  function replaceElement(elem, replacement) {
29513
29515
  var prev = replacement.prev = elem.prev;
29514
29516
  if (prev) {
@@ -29525,7 +29527,6 @@ var require_manipulation = __commonJS({
29525
29527
  elem.parent = null;
29526
29528
  }
29527
29529
  }
29528
- exports2.replaceElement = replaceElement;
29529
29530
  function appendChild(parent, child) {
29530
29531
  removeElement(child);
29531
29532
  child.next = null;
@@ -29538,7 +29539,6 @@ var require_manipulation = __commonJS({
29538
29539
  child.prev = null;
29539
29540
  }
29540
29541
  }
29541
- exports2.appendChild = appendChild;
29542
29542
  function append(elem, next) {
29543
29543
  removeElement(next);
29544
29544
  var parent = elem.parent;
@@ -29557,7 +29557,6 @@ var require_manipulation = __commonJS({
29557
29557
  parent.children.push(next);
29558
29558
  }
29559
29559
  }
29560
- exports2.append = append;
29561
29560
  function prependChild(parent, child) {
29562
29561
  removeElement(child);
29563
29562
  child.parent = parent;
@@ -29570,7 +29569,6 @@ var require_manipulation = __commonJS({
29570
29569
  child.next = null;
29571
29570
  }
29572
29571
  }
29573
- exports2.prependChild = prependChild;
29574
29572
  function prepend(elem, prev) {
29575
29573
  removeElement(prev);
29576
29574
  var parent = elem.parent;
@@ -29586,7 +29584,6 @@ var require_manipulation = __commonJS({
29586
29584
  prev.next = elem;
29587
29585
  elem.prev = prev;
29588
29586
  }
29589
- exports2.prepend = prepend;
29590
29587
  }
29591
29588
  });
29592
29589
 
@@ -29595,7 +29592,12 @@ var require_querying = __commonJS({
29595
29592
  "node_modules/domutils/lib/querying.js"(exports2) {
29596
29593
  "use strict";
29597
29594
  Object.defineProperty(exports2, "__esModule", { value: true });
29598
- exports2.findAll = exports2.existsOne = exports2.findOne = exports2.findOneChild = exports2.find = exports2.filter = void 0;
29595
+ exports2.filter = filter;
29596
+ exports2.find = find;
29597
+ exports2.findOneChild = findOneChild;
29598
+ exports2.findOne = findOne;
29599
+ exports2.existsOne = existsOne;
29600
+ exports2.findAll = findAll;
29599
29601
  var domhandler_1 = require_lib3();
29600
29602
  function filter(test, node, recurse, limit) {
29601
29603
  if (recurse === void 0) {
@@ -29606,10 +29608,9 @@ var require_querying = __commonJS({
29606
29608
  }
29607
29609
  return find(test, Array.isArray(node) ? node : [node], recurse, limit);
29608
29610
  }
29609
- exports2.filter = filter;
29610
29611
  function find(test, nodes, recurse, limit) {
29611
29612
  var result = [];
29612
- var nodeStack = [nodes];
29613
+ var nodeStack = [Array.isArray(nodes) ? nodes : [nodes]];
29613
29614
  var indexStack = [0];
29614
29615
  for (; ; ) {
29615
29616
  if (indexStack[0] >= nodeStack[0].length) {
@@ -29632,38 +29633,35 @@ var require_querying = __commonJS({
29632
29633
  }
29633
29634
  }
29634
29635
  }
29635
- exports2.find = find;
29636
29636
  function findOneChild(test, nodes) {
29637
29637
  return nodes.find(test);
29638
29638
  }
29639
- exports2.findOneChild = findOneChild;
29640
29639
  function findOne(test, nodes, recurse) {
29641
29640
  if (recurse === void 0) {
29642
29641
  recurse = true;
29643
29642
  }
29644
- var elem = null;
29645
- for (var i = 0; i < nodes.length && !elem; i++) {
29646
- var node = nodes[i];
29647
- if (!(0, domhandler_1.isTag)(node)) {
29648
- continue;
29649
- } else if (test(node)) {
29650
- elem = node;
29651
- } else if (recurse && node.children.length > 0) {
29652
- elem = findOne(test, node.children, true);
29643
+ var searchedNodes = Array.isArray(nodes) ? nodes : [nodes];
29644
+ for (var i = 0; i < searchedNodes.length; i++) {
29645
+ var node = searchedNodes[i];
29646
+ if ((0, domhandler_1.isTag)(node) && test(node)) {
29647
+ return node;
29648
+ }
29649
+ if (recurse && (0, domhandler_1.hasChildren)(node) && node.children.length > 0) {
29650
+ var found = findOne(test, node.children, true);
29651
+ if (found)
29652
+ return found;
29653
29653
  }
29654
29654
  }
29655
- return elem;
29655
+ return null;
29656
29656
  }
29657
- exports2.findOne = findOne;
29658
29657
  function existsOne(test, nodes) {
29659
- return nodes.some(function(checked) {
29660
- return (0, domhandler_1.isTag)(checked) && (test(checked) || existsOne(test, checked.children));
29658
+ return (Array.isArray(nodes) ? nodes : [nodes]).some(function(node) {
29659
+ return (0, domhandler_1.isTag)(node) && test(node) || (0, domhandler_1.hasChildren)(node) && existsOne(test, node.children);
29661
29660
  });
29662
29661
  }
29663
- exports2.existsOne = existsOne;
29664
29662
  function findAll(test, nodes) {
29665
29663
  var result = [];
29666
- var nodeStack = [nodes];
29664
+ var nodeStack = [Array.isArray(nodes) ? nodes : [nodes]];
29667
29665
  var indexStack = [0];
29668
29666
  for (; ; ) {
29669
29667
  if (indexStack[0] >= nodeStack[0].length) {
@@ -29675,17 +29673,14 @@ var require_querying = __commonJS({
29675
29673
  continue;
29676
29674
  }
29677
29675
  var elem = nodeStack[0][indexStack[0]++];
29678
- if (!(0, domhandler_1.isTag)(elem))
29679
- continue;
29680
- if (test(elem))
29676
+ if ((0, domhandler_1.isTag)(elem) && test(elem))
29681
29677
  result.push(elem);
29682
- if (elem.children.length > 0) {
29678
+ if ((0, domhandler_1.hasChildren)(elem) && elem.children.length > 0) {
29683
29679
  indexStack.unshift(0);
29684
29680
  nodeStack.unshift(elem.children);
29685
29681
  }
29686
29682
  }
29687
29683
  }
29688
- exports2.findAll = findAll;
29689
29684
  }
29690
29685
  });
29691
29686
 
@@ -29694,7 +29689,12 @@ var require_legacy = __commonJS({
29694
29689
  "node_modules/domutils/lib/legacy.js"(exports2) {
29695
29690
  "use strict";
29696
29691
  Object.defineProperty(exports2, "__esModule", { value: true });
29697
- exports2.getElementsByTagType = exports2.getElementsByTagName = exports2.getElementById = exports2.getElements = exports2.testElement = void 0;
29692
+ exports2.testElement = testElement;
29693
+ exports2.getElements = getElements;
29694
+ exports2.getElementById = getElementById;
29695
+ exports2.getElementsByTagName = getElementsByTagName;
29696
+ exports2.getElementsByClassName = getElementsByClassName;
29697
+ exports2.getElementsByTagType = getElementsByTagType;
29698
29698
  var domhandler_1 = require_lib3();
29699
29699
  var querying_js_1 = require_querying();
29700
29700
  var Checks = {
@@ -29757,7 +29757,6 @@ var require_legacy = __commonJS({
29757
29757
  var test = compileTest(options);
29758
29758
  return test ? test(node) : true;
29759
29759
  }
29760
- exports2.testElement = testElement;
29761
29760
  function getElements(options, nodes, recurse, limit) {
29762
29761
  if (limit === void 0) {
29763
29762
  limit = Infinity;
@@ -29765,7 +29764,6 @@ var require_legacy = __commonJS({
29765
29764
  var test = compileTest(options);
29766
29765
  return test ? (0, querying_js_1.filter)(test, nodes, recurse, limit) : [];
29767
29766
  }
29768
- exports2.getElements = getElements;
29769
29767
  function getElementById(id, nodes, recurse) {
29770
29768
  if (recurse === void 0) {
29771
29769
  recurse = true;
@@ -29774,7 +29772,6 @@ var require_legacy = __commonJS({
29774
29772
  nodes = [nodes];
29775
29773
  return (0, querying_js_1.findOne)(getAttribCheck("id", id), nodes, recurse);
29776
29774
  }
29777
- exports2.getElementById = getElementById;
29778
29775
  function getElementsByTagName(tagName, nodes, recurse, limit) {
29779
29776
  if (recurse === void 0) {
29780
29777
  recurse = true;
@@ -29784,7 +29781,15 @@ var require_legacy = __commonJS({
29784
29781
  }
29785
29782
  return (0, querying_js_1.filter)(Checks["tag_name"](tagName), nodes, recurse, limit);
29786
29783
  }
29787
- exports2.getElementsByTagName = getElementsByTagName;
29784
+ function getElementsByClassName(className, nodes, recurse, limit) {
29785
+ if (recurse === void 0) {
29786
+ recurse = true;
29787
+ }
29788
+ if (limit === void 0) {
29789
+ limit = Infinity;
29790
+ }
29791
+ return (0, querying_js_1.filter)(getAttribCheck("class", className), nodes, recurse, limit);
29792
+ }
29788
29793
  function getElementsByTagType(type, nodes, recurse, limit) {
29789
29794
  if (recurse === void 0) {
29790
29795
  recurse = true;
@@ -29794,7 +29799,6 @@ var require_legacy = __commonJS({
29794
29799
  }
29795
29800
  return (0, querying_js_1.filter)(Checks["tag_type"](type), nodes, recurse, limit);
29796
29801
  }
29797
- exports2.getElementsByTagType = getElementsByTagType;
29798
29802
  }
29799
29803
  });
29800
29804
 
@@ -29803,7 +29807,10 @@ var require_helpers = __commonJS({
29803
29807
  "node_modules/domutils/lib/helpers.js"(exports2) {
29804
29808
  "use strict";
29805
29809
  Object.defineProperty(exports2, "__esModule", { value: true });
29806
- exports2.uniqueSort = exports2.compareDocumentPosition = exports2.DocumentPosition = exports2.removeSubsets = void 0;
29810
+ exports2.DocumentPosition = void 0;
29811
+ exports2.removeSubsets = removeSubsets;
29812
+ exports2.compareDocumentPosition = compareDocumentPosition;
29813
+ exports2.uniqueSort = uniqueSort;
29807
29814
  var domhandler_1 = require_lib3();
29808
29815
  function removeSubsets(nodes) {
29809
29816
  var idx = nodes.length;
@@ -29822,7 +29829,6 @@ var require_helpers = __commonJS({
29822
29829
  }
29823
29830
  return nodes;
29824
29831
  }
29825
- exports2.removeSubsets = removeSubsets;
29826
29832
  var DocumentPosition;
29827
29833
  (function(DocumentPosition2) {
29828
29834
  DocumentPosition2[DocumentPosition2["DISCONNECTED"] = 1] = "DISCONNECTED";
@@ -29830,7 +29836,7 @@ var require_helpers = __commonJS({
29830
29836
  DocumentPosition2[DocumentPosition2["FOLLOWING"] = 4] = "FOLLOWING";
29831
29837
  DocumentPosition2[DocumentPosition2["CONTAINS"] = 8] = "CONTAINS";
29832
29838
  DocumentPosition2[DocumentPosition2["CONTAINED_BY"] = 16] = "CONTAINED_BY";
29833
- })(DocumentPosition = exports2.DocumentPosition || (exports2.DocumentPosition = {}));
29839
+ })(DocumentPosition || (exports2.DocumentPosition = DocumentPosition = {}));
29834
29840
  function compareDocumentPosition(nodeA, nodeB) {
29835
29841
  var aParents = [];
29836
29842
  var bParents = [];
@@ -29870,7 +29876,6 @@ var require_helpers = __commonJS({
29870
29876
  }
29871
29877
  return DocumentPosition.PRECEDING;
29872
29878
  }
29873
- exports2.compareDocumentPosition = compareDocumentPosition;
29874
29879
  function uniqueSort(nodes) {
29875
29880
  nodes = nodes.filter(function(node, i, arr) {
29876
29881
  return !arr.includes(node, i + 1);
@@ -29886,7 +29891,6 @@ var require_helpers = __commonJS({
29886
29891
  });
29887
29892
  return nodes;
29888
29893
  }
29889
- exports2.uniqueSort = uniqueSort;
29890
29894
  }
29891
29895
  });
29892
29896
 
@@ -29895,14 +29899,13 @@ var require_feeds = __commonJS({
29895
29899
  "node_modules/domutils/lib/feeds.js"(exports2) {
29896
29900
  "use strict";
29897
29901
  Object.defineProperty(exports2, "__esModule", { value: true });
29898
- exports2.getFeed = void 0;
29902
+ exports2.getFeed = getFeed;
29899
29903
  var stringify_js_1 = require_stringify();
29900
29904
  var legacy_js_1 = require_legacy();
29901
29905
  function getFeed(doc) {
29902
29906
  var feedRoot = getOneElement(isValidFeed, doc);
29903
29907
  return !feedRoot ? null : feedRoot.name === "feed" ? getAtomFeed(feedRoot) : getRssFeed(feedRoot);
29904
29908
  }
29905
- exports2.getFeed = getFeed;
29906
29909
  function getAtomFeed(feedRoot) {
29907
29910
  var _a;
29908
29911
  var childs = feedRoot.children;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Retry=exports.includeStackTraces=exports.MISSING_PHYSICAL_ID_MARKER=exports.CREATE_FAILED_PHYSICAL_ID_MARKER=void 0,exports.submitResponse=submitResponse,exports.safeHandler=safeHandler,exports.redactDataFromPayload=redactDataFromPayload;const url=require("url"),outbound_1=require("./outbound"),util_1=require("./util");exports.CREATE_FAILED_PHYSICAL_ID_MARKER="AWSCDK::CustomResourceProviderFramework::CREATE_FAILED",exports.MISSING_PHYSICAL_ID_MARKER="AWSCDK::CustomResourceProviderFramework::MISSING_PHYSICAL_ID";async function submitResponse(status,event,options={}){const json={Status:status,Reason:options.reason||status,StackId:event.StackId,RequestId:event.RequestId,PhysicalResourceId:event.PhysicalResourceId||exports.MISSING_PHYSICAL_ID_MARKER,LogicalResourceId:event.LogicalResourceId,NoEcho:options.noEcho,Data:event.Data},responseBody=JSON.stringify(json),parsedUrl=url.parse(event.ResponseURL),loggingSafeUrl=`${parsedUrl.protocol}//${parsedUrl.hostname}/${parsedUrl.pathname}?***`;options?.noEcho?(0,util_1.log)("submit redacted response to cloudformation",loggingSafeUrl,redactDataFromPayload(json)):(0,util_1.log)("submit response to cloudformation",loggingSafeUrl,json);const retryOptions={attempts:5,sleep:1e3};await(0,util_1.withRetries)(retryOptions,outbound_1.httpRequest)({hostname:parsedUrl.hostname,path:parsedUrl.path,method:"PUT",headers:{"content-type":"","content-length":Buffer.byteLength(responseBody,"utf8")}},responseBody)}exports.includeStackTraces=!0;function safeHandler(block){return async event=>{if(event.RequestType==="Delete"&&event.PhysicalResourceId===exports.CREATE_FAILED_PHYSICAL_ID_MARKER){(0,util_1.log)("ignoring DELETE event caused by a failed CREATE event"),await submitResponse("SUCCESS",event);return}try{await block(event)}catch(e){if(e instanceof Retry)throw(0,util_1.log)("retry requested by handler"),e;event.PhysicalResourceId||(event.RequestType==="Create"?((0,util_1.log)("CREATE failed, responding with a marker physical resource id so that the subsequent DELETE will be ignored"),event.PhysicalResourceId=exports.CREATE_FAILED_PHYSICAL_ID_MARKER):(0,util_1.log)(`ERROR: Malformed event. "PhysicalResourceId" is required: ${JSON.stringify({...event,ResponseURL:"..."})}`)),await submitResponse("FAILED",event,{reason:exports.includeStackTraces?e.stack:e.message})}}}function redactDataFromPayload(payload){const redactedPayload=JSON.parse(JSON.stringify(payload));if(redactedPayload.Data){const keys=Object.keys(redactedPayload.Data);for(const key of keys)redactedPayload.Data[key]="*****"}return redactedPayload}class Retry extends Error{}exports.Retry=Retry;
@@ -0,0 +1,3 @@
1
+ "use strict";const cfnResponse=require("./cfn-response"),consts=require("./consts"),outbound_1=require("./outbound"),util_1=require("./util");async function onEvent(cfnRequest){const sanitizedRequest={...cfnRequest,ResponseURL:"..."};(0,util_1.log)("onEventHandler",sanitizedRequest),cfnRequest.ResourceProperties=cfnRequest.ResourceProperties||{};const onEventResult=await invokeUserFunction(consts.USER_ON_EVENT_FUNCTION_ARN_ENV,sanitizedRequest,cfnRequest.ResponseURL);onEventResult?.NoEcho?(0,util_1.log)("redacted onEvent returned:",cfnResponse.redactDataFromPayload(onEventResult)):(0,util_1.log)("onEvent returned:",onEventResult);const resourceEvent=createResponseEvent(cfnRequest,onEventResult),sanitizedEvent={...resourceEvent,ResponseURL:"..."};if(onEventResult?.NoEcho?(0,util_1.log)("readacted event:",cfnResponse.redactDataFromPayload(sanitizedEvent)):(0,util_1.log)("event:",sanitizedEvent),!process.env[consts.USER_IS_COMPLETE_FUNCTION_ARN_ENV])return cfnResponse.submitResponse("SUCCESS",resourceEvent,{noEcho:resourceEvent.NoEcho});const waiter={stateMachineArn:(0,util_1.getEnv)(consts.WAITER_STATE_MACHINE_ARN_ENV),name:resourceEvent.RequestId,input:JSON.stringify(resourceEvent)};(0,util_1.log)("starting waiter",{stateMachineArn:(0,util_1.getEnv)(consts.WAITER_STATE_MACHINE_ARN_ENV),name:resourceEvent.RequestId}),await(0,outbound_1.startExecution)(waiter)}async function isComplete(event){const sanitizedRequest={...event,ResponseURL:"..."};event?.NoEcho?(0,util_1.log)("redacted isComplete request",cfnResponse.redactDataFromPayload(sanitizedRequest)):(0,util_1.log)("isComplete",sanitizedRequest);const isCompleteResult=await invokeUserFunction(consts.USER_IS_COMPLETE_FUNCTION_ARN_ENV,sanitizedRequest,event.ResponseURL);if(event?.NoEcho?(0,util_1.log)("redacted user isComplete returned:",cfnResponse.redactDataFromPayload(isCompleteResult)):(0,util_1.log)("user isComplete returned:",isCompleteResult),!isCompleteResult.IsComplete)throw isCompleteResult.Data&&Object.keys(isCompleteResult.Data).length>0?new Error('"Data" is not allowed if "IsComplete" is "False"'):new cfnResponse.Retry(JSON.stringify(event));const response={...event,...isCompleteResult,Data:{...event.Data,...isCompleteResult.Data}};await cfnResponse.submitResponse("SUCCESS",response,{noEcho:event.NoEcho})}async function onTimeout(timeoutEvent){(0,util_1.log)("timeoutHandler",timeoutEvent);const isCompleteRequest=JSON.parse(JSON.parse(timeoutEvent.Cause).errorMessage);await cfnResponse.submitResponse("FAILED",isCompleteRequest,{reason:"Operation timed out"})}async function invokeUserFunction(functionArnEnv,sanitizedPayload,responseUrl){const functionArn=(0,util_1.getEnv)(functionArnEnv);(0,util_1.log)(`executing user function ${functionArn} with payload`,sanitizedPayload);const resp=await(0,outbound_1.invokeFunction)({FunctionName:functionArn,Payload:JSON.stringify({...sanitizedPayload,ResponseURL:responseUrl})});(0,util_1.log)("user function response:",resp,typeof resp);const jsonPayload=(0,util_1.parseJsonPayload)(resp.Payload);if(resp.FunctionError){(0,util_1.log)("user function threw an error:",resp.FunctionError);const errorMessage=jsonPayload.errorMessage||"error",arn=functionArn.split(":"),functionName=arn[arn.length-1],message=[errorMessage,"",`Logs: /aws/lambda/${functionName}`,""].join(`
2
+ `),e=new Error(message);throw jsonPayload.trace&&(e.stack=[message,...jsonPayload.trace.slice(1)].join(`
3
+ `)),e}return jsonPayload}function createResponseEvent(cfnRequest,onEventResult){onEventResult=onEventResult||{};const physicalResourceId=onEventResult.PhysicalResourceId||defaultPhysicalResourceId(cfnRequest);if(cfnRequest.RequestType==="Delete"&&physicalResourceId!==cfnRequest.PhysicalResourceId)throw new Error(`DELETE: cannot change the physical resource ID from "${cfnRequest.PhysicalResourceId}" to "${onEventResult.PhysicalResourceId}" during deletion`);return cfnRequest.RequestType==="Update"&&physicalResourceId!==cfnRequest.PhysicalResourceId&&(0,util_1.log)(`UPDATE: changing physical resource ID from "${cfnRequest.PhysicalResourceId}" to "${onEventResult.PhysicalResourceId}"`),{...cfnRequest,...onEventResult,PhysicalResourceId:physicalResourceId}}function defaultPhysicalResourceId(req){switch(req.RequestType){case"Create":return req.RequestId;case"Update":case"Delete":return req.PhysicalResourceId;default:throw new Error(`Invalid "RequestType" in request "${JSON.stringify(req)}"`)}}module.exports={[consts.FRAMEWORK_ON_EVENT_HANDLER_NAME]:cfnResponse.safeHandler(onEvent),[consts.FRAMEWORK_IS_COMPLETE_HANDLER_NAME]:cfnResponse.safeHandler(isComplete),[consts.FRAMEWORK_ON_TIMEOUT_HANDLER_NAME]:onTimeout};
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.httpRequest=exports.invokeFunction=exports.startExecution=void 0;const https=require("https"),client_lambda_1=require("@aws-sdk/client-lambda"),client_sfn_1=require("@aws-sdk/client-sfn"),FRAMEWORK_HANDLER_TIMEOUT=9e5,awsSdkConfig={httpOptions:{timeout:FRAMEWORK_HANDLER_TIMEOUT}};async function defaultHttpRequest(options,requestBody){return new Promise((resolve,reject)=>{try{const request=https.request(options,response=>{response.resume(),!response.statusCode||response.statusCode>=400?reject(new Error(`Unsuccessful HTTP response: ${response.statusCode}`)):resolve()});request.on("error",reject),request.write(requestBody),request.end()}catch(e){reject(e)}})}let sfn,lambda;async function defaultStartExecution(req){return sfn||(sfn=new client_sfn_1.SFN(awsSdkConfig)),sfn.startExecution(req)}async function defaultInvokeFunction(req){lambda||(lambda=new client_lambda_1.Lambda(awsSdkConfig));try{return await lambda.invoke(req)}catch{return await(0,client_lambda_1.waitUntilFunctionActiveV2)({client:lambda,maxWaitTime:300},{FunctionName:req.FunctionName}),lambda.invoke(req)}}exports.startExecution=defaultStartExecution,exports.invokeFunction=defaultInvokeFunction,exports.httpRequest=defaultHttpRequest;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getEnv=getEnv,exports.log=log,exports.withRetries=withRetries,exports.parseJsonPayload=parseJsonPayload;function getEnv(name){const value=process.env[name];if(!value)throw new Error(`The environment variable "${name}" is not defined`);return value}function log(title,...args){console.log("[provider-framework]",title,...args.map(x=>typeof x=="object"?JSON.stringify(x,void 0,2):x))}function withRetries(options,fn){return async(...xs)=>{let attempts=options.attempts,ms=options.sleep;for(;;)try{return await fn(...xs)}catch(e){if(attempts--<=0)throw e;await sleep(Math.floor(Math.random()*ms)),ms*=2}}}async function sleep(ms){return new Promise(ok=>setTimeout(ok,ms))}function parseJsonPayload(payload){const text=new TextDecoder().decode(Buffer.from(payload??""));if(!text)return{};try{return JSON.parse(text)}catch{throw new Error(`return values from user-handlers must be JSON objects. got: "${text}"`)}}