UNPKG

@kumologica/builder

Version:
63 lines (52 loc) 1.97 kB
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;