UNPKG

metal-soy-critic

Version:
27 lines (26 loc) 1.24 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const util_1 = require("./util"); const chalk = require("chalk"); function getImplicitParams(className, paramsMap) { const initialImplicitParams = []; return Object.keys(paramsMap) .filter(nameOrRegex => className.match(new RegExp(nameOrRegex))) .reduce((acc, value) => acc.concat(paramsMap[value]), initialImplicitParams); } function validateParams(soyContext, jsContext, config) { const jsParams = jsContext.getParamNames(); const classMethods = jsContext.getClassMethodNames(); const className = jsContext.getClassName(); const implicitParams = className ? getImplicitParams(className, config.implicitParams) : []; const missingParams = soyContext.getRenderParams() .map(param => param.name) .filter(param => !jsParams.includes(param) && !classMethods.includes(param) && !implicitParams.includes(param)); if (missingParams.length) { return util_1.toResult(false, `These params can't be found in ${chalk.yellow('STATE')} or your ${chalk.yellow('Class')}:\n\n` + util_1.joinErrors(missingParams)); } return util_1.toResult(true); } exports.default = validateParams; ;