@jefiozie/ngx-aws-deploy
Version:
Deploy an Angular app to Amazon S3 directly from the Angular CLI
57 lines • 2.46 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CloudFront = void 0;
const tslib_1 = require("tslib");
const AWS = require("aws-sdk");
const config_1 = require("./config");
class CloudFront {
constructor(context, builderConfig) {
this._context = context;
this._builderConfig = builderConfig;
this._region = (0, config_1.getRegion)(this._builderConfig);
this._cfDistributionId = (0, config_1.getCfDistributionId)();
this._subFolder = (0, config_1.getSubFolder)(this._builderConfig);
AWS.config.update({ region: this._region });
this._cloudFront = new AWS.CloudFront({
apiVersion: 'latest',
secretAccessKey: (0, config_1.getSecretAccessKey)(),
accessKeyId: (0, config_1.getAccessKeyId)()
});
}
invalidate() {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
if (!this._cfDistributionId) {
this._context.logger.info('⚠️ Skipping invalidation of CloudFront distribution');
return true;
}
const cf_path = this._subFolder ? `/${this._subFolder}/*` : '/*';
const reference = `ngx-aws-deploy-${new Date().getTime()}`;
const params = {
DistributionId: this._cfDistributionId,
InvalidationBatch: {
CallerReference: reference,
Paths: {
Quantity: 1,
Items: [
cf_path
]
}
}
};
this._context.logger.info(`Triggering invalidation of '${cf_path}' from CloudFront distribution ${this._cfDistributionId}`);
yield this._cloudFront
.createInvalidation(params)
.promise()
.then((data) => {
this._context.logger.info(`Successfully triggered invalidation of '${cf_path}' from CloudFront distribution ${this._cfDistributionId}: current status is '${data.Invalidation.Status}'`);
})
.catch((error) => {
this._context.logger.error(`❌ The following error was found during CloudFront invalidation ${error}`);
throw error;
});
return true;
});
}
}
exports.CloudFront = CloudFront;
//# sourceMappingURL=cloudfront.js.map