@fjall/components-infrastructure 0.1.16 → 0.1.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/dist/lib/config/aws/identityCenter.d.ts +1 -2
  2. package/dist/lib/config/aws/identityCenter.js +7 -2
  3. package/dist/lib/config/aws/identityCenterGroupMembership.d.ts +10 -0
  4. package/dist/lib/config/aws/identityCenterGroupMembership.js +96 -0
  5. package/dist/lib/config/aws/identityCenterUser.js +3 -3
  6. package/dist/lib/config/aws/index.d.ts +0 -1
  7. package/dist/lib/config/aws/index.js +1 -2
  8. package/dist/lib/config/aws/organisationsAccess.d.ts +10 -0
  9. package/dist/lib/config/aws/organisationsAccess.js +40 -0
  10. package/dist/lib/patterns/aws/managedIdentityCenter.d.ts +4 -0
  11. package/dist/lib/patterns/aws/managedIdentityCenter.js +24 -0
  12. package/dist/lib/patterns/aws/managedOrganisation.d.ts +1 -2
  13. package/dist/lib/patterns/aws/managedOrganisation.js +11 -12
  14. package/package.json +22 -22
  15. package/dist/lib/config/aws/delegateHostedZoneRole.d.ts +0 -5
  16. package/dist/lib/config/aws/delegateHostedZoneRole.js +0 -77
  17. package/dist/lib/config/aws/ipamPool.d.ts +0 -5
  18. package/dist/lib/config/aws/ipamPool.js +0 -56
  19. package/dist/lib/config/aws/ipamPoolResourceShare.d.ts +0 -5
  20. package/dist/lib/config/aws/ipamPoolResourceShare.js +0 -42
  21. package/dist/lib/config/aws/ramEnableSharing.d.ts +0 -5
  22. package/dist/lib/config/aws/ramEnableSharing.js +0 -35
  23. package/dist/lib/config/aws/users.d.ts +0 -5
  24. package/dist/lib/config/aws/users.js +0 -126
  25. package/dist/lib/config/fjall/hostedZones/fjall.io.d.ts +0 -10
  26. package/dist/lib/config/fjall/hostedZones/fjall.io.js +0 -25
  27. package/dist/lib/resources/aws/constant/ecr.d.ts +0 -12
  28. package/dist/lib/resources/aws/constant/ecr.js +0 -30
  29. package/dist/lib/resources/aws/constant/vpc.d.ts +0 -26
  30. package/dist/lib/resources/aws/constant/vpc.js +0 -63
  31. package/dist/lib/resources/aws/networking/hostedZone.d.ts +0 -21
  32. package/dist/lib/resources/aws/networking/hostedZone.js +0 -68
  33. package/dist/lib/resources/aws/store/alias.d.ts +0 -5
  34. package/dist/lib/resources/aws/store/alias.js +0 -13
  35. package/dist/lib/resources/aws/store/database.d.ts +0 -18
  36. package/dist/lib/resources/aws/store/database.js +0 -33
  37. package/dist/lib/resources/aws/store/index.d.ts +0 -7
  38. package/dist/lib/resources/aws/store/index.js +0 -24
  39. package/dist/lib/resources/aws/store/kms.d.ts +0 -14
  40. package/dist/lib/resources/aws/store/kms.js +0 -34
  41. package/dist/lib/resources/aws/store/parameter.d.ts +0 -26
  42. package/dist/lib/resources/aws/store/parameter.js +0 -100
  43. package/dist/lib/resources/aws/store/rds.d.ts +0 -25
  44. package/dist/lib/resources/aws/store/rds.js +0 -132
  45. package/dist/lib/resources/aws/store/s3.d.ts +0 -11
  46. package/dist/lib/resources/aws/store/s3.js +0 -43
  47. package/dist/lib/resources/aws/store/secret.d.ts +0 -26
  48. package/dist/lib/resources/aws/store/secret.js +0 -55
