@kumologica/builder
Version:
Kumologica build and deploy module
63 lines (52 loc) • 1.97 kB
JavaScript
const chalk = require('chalk');
/**
* sample events:
* https://docs.aws.amazon.com/lambda/latest/dg/lambda-services.html
*/
class FlowValidator {
constructor(log) {
if (log) {
this.logger = log;
}
}
log(text, calog = true) {
if (this.logger) {
this.logger(text, calog);
} else {
console.log(text);
}
}
validate(flow, provider) {
this.log("Validating flow");
this.validateListener(flow, provider);
switch(provider) {
case "kumohub":
const KumohubFlowValidator = require('./KumohubFlowValidator');
const khValidator = new KumohubFlowValidator(this.logger);
khValidator.validate(flow);
break;
case "azure":
const AzureFlowValidator = require('./AzureFlowValidator');
const azValidator = new AzureFlowValidator(this.logger);
azValidator.validate(flow);
break;
case "aws":
const AWSFlowValidator = require('./AWSFlowValidator');
const awsValidator = new AWSFlowValidator(this.logger);
awsValidator.validate(flow);
break;
}
}
validateListener(flow, provider) {
const listener = flow.filter(i => i.type === "EventListener" && i.provider === provider);
if (!listener || listener.length == 0) {
throw new Error(`Error: Flow has no ${provider} EventListener defined.`);
}
const nonProviderlisteners = flow.filter(i => i.type == "EventListener" && i.provider != provider);
if (nonProviderlisteners && nonProviderlisteners.length > 0) {
const names = nonProviderlisteners.map(l => l.name).concat();
this.log(`${chalk.yellowBright(`Warning (Invalid provider): Non ${provider} Event Listeners found: [${names}] for ${provider} deployment.`)}`);
}
}
}
module.exports = FlowValidator;