@cdkx/web-application
Version:
Static web application hosting related constructs
55 lines • 8.44 kB
JavaScript
(function (factory) {
if (typeof module === "object" && typeof module.exports === "object") {
var v = factory(require, exports);
if (v !== undefined) module.exports = v;
}
else if (typeof define === "function" && define.amd) {
define("@cdkx/web-application/constructs/assets-server.construct", ["require", "exports", "@aws-cdk/aws-s3", "@aws-cdk/core", "@cdkx/web-application/facades/add-assets-server-api-resource", "@cdkx/web-application/facades/add-assets-server-distribution", "@cdkx/web-application/facades/add-cname-records"], factory);
}
})(function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.AssetsServer = void 0;
const aws_s3_1 = require("@aws-cdk/aws-s3");
const core_1 = require("@aws-cdk/core");
const add_assets_server_api_resource_1 = require("@cdkx/web-application/facades/add-assets-server-api-resource");
const add_assets_server_distribution_1 = require("@cdkx/web-application/facades/add-assets-server-distribution");
const add_cname_records_1 = require("@cdkx/web-application/facades/add-cname-records");
class AssetsServer extends core_1.Construct {
constructor(scope, id, props) {
var _a;
super(scope, id);
const { bucketConfig, aliases = [], hostedZone, domainNameRegistrar, certificate, removalPolicy, } = props;
if ((aliases === null || aliases === void 0 ? void 0 : aliases.length) && !certificate) {
throw new Error('Certificate must be supplied when using custom domain name!');
}
if (!(bucketConfig === null || bucketConfig === void 0 ? void 0 : bucketConfig.useExisting)) {
this.bucket = new aws_s3_1.Bucket(scope, 'OriginBucket', {
versioned: true,
cors: bucketConfig === null || bucketConfig === void 0 ? void 0 : bucketConfig.corsRules,
removalPolicy,
});
}
else {
this.bucket = bucketConfig === null || bucketConfig === void 0 ? void 0 : bucketConfig.useExisting;
}
this.distribution = add_assets_server_distribution_1.addAssetsServerDistribution(this, {
s3BucketSource: this.bucket,
certificate,
aliases,
});
add_assets_server_api_resource_1.addAssetsServerApiResource(this, props, {
s3Bucket: this.bucket,
assetsPublicHost: (_a = aliases[0]) !== null && _a !== void 0 ? _a : `https://${this.distribution.distributionDomainName}`,
});
add_cname_records_1.addCnameRecords(this, {
distribution: this.distribution,
aliases,
hostedZone,
domainNameRegistrar,
});
}
}
exports.AssetsServer = AssetsServer;
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzLXNlcnZlci5jb25zdHJ1Y3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy93ZWItYXBwbGljYXRpb24vY29uc3RydWN0cy9hc3NldHMtc2VydmVyLmNvbnN0cnVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFJQSw0Q0FBNEQ7SUFDNUQsd0NBQXlEO0lBRXpELGtIQUF1RjtJQUN2RixrSEFBd0Y7SUFDeEYsd0ZBQStEO0lBOEIvRCxNQUFhLFlBQWEsU0FBUSxnQkFBUztRQUd6QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXlCOztZQUNqRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2pCLE1BQU0sRUFDSixZQUFZLEVBQ1osT0FBTyxHQUFHLEVBQUUsRUFDWixVQUFVLEVBQ1YsbUJBQW1CLEVBQ25CLFdBQVcsRUFDWCxhQUFhLEdBQ2QsR0FBRyxLQUFLLENBQUM7WUFFVixJQUFJLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLE1BQU0sS0FBSSxDQUFDLFdBQVcsRUFBRTtnQkFDbkMsTUFBTSxJQUFJLEtBQUssQ0FDYiw2REFBNkQsQ0FDOUQsQ0FBQzthQUNIO1lBQ0QsSUFBSSxDQUFDLENBQUEsWUFBWSxhQUFaLFlBQVksdUJBQVosWUFBWSxDQUFFLFdBQVcsQ0FBQSxFQUFFO2dCQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksZUFBTSxDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUU7b0JBQzlDLFNBQVMsRUFBRSxJQUFJO29CQUNmLElBQUksRUFBRSxZQUFZLGFBQVosWUFBWSx1QkFBWixZQUFZLENBQUUsU0FBUztvQkFDN0IsYUFBYTtpQkFDZCxDQUFDLENBQUM7YUFDSjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsTUFBTSxHQUFHLFlBQVksYUFBWixZQUFZLHVCQUFaLFlBQVksQ0FBRSxXQUFXLENBQUM7YUFDekM7WUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLDREQUEyQixDQUFDLElBQUksRUFBRTtnQkFDcEQsY0FBYyxFQUFFLElBQUksQ0FBQyxNQUFNO2dCQUMzQixXQUFXO2dCQUNYLE9BQU87YUFDUixDQUFDLENBQUM7WUFFSCwyREFBMEIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO2dCQUN0QyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ3JCLGdCQUFnQixFQUNkLE1BQUEsT0FBTyxDQUFDLENBQUMsQ0FBQyxtQ0FBSSxXQUFXLElBQUksQ0FBQyxZQUFZLENBQUMsc0JBQXNCLEVBQUU7YUFDdEUsQ0FBQyxDQUFDO1lBRUgsbUNBQWUsQ0FBQyxJQUFJLEVBQUU7Z0JBQ3BCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtnQkFDL0IsT0FBTztnQkFDUCxVQUFVO2dCQUNWLG1CQUFtQjthQUNwQixDQUFDLENBQUM7UUFDTCxDQUFDO0tBQ0Y7SUFoREQsb0NBZ0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVJlc291cmNlIH0gZnJvbSAnQGF3cy1jZGsvYXdzLWFwaWdhdGV3YXknO1xuaW1wb3J0IHsgQ2VydGlmaWNhdGUsIElDZXJ0aWZpY2F0ZSB9IGZyb20gJ0Bhd3MtY2RrL2F3cy1jZXJ0aWZpY2F0ZW1hbmFnZXInO1xuaW1wb3J0IHsgRGlzdHJpYnV0aW9uIH0gZnJvbSAnQGF3cy1jZGsvYXdzLWNsb3VkZnJvbnQnO1xuaW1wb3J0IHsgSUhvc3RlZFpvbmUgfSBmcm9tICdAYXdzLWNkay9hd3Mtcm91dGU1Myc7XG5pbXBvcnQgeyBCdWNrZXQsIENvcnNSdWxlLCBJQnVja2V0IH0gZnJvbSAnQGF3cy1jZGsvYXdzLXMzJztcbmltcG9ydCB7IENvbnN0cnVjdCwgUmVtb3ZhbFBvbGljeSB9IGZyb20gJ0Bhd3MtY2RrL2NvcmUnO1xuaW1wb3J0IHsgRE9NQUlOX05BTUVfUkVHSVNUUkFSIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGFkZEFzc2V0c1NlcnZlckFwaVJlc291cmNlIH0gZnJvbSAnLi4vZmFjYWRlcy9hZGQtYXNzZXRzLXNlcnZlci1hcGktcmVzb3VyY2UnO1xuaW1wb3J0IHsgYWRkQXNzZXRzU2VydmVyRGlzdHJpYnV0aW9uIH0gZnJvbSAnLi4vZmFjYWRlcy9hZGQtYXNzZXRzLXNlcnZlci1kaXN0cmlidXRpb24nO1xuaW1wb3J0IHsgYWRkQ25hbWVSZWNvcmRzIH0gZnJvbSAnLi4vZmFjYWRlcy9hZGQtY25hbWUtcmVjb3Jkcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUFzc2V0c1NlcnZlclByb3BzIHtcbiAgYnVja2V0Q29uZmlnPzoge1xuICAgIC8qKlxuICAgICAqIEBkZWZhdWx0IC0gTmV3IGJ1Y2tldCBpcyBjcmVhdGVkIGFuZCB1c2VkIGFzIGEgc3RvcmFnZSBmb3IgYXNzZXRzXG4gICAgICovXG4gICAgdXNlRXhpc3Rpbmc/OiBCdWNrZXQgfCBJQnVja2V0O1xuICAgIC8qKlxuICAgICAqIEBkZWZhdWx0IG5vbmUgLSBObyBjb3JzIHJ1bGVzIGFyZSBhcHBsaWVkXG4gICAgICovXG4gICAgY29yc1J1bGVzPzogQ29yc1J1bGVbXTtcbiAgfTtcbiAgLyoqXG4gICAqIEBkZWZhdWx0IG5vbmUgTm8gYWxpYXNlcyBhcmUgcmVnaXN0ZXJlZFxuICAgKi9cbiAgYWxpYXNlcz86IHN0cmluZ1tdO1xuICBkb21haW5OYW1lUmVnaXN0cmFyOiBET01BSU5fTkFNRV9SRUdJU1RSQVI7XG4gIGhvc3RlZFpvbmU6IElIb3N0ZWRab25lO1xuICByZXN0QXBpUmVzb3VyY2U6IElSZXNvdXJjZTtcbiAgLyoqXG4gICAqIEBkZWZhdWx0IGNsb3VkZnJvbnQgRGVmYXVsdCBjbG91ZGZyb250IGNlcnRpZmljYXRlICcqLmNsb3VkZnJvbnQubmV0J1xuICAgKi9cbiAgY2VydGlmaWNhdGU/OiBJQ2VydGlmaWNhdGUgfCBDZXJ0aWZpY2F0ZTtcbiAgLyoqXG4gICAqIEBkZWZhdWx0IG9ycGhhbmVkIC0gcmVzb3VyY2VzIHdpbGwgYmUgb3JwaGFuZWQsIGNob29zZSBkZXN0cm95IHRvIGF1dG8gcmVtb3ZlIG9uIGRlc3Ryb3lcbiAgICovXG4gIHJlbW92YWxQb2xpY3k/OiBSZW1vdmFsUG9saWN5O1xufVxuXG5leHBvcnQgY2xhc3MgQXNzZXRzU2VydmVyIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcmVhZG9ubHkgYnVja2V0OiBCdWNrZXQgfCBJQnVja2V0O1xuICByZWFkb25seSBkaXN0cmlidXRpb246IERpc3RyaWJ1dGlvbjtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IElBc3NldHNTZXJ2ZXJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgY29uc3Qge1xuICAgICAgYnVja2V0Q29uZmlnLFxuICAgICAgYWxpYXNlcyA9IFtdLFxuICAgICAgaG9zdGVkWm9uZSxcbiAgICAgIGRvbWFpbk5hbWVSZWdpc3RyYXIsXG4gICAgICBjZXJ0aWZpY2F0ZSxcbiAgICAgIHJlbW92YWxQb2xpY3ksXG4gICAgfSA9IHByb3BzO1xuXG4gICAgaWYgKGFsaWFzZXM/Lmxlbmd0aCAmJiAhY2VydGlmaWNhdGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0NlcnRpZmljYXRlIG11c3QgYmUgc3VwcGxpZWQgd2hlbiB1c2luZyBjdXN0b20gZG9tYWluIG5hbWUhJ1xuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKCFidWNrZXRDb25maWc/LnVzZUV4aXN0aW5nKSB7XG4gICAgICB0aGlzLmJ1Y2tldCA9IG5ldyBCdWNrZXQoc2NvcGUsICdPcmlnaW5CdWNrZXQnLCB7XG4gICAgICAgIHZlcnNpb25lZDogdHJ1ZSxcbiAgICAgICAgY29yczogYnVja2V0Q29uZmlnPy5jb3JzUnVsZXMsXG4gICAgICAgIHJlbW92YWxQb2xpY3ksXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5idWNrZXQgPSBidWNrZXRDb25maWc/LnVzZUV4aXN0aW5nO1xuICAgIH1cblxuICAgIHRoaXMuZGlzdHJpYnV0aW9uID0gYWRkQXNzZXRzU2VydmVyRGlzdHJpYnV0aW9uKHRoaXMsIHtcbiAgICAgIHMzQnVja2V0U291cmNlOiB0aGlzLmJ1Y2tldCxcbiAgICAgIGNlcnRpZmljYXRlLFxuICAgICAgYWxpYXNlcyxcbiAgICB9KTtcblxuICAgIGFkZEFzc2V0c1NlcnZlckFwaVJlc291cmNlKHRoaXMsIHByb3BzLCB7XG4gICAgICBzM0J1Y2tldDogdGhpcy5idWNrZXQsXG4gICAgICBhc3NldHNQdWJsaWNIb3N0OlxuICAgICAgICBhbGlhc2VzWzBdID8/IGBodHRwczovLyR7dGhpcy5kaXN0cmlidXRpb24uZGlzdHJpYnV0aW9uRG9tYWluTmFtZX1gLFxuICAgIH0pO1xuXG4gICAgYWRkQ25hbWVSZWNvcmRzKHRoaXMsIHtcbiAgICAgIGRpc3RyaWJ1dGlvbjogdGhpcy5kaXN0cmlidXRpb24sXG4gICAgICBhbGlhc2VzLFxuICAgICAgaG9zdGVkWm9uZSxcbiAgICAgIGRvbWFpbk5hbWVSZWdpc3RyYXIsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==