@@ -1,43 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.S3PublicReadBucket = exports.S3WebsiteBucket = exports.S3Bucket = void 0;
4
- const aws_cdk_lib_1 = require("aws-cdk-lib");
5
- const aws_s3_1 = require("aws-cdk-lib/aws-s3");
6
- class S3Bucket extends aws_s3_1.Bucket {
7
- constructor(scope, id, props) {
8
- super(scope, id, {
9
- ...props,
10
- autoDeleteObjects: true,
11
- removalPolicy: props?.removalPolicy || aws_cdk_lib_1.RemovalPolicy.DESTROY,
12
- versioned: true
13
- });
14
- }
15
- }
16
- exports.S3Bucket = S3Bucket;
17
- class S3WebsiteBucket extends S3Bucket {
18
- constructor(scope, id, props) {
19
- super(scope, id, {
20
- ...props,
21
- websiteErrorDocument: "error.html",
22
- websiteIndexDocument: "index.html",
23
- publicReadAccess: true
24
- });
25
- }
26
- }
27
- exports.S3WebsiteBucket = S3WebsiteBucket;
28
- class S3PublicReadBucket extends S3Bucket {
29
- constructor(scope, id, props) {
30
- super(scope, id, {
31
- ...props,
32
- publicReadAccess: true,
33
- blockPublicAccess: new aws_s3_1.BlockPublicAccess({
34
- blockPublicAcls: false,
35
- blockPublicPolicy: false,
36
- ignorePublicAcls: false,
37
- restrictPublicBuckets: false
38
- })
39
- });
40
- }
41
- }
42
- exports.S3PublicReadBucket = S3PublicReadBucket;
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9zdG9yZS9zMy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBNEM7QUFDNUMsK0NBQTRFO0FBRzVFLE1BQWEsUUFBUyxTQUFRLGVBQU07SUFDbEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFtQjtRQUMzRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLEdBQUcsS0FBSztZQUNSLGlCQUFpQixFQUFFLElBQUk7WUFDdkIsYUFBYSxFQUFFLEtBQUssRUFBRSxhQUFhLElBQUksMkJBQWEsQ0FBQyxPQUFPO1lBQzVELFNBQVMsRUFBRSxJQUFJO1NBQ2hCLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQVRELDRCQVNDO0FBRUQsTUFBYSxlQUFnQixTQUFRLFFBQVE7SUFDM0MsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFtQjtRQUMzRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLEdBQUcsS0FBSztZQUNSLG9CQUFvQixFQUFFLFlBQVk7WUFDbEMsb0JBQW9CLEVBQUUsWUFBWTtZQUNsQyxnQkFBZ0IsRUFBRSxJQUFJO1NBQ3ZCLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQVRELDBDQVNDO0FBRUQsTUFBYSxrQkFBbUIsU0FBUSxRQUFRO0lBQzlDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBbUI7UUFDM0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixHQUFHLEtBQUs7WUFDUixnQkFBZ0IsRUFBRSxJQUFJO1lBQ3RCLGlCQUFpQixFQUFFLElBQUksMEJBQWlCLENBQUM7Z0JBQ3ZDLGVBQWUsRUFBRSxLQUFLO2dCQUN0QixpQkFBaUIsRUFBRSxLQUFLO2dCQUN4QixnQkFBZ0IsRUFBRSxLQUFLO2dCQUN2QixxQkFBcUIsRUFBRSxLQUFLO2FBQzdCLENBQUM7U0FDSCxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFiRCxnREFhQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlbW92YWxQb2xpY3kgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IEJsb2NrUHVibGljQWNjZXNzLCBCdWNrZXQsIEJ1Y2tldFByb3BzIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zM1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuZXhwb3J0IGNsYXNzIFMzQnVja2V0IGV4dGVuZHMgQnVja2V0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBCdWNrZXRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBhdXRvRGVsZXRlT2JqZWN0czogdHJ1ZSxcbiAgICAgIHJlbW92YWxQb2xpY3k6IHByb3BzPy5yZW1vdmFsUG9saWN5IHx8IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgIHZlcnNpb25lZDogdHJ1ZVxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTM1dlYnNpdGVCdWNrZXQgZXh0ZW5kcyBTM0J1Y2tldCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogQnVja2V0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgd2Vic2l0ZUVycm9yRG9jdW1lbnQ6IFwiZXJyb3IuaHRtbFwiLFxuICAgICAgd2Vic2l0ZUluZGV4RG9jdW1lbnQ6IFwiaW5kZXguaHRtbFwiLFxuICAgICAgcHVibGljUmVhZEFjY2VzczogdHJ1ZVxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTM1B1YmxpY1JlYWRCdWNrZXQgZXh0ZW5kcyBTM0J1Y2tldCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogQnVja2V0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgcHVibGljUmVhZEFjY2VzczogdHJ1ZSxcbiAgICAgIGJsb2NrUHVibGljQWNjZXNzOiBuZXcgQmxvY2tQdWJsaWNBY2Nlc3Moe1xuICAgICAgICBibG9ja1B1YmxpY0FjbHM6IGZhbHNlLFxuICAgICAgICBibG9ja1B1YmxpY1BvbGljeTogZmFsc2UsXG4gICAgICAgIGlnbm9yZVB1YmxpY0FjbHM6IGZhbHNlLFxuICAgICAgICByZXN0cmljdFB1YmxpY0J1Y2tldHM6IGZhbHNlXG4gICAgICB9KVxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -1,26 +0,0 @@
1
- import { SecretValue } from "aws-cdk-lib";
2
- import { Secret as CdkSecret, SecretStringGenerator } from "aws-cdk-lib/aws-secretsmanager";
3
- import { Construct } from "constructs";
4
- import { StackBuilder } from "../awsStack";
5
- import { KeyValue } from "../compute/ecs";
6
- import { CustomerManagedKey } from "./kms";
7
- interface SecretProps {
8
- secretName: string;
9
- secretObjectValue?: {
10
- [key: string]: SecretValue;
11
- };
12
- secretStringValue?: string;
13
- description?: string;
14
- aliasName?: string;
15
- generateSecretString?: SecretStringGenerator;
16
- tags: KeyValue;
17
- buildkiteRoleArn?: string;
18
- }
19
- export default class Secret extends Construct {
20
- readonly secret: CdkSecret;
21
- readonly secretsCustomerManagedKey: CustomerManagedKey;
22
- constructor(scope: Construct, id: string, props: SecretProps);
23
- static build(id: string, props: SecretProps): (sb: StackBuilder) => Construct;
24
- private setupBuildkitePermissions;
25
- }
26
- export {};
@@ -1,55 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const aws_cdk_lib_1 = require("aws-cdk-lib");
4
- const aws_secretsmanager_1 = require("aws-cdk-lib/aws-secretsmanager");
5
- const constructs_1 = require("constructs");
6
- const tagResource_1 = require("../../../utils/tagResource");
7
- const kms_1 = require("./kms");
8
- class Secret extends constructs_1.Construct {
9
- constructor(scope, id, props) {
10
- super(scope, id);
11
- this.secretsCustomerManagedKey = new kms_1.CustomerManagedKey(this, `${id}CustomerManagedKey`, {
12
- aliasName: `cmk/${id}`,
13
- tags: props.tags
14
- });
15
- /**
16
- * If a secretStringValue is provided, use it to create the secret.
17
- */
18
- const secretStringValue = props.secretStringValue
19
- ? {
20
- secretStringValue: aws_cdk_lib_1.SecretValue.unsafePlainText(props.secretStringValue || "")
21
- }
22
- : {};
23
- /**
24
- * If a generateSecretString is provided, use it to create the secret.
25
- * If a secretStringValue is provided, ignore the generateSecretString.
26
- */
27
- const generateSecretString = !props.secretStringValue && props.generateSecretString
28
- ? { generateSecretString: props.generateSecretString }
29
- : {};
30
- // Construct the base options for CdkSecret
31
- const secretOptions = {
32
- secretName: props.secretName,
33
- secretObjectValue: props.secretObjectValue,
34
- encryptionKey: this.secretsCustomerManagedKey.key,
35
- description: props.description,
36
- ...secretStringValue,
37
- ...generateSecretString
38
- };
39
- this.secret = new aws_secretsmanager_1.Secret(this, `${id}Secret`, secretOptions);
40
- (0, tagResource_1.default)(this.secret, props.tags);
41
- }
42
- static build(id, props) {
43
- return (sb) => {
44
- const newProps = {
45
- ...props
46
- };
47
- return new this(sb.getStack(), id, newProps);
48
- };
49
- }
50
- setupBuildkitePermissions(buildkiteRole) {
51
- this.secret.grantRead(buildkiteRole);
52
- }
53
- }
54
- exports.default = Secret;
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3Mvc3RvcmUvc2VjcmV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNkNBQTBDO0FBRTFDLHVFQUd3QztBQUN4QywyQ0FBdUM7QUFDdkMsNERBQXFEO0FBR3JELCtCQUEyQztBQWUzQyxNQUFxQixNQUFPLFNBQVEsc0JBQVM7SUFJM0MsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFrQjtRQUMxRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLHdCQUFrQixDQUNyRCxJQUFJLEVBQ0osR0FBRyxFQUFFLG9CQUFvQixFQUN6QjtZQUNFLFNBQVMsRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUN0QixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7U0FDakIsQ0FDRixDQUFDO1FBRUY7O1dBRUc7UUFDSCxNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxpQkFBaUI7WUFDL0MsQ0FBQyxDQUFDO2dCQUNFLGlCQUFpQixFQUFFLHlCQUFXLENBQUMsZUFBZSxDQUM1QyxLQUFLLENBQUMsaUJBQWlCLElBQUksRUFBRSxDQUM5QjthQUNGO1lBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVQOzs7V0FHRztRQUNILE1BQU0sb0JBQW9CLEdBQ3hCLENBQUMsS0FBSyxDQUFDLGlCQUFpQixJQUFJLEtBQUssQ0FBQyxvQkFBb0I7WUFDcEQsQ0FBQyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLG9CQUFvQixFQUFFO1lBQ3RELENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFVCwyQ0FBMkM7UUFDM0MsTUFBTSxhQUFhLEdBQUc7WUFDcEIsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVO1lBQzVCLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxpQkFBaUI7WUFDMUMsYUFBYSxFQUFFLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHO1lBQ2pELFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QixHQUFHLGlCQUFpQjtZQUNwQixHQUFHLG9CQUFvQjtTQUN4QixDQUFDO1FBRUYsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLDJCQUFTLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFFaEUsSUFBQSxxQkFBVyxFQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUNWLEVBQVUsRUFDVixLQUFrQjtRQUVsQixPQUFPLENBQUMsRUFBZ0IsRUFBRSxFQUFFO1lBQzFCLE1BQU0sUUFBUSxHQUFnQjtnQkFDNUIsR0FBRyxLQUFLO2FBQ1QsQ0FBQztZQUNGLE9BQU8sSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRU8seUJBQXlCLENBQUMsYUFBeUI7UUFDekQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdkMsQ0FBQztDQUNGO0FBbEVELHlCQWtFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlY3JldFZhbHVlIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBJR3JhbnRhYmxlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7XG4gIFNlY3JldCBhcyBDZGtTZWNyZXQsXG4gIFNlY3JldFN0cmluZ0dlbmVyYXRvclxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHRhZ1Jlc291cmNlIGZyb20gXCIuLi8uLi8uLi91dGlscy90YWdSZXNvdXJjZVwiO1xuaW1wb3J0IHsgU3RhY2tCdWlsZGVyIH0gZnJvbSBcIi4uL2F3c1N0YWNrXCI7XG5pbXBvcnQgeyBLZXlWYWx1ZSB9IGZyb20gXCIuLi9jb21wdXRlL2Vjc1wiO1xuaW1wb3J0IHsgQ3VzdG9tZXJNYW5hZ2VkS2V5IH0gZnJvbSBcIi4va21zXCI7XG5cbmludGVyZmFjZSBTZWNyZXRQcm9wcyB7XG4gIHNlY3JldE5hbWU6IHN0cmluZztcbiAgc2VjcmV0T2JqZWN0VmFsdWU/OiB7XG4gICAgW2tleTogc3RyaW5nXTogU2VjcmV0VmFsdWU7XG4gIH07XG4gIHNlY3JldFN0cmluZ1ZhbHVlPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgYWxpYXNOYW1lPzogc3RyaW5nO1xuICBnZW5lcmF0ZVNlY3JldFN0cmluZz86IFNlY3JldFN0cmluZ0dlbmVyYXRvcjtcbiAgdGFnczogS2V5VmFsdWU7XG4gIGJ1aWxka2l0ZVJvbGVBcm4/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNlY3JldCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBzZWNyZXQ6IENka1NlY3JldDtcbiAgcHVibGljIHJlYWRvbmx5IHNlY3JldHNDdXN0b21lck1hbmFnZWRLZXk6IEN1c3RvbWVyTWFuYWdlZEtleTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU2VjcmV0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5zZWNyZXRzQ3VzdG9tZXJNYW5hZ2VkS2V5ID0gbmV3IEN1c3RvbWVyTWFuYWdlZEtleShcbiAgICAgIHRoaXMsXG4gICAgICBgJHtpZH1DdXN0b21lck1hbmFnZWRLZXlgLFxuICAgICAge1xuICAgICAgICBhbGlhc05hbWU6IGBjbWsvJHtpZH1gLFxuICAgICAgICB0YWdzOiBwcm9wcy50YWdzXG4gICAgICB9XG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqIElmIGEgc2VjcmV0U3RyaW5nVmFsdWUgaXMgcHJvdmlkZWQsIHVzZSBpdCB0byBjcmVhdGUgdGhlIHNlY3JldC5cbiAgICAgKi9cbiAgICBjb25zdCBzZWNyZXRTdHJpbmdWYWx1ZSA9IHByb3BzLnNlY3JldFN0cmluZ1ZhbHVlXG4gICAgICA/IHtcbiAgICAgICAgICBzZWNyZXRTdHJpbmdWYWx1ZTogU2VjcmV0VmFsdWUudW5zYWZlUGxhaW5UZXh0KFxuICAgICAgICAgICAgcHJvcHMuc2VjcmV0U3RyaW5nVmFsdWUgfHwgXCJcIlxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgOiB7fTtcblxuICAgIC8qKlxuICAgICAqIElmIGEgZ2VuZXJhdGVTZWNyZXRTdHJpbmcgaXMgcHJvdmlkZWQsIHVzZSBpdCB0byBjcmVhdGUgdGhlIHNlY3JldC5cbiAgICAgKiBJZiBhIHNlY3JldFN0cmluZ1ZhbHVlIGlzIHByb3ZpZGVkLCBpZ25vcmUgdGhlIGdlbmVyYXRlU2VjcmV0U3RyaW5nLlxuICAgICAqL1xuICAgIGNvbnN0IGdlbmVyYXRlU2VjcmV0U3RyaW5nID1cbiAgICAgICFwcm9wcy5zZWNyZXRTdHJpbmdWYWx1ZSAmJiBwcm9wcy5nZW5lcmF0ZVNlY3JldFN0cmluZ1xuICAgICAgICA/IHsgZ2VuZXJhdGVTZWNyZXRTdHJpbmc6IHByb3BzLmdlbmVyYXRlU2VjcmV0U3RyaW5nIH1cbiAgICAgICAgOiB7fTtcblxuICAgIC8vIENvbnN0cnVjdCB0aGUgYmFzZSBvcHRpb25zIGZvciBDZGtTZWNyZXRcbiAgICBjb25zdCBzZWNyZXRPcHRpb25zID0ge1xuICAgICAgc2VjcmV0TmFtZTogcHJvcHMuc2VjcmV0TmFtZSxcbiAgICAgIHNlY3JldE9iamVjdFZhbHVlOiBwcm9wcy5zZWNyZXRPYmplY3RWYWx1ZSxcbiAgICAgIGVuY3J5cHRpb25LZXk6IHRoaXMuc2VjcmV0c0N1c3RvbWVyTWFuYWdlZEtleS5rZXksXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICAuLi5zZWNyZXRTdHJpbmdWYWx1ZSxcbiAgICAgIC4uLmdlbmVyYXRlU2VjcmV0U3RyaW5nXG4gICAgfTtcblxuICAgIHRoaXMuc2VjcmV0ID0gbmV3IENka1NlY3JldCh0aGlzLCBgJHtpZH1TZWNyZXRgLCBzZWNyZXRPcHRpb25zKTtcblxuICAgIHRhZ1Jlc291cmNlKHRoaXMuc2VjcmV0LCBwcm9wcy50YWdzKTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZChcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBTZWNyZXRQcm9wc1xuICApOiAoc2I6IFN0YWNrQnVpbGRlcikgPT4gQ29uc3RydWN0IHtcbiAgICByZXR1cm4gKHNiOiBTdGFja0J1aWxkZXIpID0+IHtcbiAgICAgIGNvbnN0IG5ld1Byb3BzOiBTZWNyZXRQcm9wcyA9IHtcbiAgICAgICAgLi4ucHJvcHNcbiAgICAgIH07XG4gICAgICByZXR1cm4gbmV3IHRoaXMoc2IuZ2V0U3RhY2soKSwgaWQsIG5ld1Byb3BzKTtcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cEJ1aWxka2l0ZVBlcm1pc3Npb25zKGJ1aWxka2l0ZVJvbGU6IElHcmFudGFibGUpIHtcbiAgICB0aGlzLnNlY3JldC5ncmFudFJlYWQoYnVpbGRraXRlUm9sZSk7XG4gIH1cbn1cbiJdfQ==