UNPKG

@tempots/std

Version:

Std library for TypeScript. Natural complement to the Tempo libraries.

2 lines (1 loc) 1.61 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=t=>{try{return new URL(t)}catch{return null}},u=(t,e)=>{if(!e||Object.keys(e).length===0)return t;const n=new URL(t);for(const[r,s]of Object.entries(e))n.searchParams.set(r,s);return n.toString()},g=t=>{try{const e=new URL(t),n={};for(const[r,s]of e.searchParams)n[r]=s;return n}catch{return{}}},h=(t,e,n)=>{try{const r=new URL(t);return r.searchParams.set(e,n),r.toString()}catch{return t}},f=(t,e)=>{try{const n=new URL(t);return n.searchParams.delete(e),n.toString()}catch{return t}},m=t=>{try{return new URL(t),!0}catch{return!1}},P=(...t)=>{if(t.length===0)return"";const e=t.filter(a=>a.length>0);if(e.length===0)return"";const n=e[0].startsWith("/"),r=e[e.length-1].endsWith("/"),o=e.map(a=>a.replace(/^\/+|\/+$/g,"")).filter(a=>a.length>0).join("/");return(n?"/":"")+o+(r?"/":"")},y=t=>{if(!t)return"";const e=t.startsWith("/"),n=t.split("/").filter(o=>o.length>0),r=[];for(const o of n)o!=="."&&(o===".."?r.length>0&&r[r.length-1]!==".."?r.pop():e||r.push(".."):r.push(o));const s=r.join("/");return e?"/"+s:s},c=t=>{const e=l(t),n=e.lastIndexOf(".");return n===-1||n===0?"":e.substring(n)},l=t=>{if(!t||t.match(/\/+$/))return"";const e=t.lastIndexOf("/");return e===-1?t:t.substring(e+1)},d=t=>{const e=l(t),n=c(t);return n?e.substring(0,e.length-n.length):e};exports.buildUrl=u;exports.getBaseName=d;exports.getFileExtension=c;exports.getFileName=l;exports.getQueryParams=g;exports.isValidUrl=m;exports.joinPaths=P;exports.normalizePath=y;exports.parseUrl=i;exports.removeQueryParam=f;exports.setQueryParam=h;