@cloudsnorkel/cdk-github-runners 0.15.0 → 0.15.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +533 -327
- package/API.md +384 -174
- package/README.md +1 -1
- package/assets/delete-failed-runner.lambda/index.js +23 -6
- package/assets/idle-runner-repear.lambda/index.js +23 -6
- package/assets/setup.lambda/index.html +7 -7
- package/assets/setup.lambda/index.js +23 -6
- package/assets/status.lambda/index.js +23 -6
- package/assets/token-retriever.lambda/index.js +23 -6
- package/assets/warm-runner-manager.lambda/index.js +23 -6
- package/assets/webhook-handler.lambda/index.js +23 -6
- package/assets/webhook-redelivery.lambda/index.js +23 -6
- package/lib/access.js +1 -1
- package/lib/image-builders/api.js +1 -1
- package/lib/image-builders/aws-image-builder/base-image.js +2 -2
- package/lib/image-builders/aws-image-builder/builder.js +1 -1
- package/lib/image-builders/aws-image-builder/deprecated/ami.js +1 -1
- package/lib/image-builders/aws-image-builder/deprecated/container.js +1 -1
- package/lib/image-builders/aws-image-builder/deprecated/linux-components.js +1 -1
- package/lib/image-builders/aws-image-builder/deprecated/windows-components.js +1 -1
- package/lib/image-builders/codebuild-deprecated.js +1 -1
- package/lib/image-builders/components.js +1 -1
- package/lib/image-builders/static.js +1 -1
- package/lib/providers/codebuild.d.ts +2 -2
- package/lib/providers/codebuild.js +3 -3
- package/lib/providers/common.d.ts +47 -3
- package/lib/providers/common.js +29 -5
- package/lib/providers/composite.js +14 -19
- package/lib/providers/ec2.d.ts +4 -2
- package/lib/providers/ec2.js +58 -30
- package/lib/providers/ecs.d.ts +2 -2
- package/lib/providers/ecs.js +8 -8
- package/lib/providers/fargate.d.ts +2 -2
- package/lib/providers/fargate.js +13 -8
- package/lib/providers/lambda.d.ts +2 -2
- package/lib/providers/lambda.js +3 -3
- package/lib/runner.d.ts +6 -1
- package/lib/runner.js +54 -31
- package/lib/secrets.js +1 -1
- package/lib/warm-runner.d.ts +15 -7
- package/lib/warm-runner.js +19 -12
- package/package.json +15 -15
package/lib/warm-runner.d.ts
CHANGED
|
@@ -29,8 +29,9 @@ export interface WarmRunnerBaseProps {
|
|
|
29
29
|
readonly owner: string;
|
|
30
30
|
/**
|
|
31
31
|
* Registration level — must match how your runners are set up in GitHub. Choose
|
|
32
|
-
* 'org' for org-wide runners, 'repo' for repo-level. See the setup wizard
|
|
33
|
-
*
|
|
32
|
+
* 'org' for org-wide runners, 'repo' for repo-level. See the setup wizard for choosing repo vs org.
|
|
33
|
+
*
|
|
34
|
+
* @see https://github.com/CloudSnorkel/cdk-github-runners/blob/main/SETUP_GITHUB.md
|
|
34
35
|
*
|
|
35
36
|
* @default 'repo'
|
|
36
37
|
*/
|
|
@@ -64,7 +65,9 @@ export interface ScheduledWarmRunnerProps extends WarmRunnerBaseProps {
|
|
|
64
65
|
*
|
|
65
66
|
* Runners will be provisioned using the specified provider and registered in the specified repository or organization.
|
|
66
67
|
*
|
|
67
|
-
* Registration level must match the one selected during setup.
|
|
68
|
+
* Registration level must match the one selected during setup.
|
|
69
|
+
*
|
|
70
|
+
* @see https://github.com/CloudSnorkel/cdk-github-runners/blob/main/SETUP_GITHUB.md
|
|
68
71
|
*
|
|
69
72
|
* ## Limitations
|
|
70
73
|
*
|
|
@@ -76,7 +79,7 @@ export interface ScheduledWarmRunnerProps extends WarmRunnerBaseProps {
|
|
|
76
79
|
* gap in coverage until the retry succeeds. Current retry mechanism has built-in back-off rate and
|
|
77
80
|
* can be tweaked using `retryOptions`. This will be improved in the future.
|
|
78
81
|
*
|
|
79
|
-
*
|
|
82
|
+
* ```typescript
|
|
80
83
|
* new AlwaysOnWarmRunner(stack, 'AlwaysOnLinux', {
|
|
81
84
|
* runners,
|
|
82
85
|
* provider: myProvider,
|
|
@@ -84,6 +87,7 @@ export interface ScheduledWarmRunnerProps extends WarmRunnerBaseProps {
|
|
|
84
87
|
* owner: 'my-org',
|
|
85
88
|
* repo: 'my-repo',
|
|
86
89
|
* });
|
|
90
|
+
* ```
|
|
87
91
|
*/
|
|
88
92
|
export declare class AlwaysOnWarmRunner extends Construct {
|
|
89
93
|
/**
|
|
@@ -98,7 +102,9 @@ export declare class AlwaysOnWarmRunner extends Construct {
|
|
|
98
102
|
*
|
|
99
103
|
* Runners will be provisioned using the specified provider and registered in the specified repository or organization.
|
|
100
104
|
*
|
|
101
|
-
* Registration level must match the one selected during setup.
|
|
105
|
+
* Registration level must match the one selected during setup.
|
|
106
|
+
*
|
|
107
|
+
* @see https://github.com/CloudSnorkel/cdk-github-runners/blob/main/SETUP_GITHUB.md
|
|
102
108
|
*
|
|
103
109
|
* ## Limitations
|
|
104
110
|
*
|
|
@@ -113,7 +119,7 @@ export declare class AlwaysOnWarmRunner extends Construct {
|
|
|
113
119
|
* gap in coverage until the retry succeeds. Current retry mechanism has built-in back-off rate and
|
|
114
120
|
* can be tweaked using `retryOptions`. This will be improved in the future.
|
|
115
121
|
*
|
|
116
|
-
*
|
|
122
|
+
* ```typescript
|
|
117
123
|
* // Cron: fill at 1pm on weekdays
|
|
118
124
|
* new ScheduledWarmRunner(stack, 'Business Hours', {
|
|
119
125
|
* runners,
|
|
@@ -124,8 +130,9 @@ export declare class AlwaysOnWarmRunner extends Construct {
|
|
|
124
130
|
* schedule: events.Schedule.cron({ hour: '13', minute: '0', weekDay: 'MON-FRI' }),
|
|
125
131
|
* duration: cdk.Duration.hours(2),
|
|
126
132
|
* });
|
|
133
|
+
* ```
|
|
127
134
|
*
|
|
128
|
-
*
|
|
135
|
+
* ```typescript
|
|
129
136
|
* // Rate: fill every 12 hours
|
|
130
137
|
* new ScheduledWarmRunner(stack, 'Every 12 Hours', {
|
|
131
138
|
* runners,
|
|
@@ -136,6 +143,7 @@ export declare class AlwaysOnWarmRunner extends Construct {
|
|
|
136
143
|
* schedule: events.Schedule.rate(cdk.Duration.hours(5)),
|
|
137
144
|
* duration: cdk.Duration.hours(12),
|
|
138
145
|
* });
|
|
146
|
+
* ```
|
|
139
147
|
*/
|
|
140
148
|
export declare class ScheduledWarmRunner extends Construct {
|
|
141
149
|
/**
|
package/lib/warm-runner.js
CHANGED
|
@@ -11,17 +11,17 @@ const cron_parser_1 = require("cron-parser");
|
|
|
11
11
|
function buildWarmRunner(scope, props, schedule, duration, createInitialFill) {
|
|
12
12
|
const registrationLevel = props.registrationLevel ?? 'repo';
|
|
13
13
|
if (registrationLevel === 'org' && props.repo) {
|
|
14
|
-
|
|
14
|
+
cdk.Annotations.of(scope).addError('Do not specify repo when registrationLevel is \'org\'');
|
|
15
15
|
}
|
|
16
16
|
if (registrationLevel === 'repo' && !props.repo) {
|
|
17
|
-
|
|
17
|
+
cdk.Annotations.of(scope).addError('repo is required when registrationLevel is \'repo\'');
|
|
18
18
|
}
|
|
19
19
|
const providerPath = props.provider.node.path;
|
|
20
20
|
if (!props.runners.providers.some(p => p.node.path === providerPath)) {
|
|
21
|
-
|
|
21
|
+
cdk.Annotations.of(scope).addError(`Provider ${providerPath} is not in the providers list of the GitHubRunners construct`);
|
|
22
22
|
}
|
|
23
23
|
const labels = props.provider.labels;
|
|
24
|
-
const repo = registrationLevel === 'repo' ? props.repo : '';
|
|
24
|
+
const repo = registrationLevel === 'repo' ? (props.repo ?? '') : '';
|
|
25
25
|
const configHash = crypto.createHash('sha256')
|
|
26
26
|
.update(JSON.stringify({ providerPath, providerLabels: labels, count: props.count, duration, owner: props.owner, repo }))
|
|
27
27
|
.digest('hex')
|
|
@@ -61,7 +61,9 @@ function buildWarmRunner(scope, props, schedule, duration, createInitialFill) {
|
|
|
61
61
|
*
|
|
62
62
|
* Runners will be provisioned using the specified provider and registered in the specified repository or organization.
|
|
63
63
|
*
|
|
64
|
-
* Registration level must match the one selected during setup.
|
|
64
|
+
* Registration level must match the one selected during setup.
|
|
65
|
+
*
|
|
66
|
+
* @see https://github.com/CloudSnorkel/cdk-github-runners/blob/main/SETUP_GITHUB.md
|
|
65
67
|
*
|
|
66
68
|
* ## Limitations
|
|
67
69
|
*
|
|
@@ -73,7 +75,7 @@ function buildWarmRunner(scope, props, schedule, duration, createInitialFill) {
|
|
|
73
75
|
* gap in coverage until the retry succeeds. Current retry mechanism has built-in back-off rate and
|
|
74
76
|
* can be tweaked using `retryOptions`. This will be improved in the future.
|
|
75
77
|
*
|
|
76
|
-
*
|
|
78
|
+
* ```typescript
|
|
77
79
|
* new AlwaysOnWarmRunner(stack, 'AlwaysOnLinux', {
|
|
78
80
|
* runners,
|
|
79
81
|
* provider: myProvider,
|
|
@@ -81,6 +83,7 @@ function buildWarmRunner(scope, props, schedule, duration, createInitialFill) {
|
|
|
81
83
|
* owner: 'my-org',
|
|
82
84
|
* repo: 'my-repo',
|
|
83
85
|
* });
|
|
86
|
+
* ```
|
|
84
87
|
*/
|
|
85
88
|
class AlwaysOnWarmRunner extends constructs_1.Construct {
|
|
86
89
|
constructor(scope, id, props) {
|
|
@@ -90,7 +93,7 @@ class AlwaysOnWarmRunner extends constructs_1.Construct {
|
|
|
90
93
|
}
|
|
91
94
|
exports.AlwaysOnWarmRunner = AlwaysOnWarmRunner;
|
|
92
95
|
_a = JSII_RTTI_SYMBOL_1;
|
|
93
|
-
AlwaysOnWarmRunner[_a] = { fqn: "@cloudsnorkel/cdk-github-runners.AlwaysOnWarmRunner", version: "0.15.
|
|
96
|
+
AlwaysOnWarmRunner[_a] = { fqn: "@cloudsnorkel/cdk-github-runners.AlwaysOnWarmRunner", version: "0.15.1" };
|
|
94
97
|
/**
|
|
95
98
|
* Convert AWS EventBridge cron format to cron-parser format.
|
|
96
99
|
* AWS: cron(min hour dom month dow year), cron-parser: sec min hour dom month dow
|
|
@@ -150,7 +153,9 @@ function getScheduleIntervalSeconds(expressionString) {
|
|
|
150
153
|
*
|
|
151
154
|
* Runners will be provisioned using the specified provider and registered in the specified repository or organization.
|
|
152
155
|
*
|
|
153
|
-
* Registration level must match the one selected during setup.
|
|
156
|
+
* Registration level must match the one selected during setup.
|
|
157
|
+
*
|
|
158
|
+
* @see https://github.com/CloudSnorkel/cdk-github-runners/blob/main/SETUP_GITHUB.md
|
|
154
159
|
*
|
|
155
160
|
* ## Limitations
|
|
156
161
|
*
|
|
@@ -165,7 +170,7 @@ function getScheduleIntervalSeconds(expressionString) {
|
|
|
165
170
|
* gap in coverage until the retry succeeds. Current retry mechanism has built-in back-off rate and
|
|
166
171
|
* can be tweaked using `retryOptions`. This will be improved in the future.
|
|
167
172
|
*
|
|
168
|
-
*
|
|
173
|
+
* ```typescript
|
|
169
174
|
* // Cron: fill at 1pm on weekdays
|
|
170
175
|
* new ScheduledWarmRunner(stack, 'Business Hours', {
|
|
171
176
|
* runners,
|
|
@@ -176,8 +181,9 @@ function getScheduleIntervalSeconds(expressionString) {
|
|
|
176
181
|
* schedule: events.Schedule.cron({ hour: '13', minute: '0', weekDay: 'MON-FRI' }),
|
|
177
182
|
* duration: cdk.Duration.hours(2),
|
|
178
183
|
* });
|
|
184
|
+
* ```
|
|
179
185
|
*
|
|
180
|
-
*
|
|
186
|
+
* ```typescript
|
|
181
187
|
* // Rate: fill every 12 hours
|
|
182
188
|
* new ScheduledWarmRunner(stack, 'Every 12 Hours', {
|
|
183
189
|
* runners,
|
|
@@ -188,6 +194,7 @@ function getScheduleIntervalSeconds(expressionString) {
|
|
|
188
194
|
* schedule: events.Schedule.rate(cdk.Duration.hours(5)),
|
|
189
195
|
* duration: cdk.Duration.hours(12),
|
|
190
196
|
* });
|
|
197
|
+
* ```
|
|
191
198
|
*/
|
|
192
199
|
class ScheduledWarmRunner extends constructs_1.Construct {
|
|
193
200
|
constructor(scope, id, props) {
|
|
@@ -206,5 +213,5 @@ class ScheduledWarmRunner extends constructs_1.Construct {
|
|
|
206
213
|
}
|
|
207
214
|
exports.ScheduledWarmRunner = ScheduledWarmRunner;
|
|
208
215
|
_b = JSII_RTTI_SYMBOL_1;
|
|
209
|
-
ScheduledWarmRunner[_b] = { fqn: "@cloudsnorkel/cdk-github-runners.ScheduledWarmRunner", version: "0.15.
|
|
210
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FybS1ydW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvd2FybS1ydW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxpQ0FBaUM7QUFDakMsbUNBQW1DO0FBQ25DLDZDQUdxQjtBQUNyQiwyQ0FBdUM7QUFDdkMsNkNBQW1EO0FBb0VuRCxTQUFTLGVBQWUsQ0FBQyxLQUFnQixFQUFFLEtBQTBCLEVBQUUsUUFBeUIsRUFBRSxRQUFnQixFQUFFLGlCQUEwQjtJQUM1SSxNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxNQUFNLENBQUM7SUFDNUQsSUFBSSxpQkFBaUIsS0FBSyxLQUFLLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzlDLE1BQU0sSUFBSSxLQUFLLENBQUMsdURBQXVELENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBQ0QsSUFBSSxpQkFBaUIsS0FBSyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDOUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxFQUFFLENBQUM7UUFDckUsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLFlBQVksOERBQThELENBQUMsQ0FBQztJQUMxRyxDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7SUFFckMsTUFBTSxJQUFJLEdBQUcsaUJBQWlCLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMs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LENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUNuQyx1RUFBdUUsRUFDdkUsZ0NBQWdDLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLGFBQWEsRUFBRSwyRUFBMkUsQ0FDMUosQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLGVBQWUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0RyxDQUFDOztBQXpCSCxrREEwQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjcnlwdG8gZnJvbSAnY3J5cHRvJztcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQge1xuICBhd3NfZXZlbnRzIGFzIGV2ZW50cyxcbiAgYXdzX2V2ZW50c190YXJnZXRzIGFzIGV2ZW50c190YXJnZXRzLFxufSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IENyb25FeHByZXNzaW9uUGFyc2VyIH0gZnJvbSAnY3Jvbi1wYXJzZXInO1xuaW1wb3J0IHsgSUNvbXBvc2l0ZVByb3ZpZGVyLCBJUnVubmVyUHJvdmlkZXIgfSBmcm9tICcuL3Byb3ZpZGVycyc7XG5pbXBvcnQgeyBHaXRIdWJSdW5uZXJzIH0gZnJvbSAnLi9ydW5uZXInO1xuaW1wb3J0IHsgV2FybVJ1bm5lckZpbGxQYXlsb2FkIH0gZnJvbSAnLi93YXJtLXJ1bm5lci1tYW5hZ2VyLmxhbWJkYSc7XG5cbi8qKlxuICogQ29tbW9uIHByb3BlcnRpZXMgZm9yIHdhcm0gcnVubmVyIGNvbnN0cnVjdHMuXG4gKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2FybVJ1bm5lckJhc2VQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgR2l0SHViUnVubmVycyBjb25zdHJ1Y3QgdGhhdCBvd25zIHRoZSBzaGFyZWQgd2FybSBydW5uZXIgaW5mcmFzdHJ1Y3R1cmUuXG4gICAqL1xuICByZWFkb25seSBydW5uZXJzOiBHaXRIdWJSdW5uZXJzO1xuXG4gIC8qKlxuICAgKiBQcm92aWRlciB0byB1c2UuIFdhcm0gcnVubmVycyBieXBhc3MgdGhlIHByb3ZpZGVyIHNlbGVjdG9yIOKAlCB0aGV5IGFsd2F5cyB1c2VcbiAgICogdGhpcyBwcm92aWRlciwgcmVnYXJkbGVzcyBvZiBqb2IgY2hhcmFjdGVyaXN0aWNzLiBMYWJlbHMgY2Fubm90IGJlIG1vZGlmaWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmlkZXI6IElSdW5uZXJQcm92aWRlciB8IElDb21wb3NpdGVQcm92aWRlcjtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIHdhcm0gcnVubmVycyB0byBtYWludGFpbi5cbiAgICovXG4gIHJlYWRvbmx5IGNvdW50OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEdpdEh1YiBvd25lciB3aGVyZSBydW5uZXJzIHdpbGwgYmUgcmVnaXN0ZXJlZCAob3JnIG9yIHVzZXIgbG9naW4pLlxuICAgKi9cbiAgcmVhZG9ubHkgb3duZXI6IHN0cmluZztcblxuICAvKipcbiAgICogUmVnaXN0cmF0aW9uIGxldmVsIOKAlCBtdXN0IG1hdGNoIGhvdyB5b3VyIHJ1bm5lcnMgYXJlIHNldCB1cCBpbiBHaXRIdWIuIENob29zZVxuICAgKiAnb3JnJyBmb3Igb3JnLXdpZGUgcnVubmVycywgJ3JlcG8nIGZvciByZXBvLWxldmVsLiBTZWUgdGhlIHNldHVwIHdpemFyZCBvclxuICAgKiB7QGxpbmsgU0VUVVBfR0lUSFVCLm1kfSBmb3IgY2hvb3NpbmcgcmVwbyB2cyBvcmcuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdyZXBvJ1xuICAgKi9cbiAgcmVhZG9ubHkgcmVnaXN0cmF0aW9uTGV2ZWw/OiAnb3JnJyB8ICdyZXBvJztcblxuICAvKipcbiAgICogUmVwb3NpdG9yeSBuYW1lICh3aXRob3V0IG93bmVyKSB3aGVyZSBydW5uZXJzIHdpbGwgYmUgcmVnaXN0ZXJlZC4gUmVxdWlyZWQgd2hlbiBgcmVnaXN0cmF0aW9uTGV2ZWxgIGlzICdyZXBvJy5cbiAgICovXG4gIHJlYWRvbmx5IHJlcG8/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYWx3YXlzIG9uIHdhcm0gcnVubmVycy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbHdheXNPbldhcm1SdW5uZXJQcm9wcyBleHRlbmRzIFdhcm1SdW5uZXJCYXNlUHJvcHMgeyB9XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3Igc2NoZWR1bGVkIHdhcm0gcnVubmVycy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY2hlZHVsZWRXYXJtUnVubmVyUHJvcHMgZXh0ZW5kcyBXYXJtUnVubmVyQmFzZVByb3BzIHtcbiAgLyoqXG4gICAqIFdoZW4gdG8gc3RhcnQgZmlsbGluZyB0aGUgcG9vbCAoZS5nLiBzdGFydCBvZiBidXNpbmVzcyBob3VycykuXG4gICAqL1xuICByZWFkb25seSBzY2hlZHVsZTogZXZlbnRzLlNjaGVkdWxlO1xuXG4gIC8qKlxuICAgKiBIb3cgbG9uZyB0aGUgd2FybSBydW5uZXJzIHNob3VsZCBiZSBtYWludGFpbmVkIGZyb20gdGhlIGZpbGwgdGltZSAoc2NoZWR1bGUpLiBEZWZpbmVzIHRoZSBlbmQgb2YgdGhlXG4gICAqIHdpbmRvdyAoc2NoZWR1bGUgdGltZSArIGR1cmF0aW9uKS5cbiAgICovXG4gIHJlYWRvbmx5IGR1cmF0aW9uOiBjZGsuRHVyYXRpb247XG59XG5cbmZ1bmN0aW9uIGJ1aWxkV2FybVJ1bm5lcihzY29wZTogQ29uc3RydWN0LCBwcm9wczogV2FybVJ1bm5lckJhc2VQcm9wcywgc2NoZWR1bGU6IGV2ZW50cy5TY2hlZHVsZSwgZHVyYXRpb246IG51bWJlciwgY3JlYXRlSW5pdGlhbEZpbGw6IGJvb2xlYW4pIHtcbiAgY29uc3QgcmVnaXN0cmF0aW9uTGV2ZWwgPSBwcm9wcy5yZWdpc3RyYXRpb25MZXZlbCA/PyAncmVwbyc7XG4gIGlmIChyZWdpc3RyYXRpb25MZXZlbCA9PT0gJ29yZycgJiYgcHJvcHMucmVwbykge1xuICAgIHRocm93IG5ldyBFcnJvcignRG8gbm90IHNwZWNpZnkgcmVwbyB3aGVuIHJlZ2lzdHJhdGlvbkxldmVsIGlzIFxcJ29yZ1xcJycpO1xuICB9XG4gIGlmIChyZWdpc3RyYXRpb25MZXZlbCA9PT0gJ3JlcG8nICYmICFwcm9wcy5yZXBvKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdyZXBvIGlzIHJlcXVpcmVkIHdoZW4gcmVnaXN0cmF0aW9uTGV2ZWwgaXMgXFwncmVwb1xcJycpO1xuICB9XG5cbiAgY29uc3QgcHJvdmlkZXJQYXRoID0gcHJvcHMucHJvdmlkZXIubm9kZS5wYXRoO1xuICBpZiAoIXByb3BzLnJ1bm5lcnMucHJvdmlkZXJzLnNvbWUocCA9PiBwLm5vZGUucGF0aCA9PT0gcHJvdmlkZXJQYXRoKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgUHJvdmlkZXIgJHtwcm92aWRlclBhdGh9IGlzIG5vdCBpbiB0aGUgcHJvdmlkZXJzIGxpc3Qgb2YgdGhlIEdpdEh1YlJ1bm5lcnMgY29uc3RydWN0YCk7XG4gIH1cblxuICBjb25zdCBsYWJlbHMgPSBwcm9wcy5wcm92aWRlci5sYWJlbHM7XG5cbiAgY29uc3QgcmVwbyA9IHJlZ2lzdHJhdGlvbkxldmVsID09PSAncmVwbycgPyBwcm9wcy5yZXBvISA6ICcnO1xuICBjb25zdCBjb25maWdIYXNoID0gY3J5cHRvLmNyZWF0ZUhhc2goJ3NoYTI1NicpXG4gICAgLnVwZGF0ZShKU09OLnN0cmluZ2lmeSh7IHByb3ZpZGVyUGF0aCwgcHJvdmlkZXJMYWJlbHM6IGxhYmVscywgY291bnQ6IHByb3BzLmNvdW50LCBkdXJhdGlvbiwgb3duZXI6IHByb3BzLm93bmVyLCByZXBvIH0pKVxuICAgIC5kaWdlc3QoJ2hleCcpXG4gICAgLnNsaWNlKDAsIDE2KTtcblxuICBjb25zdCBmaWxsUGF5bG9hZDogV2FybVJ1bm5lckZpbGxQYXlsb2FkID0ge1xuICAgIGFjdGlvbjogJ2ZpbGwnIGFzIGNvbnN0LFxuICAgIHByb3ZpZGVyUGF0aCxcbiAgICBwcm92aWRlckxhYmVsczogbGFiZWxzLFxuICAgIGNvdW50OiBwcm9wcy5jb3VudCxcbiAgICBkdXJhdGlvbixcbiAgICBvd25lcjogcHJvcHMub3duZXIsXG4gICAgcmVwbyxcbiAgICBjb25maWdIYXNoLFxuICB9O1xuXG4gIGNvbnN0IHsgbGFtYmRhOiBtYW5hZ2VyRm4sIHF1ZXVlIH0gPSBwcm9wcy5ydW5uZXJzLl9lbnN1cmVXYXJtUnVubmVySW5mcmEoKTtcbiAgcHJvcHMucnVubmVycy5fcmVnaXN0ZXJXYXJtQ29uZmlnSGFzaChjb25maWdIYXNoKTtcblxuICAvLyBTY2hlZHVsZSB0byBmaWxsIHRoZSB3YXJtIHBvb2wgKHVzdWFsbHkgZGFpbHkpLiBTZW5kcyB0byBTUVMgc28gd2UgZ2V0IHN0YWJsZSBtZXNzYWdlSWQgZm9yIGlkZW1wb3RlbnQgZmlsbHMuXG4gIG5ldyBldmVudHMuUnVsZShzY29wZSwgJ1NjaGVkdWxlJywge1xuICAgIHNjaGVkdWxlLFxuICAgIHRhcmdldHM6IFtuZXcgZXZlbnRzX3RhcmdldHMuU3FzUXVldWUocXVldWUsIHtcbiAgICAgIG1lc3NhZ2U6IGV2ZW50cy5SdWxlVGFyZ2V0SW5wdXQuZnJvbU9iamVjdChmaWxsUGF5bG9hZCksXG4gICAgfSldLFxuICB9KTtcblxuICAvLyBGaWxsIHRoZSB3YXJtIHBvb2wgaW1tZWRpYXRlbHkgb24gZGVwbG95IChBbHdheXNPbldhcm1SdW5uZXIgb25seSkuXG4gIC8vIFNjaGVkdWxlZFdhcm1SdW5uZXIgZG9lcyBub3QgZ2V0IGRlcGxveW1lbnQtZmlsbC4gRmlyc3QgZmlsbCBoYXBwZW5zIGF0IHRoZSBuZXh0IHNjaGVkdWxlIGZpcmUuXG4gIGlmIChjcmVhdGVJbml0aWFsRmlsbCkge1xuICAgIG5ldyBjZGsuQ3VzdG9tUmVzb3VyY2Uoc2NvcGUsICdJbml0aWFsIEZpbGwnLCB7XG4gICAgICBzZXJ2aWNlVG9rZW46IG1hbmFnZXJGbi5mdW5jdGlvbkFybixcbiAgICAgIHJlc291cmNlVHlwZTogJ0N1c3RvbTo6V2FybVJ1bm5lckZpbGwnLFxuICAgICAgcHJvcGVydGllczogZmlsbFBheWxvYWQsXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gZmlsbFBheWxvYWQ7XG59XG5cbi8qKlxuICogV2FybSBydW5uZXJzIHRoYXQgcnVuIDI0LzcuIEZpbGxzIGF0IG1pZG5pZ2h0IFVUQyBhbmQgZWFjaCBydW5uZXIgc3RheXMgYWxpdmUgZm9yIDI0IGhvdXJzLlxuICpcbiAqIFJ1bm5lcnMgd2lsbCBiZSBwcm92aXNpb25lZCB1c2luZyB0aGUgc3BlY2lmaWVkIHByb3ZpZGVyIGFuZCByZWdpc3RlcmVkIGluIHRoZSBzcGVjaWZpZWQgcmVwb3NpdG9yeSBvciBvcmdhbml6YXRpb24uXG4gKlxuICogUmVnaXN0cmF0aW9uIGxldmVsIG11c3QgbWF0Y2ggdGhlIG9uZSBzZWxlY3RlZCBkdXJpbmcgc2V0dXAuIFNlZSB7QGxpbmsgU0VUVVBfR0lUSFVCLm1kfSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgc2VsZWN0aW9uLlxuICpcbiAqICMjIExpbWl0YXRpb25zXG4gKlxuICogLSBKb2JzIHdpbGwgc3RpbGwgdHJpZ2dlciBwcm92aXNpb25pbmcgb2Ygb24tZGVtYW5kIHJ1bm5lcnMsIGV2ZW4gaWYgYSB3YXJtIHJ1bm5lciBlbmRzIHVwIGJlaW5nIHVzZWQuXG4gKiAtIFlvdSBtYXkgYnJpZWZseSBzZWUgbW9yZSB0aGFuIGBjb3VudGAgcnVubmVycyB3aGVuIGNoYW5naW5nIGNvbmZpZyBvciBhdCByb3RhdGlvbi5cbiAqIC0gVG8gcmVtb3ZlOiBzZXQgYGNvdW50YCB0byAwLCBkZXBsb3ksIHdhaXQgZm9yIHdhcm0gcnVubmVycyB0byBzdG9wLCB0aGVuIHJlbW92ZSBhbmQgZGVwbG95IGFnYWluLlxuICogICBJZiB5b3UgZG9uJ3QgZm9sbG93IHRoaXMgcHJvY2VkdXJlLCB3YXJtIHJ1bm5lcnMgbWF5IGxpbmdlciB1bnRpbCB0aGV5IGV4cGlyZS5cbiAqIC0gUHJvdmlkZXIgZmFpbHVyZXMgb3IgdGltZW91dHMgKGxpa2UgTGFtYmRhIHByb3ZpZGVyIHRpbWluZyBvdXQgYWZ0ZXIgMTUgbWludXRlcykgd2lsbCByZXN1bHQgaW4gYVxuICogICBnYXAgaW4gY292ZXJhZ2UgdW50aWwgdGhlIHJldHJ5IHN1Y2NlZWRzLiBDdXJyZW50IHJldHJ5IG1lY2hhbmlzbSBoYXMgYnVpbHQtaW4gYmFjay1vZmYgcmF0ZSBhbmRcbiAqICAgY2FuIGJlIHR3ZWFrZWQgdXNpbmcgYHJldHJ5T3B0aW9uc2AuIFRoaXMgd2lsbCBiZSBpbXByb3ZlZCBpbiB0aGUgZnV0dXJlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBuZXcgQWx3YXlzT25XYXJtUnVubmVyKHN0YWNrLCAnQWx3YXlzT25MaW51eCcsIHtcbiAqICAgcnVubmVycyxcbiAqICAgcHJvdmlkZXI6IG15UHJvdmlkZXIsXG4gKiAgIGNvdW50OiAzLFxuICogICBvd25lcjogJ215LW9yZycsXG4gKiAgIHJlcG86ICdteS1yZXBvJyxcbiAqIH0pO1xuICovXG5leHBvcnQgY2xhc3MgQWx3YXlzT25XYXJtUnVubmVyIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIFRoZSBmaWxsIHBheWxvYWQgZm9yIHRoaXMgd2FybSBydW5uZXIgY29uZmlndXJhdGlvbi5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgX2ZpbGxQYXlsb2FkOiBXYXJtUnVubmVyRmlsbFBheWxvYWQ7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEFsd2F5c09uV2FybVJ1bm5lclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICB0aGlzLl9maWxsUGF5bG9hZCA9IGJ1aWxkV2FybVJ1bm5lcih0aGlzLCBwcm9wcywgZXZlbnRzLlNjaGVkdWxlLmNyb24oeyBob3VyOiAnMCcsIG1pbnV0ZTogJzAnIH0pLCBjZGsuRHVyYXRpb24uZGF5cygxKS50b1NlY29uZHMoKSwgdHJ1ZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBDb252ZXJ0IEFXUyBFdmVudEJyaWRnZSBjcm9uIGZvcm1hdCB0byBjcm9uLXBhcnNlciBmb3JtYXQuXG4gKiBBV1M6IGNyb24obWluIGhvdXIgZG9tIG1vbnRoIGRvdyB5ZWFyKSwgY3Jvbi1wYXJzZXI6IHNlYyBtaW4gaG91ciBkb20gbW9udGggZG93XG4gKi9cbmZ1bmN0aW9uIGF3c0Nyb25Ub1BhcnNlckZvcm1hdChleHByZXNzaW9uU3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBtYXRjaCA9IGV4cHJlc3Npb25TdHJpbmcubWF0Y2goL15jcm9uXFwoKC4rKVxcKSQvKTtcbiAgaWYgKCFtYXRjaCkgcmV0dXJuIGV4cHJlc3Npb25TdHJpbmc7XG4gIGNvbnN0IFssIGlubmVyXSA9IG1hdGNoO1xuICBjb25zdCBwYXJ0cyA9IGlubmVyLnRyaW0oKS5zcGxpdCgvXFxzKy8pO1xuICBpZiAocGFydHMubGVuZ3RoICE9PSA2KSByZXR1cm4gZXhwcmVzc2lvblN0cmluZztcbiAgY29uc3QgW21pbnV0ZSwgaG91ciwgZG9tLCBtb250aCwgZG93XSA9IHBhcnRzO1xuICByZXR1cm4gYDAgJHttaW51dGV9ICR7aG91cn0gJHtkb219ICR7bW9udGh9ICR7ZG93fWA7XG59XG5cbi8qKlxuICogUGFyc2UgQVdTIEV2ZW50QnJpZGdlIHJhdGUgZXhwcmVzc2lvbiBhbmQgcmV0dXJuIGludGVydmFsIGluIHNlY29uZHMuXG4gKiBGb3JtYXQ6IHJhdGUodmFsdWUgdW5pdCkgZS5nLiByYXRlKDIgaG91cnMpLCByYXRlKDUgbWludXRlcyksIHJhdGUoMSBkYXkpXG4gKi9cbmZ1bmN0aW9uIHBhcnNlUmF0ZUludGVydmFsKGV4cHJlc3Npb25TdHJpbmc6IHN0cmluZyk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IG1hdGNoID0gZXhwcmVzc2lvblN0cmluZy5tYXRjaCgvXnJhdGVcXCgoXFxkKylcXHMrKG1pbnV0ZXxtaW51dGVzfGhvdXJ8aG91cnN8ZGF5fGRheXMpXFwpJC9pKTtcbiAgaWYgKCFtYXRjaCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgY29uc3QgdmFsdWUgPSBwYXJzZUludChtYXRjaFsxXSwgMTApO1xuICBjb25zdCB1bml0ID0gbWF0Y2hbMl0udG9Mb3dlckNhc2UoKTtcbiAgaWYgKHZhbHVlIDw9IDApIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IHNlY29uZHNQZXJVbml0OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge1xuICAgIG1pbnV0ZTogNjAsXG4gICAgbWludXRlczogNjAsXG4gICAgaG91cjogMzYwMCxcbiAgICBob3VyczogMzYwMCxcbiAgICBkYXk6IDg2NDAwLFxuICAgIGRheXM6IDg2NDAwLFxuICB9O1xuICByZXR1cm4gdmFsdWUgKiBzZWNvbmRzUGVyVW5pdFt1bml0XTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGludGVydmFsIGJldHdlZW4gc2NoZWR1bGUgb2NjdXJyZW5jZXMgaW4gc2Vjb25kcy5cbiAqIFN1cHBvcnRzIGJvdGggY3JvbiBhbmQgcmF0ZSBleHByZXNzaW9ucy5cbiAqL1xuZnVuY3Rpb24gZ2V0U2NoZWR1bGVJbnRlcnZhbFNlY29uZHMoZXhwcmVzc2lvblN0cmluZzogc3RyaW5nKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgcmF0ZUludGVydmFsID0gcGFyc2VSYXRlSW50ZXJ2YWwoZXhwcmVzc2lvblN0cmluZyk7XG4gIGlmIChyYXRlSW50ZXJ2YWwgIT09IHVuZGVmaW5lZCkgcmV0dXJuIHJhdGVJbnRlcnZhbDtcblxuICB0cnkge1xuICAgIGNvbnN0IGNyb25FeHByZXNzaW9uID0gQ3JvbkV4cHJlc3Npb25QYXJzZXIucGFyc2UoYXdzQ3JvblRvUGFyc2VyRm9ybWF0KGV4cHJlc3Npb25TdHJpbmcpKTtcbiAgICBjb25zdCBuZXh0ID0gY3JvbkV4cHJlc3Npb24udGFrZSgyKTtcbiAgICByZXR1cm4gKG5leHRbMV0uZ2V0VGltZSgpIC0gbmV4dFswXS5nZXRUaW1lKCkpIC8gMTAwMDtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKipcbiAqIFdhcm0gcnVubmVycyBhY3RpdmUgZHVyaW5nIGEgdGltZSB3aW5kb3cgc3BlY2lmaWVkIGJ5IHN0YXJ0IHRpbWUgKGBzY2hlZHVsZWApIGFuZCBkdXJhdGlvbiAoYGR1cmF0aW9uYCkuXG4gKlxuICogUnVubmVycyB3aWxsIGJlIHByb3Zpc2lvbmVkIHVzaW5nIHRoZSBzcGVjaWZpZWQgcHJvdmlkZXIgYW5kIHJlZ2lzdGVyZWQgaW4gdGhlIHNwZWNpZmllZCByZXBvc2l0b3J5IG9yIG9yZ2FuaXphdGlvbi5cbiAqXG4gKiBSZWdpc3RyYXRpb24gbGV2ZWwgbXVzdCBtYXRjaCB0aGUgb25lIHNlbGVjdGVkIGR1cmluZyBzZXR1cC4gU2VlIHtAbGluayBTRVRVUF9HSVRIVUIubWR9IGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBzZWxlY3Rpb24uXG4gKlxuICogIyMgTGltaXRhdGlvbnNcbiAqXG4gKiAtICoqTm8gZGVwbG95bWVudC1maWxsKio6IFVubGlrZSBgQWx3YXlzT25XYXJtUnVubmVyYCwgc2NoZWR1bGVkIHdhcm0gcnVubmVycyBkbyBub3QgZ2V0IGFuIGluaXRpYWxcbiAqICAgZmlsbCBvbiBkZXBsb3kuIFRoZSBmaXJzdCBmaWxsIGhhcHBlbnMgYXQgdGhlIG5leHQgc2NoZWR1bGUgb2NjdXJyZW5jZS4gSWYgeW91IGRlcGxveSBhdCAxcG0gZm9yXG4gKiAgIGEgMnBtIHNjaGVkdWxlLCBydW5uZXJzIHdpbGwgbm90IGFwcGVhciB1bnRpbCAycG0uXG4gKiAtIEpvYnMgd2lsbCBzdGlsbCB0cmlnZ2VyIHByb3Zpc2lvbmluZyBvZiBvbi1kZW1hbmQgcnVubmVycywgZXZlbiBpZiBhIHdhcm0gcnVubmVyIGVuZHMgdXAgYmVpbmcgdXNlZC5cbiAqIC0gWW91IG1heSBicmllZmx5IHNlZSBtb3JlIHRoYW4gYGNvdW50YCBydW5uZXJzIHdoZW4gY2hhbmdpbmcgY29uZmlnIG9yIGF0IHJvdGF0aW9uLlxuICogLSBUbyByZW1vdmU6IHNldCBgY291bnRgIHRvIDAsIGRlcGxveSwgd2FpdCBmb3Igd2FybSBydW5uZXJzIHRvIHN0b3AsIHRoZW4gcmVtb3ZlIGFuZCBkZXBsb3kgYWdhaW4uXG4gKiAgIElmIHlvdSBkb24ndCBmb2xsb3cgdGhpcyBwcm9jZWR1cmUsIHdhcm0gcnVubmVycyBtYXkgbGluZ2VyIHVudGlsIHRoZXkgZXhwaXJlLlxuICogLSBQcm92aWRlciBmYWlsdXJlcyBvciB0aW1lb3V0cyAobGlrZSBMYW1iZGEgcHJvdmlkZXIgdGltaW5nIG91dCBhZnRlciAxNSBtaW51dGVzKSB3aWxsIHJlc3VsdCBpbiBhXG4gKiAgIGdhcCBpbiBjb3ZlcmFnZSB1bnRpbCB0aGUgcmV0cnkgc3VjY2VlZHMuIEN1cnJlbnQgcmV0cnkgbWVjaGFuaXNtIGhhcyBidWlsdC1pbiBiYWNrLW9mZiByYXRlIGFuZFxuICogICBjYW4gYmUgdHdlYWtlZCB1c2luZyBgcmV0cnlPcHRpb25zYC4gVGhpcyB3aWxsIGJlIGltcHJvdmVkIGluIHRoZSBmdXR1cmUuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENyb246IGZpbGwgYXQgMXBtIG9uIHdlZWtkYXlzXG4gKiBuZXcgU2NoZWR1bGVkV2FybVJ1bm5lcihzdGFjaywgJ0J1c2luZXNzIEhvdXJzJywge1xuICogICBydW5uZXJzLFxuICogICBwcm92aWRlcjogbXlQcm92aWRlcixcbiAqICAgY291bnQ6IDMsXG4gKiAgIG93bmVyOiAnbXktb3JnJyxcbiAqICAgcmVwbzogJ215LXJlcG8nLFxuICogICBzY2hlZHVsZTogZXZlbnRzLlNjaGVkdWxlLmNyb24oeyBob3VyOiAnMTMnLCBtaW51dGU6ICcwJywgd2Vla0RheTogJ01PTi1GUkknIH0pLFxuICogICBkdXJhdGlvbjogY2RrLkR1cmF0aW9uLmhvdXJzKDIpLFxuICogfSk7XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJhdGU6IGZpbGwgZXZlcnkgMTIgaG91cnNcbiAqIG5ldyBTY2hlZHVsZWRXYXJtUnVubmVyKHN0YWNrLCAnRXZlcnkgMTIgSG91cnMnLCB7XG4gKiAgIHJ1bm5lcnMsXG4gKiAgIHByb3ZpZGVyOiBteVByb3ZpZGVyLFxuICogICBjb3VudDogMixcbiAqICAgb3duZXI6ICdteS1vcmcnLFxuICogICByZXBvOiAnbXktcmVwbycsXG4gKiAgIHNjaGVkdWxlOiBldmVudHMuU2NoZWR1bGUucmF0ZShjZGsuRHVyYXRpb24uaG91cnMoNSkpLFxuICogICBkdXJhdGlvbjogY2RrLkR1cmF0aW9uLmhvdXJzKDEyKSxcbiAqIH0pO1xuICovXG5leHBvcnQgY2xhc3MgU2NoZWR1bGVkV2FybVJ1bm5lciBleHRlbmRzIENvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBUaGUgZmlsbCBwYXlsb2FkIGZvciB0aGlzIHdhcm0gcnVubmVyIGNvbmZpZ3VyYXRpb24uXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IF9maWxsUGF5bG9hZDogV2FybVJ1bm5lckZpbGxQYXlsb2FkO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTY2hlZHVsZWRXYXJtUnVubmVyUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgLy8gbWFrZSBzdXJlIHRoZSBkdXJhdGlvbiBpcyBub3QgbG9uZ2VyIHRoYW4gdGhlIGludGVydmFsIGJldHdlZW4gbmV4dCB0d28gc2NoZWR1bGUgb2NjdXJyZW5jZXNcbiAgICBjb25zdCBpbnRlcnZhbCA9IGdldFNjaGVkdWxlSW50ZXJ2YWxTZWNvbmRzKHByb3BzLnNjaGVkdWxlLmV4cHJlc3Npb25TdHJpbmcpO1xuICAgIGlmIChpbnRlcnZhbCAhPT0gdW5kZWZpbmVkICYmIGludGVydmFsIDwgcHJvcHMuZHVyYXRpb24udG9TZWNvbmRzKCkpIHtcbiAgICAgIGNkay5Bbm5vdGF0aW9ucy5vZih0aGlzKS5hZGRFcnJvcihgU2NoZWR1bGVkV2FybVJ1bm5lciBkdXJhdGlvbiAke3Byb3BzLmR1cmF0aW9uLnRvSHVtYW5TdHJpbmcoKX0gaXMgbG9uZ2VyIHRoYW4gdGhlIGludGVydmFsICR7Y2RrLkR1cmF0aW9uLnNlY29uZHMoaW50ZXJ2YWwpLnRvSHVtYW5TdHJpbmcoKX0gYmV0d2VlbiBuZXh0IHR3byBzY2hlZHVsZSBvY2N1cnJlbmNlcy4gVGhpcyB3aWxsIHJlc3VsdCBpbiBvdmVybGFwcGluZyB3YXJtIHJ1bm5lcnMgYXQgdGhlIHN0YXJ0IG9mIHRoZSBuZXh0IHNjaGVkdWxlIG9jY3VycmVuY2UuYCk7XG4gICAgfVxuXG4gICAgLy8gd2FybiBmb3Igc2hvcnQgaW50ZXJ2YWxcbiAgICBpZiAoaW50ZXJ2YWwgIT09IHVuZGVmaW5lZCAmJiBpbnRlcnZhbCA8IGNkay5EdXJhdGlvbi5ob3VycygxKS50b1NlY29uZHMoKSkge1xuICAgICAgY2RrLkFubm90YXRpb25zLm9mKHRoaXMpLmFkZFdhcm5pbmdWMihcbiAgICAgICAgJ0BjbG91ZHNub3JrZWwvY2RrLWdpdGh1Yi1ydW5uZXJzOlNjaGVkdWxlZFdhcm1SdW5uZXIuaW50ZXJ2YWxUb29TaG9ydCcsXG4gICAgICAgIGBTY2hlZHVsZWRXYXJtUnVubmVyIGludGVydmFsICR7Y2RrLkR1cmF0aW9uLnNlY29uZHMoaW50ZXJ2YWwpLnRvSHVtYW5TdHJpbmcoKX0gaXMgbGVzcyB0aGFuIDEgaG91ciwgd2hpY2ggbWF5IHJlc3VsdCBpbiBtb3JlIHdhcm0gcnVubmVycyB0aGFuIGV4cGVjdGVkYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5fZmlsbFBheWxvYWQgPSBidWlsZFdhcm1SdW5uZXIodGhpcywgcHJvcHMsIHByb3BzLnNjaGVkdWxlLCBwcm9wcy5kdXJhdGlvbi50b1NlY29uZHMoKSwgZmFsc2UpO1xuICB9XG59XG4iXX0=
|
|
216
|
+
ScheduledWarmRunner[_b] = { fqn: "@cloudsnorkel/cdk-github-runners.ScheduledWarmRunner", version: "0.15.1" };
|
|
217
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FybS1ydW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvd2FybS1ydW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxpQ0FBaUM7QUFDakMsbUNBQW1DO0FBQ25DLDZDQUdxQjtBQUNyQiwyQ0FBdUM7QUFDdkMsNkNBQW1EO0FBcUVuRCxTQUFTLGVBQWUsQ0FBQyxLQUFnQixFQUFFLEtBQTBCLEVBQUUsUUFBeUIsRUFBRSxRQUFnQixFQUFFLGlCQUEwQjtJQUM1SSxNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxNQUFNLENBQUM7SUFDNUQsSUFBSSxpQkFBaUIsS0FBSyxLQUFLLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzlDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFDRCxJQUFJLGlCQUFpQixLQUFLLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoRCxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMscURBQXFELENBQUMsQ0FBQztJQUM1RixDQUFDO0lBRUQsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQzlDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsRUFBRSxDQUFDO1FBQ3JFLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxZQUFZLFlBQVksOERBQThELENBQUMsQ0FBQztJQUM3SCxDQUFDO0lBRUQsTUFB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QixJQUFJLFFBQVEsS0FBSyxTQUFTLElBQUksUUFBUSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDM0UsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUNuQyx1RUFBdUUsRUFDdkUsZ0NBQWdDLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLGFBQWEsRUFBRSwyRUFBMkUsQ0FDMUosQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLGVBQWUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0RyxDQUFDOztBQXpCSCxrREEwQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjcnlwdG8gZnJvbSAnY3J5cHRvJztcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQge1xuICBhd3NfZXZlbnRzIGFzIGV2ZW50cyxcbiAgYXdzX2V2ZW50c190YXJnZXRzIGFzIGV2ZW50c190YXJnZXRzLFxufSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IENyb25FeHByZXNzaW9uUGFyc2VyIH0gZnJvbSAnY3Jvbi1wYXJzZXInO1xuaW1wb3J0IHsgSUNvbXBvc2l0ZVByb3ZpZGVyLCBJUnVubmVyUHJvdmlkZXIgfSBmcm9tICcuL3Byb3ZpZGVycyc7XG5pbXBvcnQgeyBHaXRIdWJSdW5uZXJzIH0gZnJvbSAnLi9ydW5uZXInO1xuaW1wb3J0IHsgV2FybVJ1bm5lckZpbGxQYXlsb2FkIH0gZnJvbSAnLi93YXJtLXJ1bm5lci1tYW5hZ2VyLmxhbWJkYSc7XG5cbi8qKlxuICogQ29tbW9uIHByb3BlcnRpZXMgZm9yIHdhcm0gcnVubmVyIGNvbnN0cnVjdHMuXG4gKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2FybVJ1bm5lckJhc2VQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgR2l0SHViUnVubmVycyBjb25zdHJ1Y3QgdGhhdCBvd25zIHRoZSBzaGFyZWQgd2FybSBydW5uZXIgaW5mcmFzdHJ1Y3R1cmUuXG4gICAqL1xuICByZWFkb25seSBydW5uZXJzOiBHaXRIdWJSdW5uZXJzO1xuXG4gIC8qKlxuICAgKiBQcm92aWRlciB0byB1c2UuIFdhcm0gcnVubmVycyBieXBhc3MgdGhlIHByb3ZpZGVyIHNlbGVjdG9yIOKAlCB0aGV5IGFsd2F5cyB1c2VcbiAgICogdGhpcyBwcm92aWRlciwgcmVnYXJkbGVzcyBvZiBqb2IgY2hhcmFjdGVyaXN0aWNzLiBMYWJlbHMgY2Fubm90IGJlIG1vZGlmaWVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmlkZXI6IElSdW5uZXJQcm92aWRlciB8IElDb21wb3NpdGVQcm92aWRlcjtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIHdhcm0gcnVubmVycyB0byBtYWludGFpbi5cbiAgICovXG4gIHJlYWRvbmx5IGNvdW50OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEdpdEh1YiBvd25lciB3aGVyZSBydW5uZXJzIHdpbGwgYmUgcmVnaXN0ZXJlZCAob3JnIG9yIHVzZXIgbG9naW4pLlxuICAgKi9cbiAgcmVhZG9ubHkgb3duZXI6IHN0cmluZztcblxuICAvKipcbiAgICogUmVnaXN0cmF0aW9uIGxldmVsIOKAlCBtdXN0IG1hdGNoIGhvdyB5b3VyIHJ1bm5lcnMgYXJlIHNldCB1cCBpbiBHaXRIdWIuIENob29zZVxuICAgKiAnb3JnJyBmb3Igb3JnLXdpZGUgcnVubmVycywgJ3JlcG8nIGZvciByZXBvLWxldmVsLiBTZWUgdGhlIHNldHVwIHdpemFyZCBmb3IgY2hvb3NpbmcgcmVwbyB2cyBvcmcuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL0Nsb3VkU25vcmtlbC9jZGstZ2l0aHViLXJ1bm5lcnMvYmxvYi9tYWluL1NFVFVQX0dJVEhVQi5tZFxuICAgKlxuICAgKiBAZGVmYXVsdCAncmVwbydcbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lzdHJhdGlvbkxldmVsPzogJ29yZycgfCAncmVwbyc7XG5cbiAgLyoqXG4gICAqIFJlcG9zaXRvcnkgbmFtZSAod2l0aG91dCBvd25lcikgd2hlcmUgcnVubmVycyB3aWxsIGJlIHJlZ2lzdGVyZWQuIFJlcXVpcmVkIHdoZW4gYHJlZ2lzdHJhdGlvbkxldmVsYCBpcyAncmVwbycuXG4gICAqL1xuICByZWFkb25seSByZXBvPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGFsd2F5cyBvbiB3YXJtIHJ1bm5lcnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWx3YXlzT25XYXJtUnVubmVyUHJvcHMgZXh0ZW5kcyBXYXJtUnVubmVyQmFzZVByb3BzIHsgfVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIHNjaGVkdWxlZCB3YXJtIHJ1bm5lcnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NoZWR1bGVkV2FybVJ1bm5lclByb3BzIGV4dGVuZHMgV2FybVJ1bm5lckJhc2VQcm9wcyB7XG4gIC8qKlxuICAgKiBXaGVuIHRvIHN0YXJ0IGZpbGxpbmcgdGhlIHBvb2wgKGUuZy4gc3RhcnQgb2YgYnVzaW5lc3MgaG91cnMpLlxuICAgKi9cbiAgcmVhZG9ubHkgc2NoZWR1bGU6IGV2ZW50cy5TY2hlZHVsZTtcblxuICAvKipcbiAgICogSG93IGxvbmcgdGhlIHdhcm0gcnVubmVycyBzaG91bGQgYmUgbWFpbnRhaW5lZCBmcm9tIHRoZSBmaWxsIHRpbWUgKHNjaGVkdWxlKS4gRGVmaW5lcyB0aGUgZW5kIG9mIHRoZVxuICAgKiB3aW5kb3cgKHNjaGVkdWxlIHRpbWUgKyBkdXJhdGlvbikuXG4gICAqL1xuICByZWFkb25seSBkdXJhdGlvbjogY2RrLkR1cmF0aW9uO1xufVxuXG5mdW5jdGlvbiBidWlsZFdhcm1SdW5uZXIoc2NvcGU6IENvbnN0cnVjdCwgcHJvcHM6IFdhcm1SdW5uZXJCYXNlUHJvcHMsIHNjaGVkdWxlOiBldmVudHMuU2NoZWR1bGUsIGR1cmF0aW9uOiBudW1iZXIsIGNyZWF0ZUluaXRpYWxGaWxsOiBib29sZWFuKSB7XG4gIGNvbnN0IHJlZ2lzdHJhdGlvbkxldmVsID0gcHJvcHMucmVnaXN0cmF0aW9uTGV2ZWwgPz8gJ3JlcG8nO1xuICBpZiAocmVnaXN0cmF0aW9uTGV2ZWwgPT09ICdvcmcnICYmIHByb3BzLnJlcG8pIHtcbiAgICBjZGsuQW5ub3RhdGlvbnMub2Yoc2NvcGUpLmFkZEVycm9yKCdEbyBub3Qgc3BlY2lmeSByZXBvIHdoZW4gcmVnaXN0cmF0aW9uTGV2ZWwgaXMgXFwnb3JnXFwnJyk7XG4gIH1cbiAgaWYgKHJlZ2lzdHJhdGlvbkxldmVsID09PSAncmVwbycgJiYgIXByb3BzLnJlcG8pIHtcbiAgICBjZGsuQW5ub3RhdGlvbnMub2Yoc2NvcGUpLmFkZEVycm9yKCdyZXBvIGlzIHJlcXVpcmVkIHdoZW4gcmVnaXN0cmF0aW9uTGV2ZWwgaXMgXFwncmVwb1xcJycpO1xuICB9XG5cbiAgY29uc3QgcHJvdmlkZXJQYXRoID0gcHJvcHMucHJvdmlkZXIubm9kZS5wYXRoO1xuICBpZiAoIXByb3BzLnJ1bm5lcnMucHJvdmlkZXJzLnNvbWUocCA9PiBwLm5vZGUucGF0aCA9PT0gcHJvdmlkZXJQYXRoKSkge1xuICAgIGNkay5Bbm5vdGF0aW9ucy5vZihzY29wZSkuYWRkRXJyb3IoYFByb3ZpZGVyICR7cHJvdmlkZXJQYXRofSBpcyBub3QgaW4gdGhlIHByb3ZpZGVycyBsaXN0IG9mIHRoZSBHaXRIdWJSdW5uZXJzIGNvbnN0cnVjdGApO1xuICB9XG5cbiAgY29uc3QgbGFiZWxzID0gcHJvcHMucHJvdmlkZXIubGFiZWxzO1xuXG4gIGNvbnN0IHJlcG8gPSByZWdpc3RyYXRpb25MZXZlbCA9PT0gJ3JlcG8nID8gKHByb3BzLnJlcG8gPz8gJycpIDogJyc7XG4gIGNvbnN0IGNvbmZpZ0hhc2ggPSBjcnlwdG8uY3JlYXRlSGFzaCgnc2hhMjU2JylcbiAgICAudXBkYXRlKEpTT04uc3RyaW5naWZ5KHsgcHJvdmlkZXJQYXRoLCBwcm92aWRlckxhYmVsczogbGFiZWxzLCBjb3VudDogcHJvcHMuY291bnQsIGR1cmF0aW9uLCBvd25lcjogcHJvcHMub3duZXIsIHJlcG8gfSkpXG4gICAgLmRpZ2VzdCgnaGV4JylcbiAgICAuc2xpY2UoMCwgMTYpO1xuXG4gIGNvbnN0IGZpbGxQYXlsb2FkOiBXYXJtUnVubmVyRmlsbFBheWxvYWQgPSB7XG4gICAgYWN0aW9uOiAnZmlsbCcgYXMgY29uc3QsXG4gICAgcHJvdmlkZXJQYXRoLFxuICAgIHByb3ZpZGVyTGFiZWxzOiBsYWJlbHMsXG4gICAgY291bnQ6IHByb3BzLmNvdW50LFxuICAgIGR1cmF0aW9uLFxuICAgIG93bmVyOiBwcm9wcy5vd25lcixcbiAgICByZXBvLFxuICAgIGNvbmZpZ0hhc2gsXG4gIH07XG5cbiAgY29uc3QgeyBsYW1iZGE6IG1hbmFnZXJGbiwgcXVldWUgfSA9IHByb3BzLnJ1bm5lcnMuX2Vuc3VyZVdhcm1SdW5uZXJJbmZyYSgpO1xuICBwcm9wcy5ydW5uZXJzLl9yZWdpc3Rlcldhcm1Db25maWdIYXNoKGNvbmZpZ0hhc2gpO1xuXG4gIC8vIFNjaGVkdWxlIHRvIGZpbGwgdGhlIHdhcm0gcG9vbCAodXN1YWxseSBkYWlseSkuIFNlbmRzIHRvIFNRUyBzbyB3ZSBnZXQgc3RhYmxlIG1lc3NhZ2VJZCBmb3IgaWRlbXBvdGVudCBmaWxscy5cbiAgbmV3IGV2ZW50cy5SdWxlKHNjb3BlLCAnU2NoZWR1bGUnLCB7XG4gICAgc2NoZWR1bGUsXG4gICAgdGFyZ2V0czogW25ldyBldmVudHNfdGFyZ2V0cy5TcXNRdWV1ZShxdWV1ZSwge1xuICAgICAgbWVzc2FnZTogZXZlbnRzLlJ1bGVUYXJnZXRJbnB1dC5mcm9tT2JqZWN0KGZpbGxQYXlsb2FkKSxcbiAgICB9KV0sXG4gIH0pO1xuXG4gIC8vIEZpbGwgdGhlIHdhcm0gcG9vbCBpbW1lZGlhdGVseSBvbiBkZXBsb3kgKEFsd2F5c09uV2FybVJ1bm5lciBvbmx5KS5cbiAgLy8gU2NoZWR1bGVkV2FybVJ1bm5lciBkb2VzIG5vdCBnZXQgZGVwbG95bWVudC1maWxsLiBGaXJzdCBmaWxsIGhhcHBlbnMgYXQgdGhlIG5leHQgc2NoZWR1bGUgZmlyZS5cbiAgaWYgKGNyZWF0ZUluaXRpYWxGaWxsKSB7XG4gICAgbmV3IGNkay5DdXN0b21SZXNvdXJjZShzY29wZSwgJ0luaXRpYWwgRmlsbCcsIHtcbiAgICAgIHNlcnZpY2VUb2tlbjogbWFuYWdlckZuLmZ1bmN0aW9uQXJuLFxuICAgICAgcmVzb3VyY2VUeXBlOiAnQ3VzdG9tOjpXYXJtUnVubmVyRmlsbCcsXG4gICAgICBwcm9wZXJ0aWVzOiBmaWxsUGF5bG9hZCxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBmaWxsUGF5bG9hZDtcbn1cblxuLyoqXG4gKiBXYXJtIHJ1bm5lcnMgdGhhdCBydW4gMjQvNy4gRmlsbHMgYXQgbWlkbmlnaHQgVVRDIGFuZCBlYWNoIHJ1bm5lciBzdGF5cyBhbGl2ZSBmb3IgMjQgaG91cnMuXG4gKlxuICogUnVubmVycyB3aWxsIGJlIHByb3Zpc2lvbmVkIHVzaW5nIHRoZSBzcGVjaWZpZWQgcHJvdmlkZXIgYW5kIHJlZ2lzdGVyZWQgaW4gdGhlIHNwZWNpZmllZCByZXBvc2l0b3J5IG9yIG9yZ2FuaXphdGlvbi5cbiAqXG4gKiBSZWdpc3RyYXRpb24gbGV2ZWwgbXVzdCBtYXRjaCB0aGUgb25lIHNlbGVjdGVkIGR1cmluZyBzZXR1cC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9DbG91ZFNub3JrZWwvY2RrLWdpdGh1Yi1ydW5uZXJzL2Jsb2IvbWFpbi9TRVRVUF9HSVRIVUIubWRcbiAqXG4gKiAjIyBMaW1pdGF0aW9uc1xuICpcbiAqIC0gSm9icyB3aWxsIHN0aWxsIHRyaWdnZXIgcHJvdmlzaW9uaW5nIG9mIG9uLWRlbWFuZCBydW5uZXJzLCBldmVuIGlmIGEgd2FybSBydW5uZXIgZW5kcyB1cCBiZWluZyB1c2VkLlxuICogLSBZb3UgbWF5IGJyaWVmbHkgc2VlIG1vcmUgdGhhbiBgY291bnRgIHJ1bm5lcnMgd2hlbiBjaGFuZ2luZyBjb25maWcgb3IgYXQgcm90YXRpb24uXG4gKiAtIFRvIHJlbW92ZTogc2V0IGBjb3VudGAgdG8gMCwgZGVwbG95LCB3YWl0IGZvciB3YXJtIHJ1bm5lcnMgdG8gc3RvcCwgdGhlbiByZW1vdmUgYW5kIGRlcGxveSBhZ2Fpbi5cbiAqICAgSWYgeW91IGRvbid0IGZvbGxvdyB0aGlzIHByb2NlZHVyZSwgd2FybSBydW5uZXJzIG1heSBsaW5nZXIgdW50aWwgdGhleSBleHBpcmUuXG4gKiAtIFByb3ZpZGVyIGZhaWx1cmVzIG9yIHRpbWVvdXRzIChsaWtlIExhbWJkYSBwcm92aWRlciB0aW1pbmcgb3V0IGFmdGVyIDE1IG1pbnV0ZXMpIHdpbGwgcmVzdWx0IGluIGFcbiAqICAgZ2FwIGluIGNvdmVyYWdlIHVudGlsIHRoZSByZXRyeSBzdWNjZWVkcy4gQ3VycmVudCByZXRyeSBtZWNoYW5pc20gaGFzIGJ1aWx0LWluIGJhY2stb2ZmIHJhdGUgYW5kXG4gKiAgIGNhbiBiZSB0d2Vha2VkIHVzaW5nIGByZXRyeU9wdGlvbnNgLiBUaGlzIHdpbGwgYmUgaW1wcm92ZWQgaW4gdGhlIGZ1dHVyZS5cbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBuZXcgQWx3YXlzT25XYXJtUnVubmVyKHN0YWNrLCAnQWx3YXlzT25MaW51eCcsIHtcbiAqICAgcnVubmVycyxcbiAqICAgcHJvdmlkZXI6IG15UHJvdmlkZXIsXG4gKiAgIGNvdW50OiAzLFxuICogICBvd25lcjogJ215LW9yZycsXG4gKiAgIHJlcG86ICdteS1yZXBvJyxcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBBbHdheXNPbldhcm1SdW5uZXIgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogVGhlIGZpbGwgcGF5bG9hZCBmb3IgdGhpcyB3YXJtIHJ1bm5lciBjb25maWd1cmF0aW9uLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBfZmlsbFBheWxvYWQ6IFdhcm1SdW5uZXJGaWxsUGF5bG9hZDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQWx3YXlzT25XYXJtUnVubmVyUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIHRoaXMuX2ZpbGxQYXlsb2FkID0gYnVpbGRXYXJtUnVubmVyKHRoaXMsIHByb3BzLCBldmVudHMuU2NoZWR1bGUuY3Jvbih7IGhvdXI6ICcwJywgbWludXRlOiAnMCcgfSksIGNkay5EdXJhdGlvbi5kYXlzKDEpLnRvU2Vjb25kcygpLCB0cnVlKTtcbiAgfVxufVxuXG4vKipcbiAqIENvbnZlcnQgQVdTIEV2ZW50QnJpZGdlIGNyb24gZm9ybWF0IHRvIGNyb24tcGFyc2VyIGZvcm1hdC5cbiAqIEFXUzogY3JvbihtaW4gaG91ciBkb20gbW9udGggZG93IHllYXIpLCBjcm9uLXBhcnNlcjogc2VjIG1pbiBob3VyIGRvbSBtb250aCBkb3dcbiAqL1xuZnVuY3Rpb24gYXdzQ3JvblRvUGFyc2VyRm9ybWF0KGV4cHJlc3Npb25TdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IG1hdGNoID0gZXhwcmVzc2lvblN0cmluZy5tYXRjaCgvXmNyb25cXCgoLispXFwpJC8pO1xuICBpZiAoIW1hdGNoKSByZXR1cm4gZXhwcmVzc2lvblN0cmluZztcbiAgY29uc3QgWywgaW5uZXJdID0gbWF0Y2g7XG4gIGNvbnN0IHBhcnRzID0gaW5uZXIudHJpbSgpLnNwbGl0KC9cXHMrLyk7XG4gIGlmIChwYXJ0cy5sZW5ndGggIT09IDYpIHJldHVybiBleHByZXNzaW9uU3RyaW5nO1xuICBjb25zdCBbbWludXRlLCBob3VyLCBkb20sIG1vbnRoLCBkb3ddID0gcGFydHM7XG4gIHJldHVybiBgMCAke21pbnV0ZX0gJHtob3VyfSAke2RvbX0gJHttb250aH0gJHtkb3d9YDtcbn1cblxuLyoqXG4gKiBQYXJzZSBBV1MgRXZlbnRCcmlkZ2UgcmF0ZSBleHByZXNzaW9uIGFuZCByZXR1cm4gaW50ZXJ2YWwgaW4gc2Vjb25kcy5cbiAqIEZvcm1hdDogcmF0ZSh2YWx1ZSB1bml0KSBlLmcuIHJhdGUoMiBob3VycyksIHJhdGUoNSBtaW51dGVzKSwgcmF0ZSgxIGRheSlcbiAqL1xuZnVuY3Rpb24gcGFyc2VSYXRlSW50ZXJ2YWwoZXhwcmVzc2lvblN0cmluZzogc3RyaW5nKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgbWF0Y2ggPSBleHByZXNzaW9uU3RyaW5nLm1hdGNoKC9ecmF0ZVxcKChcXGQrKVxccysobWludXRlfG1pbnV0ZXN8aG91cnxob3Vyc3xkYXl8ZGF5cylcXCkkL2kpO1xuICBpZiAoIW1hdGNoKSByZXR1cm4gdW5kZWZpbmVkO1xuICBjb25zdCB2YWx1ZSA9IHBhcnNlSW50KG1hdGNoWzFdLCAxMCk7XG4gIGNvbnN0IHVuaXQgPSBtYXRjaFsyXS50b0xvd2VyQ2FzZSgpO1xuICBpZiAodmFsdWUgPD0gMCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgY29uc3Qgc2Vjb25kc1BlclVuaXQ6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7XG4gICAgbWludXRlOiA2MCxcbiAgICBtaW51dGVzOiA2MCxcbiAgICBob3VyOiAzNjAwLFxuICAgIGhvdXJzOiAzNjAwLFxuICAgIGRheTogODY0MDAsXG4gICAgZGF5czogODY0MDAsXG4gIH07XG4gIHJldHVybiB2YWx1ZSAqIHNlY29uZHNQZXJVbml0W3VuaXRdO1xufVxuXG4vKipcbiAqIEdldCB0aGUgaW50ZXJ2YWwgYmV0d2VlbiBzY2hlZHVsZSBvY2N1cnJlbmNlcyBpbiBzZWNvbmRzLlxuICogU3VwcG9ydHMgYm90aCBjcm9uIGFuZCByYXRlIGV4cHJlc3Npb25zLlxuICovXG5mdW5jdGlvbiBnZXRTY2hlZHVsZUludGVydmFsU2Vjb25kcyhleHByZXNzaW9uU3RyaW5nOiBzdHJpbmcpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBjb25zdCByYXRlSW50ZXJ2YWwgPSBwYXJzZVJhdGVJbnRlcnZhbChleHByZXNzaW9uU3RyaW5nKTtcbiAgaWYgKHJhdGVJbnRlcnZhbCAhPT0gdW5kZWZpbmVkKSByZXR1cm4gcmF0ZUludGVydmFsO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgY3JvbkV4cHJlc3Npb24gPSBDcm9uRXhwcmVzc2lvblBhcnNlci5wYXJzZShhd3NDcm9uVG9QYXJzZXJGb3JtYXQoZXhwcmVzc2lvblN0cmluZykpO1xuICAgIGNvbnN0IG5leHQgPSBjcm9uRXhwcmVzc2lvbi50YWtlKDIpO1xuICAgIHJldHVybiAobmV4dFsxXS5nZXRUaW1lKCkgLSBuZXh0WzBdLmdldFRpbWUoKSkgLyAxMDAwO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogV2FybSBydW5uZXJzIGFjdGl2ZSBkdXJpbmcgYSB0aW1lIHdpbmRvdyBzcGVjaWZpZWQgYnkgc3RhcnQgdGltZSAoYHNjaGVkdWxlYCkgYW5kIGR1cmF0aW9uIChgZHVyYXRpb25gKS5cbiAqXG4gKiBSdW5uZXJzIHdpbGwgYmUgcHJvdmlzaW9uZWQgdXNpbmcgdGhlIHNwZWNpZmllZCBwcm92aWRlciBhbmQgcmVnaXN0ZXJlZCBpbiB0aGUgc3BlY2lmaWVkIHJlcG9zaXRvcnkgb3Igb3JnYW5pemF0aW9uLlxuICpcbiAqIFJlZ2lzdHJhdGlvbiBsZXZlbCBtdXN0IG1hdGNoIHRoZSBvbmUgc2VsZWN0ZWQgZHVyaW5nIHNldHVwLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL0Nsb3VkU25vcmtlbC9jZGstZ2l0aHViLXJ1bm5lcnMvYmxvYi9tYWluL1NFVFVQX0dJVEhVQi5tZFxuICpcbiAqICMjIExpbWl0YXRpb25zXG4gKlxuICogLSAqKk5vIGRlcGxveW1lbnQtZmlsbCoqOiBVbmxpa2UgYEFsd2F5c09uV2FybVJ1bm5lcmAsIHNjaGVkdWxlZCB3YXJtIHJ1bm5lcnMgZG8gbm90IGdldCBhbiBpbml0aWFsXG4gKiAgIGZpbGwgb24gZGVwbG95LiBUaGUgZmlyc3QgZmlsbCBoYXBwZW5zIGF0IHRoZSBuZXh0IHNjaGVkdWxlIG9jY3VycmVuY2UuIElmIHlvdSBkZXBsb3kgYXQgMXBtIGZvclxuICogICBhIDJwbSBzY2hlZHVsZSwgcnVubmVycyB3aWxsIG5vdCBhcHBlYXIgdW50aWwgMnBtLlxuICogLSBKb2JzIHdpbGwgc3RpbGwgdHJpZ2dlciBwcm92aXNpb25pbmcgb2Ygb24tZGVtYW5kIHJ1bm5lcnMsIGV2ZW4gaWYgYSB3YXJtIHJ1bm5lciBlbmRzIHVwIGJlaW5nIHVzZWQuXG4gKiAtIFlvdSBtYXkgYnJpZWZseSBzZWUgbW9yZSB0aGFuIGBjb3VudGAgcnVubmVycyB3aGVuIGNoYW5naW5nIGNvbmZpZyBvciBhdCByb3RhdGlvbi5cbiAqIC0gVG8gcmVtb3ZlOiBzZXQgYGNvdW50YCB0byAwLCBkZXBsb3ksIHdhaXQgZm9yIHdhcm0gcnVubmVycyB0byBzdG9wLCB0aGVuIHJlbW92ZSBhbmQgZGVwbG95IGFnYWluLlxuICogICBJZiB5b3UgZG9uJ3QgZm9sbG93IHRoaXMgcHJvY2VkdXJlLCB3YXJtIHJ1bm5lcnMgbWF5IGxpbmdlciB1bnRpbCB0aGV5IGV4cGlyZS5cbiAqIC0gUHJvdmlkZXIgZmFpbHVyZXMgb3IgdGltZW91dHMgKGxpa2UgTGFtYmRhIHByb3ZpZGVyIHRpbWluZyBvdXQgYWZ0ZXIgMTUgbWludXRlcykgd2lsbCByZXN1bHQgaW4gYVxuICogICBnYXAgaW4gY292ZXJhZ2UgdW50aWwgdGhlIHJldHJ5IHN1Y2NlZWRzLiBDdXJyZW50IHJldHJ5IG1lY2hhbmlzbSBoYXMgYnVpbHQtaW4gYmFjay1vZmYgcmF0ZSBhbmRcbiAqICAgY2FuIGJlIHR3ZWFrZWQgdXNpbmcgYHJldHJ5T3B0aW9uc2AuIFRoaXMgd2lsbCBiZSBpbXByb3ZlZCBpbiB0aGUgZnV0dXJlLlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIENyb246IGZpbGwgYXQgMXBtIG9uIHdlZWtkYXlzXG4gKiBuZXcgU2NoZWR1bGVkV2FybVJ1bm5lcihzdGFjaywgJ0J1c2luZXNzIEhvdXJzJywge1xuICogICBydW5uZXJzLFxuICogICBwcm92aWRlcjogbXlQcm92aWRlcixcbiAqICAgY291bnQ6IDMsXG4gKiAgIG93bmVyOiAnbXktb3JnJyxcbiAqICAgcmVwbzogJ215LXJlcG8nLFxuICogICBzY2hlZHVsZTogZXZlbnRzLlNjaGVkdWxlLmNyb24oeyBob3VyOiAnMTMnLCBtaW51dGU6ICcwJywgd2Vla0RheTogJ01PTi1GUkknIH0pLFxuICogICBkdXJhdGlvbjogY2RrLkR1cmF0aW9uLmhvdXJzKDIpLFxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBSYXRlOiBmaWxsIGV2ZXJ5IDEyIGhvdXJzXG4gKiBuZXcgU2NoZWR1bGVkV2FybVJ1bm5lcihzdGFjaywgJ0V2ZXJ5IDEyIEhvdXJzJywge1xuICogICBydW5uZXJzLFxuICogICBwcm92aWRlcjogbXlQcm92aWRlcixcbiAqICAgY291bnQ6IDIsXG4gKiAgIG93bmVyOiAnbXktb3JnJyxcbiAqICAgcmVwbzogJ215LXJlcG8nLFxuICogICBzY2hlZHVsZTogZXZlbnRzLlNjaGVkdWxlLnJhdGUoY2RrLkR1cmF0aW9uLmhvdXJzKDUpKSxcbiAqICAgZHVyYXRpb246IGNkay5EdXJhdGlvbi5ob3VycygxMiksXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgU2NoZWR1bGVkV2FybVJ1bm5lciBleHRlbmRzIENvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBUaGUgZmlsbCBwYXlsb2FkIGZvciB0aGlzIHdhcm0gcnVubmVyIGNvbmZpZ3VyYXRpb24uXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IF9maWxsUGF5bG9hZDogV2FybVJ1bm5lckZpbGxQYXlsb2FkO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTY2hlZHVsZWRXYXJtUnVubmVyUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgLy8gbWFrZSBzdXJlIHRoZSBkdXJhdGlvbiBpcyBub3QgbG9uZ2VyIHRoYW4gdGhlIGludGVydmFsIGJldHdlZW4gbmV4dCB0d28gc2NoZWR1bGUgb2NjdXJyZW5jZXNcbiAgICBjb25zdCBpbnRlcnZhbCA9IGdldFNjaGVkdWxlSW50ZXJ2YWxTZWNvbmRzKHByb3BzLnNjaGVkdWxlLmV4cHJlc3Npb25TdHJpbmcpO1xuICAgIGlmIChpbnRlcnZhbCAhPT0gdW5kZWZpbmVkICYmIGludGVydmFsIDwgcHJvcHMuZHVyYXRpb24udG9TZWNvbmRzKCkpIHtcbiAgICAgIGNkay5Bbm5vdGF0aW9ucy5vZih0aGlzKS5hZGRFcnJvcihgU2NoZWR1bGVkV2FybVJ1bm5lciBkdXJhdGlvbiAke3Byb3BzLmR1cmF0aW9uLnRvSHVtYW5TdHJpbmcoKX0gaXMgbG9uZ2VyIHRoYW4gdGhlIGludGVydmFsICR7Y2RrLkR1cmF0aW9uLnNlY29uZHMoaW50ZXJ2YWwpLnRvSHVtYW5TdHJpbmcoKX0gYmV0d2VlbiBuZXh0IHR3byBzY2hlZHVsZSBvY2N1cnJlbmNlcy4gVGhpcyB3aWxsIHJlc3VsdCBpbiBvdmVybGFwcGluZyB3YXJtIHJ1bm5lcnMgYXQgdGhlIHN0YXJ0IG9mIHRoZSBuZXh0IHNjaGVkdWxlIG9jY3VycmVuY2UuYCk7XG4gICAgfVxuXG4gICAgLy8gd2FybiBmb3Igc2hvcnQgaW50ZXJ2YWxcbiAgICBpZiAoaW50ZXJ2YWwgIT09IHVuZGVmaW5lZCAmJiBpbnRlcnZhbCA8IGNkay5EdXJhdGlvbi5ob3VycygxKS50b1NlY29uZHMoKSkge1xuICAgICAgY2RrLkFubm90YXRpb25zLm9mKHRoaXMpLmFkZFdhcm5pbmdWMihcbiAgICAgICAgJ0BjbG91ZHNub3JrZWwvY2RrLWdpdGh1Yi1ydW5uZXJzOlNjaGVkdWxlZFdhcm1SdW5uZXIuaW50ZXJ2YWxUb29TaG9ydCcsXG4gICAgICAgIGBTY2hlZHVsZWRXYXJtUnVubmVyIGludGVydmFsICR7Y2RrLkR1cmF0aW9uLnNlY29uZHMoaW50ZXJ2YWwpLnRvSHVtYW5TdHJpbmcoKX0gaXMgbGVzcyB0aGFuIDEgaG91ciwgd2hpY2ggbWF5IHJlc3VsdCBpbiBtb3JlIHdhcm0gcnVubmVycyB0aGFuIGV4cGVjdGVkYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5fZmlsbFBheWxvYWQgPSBidWlsZFdhcm1SdW5uZXIodGhpcywgcHJvcHMsIHByb3BzLnNjaGVkdWxlLCBwcm9wcy5kdXJhdGlvbi50b1NlY29uZHMoKSwgZmFsc2UpO1xuICB9XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -72,17 +72,17 @@
|
|
|
72
72
|
"organization": false
|
|
73
73
|
},
|
|
74
74
|
"devDependencies": {
|
|
75
|
-
"@aws-sdk/client-cloudformation": "^3.
|
|
76
|
-
"@aws-sdk/client-codebuild": "^3.
|
|
77
|
-
"@aws-sdk/client-ec2": "^3.
|
|
78
|
-
"@aws-sdk/client-ecr": "^3.
|
|
79
|
-
"@aws-sdk/client-imagebuilder": "^3.
|
|
80
|
-
"@aws-sdk/client-lambda": "^3.
|
|
81
|
-
"@aws-sdk/client-secrets-manager": "^3.
|
|
82
|
-
"@aws-sdk/client-sfn": "^3.
|
|
83
|
-
"@aws-sdk/client-sns": "^3.
|
|
84
|
-
"@aws-sdk/client-sqs": "^3.
|
|
85
|
-
"@aws-sdk/client-ssm": "^3.
|
|
75
|
+
"@aws-sdk/client-cloudformation": "^3.1014.0",
|
|
76
|
+
"@aws-sdk/client-codebuild": "^3.1014.0",
|
|
77
|
+
"@aws-sdk/client-ec2": "^3.1014.0",
|
|
78
|
+
"@aws-sdk/client-ecr": "^3.1014.0",
|
|
79
|
+
"@aws-sdk/client-imagebuilder": "^3.1014.0",
|
|
80
|
+
"@aws-sdk/client-lambda": "^3.1014.0",
|
|
81
|
+
"@aws-sdk/client-secrets-manager": "^3.1014.0",
|
|
82
|
+
"@aws-sdk/client-sfn": "^3.1014.0",
|
|
83
|
+
"@aws-sdk/client-sns": "^3.1014.0",
|
|
84
|
+
"@aws-sdk/client-sqs": "^3.1014.0",
|
|
85
|
+
"@aws-sdk/client-ssm": "^3.1014.0",
|
|
86
86
|
"@octokit/auth-app": "^8.2.0",
|
|
87
87
|
"@octokit/core": "^7.0.6",
|
|
88
88
|
"@octokit/request-error": "^7.1.0",
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
"@tsconfig/svelte": "^5",
|
|
93
93
|
"@types/aws-lambda": "^8.10.161",
|
|
94
94
|
"@types/jest": "^29",
|
|
95
|
-
"@types/node": "^25.
|
|
95
|
+
"@types/node": "^25.5.0",
|
|
96
96
|
"@typescript-eslint/eslint-plugin": "^8",
|
|
97
97
|
"@typescript-eslint/parser": "^8",
|
|
98
98
|
"aws-cdk": "^2",
|
|
@@ -100,7 +100,7 @@
|
|
|
100
100
|
"bootstrap": "^5.2.0",
|
|
101
101
|
"commit-and-tag-version": "^12",
|
|
102
102
|
"constructs": "10.5.1",
|
|
103
|
-
"esbuild": "^0.27.
|
|
103
|
+
"esbuild": "^0.27.4",
|
|
104
104
|
"eslint": "^9",
|
|
105
105
|
"eslint-import-resolver-typescript": "^2.7.1",
|
|
106
106
|
"eslint-plugin-import": "^2.32.0",
|
|
@@ -112,7 +112,7 @@
|
|
|
112
112
|
"jsii-docgen": "^10.5.0",
|
|
113
113
|
"jsii-pacmak": "^1.127.0",
|
|
114
114
|
"jsii-rosetta": "~5.9.0",
|
|
115
|
-
"projen": "^0.99.
|
|
115
|
+
"projen": "^0.99.21",
|
|
116
116
|
"sass": "^1.54.0",
|
|
117
117
|
"svelte": "^5",
|
|
118
118
|
"svelte-check": "^4",
|
|
@@ -150,7 +150,7 @@
|
|
|
150
150
|
"publishConfig": {
|
|
151
151
|
"access": "public"
|
|
152
152
|
},
|
|
153
|
-
"version": "0.15.
|
|
153
|
+
"version": "0.15.1",
|
|
154
154
|
"jest": {
|
|
155
155
|
"coverageProvider": "v8",
|
|
156
156
|
"testMatch": [
|