@bearstudio/lunalink
Version:
Lightweight TypeScript library to efficiently maintain and build URLs
2 lines (1 loc) • 1.39 kB
JavaScript
;var $=Object.create;var i=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var R=Object.getOwnPropertyNames;var d=Object.getPrototypeOf,p=Object.prototype.hasOwnProperty;var y=(e,n)=>{for(var t in n)i(e,t,{get:n[t],enumerable:!0})},c=(e,n,t,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let a of R(n))!p.call(e,a)&&a!==t&&i(e,a,{get:()=>n[a],enumerable:!(r=x(n,a))||r.enumerable});return e};var E=(e,n,t)=>(t=e!=null?$(d(e)):{},c(n||!e||!e.__esModule?i(t,"default",{value:e,enumerable:!0}):t,e)),b=e=>c(i({},"__esModule",{value:!0}),e);var A={};y(A,{join:()=>g,lunalink:()=>U});module.exports=b(A);var u=E(require("query-string"),1);function U(e,n,t){let r=C(e,n,t);return t?.baseURL?g(t.baseURL.toString(),r,"/"):r}var w=/:[_A-Za-z]+\w*/g;function C(e,n,t){let r=new Map(Object.entries(n)),a=new Set,l=t?.encodeURIComponent??encodeURIComponent,m=e.replace(w,o=>{let s=o.slice(1);if(!r.has(s))throw new Error(`Missing parameter ${s}`);return a.add(s),l(n[s])}),P=[...r].filter(([o])=>!a.has(o));if(P.length===0)return m;let f=u.default.stringify(Object.fromEntries(P));return`${h(m)}?${f}`}function h(e){return e.endsWith("?")?e.slice(0,-1):e}function g(e,n,t="/"){return/^https?:\/\//.test(n)&&!/^https?:\/\//.test(e)&&([e,n]=[n,e]),e=e.replace(new RegExp(`${t}+$`),""),n=n.replace(new RegExp(`^${t}+`),""),`${e}${t}${n}`}0&&(module.exports={join,lunalink});