@horietakehiro/aws-cdk-utul 0.35.6 → 0.40.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/lib/assertions.d.ts +219 -12
- package/lib/assertions.js +228 -66
- package/lib/typed-resource.d.ts +1 -1
- package/lib/typed-resource.js +1 -1
- package/lib/types/cfn-resource-types/aws-accessanalyzer-analyzer.d.ts +33 -1
- package/lib/types/cfn-resource-types/aws-accessanalyzer-analyzer.js +1 -1
- package/lib/types/cfn-resource-types/aws-connect-evaluationform.d.ts +113 -103
- package/lib/types/cfn-resource-types/aws-connect-evaluationform.js +1 -1
- package/lib/types/cfn-resource-types/aws-customerprofiles-segmentdefinition.d.ts +20 -0
- package/lib/types/cfn-resource-types/aws-customerprofiles-segmentdefinition.js +1 -1
- package/lib/types/cfn-resource-types/aws-datazone-projectprofile.d.ts +28 -0
- package/lib/types/cfn-resource-types/aws-datazone-projectprofile.js +1 -1
- package/package.json +1 -1
package/lib/assertions.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Template,
|
|
1
|
+
import { Template, Matcher } from "aws-cdk-lib/assertions";
|
|
2
2
|
import { Condition, InputResource, Mapping, OutputResource, InputParamter, OutputParameter, ReturnValue, InputOutput, OutputOutput, InputResourceWithoutType, IAMPolicyDocument, AlsoMatcher, TypedMatcher } from "./typed-resource";
|
|
3
3
|
/**
|
|
4
4
|
* almost same class as `Template` class at "aws-cdk-lib/assertions", but you can use this with proper type definitions
|
|
@@ -141,7 +141,7 @@ export interface JoinProps {
|
|
|
141
141
|
/**
|
|
142
142
|
* provides some syntax sugars for `Match` class at `aws-cdk-lib/assertions`
|
|
143
143
|
*/
|
|
144
|
-
export declare class ExtraMatch
|
|
144
|
+
export declare class ExtraMatch {
|
|
145
145
|
/**
|
|
146
146
|
* same function as `Match.objectEquals({ Ref: logicalId })`
|
|
147
147
|
* @param logicalId
|
|
@@ -161,16 +161,6 @@ export declare class ExtraMatch extends Match {
|
|
|
161
161
|
* @returns
|
|
162
162
|
*/
|
|
163
163
|
static getAttArn(logicalId: string): Matcher;
|
|
164
|
-
static arrayWith<T extends any[]>(pattern: AlsoMatcher<T>): TypedMatcher<T>;
|
|
165
|
-
static arrayEquals<T extends any[]>(pattern: AlsoMatcher<T>): TypedMatcher<T>;
|
|
166
|
-
static objectLike<T extends {
|
|
167
|
-
[key: string]: any;
|
|
168
|
-
}>(pattern: AlsoMatcher<T>): TypedMatcher<T>;
|
|
169
|
-
static objectEquals<T extends {
|
|
170
|
-
[key: string]: any;
|
|
171
|
-
}>(pattern: AlsoMatcher<T>): TypedMatcher<T>;
|
|
172
|
-
static not<T>(pattern: AlsoMatcher<T>): TypedMatcher<T>;
|
|
173
|
-
static exact<T>(pattern: AlsoMatcher<T>): TypedMatcher<T>;
|
|
174
164
|
/**
|
|
175
165
|
* same function as below:
|
|
176
166
|
*
|
|
@@ -183,5 +173,222 @@ export declare class ExtraMatch extends Match {
|
|
|
183
173
|
* @returns
|
|
184
174
|
*/
|
|
185
175
|
static joinLike(props: JoinProps): Matcher;
|
|
176
|
+
/**
|
|
177
|
+
You can define Matcher for IAM Policy Document with type hints.
|
|
178
|
+
```js
|
|
179
|
+
template.hasResource(
|
|
180
|
+
AWS_IAM_ROLE({
|
|
181
|
+
Properties: {
|
|
182
|
+
AssumeRolePolicyDocument: ExtraMatch.iamPolicyLike({
|
|
183
|
+
Statement: [
|
|
184
|
+
{
|
|
185
|
+
Principal: { Service: "ec2.amazonaws.com" },
|
|
186
|
+
},
|
|
187
|
+
],
|
|
188
|
+
}),
|
|
189
|
+
},
|
|
190
|
+
})
|
|
191
|
+
);
|
|
192
|
+
```
|
|
193
|
+
* @param doc
|
|
194
|
+
* @returns
|
|
195
|
+
*/
|
|
186
196
|
static iamPolicyLike(doc: AlsoMatcher<IAMPolicyDocument>): Matcher;
|
|
197
|
+
/**
|
|
198
|
+
Same method as `Match.arrayWith` but provides type hints and validate type match
|
|
199
|
+
```js
|
|
200
|
+
// this is a right code
|
|
201
|
+
template.hasResource(
|
|
202
|
+
AWS_EC2_EIP({
|
|
203
|
+
Properties: {
|
|
204
|
+
Tags: ExtraMatch.arrayWith<Tag[]>([
|
|
205
|
+
{
|
|
206
|
+
Key: "key2",
|
|
207
|
+
Value: "val2",
|
|
208
|
+
},
|
|
209
|
+
]),
|
|
210
|
+
},
|
|
211
|
+
})
|
|
212
|
+
);
|
|
213
|
+
// this is a wrong code(type mismatch will be detected and ts-error will be raised)
|
|
214
|
+
template.hasResource(
|
|
215
|
+
AWS_EC2_EIP({
|
|
216
|
+
Properties: {
|
|
217
|
+
Tags: ExtraMatch.arrayWith<string[]>([
|
|
218
|
+
"hoge", "fuga"
|
|
219
|
+
]),
|
|
220
|
+
},
|
|
221
|
+
})
|
|
222
|
+
);
|
|
223
|
+
```
|
|
224
|
+
* @param pattern
|
|
225
|
+
* @returns
|
|
226
|
+
*/
|
|
227
|
+
static arrayWith<T extends any[]>(pattern: AlsoMatcher<T>): TypedMatcher<T>;
|
|
228
|
+
/**
|
|
229
|
+
* Same method as `Match.arrayEquals` but provides type hints and validate type match
|
|
230
|
+
```js
|
|
231
|
+
// this is a right code
|
|
232
|
+
template.hasResource(
|
|
233
|
+
AWS_EC2_EIP({
|
|
234
|
+
Properties: {
|
|
235
|
+
Tags: ExtraMatch.arrayEquals<Tag[]>([
|
|
236
|
+
{
|
|
237
|
+
Key: "key1",
|
|
238
|
+
Value: "val1",
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
Key: "key2",
|
|
242
|
+
Value: "val2",
|
|
243
|
+
},
|
|
244
|
+
]),
|
|
245
|
+
},
|
|
246
|
+
})
|
|
247
|
+
);
|
|
248
|
+
// this is a wrong code(type mismatch will be detected and ts-error will be raised)
|
|
249
|
+
template.hasResource(
|
|
250
|
+
AWS_EC2_EIP({
|
|
251
|
+
Properties: {
|
|
252
|
+
Tags: ExtraMatch.arrayEquals<Tag[]>([
|
|
253
|
+
{
|
|
254
|
+
Key: "key1",
|
|
255
|
+
Value: "val1",
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
Key: 100,
|
|
259
|
+
Value: 200,
|
|
260
|
+
},
|
|
261
|
+
]),
|
|
262
|
+
},
|
|
263
|
+
})
|
|
264
|
+
);
|
|
265
|
+
```
|
|
266
|
+
* @param pattern
|
|
267
|
+
* @returns
|
|
268
|
+
*/
|
|
269
|
+
static arrayEquals<T extends any[]>(pattern: AlsoMatcher<T>): TypedMatcher<T>;
|
|
270
|
+
/**
|
|
271
|
+
* Same method as `Match.objectLike` but provides type hints and validate type match
|
|
272
|
+
```js
|
|
273
|
+
// this is a right code
|
|
274
|
+
template.hasResource(
|
|
275
|
+
AWS_EC2_INSTANCE({
|
|
276
|
+
Properties: {
|
|
277
|
+
BlockDeviceMappings: [
|
|
278
|
+
{
|
|
279
|
+
DeviceName: "test",
|
|
280
|
+
Ebs: ExtraMatch.objectLike<Ebs>({
|
|
281
|
+
VolumeSize: 10,
|
|
282
|
+
}),
|
|
283
|
+
},
|
|
284
|
+
],
|
|
285
|
+
},
|
|
286
|
+
})
|
|
287
|
+
);
|
|
288
|
+
// this is a wrong code(type mismatch will be detected and ts-error will be raised)
|
|
289
|
+
template.hasResource(
|
|
290
|
+
AWS_EC2_INSTANCE({
|
|
291
|
+
Properties: {
|
|
292
|
+
BlockDeviceMappings: [
|
|
293
|
+
{
|
|
294
|
+
DeviceName: "test",
|
|
295
|
+
Ebs: ExtraMatch.objectLike<Ebs>({
|
|
296
|
+
VolumeSize: "10",
|
|
297
|
+
}),
|
|
298
|
+
},
|
|
299
|
+
],
|
|
300
|
+
},
|
|
301
|
+
})
|
|
302
|
+
);
|
|
303
|
+
* @param pattern
|
|
304
|
+
* @returns
|
|
305
|
+
*/
|
|
306
|
+
static objectLike<T extends {
|
|
307
|
+
[key: string]: any;
|
|
308
|
+
}>(pattern: AlsoMatcher<T>): TypedMatcher<T>;
|
|
309
|
+
/**
|
|
310
|
+
* Same method as `Match.objectEquals` but provides type hints and validate type match
|
|
311
|
+
```js
|
|
312
|
+
// this is a right code
|
|
313
|
+
template.hasResource(
|
|
314
|
+
AWS_EC2_EIP({
|
|
315
|
+
Properties: {
|
|
316
|
+
// You can nest TypedMatcher(use TypedMatcher inside TypedMatcher)
|
|
317
|
+
Tags: ExtraMatch.arrayWith<Tag[]>([
|
|
318
|
+
ExtraMatch.objectEquals<Tag>({
|
|
319
|
+
Key: "key1",
|
|
320
|
+
Value: "val1",
|
|
321
|
+
}),
|
|
322
|
+
]),
|
|
323
|
+
},
|
|
324
|
+
})
|
|
325
|
+
);
|
|
326
|
+
// this is a wrong code(type mismatch will be detected and ts-error will be raised)
|
|
327
|
+
template.hasResource(
|
|
328
|
+
AWS_EC2_EIP({
|
|
329
|
+
Properties: {
|
|
330
|
+
Tags: ExtraMatch.arrayWith<Tag[]>([
|
|
331
|
+
ExtraMatch.objectEquals<Tag>({
|
|
332
|
+
Key: "key1",
|
|
333
|
+
Value: 100,
|
|
334
|
+
}),
|
|
335
|
+
]),
|
|
336
|
+
},
|
|
337
|
+
})
|
|
338
|
+
);
|
|
339
|
+
* @param pattern
|
|
340
|
+
* @returns
|
|
341
|
+
*/
|
|
342
|
+
static objectEquals<T extends {
|
|
343
|
+
[key: string]: any;
|
|
344
|
+
}>(pattern: AlsoMatcher<T>): TypedMatcher<T>;
|
|
345
|
+
/**
|
|
346
|
+
* Same method as `Match.not` but provides type hints and validate type match
|
|
347
|
+
```js
|
|
348
|
+
// this is a right code
|
|
349
|
+
template.hasResource(
|
|
350
|
+
AWS_EC2_INSTANCE({
|
|
351
|
+
Properties: {
|
|
352
|
+
ImageId: ExtraMatch.not("ami-12345"),
|
|
353
|
+
},
|
|
354
|
+
})
|
|
355
|
+
);
|
|
356
|
+
// this is a wrong code(type mismatch will be detected and ts-error will be raised)
|
|
357
|
+
template.hasResource(
|
|
358
|
+
AWS_EC2_INSTANCE({
|
|
359
|
+
Properties: {
|
|
360
|
+
ImageId: ExtraMatch.not(100),
|
|
361
|
+
},
|
|
362
|
+
})
|
|
363
|
+
);
|
|
364
|
+
```
|
|
365
|
+
* Same method as `Match.not` but provides type hints and validate type match
|
|
366
|
+
* @param pattern
|
|
367
|
+
* @returns
|
|
368
|
+
*/
|
|
369
|
+
static not<T>(pattern: AlsoMatcher<T extends never ? never : T>): TypedMatcher<T>;
|
|
370
|
+
/**
|
|
371
|
+
* Same method as `Match.exact` but provides type hints and validate type match
|
|
372
|
+
```js
|
|
373
|
+
// this is a right code
|
|
374
|
+
template.hasResource(
|
|
375
|
+
AWS_EC2_INSTANCE({
|
|
376
|
+
Properties: {
|
|
377
|
+
InstanceType: ExtraMatch.exact("t2.micro"),
|
|
378
|
+
},
|
|
379
|
+
})
|
|
380
|
+
);
|
|
381
|
+
// this is a wrong code(type mismatch will be detected and ts-error will be raised)
|
|
382
|
+
template.hasResource(
|
|
383
|
+
AWS_EC2_INSTANCE({
|
|
384
|
+
Properties: {
|
|
385
|
+
InstanceType: ExtraMatch.exact(false),
|
|
386
|
+
},
|
|
387
|
+
})
|
|
388
|
+
);
|
|
389
|
+
```
|
|
390
|
+
* @param pattern
|
|
391
|
+
* @returns
|
|
392
|
+
*/
|
|
393
|
+
static exact<T>(pattern: AlsoMatcher<T extends never ? never : T>): TypedMatcher<T>;
|
|
187
394
|
}
|
package/lib/assertions.js
CHANGED
|
@@ -199,7 +199,7 @@ exports.TypedTemplate = TypedTemplate;
|
|
|
199
199
|
/**
|
|
200
200
|
* provides some syntax sugars for `Match` class at `aws-cdk-lib/assertions`
|
|
201
201
|
*/
|
|
202
|
-
class ExtraMatch
|
|
202
|
+
class ExtraMatch {
|
|
203
203
|
/**
|
|
204
204
|
* same function as `Match.objectEquals({ Ref: logicalId })`
|
|
205
205
|
* @param logicalId
|
|
@@ -225,24 +225,6 @@ class ExtraMatch extends assertions_1.Match {
|
|
|
225
225
|
static getAttArn(logicalId) {
|
|
226
226
|
return this.getAtt(logicalId, "Arn");
|
|
227
227
|
}
|
|
228
|
-
static arrayWith(pattern) {
|
|
229
|
-
return assertions_1.Match.arrayWith(pattern);
|
|
230
|
-
}
|
|
231
|
-
static arrayEquals(pattern) {
|
|
232
|
-
return assertions_1.Match.arrayEquals(pattern);
|
|
233
|
-
}
|
|
234
|
-
static objectLike(pattern) {
|
|
235
|
-
return assertions_1.Match.objectLike(pattern);
|
|
236
|
-
}
|
|
237
|
-
static objectEquals(pattern) {
|
|
238
|
-
return assertions_1.Match.objectEquals(pattern);
|
|
239
|
-
}
|
|
240
|
-
static not(pattern) {
|
|
241
|
-
return assertions_1.Match.not(pattern);
|
|
242
|
-
}
|
|
243
|
-
static exact(pattern) {
|
|
244
|
-
return assertions_1.Match.exact(pattern);
|
|
245
|
-
}
|
|
246
228
|
/**
|
|
247
229
|
* same function as below:
|
|
248
230
|
*
|
|
@@ -259,55 +241,235 @@ class ExtraMatch extends assertions_1.Match {
|
|
|
259
241
|
"Fn::Join": [props.delimiter ?? "", assertions_1.Match.arrayWith(props.arrayWith)],
|
|
260
242
|
});
|
|
261
243
|
}
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
// });
|
|
283
|
-
// }
|
|
284
|
-
// /**
|
|
285
|
-
// * returns Match instance that matches global resource ARN like : `arn:aws:iam::123456789012:role/role-name`
|
|
286
|
-
// * @param elems
|
|
287
|
-
// * @returns
|
|
288
|
-
// */
|
|
289
|
-
// static globalArn(
|
|
290
|
-
// elems: Omit<ArnElements, "region">,
|
|
291
|
-
// delimiter: string = ""
|
|
292
|
-
// ): Matcher {
|
|
293
|
-
// return Match.objectEquals({
|
|
294
|
-
// "Fn::Join": Match.arrayEquals([
|
|
295
|
-
// delimiter,
|
|
296
|
-
// Match.arrayWith([
|
|
297
|
-
// "arn:",
|
|
298
|
-
// elems.partition ?? { Ref: "AWS::Partition" },
|
|
299
|
-
// Match.stringLikeRegexp(`:${elems.service ?? "*"}::`),
|
|
300
|
-
// elems.account ?? { Ref: "AWS::AccountId" },
|
|
301
|
-
// ...(elems.rest instanceof Matcher
|
|
302
|
-
// ? [elems.rest]
|
|
303
|
-
// : (elems.rest ?? [])),
|
|
304
|
-
// ]),
|
|
305
|
-
// ]),
|
|
306
|
-
// });
|
|
307
|
-
// }
|
|
244
|
+
/**
|
|
245
|
+
You can define Matcher for IAM Policy Document with type hints.
|
|
246
|
+
```js
|
|
247
|
+
template.hasResource(
|
|
248
|
+
AWS_IAM_ROLE({
|
|
249
|
+
Properties: {
|
|
250
|
+
AssumeRolePolicyDocument: ExtraMatch.iamPolicyLike({
|
|
251
|
+
Statement: [
|
|
252
|
+
{
|
|
253
|
+
Principal: { Service: "ec2.amazonaws.com" },
|
|
254
|
+
},
|
|
255
|
+
],
|
|
256
|
+
}),
|
|
257
|
+
},
|
|
258
|
+
})
|
|
259
|
+
);
|
|
260
|
+
```
|
|
261
|
+
* @param doc
|
|
262
|
+
* @returns
|
|
263
|
+
*/
|
|
308
264
|
static iamPolicyLike(doc) {
|
|
309
265
|
return assertions_1.Match.objectLike(doc);
|
|
310
266
|
}
|
|
267
|
+
/**
|
|
268
|
+
Same method as `Match.arrayWith` but provides type hints and validate type match
|
|
269
|
+
```js
|
|
270
|
+
// this is a right code
|
|
271
|
+
template.hasResource(
|
|
272
|
+
AWS_EC2_EIP({
|
|
273
|
+
Properties: {
|
|
274
|
+
Tags: ExtraMatch.arrayWith<Tag[]>([
|
|
275
|
+
{
|
|
276
|
+
Key: "key2",
|
|
277
|
+
Value: "val2",
|
|
278
|
+
},
|
|
279
|
+
]),
|
|
280
|
+
},
|
|
281
|
+
})
|
|
282
|
+
);
|
|
283
|
+
// this is a wrong code(type mismatch will be detected and ts-error will be raised)
|
|
284
|
+
template.hasResource(
|
|
285
|
+
AWS_EC2_EIP({
|
|
286
|
+
Properties: {
|
|
287
|
+
Tags: ExtraMatch.arrayWith<string[]>([
|
|
288
|
+
"hoge", "fuga"
|
|
289
|
+
]),
|
|
290
|
+
},
|
|
291
|
+
})
|
|
292
|
+
);
|
|
293
|
+
```
|
|
294
|
+
* @param pattern
|
|
295
|
+
* @returns
|
|
296
|
+
*/
|
|
297
|
+
static arrayWith(pattern) {
|
|
298
|
+
return assertions_1.Match.arrayWith(pattern);
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Same method as `Match.arrayEquals` but provides type hints and validate type match
|
|
302
|
+
```js
|
|
303
|
+
// this is a right code
|
|
304
|
+
template.hasResource(
|
|
305
|
+
AWS_EC2_EIP({
|
|
306
|
+
Properties: {
|
|
307
|
+
Tags: ExtraMatch.arrayEquals<Tag[]>([
|
|
308
|
+
{
|
|
309
|
+
Key: "key1",
|
|
310
|
+
Value: "val1",
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
Key: "key2",
|
|
314
|
+
Value: "val2",
|
|
315
|
+
},
|
|
316
|
+
]),
|
|
317
|
+
},
|
|
318
|
+
})
|
|
319
|
+
);
|
|
320
|
+
// this is a wrong code(type mismatch will be detected and ts-error will be raised)
|
|
321
|
+
template.hasResource(
|
|
322
|
+
AWS_EC2_EIP({
|
|
323
|
+
Properties: {
|
|
324
|
+
Tags: ExtraMatch.arrayEquals<Tag[]>([
|
|
325
|
+
{
|
|
326
|
+
Key: "key1",
|
|
327
|
+
Value: "val1",
|
|
328
|
+
},
|
|
329
|
+
{
|
|
330
|
+
Key: 100,
|
|
331
|
+
Value: 200,
|
|
332
|
+
},
|
|
333
|
+
]),
|
|
334
|
+
},
|
|
335
|
+
})
|
|
336
|
+
);
|
|
337
|
+
```
|
|
338
|
+
* @param pattern
|
|
339
|
+
* @returns
|
|
340
|
+
*/
|
|
341
|
+
static arrayEquals(pattern) {
|
|
342
|
+
return assertions_1.Match.arrayEquals(pattern);
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Same method as `Match.objectLike` but provides type hints and validate type match
|
|
346
|
+
```js
|
|
347
|
+
// this is a right code
|
|
348
|
+
template.hasResource(
|
|
349
|
+
AWS_EC2_INSTANCE({
|
|
350
|
+
Properties: {
|
|
351
|
+
BlockDeviceMappings: [
|
|
352
|
+
{
|
|
353
|
+
DeviceName: "test",
|
|
354
|
+
Ebs: ExtraMatch.objectLike<Ebs>({
|
|
355
|
+
VolumeSize: 10,
|
|
356
|
+
}),
|
|
357
|
+
},
|
|
358
|
+
],
|
|
359
|
+
},
|
|
360
|
+
})
|
|
361
|
+
);
|
|
362
|
+
// this is a wrong code(type mismatch will be detected and ts-error will be raised)
|
|
363
|
+
template.hasResource(
|
|
364
|
+
AWS_EC2_INSTANCE({
|
|
365
|
+
Properties: {
|
|
366
|
+
BlockDeviceMappings: [
|
|
367
|
+
{
|
|
368
|
+
DeviceName: "test",
|
|
369
|
+
Ebs: ExtraMatch.objectLike<Ebs>({
|
|
370
|
+
VolumeSize: "10",
|
|
371
|
+
}),
|
|
372
|
+
},
|
|
373
|
+
],
|
|
374
|
+
},
|
|
375
|
+
})
|
|
376
|
+
);
|
|
377
|
+
* @param pattern
|
|
378
|
+
* @returns
|
|
379
|
+
*/
|
|
380
|
+
static objectLike(pattern) {
|
|
381
|
+
return assertions_1.Match.objectLike(pattern);
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Same method as `Match.objectEquals` but provides type hints and validate type match
|
|
385
|
+
```js
|
|
386
|
+
// this is a right code
|
|
387
|
+
template.hasResource(
|
|
388
|
+
AWS_EC2_EIP({
|
|
389
|
+
Properties: {
|
|
390
|
+
// You can nest TypedMatcher(use TypedMatcher inside TypedMatcher)
|
|
391
|
+
Tags: ExtraMatch.arrayWith<Tag[]>([
|
|
392
|
+
ExtraMatch.objectEquals<Tag>({
|
|
393
|
+
Key: "key1",
|
|
394
|
+
Value: "val1",
|
|
395
|
+
}),
|
|
396
|
+
]),
|
|
397
|
+
},
|
|
398
|
+
})
|
|
399
|
+
);
|
|
400
|
+
// this is a wrong code(type mismatch will be detected and ts-error will be raised)
|
|
401
|
+
template.hasResource(
|
|
402
|
+
AWS_EC2_EIP({
|
|
403
|
+
Properties: {
|
|
404
|
+
Tags: ExtraMatch.arrayWith<Tag[]>([
|
|
405
|
+
ExtraMatch.objectEquals<Tag>({
|
|
406
|
+
Key: "key1",
|
|
407
|
+
Value: 100,
|
|
408
|
+
}),
|
|
409
|
+
]),
|
|
410
|
+
},
|
|
411
|
+
})
|
|
412
|
+
);
|
|
413
|
+
* @param pattern
|
|
414
|
+
* @returns
|
|
415
|
+
*/
|
|
416
|
+
static objectEquals(pattern) {
|
|
417
|
+
return assertions_1.Match.objectEquals(pattern);
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* Same method as `Match.not` but provides type hints and validate type match
|
|
421
|
+
```js
|
|
422
|
+
// this is a right code
|
|
423
|
+
template.hasResource(
|
|
424
|
+
AWS_EC2_INSTANCE({
|
|
425
|
+
Properties: {
|
|
426
|
+
ImageId: ExtraMatch.not("ami-12345"),
|
|
427
|
+
},
|
|
428
|
+
})
|
|
429
|
+
);
|
|
430
|
+
// this is a wrong code(type mismatch will be detected and ts-error will be raised)
|
|
431
|
+
template.hasResource(
|
|
432
|
+
AWS_EC2_INSTANCE({
|
|
433
|
+
Properties: {
|
|
434
|
+
ImageId: ExtraMatch.not(100),
|
|
435
|
+
},
|
|
436
|
+
})
|
|
437
|
+
);
|
|
438
|
+
```
|
|
439
|
+
* Same method as `Match.not` but provides type hints and validate type match
|
|
440
|
+
* @param pattern
|
|
441
|
+
* @returns
|
|
442
|
+
*/
|
|
443
|
+
// TODO: why this expression `T extends never ? never : T` is required but this is required
|
|
444
|
+
static not(pattern) {
|
|
445
|
+
return assertions_1.Match.not(pattern);
|
|
446
|
+
}
|
|
447
|
+
/**
|
|
448
|
+
* Same method as `Match.exact` but provides type hints and validate type match
|
|
449
|
+
```js
|
|
450
|
+
// this is a right code
|
|
451
|
+
template.hasResource(
|
|
452
|
+
AWS_EC2_INSTANCE({
|
|
453
|
+
Properties: {
|
|
454
|
+
InstanceType: ExtraMatch.exact("t2.micro"),
|
|
455
|
+
},
|
|
456
|
+
})
|
|
457
|
+
);
|
|
458
|
+
// this is a wrong code(type mismatch will be detected and ts-error will be raised)
|
|
459
|
+
template.hasResource(
|
|
460
|
+
AWS_EC2_INSTANCE({
|
|
461
|
+
Properties: {
|
|
462
|
+
InstanceType: ExtraMatch.exact(false),
|
|
463
|
+
},
|
|
464
|
+
})
|
|
465
|
+
);
|
|
466
|
+
```
|
|
467
|
+
* @param pattern
|
|
468
|
+
* @returns
|
|
469
|
+
*/
|
|
470
|
+
static exact(pattern) {
|
|
471
|
+
return assertions_1.Match.exact(pattern);
|
|
472
|
+
}
|
|
311
473
|
}
|
|
312
474
|
exports.ExtraMatch = ExtraMatch;
|
|
313
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFzc2VydGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsdURBQWtFO0FBaUJsRTs7R0FFRztBQUNILE1BQWEsYUFBYTtJQUV4QixZQUFvQixRQUFrQjtRQUNwQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0lBRU8sR0FBRyxDQUFJLElBQVksRUFBRSxHQUFRLEVBQUUsS0FBVTtRQUMvQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkIsTUFBTSxLQUFLLENBQUMsR0FBRyxJQUFJLGdDQUFnQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1RSxDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sS0FBSyxDQUNULFlBQVksSUFBSSw0QkFBNEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUNsRSxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FDZCxHQUFHLElBQTJDO1FBRTlDLE9BQU8sSUFBSSxhQUFhLENBQUMscUJBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFFBQVEsQ0FDYixHQUFHLElBQTBDO1FBRTdDLE9BQU8sSUFBSSxhQUFhLENBQUMscUJBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FDZixHQUFHLElBQTRDO1FBRS9DLE9BQU8s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K0dBQStHO0lBQy9HLGtCQUFrQjtJQUNsQixjQUFjO0lBQ2QsTUFBTTtJQUNOLG9CQUFvQjtJQUNwQix3Q0FBd0M7SUFDeEMsMkJBQTJCO0lBQzNCLGVBQWU7SUFDZixnQ0FBZ0M7SUFDaEMsc0NBQXNDO0lBQ3RDLG1CQUFtQjtJQUNuQiwwQkFBMEI7SUFDMUIsa0JBQWtCO0lBQ2xCLHdEQUF3RDtJQUN4RCxnRUFBZ0U7SUFDaEUsc0RBQXNEO0lBQ3RELDRDQUE0QztJQUM1QywyQkFBMkI7SUFDM0IsbUNBQW1DO0lBQ25DLFlBQVk7SUFDWixVQUFVO0lBQ1YsUUFBUTtJQUNSLElBQUk7SUFFSixNQUFNLENBQUMsYUFBYSxDQUFDLEdBQW1DO1FBQ3RELE9BQU8sa0JBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0IsQ0FBQztDQUNGO0FBeEhELGdDQXdIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBsYXRlLCBNYXRjaCwgTWF0Y2hlciB9IGZyb20gXCJhd3MtY2RrLWxpYi9hc3NlcnRpb25zXCI7XG5pbXBvcnQge1xuICBDb25kaXRpb24sXG4gIElucHV0UmVzb3VyY2UsXG4gIE1hcHBpbmcsXG4gIE91dHB1dFJlc291cmNlLFxuICBJbnB1dFBhcmFtdGVyLFxuICBPdXRwdXRQYXJhbWV0ZXIsXG4gIFJldHVyblZhbHVlLFxuICBJbnB1dE91dHB1dCxcbiAgT3V0cHV0T3V0cHV0LFxuICBJbnB1dFJlc291cmNlV2l0aG91dFR5cGUsXG4gIElBTVBvbGljeURvY3VtZW50LFxuICBBbHNvTWF0Y2hlcixcbiAgVHlwZWRNYXRjaGVyLFxufSBmcm9tIFwiLi90eXBlZC1yZXNvdXJjZVwiO1xuXG4vKipcbiAqIGFsbW9zdCBzYW1lIGNsYXNzIGFzIGBUZW1wbGF0ZWAgY2xhc3MgYXQgXCJhd3MtY2RrLWxpYi9hc3NlcnRpb25zXCIsIGJ1dCB5b3UgY2FuIHVzZSB0aGlzIHdpdGggcHJvcGVyIHR5cGUgZGVmaW5pdGlvbnNcbiAqL1xuZXhwb3J0IGNsYXNzIFR5cGVkVGVtcGxhdGUge1xuICB0ZW1wbGF0ZTogVGVtcGxhdGU7XG4gIHByaXZhdGUgY29uc3RydWN0b3IodGVtcGxhdGU6IFRlbXBsYXRlKSB7XG4gICAgdGhpcy50ZW1wbGF0ZSA9IHRlbXBsYXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQ8VD4odHlwZTogc3RyaW5nLCBkZWY6IGFueSwgYXJyYXk6IFRbXSk6IFQge1xuICAgIGlmIChhcnJheS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IEVycm9yKGAke3R5cGV9IG5vdCBmb3VuZCB3aXRoIGRlZmluaXRpb24gOiAke0pTT04uc3RyaW5naWZ5KGRlZil9YCk7XG4gICAgfVxuICAgIGlmIChhcnJheS5sZW5ndGggPiAxKSB7XG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgYG11bHRpcGxlICR7dHlwZX0gZm91bmQgd2l0aCBkZWZpbml0aW9uIDogJHtKU09OLnN0cmluZ2lmeShkZWYpfWBcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBhcnJheVswXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5mcm9tU3RhY2tgIGJ1dCByZXR1cm5zIGBUeXBlZFRlbXBsYXRlYFxuICAgKiBAcGFyYW0gYXJnc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgc3RhdGljIGZyb21TdGFjayhcbiAgICAuLi5hcmdzOiBQYXJhbWV0ZXJzPHR5cGVvZiBUZW1wbGF0ZS5mcm9tU3RhY2s+XG4gICk6IFR5cGVkVGVtcGxhdGUge1xuICAgIHJldHVybiBuZXcgVHlwZWRUZW1wbGF0ZShUZW1wbGF0ZS5mcm9tU3RhY2soLi4uYXJncykpO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5mcm9tSlNPTmAgYnV0IHJldHVybnMgYFR5cGVkVGVtcGxhdGVgXG4gICAqIEBwYXJhbSBhcmdzXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBzdGF0aWMgZnJvbUpTT04oXG4gICAgLi4uYXJnczogUGFyYW1ldGVyczx0eXBlb2YgVGVtcGxhdGUuZnJvbUpTT04+XG4gICk6IFR5cGVkVGVtcGxhdGUge1xuICAgIHJldHVybiBuZXcgVHlwZWRUZW1wbGF0ZShUZW1wbGF0ZS5mcm9tSlNPTiguLi5hcmdzKSk7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLmZyb21TdHJpbmdgIGJ1dCByZXR1cm5zIGBUeXBlZFRlbXBsYXRlYFxuICAgKiBAcGFyYW0gYXJnc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgc3RhdGljIGZyb21TdHJpbmcoXG4gICAgLi4uYXJnczogUGFyYW1ldGVyczx0eXBlb2YgVGVtcGxhdGUuZnJvbVN0cmluZz5cbiAgKTogVHlwZWRUZW1wbGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBUeXBlZFRlbXBsYXRlKFRlbXBsYXRlLmZyb21TdHJpbmcoLi4uYXJncykpO1xuICB9XG5cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLnJlc291cmNlQ291bnRJc2BcbiAgICpcbiAgICogdXNlIHRoaXMgbWV0aG9kIGxpa2UgYmVsb3c6XG4gICAqXG4gICAqIGBgYGpzXG4gICAqIHRlbXBsYXRlLnJlc291cmNlQ291bnRJcyhBV1NfRUMyX1NVQk5FVCwgMylcbiAgICogYGBgXG4gICAqIEBwYXJhbSB0eXBlXG4gICAqIEBwYXJhbSBjb3VudFxuICAgKi9cbiAgcmVzb3VyY2VDb3VudElzPFQ+KFxuICAgIHR5cGU6IChyZXNvdXJjZT86IElucHV0UmVzb3VyY2VXaXRob3V0VHlwZTxUPikgPT4gSW5wdXRSZXNvdXJjZTxUPixcbiAgICBjb3VudDogbnVtYmVyXG4gICk6IHZvaWQge1xuICAgIHRoaXMudGVtcGxhdGUucmVzb3VyY2VDb3VudElzKHR5cGUoKS5UeXBlLCBjb3VudCk7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLnJlc291cmNlUHJvcGVydGllc0NvdW50SXNgXG4gICAqIEBwYXJhbSByXG4gICAqIEBwYXJhbSBjb3VudFxuICAgKi9cbiAgcmVzb3VyY2VQcm9wZXJ0aWVzQ291bnRJczxUPihyOiBJbnB1dFJlc291cmNlPFQ+LCBjb3VudDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy50ZW1wbGF0ZS5yZXNvdXJjZVByb3BlcnRpZXNDb3VudElzKHIuVHlwZSwgci5Qcm9wZXJ0aWVzLCBjb3VudCk7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllc2BcbiAgICogQHBhcmFtIHJcbiAgICovXG4gIGhhc1Jlc291cmNlUHJvcGVydGllczxUPihyOiBJbnB1dFJlc291cmNlPFQ+KTogdm9pZCB7XG4gICAgdGhpcy50ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoci5UeXBlLCByLlByb3BlcnRpZXMpO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5oYXNSZXNvdXJjZWBcbiAgICogQHBhcmFtIHJcbiAgICovXG4gIGhhc1Jlc291cmNlPFQ+KHI6IElucHV0UmVzb3VyY2U8VD4pOiB2b2lkIHtcbiAgICB0aGlzLnRlbXBsYXRlLmhhc1Jlc291cmNlKHIuVHlwZSwgcik7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLmZpbmRSZXNvdXJjZXNgXG4gICAqIEBwYXJhbSByXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBmaW5kUmVzb3VyY2VzPFQ+KHI6IElucHV0UmVzb3VyY2U8VD4pOiBSZXR1cm5WYWx1ZTxPdXRwdXRSZXNvdXJjZTxUPj5bXSB7XG4gICAgY29uc3QgcmVzb3VyY2VzID0gdGhpcy50ZW1wbGF0ZS5maW5kUmVzb3VyY2VzKHIuVHlwZSwgcikgYXMge1xuICAgICAgW2lkIGluIHN0cmluZ106IE91dHB1dFJlc291cmNlPFQ+O1xuICAgIH07XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc291cmNlcykubWFwKChbaWQsIHJlc291cmNlXSkgPT4ge1xuICAgICAgcmV0dXJuIHsgaWQ6IGlkLCBkZWY6IHJlc291cmNlIH07XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLmFsbFJlc291cmNlc2BcbiAgICogQHBhcmFtIHJcbiAgICovXG4gIGFsbFJlc291cmNlczxUPihyOiBJbnB1dFJlc291cmNlPFQ+KTogdm9pZCB7XG4gICAgdGhpcy50ZW1wbGF0ZS5hbGxSZXNvdXJjZXMoci5UeXBlLCByKTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuYWxsUmVzb3VyY2VQcm9wZXJ0aWVzYFxuICAgKiBAcGFyYW0gclxuICAgKi9cbiAgYWxsUmVzb3VyY2VzUHJvcGVydGllczxUPihyOiBJbnB1dFJlc291cmNlPFQ+KTogdm9pZCB7XG4gICAgdGhpcy50ZW1wbGF0ZS5hbGxSZXNvdXJjZXNQcm9wZXJ0aWVzKHIuVHlwZSwgci5Qcm9wZXJ0aWVzKTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuaGFzUGFyYW1ldGVyYFxuICAgKiBAcGFyYW0gbG9naWNhbElkXG4gICAqIEBwYXJhbSBwcm9wc1xuICAgKi9cbiAgaGFzUGFyYW1ldGVyKGxvZ2ljYWxJZDogc3RyaW5nLCBwcm9wczogSW5wdXRQYXJhbXRlcik6IHZvaWQge1xuICAgIHRoaXMudGVtcGxhdGUuaGFzUGFyYW1ldGVyKGxvZ2ljYWxJZCwgcHJvcHMpO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5maW5kUGFyYW1ldGVyc2BcbiAgICogQHBhcmFtIGxvZ2ljYWxJZFxuICAgKiBAcGFyYW0gcHJvcHNcbiAgICogQHJldHVybnNcbiAgICovXG4gIGZpbmRQYXJhbWV0ZXJzKFxuICAgIGxvZ2ljYWxJZDogc3RyaW5nLFxuICAgIHByb3BzPzogSW5wdXRQYXJhbXRlclxuICApOiBSZXR1cm5WYWx1ZTxPdXRwdXRQYXJhbWV0ZXI+W10ge1xuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSB0aGlzLnRlbXBsYXRlLmZpbmRQYXJhbWV0ZXJzKGxvZ2ljYWxJZCwgcHJvcHMpO1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhwYXJhbWV0ZXJzKS5tYXAoKFtpZCwgcGFyYW1ldGVyXSkgPT4ge1xuICAgICAgcmV0dXJuIHsgaWQ6IGlkLCBkZWY6IHBhcmFtZXRlciBhcyBPdXRwdXRQYXJhbWV0ZXIgfTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5oYXNPdXRwdXRgXG4gICAqIEBwYXJhbSBsb2dpY2FsSWRcbiAgICogQHBhcmFtIHByb3BzXG4gICAqL1xuICBoYXNPdXRwdXQobG9naWNhbElkOiBzdHJpbmcsIHByb3BzOiBJbnB1dE91dHB1dCk6IHZvaWQge1xuICAgIHRoaXMudGVtcGxhdGUuaGFzT3V0cHV0KGxvZ2ljYWxJZCwgcHJvcHMpO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5maW5kT3V0cHV0c2BcbiAgICogQHBhcmFtIGxvZ2ljYWxJZFxuICAgKiBAcGFyYW0gcHJvcHNcbiAgICogQHJldHVybnNcbiAgICovXG4gIGZpbmRPdXRwdXRzKFxuICAgIGxvZ2ljYWxJZDogc3RyaW5nLFxuICAgIHByb3BzPzogSW5wdXRPdXRwdXRcbiAgKTogUmV0dXJuVmFsdWU8T3V0cHV0T3V0cHV0PltdIHtcbiAgICBjb25zdCBvdXRwdXRzID0gdGhpcy50ZW1wbGF0ZS5maW5kT3V0cHV0cyhsb2dpY2FsSWQsIHByb3BzKTtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMob3V0cHV0cykubWFwKChbaWQsIG91dHB1dF0pID0+IHtcbiAgICAgIHJldHVybiB7IGlkOiBpZCwgZGVmOiBvdXRwdXQgYXMgT3V0cHV0T3V0cHV0IH07XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLmhhc01hcHBpbmdgXG4gICAqIEBwYXJhbSBsb2dpY2FsSWRcbiAgICogQHBhcmFtIHByb3BzXG4gICAqL1xuICBoYXNNYXBwaW5nKGxvZ2ljYWxJZDogc3RyaW5nLCBwcm9wczogYW55KTogdm9pZCB7XG4gICAgdGhpcy50ZW1wbGF0ZS5oYXNNYXBwaW5nKGxvZ2ljYWxJZCwgcHJvcHMpO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5maW5kTWFwcGluZ3NgXG4gICAqIEBwYXJhbSBsb2dpY2FsSWRcbiAgICogQHBhcmFtIHByb3BzXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBmaW5kTWFwcGluZ3MobG9naWNhbElkOiBzdHJpbmcsIHByb3BzPzogYW55KTogUmV0dXJuVmFsdWU8TWFwcGluZz5bXSB7XG4gICAgY29uc3QgbWFwcGluZ3MgPSB0aGlzLnRlbXBsYXRlLmZpbmRNYXBwaW5ncyhsb2dpY2FsSWQsIHByb3BzKTtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMobWFwcGluZ3MpLm1hcCgoW2lkLCBtYXBwaW5nXSkgPT4ge1xuICAgICAgcmV0dXJuIHsgaWQ6IGlkLCBkZWY6IG1hcHBpbmcgfTtcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuaGFzQ29uZGl0aW9uYFxuICAgKiBAcGFyYW0gbG9naWNhbElkXG4gICAqIEBwYXJhbSBwcm9wc1xuICAgKi9cbiAgaGFzQ29uZGl0aW9uKGxvZ2ljYWxJZDogc3RyaW5nLCBwcm9wczogYW55KTogdm9pZCB7XG4gICAgdGhpcy50ZW1wbGF0ZS5oYXNDb25kaXRpb24obG9naWNhbElkLCBwcm9wcyk7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLmZpbmRDb25kaXRpb25zYFxuICAgKiBAcGFyYW0gbG9naWNhbElkXG4gICAqIEBwYXJhbSBwcm9wc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZmluZENvbmRpdGlvbnMobG9naWNhbElkOiBzdHJpbmcsIHByb3BzPzogYW55KTogUmV0dXJuVmFsdWU8Q29uZGl0aW9uPltdIHtcbiAgICBjb25zdCBjb25kaXRpb25zID0gdGhpcy50ZW1wbGF0ZS5maW5kQ29uZGl0aW9ucyhsb2dpY2FsSWQsIHByb3BzKTtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoY29uZGl0aW9ucykubWFwKChbaWQsIGNvbmRpdGlvbl0pID0+IHtcbiAgICAgIHJldHVybiB7IGlkOiBpZCwgZGVmOiBjb25kaXRpb24gfTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiByZXR1cm4gYSBzaW5nbGUgcmVzb3VyY2UgZm9yIHNwZWNpZmllZCB0eXBlIGFuZCBkZWZpbml0aW9uLlxuICAgKlxuICAgKiAtIGlmIG5vIHJlc291cmNlIG1hdGNoZWQgd2l0aCB0aGUgc3BlY2lmaWVkIHR5cGUgYW5kIGRlZmluaXRpb24sIHJhaXNlIEVycm9yLlxuICAgKiAtIGlmIG11bHRpcGxlIHJlc291cmNlcyBtYXRjaGVkLCByYWlzZSBFcnJvclxuICAgKiBAcGFyYW0gYXJnc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZ2V0UmVzb3VyY2U8VD4oXG4gICAgLi4uYXJnczogUGFyYW1ldGVyczx0eXBlb2YgdGhpcy5maW5kUmVzb3VyY2VzPFQ+PlxuICApOiBSZXR1cm5UeXBlPHR5cGVvZiB0aGlzLmZpbmRSZXNvdXJjZXM8VD4+IGV4dGVuZHMgKGluZmVyIFUpW10gPyBVIDogbmV2ZXIge1xuICAgIHJldHVybiB0aGlzLmdldChcInJlc291cmNlXCIsIGFyZ3NbMF0sIHRoaXMuZmluZFJlc291cmNlcyhhcmdzWzBdKSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBKb2luUHJvcHMge1xuICAvKipcbiAgICogQGRlZmF1bHQgXCJcIlxuICAgKi9cbiAgZGVsaW1pdGVyPzogc3RyaW5nO1xuICBhcnJheVdpdGg6IGFueVtdO1xufVxuLyoqXG4gKiBwcm92aWRlcyBzb21lIHN5bnRheCBzdWdhcnMgZm9yIGBNYXRjaGAgY2xhc3MgYXQgYGF3cy1jZGstbGliL2Fzc2VydGlvbnNgXG4gKi9cbmV4cG9ydCBjbGFzcyBFeHRyYU1hdGNoIGV4dGVuZHMgTWF0Y2gge1xuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgTWF0Y2gub2JqZWN0RXF1YWxzKHsgUmVmOiBsb2dpY2FsSWQgfSlgXG4gICAqIEBwYXJhbSBsb2dpY2FsSWRcbiAgICogQHJldHVybnNcbiAgICovXG4gIHN0YXRpYyByZWYobG9naWNhbElkOiBzdHJpbmcpOiBNYXRjaGVyIHtcbiAgICByZXR1cm4gTWF0Y2gub2JqZWN0RXF1YWxzKHsgUmVmOiBsb2dpY2FsSWQgfSk7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYE1hdGNoLm9iamVjdEVxdWFscyh7XCJGbjo6R2V0QXR0XCI6IFtsb2dpY2FsSWQsIGF0dHJpYnV0ZV19KWBcbiAgICogQHBhcmFtIGxvZ2ljYWxJZFxuICAgKiBAcGFyYW0gYXR0cmlidXRlXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBzdGF0aWMgZ2V0QXR0KGxvZ2ljYWxJZDogc3RyaW5nLCBhdHRyaWJ1dGU6IHN0cmluZyk6IE1hdGNoZXIge1xuICAgIHJldHVybiBNYXRjaC5vYmplY3RFcXVhbHMoeyBcIkZuOjpHZXRBdHRcIjogW2xvZ2ljYWxJZCwgYXR0cmlidXRlXSB9KTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgTWF0Y2gub2JqZWN0RXF1YWxzKHtcIkZuOjpHZXRBdHRcIjogW2xvZ2ljYWxJZCwgXCJBcm5cIl19KWBcbiAgICogQHBhcmFtIGxvZ2ljYWxJZFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgc3RhdGljIGdldEF0dEFybihsb2dpY2FsSWQ6IHN0cmluZyk6IE1hdGNoZXIge1xuICAgIHJldHVybiB0aGlzLmdldEF0dChsb2dpY2FsSWQsIFwiQXJuXCIpO1xuICB9XG5cbiAgc3RhdGljIGFycmF5V2l0aDxUIGV4dGVuZHMgYW55W10+KHBhdHRlcm46IEFsc29NYXRjaGVyPFQ+KTogVHlwZWRNYXRjaGVyPFQ+IHtcbiAgICByZXR1cm4gTWF0Y2guYXJyYXlXaXRoKHBhdHRlcm4pO1xuICB9XG4gIHN0YXRpYyBhcnJheUVxdWFsczxUIGV4dGVuZHMgYW55W10+KFxuICAgIHBhdHRlcm46IEFsc29NYXRjaGVyPFQ+XG4gICk6IFR5cGVkTWF0Y2hlcjxUPiB7XG4gICAgcmV0dXJuIE1hdGNoLmFycmF5RXF1YWxzKHBhdHRlcm4pO1xuICB9XG4gIHN0YXRpYyBvYmplY3RMaWtlPFQgZXh0ZW5kcyB7IFtrZXk6IHN0cmluZ106IGFueSB9PihcbiAgICBwYXR0ZXJuOiBBbHNvTWF0Y2hlcjxUPlxuICApOiBUeXBlZE1hdGNoZXI8VD4ge1xuICAgIHJldHVybiBNYXRjaC5vYmplY3RMaWtlKHBhdHRlcm4pIGFzIFR5cGVkTWF0Y2hlcjxUPjtcbiAgfVxuICBzdGF0aWMgb2JqZWN0RXF1YWxzPFQgZXh0ZW5kcyB7IFtrZXk6IHN0cmluZ106IGFueSB9PihcbiAgICBwYXR0ZXJuOiBBbHNvTWF0Y2hlcjxUPlxuICApOiBUeXBlZE1hdGNoZXI8VD4ge1xuICAgIHJldHVybiBNYXRjaC5vYmplY3RFcXVhbHMocGF0dGVybik7XG4gIH1cbiAgc3RhdGljIG5vdDxUPihwYXR0ZXJuOiBBbHNvTWF0Y2hlcjxUPik6IFR5cGVkTWF0Y2hlcjxUPiB7XG4gICAgcmV0dXJuIE1hdGNoLm5vdChwYXR0ZXJuKTtcbiAgfVxuICBzdGF0aWMgZXhhY3Q8VD4ocGF0dGVybjogQWxzb01hdGNoZXI8VD4pOiBUeXBlZE1hdGNoZXI8VD4ge1xuICAgIHJldHVybiBNYXRjaC5leGFjdChwYXR0ZXJuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGJlbG93OlxuICAgKiBcbiAgICogYGBganNcbiAgICogTWF0Y2gub2JqZWN0TGlrZSh7XG4gICAqICBcIkZuOjpKb2luXCI6IFtwcm9wcy5kZWxpbWl0ZXIgPz8gXCJcIiwgTWF0Y2guYXJyYXlXaXRoKHByb3BzLmFycmF5V2l0aCldLFxuICAgIH0pO1xuICAgKiBgYGBcbiAgICogQHBhcmFtIHByb3BzIFxuICAgKiBAcmV0dXJucyBcbiAgICovXG4gIHN0YXRpYyBqb2luTGlrZShwcm9wczogSm9pblByb3BzKTogTWF0Y2hlciB7XG4gICAgcmV0dXJuIE1hdGNoLm9iamVjdExpa2Uoe1xuICAgICAgXCJGbjo6Sm9pblwiOiBbcHJvcHMuZGVsaW1pdGVyID8/IFwiXCIsIE1hdGNoLmFycmF5V2l0aChwcm9wcy5hcnJheVdpdGgpXSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIC8qKlxuICAvLyAgKiByZXR1cm5zIE1hdGNoIGluc3RhbmNlIHRoYXQgbWF0Y2hlcyByZWdpb25hbCByZXNvdXJjZSBBUk4gbGlrZSA6IGBhcm46YXdzOmxvZ3M6YXAtbm9ydGhlYXN0LTE6MTIzNDU2Nzg5MDEyOmxvZy1ncm91cDovbG9nLWdyb3VwLW5hbWU6bG9nLXN0cmVhbTpsb2ctc3RyZWFtLW5hbWVgXG4gIC8vICAqIEBwYXJhbSBlbGVtc1xuICAvLyAgKiBAcmV0dXJuc1xuICAvLyAgKi9cbiAgLy8gc3RhdGljIHJlZ2lvbmFsQXJuTGlrZShlbGVtczogQWxzb01hdGNoZXI8QXJuRWxlbWVudHM+KTogTWF0Y2hlciB7XG4gIC8vICAgcmV0dXJuIE1hdGNoLm9iamVjdEVxdWFscyh7XG4gIC8vICAgICBcIkZuOjpKb2luXCI6IE1hdGNoLmFycmF5V2l0aChbXG4gIC8vICAgICAgIFwiXCIsXG4gIC8vICAgICAgIE1hdGNoLmFycmF5V2l0aChbXG4gIC8vICAgICAgICAgXCJhcm46XCIsXG4gIC8vICAgICAgICAgZWxlbXMucGFydGl0aW9uID8/IHsgUmVmOiBcIkFXUzo6UGFydGl0aW9uXCIgfSxcbiAgLy8gICAgICAgICBNYXRjaC5zdHJpbmdMaWtlUmVnZXhwKGA6JHtlbGVtcy5zZXJ2aWNlID8/IFwiKlwifTpgKSxcbiAgLy8gICAgICAgICBlbGVtcy5yZWdpb24gPz8geyBSZWY6IFwiQVdTOjpSZWdpb25cIiB9LFxuICAvLyAgICAgICAgIGVsZW1zLmFjY291bnQgPz8geyBSZWY6IFwiQVdTOjpBY2NvdW50SWRcIiB9LFxuICAvLyAgICAgICAgIC4uLihlbGVtcy5yZXN0IGluc3RhbmNlb2YgTWF0Y2hlclxuICAvLyAgICAgICAgICAgPyBbZWxlbXMucmVzdF1cbiAgLy8gICAgICAgICAgIDogKGVsZW1zLnJlc3QgPz8gW10pKSxcbiAgLy8gICAgICAgXSksXG4gIC8vICAgICBdKSxcbiAgLy8gICB9KTtcbiAgLy8gfVxuXG4gIC8vIC8qKlxuICAvLyAgKiByZXR1cm5zIE1hdGNoIGluc3RhbmNlIHRoYXQgbWF0Y2hlcyBnbG9iYWwgcmVzb3VyY2UgQVJOIGxpa2UgOiBgYXJuOmF3czppYW06OjEyMzQ1Njc4OTAxMjpyb2xlL3JvbGUtbmFtZWBcbiAgLy8gICogQHBhcmFtIGVsZW1zXG4gIC8vICAqIEByZXR1cm5zXG4gIC8vICAqL1xuICAvLyBzdGF0aWMgZ2xvYmFsQXJuKFxuICAvLyAgIGVsZW1zOiBPbWl0PEFybkVsZW1lbnRzLCBcInJlZ2lvblwiPixcbiAgLy8gICBkZWxpbWl0ZXI6IHN0cmluZyA9IFwiXCJcbiAgLy8gKTogTWF0Y2hlciB7XG4gIC8vICAgcmV0dXJuIE1hdGNoLm9iamVjdEVxdWFscyh7XG4gIC8vICAgICBcIkZuOjpKb2luXCI6IE1hdGNoLmFycmF5RXF1YWxzKFtcbiAgLy8gICAgICAgZGVsaW1pdGVyLFxuICAvLyAgICAgICBNYXRjaC5hcnJheVdpdGgoW1xuICAvLyAgICAgICAgIFwiYXJuOlwiLFxuICAvLyAgICAgICAgIGVsZW1zLnBhcnRpdGlvbiA/PyB7IFJlZjogXCJBV1M6OlBhcnRpdGlvblwiIH0sXG4gIC8vICAgICAgICAgTWF0Y2guc3RyaW5nTGlrZVJlZ2V4cChgOiR7ZWxlbXMuc2VydmljZSA/PyBcIipcIn06OmApLFxuICAvLyAgICAgICAgIGVsZW1zLmFjY291bnQgPz8geyBSZWY6IFwiQVdTOjpBY2NvdW50SWRcIiB9LFxuICAvLyAgICAgICAgIC4uLihlbGVtcy5yZXN0IGluc3RhbmNlb2YgTWF0Y2hlclxuICAvLyAgICAgICAgICAgPyBbZWxlbXMucmVzdF1cbiAgLy8gICAgICAgICAgIDogKGVsZW1zLnJlc3QgPz8gW10pKSxcbiAgLy8gICAgICAgXSksXG4gIC8vICAgICBdKSxcbiAgLy8gICB9KTtcbiAgLy8gfVxuXG4gIHN0YXRpYyBpYW1Qb2xpY3lMaWtlKGRvYzogQWxzb01hdGNoZXI8SUFNUG9saWN5RG9jdW1lbnQ+KTogTWF0Y2hlciB7XG4gICAgcmV0dXJuIE1hdGNoLm9iamVjdExpa2UoZG9jKTtcbiAgfVxufVxuIl19
|
|
475
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFzc2VydGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsdURBQWtFO0FBaUJsRTs7R0FFRztBQUNILE1BQWEsYUFBYTtJQUV4QixZQUFvQixRQUFrQjtRQUNwQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0lBRU8sR0FBRyxDQUFJLElBQVksRUFBRSxHQUFRLEVBQUUsS0FBVTtRQUMvQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkIsTUFBTSxLQUFLLENBQUMsR0FBRyxJQUFJLGdDQUFnQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1RSxDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sS0FBSyxDQUNULFlBQVksSUFBSSw0QkFBNEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUNsRSxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FDZCxHQUFHLElBQTJDO1FBRTlDLE9BQU8sSUFBSSxhQUFhLENBQUMscUJBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFFBQVEsQ0FDYixHQUFHLElBQTBDO1FBRTdDLE9BQU8sSUFBSSxhQUFhLENBQUMscUJBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FDZixHQUFHLElBQTRDO1FBRS9DLE9BQU8s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TUFBTSxDQUFDLEtBQUssQ0FBSSxPQUFpRDtRQUMvRCxPQUFPLGtCQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLENBQUM7Q0FDRjtBQXRSRCxnQ0FzUkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZW1wbGF0ZSwgTWF0Y2gsIE1hdGNoZXIgfSBmcm9tIFwiYXdzLWNkay1saWIvYXNzZXJ0aW9uc1wiO1xuaW1wb3J0IHtcbiAgQ29uZGl0aW9uLFxuICBJbnB1dFJlc291cmNlLFxuICBNYXBwaW5nLFxuICBPdXRwdXRSZXNvdXJjZSxcbiAgSW5wdXRQYXJhbXRlcixcbiAgT3V0cHV0UGFyYW1ldGVyLFxuICBSZXR1cm5WYWx1ZSxcbiAgSW5wdXRPdXRwdXQsXG4gIE91dHB1dE91dHB1dCxcbiAgSW5wdXRSZXNvdXJjZVdpdGhvdXRUeXBlLFxuICBJQU1Qb2xpY3lEb2N1bWVudCxcbiAgQWxzb01hdGNoZXIsXG4gIFR5cGVkTWF0Y2hlcixcbn0gZnJvbSBcIi4vdHlwZWQtcmVzb3VyY2VcIjtcblxuLyoqXG4gKiBhbG1vc3Qgc2FtZSBjbGFzcyBhcyBgVGVtcGxhdGVgIGNsYXNzIGF0IFwiYXdzLWNkay1saWIvYXNzZXJ0aW9uc1wiLCBidXQgeW91IGNhbiB1c2UgdGhpcyB3aXRoIHByb3BlciB0eXBlIGRlZmluaXRpb25zXG4gKi9cbmV4cG9ydCBjbGFzcyBUeXBlZFRlbXBsYXRlIHtcbiAgdGVtcGxhdGU6IFRlbXBsYXRlO1xuICBwcml2YXRlIGNvbnN0cnVjdG9yKHRlbXBsYXRlOiBUZW1wbGF0ZSkge1xuICAgIHRoaXMudGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0PFQ+KHR5cGU6IHN0cmluZywgZGVmOiBhbnksIGFycmF5OiBUW10pOiBUIHtcbiAgICBpZiAoYXJyYXkubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBFcnJvcihgJHt0eXBlfSBub3QgZm91bmQgd2l0aCBkZWZpbml0aW9uIDogJHtKU09OLnN0cmluZ2lmeShkZWYpfWApO1xuICAgIH1cbiAgICBpZiAoYXJyYXkubGVuZ3RoID4gMSkge1xuICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgIGBtdWx0aXBsZSAke3R5cGV9IGZvdW5kIHdpdGggZGVmaW5pdGlvbiA6ICR7SlNPTi5zdHJpbmdpZnkoZGVmKX1gXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gYXJyYXlbMF07XG4gIH1cblxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuZnJvbVN0YWNrYCBidXQgcmV0dXJucyBgVHlwZWRUZW1wbGF0ZWBcbiAgICogQHBhcmFtIGFyZ3NcbiAgICogQHJldHVybnNcbiAgICovXG4gIHN0YXRpYyBmcm9tU3RhY2soXG4gICAgLi4uYXJnczogUGFyYW1ldGVyczx0eXBlb2YgVGVtcGxhdGUuZnJvbVN0YWNrPlxuICApOiBUeXBlZFRlbXBsYXRlIHtcbiAgICByZXR1cm4gbmV3IFR5cGVkVGVtcGxhdGUoVGVtcGxhdGUuZnJvbVN0YWNrKC4uLmFyZ3MpKTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuZnJvbUpTT05gIGJ1dCByZXR1cm5zIGBUeXBlZFRlbXBsYXRlYFxuICAgKiBAcGFyYW0gYXJnc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgc3RhdGljIGZyb21KU09OKFxuICAgIC4uLmFyZ3M6IFBhcmFtZXRlcnM8dHlwZW9mIFRlbXBsYXRlLmZyb21KU09OPlxuICApOiBUeXBlZFRlbXBsYXRlIHtcbiAgICByZXR1cm4gbmV3IFR5cGVkVGVtcGxhdGUoVGVtcGxhdGUuZnJvbUpTT04oLi4uYXJncykpO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5mcm9tU3RyaW5nYCBidXQgcmV0dXJucyBgVHlwZWRUZW1wbGF0ZWBcbiAgICogQHBhcmFtIGFyZ3NcbiAgICogQHJldHVybnNcbiAgICovXG4gIHN0YXRpYyBmcm9tU3RyaW5nKFxuICAgIC4uLmFyZ3M6IFBhcmFtZXRlcnM8dHlwZW9mIFRlbXBsYXRlLmZyb21TdHJpbmc+XG4gICk6IFR5cGVkVGVtcGxhdGUge1xuICAgIHJldHVybiBuZXcgVHlwZWRUZW1wbGF0ZShUZW1wbGF0ZS5mcm9tU3RyaW5nKC4uLmFyZ3MpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5yZXNvdXJjZUNvdW50SXNgXG4gICAqXG4gICAqIHVzZSB0aGlzIG1ldGhvZCBsaWtlIGJlbG93OlxuICAgKlxuICAgKiBgYGBqc1xuICAgKiB0ZW1wbGF0ZS5yZXNvdXJjZUNvdW50SXMoQVdTX0VDMl9TVUJORVQsIDMpXG4gICAqIGBgYFxuICAgKiBAcGFyYW0gdHlwZVxuICAgKiBAcGFyYW0gY291bnRcbiAgICovXG4gIHJlc291cmNlQ291bnRJczxUPihcbiAgICB0eXBlOiAocmVzb3VyY2U/OiBJbnB1dFJlc291cmNlV2l0aG91dFR5cGU8VD4pID0+IElucHV0UmVzb3VyY2U8VD4sXG4gICAgY291bnQ6IG51bWJlclxuICApOiB2b2lkIHtcbiAgICB0aGlzLnRlbXBsYXRlLnJlc291cmNlQ291bnRJcyh0eXBlKCkuVHlwZSwgY291bnQpO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5yZXNvdXJjZVByb3BlcnRpZXNDb3VudElzYFxuICAgKiBAcGFyYW0gclxuICAgKiBAcGFyYW0gY291bnRcbiAgICovXG4gIHJlc291cmNlUHJvcGVydGllc0NvdW50SXM8VD4ocjogSW5wdXRSZXNvdXJjZTxUPiwgY291bnQ6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMudGVtcGxhdGUucmVzb3VyY2VQcm9wZXJ0aWVzQ291bnRJcyhyLlR5cGUsIHIuUHJvcGVydGllcywgY291bnQpO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXNgXG4gICAqIEBwYXJhbSByXG4gICAqL1xuICBoYXNSZXNvdXJjZVByb3BlcnRpZXM8VD4ocjogSW5wdXRSZXNvdXJjZTxUPik6IHZvaWQge1xuICAgIHRoaXMudGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKHIuVHlwZSwgci5Qcm9wZXJ0aWVzKTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuaGFzUmVzb3VyY2VgXG4gICAqIEBwYXJhbSByXG4gICAqL1xuICBoYXNSZXNvdXJjZTxUPihyOiBJbnB1dFJlc291cmNlPFQ+KTogdm9pZCB7XG4gICAgdGhpcy50ZW1wbGF0ZS5oYXNSZXNvdXJjZShyLlR5cGUsIHIpO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5maW5kUmVzb3VyY2VzYFxuICAgKiBAcGFyYW0gclxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZmluZFJlc291cmNlczxUPihyOiBJbnB1dFJlc291cmNlPFQ+KTogUmV0dXJuVmFsdWU8T3V0cHV0UmVzb3VyY2U8VD4+W10ge1xuICAgIGNvbnN0IHJlc291cmNlcyA9IHRoaXMudGVtcGxhdGUuZmluZFJlc291cmNlcyhyLlR5cGUsIHIpIGFzIHtcbiAgICAgIFtpZCBpbiBzdHJpbmddOiBPdXRwdXRSZXNvdXJjZTxUPjtcbiAgICB9O1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhyZXNvdXJjZXMpLm1hcCgoW2lkLCByZXNvdXJjZV0pID0+IHtcbiAgICAgIHJldHVybiB7IGlkOiBpZCwgZGVmOiByZXNvdXJjZSB9O1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5hbGxSZXNvdXJjZXNgXG4gICAqIEBwYXJhbSByXG4gICAqL1xuICBhbGxSZXNvdXJjZXM8VD4ocjogSW5wdXRSZXNvdXJjZTxUPik6IHZvaWQge1xuICAgIHRoaXMudGVtcGxhdGUuYWxsUmVzb3VyY2VzKHIuVHlwZSwgcik7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLmFsbFJlc291cmNlUHJvcGVydGllc2BcbiAgICogQHBhcmFtIHJcbiAgICovXG4gIGFsbFJlc291cmNlc1Byb3BlcnRpZXM8VD4ocjogSW5wdXRSZXNvdXJjZTxUPik6IHZvaWQge1xuICAgIHRoaXMudGVtcGxhdGUuYWxsUmVzb3VyY2VzUHJvcGVydGllcyhyLlR5cGUsIHIuUHJvcGVydGllcyk7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLmhhc1BhcmFtZXRlcmBcbiAgICogQHBhcmFtIGxvZ2ljYWxJZFxuICAgKiBAcGFyYW0gcHJvcHNcbiAgICovXG4gIGhhc1BhcmFtZXRlcihsb2dpY2FsSWQ6IHN0cmluZywgcHJvcHM6IElucHV0UGFyYW10ZXIpOiB2b2lkIHtcbiAgICB0aGlzLnRlbXBsYXRlLmhhc1BhcmFtZXRlcihsb2dpY2FsSWQsIHByb3BzKTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuZmluZFBhcmFtZXRlcnNgXG4gICAqIEBwYXJhbSBsb2dpY2FsSWRcbiAgICogQHBhcmFtIHByb3BzXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBmaW5kUGFyYW1ldGVycyhcbiAgICBsb2dpY2FsSWQ6IHN0cmluZyxcbiAgICBwcm9wcz86IElucHV0UGFyYW10ZXJcbiAgKTogUmV0dXJuVmFsdWU8T3V0cHV0UGFyYW1ldGVyPltdIHtcbiAgICBjb25zdCBwYXJhbWV0ZXJzID0gdGhpcy50ZW1wbGF0ZS5maW5kUGFyYW1ldGVycyhsb2dpY2FsSWQsIHByb3BzKTtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMocGFyYW1ldGVycykubWFwKChbaWQsIHBhcmFtZXRlcl0pID0+IHtcbiAgICAgIHJldHVybiB7IGlkOiBpZCwgZGVmOiBwYXJhbWV0ZXIgYXMgT3V0cHV0UGFyYW1ldGVyIH07XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuaGFzT3V0cHV0YFxuICAgKiBAcGFyYW0gbG9naWNhbElkXG4gICAqIEBwYXJhbSBwcm9wc1xuICAgKi9cbiAgaGFzT3V0cHV0KGxvZ2ljYWxJZDogc3RyaW5nLCBwcm9wczogSW5wdXRPdXRwdXQpOiB2b2lkIHtcbiAgICB0aGlzLnRlbXBsYXRlLmhhc091dHB1dChsb2dpY2FsSWQsIHByb3BzKTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuZmluZE91dHB1dHNgXG4gICAqIEBwYXJhbSBsb2dpY2FsSWRcbiAgICogQHBhcmFtIHByb3BzXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBmaW5kT3V0cHV0cyhcbiAgICBsb2dpY2FsSWQ6IHN0cmluZyxcbiAgICBwcm9wcz86IElucHV0T3V0cHV0XG4gICk6IFJldHVyblZhbHVlPE91dHB1dE91dHB1dD5bXSB7XG4gICAgY29uc3Qgb3V0cHV0cyA9IHRoaXMudGVtcGxhdGUuZmluZE91dHB1dHMobG9naWNhbElkLCBwcm9wcyk7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG91dHB1dHMpLm1hcCgoW2lkLCBvdXRwdXRdKSA9PiB7XG4gICAgICByZXR1cm4geyBpZDogaWQsIGRlZjogb3V0cHV0IGFzIE91dHB1dE91dHB1dCB9O1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5oYXNNYXBwaW5nYFxuICAgKiBAcGFyYW0gbG9naWNhbElkXG4gICAqIEBwYXJhbSBwcm9wc1xuICAgKi9cbiAgaGFzTWFwcGluZyhsb2dpY2FsSWQ6IHN0cmluZywgcHJvcHM6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudGVtcGxhdGUuaGFzTWFwcGluZyhsb2dpY2FsSWQsIHByb3BzKTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuZmluZE1hcHBpbmdzYFxuICAgKiBAcGFyYW0gbG9naWNhbElkXG4gICAqIEBwYXJhbSBwcm9wc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZmluZE1hcHBpbmdzKGxvZ2ljYWxJZDogc3RyaW5nLCBwcm9wcz86IGFueSk6IFJldHVyblZhbHVlPE1hcHBpbmc+W10ge1xuICAgIGNvbnN0IG1hcHBpbmdzID0gdGhpcy50ZW1wbGF0ZS5maW5kTWFwcGluZ3MobG9naWNhbElkLCBwcm9wcyk7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG1hcHBpbmdzKS5tYXAoKFtpZCwgbWFwcGluZ10pID0+IHtcbiAgICAgIHJldHVybiB7IGlkOiBpZCwgZGVmOiBtYXBwaW5nIH07XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLmhhc0NvbmRpdGlvbmBcbiAgICogQHBhcmFtIGxvZ2ljYWxJZFxuICAgKiBAcGFyYW0gcHJvcHNcbiAgICovXG4gIGhhc0NvbmRpdGlvbihsb2dpY2FsSWQ6IHN0cmluZywgcHJvcHM6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudGVtcGxhdGUuaGFzQ29uZGl0aW9uKGxvZ2ljYWxJZCwgcHJvcHMpO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5maW5kQ29uZGl0aW9uc2BcbiAgICogQHBhcmFtIGxvZ2ljYWxJZFxuICAgKiBAcGFyYW0gcHJvcHNcbiAgICogQHJldHVybnNcbiAgICovXG4gIGZpbmRDb25kaXRpb25zKGxvZ2ljYWxJZDogc3RyaW5nLCBwcm9wcz86IGFueSk6IFJldHVyblZhbHVlPENvbmRpdGlvbj5bXSB7XG4gICAgY29uc3QgY29uZGl0aW9ucyA9IHRoaXMudGVtcGxhdGUuZmluZENvbmRpdGlvbnMobG9naWNhbElkLCBwcm9wcyk7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGNvbmRpdGlvbnMpLm1hcCgoW2lkLCBjb25kaXRpb25dKSA9PiB7XG4gICAgICByZXR1cm4geyBpZDogaWQsIGRlZjogY29uZGl0aW9uIH07XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogcmV0dXJuIGEgc2luZ2xlIHJlc291cmNlIGZvciBzcGVjaWZpZWQgdHlwZSBhbmQgZGVmaW5pdGlvbi5cbiAgICpcbiAgICogLSBpZiBubyByZXNvdXJjZSBtYXRjaGVkIHdpdGggdGhlIHNwZWNpZmllZCB0eXBlIGFuZCBkZWZpbml0aW9uLCByYWlzZSBFcnJvci5cbiAgICogLSBpZiBtdWx0aXBsZSByZXNvdXJjZXMgbWF0Y2hlZCwgcmFpc2UgRXJyb3JcbiAgICogQHBhcmFtIGFyZ3NcbiAgICogQHJldHVybnNcbiAgICovXG4gIGdldFJlc291cmNlPFQ+KFxuICAgIC4uLmFyZ3M6IFBhcmFtZXRlcnM8dHlwZW9mIHRoaXMuZmluZFJlc291cmNlczxUPj5cbiAgKTogUmV0dXJuVHlwZTx0eXBlb2YgdGhpcy5maW5kUmVzb3VyY2VzPFQ+PiBleHRlbmRzIChpbmZlciBVKVtdID8gVSA6IG5ldmVyIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoXCJyZXNvdXJjZVwiLCBhcmdzWzBdLCB0aGlzLmZpbmRSZXNvdXJjZXMoYXJnc1swXSkpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSm9pblByb3BzIHtcbiAgLyoqXG4gICAqIEBkZWZhdWx0IFwiXCJcbiAgICovXG4gIGRlbGltaXRlcj86IHN0cmluZztcbiAgYXJyYXlXaXRoOiBhbnlbXTtcbn1cbi8qKlxuICogcHJvdmlkZXMgc29tZSBzeW50YXggc3VnYXJzIGZvciBgTWF0Y2hgIGNsYXNzIGF0IGBhd3MtY2RrLWxpYi9hc3NlcnRpb25zYFxuICovXG5leHBvcnQgY2xhc3MgRXh0cmFNYXRjaCB7XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBNYXRjaC5vYmplY3RFcXVhbHMoeyBSZWY6IGxvZ2ljYWxJZCB9KWBcbiAgICogQHBhcmFtIGxvZ2ljYWxJZFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgc3RhdGljIHJlZihsb2dpY2FsSWQ6IHN0cmluZyk6IE1hdGNoZXIge1xuICAgIHJldHVybiBNYXRjaC5vYmplY3RFcXVhbHMoeyBSZWY6IGxvZ2ljYWxJZCB9KTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgTWF0Y2gub2JqZWN0RXF1YWxzKHtcIkZuOjpHZXRBdHRcIjogW2xvZ2ljYWxJZCwgYXR0cmlidXRlXX0pYFxuICAgKiBAcGFyYW0gbG9naWNhbElkXG4gICAqIEBwYXJhbSBhdHRyaWJ1dGVcbiAgICogQHJldHVybnNcbiAgICovXG4gIHN0YXRpYyBnZXRBdHQobG9naWNhbElkOiBzdHJpbmcsIGF0dHJpYnV0ZTogc3RyaW5nKTogTWF0Y2hlciB7XG4gICAgcmV0dXJuIE1hdGNoLm9iamVjdEVxdWFscyh7IFwiRm46OkdldEF0dFwiOiBbbG9naWNhbElkLCBhdHRyaWJ1dGVdIH0pO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBNYXRjaC5vYmplY3RFcXVhbHMoe1wiRm46OkdldEF0dFwiOiBbbG9naWNhbElkLCBcIkFyblwiXX0pYFxuICAgKiBAcGFyYW0gbG9naWNhbElkXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBzdGF0aWMgZ2V0QXR0QXJuKGxvZ2ljYWxJZDogc3RyaW5nKTogTWF0Y2hlciB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QXR0KGxvZ2ljYWxJZCwgXCJBcm5cIik7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYmVsb3c6XG4gICAqIFxuICAgKiBgYGBqc1xuICAgKiBNYXRjaC5vYmplY3RMaWtlKHtcbiAgICogIFwiRm46OkpvaW5cIjogW3Byb3BzLmRlbGltaXRlciA/PyBcIlwiLCBNYXRjaC5hcnJheVdpdGgocHJvcHMuYXJyYXlXaXRoKV0sXG4gICAgfSk7XG4gICAqIGBgYFxuICAgKiBAcGFyYW0gcHJvcHMgXG4gICAqIEByZXR1cm5zIFxuICAgKi9cbiAgc3RhdGljIGpvaW5MaWtlKHByb3BzOiBKb2luUHJvcHMpOiBNYXRjaGVyIHtcbiAgICByZXR1cm4gTWF0Y2gub2JqZWN0TGlrZSh7XG4gICAgICBcIkZuOjpKb2luXCI6IFtwcm9wcy5kZWxpbWl0ZXIgPz8gXCJcIiwgTWF0Y2guYXJyYXlXaXRoKHByb3BzLmFycmF5V2l0aCldLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICBZb3UgY2FuIGRlZmluZSBNYXRjaGVyIGZvciBJQU0gUG9saWN5IERvY3VtZW50IHdpdGggdHlwZSBoaW50cy5cbiAgIGBgYGpzXG4gICAgdGVtcGxhdGUuaGFzUmVzb3VyY2UoXG4gICAgICBBV1NfSUFNX1JPTEUoe1xuICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgQXNzdW1lUm9sZVBvbGljeURvY3VtZW50OiBFeHRyYU1hdGNoLmlhbVBvbGljeUxpa2Uoe1xuICAgICAgICAgICAgU3RhdGVtZW50OiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBQcmluY2lwYWw6IHsgU2VydmljZTogXCJlYzIuYW1hem9uYXdzLmNvbVwiIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApO1xuICAgYGBgXG4gICAqIEBwYXJhbSBkb2MgXG4gICAqIEByZXR1cm5zIFxuICAgKi9cbiAgc3RhdGljIGlhbVBvbGljeUxpa2UoZG9jOiBBbHNvTWF0Y2hlcjxJQU1Qb2xpY3lEb2N1bWVudD4pOiBNYXRjaGVyIHtcbiAgICByZXR1cm4gTWF0Y2gub2JqZWN0TGlrZShkb2MpO1xuICB9XG4gIC8qKlxuICAgU2FtZSBtZXRob2QgYXMgYE1hdGNoLmFycmF5V2l0aGAgYnV0IHByb3ZpZGVzIHR5cGUgaGludHMgYW5kIHZhbGlkYXRlIHR5cGUgbWF0Y2ggXG4gICBgYGBqc1xuICAgIC8vIHRoaXMgaXMgYSByaWdodCBjb2RlXG4gICAgdGVtcGxhdGUuaGFzUmVzb3VyY2UoXG4gICAgICBBV1NfRUMyX0VJUCh7XG4gICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBUYWdzOiBFeHRyYU1hdGNoLmFycmF5V2l0aDxUYWdbXT4oW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBLZXk6IFwia2V5MlwiLFxuICAgICAgICAgICAgICBWYWx1ZTogXCJ2YWwyXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0pLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApO1xuICAgIC8vIHRoaXMgaXMgYSB3cm9uZyBjb2RlKHR5cGUgbWlzbWF0Y2ggd2lsbCBiZSBkZXRlY3RlZCBhbmQgdHMtZXJyb3Igd2lsbCBiZSByYWlzZWQpXG4gICAgdGVtcGxhdGUuaGFzUmVzb3VyY2UoXG4gICAgICBBV1NfRUMyX0VJUCh7XG4gICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBUYWdzOiBFeHRyYU1hdGNoLmFycmF5V2l0aDxzdHJpbmdbXT4oW1xuICAgICAgICAgICAgXCJob2dlXCIsIFwiZnVnYVwiXG4gICAgICAgICAgXSksXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICk7XG4gICBgYGBcbiAgICogQHBhcmFtIHBhdHRlcm4gXG4gICAqIEByZXR1cm5zIFxuICAgKi9cbiAgc3RhdGljIGFycmF5V2l0aDxUIGV4dGVuZHMgYW55W10+KHBhdHRlcm46IEFsc29NYXRjaGVyPFQ+KTogVHlwZWRNYXRjaGVyPFQ+IHtcbiAgICByZXR1cm4gTWF0Y2guYXJyYXlXaXRoKHBhdHRlcm4pIGFzIHVua25vd24gYXMgVHlwZWRNYXRjaGVyPFQ+O1xuICB9XG4gIC8qKlxuICAgKiBTYW1lIG1ldGhvZCBhcyBgTWF0Y2guYXJyYXlFcXVhbHNgIGJ1dCBwcm92aWRlcyB0eXBlIGhpbnRzIGFuZCB2YWxpZGF0ZSB0eXBlIG1hdGNoIFxuICAgYGBganNcbiAgICAvLyB0aGlzIGlzIGEgcmlnaHQgY29kZVxuICAgIHRlbXBsYXRlLmhhc1Jlc291cmNlKFxuICAgICAgQVdTX0VDMl9FSVAoe1xuICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgVGFnczogRXh0cmFNYXRjaC5hcnJheUVxdWFsczxUYWdbXT4oW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBLZXk6IFwia2V5MVwiLFxuICAgICAgICAgICAgICBWYWx1ZTogXCJ2YWwxXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBLZXk6IFwia2V5MlwiLFxuICAgICAgICAgICAgICBWYWx1ZTogXCJ2YWwyXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0pLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApO1xuICAgIC8vIHRoaXMgaXMgYSB3cm9uZyBjb2RlKHR5cGUgbWlzbWF0Y2ggd2lsbCBiZSBkZXRlY3RlZCBhbmQgdHMtZXJyb3Igd2lsbCBiZSByYWlzZWQpXG4gICAgdGVtcGxhdGUuaGFzUmVzb3VyY2UoXG4gICAgICBBV1NfRUMyX0VJUCh7XG4gICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBUYWdzOiBFeHRyYU1hdGNoLmFycmF5RXF1YWxzPFRhZ1tdPihbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEtleTogXCJrZXkxXCIsXG4gICAgICAgICAgICAgIFZhbHVlOiBcInZhbDFcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEtleTogMTAwLFxuICAgICAgICAgICAgICBWYWx1ZTogMjAwLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKTtcbiAgIGBgYFxuICAgKiBAcGFyYW0gcGF0dGVybiBcbiAgICogQHJldHVybnMgXG4gICAqL1xuICBzdGF0aWMgYXJyYXlFcXVhbHM8VCBleHRlbmRzIGFueVtdPihcbiAgICBwYXR0ZXJuOiBBbHNvTWF0Y2hlcjxUPlxuICApOiBUeXBlZE1hdGNoZXI8VD4ge1xuICAgIHJldHVybiBNYXRjaC5hcnJheUVxdWFscyhwYXR0ZXJuKTtcbiAgfVxuICAvKipcbiAgICogU2FtZSBtZXRob2QgYXMgYE1hdGNoLm9iamVjdExpa2VgIGJ1dCBwcm92aWRlcyB0eXBlIGhpbnRzIGFuZCB2YWxpZGF0ZSB0eXBlIG1hdGNoIFxuICAgYGBganNcbiAgIC8vIHRoaXMgaXMgYSByaWdodCBjb2RlXG4gICAgdGVtcGxhdGUuaGFzUmVzb3VyY2UoXG4gICAgICBBV1NfRUMyX0lOU1RBTkNFKHtcbiAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgIEJsb2NrRGV2aWNlTWFwcGluZ3M6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgRGV2aWNlTmFtZTogXCJ0ZXN0XCIsXG4gICAgICAgICAgICAgIEViczogRXh0cmFNYXRjaC5vYmplY3RMaWtlPEVicz4oe1xuICAgICAgICAgICAgICAgIFZvbHVtZVNpemU6IDEwLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKTtcbiAgICAvLyB0aGlzIGlzIGEgd3JvbmcgY29kZSh0eXBlIG1pc21hdGNoIHdpbGwgYmUgZGV0ZWN0ZWQgYW5kIHRzLWVycm9yIHdpbGwgYmUgcmFpc2VkKVxuICAgIHRlbXBsYXRlLmhhc1Jlc291cmNlKFxuICAgICAgQVdTX0VDMl9JTlNUQU5DRSh7XG4gICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBCbG9ja0RldmljZU1hcHBpbmdzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIERldmljZU5hbWU6IFwidGVzdFwiLFxuICAgICAgICAgICAgICBFYnM6IEV4dHJhTWF0Y2gub2JqZWN0TGlrZTxFYnM+KHtcbiAgICAgICAgICAgICAgICBWb2x1bWVTaXplOiBcIjEwXCIsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApO1xuICAgKiBAcGFyYW0gcGF0dGVybiBcbiAgICogQHJldHVybnMgXG4gICAqL1xuICBzdGF0aWMgb2JqZWN0TGlrZTxUIGV4dGVuZHMgeyBba2V5OiBzdHJpbmddOiBhbnkgfT4oXG4gICAgcGF0dGVybjogQWxzb01hdGNoZXI8VD5cbiAgKTogVHlwZWRNYXRjaGVyPFQ+IHtcbiAgICByZXR1cm4gTWF0Y2gub2JqZWN0TGlrZShwYXR0ZXJuKTtcbiAgfVxuICAvKipcbiAgICogU2FtZSBtZXRob2QgYXMgYE1hdGNoLm9iamVjdEVxdWFsc2AgYnV0IHByb3ZpZGVzIHR5cGUgaGludHMgYW5kIHZhbGlkYXRlIHR5cGUgbWF0Y2ggXG4gICBgYGBqc1xuICAgLy8gdGhpcyBpcyBhIHJpZ2h0IGNvZGVcbiAgICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZShcbiAgICAgIEFXU19FQzJfRUlQKHtcbiAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgIC8vIFlvdSBjYW4gbmVzdCBUeXBlZE1hdGNoZXIodXNlIFR5cGVkTWF0Y2hlciBpbnNpZGUgVHlwZWRNYXRjaGVyKVxuICAgICAgICAgIFRhZ3M6IEV4dHJhTWF0Y2guYXJyYXlXaXRoPFRhZ1tdPihbXG4gICAgICAgICAgICBFeHRyYU1hdGNoLm9iamVjdEVxdWFsczxUYWc+KHtcbiAgICAgICAgICAgICAgS2V5OiBcImtleTFcIixcbiAgICAgICAgICAgICAgVmFsdWU6IFwidmFsMVwiLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgXSksXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICk7XG4gICAgLy8gdGhpcyBpcyBhIHdyb25nIGNvZGUodHlwZSBtaXNtYXRjaCB3aWxsIGJlIGRldGVjdGVkIGFuZCB0cy1lcnJvciB3aWxsIGJlIHJhaXNlZClcbiAgICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZShcbiAgICAgIEFXU19FQzJfRUlQKHtcbiAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgIFRhZ3M6IEV4dHJhTWF0Y2guYXJyYXlXaXRoPFRhZ1tdPihbXG4gICAgICAgICAgICBFeHRyYU1hdGNoLm9iamVjdEVxdWFsczxUYWc+KHtcbiAgICAgICAgICAgICAgS2V5OiBcImtleTFcIixcbiAgICAgICAgICAgICAgVmFsdWU6IDEwMCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF0pLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApO1xuICAgKiBAcGFyYW0gcGF0dGVybiBcbiAgICogQHJldHVybnMgXG4gICAqL1xuICBzdGF0aWMgb2JqZWN0RXF1YWxzPFQgZXh0ZW5kcyB7IFtrZXk6IHN0cmluZ106IGFueSB9PihcbiAgICBwYXR0ZXJuOiBBbHNvTWF0Y2hlcjxUPlxuICApOiBUeXBlZE1hdGNoZXI8VD4ge1xuICAgIHJldHVybiBNYXRjaC5vYmplY3RFcXVhbHMocGF0dGVybik7XG4gIH1cbiAgLyoqXG4gICAqIFNhbWUgbWV0aG9kIGFzIGBNYXRjaC5ub3RgIGJ1dCBwcm92aWRlcyB0eXBlIGhpbnRzIGFuZCB2YWxpZGF0ZSB0eXBlIG1hdGNoIFxuICAgYGBganNcbiAgICAvLyB0aGlzIGlzIGEgcmlnaHQgY29kZVxuICAgIHRlbXBsYXRlLmhhc1Jlc291cmNlKFxuICAgICAgQVdTX0VDMl9JTlNUQU5DRSh7XG4gICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBJbWFnZUlkOiBFeHRyYU1hdGNoLm5vdChcImFtaS0xMjM0NVwiKSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKTtcbiAgICAvLyB0aGlzIGlzIGEgd3JvbmcgY29kZSh0eXBlIG1pc21hdGNoIHdpbGwgYmUgZGV0ZWN0ZWQgYW5kIHRzLWVycm9yIHdpbGwgYmUgcmFpc2VkKVxuICAgIHRlbXBsYXRlLmhhc1Jlc291cmNlKFxuICAgICAgQVdTX0VDMl9JTlNUQU5DRSh7XG4gICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBJbWFnZUlkOiBFeHRyYU1hdGNoLm5vdCgxMDApLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApO1xuICAgYGBgXG4gICAqIFNhbWUgbWV0aG9kIGFzIGBNYXRjaC5ub3RgIGJ1dCBwcm92aWRlcyB0eXBlIGhpbnRzIGFuZCB2YWxpZGF0ZSB0eXBlIG1hdGNoIFxuICAgKiBAcGFyYW0gcGF0dGVybiBcbiAgICogQHJldHVybnMgXG4gICAqL1xuICAvLyBUT0RPOiB3aHkgdGhpcyBleHByZXNzaW9uIGBUIGV4dGVuZHMgbmV2ZXIgPyBuZXZlciA6IFRgIGlzIHJlcXVpcmVkIGJ1dCB0aGlzIGlzIHJlcXVpcmVkXG4gIHN0YXRpYyBub3Q8VD4ocGF0dGVybjogQWxzb01hdGNoZXI8VCBleHRlbmRzIG5ldmVyID8gbmV2ZXIgOiBUPik6IFR5cGVkTWF0Y2hlcjxUPiB7XG4gICAgcmV0dXJuIE1hdGNoLm5vdChwYXR0ZXJuKTtcbiAgfVxuICAvKipcbiAgICogU2FtZSBtZXRob2QgYXMgYE1hdGNoLmV4YWN0YCBidXQgcHJvdmlkZXMgdHlwZSBoaW50cyBhbmQgdmFsaWRhdGUgdHlwZSBtYXRjaCBcbiAgIGBgYGpzXG4gICAgLy8gdGhpcyBpcyBhIHJpZ2h0IGNvZGVcbiAgICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZShcbiAgICAgIEFXU19FQzJfSU5TVEFOQ0Uoe1xuICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgSW5zdGFuY2VUeXBlOiBFeHRyYU1hdGNoLmV4YWN0KFwidDIubWljcm9cIiksXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICk7XG4gICAgLy8gdGhpcyBpcyBhIHdyb25nIGNvZGUodHlwZSBtaXNtYXRjaCB3aWxsIGJlIGRldGVjdGVkIGFuZCB0cy1lcnJvciB3aWxsIGJlIHJhaXNlZClcbiAgICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZShcbiAgICAgIEFXU19FQzJfSU5TVEFOQ0Uoe1xuICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgSW5zdGFuY2VUeXBlOiBFeHRyYU1hdGNoLmV4YWN0KGZhbHNlKSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKTtcbiAgIGBgYFxuICAgKiBAcGFyYW0gcGF0dGVybiBcbiAgICogQHJldHVybnMgXG4gICAqL1xuICBzdGF0aWMgZXhhY3Q8VD4ocGF0dGVybjogQWxzb01hdGNoZXI8VCBleHRlbmRzIG5ldmVyID8gbmV2ZXIgOiBUPik6IFR5cGVkTWF0Y2hlcjxUPiB7XG4gICAgcmV0dXJuIE1hdGNoLmV4YWN0KHBhdHRlcm4pO1xuICB9XG59XG4iXX0=
|
package/lib/typed-resource.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Matcher } from "aws-cdk-lib/assertions";
|
|
2
2
|
type Primitives = string | number | boolean | undefined | null | symbol | bigint | string[] | number[] | boolean[] | bigint[];
|
|
3
|
-
export type TypedMatcher<T> = Matcher;
|
|
3
|
+
export type TypedMatcher<T> = Matcher | T;
|
|
4
4
|
/**
|
|
5
5
|
* make properties of `T` asignable Matcher recirsively and other arbitrary json objects for primitive type fields
|
|
6
6
|
*/
|