@fjall/components-infrastructure 0.88.1 → 0.88.4
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/dist/lib/app.d.ts +34 -11
- package/dist/lib/app.js +83 -39
- package/dist/lib/aspects/index.d.ts +1 -0
- package/dist/lib/aspects/index.js +6 -0
- package/dist/lib/config/aws/accountAuditRole.d.ts +20 -0
- package/dist/lib/config/aws/accountAuditRole.js +38 -0
- package/dist/lib/config/aws/accountMonitoringRole.d.ts +22 -0
- package/dist/lib/config/aws/accountMonitoringRole.js +133 -0
- package/dist/lib/config/aws/cloudTrail.d.ts +0 -3
- package/dist/lib/config/aws/cloudTrail.js +2 -2
- package/dist/lib/config/aws/disasterRecovery.js +26 -14
- package/dist/lib/config/aws/ecrDefaultImage.js +4 -3
- package/dist/lib/config/aws/identityCenter.d.ts +4 -4
- package/dist/lib/config/aws/identityCenter.js +17 -62
- package/dist/lib/config/aws/identityCenterGroupMembership.js +27 -37
- package/dist/lib/config/aws/index.d.ts +4 -7
- package/dist/lib/config/aws/index.js +5 -8
- package/dist/lib/config/aws/oidcConnector.d.ts +8 -0
- package/dist/lib/config/aws/oidcConnector.js +46 -0
- package/dist/lib/config/aws/platform.d.ts +2 -0
- package/dist/lib/config/aws/platform.js +6 -0
- package/dist/lib/config/index.d.ts +2 -0
- package/dist/lib/config/index.js +21 -0
- package/dist/lib/layers/layers/secrets-resolver/bin/resolve-secrets +30 -0
- package/dist/lib/layers/layers/secrets-resolver/bin/resolve-secrets.mjs +212 -0
- package/dist/lib/layers/secrets-resolver/bin/resolve-secrets +30 -0
- package/dist/lib/layers/secrets-resolver/bin/resolve-secrets.mjs +212 -0
- package/dist/lib/patterns/aws/account.js +45 -19
- package/dist/lib/patterns/aws/cdn.d.ts +19 -40
- package/dist/lib/patterns/aws/cdn.js +21 -17
- package/dist/lib/patterns/aws/compute.d.ts +6 -7
- package/dist/lib/patterns/aws/compute.js +7 -9
- package/dist/lib/patterns/aws/database.d.ts +9 -89
- package/dist/lib/patterns/aws/database.js +17 -40
- package/dist/lib/patterns/aws/index.d.ts +1 -1
- package/dist/lib/patterns/aws/index.js +2 -2
- package/dist/lib/patterns/aws/interfaces/cdn.d.ts +26 -0
- package/dist/lib/patterns/aws/interfaces/cdn.js +14 -0
- package/dist/lib/patterns/aws/interfaces/connector.d.ts +4 -181
- package/dist/lib/patterns/aws/interfaces/connector.js +16 -113
- package/dist/lib/patterns/aws/interfaces/index.d.ts +1 -0
- package/dist/lib/patterns/aws/interfaces/index.js +5 -2
- package/dist/lib/patterns/aws/interfaces/pattern.d.ts +6 -6
- package/dist/lib/patterns/aws/interfaces/pattern.js +1 -1
- package/dist/lib/patterns/aws/network.js +6 -9
- package/dist/lib/patterns/aws/organisation.d.ts +6 -17
- package/dist/lib/patterns/aws/organisation.js +22 -67
- package/dist/lib/patterns/aws/payload.js +11 -12
- package/dist/lib/patterns/aws/storage.d.ts +3 -2
- package/dist/lib/patterns/aws/storage.js +1 -1
- package/dist/lib/resources/aws/audit/auditRole.js +4 -4
- package/dist/lib/resources/aws/audit/index.d.ts +1 -0
- package/dist/lib/resources/aws/audit/index.js +6 -0
- package/dist/lib/resources/aws/backup/backupPlan.js +3 -2
- package/dist/lib/resources/aws/backup/backupVault.js +5 -3
- package/dist/lib/resources/aws/base/awsStack.d.ts +4 -2
- package/dist/lib/resources/aws/base/awsStack.js +8 -2
- package/dist/lib/resources/aws/cdn/cloudFront.d.ts +14 -0
- package/dist/lib/resources/aws/cdn/cloudFront.js +52 -18
- package/dist/lib/resources/aws/compute/ec2.js +18 -22
- package/dist/lib/resources/aws/compute/ecs.d.ts +9 -8
- package/dist/lib/resources/aws/compute/ecs.js +53 -41
- package/dist/lib/resources/aws/compute/index.d.ts +1 -0
- package/dist/lib/resources/aws/compute/index.js +2 -1
- package/dist/lib/resources/aws/compute/lambda.d.ts +12 -3
- package/dist/lib/resources/aws/compute/lambda.js +48 -36
- package/dist/lib/resources/aws/database/dynamodb.js +3 -13
- package/dist/lib/resources/aws/database/index.d.ts +8 -2
- package/dist/lib/resources/aws/database/index.js +19 -3
- package/dist/lib/resources/aws/database/rdsAurora.d.ts +2 -3
- package/dist/lib/resources/aws/database/rdsAurora.js +33 -69
- package/dist/lib/resources/aws/database/rdsAuroraGlobal.d.ts +6 -6
- package/dist/lib/resources/aws/database/rdsAuroraGlobal.js +25 -29
- package/dist/lib/resources/aws/database/rdsDefaults.d.ts +11 -0
- package/dist/lib/resources/aws/database/rdsDefaults.js +15 -0
- package/dist/lib/resources/aws/database/rdsHelpers.d.ts +39 -0
- package/dist/lib/resources/aws/database/rdsHelpers.js +75 -0
- package/dist/lib/resources/aws/database/rdsInstance.d.ts +7 -8
- package/dist/lib/resources/aws/database/rdsInstance.js +40 -84
- package/dist/lib/resources/aws/database/rdsProxyOutput.d.ts +7 -0
- package/dist/lib/resources/aws/database/rdsProxyOutput.js +18 -0
- package/dist/lib/resources/aws/iam/identityCenter/assignment.d.ts +0 -2
- package/dist/lib/resources/aws/iam/identityCenter/assignment.js +9 -45
- package/dist/lib/resources/aws/iam/identityCenter/group.d.ts +1 -3
- package/dist/lib/resources/aws/iam/identityCenter/group.js +7 -82
- package/dist/lib/resources/aws/iam/identityCenter/permissionSet.d.ts +1 -3
- package/dist/lib/resources/aws/iam/identityCenter/permissionSet.js +9 -93
- package/dist/lib/resources/aws/iam/index.d.ts +0 -1
- package/dist/lib/resources/aws/iam/index.js +1 -2
- package/dist/lib/resources/aws/index.d.ts +0 -1
- package/dist/lib/resources/aws/index.js +1 -2
- package/dist/lib/resources/aws/logging/cloudTrail.js +13 -3
- package/dist/lib/resources/aws/logging/index.d.ts +2 -0
- package/dist/lib/resources/aws/logging/index.js +19 -0
- package/dist/lib/resources/aws/messaging/index.d.ts +3 -2
- package/dist/lib/resources/aws/messaging/index.js +4 -3
- package/dist/lib/resources/aws/messaging/sqs.js +14 -11
- package/dist/lib/resources/aws/messaging/utils.d.ts +1 -2
- package/dist/lib/resources/aws/messaging/utils.js +3 -4
- package/dist/lib/resources/aws/monitoring/index.d.ts +0 -1
- package/dist/lib/resources/aws/monitoring/index.js +4 -17
- package/dist/lib/resources/aws/networking/hostedZone.d.ts +28 -0
- package/dist/lib/resources/aws/networking/hostedZone.js +153 -0
- package/dist/lib/resources/aws/networking/index.d.ts +2 -0
- package/dist/lib/resources/aws/networking/index.js +3 -1
- package/dist/lib/resources/aws/networking/ipamPool.js +110 -31
- package/dist/lib/resources/aws/networking/securityGroup.d.ts +5 -0
- package/dist/lib/resources/aws/networking/securityGroup.js +14 -0
- package/dist/lib/resources/aws/networking/vpc.js +9 -4
- package/dist/lib/resources/aws/organisation/costAllocationTagActivator.d.ts +17 -0
- package/dist/lib/resources/aws/organisation/costAllocationTagActivator.js +66 -0
- package/dist/lib/resources/aws/organisation/index.d.ts +1 -0
- package/dist/lib/resources/aws/organisation/index.js +4 -2
- package/dist/lib/resources/aws/secrets/index.d.ts +0 -1
- package/dist/lib/resources/aws/secrets/index.js +1 -2
- package/dist/lib/resources/aws/secrets/parameter.js +5 -3
- package/dist/lib/resources/aws/storage/ecr.d.ts +0 -1
- package/dist/lib/resources/aws/storage/ecr.js +5 -7
- package/dist/lib/resources/aws/storage/s3.d.ts +3 -3
- package/dist/lib/resources/aws/storage/s3.js +1 -1
- package/dist/lib/resources/aws/utilities/index.d.ts +5 -0
- package/dist/lib/resources/aws/utilities/index.js +22 -0
- package/dist/lib/utils/backupTierMapping.d.ts +11 -0
- package/dist/lib/utils/backupTierMapping.js +17 -0
- package/dist/lib/utils/capitaliseString.d.ts +6 -0
- package/dist/lib/utils/capitaliseString.js +10 -1
- package/dist/lib/utils/connections.d.ts +46 -0
- package/dist/lib/utils/connections.js +159 -0
- package/dist/lib/utils/connector.d.ts +183 -0
- package/dist/lib/utils/connector.js +117 -0
- package/dist/lib/utils/databaseTypes.d.ts +85 -0
- package/dist/lib/utils/databaseTypes.js +34 -0
- package/dist/lib/utils/env.d.ts +42 -0
- package/dist/lib/utils/env.js +128 -0
- package/dist/lib/utils/getConfig.d.ts +0 -2
- package/dist/lib/utils/getConfig.js +1 -4
- package/dist/lib/utils/index.d.ts +6 -0
- package/dist/lib/utils/index.js +7 -1
- package/dist/lib/utils/removalPolicy.d.ts +2 -0
- package/dist/lib/utils/removalPolicy.js +16 -0
- package/dist/lib/utils/resourceNaming.js +4 -7
- package/dist/lib/utils/standardTagsAspect.d.ts +4 -0
- package/dist/lib/utils/standardTagsAspect.js +8 -8
- package/dist/lib/utils/vpcUtils.d.ts +14 -0
- package/dist/lib/utils/vpcUtils.js +28 -0
- package/package.json +8 -8
|
@@ -7,9 +7,6 @@ const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
|
7
7
|
const awsCustomResource_1 = require("../../resources/aws/utilities/awsCustomResource");
|
|
8
8
|
const stripAndCamelCase_1 = require("../../utils/stripAndCamelCase");
|
|
9
9
|
const identityCenter_1 = require("../../resources/aws/iam/identityCenter");
|
|
10
|
-
const attachManagedPolicy_1 = require("../../resources/aws/iam/identityCenter/attachManagedPolicy");
|
|
11
|
-
const cdk_time_sleep_1 = require("cdk-time-sleep");
|
|
12
|
-
const aws_cdk_lib_2 = require("aws-cdk-lib");
|
|
13
10
|
const iam_1 = require("../../resources/aws/iam");
|
|
14
11
|
const defaultPermissionSets = {
|
|
15
12
|
AdministratorAccess: {
|
|
@@ -28,44 +25,28 @@ const defaultPermissionSets = {
|
|
|
28
25
|
class IdentityCenter extends aws_cdk_lib_1.NestedStack {
|
|
29
26
|
constructor(scope, id, props) {
|
|
30
27
|
super(scope, id, props);
|
|
31
|
-
this.
|
|
28
|
+
this.createListInstancesRole();
|
|
32
29
|
this.listIdentityCenterInstance();
|
|
33
|
-
this.
|
|
30
|
+
this.createPermissionSets(props);
|
|
34
31
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
this.identityCenterIamRole = new iam_1.Role(this, "IdentityCenterCustomResourceRole", {
|
|
32
|
+
createListInstancesRole() {
|
|
33
|
+
this.listInstancesRole = new iam_1.Role(this, "IdentityCenterCustomResourceRole", {
|
|
38
34
|
assumedBy: new aws_iam_1.ServicePrincipal("lambda.amazonaws.com"),
|
|
39
|
-
description: "
|
|
35
|
+
description: "Role for Identity Centre ListInstances custom resource",
|
|
40
36
|
managedPolicies: [
|
|
41
|
-
iam_1.ManagedPolicy.fromAwsManagedPolicyName("service-role/AWSLambdaBasicExecutionRole")
|
|
42
|
-
iam_1.ManagedPolicy.fromAwsManagedPolicyName("AWSSSOMasterAccountAdministrator")
|
|
37
|
+
iam_1.ManagedPolicy.fromAwsManagedPolicyName("service-role/AWSLambdaBasicExecutionRole")
|
|
43
38
|
],
|
|
44
39
|
inlinePolicies: {
|
|
45
|
-
|
|
40
|
+
IdentityCenterListInstancesPolicy: new aws_iam_1.PolicyDocument({
|
|
46
41
|
statements: [
|
|
47
42
|
new aws_iam_1.PolicyStatement({
|
|
48
|
-
actions: ["sso
|
|
43
|
+
actions: ["sso:ListInstances"],
|
|
49
44
|
resources: ["*"]
|
|
50
45
|
})
|
|
51
46
|
]
|
|
52
47
|
})
|
|
53
48
|
}
|
|
54
49
|
});
|
|
55
|
-
// Remove this role, or update permissions when we're ready to troubleshoot intermittent policy errors
|
|
56
|
-
// const cfnRole = this.identityCenterIamRole.node.defaultChild as CfnRole;
|
|
57
|
-
// cfnRole.addPropertyOverride("AssumeRolePolicyDocument", {
|
|
58
|
-
// Version: "2012-10-17",
|
|
59
|
-
// Statement: [
|
|
60
|
-
// {
|
|
61
|
-
// Effect: "Allow",
|
|
62
|
-
// Principal: {
|
|
63
|
-
// AWS: "*"
|
|
64
|
-
// },
|
|
65
|
-
// Action: "sts:AssumeRole"
|
|
66
|
-
// }
|
|
67
|
-
// ]
|
|
68
|
-
// });
|
|
69
50
|
}
|
|
70
51
|
listIdentityCenterInstance() {
|
|
71
52
|
const customResource = new awsCustomResource_1.AwsCustomResource(this, "ListIdentityCenterInstanceResource", {
|
|
@@ -77,17 +58,7 @@ class IdentityCenter extends aws_cdk_lib_1.NestedStack {
|
|
|
77
58
|
},
|
|
78
59
|
physicalResourceId: customResources.PhysicalResourceId.of("listIdentityCenterInstance")
|
|
79
60
|
},
|
|
80
|
-
role: this.
|
|
81
|
-
// TODO: Lock down permissions, when we're ready to troubleshoot intermittent policy errors
|
|
82
|
-
// policy: customResources.AwsCustomResourcePolicy.fromSdkCalls({
|
|
83
|
-
// resources: ["*"]
|
|
84
|
-
// }),
|
|
85
|
-
// policy: customResources.AwsCustomResourcePolicy.fromStatements([
|
|
86
|
-
// new PolicyStatement({
|
|
87
|
-
// actions: ["sso:ListInstances"],
|
|
88
|
-
// resources: ["*"]
|
|
89
|
-
// })
|
|
90
|
-
// ]),
|
|
61
|
+
role: this.listInstancesRole,
|
|
91
62
|
resourceType: "Custom::IamIdentityCenter"
|
|
92
63
|
});
|
|
93
64
|
this.identityCenterArn = customResource.getResponseField("Instances.0.InstanceArn");
|
|
@@ -103,55 +74,39 @@ class IdentityCenter extends aws_cdk_lib_1.NestedStack {
|
|
|
103
74
|
exportName: "identityStoreId"
|
|
104
75
|
});
|
|
105
76
|
}
|
|
106
|
-
|
|
77
|
+
createPermissionSets(props) {
|
|
107
78
|
for (const [name, config] of Object.entries(defaultPermissionSets)) {
|
|
108
79
|
const group = new identityCenter_1.Group(this, `${name}Group`, {
|
|
109
80
|
displayName: name,
|
|
110
81
|
identityStoreId: this.identityStoreId,
|
|
111
|
-
description: `Group for associated ${name} permission set
|
|
112
|
-
role: this.identityCenterIamRole
|
|
82
|
+
description: `Group for associated ${name} permission set`
|
|
113
83
|
});
|
|
114
84
|
const permissionSet = new identityCenter_1.PermissionSet(this, `PermissionSet${name}`, {
|
|
115
85
|
name: name,
|
|
116
86
|
instanceArn: this.identityCenterArn,
|
|
117
87
|
description: config.Description,
|
|
118
|
-
|
|
88
|
+
managedPolicies: [config.Policy],
|
|
119
89
|
tags: props.tags
|
|
120
90
|
});
|
|
121
91
|
permissionSet.node.addDependency(group);
|
|
122
|
-
const attachManagedPolicy = new attachManagedPolicy_1.AttachManagedPolicy(this, `AttachManagedPolicy${name}`, {
|
|
123
|
-
instanceArn: this.identityCenterArn,
|
|
124
|
-
permissionSet: name,
|
|
125
|
-
permissionSetArn: permissionSet.getPermissionSetArn(),
|
|
126
|
-
managedPolicyArn: config.Policy,
|
|
127
|
-
role: this.identityCenterIamRole
|
|
128
|
-
});
|
|
129
|
-
attachManagedPolicy.node.addDependency(permissionSet);
|
|
130
92
|
new aws_cdk_lib_1.CfnOutput(this, `${name}GroupId`, {
|
|
131
93
|
key: `${name}GroupId`,
|
|
132
94
|
value: group.getGroupId(),
|
|
133
95
|
exportName: `${name}GroupId`
|
|
134
96
|
});
|
|
135
97
|
for (const [accountName, accountId] of Object.entries(props.accounts)) {
|
|
136
|
-
const permissionSetArn = permissionSet.getPermissionSetArn();
|
|
137
|
-
const groupId = group.getGroupId();
|
|
138
98
|
const assignment = new identityCenter_1.Assignment(this, `${(0, stripAndCamelCase_1.stripAndCamelCase)(accountName)}${name}Assignment`, {
|
|
139
99
|
instanceArn: this.identityCenterArn,
|
|
140
|
-
permissionSetArn:
|
|
100
|
+
permissionSetArn: permissionSet.getPermissionSetArn(),
|
|
141
101
|
principalType: "GROUP",
|
|
142
|
-
principalId:
|
|
102
|
+
principalId: group.getGroupId(),
|
|
143
103
|
targetType: "AWS_ACCOUNT",
|
|
144
|
-
targetId: accountId
|
|
145
|
-
role: this.identityCenterIamRole
|
|
146
|
-
});
|
|
147
|
-
const sleep = new cdk_time_sleep_1.TimeSleep(this, `${(0, stripAndCamelCase_1.stripAndCamelCase)(accountName)}${name}AssignmentSleep`, {
|
|
148
|
-
destroyDuration: aws_cdk_lib_2.Duration.seconds(60)
|
|
104
|
+
targetId: accountId
|
|
149
105
|
});
|
|
150
|
-
|
|
151
|
-
assignment.node.addDependency(sleep);
|
|
106
|
+
assignment.node.addDependency(permissionSet);
|
|
152
107
|
}
|
|
153
108
|
}
|
|
154
109
|
}
|
|
155
110
|
}
|
|
156
111
|
exports.IdentityCenter = IdentityCenter;
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHlDZW50ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvY29uZmlnL2F3cy9pZGVudGl0eUNlbnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxnRUFBZ0U7QUFFaEUsaURBSTZCO0FBQzdCLDZDQUE0RTtBQUM1RSx1RkFBb0Y7QUFFcEYscUVBQWtFO0FBQ2xFLDJFQUlnRDtBQUNoRCxvR0FBaUc7QUFDakcsbURBQTJDO0FBQzNDLDZDQUF1QztBQUN2QyxpREFBOEQ7QUFZOUQsTUFBTSxxQkFBcUIsR0FBd0M7SUFDakUsbUJBQW1CLEVBQUU7UUFDbkIsTUFBTSxFQUFFLDZDQUE2QztRQUNyRCxXQUFXLEVBQUUsMERBQTBEO0tBQ3hFO0lBQ0QsY0FBYyxFQUFFO1FBQ2QsTUFBTSxFQUFFLHdDQUF3QztRQUNoRCxXQUFXLEVBQUUscURBQXFEO0tBQ25FO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsTUFBTSxFQUFFLGtEQUFrRDtRQUMxRCxXQUFXLEVBQUUsOENBQThDO0tBQzVEO0NBQ0YsQ0FBQztBQUVGLE1BQWEsY0FBZSxTQUFRLHlCQUFXO0lBSzdDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMEI7UUFDbEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCwyQkFBMkI7UUFDekIsc0dBQXNHO1FBQ3RHLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLFVBQUksQ0FDbkMsSUFBSSxFQUNKLGtDQUFrQyxFQUNsQztZQUNFLFNBQVMsRUFBRSxJQUFJLDBCQUFnQixDQUFDLHNCQUFzQixDQUFDO1lBQ3ZELFdBQVcsRUFBRSx3REFBd0Q7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LENBQUMsR0FBRyxJQUFJLFlBQVksRUFDcEQ7b0JBQ0UsV0FBVyxFQUFFLElBQUksQ0FBQyxpQkFBaUI7b0JBQ25DLGdCQUFnQixFQUFFLGdCQUFnQjtvQkFDbEMsYUFBYSxFQUFFLE9BQU87b0JBQ3RCLFdBQVcsRUFBRSxPQUFPO29CQUNwQixVQUFVLEVBQUUsYUFBYTtvQkFDekIsUUFBUSxFQUFFLFNBQVM7b0JBQ25CLElBQUksRUFBRSxJQUFJLENBQUMscUJBQXFCO2lCQUNqQyxDQUNGLENBQUM7Z0JBRUYsTUFBTSxLQUFLLEdBQUcsSUFBSSwwQkFBUyxDQUN6QixJQUFJLEVBQ0osR0FBRyxJQUFBLHFDQUFpQixFQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksaUJBQWlCLEVBQ3pEO29CQUNFLGVBQWUsRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7aUJBQ3RDLENBQ0YsQ0FBQztnQkFDRixLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2dCQUM5QyxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2QyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7Q0FDRjtBQTNLRCx3Q0EyS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjdXN0b21SZXNvdXJjZXMgZnJvbSBcImF3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXNcIjtcbmltcG9ydCB7IHR5cGUgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7XG4gIFBvbGljeURvY3VtZW50LFxuICBQb2xpY3lTdGF0ZW1lbnQsXG4gIFNlcnZpY2VQcmluY2lwYWxcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IENmbk91dHB1dCwgTmVzdGVkU3RhY2ssIHR5cGUgTmVzdGVkU3RhY2tQcm9wcyB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQXdzQ3VzdG9tUmVzb3VyY2UgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy91dGlsaXRpZXMvYXdzQ3VzdG9tUmVzb3VyY2VcIjtcbmltcG9ydCB7IHR5cGUgS2V5VmFsdWUgfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcbmltcG9ydCB7IHN0cmlwQW5kQ2FtZWxDYXNlIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3N0cmlwQW5kQ2FtZWxDYXNlXCI7XG5pbXBvcnQge1xuICBHcm91cCxcbiAgUGVybWlzc2lvblNldCxcbiAgQXNzaWdubWVudFxufSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9pYW0vaWRlbnRpdHlDZW50ZXJcIjtcbmltcG9ydCB7IEF0dGFjaE1hbmFnZWRQb2xpY3kgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9pYW0vaWRlbnRpdHlDZW50ZXIvYXR0YWNoTWFuYWdlZFBvbGljeVwiO1xuaW1wb3J0IHsgVGltZVNsZWVwIH0gZnJvbSBcImNkay10aW1lLXNsZWVwXCI7XG5pbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgTWFuYWdlZFBvbGljeSwgUm9sZSB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2lhbVwiO1xuXG5pbnRlcmZhY2UgSWRlbnRpdHlDZW50ZXJQcm9wcyBleHRlbmRzIE5lc3RlZFN0YWNrUHJvcHMge1xuICBhY2NvdW50czogS2V5VmFsdWU7XG4gIHRhZ3M/OiBLZXlWYWx1ZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBlcm1pc3Npb25TZXRDb25maWcge1xuICBQb2xpY3k6IHN0cmluZztcbiAgRGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbmNvbnN0IGRlZmF1bHRQZXJtaXNzaW9uU2V0czogUmVjb3JkPHN0cmluZywgUGVybWlzc2lvblNldENvbmZpZz4gPSB7XG4gIEFkbWluaXN0cmF0b3JBY2Nlc3M6IHtcbiAgICBQb2xpY3k6IFwiYXJuOmF3czppYW06OmF3czpwb2xpY3kvQWRtaW5pc3RyYXRvckFjY2Vzc1wiLFxuICAgIERlc2NyaXB0aW9uOiBcIlBlcm1pc3Npb24gc2V0IGZvciBhc3NvY2lhdGVkIEFkbWluaXN0cmF0b3JBY2Nlc3MgcG9saWN5XCJcbiAgfSxcbiAgUmVhZE9ubHlBY2Nlc3M6IHtcbiAgICBQb2xpY3k6IFwiYXJuOmF3czppYW06OmF3czpwb2xpY3kvUmVhZE9ubHlBY2Nlc3NcIixcbiAgICBEZXNjcmlwdGlvbjogXCJQZXJtaXNzaW9uIHNldCBmb3IgYXNzb2NpYXRlZCBSZWFkT25seUFjY2VzcyBwb2xpY3lcIlxuICB9LFxuICBCaWxsaW5nOiB7XG4gICAgUG9saWN5OiBcImFybjphd3M6aWFtOjphd3M6cG9saWN5L0FXU0JpbGxpbmdSZWFkT25seUFjY2Vzc1wiLFxuICAgIERlc2NyaXB0aW9uOiBcIlBlcm1pc3Npb24gc2V0IGZvciBhc3NvY2lhdGVkIEJpbGxpbmcgcG9saWN5XCJcbiAgfVxufTtcblxuZXhwb3J0IGNsYXNzIElkZW50aXR5Q2VudGVyIGV4dGVuZHMgTmVzdGVkU3RhY2sge1xuICBwdWJsaWMgaWRlbnRpdHlTdG9yZUlkITogc3RyaW5nO1xuICBwdWJsaWMgaWRlbnRpdHlDZW50ZXJBcm4hOiBzdHJpbmc7XG4gIHByaXZhdGUgaWRlbnRpdHlDZW50ZXJJYW1Sb2xlITogUm9sZTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogSWRlbnRpdHlDZW50ZXJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgdGhpcy5jcmVhdGVJZGVudGl0eUNlbnRlcklhbVJvbGUoKTtcbiAgICB0aGlzLmxpc3RJZGVudGl0eUNlbnRlckluc3RhbmNlKCk7XG4gICAgdGhpcy5jcmVhdGVQZXJtaXNzaW9uU2V0KHByb3BzKTtcbiAgfVxuXG4gIGNyZWF0ZUlkZW50aXR5Q2VudGVySWFtUm9sZSgpIHtcbiAgICAvLyBSZW1vdmUgdGhpcyByb2xlLCBvciB1cGRhdGUgcGVybWlzc2lvbnMgd2hlbiB3ZSdyZSByZWFkeSB0byB0cm91Ymxlc2hvb3QgaW50ZXJtaXR0ZW50IHBvbGljeSBlcnJvcnNcbiAgICB0aGlzLmlkZW50aXR5Q2VudGVySWFtUm9sZSA9IG5ldyBSb2xlKFxuICAgICAgdGhpcyxcbiAgICAgIFwiSWRlbnRpdHlDZW50ZXJDdXN0b21SZXNvdXJjZVJvbGVcIixcbiAgICAgIHtcbiAgICAgICAgYXNzdW1lZEJ5OiBuZXcgU2VydmljZVByaW5jaXBhbChcImxhbWJkYS5hbWF6b25hd3MuY29tXCIpLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJTaGFyZWQgcm9sZSBmb3IgYWxsIElkZW50aXR5IENlbnRlciBBd3NDdXN0b21SZXNvdXJjZXNcIixcbiAgICAgICAgbWFuYWdlZFBvbGljaWVzOiBbXG4gICAgICAgICAgTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoXG4gICAgICAgICAgICBcInNlcnZpY2Utcm9sZS9BV1NMYW1iZGFCYXNpY0V4ZWN1dGlvblJvbGVcIlxuICAgICAgICAgICksXG4gICAgICAgICAgTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoXG4gICAgICAgICAgICBcIkFXU1NTT01hc3RlckFjY291bnRBZG1pbmlzdHJhdG9yXCJcbiAgICAgICAgICApXG4gICAgICAgIF0sXG4gICAgICAgIGlubGluZVBvbGljaWVzOiB7XG4gICAgICAgICAgSWRlbnRpdHlDZW50ZXJDdXN0b21SZXNvdXJjZVBvbGljeTogbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgICAgYWN0aW9uczogW1wic3NvOipcIiwgXCJpYW06KlwiXSxcbiAgICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgICAvLyBSZW1vdmUgdGhpcyByb2xlLCBvciB1cGRhdGUgcGVybWlzc2lvbnMgd2hlbiB3ZSdyZSByZWFkeSB0byB0cm91Ymxlc2hvb3QgaW50ZXJtaXR0ZW50IHBvbGljeSBlcnJvcnNcbiAgICAvLyBjb25zdCBjZm5Sb2xlID0gdGhpcy5pZGVudGl0eUNlbnRlcklhbVJvbGUubm9kZS5kZWZhdWx0Q2hpbGQgYXMgQ2ZuUm9sZTtcbiAgICAvLyBjZm5Sb2xlLmFkZFByb3BlcnR5T3ZlcnJpZGUoXCJBc3N1bWVSb2xlUG9saWN5RG9jdW1lbnRcIiwge1xuICAgIC8vICAgVmVyc2lvbjogXCIyMDEyLTEwLTE3XCIsXG4gICAgLy8gICBTdGF0ZW1lbnQ6IFtcbiAgICAvLyAgICAge1xuICAgIC8vICAgICAgIEVmZmVjdDogXCJBbGxvd1wiLFxuICAgIC8vICAgICAgIFByaW5jaXBhbDoge1xuICAgIC8vICAgICAgICAgQVdTOiBcIipcIlxuICAgIC8vICAgICAgIH0sXG4gICAgLy8gICAgICAgQWN0aW9uOiBcInN0czpBc3N1bWVSb2xlXCJcbiAgICAvLyAgICAgfVxuICAgIC8vICAgXVxuICAgIC8vIH0pO1xuICB9XG5cbiAgbGlzdElkZW50aXR5Q2VudGVySW5zdGFuY2UoKSB7XG4gICAgY29uc3QgY3VzdG9tUmVzb3VyY2UgPSBuZXcgQXdzQ3VzdG9tUmVzb3VyY2UoXG4gICAgICB0aGlzLFxuICAgICAgXCJMaXN0SWRlbnRpdHlDZW50ZXJJbnN0YW5jZVJlc291cmNlXCIsXG4gICAgICB7XG4gICAgICAgIG9uQ3JlYXRlOiB7XG4gICAgICAgICAgc2VydmljZTogXCJzc28tYWRtaW5cIixcbiAgICAgICAgICBhY3Rpb246IFwiTGlzdEluc3RhbmNlc0NvbW1hbmRcIixcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICBNYXhSZXN1bHRzOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IGN1c3RvbVJlc291cmNlcy5QaHlzaWNhbFJlc291cmNlSWQub2YoXG4gICAgICAgICAgICBcImxpc3RJZGVudGl0eUNlbnRlckluc3RhbmNlXCJcbiAgICAgICAgICApXG4gICAgICAgIH0sXG4gICAgICAgIHJvbGU6IHRoaXMuaWRlbnRpdHlDZW50ZXJJYW1Sb2xlLFxuICAgICAgICAvLyBUT0RPOiBMb2NrIGRvd24gcGVybWlzc2lvbnMsIHdoZW4gd2UncmUgcmVhZHkgdG8gdHJvdWJsZXNob290IGludGVybWl0dGVudCBwb2xpY3kgZXJyb3JzXG4gICAgICAgIC8vIHBvbGljeTogY3VzdG9tUmVzb3VyY2VzLkF3c0N1c3RvbVJlc291cmNlUG9saWN5LmZyb21TZGtDYWxscyh7XG4gICAgICAgIC8vICAgcmVzb3VyY2VzOiBbXCIqXCJdXG4gICAgICAgIC8vIH0pLFxuICAgICAgICAvLyBwb2xpY3k6IGN1c3RvbVJlc291cmNlcy5Bd3NDdXN0b21SZXNvdXJjZVBvbGljeS5mcm9tU3RhdGVtZW50cyhbXG4gICAgICAgIC8vICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIC8vICAgICBhY3Rpb25zOiBbXCJzc286TGlzdEluc3RhbmNlc1wiXSxcbiAgICAgICAgLy8gICAgIHJlc291cmNlczogW1wiKlwiXVxuICAgICAgICAvLyAgIH0pXG4gICAgICAgIC8vIF0pLFxuICAgICAgICByZXNvdXJjZVR5cGU6IFwiQ3VzdG9tOjpJYW1JZGVudGl0eUNlbnRlclwiXG4gICAgICB9XG4gICAgKTtcblxuICAgIHRoaXMuaWRlbnRpdHlDZW50ZXJBcm4gPSBjdXN0b21SZXNvdXJjZS5nZXRSZXNwb25zZUZpZWxkKFxuICAgICAgXCJJbnN0YW5jZXMuMC5JbnN0YW5jZUFyblwiXG4gICAgKTtcbiAgICB0aGlzLmlkZW50aXR5U3RvcmVJZCA9IGN1c3RvbVJlc291cmNlLmdldFJlc3BvbnNlRmllbGQoXG4gICAgICBcIkluc3RhbmNlcy4wLklkZW50aXR5U3RvcmVJZFwiXG4gICAgKTtcbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIFwiSWRlbnRpdHlDZW50ZXJBcm5PdXRwdXRcIiwge1xuICAgICAga2V5OiBcImlkZW50aXR5Q2VudGVyQXJuXCIsXG4gICAgICB2YWx1ZTogdGhpcy5pZGVudGl0eUNlbnRlckFybixcbiAgICAgIGV4cG9ydE5hbWU6IFwiaWRlbnRpdHlDZW50ZXJBcm5cIlxuICAgIH0pO1xuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgXCJJZGVudGl0eVN0b3JlSWRPdXRwdXRcIiwge1xuICAgICAga2V5OiBcImlkZW50aXR5U3RvcmVJRFwiLFxuICAgICAgdmFsdWU6IHRoaXMuaWRlbnRpdHlTdG9yZUlkLFxuICAgICAgZXhwb3J0TmFtZTogXCJpZGVudGl0eVN0b3JlSWRcIlxuICAgIH0pO1xuICB9XG5cbiAgY3JlYXRlUGVybWlzc2lvblNldChwcm9wczogSWRlbnRpdHlDZW50ZXJQcm9wcykge1xuICAgIGZvciAoY29uc3QgW25hbWUsIGNvbmZpZ10gb2YgT2JqZWN0LmVudHJpZXMoZGVmYXVsdFBlcm1pc3Npb25TZXRzKSkge1xuICAgICAgY29uc3QgZ3JvdXAgPSBuZXcgR3JvdXAodGhpcywgYCR7bmFtZX1Hcm91cGAsIHtcbiAgICAgICAgZGlzcGxheU5hbWU6IG5hbWUsXG4gICAgICAgIGlkZW50aXR5U3RvcmVJZDogdGhpcy5pZGVudGl0eVN0b3JlSWQsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgR3JvdXAgZm9yIGFzc29jaWF0ZWQgJHtuYW1lfSBwZXJtaXNzaW9uIHNldGAsXG4gICAgICAgIHJvbGU6IHRoaXMuaWRlbnRpdHlDZW50ZXJJYW1Sb2xlXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgcGVybWlzc2lvblNldCA9IG5ldyBQZXJtaXNzaW9uU2V0KHRoaXMsIGBQZXJtaXNzaW9uU2V0JHtuYW1lfWAsIHtcbiAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgaW5zdGFuY2VBcm46IHRoaXMuaWRlbnRpdHlDZW50ZXJBcm4sXG4gICAgICAgIGRlc2NyaXB0aW9uOiBjb25maWcuRGVzY3JpcHRpb24sXG4gICAgICAgIHJvbGU6IHRoaXMuaWRlbnRpdHlDZW50ZXJJYW1Sb2xlLFxuICAgICAgICB0YWdzOiBwcm9wcy50YWdzXG4gICAgICB9KTtcbiAgICAgIHBlcm1pc3Npb25TZXQubm9kZS5hZGREZXBlbmRlbmN5KGdyb3VwKTtcblxuICAgICAgY29uc3QgYXR0YWNoTWFuYWdlZFBvbGljeSA9IG5ldyBBdHRhY2hNYW5hZ2VkUG9saWN5KFxuICAgICAgICB0aGlzLFxuICAgICAgICBgQXR0YWNoTWFuYWdlZFBvbGljeSR7bmFtZX1gLFxuICAgICAgICB7XG4gICAgICAgICAgaW5zdGFuY2VBcm46IHRoaXMuaWRlbnRpdHlDZW50ZXJBcm4sXG4gICAgICAgICAgcGVybWlzc2lvblNldDogbmFtZSxcbiAgICAgICAgICBwZXJtaXNzaW9uU2V0QXJuOiBwZXJtaXNzaW9uU2V0LmdldFBlcm1pc3Npb25TZXRBcm4oKSxcbiAgICAgICAgICBtYW5hZ2VkUG9saWN5QXJuOiBjb25maWcuUG9saWN5LFxuICAgICAgICAgIHJvbGU6IHRoaXMuaWRlbnRpdHlDZW50ZXJJYW1Sb2xlXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICBhdHRhY2hNYW5hZ2VkUG9saWN5Lm5vZGUuYWRkRGVwZW5kZW5jeShwZXJtaXNzaW9uU2V0KTtcblxuICAgICAgbmV3IENmbk91dHB1dCh0aGlzLCBgJHtuYW1lfUdyb3VwSWRgLCB7XG4gICAgICAgIGtleTogYCR7bmFtZX1Hcm91cElkYCxcbiAgICAgICAgdmFsdWU6IGdyb3VwLmdldEdyb3VwSWQoKSxcbiAgICAgICAgZXhwb3J0TmFtZTogYCR7bmFtZX1Hcm91cElkYFxuICAgICAgfSk7XG5cbiAgICAgIGZvciAoY29uc3QgW2FjY291bnROYW1lLCBhY2NvdW50SWRdIG9mIE9iamVjdC5lbnRyaWVzKHByb3BzLmFjY291bnRzKSkge1xuICAgICAgICBjb25zdCBwZXJtaXNzaW9uU2V0QXJuID0gcGVybWlzc2lvblNldC5nZXRQZXJtaXNzaW9uU2V0QXJuKCk7XG4gICAgICAgIGNvbnN0IGdyb3VwSWQgPSBncm91cC5nZXRHcm91cElkKCk7XG4gICAgICAgIGNvbnN0IGFzc2lnbm1lbnQgPSBuZXcgQXNzaWdubWVudChcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIGAke3N0cmlwQW5kQ2FtZWxDYXNlKGFjY291bnROYW1lKX0ke25hbWV9QXNzaWdubWVudGAsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaW5zdGFuY2VBcm46IHRoaXMuaWRlbnRpdHlDZW50ZXJBcm4sXG4gICAgICAgICAgICBwZXJtaXNzaW9uU2V0QXJuOiBwZXJtaXNzaW9uU2V0QXJuLFxuICAgICAgICAgICAgcHJpbmNpcGFsVHlwZTogXCJHUk9VUFwiLFxuICAgICAgICAgICAgcHJpbmNpcGFsSWQ6IGdyb3VwSWQsXG4gICAgICAgICAgICB0YXJnZXRUeXBlOiBcIkFXU19BQ0NPVU5UXCIsXG4gICAgICAgICAgICB0YXJnZXRJZDogYWNjb3VudElkLFxuICAgICAgICAgICAgcm9sZTogdGhpcy5pZGVudGl0eUNlbnRlcklhbVJvbGVcbiAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3Qgc2xlZXAgPSBuZXcgVGltZVNsZWVwKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgYCR7c3RyaXBBbmRDYW1lbENhc2UoYWNjb3VudE5hbWUpfSR7bmFtZX1Bc3NpZ25tZW50U2xlZXBgLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRlc3Ryb3lEdXJhdGlvbjogRHVyYXRpb24uc2Vjb25kcyg2MClcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIHNsZWVwLm5vZGUuYWRkRGVwZW5kZW5jeShhdHRhY2hNYW5hZ2VkUG9saWN5KTtcbiAgICAgICAgYXNzaWdubWVudC5ub2RlLmFkZERlcGVuZGVuY3koc2xlZXApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHlDZW50ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvY29uZmlnL2F3cy9pZGVudGl0eUNlbnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxnRUFBZ0U7QUFFaEUsaURBSTZCO0FBQzdCLDZDQUE0RTtBQUM1RSx1RkFBb0Y7QUFFcEYscUVBQWtFO0FBQ2xFLDJFQUlnRDtBQUNoRCxpREFBOEQ7QUFZOUQsTUFBTSxxQkFBcUIsR0FBd0M7SUFDakUsbUJBQW1CLEVBQUU7UUFDbkIsTUFBTSxFQUFFLDZDQUE2QztRQUNyRCxXQUFXLEVBQUUsMERBQTBEO0tBQ3hFO0lBQ0QsY0FBYyxFQUFFO1FBQ2QsTUFBTSxFQUFFLHdDQUF3QztRQUNoRCxXQUFXLEVBQUUscURBQXFEO0tBQ25FO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsTUFBTSxFQUFFLGtEQUFrRDtRQUMxRCxXQUFXLEVBQUUsOENBQThDO0tBQzVEO0NBQ0YsQ0FBQztBQUVGLE1BQWEsY0FBZSxTQUFRLHlCQUFXO0lBSzdDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMEI7UUFDbEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFTyx1QkFBdUI7UUFDN0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksVUFBSSxDQUMvQixJQUFJLEVBQ0osa0NBQWtDLEVBQ2xDO1lBQ0UsU0FBUyxFQUFFLElBQUksMEJBQWdCLENBQUMsc0JBQXNCLENBQUM7WUFDdkQsV0FBVyxFQUFFLHdEQUF3RDtZQUNyRSxlQUFlLEVBQUU7Z0JBQ2YsbUJBQWEsQ0FBQyx3QkFBd0IsQ0FDcEMsMENBQTBD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QUFDO2dCQUN0RSxNQUFNLFVBQVUsR0FBRyxJQUFJLDJCQUFVLENBQy9CLElBQUksRUFDSixHQUFHLElBQUEscUNBQWlCLEVBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxZQUFZLEVBQ3BEO29CQUNFLFdBQVcsRUFBRSxJQUFJLENBQUMsaUJBQWlCO29CQUNuQyxnQkFBZ0IsRUFBRSxhQUFhLENBQUMsbUJBQW1CLEVBQUU7b0JBQ3JELGFBQWEsRUFBRSxPQUFPO29CQUN0QixXQUFXLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRTtvQkFDL0IsVUFBVSxFQUFFLGFBQWE7b0JBQ3pCLFFBQVEsRUFBRSxTQUFTO2lCQUNwQixDQUNGLENBQUM7Z0JBQ0YsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDL0MsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFySEQsd0NBcUhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY3VzdG9tUmVzb3VyY2VzIGZyb20gXCJhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzXCI7XG5pbXBvcnQgeyB0eXBlIENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge1xuICBQb2xpY3lEb2N1bWVudCxcbiAgUG9saWN5U3RhdGVtZW50LFxuICBTZXJ2aWNlUHJpbmNpcGFsXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgeyBDZm5PdXRwdXQsIE5lc3RlZFN0YWNrLCB0eXBlIE5lc3RlZFN0YWNrUHJvcHMgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IEF3c0N1c3RvbVJlc291cmNlIH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvdXRpbGl0aWVzL2F3c0N1c3RvbVJlc291cmNlXCI7XG5pbXBvcnQgeyB0eXBlIEtleVZhbHVlIH0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5pbXBvcnQgeyBzdHJpcEFuZENhbWVsQ2FzZSB9IGZyb20gXCIuLi8uLi91dGlscy9zdHJpcEFuZENhbWVsQ2FzZVwiO1xuaW1wb3J0IHtcbiAgR3JvdXAsXG4gIFBlcm1pc3Npb25TZXQsXG4gIEFzc2lnbm1lbnRcbn0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvaWFtL2lkZW50aXR5Q2VudGVyXCI7XG5pbXBvcnQgeyBNYW5hZ2VkUG9saWN5LCBSb2xlIH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvaWFtXCI7XG5cbmludGVyZmFjZSBJZGVudGl0eUNlbnRlclByb3BzIGV4dGVuZHMgTmVzdGVkU3RhY2tQcm9wcyB7XG4gIGFjY291bnRzOiBLZXlWYWx1ZTtcbiAgdGFncz86IEtleVZhbHVlW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGVybWlzc2lvblNldENvbmZpZyB7XG4gIFBvbGljeTogc3RyaW5nO1xuICBEZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuY29uc3QgZGVmYXVsdFBlcm1pc3Npb25TZXRzOiBSZWNvcmQ8c3RyaW5nLCBQZXJtaXNzaW9uU2V0Q29uZmlnPiA9IHtcbiAgQWRtaW5pc3RyYXRvckFjY2Vzczoge1xuICAgIFBvbGljeTogXCJhcm46YXdzOmlhbTo6YXdzOnBvbGljeS9BZG1pbmlzdHJhdG9yQWNjZXNzXCIsXG4gICAgRGVzY3JpcHRpb246IFwiUGVybWlzc2lvbiBzZXQgZm9yIGFzc29jaWF0ZWQgQWRtaW5pc3RyYXRvckFjY2VzcyBwb2xpY3lcIlxuICB9LFxuICBSZWFkT25seUFjY2Vzczoge1xuICAgIFBvbGljeTogXCJhcm46YXdzOmlhbTo6YXdzOnBvbGljeS9SZWFkT25seUFjY2Vzc1wiLFxuICAgIERlc2NyaXB0aW9uOiBcIlBlcm1pc3Npb24gc2V0IGZvciBhc3NvY2lhdGVkIFJlYWRPbmx5QWNjZXNzIHBvbGljeVwiXG4gIH0sXG4gIEJpbGxpbmc6IHtcbiAgICBQb2xpY3k6IFwiYXJuOmF3czppYW06OmF3czpwb2xpY3kvQVdTQmlsbGluZ1JlYWRPbmx5QWNjZXNzXCIsXG4gICAgRGVzY3JpcHRpb246IFwiUGVybWlzc2lvbiBzZXQgZm9yIGFzc29jaWF0ZWQgQmlsbGluZyBwb2xpY3lcIlxuICB9XG59O1xuXG5leHBvcnQgY2xhc3MgSWRlbnRpdHlDZW50ZXIgZXh0ZW5kcyBOZXN0ZWRTdGFjayB7XG4gIHB1YmxpYyBpZGVudGl0eVN0b3JlSWQhOiBzdHJpbmc7XG4gIHB1YmxpYyBpZGVudGl0eUNlbnRlckFybiE6IHN0cmluZztcbiAgcHJpdmF0ZSBsaXN0SW5zdGFuY2VzUm9sZSE6IFJvbGU7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IElkZW50aXR5Q2VudGVyUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIHRoaXMuY3JlYXRlTGlzdEluc3RhbmNlc1JvbGUoKTtcbiAgICB0aGlzLmxpc3RJZGVudGl0eUNlbnRlckluc3RhbmNlKCk7XG4gICAgdGhpcy5jcmVhdGVQZXJtaXNzaW9uU2V0cyhwcm9wcyk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUxpc3RJbnN0YW5jZXNSb2xlKCkge1xuICAgIHRoaXMubGlzdEluc3RhbmNlc1JvbGUgPSBuZXcgUm9sZShcbiAgICAgIHRoaXMsXG4gICAgICBcIklkZW50aXR5Q2VudGVyQ3VzdG9tUmVzb3VyY2VSb2xlXCIsXG4gICAgICB7XG4gICAgICAgIGFzc3VtZWRCeTogbmV3IFNlcnZpY2VQcmluY2lwYWwoXCJsYW1iZGEuYW1hem9uYXdzLmNvbVwiKSxcbiAgICAgICAgZGVzY3JpcHRpb246IFwiUm9sZSBmb3IgSWRlbnRpdHkgQ2VudHJlIExpc3RJbnN0YW5jZXMgY3VzdG9tIHJlc291cmNlXCIsXG4gICAgICAgIG1hbmFnZWRQb2xpY2llczogW1xuICAgICAgICAgIE1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKFxuICAgICAgICAgICAgXCJzZXJ2aWNlLXJvbGUvQVdTTGFtYmRhQmFzaWNFeGVjdXRpb25Sb2xlXCJcbiAgICAgICAgICApXG4gICAgICAgIF0sXG4gICAgICAgIGlubGluZVBvbGljaWVzOiB7XG4gICAgICAgICAgSWRlbnRpdHlDZW50ZXJMaXN0SW5zdGFuY2VzUG9saWN5OiBuZXcgUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXCJzc286TGlzdEluc3RhbmNlc1wiXSxcbiAgICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdElkZW50aXR5Q2VudGVySW5zdGFuY2UoKSB7XG4gICAgY29uc3QgY3VzdG9tUmVzb3VyY2UgPSBuZXcgQXdzQ3VzdG9tUmVzb3VyY2UoXG4gICAgICB0aGlzLFxuICAgICAgXCJMaXN0SWRlbnRpdHlDZW50ZXJJbnN0YW5jZVJlc291cmNlXCIsXG4gICAgICB7XG4gICAgICAgIG9uQ3JlYXRlOiB7XG4gICAgICAgICAgc2VydmljZTogXCJzc28tYWRtaW5cIixcbiAgICAgICAgICBhY3Rpb246IFwiTGlzdEluc3RhbmNlc0NvbW1hbmRcIixcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICBNYXhSZXN1bHRzOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IGN1c3RvbVJlc291cmNlcy5QaHlzaWNhbFJlc291cmNlSWQub2YoXG4gICAgICAgICAgICBcImxpc3RJZGVudGl0eUNlbnRlckluc3RhbmNlXCJcbiAgICAgICAgICApXG4gICAgICAgIH0sXG4gICAgICAgIHJvbGU6IHRoaXMubGlzdEluc3RhbmNlc1JvbGUsXG4gICAgICAgIHJlc291cmNlVHlwZTogXCJDdXN0b206OklhbUlkZW50aXR5Q2VudGVyXCJcbiAgICAgIH1cbiAgICApO1xuXG4gICAgdGhpcy5pZGVudGl0eUNlbnRlckFybiA9IGN1c3RvbVJlc291cmNlLmdldFJlc3BvbnNlRmllbGQoXG4gICAgICBcIkluc3RhbmNlcy4wLkluc3RhbmNlQXJuXCJcbiAgICApO1xuICAgIHRoaXMuaWRlbnRpdHlTdG9yZUlkID0gY3VzdG9tUmVzb3VyY2UuZ2V0UmVzcG9uc2VGaWVsZChcbiAgICAgIFwiSW5zdGFuY2VzLjAuSWRlbnRpdHlTdG9yZUlkXCJcbiAgICApO1xuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgXCJJZGVudGl0eUNlbnRlckFybk91dHB1dFwiLCB7XG4gICAgICBrZXk6IFwiaWRlbnRpdHlDZW50ZXJBcm5cIixcbiAgICAgIHZhbHVlOiB0aGlzLmlkZW50aXR5Q2VudGVyQXJuLFxuICAgICAgZXhwb3J0TmFtZTogXCJpZGVudGl0eUNlbnRlckFyblwiXG4gICAgfSk7XG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBcIklkZW50aXR5U3RvcmVJZE91dHB1dFwiLCB7XG4gICAgICBrZXk6IFwiaWRlbnRpdHlTdG9yZUlEXCIsXG4gICAgICB2YWx1ZTogdGhpcy5pZGVudGl0eVN0b3JlSWQsXG4gICAgICBleHBvcnROYW1lOiBcImlkZW50aXR5U3RvcmVJZFwiXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVBlcm1pc3Npb25TZXRzKHByb3BzOiBJZGVudGl0eUNlbnRlclByb3BzKSB7XG4gICAgZm9yIChjb25zdCBbbmFtZSwgY29uZmlnXSBvZiBPYmplY3QuZW50cmllcyhkZWZhdWx0UGVybWlzc2lvblNldHMpKSB7XG4gICAgICBjb25zdCBncm91cCA9IG5ldyBHcm91cCh0aGlzLCBgJHtuYW1lfUdyb3VwYCwge1xuICAgICAgICBkaXNwbGF5TmFtZTogbmFtZSxcbiAgICAgICAgaWRlbnRpdHlTdG9yZUlkOiB0aGlzLmlkZW50aXR5U3RvcmVJZCxcbiAgICAgICAgZGVzY3JpcHRpb246IGBHcm91cCBmb3IgYXNzb2NpYXRlZCAke25hbWV9IHBlcm1pc3Npb24gc2V0YFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHBlcm1pc3Npb25TZXQgPSBuZXcgUGVybWlzc2lvblNldCh0aGlzLCBgUGVybWlzc2lvblNldCR7bmFtZX1gLCB7XG4gICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgIGluc3RhbmNlQXJuOiB0aGlzLmlkZW50aXR5Q2VudGVyQXJuLFxuICAgICAgICBkZXNjcmlwdGlvbjogY29uZmlnLkRlc2NyaXB0aW9uLFxuICAgICAgICBtYW5hZ2VkUG9saWNpZXM6IFtjb25maWcuUG9saWN5XSxcbiAgICAgICAgdGFnczogcHJvcHMudGFnc1xuICAgICAgfSk7XG4gICAgICBwZXJtaXNzaW9uU2V0Lm5vZGUuYWRkRGVwZW5kZW5jeShncm91cCk7XG5cbiAgICAgIG5ldyBDZm5PdXRwdXQodGhpcywgYCR7bmFtZX1Hcm91cElkYCwge1xuICAgICAgICBrZXk6IGAke25hbWV9R3JvdXBJZGAsXG4gICAgICAgIHZhbHVlOiBncm91cC5nZXRHcm91cElkKCksXG4gICAgICAgIGV4cG9ydE5hbWU6IGAke25hbWV9R3JvdXBJZGBcbiAgICAgIH0pO1xuXG4gICAgICBmb3IgKGNvbnN0IFthY2NvdW50TmFtZSwgYWNjb3VudElkXSBvZiBPYmplY3QuZW50cmllcyhwcm9wcy5hY2NvdW50cykpIHtcbiAgICAgICAgY29uc3QgYXNzaWdubWVudCA9IG5ldyBBc3NpZ25tZW50KFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgYCR7c3RyaXBBbmRDYW1lbENhc2UoYWNjb3VudE5hbWUpfSR7bmFtZX1Bc3NpZ25tZW50YCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpbnN0YW5jZUFybjogdGhpcy5pZGVudGl0eUNlbnRlckFybixcbiAgICAgICAgICAgIHBlcm1pc3Npb25TZXRBcm46IHBlcm1pc3Npb25TZXQuZ2V0UGVybWlzc2lvblNldEFybigpLFxuICAgICAgICAgICAgcHJpbmNpcGFsVHlwZTogXCJHUk9VUFwiLFxuICAgICAgICAgICAgcHJpbmNpcGFsSWQ6IGdyb3VwLmdldEdyb3VwSWQoKSxcbiAgICAgICAgICAgIHRhcmdldFR5cGU6IFwiQVdTX0FDQ09VTlRcIixcbiAgICAgICAgICAgIHRhcmdldElkOiBhY2NvdW50SWRcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIGFzc2lnbm1lbnQubm9kZS5hZGREZXBlbmRlbmN5KHBlcm1pc3Npb25TZXQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -4,6 +4,8 @@ exports.IdentityCenterGroupMembership = void 0;
|
|
|
4
4
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
5
|
const customResources = require("aws-cdk-lib/custom-resources");
|
|
6
6
|
const awsCustomResource_1 = require("../../resources/aws/utilities/awsCustomResource");
|
|
7
|
+
const IDENTITY_STORE_SERVICE = "identityStore";
|
|
8
|
+
const IDENTITY_CENTER_USERS_RESOURCE_TYPE = "Custom::IdentityCenterUsers";
|
|
7
9
|
// TODO: This requires a deletion and recreation to update
|
|
8
10
|
class IdentityCenterGroupMembership extends aws_cdk_lib_1.NestedStack {
|
|
9
11
|
constructor(scope, id, props) {
|
|
@@ -18,40 +20,28 @@ class IdentityCenterGroupMembership extends aws_cdk_lib_1.NestedStack {
|
|
|
18
20
|
.join("") +
|
|
19
21
|
props.groupName.charAt(0).toUpperCase() +
|
|
20
22
|
props.groupName.slice(1);
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
]
|
|
33
|
-
},
|
|
34
|
-
physicalResourceId: customResources.PhysicalResourceId.of(`listUsers${memberGroup}`)
|
|
23
|
+
const listUsersCall = {
|
|
24
|
+
service: IDENTITY_STORE_SERVICE,
|
|
25
|
+
action: "listUsers",
|
|
26
|
+
parameters: {
|
|
27
|
+
IdentityStoreId: identityStoreId,
|
|
28
|
+
Filters: [
|
|
29
|
+
{
|
|
30
|
+
AttributePath: "UserName",
|
|
31
|
+
AttributeValue: member
|
|
32
|
+
}
|
|
33
|
+
]
|
|
35
34
|
},
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
Filters: [
|
|
42
|
-
{
|
|
43
|
-
AttributePath: "UserName",
|
|
44
|
-
AttributeValue: member
|
|
45
|
-
}
|
|
46
|
-
]
|
|
47
|
-
},
|
|
48
|
-
physicalResourceId: customResources.PhysicalResourceId.of(`listUsers${memberGroup}`)
|
|
49
|
-
}
|
|
35
|
+
physicalResourceId: customResources.PhysicalResourceId.of(`listUsers${memberGroup}`)
|
|
36
|
+
};
|
|
37
|
+
const listUser = new awsCustomResource_1.AwsCustomResource(this, `ListUsersResource${memberGroup}`, {
|
|
38
|
+
onCreate: listUsersCall,
|
|
39
|
+
onUpdate: listUsersCall
|
|
50
40
|
});
|
|
51
41
|
const userId = listUser.getResponseField("Users.0.UserId");
|
|
52
42
|
const groupMembershipId = new awsCustomResource_1.AwsCustomResource(this, `CreateGroupMembershipResource${memberGroup}`, {
|
|
53
43
|
onCreate: {
|
|
54
|
-
service:
|
|
44
|
+
service: IDENTITY_STORE_SERVICE,
|
|
55
45
|
action: "createGroupMembership",
|
|
56
46
|
parameters: {
|
|
57
47
|
GroupId: groupId,
|
|
@@ -62,11 +52,11 @@ class IdentityCenterGroupMembership extends aws_cdk_lib_1.NestedStack {
|
|
|
62
52
|
},
|
|
63
53
|
physicalResourceId: customResources.PhysicalResourceId.of(`createGroupMembership${memberGroup}`)
|
|
64
54
|
},
|
|
65
|
-
resourceType:
|
|
55
|
+
resourceType: IDENTITY_CENTER_USERS_RESOURCE_TYPE
|
|
66
56
|
});
|
|
67
57
|
const refreshMembership = new awsCustomResource_1.AwsCustomResource(this, `RefreshMembershipResource${memberGroup}`, {
|
|
68
58
|
onUpdate: {
|
|
69
|
-
service:
|
|
59
|
+
service: IDENTITY_STORE_SERVICE,
|
|
70
60
|
action: "deleteGroupMembership",
|
|
71
61
|
parameters: {
|
|
72
62
|
IdentityStoreId: identityStoreId,
|
|
@@ -74,11 +64,11 @@ class IdentityCenterGroupMembership extends aws_cdk_lib_1.NestedStack {
|
|
|
74
64
|
},
|
|
75
65
|
physicalResourceId: customResources.PhysicalResourceId.of(`refreshGroupMembership${memberGroup}`)
|
|
76
66
|
},
|
|
77
|
-
resourceType:
|
|
67
|
+
resourceType: IDENTITY_CENTER_USERS_RESOURCE_TYPE
|
|
78
68
|
});
|
|
79
69
|
const recreateMembership = new awsCustomResource_1.AwsCustomResource(this, `RecreateGroupMembershipResource${memberGroup}`, {
|
|
80
70
|
onUpdate: {
|
|
81
|
-
service:
|
|
71
|
+
service: IDENTITY_STORE_SERVICE,
|
|
82
72
|
action: "createGroupMembership",
|
|
83
73
|
parameters: {
|
|
84
74
|
GroupId: groupId,
|
|
@@ -89,22 +79,22 @@ class IdentityCenterGroupMembership extends aws_cdk_lib_1.NestedStack {
|
|
|
89
79
|
},
|
|
90
80
|
physicalResourceId: customResources.PhysicalResourceId.of(`recreateGroupMembership${memberGroup}`)
|
|
91
81
|
},
|
|
92
|
-
resourceType:
|
|
82
|
+
resourceType: IDENTITY_CENTER_USERS_RESOURCE_TYPE
|
|
93
83
|
});
|
|
94
84
|
refreshMembership.node.addDependency(recreateMembership);
|
|
95
85
|
new awsCustomResource_1.AwsCustomResource(this, `DeleteGroupMembershipResource${memberGroup}`, {
|
|
96
86
|
onDelete: {
|
|
97
|
-
service:
|
|
87
|
+
service: IDENTITY_STORE_SERVICE,
|
|
98
88
|
action: "deleteGroupMembership",
|
|
99
89
|
parameters: {
|
|
100
90
|
IdentityStoreId: identityStoreId,
|
|
101
91
|
MembershipId: groupMembershipId.getResponseField("MembershipId")
|
|
102
92
|
}
|
|
103
93
|
},
|
|
104
|
-
resourceType:
|
|
94
|
+
resourceType: IDENTITY_CENTER_USERS_RESOURCE_TYPE
|
|
105
95
|
});
|
|
106
96
|
}
|
|
107
97
|
}
|
|
108
98
|
}
|
|
109
99
|
exports.IdentityCenterGroupMembership = IdentityCenterGroupMembership;
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHlDZW50ZXJHcm91cE1lbWJlcnNoaXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvY29uZmlnL2F3cy9pZGVudGl0eUNlbnRlckdyb3VwTWVtYmVyc2hpcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBK0Q7QUFDL0QsZ0VBQWdFO0FBQ2hFLHVGQUFvRjtBQVFwRiwwREFBMEQ7QUFDMUQsTUFBYSw2QkFBOEIsU0FBUSx5QkFBVztJQUM1RCxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUF5QztRQUV6QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sZUFBZSxHQUFHLGdCQUFFLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDMUQsTUFBTSxPQUFPLEdBQUcsZ0JBQUUsQ0FBQyxXQUFXLENBQUMsR0FBRyxLQUFLLENBQUMsU0FBUyxTQUFTLENBQUMsQ0FBQztRQUU1RCxLQUFLLE1BQU0sTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN4QyxNQUFNLFdBQVcsR0FDZixNQUFNO2lCQUNILEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ2IsS0FBSyxDQUFDLGNBQWMsQ0FBQztpQkFDckIsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzNELElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ1gsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFO2dCQUN2QyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUUzQixNQUFNLFFBQVEsR0FBRyxJ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QUksRUFDSixnQ0FBZ0MsV0FBVyxFQUFFLEVBQzdDO2dCQUNFLFFBQVEsRUFBRTtvQkFDUixPQUFPLEVBQUUsZUFBZTtvQkFDeEIsTUFBTSxFQUFFLHVCQUF1QjtvQkFDL0IsVUFBVSxFQUFFO3dCQUNWLGVBQWUsRUFBRSxlQUFlO3dCQUNoQyxZQUFZLEVBQUUsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDO3FCQUNqRTtpQkFDRjtnQkFDRCxZQUFZLEVBQUUsNkJBQTZCO2FBQzVDLENBQ0YsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFoSkQsc0VBZ0pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm4sIE5lc3RlZFN0YWNrLCB0eXBlIFN0YWNrUHJvcHMgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCAqIGFzIGN1c3RvbVJlc291cmNlcyBmcm9tIFwiYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlc1wiO1xuaW1wb3J0IHsgQXdzQ3VzdG9tUmVzb3VyY2UgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy91dGlsaXRpZXMvYXdzQ3VzdG9tUmVzb3VyY2VcIjtcbmltcG9ydCB7IHR5cGUgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuaW50ZXJmYWNlIElkZW50aXR5Q2VudGVyR3JvdXBNZW1iZXJzaGlwUHJvcHMgZXh0ZW5kcyBTdGFja1Byb3BzIHtcbiAgZ3JvdXBOYW1lOiBzdHJpbmc7XG4gIGdyb3VwTWVtYmVyczogc3RyaW5nW107XG59XG5cbi8vIFRPRE86IFRoaXMgcmVxdWlyZXMgYSBkZWxldGlvbiBhbmQgcmVjcmVhdGlvbiB0byB1cGRhdGVcbmV4cG9ydCBjbGFzcyBJZGVudGl0eUNlbnRlckdyb3VwTWVtYmVyc2hpcCBleHRlbmRzIE5lc3RlZFN0YWNrIHtcbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBJZGVudGl0eUNlbnRlckdyb3VwTWVtYmVyc2hpcFByb3BzXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBpZGVudGl0eVN0b3JlSWQgPSBGbi5pbXBvcnRWYWx1ZShcImlkZW50aXR5U3RvcmVJZFwiKTtcbiAgICBjb25zdCBncm91cElkID0gRm4uaW1wb3J0VmFsdWUoYCR7cHJvcHMuZ3JvdXBOYW1lfUdyb3VwSWRgKTtcblxuICAgIGZvciAoY29uc3QgbWVtYmVyIG9mIHByb3BzLmdyb3VwTWVtYmVycykge1xuICAgICAgY29uc3QgbWVtYmVyR3JvdXAgPVxuICAgICAgICBtZW1iZXJcbiAgICAgICAgICAuc3BsaXQoXCJAXCIpWzBdXG4gICAgICAgICAgLnNwbGl0KC9bXmEtekEtWjAtOV0vKVxuICAgICAgICAgIC5tYXAoKHBhcnQpID0+IHBhcnQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBwYXJ0LnNsaWNlKDEpKVxuICAgICAgICAgIC5qb2luKFwiXCIpICtcbiAgICAgICAgcHJvcHMuZ3JvdXBOYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICtcbiAgICAgICAgcHJvcHMuZ3JvdXBOYW1lLnNsaWNlKDEpO1xuXG4gICAgICBjb25zdCBsaXN0VXNlciA9IG5ldyBBd3NDdXN0b21SZXNvdXJjZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgYExpc3RVc2Vyc1Jlc291cmNlJHttZW1iZXJHcm91cH1gLFxuICAgICAgICB7XG4gICAgICAgICAgb25DcmVhdGU6IHtcbiAgICAgICAgICAgIHNlcnZpY2U6IFwiaWRlbnRpdHlTdG9yZVwiLFxuICAgICAgICAgICAgYWN0aW9uOiBcImxpc3RVc2Vyc1wiLFxuICAgICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgICBJZGVudGl0eVN0b3JlSWQ6IGlkZW50aXR5U3RvcmVJZCxcbiAgICAgICAgICAgICAgRmlsdGVyczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZVBhdGg6IFwiVXNlck5hbWVcIixcbiAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZVZhbHVlOiBtZW1iZXJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IGN1c3RvbVJlc291cmNlcy5QaHlzaWNhbFJlc291cmNlSWQub2YoXG4gICAgICAgICAgICAgIGBsaXN0VXNlcnMke21lbWJlckdyb3VwfWBcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uVXBkYXRlOiB7XG4gICAgICAgICAgICBzZXJ2aWNlOiBcImlkZW50aXR5U3RvcmVcIixcbiAgICAgICAgICAgIGFjdGlvbjogXCJsaXN0dXNlcnNcIixcbiAgICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgICAgSWRlbnRpdHlTdG9yZUlkOiBpZGVudGl0eVN0b3JlSWQsXG4gICAgICAgICAgICAgIEZpbHRlcnM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVQYXRoOiBcIlVzZXJOYW1lXCIsXG4gICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVWYWx1ZTogbWVtYmVyXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiBjdXN0b21SZXNvdXJjZXMuUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFxuICAgICAgICAgICAgICBgbGlzdFVzZXJzJHttZW1iZXJHcm91cH1gXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICBjb25zdCB1c2VySWQgPSBsaXN0VXNlci5nZXRSZXNwb25zZUZpZWxkKFwiVXNlcnMuMC5Vc2VySWRcIik7XG5cbiAgICAgIGNvbnN0IGdyb3VwTWVtYmVyc2hpcElkID0gbmV3IEF3c0N1c3RvbVJlc291cmNlKFxuICAgICAgICB0aGlzLFxuICAgICAgICBgQ3JlYXRlR3JvdXBNZW1iZXJzaGlwUmVzb3VyY2Uke21lbWJlckdyb3VwfWAsXG4gICAgICAgIHtcbiAgICAgICAgICBvbkNyZWF0ZToge1xuICAgICAgICAgICAgc2VydmljZTogXCJpZGVudGl0eVN0b3JlXCIsXG4gICAgICAgICAgICBhY3Rpb246IFwiY3JlYXRlR3JvdXBNZW1iZXJzaGlwXCIsXG4gICAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICAgIEdyb3VwSWQ6IGdyb3VwSWQsXG4gICAgICAgICAgICAgIElkZW50aXR5U3RvcmVJZDogaWRlbnRpdHlTdG9yZUlkLFxuICAgICAgICAgICAgICBNZW1iZXJJZDoge1xuICAgICAgICAgICAgICAgIFVzZXJJZDogdXNlcklkXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IGN1c3RvbVJlc291cmNlcy5QaHlzaWNhbFJlc291cmNlSWQub2YoXG4gICAgICAgICAgICAgIGBjcmVhdGVHcm91cE1lbWJlcnNoaXAke21lbWJlckdyb3VwfWBcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc291cmNlVHlwZTogXCJDdXN0b206OklkZW50aXR5Q2VudGVyVXNlcnNcIlxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICBjb25zdCByZWZyZXNoTWVtYmVyc2hpcCA9IG5ldyBBd3NDdXN0b21SZXNvdXJjZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgYFJlZnJlc2hNZW1iZXJzaGlwUmVzb3VyY2Uke21lbWJlckdyb3VwfWAsXG4gICAgICAgIHtcbiAgICAgICAgICBvblVwZGF0ZToge1xuICAgICAgICAgICAgc2VydmljZTogXCJpZGVudGl0eVN0b3JlXCIsXG4gICAgICAgICAgICBhY3Rpb246IFwiZGVsZXRlR3JvdXBNZW1iZXJzaGlwXCIsXG4gICAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICAgIElkZW50aXR5U3RvcmVJZDogaWRlbnRpdHlTdG9yZUlkLFxuICAgICAgICAgICAgICBNZW1iZXJzaGlwSWQ6IGdyb3VwTWVtYmVyc2hpcElkLmdldFJlc3BvbnNlRmllbGQoXCJNZW1iZXJzaGlwSWRcIilcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IGN1c3RvbVJlc291cmNlcy5QaHlzaWNhbFJlc291cmNlSWQub2YoXG4gICAgICAgICAgICAgIGByZWZyZXNoR3JvdXBNZW1iZXJzaGlwJHttZW1iZXJHcm91cH1gXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNvdXJjZVR5cGU6IFwiQ3VzdG9tOjpJZGVudGl0eUNlbnRlclVzZXJzXCJcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgY29uc3QgcmVjcmVhdGVNZW1iZXJzaGlwID0gbmV3IEF3c0N1c3RvbVJlc291cmNlKFxuICAgICAgICB0aGlzLFxuICAgICAgICBgUmVjcmVhdGVHcm91cE1lbWJlcnNoaXBSZXNvdXJjZSR7bWVtYmVyR3JvdXB9YCxcbiAgICAgICAge1xuICAgICAgICAgIG9uVXBkYXRlOiB7XG4gICAgICAgICAgICBzZXJ2aWNlOiBcImlkZW50aXR5U3RvcmVcIixcbiAgICAgICAgICAgIGFjdGlvbjogXCJjcmVhdGVHcm91cE1lbWJlcnNoaXBcIixcbiAgICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgICAgR3JvdXBJZDogZ3JvdXBJZCxcbiAgICAgICAgICAgICAgSWRlbnRpdHlTdG9yZUlkOiBpZGVudGl0eVN0b3JlSWQsXG4gICAgICAgICAgICAgIE1lbWJlcklkOiB7XG4gICAgICAgICAgICAgICAgVXNlcklkOiB1c2VySWRcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogY3VzdG9tUmVzb3VyY2VzLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcbiAgICAgICAgICAgICAgYHJlY3JlYXRlR3JvdXBNZW1iZXJzaGlwJHttZW1iZXJHcm91cH1gXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNvdXJjZVR5cGU6IFwiQ3VzdG9tOjpJZGVudGl0eUNlbnRlclVzZXJzXCJcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgcmVmcmVzaE1lbWJlcnNoaXAubm9kZS5hZGREZXBlbmRlbmN5KHJlY3JlYXRlTWVtYmVyc2hpcCk7XG5cbiAgICAgIG5ldyBBd3NDdXN0b21SZXNvdXJjZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgYERlbGV0ZUdyb3VwTWVtYmVyc2hpcFJlc291cmNlJHttZW1iZXJHcm91cH1gLFxuICAgICAgICB7XG4gICAgICAgICAgb25EZWxldGU6IHtcbiAgICAgICAgICAgIHNlcnZpY2U6IFwiaWRlbnRpdHlTdG9yZVwiLFxuICAgICAgICAgICAgYWN0aW9uOiBcImRlbGV0ZUdyb3VwTWVtYmVyc2hpcFwiLFxuICAgICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgICBJZGVudGl0eVN0b3JlSWQ6IGlkZW50aXR5U3RvcmVJZCxcbiAgICAgICAgICAgICAgTWVtYmVyc2hpcElkOiBncm91cE1lbWJlcnNoaXBJZC5nZXRSZXNwb25zZUZpZWxkKFwiTWVtYmVyc2hpcElkXCIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNvdXJjZVR5cGU6IFwiQ3VzdG9tOjpJZGVudGl0eUNlbnRlclVzZXJzXCJcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHlDZW50ZXJHcm91cE1lbWJlcnNoaXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvY29uZmlnL2F3cy9pZGVudGl0eUNlbnRlckdyb3VwTWVtYmVyc2hpcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBK0Q7QUFDL0QsZ0VBQWdFO0FBQ2hFLHVGQUFvRjtBQVFwRixNQUFNLHNCQUFzQixHQUFHLGVBQWUsQ0FBQztBQUMvQyxNQUFNLG1DQUFtQyxHQUFHLDZCQUE2QixDQUFDO0FBRTFFLDBEQUEwRDtBQUMxRCxNQUFhLDZCQUE4QixTQUFRLHlCQUFXO0lBQzVELFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLEtBQXlDO1FBRXpDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxlQUFlLEdBQUcsZ0JBQUUsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMxRCxNQUFNLE9BQU8sR0FBRyxnQkFBRSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxTQUFTLFNBQVMsQ0FBQyxDQUFDO1FBRTVELEtBQUssTUFBTSxNQUFNLElBQUksS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3hDLE1BQU0sV0FBVyxHQUNmLE1BQU07aUJBQ0gsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDYixLQUFLLENBQUMsY0FBYyxDQUFDO2lCQUNyQixHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDM0QsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDWCxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUU7Z0JBQ3ZD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O3dCQUNoQyxZQUFZLEVBQUUsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDO3FCQUNqRTtpQkFDRjtnQkFDRCxZQUFZLEVBQUUsbUNBQW1DO2FBQ2xELENBQ0YsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFuSUQsc0VBbUlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm4sIE5lc3RlZFN0YWNrLCB0eXBlIFN0YWNrUHJvcHMgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCAqIGFzIGN1c3RvbVJlc291cmNlcyBmcm9tIFwiYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlc1wiO1xuaW1wb3J0IHsgQXdzQ3VzdG9tUmVzb3VyY2UgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy91dGlsaXRpZXMvYXdzQ3VzdG9tUmVzb3VyY2VcIjtcbmltcG9ydCB7IHR5cGUgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuaW50ZXJmYWNlIElkZW50aXR5Q2VudGVyR3JvdXBNZW1iZXJzaGlwUHJvcHMgZXh0ZW5kcyBTdGFja1Byb3BzIHtcbiAgZ3JvdXBOYW1lOiBzdHJpbmc7XG4gIGdyb3VwTWVtYmVyczogc3RyaW5nW107XG59XG5cbmNvbnN0IElERU5USVRZX1NUT1JFX1NFUlZJQ0UgPSBcImlkZW50aXR5U3RvcmVcIjtcbmNvbnN0IElERU5USVRZX0NFTlRFUl9VU0VSU19SRVNPVVJDRV9UWVBFID0gXCJDdXN0b206OklkZW50aXR5Q2VudGVyVXNlcnNcIjtcblxuLy8gVE9ETzogVGhpcyByZXF1aXJlcyBhIGRlbGV0aW9uIGFuZCByZWNyZWF0aW9uIHRvIHVwZGF0ZVxuZXhwb3J0IGNsYXNzIElkZW50aXR5Q2VudGVyR3JvdXBNZW1iZXJzaGlwIGV4dGVuZHMgTmVzdGVkU3RhY2sge1xuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IElkZW50aXR5Q2VudGVyR3JvdXBNZW1iZXJzaGlwUHJvcHNcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGlkZW50aXR5U3RvcmVJZCA9IEZuLmltcG9ydFZhbHVlKFwiaWRlbnRpdHlTdG9yZUlkXCIpO1xuICAgIGNvbnN0IGdyb3VwSWQgPSBGbi5pbXBvcnRWYWx1ZShgJHtwcm9wcy5ncm91cE5hbWV9R3JvdXBJZGApO1xuXG4gICAgZm9yIChjb25zdCBtZW1iZXIgb2YgcHJvcHMuZ3JvdXBNZW1iZXJzKSB7XG4gICAgICBjb25zdCBtZW1iZXJHcm91cCA9XG4gICAgICAgIG1lbWJlclxuICAgICAgICAgIC5zcGxpdChcIkBcIilbMF1cbiAgICAgICAgICAuc3BsaXQoL1teYS16QS1aMC05XS8pXG4gICAgICAgICAgLm1hcCgocGFydCkgPT4gcGFydC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHBhcnQuc2xpY2UoMSkpXG4gICAgICAgICAgLmpvaW4oXCJcIikgK1xuICAgICAgICBwcm9wcy5ncm91cE5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgK1xuICAgICAgICBwcm9wcy5ncm91cE5hbWUuc2xpY2UoMSk7XG5cbiAgICAgIGNvbnN0IGxpc3RVc2Vyc0NhbGwgPSB7XG4gICAgICAgIHNlcnZpY2U6IElERU5USVRZX1NUT1JFX1NFUlZJQ0UsXG4gICAgICAgIGFjdGlvbjogXCJsaXN0VXNlcnNcIixcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIElkZW50aXR5U3RvcmVJZDogaWRlbnRpdHlTdG9yZUlkLFxuICAgICAgICAgIEZpbHRlcnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgQXR0cmlidXRlUGF0aDogXCJVc2VyTmFtZVwiLFxuICAgICAgICAgICAgICBBdHRyaWJ1dGVWYWx1ZTogbWVtYmVyXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IGN1c3RvbVJlc291cmNlcy5QaHlzaWNhbFJlc291cmNlSWQub2YoXG4gICAgICAgICAgYGxpc3RVc2VycyR7bWVtYmVyR3JvdXB9YFxuICAgICAgICApXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBsaXN0VXNlciA9IG5ldyBBd3NDdXN0b21SZXNvdXJjZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgYExpc3RVc2Vyc1Jlc291cmNlJHttZW1iZXJHcm91cH1gLFxuICAgICAgICB7XG4gICAgICAgICAgb25DcmVhdGU6IGxpc3RVc2Vyc0NhbGwsXG4gICAgICAgICAgb25VcGRhdGU6IGxpc3RVc2Vyc0NhbGxcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgY29uc3QgdXNlcklkID0gbGlzdFVzZXIuZ2V0UmVzcG9uc2VGaWVsZChcIlVzZXJzLjAuVXNlcklkXCIpO1xuXG4gICAgICBjb25zdCBncm91cE1lbWJlcnNoaXBJZCA9IG5ldyBBd3NDdXN0b21SZXNvdXJjZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgYENyZWF0ZUdyb3VwTWVtYmVyc2hpcFJlc291cmNlJHttZW1iZXJHcm91cH1gLFxuICAgICAgICB7XG4gICAgICAgICAgb25DcmVhdGU6IHtcbiAgICAgICAgICAgIHNlcnZpY2U6IElERU5USVRZX1NUT1JFX1NFUlZJQ0UsXG4gICAgICAgICAgICBhY3Rpb246IFwiY3JlYXRlR3JvdXBNZW1iZXJzaGlwXCIsXG4gICAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICAgIEdyb3VwSWQ6IGdyb3VwSWQsXG4gICAgICAgICAgICAgIElkZW50aXR5U3RvcmVJZDogaWRlbnRpdHlTdG9yZUlkLFxuICAgICAgICAgICAgICBNZW1iZXJJZDoge1xuICAgICAgICAgICAgICAgIFVzZXJJZDogdXNlcklkXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IGN1c3RvbVJlc291cmNlcy5QaHlzaWNhbFJlc291cmNlSWQub2YoXG4gICAgICAgICAgICAgIGBjcmVhdGVHcm91cE1lbWJlcnNoaXAke21lbWJlckdyb3VwfWBcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc291cmNlVHlwZTogSURFTlRJVFlfQ0VOVEVSX1VTRVJTX1JFU09VUkNFX1RZUEVcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgY29uc3QgcmVmcmVzaE1lbWJlcnNoaXAgPSBuZXcgQXdzQ3VzdG9tUmVzb3VyY2UoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIGBSZWZyZXNoTWVtYmVyc2hpcFJlc291cmNlJHttZW1iZXJHcm91cH1gLFxuICAgICAgICB7XG4gICAgICAgICAgb25VcGRhdGU6IHtcbiAgICAgICAgICAgIHNlcnZpY2U6IElERU5USVRZX1NUT1JFX1NFUlZJQ0UsXG4gICAgICAgICAgICBhY3Rpb246IFwiZGVsZXRlR3JvdXBNZW1iZXJzaGlwXCIsXG4gICAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICAgIElkZW50aXR5U3RvcmVJZDogaWRlbnRpdHlTdG9yZUlkLFxuICAgICAgICAgICAgICBNZW1iZXJzaGlwSWQ6IGdyb3VwTWVtYmVyc2hpcElkLmdldFJlc3BvbnNlRmllbGQoXCJNZW1iZXJzaGlwSWRcIilcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IGN1c3RvbVJlc291cmNlcy5QaHlzaWNhbFJlc291cmNlSWQub2YoXG4gICAgICAgICAgICAgIGByZWZyZXNoR3JvdXBNZW1iZXJzaGlwJHttZW1iZXJHcm91cH1gXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNvdXJjZVR5cGU6IElERU5USVRZX0NFTlRFUl9VU0VSU19SRVNPVVJDRV9UWVBFXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHJlY3JlYXRlTWVtYmVyc2hpcCA9IG5ldyBBd3NDdXN0b21SZXNvdXJjZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgYFJlY3JlYXRlR3JvdXBNZW1iZXJzaGlwUmVzb3VyY2Uke21lbWJlckdyb3VwfWAsXG4gICAgICAgIHtcbiAgICAgICAgICBvblVwZGF0ZToge1xuICAgICAgICAgICAgc2VydmljZTogSURFTlRJVFlfU1RPUkVfU0VSVklDRSxcbiAgICAgICAgICAgIGFjdGlvbjogXCJjcmVhdGVHcm91cE1lbWJlcnNoaXBcIixcbiAgICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgICAgR3JvdXBJZDogZ3JvdXBJZCxcbiAgICAgICAgICAgICAgSWRlbnRpdHlTdG9yZUlkOiBpZGVudGl0eVN0b3JlSWQsXG4gICAgICAgICAgICAgIE1lbWJlcklkOiB7XG4gICAgICAgICAgICAgICAgVXNlcklkOiB1c2VySWRcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogY3VzdG9tUmVzb3VyY2VzLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcbiAgICAgICAgICAgICAgYHJlY3JlYXRlR3JvdXBNZW1iZXJzaGlwJHttZW1iZXJHcm91cH1gXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNvdXJjZVR5cGU6IElERU5USVRZX0NFTlRFUl9VU0VSU19SRVNPVVJDRV9UWVBFXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIHJlZnJlc2hNZW1iZXJzaGlwLm5vZGUuYWRkRGVwZW5kZW5jeShyZWNyZWF0ZU1lbWJlcnNoaXApO1xuXG4gICAgICBuZXcgQXdzQ3VzdG9tUmVzb3VyY2UoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIGBEZWxldGVHcm91cE1lbWJlcnNoaXBSZXNvdXJjZSR7bWVtYmVyR3JvdXB9YCxcbiAgICAgICAge1xuICAgICAgICAgIG9uRGVsZXRlOiB7XG4gICAgICAgICAgICBzZXJ2aWNlOiBJREVOVElUWV9TVE9SRV9TRVJWSUNFLFxuICAgICAgICAgICAgYWN0aW9uOiBcImRlbGV0ZUdyb3VwTWVtYmVyc2hpcFwiLFxuICAgICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgICBJZGVudGl0eVN0b3JlSWQ6IGlkZW50aXR5U3RvcmVJZCxcbiAgICAgICAgICAgICAgTWVtYmVyc2hpcElkOiBncm91cE1lbWJlcnNoaXBJZC5nZXRSZXNwb25zZUZpZWxkKFwiTWVtYmVyc2hpcElkXCIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNvdXJjZVR5cGU6IElERU5USVRZX0NFTlRFUl9VU0VSU19SRVNPVVJDRV9UWVBFXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
export * from "./backupGlobalSettings";
|
|
2
|
-
export * from "./costAllocationTags";
|
|
3
1
|
export * from "./identityCenter";
|
|
4
2
|
export * from "./ipam";
|
|
5
|
-
export * from "./ipamDelegateAdmin";
|
|
6
|
-
export * from "./ipamPoolId";
|
|
7
|
-
export * from "./ramSharing";
|
|
8
|
-
export * from "./accountId";
|
|
9
3
|
export * from "./ecrDefaultImage";
|
|
10
4
|
export * from "./eventBus";
|
|
11
|
-
export * from "./
|
|
5
|
+
export * from "./oidcConnector";
|
|
6
|
+
export * from "./platform";
|
|
7
|
+
export * from "./accountMonitoringRole";
|
|
8
|
+
export * from "./accountAuditRole";
|
|
@@ -14,15 +14,12 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./backupGlobalSettings"), exports);
|
|
18
|
-
__exportStar(require("./costAllocationTags"), exports);
|
|
19
17
|
__exportStar(require("./identityCenter"), exports);
|
|
20
18
|
__exportStar(require("./ipam"), exports);
|
|
21
|
-
__exportStar(require("./ipamDelegateAdmin"), exports);
|
|
22
|
-
__exportStar(require("./ipamPoolId"), exports);
|
|
23
|
-
__exportStar(require("./ramSharing"), exports);
|
|
24
|
-
__exportStar(require("./accountId"), exports);
|
|
25
19
|
__exportStar(require("./ecrDefaultImage"), exports);
|
|
26
20
|
__exportStar(require("./eventBus"), exports);
|
|
27
|
-
__exportStar(require("./
|
|
28
|
-
|
|
21
|
+
__exportStar(require("./oidcConnector"), exports);
|
|
22
|
+
__exportStar(require("./platform"), exports);
|
|
23
|
+
__exportStar(require("./accountMonitoringRole"), exports);
|
|
24
|
+
__exportStar(require("./accountAuditRole"), exports);
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvY29uZmlnL2F3cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbURBQWlDO0FBQ2pDLHlDQUF1QjtBQUN2QixvREFBa0M7QUFDbEMsNkNBQTJCO0FBQzNCLGtEQUFnQztBQUNoQyw2Q0FBMkI7QUFDM0IsMERBQXdDO0FBQ3hDLHFEQUFtQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2lkZW50aXR5Q2VudGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9pcGFtXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9lY3JEZWZhdWx0SW1hZ2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2V2ZW50QnVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9vaWRjQ29ubmVjdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wbGF0Zm9ybVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYWNjb3VudE1vbml0b3JpbmdSb2xlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9hY2NvdW50QXVkaXRSb2xlXCI7XG4iXX0=
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
export interface OidcConnectorProps {
|
|
3
|
+
fjallOrgId: string;
|
|
4
|
+
}
|
|
5
|
+
export declare class OidcConnector extends Construct {
|
|
6
|
+
readonly deployRoleArn: string;
|
|
7
|
+
constructor(scope: Construct, id: string, props: OidcConnectorProps);
|
|
8
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OidcConnector = void 0;
|
|
4
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
+
const iam = require("aws-cdk-lib/aws-iam");
|
|
6
|
+
const constructs_1 = require("constructs");
|
|
7
|
+
class OidcConnector extends constructs_1.Construct {
|
|
8
|
+
constructor(scope, id, props) {
|
|
9
|
+
super(scope, id);
|
|
10
|
+
const issuerDomain = "fjall.io";
|
|
11
|
+
const issuerUrl = `https://${issuerDomain}`;
|
|
12
|
+
const provider = new iam.OpenIdConnectProvider(this, "OidcProvider", {
|
|
13
|
+
url: issuerUrl,
|
|
14
|
+
clientIds: ["sts.amazonaws.com"],
|
|
15
|
+
thumbprints: ["0000000000000000000000000000000000000000"]
|
|
16
|
+
});
|
|
17
|
+
const deployRole = new iam.Role(this, "DeployRole", {
|
|
18
|
+
roleName: `FjallDeploy${props.fjallOrgId}`,
|
|
19
|
+
maxSessionDuration: aws_cdk_lib_1.Duration.hours(1),
|
|
20
|
+
assumedBy: new iam.FederatedPrincipal(provider.openIdConnectProviderArn, {
|
|
21
|
+
StringEquals: { [`${issuerDomain}:aud`]: "sts.amazonaws.com" },
|
|
22
|
+
StringLike: {
|
|
23
|
+
[`${issuerDomain}:sub`]: `org:${props.fjallOrgId}:*`
|
|
24
|
+
}
|
|
25
|
+
}, "sts:AssumeRoleWithWebIdentity"),
|
|
26
|
+
managedPolicies: [
|
|
27
|
+
iam.ManagedPolicy.fromAwsManagedPolicyName("AdministratorAccess")
|
|
28
|
+
]
|
|
29
|
+
});
|
|
30
|
+
this.deployRoleArn = deployRole.roleArn;
|
|
31
|
+
new aws_cdk_lib_1.CfnOutput(this, "OidcDeployRoleArn", {
|
|
32
|
+
key: "OidcDeployRoleArn",
|
|
33
|
+
value: deployRole.roleArn,
|
|
34
|
+
exportName: "OidcDeployRoleArn",
|
|
35
|
+
description: "ARN of the Fjall OIDC deploy role"
|
|
36
|
+
});
|
|
37
|
+
new aws_cdk_lib_1.CfnOutput(this, "OidcProviderArn", {
|
|
38
|
+
key: "OidcProviderArn",
|
|
39
|
+
value: provider.openIdConnectProviderArn,
|
|
40
|
+
exportName: "OidcProviderArn",
|
|
41
|
+
description: "ARN of the Fjall OIDC provider"
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
exports.OidcConnector = OidcConnector;
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2lkY0Nvbm5lY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9jb25maWcvYXdzL29pZGNDb25uZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQWtEO0FBQ2xELDJDQUEyQztBQUMzQywyQ0FBdUM7QUFNdkMsTUFBYSxhQUFjLFNBQVEsc0JBQVM7SUFHMUMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF5QjtRQUNqRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQztRQUNoQyxNQUFNLFNBQVMsR0FBRyxXQUFXLFlBQVksRUFBRSxDQUFDO1FBRTVDLE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxDQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRSxjQUFjLEVBQUU7WUFDbkUsR0FBRyxFQUFFLFNBQVM7WUFDZCxTQUFTLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztZQUNoQyxXQUFXLEVBQUUsQ0FBQywwQ0FBMEMsQ0FBQztTQUMxRCxDQUFDLENBQUM7UUFFSCxNQUFNLFVBQVUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRTtZQUNsRCxRQUFRLEVBQUUsY0FBYyxLQUFLLENBQUMsVUFBVSxFQUFFO1lBQzFDLGtCQUFrQixFQUFFLHNCQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNyQyxTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsa0JBQWtCLENBQ25DLFFBQVEsQ0FBQyx3QkFBd0IsRUFDakM7Z0JBQ0UsWUFBWSxFQUFFLEVBQUUsQ0FBQyxHQUFHLFlBQVksTUFBTSxDQUFDLEVBQUUsbUJBQW1CLEVBQUU7Z0JBQzlELFVBQVUsRUFBRTtvQkFDVixDQUFDLEdBQUcsWUFBWSxNQUFNLENBQUMsRUFBRSxPQUFPLEtBQUssQ0FBQyxVQUFVLElBQUk7aUJBQ3JEO2FBQ0YsRUFDRCwrQkFBK0IsQ0FDaEM7WUFDRCxlQUFlLEVBQUU7Z0JBQ2YsR0FBRyxDQUFDLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQyxxQkFBcUIsQ0FBQzthQUNsRTtTQUNGLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQztRQUV4QyxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLG1CQUFtQixFQUFFO1lBQ3ZDLEdBQUcsRUFBRSxtQkFBbUI7WUFDeEIsS0FBSyxFQUFFLFVBQVUsQ0FBQyxPQUFPO1lBQ3pCLFVBQVUsRUFBRSxtQkFBbUI7WUFDL0IsV0FBVyxFQUFFLG1DQUFtQztTQUNqRCxDQUFDLENBQUM7UUFFSCxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQ3JDLEdBQUcsRUFBRSxpQkFBaUI7WUFDdEIsS0FBSyxFQUFFLFFBQVEsQ0FBQyx3QkFBd0I7WUFDeEMsVUFBVSxFQUFFLGlCQUFpQjtZQUM3QixXQUFXLEVBQUUsZ0NBQWdDO1NBQzlDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQWpERCxzQ0FpREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZm5PdXRwdXQsIER1cmF0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2lkY0Nvbm5lY3RvclByb3BzIHtcbiAgZmphbGxPcmdJZDogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgT2lkY0Nvbm5lY3RvciBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBkZXBsb3lSb2xlQXJuOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE9pZGNDb25uZWN0b3JQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBpc3N1ZXJEb21haW4gPSBcImZqYWxsLmlvXCI7XG4gICAgY29uc3QgaXNzdWVyVXJsID0gYGh0dHBzOi8vJHtpc3N1ZXJEb21haW59YDtcblxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IGlhbS5PcGVuSWRDb25uZWN0UHJvdmlkZXIodGhpcywgXCJPaWRjUHJvdmlkZXJcIiwge1xuICAgICAgdXJsOiBpc3N1ZXJVcmwsXG4gICAgICBjbGllbnRJZHM6IFtcInN0cy5hbWF6b25hd3MuY29tXCJdLFxuICAgICAgdGh1bWJwcmludHM6IFtcIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIl1cbiAgICB9KTtcblxuICAgIGNvbnN0IGRlcGxveVJvbGUgPSBuZXcgaWFtLlJvbGUodGhpcywgXCJEZXBsb3lSb2xlXCIsIHtcbiAgICAgIHJvbGVOYW1lOiBgRmphbGxEZXBsb3kke3Byb3BzLmZqYWxsT3JnSWR9YCxcbiAgICAgIG1heFNlc3Npb25EdXJhdGlvbjogRHVyYXRpb24uaG91cnMoMSksXG4gICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uRmVkZXJhdGVkUHJpbmNpcGFsKFxuICAgICAgICBwcm92aWRlci5vcGVuSWRDb25uZWN0UHJvdmlkZXJBcm4sXG4gICAgICAgIHtcbiAgICAgICAgICBTdHJpbmdFcXVhbHM6IHsgW2Ake2lzc3VlckRvbWFpbn06YXVkYF06IFwic3RzLmFtYXpvbmF3cy5jb21cIiB9LFxuICAgICAgICAgIFN0cmluZ0xpa2U6IHtcbiAgICAgICAgICAgIFtgJHtpc3N1ZXJEb21haW59OnN1YmBdOiBgb3JnOiR7cHJvcHMuZmphbGxPcmdJZH06KmBcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwic3RzOkFzc3VtZVJvbGVXaXRoV2ViSWRlbnRpdHlcIlxuICAgICAgKSxcbiAgICAgIG1hbmFnZWRQb2xpY2llczogW1xuICAgICAgICBpYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoXCJBZG1pbmlzdHJhdG9yQWNjZXNzXCIpXG4gICAgICBdXG4gICAgfSk7XG5cbiAgICB0aGlzLmRlcGxveVJvbGVBcm4gPSBkZXBsb3lSb2xlLnJvbGVBcm47XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIFwiT2lkY0RlcGxveVJvbGVBcm5cIiwge1xuICAgICAga2V5OiBcIk9pZGNEZXBsb3lSb2xlQXJuXCIsXG4gICAgICB2YWx1ZTogZGVwbG95Um9sZS5yb2xlQXJuLFxuICAgICAgZXhwb3J0TmFtZTogXCJPaWRjRGVwbG95Um9sZUFyblwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiQVJOIG9mIHRoZSBGamFsbCBPSURDIGRlcGxveSByb2xlXCJcbiAgICB9KTtcblxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgXCJPaWRjUHJvdmlkZXJBcm5cIiwge1xuICAgICAga2V5OiBcIk9pZGNQcm92aWRlckFyblwiLFxuICAgICAgdmFsdWU6IHByb3ZpZGVyLm9wZW5JZENvbm5lY3RQcm92aWRlckFybixcbiAgICAgIGV4cG9ydE5hbWU6IFwiT2lkY1Byb3ZpZGVyQXJuXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJBUk4gb2YgdGhlIEZqYWxsIE9JREMgcHJvdmlkZXJcIlxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FJALL_PLATFORM_ACCOUNT_ID = void 0;
|
|
4
|
+
/** AWS account ID of the Fjall platform (where the webapp runs). */
|
|
5
|
+
exports.FJALL_PLATFORM_ACCOUNT_ID = "985539798308";
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvY29uZmlnL2F3cy9wbGF0Zm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxvRUFBb0U7QUFDdkQsUUFBQSx5QkFBeUIsR0FBRyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQVdTIGFjY291bnQgSUQgb2YgdGhlIEZqYWxsIHBsYXRmb3JtICh3aGVyZSB0aGUgd2ViYXBwIHJ1bnMpLiAqL1xuZXhwb3J0IGNvbnN0IEZKQUxMX1BMQVRGT1JNX0FDQ09VTlRfSUQgPSBcIjk4NTUzOTc5ODMwOFwiO1xuIl19
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.FJALL_AUDIT_CONFIG = void 0;
|
|
18
|
+
var audit_1 = require("./audit");
|
|
19
|
+
Object.defineProperty(exports, "FJALL_AUDIT_CONFIG", { enumerable: true, get: function () { return audit_1.FJALL_AUDIT_CONFIG; } });
|
|
20
|
+
__exportStar(require("./aws"), exports);
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvY29uZmlnL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaUNBQTZDO0FBQXBDLDJHQUFBLGtCQUFrQixPQUFBO0FBQzNCLHdDQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEZKQUxMX0FVRElUX0NPTkZJRyB9IGZyb20gXCIuL2F1ZGl0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9hd3NcIjtcbiJdfQ==
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Fjall Secrets Resolver Wrapper
|
|
3
|
+
#
|
|
4
|
+
# Invoked by AWS_LAMBDA_EXEC_WRAPPER before the Lambda runtime starts.
|
|
5
|
+
# Calls the Node.js resolver to fetch secrets from the AWS Parameters and
|
|
6
|
+
# Secrets Extension, then execs into the original runtime bootstrap.
|
|
7
|
+
#
|
|
8
|
+
# The resolver outputs `export KEY='value'` lines which we eval to inject
|
|
9
|
+
# secrets as environment variables visible to the handler.
|
|
10
|
+
|
|
11
|
+
set -euo pipefail
|
|
12
|
+
|
|
13
|
+
# Only run resolver if secrets are configured
|
|
14
|
+
if [ -n "${SSM_SECRET_NAMES:-}" ] || env | grep -q '_SECRET_ARN='; then
|
|
15
|
+
RESOLVER_OUTPUT=$(/var/lang/bin/node /opt/bin/resolve-secrets.mjs)
|
|
16
|
+
if [ -n "$RESOLVER_OUTPUT" ]; then
|
|
17
|
+
# Validate each line matches `export NAME='...'` before eval to prevent
|
|
18
|
+
# accidental code execution if the resolver ever emits unexpected output
|
|
19
|
+
while IFS= read -r line; do
|
|
20
|
+
if [[ "$line" =~ ^export\ [a-zA-Z_][a-zA-Z0-9_]*= ]]; then
|
|
21
|
+
eval "$line"
|
|
22
|
+
else
|
|
23
|
+
echo "[fjall-resolver] Unexpected output from resolver: ${line:0:80}" >&2
|
|
24
|
+
exit 1
|
|
25
|
+
fi
|
|
26
|
+
done <<< "$RESOLVER_OUTPUT"
|
|
27
|
+
fi
|
|
28
|
+
fi
|
|
29
|
+
|
|
30
|
+
exec "$@"
|