UNPKG

test-openapi

Version:
125 lines (77 loc) 2.32 kB
"use strict";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