test-openapi
Version:
Automated client requests
125 lines (77 loc) • 2.32 kB
JavaScript
require("core-js/modules/es.array.iterator");require("core-js/modules/es.string.replace");Object.defineProperty(exports,"__esModule",{value:true});exports.parseEscape=exports.isTemplateName=exports.isTemplate=exports.parseTemplate=void 0;var _search=require("../utils/search.js");
var _types=require("../utils/types.js");
const parseTemplate=function(data){
if(typeof data==="string"){
return parseTemplateString(data);
}
const name=getTemplateName(data);
if(name===undefined){
return;
}
const arg=data[name];
return{type:"function",name,arg};
};exports.parseTemplate=parseTemplate;
const getTemplateName=function(data){
if(!(0,_types.isObject)(data)){
return;
}
const keys=Object.keys(data);
if(keys.length!==1){
return;
}
const[name]=keys;
if(!TEMPLATE_REGEXP.test(name)){
return;
}
return name;
};
const parseTemplateString=function(data){
const tokens=(0,_search.searchRegExp)(TEMPLATE_REGEXP_GLOBAL,data);
if(tokens===undefined){
return;
}
if(tokens.length===1){
return{type:"value",name:data};
}
const tokensA=tokens.map(parseToken);
return{type:"concat",tokens:tokensA};
};
const parseToken=function(name){
const type=TEMPLATE_REGEXP.test(name)?"value":"raw";
return{type,name};
};
const isTemplate=function(data){
const template=parseTemplate(data);
return template!==undefined&&!isEscape({template});
};exports.isTemplate=isTemplate;
const isTemplateName=function({name}){
return TEMPLATE_NAME_REGEXP.test(name)&&!isEscapeName({name});
};exports.isTemplateName=isTemplateName;
const parseEscape=function({
template,
template:{type,name,arg}})
{
if(!isEscape({template})){
return;
}
const nameA=name.replace(TEMPLATE_ESCAPE,"");
if(type==="function"){
return{[nameA]:arg};
}
return nameA;
};exports.parseEscape=parseEscape;
const isEscape=function({template:{type,name,tokens}}){
if(type==="concat"){
return tokens.some(template=>isEscape({template}));
}
return isEscapeName({name});
};
const isEscapeName=function({name}){
return name.startsWith(`${TEMPLATE_ESCAPE}${TEMPLATE_PREFIX}`);
};
const TEMPLATE_REGEXP=/^\$\$[\x2D\.0-9A-\[\]_a-z]+$/u;
const TEMPLATE_REGEXP_GLOBAL=/\$\$[\x2D\.0-9A-\[\]_a-z]+/gu;
const TEMPLATE_NAME_REGEXP=/^\$\$[\x2D0-9A-Z_a-z]+$/u;
const TEMPLATE_PREFIX="$$";
const TEMPLATE_ESCAPE="$";
//# sourceMappingURL=parse.js.map
;