aws-delivlib 13.4.1 → 13.4.5

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 (69) hide show
  1. package/.gitattributes +22 -20
  2. package/cdk.out/{asset.e12c7af9b638ac5f6e69012fdab4a414bd0c107b6a233304e64b443a621ecd20 → asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451}/create-release.js +0 -0
  3. package/cdk.out/{asset.e12c7af9b638ac5f6e69012fdab4a414bd0c107b6a233304e64b443a621ecd20 → asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451}/package-lock.json +100 -95
  4. package/cdk.out/{asset.e12c7af9b638ac5f6e69012fdab4a414bd0c107b6a233304e64b443a621ecd20 → asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451}/package.json +0 -0
  5. package/cdk.out/{asset.e12c7af9b638ac5f6e69012fdab4a414bd0c107b6a233304e64b443a621ecd20 → asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451}/publish.sh +0 -0
  6. package/cdk.out/{asset.e12c7af9b638ac5f6e69012fdab4a414bd0c107b6a233304e64b443a621ecd20 → asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451}/sign-files.sh +0 -0
  7. package/cdk.out/{asset.e12c7af9b638ac5f6e69012fdab4a414bd0c107b6a233304e64b443a621ecd20 → asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451}/with-signing-key.sh +0 -0
  8. package/cdk.out/{asset.663163693e04179c71265b44a325be7e6b8c4e90b081883a1b3f3393de2546ea → asset.7820644cf1fdec7cec290ed6fdd561e35f4015d4dcf03a20f8035dda3c0ac88a}/watcher-handler.d.ts +0 -0
  9. package/cdk.out/asset.7820644cf1fdec7cec290ed6fdd561e35f4015d4dcf03a20f8035dda3c0ac88a/watcher-handler.js +108 -0
  10. package/cdk.out/{asset.663163693e04179c71265b44a325be7e6b8c4e90b081883a1b3f3393de2546ea → asset.7820644cf1fdec7cec290ed6fdd561e35f4015d4dcf03a20f8035dda3c0ac88a}/watcher-handler.ts +0 -0
  11. package/cdk.out/asset.dc2e98009b027861f34e56eebb81faa5a3951ed9da80ce4a903a45de04268238/index.js +16465 -0
  12. package/cdk.out/cdk.out +1 -1
  13. package/cdk.out/delivlib-test.assets.json +12 -12
  14. package/cdk.out/delivlib-test.template.json +34 -29
  15. package/cdk.out/manifest.json +988 -988
  16. package/cdk.out/tree.json +443 -438
  17. package/lib/__tests__/build-spec.test.js +21 -2
  18. package/lib/__tests__/bump.test.js +21 -2
  19. package/lib/__tests__/canary.test.js +22 -3
  20. package/lib/__tests__/change-control-lambda/disable-transition.test.js +2 -1
  21. package/lib/__tests__/change-control-lambda/handler.test.js +23 -3
  22. package/lib/__tests__/chime-notifier.test.js +4 -3
  23. package/lib/__tests__/code-signing-cert.test.js +21 -2
  24. package/lib/__tests__/integ.delivlib.js +21 -2
  25. package/lib/__tests__/open-pgp-key-pair.test.js +21 -2
  26. package/lib/__tests__/pipeline.test.js +22 -3
  27. package/lib/__tests__/pr.test.js +21 -2
  28. package/lib/__tests__/publishing.test.js +21 -2
  29. package/lib/__tests__/registry-sync/ecr-mirror.test.js +21 -2
  30. package/lib/__tests__/registry-sync/mirror-source.test.js +21 -2
  31. package/lib/__tests__/shellable.test.js +22 -3
  32. package/lib/__tests__/test-stack.js +29 -9
  33. package/lib/change-control-lambda/disable-transition.js +21 -2
  34. package/lib/change-control-lambda/index.js +21 -2
  35. package/lib/change-controller.js +21 -2
  36. package/lib/chime-notifier/chime-notifier.js +22 -12
  37. package/lib/chime-notifier/chime-notifier.ts +1 -11
  38. package/lib/chime-notifier/{notifier-handler.d.ts → handler/notifier-handler.d.ts} +0 -0
  39. package/lib/chime-notifier/handler/notifier-handler.js +110 -0
  40. package/lib/chime-notifier/{notifier-handler.ts → handler/notifier-handler.ts} +4 -4
  41. package/lib/code-signing/certificate-signing-request.js +21 -2
  42. package/lib/code-signing/code-signing-certificate.js +21 -2
  43. package/lib/code-signing/private-key.js +21 -2
  44. package/lib/custom-resource-handlers/src/_cloud-formation.js +22 -3
  45. package/lib/custom-resource-handlers/src/_exec.js +22 -3
  46. package/lib/custom-resource-handlers/src/_rmrf.js +23 -4
  47. package/lib/custom-resource-handlers/src/certificate-signing-request.js +26 -7
  48. package/lib/custom-resource-handlers/src/certificate-signing-request.tsbuildinfo +1 -1
  49. package/lib/custom-resource-handlers/src/pgp-secret.js +27 -8
  50. package/lib/custom-resource-handlers/src/pgp-secret.tsbuildinfo +1 -1
  51. package/lib/custom-resource-handlers/src/private-key.js +26 -7
  52. package/lib/custom-resource-handlers/src/private-key.tsbuildinfo +1 -1
  53. package/lib/open-pgp-key-pair.js +21 -2
  54. package/lib/pipeline-notifications/chime.js +21 -2
  55. package/lib/pipeline-notifications/slack.js +21 -2
  56. package/lib/pipeline-watcher/handler/watcher-handler.js +21 -2
  57. package/lib/pipeline-watcher/watcher.js +21 -2
  58. package/lib/pipeline.js +21 -2
  59. package/lib/publishing/github/package-lock.json +100 -95
  60. package/lib/publishing.js +22 -3
  61. package/lib/pull-request/bump.js +21 -2
  62. package/lib/pull-request/merge-back.js +22 -3
  63. package/lib/pull-request/pr.js +21 -2
  64. package/lib/shellable.js +22 -3
  65. package/lib/util.js +23 -4
  66. package/package.json +35 -36
  67. package/cdk.out/asset.663163693e04179c71265b44a325be7e6b8c4e90b081883a1b3f3393de2546ea/watcher-handler.js +0 -89
  68. package/cdk.out/asset.d81bf2d4c389ecd69472cf4b27599e1ffbe0c1543104f45d035834e863f64ca7/index.js +0 -14129
  69. package/lib/chime-notifier/notifier-handler.js +0 -91
