@bearstudio/lunalink
Version:
Lightweight TypeScript library to efficiently maintain and build URLs
2 lines (1 loc) • 712 B
JavaScript
import g from"query-string";function l(t,e,n){let r=f(t,e);return n?.baseURL?u(n.baseURL.toString(),r,"/"):r}var o=/:[_A-Za-z]+\w*/g;function f(t,e){let n=new Map(Object.entries(e)),r=new Set,a=t.replace(o,i=>{let s=i.slice(1);if(!n.has(s))throw new Error(`Missing parameter ${s}`);return r.add(s),encodeURIComponent(e[s])}),c=[...n].filter(([i])=>!r.has(i));if(c.length===0)return a;let P=g.stringify(Object.fromEntries(c));return`${m(a)}?${P}`}function m(t){return t.endsWith("?")?t.slice(0,-1):t}function u(t,e,n="/"){return/^https?:\/\//.test(e)&&!/^https?:\/\//.test(t)&&([t,e]=[e,t]),t=t.replace(new RegExp(`${n}+$`),""),e=e.replace(new RegExp(`^${n}+`),""),`${t}${n}${e}`}export{u as join,l as lunalink};