{"ast":null,"code":"import { LibsqlUrlParseError } from \"./errors.js\";\n;\n/** Parses a URL compatible with the libsql client (`@libsql/client`). This URL may have the \"libsql:\" scheme\n * and may contain query parameters. */\nexport function parseLibsqlUrl(urlStr) {\n const url = new URL(urlStr);\n let authToken = undefined;\n let tls = undefined;\n for (const [key, value] of url.searchParams.entries()) {\n if (key === \"authToken\") {\n authToken = value;\n } else if (key === \"tls\") {\n if (value === \"0\") {\n tls = false;\n } else if (value === \"1\") {\n tls = true;\n } else {\n throw new LibsqlUrlParseError(`Unknown value for the \"tls\" query argument: ${JSON.stringify(value)}`);\n }\n } else {\n throw new LibsqlUrlParseError(`Unknown URL query argument ${JSON.stringify(key)}`);\n }\n }\n let hranaWsScheme;\n let hranaHttpScheme;\n if ((url.protocol === \"http:\" || url.protocol === \"ws:\") && tls === true) {\n throw new LibsqlUrlParseError(`A ${JSON.stringify(url.protocol)} URL cannot opt into TLS using ?tls=1`);\n } else if ((url.protocol === \"https:\" || url.protocol === \"wss:\") && tls === false) {\n throw new LibsqlUrlParseError(`A ${JSON.stringify(url.protocol)} URL cannot opt out of TLS using ?tls=0`);\n }\n if (url.protocol === \"http:\" || url.protocol === \"https:\") {\n hranaHttpScheme = url.protocol;\n } else if (url.protocol === \"ws:\" || url.protocol === \"wss:\") {\n hranaWsScheme = url.protocol;\n } else if (url.protocol === \"libsql:\") {\n if (tls === false) {\n if (!url.port) {\n throw new LibsqlUrlParseError(`A \"libsql:\" URL with ?tls=0 must specify an explicit port`);\n }\n hranaHttpScheme = \"http:\";\n hranaWsScheme = \"ws:\";\n } else {\n hranaHttpScheme = \"https:\";\n hranaWsScheme = \"wss:\";\n }\n } else {\n throw new LibsqlUrlParseError(`This client does not support ${JSON.stringify(url.protocol)} URLs. ` + 'Please use a \"libsql:\", \"ws:\", \"wss:\", \"http:\" or \"https:\" URL instead.');\n }\n if (url.username || url.password) {\n throw new LibsqlUrlParseError(\"This client does not support HTTP Basic authentication with a username and password. \" + 'You can authenticate using a token passed in the \"authToken\" URL query parameter.');\n }\n if (url.hash) {\n throw new LibsqlUrlParseError(\"URL fragments are not supported\");\n }\n let hranaPath = url.pathname;\n if (hranaPath === \"/\") {\n hranaPath = \"\";\n }\n const hranaWsUrl = hranaWsScheme !== undefined ? `${hranaWsScheme}//${url.host}${hranaPath}` : undefined;\n const hranaHttpUrl = hranaHttpScheme !== undefined ? `${hranaHttpScheme}//${url.host}${hranaPath}` : undefined;\n return {\n hranaWsUrl,\n hranaHttpUrl,\n authToken\n };\n}","map":{"version":3,"names":["LibsqlUrlParseError","parseLibsqlUrl","urlStr","url","URL","authToken","undefined","tls","key","value","searchParams","entries","JSON","stringify","hranaWsScheme","hranaHttpScheme","protocol","port","username","password","hash","hranaPath","pathname","hranaWsUrl","host","hranaHttpUrl"],"sources":["/Users/shoofle/Projects/the-forest/node_modules/@libsql/hrana-client/lib-esm/libsql_url.js"],"sourcesContent":["import { LibsqlUrlParseError } from \"./errors.js\";\n;\n/** Parses a URL compatible with the libsql client (`@libsql/client`). This URL may have the \"libsql:\" scheme\n * and may contain query parameters. */\nexport function parseLibsqlUrl(urlStr) {\n const url = new URL(urlStr);\n let authToken = undefined;\n let tls = undefined;\n for (const [key, value] of url.searchParams.entries()) {\n if (key === \"authToken\") {\n authToken = value;\n }\n else if (key === \"tls\") {\n if (value === \"0\") {\n tls = false;\n }\n else if (value === \"1\") {\n tls = true;\n }\n else {\n throw new LibsqlUrlParseError(`Unknown value for the \"tls\" query argument: ${JSON.stringify(value)}`);\n }\n }\n else {\n throw new LibsqlUrlParseError(`Unknown URL query argument ${JSON.stringify(key)}`);\n }\n }\n let hranaWsScheme;\n let hranaHttpScheme;\n if ((url.protocol === \"http:\" || url.protocol === \"ws:\") && (tls === true)) {\n throw new LibsqlUrlParseError(`A ${JSON.stringify(url.protocol)} URL cannot opt into TLS using ?tls=1`);\n }\n else if ((url.protocol === \"https:\" || url.protocol === \"wss:\") && (tls === false)) {\n throw new LibsqlUrlParseError(`A ${JSON.stringify(url.protocol)} URL cannot opt out of TLS using ?tls=0`);\n }\n if (url.protocol === \"http:\" || url.protocol === \"https:\") {\n hranaHttpScheme = url.protocol;\n }\n else if (url.protocol === \"ws:\" || url.protocol === \"wss:\") {\n hranaWsScheme = url.protocol;\n }\n else if (url.protocol === \"libsql:\") {\n if (tls === false) {\n if (!url.port) {\n throw new LibsqlUrlParseError(`A \"libsql:\" URL with ?tls=0 must specify an explicit port`);\n }\n hranaHttpScheme = \"http:\";\n hranaWsScheme = \"ws:\";\n }\n else {\n hranaHttpScheme = \"https:\";\n hranaWsScheme = \"wss:\";\n }\n }\n else {\n throw new LibsqlUrlParseError(`This client does not support ${JSON.stringify(url.protocol)} URLs. ` +\n 'Please use a \"libsql:\", \"ws:\", \"wss:\", \"http:\" or \"https:\" URL instead.');\n }\n if (url.username || url.password) {\n throw new LibsqlUrlParseError(\"This client does not support HTTP Basic authentication with a username and password. \" +\n 'You can authenticate using a token passed in the \"authToken\" URL query parameter.');\n }\n if (url.hash) {\n throw new LibsqlUrlParseError(\"URL fragments are not supported\");\n }\n let hranaPath = url.pathname;\n if (hranaPath === \"/\") {\n hranaPath = \"\";\n }\n const hranaWsUrl = hranaWsScheme !== undefined\n ? `${hranaWsScheme}//${url.host}${hranaPath}` : undefined;\n const hranaHttpUrl = hranaHttpScheme !== undefined\n ? `${hranaHttpScheme}//${url.host}${hranaPath}` : undefined;\n return { hranaWsUrl, hranaHttpUrl, authToken };\n}\n"],"mappings":"AAAA,SAASA,mBAAmB,QAAQ,aAAa;AACjD;AACA;AACA;AACA,OAAO,SAASC,cAAcA,CAACC,MAAM,EAAE;EACnC,MAAMC,GAAG,GAAG,IAAIC,GAAG,CAACF,MAAM,CAAC;EAC3B,IAAIG,SAAS,GAAGC,SAAS;EACzB,IAAIC,GAAG,GAAGD,SAAS;EACnB,KAAK,MAAM,CAACE,GAAG,EAAEC,KAAK,CAAC,IAAIN,GAAG,CAACO,YAAY,CAACC,OAAO,CAAC,CAAC,EAAE;IACnD,IAAIH,GAAG,KAAK,WAAW,EAAE;MACrBH,SAAS,GAAGI,KAAK;IACrB,CAAC,MACI,IAAID,GAAG,KAAK,KAAK,EAAE;MACpB,IAAIC,KAAK,KAAK,GAAG,EAAE;QACfF,GAAG,GAAG,KAAK;MACf,CAAC,MACI,IAAIE,KAAK,KAAK,GAAG,EAAE;QACpBF,GAAG,GAAG,IAAI;MACd,CAAC,MACI;QACD,MAAM,IAAIP,mBAAmB,CAAC,+CAA+CY,IAAI,CAACC,SAAS,CAACJ,KAAK,CAAC,EAAE,CAAC;MACzG;IACJ,CAAC,MACI;MACD,MAAM,IAAIT,mBAAmB,CAAC,8BAA8BY,IAAI,CAACC,SAAS,CAACL,GAAG,CAAC,EAAE,CAAC;IACtF;EACJ;EACA,IAAIM,aAAa;EACjB,IAAIC,eAAe;EACnB,IAAI,CAACZ,GAAG,CAACa,QAAQ,KAAK,OAAO,IAAIb,GAAG,CAACa,QAAQ,KAAK,KAAK,KAAMT,GAAG,KAAK,IAAK,EAAE;IACxE,MAAM,IAAIP,mBAAmB,CAAC,KAAKY,IAAI,CAACC,SAAS,CAACV,GAAG,CAACa,QAAQ,CAAC,uCAAuC,CAAC;EAC3G,CAAC,MACI,IAAI,CAACb,GAAG,CAACa,QAAQ,KAAK,QAAQ,IAAIb,GAAG,CAACa,QAAQ,KAAK,MAAM,KAAMT,GAAG,KAAK,KAAM,EAAE;IAChF,MAAM,IAAIP,mBAAmB,CAAC,KAAKY,IAAI,CAACC,SAAS,CAACV,GAAG,CAACa,QAAQ,CAAC,yCAAyC,CAAC;EAC7G;EACA,IAAIb,GAAG,CAACa,QAAQ,KAAK,OAAO,IAAIb,GAAG,CAACa,QAAQ,KAAK,QAAQ,EAAE;IACvDD,eAAe,GAAGZ,GAAG,CAACa,QAAQ;EAClC,CAAC,MACI,IAAIb,GAAG,CAACa,QAAQ,KAAK,KAAK,IAAIb,GAAG,CAACa,QAAQ,KAAK,MAAM,EAAE;IACxDF,aAAa,GAAGX,GAAG,CAACa,QAAQ;EAChC,CAAC,MACI,IAAIb,GAAG,CAACa,QAAQ,KAAK,SAAS,EAAE;IACjC,IAAIT,GAAG,KAAK,KAAK,EAAE;MACf,IAAI,CAACJ,GAAG,CAACc,IAAI,EAAE;QACX,MAAM,IAAIjB,mBAAmB,CAAC,2DAA2D,CAAC;MAC9F;MACAe,eAAe,GAAG,OAAO;MACzBD,aAAa,GAAG,KAAK;IACzB,CAAC,MACI;MACDC,eAAe,GAAG,QAAQ;MAC1BD,aAAa,GAAG,MAAM;IAC1B;EACJ,CAAC,MACI;IACD,MAAM,IAAId,mBAAmB,CAAC,gCAAgCY,IAAI,CAACC,SAAS,CAACV,GAAG,CAACa,QAAQ,CAAC,SAAS,GAC/F,yEAAyE,CAAC;EAClF;EACA,IAAIb,GAAG,CAACe,QAAQ,IAAIf,GAAG,CAACgB,QAAQ,EAAE;IAC9B,MAAM,IAAInB,mBAAmB,CAAC,uFAAuF,GACjH,mFAAmF,CAAC;EAC5F;EACA,IAAIG,GAAG,CAACiB,IAAI,EAAE;IACV,MAAM,IAAIpB,mBAAmB,CAAC,iCAAiC,CAAC;EACpE;EACA,IAAIqB,SAAS,GAAGlB,GAAG,CAACmB,QAAQ;EAC5B,IAAID,SAAS,KAAK,GAAG,EAAE;IACnBA,SAAS,GAAG,EAAE;EAClB;EACA,MAAME,UAAU,GAAGT,aAAa,KAAKR,SAAS,GACxC,GAAGQ,aAAa,KAAKX,GAAG,CAACqB,IAAI,GAAGH,SAAS,EAAE,GAAGf,SAAS;EAC7D,MAAMmB,YAAY,GAAGV,eAAe,KAAKT,SAAS,GAC5C,GAAGS,eAAe,KAAKZ,GAAG,CAACqB,IAAI,GAAGH,SAAS,EAAE,GAAGf,SAAS;EAC/D,OAAO;IAAEiB,UAAU;IAAEE,YAAY;IAAEpB;EAAU,CAAC;AAClD","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}