UNPKG

test-openapi

Version:
101 lines (62 loc) 2.2 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.addUrlParams=void 0;var _pathToRegexp=require("path-to-regexp"); var _path=require("../../../../utils/path.js"); var _prefix=require("../../../../utils/prefix.js"); var _error=require("../../../../errors/error.js"); var _handler=require("../../../../errors/handler.js"); const addUrlParams=function({url,rawRequest}){ const urlParams=(0,_prefix.removePrefixes)(rawRequest,"url"); const tokens=parseUrl({url}); validateRequiredParams({tokens,urlParams}); const urlA=serializeUrl({tokens,urlParams}); return urlA; };exports.addUrlParams=addUrlParams; const parseUrl=function({url}){ const tokens=(0,_pathToRegexp.parse)(url); const tokensA=tokens.map(handlePort); return tokensA; }; const handlePort=function(token){ if(typeof token==="string"){ return token; } if(isPort(token)){ return`${token.delimiter}:${token.name}`; } return token; }; const isPort=function({name,optional,repeat}){ return!optional&&!repeat&&PORT_REGEXP.test(name); }; const PORT_REGEXP=/^[0-9]+$/u; const validateRequiredParams=function({tokens,urlParams}){ tokens.forEach(token=>validateRequiredParam({token,urlParams})); }; const validateRequiredParam=function({token,urlParams}){ if(!isRequiredParam(token)){ return; } const{name}=token; if(urlParams[name]!==undefined&&urlParams[name]!==""){ return; } throwError("must not be empty",{name}); }; const isRequiredParam=function(token){ return typeof token!=="string"&&!token.optional; }; const serializeUrl=function({tokens,urlParams}){ return tokens.map(token=>eSerializeToken({token,urlParams})).join(""); }; const serializeToken=function({token,urlParams}){ return(0,_pathToRegexp.tokensToFunction)([token])(urlParams); }; const serializeTokenHandler=function({message},{token:{name}}){ throwError(`is invalid: ${message}`,{name}); }; const eSerializeToken=(0,_handler.addErrorHandler)(serializeToken,serializeTokenHandler); const throwError=function(message,{name}){ const property=(0,_path.getPath)(["task","call",`url.${name}`]); throw new _error.TestOpenApiError(`The URL parameter '${name}' ${message}`,{ property}); }; //# sourceMappingURL=params.js.map