metal-soy-critic
Version:
A metal-soy code validation utility.
27 lines (26 loc) • 1.24 kB
JavaScript
;
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;
;