@fjall/components-infrastructure 0.88.4 → 0.89.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/LICENSE +21 -0
  2. package/dist/lib/config/aws/disasterRecovery.js +28 -7
  3. package/dist/lib/patterns/aws/compute.d.ts +6 -716
  4. package/dist/lib/patterns/aws/compute.js +24 -427
  5. package/dist/lib/patterns/aws/computeEc2.d.ts +67 -0
  6. package/dist/lib/patterns/aws/computeEc2.js +46 -0
  7. package/dist/lib/patterns/aws/computeEcs.d.ts +446 -0
  8. package/dist/lib/patterns/aws/computeEcs.js +246 -0
  9. package/dist/lib/patterns/aws/computeLambda.d.ts +220 -0
  10. package/dist/lib/patterns/aws/computeLambda.js +147 -0
  11. package/dist/lib/patterns/aws/domainDelegation.d.ts +8 -0
  12. package/dist/lib/patterns/aws/domainDelegation.js +54 -0
  13. package/dist/lib/patterns/aws/domainFactory.d.ts +8 -0
  14. package/dist/lib/patterns/aws/domainFactory.js +23 -0
  15. package/dist/lib/patterns/aws/index.d.ts +3 -0
  16. package/dist/lib/patterns/aws/index.js +5 -1
  17. package/dist/lib/patterns/aws/interfaces/domain.d.ts +2 -0
  18. package/dist/lib/patterns/aws/interfaces/domain.js +6 -0
  19. package/dist/lib/patterns/aws/interfaces/index.d.ts +1 -0
  20. package/dist/lib/patterns/aws/interfaces/index.js +1 -1
  21. package/dist/lib/patterns/aws/interfaces/pattern.d.ts +3 -0
  22. package/dist/lib/patterns/aws/interfaces/pattern.js +1 -1
  23. package/dist/lib/patterns/aws/payload.js +11 -1
  24. package/dist/lib/resources/aws/compute/ecs.d.ts +14 -2
  25. package/dist/lib/resources/aws/compute/ecs.js +69 -24
  26. package/dist/lib/resources/aws/networking/domain.d.ts +13 -0
  27. package/dist/lib/resources/aws/networking/domain.js +102 -0
  28. package/dist/lib/resources/aws/networking/domainCertificate.d.ts +13 -0
  29. package/dist/lib/resources/aws/networking/domainCertificate.js +28 -0
  30. package/dist/lib/resources/aws/networking/hostedZone.js +3 -6
  31. package/dist/lib/resources/aws/networking/index.d.ts +2 -0
  32. package/dist/lib/resources/aws/networking/index.js +3 -1
  33. package/dist/lib/utils/capitaliseString.d.ts +1 -18
  34. package/dist/lib/utils/capitaliseString.js +8 -37
  35. package/dist/lib/utils/dnsRecords.d.ts +4 -0
  36. package/dist/lib/utils/dnsRecords.js +108 -0
  37. package/dist/lib/utils/domainTypes.d.ts +37 -0
  38. package/dist/lib/utils/domainTypes.js +10 -0
  39. package/dist/lib/utils/env.js +23 -29
  40. package/dist/lib/utils/getConfig.js +42 -16
  41. package/dist/lib/utils/index.d.ts +1 -0
  42. package/dist/lib/utils/index.js +2 -1
  43. package/package.json +4 -3
