{"version":3,"file":"uri.mjs","names":["createTag","encode","stringParts","_len","arguments","length","substitutions","Array","_key","reduce","prev","cur","i","rawSymbol","Symbol","representAsString","value","TypeError","Number","isNaN","isFinite","String","encodeComponent","encodeURIComponent","replace","c","charCodeAt","toString","toUpperCase","valueAsString","raw","uri"],"sources":["../../src/uri.js"],"sourcesContent":["\n// Utility: generic builder for template literal tags, using `encode` for each substitution\nconst createTag = encode => (stringParts, ...substitutions) =>\n    substitutions.reduce(\n        (prev, cur, i) => prev + encode(cur) + stringParts[i + 1],\n        stringParts[0]\n    );\n\n\nexport const rawSymbol = Symbol('uri.raw');\n\nconst representAsString = value => {\n    if (typeof value === 'undefined') {\n        throw new TypeError('Cannot encode URI component, given `undefined`');\n    } else if (typeof value === 'string') {\n        return value;\n    } else if (typeof value === 'number') {\n        if (Number.isNaN(value)) {\n            throw new TypeError('Cannot encode URI component, given NaN');\n        } else if (!Number.isFinite(value)) {\n            throw new TypeError(`Cannot encode URI component, given ${String(value)}`);\n        }\n        \n        return String(value);\n    } else if (typeof value === 'bigint') {\n        return String(value);\n    } else {\n        throw new TypeError(`Cannot encode URI component, given value of unsupported type: ${typeof value}`);\n    }\n};\n\nconst encodeComponent = value => {\n    // Sanity check: make sure we have `encodeURIComponent` (available in browsers, Node)\n    if (typeof encodeURIComponent !== 'function') {\n        throw new TypeError(`Missing encodeURIComponent`);\n    }\n    \n    // RFC 3986 compliant URI encoding\n    // See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent\n    return encodeURIComponent(value)\n        .replace(/[!'()*]/g, c => '%' + c.charCodeAt(0).toString(16).toUpperCase());\n};\n\nconst encode = value => {\n    if (typeof value === 'object' && value !== null && rawSymbol in value) {\n        return representAsString(value[rawSymbol]);\n    }\n    \n    const valueAsString = representAsString(value);\n    \n    return encodeComponent(valueAsString);\n};\n\nexport const raw = value => ({ [rawSymbol]: value });\n\nconst uri = createTag(encode);\nuri.raw = raw;\n\nexport default uri;\n"],"mappings":"AACA;AACA,MAAMA,SAAS,GAAGC,MAAM,IAAI,UAACC,WAAW;EAAA,SAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAKC,aAAa,OAAAC,KAAA,CAAAJ,IAAA,OAAAA,IAAA,WAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA;IAAbF,aAAa,CAAAE,IAAA,QAAAJ,SAAA,CAAAI,IAAA;EAAA;EAAA,OACtDF,aAAa,CAACG,MAAM,CAChB,CAACC,IAAI,EAAEC,GAAG,EAAEC,CAAC,KAAKF,IAAI,GAAGT,MAAM,CAACU,GAAG,CAAC,GAAGT,WAAW,CAACU,CAAC,GAAG,CAAC,CAAC,EACzDV,WAAW,CAAC,CAAC,CAAC,CACjB;AAAA;AAGL,OAAO,MAAMW,SAAS,GAAGC,MAAM,CAAC,SAAS,CAAC;AAE1C,MAAMC,iBAAiB,GAAGC,KAAK,IAAI;EAC/B,IAAI,OAAOA,KAAK,KAAK,WAAW,EAAE;IAC9B,MAAM,IAAIC,SAAS,CAAC,gDAAgD,CAAC;EACzE,CAAC,MAAM,IAAI,OAAOD,KAAK,KAAK,QAAQ,EAAE;IAClC,OAAOA,KAAK;EAChB,CAAC,MAAM,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAClC,IAAIE,MAAM,CAACC,KAAK,CAACH,KAAK,CAAC,EAAE;MACrB,MAAM,IAAIC,SAAS,CAAC,wCAAwC,CAAC;IACjE,CAAC,MAAM,IAAI,CAACC,MAAM,CAACE,QAAQ,CAACJ,KAAK,CAAC,EAAE;MAChC,MAAM,IAAIC,SAAS,CAAE,sCAAqCI,MAAM,CAACL,KAAK,CAAE,EAAC,CAAC;IAC9E;IAEA,OAAOK,MAAM,CAACL,KAAK,CAAC;EACxB,CAAC,MAAM,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAClC,OAAOK,MAAM,CAACL,KAAK,CAAC;EACxB,CAAC,MAAM;IACH,MAAM,IAAIC,SAAS,CAAE,iEAAgE,OAAOD,KAAM,EAAC,CAAC;EACxG;AACJ,CAAC;AAED,MAAMM,eAAe,GAAGN,KAAK,IAAI;EAC7B;EACA,IAAI,OAAOO,kBAAkB,KAAK,UAAU,EAAE;IAC1C,MAAM,IAAIN,SAAS,CAAE,4BAA2B,CAAC;EACrD;;EAEA;EACA;EACA,OAAOM,kBAAkB,CAACP,KAAK,CAAC,CAC3BQ,OAAO,CAAC,UAAU,EAAEC,CAAC,IAAI,GAAG,GAAGA,CAAC,CAACC,UAAU,CAAC,CAAC,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC,CAACC,WAAW,EAAE,CAAC;AACnF,CAAC;AAED,MAAM3B,MAAM,GAAGe,KAAK,IAAI;EACpB,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI,IAAIH,SAAS,IAAIG,KAAK,EAAE;IACnE,OAAOD,iBAAiB,CAACC,KAAK,CAACH,SAAS,CAAC,CAAC;EAC9C;EAEA,MAAMgB,aAAa,GAAGd,iBAAiB,CAACC,KAAK,CAAC;EAE9C,OAAOM,eAAe,CAACO,aAAa,CAAC;AACzC,CAAC;AAED,OAAO,MAAMC,GAAG,GAAGd,KAAK,KAAK;EAAE,CAACH,SAAS,GAAGG;AAAM,CAAC,CAAC;AAEpD,MAAMe,GAAG,GAAG/B,SAAS,CAACC,MAAM,CAAC;AAC7B8B,GAAG,CAACD,GAAG,GAAGA,GAAG;AAEb,eAAeC,GAAG"}