aws-delivlib 13.4.3 → 13.4.7
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.
- package/cdk.out/{asset.e12c7af9b638ac5f6e69012fdab4a414bd0c107b6a233304e64b443a621ecd20 → asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451}/create-release.js +0 -0
- package/cdk.out/{asset.e12c7af9b638ac5f6e69012fdab4a414bd0c107b6a233304e64b443a621ecd20 → asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451}/package-lock.json +100 -95
- package/cdk.out/{asset.e12c7af9b638ac5f6e69012fdab4a414bd0c107b6a233304e64b443a621ecd20 → asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451}/package.json +0 -0
- package/cdk.out/{asset.e12c7af9b638ac5f6e69012fdab4a414bd0c107b6a233304e64b443a621ecd20 → asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451}/publish.sh +0 -0
- package/cdk.out/{asset.e12c7af9b638ac5f6e69012fdab4a414bd0c107b6a233304e64b443a621ecd20 → asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451}/sign-files.sh +0 -0
- package/cdk.out/{asset.e12c7af9b638ac5f6e69012fdab4a414bd0c107b6a233304e64b443a621ecd20 → asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451}/with-signing-key.sh +0 -0
- package/cdk.out/{asset.dc2e98009b027861f34e56eebb81faa5a3951ed9da80ce4a903a45de04268238 → asset.3044256b9586ecb8a7709713aaca30ceb34f699e3f93c8858f633aaf2f0c7140}/index.js +17 -11
- package/cdk.out/delivlib-test.assets.json +8 -8
- package/cdk.out/delivlib-test.template.json +32 -27
- package/cdk.out/manifest.json +272 -272
- package/cdk.out/tree.json +442 -437
- package/lib/custom-resource-handlers/src/certificate-signing-request.tsbuildinfo +1 -1
- package/lib/custom-resource-handlers/src/pgp-secret.tsbuildinfo +1 -1
- package/lib/custom-resource-handlers/src/private-key.tsbuildinfo +1 -1
- package/lib/publishing/github/package-lock.json +100 -95
- package/package.json +17 -18
- package/lib/__tests__/auto-build.test.d.ts +0 -1
- package/lib/__tests__/auto-build.test.js +0 -119
- package/lib/__tests__/build-spec.test.d.ts +0 -1
- package/lib/__tests__/build-spec.test.js +0 -82
- package/lib/__tests__/bump.test.d.ts +0 -1
- package/lib/__tests__/bump.test.js +0 -284
- package/lib/__tests__/canary.test.d.ts +0 -1
- package/lib/__tests__/canary.test.js +0 -144
- package/lib/__tests__/change-control-lambda/disable-transition.test.d.ts +0 -1
- package/lib/__tests__/change-control-lambda/disable-transition.test.js +0 -64
- package/lib/__tests__/change-control-lambda/handler.test.d.ts +0 -1
- package/lib/__tests__/change-control-lambda/handler.test.js +0 -143
- package/lib/__tests__/change-control-lambda/time-window.test.d.ts +0 -1
- package/lib/__tests__/change-control-lambda/time-window.test.js +0 -131
- package/lib/__tests__/chime-notifier.test.d.ts +0 -6
- package/lib/__tests__/chime-notifier.test.js +0 -138
- package/lib/__tests__/code-signing-cert.test.d.ts +0 -1
- package/lib/__tests__/code-signing-cert.test.js +0 -72
- package/lib/__tests__/custom-resource-handlers/_cloud-formation.test.d.ts +0 -1
- package/lib/__tests__/custom-resource-handlers/_cloud-formation.test.js +0 -100
- package/lib/__tests__/custom-resource-handlers/_exec.test.d.ts +0 -1
- package/lib/__tests__/custom-resource-handlers/_exec.test.js +0 -9
- package/lib/__tests__/custom-resource-handlers/_rmrf.test.d.ts +0 -1
- package/lib/__tests__/custom-resource-handlers/_rmrf.test.js +0 -13
- package/lib/__tests__/custom-resource-handlers/certificate-signing-request.test.d.ts +0 -1
- package/lib/__tests__/custom-resource-handlers/certificate-signing-request.test.js +0 -171
- package/lib/__tests__/custom-resource-handlers/pgp-secret.test.d.ts +0 -1
- package/lib/__tests__/custom-resource-handlers/pgp-secret.test.js +0 -169
- package/lib/__tests__/custom-resource-handlers/private-key.test.d.ts +0 -1
- package/lib/__tests__/custom-resource-handlers/private-key.test.js +0 -164
- package/lib/__tests__/integ.delivlib.d.ts +0 -1
- package/lib/__tests__/integ.delivlib.js +0 -33
- package/lib/__tests__/open-pgp-key-pair.test.d.ts +0 -1
- package/lib/__tests__/open-pgp-key-pair.test.js +0 -130
- package/lib/__tests__/pipeline-notifications/chime.test.d.ts +0 -1
- package/lib/__tests__/pipeline-notifications/chime.test.js +0 -69
- package/lib/__tests__/pipeline-notifications/slack.test.d.ts +0 -1
- package/lib/__tests__/pipeline-notifications/slack.test.js +0 -82
- package/lib/__tests__/pipeline.test.d.ts +0 -1
- package/lib/__tests__/pipeline.test.js +0 -362
- package/lib/__tests__/pr.test.d.ts +0 -3
- package/lib/__tests__/pr.test.js +0 -88
- package/lib/__tests__/publishing.test.d.ts +0 -1
- package/lib/__tests__/publishing.test.js +0 -89
- package/lib/__tests__/registry-sync/ecr-mirror.test.d.ts +0 -1
- package/lib/__tests__/registry-sync/ecr-mirror.test.js +0 -313
- package/lib/__tests__/registry-sync/mirror-source.test.d.ts +0 -1
- package/lib/__tests__/registry-sync/mirror-source.test.js +0 -225
- package/lib/__tests__/shellable.test.d.ts +0 -1
- package/lib/__tests__/shellable.test.js +0 -479
- package/lib/__tests__/test-stack.d.ts +0 -4
- package/lib/__tests__/test-stack.js +0 -184
- package/lib/__tests__/watcher-handler.test.d.ts +0 -1
- package/lib/__tests__/watcher-handler.test.js +0 -190
- package/lib/__tests__/watcher.test.d.ts +0 -1
- package/lib/__tests__/watcher.test.js +0 -78
package/lib/__tests__/pr.test.js
DELETED
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
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.containsSlice = void 0;
|
|
23
|
-
// tslint:disable: max-line-length
|
|
24
|
-
const assert_1 = require("@monocdk-experiment/assert");
|
|
25
|
-
require("@monocdk-experiment/assert/jest");
|
|
26
|
-
const cdk = __importStar(require("monocdk"));
|
|
27
|
-
const lib_1 = require("../../lib");
|
|
28
|
-
const MOCK_REPO = new lib_1.WritableGitHubRepo({
|
|
29
|
-
sshKeySecret: { secretArn: 'ssh-key-secret-arn' },
|
|
30
|
-
commitUsername: 'user',
|
|
31
|
-
commitEmail: 'email@email',
|
|
32
|
-
repository: 'owner/repo',
|
|
33
|
-
tokenSecretArn: 'token-secret-arn',
|
|
34
|
-
});
|
|
35
|
-
let app;
|
|
36
|
-
let stack;
|
|
37
|
-
beforeEach(() => {
|
|
38
|
-
app = new cdk.App();
|
|
39
|
-
stack = new cdk.Stack(app, 'TestStack');
|
|
40
|
-
});
|
|
41
|
-
test('skip PR if still open', () => {
|
|
42
|
-
// WHEN
|
|
43
|
-
new lib_1.AutoPullRequest(stack, 'AutoPull', {
|
|
44
|
-
repo: MOCK_REPO,
|
|
45
|
-
head: { name: 'new-feature' },
|
|
46
|
-
skipIfOpenPrsWithLabels: ['asdf'],
|
|
47
|
-
});
|
|
48
|
-
// THEN
|
|
49
|
-
expect(stack).toHaveResourceLike('AWS::CodeBuild::Project', {
|
|
50
|
-
Source: {
|
|
51
|
-
BuildSpec: (0, assert_1.encodedJson)({
|
|
52
|
-
version: '0.2',
|
|
53
|
-
phases: (0, assert_1.objectLike)({
|
|
54
|
-
build: {
|
|
55
|
-
commands: containsSlice([
|
|
56
|
-
'$SKIP || { export GITHUB_TOKEN=$(aws secretsmanager get-secret-value --secret-id "token-secret-arn" --output=text --query=SecretString) ; }',
|
|
57
|
-
'$SKIP || { curl --fail -o search.json --header "Authorization: token $GITHUB_TOKEN" --header "Content-Type: application/json" \'https://api.github.com/search/issues?q=repo%3Aowner%2Frepo%20is%3Apr%20is%3Aopen%20label%3Aasdf\' ; }',
|
|
58
|
-
'$SKIP || { node -e \'process.exitCode = require("./search.json").total_count\' || { echo "Found open PRs with label asdf, skipping PR."; export SKIP=true; } ; }',
|
|
59
|
-
]),
|
|
60
|
-
},
|
|
61
|
-
}),
|
|
62
|
-
}),
|
|
63
|
-
},
|
|
64
|
-
});
|
|
65
|
-
});
|
|
66
|
-
function containsSlice(elements) {
|
|
67
|
-
return (0, assert_1.annotateMatcher)({ $containsSlice: elements }, (value, failure) => {
|
|
68
|
-
if (!Array.isArray(value)) {
|
|
69
|
-
failure.failureReason = `Expected an Array, but got '${typeof value}'`;
|
|
70
|
-
return false;
|
|
71
|
-
}
|
|
72
|
-
const innerMatchers = elements.map(assert_1.matcherFrom);
|
|
73
|
-
for (let i = 0; i < value.length - elements.length; i++) {
|
|
74
|
-
const innerInspection = { ...failure, failureReason: '' };
|
|
75
|
-
let success = true;
|
|
76
|
-
for (let j = 0; success && j < innerMatchers.length; j++) {
|
|
77
|
-
success = innerMatchers[j](value[i + j], innerInspection);
|
|
78
|
-
}
|
|
79
|
-
if (success) {
|
|
80
|
-
return true;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
failure.failureReason = 'Array did not contain expected elements';
|
|
84
|
-
return false;
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
exports.containsSlice = containsSlice;
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHIudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInByLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGtDQUFrQztBQUNsQyx1REFBdUk7QUFDdkksMkNBQXlDO0FBQ3pDLDZDQUErQjtBQUMvQixtQ0FBZ0U7QUFFaEUsTUFBTSxTQUFTLEdBQUcsSUFBSSx3QkFBa0IsQ0FBQztJQUN2QyxZQUFZLEVBQUUsRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQUU7SUFDakQsY0FBYyxFQUFFLE1BQU07SUFDdEIsV0FBVyxFQUFFLGFBQWE7SUFDMUIsVUFBVSxFQUFFLFlBQVk7SUFDeEIsY0FBYyxFQUFFLGtCQUFrQjtDQUNuQyxDQUFDLENBQUM7QUFHSCxJQUFJLEdBQVksQ0FBQztBQUNqQixJQUFJLEtBQWdCLENBQUM7QUFFckIsVUFBVSxDQUFDLEdBQUcsRUFBRTtJQUNkLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNwQixLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUMxQyxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLEVBQUU7SUFDakMsT0FBTztJQUNQLElBQUkscUJBQWUsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFO1FBQ3JDLElBQUksRUFBRSxTQUFTO1FBQ2YsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRTtRQUM3Qix1QkFBdUIsRUFBRSxDQUFDLE1BQU0sQ0FBQztLQUNsQyxDQUFDLENBQUM7SUFFSCxPQUFPO0lBQ1AsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixDQUFDLHlCQUF5QixFQUFFO1FBQzFELE1BQU0sRUFBRTtZQUNOLFNBQVMsRUFBRSxJQUFBLG9CQUFXLEVBQUM7Z0JBQ3JCLE9BQU8sRUFBRSxLQUFLO2dCQUNkLE1BQU0sRUFBRSxJQUFBLG1CQUFVLEVBQUM7b0JBQ2pCLEtBQUssRUFBRTt3QkFDTCxRQUFRLEVBQUUsYUFBYSxDQUFDOzRCQUN0Qiw2SUFBNkk7NEJBQzdJLHVPQUF1Tzs0QkFDdk8sa0tBQWtLO3lCQUNuSyxDQUFDO3FCQUNIO2lCQUNGLENBQUM7YUFDSCxDQUFDO1NBQ0g7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQztBQUVILFNBQWdCLGFBQWEsQ0FBQyxRQUFlO0lBQzNDLE9BQU8sSUFBQSx3QkFBZSxFQUFDLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsS0FBVSxFQUFFLE9BQTBCLEVBQUUsRUFBRTtRQUM5RixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN6QixPQUFPLENBQUMsYUFBYSxHQUFHLCtCQUErQixPQUFPLEtBQUssR0FBRyxDQUFDO1lBQ3ZFLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLG9CQUFXLENBQUMsQ0FBQztRQUVoRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBRXZELE1BQU0sZUFBZSxHQUFHLEVBQUUsR0FBRyxPQUFPLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQzFELElBQUksT0FBTyxHQUFHLElBQUksQ0FBQztZQUNuQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLElBQUksQ0FBQyxHQUFHLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3hELE9BQU8sR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQzthQUMzRDtZQUVELElBQUksT0FBTyxFQUFFO2dCQUNYLE9BQU8sSUFBSSxDQUFDO2FBQ2I7U0FDRjtRQUVELE9BQU8sQ0FBQyxhQUFhLEdBQUcseUNBQXlDLENBQUM7UUFDbEUsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUF6QkQsc0NBeUJDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHNsaW50OmRpc2FibGU6IG1heC1saW5lLWxlbmd0aFxuaW1wb3J0IHsgYW5ub3RhdGVNYXRjaGVyLCBlbmNvZGVkSnNvbiwgSW5zcGVjdGlvbkZhaWx1cmUsIG1hdGNoZXJGcm9tLCBvYmplY3RMaWtlLCBQcm9wZXJ0eU1hdGNoZXIgfSBmcm9tICdAbW9ub2Nkay1leHBlcmltZW50L2Fzc2VydCc7XG5pbXBvcnQgJ0Btb25vY2RrLWV4cGVyaW1lbnQvYXNzZXJ0L2plc3QnO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ21vbm9jZGsnO1xuaW1wb3J0IHsgQXV0b1B1bGxSZXF1ZXN0LCBXcml0YWJsZUdpdEh1YlJlcG8gfSBmcm9tICcuLi8uLi9saWInO1xuXG5jb25zdCBNT0NLX1JFUE8gPSBuZXcgV3JpdGFibGVHaXRIdWJSZXBvKHtcbiAgc3NoS2V5U2VjcmV0OiB7IHNlY3JldEFybjogJ3NzaC1rZXktc2VjcmV0LWFybicgfSxcbiAgY29tbWl0VXNlcm5hbWU6ICd1c2VyJyxcbiAgY29tbWl0RW1haWw6ICdlbWFpbEBlbWFpbCcsXG4gIHJlcG9zaXRvcnk6ICdvd25lci9yZXBvJyxcbiAgdG9rZW5TZWNyZXRBcm46ICd0b2tlbi1zZWNyZXQtYXJuJyxcbn0pO1xuXG5cbmxldCBhcHA6IGNkay5BcHA7XG5sZXQgc3RhY2s6IGNkay5TdGFjaztcblxuYmVmb3JlRWFjaCgoKSA9PiB7XG4gIGFwcCA9IG5ldyBjZGsuQXBwKCk7XG4gIHN0YWNrID0gbmV3IGNkay5TdGFjayhhcHAsICdUZXN0U3RhY2snKTtcbn0pO1xuXG50ZXN0KCdza2lwIFBSIGlmIHN0aWxsIG9wZW4nLCAoKSA9PiB7XG4gIC8vIFdIRU5cbiAgbmV3IEF1dG9QdWxsUmVxdWVzdChzdGFjaywgJ0F1dG9QdWxsJywge1xuICAgIHJlcG86IE1PQ0tfUkVQTyxcbiAgICBoZWFkOiB7IG5hbWU6ICduZXctZmVhdHVyZScgfSxcbiAgICBza2lwSWZPcGVuUHJzV2l0aExhYmVsczogWydhc2RmJ10sXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KHN0YWNrKS50b0hhdmVSZXNvdXJjZUxpa2UoJ0FXUzo6Q29kZUJ1aWxkOjpQcm9qZWN0Jywge1xuICAgIFNvdXJjZToge1xuICAgICAgQnVpbGRTcGVjOiBlbmNvZGVkSnNvbih7XG4gICAgICAgIHZlcnNpb246ICcwLjInLFxuICAgICAgICBwaGFzZXM6IG9iamVjdExpa2Uoe1xuICAgICAgICAgIGJ1aWxkOiB7XG4gICAgICAgICAgICBjb21tYW5kczogY29udGFpbnNTbGljZShbXG4gICAgICAgICAgICAgICckU0tJUCB8fCB7IGV4cG9ydCBHSVRIVUJfVE9LRU49JChhd3Mgc2VjcmV0c21hbmFnZXIgZ2V0LXNlY3JldC12YWx1ZSAtLXNlY3JldC1pZCBcInRva2VuLXNlY3JldC1hcm5cIiAtLW91dHB1dD10ZXh0IC0tcXVlcnk9U2VjcmV0U3RyaW5nKSA7IH0nLFxuICAgICAgICAgICAgICAnJFNLSVAgfHwgeyBjdXJsIC0tZmFpbCAtbyBzZWFyY2guanNvbiAtLWhlYWRlciBcIkF1dGhvcml6YXRpb246IHRva2VuICRHSVRIVUJfVE9LRU5cIiAtLWhlYWRlciBcIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvblwiIFxcJ2h0dHBzOi8vYXBpLmdpdGh1Yi5jb20vc2VhcmNoL2lzc3Vlcz9xPXJlcG8lM0Fvd25lciUyRnJlcG8lMjBpcyUzQXByJTIwaXMlM0FvcGVuJTIwbGFiZWwlM0Fhc2RmXFwnIDsgfScsXG4gICAgICAgICAgICAgICckU0tJUCB8fCB7IG5vZGUgLWUgXFwncHJvY2Vzcy5leGl0Q29kZSA9IHJlcXVpcmUoXCIuL3NlYXJjaC5qc29uXCIpLnRvdGFsX2NvdW50XFwnIHx8IHsgZWNobyBcIkZvdW5kIG9wZW4gUFJzIHdpdGggbGFiZWwgYXNkZiwgc2tpcHBpbmcgUFIuXCI7IGV4cG9ydCBTS0lQPXRydWU7IH0gOyB9JyxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgfSksXG4gICAgfSxcbiAgfSk7XG59KTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnRhaW5zU2xpY2UoZWxlbWVudHM6IGFueVtdKTogUHJvcGVydHlNYXRjaGVyIHtcbiAgcmV0dXJuIGFubm90YXRlTWF0Y2hlcih7ICRjb250YWluc1NsaWNlOiBlbGVtZW50cyB9LCAodmFsdWU6IGFueSwgZmFpbHVyZTogSW5zcGVjdGlvbkZhaWx1cmUpID0+IHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICBmYWlsdXJlLmZhaWx1cmVSZWFzb24gPSBgRXhwZWN0ZWQgYW4gQXJyYXksIGJ1dCBnb3QgJyR7dHlwZW9mIHZhbHVlfSdgO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGlubmVyTWF0Y2hlcnMgPSBlbGVtZW50cy5tYXAobWF0Y2hlckZyb20pO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGggLSBlbGVtZW50cy5sZW5ndGg7IGkrKykge1xuXG4gICAgICBjb25zdCBpbm5lckluc3BlY3Rpb24gPSB7IC4uLmZhaWx1cmUsIGZhaWx1cmVSZWFzb246ICcnIH07XG4gICAgICBsZXQgc3VjY2VzcyA9IHRydWU7XG4gICAgICBmb3IgKGxldCBqID0gMDsgc3VjY2VzcyAmJiBqIDwgaW5uZXJNYXRjaGVycy5sZW5ndGg7IGorKykge1xuICAgICAgICBzdWNjZXNzID0gaW5uZXJNYXRjaGVyc1tqXSh2YWx1ZVtpICsgal0sIGlubmVySW5zcGVjdGlvbik7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZhaWx1cmUuZmFpbHVyZVJlYXNvbiA9ICdBcnJheSBkaWQgbm90IGNvbnRhaW4gZXhwZWN0ZWQgZWxlbWVudHMnO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSk7XG59XG4iXX0=
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
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
|
-
const assert_1 = require("@monocdk-experiment/assert");
|
|
23
|
-
const monocdk_1 = require("monocdk");
|
|
24
|
-
const delivlib = __importStar(require("../../lib"));
|
|
25
|
-
const { Template, Match } = monocdk_1.assertions;
|
|
26
|
-
describe('with standard pipeline', () => {
|
|
27
|
-
let stack;
|
|
28
|
-
let pipeline;
|
|
29
|
-
beforeEach(() => {
|
|
30
|
-
stack = new monocdk_1.Stack(new monocdk_1.App(), 'TestStack');
|
|
31
|
-
pipeline = new delivlib.Pipeline(stack, 'Pipeline', {
|
|
32
|
-
repo: new delivlib.CodeCommitRepo(new monocdk_1.aws_codecommit.Repository(stack, 'Repo', { repositoryName: 'test' })),
|
|
33
|
-
pipelineName: 'HelloPipeline',
|
|
34
|
-
});
|
|
35
|
-
});
|
|
36
|
-
test('can configure build image for NuGet publishing', () => {
|
|
37
|
-
pipeline.publishToNuGet({
|
|
38
|
-
nugetApiKeySecret: { secretArn: 'arn:aws:secretsmanager:us-east-1:712950704752:secret:delivlib/nuget-fHzSUD' },
|
|
39
|
-
buildImage: monocdk_1.aws_codebuild.LinuxBuildImage.fromDockerRegistry('xyz'),
|
|
40
|
-
});
|
|
41
|
-
(0, assert_1.expect)(stack).to((0, assert_1.haveResourceLike)('AWS::CodeBuild::Project', {
|
|
42
|
-
Environment: {
|
|
43
|
-
Image: 'xyz',
|
|
44
|
-
},
|
|
45
|
-
}));
|
|
46
|
-
});
|
|
47
|
-
test('can configure build image for Maven publishing', () => {
|
|
48
|
-
const signingKey = new delivlib.OpenPGPKeyPair(stack, 'CodeSign', {
|
|
49
|
-
email: 'aws-cdk-dev+delivlib@amazon.com',
|
|
50
|
-
encryptionKey: new monocdk_1.aws_kms.Key(stack, 'CodeSign-CMK'),
|
|
51
|
-
expiry: '4y',
|
|
52
|
-
identity: 'aws-cdk-dev',
|
|
53
|
-
keySizeBits: 4096,
|
|
54
|
-
pubKeyParameterName: `/${stack.node.path}/CodeSign.pub`,
|
|
55
|
-
secretName: stack.node.path + '/CodeSign',
|
|
56
|
-
version: 0,
|
|
57
|
-
removalPolicy: delivlib.OpenPGPKeyPairRemovalPolicy.DESTROY_IMMEDIATELY,
|
|
58
|
-
});
|
|
59
|
-
pipeline.publishToMaven({
|
|
60
|
-
mavenLoginSecret: { secretArn: 'arn:aws:secretsmanager:us-east-1:712950704752:secret:delivlib/maven-7ROCWi' },
|
|
61
|
-
mavenEndpoint: 'https://aws.oss.sonatype.org:443/',
|
|
62
|
-
signingKey,
|
|
63
|
-
stagingProfileId: '68a05363083174',
|
|
64
|
-
buildImage: monocdk_1.aws_codebuild.LinuxBuildImage.fromDockerRegistry('xyz'),
|
|
65
|
-
});
|
|
66
|
-
(0, assert_1.expect)(stack).to((0, assert_1.haveResourceLike)('AWS::CodeBuild::Project', {
|
|
67
|
-
Environment: {
|
|
68
|
-
Image: 'xyz',
|
|
69
|
-
},
|
|
70
|
-
}));
|
|
71
|
-
});
|
|
72
|
-
test('can control stage name', () => {
|
|
73
|
-
pipeline.publishToNuGet({
|
|
74
|
-
nugetApiKeySecret: { secretArn: 'arn:aws:secretsmanager:us-east-1:712950704752:secret:delivlib/nuget-fHzSUD' },
|
|
75
|
-
buildImage: monocdk_1.aws_codebuild.LinuxBuildImage.fromDockerRegistry('xyz'),
|
|
76
|
-
stageName: 'MyPublishStage',
|
|
77
|
-
});
|
|
78
|
-
const template = Template.fromStack(stack);
|
|
79
|
-
template.hasResourceProperties('AWS::CodePipeline::Pipeline', {
|
|
80
|
-
Stages: Match.arrayWith([{
|
|
81
|
-
Name: 'MyPublishStage',
|
|
82
|
-
Actions: [Match.objectLike({
|
|
83
|
-
Name: 'NuGetPublish',
|
|
84
|
-
})],
|
|
85
|
-
}]),
|
|
86
|
-
});
|
|
87
|
-
});
|
|
88
|
-
});
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGlzaGluZy50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicHVibGlzaGluZy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVEQUFvRjtBQUNwRixxQ0FNaUI7QUFDakIsb0RBQXNDO0FBRXRDLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEdBQUcsb0JBQVUsQ0FBQztBQUd2QyxRQUFRLENBQUMsd0JBQXdCLEVBQUUsR0FBRyxFQUFFO0lBQ3RDLElBQUksS0FBWSxDQUFDO0lBQ2pCLElBQUksUUFBMkIsQ0FBQztJQUNoQyxVQUFVLENBQUMsR0FBRyxFQUFFO1FBQ2QsS0FBSyxHQUFHLElBQUksZUFBSyxDQUFDLElBQUksYUFBRyxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFMUMsUUFBUSxHQUFHLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFO1lBQ2xELElBQUksRUFBRSxJQUFJLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSx3QkFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDdkcsWUFBWSxFQUFFLGVBQWU7U0FDOUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsZ0RBQWdELEVBQUUsR0FBRyxFQUFFO1FBQzFELFFBQVEsQ0FBQyxjQUFjLENBQUM7WUFDdEIsaUJBQWlCLEVBQUUsRUFBRSxTQUFTLEVBQUUsNEVBQTRFLEVBQUU7WUFDOUcsVUFBVSxFQUFFLHVCQUFTLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQztTQUNoRSxDQUFDLENBQUM7UUFFSCxJQUFBLGVBQVUsRUFBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBQSx5QkFBZ0IsRUFBQyx5QkFBeUIsRUFBRTtZQUMvRCxXQUFXLEVBQUU7Z0JBQ1gsS0FBSyxFQUFFLEtBQUs7YUFDYjtTQUNGLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsZ0RBQWdELEVBQUUsR0FBRyxFQUFFO1FBQzFELE1BQU0sVUFBVSxHQUFHLElBQUksUUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFO1lBQ2hFLEtBQUssRUFBRSxpQ0FBaUM7WUFDeEMsYUFBYSxFQUFFLElBQUksaUJBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQztZQUNqRCxNQUFNLEVBQUUsSUFBSTtZQUNaLFFBQVEsRUFBRSxhQUFhO1lBQ3ZCLFdBQVcsRUFBRSxJQUFLO1lBQ2xCLG1CQUFtQixFQUFFLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLGVBQWU7WUFDdkQsVUFBVSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLFdBQVc7WUFDekMsT0FBTyxFQUFFLENBQUM7WUFDVixhQUFhLEVBQUUsUUFBUSxDQUFDLDJCQUEyQixDQUFDLG1CQUFtQjtTQUN4RSxDQUFDLENBQUM7UUFFSCxRQUFRLENBQUMsY0FBYyxDQUFDO1lBQ3RCLGdCQUFnQixFQUFFLEVBQUUsU0FBUyxFQUFFLDRFQUE0RSxFQUFFO1lBQzdHLGFBQWEsRUFBRSxtQ0FBbUM7WUFDbEQsVUFBVTtZQUNWLGdCQUFnQixFQUFFLGdCQUFnQjtZQUNsQyxVQUFVLEVBQUUsdUJBQVMsQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDO1NBQ2hFLENBQUMsQ0FBQztRQUVILElBQUEsZUFBVSxFQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFBLHlCQUFnQixFQUFDLHlCQUF5QixFQUFFO1lBQy9ELFdBQVcsRUFBRTtnQkFDWCxLQUFLLEVBQUUsS0FBSzthQUNiO1NBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyx3QkFBd0IsRUFBRSxHQUFHLEVBQUU7UUFDbEMsUUFBUSxDQUFDLGNBQWMsQ0FBQztZQUN0QixpQkFBaUIsRUFBRSxFQUFFLFNBQVMsRUFBRSw0RUFBNEUsRUFBRTtZQUM5RyxVQUFVLEVBQUUsdUJBQVMsQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDO1lBQy9ELFNBQVMsRUFBRSxnQkFBZ0I7U0FDNUIsQ0FBQyxDQUFDO1FBRUgsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxRQUFRLENBQUMscUJBQXFCLENBQUMsNkJBQTZCLEVBQUU7WUFDNUQsTUFBTSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDdkIsSUFBSSxFQUFFLGdCQUFnQjtvQkFDdEIsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQzs0QkFDekIsSUFBSSxFQUFFLGNBQWM7eUJBQ3JCLENBQUMsQ0FBQztpQkFDSixDQUFDLENBQUM7U0FDSixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhwZWN0IGFzIGNka19leHBlY3QsIGhhdmVSZXNvdXJjZUxpa2UgfSBmcm9tICdAbW9ub2Nkay1leHBlcmltZW50L2Fzc2VydCc7XG5pbXBvcnQge1xuICBBcHAsIFN0YWNrLFxuICBhd3NfY29kZWJ1aWxkIGFzIGNvZGVidWlsZCxcbiAgYXdzX2NvZGVjb21taXQgYXMgY29kZWNvbW1pdCxcbiAgYXdzX2ttcyBhcyBrbXMsXG4gIGFzc2VydGlvbnMsXG59IGZyb20gJ21vbm9jZGsnO1xuaW1wb3J0ICogYXMgZGVsaXZsaWIgZnJvbSAnLi4vLi4vbGliJztcblxuY29uc3QgeyBUZW1wbGF0ZSwgTWF0Y2ggfSA9IGFzc2VydGlvbnM7XG5cblxuZGVzY3JpYmUoJ3dpdGggc3RhbmRhcmQgcGlwZWxpbmUnLCAoKSA9PiB7XG4gIGxldCBzdGFjazogU3RhY2s7XG4gIGxldCBwaXBlbGluZTogZGVsaXZsaWIuUGlwZWxpbmU7XG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIHN0YWNrID0gbmV3IFN0YWNrKG5ldyBBcHAoKSwgJ1Rlc3RTdGFjaycpO1xuXG4gICAgcGlwZWxpbmUgPSBuZXcgZGVsaXZsaWIuUGlwZWxpbmUoc3RhY2ssICdQaXBlbGluZScsIHtcbiAgICAgIHJlcG86IG5ldyBkZWxpdmxpYi5Db2RlQ29tbWl0UmVwbyhuZXcgY29kZWNvbW1pdC5SZXBvc2l0b3J5KHN0YWNrLCAnUmVwbycsIHsgcmVwb3NpdG9yeU5hbWU6ICd0ZXN0JyB9KSksXG4gICAgICBwaXBlbGluZU5hbWU6ICdIZWxsb1BpcGVsaW5lJyxcbiAgICB9KTtcbiAgfSk7XG5cbiAgdGVzdCgnY2FuIGNvbmZpZ3VyZSBidWlsZCBpbWFnZSBmb3IgTnVHZXQgcHVibGlzaGluZycsICgpID0+IHtcbiAgICBwaXBlbGluZS5wdWJsaXNoVG9OdUdldCh7XG4gICAgICBudWdldEFwaUtleVNlY3JldDogeyBzZWNyZXRBcm46ICdhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMTo3MTI5NTA3MDQ3NTI6c2VjcmV0OmRlbGl2bGliL251Z2V0LWZIelNVRCcgfSxcbiAgICAgIGJ1aWxkSW1hZ2U6IGNvZGVidWlsZC5MaW51eEJ1aWxkSW1hZ2UuZnJvbURvY2tlclJlZ2lzdHJ5KCd4eXonKSxcbiAgICB9KTtcblxuICAgIGNka19leHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZUxpa2UoJ0FXUzo6Q29kZUJ1aWxkOjpQcm9qZWN0Jywge1xuICAgICAgRW52aXJvbm1lbnQ6IHtcbiAgICAgICAgSW1hZ2U6ICd4eXonLFxuICAgICAgfSxcbiAgICB9KSk7XG4gIH0pO1xuXG4gIHRlc3QoJ2NhbiBjb25maWd1cmUgYnVpbGQgaW1hZ2UgZm9yIE1hdmVuIHB1Ymxpc2hpbmcnLCAoKSA9PiB7XG4gICAgY29uc3Qgc2lnbmluZ0tleSA9IG5ldyBkZWxpdmxpYi5PcGVuUEdQS2V5UGFpcihzdGFjaywgJ0NvZGVTaWduJywge1xuICAgICAgZW1haWw6ICdhd3MtY2RrLWRlditkZWxpdmxpYkBhbWF6b24uY29tJyxcbiAgICAgIGVuY3J5cHRpb25LZXk6IG5ldyBrbXMuS2V5KHN0YWNrLCAnQ29kZVNpZ24tQ01LJyksXG4gICAgICBleHBpcnk6ICc0eScsXG4gICAgICBpZGVudGl0eTogJ2F3cy1jZGstZGV2JyxcbiAgICAgIGtleVNpemVCaXRzOiA0XzA5NixcbiAgICAgIHB1YktleVBhcmFtZXRlck5hbWU6IGAvJHtzdGFjay5ub2RlLnBhdGh9L0NvZGVTaWduLnB1YmAsXG4gICAgICBzZWNyZXROYW1lOiBzdGFjay5ub2RlLnBhdGggKyAnL0NvZGVTaWduJyxcbiAgICAgIHZlcnNpb246IDAsXG4gICAgICByZW1vdmFsUG9saWN5OiBkZWxpdmxpYi5PcGVuUEdQS2V5UGFpclJlbW92YWxQb2xpY3kuREVTVFJPWV9JTU1FRElBVEVMWSxcbiAgICB9KTtcblxuICAgIHBpcGVsaW5lLnB1Ymxpc2hUb01hdmVuKHtcbiAgICAgIG1hdmVuTG9naW5TZWNyZXQ6IHsgc2VjcmV0QXJuOiAnYXJuOmF3czpzZWNyZXRzbWFuYWdlcjp1cy1lYXN0LTE6NzEyOTUwNzA0NzUyOnNlY3JldDpkZWxpdmxpYi9tYXZlbi03Uk9DV2knIH0sXG4gICAgICBtYXZlbkVuZHBvaW50OiAnaHR0cHM6Ly9hd3Mub3NzLnNvbmF0eXBlLm9yZzo0NDMvJyxcbiAgICAgIHNpZ25pbmdLZXksXG4gICAgICBzdGFnaW5nUHJvZmlsZUlkOiAnNjhhMDUzNjMwODMxNzQnLFxuICAgICAgYnVpbGRJbWFnZTogY29kZWJ1aWxkLkxpbnV4QnVpbGRJbWFnZS5mcm9tRG9ja2VyUmVnaXN0cnkoJ3h5eicpLFxuICAgIH0pO1xuXG4gICAgY2RrX2V4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlTGlrZSgnQVdTOjpDb2RlQnVpbGQ6OlByb2plY3QnLCB7XG4gICAgICBFbnZpcm9ubWVudDoge1xuICAgICAgICBJbWFnZTogJ3h5eicsXG4gICAgICB9LFxuICAgIH0pKTtcbiAgfSk7XG5cbiAgdGVzdCgnY2FuIGNvbnRyb2wgc3RhZ2UgbmFtZScsICgpID0+IHtcbiAgICBwaXBlbGluZS5wdWJsaXNoVG9OdUdldCh7XG4gICAgICBudWdldEFwaUtleVNlY3JldDogeyBzZWNyZXRBcm46ICdhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMTo3MTI5NTA3MDQ3NTI6c2VjcmV0OmRlbGl2bGliL251Z2V0LWZIelNVRCcgfSxcbiAgICAgIGJ1aWxkSW1hZ2U6IGNvZGVidWlsZC5MaW51eEJ1aWxkSW1hZ2UuZnJvbURvY2tlclJlZ2lzdHJ5KCd4eXonKSxcbiAgICAgIHN0YWdlTmFtZTogJ015UHVibGlzaFN0YWdlJyxcbiAgICB9KTtcblxuICAgIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6Q29kZVBpcGVsaW5lOjpQaXBlbGluZScsIHtcbiAgICAgIFN0YWdlczogTWF0Y2guYXJyYXlXaXRoKFt7XG4gICAgICAgIE5hbWU6ICdNeVB1Ymxpc2hTdGFnZScsXG4gICAgICAgIEFjdGlvbnM6IFtNYXRjaC5vYmplY3RMaWtlKHtcbiAgICAgICAgICBOYW1lOiAnTnVHZXRQdWJsaXNoJyxcbiAgICAgICAgfSldLFxuICAgICAgfV0pLFxuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import '@monocdk-experiment/assert/jest';
|
|
@@ -1,313 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
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
|
-
require("@monocdk-experiment/assert/jest");
|
|
23
|
-
const path = __importStar(require("path"));
|
|
24
|
-
const assert_1 = require("@monocdk-experiment/assert");
|
|
25
|
-
const monocdk_1 = require("monocdk");
|
|
26
|
-
const registry_sync_1 = require("../../../lib/registry-sync");
|
|
27
|
-
describe('EcrMirror', () => {
|
|
28
|
-
test('default', () => {
|
|
29
|
-
const stack = new monocdk_1.Stack();
|
|
30
|
-
new registry_sync_1.EcrMirror(stack, 'EcrRegistrySync', {
|
|
31
|
-
sources: [registry_sync_1.MirrorSource.fromDockerHub('docker-image')],
|
|
32
|
-
dockerHubCredentials: {
|
|
33
|
-
usernameKey: 'username-key',
|
|
34
|
-
passwordKey: 'password-key',
|
|
35
|
-
secret: monocdk_1.aws_secretsmanager.Secret.fromSecretArn(stack, 'DockerhubSecret', 'arn:aws:secretsmanager:us-west-2:111122223333:secret:123aass'),
|
|
36
|
-
},
|
|
37
|
-
schedule: monocdk_1.aws_events.Schedule.cron({}),
|
|
38
|
-
});
|
|
39
|
-
expect(stack).toHaveResourceLike('AWS::CodeBuild::Project', {
|
|
40
|
-
Environment: {
|
|
41
|
-
EnvironmentVariables: [
|
|
42
|
-
{
|
|
43
|
-
Name: 'DOCKERHUB_USERNAME',
|
|
44
|
-
Type: 'SECRETS_MANAGER',
|
|
45
|
-
Value: '123aass:username-key:AWSCURRENT',
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
Name: 'DOCKERHUB_PASSWORD',
|
|
49
|
-
Type: 'SECRETS_MANAGER',
|
|
50
|
-
Value: '123aass:password-key:AWSCURRENT',
|
|
51
|
-
},
|
|
52
|
-
],
|
|
53
|
-
Image: 'jsii/superchain',
|
|
54
|
-
RegistryCredential: {
|
|
55
|
-
Credential: '123aass',
|
|
56
|
-
CredentialProvider: 'SECRETS_MANAGER',
|
|
57
|
-
},
|
|
58
|
-
},
|
|
59
|
-
Source: {
|
|
60
|
-
BuildSpec: {
|
|
61
|
-
'Fn::Join': [
|
|
62
|
-
'',
|
|
63
|
-
[
|
|
64
|
-
'{\n "version": "0.2",\n "phases": {\n "build": {\n "commands": [\n "nohup /usr/bin/dockerd --host=unix:///var/run/docker.sock --host=tcp://127.0.0.1:2375 --storage-driver=overlay2&",\n "timeout 15 sh -c \\"until docker info; do echo .; sleep 1; done\\"",\n "docker login -u ${DOCKERHUB_USERNAME} -p ${DOCKERHUB_PASSWORD}",\n "aws ecr get-login-password | docker login --username AWS --password-stdin ',
|
|
65
|
-
{
|
|
66
|
-
Ref: 'AWS::AccountId',
|
|
67
|
-
},
|
|
68
|
-
'.dkr.ecr.',
|
|
69
|
-
{
|
|
70
|
-
Ref: 'AWS::Region',
|
|
71
|
-
},
|
|
72
|
-
'.amazonaws.com",\n "docker pull library/docker-image:latest",\n "docker tag library/docker-image:latest ',
|
|
73
|
-
{
|
|
74
|
-
Ref: 'AWS::AccountId',
|
|
75
|
-
},
|
|
76
|
-
'.dkr.ecr.',
|
|
77
|
-
{
|
|
78
|
-
Ref: 'AWS::Region',
|
|
79
|
-
},
|
|
80
|
-
'.amazonaws.com/library/docker-image:latest",\n "docker push ',
|
|
81
|
-
{
|
|
82
|
-
Ref: 'AWS::AccountId',
|
|
83
|
-
},
|
|
84
|
-
'.dkr.ecr.',
|
|
85
|
-
{
|
|
86
|
-
Ref: 'AWS::Region',
|
|
87
|
-
},
|
|
88
|
-
'.amazonaws.com/library/docker-image:latest",\n "docker image prune --all --force"\n ]\n }\n }\n}',
|
|
89
|
-
],
|
|
90
|
-
],
|
|
91
|
-
},
|
|
92
|
-
},
|
|
93
|
-
});
|
|
94
|
-
});
|
|
95
|
-
test('autoStart', () => {
|
|
96
|
-
const stack = new monocdk_1.Stack();
|
|
97
|
-
new registry_sync_1.EcrMirror(stack, 'EcrRegistrySync', {
|
|
98
|
-
sources: [registry_sync_1.MirrorSource.fromDockerHub('docker-image')],
|
|
99
|
-
dockerHubCredentials: {
|
|
100
|
-
usernameKey: 'username-key',
|
|
101
|
-
passwordKey: 'password-key',
|
|
102
|
-
secret: monocdk_1.aws_secretsmanager.Secret.fromSecretArn(stack, 'DockerhubSecret', 'arn:aws:secretsmanager:us-west-2:111122223333:secret:123aass'),
|
|
103
|
-
},
|
|
104
|
-
autoStart: true,
|
|
105
|
-
});
|
|
106
|
-
expect(stack).toHaveResource('Custom::AWS');
|
|
107
|
-
expect(stack).not.toHaveResource('AWS::Events::Rule');
|
|
108
|
-
});
|
|
109
|
-
test('schedule', () => {
|
|
110
|
-
const stack = new monocdk_1.Stack();
|
|
111
|
-
new registry_sync_1.EcrMirror(stack, 'EcrRegistrySync', {
|
|
112
|
-
sources: [registry_sync_1.MirrorSource.fromDockerHub('docker-image')],
|
|
113
|
-
dockerHubCredentials: {
|
|
114
|
-
usernameKey: 'username-key',
|
|
115
|
-
passwordKey: 'password-key',
|
|
116
|
-
secret: monocdk_1.aws_secretsmanager.Secret.fromSecretArn(stack, 'DockerhubSecret', 'arn:aws:secretsmanager:us-west-2:111122223333:secret:123aass'),
|
|
117
|
-
},
|
|
118
|
-
schedule: monocdk_1.aws_events.Schedule.rate(monocdk_1.Duration.hours(1)),
|
|
119
|
-
});
|
|
120
|
-
expect(stack).toHaveResource('AWS::Events::Rule', {
|
|
121
|
-
ScheduleExpression: 'rate(1 hour)',
|
|
122
|
-
});
|
|
123
|
-
expect(stack).not.toHaveResource('Custom::AWS');
|
|
124
|
-
expect(stack).not.toHaveResource('AWS::Lambda::Function');
|
|
125
|
-
});
|
|
126
|
-
test('errors on duplicate repository', () => {
|
|
127
|
-
const stack = new monocdk_1.Stack();
|
|
128
|
-
expect(() => new registry_sync_1.EcrMirror(stack, 'EcrRegistrySync', {
|
|
129
|
-
sources: [
|
|
130
|
-
registry_sync_1.MirrorSource.fromDockerHub('my/docker-image'),
|
|
131
|
-
registry_sync_1.MirrorSource.fromDirectory(path.join(__dirname, 'docker-asset'), 'my/docker-image'),
|
|
132
|
-
],
|
|
133
|
-
dockerHubCredentials: {
|
|
134
|
-
usernameKey: 'username-key',
|
|
135
|
-
passwordKey: 'password-key',
|
|
136
|
-
secret: monocdk_1.aws_secretsmanager.Secret.fromSecretArn(stack, 'DockerhubSecret', 'arn:aws:secretsmanager:us-west-2:111122223333:secret:123aass'),
|
|
137
|
-
},
|
|
138
|
-
schedule: monocdk_1.aws_events.Schedule.rate(monocdk_1.Duration.hours(1)),
|
|
139
|
-
})).toThrow(/Mirror source.*already exists/);
|
|
140
|
-
});
|
|
141
|
-
describe('ecrRepository()', () => {
|
|
142
|
-
test('default', () => {
|
|
143
|
-
const stack = new monocdk_1.Stack();
|
|
144
|
-
const image = registry_sync_1.MirrorSource.fromDockerHub('my/docker-image');
|
|
145
|
-
const registry = new registry_sync_1.EcrMirror(stack, 'EcrRegistrySync', {
|
|
146
|
-
sources: [image],
|
|
147
|
-
dockerHubCredentials: {
|
|
148
|
-
usernameKey: 'username-key',
|
|
149
|
-
passwordKey: 'password-key',
|
|
150
|
-
secret: monocdk_1.aws_secretsmanager.Secret.fromSecretArn(stack, 'DockerhubSecret', 'arn:aws:secretsmanager:us-west-2:111122223333:secret:123aass'),
|
|
151
|
-
},
|
|
152
|
-
schedule: monocdk_1.aws_events.Schedule.cron({}),
|
|
153
|
-
});
|
|
154
|
-
const repo = registry.ecrRepository('my/docker-image');
|
|
155
|
-
expect(repo).toBeDefined();
|
|
156
|
-
expect(stack.resolve(repo.repositoryArn)).toEqual({
|
|
157
|
-
'Fn::GetAtt': ['EcrRegistrySyncRepomydockerimageCE3ABCA6', 'Arn'],
|
|
158
|
-
});
|
|
159
|
-
});
|
|
160
|
-
test('returning a mirrored repository does not depend on the tag', () => {
|
|
161
|
-
const stack = new monocdk_1.Stack();
|
|
162
|
-
const image = registry_sync_1.MirrorSource.fromDockerHub('my/docker-image', 'mytag');
|
|
163
|
-
const registry = new registry_sync_1.EcrMirror(stack, 'EcrRegistrySync', {
|
|
164
|
-
sources: [image],
|
|
165
|
-
dockerHubCredentials: {
|
|
166
|
-
usernameKey: 'username-key',
|
|
167
|
-
passwordKey: 'password-key',
|
|
168
|
-
secret: monocdk_1.aws_secretsmanager.Secret.fromSecretArn(stack, 'DockerhubSecret', 'arn:aws:secretsmanager:us-west-2:111122223333:secret:123aass'),
|
|
169
|
-
},
|
|
170
|
-
schedule: monocdk_1.aws_events.Schedule.cron({}),
|
|
171
|
-
});
|
|
172
|
-
expect(registry.ecrRepository('my/docker-image')).toBeDefined();
|
|
173
|
-
});
|
|
174
|
-
});
|
|
175
|
-
test('schedule and/or autoStart', () => {
|
|
176
|
-
const stack = new monocdk_1.Stack();
|
|
177
|
-
const image = registry_sync_1.MirrorSource.fromDockerHub('my/docker-image');
|
|
178
|
-
expect(() => new registry_sync_1.EcrMirror(stack, 'EcrRegistrySync', {
|
|
179
|
-
sources: [image],
|
|
180
|
-
dockerHubCredentials: {
|
|
181
|
-
usernameKey: 'username-key',
|
|
182
|
-
passwordKey: 'password-key',
|
|
183
|
-
secret: monocdk_1.aws_secretsmanager.Secret.fromSecretArn(stack, 'DockerhubSecret', 'arn:aws:secretsmanager:us-west-2:111122223333:secret:123aass'),
|
|
184
|
-
},
|
|
185
|
-
})).toThrow(/schedule or autoStart/);
|
|
186
|
-
});
|
|
187
|
-
});
|
|
188
|
-
describe('EcrMirrorAspect', () => {
|
|
189
|
-
test('applies to relevant codebuild projects', () => {
|
|
190
|
-
// GIVEN
|
|
191
|
-
const stack = new monocdk_1.Stack();
|
|
192
|
-
const mirror = new registry_sync_1.EcrMirror(stack, 'Mirror', {
|
|
193
|
-
sources: [registry_sync_1.MirrorSource.fromDockerHub('my/docker-image')],
|
|
194
|
-
dockerHubCredentials: {
|
|
195
|
-
usernameKey: 'username-key',
|
|
196
|
-
passwordKey: 'password-key',
|
|
197
|
-
secret: monocdk_1.aws_secretsmanager.Secret.fromSecretArn(stack, 'DockerhubSecret', 'arn:aws:secretsmanager:us-west-2:111122223333:secret:123aass'),
|
|
198
|
-
},
|
|
199
|
-
schedule: monocdk_1.aws_events.Schedule.cron({}),
|
|
200
|
-
});
|
|
201
|
-
new monocdk_1.aws_codebuild.Project(stack, 'MyDockerImageProject', {
|
|
202
|
-
buildSpec: monocdk_1.aws_codebuild.BuildSpec.fromObject({}),
|
|
203
|
-
environment: {
|
|
204
|
-
buildImage: monocdk_1.aws_codebuild.LinuxBuildImage.fromDockerRegistry('my/docker-image'),
|
|
205
|
-
},
|
|
206
|
-
});
|
|
207
|
-
// WHEN
|
|
208
|
-
monocdk_1.Aspects.of(stack).add(new registry_sync_1.EcrMirrorAspect(mirror));
|
|
209
|
-
// THEN
|
|
210
|
-
expect(stack).toHaveResourceLike('AWS::CodeBuild::Project', {
|
|
211
|
-
Environment: {
|
|
212
|
-
Image: {
|
|
213
|
-
'Fn::Join': [
|
|
214
|
-
'',
|
|
215
|
-
[
|
|
216
|
-
{
|
|
217
|
-
'Fn::Select': [
|
|
218
|
-
4,
|
|
219
|
-
{
|
|
220
|
-
'Fn::Split': [
|
|
221
|
-
':',
|
|
222
|
-
{ 'Fn::GetAtt': ['MirrorRepomydockerimageE8DCCA4F', 'Arn'] },
|
|
223
|
-
],
|
|
224
|
-
},
|
|
225
|
-
],
|
|
226
|
-
},
|
|
227
|
-
'.dkr.ecr.',
|
|
228
|
-
{
|
|
229
|
-
'Fn::Select': [
|
|
230
|
-
3,
|
|
231
|
-
{
|
|
232
|
-
'Fn::Split': [
|
|
233
|
-
':',
|
|
234
|
-
{ 'Fn::GetAtt': ['MirrorRepomydockerimageE8DCCA4F', 'Arn'] },
|
|
235
|
-
],
|
|
236
|
-
},
|
|
237
|
-
],
|
|
238
|
-
},
|
|
239
|
-
'.',
|
|
240
|
-
{ Ref: 'AWS::URLSuffix' },
|
|
241
|
-
'/',
|
|
242
|
-
{ Ref: 'MirrorRepomydockerimageE8DCCA4F' },
|
|
243
|
-
':latest',
|
|
244
|
-
],
|
|
245
|
-
],
|
|
246
|
-
},
|
|
247
|
-
},
|
|
248
|
-
});
|
|
249
|
-
});
|
|
250
|
-
test('does not affect unrelated codebuild projects', () => {
|
|
251
|
-
// GIVEN
|
|
252
|
-
const stack = new monocdk_1.Stack();
|
|
253
|
-
const mirror = new registry_sync_1.EcrMirror(stack, 'Mirror', {
|
|
254
|
-
sources: [registry_sync_1.MirrorSource.fromDockerHub('my/docker-image')],
|
|
255
|
-
dockerHubCredentials: {
|
|
256
|
-
usernameKey: 'username-key',
|
|
257
|
-
passwordKey: 'password-key',
|
|
258
|
-
secret: monocdk_1.aws_secretsmanager.Secret.fromSecretArn(stack, 'DockerhubSecret', 'arn:aws:secretsmanager:us-west-2:111122223333:secret:123aass'),
|
|
259
|
-
},
|
|
260
|
-
schedule: monocdk_1.aws_events.Schedule.cron({}),
|
|
261
|
-
});
|
|
262
|
-
new monocdk_1.aws_codebuild.Project(stack, 'UnrelatedProject', {
|
|
263
|
-
buildSpec: monocdk_1.aws_codebuild.BuildSpec.fromObject({}),
|
|
264
|
-
environment: {
|
|
265
|
-
buildImage: monocdk_1.aws_codebuild.LinuxBuildImage.fromDockerRegistry('unrelated/image'),
|
|
266
|
-
},
|
|
267
|
-
});
|
|
268
|
-
// WHEN
|
|
269
|
-
monocdk_1.Aspects.of(stack).add(new registry_sync_1.EcrMirrorAspect(mirror));
|
|
270
|
-
// THEN
|
|
271
|
-
expect(stack).toHaveResourceLike('AWS::CodeBuild::Project', {
|
|
272
|
-
Environment: {
|
|
273
|
-
Image: 'unrelated/image',
|
|
274
|
-
},
|
|
275
|
-
});
|
|
276
|
-
});
|
|
277
|
-
test('can mirror multiple tags from same repository', () => {
|
|
278
|
-
// GIVEN
|
|
279
|
-
const stack = new monocdk_1.Stack(undefined, 'Stack', {
|
|
280
|
-
env: { account: 'account', region: 'region' },
|
|
281
|
-
});
|
|
282
|
-
new registry_sync_1.EcrMirror(stack, 'Mirror', {
|
|
283
|
-
sources: [
|
|
284
|
-
registry_sync_1.MirrorSource.fromDockerHub('my/docker-image'),
|
|
285
|
-
registry_sync_1.MirrorSource.fromDockerHub('my/docker-image', 'some_tag'),
|
|
286
|
-
],
|
|
287
|
-
dockerHubCredentials: {
|
|
288
|
-
usernameKey: 'username-key',
|
|
289
|
-
passwordKey: 'password-key',
|
|
290
|
-
secret: monocdk_1.aws_secretsmanager.Secret.fromSecretArn(stack, 'DockerhubSecret', 'arn:aws:secretsmanager:us-west-2:111122223333:secret:123aass'),
|
|
291
|
-
},
|
|
292
|
-
schedule: monocdk_1.aws_events.Schedule.cron({}),
|
|
293
|
-
});
|
|
294
|
-
// THEN: one repo that mirrors both tags
|
|
295
|
-
expect(stack).toHaveResource('AWS::ECR::Repository', {
|
|
296
|
-
RepositoryName: 'my/docker-image',
|
|
297
|
-
});
|
|
298
|
-
(0, assert_1.expect)(stack).to((0, assert_1.countResources)('AWS::ECR::Repository', 1));
|
|
299
|
-
// Have both pushes in the project buildspec
|
|
300
|
-
expect(stack).toHaveResourceLike('AWS::CodeBuild::Project', {
|
|
301
|
-
Source: {
|
|
302
|
-
BuildSpec: (0, assert_1.encodedJson)((0, assert_1.objectLike)({
|
|
303
|
-
phases: {
|
|
304
|
-
build: {
|
|
305
|
-
commands: (0, assert_1.arrayWith)('docker push account.dkr.ecr.region.amazonaws.com/my/docker-image:latest', 'docker push account.dkr.ecr.region.amazonaws.com/my/docker-image:some_tag'),
|
|
306
|
-
},
|
|
307
|
-
},
|
|
308
|
-
})),
|
|
309
|
-
},
|
|
310
|
-
});
|
|
311
|
-
});
|
|
312
|
-
});
|
|
313
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNyLW1pcnJvci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZWNyLW1pcnJvci50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUF5QztBQUN6QywyQ0FBNkI7QUFDN0IsdURBQXFIO0FBQ3JILHFDQUtpQjtBQUNqQiw4REFBc0Y7QUFFdEYsUUFBUSxDQUFDLFdBQVcsRUFBRSxHQUFHLEVBQUU7SUFDekIsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUU7UUFDbkIsTUFBTSxLQUFLLEdBQUcsSUFBSSxlQUFLLEVBQUUsQ0FBQztRQUMxQixJQUFJLHlCQUFTLENBQUMsS0FBSyxFQUFFLGlCQUFpQixFQUFFO1lBQ3RDLE9BQU8sRUFBRSxDQUFDLDRCQUFZLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3JELG9CQUFvQixFQUFFO2dCQUNwQixXQUFXLEVBQUUsY0FBYztnQkFDM0IsV0FBVyxFQUFFLGNBQWM7Z0JBQzNCLE1BQU0sRUFBRSw0QkFBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLGlCQUFpQixFQUFFLDhEQUE4RCxDQUFDO2FBQy9IO1lBQ0QsUUFBUSxFQUFFLG9CQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7U0FDbkMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixDQUFDLHlCQUF5QixFQUFFO1lBQzFELFdBQVcsRUFBRTtnQkFDWCxvQkFBb0IsRUFBRTtvQkFDcEI7d0JBQ0UsSUFBSSxFQUFFLG9CQUFvQjt3QkFDMUIsSUFBSSxFQUFFLGlCQUFpQjt3QkFDdkIsS0FBSyxFQUFFLGlDQUFpQztxQkFDekM7b0JBQ0Q7d0JBQ0UsSUFBSSxFQUFFLG9CQUFvQjt3QkFDMUIsSUFBSSxFQUFFLGlCQUFpQjt3QkFDdkIsS0FBSyxFQUFFLGlDQUFpQztxQkFDekM7aUJBQ0Y7Z0JB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QUFDO29CQUNoQyxNQUFNLEVBQUU7d0JBQ04sS0FBSyxFQUFFOzRCQUNMLFFBQVEsRUFBRSxJQUFBLGtCQUFTLEVBQ2pCLHlFQUF5RSxFQUN6RSwyRUFBMkUsQ0FDNUU7eUJBQ0Y7cUJBQ0Y7aUJBQ0YsQ0FBQyxDQUFDO2FBQ0o7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdAbW9ub2Nkay1leHBlcmltZW50L2Fzc2VydC9qZXN0JztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBhcnJheVdpdGgsIGNvdW50UmVzb3VyY2VzLCBlbmNvZGVkSnNvbiwgZXhwZWN0IGFzIGNka0V4cGVjdCwgb2JqZWN0TGlrZSB9IGZyb20gJ0Btb25vY2RrLWV4cGVyaW1lbnQvYXNzZXJ0JztcbmltcG9ydCB7XG4gIEFzcGVjdHMsIER1cmF0aW9uLCBTdGFjayxcbiAgYXdzX2NvZGVidWlsZCBhcyBjb2RlYnVpbGQsXG4gIGF3c19ldmVudHMgYXMgZXZlbnRzLFxuICBhd3Nfc2VjcmV0c21hbmFnZXIgYXMgc2VjcmV0cyxcbn0gZnJvbSAnbW9ub2Nkayc7XG5pbXBvcnQgeyBFY3JNaXJyb3IsIEVjck1pcnJvckFzcGVjdCwgTWlycm9yU291cmNlIH0gZnJvbSAnLi4vLi4vLi4vbGliL3JlZ2lzdHJ5LXN5bmMnO1xuXG5kZXNjcmliZSgnRWNyTWlycm9yJywgKCkgPT4ge1xuICB0ZXN0KCdkZWZhdWx0JywgKCkgPT4ge1xuICAgIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gICAgbmV3IEVjck1pcnJvcihzdGFjaywgJ0VjclJlZ2lzdHJ5U3luYycsIHtcbiAgICAgIHNvdXJjZXM6IFtNaXJyb3JTb3VyY2UuZnJvbURvY2tlckh1YignZG9ja2VyLWltYWdlJyldLFxuICAgICAgZG9ja2VySHViQ3JlZGVudGlhbHM6IHtcbiAgICAgICAgdXNlcm5hbWVLZXk6ICd1c2VybmFtZS1rZXknLFxuICAgICAgICBwYXNzd29yZEtleTogJ3Bhc3N3b3JkLWtleScsXG4gICAgICAgIHNlY3JldDogc2VjcmV0cy5TZWNyZXQuZnJvbVNlY3JldEFybihzdGFjaywgJ0RvY2tlcmh1YlNlY3JldCcsICdhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLXdlc3QtMjoxMTExMjIyMjMzMzM6c2VjcmV0OjEyM2Fhc3MnKSxcbiAgICAgIH0sXG4gICAgICBzY2hlZHVsZTogZXZlbnRzLlNjaGVkdWxlLmNyb24oe30pLFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KHN0YWNrKS50b0hhdmVSZXNvdXJjZUxpa2UoJ0FXUzo6Q29kZUJ1aWxkOjpQcm9qZWN0Jywge1xuICAgICAgRW52aXJvbm1lbnQ6IHtcbiAgICAgICAgRW52aXJvbm1lbnRWYXJpYWJsZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBOYW1lOiAnRE9DS0VSSFVCX1VTRVJOQU1FJyxcbiAgICAgICAgICAgIFR5cGU6ICdTRUNSRVRTX01BTkFHRVInLFxuICAgICAgICAgICAgVmFsdWU6ICcxMjNhYXNzOnVzZXJuYW1lLWtleTpBV1NDVVJSRU5UJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIE5hbWU6ICdET0NLRVJIVUJfUEFTU1dPUkQnLFxuICAgICAgICAgICAgVHlwZTogJ1NFQ1JFVFNfTUFOQUdFUicsXG4gICAgICAgICAgICBWYWx1ZTogJzEyM2Fhc3M6cGFzc3dvcmQta2V5OkFXU0NVUlJFTlQnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIEltYWdlOiAnanNpaS9zdXBlcmNoYWluJyxcbiAgICAgICAgUmVnaXN0cnlDcmVkZW50aWFsOiB7XG4gICAgICAgICAgQ3JlZGVudGlhbDogJzEyM2Fhc3MnLFxuICAgICAgICAgIENyZWRlbnRpYWxQcm92aWRlcjogJ1NFQ1JFVFNfTUFOQUdFUicsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgU291cmNlOiB7XG4gICAgICAgIEJ1aWxkU3BlYzoge1xuICAgICAgICAgICdGbjo6Sm9pbic6IFtcbiAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAne1xcbiAgXCJ2ZXJzaW9uXCI6IFwiMC4yXCIsXFxuICBcInBoYXNlc1wiOiB7XFxuICAgIFwiYnVpbGRcIjoge1xcbiAgICAgIFwiY29tbWFuZHNcIjogW1xcbiAgICAgICAgXCJub2h1cCAvdXNyL2Jpbi9kb2NrZXJkIC0taG9zdD11bml4Oi8vL3Zhci9ydW4vZG9ja2VyLnNvY2sgLS1ob3N0PXRjcDovLzEyNy4wLjAuMToyMzc1IC0tc3RvcmFnZS1kcml2ZXI9b3ZlcmxheTImXCIsXFxuICAgICAgICBcInRpbWVvdXQgMTUgc2ggLWMgXFxcXFwidW50aWwgZG9ja2VyIGluZm87IGRvIGVjaG8gLjsgc2xlZXAgMTsgZG9uZVxcXFxcIlwiLFxcbiAgICAgICAgXCJkb2NrZXIgbG9naW4gLXUgJHtET0NLRVJIVUJfVVNFUk5BTUV9IC1wICR7RE9DS0VSSFVCX1BBU1NXT1JEfVwiLFxcbiAgICAgICAgXCJhd3MgZWNyIGdldC1sb2dpbi1wYXNzd29yZCB8IGRvY2tlciBsb2dpbiAtLXVzZXJuYW1lIEFXUyAtLXBhc3N3b3JkLXN0ZGluICcsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBSZWY6ICdBV1M6OkFjY291bnRJZCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICcuZGtyLmVjci4nLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgUmVmOiAnQVdTOjpSZWdpb24nLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAnLmFtYXpvbmF3cy5jb21cIixcXG4gICAgICAgIFwiZG9ja2VyIHB1bGwgbGlicmFyeS9kb2NrZXItaW1hZ2U6bGF0ZXN0XCIsXFxuICAgICAgICBcImRvY2tlciB0YWcgbGlicmFyeS9kb2NrZXItaW1hZ2U6bGF0ZXN0ICcsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBSZWY6ICdBV1M6OkFjY291bnRJZCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICcuZGtyLmVjci4nLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgUmVmOiAnQVdTOjpSZWdpb24nLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAnLmFtYXpvbmF3cy5jb20vbGlicmFyeS9kb2NrZXItaW1hZ2U6bGF0ZXN0XCIsXFxuICAgICAgICBcImRvY2tlciBwdXNoICcsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBSZWY6ICdBV1M6OkFjY291bnRJZCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICcuZGtyLmVjci4nLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgUmVmOiAnQVdTOjpSZWdpb24nLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAnLmFtYXpvbmF3cy5jb20vbGlicmFyeS9kb2NrZXItaW1hZ2U6bGF0ZXN0XCIsXFxuICAgICAgICBcImRvY2tlciBpbWFnZSBwcnVuZSAtLWFsbCAtLWZvcmNlXCJcXG4gICAgICBdXFxuICAgIH1cXG4gIH1cXG59JyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH0pO1xuXG4gIHRlc3QoJ2F1dG9TdGFydCcsICgpID0+IHtcbiAgICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICAgIG5ldyBFY3JNaXJyb3Ioc3RhY2ssICdFY3JSZWdpc3RyeVN5bmMnLCB7XG4gICAgICBzb3VyY2VzOiBbTWlycm9yU291cmNlLmZyb21Eb2NrZXJIdWIoJ2RvY2tlci1pbWFnZScpXSxcbiAgICAgIGRvY2tlckh1YkNyZWRlbnRpYWxzOiB7XG4gICAgICAgIHVzZXJuYW1lS2V5OiAndXNlcm5hbWUta2V5JyxcbiAgICAgICAgcGFzc3dvcmRLZXk6ICdwYXNzd29yZC1rZXknLFxuICAgICAgICBzZWNyZXQ6IHNlY3JldHMuU2VjcmV0LmZyb21TZWNyZXRBcm4oc3RhY2ssICdEb2NrZXJodWJTZWNyZXQnLCAnYXJuOmF3czpzZWNyZXRzbWFuYWdlcjp1cy13ZXN0LTI6MTExMTIyMjIzMzMzOnNlY3JldDoxMjNhYXNzJyksXG4gICAgICB9LFxuICAgICAgYXV0b1N0YXJ0OiB0cnVlLFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KHN0YWNrKS50b0hhdmVSZXNvdXJjZSgnQ3VzdG9tOjpBV1MnKTtcbiAgICBleHBlY3Qoc3RhY2spLm5vdC50b0hhdmVSZXNvdXJjZSgnQVdTOjpFdmVudHM6OlJ1bGUnKTtcbiAgfSk7XG5cbiAgdGVzdCgnc2NoZWR1bGUnLCAoKSA9PiB7XG4gICAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgICBuZXcgRWNyTWlycm9yKHN0YWNrLCAnRWNyUmVnaXN0cnlTeW5jJywge1xuICAgICAgc291cmNlczogW01pcnJvclNvdXJjZS5mcm9tRG9ja2VySHViKCdkb2NrZXItaW1hZ2UnKV0sXG4gICAgICBkb2NrZXJIdWJDcmVkZW50aWFsczoge1xuICAgICAgICB1c2VybmFtZUtleTogJ3VzZXJuYW1lLWtleScsXG4gICAgICAgIHBhc3N3b3JkS2V5OiAncGFzc3dvcmQta2V5JyxcbiAgICAgICAgc2VjcmV0OiBzZWNyZXRzLlNlY3JldC5mcm9tU2VjcmV0QXJuKHN0YWNrLCAnRG9ja2VyaHViU2VjcmV0JywgJ2Fybjphd3M6c2VjcmV0c21hbmFnZXI6dXMtd2VzdC0yOjExMTEyMjIyMzMzMzpzZWNyZXQ6MTIzYWFzcycpLFxuICAgICAgfSxcbiAgICAgIHNjaGVkdWxlOiBldmVudHMuU2NoZWR1bGUucmF0ZShEdXJhdGlvbi5ob3VycygxKSksXG4gICAgfSk7XG5cbiAgICBleHBlY3Qoc3RhY2spLnRvSGF2ZVJlc291cmNlKCdBV1M6OkV2ZW50czo6UnVsZScsIHtcbiAgICAgIFNjaGVkdWxlRXhwcmVzc2lvbjogJ3JhdGUoMSBob3VyKScsXG4gICAgfSk7XG5cbiAgICBleHBlY3Qoc3RhY2spLm5vdC50b0hhdmVSZXNvdXJjZSgnQ3VzdG9tOjpBV1MnKTtcbiAgICBleHBlY3Qoc3RhY2spLm5vdC50b0hhdmVSZXNvdXJjZSgnQVdTOjpMYW1iZGE6OkZ1bmN0aW9uJyk7XG4gIH0pO1xuXG4gIHRlc3QoJ2Vycm9ycyBvbiBkdXBsaWNhdGUgcmVwb3NpdG9yeScsICgpID0+IHtcbiAgICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICAgIGV4cGVjdCgoKSA9PiBuZXcgRWNyTWlycm9yKHN0YWNrLCAnRWNyUmVnaXN0cnlTeW5jJywge1xuICAgICAgc291cmNlczogW1xuICAgICAgICBNaXJyb3JTb3VyY2UuZnJvbURvY2tlckh1YignbXkvZG9ja2VyLWltYWdlJyksXG4gICAgICAgIE1pcnJvclNvdXJjZS5mcm9tRGlyZWN0b3J5KHBhdGguam9pbihfX2Rpcm5hbWUsICdkb2NrZXItYXNzZXQnKSwgJ215L2RvY2tlci1pbWFnZScpLFxuICAgICAgXSxcbiAgICAgIGRvY2tlckh1YkNyZWRlbnRpYWxzOiB7XG4gICAgICAgIHVzZXJuYW1lS2V5OiAndXNlcm5hbWUta2V5JyxcbiAgICAgICAgcGFzc3dvcmRLZXk6ICdwYXNzd29yZC1rZXknLFxuICAgICAgICBzZWNyZXQ6IHNlY3JldHMuU2VjcmV0LmZyb21TZWNyZXRBcm4oc3RhY2ssICdEb2NrZXJodWJTZWNyZXQnLCAnYXJuOmF3czpzZWNyZXRzbWFuYWdlcjp1cy13ZXN0LTI6MTExMTIyMjIzMzMzOnNlY3JldDoxMjNhYXNzJyksXG4gICAgICB9LFxuICAgICAgc2NoZWR1bGU6IGV2ZW50cy5TY2hlZHVsZS5yYXRlKER1cmF0aW9uLmhvdXJzKDEpKSxcbiAgICB9KSkudG9UaHJvdygvTWlycm9yIHNvdXJjZS4qYWxyZWFkeSBleGlzdHMvKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2VjclJlcG9zaXRvcnkoKScsICgpID0+IHtcbiAgICB0ZXN0KCdkZWZhdWx0JywgKCkgPT4ge1xuICAgICAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgICAgIGNvbnN0IGltYWdlID0gTWlycm9yU291cmNlLmZyb21Eb2NrZXJIdWIoJ215L2RvY2tlci1pbWFnZScpO1xuICAgICAgY29uc3QgcmVnaXN0cnkgPSBuZXcgRWNyTWlycm9yKHN0YWNrLCAnRWNyUmVnaXN0cnlTeW5jJywge1xuICAgICAgICBzb3VyY2VzOiBbaW1hZ2VdLFxuICAgICAgICBkb2NrZXJIdWJDcmVkZW50aWFsczoge1xuICAgICAgICAgIHVzZXJuYW1lS2V5OiAndXNlcm5hbWUta2V5JyxcbiAgICAgICAgICBwYXNzd29yZEtleTogJ3Bhc3N3b3JkLWtleScsXG4gICAgICAgICAgc2VjcmV0OiBzZWNyZXRzLlNlY3JldC5mcm9tU2VjcmV0QXJuKHN0YWNrLCAnRG9ja2VyaHViU2VjcmV0JywgJ2Fybjphd3M6c2VjcmV0c21hbmFnZXI6dXMtd2VzdC0yOjExMTEyMjIyMzMzMzpzZWNyZXQ6MTIzYWFzcycpLFxuICAgICAgICB9LFxuICAgICAgICBzY2hlZHVsZTogZXZlbnRzLlNjaGVkdWxlLmNyb24oe30pLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJlcG8gPSByZWdpc3RyeS5lY3JSZXBvc2l0b3J5KCdteS9kb2NrZXItaW1hZ2UnKTtcbiAgICAgIGV4cGVjdChyZXBvKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KHN0YWNrLnJlc29sdmUocmVwbyEucmVwb3NpdG9yeUFybikpLnRvRXF1YWwoe1xuICAgICAgICAnRm46OkdldEF0dCc6IFsnRWNyUmVnaXN0cnlTeW5jUmVwb215ZG9ja2VyaW1hZ2VDRTNBQkNBNicsICdBcm4nXSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGVzdCgncmV0dXJuaW5nIGEgbWlycm9yZWQgcmVwb3NpdG9yeSBkb2VzIG5vdCBkZXBlbmQgb24gdGhlIHRhZycsICgpID0+IHtcbiAgICAgIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gICAgICBjb25zdCBpbWFnZSA9IE1pcnJvclNvdXJjZS5mcm9tRG9ja2VySHViKCdteS9kb2NrZXItaW1hZ2UnLCAnbXl0YWcnKTtcbiAgICAgIGNvbnN0IHJlZ2lzdHJ5ID0gbmV3IEVjck1pcnJvcihzdGFjaywgJ0VjclJlZ2lzdHJ5U3luYycsIHtcbiAgICAgICAgc291cmNlczogW2ltYWdlXSxcbiAgICAgICAgZG9ja2VySHViQ3JlZGVudGlhbHM6IHtcbiAgICAgICAgICB1c2VybmFtZUtleTogJ3VzZXJuYW1lLWtleScsXG4gICAgICAgICAgcGFzc3dvcmRLZXk6ICdwYXNzd29yZC1rZXknLFxuICAgICAgICAgIHNlY3JldDogc2VjcmV0cy5TZWNyZXQuZnJvbVNlY3JldEFybihzdGFjaywgJ0RvY2tlcmh1YlNlY3JldCcsICdhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLXdlc3QtMjoxMTExMjIyMjMzMzM6c2VjcmV0OjEyM2Fhc3MnKSxcbiAgICAgICAgfSxcbiAgICAgICAgc2NoZWR1bGU6IGV2ZW50cy5TY2hlZHVsZS5jcm9uKHt9KSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QocmVnaXN0cnkuZWNyUmVwb3NpdG9yeSgnbXkvZG9ja2VyLWltYWdlJykpLnRvQmVEZWZpbmVkKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHRlc3QoJ3NjaGVkdWxlIGFuZC9vciBhdXRvU3RhcnQnLCAoKSA9PiB7XG4gICAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgICBjb25zdCBpbWFnZSA9IE1pcnJvclNvdXJjZS5mcm9tRG9ja2VySHViKCdteS9kb2NrZXItaW1hZ2UnKTtcbiAgICBleHBlY3QoKCkgPT4gbmV3IEVjck1pcnJvcihzdGFjaywgJ0VjclJlZ2lzdHJ5U3luYycsIHtcbiAgICAgIHNvdXJjZXM6IFtpbWFnZV0sXG4gICAgICBkb2NrZXJIdWJDcmVkZW50aWFsczoge1xuICAgICAgICB1c2VybmFtZUtleTogJ3VzZXJuYW1lLWtleScsXG4gICAgICAgIHBhc3N3b3JkS2V5OiAncGFzc3dvcmQta2V5JyxcbiAgICAgICAgc2VjcmV0OiBzZWNyZXRzLlNlY3JldC5mcm9tU2VjcmV0QXJuKHN0YWNrLCAnRG9ja2VyaHViU2VjcmV0JywgJ2Fybjphd3M6c2VjcmV0c21hbmFnZXI6dXMtd2VzdC0yOjExMTEyMjIyMzMzMzpzZWNyZXQ6MTIzYWFzcycpLFxuICAgICAgfSxcbiAgICB9KSkudG9UaHJvdygvc2NoZWR1bGUgb3IgYXV0b1N0YXJ0Lyk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdFY3JNaXJyb3JBc3BlY3QnLCAoKSA9PiB7XG4gIHRlc3QoJ2FwcGxpZXMgdG8gcmVsZXZhbnQgY29kZWJ1aWxkIHByb2plY3RzJywgKCkgPT4ge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgICBjb25zdCBtaXJyb3IgPSBuZXcgRWNyTWlycm9yKHN0YWNrLCAnTWlycm9yJywge1xuICAgICAgc291cmNlczogW01pcnJvclNvdXJjZS5mcm9tRG9ja2VySHViKCdteS9kb2NrZXItaW1hZ2UnKV0sXG4gICAgICBkb2NrZXJIdWJDcmVkZW50aWFsczoge1xuICAgICAgICB1c2VybmFtZUtleTogJ3VzZXJuYW1lLWtleScsXG4gICAgICAgIHBhc3N3b3JkS2V5OiAncGFzc3dvcmQta2V5JyxcbiAgICAgICAgc2VjcmV0OiBzZWNyZXRzLlNlY3JldC5mcm9tU2VjcmV0QXJuKHN0YWNrLCAnRG9ja2VyaHViU2VjcmV0JywgJ2Fybjphd3M6c2VjcmV0c21hbmFnZXI6dXMtd2VzdC0yOjExMTEyMjIyMzMzMzpzZWNyZXQ6MTIzYWFzcycpLFxuICAgICAgfSxcbiAgICAgIHNjaGVkdWxlOiBldmVudHMuU2NoZWR1bGUuY3Jvbih7fSksXG4gICAgfSk7XG4gICAgbmV3IGNvZGVidWlsZC5Qcm9qZWN0KHN0YWNrLCAnTXlEb2NrZXJJbWFnZVByb2plY3QnLCB7XG4gICAgICBidWlsZFNwZWM6IGNvZGVidWlsZC5CdWlsZFNwZWMuZnJvbU9iamVjdCh7fSksXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBidWlsZEltYWdlOiBjb2RlYnVpbGQuTGludXhCdWlsZEltYWdlLmZyb21Eb2NrZXJSZWdpc3RyeSgnbXkvZG9ja2VyLWltYWdlJyksXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIEFzcGVjdHMub2Yoc3RhY2spLmFkZChuZXcgRWNyTWlycm9yQXNwZWN0KG1pcnJvcikpO1xuXG4gICAgLy8gVEhFTlxuICAgIGV4cGVjdChzdGFjaykudG9IYXZlUmVzb3VyY2VMaWtlKCdBV1M6OkNvZGVCdWlsZDo6UHJvamVjdCcsIHtcbiAgICAgIEVudmlyb25tZW50OiB7XG4gICAgICAgIEltYWdlOiB7XG4gICAgICAgICAgJ0ZuOjpKb2luJzogW1xuICAgICAgICAgICAgJycsXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAnRm46OlNlbGVjdCc6IFtcbiAgICAgICAgICAgICAgICAgIDQsXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICdGbjo6U3BsaXQnOiBbXG4gICAgICAgICAgICAgICAgICAgICAgJzonLFxuICAgICAgICAgICAgICAgICAgICAgIHsgJ0ZuOjpHZXRBdHQnOiBbJ01pcnJvclJlcG9teWRvY2tlcmltYWdlRThEQ0NBNEYnLCAnQXJuJ10gfSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgJy5ka3IuZWNyLicsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAnRm46OlNlbGVjdCc6IFtcbiAgICAgICAgICAgICAgICAgIDMsXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICdGbjo6U3BsaXQnOiBbXG4gICAgICAgICAgICAgICAgICAgICAgJzonLFxuICAgICAgICAgICAgICAgICAgICAgIHsgJ0ZuOjpHZXRBdHQnOiBbJ01pcnJvclJlcG9teWRvY2tlcmltYWdlRThEQ0NBNEYnLCAnQXJuJ10gfSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgJy4nLFxuICAgICAgICAgICAgICB7IFJlZjogJ0FXUzo6VVJMU3VmZml4JyB9LFxuICAgICAgICAgICAgICAnLycsXG4gICAgICAgICAgICAgIHsgUmVmOiAnTWlycm9yUmVwb215ZG9ja2VyaW1hZ2VFOERDQ0E0RicgfSxcbiAgICAgICAgICAgICAgJzpsYXRlc3QnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgdGVzdCgnZG9lcyBub3QgYWZmZWN0IHVucmVsYXRlZCBjb2RlYnVpbGQgcHJvamVjdHMnLCAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICAgIGNvbnN0IG1pcnJvciA9IG5ldyBFY3JNaXJyb3Ioc3RhY2ssICdNaXJyb3InLCB7XG4gICAgICBzb3VyY2VzOiBbTWlycm9yU291cmNlLmZyb21Eb2NrZXJIdWIoJ215L2RvY2tlci1pbWFnZScpXSxcbiAgICAgIGRvY2tlckh1YkNyZWRlbnRpYWxzOiB7XG4gICAgICAgIHVzZXJuYW1lS2V5OiAndXNlcm5hbWUta2V5JyxcbiAgICAgICAgcGFzc3dvcmRLZXk6ICdwYXNzd29yZC1rZXknLFxuICAgICAgICBzZWNyZXQ6IHNlY3JldHMuU2VjcmV0LmZyb21TZWNyZXRBcm4oc3RhY2ssICdEb2NrZXJodWJTZWNyZXQnLCAnYXJuOmF3czpzZWNyZXRzbWFuYWdlcjp1cy13ZXN0LTI6MTExMTIyMjIzMzMzOnNlY3JldDoxMjNhYXNzJyksXG4gICAgICB9LFxuICAgICAgc2NoZWR1bGU6IGV2ZW50cy5TY2hlZHVsZS5jcm9uKHt9KSxcbiAgICB9KTtcbiAgICBuZXcgY29kZWJ1aWxkLlByb2plY3Qoc3RhY2ssICdVbnJlbGF0ZWRQcm9qZWN0Jywge1xuICAgICAgYnVpbGRTcGVjOiBjb2RlYnVpbGQuQnVpbGRTcGVjLmZyb21PYmplY3Qoe30pLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgYnVpbGRJbWFnZTogY29kZWJ1aWxkLkxpbnV4QnVpbGRJbWFnZS5mcm9tRG9ja2VyUmVnaXN0cnkoJ3VucmVsYXRlZC9pbWFnZScpLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIFdIRU5cbiAgICBBc3BlY3RzLm9mKHN0YWNrKS5hZGQobmV3IEVjck1pcnJvckFzcGVjdChtaXJyb3IpKTtcblxuICAgIC8vIFRIRU5cbiAgICBleHBlY3Qoc3RhY2spLnRvSGF2ZVJlc291cmNlTGlrZSgnQVdTOjpDb2RlQnVpbGQ6OlByb2plY3QnLCB7XG4gICAgICBFbnZpcm9ubWVudDoge1xuICAgICAgICBJbWFnZTogJ3VucmVsYXRlZC9pbWFnZScsXG4gICAgICB9LFxuICAgIH0pO1xuICB9KTtcblxuICB0ZXN0KCdjYW4gbWlycm9yIG11bHRpcGxlIHRhZ3MgZnJvbSBzYW1lIHJlcG9zaXRvcnknLCAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBzdGFjayA9IG5ldyBTdGFjayh1bmRlZmluZWQsICdTdGFjaycsIHtcbiAgICAgIGVudjogeyBhY2NvdW50OiAnYWNjb3VudCcsIHJlZ2lvbjogJ3JlZ2lvbicgfSxcbiAgICB9KTtcbiAgICBuZXcgRWNyTWlycm9yKHN0YWNrLCAnTWlycm9yJywge1xuICAgICAgc291cmNlczogW1xuICAgICAgICBNaXJyb3JTb3VyY2UuZnJvbURvY2tlckh1YignbXkvZG9ja2VyLWltYWdlJyksXG4gICAgICAgIE1pcnJvclNvdXJjZS5mcm9tRG9ja2VySHViKCdteS9kb2NrZXItaW1hZ2UnLCAnc29tZV90YWcnKSxcbiAgICAgIF0sXG4gICAgICBkb2NrZXJIdWJDcmVkZW50aWFsczoge1xuICAgICAgICB1c2VybmFtZUtleTogJ3VzZXJuYW1lLWtleScsXG4gICAgICAgIHBhc3N3b3JkS2V5OiAncGFzc3dvcmQta2V5JyxcbiAgICAgICAgc2VjcmV0OiBzZWNyZXRzLlNlY3JldC5mcm9tU2VjcmV0QXJuKHN0YWNrLCAnRG9ja2VyaHViU2VjcmV0JywgJ2Fybjphd3M6c2VjcmV0c21hbmFnZXI6dXMtd2VzdC0yOjExMTEyMjIyMzMzMzpzZWNyZXQ6MTIzYWFzcycpLFxuICAgICAgfSxcbiAgICAgIHNjaGVkdWxlOiBldmVudHMuU2NoZWR1bGUuY3Jvbih7fSksXG4gICAgfSk7XG5cbiAgICAvLyBUSEVOOiBvbmUgcmVwbyB0aGF0IG1pcnJvcnMgYm90aCB0YWdzXG4gICAgZXhwZWN0KHN0YWNrKS50b0hhdmVSZXNvdXJjZSgnQVdTOjpFQ1I6OlJlcG9zaXRvcnknLCB7XG4gICAgICBSZXBvc2l0b3J5TmFtZTogJ215L2RvY2tlci1pbWFnZScsXG4gICAgfSk7XG4gICAgY2RrRXhwZWN0KHN0YWNrKS50byhjb3VudFJlc291cmNlcygnQVdTOjpFQ1I6OlJlcG9zaXRvcnknLCAxKSk7XG5cbiAgICAvLyBIYXZlIGJvdGggcHVzaGVzIGluIHRoZSBwcm9qZWN0IGJ1aWxkc3BlY1xuICAgIGV4cGVjdChzdGFjaykudG9IYXZlUmVzb3VyY2VMaWtlKCdBV1M6OkNvZGVCdWlsZDo6UHJvamVjdCcsIHtcbiAgICAgIFNvdXJjZToge1xuICAgICAgICBCdWlsZFNwZWM6IGVuY29kZWRKc29uKG9iamVjdExpa2Uoe1xuICAgICAgICAgIHBoYXNlczoge1xuICAgICAgICAgICAgYnVpbGQ6IHtcbiAgICAgICAgICAgICAgY29tbWFuZHM6IGFycmF5V2l0aChcbiAgICAgICAgICAgICAgICAnZG9ja2VyIHB1c2ggYWNjb3VudC5ka3IuZWNyLnJlZ2lvbi5hbWF6b25hd3MuY29tL215L2RvY2tlci1pbWFnZTpsYXRlc3QnLFxuICAgICAgICAgICAgICAgICdkb2NrZXIgcHVzaCBhY2NvdW50LmRrci5lY3IucmVnaW9uLmFtYXpvbmF3cy5jb20vbXkvZG9ja2VyLWltYWdlOnNvbWVfdGFnJyxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSkpLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfSk7XG59KTsiXX0=
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import '@monocdk-experiment/assert/jest';
|