package/.gitattributes CHANGED
@@ -1,22 +1,24 @@
1
1
  # ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen".
2
2
 
3
- *.snap linguist-generated
4
- /.eslintrc.json linguist-generated
5
- /.gitattributes linguist-generated
6
- /.github/workflows/auto-approve.yml linguist-generated
7
- /.github/workflows/build.yml linguist-generated
8
- /.github/workflows/release.yml linguist-generated
9
- /.github/workflows/stale.yml linguist-generated
10
- /.github/workflows/upgrade.yml linguist-generated
11
- /.gitignore linguist-generated
12
- /.mergify.yml linguist-generated
13
- /.npmignore linguist-generated
14
- /.projen/** linguist-generated
15
- /.projen/deps.json linguist-generated
16
- /.projen/jest-snapshot-resolver.js linguist-generated
17
- /.projen/tasks.json linguist-generated
18
- /LICENSE linguist-generated
19
- /package.json linguist-generated
20
- /tsconfig.eslint.json linguist-generated
21
- /tsconfig.json linguist-generated
22
- /yarn.lock linguist-generated
3
+ *.snap linguist-generated
4
+ /.eslintrc.json linguist-generated
5
+ /.gitattributes linguist-generated
6
+ /.github/workflows/auto-approve.yml linguist-generated
7
+ /.github/workflows/build.yml linguist-generated
8
+ /.github/workflows/pull-request-lint.yml linguist-generated
9
+ /.github/workflows/release.yml linguist-generated
10
+ /.github/workflows/stale.yml linguist-generated
11
+ /.github/workflows/upgrade-main.yml linguist-generated
12
+ /.gitignore linguist-generated
13
+ /.mergify.yml linguist-generated
14
+ /.npmignore linguist-generated
15
+ /.projen/** linguist-generated
16
+ /.projen/deps.json linguist-generated
17
+ /.projen/files.json linguist-generated
18
+ /.projen/jest-snapshot-resolver.js linguist-generated
19
+ /.projen/tasks.json linguist-generated
20
+ /LICENSE linguist-generated
21
+ /package.json linguist-generated
22
+ /tsconfig.dev.json linguist-generated
23
+ /tsconfig.json linguist-generated
24
+ /yarn.lock linguist-generated
@@ -5,14 +5,14 @@
5
5
  "requires": true,
6
6
  "dependencies": {
7
7
  "ajv": {
8
- "version": "5.5.2",
9
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
10
- "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
8
+ "version": "6.12.6",
9
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
10
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
11
11
  "requires": {
12
- "co": "^4.6.0",
13
- "fast-deep-equal": "^1.0.0",
12
+ "fast-deep-equal": "^3.1.1",
14
13
  "fast-json-stable-stringify": "^2.0.0",
15
- "json-schema-traverse": "^0.3.0"
14
+ "json-schema-traverse": "^0.4.1",
15
+ "uri-js": "^4.2.2"
16
16
  }
17
17
  },
18
18
  "array-uniq": {
@@ -21,9 +21,9 @@
21
21
  "integrity": "sha1-X8w3OSB3VyPP1k1lxkvvU7+eum0="
22
22
  },
23
23
  "asn1": {
24
- "version": "0.2.4",
25
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
26
- "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
24
+ "version": "0.2.6",
25
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz",
26
+ "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==",
27
27
  "requires": {
28
28
  "safer-buffer": "~2.1.0"
29
29
  }
@@ -44,23 +44,22 @@
44
44
  "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
45
45
  },
46
46
  "aws4": {
47
- "version": "1.8.0",
48
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
49
- "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ=="
47
+ "version": "1.11.0",
48
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
49
+ "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA=="
50
50
  },
51
51
  "bcrypt-pbkdf": {
52
52
  "version": "1.0.2",
53
53
  "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
54
54
  "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
55
- "optional": true,
56
55
  "requires": {
57
56
  "tweetnacl": "^0.14.3"
58
57
  }
59
58
  },
60
59
  "bluebird": {
61
- "version": "3.5.2",
62
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.2.tgz",
63
- "integrity": "sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg=="
60
+ "version": "3.7.2",
61
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
62
+ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="
64
63
  },
65
64
  "caseless": {
66
65
  "version": "0.12.0",
@@ -68,23 +67,18 @@
68
67
  "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
69
68
  },
70
69
  "changelog-parser": {
71
- "version": "2.5.0",
72
- "resolved": "https://registry.npmjs.org/changelog-parser/-/changelog-parser-2.5.0.tgz",
73
- "integrity": "sha1-XWeqJGPPUI7xQV8AZmlZXH/h3qM=",
70
+ "version": "2.8.0",
71
+ "resolved": "https://registry.npmjs.org/changelog-parser/-/changelog-parser-2.8.0.tgz",
72
+ "integrity": "sha512-ZtSwN0hY7t+WpvaXqqXz98RHCNhWX9HsvCRAv1aBLlqJ7BpKtqdM6Nu6JOiUhRAWR7Gov0aN0fUnmflTz0WgZg==",
74
73
  "requires": {
75
74
  "line-reader": "^0.2.4",
76
75
  "remove-markdown": "^0.2.2"
77
76
  }
78
77
  },
79
- "co": {
80
- "version": "4.6.0",
81
- "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
82
- "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
83
- },
84
78
  "combined-stream": {
85
- "version": "1.0.6",
86
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
87
- "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
79
+ "version": "1.0.8",
80
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
81
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
88
82
  "requires": {
89
83
  "delayed-stream": "~1.0.0"
90
84
  }
@@ -116,7 +110,6 @@
116
110
  "version": "0.1.2",
117
111
  "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
118
112
  "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
119
- "optional": true,
120
113
  "requires": {
121
114
  "jsbn": "~0.1.0",
122
115
  "safer-buffer": "^2.1.0"
@@ -133,14 +126,14 @@
133
126
  "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
134
127
  },
135
128
  "fast-deep-equal": {
136
- "version": "1.1.0",
137
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
138
- "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ="
129
+ "version": "3.1.3",
130
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
131
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
139
132
  },
140
133
  "fast-json-stable-stringify": {
141
- "version": "2.0.0",
142
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
143
- "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
134
+ "version": "2.1.0",
135
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
136
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
144
137
  },
145
138
  "forever-agent": {
146
139
  "version": "0.6.1",
@@ -148,12 +141,12 @@
148
141
  "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
149
142
  },
150
143
  "form-data": {
151
- "version": "2.3.2",
152
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz",
153
- "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=",
144
+ "version": "2.3.3",
145
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
146
+ "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
154
147
  "requires": {
155
148
  "asynckit": "^0.4.0",
156
- "combined-stream": "1.0.6",
149
+ "combined-stream": "^1.0.6",
157
150
  "mime-types": "^2.1.12"
158
151
  }
159
152
  },
@@ -171,11 +164,11 @@
171
164
  "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
172
165
  },
173
166
  "har-validator": {
174
- "version": "5.1.0",
175
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz",
176
- "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==",
167
+ "version": "5.1.5",
168
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
169
+ "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
177
170
  "requires": {
178
- "ajv": "^5.3.0",
171
+ "ajv": "^6.12.3",
179
172
  "har-schema": "^2.0.0"
180
173
  }
181
174
  },
@@ -202,18 +195,17 @@
202
195
  "jsbn": {
203
196
  "version": "0.1.1",
204
197
  "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
205
- "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
206
- "optional": true
198
+ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
207
199
  },
208
200
  "json-schema": {
209
- "version": "0.2.3",
210
- "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
211
- "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
201
+ "version": "0.4.0",
202
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
203
+ "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="
212
204
  },
213
205
  "json-schema-traverse": {
214
- "version": "0.3.1",
215
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
216
- "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A="
206
+ "version": "0.4.1",
207
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
208
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
217
209
  },
218
210
  "json-stringify-safe": {
219
211
  "version": "5.0.1",
@@ -221,13 +213,13 @@
221
213
  "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
222
214
  },
223
215
  "jsprim": {
224
- "version": "1.4.1",
225
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
226
- "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
216
+ "version": "1.4.2",
217
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz",
218
+ "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==",
227
219
  "requires": {
228
220
  "assert-plus": "1.0.0",
229
221
  "extsprintf": "1.3.0",
230
- "json-schema": "0.2.3",
222
+ "json-schema": "0.4.0",
231
223
  "verror": "1.10.0"
232
224
  }
233
225
  },
@@ -237,16 +229,16 @@
237
229
  "integrity": "sha1-xDkrWH3qOFgMlnhXDm6OSfzlJiI="
238
230
  },
239
231
  "mime-db": {
240
- "version": "1.36.0",
241
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz",
242
- "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw=="
232
+ "version": "1.51.0",
233
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz",
234
+ "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g=="
243
235
  },
244
236
  "mime-types": {
245
- "version": "2.1.20",
246
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz",
247
- "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==",
237
+ "version": "2.1.34",
238
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz",
239
+ "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==",
248
240
  "requires": {
249
- "mime-db": "~1.36.0"
241
+ "mime-db": "1.51.0"
250
242
  }
251
243
  },
252
244
  "oauth-sign": {
@@ -255,9 +247,9 @@
255
247
  "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
256
248
  },
257
249
  "octonode": {
258
- "version": "0.9.4",
259
- "resolved": "https://registry.npmjs.org/octonode/-/octonode-0.9.4.tgz",
260
- "integrity": "sha512-ZNrQab4fD6qJV9ERQ93hVYBAmTDPE58afEQT3WbIXcsvz6XqL/icIqfuiGCKpe6GOXvurJYMo3cinDz8SFua9Q==",
250
+ "version": "0.9.5",
251
+ "resolved": "https://registry.npmjs.org/octonode/-/octonode-0.9.5.tgz",
252
+ "integrity": "sha512-l+aX9jNVkaagh7u/q2QpNKdL8XUagdztl+ebXxBRU6FJ1tpRxAH/ygIuWh0h7eS491BsyH6bb0QZIQEC2+u5oA==",
261
253
  "requires": {
262
254
  "bluebird": "^3.5.0",
263
255
  "deep-extend": "^0.6.0",
@@ -271,26 +263,32 @@
271
263
  "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
272
264
  },
273
265
  "psl": {
274
- "version": "1.1.29",
275
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz",
276
- "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ=="
266
+ "version": "1.8.0",
267
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
268
+ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
277
269
  },
278
270
  "punycode": {
279
- "version": "1.4.1",
280
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
281
- "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
271
+ "version": "2.1.1",
272
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
273
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
282
274
  },
283
275
  "qs": {
284
276
  "version": "6.5.2",
285
277
  "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
286
278
  "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
287
279
  },
280
+ "randombytes": {
281
+ "version": "2.0.3",
282
+ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.3.tgz",
283
+ "integrity": "sha1-Z0yZdgkBw8QRJ3GjHlIdw0nMCew="
284
+ },
288
285
  "randomstring": {
289
- "version": "1.1.5",
290
- "resolved": "https://registry.npmjs.org/randomstring/-/randomstring-1.1.5.tgz",
291
- "integrity": "sha1-bfBij3XL1ZMpMNn+OrTpVqGFGMM=",
286
+ "version": "1.2.1",
287
+ "resolved": "https://registry.npmjs.org/randomstring/-/randomstring-1.2.1.tgz",
288
+ "integrity": "sha512-eMnfell9XuU3jfCx3f4xCaFAt0YMFPZhx9R3PSStmLarDKg5j5vivqKhf/8pvG+VX/YkxsckHK/VPUrKa5V07A==",
292
289
  "requires": {
293
- "array-uniq": "1.0.2"
290
+ "array-uniq": "1.0.2",
291
+ "randombytes": "2.0.3"
294
292
  }
295
293
  },
296
294
  "remove-markdown": {
@@ -299,9 +297,9 @@
299
297
  "integrity": "sha1-ZrDO66n7d8qWNrsbAwfOIaMqEqY="
300
298
  },
301
299
  "request": {
302
- "version": "2.88.0",
303
- "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
304
- "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
300
+ "version": "2.88.2",
301
+ "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
302
+ "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
305
303
  "requires": {
306
304
  "aws-sign2": "~0.7.0",
307
305
  "aws4": "^1.8.0",
@@ -310,7 +308,7 @@
310
308
  "extend": "~3.0.2",
311
309
  "forever-agent": "~0.6.1",
312
310
  "form-data": "~2.3.2",
313
- "har-validator": "~5.1.0",
311
+ "har-validator": "~5.1.3",
314
312
  "http-signature": "~1.2.0",
315
313
  "is-typedarray": "~1.0.0",
316
314
  "isstream": "~0.1.2",
@@ -320,15 +318,15 @@
320
318
  "performance-now": "^2.1.0",
321
319
  "qs": "~6.5.2",
322
320
  "safe-buffer": "^5.1.2",
323
- "tough-cookie": "~2.4.3",
321
+ "tough-cookie": "~2.5.0",
324
322
  "tunnel-agent": "^0.6.0",
325
323
  "uuid": "^3.3.2"
326
324
  }
327
325
  },
328
326
  "safe-buffer": {
329
- "version": "5.1.2",
330
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
331
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
327
+ "version": "5.2.1",
328
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
329
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
332
330
  },
333
331
  "safer-buffer": {
334
332
  "version": "2.1.2",
@@ -336,9 +334,9 @@
336
334
  "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
337
335
  },
338
336
  "sshpk": {
339
- "version": "1.14.2",
340
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz",
341
- "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=",
337
+ "version": "1.16.1",
338
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
339
+ "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
342
340
  "requires": {
343
341
  "asn1": "~0.2.3",
344
342
  "assert-plus": "^1.0.0",
@@ -352,12 +350,12 @@
352
350
  }
353
351
  },
354
352
  "tough-cookie": {
355
- "version": "2.4.3",
356
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
357
- "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
353
+ "version": "2.5.0",
354
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
355
+ "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
358
356
  "requires": {
359
- "psl": "^1.1.24",
360
- "punycode": "^1.4.1"
357
+ "psl": "^1.1.28",
358
+ "punycode": "^2.1.1"
361
359
  }
362
360
  },
363
361
  "tunnel-agent": {
@@ -371,13 +369,20 @@
371
369
  "tweetnacl": {
372
370
  "version": "0.14.5",
373
371
  "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
374
- "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
375
- "optional": true
372
+ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
373
+ },
374
+ "uri-js": {
375
+ "version": "4.4.1",
376
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
377
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
378
+ "requires": {
379
+ "punycode": "^2.1.0"
380
+ }
376
381
  },
377
382
  "uuid": {
378
- "version": "3.3.2",
379
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
380
- "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
383
+ "version": "3.4.0",
384
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
385
+ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
381
386
  },
382
387
  "verror": {
383
388
  "version": "1.10.0",
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.handler = exports.cloudwatch = void 0;
23
+ // eslint-disable-next-line import/no-extraneous-dependencies
24
+ const AWS = __importStar(require("aws-sdk"));
25
+ // export for tests
26
+ exports.cloudwatch = new AWS.CloudWatch();
27
+ const logger = {
28
+ log: (line) => process.stdout.write(line),
29
+ };
30
+ /**
31
+ * Lambda function that reacts to an Amazon EventBridge event triggered by a 'CodePipeline Action Execution State Change'.
32
+ * The handler reads the event and sends off metrics to CloudWatch.
33
+ */
34
+ async function handler(event) {
35
+ logger.log(`Received event: ${JSON.stringify(event)}`);
36
+ switch (event['detail-type']) {
37
+ case 'CodePipeline Pipeline Execution State Change':
38
+ await handleExecutionChange(event);
39
+ break;
40
+ case 'CodePipeline Action Execution State Change':
41
+ await handleActionChange(event);
42
+ break;
43
+ default: throw new Error(`Unhandled detail type ${event['detaill-type']}`);
44
+ }
45
+ }
46
+ exports.handler = handler;
47
+ async function handleExecutionChange(event) {
48
+ const pipelineName = event.detail.pipeline;
49
+ const state = event.detail.state;
50
+ let value;
51
+ switch (state) {
52
+ case 'FAILED':
53
+ value = 1;
54
+ break;
55
+ case 'SUCCEEDED':
56
+ value = 0;
57
+ break;
58
+ default: throw new Error(`Unsupported state: ${state}. Only FAILED and SUCCEEDED states are supported. ` +
59
+ 'Others must be filtered out prior to this function.');
60
+ }
61
+ await putMetric(event, value, [
62
+ { Name: 'Pipeline', Value: pipelineName },
63
+ ]);
64
+ logger.log('Done');
65
+ }
66
+ async function handleActionChange(event) {
67
+ const pipelineName = event.detail.pipeline;
68
+ const action = event.detail.action;
69
+ const state = event.detail.state;
70
+ let value;
71
+ switch (state) {
72
+ case 'FAILED':
73
+ value = 1;
74
+ break;
75
+ case 'SUCCEEDED':
76
+ value = 0;
77
+ break;
78
+ default: throw new Error(`Unsupported state: ${state}. Only FAILED and SUCCEEDED states are supported. ` +
79
+ 'Others must be filtered out prior to this function.');
80
+ }
81
+ await putMetric(event, value, [
82
+ { Name: 'Pipeline', Value: pipelineName },
83
+ { Name: 'Action', Value: action },
84
+ ]);
85
+ logger.log('Done');
86
+ }
87
+ async function putMetric(event, value, dimensions) {
88
+ const metricNamespace = process.env.METRIC_NAMESPACE;
89
+ const metricName = process.env.METRIC_NAME;
90
+ const time = new Date(event.time);
91
+ if (!metricNamespace || !metricName) {
92
+ throw new Error('Both METRIC_NAMESPACE and METRIC_NAME environment variables must be set.');
93
+ }
94
+ const input = {
95
+ Namespace: metricNamespace,
96
+ MetricData: [
97
+ {
98
+ MetricName: metricName,
99
+ Value: value,
100
+ Dimensions: dimensions,
101
+ Timestamp: time,
102
+ },
103
+ ],
104
+ };
105
+ logger.log(`Calling PutMetricData with payload: ${JSON.stringify(input)}`);
106
+ await exports.cloudwatch.putMetricData(input).promise();
107
+ }
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0Y2hlci1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsid2F0Y2hlci1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2REFBNkQ7QUFDN0QsNkNBQStCO0FBbUIvQixtQkFBbUI7QUFDTixRQUFBLFVBQVUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUMvQyxNQUFNLE1BQU0sR0FBRztJQUNiLEdBQUcsRUFBRSxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO0NBQ2xELENBQUM7QUFFRjs7O0dBR0c7QUFDSSxLQUFLLFVBQVUsT0FBTyxDQUFDLEtBQWdCO0lBQzVDLE1BQU0sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRXZELFFBQVEsS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFO1FBQzVCLEtBQUssOENBQThDO1lBQUUsTUFBTSxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUFDLE1BQU07UUFDL0YsS0FBSyw0Q0FBNEM7WUFBRSxNQUFNLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQUMsTUFBTTtRQUMxRixPQUFPLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixLQUFLLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0tBQzVFO0FBQ0gsQ0FBQztBQVJELDBCQVFDO0FBRUQsS0FBSyxVQUFVLHFCQUFxQixDQUFDLEtBQXNDO0lBQ3pFLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO0lBQzNDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBRWpDLElBQUksS0FBYSxDQUFDO0lBQ2xCLFFBQVEsS0FBSyxFQUFFO1FBQ2IsS0FBSyxRQUFRO1lBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUFDLE1BQU07UUFDaEMsS0FBSyxXQUFXO1lBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUFDLE1BQU07UUFDbkMsT0FBTyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsS0FBSyxvREFBb0Q7WUFDeEcscURBQXFELENBQUMsQ0FBQztLQUN4RDtJQUVELE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7UUFDNUIsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7S0FDMUMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNyQixDQUFDO0FBR0QsS0FBSyxVQUFVLGtCQUFrQixDQUFDLEtBQW1DO0lBQ25FLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO0lBQzNDLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ25DLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBRWpDLElBQUksS0FBYSxDQUFDO0lBQ2xCLFFBQVEsS0FBSyxFQUFFO1FBQ2IsS0FBSyxRQUFRO1lBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUFDLE1BQU07UUFDaEMsS0FBSyxXQUFXO1lBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUFDLE1BQU07UUFDbkMsT0FBTyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsS0FBSyxvREFBb0Q7WUFDeEcscURBQXFELENBQUMsQ0FBQztLQUN4RDtJQUVELE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7UUFDNUIsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7UUFDekMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7S0FDbEMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNyQixDQUFDO0FBRUQsS0FBSyxVQUFVLFNBQVMsQ0FBQyxLQUFnQixFQUFFLEtBQWEsRUFBRSxVQUFxQztJQUM3RixNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDO0lBQ3JELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDO0lBQzNDLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVsQyxJQUFJLENBQUMsZUFBZSxJQUFJLENBQUMsVUFBVSxFQUFFO1FBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsMEVBQTBFLENBQUMsQ0FBQztLQUM3RjtJQUVELE1BQU0sS0FBSyxHQUFzQztRQUMvQyxTQUFTLEVBQUUsZUFBZTtRQUMxQixVQUFVLEVBQUU7WUFDVjtnQkFDRSxVQUFVLEVBQUUsVUFBVTtnQkFDdEIsS0FBSyxFQUFFLEtBQUs7Z0JBQ1osVUFBVSxFQUFFLFVBQVU7Z0JBQ3RCLFNBQVMsRUFBRSxJQUFJO2FBQ2hCO1NBQ0Y7S0FDRixDQUFDO0lBRUYsTUFBTSxDQUFDLEdBQUcsQ0FBQyx1Q0FBdUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFM0UsTUFBTSxrQkFBVSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUNsRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0ICogYXMgQVdTIGZyb20gJ2F3cy1zZGsnO1xuXG4vLyBQYXJ0aWFsIHR5cGUgZm9yIHRoZSAnZGV0YWlsJyBzZWN0aW9uIG9mIGFuIGV2ZW50IGZyb20gQW1hem9uIEV2ZW50QnJpZGdlIGZvciAnQ29kZVBpcGVsaW5lIEV4ZWN1dGlvbiBTdGF0ZSBDaGFuZ2UnXG4vLyBTZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2V2ZW50YnJpZGdlL2xhdGVzdC91c2VyZ3VpZGUvZXZlbnQtdHlwZXMuaHRtbCNjb2RlcGlwZWxpbmUtZXZlbnQtdHlwZVxuZXhwb3J0IGludGVyZmFjZSBFeGVjdXRpb25TdGF0ZUNoYW5nZUV2ZW50IHtcbiAgcmVhZG9ubHkgcGlwZWxpbmU6IHN0cmluZztcbiAgcmVhZG9ubHkgc3RhdGU6ICdTVEFSVEVEJyB8ICdDQU5DRUxFRCcgfCAnRkFJTEVEJyB8ICdTVUNDRUVERUQnO1xufVxuXG4vLyBQYXJ0aWFsIHR5cGUgZm9yIHRoZSAnZGV0YWlsJyBzZWN0aW9uIG9mIGFuIGV2ZW50IGZyb20gQW1hem9uIEV2ZW50QnJpZGdlIGZvciAnQ29kZVBpcGVsaW5lIEFjdGlvbiBFeGVjdXRpb24gU3RhdGUgQ2hhbmdlJ1xuLy8gU2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9ldmVudGJyaWRnZS9sYXRlc3QvdXNlcmd1aWRlL2V2ZW50LXR5cGVzLmh0bWwjY29kZXBpcGVsaW5lLWV2ZW50LXR5cGVcbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uU3RhdGVDaGFuZ2VFdmVudCBleHRlbmRzIEV4ZWN1dGlvblN0YXRlQ2hhbmdlRXZlbnQge1xuICByZWFkb25seSBhY3Rpb246IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgTGFtYmRhRXhlY3V0aW9uU3RhdGVDaGFuZ2VFdmVudCA9IEFXU0xhbWJkYS5FdmVudEJyaWRnZUV2ZW50PCdDb2RlUGlwZWxpbmUgUGlwZWxpbmUgRXhlY3V0aW9uIFN0YXRlIENoYW5nZScsIEV4ZWN1dGlvblN0YXRlQ2hhbmdlRXZlbnQ+O1xuZXhwb3J0IHR5cGUgTGFtYmRhQWN0aW9uU3RhdGVDaGFuZ2VFdmVudCA9IEFXU0xhbWJkYS5FdmVudEJyaWRnZUV2ZW50PCdDb2RlUGlwZWxpbmUgQWN0aW9uIEV4ZWN1dGlvbiBTdGF0ZSBDaGFuZ2UnLCBBY3Rpb25TdGF0ZUNoYW5nZUV2ZW50PjtcbmV4cG9ydCB0eXBlIEV2ZW50VHlwZSA9IExhbWJkYUV4ZWN1dGlvblN0YXRlQ2hhbmdlRXZlbnQgfCBMYW1iZGFBY3Rpb25TdGF0ZUNoYW5nZUV2ZW50O1xuXG4vLyBleHBvcnQgZm9yIHRlc3RzXG5leHBvcnQgY29uc3QgY2xvdWR3YXRjaCA9IG5ldyBBV1MuQ2xvdWRXYXRjaCgpO1xuY29uc3QgbG9nZ2VyID0ge1xuICBsb2c6IChsaW5lOiBzdHJpbmcpID0+IHByb2Nlc3Muc3Rkb3V0LndyaXRlKGxpbmUpLFxufTtcblxuLyoqXG4gKiBMYW1iZGEgZnVuY3Rpb24gdGhhdCByZWFjdHMgdG8gYW4gQW1hem9uIEV2ZW50QnJpZGdlIGV2ZW50IHRyaWdnZXJlZCBieSBhICdDb2RlUGlwZWxpbmUgQWN0aW9uIEV4ZWN1dGlvbiBTdGF0ZSBDaGFuZ2UnLlxuICogVGhlIGhhbmRsZXIgcmVhZHMgdGhlIGV2ZW50IGFuZCBzZW5kcyBvZmYgbWV0cmljcyB0byBDbG91ZFdhdGNoLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlcihldmVudDogRXZlbnRUeXBlKSB7XG4gIGxvZ2dlci5sb2coYFJlY2VpdmVkIGV2ZW50OiAke0pTT04uc3RyaW5naWZ5KGV2ZW50KX1gKTtcblxuICBzd2l0Y2ggKGV2ZW50WydkZXRhaWwtdHlwZSddKSB7XG4gICAgY2FzZSAnQ29kZVBpcGVsaW5lIFBpcGVsaW5lIEV4ZWN1dGlvbiBTdGF0ZSBDaGFuZ2UnOiBhd2FpdCBoYW5kbGVFeGVjdXRpb25DaGFuZ2UoZXZlbnQpOyBicmVhaztcbiAgICBjYXNlICdDb2RlUGlwZWxpbmUgQWN0aW9uIEV4ZWN1dGlvbiBTdGF0ZSBDaGFuZ2UnOiBhd2FpdCBoYW5kbGVBY3Rpb25DaGFuZ2UoZXZlbnQpOyBicmVhaztcbiAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoYFVuaGFuZGxlZCBkZXRhaWwgdHlwZSAke2V2ZW50WydkZXRhaWxsLXR5cGUnXX1gKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBoYW5kbGVFeGVjdXRpb25DaGFuZ2UoZXZlbnQ6IExhbWJkYUV4ZWN1dGlvblN0YXRlQ2hhbmdlRXZlbnQpIHtcbiAgY29uc3QgcGlwZWxpbmVOYW1lID0gZXZlbnQuZGV0YWlsLnBpcGVsaW5lO1xuICBjb25zdCBzdGF0ZSA9IGV2ZW50LmRldGFpbC5zdGF0ZTtcblxuICBsZXQgdmFsdWU6IG51bWJlcjtcbiAgc3dpdGNoIChzdGF0ZSkge1xuICAgIGNhc2UgJ0ZBSUxFRCc6IHZhbHVlID0gMTsgYnJlYWs7XG4gICAgY2FzZSAnU1VDQ0VFREVEJzogdmFsdWUgPSAwOyBicmVhaztcbiAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHN0YXRlOiAke3N0YXRlfS4gT25seSBGQUlMRUQgYW5kIFNVQ0NFRURFRCBzdGF0ZXMgYXJlIHN1cHBvcnRlZC4gYCArXG4gICAgJ090aGVycyBtdXN0IGJlIGZpbHRlcmVkIG91dCBwcmlvciB0byB0aGlzIGZ1bmN0aW9uLicpO1xuICB9XG5cbiAgYXdhaXQgcHV0TWV0cmljKGV2ZW50LCB2YWx1ZSwgW1xuICAgIHsgTmFtZTogJ1BpcGVsaW5lJywgVmFsdWU6IHBpcGVsaW5lTmFtZSB9LFxuICBdKTtcblxuICBsb2dnZXIubG9nKCdEb25lJyk7XG59XG5cblxuYXN5bmMgZnVuY3Rpb24gaGFuZGxlQWN0aW9uQ2hhbmdlKGV2ZW50OiBMYW1iZGFBY3Rpb25TdGF0ZUNoYW5nZUV2ZW50KSB7XG4gIGNvbnN0IHBpcGVsaW5lTmFtZSA9IGV2ZW50LmRldGFpbC5waXBlbGluZTtcbiAgY29uc3QgYWN0aW9uID0gZXZlbnQuZGV0YWlsLmFjdGlvbjtcbiAgY29uc3Qgc3RhdGUgPSBldmVudC5kZXRhaWwuc3RhdGU7XG5cbiAgbGV0IHZhbHVlOiBudW1iZXI7XG4gIHN3aXRjaCAoc3RhdGUpIHtcbiAgICBjYXNlICdGQUlMRUQnOiB2YWx1ZSA9IDE7IGJyZWFrO1xuICAgIGNhc2UgJ1NVQ0NFRURFRCc6IHZhbHVlID0gMDsgYnJlYWs7XG4gICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBzdGF0ZTogJHtzdGF0ZX0uIE9ubHkgRkFJTEVEIGFuZCBTVUNDRUVERUQgc3RhdGVzIGFyZSBzdXBwb3J0ZWQuIGAgK1xuICAgICdPdGhlcnMgbXVzdCBiZSBmaWx0ZXJlZCBvdXQgcHJpb3IgdG8gdGhpcyBmdW5jdGlvbi4nKTtcbiAgfVxuXG4gIGF3YWl0IHB1dE1ldHJpYyhldmVudCwgdmFsdWUsIFtcbiAgICB7IE5hbWU6ICdQaXBlbGluZScsIFZhbHVlOiBwaXBlbGluZU5hbWUgfSxcbiAgICB7IE5hbWU6ICdBY3Rpb24nLCBWYWx1ZTogYWN0aW9uIH0sXG4gIF0pO1xuXG4gIGxvZ2dlci5sb2coJ0RvbmUnKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcHV0TWV0cmljKGV2ZW50OiBFdmVudFR5cGUsIHZhbHVlOiBudW1iZXIsIGRpbWVuc2lvbnM6IEFXUy5DbG91ZFdhdGNoLkRpbWVuc2lvbnMpIHtcbiAgY29uc3QgbWV0cmljTmFtZXNwYWNlID0gcHJvY2Vzcy5lbnYuTUVUUklDX05BTUVTUEFDRTtcbiAgY29uc3QgbWV0cmljTmFtZSA9IHByb2Nlc3MuZW52Lk1FVFJJQ19OQU1FO1xuICBjb25zdCB0aW1lID0gbmV3IERhdGUoZXZlbnQudGltZSk7XG5cbiAgaWYgKCFtZXRyaWNOYW1lc3BhY2UgfHwgIW1ldHJpY05hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0JvdGggTUVUUklDX05BTUVTUEFDRSBhbmQgTUVUUklDX05BTUUgZW52aXJvbm1lbnQgdmFyaWFibGVzIG11c3QgYmUgc2V0LicpO1xuICB9XG5cbiAgY29uc3QgaW5wdXQ6IEFXUy5DbG91ZFdhdGNoLlB1dE1ldHJpY0RhdGFJbnB1dCA9IHtcbiAgICBOYW1lc3BhY2U6IG1ldHJpY05hbWVzcGFjZSxcbiAgICBNZXRyaWNEYXRhOiBbXG4gICAgICB7XG4gICAgICAgIE1ldHJpY05hbWU6IG1ldHJpY05hbWUsXG4gICAgICAgIFZhbHVlOiB2YWx1ZSxcbiAgICAgICAgRGltZW5zaW9uczogZGltZW5zaW9ucyxcbiAgICAgICAgVGltZXN0YW1wOiB0aW1lLFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xuXG4gIGxvZ2dlci5sb2coYENhbGxpbmcgUHV0TWV0cmljRGF0YSB3aXRoIHBheWxvYWQ6ICR7SlNPTi5zdHJpbmdpZnkoaW5wdXQpfWApO1xuXG4gIGF3YWl0IGNsb3Vkd2F0Y2gucHV0TWV0cmljRGF0YShpbnB1dCkucHJvbWlzZSgpO1xufSJdfQ==