test-openapi
Version:
Automated client requests
108 lines (65 loc) • 2.04 kB
JavaScript
require("core-js/modules/es.array.iterator");require("core-js/modules/es.array.sort");Object.defineProperty(exports,"__esModule",{value:true});exports.load=void 0;var _lodash=require("lodash");
var _error=require("../../errors/error.js");
var _handler=require("../../errors/handler.js");
var _regexp=require("../../utils/regexp.js");
var _merge=require("../../template/merge.js");
const load=function(tasks,{config:{merge:mergeConfig}}){
const{mergeTasks,nonMergeTasks}=splitTasks({tasks});
const tasksA=nonMergeTasks.map((task)=>
mergeTask({task,mergeTasks,mergeConfig}));
return tasksA;
};exports.load=load;
const splitTasks=function({tasks}){
const mergeTasks=tasks.filter(isMergeTask);
const nonMergeTasks=tasks.filter(task=>!isMergeTask(task));
return{mergeTasks,nonMergeTasks};
};
const isMergeTask=function({merge}){
return merge!==undefined;
};
const mergeTask=function({task,mergeTasks,mergeConfig={}}){
const mergeTasksA=findMergeTasks({task,mergeTasks});
if(mergeTasksA.length===0){
return task;
}
return(0,_merge.mergeWithTemplates)(mergeConfig,...mergeTasksA,task);
};
const findMergeTasks=function({task:{key,scope},mergeTasks}){
return mergeTasks.
filter(({merge})=>eTestRegExp(merge,key)).
sort((taskA,taskB)=>compareMergeTasks({taskA,taskB,scope})).
map(task=>(0,_lodash.omit)(task,NOT_MERGED_ATTRIBUTES));
};
const testRegExpHandler=function({message},merge){
throw new _error.TestOpenApiError(`'task.merge' '${merge}' is invalid: ${message}`,{
value:merge,
property:"task.merge"});
};
const eTestRegExp=(0,_handler.addErrorHandler)(_regexp.testRegExp,testRegExpHandler);
const compareMergeTasks=function({
taskA:{scope:scopeA},
taskB:{scope:scopeB},
scope})
{
if(scopeA===scopeB){
return 0;
}
if(scopeA===scope){
return 1;
}
if(scopeB===scope){
return-1;
}
if(scopeA===undefined){
return 1;
}
if(scopeB===undefined){
return-1;
}
if(scopeA<scopeB){
return-1;
}
return 1;
};
const NOT_MERGED_ATTRIBUTES=["key","scope","name","merge"];
//# sourceMappingURL=load.js.map
;