aws-cdk 2.1.0 → 2.5.0
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/LICENSE +1 -1
- package/NOTICE +1 -1
- package/README.md +5 -1
- package/build-info.json +2 -2
- package/lib/api/aws-auth/sdk-provider.js +11 -21
- package/lib/api/aws-auth/sdk.d.ts +2 -0
- package/lib/api/aws-auth/sdk.js +4 -1
- package/lib/api/bootstrap/bootstrap-template.yaml +3 -1
- package/lib/api/deploy-stack.js +7 -1
- package/lib/api/hotswap/code-build-projects.d.ts +3 -0
- package/lib/api/hotswap/code-build-projects.js +53 -0
- package/lib/api/hotswap/common.d.ts +17 -1
- package/lib/api/hotswap/common.js +30 -6
- package/lib/api/hotswap/ecs-services.js +4 -18
- package/lib/api/hotswap/evaluate-cloudformation-template.d.ts +1 -0
- package/lib/api/hotswap/evaluate-cloudformation-template.js +6 -1
- package/lib/api/hotswap/lambda-functions.d.ts +2 -2
- package/lib/api/hotswap/lambda-functions.js +171 -46
- package/lib/api/hotswap/s3-bucket-deployments.d.ts +8 -0
- package/lib/api/hotswap/s3-bucket-deployments.js +106 -0
- package/lib/api/hotswap/stepfunctions-state-machines.js +11 -7
- package/lib/api/hotswap-deployments.d.ts +0 -7
- package/lib/api/hotswap-deployments.js +86 -12
- package/lib/cdk-toolkit.js +50 -16
- package/lib/commands/docs.js +2 -2
- package/lib/context-providers/index.d.ts +10 -5
- package/lib/context-providers/index.js +32 -19
- package/lib/context-providers/provider.d.ts +1 -0
- package/lib/context-providers/provider.js +6 -1
- package/lib/init.js +2 -1
- package/lib/plugin.d.ts +20 -0
- package/lib/plugin.js +28 -1
- package/lib/util/asset-publishing.js +9 -2
- package/lib/util/npm.d.ts +1 -0
- package/lib/util/npm.js +21 -0
- package/lib/version.d.ts +1 -1
- package/lib/version.js +22 -19
- package/npm-shrinkwrap.json +176 -43
- package/package.json +16 -16
- package/test/api/cloud-executable.test.js +3 -3
- package/test/api/hotswap/{lambda-hotswap-deployments.test.d.ts → code-build-projects-hotswap-deployments.test.d.ts} +0 -0
- package/test/api/hotswap/code-build-projects-hotswap-deployments.test.js +576 -0
- package/test/api/hotswap/hotswap-deployments.test.js +4 -2
- package/test/api/hotswap/hotswap-test-setup.d.ts +4 -1
- package/test/api/hotswap/hotswap-test-setup.js +13 -4
- package/test/api/hotswap/lambda-functions-hotswap-deployments.test.d.ts +1 -0
- package/test/api/hotswap/lambda-functions-hotswap-deployments.test.js +502 -0
- package/test/api/hotswap/lambda-versions-aliases-hotswap-deployments.test.d.ts +1 -0
- package/test/api/hotswap/lambda-versions-aliases-hotswap-deployments.test.js +197 -0
- package/test/api/hotswap/s3-bucket-hotswap-deployments.test.d.ts +1 -0
- package/test/api/hotswap/s3-bucket-hotswap-deployments.test.js +678 -0
- package/test/api/hotswap/state-machine-hotswap-deployments.test.js +12 -11
- package/test/cdk-toolkit.test.js +11 -4
- package/test/context-providers/generic.test.js +40 -7
- package/test/init.test.js +5 -4
- package/test/integ/cli/app/app.js +17 -2
- package/test/integ/cli/cli.integtest.js +13 -1
- package/test/integ/helpers/cdk.js +2 -1
- package/test/util/mock-sdk.d.ts +2 -0
- package/test/util/mock-sdk.js +5 -1
- package/test/version.test.js +45 -3
- package/test/api/hotswap/lambda-hotswap-deployments.test.js +0 -418
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const setup = require("./hotswap-test-setup");
|
|
4
|
+
let mockUpdateLambdaCode;
|
|
5
|
+
let mockPublishVersion;
|
|
6
|
+
let mockUpdateAlias;
|
|
7
|
+
let hotswapMockSdkProvider;
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
hotswapMockSdkProvider = setup.setupHotswapTests();
|
|
10
|
+
mockUpdateLambdaCode = jest.fn();
|
|
11
|
+
mockPublishVersion = jest.fn();
|
|
12
|
+
mockUpdateAlias = jest.fn();
|
|
13
|
+
hotswapMockSdkProvider.stubLambda({
|
|
14
|
+
updateFunctionCode: mockUpdateLambdaCode,
|
|
15
|
+
publishVersion: mockPublishVersion,
|
|
16
|
+
updateAlias: mockUpdateAlias,
|
|
17
|
+
waitFor: jest.fn(),
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
test('hotswaps a Version if it points to a changed Function, even if it itself is unchanged', async () => {
|
|
21
|
+
// GIVEN
|
|
22
|
+
setup.setCurrentCfnStackTemplate({
|
|
23
|
+
Resources: {
|
|
24
|
+
Func: {
|
|
25
|
+
Type: 'AWS::Lambda::Function',
|
|
26
|
+
Properties: {
|
|
27
|
+
Code: {
|
|
28
|
+
S3Bucket: 'current-bucket',
|
|
29
|
+
S3Key: 'current-key',
|
|
30
|
+
},
|
|
31
|
+
FunctionName: 'my-function',
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
Version: {
|
|
35
|
+
Type: 'AWS::Lambda::Version',
|
|
36
|
+
Properties: {
|
|
37
|
+
FunctionName: { Ref: 'Func' },
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
const cdkStackArtifact = setup.cdkStackArtifactOf({
|
|
43
|
+
template: {
|
|
44
|
+
Resources: {
|
|
45
|
+
Func: {
|
|
46
|
+
Type: 'AWS::Lambda::Function',
|
|
47
|
+
Properties: {
|
|
48
|
+
Code: {
|
|
49
|
+
S3Bucket: 'current-bucket',
|
|
50
|
+
S3Key: 'new-key',
|
|
51
|
+
},
|
|
52
|
+
FunctionName: 'my-function',
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
Version: {
|
|
56
|
+
Type: 'AWS::Lambda::Version',
|
|
57
|
+
Properties: {
|
|
58
|
+
FunctionName: { Ref: 'Func' },
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
// WHEN
|
|
65
|
+
const deployStackResult = await hotswapMockSdkProvider.tryHotswapDeployment(cdkStackArtifact);
|
|
66
|
+
// THEN
|
|
67
|
+
expect(deployStackResult).not.toBeUndefined();
|
|
68
|
+
expect(mockPublishVersion).toHaveBeenCalledWith({
|
|
69
|
+
FunctionName: 'my-function',
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
test('hotswaps a Version if it points to a changed Function, even if it itself is replaced', async () => {
|
|
73
|
+
// GIVEN
|
|
74
|
+
setup.setCurrentCfnStackTemplate({
|
|
75
|
+
Resources: {
|
|
76
|
+
Func: {
|
|
77
|
+
Type: 'AWS::Lambda::Function',
|
|
78
|
+
Properties: {
|
|
79
|
+
Code: {
|
|
80
|
+
S3Bucket: 'current-bucket',
|
|
81
|
+
S3Key: 'current-key',
|
|
82
|
+
},
|
|
83
|
+
FunctionName: 'my-function',
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
Version1: {
|
|
87
|
+
Type: 'AWS::Lambda::Version',
|
|
88
|
+
Properties: {
|
|
89
|
+
FunctionName: { Ref: 'Func' },
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
});
|
|
94
|
+
const cdkStackArtifact = setup.cdkStackArtifactOf({
|
|
95
|
+
template: {
|
|
96
|
+
Resources: {
|
|
97
|
+
Func: {
|
|
98
|
+
Type: 'AWS::Lambda::Function',
|
|
99
|
+
Properties: {
|
|
100
|
+
Code: {
|
|
101
|
+
S3Bucket: 'current-bucket',
|
|
102
|
+
S3Key: 'new-key',
|
|
103
|
+
},
|
|
104
|
+
FunctionName: 'my-function',
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
Version2: {
|
|
108
|
+
Type: 'AWS::Lambda::Version',
|
|
109
|
+
Properties: {
|
|
110
|
+
FunctionName: { Ref: 'Func' },
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
},
|
|
115
|
+
});
|
|
116
|
+
// WHEN
|
|
117
|
+
const deployStackResult = await hotswapMockSdkProvider.tryHotswapDeployment(cdkStackArtifact);
|
|
118
|
+
// THEN
|
|
119
|
+
expect(deployStackResult).not.toBeUndefined();
|
|
120
|
+
expect(mockPublishVersion).toHaveBeenCalledWith({
|
|
121
|
+
FunctionName: 'my-function',
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
test('hotswaps a Version and an Alias if the Function they point to changed', async () => {
|
|
125
|
+
// GIVEN
|
|
126
|
+
setup.setCurrentCfnStackTemplate({
|
|
127
|
+
Resources: {
|
|
128
|
+
Func: {
|
|
129
|
+
Type: 'AWS::Lambda::Function',
|
|
130
|
+
Properties: {
|
|
131
|
+
Code: {
|
|
132
|
+
S3Bucket: 'current-bucket',
|
|
133
|
+
S3Key: 'current-key',
|
|
134
|
+
},
|
|
135
|
+
FunctionName: 'my-function',
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
Version1: {
|
|
139
|
+
Type: 'AWS::Lambda::Version',
|
|
140
|
+
Properties: {
|
|
141
|
+
FunctionName: { Ref: 'Func' },
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
Alias: {
|
|
145
|
+
Type: 'AWS::Lambda::Alias',
|
|
146
|
+
Properties: {
|
|
147
|
+
FunctionName: { Ref: 'Func' },
|
|
148
|
+
FunctionVersion: { 'Fn::GetAtt': ['Version1', 'Version'] },
|
|
149
|
+
Name: 'dev',
|
|
150
|
+
},
|
|
151
|
+
},
|
|
152
|
+
},
|
|
153
|
+
});
|
|
154
|
+
const cdkStackArtifact = setup.cdkStackArtifactOf({
|
|
155
|
+
template: {
|
|
156
|
+
Resources: {
|
|
157
|
+
Func: {
|
|
158
|
+
Type: 'AWS::Lambda::Function',
|
|
159
|
+
Properties: {
|
|
160
|
+
Code: {
|
|
161
|
+
S3Bucket: 'current-bucket',
|
|
162
|
+
S3Key: 'new-key',
|
|
163
|
+
},
|
|
164
|
+
FunctionName: 'my-function',
|
|
165
|
+
},
|
|
166
|
+
},
|
|
167
|
+
Version2: {
|
|
168
|
+
Type: 'AWS::Lambda::Version',
|
|
169
|
+
Properties: {
|
|
170
|
+
FunctionName: { Ref: 'Func' },
|
|
171
|
+
},
|
|
172
|
+
},
|
|
173
|
+
Alias: {
|
|
174
|
+
Type: 'AWS::Lambda::Alias',
|
|
175
|
+
Properties: {
|
|
176
|
+
FunctionName: { Ref: 'Func' },
|
|
177
|
+
FunctionVersion: { 'Fn::GetAtt': ['Version2', 'Version'] },
|
|
178
|
+
Name: 'dev',
|
|
179
|
+
},
|
|
180
|
+
},
|
|
181
|
+
},
|
|
182
|
+
},
|
|
183
|
+
});
|
|
184
|
+
mockPublishVersion.mockReturnValue({
|
|
185
|
+
Version: 'v2',
|
|
186
|
+
});
|
|
187
|
+
// WHEN
|
|
188
|
+
const deployStackResult = await hotswapMockSdkProvider.tryHotswapDeployment(cdkStackArtifact);
|
|
189
|
+
// THEN
|
|
190
|
+
expect(deployStackResult).not.toBeUndefined();
|
|
191
|
+
expect(mockUpdateAlias).toHaveBeenCalledWith({
|
|
192
|
+
FunctionName: 'my-function',
|
|
193
|
+
FunctionVersion: 'v2',
|
|
194
|
+
Name: 'dev',
|
|
195
|
+
});
|
|
196
|
+
});
|
|
197
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFtYmRhLXZlcnNpb25zLWFsaWFzZXMtaG90c3dhcC1kZXBsb3ltZW50cy50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibGFtYmRhLXZlcnNpb25zLWFsaWFzZXMtaG90c3dhcC1kZXBsb3ltZW50cy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsOENBQThDO0FBRTlDLElBQUksb0JBQTRHLENBQUM7QUFDakgsSUFBSSxrQkFBMkYsQ0FBQztBQUNoRyxJQUFJLGVBQWlGLENBQUM7QUFDdEYsSUFBSSxzQkFBb0QsQ0FBQztBQUV6RCxVQUFVLENBQUMsR0FBRyxFQUFFO0lBQ2Qsc0JBQXNCLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDbkQsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2pDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUMvQixlQUFlLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQzVCLHNCQUFzQixDQUFDLFVBQVUsQ0FBQztRQUNoQyxrQkFBa0IsRUFBRSxvQkFBb0I7UUFDeEMsY0FBYyxFQUFFLGtCQUFrQjtRQUNsQyxXQUFXLEVBQUUsZUFBZTtRQUM1QixPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtLQUNuQixDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyx1RkFBdUYsRUFBRSxLQUFLLElBQUksRUFBRTtJQUN2RyxRQUFRO0lBQ1IsS0FBSyxDQUFDLDBCQUEwQixDQUFDO1FBQy9CLFNBQVMsRUFBRTtZQUNULElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsdUJBQXVCO2dCQUM3QixVQUFVLEVBQUU7b0JBQ1YsSUFBSSxFQUFFO3dCQUNKLFFBQVEsRUFBRSxnQkFBZ0I7d0JBQzFCLEtBQUssRUFBRSxhQUFhO3FCQUNyQjtvQkFDRCxZQUFZLEVBQUUsYUFBYTtpQkFDNUI7YUFD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QixVQUFVLEVBQUU7d0JBQ1YsWUFBWSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRTt3QkFDN0IsZUFBZSxFQUFFLEVBQUUsWUFBWSxFQUFFLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxFQUFFO3dCQUMxRCxJQUFJLEVBQUUsS0FBSztxQkFDWjtpQkFDRjthQUNGO1NBQ0Y7S0FDRixDQUFDLENBQUM7SUFDSCxrQkFBa0IsQ0FBQyxlQUFlLENBQUM7UUFDakMsT0FBTyxFQUFFLElBQUk7S0FDZCxDQUFDLENBQUM7SUFFSCxPQUFPO0lBQ1AsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLHNCQUFzQixDQUFDLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFFOUYsT0FBTztJQUNQLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM5QyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsb0JBQW9CLENBQUM7UUFDM0MsWUFBWSxFQUFFLGFBQWE7UUFDM0IsZUFBZSxFQUFFLElBQUk7UUFDckIsSUFBSSxFQUFFLEtBQUs7S0FDWixDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExhbWJkYSB9IGZyb20gJ2F3cy1zZGsnO1xuaW1wb3J0ICogYXMgc2V0dXAgZnJvbSAnLi9ob3Rzd2FwLXRlc3Qtc2V0dXAnO1xuXG5sZXQgbW9ja1VwZGF0ZUxhbWJkYUNvZGU6IChwYXJhbXM6IExhbWJkYS5UeXBlcy5VcGRhdGVGdW5jdGlvbkNvZGVSZXF1ZXN0KSA9PiBMYW1iZGEuVHlwZXMuRnVuY3Rpb25Db25maWd1cmF0aW9uO1xubGV0IG1vY2tQdWJsaXNoVmVyc2lvbjogamVzdC5Nb2NrPExhbWJkYS5GdW5jdGlvbkNvbmZpZ3VyYXRpb24sIExhbWJkYS5QdWJsaXNoVmVyc2lvblJlcXVlc3RbXT47XG5sZXQgbW9ja1VwZGF0ZUFsaWFzOiAocGFyYW1zOiBMYW1iZGEuVXBkYXRlQWxpYXNSZXF1ZXN0KSA9PiBMYW1iZGEuQWxpYXNDb25maWd1cmF0aW9uO1xubGV0IGhvdHN3YXBNb2NrU2RrUHJvdmlkZXI6IHNldHVwLkhvdHN3YXBNb2NrU2RrUHJvdmlkZXI7XG5cbmJlZm9yZUVhY2goKCkgPT4ge1xuICBob3Rzd2FwTW9ja1Nka1Byb3ZpZGVyID0gc2V0dXAuc2V0dXBIb3Rzd2FwVGVzdHMoKTtcbiAgbW9ja1VwZGF0ZUxhbWJkYUNvZGUgPSBqZXN0LmZuKCk7XG4gIG1vY2tQdWJsaXNoVmVyc2lvbiA9IGplc3QuZm4oKTtcbiAgbW9ja1VwZGF0ZUFsaWFzID0gamVzdC5mbigpO1xuICBob3Rzd2FwTW9ja1Nka1Byb3ZpZGVyLnN0dWJMYW1iZGEoe1xuICAgIHVwZGF0ZUZ1bmN0aW9uQ29kZTogbW9ja1VwZGF0ZUxhbWJkYUNvZGUsXG4gICAgcHVibGlzaFZlcnNpb246IG1vY2tQdWJsaXNoVmVyc2lvbixcbiAgICB1cGRhdGVBbGlhczogbW9ja1VwZGF0ZUFsaWFzLFxuICAgIHdhaXRGb3I6IGplc3QuZm4oKSxcbiAgfSk7XG59KTtcblxudGVzdCgnaG90c3dhcHMgYSBWZXJzaW9uIGlmIGl0IHBvaW50cyB0byBhIGNoYW5nZWQgRnVuY3Rpb24sIGV2ZW4gaWYgaXQgaXRzZWxmIGlzIHVuY2hhbmdlZCcsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgc2V0dXAuc2V0Q3VycmVudENmblN0YWNrVGVtcGxhdGUoe1xuICAgIFJlc291cmNlczoge1xuICAgICAgRnVuYzoge1xuICAgICAgICBUeXBlOiAnQVdTOjpMYW1iZGE6OkZ1bmN0aW9uJyxcbiAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgIENvZGU6IHtcbiAgICAgICAgICAgIFMzQnVja2V0OiAnY3VycmVudC1idWNrZXQnLFxuICAgICAgICAgICAgUzNLZXk6ICdjdXJyZW50LWtleScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBGdW5jdGlvbk5hbWU6ICdteS1mdW5jdGlvbicsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgVmVyc2lvbjoge1xuICAgICAgICBUeXBlOiAnQVdTOjpMYW1iZGE6OlZlcnNpb24nLFxuICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgRnVuY3Rpb25OYW1lOiB7IFJlZjogJ0Z1bmMnIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuICBjb25zdCBjZGtTdGFja0FydGlmYWN0ID0gc2V0dXAuY2RrU3RhY2tBcnRpZmFjdE9mKHtcbiAgICB0ZW1wbGF0ZToge1xuICAgICAgUmVzb3VyY2VzOiB7XG4gICAgICAgIEZ1bmM6IHtcbiAgICAgICAgICBUeXBlOiAnQVdTOjpMYW1iZGE6OkZ1bmN0aW9uJyxcbiAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBDb2RlOiB7XG4gICAgICAgICAgICAgIFMzQnVja2V0OiAnY3VycmVudC1idWNrZXQnLFxuICAgICAgICAgICAgICBTM0tleTogJ25ldy1rZXknLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIEZ1bmN0aW9uTmFtZTogJ215LWZ1bmN0aW9uJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBWZXJzaW9uOiB7XG4gICAgICAgICAgVHlwZTogJ0FXUzo6TGFtYmRhOjpWZXJzaW9uJyxcbiAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBGdW5jdGlvbk5hbWU6IHsgUmVmOiAnRnVuYycgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9KTtcblxuICAvLyBXSEVOXG4gIGNvbnN0IGRlcGxveVN0YWNrUmVzdWx0ID0gYXdhaXQgaG90c3dhcE1vY2tTZGtQcm92aWRlci50cnlIb3Rzd2FwRGVwbG95bWVudChjZGtTdGFja0FydGlmYWN0KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChkZXBsb3lTdGFja1Jlc3VsdCkubm90LnRvQmVVbmRlZmluZWQoKTtcbiAgZXhwZWN0KG1vY2tQdWJsaXNoVmVyc2lvbikudG9IYXZlQmVlbkNhbGxlZFdpdGgoe1xuICAgIEZ1bmN0aW9uTmFtZTogJ215LWZ1bmN0aW9uJyxcbiAgfSk7XG59KTtcblxudGVzdCgnaG90c3dhcHMgYSBWZXJzaW9uIGlmIGl0IHBvaW50cyB0byBhIGNoYW5nZWQgRnVuY3Rpb24sIGV2ZW4gaWYgaXQgaXRzZWxmIGlzIHJlcGxhY2VkJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBzZXR1cC5zZXRDdXJyZW50Q2ZuU3RhY2tUZW1wbGF0ZSh7XG4gICAgUmVzb3VyY2VzOiB7XG4gICAgICBGdW5jOiB7XG4gICAgICAgIFR5cGU6ICdBV1M6OkxhbWJkYTo6RnVuY3Rpb24nLFxuICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgQ29kZToge1xuICAgICAgICAgICAgUzNCdWNrZXQ6ICdjdXJyZW50LWJ1Y2tldCcsXG4gICAgICAgICAgICBTM0tleTogJ2N1cnJlbnQta2V5JyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIEZ1bmN0aW9uTmFtZTogJ215LWZ1bmN0aW9uJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBWZXJzaW9uMToge1xuICAgICAgICBUeXBlOiAnQVdTOjpMYW1iZGE6OlZlcnNpb24nLFxuICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgRnVuY3Rpb25OYW1lOiB7IFJlZjogJ0Z1bmMnIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuICBjb25zdCBjZGtTdGFja0FydGlmYWN0ID0gc2V0dXAuY2RrU3RhY2tBcnRpZmFjdE9mKHtcbiAgICB0ZW1wbGF0ZToge1xuICAgICAgUmVzb3VyY2VzOiB7XG4gICAgICAgIEZ1bmM6IHtcbiAgICAgICAgICBUeXBlOiAnQVdTOjpMYW1iZGE6OkZ1bmN0aW9uJyxcbiAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBDb2RlOiB7XG4gICAgICAgICAgICAgIFMzQnVja2V0OiAnY3VycmVudC1idWNrZXQnLFxuICAgICAgICAgICAgICBTM0tleTogJ25ldy1rZXknLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIEZ1bmN0aW9uTmFtZTogJ215LWZ1bmN0aW9uJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBWZXJzaW9uMjoge1xuICAgICAgICAgIFR5cGU6ICdBV1M6OkxhbWJkYTo6VmVyc2lvbicsXG4gICAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgICAgRnVuY3Rpb25OYW1lOiB7IFJlZjogJ0Z1bmMnIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgLy8gV0hFTlxuICBjb25zdCBkZXBsb3lTdGFja1Jlc3VsdCA9IGF3YWl0IGhvdHN3YXBNb2NrU2RrUHJvdmlkZXIudHJ5SG90c3dhcERlcGxveW1lbnQoY2RrU3RhY2tBcnRpZmFjdCk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoZGVwbG95U3RhY2tSZXN1bHQpLm5vdC50b0JlVW5kZWZpbmVkKCk7XG4gIGV4cGVjdChtb2NrUHVibGlzaFZlcnNpb24pLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHtcbiAgICBGdW5jdGlvbk5hbWU6ICdteS1mdW5jdGlvbicsXG4gIH0pO1xufSk7XG5cbnRlc3QoJ2hvdHN3YXBzIGEgVmVyc2lvbiBhbmQgYW4gQWxpYXMgaWYgdGhlIEZ1bmN0aW9uIHRoZXkgcG9pbnQgdG8gY2hhbmdlZCcsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgc2V0dXAuc2V0Q3VycmVudENmblN0YWNrVGVtcGxhdGUoe1xuICAgIFJlc291cmNlczoge1xuICAgICAgRnVuYzoge1xuICAgICAgICBUeXBlOiAnQVdTOjpMYW1iZGE6OkZ1bmN0aW9uJyxcbiAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgIENvZGU6IHtcbiAgICAgICAgICAgIFMzQnVja2V0OiAnY3VycmVudC1idWNrZXQnLFxuICAgICAgICAgICAgUzNLZXk6ICdjdXJyZW50LWtleScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBGdW5jdGlvbk5hbWU6ICdteS1mdW5jdGlvbicsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgVmVyc2lvbjE6IHtcbiAgICAgICAgVHlwZTogJ0FXUzo6TGFtYmRhOjpWZXJzaW9uJyxcbiAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgIEZ1bmN0aW9uTmFtZTogeyBSZWY6ICdGdW5jJyB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIEFsaWFzOiB7XG4gICAgICAgIFR5cGU6ICdBV1M6OkxhbWJkYTo6QWxpYXMnLFxuICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgRnVuY3Rpb25OYW1lOiB7IFJlZjogJ0Z1bmMnIH0sXG4gICAgICAgICAgRnVuY3Rpb25WZXJzaW9uOiB7ICdGbjo6R2V0QXR0JzogWydWZXJzaW9uMScsICdWZXJzaW9uJ10gfSxcbiAgICAgICAgICBOYW1lOiAnZGV2JyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG4gIGNvbnN0IGNka1N0YWNrQXJ0aWZhY3QgPSBzZXR1cC5jZGtTdGFja0FydGlmYWN0T2Yoe1xuICAgIHRlbXBsYXRlOiB7XG4gICAgICBSZXNvdXJjZXM6IHtcbiAgICAgICAgRnVuYzoge1xuICAgICAgICAgIFR5cGU6ICdBV1M6OkxhbWJkYTo6RnVuY3Rpb24nLFxuICAgICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIENvZGU6IHtcbiAgICAgICAgICAgICAgUzNCdWNrZXQ6ICdjdXJyZW50LWJ1Y2tldCcsXG4gICAgICAgICAgICAgIFMzS2V5OiAnbmV3LWtleScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgRnVuY3Rpb25OYW1lOiAnbXktZnVuY3Rpb24nLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIFZlcnNpb24yOiB7XG4gICAgICAgICAgVHlwZTogJ0FXUzo6TGFtYmRhOjpWZXJzaW9uJyxcbiAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBGdW5jdGlvbk5hbWU6IHsgUmVmOiAnRnVuYycgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBBbGlhczoge1xuICAgICAgICAgIFR5cGU6ICdBV1M6OkxhbWJkYTo6QWxpYXMnLFxuICAgICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIEZ1bmN0aW9uTmFtZTogeyBSZWY6ICdGdW5jJyB9LFxuICAgICAgICAgICAgRnVuY3Rpb25WZXJzaW9uOiB7ICdGbjo6R2V0QXR0JzogWydWZXJzaW9uMicsICdWZXJzaW9uJ10gfSxcbiAgICAgICAgICAgIE5hbWU6ICdkZXYnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuICBtb2NrUHVibGlzaFZlcnNpb24ubW9ja1JldHVyblZhbHVlKHtcbiAgICBWZXJzaW9uOiAndjInLFxuICB9KTtcblxuICAvLyBXSEVOXG4gIGNvbnN0IGRlcGxveVN0YWNrUmVzdWx0ID0gYXdhaXQgaG90c3dhcE1vY2tTZGtQcm92aWRlci50cnlIb3Rzd2FwRGVwbG95bWVudChjZGtTdGFja0FydGlmYWN0KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChkZXBsb3lTdGFja1Jlc3VsdCkubm90LnRvQmVVbmRlZmluZWQoKTtcbiAgZXhwZWN0KG1vY2tVcGRhdGVBbGlhcykudG9IYXZlQmVlbkNhbGxlZFdpdGgoe1xuICAgIEZ1bmN0aW9uTmFtZTogJ215LWZ1bmN0aW9uJyxcbiAgICBGdW5jdGlvblZlcnNpb246ICd2MicsXG4gICAgTmFtZTogJ2RldicsXG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|