mirror of
https://github.com/serverless/serverless.git
synced 2026-01-25 15:07:39 +00:00
61 lines
1.7 KiB
JavaScript
61 lines
1.7 KiB
JavaScript
'use strict';
|
|
|
|
const BbPromise = require('bluebird');
|
|
const _ = require('lodash');
|
|
|
|
const validate = require('./lib/validate');
|
|
const compileRestApi = require('./lib/restApi');
|
|
const compileApiKeys = require('./lib/apiKeys');
|
|
const compileResources = require('./lib/resources');
|
|
const compileMethods = require('./lib/methods');
|
|
const compileAuthorizers = require('./lib/authorizers');
|
|
const compileDeployment = require('./lib/deployment');
|
|
const compilePermissions = require('./lib/permissions');
|
|
|
|
class AwsCompileApigEvents {
|
|
constructor(serverless, options) {
|
|
this.serverless = serverless;
|
|
this.options = options;
|
|
this.provider = 'aws';
|
|
|
|
Object.assign(
|
|
this,
|
|
validate,
|
|
compileRestApi,
|
|
compileApiKeys,
|
|
compileResources,
|
|
compileMethods,
|
|
compileAuthorizers,
|
|
compileDeployment,
|
|
compilePermissions
|
|
);
|
|
|
|
this.hooks = {
|
|
'deploy:compileEvents': () => {
|
|
let noEndpoints = true;
|
|
_.forEach(this.serverless.service.functions, functionObj => {
|
|
if (functionObj.events) {
|
|
functionObj.events.forEach(event => {
|
|
// Allow events with empty http event to validate function
|
|
if ({}.hasOwnProperty.call(event, 'http')) noEndpoints = false;
|
|
});
|
|
}
|
|
});
|
|
if (noEndpoints) return BbPromise.resolve();
|
|
|
|
return BbPromise.bind(this)
|
|
.then(this.validate)
|
|
.then(this.compileRestApi)
|
|
.then(this.compileResources)
|
|
.then(this.compileMethods)
|
|
.then(this.compileAuthorizers)
|
|
.then(this.compileDeployment)
|
|
.then(this.compileApiKeys)
|
|
.then(this.compilePermissions);
|
|
},
|
|
};
|
|
}
|
|
}
|
|
|
|
module.exports = AwsCompileApigEvents;
|