@azure-utils/storybooks
Version:
Utils to upload and manage Storybooks via Azure Functions and storage.
1 lines • 2.97 kB
Source Map (JSON)
{"version":3,"file":"url-utils-B9Pl4bQ7.mjs","names":["query: URLSearchParams | FormData","result: Record<string, any>","segments: string[]"],"sources":["../src/utils/url-utils.ts"],"sourcesContent":["import type { FormData } from \"undici\";\n\nexport function urlSearchParamsToObject(\n query: URLSearchParams | FormData\n): Record<string, any> {\n const result: Record<string, any> = {};\n\n for (const key of query.keys()) {\n const values = query.getAll(key);\n // If multiple values for the same key, return array, else single value string\n result[key] = values.length > 1 ? values : values[0];\n }\n\n return result;\n}\n\nexport function joinUrl(...parts: string[]): string {\n if (parts.length === 0) return \"\";\n let protocol = \"\";\n let host = \"\";\n\n // Detect protocol + host in the first argument if present\n const match = parts[0]?.match(/^([a-zA-Z][a-zA-Z0-9+\\-.]*:)?(\\/\\/[^\\/?#]*)?/);\n if (match && (match[1] || match[2])) {\n protocol = match[1] || \"\"; // e.g. \"https:\"\n host = match[2] || \"\"; // e.g. \"//example.com\"\n const remainder = parts[0]?.slice((match[0] || \"\").length);\n parts = remainder ? [remainder, ...parts.slice(1)] : parts.slice(1);\n }\n\n const segments: string[] = [];\n for (const part of parts) {\n for (const seg of part.split(\"/\")) {\n if (!seg || seg === \".\") continue;\n if (seg === \"..\") {\n // Don't pop past the beginning\n if (segments.length > 0) {\n segments.pop();\n }\n } else {\n segments.push(seg);\n }\n }\n }\n\n // Build the final URL\n let result = \"\";\n if (protocol || host) {\n result = protocol + host;\n if (segments.length > 0) {\n // Ensure separator slash between host and path\n result +=\n segments[0]?.startsWith(\"?\") || segments[0]?.startsWith(\"#\")\n ? \"\"\n : \"/\" + segments.join(\"/\");\n }\n } else {\n result = \"/\" + segments.join(\"/\");\n }\n\n return result;\n}\n"],"mappings":";AAEA,SAAgB,wBACdA,OACqB;CACrB,MAAMC,SAA8B,CAAE;AAEtC,MAAK,MAAM,OAAO,MAAM,MAAM,EAAE;EAC9B,MAAM,SAAS,MAAM,OAAO,IAAI;EAEhC,OAAO,OAAO,OAAO,SAAS,IAAI,SAAS,OAAO;CACnD;AAED,QAAO;AACR;AAED,SAAgB,QAAQ,GAAG,OAAyB;AAClD,KAAI,MAAM,WAAW,EAAG,QAAO;CAC/B,IAAI,WAAW;CACf,IAAI,OAAO;CAGX,MAAM,QAAQ,MAAM,IAAI,MAAM,+CAA+C;AAC7E,KAAI,UAAU,MAAM,MAAM,MAAM,KAAK;EACnC,WAAW,MAAM,MAAM;EACvB,OAAO,MAAM,MAAM;EACnB,MAAM,YAAY,MAAM,IAAI,OAAO,MAAM,MAAM,IAAI,OAAO;EAC1D,QAAQ,YAAY,CAAC,WAAW,GAAG,MAAM,MAAM,EAAE,AAAC,IAAG,MAAM,MAAM,EAAE;CACpE;CAED,MAAMC,WAAqB,CAAE;AAC7B,MAAK,MAAM,QAAQ,MACjB,MAAK,MAAM,OAAO,KAAK,MAAM,IAAI,EAAE;AACjC,MAAI,CAAC,OAAO,QAAQ,IAAK;AACzB,MAAI,QAAQ,MAEV;OAAI,SAAS,SAAS,GACpB,SAAS,KAAK;EACf,OAED,SAAS,KAAK,IAAI;CAErB;CAIH,IAAI,SAAS;AACb,KAAI,YAAY,MAAM;EACpB,SAAS,WAAW;AACpB,MAAI,SAAS,SAAS,GAEpB,UACE,SAAS,IAAI,WAAW,IAAI,IAAI,SAAS,IAAI,WAAW,IAAI,GACxD,KACA,MAAM,SAAS,KAAK,IAAI;CAEjC,OACC,SAAS,MAAM,SAAS,KAAK,IAAI;AAGnC,QAAO;AACR"}