{"version":3,"file":"public-ip-6282ae79.js","sources":["../../node_modules/public-ip/core.js","../../node_modules/public-ip/browser.js"],"sourcesContent":["import AggregateError from 'aggregate-error'; // Use built-in when targeting Node.js 16\n\nexport class IpNotFoundError extends Error {\n\tconstructor(options) {\n\t\tsuper('Could not get the public IP address', options);\n\t\tthis.name = 'IpNotFoundError';\n\t}\n}\n\nexport function createPublicIp(publicIpv4, publicIpv6) {\n\treturn function publicIp(options) { // eslint-disable-line func-names\n\t\tconst ipv4Promise = publicIpv4(options);\n\t\tconst ipv6Promise = publicIpv6(options);\n\n\t\tconst promise = (async () => {\n\t\t\ttry {\n\t\t\t\tconst ipv6 = await ipv6Promise;\n\t\t\t\tipv4Promise.catch(() => {}); // Don't throw when cancelling\n\t\t\t\tipv4Promise.cancel();\n\t\t\t\treturn ipv6;\n\t\t\t} catch (ipv6Error) {\n\t\t\t\tif (!(ipv6Error instanceof IpNotFoundError)) {\n\t\t\t\t\tthrow ipv6Error;\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\treturn await ipv4Promise;\n\t\t\t\t} catch (ipv4Error) {\n\t\t\t\t\tthrow new AggregateError([ipv4Error, ipv6Error]);\n\t\t\t\t}\n\t\t\t}\n\t\t})();\n\n\t\tpromise.cancel = () => {\n\t\t\tipv4Promise.cancel();\n\t\t\tipv6Promise.cancel();\n\t\t};\n\n\t\treturn promise;\n\t};\n}\n","import {isIPv6, isIPv4} from 'is-ip';\nimport {createPublicIp, IpNotFoundError} from './core.js';\n\nexport class CancelError extends Error {\n\tconstructor() {\n\t\tsuper('Request was cancelled');\n\t\tthis.name = 'CancelError';\n\t}\n\n\tget isCanceled() {\n\t\treturn true;\n\t}\n}\n\nexport {IpNotFoundError} from './core.js';\n\nconst defaults = {\n\ttimeout: 5000,\n};\n\nconst urls = {\n\tv4: [\n\t\t'https://ipv4.icanhazip.com/',\n\t\t'https://api.ipify.org/',\n\t],\n\tv6: [\n\t\t'https://ipv6.icanhazip.com/',\n\t\t'https://api6.ipify.org/',\n\t],\n};\n\nconst sendXhr = (url, options, version) => {\n\tconst xhr = new XMLHttpRequest();\n\n\tlet _reject;\n\tconst promise = new Promise((resolve, reject) => {\n\t\t_reject = reject;\n\t\txhr.addEventListener('error', reject, {once: true});\n\t\txhr.addEventListener('timeout', reject, {once: true});\n\n\t\txhr.addEventListener('load', () => {\n\t\t\tconst ip = xhr.responseText.trim();\n\t\t\tconst method = version === 'v6' ? isIPv6 : isIPv4;\n\n\t\t\tif (!ip || !method(ip)) {\n\t\t\t\treject();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresolve(ip);\n\t\t}, {once: true});\n\n\t\txhr.open('GET', url);\n\t\txhr.timeout = options.timeout;\n\t\txhr.send();\n\t});\n\n\tpromise.cancel = () => {\n\t\txhr.abort();\n\t\t_reject(new CancelError());\n\t};\n\n\treturn promise;\n};\n\nconst queryHttps = (version, options) => {\n\tlet request;\n\tconst promise = (async function () {\n\t\tconst urls_ = [\n\t\t\t...urls[version],\n\t\t\t...(options.fallbackUrls ?? []),\n\t\t];\n\n\t\tlet lastError;\n\t\tfor (const url of urls_) {\n\t\t\ttry {\n\t\t\t\trequest = sendXhr(url, options, version);\n\t\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\t\tconst ip = await request;\n\t\t\t\treturn ip;\n\t\t\t} catch (error) {\n\t\t\t\tlastError = error;\n\n\t\t\t\tif (error instanceof CancelError) {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthrow new IpNotFoundError({cause: lastError});\n\t})();\n\n\tpromise.cancel = () => {\n\t\trequest.cancel();\n\t};\n\n\treturn promise;\n};\n\nexport const publicIp = createPublicIp(publicIpv4, publicIpv6);\n\nexport function publicIpv4(options) {\n\treturn queryHttps('v4', {...defaults, ...options});\n}\n\nexport function publicIpv6(options) {\n\treturn queryHttps('v6', {...defaults, ...options});\n}\n"],"names":["IpNotFoundError","options","CancelError","defaults","urls","sendXhr","url","version","xhr","_reject","promise","resolve","reject","ip","isIPv6","isIPv4","queryHttps","request","urls_","lastError","error","publicIpv4"],"mappings":"iFAEO,MAAMA,UAAwB,KAAM,CAC1C,YAAYC,EAAS,CACpB,MAAM,sCAAuCA,CAAO,EACpD,KAAK,KAAO,iBACZ,CACF,CCJO,MAAMC,UAAoB,KAAM,CACtC,aAAc,CACb,MAAM,uBAAuB,EAC7B,KAAK,KAAO,aACZ,CAED,IAAI,YAAa,CAChB,MAAO,EACP,CACF,CAIA,MAAMC,EAAW,CAChB,QAAS,GACV,EAEMC,EAAO,CACZ,GAAI,CACH,8BACA,wBACA,EACD,GAAI,CACH,8BACA,yBACA,CACF,EAEMC,EAAU,CAACC,EAAKL,EAASM,IAAY,CAC1C,MAAMC,EAAM,IAAI,eAEhB,IAAIC,EACJ,MAAMC,EAAU,IAAI,QAAQ,CAACC,EAASC,IAAW,CAChDH,EAAUG,EACVJ,EAAI,iBAAiB,QAASI,EAAQ,CAAC,KAAM,EAAI,CAAC,EAClDJ,EAAI,iBAAiB,UAAWI,EAAQ,CAAC,KAAM,EAAI,CAAC,EAEpDJ,EAAI,iBAAiB,OAAQ,IAAM,CAClC,MAAMK,EAAKL,EAAI,aAAa,KAAI,EAGhC,GAAI,CAACK,GAAM,EAFIN,IAAY,KAAOO,EAASC,GAExBF,CAAE,EAAG,CACvBD,IACA,MACA,CAEDD,EAAQE,CAAE,CACb,EAAK,CAAC,KAAM,EAAI,CAAC,EAEfL,EAAI,KAAK,MAAOF,CAAG,EACnBE,EAAI,QAAUP,EAAQ,QACtBO,EAAI,KAAI,CACV,CAAE,EAED,OAAAE,EAAQ,OAAS,IAAM,CACtBF,EAAI,MAAK,EACTC,EAAQ,IAAIP,CAAa,CAC3B,EAEQQ,CACR,EAEMM,EAAa,CAACT,EAASN,IAAY,CACxC,IAAIgB,EACJ,MAAMP,EAAW,gBAAkB,CAClC,MAAMQ,EAAQ,CACb,GAAGd,EAAKG,CAAO,EACf,GAAIN,EAAQ,cAAgB,EAC/B,EAEE,IAAIkB,EACJ,UAAWb,KAAOY,EACjB,GAAI,CACH,OAAAD,EAAUZ,EAAQC,EAAKL,EAASM,CAAO,EAE5B,MAAMU,CAEjB,OAAQG,EAAO,CAGf,GAFAD,EAAYC,EAERA,aAAiBlB,EACpB,MAAMkB,CAEP,CAGF,MAAM,IAAIpB,EAAgB,CAAC,MAAOmB,CAAS,CAAC,CAC9C,IAEC,OAAAT,EAAQ,OAAS,IAAM,CACtBO,EAAQ,OAAM,CAChB,EAEQP,CACR,EAIO,SAASW,EAAWpB,EAAS,CACnC,OAAOe,EAAW,KAAM,CAAC,GAAGb,EAAU,GAAGF,CAAO,CAAC,CAClD","x_google_ignoreList":[0,1]}