mirror of
https://github.com/serverless/serverless.git
synced 2026-01-18 14:58:43 +00:00
56 lines
1.5 KiB
JavaScript
56 lines
1.5 KiB
JavaScript
'use strict';
|
|
|
|
const BbPromise = require('bluebird');
|
|
const forEach = require('lodash').forEach;
|
|
|
|
const compileRestApi = require('./lib/compileRestApi');
|
|
const compileResources = require('./lib/compileResources');
|
|
const compileMethods = require('./lib/compileMethods');
|
|
const compileDeployment = require('./lib/compileDeployment');
|
|
const compilePermissions = require('./lib/compilePermissions');
|
|
|
|
class AwsCompileApigEvents {
|
|
constructor(serverless, options) {
|
|
this.serverless = serverless;
|
|
this.options = options;
|
|
|
|
Object.assign(
|
|
this,
|
|
compileRestApi,
|
|
compileResources,
|
|
compileMethods,
|
|
compileDeployment,
|
|
compilePermissions
|
|
);
|
|
|
|
this.hooks = {
|
|
'deploy:compileEvents': () => {
|
|
if (!this.serverless.service.resources.aws.Resources) {
|
|
throw new this.serverless.classes.Error(
|
|
'This plugin needs access to Resources section of the AWS CloudFormation template');
|
|
}
|
|
|
|
let noEndpoints = true;
|
|
|
|
forEach(this.serverless.service.functions, functionObj => {
|
|
if (functionObj.events && functionObj.events.aws
|
|
&& functionObj.events.aws.http_endpoints) {
|
|
noEndpoints = false;
|
|
}
|
|
});
|
|
|
|
if (noEndpoints) return BbPromise.resolve();
|
|
|
|
return BbPromise.bind(this)
|
|
.then(this.compileRestApi)
|
|
.then(this.compileResources)
|
|
.then(this.compileMethods)
|
|
.then(this.compileDeployment)
|
|
.then(this.compilePermissions);
|
|
},
|
|
};
|
|
}
|
|
}
|
|
|
|
module.exports = AwsCompileApigEvents;
|