test-openapi
Version:
Automated client requests
103 lines (70 loc) • 2.38 kB
JavaScript
require("core-js/modules/es.array.iterator");Object.defineProperty(exports,"__esModule",{value:true});exports.getPluginsVars=void 0;var _path=require("../../../utils/path.js");
var _error=require("../../../errors/error.js");
var _handler=require("../../../errors/handler.js");
var _parse=require("../../../template/parse.js");
var _check=require("./check.js");
const getPluginsVars=function({
context,
context:{_plugins:plugins}})
{
const pluginsVarsMap=getPluginsVarsMap({context,plugins});
const pluginsVars=mergePluginsVars({plugins,pluginsVarsMap});
return{pluginsVars,pluginsVarsMap};
};exports.getPluginsVars=getPluginsVars;
const getPluginsVarsMap=function({context,plugins}){
const pluginsVarsMap=plugins.map((plugin)=>
getPluginVars({plugin,context}));
return Object.assign({},...pluginsVarsMap);
};
const getPluginVars=function({
plugin,
plugin:{name,template},
context})
{
if(template===undefined){
return;
}
const vars=eGetVars({plugin,context});
validateVarNames({vars,plugin});
const varsA=(0,_check.wrapTemplateVars)({vars,plugin});
return{[name]:varsA};
};
const getVars=function({plugin:{template},context}){
if(typeof template!=="function"){
return template;
}
const vars=template(context);
return vars;
};
const getVarsHandler=function(error,{plugin:{name}}){
error.message=`Error while retrieving 'plugin.template': ${error.message}`;
if(error.module===undefined){
error.module=`plugin-${name}`;
}
throw error;
};
const eGetVars=(0,_handler.addErrorHandler)(getVars,getVarsHandler);
const validateVarNames=function({vars,plugin}){
Object.keys(vars).forEach(name=>validateVarName({name,plugin}));
};
const validateVarName=function({name,plugin}){
if((0,_parse.isTemplateName)({name})){
return;
}
const property=(0,_path.getPath)(["plugin","template",name]);
throw new _error.BugError(
`'plugin.template' returned a template variable with an invalid name '${name}': it must be prefixed with $$ and only contain letters, digits, underscores and dashes`,
{value:name,property,module:`plugin-${plugin.name}`});
};
const mergePluginsVars=function({plugins,pluginsVarsMap}){
const pluginsVars=plugins.
filter(({name})=>name!=="template").
map(({name})=>pluginsVarsMap[name]).
reverse();
const pluginsVarsA=Object.assign(
{},
pluginsVarsMap.template,
...pluginsVars);
return pluginsVarsA;
};
//# sourceMappingURL=plugin.js.map
;