UNPKG

test-openapi

Version:
103 lines (70 loc) 2.38 kB
"use strict";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