{"version":3,"sources":["../src/helpers/urlHelpers.ts"],"sourcesContent":["import qs from \"qs\";\nimport { AcceptedQueryTypes, AcceptedQueryValueTypes } from \"../types/Query\";\n\nconst normaliseUrl = function (url: string): string {\n\tlet protocolSplit = url.split(\"//\");\n\tlet normalisedUrl = \"\";\n\tif (\n\t\tprotocolSplit[0] &&\n\t\t(protocolSplit[0] === \"http:\" ||\n\t\t\tprotocolSplit[0] === \"https:\" ||\n\t\t\tprotocolSplit[0] === \"ws:\" ||\n\t\t\tprotocolSplit[0] === \"wss:\")\n\t) {\n\t\tnormalisedUrl = `${protocolSplit[0]}//`;\n\t\tprotocolSplit.splice(0, 1);\n\t}\n\n\tlet query = \"\";\n\tlet querySplit = protocolSplit.join(\"//\").split(\"?\");\n\tif (querySplit.length > 1) {\n\t\tquery = `?${querySplit.slice(1, querySplit.length).join(\"?\")}`;\n\t}\n\tconst pathSplit = querySplit[0].split(\"/\");\n\n\tfor (let n = 0; n < pathSplit.length; n++) {\n\t\tif (pathSplit[n]) {\n\t\t\tnormalisedUrl += `${pathSplit[n]}/`;\n\t\t}\n\t}\n\n\tnormalisedUrl = normalisedUrl.substring(0, normalisedUrl.length - 1);\n\treturn normalisedUrl + query;\n};\n\nconst toQueryObject = function (\n\tkey: string,\n\tvalue: AcceptedQueryValueTypes\n): AcceptedQueryTypes {\n\tlet obj: any = {};\n\tobj[key] = value;\n\treturn obj;\n};\n\nconst toQueryString = function (obj: AcceptedQueryTypes): string {\n\treturn qs.stringify(obj, {\n\t\tarrayFormat: \"indices\",\n\t\tencodeValuesOnly: true,\n\t\tformat: \"RFC3986\",\n\t});\n};\n\nconst generateQueryString = function (query: AcceptedQueryTypes): string {\n\tlet queryString = \"?\";\n\n\tObject.keys(query).forEach((key) => {\n\t\tlet value = query[key];\n\t\tif (value !== undefined && typeof value !== \"function\") {\n\t\t\tif (value === null) {\n\t\t\t\tqueryString += `${key}=null&`;\n\t\t\t} else {\n\t\t\t\tqueryString += `${toQueryString(toQueryObject(key, value))}&`;\n\t\t\t}\n\t\t}\n\t});\n\t// removes trailing &, or ? if empty query\n\tqueryString = queryString.substring(0, queryString.length - 1);\n\n\treturn queryString;\n};\n\nconst isValidUrl = function (urlLike: string): boolean {\n\tlet url: URL;\n\ttry {\n\t\turl = new URL(urlLike);\n\t} catch (_) {\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nexport { normaliseUrl, generateQueryString, isValidUrl };\n"],"mappings":";AAAA,OAAO,QAAQ;AAGf,IAAM,eAAe,SAAU,KAAqB;AACnD,MAAI,gBAAgB,IAAI,MAAM,IAAI;AAClC,MAAI,gBAAgB;AACpB,MACC,cAAc,CAAC,MACd,cAAc,CAAC,MAAM,WACrB,cAAc,CAAC,MAAM,YACrB,cAAc,CAAC,MAAM,SACrB,cAAc,CAAC,MAAM,SACrB;AACD,oBAAgB,GAAG,cAAc,CAAC,CAAC;AACnC,kBAAc,OAAO,GAAG,CAAC;AAAA,EAC1B;AAEA,MAAI,QAAQ;AACZ,MAAI,aAAa,cAAc,KAAK,IAAI,EAAE,MAAM,GAAG;AACnD,MAAI,WAAW,SAAS,GAAG;AAC1B,YAAQ,IAAI,WAAW,MAAM,GAAG,WAAW,MAAM,EAAE,KAAK,GAAG,CAAC;AAAA,EAC7D;AACA,QAAM,YAAY,WAAW,CAAC,EAAE,MAAM,GAAG;AAEzC,WAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AAC1C,QAAI,UAAU,CAAC,GAAG;AACjB,uBAAiB,GAAG,UAAU,CAAC,CAAC;AAAA,IACjC;AAAA,EACD;AAEA,kBAAgB,cAAc,UAAU,GAAG,cAAc,SAAS,CAAC;AACnE,SAAO,gBAAgB;AACxB;AAEA,IAAM,gBAAgB,SACrB,KACA,OACqB;AACrB,MAAI,MAAW,CAAC;AAChB,MAAI,GAAG,IAAI;AACX,SAAO;AACR;AAEA,IAAM,gBAAgB,SAAU,KAAiC;AAChE,SAAO,GAAG,UAAU,KAAK;AAAA,IACxB,aAAa;AAAA,IACb,kBAAkB;AAAA,IAClB,QAAQ;AAAA,EACT,CAAC;AACF;AAEA,IAAM,sBAAsB,SAAU,OAAmC;AACxE,MAAI,cAAc;AAElB,SAAO,KAAK,KAAK,EAAE,QAAQ,CAAC,QAAQ;AACnC,QAAI,QAAQ,MAAM,GAAG;AACrB,QAAI,UAAU,UAAa,OAAO,UAAU,YAAY;AACvD,UAAI,UAAU,MAAM;AACnB,uBAAe,GAAG,GAAG;AAAA,MACtB,OAAO;AACN,uBAAe,GAAG,cAAc,cAAc,KAAK,KAAK,CAAC,CAAC;AAAA,MAC3D;AAAA,IACD;AAAA,EACD,CAAC;AAED,gBAAc,YAAY,UAAU,GAAG,YAAY,SAAS,CAAC;AAE7D,SAAO;AACR;AAEA,IAAM,aAAa,SAAU,SAA0B;AACtD,MAAI;AACJ,MAAI;AACH,UAAM,IAAI,IAAI,OAAO;AAAA,EACtB,SAAS,GAAG;AACX,WAAO;AAAA,EACR;AACA,SAAO;AACR;","names":[]}