@fjall/components-infrastructure 0.57.0 → 0.58.7
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/__tests__/patterns/__snapshots__/compute.test.js.snap +433 -0
- package/dist/lib/__tests__/patterns/compute.test.d.ts +1 -0
- package/dist/lib/__tests__/patterns/compute.test.js +137 -0
- package/dist/lib/__tests__/simple.test.d.ts +0 -0
- package/dist/lib/__tests__/simple.test.js +12 -0
- package/dist/lib/patterns/aws/compute.d.ts +6 -0
- package/dist/lib/patterns/aws/compute.js +1 -1
- package/dist/lib/patterns/aws/hostedZone.js +9 -16
- package/dist/lib/resources/aws/organisations/account.d.ts +37 -0
- package/dist/lib/resources/aws/organisations/account.js +220 -0
- package/dist/lib/resources/aws/organisations/delegatedAdministrator.d.ts +14 -0
- package/dist/lib/resources/aws/organisations/delegatedAdministrator.js +61 -0
- package/dist/lib/resources/aws/organisations/index.d.ts +8 -0
- package/dist/lib/resources/aws/organisations/index.js +22 -0
- package/dist/lib/resources/aws/organisations/interfaces.d.ts +105 -0
- package/dist/lib/resources/aws/organisations/interfaces.js +3 -0
- package/dist/lib/resources/aws/organisations/organisation.d.ts +47 -0
- package/dist/lib/resources/aws/organisations/organisation.js +263 -0
- package/dist/lib/resources/aws/organisations/organisationalUnit.d.ts +28 -0
- package/dist/lib/resources/aws/organisations/organisationalUnit.js +170 -0
- package/dist/lib/resources/aws/organisations/policy.d.ts +17 -0
- package/dist/lib/resources/aws/organisations/policy.js +93 -0
- package/dist/lib/resources/aws/organisations/trustedServiceAccess.d.ts +13 -0
- package/dist/lib/resources/aws/organisations/trustedServiceAccess.js +58 -0
- package/dist/lib/resources/aws/organisations/types.d.ts +165 -0
- package/dist/lib/resources/aws/organisations/types.js +36 -0
- package/dist/lib/utils/directTagging.d.ts +31 -0
- package/dist/lib/utils/directTagging.js +86 -0
- package/dist/lib/utils/fjallConstruct.d.ts +8 -0
- package/dist/lib/utils/fjallConstruct.js +18 -0
- package/dist/lib/utils/fjallStackSynthesizer.d.ts +9 -0
- package/dist/lib/utils/fjallStackSynthesizer.js +22 -0
- package/dist/lib/utils/tagContext.d.ts +28 -0
- package/dist/lib/utils/tagContext.js +53 -0
- package/dist/lib/utils/tagSynthesizer.d.ts +13 -0
- package/dist/lib/utils/tagSynthesizer.js +55 -0
- package/package.json +3 -7
- package/dist/lib/patterns/aws/ec2.d.ts +0 -43
- package/dist/lib/patterns/aws/ec2.js +0 -123
- package/dist/lib/utils/getCidr.d.ts +0 -8
- package/dist/lib/utils/getCidr.js +0 -40
|
@@ -169,4 +169,4 @@ class Compute extends constructs_1.Construct {
|
|
|
169
169
|
}
|
|
170
170
|
}
|
|
171
171
|
exports.Compute = Compute;
|
|
172
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9wYXR0ZXJucy9hd3MvY29tcHV0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxpREFBaUQ7QUFDakQsaURBUTZCO0FBQzdCLHVEQU1nQztBQUloQywyQ0FBdUM7QUFJdkMseURBTXlDO0FBQ3pDLHlFQUFrRTtBQUNsRSxpRUFBMEQ7QUFDMUQseURBQThEO0FBQzlELCtEQUFvRTtBQStFcEUsb0VBQW9FO0FBQ3BFLFNBQVMsa0JBQWtCLENBQUMsT0FBMkI7SUFDckQsTUFBTSxTQUFTLEdBQXlDO1FBQ3RELEtBQUssRUFBRSx1QkFBVSxDQUFDLEdBQUc7UUFDckIsTUFBTSxFQUFFLHVCQUFVLENBQUMsSUFBSTtRQUN2QixLQUFLLEVBQUUsdUJBQVUsQ0FBQyxHQUFHO1FBQ3JCLFFBQVEsRUFBRSx1QkFBVSxDQUFDLE1BQU07UUFDM0IsTUFBTSxFQUFFLHVCQUFVLENBQUMsSUFBSTtRQUN2QixTQUFTLEVBQUUsdUJBQVUsQ0FBQyxPQUFPO1FBQzdCLE9BQU8sRUFBRSx1QkFBVSxDQUFDLEtBQUs7S0FDMUIsQ0FBQztJQUVGLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUMxQixNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLE1BQU0sd0JBQXdCLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3RyxDQUFDO1FBQ0QsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsc0RBQXNEO0FBQ3RELFNBQVMsa0JBQWtCLENBQUMsY0FBc0M7SUFDaEUsSUFBSSxDQUFD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QUMsQ0FBQztZQUNMLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLElBQUksS0FBSyxDQUNiLHFFQUFxRSxDQUN0RSxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBRztZQUNsQixJQUFJLEVBQUUsSUFBSTtZQUNWLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxJQUFJLGVBQWU7WUFDekMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLElBQUksb0JBQU8sQ0FBQyxXQUFXO1lBQzdDLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztZQUN0QixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7WUFDNUIsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGlCQUFpQjtZQUMxQyxlQUFlLEVBQUUsS0FBSyxDQUFDLGVBQWU7WUFDdEMsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZLElBQUksRUFBRTtZQUN0QyxpQkFBaUIsRUFBRSxLQUFLLENBQUMsaUJBQWlCO1lBQzFDLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxtQkFBbUI7WUFDOUMsZUFBZSxFQUFFLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUM7WUFDMUQsV0FBVyxFQUFFLEtBQUssQ0FBQyxvQkFBb0I7U0FDeEMsQ0FBQztRQUVGLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSx1QkFBYyxDQUMvQixJQUFJLENBQUMsS0FBSyxFQUNWLEdBQUcsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUNsQixXQUFXLENBQ1osQ0FBQztRQUVGLGdFQUFnRTtRQUNoRSw4REFBOEQ7UUFDOUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLHFCQUFXLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0NBQ0Y7QUF4SkQsMEJBd0pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVwb3NpdG9yeUltYWdlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lY3NcIjtcbmltcG9ydCB7IFJlcG9zaXRvcnkgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjclwiO1xuaW1wb3J0IHtcbiAgQ29ubmVjdGlvbnMsXG4gIElDb25uZWN0YWJsZSxcbiAgSVZwYyxcbiAgUG9ydCxcbiAgU3VibmV0VHlwZSxcbiAgVXNlckRhdGEsXG4gIElNYWNoaW5lSW1hZ2Vcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCB7XG4gIENvZGUsXG4gIFJ1bnRpbWUsXG4gIEZ1bmN0aW9uVXJsQXV0aFR5cGUsXG4gIEh0dHBNZXRob2QsXG4gIEZ1bmN0aW9uVXJsQ29yc09wdGlvbnNcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCB7IER1cmF0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBQb2xpY3lEb2N1bWVudCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5cbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmltcG9ydCBBcHAgZnJvbSBcIi4uLy4uL2FwcFwiO1xuXG5pbXBvcnQgRmFyZ2F0ZUNsdXN0ZXIsIHtcbiAgQ29udGFpbmVyU2VjcmV0LFxuICBGYXJnYXRlQ2x1c3RlclByb3BzLFxuICBQcm90b2NvbCxcbiAgU2NhbGluZ1R5cGUsXG4gIERvbWFpbkNvbmZpZ1xufSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9jb21wdXRlL2Vjc1wiO1xuaW1wb3J0IEVjc0ZyZWVUaWVyIGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2NvbXB1dGUvZWNzRnJlZVRpZXJcIjtcbmltcG9ydCBFY3NTcG90IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2NvbXB1dGUvZWNzU3BvdFwiO1xuaW1wb3J0IHsgRWMySW5zdGFuY2UgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9jb21wdXRlL2VjMlwiO1xuaW1wb3J0IHsgTGFtYmRhRnVuY3Rpb24gfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9jb21wdXRlL2xhbWJkYVwiO1xuaW1wb3J0IHsgS2V5VmFsdWUgfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcbmltcG9ydCB7IFNlY3JldEltcG9ydCB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL3NlY3JldHNcIjtcblxuLy8gVXNlci1mcmllbmRseSBIVFRQIG1ldGhvZCB0eXBlXG5leHBvcnQgdHlwZSBIdHRwTWV0aG9kU3RyaW5nID0gXCJHRVRcIiB8IFwiUE9TVFwiIHwgXCJQVVRcIiB8IFwiREVMRVRFXCIgfCBcIkhFQURcIiB8IFwiT1BUSU9OU1wiIHwgXCJQQVRDSFwiO1xuXG4vLyBVc2VyLWZyaWVuZGx5IENPUlMgb3B0aW9ucyB0aGF0IGFjY2VwdCBzdHJpbmcgbWV0aG9kc1xuZXhwb3J0IGludGVyZmFjZSBTaW1wbGlmaWVkQ29yc09wdGlvbnMge1xuICBhbGxvd2VkT3JpZ2lucz86IHN0cmluZ1tdO1xuICBhbGxvd2VkTWV0aG9kcz86IEh0dHBNZXRob2RTdHJpbmdbXTtcbiAgYWxsb3dlZEhlYWRlcnM/OiBzdHJpbmdbXTtcbiAgbWF4QWdlPzogRHVyYXRpb247XG4gIGFsbG93Q3JlZGVudGlhbHM/OiBib29sZWFuO1xuICBleHBvc2VIZWFkZXJzPzogc3RyaW5nW107XG59XG5cbmludGVyZmFjZSBJQ29tcHV0ZVByb3BzIHtcbiAgdnBjPzogSVZwYztcbiAgZWNyUmVwb3NpdG9yeT86IFJlcG9zaXRvcnkgfCBSZXBvc2l0b3J5SW1hZ2U7XG5cbiAgLy8gQ29tcHV0ZSB0eXBlIHNlbGVjdGlvblxuICB0eXBlPzogXCJlY3NcIiB8IFwiZWMyXCIgfCBcImxhbWJkYVwiO1xuXG4gIC8vIEVDUyBzdWJ0eXBlIHNlbGVjdGlvbiAob25seSBhcHBsaWNhYmxlIHdoZW4gdHlwZSBpcyBcImVjc1wiKVxuICBlY3NUeXBlPzogXCJmYXJnYXRlXCIgfCBcImZyZWV0aWVyXCIgfCBcInNwb3RcIjtcblxuICAvLyBFQ1Mtc3BlY2lmaWMgcHJvcGVydGllc1xuICBwYXJlbnREb21haW4/OiBzdHJpbmc7XG4gIGRvbWFpbkNvbmZpZz86IERvbWFpbkNvbmZpZztcblxuICAvKipcbiAgICogUG9ydCB0aGUgY29udGFpbmVyIGxpc3RlbnMgb24gKGRlZmF1bHQ6IDgwKVxuICAgKi9cbiAgY29udGFpbmVyUG9ydD86IG51bWJlcjtcblxuICAvKipcbiAgICogRW52aXJvbm1uZXQgdmFyaWFibGVzIHRvIHBhc3MgdG8gdGhlIGNvbnRhaW5lclxuICAgKi9cbiAgY29udGFpbmVyRW52aXJvbm1lbnQ/OiB7XG4gICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICB9O1xuXG4gIC8qKlxuICAgKiBTYWZlbHkgaW1wb3J0IHNlY3JldHMgZnJvbSBhbm90aGVyIHJlc291cmNlLFxuICAgKiAgb2JqZWN0IGtleSBpcyB1c2VkIGFzIG5hbWUgd2hlbiBwYXNzaW5nIHRvIGNvbnRhaW5lclxuICAgKi9cbiAgY29udGFpbmVyU2VjcmV0c0ltcG9ydD86IHtcbiAgICBba2V5OiBzdHJpbmddOiBTZWNyZXRJbXBvcnQ7XG4gIH07XG5cbiAgLy8gRUMyLXNwZWNpZmljIHByb3BlcnRpZXNcbiAgaW5zdGFuY2VUeXBlPzogc3RyaW5nO1xuICBlbmFibGVTU0g/OiBib29sZWFuO1xuICB1c2VyRGF0YT86IFVzZXJEYXRhO1xuICBtYWNoaW5lSW1hZ2U/OiBJTWFjaGluZUltYWdlO1xuICBtaW5DYXBhY2l0eT86IG51bWJlcjtcbiAgbWF4Q2FwYWNpdHk/OiBudW1iZXI7XG5cbiAgLy8gTGFtYmRhLXNwZWNpZmljIHByb3BlcnRpZXNcbiAgcnVudGltZT86IFJ1bnRpbWU7XG4gIGhhbmRsZXI/OiBzdHJpbmc7XG4gIGNvZGU/OiBDb2RlO1xuICB0aW1lb3V0PzogbnVtYmVyO1xuICBtZW1vcnlTaXplPzogbnVtYmVyO1xuICBsYW1iZGFEZXNjcmlwdGlvbj86IHN0cmluZztcbiAgcm9sZURlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBpbmxpbmVQb2xpY3k/OiB7XG4gICAgW25hbWU6IHN0cmluZ106IFBvbGljeURvY3VtZW50O1xuICB9O1xuXG4gIC8vIExhbWJkYSBVUkwgcHJvcGVydGllc1xuICBlbmFibGVGdW5jdGlvblVybD86IGJvb2xlYW47XG4gIGZ1bmN0aW9uVXJsQXV0aFR5cGU/OiBGdW5jdGlvblVybEF1dGhUeXBlO1xuICBmdW5jdGlvblVybENvcnM/OiBTaW1wbGlmaWVkQ29yc09wdGlvbnM7XG5cbiAgY29ubmVjdGlvbnM/OiBJQ29ubmVjdGFibGVbXTtcbn1cblxuLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGNvbnZlcnQgc3RyaW5nIEhUVFAgbWV0aG9kcyB0byBIdHRwTWV0aG9kIGVudW1cbmZ1bmN0aW9uIGNvbnZlcnRIdHRwTWV0aG9kcyhtZXRob2RzOiBIdHRwTWV0aG9kU3RyaW5nW10pOiBIdHRwTWV0aG9kW10ge1xuICBjb25zdCBtZXRob2RNYXA6IFJlY29yZDxIdHRwTWV0aG9kU3RyaW5nLCBIdHRwTWV0aG9kPiA9IHtcbiAgICBcIkdFVFwiOiBIdHRwTWV0aG9kLkdFVCxcbiAgICBcIlBPU1RcIjogSHR0cE1ldGhvZC5QT1NULFxuICAgIFwiUFVUXCI6IEh0dHBNZXRob2QuUFVULFxuICAgIFwiREVMRVRFXCI6IEh0dHBNZXRob2QuREVMRVRFLFxuICAgIFwiSEVBRFwiOiBIdHRwTWV0aG9kLkhFQUQsXG4gICAgXCJPUFRJT05TXCI6IEh0dHBNZXRob2QuT1BUSU9OUyxcbiAgICBcIlBBVENIXCI6IEh0dHBNZXRob2QuUEFUQ0gsXG4gIH07XG5cbiAgcmV0dXJuIG1ldGhvZHMubWFwKG1ldGhvZCA9PiB7XG4gICAgY29uc3QgaHR0cE1ldGhvZCA9IG1ldGhvZE1hcFttZXRob2RdO1xuICAgIGlmICghaHR0cE1ldGhvZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIEhUVFAgbWV0aG9kOiAke21ldGhvZH0uIFZhbGlkIG1ldGhvZHMgYXJlOiAke09iamVjdC5rZXlzKG1ldGhvZE1hcCkuam9pbihcIiwgXCIpfWApO1xuICAgIH1cbiAgICByZXR1cm4gaHR0cE1ldGhvZDtcbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgc2ltcGxpZmllZCBDT1JTIG9wdGlvbnMgdG8gQ0RLIENPUlMgb3B0aW9uc1xuZnVuY3Rpb24gY29udmVydENvcnNPcHRpb25zKHNpbXBsaWZpZWRDb3JzPzogU2ltcGxpZmllZENvcnNPcHRpb25zKTogRnVuY3Rpb25VcmxDb3JzT3B0aW9ucyB8IHVuZGVmaW5lZCB7XG4gIGlmICghc2ltcGxpZmllZENvcnMpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIHtcbiAgICBhbGxvd2VkT3JpZ2luczogc2ltcGxpZmllZENvcnMuYWxsb3dlZE9yaWdpbnMsXG4gICAgYWxsb3dlZE1ldGhvZHM6IHNpbXBsaWZpZWRDb3JzLmFsbG93ZWRNZXRob2RzID8gY29udmVydEh0dHBNZXRob2RzKHNpbXBsaWZpZWRDb3JzLmFsbG93ZWRNZXRob2RzKSA6IHVuZGVmaW5lZCxcbiAgICBhbGxvd2VkSGVhZGVyczogc2ltcGxpZmllZENvcnMuYWxsb3dlZEhlYWRlcnMsXG4gICAgbWF4QWdlOiBzaW1wbGlmaWVkQ29ycy5tYXhBZ2UsXG4gICAgYWxsb3dDcmVkZW50aWFsczogc2ltcGxpZmllZENvcnMuYWxsb3dDcmVkZW50aWFscyxcbiAgICBleHBvc2VkSGVhZGVyczogc2ltcGxpZmllZENvcnMuZXhwb3NlSGVhZGVycyxcbiAgfTtcbn1cblxuZXhwb3J0IGNsYXNzIENvbXB1dGVGYWN0b3J5IHtcbiAgc3RhdGljIGJ1aWxkKGlkOiBzdHJpbmcsIHByb3BzOiBJQ29tcHV0ZVByb3BzKSB7XG4gICAgcmV0dXJuIChhcHA6IEFwcCwgc2NvcGU6IENvbnN0cnVjdCkgPT4ge1xuICAgICAgY29uc3QgY29tcHV0ZVByb3BzID0ge1xuICAgICAgICAuLi57XG4gICAgICAgICAgdnBjOiBhcHAuZ2V0RGVmYXVsdFZwYygpLFxuICAgICAgICAgIGVjclJlcG9zaXRvcnk6IGFwcC5nZXREZWZhdWx0Q29udGFpbmVyUmVnaXN0cnkoKVxuICAgICAgICB9LFxuICAgICAgICAuLi5wcm9wc1xuICAgICAgfTtcblxuICAgICAgcmV0dXJuIG5ldyBDb21wdXRlKHNjb3BlLCBpZCwgY29tcHV0ZVByb3BzKTtcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb21wdXRlIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSUNvbm5lY3RhYmxlIHtcbiAgcHVibGljIGlkOiBzdHJpbmc7XG4gIHB1YmxpYyBzY29wZTogQ29uc3RydWN0O1xuICBwdWJsaWMgdnBjOiBJVnBjO1xuXG4gIHB1YmxpYyBjb25uZWN0aW9uczogQ29ubmVjdGlvbnM7XG5cbiAgcHJpdmF0ZSBjb21wdXRlOlxuICAgIHwgRmFyZ2F0ZUNsdXN0ZXJcbiAgICB8IEVjc0ZyZWVUaWVyXG4gICAgfCBFY3NTcG90XG4gICAgfCBFYzJJbnN0YW5jZVxuICAgIHwgTGFtYmRhRnVuY3Rpb247XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IElDb21wdXRlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIHRoaXMuaWQgPSBpZDtcbiAgICB0aGlzLnNjb3BlID0gc2NvcGU7XG5cbiAgICB0aGlzLmFkZENvbXB1dGUocHJvcHMpO1xuICB9XG5cbiAgYWRkQ29tcHV0ZShwcm9wczogSUNvbXB1dGVQcm9wcykge1xuICAgIGNvbnN0IGNvbXB1dGVUeXBlID0gcHJvcHMudHlwZSB8fCBcImVjc1wiO1xuXG4gICAgaWYgKGNvbXB1dGVUeXBlID09PSBcImVjMlwiKSB7XG4gICAgICB0aGlzLmFkZEVjMkNvbXB1dGUocHJvcHMpO1xuICAgIH0gZWxzZSBpZiAoY29tcHV0ZVR5cGUgPT09IFwibGFtYmRhXCIpIHtcbiAgICAgIHRoaXMuYWRkTGFtYmRhQ29tcHV0ZShwcm9wcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWRkRWNzQ29tcHV0ZShwcm9wcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRFYzJDb21wdXRlKHByb3BzOiBJQ29tcHV0ZVByb3BzKSB7XG4gICAgY29uc3QgZWMyUHJvcHMgPSB7XG4gICAgICBzZXJ2aWNlTmFtZTogYCR7dGhpcy5pZH1TZXJ2aWNlYCxcbiAgICAgIGluc3RhbmNlVHlwZTogcHJvcHMuaW5zdGFuY2VUeXBlIHx8IFwidDMubWljcm9cIixcbiAgICAgIGVuYWJsZVNTSDogcHJvcHMuZW5hYmxlU1NIIHx8IGZhbHNlLFxuICAgICAgdXNlckRhdGE6IHByb3BzLnVzZXJEYXRhLFxuICAgICAgbWFjaGluZUltYWdlOiBwcm9wcy5tYWNoaW5lSW1hZ2UsXG4gICAgICBtaW5DYXBhY2l0eTogcHJvcHMubWluQ2FwYWNpdHkgfHwgMSxcbiAgICAgIG1heENhcGFjaXR5OiBwcm9wcy5tYXhDYXBhY2l0eSB8fCAxLFxuICAgICAgdnBjOiBwcm9wcy52cGNcbiAgICB9O1xuXG4gICAgdGhpcy5jb21wdXRlID0gbmV3IEVjMkluc3RhbmNlKHRoaXMuc2NvcGUsIGAke3RoaXMuaWR9RWMyYCwgZWMyUHJvcHMpO1xuICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLmNvbXB1dGUuY29ubmVjdGlvbnM7XG5cbiAgICBpZiAocHJvcHMuY29ubmVjdGlvbnMpIHtcbiAgICAgIGZvciAodmFyIGNvbm4gb2YgcHJvcHMuY29ubmVjdGlvbnMpIHtcbiAgICAgICAgdGhpcy5jb21wdXRlLmNvbm5lY3Rpb25zLmFsbG93VG8oY29ubiwgUG9ydC5hbGxUY3AoKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRFY3NDb21wdXRlKHByb3BzOiBJQ29tcHV0ZVByb3BzKSB7XG4gICAgY29uc3QgZWNzVHlwZSA9IHByb3BzLmVjc1R5cGUgfHwgXCJmYXJnYXRlXCI7XG5cbiAgICAvLyBDb21tb24gRUNTIHByb3BzXG4gICAgY29uc3QgYmFzZUVjc1Byb3BzID0ge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBjb250YWluZXJQb3J0OiBwcm9wcy5jb250YWluZXJQb3J0IHx8IDgwLFxuICAgICAgc2VydmljZU5hbWU6IGAke3RoaXMuaWR9U2VydmljZWAsXG4gICAgICBjbHVzdGVyTmFtZTogYCR7dGhpcy5pZH1DbHVzdGVyYCxcbiAgICAgIGVjclJlcG9zaXRvcnk6IHByb3BzLmVjclJlcG9zaXRvcnkgfHwgXCJhbWF6b24vYW1hem9uLWVjcy1zYW1wbGVcIixcbiAgICAgIGNvbnRhaW5lckVudmlyb25tZW50OiBwcm9wcy5jb250YWluZXJFbnZpcm9ubWVudCB8fCB7fSxcbiAgICAgIGNvbnRhaW5lclNlY3JldHNJbXBvcnQ6IHByb3BzLmNvbnRhaW5lclNlY3JldHNJbXBvcnQgfHwge30sXG4gICAgICB2cGM6IHByb3BzLnZwY1xuICAgIH07XG5cbiAgICBpZiAoZWNzVHlwZSA9PT0gXCJmcmVldGllclwiKSB7XG4gICAgICAvLyBVc2UgRUMyLWJhc2VkIEVDUyBmb3IgZnJlZSB0aWVyXG4gICAgICB0aGlzLmNvbXB1dGUgPSBuZXcgRWNzRnJlZVRpZXIoXG4gICAgICAgIHRoaXMuc2NvcGUsXG4gICAgICAgIGAke3RoaXMuaWR9RWNzRnJlZVRpZXJgLFxuICAgICAgICBiYXNlRWNzUHJvcHNcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChlY3NUeXBlID09PSBcInNwb3RcIikge1xuICAgICAgLy8gVXNlIEVDMiBTcG90IGluc3RhbmNlcyBmb3IgY29zdCBvcHRpbWl6YXRpb25cbiAgICAgIHRoaXMuY29tcHV0ZSA9IG5ldyBFY3NTcG90KHRoaXMuc2NvcGUsIGAke3RoaXMuaWR9RWNzU3BvdGAsIGJhc2VFY3NQcm9wcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIERlZmF1bHQgdG8gRmFyZ2F0ZVxuICAgICAgY29uc3QgZmFyZ2F0ZVByb3BzID0ge1xuICAgICAgICAuLi5iYXNlRWNzUHJvcHMsXG4gICAgICAgIHNjYWxpbmdUeXBlOiBTY2FsaW5nVHlwZS5DUFUsXG4gICAgICAgIHByb3RvY29sOiBwcm9wcy5kb21haW5Db25maWcgPyBQcm90b2NvbC5IVFRQUyA6IFByb3RvY29sLkhUVFAsXG4gICAgICAgIGRvbWFpbkNvbmZpZzogcHJvcHMuZG9tYWluQ29uZmlnXG4gICAgICB9IGFzIEZhcmdhdGVDbHVzdGVyUHJvcHM7XG5cbiAgICAgIHRoaXMuY29tcHV0ZSA9IG5ldyBGYXJnYXRlQ2x1c3RlcihcbiAgICAgICAgdGhpcy5zY29wZSxcbiAgICAgICAgYCR7dGhpcy5pZH1GYXJnYXRlYCxcbiAgICAgICAgZmFyZ2F0ZVByb3BzXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5jb25uZWN0aW9ucykge1xuICAgICAgZm9yICh2YXIgY29ubiBvZiBwcm9wcy5jb25uZWN0aW9ucykge1xuICAgICAgICB0aGlzLmNvbXB1dGUuY29ubmVjdGlvbnMuYWxsb3dUbyhjb25uLCBQb3J0LmFsbFRjcCgpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5jb21wdXRlLmNvbm5lY3Rpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRMYW1iZGFDb21wdXRlKHByb3BzOiBJQ29tcHV0ZVByb3BzKSB7XG4gICAgbGV0IGNvZGUgPSBwcm9wcy5jb2RlO1xuXG4gICAgaWYgKCFjb2RlKSB7XG4gICAgICBpZiAoIXByb3BzLmVjclJlcG9zaXRvcnkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIFwiRWl0aGVyIGNvZGUgb3IgZWNyUmVwb3NpdG9yeSBtdXN0IGJlIHByb3ZpZGVkIGZvciBMYW1iZGEgY29tcHV0ZSB0eXBlXCJcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHByb3BzLmVjclJlcG9zaXRvcnkgaW5zdGFuY2VvZiBSZXBvc2l0b3J5KSB7XG4gICAgICAgIGNvZGUgPSBDb2RlLmZyb21FY3JJbWFnZShwcm9wcy5lY3JSZXBvc2l0b3J5LCB7XG4gICAgICAgICAgdGFnT3JEaWdlc3Q6IFwibGF0ZXN0XCJcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgXCJlY3JSZXBvc2l0b3J5IG11c3QgYmUgYSBSZXBvc2l0b3J5IGluc3RhbmNlIGZvciBMYW1iZGEgY29tcHV0ZSB0eXBlXCJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBsYW1iZGFQcm9wcyA9IHtcbiAgICAgIGNvZGU6IGNvZGUsXG4gICAgICBoYW5kbGVyOiBwcm9wcy5oYW5kbGVyIHx8IFwiaW5kZXguaGFuZGxlclwiLFxuICAgICAgcnVudGltZTogcHJvcHMucnVudGltZSB8fCBSdW50aW1lLk5PREVKU18xOF9YLFxuICAgICAgdGltZW91dDogcHJvcHMudGltZW91dCxcbiAgICAgIG1lbW9yeVNpemU6IHByb3BzLm1lbW9yeVNpemUsXG4gICAgICBsYW1iZGFEZXNjcmlwdGlvbjogcHJvcHMubGFtYmRhRGVzY3JpcHRpb24sXG4gICAgICByb2xlRGVzY3JpcHRpb246IHByb3BzLnJvbGVEZXNjcmlwdGlvbixcbiAgICAgIGlubGluZVBvbGljeTogcHJvcHMuaW5saW5lUG9saWN5IHx8IHt9LFxuICAgICAgZW5hYmxlRnVuY3Rpb25Vcmw6IHByb3BzLmVuYWJsZUZ1bmN0aW9uVXJsLFxuICAgICAgZnVuY3Rpb25VcmxBdXRoVHlwZTogcHJvcHMuZnVuY3Rpb25VcmxBdXRoVHlwZSxcbiAgICAgIGZ1bmN0aW9uVXJsQ29yczogY29udmVydENvcnNPcHRpb25zKHByb3BzLmZ1bmN0aW9uVXJsQ29ycyksXG4gICAgICBlbnZpcm9ubWVudDogcHJvcHMuY29udGFpbmVyRW52aXJvbm1lbnRcbiAgICB9O1xuXG4gICAgdGhpcy5jb21wdXRlID0gbmV3IExhbWJkYUZ1bmN0aW9uKFxuICAgICAgdGhpcy5zY29wZSxcbiAgICAgIGAke3RoaXMuaWR9TGFtYmRhYCxcbiAgICAgIGxhbWJkYVByb3BzXG4gICAgKTtcblxuICAgIC8vIExhbWJkYSBmdW5jdGlvbnMgZG9uJ3QgdXNlIHNlY3VyaXR5IGdyb3VwcyB1bmxlc3MgVlBDLWVuYWJsZWRcbiAgICAvLyBDcmVhdGUgZW1wdHkgY29ubmVjdGlvbnMgb2JqZWN0IGZvciBpbnRlcmZhY2UgY29tcGF0aWJpbGl0eVxuICAgIHRoaXMuY29ubmVjdGlvbnMgPSBuZXcgQ29ubmVjdGlvbnMoKTtcbiAgfVxufVxuIl19
|
|
172
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9wYXR0ZXJucy9hd3MvY29tcHV0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxpREFBaUQ7QUFDakQsaURBUTZCO0FBQzdCLHVEQU1nQztBQUloQywyQ0FBdUM7QUFJdkMseURBTXlDO0FBQ3pDLHlFQUFrRTtBQUNsRSxpRUFBMEQ7QUFDMUQseURBQThEO0FBQzlELCtEQUFvRTtBQXNGcEUsb0VBQW9FO0FBQ3BFLFNBQVMsa0JBQWtCLENBQUMsT0FBMkI7SUFDckQsTUFBTSxTQUFTLEdBQXlDO1FBQ3RELEtBQUssRUFBRSx1QkFBVSxDQUFDLEdBQUc7UUFDckIsTUFBTSxFQUFFLHVCQUFVLENBQUMsSUFBSTtRQUN2QixLQUFLLEVBQUUsdUJBQVUsQ0FBQyxHQUFHO1FBQ3JCLFFBQVEsRUFBRSx1QkFBVSxDQUFDLE1BQU07UUFDM0IsTUFBTSxFQUFFLHVCQUFVLENBQUMsSUFBSTtRQUN2QixTQUFTLEVBQUUsdUJBQVUsQ0FBQyxPQUFPO1FBQzdCLE9BQU8sRUFBRSx1QkFBVSxDQUFDLEtBQUs7S0FDMUIsQ0FBQztJQUVGLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUMxQixNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLE1BQU0sd0JBQXdCLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3RyxDQUFDO1FBQ0QsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsc0RBQXNEO0FBQ3RELFNBQVMsa0JBQWtCLENBQUMsY0FBc0M7SUFDaEUsSUFBSSxDQUFD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QUMsQ0FBQztZQUNMLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLElBQUksS0FBSyxDQUNiLHFFQUFxRSxDQUN0RSxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBRztZQUNsQixJQUFJLEVBQUUsSUFBSTtZQUNWLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxJQUFJLGVBQWU7WUFDekMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLElBQUksb0JBQU8sQ0FBQyxXQUFXO1lBQzdDLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztZQUN0QixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7WUFDNUIsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGlCQUFpQjtZQUMxQyxlQUFlLEVBQUUsS0FBSyxDQUFDLGVBQWU7WUFDdEMsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZLElBQUksRUFBRTtZQUN0QyxpQkFBaUIsRUFBRSxLQUFLLENBQUMsaUJBQWlCO1lBQzFDLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxtQkFBbUI7WUFDOUMsZUFBZSxFQUFFLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUM7WUFDMUQsV0FBVyxFQUFFLEtBQUssQ0FBQyxvQkFBb0I7U0FDeEMsQ0FBQztRQUVGLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSx1QkFBYyxDQUMvQixJQUFJLENBQUMsS0FBSyxFQUNWLEdBQUcsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUNsQixXQUFXLENBQ1osQ0FBQztRQUVGLGdFQUFnRTtRQUNoRSw4REFBOEQ7UUFDOUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLHFCQUFXLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0NBQ0Y7QUF4SkQsMEJBd0pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVwb3NpdG9yeUltYWdlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lY3NcIjtcbmltcG9ydCB7IFJlcG9zaXRvcnkgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjclwiO1xuaW1wb3J0IHtcbiAgQ29ubmVjdGlvbnMsXG4gIElDb25uZWN0YWJsZSxcbiAgSVZwYyxcbiAgUG9ydCxcbiAgU3VibmV0VHlwZSxcbiAgVXNlckRhdGEsXG4gIElNYWNoaW5lSW1hZ2Vcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCB7XG4gIENvZGUsXG4gIFJ1bnRpbWUsXG4gIEZ1bmN0aW9uVXJsQXV0aFR5cGUsXG4gIEh0dHBNZXRob2QsXG4gIEZ1bmN0aW9uVXJsQ29yc09wdGlvbnNcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCB7IER1cmF0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBQb2xpY3lEb2N1bWVudCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5cbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmltcG9ydCBBcHAgZnJvbSBcIi4uLy4uL2FwcFwiO1xuXG5pbXBvcnQgRmFyZ2F0ZUNsdXN0ZXIsIHtcbiAgQ29udGFpbmVyU2VjcmV0LFxuICBGYXJnYXRlQ2x1c3RlclByb3BzLFxuICBQcm90b2NvbCxcbiAgU2NhbGluZ1R5cGUsXG4gIERvbWFpbkNvbmZpZ1xufSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9jb21wdXRlL2Vjc1wiO1xuaW1wb3J0IEVjc0ZyZWVUaWVyIGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2NvbXB1dGUvZWNzRnJlZVRpZXJcIjtcbmltcG9ydCBFY3NTcG90IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2NvbXB1dGUvZWNzU3BvdFwiO1xuaW1wb3J0IHsgRWMySW5zdGFuY2UgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9jb21wdXRlL2VjMlwiO1xuaW1wb3J0IHsgTGFtYmRhRnVuY3Rpb24gfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9jb21wdXRlL2xhbWJkYVwiO1xuaW1wb3J0IHsgS2V5VmFsdWUgfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcbmltcG9ydCB7IFNlY3JldEltcG9ydCB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL3NlY3JldHNcIjtcblxuLy8gVXNlci1mcmllbmRseSBIVFRQIG1ldGhvZCB0eXBlXG5leHBvcnQgdHlwZSBIdHRwTWV0aG9kU3RyaW5nID0gXCJHRVRcIiB8IFwiUE9TVFwiIHwgXCJQVVRcIiB8IFwiREVMRVRFXCIgfCBcIkhFQURcIiB8IFwiT1BUSU9OU1wiIHwgXCJQQVRDSFwiO1xuXG4vLyBVc2VyLWZyaWVuZGx5IENPUlMgb3B0aW9ucyB0aGF0IGFjY2VwdCBzdHJpbmcgbWV0aG9kc1xuZXhwb3J0IGludGVyZmFjZSBTaW1wbGlmaWVkQ29yc09wdGlvbnMge1xuICBhbGxvd2VkT3JpZ2lucz86IHN0cmluZ1tdO1xuICBhbGxvd2VkTWV0aG9kcz86IEh0dHBNZXRob2RTdHJpbmdbXTtcbiAgYWxsb3dlZEhlYWRlcnM/OiBzdHJpbmdbXTtcbiAgbWF4QWdlPzogRHVyYXRpb247XG4gIGFsbG93Q3JlZGVudGlhbHM/OiBib29sZWFuO1xuICBleHBvc2VIZWFkZXJzPzogc3RyaW5nW107XG59XG5cbmludGVyZmFjZSBJQ29tcHV0ZVByb3BzIHtcbiAgdnBjPzogSVZwYztcbiAgZWNyUmVwb3NpdG9yeT86IFJlcG9zaXRvcnkgfCBSZXBvc2l0b3J5SW1hZ2U7XG5cbiAgLy8gQ29tcHV0ZSB0eXBlIHNlbGVjdGlvblxuICB0eXBlPzogXCJlY3NcIiB8IFwiZWMyXCIgfCBcImxhbWJkYVwiO1xuXG4gIC8vIEVDUyBzdWJ0eXBlIHNlbGVjdGlvbiAob25seSBhcHBsaWNhYmxlIHdoZW4gdHlwZSBpcyBcImVjc1wiKVxuICBlY3NUeXBlPzogXCJmYXJnYXRlXCIgfCBcImZyZWV0aWVyXCIgfCBcInNwb3RcIjtcblxuICAvLyBFQ1Mtc3BlY2lmaWMgcHJvcGVydGllc1xuICBwYXJlbnREb21haW4/OiBzdHJpbmc7XG4gIGRvbWFpbkNvbmZpZz86IERvbWFpbkNvbmZpZztcblxuICAvKipcbiAgICogUGF0aCB0byBEb2NrZXJmaWxlIGZvciBidWlsZGluZyBjdXN0b20gaW1hZ2UuXG4gICAqIE5vdGU6IFRoaXMgaXMgbWV0YWRhdGEgZm9yIHRoZSBDTEkgYnVpbGQgcHJvY2VzcyxcbiAgICogbm90IHVzZWQgZHVyaW5nIENESyBzeW50aGVzaXNcbiAgICovXG4gIGRvY2tlcmZpbGVQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQb3J0IHRoZSBjb250YWluZXIgbGlzdGVucyBvbiAoZGVmYXVsdDogODApXG4gICAqL1xuICBjb250YWluZXJQb3J0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBFbnZpcm9ubW5ldCB2YXJpYWJsZXMgdG8gcGFzcyB0byB0aGUgY29udGFpbmVyXG4gICAqL1xuICBjb250YWluZXJFbnZpcm9ubWVudD86IHtcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gIH07XG5cbiAgLyoqXG4gICAqIFNhZmVseSBpbXBvcnQgc2VjcmV0cyBmcm9tIGFub3RoZXIgcmVzb3VyY2UsXG4gICAqICBvYmplY3Qga2V5IGlzIHVzZWQgYXMgbmFtZSB3aGVuIHBhc3NpbmcgdG8gY29udGFpbmVyXG4gICAqL1xuICBjb250YWluZXJTZWNyZXRzSW1wb3J0Pzoge1xuICAgIFtrZXk6IHN0cmluZ106IFNlY3JldEltcG9ydDtcbiAgfTtcblxuICAvLyBFQzItc3BlY2lmaWMgcHJvcGVydGllc1xuICBpbnN0YW5jZVR5cGU/OiBzdHJpbmc7XG4gIGVuYWJsZVNTSD86IGJvb2xlYW47XG4gIHVzZXJEYXRhPzogVXNlckRhdGE7XG4gIG1hY2hpbmVJbWFnZT86IElNYWNoaW5lSW1hZ2U7XG4gIG1pbkNhcGFjaXR5PzogbnVtYmVyO1xuICBtYXhDYXBhY2l0eT86IG51bWJlcjtcblxuICAvLyBMYW1iZGEtc3BlY2lmaWMgcHJvcGVydGllc1xuICBydW50aW1lPzogUnVudGltZTtcbiAgaGFuZGxlcj86IHN0cmluZztcbiAgY29kZT86IENvZGU7XG4gIHRpbWVvdXQ/OiBudW1iZXI7XG4gIG1lbW9yeVNpemU/OiBudW1iZXI7XG4gIGxhbWJkYURlc2NyaXB0aW9uPzogc3RyaW5nO1xuICByb2xlRGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGlubGluZVBvbGljeT86IHtcbiAgICBbbmFtZTogc3RyaW5nXTogUG9saWN5RG9jdW1lbnQ7XG4gIH07XG5cbiAgLy8gTGFtYmRhIFVSTCBwcm9wZXJ0aWVzXG4gIGVuYWJsZUZ1bmN0aW9uVXJsPzogYm9vbGVhbjtcbiAgZnVuY3Rpb25VcmxBdXRoVHlwZT86IEZ1bmN0aW9uVXJsQXV0aFR5cGU7XG4gIGZ1bmN0aW9uVXJsQ29ycz86IFNpbXBsaWZpZWRDb3JzT3B0aW9ucztcblxuICBjb25uZWN0aW9ucz86IElDb25uZWN0YWJsZVtdO1xufVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gY29udmVydCBzdHJpbmcgSFRUUCBtZXRob2RzIHRvIEh0dHBNZXRob2QgZW51bVxuZnVuY3Rpb24gY29udmVydEh0dHBNZXRob2RzKG1ldGhvZHM6IEh0dHBNZXRob2RTdHJpbmdbXSk6IEh0dHBNZXRob2RbXSB7XG4gIGNvbnN0IG1ldGhvZE1hcDogUmVjb3JkPEh0dHBNZXRob2RTdHJpbmcsIEh0dHBNZXRob2Q+ID0ge1xuICAgIFwiR0VUXCI6IEh0dHBNZXRob2QuR0VULFxuICAgIFwiUE9TVFwiOiBIdHRwTWV0aG9kLlBPU1QsXG4gICAgXCJQVVRcIjogSHR0cE1ldGhvZC5QVVQsXG4gICAgXCJERUxFVEVcIjogSHR0cE1ldGhvZC5ERUxFVEUsXG4gICAgXCJIRUFEXCI6IEh0dHBNZXRob2QuSEVBRCxcbiAgICBcIk9QVElPTlNcIjogSHR0cE1ldGhvZC5PUFRJT05TLFxuICAgIFwiUEFUQ0hcIjogSHR0cE1ldGhvZC5QQVRDSCxcbiAgfTtcblxuICByZXR1cm4gbWV0aG9kcy5tYXAobWV0aG9kID0+IHtcbiAgICBjb25zdCBodHRwTWV0aG9kID0gbWV0aG9kTWFwW21ldGhvZF07XG4gICAgaWYgKCFodHRwTWV0aG9kKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgSFRUUCBtZXRob2Q6ICR7bWV0aG9kfS4gVmFsaWQgbWV0aG9kcyBhcmU6ICR7T2JqZWN0LmtleXMobWV0aG9kTWFwKS5qb2luKFwiLCBcIil9YCk7XG4gICAgfVxuICAgIHJldHVybiBodHRwTWV0aG9kO1xuICB9KTtcbn1cblxuLy8gQ29udmVydCBzaW1wbGlmaWVkIENPUlMgb3B0aW9ucyB0byBDREsgQ09SUyBvcHRpb25zXG5mdW5jdGlvbiBjb252ZXJ0Q29yc09wdGlvbnMoc2ltcGxpZmllZENvcnM/OiBTaW1wbGlmaWVkQ29yc09wdGlvbnMpOiBGdW5jdGlvblVybENvcnNPcHRpb25zIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFzaW1wbGlmaWVkQ29ycykgcmV0dXJuIHVuZGVmaW5lZDtcblxuICByZXR1cm4ge1xuICAgIGFsbG93ZWRPcmlnaW5zOiBzaW1wbGlmaWVkQ29ycy5hbGxvd2VkT3JpZ2lucyxcbiAgICBhbGxvd2VkTWV0aG9kczogc2ltcGxpZmllZENvcnMuYWxsb3dlZE1ldGhvZHMgPyBjb252ZXJ0SHR0cE1ldGhvZHMoc2ltcGxpZmllZENvcnMuYWxsb3dlZE1ldGhvZHMpIDogdW5kZWZpbmVkLFxuICAgIGFsbG93ZWRIZWFkZXJzOiBzaW1wbGlmaWVkQ29ycy5hbGxvd2VkSGVhZGVycyxcbiAgICBtYXhBZ2U6IHNpbXBsaWZpZWRDb3JzLm1heEFnZSxcbiAgICBhbGxvd0NyZWRlbnRpYWxzOiBzaW1wbGlmaWVkQ29ycy5hbGxvd0NyZWRlbnRpYWxzLFxuICAgIGV4cG9zZWRIZWFkZXJzOiBzaW1wbGlmaWVkQ29ycy5leHBvc2VIZWFkZXJzLFxuICB9O1xufVxuXG5leHBvcnQgY2xhc3MgQ29tcHV0ZUZhY3Rvcnkge1xuICBzdGF0aWMgYnVpbGQoaWQ6IHN0cmluZywgcHJvcHM6IElDb21wdXRlUHJvcHMpIHtcbiAgICByZXR1cm4gKGFwcDogQXBwLCBzY29wZTogQ29uc3RydWN0KSA9PiB7XG4gICAgICBjb25zdCBjb21wdXRlUHJvcHMgPSB7XG4gICAgICAgIC4uLntcbiAgICAgICAgICB2cGM6IGFwcC5nZXREZWZhdWx0VnBjKCksXG4gICAgICAgICAgZWNyUmVwb3NpdG9yeTogYXBwLmdldERlZmF1bHRDb250YWluZXJSZWdpc3RyeSgpXG4gICAgICAgIH0sXG4gICAgICAgIC4uLnByb3BzXG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gbmV3IENvbXB1dGUoc2NvcGUsIGlkLCBjb21wdXRlUHJvcHMpO1xuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbXB1dGUgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJQ29ubmVjdGFibGUge1xuICBwdWJsaWMgaWQ6IHN0cmluZztcbiAgcHVibGljIHNjb3BlOiBDb25zdHJ1Y3Q7XG4gIHB1YmxpYyB2cGM6IElWcGM7XG5cbiAgcHVibGljIGNvbm5lY3Rpb25zOiBDb25uZWN0aW9ucztcblxuICBwcml2YXRlIGNvbXB1dGU6XG4gICAgfCBGYXJnYXRlQ2x1c3RlclxuICAgIHwgRWNzRnJlZVRpZXJcbiAgICB8IEVjc1Nwb3RcbiAgICB8IEVjMkluc3RhbmNlXG4gICAgfCBMYW1iZGFGdW5jdGlvbjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogSUNvbXB1dGVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMuc2NvcGUgPSBzY29wZTtcblxuICAgIHRoaXMuYWRkQ29tcHV0ZShwcm9wcyk7XG4gIH1cblxuICBhZGRDb21wdXRlKHByb3BzOiBJQ29tcHV0ZVByb3BzKSB7XG4gICAgY29uc3QgY29tcHV0ZVR5cGUgPSBwcm9wcy50eXBlIHx8IFwiZWNzXCI7XG5cbiAgICBpZiAoY29tcHV0ZVR5cGUgPT09IFwiZWMyXCIpIHtcbiAgICAgIHRoaXMuYWRkRWMyQ29tcHV0ZShwcm9wcyk7XG4gICAgfSBlbHNlIGlmIChjb21wdXRlVHlwZSA9PT0gXCJsYW1iZGFcIikge1xuICAgICAgdGhpcy5hZGRMYW1iZGFDb21wdXRlKHByb3BzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hZGRFY3NDb21wdXRlKHByb3BzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZEVjMkNvbXB1dGUocHJvcHM6IElDb21wdXRlUHJvcHMpIHtcbiAgICBjb25zdCBlYzJQcm9wcyA9IHtcbiAgICAgIHNlcnZpY2VOYW1lOiBgJHt0aGlzLmlkfVNlcnZpY2VgLFxuICAgICAgaW5zdGFuY2VUeXBlOiBwcm9wcy5pbnN0YW5jZVR5cGUgfHwgXCJ0My5taWNyb1wiLFxuICAgICAgZW5hYmxlU1NIOiBwcm9wcy5lbmFibGVTU0ggfHwgZmFsc2UsXG4gICAgICB1c2VyRGF0YTogcHJvcHMudXNlckRhdGEsXG4gICAgICBtYWNoaW5lSW1hZ2U6IHByb3BzLm1hY2hpbmVJbWFnZSxcbiAgICAgIG1pbkNhcGFjaXR5OiBwcm9wcy5taW5DYXBhY2l0eSB8fCAxLFxuICAgICAgbWF4Q2FwYWNpdHk6IHByb3BzLm1heENhcGFjaXR5IHx8IDEsXG4gICAgICB2cGM6IHByb3BzLnZwY1xuICAgIH07XG5cbiAgICB0aGlzLmNvbXB1dGUgPSBuZXcgRWMySW5zdGFuY2UodGhpcy5zY29wZSwgYCR7dGhpcy5pZH1FYzJgLCBlYzJQcm9wcyk7XG4gICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuY29tcHV0ZS5jb25uZWN0aW9ucztcblxuICAgIGlmIChwcm9wcy5jb25uZWN0aW9ucykge1xuICAgICAgZm9yICh2YXIgY29ubiBvZiBwcm9wcy5jb25uZWN0aW9ucykge1xuICAgICAgICB0aGlzLmNvbXB1dGUuY29ubmVjdGlvbnMuYWxsb3dUbyhjb25uLCBQb3J0LmFsbFRjcCgpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZEVjc0NvbXB1dGUocHJvcHM6IElDb21wdXRlUHJvcHMpIHtcbiAgICBjb25zdCBlY3NUeXBlID0gcHJvcHMuZWNzVHlwZSB8fCBcImZhcmdhdGVcIjtcblxuICAgIC8vIENvbW1vbiBFQ1MgcHJvcHNcbiAgICBjb25zdCBiYXNlRWNzUHJvcHMgPSB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNvbnRhaW5lclBvcnQ6IHByb3BzLmNvbnRhaW5lclBvcnQgfHwgODAsXG4gICAgICBzZXJ2aWNlTmFtZTogYCR7dGhpcy5pZH1TZXJ2aWNlYCxcbiAgICAgIGNsdXN0ZXJOYW1lOiBgJHt0aGlzLmlkfUNsdXN0ZXJgLFxuICAgICAgZWNyUmVwb3NpdG9yeTogcHJvcHMuZWNyUmVwb3NpdG9yeSB8fCBcImFtYXpvbi9hbWF6b24tZWNzLXNhbXBsZVwiLFxuICAgICAgY29udGFpbmVyRW52aXJvbm1lbnQ6IHByb3BzLmNvbnRhaW5lckVudmlyb25tZW50IHx8IHt9LFxuICAgICAgY29udGFpbmVyU2VjcmV0c0ltcG9ydDogcHJvcHMuY29udGFpbmVyU2VjcmV0c0ltcG9ydCB8fCB7fSxcbiAgICAgIHZwYzogcHJvcHMudnBjXG4gICAgfTtcblxuICAgIGlmIChlY3NUeXBlID09PSBcImZyZWV0aWVyXCIpIHtcbiAgICAgIC8vIFVzZSBFQzItYmFzZWQgRUNTIGZvciBmcmVlIHRpZXJcbiAgICAgIHRoaXMuY29tcHV0ZSA9IG5ldyBFY3NGcmVlVGllcihcbiAgICAgICAgdGhpcy5zY29wZSxcbiAgICAgICAgYCR7dGhpcy5pZH1FY3NGcmVlVGllcmAsXG4gICAgICAgIGJhc2VFY3NQcm9wc1xuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKGVjc1R5cGUgPT09IFwic3BvdFwiKSB7XG4gICAgICAvLyBVc2UgRUMyIFNwb3QgaW5zdGFuY2VzIGZvciBjb3N0IG9wdGltaXphdGlvblxuICAgICAgdGhpcy5jb21wdXRlID0gbmV3IEVjc1Nwb3QodGhpcy5zY29wZSwgYCR7dGhpcy5pZH1FY3NTcG90YCwgYmFzZUVjc1Byb3BzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRGVmYXVsdCB0byBGYXJnYXRlXG4gICAgICBjb25zdCBmYXJnYXRlUHJvcHMgPSB7XG4gICAgICAgIC4uLmJhc2VFY3NQcm9wcyxcbiAgICAgICAgc2NhbGluZ1R5cGU6IFNjYWxpbmdUeXBlLkNQVSxcbiAgICAgICAgcHJvdG9jb2w6IHByb3BzLmRvbWFpbkNvbmZpZyA/IFByb3RvY29sLkhUVFBTIDogUHJvdG9jb2wuSFRUUCxcbiAgICAgICAgZG9tYWluQ29uZmlnOiBwcm9wcy5kb21haW5Db25maWdcbiAgICAgIH0gYXMgRmFyZ2F0ZUNsdXN0ZXJQcm9wcztcblxuICAgICAgdGhpcy5jb21wdXRlID0gbmV3IEZhcmdhdGVDbHVzdGVyKFxuICAgICAgICB0aGlzLnNjb3BlLFxuICAgICAgICBgJHt0aGlzLmlkfUZhcmdhdGVgLFxuICAgICAgICBmYXJnYXRlUHJvcHNcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLmNvbm5lY3Rpb25zKSB7XG4gICAgICBmb3IgKHZhciBjb25uIG9mIHByb3BzLmNvbm5lY3Rpb25zKSB7XG4gICAgICAgIHRoaXMuY29tcHV0ZS5jb25uZWN0aW9ucy5hbGxvd1RvKGNvbm4sIFBvcnQuYWxsVGNwKCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLmNvbXB1dGUuY29ubmVjdGlvbnM7XG4gIH1cblxuICBwcml2YXRlIGFkZExhbWJkYUNvbXB1dGUocHJvcHM6IElDb21wdXRlUHJvcHMpIHtcbiAgICBsZXQgY29kZSA9IHByb3BzLmNvZGU7XG5cbiAgICBpZiAoIWNvZGUpIHtcbiAgICAgIGlmICghcHJvcHMuZWNyUmVwb3NpdG9yeSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgXCJFaXRoZXIgY29kZSBvciBlY3JSZXBvc2l0b3J5IG11c3QgYmUgcHJvdmlkZWQgZm9yIExhbWJkYSBjb21wdXRlIHR5cGVcIlxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJvcHMuZWNyUmVwb3NpdG9yeSBpbnN0YW5jZW9mIFJlcG9zaXRvcnkpIHtcbiAgICAgICAgY29kZSA9IENvZGUuZnJvbUVjckltYWdlKHByb3BzLmVjclJlcG9zaXRvcnksIHtcbiAgICAgICAgICB0YWdPckRpZ2VzdDogXCJsYXRlc3RcIlxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBcImVjclJlcG9zaXRvcnkgbXVzdCBiZSBhIFJlcG9zaXRvcnkgaW5zdGFuY2UgZm9yIExhbWJkYSBjb21wdXRlIHR5cGVcIlxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGxhbWJkYVByb3BzID0ge1xuICAgICAgY29kZTogY29kZSxcbiAgICAgIGhhbmRsZXI6IHByb3BzLmhhbmRsZXIgfHwgXCJpbmRleC5oYW5kbGVyXCIsXG4gICAgICBydW50aW1lOiBwcm9wcy5ydW50aW1lIHx8IFJ1bnRpbWUuTk9ERUpTXzE4X1gsXG4gICAgICB0aW1lb3V0OiBwcm9wcy50aW1lb3V0LFxuICAgICAgbWVtb3J5U2l6ZTogcHJvcHMubWVtb3J5U2l6ZSxcbiAgICAgIGxhbWJkYURlc2NyaXB0aW9uOiBwcm9wcy5sYW1iZGFEZXNjcmlwdGlvbixcbiAgICAgIHJvbGVEZXNjcmlwdGlvbjogcHJvcHMucm9sZURlc2NyaXB0aW9uLFxuICAgICAgaW5saW5lUG9saWN5OiBwcm9wcy5pbmxpbmVQb2xpY3kgfHwge30sXG4gICAgICBlbmFibGVGdW5jdGlvblVybDogcHJvcHMuZW5hYmxlRnVuY3Rpb25VcmwsXG4gICAgICBmdW5jdGlvblVybEF1dGhUeXBlOiBwcm9wcy5mdW5jdGlvblVybEF1dGhUeXBlLFxuICAgICAgZnVuY3Rpb25VcmxDb3JzOiBjb252ZXJ0Q29yc09wdGlvbnMocHJvcHMuZnVuY3Rpb25VcmxDb3JzKSxcbiAgICAgIGVudmlyb25tZW50OiBwcm9wcy5jb250YWluZXJFbnZpcm9ubWVudFxuICAgIH07XG5cbiAgICB0aGlzLmNvbXB1dGUgPSBuZXcgTGFtYmRhRnVuY3Rpb24oXG4gICAgICB0aGlzLnNjb3BlLFxuICAgICAgYCR7dGhpcy5pZH1MYW1iZGFgLFxuICAgICAgbGFtYmRhUHJvcHNcbiAgICApO1xuXG4gICAgLy8gTGFtYmRhIGZ1bmN0aW9ucyBkb24ndCB1c2Ugc2VjdXJpdHkgZ3JvdXBzIHVubGVzcyBWUEMtZW5hYmxlZFxuICAgIC8vIENyZWF0ZSBlbXB0eSBjb25uZWN0aW9ucyBvYmplY3QgZm9yIGludGVyZmFjZSBjb21wYXRpYmlsaXR5XG4gICAgdGhpcy5jb25uZWN0aW9ucyA9IG5ldyBDb25uZWN0aW9ucygpO1xuICB9XG59XG4iXX0=
|
|
@@ -7,13 +7,9 @@ const iam_1 = require("../../resources/aws/iam");
|
|
|
7
7
|
const tagResource_1 = require("../../utils/tagResource");
|
|
8
8
|
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
9
9
|
const aws_route53_1 = require("aws-cdk-lib/aws-route53");
|
|
10
|
-
function getSafeZoneName(zoneName) {
|
|
11
|
-
return zoneName.split(".").join("");
|
|
12
|
-
}
|
|
13
10
|
class HostedZoneFactory {
|
|
14
11
|
static import(stack, hostedZoneId, zoneName) {
|
|
15
|
-
|
|
16
|
-
return new HostedZone(stack.getStack(), `${safeZoneName}HostedZone`, {
|
|
12
|
+
return new HostedZone(stack.getStack(), "HostedZone", {
|
|
17
13
|
hostedZoneId: hostedZoneId,
|
|
18
14
|
zoneName: zoneName
|
|
19
15
|
});
|
|
@@ -40,7 +36,7 @@ class HostedZone extends constructs_1.Construct {
|
|
|
40
36
|
return this.hostedZone || this.importedHostedZone;
|
|
41
37
|
}
|
|
42
38
|
safeZoneName() {
|
|
43
|
-
return
|
|
39
|
+
return this.zoneName.split(".").join("");
|
|
44
40
|
}
|
|
45
41
|
addHostedZone(zoneName) {
|
|
46
42
|
this.hostedZone = new aws_route53_1.HostedZone(this, `${this.safeZoneName}HostedZone`, {
|
|
@@ -51,10 +47,7 @@ class HostedZone extends constructs_1.Construct {
|
|
|
51
47
|
importHostedZone(zoneName) {
|
|
52
48
|
this.importedHostedZone = aws_route53_1.HostedZone.fromHostedZoneAttributes(
|
|
53
49
|
// HostedZone.fromHostedZoneAttributes explicitly must be passed a stack as parent scope
|
|
54
|
-
this.scope,
|
|
55
|
-
// Use safeZoneName in the id so we can theoretically
|
|
56
|
-
// import multiple hosted zones in a single app
|
|
57
|
-
`${this.safeZoneName()}ImportedHostedZone`, {
|
|
50
|
+
this.scope, "importedHostedZone", {
|
|
58
51
|
hostedZoneId: this.hostedZoneId,
|
|
59
52
|
zoneName: zoneName
|
|
60
53
|
});
|
|
@@ -63,11 +56,11 @@ class HostedZone extends constructs_1.Construct {
|
|
|
63
56
|
"fjall:costAllocation:service": "hostedZone",
|
|
64
57
|
"fjall:costAllocation:domain": `${zoneName}`
|
|
65
58
|
});
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
59
|
+
new aws_cdk_lib_1.CfnOutput(this, `${this.safeZoneName()}HostedZoneId`, {
|
|
60
|
+
key: "HostedZoneId",
|
|
61
|
+
value: this.hostedZoneId,
|
|
62
|
+
exportName: `${this.safeZoneName()}HostedZoneId`
|
|
63
|
+
});
|
|
71
64
|
}
|
|
72
65
|
delegateHostedZone() {
|
|
73
66
|
const domainName = this.hostedZone.zoneName.split(".", 1);
|
|
@@ -145,4 +138,4 @@ class HostedZone extends constructs_1.Construct {
|
|
|
145
138
|
}
|
|
146
139
|
}
|
|
147
140
|
exports.HostedZone = HostedZone;
|
|
148
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9zdGVkWm9uZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9wYXR0ZXJucy9hd3MvaG9zdGVkWm9uZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBdUM7QUFDdkMsNkNBQTZEO0FBQzdELGlEQUErQztBQUMvQyx5REFBa0Q7QUFDbEQsaURBSTZCO0FBQzdCLHlEQWFpQztBQUtqQyxTQUFTLGVBQWUsQ0FBQyxRQUFnQjtJQUN2QyxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3RDLENBQUM7QUFPRCxNQUFhLGlCQUFpQjtJQUM1QixNQUFNLENBQUMsTUFBTSxDQUFDLEtBQWUsRUFBRSxZQUFvQixFQUFFLFFBQWdCO1FBQ25FLE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUvQyxPQUFPLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxHQUFHLFlBQVksWUFBWSxFQUFFO1lBQ25FLFlBQVksRUFBRSxZQUFZO1lBQzFCLFFBQVEsRUFBRSxRQUFRO1NBQ25CLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQVRELDhDQVNDO0FBRUQsTUFBYSxVQUFXLFNBQVEsc0JBQVM7SUFRdkMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFzQjtRQUM5RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztRQUUvQiwyRUFBMkU7UUFDM0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNuQyxJQUFJLENBQUMs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LENBQUM7SUFFTSxLQUFLLENBQUMsS0FBa0M7UUFDN0MsSUFBSSxzQkFBUSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUU7WUFDckIsSUFBSSxFQUFFLElBQUksQ0FBQyxrQkFBa0I7WUFDN0IsT0FBTyxFQUNMLEtBQUssQ0FBQyxPQUFPLElBQUksaUJBQWlCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUU7WUFDdEUsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO1lBQ3BCLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRztTQUNmLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxNQUFNLENBQUMsS0FBbUM7UUFDL0MsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUU7WUFDdEIsSUFBSSxFQUFFLElBQUksQ0FBQyxrQkFBa0I7WUFDN0IsT0FBTyxFQUNMLEtBQUssQ0FBQyxPQUFPLElBQUksa0JBQWtCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUU7WUFDdkUsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO1lBQ3BCLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRztTQUNmLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTdKRCxnQ0E2SkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQ2ZuT3V0cHV0LCBGbiwgUmVzb3VyY2UsIFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBSb2xlIH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvaWFtXCI7XG5pbXBvcnQgdGFnUmVzb3VyY2UgZnJvbSBcIi4uLy4uL3V0aWxzL3RhZ1Jlc291cmNlXCI7XG5pbXBvcnQge1xuICBPcmdhbml6YXRpb25QcmluY2lwYWwsXG4gIFBvbGljeURvY3VtZW50LFxuICBQb2xpY3lTdGF0ZW1lbnRcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7XG4gIEFSZWNvcmQsXG4gIEFSZWNvcmRQcm9wcyxcbiAgQ25hbWVSZWNvcmQsXG4gIENuYW1lUmVjb3JkUHJvcHMsXG4gIEhvc3RlZFpvbmUgYXMgQVdTSG9zdGVkWm9uZSxcbiAgSUhvc3RlZFpvbmUsXG4gIE14UmVjb3JkLFxuICBNeFJlY29yZFByb3BzLFxuICBOc1JlY29yZCxcbiAgTnNSZWNvcmRQcm9wcyxcbiAgVHh0UmVjb3JkLFxuICBUeHRSZWNvcmRQcm9wc1xufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJvdXRlNTNcIjtcblxuaW1wb3J0IEFwcCBmcm9tIFwiLi4vLi4vYXBwXCI7XG5pbXBvcnQgeyBBd3NTdGFjayB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXNcIjtcblxuZnVuY3Rpb24gZ2V0U2FmZVpvbmVOYW1lKHpvbmVOYW1lOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHpvbmVOYW1lLnNwbGl0KFwiLlwiKS5qb2luKFwiXCIpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEhvc3RlZFpvbmVQcm9wcyB7XG4gIHpvbmVOYW1lOiBzdHJpbmc7XG4gIGhvc3RlZFpvbmVJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEhvc3RlZFpvbmVGYWN0b3J5IHtcbiAgc3RhdGljIGltcG9ydChzdGFjazogQXdzU3RhY2ssIGhvc3RlZFpvbmVJZDogc3RyaW5nLCB6b25lTmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3Qgc2FmZVpvbmVOYW1lID0gZ2V0U2FmZVpvbmVOYW1lKHpvbmVOYW1lKTtcblxuICAgIHJldHVybiBuZXcgSG9zdGVkWm9uZShzdGFjay5nZXRTdGFjaygpLCBgJHtzYWZlWm9uZU5hbWV9SG9zdGVkWm9uZWAsIHtcbiAgICAgIGhvc3RlZFpvbmVJZDogaG9zdGVkWm9uZUlkLFxuICAgICAgem9uZU5hbWU6IHpvbmVOYW1lXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEhvc3RlZFpvbmUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwcml2YXRlIGhvc3RlZFpvbmU6IEFXU0hvc3RlZFpvbmU7XG4gIHByaXZhdGUgaG9zdGVkWm9uZUlkOiBzdHJpbmc7XG4gIHByaXZhdGUgaW1wb3J0ZWRIb3N0ZWRab25lOiBJSG9zdGVkWm9uZTtcbiAgcHJpdmF0ZSB6b25lTmFtZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgc2NvcGU6IENvbnN0cnVjdDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogSG9zdGVkWm9uZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMuc2NvcGUgPSBzY29wZTtcbiAgICB0aGlzLnpvbmVOYW1lID0gcHJvcHMuem9uZU5hbWU7XG5cbiAgICAvLyBJZiBhIGhvc3RlZFpvbmVJZCBpcyBwcm92aWRlZCBpbXBvcnQgaXQsIHVubGVzcyBjcmVhdGUgYSBuZXcgaG9zdGVkIHpvbmVcbiAgICBpZiAoIXByb3BzLmhvc3RlZFpvbmVJZCkge1xuICAgICAgdGhpcy5hZGRIb3N0ZWRab25lKHByb3BzLnpvbmVOYW1lKTtcbiAgICAgIHRoaXMuaG9zdGVkWm9uZUlkID0gdGhpcy5ob3N0ZWRab25lLmhvc3RlZFpvbmVJZDtcbiAgICAgIHRoaXMuZGVsZWdhdGVIb3N0ZWRab25lKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaG9zdGVkWm9uZUlkID0gcHJvcHMuaG9zdGVkWm9uZUlkO1xuICAgICAgdGhpcy5pbXBvcnRIb3N0ZWRab25lKHByb3BzLnpvbmVOYW1lKTtcbiAgICB9XG4gIH1cblxuICBnZXRJbnRlcm5hbEhvc3RlZFpvbmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdGVkWm9uZSB8fCB0aGlzLmltcG9ydGVkSG9zdGVkWm9uZTtcbiAgfVxuXG4gIHNhZmVab25lTmFtZSgpIHtcbiAgICByZXR1cm4gZ2V0U2FmZVpvbmVOYW1lKHRoaXMuem9uZU5hbWUpO1xuICB9XG5cbiAgYWRkSG9zdGVkWm9uZSh6b25lTmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5ob3N0ZWRab25lID0gbmV3IEFXU0hvc3RlZFpvbmUoXG4gICAgICB0aGlzLFxuICAgICAgYCR7dGhpcy5zYWZlWm9uZU5hbWV9SG9zdGVkWm9uZWAsXG4gICAgICB7XG4gICAgICAgIHpvbmVOYW1lOiB6b25lTmFtZSxcbiAgICAgICAgY29tbWVudDogYEhvc3RlZCBab25lIGZvciAke3pvbmVOYW1lfWBcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgaW1wb3J0SG9zdGVkWm9uZSh6b25lTmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5pbXBvcnRlZEhvc3RlZFpvbmUgPSBBV1NIb3N0ZWRab25lLmZyb21Ib3N0ZWRab25lQXR0cmlidXRlcyhcbiAgICAgIC8vIEhvc3RlZFpvbmUuZnJvbUhvc3RlZFpvbmVBdHRyaWJ1dGVzIGV4cGxpY2l0bHkgbXVzdCBiZSBwYXNzZWQgYSBzdGFjayBhcyBwYXJlbnQgc2NvcGVcbiAgICAgIHRoaXMuc2NvcGUsXG5cbiAgICAgIC8vIFVzZSBzYWZlWm9uZU5hbWUgaW4gdGhlIGlkIHNvIHdlIGNhbiB0aGVvcmV0aWNhbGx5XG4gICAgICAvLyAgaW1wb3J0IG11bHRpcGxlIGhvc3RlZCB6b25lcyBpbiBhIHNpbmdsZSBhcHBcbiAgICAgIGAke3RoaXMuc2FmZVpvbmVOYW1lKCl9SW1wb3J0ZWRIb3N0ZWRab25lYCxcbiAgICAgIHtcbiAgICAgICAgaG9zdGVkWm9uZUlkOiB0aGlzLmhvc3RlZFpvbmVJZCxcbiAgICAgICAgem9uZU5hbWU6IHpvbmVOYW1lXG4gICAgICB9XG4gICAgKTtcblxuICAgIHRhZ1Jlc291cmNlKHRoaXMuaW1wb3J0ZWRIb3N0ZWRab25lLCB7XG4gICAgICBcImZqYWxsOmNvc3RBbGxvY2F0aW9uOmVudmlyb25tZW50XCI6IFwibWFuYWdlbWVudFwiLFxuICAgICAgXCJmamFsbDpjb3N0QWxsb2NhdGlvbjpzZXJ2aWNlXCI6IFwiaG9zdGVkWm9uZVwiLFxuICAgICAgXCJmamFsbDpjb3N0QWxsb2NhdGlvbjpkb21haW5cIjogYCR7em9uZU5hbWV9YFxuICAgIH0pO1xuXG4gICAgLy8gbmV3IENmbk91dHB1dCh0aGlzLCBgJHt0aGlzLnNhZmVab25lTmFtZSgpfUhvc3RlZFpvbmVJZGAsIHtcbiAgICAvLyAgIGtleTogYCR7dGhpcy5zYWZlWm9uZU5hbWUoKX1Ib3N0ZWRab25lSWRgLFxuICAgIC8vICAgdmFsdWU6IHRoaXMuaG9zdGVkWm9uZUlkLFxuICAgIC8vICAgZXhwb3J0TmFtZTogYCR7dGhpcy5zYWZlWm9uZU5hbWUoKX1Ib3N0ZWRab25lSWRgXG4gICAgLy8gfSk7XG4gIH1cblxuICBkZWxlZ2F0ZUhvc3RlZFpvbmUoKSB7XG4gICAgY29uc3QgZG9tYWluTmFtZSA9IHRoaXMuaG9zdGVkWm9uZS56b25lTmFtZS5zcGxpdChcIi5cIiwgMSk7XG4gICAgY29uc3Qgcm9sZSA9IG5ldyBSb2xlKHRoaXMsIGAke2RvbWFpbk5hbWV9RGVsZWdhdGVIb3N0ZWRab25lUm9sZWAsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IE9yZ2FuaXphdGlvblByaW5jaXBhbChGbi5pbXBvcnRWYWx1ZShcIk9yZ2FuaXNhdGlvbklkXCIpKSxcbiAgICAgIHJvbGVOYW1lOiBgJHtkb21haW5OYW1lfURlbGVnYXRlSG9zdGVkWm9uZVJvbGVgLFxuICAgICAgaW5saW5lUG9saWNpZXM6IHtcbiAgICAgICAgW1wibGlzdEhvc3RlZFpvbmVzXCJdOiBuZXcgUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBhY3Rpb25zOiBbXCJyb3V0ZTUzOkxpc3RIb3N0ZWRab25lc0J5TmFtZVwiXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF1cbiAgICAgICAgfSksXG4gICAgICAgIFtcImNoYW5nZVJlc291cmNlUmVjb3JkU2V0c1wiXTogbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgYWN0aW9uczogW1wicm91dGU1MzpDaGFuZ2VSZXNvdXJjZVJlY29yZFNldHNcIl0sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgICAgIGBhcm46YXdzOnJvdXRlNTM6Ojpob3N0ZWR6b25lLyR7dGhpcy5ob3N0ZWRab25lLmhvc3RlZFpvbmVJZH1gXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5ob3N0ZWRab25lLmdyYW50RGVsZWdhdGlvbihyb2xlKTtcblxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgXCJEZWxlZ2F0ZUhvc3RlZFpvbmVSb2xlQXJuXCIsIHtcbiAgICAgIGtleTogYCR7ZG9tYWluTmFtZX1EZWxlZ2F0ZUhvc3RlZFpvbmVSb2xlQXJuYCxcbiAgICAgIHZhbHVlOiByb2xlLnJvbGVBcm4sXG4gICAgICBleHBvcnROYW1lOiBgJHtkb21haW5OYW1lfURlbGVnYXRlSG9zdGVkWm9uZVJvbGVBcm5gXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYWRkQVJlY29yZChwcm9wczogT21pdDxBUmVjb3JkUHJvcHMsIFwiem9uZVwiPikge1xuICAgIG5ldyBBUmVjb3JkKHRoaXMsIFwiQVJlY29yZFwiLCB7XG4gICAgICB6b25lOiB0aGlzLmltcG9ydGVkSG9zdGVkWm9uZSxcbiAgICAgIHJlY29yZE5hbWU6IHByb3BzLnJlY29yZE5hbWUsXG4gICAgICBjb21tZW50OlxuICAgICAgICBwcm9wcy5jb21tZW50IHx8IGBBIFJlY29yZCBmb3IgJHt0aGlzLmltcG9ydGVkSG9zdGVkWm9uZS56b25lTmFtZX1gLFxuICAgICAgdGFyZ2V0OiBwcm9wcy50YXJnZXQsXG4gICAgICB0dGw6IHByb3BzLnR0bFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFkZENuYW1lKHByb3BzOiBPbWl0PENuYW1lUmVjb3JkUHJvcHMsIFwiem9uZVwiPikge1xuICAgIG5ldyBDbmFtZVJlY29yZCh0aGlzLCBgYCwge1xuICAgICAgZG9tYWluTmFtZTogcHJvcHMuZG9tYWluTmFtZSxcbiAgICAgIHpvbmU6IHRoaXMuaW1wb3J0ZWRIb3N0ZWRab25lLFxuICAgICAgY29tbWVudDpcbiAgICAgICAgcHJvcHMuY29tbWVudCB8fCBgQ05BTUUgUmVjb3JkIGZvciAke3RoaXMuaW1wb3J0ZWRIb3N0ZWRab25lLnpvbmVOYW1lfWAsXG4gICAgICB0dGw6IHByb3BzLnR0bFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFkZE14KHByb3BzOiBPbWl0PE14UmVjb3JkUHJvcHMsIFwiem9uZVwiPikge1xuICAgIG5ldyBNeFJlY29yZCh0aGlzLCBgYCwge1xuICAgICAgem9uZTogdGhpcy5pbXBvcnRlZEhvc3RlZFpvbmUsXG4gICAgICBjb21tZW50OlxuICAgICAgICBwcm9wcy5jb21tZW50IHx8IGBNWCBSZWNvcmQgZm9yICR7dGhpcy5pbXBvcnRlZEhvc3RlZFpvbmUuem9uZU5hbWV9YCxcbiAgICAgIHZhbHVlczogcHJvcHMudmFsdWVzLFxuICAgICAgdHRsOiBwcm9wcy50dGxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhZGROUyhwcm9wczogT21pdDxOc1JlY29yZFByb3BzLCBcInpvbmVcIj4pIHtcbiAgICBuZXcgTnNSZWNvcmQodGhpcywgYGAsIHtcbiAgICAgIHpvbmU6IHRoaXMuaW1wb3J0ZWRIb3N0ZWRab25lLFxuICAgICAgY29tbWVudDpcbiAgICAgICAgcHJvcHMuY29tbWVudCB8fCBgTlMgUmVjb3JkIGZvciAke3RoaXMuaW1wb3J0ZWRIb3N0ZWRab25lLnpvbmVOYW1lfWAsXG4gICAgICB2YWx1ZXM6IHByb3BzLnZhbHVlcyxcbiAgICAgIHR0bDogcHJvcHMudHRsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYWRkVHh0KHByb3BzOiBPbWl0PFR4dFJlY29yZFByb3BzLCBcInpvbmVcIj4pIHtcbiAgICBuZXcgVHh0UmVjb3JkKHRoaXMsIGBgLCB7XG4gICAgICB6b25lOiB0aGlzLmltcG9ydGVkSG9zdGVkWm9uZSxcbiAgICAgIGNvbW1lbnQ6XG4gICAgICAgIHByb3BzLmNvbW1lbnQgfHwgYFRYVCBSZWNvcmQgZm9yICR7dGhpcy5pbXBvcnRlZEhvc3RlZFpvbmUuem9uZU5hbWV9YCxcbiAgICAgIHZhbHVlczogcHJvcHMudmFsdWVzLFxuICAgICAgdHRsOiBwcm9wcy50dGxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9zdGVkWm9uZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9wYXR0ZXJucy9hd3MvaG9zdGVkWm9uZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBdUM7QUFDdkMsNkNBQTZEO0FBQzdELGlEQUErQztBQUMvQyx5REFBa0Q7QUFDbEQsaURBSTZCO0FBQzdCLHlEQWFpQztBQVVqQyxNQUFhLGlCQUFpQjtJQUM1QixNQUFNLENBQUMsTUFBTSxDQUFDLEtBQWUsRUFBRSxZQUFvQixFQUFFLFFBQWdCO1FBQ25FLE9BQU8sSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLFlBQVksRUFBRTtZQUNwRCxZQUFZLEVBQUUsWUFBWTtZQUMxQixRQUFRLEVBQUUsUUFBUTtTQUNuQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFQRCw4Q0FPQztBQUVELE1BQWEsVUFBVyxTQUFRLHNCQUFTO0lBUXZDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBc0I7UUFDOUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFFL0IsMkVBQTJFO1FBQzNFLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQztZQUNqRCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUM1QixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztZQUN2QyxJQUFJLENBQUMsZ0JBQWdCLENB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RSxFQUFFO1lBQ3JCLElBQUksRUFBRSxJQUFJLENBQUMsa0JBQWtCO1lBQzdCLE9BQU8sRUFDTCxLQUFLLENBQUMsT0FBTyxJQUFJLGlCQUFpQixJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFO1lBQ3RFLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtZQUNwQixHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7U0FDZixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQW1DO1FBQy9DLElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFO1lBQ3RCLElBQUksRUFBRSxJQUFJLENBQUMsa0JBQWtCO1lBQzdCLE9BQU8sRUFDTCxLQUFLLENBQUMsT0FBTyxJQUFJLGtCQUFrQixJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFO1lBQ3ZFLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtZQUNwQixHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7U0FDZixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUEzSkQsZ0NBMkpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IENmbk91dHB1dCwgRm4sIFJlc291cmNlLCBTdGFjayB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgUm9sZSB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2lhbVwiO1xuaW1wb3J0IHRhZ1Jlc291cmNlIGZyb20gXCIuLi8uLi91dGlscy90YWdSZXNvdXJjZVwiO1xuaW1wb3J0IHtcbiAgT3JnYW5pemF0aW9uUHJpbmNpcGFsLFxuICBQb2xpY3lEb2N1bWVudCxcbiAgUG9saWN5U3RhdGVtZW50XG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQge1xuICBBUmVjb3JkLFxuICBBUmVjb3JkUHJvcHMsXG4gIENuYW1lUmVjb3JkLFxuICBDbmFtZVJlY29yZFByb3BzLFxuICBIb3N0ZWRab25lIGFzIEFXU0hvc3RlZFpvbmUsXG4gIElIb3N0ZWRab25lLFxuICBNeFJlY29yZCxcbiAgTXhSZWNvcmRQcm9wcyxcbiAgTnNSZWNvcmQsXG4gIE5zUmVjb3JkUHJvcHMsXG4gIFR4dFJlY29yZCxcbiAgVHh0UmVjb3JkUHJvcHNcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzXCI7XG5cbmltcG9ydCBBcHAgZnJvbSBcIi4uLy4uL2FwcFwiO1xuaW1wb3J0IHsgQXdzU3RhY2sgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSG9zdGVkWm9uZVByb3BzIHtcbiAgem9uZU5hbWU6IHN0cmluZztcbiAgaG9zdGVkWm9uZUlkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgSG9zdGVkWm9uZUZhY3Rvcnkge1xuICBzdGF0aWMgaW1wb3J0KHN0YWNrOiBBd3NTdGFjaywgaG9zdGVkWm9uZUlkOiBzdHJpbmcsIHpvbmVOYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IEhvc3RlZFpvbmUoc3RhY2suZ2V0U3RhY2soKSwgXCJIb3N0ZWRab25lXCIsIHtcbiAgICAgIGhvc3RlZFpvbmVJZDogaG9zdGVkWm9uZUlkLFxuICAgICAgem9uZU5hbWU6IHpvbmVOYW1lXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEhvc3RlZFpvbmUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwcml2YXRlIGhvc3RlZFpvbmU6IEFXU0hvc3RlZFpvbmU7XG4gIHByaXZhdGUgaG9zdGVkWm9uZUlkOiBzdHJpbmc7XG4gIHByaXZhdGUgaW1wb3J0ZWRIb3N0ZWRab25lOiBJSG9zdGVkWm9uZTtcbiAgcHJpdmF0ZSB6b25lTmFtZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgc2NvcGU6IENvbnN0cnVjdDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogSG9zdGVkWm9uZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMuc2NvcGUgPSBzY29wZTtcbiAgICB0aGlzLnpvbmVOYW1lID0gcHJvcHMuem9uZU5hbWU7XG5cbiAgICAvLyBJZiBhIGhvc3RlZFpvbmVJZCBpcyBwcm92aWRlZCBpbXBvcnQgaXQsIHVubGVzcyBjcmVhdGUgYSBuZXcgaG9zdGVkIHpvbmVcbiAgICBpZiAoIXByb3BzLmhvc3RlZFpvbmVJZCkge1xuICAgICAgdGhpcy5hZGRIb3N0ZWRab25lKHByb3BzLnpvbmVOYW1lKTtcbiAgICAgIHRoaXMuaG9zdGVkWm9uZUlkID0gdGhpcy5ob3N0ZWRab25lLmhvc3RlZFpvbmVJZDtcbiAgICAgIHRoaXMuZGVsZWdhdGVIb3N0ZWRab25lKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaG9zdGVkWm9uZUlkID0gcHJvcHMuaG9zdGVkWm9uZUlkO1xuICAgICAgdGhpcy5pbXBvcnRIb3N0ZWRab25lKHByb3BzLnpvbmVOYW1lKTtcbiAgICB9XG4gIH1cblxuICBnZXRJbnRlcm5hbEhvc3RlZFpvbmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdGVkWm9uZSB8fCB0aGlzLmltcG9ydGVkSG9zdGVkWm9uZTtcbiAgfVxuXG4gIHNhZmVab25lTmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy56b25lTmFtZS5zcGxpdChcIi5cIikuam9pbihcIlwiKTtcbiAgfVxuXG4gIGFkZEhvc3RlZFpvbmUoem9uZU5hbWU6IHN0cmluZykge1xuICAgIHRoaXMuaG9zdGVkWm9uZSA9IG5ldyBBV1NIb3N0ZWRab25lKFxuICAgICAgdGhpcyxcbiAgICAgIGAke3RoaXMuc2FmZVpvbmVOYW1lfUhvc3RlZFpvbmVgLFxuICAgICAge1xuICAgICAgICB6b25lTmFtZTogem9uZU5hbWUsXG4gICAgICAgIGNvbW1lbnQ6IGBIb3N0ZWQgWm9uZSBmb3IgJHt6b25lTmFtZX1gXG4gICAgICB9XG4gICAgKTtcblxuICB9XG5cbiAgaW1wb3J0SG9zdGVkWm9uZSh6b25lTmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5pbXBvcnRlZEhvc3RlZFpvbmUgPSBBV1NIb3N0ZWRab25lLmZyb21Ib3N0ZWRab25lQXR0cmlidXRlcyhcbiAgICAgIC8vIEhvc3RlZFpvbmUuZnJvbUhvc3RlZFpvbmVBdHRyaWJ1dGVzIGV4cGxpY2l0bHkgbXVzdCBiZSBwYXNzZWQgYSBzdGFjayBhcyBwYXJlbnQgc2NvcGVcbiAgICAgIHRoaXMuc2NvcGUsXG4gICAgICBcImltcG9ydGVkSG9zdGVkWm9uZVwiLFxuICAgICAge1xuICAgICAgICBob3N0ZWRab25lSWQ6IHRoaXMuaG9zdGVkWm9uZUlkLFxuICAgICAgICB6b25lTmFtZTogem9uZU5hbWVcbiAgICAgIH1cbiAgICApO1xuXG4gICAgdGFnUmVzb3VyY2UodGhpcy5pbXBvcnRlZEhvc3RlZFpvbmUsIHtcbiAgICAgIFwiZmphbGw6Y29zdEFsbG9jYXRpb246ZW52aXJvbm1lbnRcIjogXCJtYW5hZ2VtZW50XCIsXG4gICAgICBcImZqYWxsOmNvc3RBbGxvY2F0aW9uOnNlcnZpY2VcIjogXCJob3N0ZWRab25lXCIsXG4gICAgICBcImZqYWxsOmNvc3RBbGxvY2F0aW9uOmRvbWFpblwiOiBgJHt6b25lTmFtZX1gXG4gICAgfSk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke3RoaXMuc2FmZVpvbmVOYW1lKCl9SG9zdGVkWm9uZUlkYCwge1xuICAgICAga2V5OiBcIkhvc3RlZFpvbmVJZFwiLFxuICAgICAgdmFsdWU6IHRoaXMuaG9zdGVkWm9uZUlkLFxuICAgICAgZXhwb3J0TmFtZTogYCR7dGhpcy5zYWZlWm9uZU5hbWUoKX1Ib3N0ZWRab25lSWRgXG4gICAgfSk7XG4gIH1cblxuICBkZWxlZ2F0ZUhvc3RlZFpvbmUoKSB7XG4gICAgY29uc3QgZG9tYWluTmFtZSA9IHRoaXMuaG9zdGVkWm9uZS56b25lTmFtZS5zcGxpdChcIi5cIiwgMSk7XG4gICAgY29uc3Qgcm9sZSA9IG5ldyBSb2xlKHRoaXMsIGAke2RvbWFpbk5hbWV9RGVsZWdhdGVIb3N0ZWRab25lUm9sZWAsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IE9yZ2FuaXphdGlvblByaW5jaXBhbChGbi5pbXBvcnRWYWx1ZShcIk9yZ2FuaXNhdGlvbklkXCIpKSxcbiAgICAgIHJvbGVOYW1lOiBgJHtkb21haW5OYW1lfURlbGVnYXRlSG9zdGVkWm9uZVJvbGVgLFxuICAgICAgaW5saW5lUG9saWNpZXM6IHtcbiAgICAgICAgW1wibGlzdEhvc3RlZFpvbmVzXCJdOiBuZXcgUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBhY3Rpb25zOiBbXCJyb3V0ZTUzOkxpc3RIb3N0ZWRab25lc0J5TmFtZVwiXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF1cbiAgICAgICAgfSksXG4gICAgICAgIFtcImNoYW5nZVJlc291cmNlUmVjb3JkU2V0c1wiXTogbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgYWN0aW9uczogW1wicm91dGU1MzpDaGFuZ2VSZXNvdXJjZVJlY29yZFNldHNcIl0sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgICAgIGBhcm46YXdzOnJvdXRlNTM6Ojpob3N0ZWR6b25lLyR7dGhpcy5ob3N0ZWRab25lLmhvc3RlZFpvbmVJZH1gXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5ob3N0ZWRab25lLmdyYW50RGVsZWdhdGlvbihyb2xlKTtcblxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgXCJEZWxlZ2F0ZUhvc3RlZFpvbmVSb2xlQXJuXCIsIHtcbiAgICAgIGtleTogYCR7ZG9tYWluTmFtZX1EZWxlZ2F0ZUhvc3RlZFpvbmVSb2xlQXJuYCxcbiAgICAgIHZhbHVlOiByb2xlLnJvbGVBcm4sXG4gICAgICBleHBvcnROYW1lOiBgJHtkb21haW5OYW1lfURlbGVnYXRlSG9zdGVkWm9uZVJvbGVBcm5gXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYWRkQVJlY29yZChwcm9wczogT21pdDxBUmVjb3JkUHJvcHMsIFwiem9uZVwiPikge1xuICAgIG5ldyBBUmVjb3JkKHRoaXMsIFwiQVJlY29yZFwiLCB7XG4gICAgICB6b25lOiB0aGlzLmltcG9ydGVkSG9zdGVkWm9uZSxcbiAgICAgIHJlY29yZE5hbWU6IHByb3BzLnJlY29yZE5hbWUsXG4gICAgICBjb21tZW50OlxuICAgICAgICBwcm9wcy5jb21tZW50IHx8IGBBIFJlY29yZCBmb3IgJHt0aGlzLmltcG9ydGVkSG9zdGVkWm9uZS56b25lTmFtZX1gLFxuICAgICAgdGFyZ2V0OiBwcm9wcy50YXJnZXQsXG4gICAgICB0dGw6IHByb3BzLnR0bFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFkZENuYW1lKHByb3BzOiBPbWl0PENuYW1lUmVjb3JkUHJvcHMsIFwiem9uZVwiPikge1xuICAgIG5ldyBDbmFtZVJlY29yZCh0aGlzLCBgYCwge1xuICAgICAgZG9tYWluTmFtZTogcHJvcHMuZG9tYWluTmFtZSxcbiAgICAgIHpvbmU6IHRoaXMuaW1wb3J0ZWRIb3N0ZWRab25lLFxuICAgICAgY29tbWVudDpcbiAgICAgICAgcHJvcHMuY29tbWVudCB8fCBgQ05BTUUgUmVjb3JkIGZvciAke3RoaXMuaW1wb3J0ZWRIb3N0ZWRab25lLnpvbmVOYW1lfWAsXG4gICAgICB0dGw6IHByb3BzLnR0bFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFkZE14KHByb3BzOiBPbWl0PE14UmVjb3JkUHJvcHMsIFwiem9uZVwiPikge1xuICAgIG5ldyBNeFJlY29yZCh0aGlzLCBgYCwge1xuICAgICAgem9uZTogdGhpcy5pbXBvcnRlZEhvc3RlZFpvbmUsXG4gICAgICBjb21tZW50OlxuICAgICAgICBwcm9wcy5jb21tZW50IHx8IGBNWCBSZWNvcmQgZm9yICR7dGhpcy5pbXBvcnRlZEhvc3RlZFpvbmUuem9uZU5hbWV9YCxcbiAgICAgIHZhbHVlczogcHJvcHMudmFsdWVzLFxuICAgICAgdHRsOiBwcm9wcy50dGxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhZGROUyhwcm9wczogT21pdDxOc1JlY29yZFByb3BzLCBcInpvbmVcIj4pIHtcbiAgICBuZXcgTnNSZWNvcmQodGhpcywgYGAsIHtcbiAgICAgIHpvbmU6IHRoaXMuaW1wb3J0ZWRIb3N0ZWRab25lLFxuICAgICAgY29tbWVudDpcbiAgICAgICAgcHJvcHMuY29tbWVudCB8fCBgTlMgUmVjb3JkIGZvciAke3RoaXMuaW1wb3J0ZWRIb3N0ZWRab25lLnpvbmVOYW1lfWAsXG4gICAgICB2YWx1ZXM6IHByb3BzLnZhbHVlcyxcbiAgICAgIHR0bDogcHJvcHMudHRsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYWRkVHh0KHByb3BzOiBPbWl0PFR4dFJlY29yZFByb3BzLCBcInpvbmVcIj4pIHtcbiAgICBuZXcgVHh0UmVjb3JkKHRoaXMsIGBgLCB7XG4gICAgICB6b25lOiB0aGlzLmltcG9ydGVkSG9zdGVkWm9uZSxcbiAgICAgIGNvbW1lbnQ6XG4gICAgICAgIHByb3BzLmNvbW1lbnQgfHwgYFRYVCBSZWNvcmQgZm9yICR7dGhpcy5pbXBvcnRlZEhvc3RlZFpvbmUuem9uZU5hbWV9YCxcbiAgICAgIHZhbHVlczogcHJvcHMudmFsdWVzLFxuICAgICAgdHRsOiBwcm9wcy50dGxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { IAccount, IPolicy } from "./interfaces";
|
|
3
|
+
import { AccountProps } from "./types";
|
|
4
|
+
/**
|
|
5
|
+
* AWS Account construct for managing member accounts
|
|
6
|
+
*/
|
|
7
|
+
export declare class Account extends Construct implements IAccount {
|
|
8
|
+
readonly accountId: string;
|
|
9
|
+
readonly accountArn: string;
|
|
10
|
+
readonly accountName: string;
|
|
11
|
+
readonly email: string;
|
|
12
|
+
constructor(scope: Construct, id: string, props: AccountProps);
|
|
13
|
+
/**
|
|
14
|
+
* Attach policy to this account
|
|
15
|
+
*/
|
|
16
|
+
attachPolicy(policy: IPolicy): void;
|
|
17
|
+
/**
|
|
18
|
+
* Delegate administrator privileges for a service
|
|
19
|
+
*/
|
|
20
|
+
delegateAdministrator(servicePrincipal: string): void;
|
|
21
|
+
/**
|
|
22
|
+
* Helper to normalize account names for construct IDs
|
|
23
|
+
*/
|
|
24
|
+
private normalizeAccountName;
|
|
25
|
+
/**
|
|
26
|
+
* Helper to normalize policy names for construct IDs
|
|
27
|
+
*/
|
|
28
|
+
private normalizePolicyName;
|
|
29
|
+
/**
|
|
30
|
+
* Helper to normalize service names for construct IDs
|
|
31
|
+
*/
|
|
32
|
+
private normalizeServiceName;
|
|
33
|
+
/**
|
|
34
|
+
* Get the root ID (placeholder - would need custom logic to get this)
|
|
35
|
+
*/
|
|
36
|
+
private getRootId;
|
|
37
|
+
}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Account = void 0;
|
|
4
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
+
const customResources = require("aws-cdk-lib/custom-resources");
|
|
6
|
+
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
7
|
+
const constructs_1 = require("constructs");
|
|
8
|
+
const types_1 = require("./types");
|
|
9
|
+
const awsCustomResource_1 = require("../utilities/awsCustomResource");
|
|
10
|
+
/**
|
|
11
|
+
* AWS Account construct for managing member accounts
|
|
12
|
+
*/
|
|
13
|
+
class Account extends constructs_1.Construct {
|
|
14
|
+
constructor(scope, id, props) {
|
|
15
|
+
super(scope, id);
|
|
16
|
+
this.accountName = props.accountName;
|
|
17
|
+
this.email = props.email;
|
|
18
|
+
const importOnDuplicate = props.importOnDuplicate ?? true;
|
|
19
|
+
const removalPolicy = props.removalPolicy ?? aws_cdk_lib_1.RemovalPolicy.RETAIN;
|
|
20
|
+
const iamUserAccessToBilling = props.iamUserAccessToBilling ?? types_1.IamUserAccessToBilling.ALLOW;
|
|
21
|
+
const roleName = props.roleName ?? "OrganisationAccountAccessRole";
|
|
22
|
+
// Create account
|
|
23
|
+
const accountResource = new awsCustomResource_1.AwsCustomResource(this, "AccountResource", {
|
|
24
|
+
functionName: `manageAccount${this.normalizeAccountName(props.accountName)}`,
|
|
25
|
+
onCreate: {
|
|
26
|
+
service: "organizations",
|
|
27
|
+
action: "CreateAccountCommand",
|
|
28
|
+
parameters: {
|
|
29
|
+
Email: props.email,
|
|
30
|
+
AccountName: props.accountName,
|
|
31
|
+
RoleName: roleName,
|
|
32
|
+
IamUserAccessToBilling: iamUserAccessToBilling
|
|
33
|
+
},
|
|
34
|
+
physicalResourceId: customResources.PhysicalResourceId.of(`account-${props.email}`),
|
|
35
|
+
ignoreErrorCodesMatching: importOnDuplicate
|
|
36
|
+
? "FinalizingOrganizationException|AlreadyInOrganizationException"
|
|
37
|
+
: undefined
|
|
38
|
+
},
|
|
39
|
+
onUpdate: {
|
|
40
|
+
service: "organizations",
|
|
41
|
+
action: "DescribeAccountCommand",
|
|
42
|
+
parameters: {
|
|
43
|
+
AccountId: this.accountId
|
|
44
|
+
},
|
|
45
|
+
physicalResourceId: customResources.PhysicalResourceId.of(`account-${props.email}`)
|
|
46
|
+
},
|
|
47
|
+
onDelete: removalPolicy === aws_cdk_lib_1.RemovalPolicy.DESTROY
|
|
48
|
+
? {
|
|
49
|
+
service: "organizations",
|
|
50
|
+
action: "CloseAccountCommand",
|
|
51
|
+
parameters: {
|
|
52
|
+
AccountId: this.accountId
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
: undefined,
|
|
56
|
+
resourceType: "Custom::Account",
|
|
57
|
+
policy: customResources.AwsCustomResourcePolicy.fromStatements([
|
|
58
|
+
new aws_iam_1.PolicyStatement({
|
|
59
|
+
actions: [
|
|
60
|
+
"organizations:CreateAccount",
|
|
61
|
+
"organizations:DescribeAccount",
|
|
62
|
+
"organizations:CloseAccount",
|
|
63
|
+
"organizations:ListAccounts",
|
|
64
|
+
"organizations:MoveAccount"
|
|
65
|
+
],
|
|
66
|
+
resources: ["*"],
|
|
67
|
+
effect: aws_iam_1.Effect.ALLOW
|
|
68
|
+
})
|
|
69
|
+
])
|
|
70
|
+
});
|
|
71
|
+
// Get account details from the create operation
|
|
72
|
+
this.accountId = accountResource.getResponseField("CreateAccountStatus.AccountId");
|
|
73
|
+
this.accountArn = `arn:aws:organizations::${this.node.tryGetContext("account")}:account/o-${this.node.tryGetContext("organisationId")}/${this.accountId}`;
|
|
74
|
+
// Move account to the specified parent OU (if not root)
|
|
75
|
+
if (props.parent.organisationalUnitName !== "Root") {
|
|
76
|
+
new awsCustomResource_1.AwsCustomResource(this, "MoveAccount", {
|
|
77
|
+
functionName: `moveAccount${this.normalizeAccountName(props.accountName)}`,
|
|
78
|
+
onCreate: {
|
|
79
|
+
service: "organizations",
|
|
80
|
+
action: "MoveAccountCommand",
|
|
81
|
+
parameters: {
|
|
82
|
+
AccountId: this.accountId,
|
|
83
|
+
SourceParentId: this.getRootId(),
|
|
84
|
+
DestinationParentId: props.parent.organisationalUnitId
|
|
85
|
+
},
|
|
86
|
+
physicalResourceId: customResources.PhysicalResourceId.of(`move-account-${this.accountId}-to-${props.parent.organisationalUnitId}`)
|
|
87
|
+
},
|
|
88
|
+
resourceType: "Custom::MoveAccount",
|
|
89
|
+
policy: customResources.AwsCustomResourcePolicy.fromStatements([
|
|
90
|
+
new aws_iam_1.PolicyStatement({
|
|
91
|
+
actions: ["organizations:MoveAccount", "organizations:ListRoots"],
|
|
92
|
+
resources: ["*"],
|
|
93
|
+
effect: aws_iam_1.Effect.ALLOW
|
|
94
|
+
})
|
|
95
|
+
])
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
// Export account details
|
|
99
|
+
new aws_cdk_lib_1.CfnOutput(this, "AccountId", {
|
|
100
|
+
key: `${id}Id`,
|
|
101
|
+
value: this.accountId,
|
|
102
|
+
exportName: `${id}Id`
|
|
103
|
+
});
|
|
104
|
+
new aws_cdk_lib_1.CfnOutput(this, "AccountArn", {
|
|
105
|
+
key: `${id}Arn`,
|
|
106
|
+
value: this.accountArn,
|
|
107
|
+
exportName: `${id}Arn`
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Attach policy to this account
|
|
112
|
+
*/
|
|
113
|
+
attachPolicy(policy) {
|
|
114
|
+
const policyName = this.normalizePolicyName(policy.policyName);
|
|
115
|
+
new awsCustomResource_1.AwsCustomResource(this, `AttachPolicy${policyName}`, {
|
|
116
|
+
functionName: `attachPolicyToAccount${policyName}${this.normalizeAccountName(this.accountName)}`,
|
|
117
|
+
onCreate: {
|
|
118
|
+
service: "organizations",
|
|
119
|
+
action: "AttachPolicyCommand",
|
|
120
|
+
parameters: {
|
|
121
|
+
PolicyId: policy.policyId,
|
|
122
|
+
TargetId: this.accountId
|
|
123
|
+
},
|
|
124
|
+
physicalResourceId: customResources.PhysicalResourceId.of(`attach-policy-${policy.policyId}-to-${this.accountId}`)
|
|
125
|
+
},
|
|
126
|
+
onDelete: {
|
|
127
|
+
service: "organizations",
|
|
128
|
+
action: "DetachPolicyCommand",
|
|
129
|
+
parameters: {
|
|
130
|
+
PolicyId: policy.policyId,
|
|
131
|
+
TargetId: this.accountId
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
resourceType: "Custom::AttachPolicyToAccount",
|
|
135
|
+
policy: customResources.AwsCustomResourcePolicy.fromStatements([
|
|
136
|
+
new aws_iam_1.PolicyStatement({
|
|
137
|
+
actions: [
|
|
138
|
+
"organizations:AttachPolicy",
|
|
139
|
+
"organizations:DetachPolicy",
|
|
140
|
+
"organizations:ListPoliciesForTarget"
|
|
141
|
+
],
|
|
142
|
+
resources: ["*"],
|
|
143
|
+
effect: aws_iam_1.Effect.ALLOW
|
|
144
|
+
})
|
|
145
|
+
])
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Delegate administrator privileges for a service
|
|
150
|
+
*/
|
|
151
|
+
delegateAdministrator(servicePrincipal) {
|
|
152
|
+
const serviceName = this.normalizeServiceName(servicePrincipal);
|
|
153
|
+
new awsCustomResource_1.AwsCustomResource(this, `DelegateAdmin${serviceName}`, {
|
|
154
|
+
functionName: `delegateAdmin${serviceName}${this.normalizeAccountName(this.accountName)}`,
|
|
155
|
+
onCreate: {
|
|
156
|
+
service: "organizations",
|
|
157
|
+
action: "RegisterDelegatedAdministratorCommand",
|
|
158
|
+
parameters: {
|
|
159
|
+
AccountId: this.accountId,
|
|
160
|
+
ServicePrincipal: servicePrincipal
|
|
161
|
+
},
|
|
162
|
+
physicalResourceId: customResources.PhysicalResourceId.of(`delegate-admin-${servicePrincipal}-to-${this.accountId}`)
|
|
163
|
+
},
|
|
164
|
+
onDelete: {
|
|
165
|
+
service: "organizations",
|
|
166
|
+
action: "DeregisterDelegatedAdministratorCommand",
|
|
167
|
+
parameters: {
|
|
168
|
+
AccountId: this.accountId,
|
|
169
|
+
ServicePrincipal: servicePrincipal
|
|
170
|
+
}
|
|
171
|
+
},
|
|
172
|
+
resourceType: "Custom::DelegateAdministrator",
|
|
173
|
+
policy: customResources.AwsCustomResourcePolicy.fromStatements([
|
|
174
|
+
new aws_iam_1.PolicyStatement({
|
|
175
|
+
actions: [
|
|
176
|
+
"organizations:RegisterDelegatedAdministrator",
|
|
177
|
+
"organizations:DeregisterDelegatedAdministrator",
|
|
178
|
+
"organizations:ListDelegatedAdministrators"
|
|
179
|
+
],
|
|
180
|
+
resources: ["*"],
|
|
181
|
+
effect: aws_iam_1.Effect.ALLOW
|
|
182
|
+
})
|
|
183
|
+
])
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Helper to normalize account names for construct IDs
|
|
188
|
+
*/
|
|
189
|
+
normalizeAccountName(accountName) {
|
|
190
|
+
return accountName
|
|
191
|
+
.replace(/[^a-zA-Z0-9]/g, "")
|
|
192
|
+
.replace(/^([a-z])/, (match) => match.toUpperCase());
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Helper to normalize policy names for construct IDs
|
|
196
|
+
*/
|
|
197
|
+
normalizePolicyName(policyName) {
|
|
198
|
+
return policyName
|
|
199
|
+
.replace(/[^a-zA-Z0-9]/g, "")
|
|
200
|
+
.replace(/^([a-z])/, (match) => match.toUpperCase());
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Helper to normalize service names for construct IDs
|
|
204
|
+
*/
|
|
205
|
+
normalizeServiceName(servicePrincipal) {
|
|
206
|
+
return servicePrincipal
|
|
207
|
+
.replace(/[^a-zA-Z0-9]/g, "")
|
|
208
|
+
.replace(/^([a-z])/, (match) => match.toUpperCase());
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Get the root ID (placeholder - would need custom logic to get this)
|
|
212
|
+
*/
|
|
213
|
+
getRootId() {
|
|
214
|
+
// This would need to be implemented with a custom resource to get the root ID
|
|
215
|
+
// For now, using a placeholder
|
|
216
|
+
return this.node.tryGetContext("organisationRootId") || "r-placeholder";
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
exports.Account = Account;
|
|
220
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9yZXNvdXJjZXMvYXdzL29yZ2FuaXNhdGlvbnMvYWNjb3VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBdUQ7QUFDdkQsZ0VBQWdFO0FBQ2hFLGlEQUE4RDtBQUM5RCwyQ0FBdUM7QUFFdkMsbUNBQStEO0FBQy9ELHNFQUFtRTtBQUVuRTs7R0FFRztBQUNILE1BQWEsT0FBUSxTQUFRLHNCQUFTO0lBTXBDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBbUI7UUFDM0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDckMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3pCLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQztRQUMxRCxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsYUFBYSxJQUFJLDJCQUFhLENBQUMsTUFBTSxDQUFDO1FBQ2xFLE1BQU0sc0JBQXNCLEdBQzFCLEtBQUssQ0FBQyxzQkFBc0IsSUFBSSw4QkFBc0IsQ0FBQyxLQUFLLENBQUM7UUFDL0QsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsSUFBSSwrQkFBK0IsQ0FBQztRQUVuRSxpQkFBaUI7UUFDakIsTUFBTSxlQUFlLEdBQUcsSUFBSSxxQ0FBaUIsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7WUFDckUsWUFBWSxFQUFFLGdCQUFnQixJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQzVFLFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUsZUFBZTtnQkFDeEIsTUFBTSxFQUFFLHNCQUFzQjtnQkFDOUIsVUFBVSxFQUFFO29CQUNWLEtB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TyxDQUFDLFVBQVUsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVEOztPQUVHO0lBQ0ssU0FBUztRQUNmLDhFQUE4RTtRQUM5RSwrQkFBK0I7UUFDL0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLGVBQWUsQ0FBQztJQUMxRSxDQUFDO0NBQ0Y7QUE5T0QsMEJBOE9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuT3V0cHV0LCBSZW1vdmFsUG9saWN5IH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgKiBhcyBjdXN0b21SZXNvdXJjZXMgZnJvbSBcImF3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXNcIjtcbmltcG9ydCB7IEVmZmVjdCwgUG9saWN5U3RhdGVtZW50IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBJQWNjb3VudCwgSVBvbGljeSB9IGZyb20gXCIuL2ludGVyZmFjZXNcIjtcbmltcG9ydCB7IEFjY291bnRQcm9wcywgSWFtVXNlckFjY2Vzc1RvQmlsbGluZyB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBBd3NDdXN0b21SZXNvdXJjZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXdzQ3VzdG9tUmVzb3VyY2VcIjtcblxuLyoqXG4gKiBBV1MgQWNjb3VudCBjb25zdHJ1Y3QgZm9yIG1hbmFnaW5nIG1lbWJlciBhY2NvdW50c1xuICovXG5leHBvcnQgY2xhc3MgQWNjb3VudCBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElBY2NvdW50IHtcbiAgcmVhZG9ubHkgYWNjb3VudElkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFjY291bnRBcm46IHN0cmluZztcbiAgcmVhZG9ubHkgYWNjb3VudE5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgZW1haWw6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQWNjb3VudFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMuYWNjb3VudE5hbWUgPSBwcm9wcy5hY2NvdW50TmFtZTtcbiAgICB0aGlzLmVtYWlsID0gcHJvcHMuZW1haWw7XG4gICAgY29uc3QgaW1wb3J0T25EdXBsaWNhdGUgPSBwcm9wcy5pbXBvcnRPbkR1cGxpY2F0ZSA/PyB0cnVlO1xuICAgIGNvbnN0IHJlbW92YWxQb2xpY3kgPSBwcm9wcy5yZW1vdmFsUG9saWN5ID8/IFJlbW92YWxQb2xpY3kuUkVUQUlOO1xuICAgIGNvbnN0IGlhbVVzZXJBY2Nlc3NUb0JpbGxpbmcgPVxuICAgICAgcHJvcHMuaWFtVXNlckFjY2Vzc1RvQmlsbGluZyA/PyBJYW1Vc2VyQWNjZXNzVG9CaWxsaW5nLkFMTE9XO1xuICAgIGNvbnN0IHJvbGVOYW1lID0gcHJvcHMucm9sZU5hbWUgPz8gXCJPcmdhbmlzYXRpb25BY2NvdW50QWNjZXNzUm9sZVwiO1xuXG4gICAgLy8gQ3JlYXRlIGFjY291bnRcbiAgICBjb25zdCBhY2NvdW50UmVzb3VyY2UgPSBuZXcgQXdzQ3VzdG9tUmVzb3VyY2UodGhpcywgXCJBY2NvdW50UmVzb3VyY2VcIiwge1xuICAgICAgZnVuY3Rpb25OYW1lOiBgbWFuYWdlQWNjb3VudCR7dGhpcy5ub3JtYWxpemVBY2NvdW50TmFtZShwcm9wcy5hY2NvdW50TmFtZSl9YCxcbiAgICAgIG9uQ3JlYXRlOiB7XG4gICAgICAgIHNlcnZpY2U6IFwib3JnYW5pemF0aW9uc1wiLFxuICAgICAgICBhY3Rpb246IFwiQ3JlYXRlQWNjb3VudENvbW1hbmRcIixcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIEVtYWlsOiBwcm9wcy5lbWFpbCxcbiAgICAgICAgICBBY2NvdW50TmFtZTogcHJvcHMuYWNjb3VudE5hbWUsXG4gICAgICAgICAgUm9sZU5hbWU6IHJvbGVOYW1lLFxuICAgICAgICAgIElhbVVzZXJBY2Nlc3NUb0JpbGxpbmc6IGlhbVVzZXJBY2Nlc3NUb0JpbGxpbmdcbiAgICAgICAgfSxcbiAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiBjdXN0b21SZXNvdXJjZXMuUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFxuICAgICAgICAgIGBhY2NvdW50LSR7cHJvcHMuZW1haWx9YFxuICAgICAgICApLFxuICAgICAgICBpZ25vcmVFcnJvckNvZGVzTWF0Y2hpbmc6IGltcG9ydE9uRHVwbGljYXRlXG4gICAgICAgICAgPyBcIkZpbmFsaXppbmdPcmdhbml6YXRpb25FeGNlcHRpb258QWxyZWFkeUluT3JnYW5pemF0aW9uRXhjZXB0aW9uXCJcbiAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgfSxcbiAgICAgIG9uVXBkYXRlOiB7XG4gICAgICAgIHNlcnZpY2U6IFwib3JnYW5pemF0aW9uc1wiLFxuICAgICAgICBhY3Rpb246IFwiRGVzY3JpYmVBY2NvdW50Q29tbWFuZFwiLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgQWNjb3VudElkOiB0aGlzLmFjY291bnRJZFxuICAgICAgICB9LFxuICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IGN1c3RvbVJlc291cmNlcy5QaHlzaWNhbFJlc291cmNlSWQub2YoXG4gICAgICAgICAgYGFjY291bnQtJHtwcm9wcy5lbWFpbH1gXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICBvbkRlbGV0ZTpcbiAgICAgICAgcmVtb3ZhbFBvbGljeSA9PT0gUmVtb3ZhbFBvbGljeS5ERVNUUk9ZXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIHNlcnZpY2U6IFwib3JnYW5pemF0aW9uc1wiLFxuICAgICAgICAgICAgICBhY3Rpb246IFwiQ2xvc2VBY2NvdW50Q29tbWFuZFwiLFxuICAgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICAgICAgQWNjb3VudElkOiB0aGlzLmFjY291bnRJZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICByZXNvdXJjZVR5cGU6IFwiQ3VzdG9tOjpBY2NvdW50XCIsXG4gICAgICBwb2xpY3k6IGN1c3RvbVJlc291cmNlcy5Bd3NDdXN0b21SZXNvdXJjZVBvbGljeS5mcm9tU3RhdGVtZW50cyhbXG4gICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgIFwib3JnYW5pemF0aW9uczpDcmVhdGVBY2NvdW50XCIsXG4gICAgICAgICAgICBcIm9yZ2FuaXphdGlvbnM6RGVzY3JpYmVBY2NvdW50XCIsXG4gICAgICAgICAgICBcIm9yZ2FuaXphdGlvbnM6Q2xvc2VBY2NvdW50XCIsXG4gICAgICAgICAgICBcIm9yZ2FuaXphdGlvbnM6TGlzdEFjY291bnRzXCIsXG4gICAgICAgICAgICBcIm9yZ2FuaXphdGlvbnM6TW92ZUFjY291bnRcIlxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdLFxuICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XXG4gICAgICAgIH0pXG4gICAgICBdKVxuICAgIH0pO1xuXG4gICAgLy8gR2V0IGFjY291bnQgZGV0YWlscyBmcm9tIHRoZSBjcmVhdGUgb3BlcmF0aW9uXG4gICAgdGhpcy5hY2NvdW50SWQgPSBhY2NvdW50UmVzb3VyY2UuZ2V0UmVzcG9uc2VGaWVsZChcbiAgICAgIFwiQ3JlYXRlQWNjb3VudFN0YXR1cy5BY2NvdW50SWRcIlxuICAgICk7XG4gICAgdGhpcy5hY2NvdW50QXJuID0gYGFybjphd3M6b3JnYW5pemF0aW9uczo6JHt0aGlzLm5vZGUudHJ5R2V0Q29udGV4dChcImFjY291bnRcIil9OmFjY291bnQvby0ke3RoaXMubm9kZS50cnlHZXRDb250ZXh0KFwib3JnYW5pc2F0aW9uSWRcIil9LyR7dGhpcy5hY2NvdW50SWR9YDtcblxuICAgIC8vIE1vdmUgYWNjb3VudCB0byB0aGUgc3BlY2lmaWVkIHBhcmVudCBPVSAoaWYgbm90IHJvb3QpXG4gICAgaWYgKHByb3BzLnBhcmVudC5vcmdhbmlzYXRpb25hbFVuaXROYW1lICE9PSBcIlJvb3RcIikge1xuICAgICAgbmV3IEF3c0N1c3RvbVJlc291cmNlKHRoaXMsIFwiTW92ZUFjY291bnRcIiwge1xuICAgICAgICBmdW5jdGlvbk5hbWU6IGBtb3ZlQWNjb3VudCR7dGhpcy5ub3JtYWxpemVBY2NvdW50TmFtZShwcm9wcy5hY2NvdW50TmFtZSl9YCxcbiAgICAgICAgb25DcmVhdGU6IHtcbiAgICAgICAgICBzZXJ2aWNlOiBcIm9yZ2FuaXphdGlvbnNcIixcbiAgICAgICAgICBhY3Rpb246IFwiTW92ZUFjY291bnRDb21tYW5kXCIsXG4gICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgQWNjb3VudElkOiB0aGlzLmFjY291bnRJZCxcbiAgICAgICAgICAgIFNvdXJjZVBhcmVudElkOiB0aGlzLmdldFJvb3RJZCgpLFxuICAgICAgICAgICAgRGVzdGluYXRpb25QYXJlbnRJZDogcHJvcHMucGFyZW50Lm9yZ2FuaXNhdGlvbmFsVW5pdElkXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IGN1c3RvbVJlc291cmNlcy5QaHlzaWNhbFJlc291cmNlSWQub2YoXG4gICAgICAgICAgICBgbW92ZS1hY2NvdW50LSR7dGhpcy5hY2NvdW50SWR9LXRvLSR7cHJvcHMucGFyZW50Lm9yZ2FuaXNhdGlvbmFsVW5pdElkfWBcbiAgICAgICAgICApXG4gICAgICAgIH0sXG4gICAgICAgIHJlc291cmNlVHlwZTogXCJDdXN0b206Ok1vdmVBY2NvdW50XCIsXG4gICAgICAgIHBvbGljeTogY3VzdG9tUmVzb3VyY2VzLkF3c0N1c3RvbVJlc291cmNlUG9saWN5LmZyb21TdGF0ZW1lbnRzKFtcbiAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcIm9yZ2FuaXphdGlvbnM6TW92ZUFjY291bnRcIiwgXCJvcmdhbml6YXRpb25zOkxpc3RSb290c1wiXSxcbiAgICAgICAgICAgIHJlc291cmNlczogW1wiKlwiXSxcbiAgICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XXG4gICAgICAgICAgfSlcbiAgICAgICAgXSlcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEV4cG9ydCBhY2NvdW50IGRldGFpbHNcbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIFwiQWNjb3VudElkXCIsIHtcbiAgICAgIGtleTogYCR7aWR9SWRgLFxuICAgICAgdmFsdWU6IHRoaXMuYWNjb3VudElkLFxuICAgICAgZXhwb3J0TmFtZTogYCR7aWR9SWRgXG4gICAgfSk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIFwiQWNjb3VudEFyblwiLCB7XG4gICAgICBrZXk6IGAke2lkfUFybmAsXG4gICAgICB2YWx1ZTogdGhpcy5hY2NvdW50QXJuLFxuICAgICAgZXhwb3J0TmFtZTogYCR7aWR9QXJuYFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEF0dGFjaCBwb2xpY3kgdG8gdGhpcyBhY2NvdW50XG4gICAqL1xuICBhdHRhY2hQb2xpY3kocG9saWN5OiBJUG9saWN5KTogdm9pZCB7XG4gICAgY29uc3QgcG9saWN5TmFtZSA9IHRoaXMubm9ybWFsaXplUG9saWN5TmFtZShwb2xpY3kucG9saWN5TmFtZSk7XG5cbiAgICBuZXcgQXdzQ3VzdG9tUmVzb3VyY2UodGhpcywgYEF0dGFjaFBvbGljeSR7cG9saWN5TmFtZX1gLCB7XG4gICAgICBmdW5jdGlvbk5hbWU6IGBhdHRhY2hQb2xpY3lUb0FjY291bnQke3BvbGljeU5hbWV9JHt0aGlzLm5vcm1hbGl6ZUFjY291bnROYW1lKHRoaXMuYWNjb3VudE5hbWUpfWAsXG4gICAgICBvbkNyZWF0ZToge1xuICAgICAgICBzZXJ2aWNlOiBcIm9yZ2FuaXphdGlvbnNcIixcbiAgICAgICAgYWN0aW9uOiBcIkF0dGFjaFBvbGljeUNvbW1hbmRcIixcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIFBvbGljeUlkOiBwb2xpY3kucG9saWN5SWQsXG4gICAgICAgICAgVGFyZ2V0SWQ6IHRoaXMuYWNjb3VudElkXG4gICAgICAgIH0sXG4gICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogY3VzdG9tUmVzb3VyY2VzLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcbiAgICAgICAgICBgYXR0YWNoLXBvbGljeS0ke3BvbGljeS5wb2xpY3lJZH0tdG8tJHt0aGlzLmFjY291bnRJZH1gXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICBvbkRlbGV0ZToge1xuICAgICAgICBzZXJ2aWNlOiBcIm9yZ2FuaXphdGlvbnNcIixcbiAgICAgICAgYWN0aW9uOiBcIkRldGFjaFBvbGljeUNvbW1hbmRcIixcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIFBvbGljeUlkOiBwb2xpY3kucG9saWN5SWQsXG4gICAgICAgICAgVGFyZ2V0SWQ6IHRoaXMuYWNjb3VudElkXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICByZXNvdXJjZVR5cGU6IFwiQ3VzdG9tOjpBdHRhY2hQb2xpY3lUb0FjY291bnRcIixcbiAgICAgIHBvbGljeTogY3VzdG9tUmVzb3VyY2VzLkF3c0N1c3RvbVJlc291cmNlUG9saWN5LmZyb21TdGF0ZW1lbnRzKFtcbiAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgXCJvcmdhbml6YXRpb25zOkF0dGFjaFBvbGljeVwiLFxuICAgICAgICAgICAgXCJvcmdhbml6YXRpb25zOkRldGFjaFBvbGljeVwiLFxuICAgICAgICAgICAgXCJvcmdhbml6YXRpb25zOkxpc3RQb2xpY2llc0ZvclRhcmdldFwiXG4gICAgICAgICAgXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl0sXG4gICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1dcbiAgICAgICAgfSlcbiAgICAgIF0pXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZWdhdGUgYWRtaW5pc3RyYXRvciBwcml2aWxlZ2VzIGZvciBhIHNlcnZpY2VcbiAgICovXG4gIGRlbGVnYXRlQWRtaW5pc3RyYXRvcihzZXJ2aWNlUHJpbmNpcGFsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBzZXJ2aWNlTmFtZSA9IHRoaXMubm9ybWFsaXplU2VydmljZU5hbWUoc2VydmljZVByaW5jaXBhbCk7XG5cbiAgICBuZXcgQXdzQ3VzdG9tUmVzb3VyY2UodGhpcywgYERlbGVnYXRlQWRtaW4ke3NlcnZpY2VOYW1lfWAsIHtcbiAgICAgIGZ1bmN0aW9uTmFtZTogYGRlbGVnYXRlQWRtaW4ke3NlcnZpY2VOYW1lfSR7dGhpcy5ub3JtYWxpemVBY2NvdW50TmFtZSh0aGlzLmFjY291bnROYW1lKX1gLFxuICAgICAgb25DcmVhdGU6IHtcbiAgICAgICAgc2VydmljZTogXCJvcmdhbml6YXRpb25zXCIsXG4gICAgICAgIGFjdGlvbjogXCJSZWdpc3RlckRlbGVnYXRlZEFkbWluaXN0cmF0b3JDb21tYW5kXCIsXG4gICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBBY2NvdW50SWQ6IHRoaXMuYWNjb3VudElkLFxuICAgICAgICAgIFNlcnZpY2VQcmluY2lwYWw6IHNlcnZpY2VQcmluY2lwYWxcbiAgICAgICAgfSxcbiAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiBjdXN0b21SZXNvdXJjZXMuUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFxuICAgICAgICAgIGBkZWxlZ2F0ZS1hZG1pbi0ke3NlcnZpY2VQcmluY2lwYWx9LXRvLSR7dGhpcy5hY2NvdW50SWR9YFxuICAgICAgICApXG4gICAgICB9LFxuICAgICAgb25EZWxldGU6IHtcbiAgICAgICAgc2VydmljZTogXCJvcmdhbml6YXRpb25zXCIsXG4gICAgICAgIGFjdGlvbjogXCJEZXJlZ2lzdGVyRGVsZWdhdGVkQWRtaW5pc3RyYXRvckNvbW1hbmRcIixcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIEFjY291bnRJZDogdGhpcy5hY2NvdW50SWQsXG4gICAgICAgICAgU2VydmljZVByaW5jaXBhbDogc2VydmljZVByaW5jaXBhbFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcmVzb3VyY2VUeXBlOiBcIkN1c3RvbTo6RGVsZWdhdGVBZG1pbmlzdHJhdG9yXCIsXG4gICAgICBwb2xpY3k6IGN1c3RvbVJlc291cmNlcy5Bd3NDdXN0b21SZXNvdXJjZVBvbGljeS5mcm9tU3RhdGVtZW50cyhbXG4gICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgIFwib3JnYW5pemF0aW9uczpSZWdpc3RlckRlbGVnYXRlZEFkbWluaXN0cmF0b3JcIixcbiAgICAgICAgICAgIFwib3JnYW5pemF0aW9uczpEZXJlZ2lzdGVyRGVsZWdhdGVkQWRtaW5pc3RyYXRvclwiLFxuICAgICAgICAgICAgXCJvcmdhbml6YXRpb25zOkxpc3REZWxlZ2F0ZWRBZG1pbmlzdHJhdG9yc1wiXG4gICAgICAgICAgXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl0sXG4gICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1dcbiAgICAgICAgfSlcbiAgICAgIF0pXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSGVscGVyIHRvIG5vcm1hbGl6ZSBhY2NvdW50IG5hbWVzIGZvciBjb25zdHJ1Y3QgSURzXG4gICAqL1xuICBwcml2YXRlIG5vcm1hbGl6ZUFjY291bnROYW1lKGFjY291bnROYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBhY2NvdW50TmFtZVxuICAgICAgLnJlcGxhY2UoL1teYS16QS1aMC05XS9nLCBcIlwiKVxuICAgICAgLnJlcGxhY2UoL14oW2Etel0pLywgKG1hdGNoKSA9PiBtYXRjaC50b1VwcGVyQ2FzZSgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgdG8gbm9ybWFsaXplIHBvbGljeSBuYW1lcyBmb3IgY29uc3RydWN0IElEc1xuICAgKi9cbiAgcHJpdmF0ZSBub3JtYWxpemVQb2xpY3lOYW1lKHBvbGljeU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHBvbGljeU5hbWVcbiAgICAgIC5yZXBsYWNlKC9bXmEtekEtWjAtOV0vZywgXCJcIilcbiAgICAgIC5yZXBsYWNlKC9eKFthLXpdKS8sIChtYXRjaCkgPT4gbWF0Y2gudG9VcHBlckNhc2UoKSk7XG4gIH1cblxuICAvKipcbiAgICogSGVscGVyIHRvIG5vcm1hbGl6ZSBzZXJ2aWNlIG5hbWVzIGZvciBjb25zdHJ1Y3QgSURzXG4gICAqL1xuICBwcml2YXRlIG5vcm1hbGl6ZVNlcnZpY2VOYW1lKHNlcnZpY2VQcmluY2lwYWw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHNlcnZpY2VQcmluY2lwYWxcbiAgICAgIC5yZXBsYWNlKC9bXmEtekEtWjAtOV0vZywgXCJcIilcbiAgICAgIC5yZXBsYWNlKC9eKFthLXpdKS8sIChtYXRjaCkgPT4gbWF0Y2gudG9VcHBlckNhc2UoKSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSByb290IElEIChwbGFjZWhvbGRlciAtIHdvdWxkIG5lZWQgY3VzdG9tIGxvZ2ljIHRvIGdldCB0aGlzKVxuICAgKi9cbiAgcHJpdmF0ZSBnZXRSb290SWQoKTogc3RyaW5nIHtcbiAgICAvLyBUaGlzIHdvdWxkIG5lZWQgdG8gYmUgaW1wbGVtZW50ZWQgd2l0aCBhIGN1c3RvbSByZXNvdXJjZSB0byBnZXQgdGhlIHJvb3QgSURcbiAgICAvLyBGb3Igbm93LCB1c2luZyBhIHBsYWNlaG9sZGVyXG4gICAgcmV0dXJuIHRoaXMubm9kZS50cnlHZXRDb250ZXh0KFwib3JnYW5pc2F0aW9uUm9vdElkXCIpIHx8IFwici1wbGFjZWhvbGRlclwiO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { DelegatedAdministratorProps } from "./types";
|
|
3
|
+
/**
|
|
4
|
+
* AWS Organisations Delegated Administrator construct
|
|
5
|
+
*/
|
|
6
|
+
export declare class DelegatedAdministrator extends Construct {
|
|
7
|
+
readonly servicePrincipal: string;
|
|
8
|
+
readonly accountId: string;
|
|
9
|
+
constructor(scope: Construct, id: string, props: DelegatedAdministratorProps);
|
|
10
|
+
/**
|
|
11
|
+
* Helper to normalize service names for construct IDs
|
|
12
|
+
*/
|
|
13
|
+
private normalizeServiceName;
|
|
14
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DelegatedAdministrator = void 0;
|
|
4
|
+
const customResources = require("aws-cdk-lib/custom-resources");
|
|
5
|
+
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
6
|
+
const constructs_1 = require("constructs");
|
|
7
|
+
const awsCustomResource_1 = require("../utilities/awsCustomResource");
|
|
8
|
+
/**
|
|
9
|
+
* AWS Organisations Delegated Administrator construct
|
|
10
|
+
*/
|
|
11
|
+
class DelegatedAdministrator extends constructs_1.Construct {
|
|
12
|
+
constructor(scope, id, props) {
|
|
13
|
+
super(scope, id);
|
|
14
|
+
this.servicePrincipal = props.servicePrincipal;
|
|
15
|
+
this.accountId = props.accountId;
|
|
16
|
+
const serviceName = this.normalizeServiceName(props.servicePrincipal);
|
|
17
|
+
// Register delegated administrator
|
|
18
|
+
new awsCustomResource_1.AwsCustomResource(this, "DelegatedAdministratorResource", {
|
|
19
|
+
functionName: `delegateAdmin${serviceName}`,
|
|
20
|
+
onCreate: {
|
|
21
|
+
service: "organizations",
|
|
22
|
+
action: "RegisterDelegatedAdministratorCommand",
|
|
23
|
+
parameters: {
|
|
24
|
+
AccountId: props.accountId,
|
|
25
|
+
ServicePrincipal: props.servicePrincipal
|
|
26
|
+
},
|
|
27
|
+
physicalResourceId: customResources.PhysicalResourceId.of(`delegate-admin-${props.servicePrincipal}-${props.accountId}`)
|
|
28
|
+
},
|
|
29
|
+
onDelete: {
|
|
30
|
+
service: "organizations",
|
|
31
|
+
action: "DeregisterDelegatedAdministratorCommand",
|
|
32
|
+
parameters: {
|
|
33
|
+
AccountId: props.accountId,
|
|
34
|
+
ServicePrincipal: props.servicePrincipal
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
resourceType: "Custom::DelegatedAdministrator",
|
|
38
|
+
policy: customResources.AwsCustomResourcePolicy.fromStatements([
|
|
39
|
+
new aws_iam_1.PolicyStatement({
|
|
40
|
+
actions: [
|
|
41
|
+
"organizations:RegisterDelegatedAdministrator",
|
|
42
|
+
"organizations:DeregisterDelegatedAdministrator",
|
|
43
|
+
"organizations:ListDelegatedAdministrators"
|
|
44
|
+
],
|
|
45
|
+
resources: ["*"],
|
|
46
|
+
effect: aws_iam_1.Effect.ALLOW
|
|
47
|
+
})
|
|
48
|
+
])
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Helper to normalize service names for construct IDs
|
|
53
|
+
*/
|
|
54
|
+
normalizeServiceName(servicePrincipal) {
|
|
55
|
+
return servicePrincipal
|
|
56
|
+
.replace(/[^a-zA-Z0-9]/g, "")
|
|
57
|
+
.replace(/^([a-z])/, (match) => match.toUpperCase());
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
exports.DelegatedAdministrator = DelegatedAdministrator;
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZWdhdGVkQWRtaW5pc3RyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9yZXNvdXJjZXMvYXdzL29yZ2FuaXNhdGlvbnMvZGVsZWdhdGVkQWRtaW5pc3RyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxnRUFBZ0U7QUFDaEUsaURBQThEO0FBQzlELDJDQUF1QztBQUV2QyxzRUFBbUU7QUFFbkU7O0dBRUc7QUFDSCxNQUFhLHNCQUF1QixTQUFRLHNCQUFTO0lBSW5ELFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLEtBQWtDO1FBRWxDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQztRQUMvQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFFakMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRXRFLG1DQUFtQztRQUNuQyxJQUFJLHFDQUFpQixDQUFDLElBQUksRUFBRSxnQ0FBZ0MsRUFBRTtZQUM1RCxZQUFZLEVBQUUsZ0JBQWdCLFdBQVcsRUFBRTtZQUMzQyxRQUFRLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLGVBQWU7Z0JBQ3hCLE1BQU0sRUFBRSx1Q0FBdUM7Z0JBQy9DLFVBQVUsRUFBRTtvQkFDVixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7b0JBQzFCLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7aUJBQ3pDO2dCQUNELGtCQUFrQixFQUFFLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQ3ZELGtCQUFrQixLQUFLLENBQUMsZ0JBQWdCLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUM5RDthQUNGO1lBQ0QsUUFBUSxFQUFFO2dCQUNSLE9BQU8sRUFBRSxlQUFlO2dCQUN4QixNQUFNLEVBQUUseUNBQXlDO2dCQUNqRCxVQUFVLEVBQUU7b0JBQ1YsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO29CQUMxQixnQkFBZ0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCO2lCQUN6QzthQUNGO1lBQ0QsWUFBWSxFQUFFLGdDQUFnQztZQUM5QyxNQUFNLEVBQUUsZUFBZSxDQUFDLHVCQUF1QixDQUFDLGNBQWMsQ0FBQztnQkFDN0QsSUFBSSx5QkFBZSxDQUFDO29CQUNsQixPQUFPLEVBQUU7d0JBQ1AsOENBQThDO3dCQUM5QyxnREFBZ0Q7d0JBQ2hELDJDQUEyQztxQkFDNUM7b0JBQ0QsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO29CQUNoQixNQUFNLEVBQUUsZ0JBQU0sQ0FBQyxLQUFLO2lCQUNyQixDQUFDO2FBQ0gsQ0FBQztTQUNILENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNLLG9CQUFvQixDQUFDLGdCQUF3QjtRQUNuRCxPQUFPLGdCQUFnQjthQUNwQixPQUFPLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQzthQUM1QixPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDO0NBQ0Y7QUE3REQsd0RBNkRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY3VzdG9tUmVzb3VyY2VzIGZyb20gXCJhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzXCI7XG5pbXBvcnQgeyBFZmZlY3QsIFBvbGljeVN0YXRlbWVudCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgRGVsZWdhdGVkQWRtaW5pc3RyYXRvclByb3BzIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IEF3c0N1c3RvbVJlc291cmNlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9hd3NDdXN0b21SZXNvdXJjZVwiO1xuXG4vKipcbiAqIEFXUyBPcmdhbmlzYXRpb25zIERlbGVnYXRlZCBBZG1pbmlzdHJhdG9yIGNvbnN0cnVjdFxuICovXG5leHBvcnQgY2xhc3MgRGVsZWdhdGVkQWRtaW5pc3RyYXRvciBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHJlYWRvbmx5IHNlcnZpY2VQcmluY2lwYWw6IHN0cmluZztcbiAgcmVhZG9ubHkgYWNjb3VudElkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBEZWxlZ2F0ZWRBZG1pbmlzdHJhdG9yUHJvcHNcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMuc2VydmljZVByaW5jaXBhbCA9IHByb3BzLnNlcnZpY2VQcmluY2lwYWw7XG4gICAgdGhpcy5hY2NvdW50SWQgPSBwcm9wcy5hY2NvdW50SWQ7XG5cbiAgICBjb25zdCBzZXJ2aWNlTmFtZSA9IHRoaXMubm9ybWFsaXplU2VydmljZU5hbWUocHJvcHMuc2VydmljZVByaW5jaXBhbCk7XG5cbiAgICAvLyBSZWdpc3RlciBkZWxlZ2F0ZWQgYWRtaW5pc3RyYXRvclxuICAgIG5ldyBBd3NDdXN0b21SZXNvdXJjZSh0aGlzLCBcIkRlbGVnYXRlZEFkbWluaXN0cmF0b3JSZXNvdXJjZVwiLCB7XG4gICAgICBmdW5jdGlvbk5hbWU6IGBkZWxlZ2F0ZUFkbWluJHtzZXJ2aWNlTmFtZX1gLFxuICAgICAgb25DcmVhdGU6IHtcbiAgICAgICAgc2VydmljZTogXCJvcmdhbml6YXRpb25zXCIsXG4gICAgICAgIGFjdGlvbjogXCJSZWdpc3RlckRlbGVnYXRlZEFkbWluaXN0cmF0b3JDb21tYW5kXCIsXG4gICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBBY2NvdW50SWQ6IHByb3BzLmFjY291bnRJZCxcbiAgICAgICAgICBTZXJ2aWNlUHJpbmNpcGFsOiBwcm9wcy5zZXJ2aWNlUHJpbmNpcGFsXG4gICAgICAgIH0sXG4gICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogY3VzdG9tUmVzb3VyY2VzLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcbiAgICAgICAgICBgZGVsZWdhdGUtYWRtaW4tJHtwcm9wcy5zZXJ2aWNlUHJpbmNpcGFsfS0ke3Byb3BzLmFjY291bnRJZH1gXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICBvbkRlbGV0ZToge1xuICAgICAgICBzZXJ2aWNlOiBcIm9yZ2FuaXphdGlvbnNcIixcbiAgICAgICAgYWN0aW9uOiBcIkRlcmVnaXN0ZXJEZWxlZ2F0ZWRBZG1pbmlzdHJhdG9yQ29tbWFuZFwiLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgQWNjb3VudElkOiBwcm9wcy5hY2NvdW50SWQsXG4gICAgICAgICAgU2VydmljZVByaW5jaXBhbDogcHJvcHMuc2VydmljZVByaW5jaXBhbFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcmVzb3VyY2VUeXBlOiBcIkN1c3RvbTo6RGVsZWdhdGVkQWRtaW5pc3RyYXRvclwiLFxuICAgICAgcG9saWN5OiBjdXN0b21SZXNvdXJjZXMuQXdzQ3VzdG9tUmVzb3VyY2VQb2xpY3kuZnJvbVN0YXRlbWVudHMoW1xuICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICBcIm9yZ2FuaXphdGlvbnM6UmVnaXN0ZXJEZWxlZ2F0ZWRBZG1pbmlzdHJhdG9yXCIsXG4gICAgICAgICAgICBcIm9yZ2FuaXphdGlvbnM6RGVyZWdpc3RlckRlbGVnYXRlZEFkbWluaXN0cmF0b3JcIixcbiAgICAgICAgICAgIFwib3JnYW5pemF0aW9uczpMaXN0RGVsZWdhdGVkQWRtaW5pc3RyYXRvcnNcIlxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdLFxuICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XXG4gICAgICAgIH0pXG4gICAgICBdKVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciB0byBub3JtYWxpemUgc2VydmljZSBuYW1lcyBmb3IgY29uc3RydWN0IElEc1xuICAgKi9cbiAgcHJpdmF0ZSBub3JtYWxpemVTZXJ2aWNlTmFtZShzZXJ2aWNlUHJpbmNpcGFsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBzZXJ2aWNlUHJpbmNpcGFsXG4gICAgICAucmVwbGFjZSgvW15hLXpBLVowLTldL2csIFwiXCIpXG4gICAgICAucmVwbGFjZSgvXihbYS16XSkvLCAobWF0Y2gpID0+IG1hdGNoLnRvVXBwZXJDYXNlKCkpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { Organisation } from "./organisation.js";
|
|
2
|
+
export { OrganisationalUnit } from "./organisationalUnit.js";
|
|
3
|
+
export { Account } from "./account.js";
|
|
4
|
+
export { Policy } from "./policy.js";
|
|
5
|
+
export { DelegatedAdministrator } from "./delegatedAdministrator.js";
|
|
6
|
+
export { TrustedServiceAccess } from "./trustedServiceAccess.js";
|
|
7
|
+
export { PolicyType, FeatureSet, IamUserAccessToBilling } from "./types.js";
|
|
8
|
+
export type { OrganisationProps, OrganisationalUnitProps, AccountProps, PolicyProps, AccountsConfig } from "./types.js";
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IamUserAccessToBilling = exports.FeatureSet = exports.PolicyType = exports.TrustedServiceAccess = exports.DelegatedAdministrator = exports.Policy = exports.Account = exports.OrganisationalUnit = exports.Organisation = void 0;
|
|
4
|
+
// Simple approach (more like pepperize)
|
|
5
|
+
var organisation_js_1 = require("./organisation.js");
|
|
6
|
+
Object.defineProperty(exports, "Organisation", { enumerable: true, get: function () { return organisation_js_1.Organisation; } });
|
|
7
|
+
var organisationalUnit_js_1 = require("./organisationalUnit.js");
|
|
8
|
+
Object.defineProperty(exports, "OrganisationalUnit", { enumerable: true, get: function () { return organisationalUnit_js_1.OrganisationalUnit; } });
|
|
9
|
+
var account_js_1 = require("./account.js");
|
|
10
|
+
Object.defineProperty(exports, "Account", { enumerable: true, get: function () { return account_js_1.Account; } });
|
|
11
|
+
var policy_js_1 = require("./policy.js");
|
|
12
|
+
Object.defineProperty(exports, "Policy", { enumerable: true, get: function () { return policy_js_1.Policy; } });
|
|
13
|
+
var delegatedAdministrator_js_1 = require("./delegatedAdministrator.js");
|
|
14
|
+
Object.defineProperty(exports, "DelegatedAdministrator", { enumerable: true, get: function () { return delegatedAdministrator_js_1.DelegatedAdministrator; } });
|
|
15
|
+
var trustedServiceAccess_js_1 = require("./trustedServiceAccess.js");
|
|
16
|
+
Object.defineProperty(exports, "TrustedServiceAccess", { enumerable: true, get: function () { return trustedServiceAccess_js_1.TrustedServiceAccess; } });
|
|
17
|
+
// Enums and types (commonly used)
|
|
18
|
+
var types_js_1 = require("./types.js");
|
|
19
|
+
Object.defineProperty(exports, "PolicyType", { enumerable: true, get: function () { return types_js_1.PolicyType; } });
|
|
20
|
+
Object.defineProperty(exports, "FeatureSet", { enumerable: true, get: function () { return types_js_1.FeatureSet; } });
|
|
21
|
+
Object.defineProperty(exports, "IamUserAccessToBilling", { enumerable: true, get: function () { return types_js_1.IamUserAccessToBilling; } });
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9vcmdhbmlzYXRpb25zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHdDQUF3QztBQUN4QyxxREFBaUQ7QUFBeEMsK0dBQUEsWUFBWSxPQUFBO0FBQ3JCLGlFQUE2RDtBQUFwRCwySEFBQSxrQkFBa0IsT0FBQTtBQUMzQiwyQ0FBdUM7QUFBOUIscUdBQUEsT0FBTyxPQUFBO0FBQ2hCLHlDQUFxQztBQUE1QixtR0FBQSxNQUFNLE9BQUE7QUFDZix5RUFBcUU7QUFBNUQsbUlBQUEsc0JBQXNCLE9BQUE7QUFDL0IscUVBQWlFO0FBQXhELCtIQUFBLG9CQUFvQixPQUFBO0FBRTdCLGtDQUFrQztBQUNsQyx1Q0FBNEU7QUFBbkUsc0dBQUEsVUFBVSxPQUFBO0FBQUUsc0dBQUEsVUFBVSxPQUFBO0FBQUUsa0hBQUEsc0JBQXNCLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTaW1wbGUgYXBwcm9hY2ggKG1vcmUgbGlrZSBwZXBwZXJpemUpXG5leHBvcnQgeyBPcmdhbmlzYXRpb24gfSBmcm9tIFwiLi9vcmdhbmlzYXRpb24uanNcIjtcbmV4cG9ydCB7IE9yZ2FuaXNhdGlvbmFsVW5pdCB9IGZyb20gXCIuL29yZ2FuaXNhdGlvbmFsVW5pdC5qc1wiO1xuZXhwb3J0IHsgQWNjb3VudCB9IGZyb20gXCIuL2FjY291bnQuanNcIjtcbmV4cG9ydCB7IFBvbGljeSB9IGZyb20gXCIuL3BvbGljeS5qc1wiO1xuZXhwb3J0IHsgRGVsZWdhdGVkQWRtaW5pc3RyYXRvciB9IGZyb20gXCIuL2RlbGVnYXRlZEFkbWluaXN0cmF0b3IuanNcIjtcbmV4cG9ydCB7IFRydXN0ZWRTZXJ2aWNlQWNjZXNzIH0gZnJvbSBcIi4vdHJ1c3RlZFNlcnZpY2VBY2Nlc3MuanNcIjtcblxuLy8gRW51bXMgYW5kIHR5cGVzIChjb21tb25seSB1c2VkKVxuZXhwb3J0IHsgUG9saWN5VHlwZSwgRmVhdHVyZVNldCwgSWFtVXNlckFjY2Vzc1RvQmlsbGluZyB9IGZyb20gXCIuL3R5cGVzLmpzXCI7XG5cbi8vIFByb3BzIG9ubHkgKG1vc3QgdXNlcnMgd29uJ3QgbmVlZCBpbnRlcmZhY2VzKVxuZXhwb3J0IHR5cGUge1xuICBPcmdhbmlzYXRpb25Qcm9wcyxcbiAgT3JnYW5pc2F0aW9uYWxVbml0UHJvcHMsXG4gIEFjY291bnRQcm9wcyxcbiAgUG9saWN5UHJvcHMsXG4gIEFjY291bnRzQ29uZmlnXG59IGZyb20gXCIuL3R5cGVzLmpzXCI7XG4iXX0=
|