UNPKG

@tempots/std

Version:

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

80 lines (79 loc) 2.01 kB
const a = (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(); }, h = (t) => { try { const e = new URL(t), n = {}; for (const [r, s] of e.searchParams) n[r] = s; return n; } catch { return {}; } }, f = (t, e, n) => { try { const r = new URL(t); return r.searchParams.set(e, n), r.toString(); } catch { return t; } }, g = (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; } }, y = (...t) => { if (t.length === 0) return ""; const e = t.filter((c) => c.length > 0); if (e.length === 0) return ""; const n = e[0].startsWith("/"), r = e[e.length - 1].endsWith("/"), o = e.map((c) => c.replace(/^\/+|\/+$/g, "")).filter((c) => c.length > 0).join("/"); return (n ? "/" : "") + o + (r ? "/" : ""); }, P = (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; }, i = (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 = i(t); return n ? e.substring(0, e.length - n.length) : e; }; export { u as buildUrl, d as getBaseName, i as getFileExtension, l as getFileName, h as getQueryParams, m as isValidUrl, y as joinPaths, P as normalizePath, a as parseUrl, g as removeQueryParam, f as setQueryParam };