@@ -0,0 +1,13 @@
1
+ import { Construct } from "constructs";
2
+ import { type IHostedZone } from "aws-cdk-lib/aws-route53";
3
+ import type { DomainApexProps } from "../../../utils/domainTypes";
4
+ export declare class Domain extends Construct {
5
+ readonly hostedZoneId: string;
6
+ readonly hostedZone: IHostedZone;
7
+ private readonly zoneName;
8
+ constructor(scope: Construct, id: string, props: DomainApexProps);
9
+ private addDelegationRole;
10
+ private addZoneIdOutput;
11
+ private addNameserverOutput;
12
+ private addCertificates;
13
+ }
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Domain = void 0;
4
+ const constructs_1 = require("constructs");
5
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
6
+ const capitaliseString_1 = require("../../../utils/capitaliseString");
7
+ const iam_1 = require("../iam");
8
+ const aws_iam_1 = require("aws-cdk-lib/aws-iam");
9
+ const aws_route53_1 = require("aws-cdk-lib/aws-route53");
10
+ const domainTypes_1 = require("../../../utils/domainTypes");
11
+ const domainCertificate_1 = require("./domainCertificate");
12
+ class Domain extends constructs_1.Construct {
13
+ constructor(scope, id, props) {
14
+ super(scope, id);
15
+ this.zoneName = props.zoneName;
16
+ if (!props.hostedZoneId) {
17
+ const createdZone = new aws_route53_1.HostedZone(this, `${(0, capitaliseString_1.getSafeZoneName)(props.zoneName)}HostedZone`, {
18
+ zoneName: props.zoneName,
19
+ comment: `Hosted Zone for ${props.zoneName}`
20
+ });
21
+ this.hostedZone = createdZone;
22
+ this.hostedZoneId = createdZone.hostedZoneId;
23
+ this.addDelegationRole(createdZone);
24
+ this.addNameserverOutput(createdZone);
25
+ }
26
+ else {
27
+ this.hostedZoneId = props.hostedZoneId;
28
+ this.hostedZone = aws_route53_1.HostedZone.fromHostedZoneAttributes(this, `${(0, capitaliseString_1.getSafeZoneName)(props.zoneName)}ImportedHostedZone`, {
29
+ hostedZoneId: props.hostedZoneId,
30
+ zoneName: props.zoneName
31
+ });
32
+ }
33
+ this.addZoneIdOutput();
34
+ if (props.records) {
35
+ (0, domainTypes_1.addDnsRecords)(this, this.hostedZone, this.zoneName, props.records);
36
+ }
37
+ if (props.certificates) {
38
+ this.addCertificates(props.certificates);
39
+ }
40
+ }
41
+ addDelegationRole(zone) {
42
+ const domainLabel = this.zoneName.split(".")[0] ?? "default";
43
+ const safeDomainLabel = (0, capitaliseString_1.toPascalCase)(domainLabel);
44
+ const role = new iam_1.Role(this, `${safeDomainLabel}DelegateHostedZoneRole`, {
45
+ assumedBy: new aws_iam_1.OrganizationPrincipal(aws_cdk_lib_1.Fn.importValue("OrganisationId")),
46
+ roleName: `${domainLabel}DelegateHostedZoneRole`,
47
+ inlinePolicies: {
48
+ ["listHostedZones"]: new aws_iam_1.PolicyDocument({
49
+ statements: [
50
+ new aws_iam_1.PolicyStatement({
51
+ actions: ["route53:ListHostedZonesByName"],
52
+ resources: ["*"]
53
+ })
54
+ ]
55
+ }),
56
+ ["changeResourceRecordSets"]: new aws_iam_1.PolicyDocument({
57
+ statements: [
58
+ new aws_iam_1.PolicyStatement({
59
+ actions: ["route53:ChangeResourceRecordSets"],
60
+ resources: [`arn:aws:route53:::hostedzone/${zone.hostedZoneId}`]
61
+ })
62
+ ]
63
+ })
64
+ }
65
+ });
66
+ zone.grantDelegation(role);
67
+ new aws_cdk_lib_1.CfnOutput(this, `${safeDomainLabel}DelegateHostedZoneRoleArn`, {
68
+ key: `${safeDomainLabel}DelegateHostedZoneRoleArn`,
69
+ value: role.roleArn,
70
+ exportName: `${domainLabel}DelegateHostedZoneRoleArn`
71
+ });
72
+ }
73
+ addZoneIdOutput() {
74
+ const safeKey = (0, capitaliseString_1.toPascalCase)((0, capitaliseString_1.getSafeZoneName)(this.zoneName));
75
+ const exports = (0, domainTypes_1.getDomainExportNames)(this.zoneName);
76
+ new aws_cdk_lib_1.CfnOutput(this, `${safeKey}HostedZoneId`, {
77
+ key: `${safeKey}HostedZoneId`,
78
+ value: this.hostedZoneId,
79
+ exportName: exports.hostedZoneId
80
+ });
81
+ }
82
+ addNameserverOutput(zone) {
83
+ const safeKey = (0, capitaliseString_1.toPascalCase)((0, capitaliseString_1.getSafeZoneName)(this.zoneName));
84
+ new aws_cdk_lib_1.CfnOutput(this, `${safeKey}Nameservers`, {
85
+ key: `${safeKey}Nameservers`,
86
+ value: aws_cdk_lib_1.Fn.join(",", zone.hostedZoneNameServers ?? [])
87
+ });
88
+ }
89
+ addCertificates(certificates) {
90
+ const safeZone = (0, capitaliseString_1.toPascalCase)((0, capitaliseString_1.getSafeZoneName)(this.zoneName));
91
+ certificates.forEach((cert, index) => {
92
+ const safeCertName = (0, capitaliseString_1.toPascalCase)(cert.domainName.split(".").join(""));
93
+ new domainCertificate_1.DomainCertificate(this, `${safeZone}${safeCertName}Cert${index}`, {
94
+ domainName: cert.domainName,
95
+ subjectAlternativeNames: cert.subjectAlternativeNames,
96
+ hostedZone: this.hostedZone
97
+ });
98
+ });
99
+ }
100
+ }
101
+ exports.Domain = Domain;
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tYWluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3MvbmV0d29ya2luZy9kb21haW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXVDO0FBQ3ZDLDZDQUE0QztBQUM1QyxzRUFBZ0Y7QUFDaEYsZ0NBQThCO0FBQzlCLGlEQUk2QjtBQUM3Qix5REFHaUM7QUFLakMsNERBR29DO0FBQ3BDLDJEQUF3RDtBQUV4RCxNQUFhLE1BQU8sU0FBUSxzQkFBUztJQUtuQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXNCO1FBQzlELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBRS9CLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDeEIsTUFBTSxXQUFXLEdBQUcsSUFBSSx3QkFBYSxDQUNuQyxJQUFJLEVBQ0osR0FBRyxJQUFBLGtDQUFlLEVBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQzlDO2dCQUNFLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtnQkFDeEIsT0FBTyxFQUFFLG1CQUFtQixLQUFLLENBQUMsUUFBUSxFQUFFO2FBQzdDLENBQ0YsQ0FBQztZQUNGLElBQUksQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDO1lBQzlCLElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQztZQUM3QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxVQUFVLEdBQUcsd0JBQWEsQ0FBQyx3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QyxJQUFBLGtDQUFlLEVBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFFN0QsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSxHQUFHLE9BQU8sYUFBYSxFQUFFO1lBQzNDLEdBQUcsRUFBRSxHQUFHLE9BQU8sYUFBYTtZQUM1QixLQUFLLEVBQUUsZ0JBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxFQUFFLENBQUM7U0FDdEQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGVBQWUsQ0FBQyxZQUFnQztRQUN0RCxNQUFNLFFBQVEsR0FBRyxJQUFBLCtCQUFZLEVBQUMsSUFBQSxrQ0FBZSxFQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBRTlELFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDbkMsTUFBTSxZQUFZLEdBQUcsSUFBQSwrQkFBWSxFQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3ZFLElBQUkscUNBQWlCLENBQUMsSUFBSSxFQUFFLEdBQUcsUUFBUSxHQUFHLFlBQVksT0FBTyxLQUFLLEVBQUUsRUFBRTtnQkFDcEUsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO2dCQUMzQix1QkFBdUIsRUFBRSxJQUFJLENBQUMsdUJBQXVCO2dCQUNyRCxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7YUFDNUIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFsSEQsd0JBa0hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IENmbk91dHB1dCwgRm4gfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IHRvUGFzY2FsQ2FzZSwgZ2V0U2FmZVpvbmVOYW1lIH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL2NhcGl0YWxpc2VTdHJpbmdcIjtcbmltcG9ydCB7IFJvbGUgfSBmcm9tIFwiLi4vaWFtXCI7XG5pbXBvcnQge1xuICBPcmdhbml6YXRpb25QcmluY2lwYWwsXG4gIFBvbGljeURvY3VtZW50LFxuICBQb2xpY3lTdGF0ZW1lbnRcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7XG4gIEhvc3RlZFpvbmUgYXMgQVdTSG9zdGVkWm9uZSxcbiAgdHlwZSBJSG9zdGVkWm9uZVxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJvdXRlNTNcIjtcbmltcG9ydCB0eXBlIHtcbiAgRG9tYWluQXBleFByb3BzLFxuICBDZXJ0aWZpY2F0ZUlucHV0XG59IGZyb20gXCIuLi8uLi8uLi91dGlscy9kb21haW5UeXBlc1wiO1xuaW1wb3J0IHtcbiAgZ2V0RG9tYWluRXhwb3J0TmFtZXMsXG4gIGFkZERuc1JlY29yZHNcbn0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL2RvbWFpblR5cGVzXCI7XG5pbXBvcnQgeyBEb21haW5DZXJ0aWZpY2F0ZSB9IGZyb20gXCIuL2RvbWFpbkNlcnRpZmljYXRlXCI7XG5cbmV4cG9ydCBjbGFzcyBEb21haW4gZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgaG9zdGVkWm9uZUlkOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBob3N0ZWRab25lOiBJSG9zdGVkWm9uZTtcbiAgcHJpdmF0ZSByZWFkb25seSB6b25lTmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEb21haW5BcGV4UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy56b25lTmFtZSA9IHByb3BzLnpvbmVOYW1lO1xuXG4gICAgaWYgKCFwcm9wcy5ob3N0ZWRab25lSWQpIHtcbiAgICAgIGNvbnN0IGNyZWF0ZWRab25lID0gbmV3IEFXU0hvc3RlZFpvbmUoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIGAke2dldFNhZmVab25lTmFtZShwcm9wcy56b25lTmFtZSl9SG9zdGVkWm9uZWAsXG4gICAgICAgIHtcbiAgICAgICAgICB6b25lTmFtZTogcHJvcHMuem9uZU5hbWUsXG4gICAgICAgICAgY29tbWVudDogYEhvc3RlZCBab25lIGZvciAke3Byb3BzLnpvbmVOYW1lfWBcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIHRoaXMuaG9zdGVkWm9uZSA9IGNyZWF0ZWRab25lO1xuICAgICAgdGhpcy5ob3N0ZWRab25lSWQgPSBjcmVhdGVkWm9uZS5ob3N0ZWRab25lSWQ7XG4gICAgICB0aGlzLmFkZERlbGVnYXRpb25Sb2xlKGNyZWF0ZWRab25lKTtcbiAgICAgIHRoaXMuYWRkTmFtZXNlcnZlck91dHB1dChjcmVhdGVkWm9uZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaG9zdGVkWm9uZUlkID0gcHJvcHMuaG9zdGVkWm9uZUlkO1xuICAgICAgdGhpcy5ob3N0ZWRab25lID0gQVdTSG9zdGVkWm9uZS5mcm9tSG9zdGVkWm9uZUF0dHJpYnV0ZXMoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIGAke2dldFNhZmVab25lTmFtZShwcm9wcy56b25lTmFtZSl9SW1wb3J0ZWRIb3N0ZWRab25lYCxcbiAgICAgICAge1xuICAgICAgICAgIGhvc3RlZFpvbmVJZDogcHJvcHMuaG9zdGVkWm9uZUlkLFxuICAgICAgICAgIHpvbmVOYW1lOiBwcm9wcy56b25lTmFtZVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuYWRkWm9uZUlkT3V0cHV0KCk7XG5cbiAgICBpZiAocHJvcHMucmVjb3Jkcykge1xuICAgICAgYWRkRG5zUmVjb3Jkcyh0aGlzLCB0aGlzLmhvc3RlZFpvbmUsIHRoaXMuem9uZU5hbWUsIHByb3BzLnJlY29yZHMpO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5jZXJ0aWZpY2F0ZXMpIHtcbiAgICAgIHRoaXMuYWRkQ2VydGlmaWNhdGVzKHByb3BzLmNlcnRpZmljYXRlcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGREZWxlZ2F0aW9uUm9sZSh6b25lOiBBV1NIb3N0ZWRab25lKSB7XG4gICAgY29uc3QgZG9tYWluTGFiZWwgPSB0aGlzLnpvbmVOYW1lLnNwbGl0KFwiLlwiKVswXSA/PyBcImRlZmF1bHRcIjtcbiAgICBjb25zdCBzYWZlRG9tYWluTGFiZWwgPSB0b1Bhc2NhbENhc2UoZG9tYWluTGFiZWwpO1xuXG4gICAgY29uc3Qgcm9sZSA9IG5ldyBSb2xlKHRoaXMsIGAke3NhZmVEb21haW5MYWJlbH1EZWxlZ2F0ZUhvc3RlZFpvbmVSb2xlYCwge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgT3JnYW5pemF0aW9uUHJpbmNpcGFsKEZuLmltcG9ydFZhbHVlKFwiT3JnYW5pc2F0aW9uSWRcIikpLFxuICAgICAgcm9sZU5hbWU6IGAke2RvbWFpbkxhYmVsfURlbGVnYXRlSG9zdGVkWm9uZVJvbGVgLFxuICAgICAgaW5saW5lUG9saWNpZXM6IHtcbiAgICAgICAgW1wibGlzdEhvc3RlZFpvbmVzXCJdOiBuZXcgUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBhY3Rpb25zOiBbXCJyb3V0ZTUzOkxpc3RIb3N0ZWRab25lc0J5TmFtZVwiXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF1cbiAgICAgICAgfSksXG4gICAgICAgIFtcImNoYW5nZVJlc291cmNlUmVjb3JkU2V0c1wiXTogbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgYWN0aW9uczogW1wicm91dGU1MzpDaGFuZ2VSZXNvdXJjZVJlY29yZFNldHNcIl0sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW2Bhcm46YXdzOnJvdXRlNTM6Ojpob3N0ZWR6b25lLyR7em9uZS5ob3N0ZWRab25lSWR9YF1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgem9uZS5ncmFudERlbGVnYXRpb24ocm9sZSk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke3NhZmVEb21haW5MYWJlbH1EZWxlZ2F0ZUhvc3RlZFpvbmVSb2xlQXJuYCwge1xuICAgICAga2V5OiBgJHtzYWZlRG9tYWluTGFiZWx9RGVsZWdhdGVIb3N0ZWRab25lUm9sZUFybmAsXG4gICAgICB2YWx1ZTogcm9sZS5yb2xlQXJuLFxuICAgICAgZXhwb3J0TmFtZTogYCR7ZG9tYWluTGFiZWx9RGVsZWdhdGVIb3N0ZWRab25lUm9sZUFybmBcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkWm9uZUlkT3V0cHV0KCkge1xuICAgIGNvbnN0IHNhZmVLZXkgPSB0b1Bhc2NhbENhc2UoZ2V0U2FmZVpvbmVOYW1lKHRoaXMuem9uZU5hbWUpKTtcbiAgICBjb25zdCBleHBvcnRzID0gZ2V0RG9tYWluRXhwb3J0TmFtZXModGhpcy56b25lTmFtZSk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke3NhZmVLZXl9SG9zdGVkWm9uZUlkYCwge1xuICAgICAga2V5OiBgJHtzYWZlS2V5fUhvc3RlZFpvbmVJZGAsXG4gICAgICB2YWx1ZTogdGhpcy5ob3N0ZWRab25lSWQsXG4gICAgICBleHBvcnROYW1lOiBleHBvcnRzLmhvc3RlZFpvbmVJZFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGROYW1lc2VydmVyT3V0cHV0KHpvbmU6IEFXU0hvc3RlZFpvbmUpIHtcbiAgICBjb25zdCBzYWZlS2V5ID0gdG9QYXNjYWxDYXNlKGdldFNhZmVab25lTmFtZSh0aGlzLnpvbmVOYW1lKSk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke3NhZmVLZXl9TmFtZXNlcnZlcnNgLCB7XG4gICAgICBrZXk6IGAke3NhZmVLZXl9TmFtZXNlcnZlcnNgLFxuICAgICAgdmFsdWU6IEZuLmpvaW4oXCIsXCIsIHpvbmUuaG9zdGVkWm9uZU5hbWVTZXJ2ZXJzID8/IFtdKVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRDZXJ0aWZpY2F0ZXMoY2VydGlmaWNhdGVzOiBDZXJ0aWZpY2F0ZUlucHV0W10pIHtcbiAgICBjb25zdCBzYWZlWm9uZSA9IHRvUGFzY2FsQ2FzZShnZXRTYWZlWm9uZU5hbWUodGhpcy56b25lTmFtZSkpO1xuXG4gICAgY2VydGlmaWNhdGVzLmZvckVhY2goKGNlcnQsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBzYWZlQ2VydE5hbWUgPSB0b1Bhc2NhbENhc2UoY2VydC5kb21haW5OYW1lLnNwbGl0KFwiLlwiKS5qb2luKFwiXCIpKTtcbiAgICAgIG5ldyBEb21haW5DZXJ0aWZpY2F0ZSh0aGlzLCBgJHtzYWZlWm9uZX0ke3NhZmVDZXJ0TmFtZX1DZXJ0JHtpbmRleH1gLCB7XG4gICAgICAgIGRvbWFpbk5hbWU6IGNlcnQuZG9tYWluTmFtZSxcbiAgICAgICAgc3ViamVjdEFsdGVybmF0aXZlTmFtZXM6IGNlcnQuc3ViamVjdEFsdGVybmF0aXZlTmFtZXMsXG4gICAgICAgIGhvc3RlZFpvbmU6IHRoaXMuaG9zdGVkWm9uZVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,13 @@
1
+ import { Construct } from "constructs";
2
+ import { Certificate } from "aws-cdk-lib/aws-certificatemanager";
3
+ import { type IHostedZone } from "aws-cdk-lib/aws-route53";
4
+ export interface DomainCertificateProps {
5
+ domainName: string;
6
+ subjectAlternativeNames?: string[];
7
+ hostedZone: IHostedZone;
8
+ }
9
+ export declare class DomainCertificate extends Construct {
10
+ readonly certificate: Certificate;
11
+ readonly certificateArn: string;
12
+ constructor(scope: Construct, id: string, props: DomainCertificateProps);
13
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DomainCertificate = void 0;
4
+ const constructs_1 = require("constructs");
5
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
6
+ const aws_certificatemanager_1 = require("aws-cdk-lib/aws-certificatemanager");
7
+ const capitaliseString_1 = require("../../../utils/capitaliseString");
8
+ const domainTypes_1 = require("../../../utils/domainTypes");
9
+ class DomainCertificate extends constructs_1.Construct {
10
+ constructor(scope, id, props) {
11
+ super(scope, id);
12
+ this.certificate = new aws_certificatemanager_1.Certificate(this, "Certificate", {
13
+ domainName: props.domainName,
14
+ subjectAlternativeNames: props.subjectAlternativeNames,
15
+ validation: aws_certificatemanager_1.CertificateValidation.fromDns(props.hostedZone)
16
+ });
17
+ this.certificateArn = this.certificate.certificateArn;
18
+ const safeKey = (0, capitaliseString_1.toPascalCase)(props.domainName.split(".").join(""));
19
+ const exports = (0, domainTypes_1.getDomainExportNames)(props.domainName);
20
+ new aws_cdk_lib_1.CfnOutput(this, `${safeKey}CertificateArn`, {
21
+ key: `${safeKey}CertificateArn`,
22
+ value: this.certificateArn,
23
+ exportName: exports.certificateArn
24
+ });
25
+ }
26
+ }
27
+ exports.DomainCertificate = DomainCertificate;
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tYWluQ2VydGlmaWNhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9uZXR3b3JraW5nL2RvbWFpbkNlcnRpZmljYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUF1QztBQUN2Qyw2Q0FBd0M7QUFDeEMsK0VBRzRDO0FBRTVDLHNFQUErRDtBQUMvRCw0REFBa0U7QUFRbEUsTUFBYSxpQkFBa0IsU0FBUSxzQkFBUztJQUk5QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTZCO1FBQ3JFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLG9DQUFXLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRTtZQUN0RCxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7WUFDNUIsdUJBQXVCLEVBQUUsS0FBSyxDQUFDLHVCQUF1QjtZQUN0RCxVQUFVLEVBQUUsOENBQXFCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7U0FDNUQsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQztRQUV0RCxNQUFNLE9BQU8sR0FBRyxJQUFBLCtCQUFZLEVBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkUsTUFBTSxPQUFPLEdBQUcsSUFBQSxrQ0FBb0IsRUFBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdkQsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSxHQUFHLE9BQU8sZ0JBQWdCLEVBQUU7WUFDOUMsR0FBRyxFQUFFLEdBQUcsT0FBTyxnQkFBZ0I7WUFDL0IsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQzFCLFVBQVUsRUFBRSxPQUFPLENBQUMsY0FBYztTQUNuQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUF2QkQsOENBdUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IENmbk91dHB1dCB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHtcbiAgQ2VydGlmaWNhdGUsXG4gIENlcnRpZmljYXRlVmFsaWRhdGlvblxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNlcnRpZmljYXRlbWFuYWdlclwiO1xuaW1wb3J0IHsgdHlwZSBJSG9zdGVkWm9uZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtcm91dGU1M1wiO1xuaW1wb3J0IHsgdG9QYXNjYWxDYXNlIH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL2NhcGl0YWxpc2VTdHJpbmdcIjtcbmltcG9ydCB7IGdldERvbWFpbkV4cG9ydE5hbWVzIH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL2RvbWFpblR5cGVzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9tYWluQ2VydGlmaWNhdGVQcm9wcyB7XG4gIGRvbWFpbk5hbWU6IHN0cmluZztcbiAgc3ViamVjdEFsdGVybmF0aXZlTmFtZXM/OiBzdHJpbmdbXTtcbiAgaG9zdGVkWm9uZTogSUhvc3RlZFpvbmU7XG59XG5cbmV4cG9ydCBjbGFzcyBEb21haW5DZXJ0aWZpY2F0ZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBjZXJ0aWZpY2F0ZTogQ2VydGlmaWNhdGU7XG4gIHB1YmxpYyByZWFkb25seSBjZXJ0aWZpY2F0ZUFybjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEb21haW5DZXJ0aWZpY2F0ZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMuY2VydGlmaWNhdGUgPSBuZXcgQ2VydGlmaWNhdGUodGhpcywgXCJDZXJ0aWZpY2F0ZVwiLCB7XG4gICAgICBkb21haW5OYW1lOiBwcm9wcy5kb21haW5OYW1lLFxuICAgICAgc3ViamVjdEFsdGVybmF0aXZlTmFtZXM6IHByb3BzLnN1YmplY3RBbHRlcm5hdGl2ZU5hbWVzLFxuICAgICAgdmFsaWRhdGlvbjogQ2VydGlmaWNhdGVWYWxpZGF0aW9uLmZyb21EbnMocHJvcHMuaG9zdGVkWm9uZSlcbiAgICB9KTtcblxuICAgIHRoaXMuY2VydGlmaWNhdGVBcm4gPSB0aGlzLmNlcnRpZmljYXRlLmNlcnRpZmljYXRlQXJuO1xuXG4gICAgY29uc3Qgc2FmZUtleSA9IHRvUGFzY2FsQ2FzZShwcm9wcy5kb21haW5OYW1lLnNwbGl0KFwiLlwiKS5qb2luKFwiXCIpKTtcbiAgICBjb25zdCBleHBvcnRzID0gZ2V0RG9tYWluRXhwb3J0TmFtZXMocHJvcHMuZG9tYWluTmFtZSk7XG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBgJHtzYWZlS2V5fUNlcnRpZmljYXRlQXJuYCwge1xuICAgICAga2V5OiBgJHtzYWZlS2V5fUNlcnRpZmljYXRlQXJuYCxcbiAgICAgIHZhbHVlOiB0aGlzLmNlcnRpZmljYXRlQXJuLFxuICAgICAgZXhwb3J0TmFtZTogZXhwb3J0cy5jZXJ0aWZpY2F0ZUFyblxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -7,12 +7,9 @@ const capitaliseString_1 = require("../../../utils/capitaliseString");
7
7
  const iam_1 = require("../iam");
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
- const safeZoneName = getSafeZoneName(zoneName);
12
+ const safeZoneName = (0, capitaliseString_1.getSafeZoneName)(zoneName);
16
13
  return new HostedZone(stack.getStack(), `${safeZoneName}HostedZone`, {
17
14
  hostedZoneId: hostedZoneId,
18
15
  zoneName: zoneName
@@ -40,7 +37,7 @@ class HostedZone extends constructs_1.Construct {
40
37
  return this.hostedZone || this.importedHostedZone;
41
38
  }
42
39
  safeZoneName() {
43
- return getSafeZoneName(this.zoneName);
40
+ return (0, capitaliseString_1.getSafeZoneName)(this.zoneName);
44
41
  }
45
42
  addHostedZone(zoneName) {
46
43
  this.hostedZone = new aws_route53_1.HostedZone(this, `${this.safeZoneName()}HostedZone`, {
@@ -150,4 +147,4 @@ class HostedZone extends constructs_1.Construct {
150
147
  }
151
148
  }
152
149
  exports.HostedZone = HostedZone;
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9zdGVkWm9uZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9yZXNvdXJjZXMvYXdzL25ldHdvcmtpbmcvaG9zdGVkWm9uZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBdUM7QUFDdkMsNkNBQXlEO0FBQ3pELHNFQUErRDtBQUMvRCxnQ0FBOEI7QUFDOUIsaURBSTZCO0FBQzdCLHlEQWFpQztBQUlqQyxTQUFTLGVBQWUsQ0FBQyxRQUFnQjtJQUN2QyxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3RDLENBQUM7QUFPRCxNQUFhLGlCQUFpQjtJQUM1QixNQUFNLENBQUMsTUFBTSxDQUFDLEtBQWUsRUFBRSxZQUFvQixFQUFFLFFBQWdCO1FBQ25FLE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUvQyxPQUFPLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxHQUFHLFlBQVksWUFBWSxFQUFFO1lBQ25FLFlBQVksRUFBRSxZQUFZO1lBQzFCLFFBQVEsRUFBRSxRQUFRO1NBQ25CLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQVRELDhDQVNDO0FBRUQsTUFBYSxVQUFXLFNBQVEsc0JBQVM7SUFRdkMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFzQjtRQUM5RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztRQUUvQiwyRUFBMkU7UUFDM0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztZ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L0IsSUFBSSxFQUFFLElBQUksQ0FBQyxrQkFBa0I7WUFDN0IsT0FBTyxFQUNMLEtBQUssQ0FBQyxPQUFPLElBQUksa0JBQWtCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUU7WUFDdkUsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO1lBQ3BCLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRztTQUNmLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTVLRCxnQ0E0S0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQ2ZuT3V0cHV0LCBGbiwgU3RhY2ssIFRhZ3MgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IHRvUGFzY2FsQ2FzZSB9IGZyb20gXCIuLi8uLi8uLi91dGlscy9jYXBpdGFsaXNlU3RyaW5nXCI7XG5pbXBvcnQgeyBSb2xlIH0gZnJvbSBcIi4uL2lhbVwiO1xuaW1wb3J0IHtcbiAgT3JnYW5pemF0aW9uUHJpbmNpcGFsLFxuICBQb2xpY3lEb2N1bWVudCxcbiAgUG9saWN5U3RhdGVtZW50XG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQge1xuICBBUmVjb3JkLFxuICB0eXBlIEFSZWNvcmRQcm9wcyxcbiAgQ25hbWVSZWNvcmQsXG4gIHR5cGUgQ25hbWVSZWNvcmRQcm9wcyxcbiAgSG9zdGVkWm9uZSBhcyBBV1NIb3N0ZWRab25lLFxuICB0eXBlIElIb3N0ZWRab25lLFxuICBNeFJlY29yZCxcbiAgdHlwZSBNeFJlY29yZFByb3BzLFxuICBOc1JlY29yZCxcbiAgdHlwZSBOc1JlY29yZFByb3BzLFxuICBUeHRSZWNvcmQsXG4gIHR5cGUgVHh0UmVjb3JkUHJvcHNcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzXCI7XG5cbmltcG9ydCB7IHR5cGUgQXdzU3RhY2sgfSBmcm9tIFwiLi4vYmFzZS9hd3NTdGFja1wiO1xuXG5mdW5jdGlvbiBnZXRTYWZlWm9uZU5hbWUoem9uZU5hbWU6IHN0cmluZykge1xuICByZXR1cm4gem9uZU5hbWUuc3BsaXQoXCIuXCIpLmpvaW4oXCJcIik7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSG9zdGVkWm9uZVByb3BzIHtcbiAgem9uZU5hbWU6IHN0cmluZztcbiAgaG9zdGVkWm9uZUlkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgSG9zdGVkWm9uZUZhY3Rvcnkge1xuICBzdGF0aWMgaW1wb3J0KHN0YWNrOiBBd3NTdGFjaywgaG9zdGVkWm9uZUlkOiBzdHJpbmcsIHpvbmVOYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBzYWZlWm9uZU5hbWUgPSBnZXRTYWZlWm9uZU5hbWUoem9uZU5hbWUpO1xuXG4gICAgcmV0dXJuIG5ldyBIb3N0ZWRab25lKHN0YWNrLmdldFN0YWNrKCksIGAke3NhZmVab25lTmFtZX1Ib3N0ZWRab25lYCwge1xuICAgICAgaG9zdGVkWm9uZUlkOiBob3N0ZWRab25lSWQsXG4gICAgICB6b25lTmFtZTogem9uZU5hbWVcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSG9zdGVkWm9uZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHByaXZhdGUgaG9zdGVkWm9uZSE6IEFXU0hvc3RlZFpvbmU7XG4gIHByaXZhdGUgaG9zdGVkWm9uZUlkITogc3RyaW5nO1xuICBwcml2YXRlIGltcG9ydGVkSG9zdGVkWm9uZSE6IElIb3N0ZWRab25lO1xuICBwcml2YXRlIHpvbmVOYW1lOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBzY29wZTogQ29uc3RydWN0O1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBIb3N0ZWRab25lUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5zY29wZSA9IHNjb3BlO1xuICAgIHRoaXMuem9uZU5hbWUgPSBwcm9wcy56b25lTmFtZTtcblxuICAgIC8vIElmIGEgaG9zdGVkWm9uZUlkIGlzIHByb3ZpZGVkIGltcG9ydCBpdCwgdW5sZXNzIGNyZWF0ZSBhIG5ldyBob3N0ZWQgem9uZVxuICAgIGlmICghcHJvcHMuaG9zdGVkWm9uZUlkKSB7XG4gICAgICB0aGlzLmFkZEhvc3RlZFpvbmUocHJvcHMuem9uZU5hbWUpO1xuICAgICAgdGhpcy5ob3N0ZWRab25lSWQgPSB0aGlzLmhvc3RlZFpvbmUuaG9zdGVkWm9uZUlkO1xuICAgICAgdGhpcy5kZWxlZ2F0ZUhvc3RlZFpvbmUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ob3N0ZWRab25lSWQgPSBwcm9wcy5ob3N0ZWRab25lSWQ7XG4gICAgICB0aGlzLmltcG9ydEhvc3RlZFpvbmUocHJvcHMuem9uZU5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIGdldEludGVybmFsSG9zdGVkWm9uZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ob3N0ZWRab25lIHx8IHRoaXMuaW1wb3J0ZWRIb3N0ZWRab25lO1xuICB9XG5cbiAgc2FmZVpvbmVOYW1lKCkge1xuICAgIHJldHVybiBnZXRTYWZlWm9uZU5hbWUodGhpcy56b25lTmFtZSk7XG4gIH1cblxuICBwcml2YXRlIGFkZEhvc3RlZFpvbmUoem9uZU5hbWU6IHN0cmluZykge1xuICAgIHRoaXMuaG9zdGVkWm9uZSA9IG5ldyBBV1NIb3N0ZWRab25lKFxuICAgICAgdGhpcyxcbiAgICAgIGAke3RoaXMuc2FmZVpvbmVOYW1lKCl9SG9zdGVkWm9uZWAsXG4gICAgICB7XG4gICAgICAgIHpvbmVOYW1lOiB6b25lTmFtZSxcbiAgICAgICAgY29tbWVudDogYEhvc3RlZCBab25lIGZvciAke3pvbmVOYW1lfWBcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBpbXBvcnRIb3N0ZWRab25lKHpvbmVOYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLmltcG9ydGVkSG9zdGVkWm9uZSA9IEFXU0hvc3RlZFpvbmUuZnJvbUhvc3RlZFpvbmVBdHRyaWJ1dGVzKFxuICAgICAgLy8gSG9zdGVkWm9uZS5mcm9tSG9zdGVkWm9uZUF0dHJpYnV0ZXMgZXhwbGljaXRseSBtdXN0IGJlIHBhc3NlZCBhIHN0YWNrIGFzIHBhcmVudCBzY29wZVxuICAgICAgdGhpcy5zY29wZSxcblxuICAgICAgLy8gVXNlIHNhZmVab25lTmFtZSBpbiB0aGUgaWQgc28gd2UgY2FuIHRoZW9yZXRpY2FsbHlcbiAgICAgIC8vICBpbXBvcnQgbXVsdGlwbGUgaG9zdGVkIHpvbmVzIGluIGEgc2luZ2xlIGFwcFxuICAgICAgYCR7dGhpcy5zYWZlWm9uZU5hbWUoKX1JbXBvcnRlZEhvc3RlZFpvbmVgLFxuICAgICAge1xuICAgICAgICBob3N0ZWRab25lSWQ6IHRoaXMuaG9zdGVkWm9uZUlkLFxuICAgICAgICB6b25lTmFtZTogem9uZU5hbWVcbiAgICAgIH1cbiAgICApO1xuXG4gICAgVGFncy5vZih0aGlzLmltcG9ydGVkSG9zdGVkWm9uZSkuYWRkKFxuICAgICAgXCJmamFsbDpjb3N0QWxsb2NhdGlvbjplbnZpcm9ubWVudFwiLFxuICAgICAgXCJtYW5hZ2VtZW50XCJcbiAgICApO1xuICAgIFRhZ3Mub2YodGhpcy5pbXBvcnRlZEhvc3RlZFpvbmUpLmFkZChcbiAgICAgIFwiZmphbGw6Y29zdEFsbG9jYXRpb246c2VydmljZVwiLFxuICAgICAgXCJob3N0ZWRab25lXCJcbiAgICApO1xuICAgIFRhZ3Mub2YodGhpcy5pbXBvcnRlZEhvc3RlZFpvbmUpLmFkZChcbiAgICAgIFwiZmphbGw6Y29zdEFsbG9jYXRpb246ZG9tYWluXCIsXG4gICAgICB6b25lTmFtZVxuICAgICk7XG5cbiAgICAvLyBNYWtlIGV4cG9ydCBuYW1lIHVuaXF1ZSBieSBpbmNsdWRpbmcgdGhlIHN0YWNrIG5hbWUgdG8gYXZvaWQgY29uZmxpY3RzXG4gICAgLy8gd2hlbiBtdWx0aXBsZSBzdGFja3MgaW1wb3J0IHRoZSBzYW1lIGhvc3RlZCB6b25lXG4gICAgY29uc3Qgc3RhY2sgPSBTdGFjay5vZih0aGlzKTtcbiAgICBjb25zdCBzdGFja05hbWUgPSBzdGFjay5zdGFja05hbWU7XG4gICAgY29uc3QgZXhwb3J0TmFtZSA9IGAke3N0YWNrTmFtZX0ke3RoaXMuc2FmZVpvbmVOYW1lKCl9SG9zdGVkWm9uZUlkYDtcblxuICAgIGNvbnN0IHNhZmVLZXkgPSB0b1Bhc2NhbENhc2UodGhpcy5zYWZlWm9uZU5hbWUoKSk7XG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBgJHtzYWZlS2V5fUhvc3RlZFpvbmVJZGAsIHtcbiAgICAgIGtleTogYCR7c2FmZUtleX1Ib3N0ZWRab25lSWRgLFxuICAgICAgdmFsdWU6IHRoaXMuaG9zdGVkWm9uZUlkLFxuICAgICAgZXhwb3J0TmFtZTogZXhwb3J0TmFtZVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWxlZ2F0ZUhvc3RlZFpvbmUoKSB7XG4gICAgY29uc3QgZG9tYWluTGFiZWwgPSB0aGlzLmhvc3RlZFpvbmUuem9uZU5hbWUuc3BsaXQoXCIuXCIpWzBdID8/IFwiZGVmYXVsdFwiO1xuICAgIGNvbnN0IHNhZmVEb21haW5MYWJlbCA9IHRvUGFzY2FsQ2FzZShkb21haW5MYWJlbCk7XG4gICAgY29uc3Qgcm9sZSA9IG5ldyBSb2xlKHRoaXMsIGAke3NhZmVEb21haW5MYWJlbH1EZWxlZ2F0ZUhvc3RlZFpvbmVSb2xlYCwge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgT3JnYW5pemF0aW9uUHJpbmNpcGFsKEZuLmltcG9ydFZhbHVlKFwiT3JnYW5pc2F0aW9uSWRcIikpLFxuICAgICAgcm9sZU5hbWU6IGAke2RvbWFpbkxhYmVsfURlbGVnYXRlSG9zdGVkWm9uZVJvbGVgLFxuICAgICAgaW5saW5lUG9saWNpZXM6IHtcbiAgICAgICAgW1wibGlzdEhvc3RlZFpvbmVzXCJdOiBuZXcgUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBhY3Rpb25zOiBbXCJyb3V0ZTUzOkxpc3RIb3N0ZWRab25lc0J5TmFtZVwiXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF1cbiAgICAgICAgfSksXG4gICAgICAgIFtcImNoYW5nZVJlc291cmNlUmVjb3JkU2V0c1wiXTogbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgYWN0aW9uczogW1wicm91dGU1MzpDaGFuZ2VSZXNvdXJjZVJlY29yZFNldHNcIl0sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgICAgIGBhcm46YXdzOnJvdXRlNTM6Ojpob3N0ZWR6b25lLyR7dGhpcy5ob3N0ZWRab25lLmhvc3RlZFpvbmVJZH1gXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5ob3N0ZWRab25lLmdyYW50RGVsZWdhdGlvbihyb2xlKTtcblxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgXCJEZWxlZ2F0ZUhvc3RlZFpvbmVSb2xlQXJuXCIsIHtcbiAgICAgIGtleTogYCR7c2FmZURvbWFpbkxhYmVsfURlbGVnYXRlSG9zdGVkWm9uZVJvbGVBcm5gLFxuICAgICAgdmFsdWU6IHJvbGUucm9sZUFybixcbiAgICAgIGV4cG9ydE5hbWU6IGAke2RvbWFpbkxhYmVsfURlbGVnYXRlSG9zdGVkWm9uZVJvbGVBcm5gXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYWRkQVJlY29yZChwcm9wczogT21pdDxBUmVjb3JkUHJvcHMsIFwiem9uZVwiPikge1xuICAgIG5ldyBBUmVjb3JkKHRoaXMsIFwiQVJlY29yZFwiLCB7XG4gICAgICB6b25lOiB0aGlzLmltcG9ydGVkSG9zdGVkWm9uZSxcbiAgICAgIHJlY29yZE5hbWU6IHByb3BzLnJlY29yZE5hbWUsXG4gICAgICBjb21tZW50OlxuICAgICAgICBwcm9wcy5jb21tZW50IHx8IGBBIFJlY29yZCBmb3IgJHt0aGlzLmltcG9ydGVkSG9zdGVkWm9uZS56b25lTmFtZX1gLFxuICAgICAgdGFyZ2V0OiBwcm9wcy50YXJnZXQsXG4gICAgICB0dGw6IHByb3BzLnR0bFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFkZENuYW1lKHByb3BzOiBPbWl0PENuYW1lUmVjb3JkUHJvcHMsIFwiem9uZVwiPikge1xuICAgIG5ldyBDbmFtZVJlY29yZCh0aGlzLCBcIkNuYW1lUmVjb3JkXCIsIHtcbiAgICAgIGRvbWFpbk5hbWU6IHByb3BzLmRvbWFpbk5hbWUsXG4gICAgICB6b25lOiB0aGlzLmltcG9ydGVkSG9zdGVkWm9uZSxcbiAgICAgIGNvbW1lbnQ6XG4gICAgICAgIHByb3BzLmNvbW1lbnQgfHwgYENOQU1FIFJlY29yZCBmb3IgJHt0aGlzLmltcG9ydGVkSG9zdGVkWm9uZS56b25lTmFtZX1gLFxuICAgICAgdHRsOiBwcm9wcy50dGxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRNeChwcm9wczogT21pdDxNeFJlY29yZFByb3BzLCBcInpvbmVcIj4pIHtcbiAgICBuZXcgTXhSZWNvcmQodGhpcywgXCJNeFJlY29yZFwiLCB7XG4gICAgICB6b25lOiB0aGlzLmltcG9ydGVkSG9zdGVkWm9uZSxcbiAgICAgIGNvbW1lbnQ6XG4gICAgICAgIHByb3BzLmNvbW1lbnQgfHwgYE1YIFJlY29yZCBmb3IgJHt0aGlzLmltcG9ydGVkSG9zdGVkWm9uZS56b25lTmFtZX1gLFxuICAgICAgdmFsdWVzOiBwcm9wcy52YWx1ZXMsXG4gICAgICB0dGw6IHByb3BzLnR0bFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFkZE5TKHByb3BzOiBPbWl0PE5zUmVjb3JkUHJvcHMsIFwiem9uZVwiPikge1xuICAgIG5ldyBOc1JlY29yZCh0aGlzLCBcIk5zUmVjb3JkXCIsIHtcbiAgICAgIHpvbmU6IHRoaXMuaW1wb3J0ZWRIb3N0ZWRab25lLFxuICAgICAgY29tbWVudDpcbiAgICAgICAgcHJvcHMuY29tbWVudCB8fCBgTlMgUmVjb3JkIGZvciAke3RoaXMuaW1wb3J0ZWRIb3N0ZWRab25lLnpvbmVOYW1lfWAsXG4gICAgICB2YWx1ZXM6IHByb3BzLnZhbHVlcyxcbiAgICAgIHR0bDogcHJvcHMudHRsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYWRkVHh0KHByb3BzOiBPbWl0PFR4dFJlY29yZFByb3BzLCBcInpvbmVcIj4pIHtcbiAgICBuZXcgVHh0UmVjb3JkKHRoaXMsIFwiVHh0UmVjb3JkXCIsIHtcbiAgICAgIHpvbmU6IHRoaXMuaW1wb3J0ZWRIb3N0ZWRab25lLFxuICAgICAgY29tbWVudDpcbiAgICAgICAgcHJvcHMuY29tbWVudCB8fCBgVFhUIFJlY29yZCBmb3IgJHt0aGlzLmltcG9ydGVkSG9zdGVkWm9uZS56b25lTmFtZX1gLFxuICAgICAgdmFsdWVzOiBwcm9wcy52YWx1ZXMsXG4gICAgICB0dGw6IHByb3BzLnR0bFxuICAgIH0pO1xuICB9XG59XG4iXX0=
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9zdGVkWm9uZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9yZXNvdXJjZXMvYXdzL25ldHdvcmtpbmcvaG9zdGVkWm9uZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBdUM7QUFDdkMsNkNBQXlEO0FBQ3pELHNFQUFnRjtBQUNoRixnQ0FBOEI7QUFDOUIsaURBSTZCO0FBQzdCLHlEQWFpQztBQVNqQyxNQUFhLGlCQUFpQjtJQUM1QixNQUFNLENBQUMsTUFBTSxDQUFDLEtBQWUsRUFBRSxZQUFvQixFQUFFLFFBQWdCO1FBQ25FLE1BQU0sWUFBWSxHQUFHLElBQUEsa0NBQWUsRUFBQyxRQUFRLENBQUMsQ0FBQztRQUUvQyxPQUFPLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxHQUFHLFlBQVksWUFBWSxFQUFFO1lBQ25FLFlBQVksRUFBRSxZQUFZO1lBQzFCLFFBQVEsRUFBRSxRQUFRO1NBQ25CLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQVRELDhDQVNDO0FBRUQsTUFBYSxVQUFXLFNBQVEsc0JBQVM7SUFRdkMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFzQjtRQUM5RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztRQUUvQiwyRUFBMkU7UUFDM0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNuQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDO1lBQ2pELElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzVCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEMsQ0FBQztJQUNILENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNwRCxDQUFDO0lBRUQsWUFBWTtRQUNWLE9BQU8sSUFBQSxrQ0FBZSxFQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRU8sYUFBYSxDQUFDLFFBQWdCO1FBQ3BDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSx3QkFBYSxDQUNqQyxJQUFJLEVBQ0osR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLFlBQVksRUFDbEM7WUFDRSxRQUFRLEVBQUUsUUFBUTtZQUNsQixPQUFPLEVBQUUsbUJBQW1CLFFBQVEsRUFBRTtTQUN2QyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsUUFBZ0I7UUFDdkMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLHdCQUFhLENBQUMsd0JBQXdCO1FBQzlELHdGQUF3RjtRQUN4RixJQUFJLENBQUMsS0FBSztRQUVWLHFEQUFxRDtRQUNyRCxnREFBZ0Q7UUFDaEQsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLG9CQUFvQixFQUMxQztZQUNFLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMvQixRQUFRLEVBQUUsUUFBUTtTQUNuQixDQUNGLENBQUM7UUFFRixrQkFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxHQUFHLENBQ2xDLGtDQUFrQyxFQUNsQyxZQUFZLENBQ2IsQ0FBQztRQUNGLGtCQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEdBQUcsQ0FDbEMsOEJBQThCLEVBQzlCLFlBQVksQ0FDYixDQUFDO1FBQ0Ysa0JBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsR0FBRyxDQUNsQyw2QkFBNkIsRUFDN0IsUUFBUSxDQUNULENBQUM7UUFFRix5RUFBeUU7UUFDekUsbURBQW1EO1FBQ25ELE1BQU0sS0FBSyxHQUFHLG1CQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDbEMsTUFBTSxVQUFVLEdBQUcsR0FBRyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxjQUFjLENBQUM7UUFFcEUsTUFBTSxPQUFPLEdBQUcsSUFBQSwrQkFBWSxFQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxPQUFPLGNBQWMsRUFBRTtZQUM1QyxHQUFHLEVBQUUsR0FBRyxPQUFPLGNBQWM7WUFDN0IsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQ3hCLFVBQVUsRUFBRSxVQUFVO1NBQ3ZCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxrQkFBa0I7UUFDeEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQztRQUN4RSxNQUFNLGVBQWUsR0FBRyxJQUFBLCtCQUFZLEVBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxVQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsZUFBZSx3QkFBd0IsRUFBRTtZQUN0RSxTQUFTLEVBQUUsSUFBSSwrQkFBcUIsQ0FBQyxnQkFBRSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3RFLFFBQVEsRUFBRSxHQUFHLFdBQVcsd0JBQXdCO1lBQ2hELGNBQWMsRUFBRTtnQkFDZCxDQUFDLGlCQUFpQixDQUFDLEVBQUUsSUFBSSx3QkFBYyxDQUFDO29CQUN0QyxVQUFVLEVBQUU7d0JBQ1YsSUFBSSx5QkFBZSxDQUFDOzRCQUNsQixPQUFPLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQzs0QkFDMUMsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO3lCQUNqQixDQUFDO3FCQUNIO2lCQUNGLENBQUM7Z0JBQ0YsQ0FBQywwQkFBMEIsQ0FBQyxFQUFFLElBQUksd0JBQWMsQ0FBQztvQkFDL0MsVUFBVSxFQUFFO3dCQUNWLElBQUkseUJBQWUsQ0FBQzs0QkFDbEIsT0FBTyxFQUFFLENBQUMsa0NBQWtDLENBQUM7NEJBQzdDLFNBQVMsRUFBRTtnQ0FDVCxnQ0FBZ0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUU7NkJBQy9EO3lCQUNGLENBQUM7cUJBQ0g7aUJBQ0YsQ0FBQzthQUNIO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdEMsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSwyQkFBMkIsRUFBRTtZQUMvQyxHQUFHLEVBQUUsR0FBRyxlQUFlLDJCQUEyQjtZQUNsRCxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDbkIsVUFBVSxFQUFFLEdBQUcsV0FBVywyQkFBMkI7U0FDdEQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLFVBQVUsQ0FBQyxLQUFpQztRQUNqRCxJQUFJLHFCQUFPLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRTtZQUMzQixJQUFJLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtZQUM3QixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7WUFDNUIsT0FBTyxFQUNMLEtBQUssQ0FBQyxPQUFPLElBQUksZ0JBQWdCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUU7WUFDckUsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO1lBQ3BCLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRztTQUNmLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxRQUFRLENBQUMsS0FBcUM7UUFDbkQsSUFBSSx5QkFBVyxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUU7WUFDbkMsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVO1lBQzVCLElBQUksRUFBRSxJQUFJLENBQUMsa0JBQWtCO1lBQzdCLE9BQU8sRUFDTCxLQUFLLENBQUMsT0FBTyxJQUFJLG9CQUFvQixJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFO1lBQ3pFLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRztTQUNmLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBa0M7UUFDN0MsSUFBSSxzQkFBUSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDN0IsSUFBSSxFQUFFLElBQUksQ0FBQyxrQkFBa0I7WUFDN0IsT0FBTyxFQUNMLEtBQUssQ0FBQyxPQUFPLElBQUksaUJBQWlCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUU7WUFDdEUsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO1lBQ3BCLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRztTQUNmLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBa0M7UUFDN0MsSUFBSSxzQkFBUSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDN0IsSUFBSSxFQUFFLElBQUksQ0FBQyxrQkFBa0I7WUFDN0IsT0FBTyxFQUNMLEtBQUssQ0FBQyxPQUFPLElBQUksaUJBQWlCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUU7WUFDdEUsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO1lBQ3BCLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRztTQUNmLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxNQUFNLENBQUMsS0FBbUM7UUFDL0MsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUU7WUFDL0IsSUFBSSxFQUFFLElBQUksQ0FBQyxrQkFBa0I7WUFDN0IsT0FBTyxFQUNMLEtBQUssQ0FBQyxPQUFPLElBQUksa0JBQWtCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUU7WUFDdkUsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO1lBQ3BCLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRztTQUNmLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTVLRCxnQ0E0S0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQ2ZuT3V0cHV0LCBGbiwgU3RhY2ssIFRhZ3MgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IHRvUGFzY2FsQ2FzZSwgZ2V0U2FmZVpvbmVOYW1lIH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL2NhcGl0YWxpc2VTdHJpbmdcIjtcbmltcG9ydCB7IFJvbGUgfSBmcm9tIFwiLi4vaWFtXCI7XG5pbXBvcnQge1xuICBPcmdhbml6YXRpb25QcmluY2lwYWwsXG4gIFBvbGljeURvY3VtZW50LFxuICBQb2xpY3lTdGF0ZW1lbnRcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7XG4gIEFSZWNvcmQsXG4gIHR5cGUgQVJlY29yZFByb3BzLFxuICBDbmFtZVJlY29yZCxcbiAgdHlwZSBDbmFtZVJlY29yZFByb3BzLFxuICBIb3N0ZWRab25lIGFzIEFXU0hvc3RlZFpvbmUsXG4gIHR5cGUgSUhvc3RlZFpvbmUsXG4gIE14UmVjb3JkLFxuICB0eXBlIE14UmVjb3JkUHJvcHMsXG4gIE5zUmVjb3JkLFxuICB0eXBlIE5zUmVjb3JkUHJvcHMsXG4gIFR4dFJlY29yZCxcbiAgdHlwZSBUeHRSZWNvcmRQcm9wc1xufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJvdXRlNTNcIjtcblxuaW1wb3J0IHsgdHlwZSBBd3NTdGFjayB9IGZyb20gXCIuLi9iYXNlL2F3c1N0YWNrXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSG9zdGVkWm9uZVByb3BzIHtcbiAgem9uZU5hbWU6IHN0cmluZztcbiAgaG9zdGVkWm9uZUlkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgSG9zdGVkWm9uZUZhY3Rvcnkge1xuICBzdGF0aWMgaW1wb3J0KHN0YWNrOiBBd3NTdGFjaywgaG9zdGVkWm9uZUlkOiBzdHJpbmcsIHpvbmVOYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBzYWZlWm9uZU5hbWUgPSBnZXRTYWZlWm9uZU5hbWUoem9uZU5hbWUpO1xuXG4gICAgcmV0dXJuIG5ldyBIb3N0ZWRab25lKHN0YWNrLmdldFN0YWNrKCksIGAke3NhZmVab25lTmFtZX1Ib3N0ZWRab25lYCwge1xuICAgICAgaG9zdGVkWm9uZUlkOiBob3N0ZWRab25lSWQsXG4gICAgICB6b25lTmFtZTogem9uZU5hbWVcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSG9zdGVkWm9uZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHByaXZhdGUgaG9zdGVkWm9uZSE6IEFXU0hvc3RlZFpvbmU7XG4gIHByaXZhdGUgaG9zdGVkWm9uZUlkITogc3RyaW5nO1xuICBwcml2YXRlIGltcG9ydGVkSG9zdGVkWm9uZSE6IElIb3N0ZWRab25lO1xuICBwcml2YXRlIHpvbmVOYW1lOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBzY29wZTogQ29uc3RydWN0O1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBIb3N0ZWRab25lUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5zY29wZSA9IHNjb3BlO1xuICAgIHRoaXMuem9uZU5hbWUgPSBwcm9wcy56b25lTmFtZTtcblxuICAgIC8vIElmIGEgaG9zdGVkWm9uZUlkIGlzIHByb3ZpZGVkIGltcG9ydCBpdCwgdW5sZXNzIGNyZWF0ZSBhIG5ldyBob3N0ZWQgem9uZVxuICAgIGlmICghcHJvcHMuaG9zdGVkWm9uZUlkKSB7XG4gICAgICB0aGlzLmFkZEhvc3RlZFpvbmUocHJvcHMuem9uZU5hbWUpO1xuICAgICAgdGhpcy5ob3N0ZWRab25lSWQgPSB0aGlzLmhvc3RlZFpvbmUuaG9zdGVkWm9uZUlkO1xuICAgICAgdGhpcy5kZWxlZ2F0ZUhvc3RlZFpvbmUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ob3N0ZWRab25lSWQgPSBwcm9wcy5ob3N0ZWRab25lSWQ7XG4gICAgICB0aGlzLmltcG9ydEhvc3RlZFpvbmUocHJvcHMuem9uZU5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIGdldEludGVybmFsSG9zdGVkWm9uZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ob3N0ZWRab25lIHx8IHRoaXMuaW1wb3J0ZWRIb3N0ZWRab25lO1xuICB9XG5cbiAgc2FmZVpvbmVOYW1lKCkge1xuICAgIHJldHVybiBnZXRTYWZlWm9uZU5hbWUodGhpcy56b25lTmFtZSk7XG4gIH1cblxuICBwcml2YXRlIGFkZEhvc3RlZFpvbmUoem9uZU5hbWU6IHN0cmluZykge1xuICAgIHRoaXMuaG9zdGVkWm9uZSA9IG5ldyBBV1NIb3N0ZWRab25lKFxuICAgICAgdGhpcyxcbiAgICAgIGAke3RoaXMuc2FmZVpvbmVOYW1lKCl9SG9zdGVkWm9uZWAsXG4gICAgICB7XG4gICAgICAgIHpvbmVOYW1lOiB6b25lTmFtZSxcbiAgICAgICAgY29tbWVudDogYEhvc3RlZCBab25lIGZvciAke3pvbmVOYW1lfWBcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBpbXBvcnRIb3N0ZWRab25lKHpvbmVOYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLmltcG9ydGVkSG9zdGVkWm9uZSA9IEFXU0hvc3RlZFpvbmUuZnJvbUhvc3RlZFpvbmVBdHRyaWJ1dGVzKFxuICAgICAgLy8gSG9zdGVkWm9uZS5mcm9tSG9zdGVkWm9uZUF0dHJpYnV0ZXMgZXhwbGljaXRseSBtdXN0IGJlIHBhc3NlZCBhIHN0YWNrIGFzIHBhcmVudCBzY29wZVxuICAgICAgdGhpcy5zY29wZSxcblxuICAgICAgLy8gVXNlIHNhZmVab25lTmFtZSBpbiB0aGUgaWQgc28gd2UgY2FuIHRoZW9yZXRpY2FsbHlcbiAgICAgIC8vICBpbXBvcnQgbXVsdGlwbGUgaG9zdGVkIHpvbmVzIGluIGEgc2luZ2xlIGFwcFxuICAgICAgYCR7dGhpcy5zYWZlWm9uZU5hbWUoKX1JbXBvcnRlZEhvc3RlZFpvbmVgLFxuICAgICAge1xuICAgICAgICBob3N0ZWRab25lSWQ6IHRoaXMuaG9zdGVkWm9uZUlkLFxuICAgICAgICB6b25lTmFtZTogem9uZU5hbWVcbiAgICAgIH1cbiAgICApO1xuXG4gICAgVGFncy5vZih0aGlzLmltcG9ydGVkSG9zdGVkWm9uZSkuYWRkKFxuICAgICAgXCJmamFsbDpjb3N0QWxsb2NhdGlvbjplbnZpcm9ubWVudFwiLFxuICAgICAgXCJtYW5hZ2VtZW50XCJcbiAgICApO1xuICAgIFRhZ3Mub2YodGhpcy5pbXBvcnRlZEhvc3RlZFpvbmUpLmFkZChcbiAgICAgIFwiZmphbGw6Y29zdEFsbG9jYXRpb246c2VydmljZVwiLFxuICAgICAgXCJob3N0ZWRab25lXCJcbiAgICApO1xuICAgIFRhZ3Mub2YodGhpcy5pbXBvcnRlZEhvc3RlZFpvbmUpLmFkZChcbiAgICAgIFwiZmphbGw6Y29zdEFsbG9jYXRpb246ZG9tYWluXCIsXG4gICAgICB6b25lTmFtZVxuICAgICk7XG5cbiAgICAvLyBNYWtlIGV4cG9ydCBuYW1lIHVuaXF1ZSBieSBpbmNsdWRpbmcgdGhlIHN0YWNrIG5hbWUgdG8gYXZvaWQgY29uZmxpY3RzXG4gICAgLy8gd2hlbiBtdWx0aXBsZSBzdGFja3MgaW1wb3J0IHRoZSBzYW1lIGhvc3RlZCB6b25lXG4gICAgY29uc3Qgc3RhY2sgPSBTdGFjay5vZih0aGlzKTtcbiAgICBjb25zdCBzdGFja05hbWUgPSBzdGFjay5zdGFja05hbWU7XG4gICAgY29uc3QgZXhwb3J0TmFtZSA9IGAke3N0YWNrTmFtZX0ke3RoaXMuc2FmZVpvbmVOYW1lKCl9SG9zdGVkWm9uZUlkYDtcblxuICAgIGNvbnN0IHNhZmVLZXkgPSB0b1Bhc2NhbENhc2UodGhpcy5zYWZlWm9uZU5hbWUoKSk7XG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBgJHtzYWZlS2V5fUhvc3RlZFpvbmVJZGAsIHtcbiAgICAgIGtleTogYCR7c2FmZUtleX1Ib3N0ZWRab25lSWRgLFxuICAgICAgdmFsdWU6IHRoaXMuaG9zdGVkWm9uZUlkLFxuICAgICAgZXhwb3J0TmFtZTogZXhwb3J0TmFtZVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWxlZ2F0ZUhvc3RlZFpvbmUoKSB7XG4gICAgY29uc3QgZG9tYWluTGFiZWwgPSB0aGlzLmhvc3RlZFpvbmUuem9uZU5hbWUuc3BsaXQoXCIuXCIpWzBdID8/IFwiZGVmYXVsdFwiO1xuICAgIGNvbnN0IHNhZmVEb21haW5MYWJlbCA9IHRvUGFzY2FsQ2FzZShkb21haW5MYWJlbCk7XG4gICAgY29uc3Qgcm9sZSA9IG5ldyBSb2xlKHRoaXMsIGAke3NhZmVEb21haW5MYWJlbH1EZWxlZ2F0ZUhvc3RlZFpvbmVSb2xlYCwge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgT3JnYW5pemF0aW9uUHJpbmNpcGFsKEZuLmltcG9ydFZhbHVlKFwiT3JnYW5pc2F0aW9uSWRcIikpLFxuICAgICAgcm9sZU5hbWU6IGAke2RvbWFpbkxhYmVsfURlbGVnYXRlSG9zdGVkWm9uZVJvbGVgLFxuICAgICAgaW5saW5lUG9saWNpZXM6IHtcbiAgICAgICAgW1wibGlzdEhvc3RlZFpvbmVzXCJdOiBuZXcgUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBhY3Rpb25zOiBbXCJyb3V0ZTUzOkxpc3RIb3N0ZWRab25lc0J5TmFtZVwiXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF1cbiAgICAgICAgfSksXG4gICAgICAgIFtcImNoYW5nZVJlc291cmNlUmVjb3JkU2V0c1wiXTogbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgYWN0aW9uczogW1wicm91dGU1MzpDaGFuZ2VSZXNvdXJjZVJlY29yZFNldHNcIl0sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgICAgIGBhcm46YXdzOnJvdXRlNTM6Ojpob3N0ZWR6b25lLyR7dGhpcy5ob3N0ZWRab25lLmhvc3RlZFpvbmVJZH1gXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5ob3N0ZWRab25lLmdyYW50RGVsZWdhdGlvbihyb2xlKTtcblxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgXCJEZWxlZ2F0ZUhvc3RlZFpvbmVSb2xlQXJuXCIsIHtcbiAgICAgIGtleTogYCR7c2FmZURvbWFpbkxhYmVsfURlbGVnYXRlSG9zdGVkWm9uZVJvbGVBcm5gLFxuICAgICAgdmFsdWU6IHJvbGUucm9sZUFybixcbiAgICAgIGV4cG9ydE5hbWU6IGAke2RvbWFpbkxhYmVsfURlbGVnYXRlSG9zdGVkWm9uZVJvbGVBcm5gXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYWRkQVJlY29yZChwcm9wczogT21pdDxBUmVjb3JkUHJvcHMsIFwiem9uZVwiPikge1xuICAgIG5ldyBBUmVjb3JkKHRoaXMsIFwiQVJlY29yZFwiLCB7XG4gICAgICB6b25lOiB0aGlzLmltcG9ydGVkSG9zdGVkWm9uZSxcbiAgICAgIHJlY29yZE5hbWU6IHByb3BzLnJlY29yZE5hbWUsXG4gICAgICBjb21tZW50OlxuICAgICAgICBwcm9wcy5jb21tZW50IHx8IGBBIFJlY29yZCBmb3IgJHt0aGlzLmltcG9ydGVkSG9zdGVkWm9uZS56b25lTmFtZX1gLFxuICAgICAgdGFyZ2V0OiBwcm9wcy50YXJnZXQsXG4gICAgICB0dGw6IHByb3BzLnR0bFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFkZENuYW1lKHByb3BzOiBPbWl0PENuYW1lUmVjb3JkUHJvcHMsIFwiem9uZVwiPikge1xuICAgIG5ldyBDbmFtZVJlY29yZCh0aGlzLCBcIkNuYW1lUmVjb3JkXCIsIHtcbiAgICAgIGRvbWFpbk5hbWU6IHByb3BzLmRvbWFpbk5hbWUsXG4gICAgICB6b25lOiB0aGlzLmltcG9ydGVkSG9zdGVkWm9uZSxcbiAgICAgIGNvbW1lbnQ6XG4gICAgICAgIHByb3BzLmNvbW1lbnQgfHwgYENOQU1FIFJlY29yZCBmb3IgJHt0aGlzLmltcG9ydGVkSG9zdGVkWm9uZS56b25lTmFtZX1gLFxuICAgICAgdHRsOiBwcm9wcy50dGxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRNeChwcm9wczogT21pdDxNeFJlY29yZFByb3BzLCBcInpvbmVcIj4pIHtcbiAgICBuZXcgTXhSZWNvcmQodGhpcywgXCJNeFJlY29yZFwiLCB7XG4gICAgICB6b25lOiB0aGlzLmltcG9ydGVkSG9zdGVkWm9uZSxcbiAgICAgIGNvbW1lbnQ6XG4gICAgICAgIHByb3BzLmNvbW1lbnQgfHwgYE1YIFJlY29yZCBmb3IgJHt0aGlzLmltcG9ydGVkSG9zdGVkWm9uZS56b25lTmFtZX1gLFxuICAgICAgdmFsdWVzOiBwcm9wcy52YWx1ZXMsXG4gICAgICB0dGw6IHByb3BzLnR0bFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFkZE5TKHByb3BzOiBPbWl0PE5zUmVjb3JkUHJvcHMsIFwiem9uZVwiPikge1xuICAgIG5ldyBOc1JlY29yZCh0aGlzLCBcIk5zUmVjb3JkXCIsIHtcbiAgICAgIHpvbmU6IHRoaXMuaW1wb3J0ZWRIb3N0ZWRab25lLFxuICAgICAgY29tbWVudDpcbiAgICAgICAgcHJvcHMuY29tbWVudCB8fCBgTlMgUmVjb3JkIGZvciAke3RoaXMuaW1wb3J0ZWRIb3N0ZWRab25lLnpvbmVOYW1lfWAsXG4gICAgICB2YWx1ZXM6IHByb3BzLnZhbHVlcyxcbiAgICAgIHR0bDogcHJvcHMudHRsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYWRkVHh0KHByb3BzOiBPbWl0PFR4dFJlY29yZFByb3BzLCBcInpvbmVcIj4pIHtcbiAgICBuZXcgVHh0UmVjb3JkKHRoaXMsIFwiVHh0UmVjb3JkXCIsIHtcbiAgICAgIHpvbmU6IHRoaXMuaW1wb3J0ZWRIb3N0ZWRab25lLFxuICAgICAgY29tbWVudDpcbiAgICAgICAgcHJvcHMuY29tbWVudCB8fCBgVFhUIFJlY29yZCBmb3IgJHt0aGlzLmltcG9ydGVkSG9zdGVkWm9uZS56b25lTmFtZX1gLFxuICAgICAgdmFsdWVzOiBwcm9wcy52YWx1ZXMsXG4gICAgICB0dGw6IHByb3BzLnR0bFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -1,3 +1,5 @@
1
+ export * from "./domain";
2
+ export * from "./domainCertificate";
1
3
  export * from "./hostedZone";
2
4
  export * from "./ipam";
3
5
  export * from "./ipamPool";
@@ -14,9 +14,11 @@ 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("./domain"), exports);
18
+ __exportStar(require("./domainCertificate"), exports);
17
19
  __exportStar(require("./hostedZone"), exports);
18
20
  __exportStar(require("./ipam"), exports);
19
21
  __exportStar(require("./ipamPool"), exports);
20
22
  __exportStar(require("./securityGroup"), exports);
21
23
  __exportStar(require("./vpc"), exports);
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9uZXR3b3JraW5nL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBNkI7QUFDN0IseUNBQXVCO0FBQ3ZCLDZDQUEyQjtBQUMzQixrREFBZ0M7QUFDaEMsd0NBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vaG9zdGVkWm9uZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vaXBhbVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vaXBhbVBvb2xcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NlY3VyaXR5R3JvdXBcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3ZwY1wiO1xuIl19
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9uZXR3b3JraW5nL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBeUI7QUFDekIsc0RBQW9DO0FBQ3BDLCtDQUE2QjtBQUM3Qix5Q0FBdUI7QUFDdkIsNkNBQTJCO0FBQzNCLGtEQUFnQztBQUNoQyx3Q0FBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9kb21haW5cIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RvbWFpbkNlcnRpZmljYXRlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ob3N0ZWRab25lXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9pcGFtXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9pcGFtUG9vbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc2VjdXJpdHlHcm91cFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdnBjXCI7XG4iXX0=
@@ -1,18 +1 @@
1
- export declare function capitaliseString(string: string): string;
2
- /**
3
- * Convert a kebab-case or snake_case name to PascalCase.
4
- * e.g., "my-app" -> "MyApp", "my_app" -> "MyApp"
5
- */
6
- export declare function toPascalCase(name: string): string;
7
- /**
8
- * Convert any case (PascalCase, camelCase, kebab-case, snake_case) to kebab-case.
9
- * Three-pass regex: split acronyms, split camel boundaries, replace separators.
10
- * e.g., "MyApp" -> "my-app", "AWSLambda" -> "aws-lambda", "myApp" -> "my-app"
11
- */
12
- export declare function toKebab(str: string): string;
13
- /**
14
- * Convert a name to a valid RDS database name (snake_case).
15
- * RDS API allows letters, numbers, and underscores for PostgreSQL/MySQL DatabaseName.
16
- * Hyphens are rejected, so convert them to underscores.
17
- */
18
- export declare function toValidDatabaseName(name: string): string;
1
+ export { capitalise as capitaliseString, toPascalCase, toKebab, toValidDatabaseName, getSafeZoneName } from "@fjall/util";
@@ -1,39 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.capitaliseString = capitaliseString;
4
- exports.toPascalCase = toPascalCase;
5
- exports.toKebab = toKebab;
6
- exports.toValidDatabaseName = toValidDatabaseName;
7
- function capitaliseString(string) {
8
- return String(string).charAt(0).toUpperCase() + String(string).slice(1);
9
- }
10
- /**
11
- * Convert a kebab-case or snake_case name to PascalCase.
12
- * e.g., "my-app" -> "MyApp", "my_app" -> "MyApp"
13
- */
14
- function toPascalCase(name) {
15
- return name
16
- .replace(/[-_](.)/g, (_, c) => c.toUpperCase())
17
- .replace(/^./, (c) => c.toUpperCase());
18
- }
19
- /**
20
- * Convert any case (PascalCase, camelCase, kebab-case, snake_case) to kebab-case.
21
- * Three-pass regex: split acronyms, split camel boundaries, replace separators.
22
- * e.g., "MyApp" -> "my-app", "AWSLambda" -> "aws-lambda", "myApp" -> "my-app"
23
- */
24
- function toKebab(str) {
25
- return str
26
- .replace(/([A-Z]+)([A-Z][a-z])/g, "$1-$2")
27
- .replace(/([a-z\d])([A-Z])/g, "$1-$2")
28
- .replace(/[\s_]+/g, "-")
29
- .toLowerCase();
30
- }
31
- /**
32
- * Convert a name to a valid RDS database name (snake_case).
33
- * RDS API allows letters, numbers, and underscores for PostgreSQL/MySQL DatabaseName.
34
- * Hyphens are rejected, so convert them to underscores.
35
- */
36
- function toValidDatabaseName(name) {
37
- return toKebab(name).replace(/-/g, "_");
38
- }
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FwaXRhbGlzZVN0cmluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi91dGlscy9jYXBpdGFsaXNlU3RyaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNENBRUM7QUFNRCxvQ0FJQztBQU9ELDBCQU1DO0FBT0Qsa0RBRUM7QUFsQ0QsU0FBZ0IsZ0JBQWdCLENBQUMsTUFBYztJQUM3QyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxRSxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0IsWUFBWSxDQUFDLElBQVk7SUFDdkMsT0FBTyxJQUFJO1NBQ1IsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUM5QyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztBQUMzQyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLE9BQU8sQ0FBQyxHQUFXO0lBQ2pDLE9BQU8sR0FBRztTQUNQLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxPQUFPLENBQUM7U0FDekMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLE9BQU8sQ0FBQztTQUNyQyxPQUFPLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQztTQUN2QixXQUFXLEVBQUUsQ0FBQztBQUNuQixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLG1CQUFtQixDQUFDLElBQVk7SUFDOUMsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGNhcGl0YWxpc2VTdHJpbmcoc3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gU3RyaW5nKHN0cmluZykuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBTdHJpbmcoc3RyaW5nKS5zbGljZSgxKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEga2ViYWItY2FzZSBvciBzbmFrZV9jYXNlIG5hbWUgdG8gUGFzY2FsQ2FzZS5cbiAqIGUuZy4sIFwibXktYXBwXCIgLT4gXCJNeUFwcFwiLCBcIm15X2FwcFwiIC0+IFwiTXlBcHBcIlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9QYXNjYWxDYXNlKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBuYW1lXG4gICAgLnJlcGxhY2UoL1stX10oLikvZywgKF8sIGMpID0+IGMudG9VcHBlckNhc2UoKSlcbiAgICAucmVwbGFjZSgvXi4vLCAoYykgPT4gYy50b1VwcGVyQ2FzZSgpKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGFueSBjYXNlIChQYXNjYWxDYXNlLCBjYW1lbENhc2UsIGtlYmFiLWNhc2UsIHNuYWtlX2Nhc2UpIHRvIGtlYmFiLWNhc2UuXG4gKiBUaHJlZS1wYXNzIHJlZ2V4OiBzcGxpdCBhY3Jvbnltcywgc3BsaXQgY2FtZWwgYm91bmRhcmllcywgcmVwbGFjZSBzZXBhcmF0b3JzLlxuICogZS5nLiwgXCJNeUFwcFwiIC0+IFwibXktYXBwXCIsIFwiQVdTTGFtYmRhXCIgLT4gXCJhd3MtbGFtYmRhXCIsIFwibXlBcHBcIiAtPiBcIm15LWFwcFwiXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0tlYmFiKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0clxuICAgIC5yZXBsYWNlKC8oW0EtWl0rKShbQS1aXVthLXpdKS9nLCBcIiQxLSQyXCIpXG4gICAgLnJlcGxhY2UoLyhbYS16XFxkXSkoW0EtWl0pL2csIFwiJDEtJDJcIilcbiAgICAucmVwbGFjZSgvW1xcc19dKy9nLCBcIi1cIilcbiAgICAudG9Mb3dlckNhc2UoKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgbmFtZSB0byBhIHZhbGlkIFJEUyBkYXRhYmFzZSBuYW1lIChzbmFrZV9jYXNlKS5cbiAqIFJEUyBBUEkgYWxsb3dzIGxldHRlcnMsIG51bWJlcnMsIGFuZCB1bmRlcnNjb3JlcyBmb3IgUG9zdGdyZVNRTC9NeVNRTCBEYXRhYmFzZU5hbWUuXG4gKiBIeXBoZW5zIGFyZSByZWplY3RlZCwgc28gY29udmVydCB0aGVtIHRvIHVuZGVyc2NvcmVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9WYWxpZERhdGFiYXNlTmFtZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdG9LZWJhYihuYW1lKS5yZXBsYWNlKC8tL2csIFwiX1wiKTtcbn1cbiJdfQ==
3
+ exports.getSafeZoneName = exports.toValidDatabaseName = exports.toKebab = exports.toPascalCase = exports.capitaliseString = void 0;
4
+ var util_1 = require("@fjall/util");
5
+ Object.defineProperty(exports, "capitaliseString", { enumerable: true, get: function () { return util_1.capitalise; } });
6
+ Object.defineProperty(exports, "toPascalCase", { enumerable: true, get: function () { return util_1.toPascalCase; } });
7
+ Object.defineProperty(exports, "toKebab", { enumerable: true, get: function () { return util_1.toKebab; } });
8
+ Object.defineProperty(exports, "toValidDatabaseName", { enumerable: true, get: function () { return util_1.toValidDatabaseName; } });
9
+ Object.defineProperty(exports, "getSafeZoneName", { enumerable: true, get: function () { return util_1.getSafeZoneName; } });
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FwaXRhbGlzZVN0cmluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi91dGlscy9jYXBpdGFsaXNlU3RyaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG9DQU1xQjtBQUxuQix3R0FBQSxVQUFVLE9BQW9CO0FBQzlCLG9HQUFBLFlBQVksT0FBQTtBQUNaLCtGQUFBLE9BQU8sT0FBQTtBQUNQLDJHQUFBLG1CQUFtQixPQUFBO0FBQ25CLHVHQUFBLGVBQWUsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7XG4gIGNhcGl0YWxpc2UgYXMgY2FwaXRhbGlzZVN0cmluZyxcbiAgdG9QYXNjYWxDYXNlLFxuICB0b0tlYmFiLFxuICB0b1ZhbGlkRGF0YWJhc2VOYW1lLFxuICBnZXRTYWZlWm9uZU5hbWVcbn0gZnJvbSBcIkBmamFsbC91dGlsXCI7XG4iXX0=
@@ -0,0 +1,4 @@
1
+ import { type Construct } from "constructs";
2
+ import { type IHostedZone } from "aws-cdk-lib/aws-route53";
3
+ import type { DnsRecordInput } from "./domainTypes";
4
+ export declare function addDnsRecords(scope: Construct, zone: IHostedZone, zoneName: string, records: DnsRecordInput[]): void;
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addDnsRecords = addDnsRecords;
4
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
5
+ const aws_route53_1 = require("aws-cdk-lib/aws-route53");
6
+ const capitaliseString_1 = require("./capitaliseString");
7
+ const domainTypes_1 = require("./domainTypes");
8
+ function addDnsRecords(scope, zone, zoneName, records) {
9
+ const safeZone = (0, capitaliseString_1.toPascalCase)((0, capitaliseString_1.getSafeZoneName)(zoneName));
10
+ records.forEach((record, index) => {
11
+ if (record.value.startsWith(domainTypes_1.ALIAS_CDK_PREFIX)) {
12
+ return;
13
+ }
14
+ const safeName = (0, capitaliseString_1.toPascalCase)(record.name === domainTypes_1.DNS_APEX ? "Apex" : record.name);
15
+ const constructId = `${safeZone}${safeName}${record.type}Record${index}`;
16
+ const ttl = record.ttl ? aws_cdk_lib_1.Duration.seconds(record.ttl) : undefined;
17
+ const recordName = record.name === domainTypes_1.DNS_APEX ? zoneName : `${record.name}.${zoneName}`;
18
+ switch (record.type) {
19
+ case "A":
20
+ new aws_route53_1.ARecord(scope, constructId, {
21
+ zone,
22
+ recordName,
23
+ target: aws_route53_1.RecordTarget.fromIpAddresses(record.value),
24
+ ttl
25
+ });
26
+ break;
27
+ case "AAAA":
28
+ new aws_route53_1.AaaaRecord(scope, constructId, {
29
+ zone,
30
+ recordName,
31
+ target: aws_route53_1.RecordTarget.fromIpAddresses(record.value),
32
+ ttl
33
+ });
34
+ break;
35
+ case "CNAME":
36
+ new aws_route53_1.CnameRecord(scope, constructId, {
37
+ zone,
38
+ recordName,
39
+ domainName: record.value,
40
+ ttl
41
+ });
42
+ break;
43
+ case "MX":
44
+ new aws_route53_1.MxRecord(scope, constructId, {
45
+ zone,
46
+ recordName,
47
+ values: [
48
+ {
49
+ hostName: record.value,
50
+ priority: record.priority ?? 10
51
+ }
52
+ ],
53
+ ttl
54
+ });
55
+ break;
56
+ case "TXT":
57
+ new aws_route53_1.TxtRecord(scope, constructId, {
58
+ zone,
59
+ recordName,
60
+ values: [record.value],
61
+ ttl
62
+ });
63
+ break;
64
+ case "NS":
65
+ new aws_route53_1.NsRecord(scope, constructId, {
66
+ zone,
67
+ recordName,
68
+ values: [record.value],
69
+ ttl
70
+ });
71
+ break;
72
+ case "SRV":
73
+ new aws_route53_1.SrvRecord(scope, constructId, {
74
+ zone,
75
+ recordName,
76
+ values: [
77
+ {
78
+ hostName: record.value,
79
+ priority: record.priority ?? 10,
80
+ weight: record.weight ?? 0,
81
+ port: record.port ?? 443
82
+ }
83
+ ],
84
+ ttl
85
+ });
86
+ break;
87
+ case "CAA":
88
+ new aws_route53_1.CaaRecord(scope, constructId, {
89
+ zone,
90
+ recordName,
91
+ values: [
92
+ {
93
+ flag: 0,
94
+ tag: record.value.includes("issuewild")
95
+ ? aws_route53_1.CaaTag.ISSUEWILD
96
+ : record.value.includes("iodef")
97
+ ? aws_route53_1.CaaTag.IODEF
98
+ : aws_route53_1.CaaTag.ISSUE,
99
+ value: record.value
100
+ }
101
+ ],
102
+ ttl
103
+ });
104
+ break;
105
+ }
106
+ });
107
+ }
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5zUmVjb3Jkcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi91dGlscy9kbnNSZWNvcmRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBbUJBLHNDQThHQztBQWhJRCw2Q0FBdUM7QUFDdkMseURBWWlDO0FBQ2pDLHlEQUFtRTtBQUVuRSwrQ0FBMkQ7QUFFM0QsU0FBZ0IsYUFBYSxDQUMzQixLQUFnQixFQUNoQixJQUFpQixFQUNqQixRQUFnQixFQUNoQixPQUF5QjtJQUV6QixNQUFNLFFBQVEsR0FBRyxJQUFBLCtCQUFZLEVBQUMsSUFBQSxrQ0FBZSxFQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFFekQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUNoQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLDhCQUFnQixDQUFDLEVBQUUsQ0FBQztZQUM5QyxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFHLElBQUEsK0JBQVksRUFDM0IsTUFBTSxDQUFDLElBQUksS0FBSyxzQkFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2hELENBQUM7UUFDRixNQUFNLFdBQVcsR0FBRyxHQUFHLFFBQVEsR0FBRyxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksU0FBUyxLQUFLLEVBQUUsQ0FBQztRQUN6RSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNsRSxNQUFNLFVBQVUsR0FDZCxNQUFNLENBQUMsSUFBSSxLQUFLLHNCQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxJQUFJLFFBQVEs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LENBQUMsQ0FBQztnQkFDSCxNQUFNO1FBQ1YsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IER1cmF0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQge1xuICBBUmVjb3JkLFxuICBBYWFhUmVjb3JkLFxuICBDbmFtZVJlY29yZCxcbiAgTXhSZWNvcmQsXG4gIFR4dFJlY29yZCxcbiAgTnNSZWNvcmQsXG4gIFNydlJlY29yZCxcbiAgQ2FhUmVjb3JkLFxuICBDYWFUYWcsXG4gIFJlY29yZFRhcmdldCxcbiAgdHlwZSBJSG9zdGVkWm9uZVxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJvdXRlNTNcIjtcbmltcG9ydCB7IHRvUGFzY2FsQ2FzZSwgZ2V0U2FmZVpvbmVOYW1lIH0gZnJvbSBcIi4vY2FwaXRhbGlzZVN0cmluZ1wiO1xuaW1wb3J0IHR5cGUgeyBEbnNSZWNvcmRJbnB1dCB9IGZyb20gXCIuL2RvbWFpblR5cGVzXCI7XG5pbXBvcnQgeyBBTElBU19DREtfUFJFRklYLCBETlNfQVBFWCB9IGZyb20gXCIuL2RvbWFpblR5cGVzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGREbnNSZWNvcmRzKFxuICBzY29wZTogQ29uc3RydWN0LFxuICB6b25lOiBJSG9zdGVkWm9uZSxcbiAgem9uZU5hbWU6IHN0cmluZyxcbiAgcmVjb3JkczogRG5zUmVjb3JkSW5wdXRbXVxuKTogdm9pZCB7XG4gIGNvbnN0IHNhZmVab25lID0gdG9QYXNjYWxDYXNlKGdldFNhZmVab25lTmFtZSh6b25lTmFtZSkpO1xuXG4gIHJlY29yZHMuZm9yRWFjaCgocmVjb3JkLCBpbmRleCkgPT4ge1xuICAgIGlmIChyZWNvcmQudmFsdWUuc3RhcnRzV2l0aChBTElBU19DREtfUFJFRklYKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNhZmVOYW1lID0gdG9QYXNjYWxDYXNlKFxuICAgICAgcmVjb3JkLm5hbWUgPT09IEROU19BUEVYID8gXCJBcGV4XCIgOiByZWNvcmQubmFtZVxuICAgICk7XG4gICAgY29uc3QgY29uc3RydWN0SWQgPSBgJHtzYWZlWm9uZX0ke3NhZmVOYW1lfSR7cmVjb3JkLnR5cGV9UmVjb3JkJHtpbmRleH1gO1xuICAgIGNvbnN0IHR0bCA9IHJlY29yZC50dGwgPyBEdXJhdGlvbi5zZWNvbmRzKHJlY29yZC50dGwpIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHJlY29yZE5hbWUgPVxuICAgICAgcmVjb3JkLm5hbWUgPT09IEROU19BUEVYID8gem9uZU5hbWUgOiBgJHtyZWNvcmQubmFtZX0uJHt6b25lTmFtZX1gO1xuXG4gICAgc3dpdGNoIChyZWNvcmQudHlwZSkge1xuICAgICAgY2FzZSBcIkFcIjpcbiAgICAgICAgbmV3IEFSZWNvcmQoc2NvcGUsIGNvbnN0cnVjdElkLCB7XG4gICAgICAgICAgem9uZSxcbiAgICAgICAgICByZWNvcmROYW1lLFxuICAgICAgICAgIHRhcmdldDogUmVjb3JkVGFyZ2V0LmZyb21JcEFkZHJlc3NlcyhyZWNvcmQudmFsdWUpLFxuICAgICAgICAgIHR0bFxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiQUFBQVwiOlxuICAgICAgICBuZXcgQWFhYVJlY29yZChzY29wZSwgY29uc3RydWN0SWQsIHtcbiAgICAgICAgICB6b25lLFxuICAgICAgICAgIHJlY29yZE5hbWUsXG4gICAgICAgICAgdGFyZ2V0OiBSZWNvcmRUYXJnZXQuZnJvbUlwQWRkcmVzc2VzKHJlY29yZC52YWx1ZSksXG4gICAgICAgICAgdHRsXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJDTkFNRVwiOlxuICAgICAgICBuZXcgQ25hbWVSZWNvcmQoc2NvcGUsIGNvbnN0cnVjdElkLCB7XG4gICAgICAgICAgem9uZSxcbiAgICAgICAgICByZWNvcmROYW1lLFxuICAgICAgICAgIGRvbWFpbk5hbWU6IHJlY29yZC52YWx1ZSxcbiAgICAgICAgICB0dGxcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIk1YXCI6XG4gICAgICAgIG5ldyBNeFJlY29yZChzY29wZSwgY29uc3RydWN0SWQsIHtcbiAgICAgICAgICB6b25lLFxuICAgICAgICAgIHJlY29yZE5hbWUsXG4gICAgICAgICAgdmFsdWVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGhvc3ROYW1lOiByZWNvcmQudmFsdWUsXG4gICAgICAgICAgICAgIHByaW9yaXR5OiByZWNvcmQucHJpb3JpdHkgPz8gMTBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdLFxuICAgICAgICAgIHR0bFxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiVFhUXCI6XG4gICAgICAgIG5ldyBUeHRSZWNvcmQoc2NvcGUsIGNvbnN0cnVjdElkLCB7XG4gICAgICAgICAgem9uZSxcbiAgICAgICAgICByZWNvcmROYW1lLFxuICAgICAgICAgIHZhbHVlczogW3JlY29yZC52YWx1ZV0sXG4gICAgICAgICAgdHRsXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJOU1wiOlxuICAgICAgICBuZXcgTnNSZWNvcmQoc2NvcGUsIGNvbnN0cnVjdElkLCB7XG4gICAgICAgICAgem9uZSxcbiAgICAgICAgICByZWNvcmROYW1lLFxuICAgICAgICAgIHZhbHVlczogW3JlY29yZC52YWx1ZV0sXG4gICAgICAgICAgdHRsXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJTUlZcIjpcbiAgICAgICAgbmV3IFNydlJlY29yZChzY29wZSwgY29uc3RydWN0SWQsIHtcbiAgICAgICAgICB6b25lLFxuICAgICAgICAgIHJlY29yZE5hbWUsXG4gICAgICAgICAgdmFsdWVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGhvc3ROYW1lOiByZWNvcmQudmFsdWUsXG4gICAgICAgICAgICAgIHByaW9yaXR5OiByZWNvcmQucHJpb3JpdHkgPz8gMTAsXG4gICAgICAgICAgICAgIHdlaWdodDogcmVjb3JkLndlaWdodCA/PyAwLFxuICAgICAgICAgICAgICBwb3J0OiByZWNvcmQucG9ydCA/PyA0NDNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdLFxuICAgICAgICAgIHR0bFxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiQ0FBXCI6XG4gICAgICAgIG5ldyBDYWFSZWNvcmQoc2NvcGUsIGNvbnN0cnVjdElkLCB7XG4gICAgICAgICAgem9uZSxcbiAgICAgICAgICByZWNvcmROYW1lLFxuICAgICAgICAgIHZhbHVlczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBmbGFnOiAwLFxuICAgICAgICAgICAgICB0YWc6IHJlY29yZC52YWx1ZS5pbmNsdWRlcyhcImlzc3Vld2lsZFwiKVxuICAgICAgICAgICAgICAgID8gQ2FhVGFnLklTU1VFV0lMRFxuICAgICAgICAgICAgICAgIDogcmVjb3JkLnZhbHVlLmluY2x1ZGVzKFwiaW9kZWZcIilcbiAgICAgICAgICAgICAgICAgID8gQ2FhVGFnLklPREVGXG4gICAgICAgICAgICAgICAgICA6IENhYVRhZy5JU1NVRSxcbiAgICAgICAgICAgICAgdmFsdWU6IHJlY29yZC52YWx1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF0sXG4gICAgICAgICAgdHRsXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH0pO1xufVxuIl19
@@ -0,0 +1,37 @@
1
+ export { DNS_APEX, getDomainExportNames, type ManagedDomainExports } from "@fjall/util";
2
+ export interface DnsRecordInput {
3
+ type: "A" | "AAAA" | "CNAME" | "MX" | "TXT" | "NS" | "SRV" | "CAA";
4
+ name: string;
5
+ value: string;
6
+ ttl?: number;
7
+ priority?: number;
8
+ weight?: number;
9
+ port?: number;
10
+ }
11
+ export interface DelegationInput {
12
+ subdomain: string;
13
+ targetAccount: string;
14
+ }
15
+ export interface CertificateInput {
16
+ domainName: string;
17
+ subjectAlternativeNames?: string[];
18
+ }
19
+ export interface DomainApexProps {
20
+ type: "domain";
21
+ zoneName: string;
22
+ records?: DnsRecordInput[];
23
+ delegations?: DelegationInput[];
24
+ certificates?: CertificateInput[];
25
+ hostedZoneId?: string;
26
+ }
27
+ export interface DomainDelegatedProps {
28
+ type: "delegated";
29
+ zoneName: string;
30
+ parentZoneName: string;
31
+ parentAccountName: string;
32
+ records?: DnsRecordInput[];
33
+ certificates?: CertificateInput[];
34
+ }
35
+ export type IDomainProps = DomainApexProps | DomainDelegatedProps;
36
+ export declare const ALIAS_CDK_PREFIX: "ALIAS:";
37
+ export { addDnsRecords } from "./dnsRecords";
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addDnsRecords = exports.ALIAS_CDK_PREFIX = exports.getDomainExportNames = exports.DNS_APEX = void 0;
4
+ var util_1 = require("@fjall/util");
5
+ Object.defineProperty(exports, "DNS_APEX", { enumerable: true, get: function () { return util_1.DNS_APEX; } });
6
+ Object.defineProperty(exports, "getDomainExportNames", { enumerable: true, get: function () { return util_1.getDomainExportNames; } });
7
+ exports.ALIAS_CDK_PREFIX = "ALIAS:";
8
+ var dnsRecords_1 = require("./dnsRecords");
9
+ Object.defineProperty(exports, "addDnsRecords", { enumerable: true, get: function () { return dnsRecords_1.addDnsRecords; } });
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tYWluVHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvdXRpbHMvZG9tYWluVHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsb0NBSXFCO0FBSG5CLGdHQUFBLFFBQVEsT0FBQTtBQUNSLDRHQUFBLG9CQUFvQixPQUFBO0FBNENULFFBQUEsZ0JBQWdCLEdBQUcsUUFBaUIsQ0FBQztBQUVsRCwyQ0FBNkM7QUFBcEMsMkdBQUEsYUFBYSxPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtcbiAgRE5TX0FQRVgsXG4gIGdldERvbWFpbkV4cG9ydE5hbWVzLFxuICB0eXBlIE1hbmFnZWREb21haW5FeHBvcnRzXG59IGZyb20gXCJAZmphbGwvdXRpbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIERuc1JlY29yZElucHV0IHtcbiAgdHlwZTogXCJBXCIgfCBcIkFBQUFcIiB8IFwiQ05BTUVcIiB8IFwiTVhcIiB8IFwiVFhUXCIgfCBcIk5TXCIgfCBcIlNSVlwiIHwgXCJDQUFcIjtcbiAgbmFtZTogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICB0dGw/OiBudW1iZXI7XG4gIHByaW9yaXR5PzogbnVtYmVyO1xuICB3ZWlnaHQ/OiBudW1iZXI7XG4gIHBvcnQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVsZWdhdGlvbklucHV0IHtcbiAgc3ViZG9tYWluOiBzdHJpbmc7XG4gIHRhcmdldEFjY291bnQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDZXJ0aWZpY2F0ZUlucHV0IHtcbiAgZG9tYWluTmFtZTogc3RyaW5nO1xuICBzdWJqZWN0QWx0ZXJuYXRpdmVOYW1lcz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvbWFpbkFwZXhQcm9wcyB7XG4gIHR5cGU6IFwiZG9tYWluXCI7XG4gIHpvbmVOYW1lOiBzdHJpbmc7XG4gIHJlY29yZHM/OiBEbnNSZWNvcmRJbnB1dFtdO1xuICBkZWxlZ2F0aW9ucz86IERlbGVnYXRpb25JbnB1dFtdO1xuICBjZXJ0aWZpY2F0ZXM/OiBDZXJ0aWZpY2F0ZUlucHV0W107XG4gIGhvc3RlZFpvbmVJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb21haW5EZWxlZ2F0ZWRQcm9wcyB7XG4gIHR5cGU6IFwiZGVsZWdhdGVkXCI7XG4gIHpvbmVOYW1lOiBzdHJpbmc7XG4gIHBhcmVudFpvbmVOYW1lOiBzdHJpbmc7XG4gIHBhcmVudEFjY291bnROYW1lOiBzdHJpbmc7XG4gIHJlY29yZHM/OiBEbnNSZWNvcmRJbnB1dFtdO1xuICBjZXJ0aWZpY2F0ZXM/OiBDZXJ0aWZpY2F0ZUlucHV0W107XG59XG5cbmV4cG9ydCB0eXBlIElEb21haW5Qcm9wcyA9IERvbWFpbkFwZXhQcm9wcyB8IERvbWFpbkRlbGVnYXRlZFByb3BzO1xuXG5leHBvcnQgY29uc3QgQUxJQVNfQ0RLX1BSRUZJWCA9IFwiQUxJQVM6XCIgYXMgY29uc3Q7XG5cbmV4cG9ydCB7IGFkZERuc1JlY29yZHMgfSBmcm9tIFwiLi9kbnNSZWNvcmRzXCI7XG4iXX0=