@gibme/ipinfo 1.0.2 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2016-2023 Brandon Lehmann
1
+ Copyright (c) 2016-2025 Brandon Lehmann
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining a copy
4
4
  of this software and associated documentation files (the "Software"), to deal
package/dist/index.d.ts CHANGED
@@ -1,15 +1,38 @@
1
- import { PrefixInfo } from './types';
2
- import { CheckIP } from './web';
3
- export { CheckIP };
1
+ export { ipInfo } from './web';
4
2
  /**
5
- * Looks up information regarding the IP address supplied
3
+ * Looks up information on the Autonomous System Number (ASN) via DNS
4
+ *
5
+ * @param as
6
+ * @param max_retries
7
+ * @ignore
8
+ */
9
+ export declare function getASN(as: string | number, max_retries?: number): Promise<getASN.Entry | undefined>;
10
+ export declare namespace getASN {
11
+ type Entry = {
12
+ asn: number;
13
+ country: string;
14
+ registry: string;
15
+ allocated: Date;
16
+ name: string;
17
+ };
18
+ }
19
+ /**
20
+ * Looks up the prefix information via DNS
6
21
  *
7
22
  * @param address
8
23
  * @param max_retries
24
+ * @ignore
9
25
  */
10
- export declare const IPInfo: (address: string, max_retries?: number) => Promise<PrefixInfo | undefined>;
11
- declare const _default: {
12
- IPInfo: (address: string, max_retries?: number) => Promise<PrefixInfo | undefined>;
13
- CheckIP: (address?: string) => Promise<import("./types").CheckIPResponse | undefined>;
14
- };
15
- export default _default;
26
+ export declare function getPrefix(address: string, max_retries?: number): Promise<getPrefix.Info | undefined>;
27
+ export declare namespace getPrefix {
28
+ type Info = {
29
+ address: string;
30
+ zone: string;
31
+ asn: number;
32
+ prefix: string;
33
+ country: string;
34
+ registry: string;
35
+ allocated: Date;
36
+ as?: getASN.Entry;
37
+ };
38
+ }
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright (c) 2016-2024, Brandon Lehmann <brandonlehmann@gmail.com>
2
+ // Copyright (c) 2016-2025, Brandon Lehmann <brandonlehmann@gmail.com>
3
3
  //
4
4
  // Permission is hereby granted, free of charge, to any person obtaining a copy
5
5
  // of this software and associated documentation files (the "Software"), to deal
@@ -27,26 +27,126 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
27
27
  step((generator = generator.apply(thisArg, _arguments || [])).next());
28
28
  });
29
29
  };
30
- var __importDefault = (this && this.__importDefault) || function (mod) {
31
- return (mod && mod.__esModule) ? mod : { "default": mod };
32
- };
33
30
  Object.defineProperty(exports, "__esModule", { value: true });
34
- exports.IPInfo = exports.CheckIP = void 0;
35
- const helpers_1 = __importDefault(require("./helpers"));
36
- const web_1 = require("./web");
37
- Object.defineProperty(exports, "CheckIP", { enumerable: true, get: function () { return web_1.CheckIP; } });
31
+ exports.ipInfo = void 0;
32
+ exports.getASN = getASN;
33
+ exports.getPrefix = getPrefix;
34
+ const promises_1 = require("dns/promises");
35
+ var web_1 = require("./web");
36
+ Object.defineProperty(exports, "ipInfo", { enumerable: true, get: function () { return web_1.ipInfo; } });
37
+ /** @ignore */
38
+ const sleep = (timeout) => __awaiter(void 0, void 0, void 0, function* () { return new Promise(resolve => setTimeout(resolve, timeout)); });
39
+ /** @ignore */
40
+ const countColons = (value) => {
41
+ let count = 0;
42
+ value.replace(/:/g, val => { count++; return val; });
43
+ return count;
44
+ };
38
45
  /**
39
- * Looks up information regarding the IP address supplied
46
+ * @ignore
47
+ * Expands compressed IPv6 address to uncompressed form
40
48
  *
41
- * @param address
49
+ * @param value
50
+ */
51
+ const expandIPv6 = (value) => {
52
+ return value.replace(/::/, () => {
53
+ return `:${Array((7 - countColons(value)) + 1).join(':')}:`;
54
+ })
55
+ .split(':')
56
+ .map(val => {
57
+ return Array(4 - val.length).fill('0').join('') + val;
58
+ })
59
+ .join(':');
60
+ };
61
+ /**
62
+ * DNS TXT record resolution with automatic retries
63
+ *
64
+ * @param hostname
42
65
  * @param max_retries
66
+ * @param retry
67
+ * @ignore
43
68
  */
44
- const IPInfo = (address_1, ...args_1) => __awaiter(void 0, [address_1, ...args_1], void 0, function* (address, max_retries = 3) {
45
- return helpers_1.default.getPrefix(address, max_retries);
69
+ const getTxtRecord = (hostname_1, ...args_1) => __awaiter(void 0, [hostname_1, ...args_1], void 0, function* (hostname, max_retries = 3, retry = 0) {
70
+ try {
71
+ return yield (0, promises_1.resolveTxt)(hostname);
72
+ }
73
+ catch (error) {
74
+ if (error.toString().toLowerCase().includes('refused') && retry < max_retries) {
75
+ yield sleep(1000);
76
+ return getTxtRecord(hostname, max_retries, retry);
77
+ }
78
+ throw error;
79
+ }
46
80
  });
47
- exports.IPInfo = IPInfo;
48
- exports.default = {
49
- IPInfo: exports.IPInfo,
50
- CheckIP: web_1.CheckIP
51
- };
81
+ /**
82
+ * Looks up information on the Autonomous System Number (ASN) via DNS
83
+ *
84
+ * @param as
85
+ * @param max_retries
86
+ * @ignore
87
+ */
88
+ function getASN(as_1) {
89
+ return __awaiter(this, arguments, void 0, function* (as, max_retries = 3) {
90
+ if (typeof as === 'string') {
91
+ as = parseInt(as);
92
+ }
93
+ const records = yield getTxtRecord(`AS${as}.asn.cymru.com`, max_retries);
94
+ if (records.length === 0 || records[0].length === 0) {
95
+ return undefined;
96
+ }
97
+ const [, country, registry, allocated, name] = records[0][0].split('|')
98
+ .map(elem => elem.trim());
99
+ return {
100
+ asn: as,
101
+ country: country.toUpperCase(),
102
+ registry: registry.toUpperCase(),
103
+ allocated: new Date(allocated),
104
+ name: name.split(',')[0]
105
+ };
106
+ });
107
+ }
108
+ /**
109
+ * Looks up the prefix information via DNS
110
+ *
111
+ * @param address
112
+ * @param max_retries
113
+ * @ignore
114
+ */
115
+ function getPrefix(address_1) {
116
+ return __awaiter(this, arguments, void 0, function* (address, max_retries = 3) {
117
+ const original_address = address;
118
+ address = address.split('/')[0]; // strip off any CIDR notation
119
+ if (address.includes(':')) {
120
+ address = expandIPv6(address);
121
+ address = address.split(':')
122
+ .join('')
123
+ .split('')
124
+ .reverse()
125
+ .join('.');
126
+ address = `${address}.origin6.asn.cymru.com`;
127
+ }
128
+ else {
129
+ address = address.split('.')
130
+ .reverse()
131
+ .join('.');
132
+ address = `${address}.origin.asn.cymru.com`;
133
+ }
134
+ const records = yield getTxtRecord(address, max_retries);
135
+ if (records.length === 0 || records[0].length === 0) {
136
+ return undefined;
137
+ }
138
+ const [asn, prefix, country, registry, allocated] = records[0][0].split('|')
139
+ .map(elem => elem.trim());
140
+ return {
141
+ address: original_address,
142
+ zone: address,
143
+ asn: parseInt(asn),
144
+ prefix,
145
+ country: country.toUpperCase(),
146
+ registry: registry.toUpperCase(),
147
+ allocated: new Date(allocated),
148
+ as: yield getASN(asn)
149
+ };
150
+ });
151
+ }
52
152
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,EAAE;AACF,+EAA+E;AAC/E,gFAAgF;AAChF,+EAA+E;AAC/E,4EAA4E;AAC5E,wEAAwE;AACxE,2DAA2D;AAC3D,EAAE;AACF,iFAAiF;AACjF,kDAAkD;AAClD,EAAE;AACF,6EAA6E;AAC7E,2EAA2E;AAC3E,8EAA8E;AAC9E,yEAAyE;AACzE,gFAAgF;AAChF,gFAAgF;AAChF,YAAY;;;;;;;;;;;;;;;AAGZ,wDAAgC;AAChC,+BAAgC;AACvB,wFADA,aAAO,OACA;AAEhB;;;;;GAKG;AACI,MAAM,MAAM,GAAG,uBAGa,EAAE,8DAFjC,OAAe,EACf,WAAW,GAAG,CAAC;IAEf,OAAO,iBAAO,CAAC,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AACnD,CAAC,CAAA,CAAC;AALW,QAAA,MAAM,UAKjB;AAEF,kBAAe;IACX,MAAM,EAAN,cAAM;IACN,OAAO,EAAP,aAAO;CACV,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var n in r)("object"==typeof exports?exports:e)[n]=r[n]}}(self,(()=>(()=>{var e={568:e=>{"use strict";const{AbortController:t,AbortSignal:r}="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0;e.exports=t,e.exports.AbortSignal=r,e.exports.default=t},630:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,s){function i(e){try{u(n.next(e))}catch(e){s(e)}}function a(e){try{u(n.throw(e))}catch(e){s(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,a)}u((n=n.apply(e,t||[])).next())}))},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.ipInfo=i;const s=o(r(777));function i(e){return n(this,void 0,void 0,(function*(){const t="https://ipinfo.hostmanager.workers.dev/"+(e?`?ip=${e}`:""),r=yield s.default.get(t);if(!r.ok)return;const n=yield r.json();if("fail"===n.status)return;const[o,i]=n.as.split(" ",2).map((e=>e.trim())),a=parseInt(o.replace("AS",""))||0;return Object.assign(Object.assign({},n),{as:{asn:a,name:i}})}))}t.default=i},706:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.normalizeInit=t.toURLSearchParams=void 0,t.toURLSearchParams=e=>{const t=new URLSearchParams;for(const r of Object.keys(e))void 0===e[r]?t.set(r,""):"object"==typeof e[r]?t.set(r,JSON.stringify(e[r])):t.set(r,e[r].toString());return t},t.normalizeInit=(e={})=>{var r,n,o;if(null!==(r=e.method)&&void 0!==r||(e.method="GET"),e.method=e.method.toUpperCase(),null!==(n=e.rejectUnauthorized)&&void 0!==n||(e.rejectUnauthorized=!0),null!==(o=e.headers)&&void 0!==o||(e.headers=new Headers),!["GET","HEAD","POST","PUT","DELETE","CONNECT","OPTIONS","TRACE","PATCH"].includes(e.method))throw new Error(`Invalid method: ${e.method}`);if(!(e.headers instanceof Headers)){const t=new Headers;if(Array.isArray(e.headers))for(const[r,n]of e.headers)t.set(r,n);else{if("object"!=typeof e.headers)throw new Error("headers must be an array, object, or instance of Headers");for(const r of Object.keys(e.headers))t.set(r,e.headers[r])}e.headers=t}switch(e.formData?(e.headers.set("content-type","application/x-www-form-urlencoded"),e.formData instanceof URLSearchParams||(e.formData=(0,t.toURLSearchParams)(e.formData)),e.body=e.formData):e.json&&(e.headers.set("content-type","application/json"),"string"!=typeof e.json&&(e.json=JSON.stringify(e.json)),e.body=e.json),e.method){case"PUT":case"POST":case"PATCH":case"DELETE":break;default:delete e.body}return e}},777:function(e,t,r){"use strict";var n,o=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=this&&this.__importStar||(n=function(e){return n=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t},n(e)},function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=n(e),i=0;i<r.length;i++)"default"!==r[i]&&o(t,e,r[i]);return s(t,e),t}),a=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,s){function i(e){try{u(n.next(e))}catch(e){s(e)}}function a(e){try{u(n.throw(e))}catch(e){s(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,a)}u((n=n.apply(e,t||[])).next())}))},u=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Request=t.Response=t.Headers=void 0,t.fetch=d;const c=i(r(945));Object.defineProperty(t,"Headers",{enumerable:!0,get:function(){return c.Headers}}),Object.defineProperty(t,"Request",{enumerable:!0,get:function(){return c.Request}}),Object.defineProperty(t,"Response",{enumerable:!0,get:function(){return c.Response}});const f=u(r(568)),h=r(706);function d(e){return a(this,arguments,void 0,(function*(e,t={}){var r;t=(0,h.normalizeInit)(t),e=e.toString();const n=new f.default;let o;t.timeout&&(null!==(r=t.signal)&&void 0!==r||(t.signal=n.signal),o=setTimeout((()=>n.abort()),t.timeout));const s=yield(0,c.default)(e,t);return o&&clearTimeout(o),s}))}!function(e){e.get=function(t,r={}){return e(t,Object.assign(Object.assign({},r),{method:"GET"}))},e.head=function(t,r={}){return e(t,Object.assign(Object.assign({},r),{method:"HEAD"}))},e.post=function(t,r={}){return e(t,Object.assign(Object.assign({},r),{method:"POST"}))},e.put=function(t,r={}){return e(t,Object.assign(Object.assign({},r),{method:"PUT"}))},e.del=function(t,r={}){return e(t,Object.assign(Object.assign({},r),{method:"DELETE"}))},e.connect=function(t,r={}){return e(t,Object.assign(Object.assign({},r),{method:"CONNECT"}))},e.options=function(t,r={}){return e(t,Object.assign(Object.assign({},r),{method:"OPTIONS"}))},e.trace=function(t,r={}){return e(t,Object.assign(Object.assign({},r),{method:"TRACE"}))},e.patch=function(t,r={}){return e(t,Object.assign(Object.assign({},r),{method:"PATCH"}))}}(d||(t.fetch=d={})),t.default=d},945:(e,t,r)=>{var n="undefined"!=typeof globalThis&&globalThis||"undefined"!=typeof self&&self||void 0!==r.g&&r.g,o=function(){function e(){this.fetch=!1,this.DOMException=n.DOMException}return e.prototype=n,new e}();!function(e){!function(t){var n=void 0!==e&&e||"undefined"!=typeof self&&self||void 0!==r.g&&r.g||{},o="URLSearchParams"in n,s="Symbol"in n&&"iterator"in Symbol,i="FileReader"in n&&"Blob"in n&&function(){try{return new Blob,!0}catch(e){return!1}}(),a="FormData"in n,u="ArrayBuffer"in n;if(u)var c=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],f=ArrayBuffer.isView||function(e){return e&&c.indexOf(Object.prototype.toString.call(e))>-1};function h(e){if("string"!=typeof e&&(e=String(e)),/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(e)||""===e)throw new TypeError('Invalid character in header field name: "'+e+'"');return e.toLowerCase()}function d(e){return"string"!=typeof e&&(e=String(e)),e}function l(e){var t={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return s&&(t[Symbol.iterator]=function(){return t}),t}function p(e){this.map={},e instanceof p?e.forEach((function(e,t){this.append(t,e)}),this):Array.isArray(e)?e.forEach((function(e){if(2!=e.length)throw new TypeError("Headers constructor: expected name/value pair to be length 2, found"+e.length);this.append(e[0],e[1])}),this):e&&Object.getOwnPropertyNames(e).forEach((function(t){this.append(t,e[t])}),this)}function y(e){if(!e._noBody)return e.bodyUsed?Promise.reject(new TypeError("Already read")):void(e.bodyUsed=!0)}function b(e){return new Promise((function(t,r){e.onload=function(){t(e.result)},e.onerror=function(){r(e.error)}}))}function m(e){var t=new FileReader,r=b(t);return t.readAsArrayBuffer(e),r}function w(e){if(e.slice)return e.slice(0);var t=new Uint8Array(e.byteLength);return t.set(new Uint8Array(e)),t.buffer}function g(){return this.bodyUsed=!1,this._initBody=function(e){var t;this.bodyUsed=this.bodyUsed,this._bodyInit=e,e?"string"==typeof e?this._bodyText=e:i&&Blob.prototype.isPrototypeOf(e)?this._bodyBlob=e:a&&FormData.prototype.isPrototypeOf(e)?this._bodyFormData=e:o&&URLSearchParams.prototype.isPrototypeOf(e)?this._bodyText=e.toString():u&&i&&(t=e)&&DataView.prototype.isPrototypeOf(t)?(this._bodyArrayBuffer=w(e.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):u&&(ArrayBuffer.prototype.isPrototypeOf(e)||f(e))?this._bodyArrayBuffer=w(e):this._bodyText=e=Object.prototype.toString.call(e):(this._noBody=!0,this._bodyText=""),this.headers.get("content-type")||("string"==typeof e?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):o&&URLSearchParams.prototype.isPrototypeOf(e)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},i&&(this.blob=function(){var e=y(this);if(e)return e;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))}),this.arrayBuffer=function(){if(this._bodyArrayBuffer)return y(this)||(ArrayBuffer.isView(this._bodyArrayBuffer)?Promise.resolve(this._bodyArrayBuffer.buffer.slice(this._bodyArrayBuffer.byteOffset,this._bodyArrayBuffer.byteOffset+this._bodyArrayBuffer.byteLength)):Promise.resolve(this._bodyArrayBuffer));if(i)return this.blob().then(m);throw new Error("could not read as ArrayBuffer")},this.text=function(){var e,t,r,n,o,s=y(this);if(s)return s;if(this._bodyBlob)return e=this._bodyBlob,r=b(t=new FileReader),o=(n=/charset=([A-Za-z0-9_-]+)/.exec(e.type))?n[1]:"utf-8",t.readAsText(e,o),r;if(this._bodyArrayBuffer)return Promise.resolve(function(e){for(var t=new Uint8Array(e),r=new Array(t.length),n=0;n<t.length;n++)r[n]=String.fromCharCode(t[n]);return r.join("")}(this._bodyArrayBuffer));if(this._bodyFormData)throw new Error("could not read FormData body as text");return Promise.resolve(this._bodyText)},a&&(this.formData=function(){return this.text().then(E)}),this.json=function(){return this.text().then(JSON.parse)},this}p.prototype.append=function(e,t){e=h(e),t=d(t);var r=this.map[e];this.map[e]=r?r+", "+t:t},p.prototype.delete=function(e){delete this.map[h(e)]},p.prototype.get=function(e){return e=h(e),this.has(e)?this.map[e]:null},p.prototype.has=function(e){return this.map.hasOwnProperty(h(e))},p.prototype.set=function(e,t){this.map[h(e)]=d(t)},p.prototype.forEach=function(e,t){for(var r in this.map)this.map.hasOwnProperty(r)&&e.call(t,this.map[r],r,this)},p.prototype.keys=function(){var e=[];return this.forEach((function(t,r){e.push(r)})),l(e)},p.prototype.values=function(){var e=[];return this.forEach((function(t){e.push(t)})),l(e)},p.prototype.entries=function(){var e=[];return this.forEach((function(t,r){e.push([r,t])})),l(e)},s&&(p.prototype[Symbol.iterator]=p.prototype.entries);var v=["CONNECT","DELETE","GET","HEAD","OPTIONS","PATCH","POST","PUT","TRACE"];function O(e,t){if(!(this instanceof O))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');var r,o,s=(t=t||{}).body;if(e instanceof O){if(e.bodyUsed)throw new TypeError("Already read");this.url=e.url,this.credentials=e.credentials,t.headers||(this.headers=new p(e.headers)),this.method=e.method,this.mode=e.mode,this.signal=e.signal,s||null==e._bodyInit||(s=e._bodyInit,e.bodyUsed=!0)}else this.url=String(e);if(this.credentials=t.credentials||this.credentials||"same-origin",!t.headers&&this.headers||(this.headers=new p(t.headers)),this.method=(o=(r=t.method||this.method||"GET").toUpperCase(),v.indexOf(o)>-1?o:r),this.mode=t.mode||this.mode||null,this.signal=t.signal||this.signal||function(){if("AbortController"in n)return(new AbortController).signal}(),this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&s)throw new TypeError("Body not allowed for GET or HEAD requests");if(this._initBody(s),!("GET"!==this.method&&"HEAD"!==this.method||"no-store"!==t.cache&&"no-cache"!==t.cache)){var i=/([?&])_=[^&]*/;i.test(this.url)?this.url=this.url.replace(i,"$1_="+(new Date).getTime()):this.url+=(/\?/.test(this.url)?"&":"?")+"_="+(new Date).getTime()}}function E(e){var t=new FormData;return e.trim().split("&").forEach((function(e){if(e){var r=e.split("="),n=r.shift().replace(/\+/g," "),o=r.join("=").replace(/\+/g," ");t.append(decodeURIComponent(n),decodeURIComponent(o))}})),t}function _(e,t){if(!(this instanceof _))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');if(t||(t={}),this.type="default",this.status=void 0===t.status?200:t.status,this.status<200||this.status>599)throw new RangeError("Failed to construct 'Response': The status provided (0) is outside the range [200, 599].");this.ok=this.status>=200&&this.status<300,this.statusText=void 0===t.statusText?"":""+t.statusText,this.headers=new p(t.headers),this.url=t.url||"",this._initBody(e)}O.prototype.clone=function(){return new O(this,{body:this._bodyInit})},g.call(O.prototype),g.call(_.prototype),_.prototype.clone=function(){return new _(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new p(this.headers),url:this.url})},_.error=function(){var e=new _(null,{status:200,statusText:""});return e.ok=!1,e.status=0,e.type="error",e};var T=[301,302,303,307,308];_.redirect=function(e,t){if(-1===T.indexOf(t))throw new RangeError("Invalid status code");return new _(null,{status:t,headers:{location:e}})},t.DOMException=n.DOMException;try{new t.DOMException}catch(e){t.DOMException=function(e,t){this.message=e,this.name=t;var r=Error(e);this.stack=r.stack},t.DOMException.prototype=Object.create(Error.prototype),t.DOMException.prototype.constructor=t.DOMException}function j(e,r){return new Promise((function(o,s){var a=new O(e,r);if(a.signal&&a.signal.aborted)return s(new t.DOMException("Aborted","AbortError"));var c=new XMLHttpRequest;function f(){c.abort()}if(c.onload=function(){var e,t,r={statusText:c.statusText,headers:(e=c.getAllResponseHeaders()||"",t=new p,e.replace(/\r?\n[\t ]+/g," ").split("\r").map((function(e){return 0===e.indexOf("\n")?e.substr(1,e.length):e})).forEach((function(e){var r=e.split(":"),n=r.shift().trim();if(n){var o=r.join(":").trim();try{t.append(n,o)}catch(e){console.warn("Response "+e.message)}}})),t)};0===a.url.indexOf("file://")&&(c.status<200||c.status>599)?r.status=200:r.status=c.status,r.url="responseURL"in c?c.responseURL:r.headers.get("X-Request-URL");var n="response"in c?c.response:c.responseText;setTimeout((function(){o(new _(n,r))}),0)},c.onerror=function(){setTimeout((function(){s(new TypeError("Network request failed"))}),0)},c.ontimeout=function(){setTimeout((function(){s(new TypeError("Network request timed out"))}),0)},c.onabort=function(){setTimeout((function(){s(new t.DOMException("Aborted","AbortError"))}),0)},c.open(a.method,function(e){try{return""===e&&n.location.href?n.location.href:e}catch(t){return e}}(a.url),!0),"include"===a.credentials?c.withCredentials=!0:"omit"===a.credentials&&(c.withCredentials=!1),"responseType"in c&&(i?c.responseType="blob":u&&(c.responseType="arraybuffer")),r&&"object"==typeof r.headers&&!(r.headers instanceof p||n.Headers&&r.headers instanceof n.Headers)){var l=[];Object.getOwnPropertyNames(r.headers).forEach((function(e){l.push(h(e)),c.setRequestHeader(e,d(r.headers[e]))})),a.headers.forEach((function(e,t){-1===l.indexOf(t)&&c.setRequestHeader(t,e)}))}else a.headers.forEach((function(e,t){c.setRequestHeader(t,e)}));a.signal&&(a.signal.addEventListener("abort",f),c.onreadystatechange=function(){4===c.readyState&&a.signal.removeEventListener("abort",f)}),c.send(void 0===a._bodyInit?null:a._bodyInit)}))}j.polyfill=!0,n.fetch||(n.fetch=j,n.Headers=p,n.Request=O,n.Response=_),t.Headers=p,t.Request=O,t.Response=_,t.fetch=j}({})}(o),o.fetch.ponyfill=!0,delete o.fetch.polyfill;var s=n.fetch?n:o;(t=s.fetch).default=s.fetch,t.fetch=s.fetch,t.Headers=s.Headers,t.Request=s.Request,t.Response=s.Response,e.exports=t}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var s=t[n]={exports:{}};return e[n].call(s.exports,s,s.exports,r),s.exports}return r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r(630)})()));
2
+ //# sourceMappingURL=ipinfo.min.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipinfo.min.js","mappings":"CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,EACvE,CACA,CATD,CASGC,MAAM,I,kCCLT,MAAM,gBAAEC,EAAe,YAAEC,GACL,oBAATF,KAAuBA,KACZ,oBAAXG,OAAyBA,YAChBC,EAGpBT,EAAOD,QAAUO,EACjBN,EAAOD,QAAQQ,YAAcA,EAC7BP,EAAOD,QAAP,QAAyBO,C,oeCiBzB,WATA,kBASA,SAAsBI,EAClBC,G,yCAEA,MAAMC,EAAM,2CAA0CD,EAAU,OAAOA,IAAY,IAE7EE,QAAiB,UAAMC,IAAIF,GAEjC,IAAKC,EAASE,GACV,OAGJ,MAAMC,QAA8BH,EAASG,OAE7C,GAAoB,SAAhBA,EAAKC,OACL,OAGJ,MAAOC,EAAIC,GAAQH,EAAKE,GAAGE,MAAM,IAAK,GACjCC,KAAIC,GAAQA,EAAKC,SAEhBC,EAAMC,SAASP,EAAGQ,QAAQ,KAAM,MAAQ,EAE9C,OAAO,OAAP,wBACOV,GAAI,CACPE,GAAI,CACAM,MACAL,SAGZ,G,CAyCA,UAAeT,C,2BC/EfiB,OAAOC,eAAe7B,EAAS,aAAc,CAAE8B,OAAO,IACtD9B,EAAQ+B,cAAgB/B,EAAQgC,uBAAoB,EAsBpDhC,EAAQgC,kBAfmBC,IACvB,MAAMC,EAAS,IAAIC,gBACnB,IAAK,MAAMC,KAAOR,OAAOS,KAAKJ,QACF,IAAbA,EAAIG,GACXF,EAAOI,IAAIF,EAAK,IAES,iBAAbH,EAAIG,GAChBF,EAAOI,IAAIF,EAAKG,KAAKC,UAAUP,EAAIG,KAGnCF,EAAOI,IAAIF,EAAKH,EAAIG,GAAKK,YAGjC,OAAOP,CAAM,EA4DjBlC,EAAQ+B,cArDc,CAACW,EAAO,CAAC,KAC3B,IAAIC,EAAIC,EAAIC,EAKZ,GAJuB,QAAtBF,EAAKD,EAAKI,cAA2B,IAAPH,IAAsBD,EAAKI,OAAS,OACnEJ,EAAKI,OAASJ,EAAKI,OAAOC,cACS,QAAlCH,EAAKF,EAAKM,0BAAuC,IAAPJ,IAAsBF,EAAKM,oBAAqB,GACnE,QAAvBH,EAAKH,EAAKO,eAA4B,IAAPJ,IAAsBH,EAAKO,QAAU,IAAIC,UACpE,CAAC,MAAO,OAAQ,OAAQ,MAAO,SAAU,UAAW,UAAW,QAAS,SAASC,SAAST,EAAKI,QAChG,MAAM,IAAIM,MAAM,mBAAmBV,EAAKI,UAG5C,KAAMJ,EAAKO,mBAAmBC,SAAU,CACpC,MAAMD,EAAU,IAAIC,QACpB,GAAIG,MAAMC,QAAQZ,EAAKO,SACnB,IAAK,MAAOM,EAAQzB,KAAUY,EAAKO,QAC/BA,EAAQX,IAAIiB,EAAQzB,OAGvB,IAA4B,iBAAjBY,EAAKO,QAMjB,MAAM,IAAIG,MAAM,4DALhB,IAAK,MAAMG,KAAU3B,OAAOS,KAAKK,EAAKO,SAClCA,EAAQX,IAAIiB,EAAQb,EAAKO,QAAQM,GAKzC,CACAb,EAAKO,QAAUA,CACnB,CAeA,OAdIP,EAAKc,UACLd,EAAKO,QAAQX,IAAI,eAAgB,qCAC3BI,EAAKc,oBAAoBrB,kBAC3BO,EAAKc,UAAW,EAAIxD,EAAQgC,mBAAmBU,EAAKc,WAExDd,EAAKe,KAAOf,EAAKc,UAEZd,EAAKzB,OACVyB,EAAKO,QAAQX,IAAI,eAAgB,oBACR,iBAAdI,EAAKzB,OACZyB,EAAKzB,KAAOsB,KAAKC,UAAUE,EAAKzB,OAEpCyB,EAAKe,KAAOf,EAAKzB,MAEbyB,EAAKI,QACT,IAAK,MACL,IAAK,OACL,IAAK,QACL,IAAK,SACD,MACJ,eACWJ,EAAKe,KAGpB,OAAOf,CAAI,C,mCC/Ef,IAiBQgB,EAjBJC,EAAmBC,MAAQA,KAAKD,kBAAqB/B,OAAOiC,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,QAC7EvD,IAAPuD,IAAkBA,EAAKD,GAC3B,IAAIE,EAAOtC,OAAOuC,yBAAyBJ,EAAGC,GACzCE,KAAS,QAASA,GAAQH,EAAEK,WAAaF,EAAKG,UAAYH,EAAKI,gBAClEJ,EAAO,CAAEK,YAAY,EAAMxD,IAAK,WAAa,OAAOgD,EAAEC,EAAI,IAE5DpC,OAAOC,eAAeiC,EAAGG,EAAIC,EAChC,EAAI,SAAUJ,EAAGC,EAAGC,EAAGC,QACTvD,IAAPuD,IAAkBA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,EACb,GACGQ,EAAsBZ,MAAQA,KAAKY,qBAAwB5C,OAAOiC,OAAS,SAAUC,EAAGW,GACxF7C,OAAOC,eAAeiC,EAAG,UAAW,CAAES,YAAY,EAAMzC,MAAO2C,GAClE,EAAI,SAASX,EAAGW,GACbX,EAAW,QAAIW,CACnB,GACIC,EAAgBd,MAAQA,KAAKc,eACzBhB,EAAU,SAASI,GAMnB,OALAJ,EAAU9B,OAAO+C,qBAAuB,SAAUb,GAC9C,IAAIc,EAAK,GACT,IAAK,IAAIZ,KAAKF,EAAOlC,OAAOiD,UAAUC,eAAeC,KAAKjB,EAAGE,KAAIY,EAAGA,EAAGI,QAAUhB,GACjF,OAAOY,CACX,EACOlB,EAAQI,EACnB,EACO,SAAUmB,GACb,GAAIA,GAAOA,EAAIb,WAAY,OAAOa,EAClC,IAAIC,EAAS,CAAC,EACd,GAAW,MAAPD,EAAa,IAAK,IAAIjB,EAAIN,EAAQuB,GAAM5E,EAAI,EAAGA,EAAI2D,EAAEgB,OAAQ3E,IAAkB,YAAT2D,EAAE3D,IAAkBsD,EAAgBuB,EAAQD,EAAKjB,EAAE3D,IAE7H,OADAmE,EAAmBU,EAAQD,GACpBC,CACX,GAEAC,EAAavB,MAAQA,KAAKuB,WAAc,SAAUC,EAASC,EAAYC,EAAGC,GAE1E,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAU7D,GAAS,IAAM8D,EAAKL,EAAUM,KAAK/D,GAAS,CAAE,MAAOgE,GAAKJ,EAAOI,EAAI,CAAE,CAC1F,SAASC,EAASjE,GAAS,IAAM8D,EAAKL,EAAiB,MAAEzD,GAAS,CAAE,MAAOgE,GAAKJ,EAAOI,EAAI,CAAE,CAC7F,SAASF,EAAKV,GAJlB,IAAepD,EAIaoD,EAAOc,KAAOP,EAAQP,EAAOpD,QAJ1CA,EAIyDoD,EAAOpD,MAJhDA,aAAiBwD,EAAIxD,EAAQ,IAAIwD,GAAE,SAAUG,GAAWA,EAAQ3D,EAAQ,KAIjBmE,KAAKN,EAAWI,EAAW,CAC7GH,GAAML,EAAYA,EAAUW,MAAMd,EAASC,GAAc,KAAKQ,OAClE,GACJ,EACIM,EAAmBvC,MAAQA,KAAKuC,iBAAoB,SAAUlB,GAC9D,OAAQA,GAAOA,EAAIb,WAAca,EAAM,CAAE,QAAWA,EACxD,EACArD,OAAOC,eAAe7B,EAAS,aAAc,CAAE8B,OAAO,IACtD9B,EAAQoG,QAAUpG,EAAQqG,SAAWrG,EAAQkD,aAAU,EACvDlD,EAAQsG,MAAQA,EAChB,MAAMC,EAAgB7B,EAAa,EAAQ,MAC3C9C,OAAOC,eAAe7B,EAAS,UAAW,CAAEuE,YAAY,EAAMxD,IAAK,WAAc,OAAOwF,EAAcrD,OAAS,IAC/GtB,OAAOC,eAAe7B,EAAS,UAAW,CAAEuE,YAAY,EAAMxD,IAAK,WAAc,OAAOwF,EAAcH,OAAS,IAC/GxE,OAAOC,eAAe7B,EAAS,WAAY,CAAEuE,YAAY,EAAMxD,IAAK,WAAc,OAAOwF,EAAcF,QAAU,IACjH,MAAMG,EAAqBL,EAAgB,EAAQ,MAC7CM,EAAY,EAAQ,KAM1B,SAASH,EAAMI,GACX,OAAOvB,EAAUvB,KAAM+C,eAAW,GAAQ,UAAW9F,EAAK6B,EAAO,CAAC,GAC9D,IAAIC,EACJD,GAAO,EAAI+D,EAAU1E,eAAeW,GACpC7B,EAAMA,EAAI4B,WACV,MAAMmE,EAAa,IAAIJ,EAAmBK,QAC1C,IAAIC,EACApE,EAAKqE,UACkB,QAAtBpE,EAAKD,EAAKsE,cAA2B,IAAPrE,IAAsBD,EAAKsE,OAASJ,EAAWI,QAC9EF,EAAWG,YAAW,IAAML,EAAWM,SAASxE,EAAKqE,UAEzD,MAAMjG,QAAiB,EAAIyF,EAAcM,SAAShG,EAAK6B,GAIvD,OAHIoE,GACAK,aAAaL,GAEVhG,CACX,GACJ,EACA,SAAWwF,GAIPA,EAAMvF,IAHN,SAAaF,EAAK6B,EAAO,CAAC,GACtB,OAAO4D,EAAMzF,EAAKe,OAAOwF,OAAOxF,OAAOwF,OAAO,CAAC,EAAG1E,GAAO,CAAEI,OAAQ,QACvE,EAKAwD,EAAMe,KAHN,SAAcxG,EAAK6B,EAAO,CAAC,GACvB,OAAO4D,EAAMzF,EAAKe,OAAOwF,OAAOxF,OAAOwF,OAAO,CAAC,EAAG1E,GAAO,CAAEI,OAAQ,SACvE,EAKAwD,EAAMgB,KAHN,SAAczG,EAAK6B,EAAO,CAAC,GACvB,OAAO4D,EAAMzF,EAAKe,OAAOwF,OAAOxF,OAAOwF,OAAO,CAAC,EAAG1E,GAAO,CAAEI,OAAQ,SACvE,EAKAwD,EAAMiB,IAHN,SAAa1G,EAAK6B,EAAO,CAAC,GACtB,OAAO4D,EAAMzF,EAAKe,OAAOwF,OAAOxF,OAAOwF,OAAO,CAAC,EAAG1E,GAAO,CAAEI,OAAQ,QACvE,EAKAwD,EAAMkB,IAHN,SAAa3G,EAAK6B,EAAO,CAAC,GACtB,OAAO4D,EAAMzF,EAAKe,OAAOwF,OAAOxF,OAAOwF,OAAO,CAAC,EAAG1E,GAAO,CAAEI,OAAQ,WACvE,EAKAwD,EAAMmB,QAHN,SAAiB5G,EAAK6B,EAAO,CAAC,GAC1B,OAAO4D,EAAMzF,EAAKe,OAAOwF,OAAOxF,OAAOwF,OAAO,CAAC,EAAG1E,GAAO,CAAEI,OAAQ,YACvE,EAKAwD,EAAMoB,QAHN,SAAiB7G,EAAK6B,EAAO,CAAC,GAC1B,OAAO4D,EAAMzF,EAAKe,OAAOwF,OAAOxF,OAAOwF,OAAO,CAAC,EAAG1E,GAAO,CAAEI,OAAQ,YACvE,EAKAwD,EAAMqB,MAHN,SAAe9G,EAAK6B,EAAO,CAAC,GACxB,OAAO4D,EAAMzF,EAAKe,OAAOwF,OAAOxF,OAAOwF,OAAO,CAAC,EAAG1E,GAAO,CAAEI,OAAQ,UACvE,EAKAwD,EAAMsB,MAHN,SAAe/G,EAAK6B,EAAO,CAAC,GACxB,OAAO4D,EAAMzF,EAAKe,OAAOwF,OAAOxF,OAAOwF,OAAO,CAAC,EAAG1E,GAAO,CAAEI,OAAQ,UACvE,CAEH,CArCD,CAqCGwD,IAAUtG,EAAQsG,MAAQA,EAAQ,CAAC,IACtCtG,EAAA,QAAkBsG,C,gBCtIlB,IAAIuB,EACmB,oBAAfC,YAA8BA,YACrB,oBAATxH,MAAwBA,WACb,IAAX,EAAAyH,GAA0B,EAAAA,EAE9BC,EAAiB,WACrB,SAASC,IACTrE,KAAK0C,OAAQ,EACb1C,KAAKsE,aAAeL,EAAWK,YAC/B,CAEA,OADAD,EAAEpD,UAAYgD,EACP,IAAII,CACV,CAPoB,IAUrB,SAAUH,IAEO,SAAW9H,GAG1B,IAAI+H,OACqB,IAAfD,GAA8BA,GACrB,oBAATxH,MAAwBA,WAEb,IAAX,EAAAyH,GAA0B,EAAAA,GAClC,CAAC,EAECI,EACY,oBAAqBJ,EADjCI,EAEQ,WAAYJ,GAAK,aAAcK,OAFvCD,EAIA,eAAgBJ,GAChB,SAAUA,GACV,WACE,IAEE,OADA,IAAIM,MACG,CACT,CAAE,MAAOvC,GACP,OAAO,CACT,CACD,CAPD,GANAqC,EAcQ,aAAcJ,EAdtBI,EAeW,gBAAiBJ,EAOhC,GAAII,EACF,IAAIG,EAAc,CAChB,qBACA,sBACA,6BACA,sBACA,uBACA,sBACA,uBACA,wBACA,yBAGEC,EACFC,YAAYC,QACZ,SAASxG,GACP,OAAOA,GAAOqG,EAAYI,QAAQ9G,OAAOiD,UAAUpC,SAASsC,KAAK9C,KAAS,CAC5E,EAGJ,SAAS0G,EAAcvH,GAIrB,GAHoB,iBAATA,IACTA,EAAOwH,OAAOxH,IAEZ,6BAA6ByH,KAAKzH,IAAkB,KAATA,EAC7C,MAAM,IAAI0H,UAAU,4CAA8C1H,EAAO,KAE3E,OAAOA,EAAK2H,aACd,CAEA,SAASC,EAAelH,GAItB,MAHqB,iBAAVA,IACTA,EAAQ8G,OAAO9G,IAEVA,CACT,CAGA,SAASmH,EAAYC,GACnB,IAAIC,EAAW,CACbtD,KAAM,WACJ,IAAI/D,EAAQoH,EAAME,QAClB,MAAO,CAACpD,UAAgBtF,IAAVoB,EAAqBA,MAAOA,EAC5C,GASF,OANIqG,IACFgB,EAASf,OAAOe,UAAY,WAC1B,OAAOA,CACT,GAGKA,CACT,CAEA,SAASjG,EAAQD,GACfW,KAAKtC,IAAM,CAAC,EAER2B,aAAmBC,EACrBD,EAAQoG,SAAQ,SAASvH,EAAOV,GAC9BwC,KAAK0F,OAAOlI,EAAMU,EACpB,GAAG8B,MACMP,MAAMC,QAAQL,GACvBA,EAAQoG,SAAQ,SAAS9F,GACvB,GAAqB,GAAjBA,EAAOyB,OACT,MAAM,IAAI8D,UAAU,sEAAwEvF,EAAOyB,QAErGpB,KAAK0F,OAAO/F,EAAO,GAAIA,EAAO,GAChC,GAAGK,MACMX,GACTrB,OAAO+C,oBAAoB1B,GAASoG,SAAQ,SAASjI,GACnDwC,KAAK0F,OAAOlI,EAAM6B,EAAQ7B,GAC5B,GAAGwC,KAEP,CA8DA,SAAS2F,EAAS9F,GAChB,IAAIA,EAAK+F,QACT,OAAI/F,EAAKgG,SACAjE,QAAQE,OAAO,IAAIoD,UAAU,sBAEtCrF,EAAKgG,UAAW,EAClB,CAEA,SAASC,EAAgBC,GACvB,OAAO,IAAInE,SAAQ,SAASC,EAASC,GACnCiE,EAAOC,OAAS,WACdnE,EAAQkE,EAAOzE,OACjB,EACAyE,EAAOE,QAAU,WACfnE,EAAOiE,EAAOG,MAChB,CACF,GACF,CAEA,SAASC,EAAsBC,GAC7B,IAAIL,EAAS,IAAIM,WACbC,EAAUR,EAAgBC,GAE9B,OADAA,EAAOQ,kBAAkBH,GAClBE,CACT,CAqBA,SAASE,EAAYC,GACnB,GAAIA,EAAIC,MACN,OAAOD,EAAIC,MAAM,GAEjB,IAAIC,EAAO,IAAIC,WAAWH,EAAII,YAE9B,OADAF,EAAKjI,IAAI,IAAIkI,WAAWH,IACjBE,EAAKG,MAEhB,CAEA,SAASC,IAqHP,OApHA/G,KAAK6F,UAAW,EAEhB7F,KAAKgH,UAAY,SAASnH,GAtM5B,IAAoBxB,EAkNhB2B,KAAK6F,SAAW7F,KAAK6F,SACrB7F,KAAKiH,UAAYpH,EACZA,EAGsB,iBAATA,EAChBG,KAAKkH,UAAYrH,EACR0E,GAAgBE,KAAKxD,UAAUkG,cAActH,GACtDG,KAAKoH,UAAYvH,EACR0E,GAAoB8C,SAASpG,UAAUkG,cAActH,GAC9DG,KAAKsH,cAAgBzH,EACZ0E,GAAwBhG,gBAAgB0C,UAAUkG,cAActH,GACzEG,KAAKkH,UAAYrH,EAAKhB,WACb0F,GAAuBA,IA/NlBlG,EA+N6CwB,IA9NjD0H,SAAStG,UAAUkG,cAAc9I,IA+N3C2B,KAAKwH,iBAAmBhB,EAAY3G,EAAKiH,QAEzC9G,KAAKiH,UAAY,IAAIxC,KAAK,CAACzE,KAAKwH,oBACvBjD,IAAwBK,YAAY3D,UAAUkG,cAActH,IAAS8E,EAAkB9E,IAChGG,KAAKwH,iBAAmBhB,EAAY3G,GAEpCG,KAAKkH,UAAYrH,EAAO7B,OAAOiD,UAAUpC,SAASsC,KAAKtB,IAjBvDG,KAAK4F,SAAU,EACf5F,KAAKkH,UAAY,IAmBdlH,KAAKX,QAAQlC,IAAI,kBACA,iBAAT0C,EACTG,KAAKX,QAAQX,IAAI,eAAgB,4BACxBsB,KAAKoH,WAAapH,KAAKoH,UAAUK,KAC1CzH,KAAKX,QAAQX,IAAI,eAAgBsB,KAAKoH,UAAUK,MACvClD,GAAwBhG,gBAAgB0C,UAAUkG,cAActH,IACzEG,KAAKX,QAAQX,IAAI,eAAgB,mDAGvC,EAEI6F,IACFvE,KAAKoG,KAAO,WACV,IAAIjE,EAAWwD,EAAS3F,MACxB,GAAImC,EACF,OAAOA,EAGT,GAAInC,KAAKoH,UACP,OAAOxF,QAAQC,QAAQ7B,KAAKoH,WACvB,GAAIpH,KAAKwH,iBACd,OAAO5F,QAAQC,QAAQ,IAAI4C,KAAK,CAACzE,KAAKwH,oBACjC,GAAIxH,KAAKsH,cACd,MAAM,IAAI9H,MAAM,wCAEhB,OAAOoC,QAAQC,QAAQ,IAAI4C,KAAK,CAACzE,KAAKkH,YAE1C,GAGFlH,KAAK0H,YAAc,WACjB,GAAI1H,KAAKwH,iBAEP,OADiB7B,EAAS3F,QAGf4E,YAAYC,OAAO7E,KAAKwH,kBAC1B5F,QAAQC,QACb7B,KAAKwH,iBAAiBV,OAAOJ,MAC3B1G,KAAKwH,iBAAiBG,WACtB3H,KAAKwH,iBAAiBG,WAAa3H,KAAKwH,iBAAiBX,aAItDjF,QAAQC,QAAQ7B,KAAKwH,mBAEzB,GAAIjD,EACT,OAAOvE,KAAKoG,OAAO/D,KAAK8D,GAExB,MAAM,IAAI3G,MAAM,gCAEpB,EAEAQ,KAAK4H,KAAO,WACV,IAxHoBxB,EAClBL,EACAO,EACAuB,EACAC,EAoHE3F,EAAWwD,EAAS3F,MACxB,GAAImC,EACF,OAAOA,EAGT,GAAInC,KAAKoH,UACP,OA9HkBhB,EA8HIpG,KAAKoH,UA5H3Bd,EAAUR,EADVC,EAAS,IAAIM,YAGbyB,GADAD,EAAQ,2BAA2BE,KAAK3B,EAAKqB,OAC1BI,EAAM,GAAK,QAClC9B,EAAOiC,WAAW5B,EAAM0B,GACjBxB,EAyHE,GAAItG,KAAKwH,iBACd,OAAO5F,QAAQC,QAvHrB,SAA+B4E,GAI7B,IAHA,IAAIE,EAAO,IAAIC,WAAWH,GACtBwB,EAAQ,IAAIxI,MAAMkH,EAAKvF,QAElB3E,EAAI,EAAGA,EAAIkK,EAAKvF,OAAQ3E,IAC/BwL,EAAMxL,GAAKuI,OAAOkD,aAAavB,EAAKlK,IAEtC,OAAOwL,EAAME,KAAK,GACpB,CA+G6BC,CAAsBpI,KAAKwH,mBAC7C,GAAIxH,KAAKsH,cACd,MAAM,IAAI9H,MAAM,wCAEhB,OAAOoC,QAAQC,QAAQ7B,KAAKkH,UAEhC,EAEI3C,IACFvE,KAAKJ,SAAW,WACd,OAAOI,KAAK4H,OAAOvF,KAAKgG,EAC1B,GAGFrI,KAAK3C,KAAO,WACV,OAAO2C,KAAK4H,OAAOvF,KAAK1D,KAAK2J,MAC/B,EAEOtI,IACT,CAzOAV,EAAQ2B,UAAUyE,OAAS,SAASlI,EAAMU,GACxCV,EAAOuH,EAAcvH,GACrBU,EAAQkH,EAAelH,GACvB,IAAIqK,EAAWvI,KAAKtC,IAAIF,GACxBwC,KAAKtC,IAAIF,GAAQ+K,EAAWA,EAAW,KAAOrK,EAAQA,CACxD,EAEAoB,EAAQ2B,UAAkB,OAAI,SAASzD,UAC9BwC,KAAKtC,IAAIqH,EAAcvH,GAChC,EAEA8B,EAAQ2B,UAAU9D,IAAM,SAASK,GAE/B,OADAA,EAAOuH,EAAcvH,GACdwC,KAAKwI,IAAIhL,GAAQwC,KAAKtC,IAAIF,GAAQ,IAC3C,EAEA8B,EAAQ2B,UAAUuH,IAAM,SAAShL,GAC/B,OAAOwC,KAAKtC,IAAIwD,eAAe6D,EAAcvH,GAC/C,EAEA8B,EAAQ2B,UAAUvC,IAAM,SAASlB,EAAMU,GACrC8B,KAAKtC,IAAIqH,EAAcvH,IAAS4H,EAAelH,EACjD,EAEAoB,EAAQ2B,UAAUwE,QAAU,SAASgD,EAAUjH,GAC7C,IAAK,IAAIhE,KAAQwC,KAAKtC,IAChBsC,KAAKtC,IAAIwD,eAAe1D,IAC1BiL,EAAStH,KAAKK,EAASxB,KAAKtC,IAAIF,GAAOA,EAAMwC,KAGnD,EAEAV,EAAQ2B,UAAUxC,KAAO,WACvB,IAAI6G,EAAQ,GAIZ,OAHAtF,KAAKyF,SAAQ,SAASvH,EAAOV,GAC3B8H,EAAMoD,KAAKlL,EACb,IACO6H,EAAYC,EACrB,EAEAhG,EAAQ2B,UAAU0H,OAAS,WACzB,IAAIrD,EAAQ,GAIZ,OAHAtF,KAAKyF,SAAQ,SAASvH,GACpBoH,EAAMoD,KAAKxK,EACb,IACOmH,EAAYC,EACrB,EAEAhG,EAAQ2B,UAAU2H,QAAU,WAC1B,IAAItD,EAAQ,GAIZ,OAHAtF,KAAKyF,SAAQ,SAASvH,EAAOV,GAC3B8H,EAAMoD,KAAK,CAAClL,EAAMU,GACpB,IACOmH,EAAYC,EACrB,EAEIf,IACFjF,EAAQ2B,UAAUuD,OAAOe,UAAYjG,EAAQ2B,UAAU2H,SAmLzD,IAAIC,EAAU,CAAC,UAAW,SAAU,MAAO,OAAQ,UAAW,QAAS,OAAQ,MAAO,SAOtF,SAASrG,EAAQsG,EAAOhF,GACtB,KAAM9D,gBAAgBwC,GACpB,MAAM,IAAI0C,UAAU,8FAItB,IAXuBhG,EACnB6J,EAUAlJ,GADJiE,EAAUA,GAAW,CAAC,GACHjE,KAEnB,GAAIiJ,aAAiBtG,EAAS,CAC5B,GAAIsG,EAAMjD,SACR,MAAM,IAAIX,UAAU,gBAEtBlF,KAAK/C,IAAM6L,EAAM7L,IACjB+C,KAAKgJ,YAAcF,EAAME,YACpBlF,EAAQzE,UACXW,KAAKX,QAAU,IAAIC,EAAQwJ,EAAMzJ,UAEnCW,KAAKd,OAAS4J,EAAM5J,OACpBc,KAAKiJ,KAAOH,EAAMG,KAClBjJ,KAAKoD,OAAS0F,EAAM1F,OACfvD,GAA2B,MAAnBiJ,EAAM7B,YACjBpH,EAAOiJ,EAAM7B,UACb6B,EAAMjD,UAAW,EAErB,MACE7F,KAAK/C,IAAM+H,OAAO8D,GAiBpB,GAdA9I,KAAKgJ,YAAclF,EAAQkF,aAAehJ,KAAKgJ,aAAe,eAC1DlF,EAAQzE,SAAYW,KAAKX,UAC3BW,KAAKX,QAAU,IAAIC,EAAQwE,EAAQzE,UAErCW,KAAKd,QApCD6J,GADmB7J,EAqCO4E,EAAQ5E,QAAUc,KAAKd,QAAU,OApC1CC,cACd0J,EAAQ/D,QAAQiE,IAAY,EAAIA,EAAU7J,GAoCjDc,KAAKiJ,KAAOnF,EAAQmF,MAAQjJ,KAAKiJ,MAAQ,KACzCjJ,KAAKoD,OAASU,EAAQV,QAAUpD,KAAKoD,QAAW,WAC9C,GAAI,oBAAqBe,EAEvB,OADW,IAAIxH,iBACHyG,MAEhB,CAL+C,GAM/CpD,KAAKkJ,SAAW,MAEK,QAAhBlJ,KAAKd,QAAoC,SAAhBc,KAAKd,SAAsBW,EACvD,MAAM,IAAIqF,UAAU,6CAItB,GAFAlF,KAAKgH,UAAUnH,KAEK,QAAhBG,KAAKd,QAAoC,SAAhBc,KAAKd,QACV,aAAlB4E,EAAQqF,OAA0C,aAAlBrF,EAAQqF,OAAsB,CAEhE,IAAIC,EAAgB,gBAChBA,EAAcnE,KAAKjF,KAAK/C,KAE1B+C,KAAK/C,IAAM+C,KAAK/C,IAAIc,QAAQqL,EAAe,QAAS,IAAIC,MAAOC,WAI/DtJ,KAAK/C,MADe,KACOgI,KAAKjF,KAAK/C,KAAO,IAAM,KAAO,MAAO,IAAIoM,MAAOC,SAE/E,CAEJ,CAMA,SAASjB,EAAOxI,GACd,IAAI0J,EAAO,IAAIlC,SAYf,OAXAxH,EACGjC,OACAH,MAAM,KACNgI,SAAQ,SAAS+D,GAChB,GAAIA,EAAO,CACT,IAAI/L,EAAQ+L,EAAM/L,MAAM,KACpBD,EAAOC,EAAM+H,QAAQzH,QAAQ,MAAO,KACpCG,EAAQT,EAAM0K,KAAK,KAAKpK,QAAQ,MAAO,KAC3CwL,EAAK7D,OAAO+D,mBAAmBjM,GAAOiM,mBAAmBvL,GAC3D,CACF,IACKqL,CACT,CAgCA,SAAS9G,EAASiH,EAAU5F,GAC1B,KAAM9D,gBAAgByC,GACpB,MAAM,IAAIyC,UAAU,8FAQtB,GANKpB,IACHA,EAAU,CAAC,GAGb9D,KAAKyH,KAAO,UACZzH,KAAK1C,YAA4BR,IAAnBgH,EAAQxG,OAAuB,IAAMwG,EAAQxG,OACvD0C,KAAK1C,OAAS,KAAO0C,KAAK1C,OAAS,IACrC,MAAM,IAAIqM,WAAW,4FAEvB3J,KAAK5C,GAAK4C,KAAK1C,QAAU,KAAO0C,KAAK1C,OAAS,IAC9C0C,KAAK4J,gBAAoC9M,IAAvBgH,EAAQ8F,WAA2B,GAAK,GAAK9F,EAAQ8F,WACvE5J,KAAKX,QAAU,IAAIC,EAAQwE,EAAQzE,SACnCW,KAAK/C,IAAM6G,EAAQ7G,KAAO,GAC1B+C,KAAKgH,UAAU0C,EACjB,CApEAlH,EAAQvB,UAAU4I,MAAQ,WACxB,OAAO,IAAIrH,EAAQxC,KAAM,CAACH,KAAMG,KAAKiH,WACvC,EA8CAF,EAAK5F,KAAKqB,EAAQvB,WAsBlB8F,EAAK5F,KAAKsB,EAASxB,WAEnBwB,EAASxB,UAAU4I,MAAQ,WACzB,OAAO,IAAIpH,EAASzC,KAAKiH,UAAW,CAClC3J,OAAQ0C,KAAK1C,OACbsM,WAAY5J,KAAK4J,WACjBvK,QAAS,IAAIC,EAAQU,KAAKX,SAC1BpC,IAAK+C,KAAK/C,KAEd,EAEAwF,EAASyD,MAAQ,WACf,IAAIhJ,EAAW,IAAIuF,EAAS,KAAM,CAACnF,OAAQ,IAAKsM,WAAY,KAI5D,OAHA1M,EAASE,IAAK,EACdF,EAASI,OAAS,EAClBJ,EAASuK,KAAO,QACTvK,CACT,EAEA,IAAI4M,EAAmB,CAAC,IAAK,IAAK,IAAK,IAAK,KAE5CrH,EAASsH,SAAW,SAAS9M,EAAKK,GAChC,IAA0C,IAAtCwM,EAAiBhF,QAAQxH,GAC3B,MAAM,IAAIqM,WAAW,uBAGvB,OAAO,IAAIlH,EAAS,KAAM,CAACnF,OAAQA,EAAQ+B,QAAS,CAAC2K,SAAU/M,IACjE,EAEAb,EAAQkI,aAAeH,EAAEG,aACzB,IACE,IAAIlI,EAAQkI,YACd,CAAE,MAAO2F,GACP7N,EAAQkI,aAAe,SAAS4F,EAAS1M,GACvCwC,KAAKkK,QAAUA,EACflK,KAAKxC,KAAOA,EACZ,IAAI0I,EAAQ1G,MAAM0K,GAClBlK,KAAKmK,MAAQjE,EAAMiE,KACrB,EACA/N,EAAQkI,aAAarD,UAAYjD,OAAOiC,OAAOT,MAAMyB,WACrD7E,EAAQkI,aAAarD,UAAUmJ,YAAchO,EAAQkI,YACvD,CAEA,SAAS5B,EAAMoG,EAAOhK,GACpB,OAAO,IAAI8C,SAAQ,SAASC,EAASC,GACnC,IAAIuI,EAAU,IAAI7H,EAAQsG,EAAOhK,GAEjC,GAAIuL,EAAQjH,QAAUiH,EAAQjH,OAAOkH,QACnC,OAAOxI,EAAO,IAAI1F,EAAQkI,aAAa,UAAW,eAGpD,IAAIiG,EAAM,IAAIC,eAEd,SAASC,IACPF,EAAIjH,OACN,CAiEA,GA/DAiH,EAAIvE,OAAS,WACX,IA5GgB0E,EAChBrL,EA2GIyE,EAAU,CACZ8F,WAAYW,EAAIX,WAChBvK,SA9GcqL,EA8GQH,EAAII,yBAA2B,GA7GvDtL,EAAU,IAAIC,EAGQoL,EAAW3M,QAAQ,eAAgB,KAK1DN,MAAM,MACNC,KAAI,SAASiC,GACZ,OAAgC,IAAzBA,EAAOmF,QAAQ,MAAcnF,EAAOiL,OAAO,EAAGjL,EAAOyB,QAAUzB,CACxE,IACC8F,SAAQ,SAASoF,GAChB,IAAIC,EAAQD,EAAKpN,MAAM,KACnBe,EAAMsM,EAAMtF,QAAQ5H,OACxB,GAAIY,EAAK,CACP,IAAIN,EAAQ4M,EAAM3C,KAAK,KAAKvK,OAC5B,IACEyB,EAAQqG,OAAOlH,EAAKN,EACtB,CAAE,MAAOgI,GACP6E,QAAQC,KAAK,YAAc9E,EAAMgE,QACnC,CACF,CACF,IACK7K,IAyFoC,IAAnCgL,EAAQpN,IAAI6H,QAAQ,aAAqByF,EAAIjN,OAAS,KAAOiN,EAAIjN,OAAS,KAC5EwG,EAAQxG,OAAS,IAEjBwG,EAAQxG,OAASiN,EAAIjN,OAEvBwG,EAAQ7G,IAAM,gBAAiBsN,EAAMA,EAAIU,YAAcnH,EAAQzE,QAAQlC,IAAI,iBAC3E,IAAI0C,EAAO,aAAc0K,EAAMA,EAAIrN,SAAWqN,EAAIW,aAClD7H,YAAW,WACTxB,EAAQ,IAAIY,EAAS5C,EAAMiE,GAC7B,GAAG,EACL,EAEAyG,EAAItE,QAAU,WACZ5C,YAAW,WACTvB,EAAO,IAAIoD,UAAU,0BACvB,GAAG,EACL,EAEAqF,EAAIY,UAAY,WACd9H,YAAW,WACTvB,EAAO,IAAIoD,UAAU,6BACvB,GAAG,EACL,EAEAqF,EAAIa,QAAU,WACZ/H,YAAW,WACTvB,EAAO,IAAI1F,EAAQkI,aAAa,UAAW,cAC7C,GAAG,EACL,EAUAiG,EAAIc,KAAKhB,EAAQnL,OARjB,SAAgBjC,GACd,IACE,MAAe,KAARA,GAAckH,EAAE6F,SAASsB,KAAOnH,EAAE6F,SAASsB,KAAOrO,CAC3D,CAAE,MAAOiF,GACP,OAAOjF,CACT,CACF,CAEyBsO,CAAOlB,EAAQpN,MAAM,GAElB,YAAxBoN,EAAQrB,YACVuB,EAAIiB,iBAAkB,EACW,SAAxBnB,EAAQrB,cACjBuB,EAAIiB,iBAAkB,GAGpB,iBAAkBjB,IAChBhG,EACFgG,EAAIkB,aAAe,OAEnBlH,IAEAgG,EAAIkB,aAAe,gBAInB3M,GAAgC,iBAAjBA,EAAKO,WAA0BP,EAAKO,mBAAmBC,GAAY6E,EAAE7E,SAAWR,EAAKO,mBAAmB8E,EAAE7E,SAAW,CACtI,IAAIoM,EAAQ,GACZ1N,OAAO+C,oBAAoBjC,EAAKO,SAASoG,SAAQ,SAASjI,GACxDkO,EAAMhD,KAAK3D,EAAcvH,IACzB+M,EAAIoB,iBAAiBnO,EAAM4H,EAAetG,EAAKO,QAAQ7B,IACzD,IACA6M,EAAQhL,QAAQoG,SAAQ,SAASvH,EAAOV,IACT,IAAzBkO,EAAM5G,QAAQtH,IAChB+M,EAAIoB,iBAAiBnO,EAAMU,EAE/B,GACF,MACEmM,EAAQhL,QAAQoG,SAAQ,SAASvH,EAAOV,GACtC+M,EAAIoB,iBAAiBnO,EAAMU,EAC7B,IAGEmM,EAAQjH,SACViH,EAAQjH,OAAOwI,iBAAiB,QAASnB,GAEzCF,EAAIsB,mBAAqB,WAEA,IAAnBtB,EAAIuB,YACNzB,EAAQjH,OAAO2I,oBAAoB,QAAStB,EAEhD,GAGFF,EAAIyB,UAAkC,IAAtB3B,EAAQpD,UAA4B,KAAOoD,EAAQpD,UACrE,GACF,CAEAvE,EAAMuJ,UAAW,EAEZ9H,EAAEzB,QACLyB,EAAEzB,MAAQA,EACVyB,EAAE7E,QAAUA,EACZ6E,EAAE3B,QAAUA,EACZ2B,EAAE1B,SAAWA,GAGfrG,EAAQkD,QAAUA,EAClBlD,EAAQoG,QAAUA,EAClBpG,EAAQqG,SAAWA,EACnBrG,EAAQsG,MAAQA,CAIjB,CA5oBgB,CA4oBd,CAAC,EACH,CA/oBD,CA+oBG0B,GAEHA,EAAe1B,MAAMwJ,UAAW,SACzB9H,EAAe1B,MAAMuJ,SAE5B,IAAIE,EAAMlI,EAAWvB,MAAQuB,EAAaG,GAC1ChI,EAAU+P,EAAIzJ,OACd,QAAkByJ,EAAIzJ,MACtBtG,EAAQsG,MAAQyJ,EAAIzJ,MACpBtG,EAAQkD,QAAU6M,EAAI7M,QACtBlD,EAAQoG,QAAU2J,EAAI3J,QACtBpG,EAAQqG,SAAW0J,EAAI1J,SACvBpG,EAAOD,QAAUA,C,GC1qBbgQ,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBxP,IAAjByP,EACH,OAAOA,EAAanQ,QAGrB,IAAIC,EAAS+P,EAAyBE,GAAY,CAGjDlQ,QAAS,CAAC,GAOX,OAHAoQ,EAAoBF,GAAUnL,KAAK9E,EAAOD,QAASC,EAAQA,EAAOD,QAASiQ,GAGpEhQ,EAAOD,OACf,C,OCtBAiQ,EAAoBlI,EAAI,WACvB,GAA0B,iBAAfD,WAAyB,OAAOA,WAC3C,IACC,OAAOlE,MAAQ,IAAIyM,SAAS,cAAb,EAChB,CAAE,MAAOvK,GACR,GAAsB,iBAAXrF,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCGEwP,EAAoB,I","sources":["webpack://@gibme/ipinfo/webpack/universalModuleDefinition","webpack://@gibme/ipinfo/./node_modules/abort-controller/browser.js","webpack://@gibme/ipinfo/./src/web.ts","webpack://@gibme/ipinfo/./node_modules/@gibme/fetch/dist/helpers.js","webpack://@gibme/ipinfo/./node_modules/@gibme/fetch/dist/web.js","webpack://@gibme/ipinfo/./node_modules/cross-fetch/dist/browser-ponyfill.js","webpack://@gibme/ipinfo/webpack/bootstrap","webpack://@gibme/ipinfo/webpack/runtime/global","webpack://@gibme/ipinfo/webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, () => {\nreturn ","/*globals self, window */\n\"use strict\"\n\n/*eslint-disable @mysticatea/prettier */\nconst { AbortController, AbortSignal } =\n typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window :\n /* otherwise */ undefined\n/*eslint-enable @mysticatea/prettier */\n\nmodule.exports = AbortController\nmodule.exports.AbortSignal = AbortSignal\nmodule.exports.default = AbortController\n","// Copyright (c) 2016-2025, Brandon Lehmann <brandonlehmann@gmail.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\nimport fetch from '@gibme/fetch/browser';\n\n/**\n * Looks up information regarding the IP address supplied; OR,\n * if no address is supplied, looks up information regarding\n * our client's IP address\n *\n * @param address\n */\nexport async function ipInfo (\n address?: string\n): Promise<ipInfo.Result | undefined> {\n const url = `https://ipinfo.hostmanager.workers.dev/${address ? `?ip=${address}` : ''}`;\n\n const response = await fetch.get(url);\n\n if (!response.ok) {\n return undefined;\n }\n\n const json: ipInfo.Response = await response.json();\n\n if (json.status === 'fail') {\n return undefined;\n }\n\n const [as, name] = json.as.split(' ', 2)\n .map(elem => elem.trim());\n\n const asn = parseInt(as.replace('AS', '')) || 0;\n\n return {\n ...json,\n as: {\n asn,\n name\n }\n };\n}\n\nexport namespace ipInfo {\n export type Response = {\n status: 'success' | 'fail';\n message?: string;\n query: string;\n country: string;\n countryCode: string;\n region: string;\n regionName: string;\n city: string;\n zip: string;\n lat: number;\n lon: number;\n timezone: string;\n isp: string;\n org: string;\n as: string;\n }\n\n export type Result = {\n query: string;\n country: string;\n countryCode: string;\n region: string;\n regionName: string;\n city: string;\n zip: string;\n lat: number;\n lon: number;\n timezone: string;\n isp: string;\n org?: string;\n as: {\n asn: number;\n name: string;\n }\n }\n}\n\nexport default ipInfo;\n","\"use strict\";\n// Copyright (c) 2023-2025, Brandon Lehmann <brandonlehmann@gmail.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.normalizeInit = exports.toURLSearchParams = void 0;\n/**\n * Converts the given object into a URLSearchParms object\n *\n * Note: only the top-level structure is handled\n * @param obj\n */\nconst toURLSearchParams = (obj) => {\n const params = new URLSearchParams();\n for (const key of Object.keys(obj)) {\n if (typeof obj[key] === 'undefined') {\n params.set(key, '');\n }\n else if (typeof obj[key] === 'object') {\n params.set(key, JSON.stringify(obj[key]));\n }\n else {\n params.set(key, obj[key].toString());\n }\n }\n return params;\n};\nexports.toURLSearchParams = toURLSearchParams;\n/**\n * Shared init normalization helper\n * @param init\n */\nconst normalizeInit = (init = {}) => {\n var _a, _b, _c;\n (_a = init.method) !== null && _a !== void 0 ? _a : (init.method = 'GET');\n init.method = init.method.toUpperCase();\n (_b = init.rejectUnauthorized) !== null && _b !== void 0 ? _b : (init.rejectUnauthorized = true);\n (_c = init.headers) !== null && _c !== void 0 ? _c : (init.headers = new Headers()); // default to empty headers\n if (!['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'CONNECT', 'OPTIONS', 'TRACE', 'PATCH'].includes(init.method)) {\n throw new Error(`Invalid method: ${init.method}`);\n }\n // if the headers are NOT an instance of Headers, then we need to convert them\n if (!(init.headers instanceof Headers)) {\n const headers = new Headers();\n if (Array.isArray(init.headers)) {\n for (const [header, value] of init.headers) {\n headers.set(header, value);\n }\n }\n else if (typeof init.headers === 'object') {\n for (const header of Object.keys(init.headers)) {\n headers.set(header, init.headers[header]);\n }\n }\n else {\n throw new Error('headers must be an array, object, or instance of Headers');\n }\n init.headers = headers;\n }\n if (init.formData) {\n init.headers.set('content-type', 'application/x-www-form-urlencoded');\n if (!(init.formData instanceof URLSearchParams)) {\n init.formData = (0, exports.toURLSearchParams)(init.formData);\n }\n init.body = init.formData;\n }\n else if (init.json) {\n init.headers.set('content-type', 'application/json');\n if (typeof init.json !== 'string') {\n init.json = JSON.stringify(init.json);\n }\n init.body = init.json;\n }\n switch (init.method) {\n case 'PUT':\n case 'POST':\n case 'PATCH':\n case 'DELETE':\n break;\n default:\n delete init.body;\n break;\n }\n return init;\n};\nexports.normalizeInit = normalizeInit;\n","\"use strict\";\n// Copyright (c) 2023-2025, Brandon Lehmann <brandonlehmann@gmail.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Request = exports.Response = exports.Headers = void 0;\nexports.fetch = fetch;\nconst cross_fetch_1 = __importStar(require(\"cross-fetch\"));\nObject.defineProperty(exports, \"Headers\", { enumerable: true, get: function () { return cross_fetch_1.Headers; } });\nObject.defineProperty(exports, \"Request\", { enumerable: true, get: function () { return cross_fetch_1.Request; } });\nObject.defineProperty(exports, \"Response\", { enumerable: true, get: function () { return cross_fetch_1.Response; } });\nconst abort_controller_1 = __importDefault(require(\"abort-controller\"));\nconst helpers_1 = require(\"./helpers\");\n/**\n * Performs a fetch request with the given options\n * @param url\n * @param init\n */\nfunction fetch(url_1) {\n return __awaiter(this, arguments, void 0, function* (url, init = {}) {\n var _a;\n init = (0, helpers_1.normalizeInit)(init);\n url = url.toString();\n const controller = new abort_controller_1.default();\n let _timeout;\n if (init.timeout) {\n (_a = init.signal) !== null && _a !== void 0 ? _a : (init.signal = controller.signal);\n _timeout = setTimeout(() => controller.abort(), init.timeout);\n }\n const response = yield (0, cross_fetch_1.default)(url, init);\n if (_timeout) {\n clearTimeout(_timeout);\n }\n return response;\n });\n}\n(function (fetch) {\n function get(url, init = {}) {\n return fetch(url, Object.assign(Object.assign({}, init), { method: 'GET' }));\n }\n fetch.get = get;\n function head(url, init = {}) {\n return fetch(url, Object.assign(Object.assign({}, init), { method: 'HEAD' }));\n }\n fetch.head = head;\n function post(url, init = {}) {\n return fetch(url, Object.assign(Object.assign({}, init), { method: 'POST' }));\n }\n fetch.post = post;\n function put(url, init = {}) {\n return fetch(url, Object.assign(Object.assign({}, init), { method: 'PUT' }));\n }\n fetch.put = put;\n function del(url, init = {}) {\n return fetch(url, Object.assign(Object.assign({}, init), { method: 'DELETE' }));\n }\n fetch.del = del;\n function connect(url, init = {}) {\n return fetch(url, Object.assign(Object.assign({}, init), { method: 'CONNECT' }));\n }\n fetch.connect = connect;\n function options(url, init = {}) {\n return fetch(url, Object.assign(Object.assign({}, init), { method: 'OPTIONS' }));\n }\n fetch.options = options;\n function trace(url, init = {}) {\n return fetch(url, Object.assign(Object.assign({}, init), { method: 'TRACE' }));\n }\n fetch.trace = trace;\n function patch(url, init = {}) {\n return fetch(url, Object.assign(Object.assign({}, init), { method: 'PATCH' }));\n }\n fetch.patch = patch;\n})(fetch || (exports.fetch = fetch = {}));\nexports.default = fetch;\n","// Save global object in a variable\nvar __global__ =\n(typeof globalThis !== 'undefined' && globalThis) ||\n(typeof self !== 'undefined' && self) ||\n(typeof global !== 'undefined' && global);\n// Create an object that extends from __global__ without the fetch function\nvar __globalThis__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = __global__.DOMException\n}\nF.prototype = __global__; // Needed for feature detection on whatwg-fetch's code\nreturn new F();\n})();\n// Wraps whatwg-fetch with a function scope to hijack the global object\n// \"globalThis\" that's going to be patched\n(function(globalThis) {\n\nvar irrelevant = (function (exports) {\n\n /* eslint-disable no-prototype-builtins */\n var g =\n (typeof globalThis !== 'undefined' && globalThis) ||\n (typeof self !== 'undefined' && self) ||\n // eslint-disable-next-line no-undef\n (typeof global !== 'undefined' && global) ||\n {};\n\n var support = {\n searchParams: 'URLSearchParams' in g,\n iterable: 'Symbol' in g && 'iterator' in Symbol,\n blob:\n 'FileReader' in g &&\n 'Blob' in g &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in g,\n arrayBuffer: 'ArrayBuffer' in g\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n throw new TypeError('Invalid character in header field name: \"' + name + '\"')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n if (header.length != 2) {\n throw new TypeError('Headers constructor: expected name/value pair to be length 2, found' + header.length)\n }\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body._noBody) return\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n var match = /charset=([A-Za-z0-9_-]+)/.exec(blob.type);\n var encoding = match ? match[1] : 'utf-8';\n reader.readAsText(blob, encoding);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n /*\n fetch-mock wraps the Response object in an ES6 Proxy to\n provide useful test harness features such as flush. However, on\n ES5 browsers without fetch or Proxy support pollyfills must be used;\n the proxy-pollyfill is unable to proxy an attribute unless it exists\n on the object before the Proxy is created. This change ensures\n Response.bodyUsed exists on the instance, while maintaining the\n semantic of setting Request.bodyUsed in the constructor before\n _initBody is called.\n */\n // eslint-disable-next-line no-self-assign\n this.bodyUsed = this.bodyUsed;\n this._bodyInit = body;\n if (!body) {\n this._noBody = true;\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n var isConsumed = consumed(this);\n if (isConsumed) {\n return isConsumed\n } else if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n return Promise.resolve(\n this._bodyArrayBuffer.buffer.slice(\n this._bodyArrayBuffer.byteOffset,\n this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\n )\n )\n } else {\n return Promise.resolve(this._bodyArrayBuffer)\n }\n } else if (support.blob) {\n return this.blob().then(readBlobAsArrayBuffer)\n } else {\n throw new Error('could not read as ArrayBuffer')\n }\n };\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['CONNECT', 'DELETE', 'GET', 'HEAD', 'OPTIONS', 'PATCH', 'POST', 'PUT', 'TRACE'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n if (!(this instanceof Request)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal || (function () {\n if ('AbortController' in g) {\n var ctrl = new AbortController();\n return ctrl.signal;\n }\n }());\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n\n if (this.method === 'GET' || this.method === 'HEAD') {\n if (options.cache === 'no-store' || options.cache === 'no-cache') {\n // Search for a '_' parameter in the query string\n var reParamSearch = /([?&])_=[^&]*/;\n if (reParamSearch.test(this.url)) {\n // If it already exists then set the value with the current time\n this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime());\n } else {\n // Otherwise add a new '_' parameter to the end with the current time\n var reQueryString = /\\?/;\n this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime();\n }\n }\n }\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n // https://github.com/github/fetch/issues/748\n // https://github.com/zloirock/core-js/issues/751\n preProcessedHeaders\n .split('\\r')\n .map(function(header) {\n return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\n })\n .forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n try {\n headers.append(key, value);\n } catch (error) {\n console.warn('Response ' + error.message);\n }\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!(this instanceof Response)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n if (this.status < 200 || this.status > 599) {\n throw new RangeError(\"Failed to construct 'Response': The status provided (0) is outside the range [200, 599].\")\n }\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = options.statusText === undefined ? '' : '' + options.statusText;\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 200, statusText: ''});\n response.ok = false;\n response.status = 0;\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = g.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n // This check if specifically for when a user fetches a file locally from the file system\n // Only if the status is out of a normal range\n if (request.url.indexOf('file://') === 0 && (xhr.status < 200 || xhr.status > 599)) {\n options.status = 200;\n } else {\n options.status = xhr.status;\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n setTimeout(function() {\n resolve(new Response(body, options));\n }, 0);\n };\n\n xhr.onerror = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'));\n }, 0);\n };\n\n xhr.ontimeout = function() {\n setTimeout(function() {\n reject(new TypeError('Network request timed out'));\n }, 0);\n };\n\n xhr.onabort = function() {\n setTimeout(function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n }, 0);\n };\n\n function fixUrl(url) {\n try {\n return url === '' && g.location.href ? g.location.href : url\n } catch (e) {\n return url\n }\n }\n\n xhr.open(request.method, fixUrl(request.url), true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr) {\n if (support.blob) {\n xhr.responseType = 'blob';\n } else if (\n support.arrayBuffer\n ) {\n xhr.responseType = 'arraybuffer';\n }\n }\n\n if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers || (g.Headers && init.headers instanceof g.Headers))) {\n var names = [];\n Object.getOwnPropertyNames(init.headers).forEach(function(name) {\n names.push(normalizeName(name));\n xhr.setRequestHeader(name, normalizeValue(init.headers[name]));\n });\n request.headers.forEach(function(value, name) {\n if (names.indexOf(name) === -1) {\n xhr.setRequestHeader(name, value);\n }\n });\n } else {\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n }\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!g.fetch) {\n g.fetch = fetch;\n g.Headers = Headers;\n g.Request = Request;\n g.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n return exports;\n\n})({});\n})(__globalThis__);\n// This is a ponyfill, so...\n__globalThis__.fetch.ponyfill = true;\ndelete __globalThis__.fetch.polyfill;\n// Choose between native implementation (__global__) or custom implementation (__globalThis__)\nvar ctx = __global__.fetch ? __global__ : __globalThis__;\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(630);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","AbortController","AbortSignal","window","undefined","ipInfo","address","url","response","get","ok","json","status","as","name","split","map","elem","trim","asn","parseInt","replace","Object","defineProperty","value","normalizeInit","toURLSearchParams","obj","params","URLSearchParams","key","keys","set","JSON","stringify","toString","init","_a","_b","_c","method","toUpperCase","rejectUnauthorized","headers","Headers","includes","Error","Array","isArray","header","formData","body","ownKeys","__createBinding","this","create","o","m","k","k2","desc","getOwnPropertyDescriptor","__esModule","writable","configurable","enumerable","__setModuleDefault","v","__importStar","getOwnPropertyNames","ar","prototype","hasOwnProperty","call","length","mod","result","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","e","rejected","done","then","apply","__importDefault","Request","Response","fetch","cross_fetch_1","abort_controller_1","helpers_1","url_1","arguments","controller","default","_timeout","timeout","signal","setTimeout","abort","clearTimeout","assign","head","post","put","del","connect","options","trace","patch","__global__","globalThis","g","__globalThis__","F","DOMException","support","Symbol","Blob","viewClasses","isArrayBufferView","ArrayBuffer","isView","indexOf","normalizeName","String","test","TypeError","toLowerCase","normalizeValue","iteratorFor","items","iterator","shift","forEach","append","consumed","_noBody","bodyUsed","fileReaderReady","reader","onload","onerror","error","readBlobAsArrayBuffer","blob","FileReader","promise","readAsArrayBuffer","bufferClone","buf","slice","view","Uint8Array","byteLength","buffer","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","FormData","_bodyFormData","DataView","_bodyArrayBuffer","type","arrayBuffer","byteOffset","text","match","encoding","exec","readAsText","chars","fromCharCode","join","readArrayBufferAsText","decode","parse","oldValue","has","callback","push","values","entries","methods","input","upcased","credentials","mode","referrer","cache","reParamSearch","Date","getTime","form","bytes","decodeURIComponent","bodyInit","RangeError","statusText","clone","redirectStatuses","redirect","location","err","message","stack","constructor","request","aborted","xhr","XMLHttpRequest","abortXhr","rawHeaders","getAllResponseHeaders","substr","line","parts","console","warn","responseURL","responseText","ontimeout","onabort","open","href","fixUrl","withCredentials","responseType","names","setRequestHeader","addEventListener","onreadystatechange","readyState","removeEventListener","send","polyfill","ponyfill","ctx","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","Function"],"sourceRoot":""}
package/dist/web.d.ts CHANGED
@@ -1,10 +1,46 @@
1
- import { CheckIPResponse } from './types';
2
1
  /**
3
2
  * Looks up information regarding the IP address supplied; OR,
4
3
  * if no address is supplied, looks up information regarding
5
4
  * our client's IP address
6
5
  *
7
6
  * @param address
8
- * @constructor
9
7
  */
10
- export declare const CheckIP: (address?: string) => Promise<CheckIPResponse | undefined>;
8
+ export declare function ipInfo(address?: string): Promise<ipInfo.Result | undefined>;
9
+ export declare namespace ipInfo {
10
+ type Response = {
11
+ status: 'success' | 'fail';
12
+ message?: string;
13
+ query: string;
14
+ country: string;
15
+ countryCode: string;
16
+ region: string;
17
+ regionName: string;
18
+ city: string;
19
+ zip: string;
20
+ lat: number;
21
+ lon: number;
22
+ timezone: string;
23
+ isp: string;
24
+ org: string;
25
+ as: string;
26
+ };
27
+ type Result = {
28
+ query: string;
29
+ country: string;
30
+ countryCode: string;
31
+ region: string;
32
+ regionName: string;
33
+ city: string;
34
+ zip: string;
35
+ lat: number;
36
+ lon: number;
37
+ timezone: string;
38
+ isp: string;
39
+ org?: string;
40
+ as: {
41
+ asn: number;
42
+ name: string;
43
+ };
44
+ };
45
+ }
46
+ export default ipInfo;
package/dist/web.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright (c) 2016-2024, Brandon Lehmann <brandonlehmann@gmail.com>
2
+ // Copyright (c) 2016-2025, Brandon Lehmann <brandonlehmann@gmail.com>
3
3
  //
4
4
  // Permission is hereby granted, free of charge, to any person obtaining a copy
5
5
  // of this software and associated documentation files (the "Software"), to deal
@@ -31,47 +31,34 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
31
31
  return (mod && mod.__esModule) ? mod : { "default": mod };
32
32
  };
33
33
  Object.defineProperty(exports, "__esModule", { value: true });
34
- exports.CheckIP = void 0;
35
- const fetch_1 = __importDefault(require("@gibme/fetch"));
34
+ exports.ipInfo = ipInfo;
35
+ const browser_1 = __importDefault(require("@gibme/fetch/browser"));
36
36
  /**
37
37
  * Looks up information regarding the IP address supplied; OR,
38
38
  * if no address is supplied, looks up information regarding
39
39
  * our client's IP address
40
40
  *
41
41
  * @param address
42
- * @constructor
43
42
  */
44
- const CheckIP = (address) => __awaiter(void 0, void 0, void 0, function* () {
45
- const url = `https://ipinfo.hostmanager.workers.dev/${address ? `?ip=${address}` : ''}`;
46
- const response = yield fetch_1.default.get(url);
47
- if (!response.ok) {
48
- return undefined;
49
- }
50
- const json = yield response.json();
51
- if (json.status === 'fail') {
52
- return undefined;
53
- }
54
- const [as, name] = json.as.split(' ', 2)
55
- .map(elem => elem.trim());
56
- const asn = parseInt(as.replace('AS', '')) || 0;
57
- return {
58
- query: json.query,
59
- country: json.country,
60
- countryCode: json.countryCode,
61
- region: json.region,
62
- regionName: json.regionName,
63
- city: json.city,
64
- zip: json.zip,
65
- lat: json.lat,
66
- lon: json.lon,
67
- timezone: json.timezone,
68
- isp: json.isp,
69
- org: json.org.length !== 0 ? json.org : undefined,
70
- as: {
71
- asn,
72
- name
43
+ function ipInfo(address) {
44
+ return __awaiter(this, void 0, void 0, function* () {
45
+ const url = `https://ipinfo.hostmanager.workers.dev/${address ? `?ip=${address}` : ''}`;
46
+ const response = yield browser_1.default.get(url);
47
+ if (!response.ok) {
48
+ return undefined;
73
49
  }
74
- };
75
- });
76
- exports.CheckIP = CheckIP;
50
+ const json = yield response.json();
51
+ if (json.status === 'fail') {
52
+ return undefined;
53
+ }
54
+ const [as, name] = json.as.split(' ', 2)
55
+ .map(elem => elem.trim());
56
+ const asn = parseInt(as.replace('AS', '')) || 0;
57
+ return Object.assign(Object.assign({}, json), { as: {
58
+ asn,
59
+ name
60
+ } });
61
+ });
62
+ }
63
+ exports.default = ipInfo;
77
64
  //# sourceMappingURL=web.js.map
package/dist/web.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"web.js","sourceRoot":"","sources":["../src/web.ts"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,EAAE;AACF,+EAA+E;AAC/E,gFAAgF;AAChF,+EAA+E;AAC/E,4EAA4E;AAC5E,wEAAwE;AACxE,2DAA2D;AAC3D,EAAE;AACF,iFAAiF;AACjF,kDAAkD;AAClD,EAAE;AACF,6EAA6E;AAC7E,2EAA2E;AAC3E,8EAA8E;AAC9E,yEAAyE;AACzE,gFAAgF;AAChF,gFAAgF;AAChF,YAAY;;;;;;;;;;;;;;;AAGZ,yDAAiC;AAEjC;;;;;;;GAOG;AACI,MAAM,OAAO,GAAG,CACnB,OAAgB,EACoB,EAAE;IACtC,MAAM,GAAG,GAAG,0CAA0C,OAAO,CAAC,CAAC,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAExF,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAEtC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACf,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,IAAI,GAAqB,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAErD,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;SACnC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAE9B,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAEhD,OAAO;QACH,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;QACjD,EAAE,EAAE;YACA,GAAG;YACH,IAAI;SACP;KACJ,CAAC;AACN,CAAC,CAAA,CAAC;AAxCW,QAAA,OAAO,WAwClB"}
1
+ {"version":3,"file":"web.js","sourceRoot":"","sources":["../src/web.ts"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,EAAE;AACF,+EAA+E;AAC/E,gFAAgF;AAChF,+EAA+E;AAC/E,4EAA4E;AAC5E,wEAAwE;AACxE,2DAA2D;AAC3D,EAAE;AACF,iFAAiF;AACjF,kDAAkD;AAClD,EAAE;AACF,6EAA6E;AAC7E,2EAA2E;AAC3E,8EAA8E;AAC9E,yEAAyE;AACzE,gFAAgF;AAChF,gFAAgF;AAChF,YAAY;;;;;;;;;;;;;;AAWZ,wBA6BC;AAtCD,mEAAyC;AAEzC;;;;;;GAMG;AACH,SAAsB,MAAM,CACxB,OAAgB;;QAEhB,MAAM,GAAG,GAAG,0CAA0C,OAAO,CAAC,CAAC,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAExF,MAAM,QAAQ,GAAG,MAAM,iBAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEtC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,MAAM,IAAI,GAAoB,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEpD,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YACzB,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;aACnC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAE9B,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAEhD,uCACO,IAAI,KACP,EAAE,EAAE;gBACA,GAAG;gBACH,IAAI;aACP,IACH;IACN,CAAC;CAAA;AAyCD,kBAAe,MAAM,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gibme/ipinfo",
3
- "version": "1.0.2",
3
+ "version": "2.0.0",
4
4
  "description": "A simple IP information lookup helper using Team CYMRU services",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -31,7 +31,7 @@
31
31
  },
32
32
  "homepage": "https://gibme-npm.github.io/ipinfo/",
33
33
  "engines": {
34
- "node": ">=16"
34
+ "node": ">=18"
35
35
  },
36
36
  "engineStrict": true,
37
37
  "author": {
@@ -39,7 +39,7 @@
39
39
  "email": "brandonlehmann@gmail.com"
40
40
  },
41
41
  "dependencies": {
42
- "@gibme/fetch": "^1.1.1"
42
+ "@gibme/fetch": "^2.0.0"
43
43
  },
44
44
  "webpack": {
45
45
  "entry": {
@@ -48,9 +48,9 @@
48
48
  "filename": "[name].min.js"
49
49
  },
50
50
  "devDependencies": {
51
- "@gibme/auto-pack": "^0.4.6",
51
+ "@gibme/auto-pack": "^0.4.7",
52
52
  "@types/mocha": "^10.0.6",
53
- "@types/node": "^20.11.7",
53
+ "@types/node": "^22.15.17",
54
54
  "@typescript-eslint/eslint-plugin": "^6.19.1",
55
55
  "@typescript-eslint/parser": "^6.19.1",
56
56
  "eslint": "^8.56.0",
@@ -61,7 +61,7 @@
61
61
  "eslint-plugin-promise": "^6.1.1",
62
62
  "mocha": "^10.2.0",
63
63
  "ts-node": "^10.9.2",
64
- "typedoc": "^0.25.7",
65
- "typescript": "^5.3.3"
64
+ "typedoc": "^0.28.4",
65
+ "typescript": "^5.8.3"
66
66
  }
67
67
  }
package/dist/helpers.d.ts DELETED
@@ -1,5 +0,0 @@
1
- import { PrefixInfo } from './types';
2
- declare const _default: {
3
- getPrefix: (address: string, max_retries?: number) => Promise<PrefixInfo | undefined>;
4
- };
5
- export default _default;
package/dist/helpers.js DELETED
@@ -1,146 +0,0 @@
1
- "use strict";
2
- // Copyright (c) 2016-2023, Brandon Lehmann <brandonlehmann@gmail.com>
3
- //
4
- // Permission is hereby granted, free of charge, to any person obtaining a copy
5
- // of this software and associated documentation files (the "Software"), to deal
6
- // in the Software without restriction, including without limitation the rights
7
- // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
- // copies of the Software, and to permit persons to whom the Software is
9
- // furnished to do so, subject to the following conditions:
10
- //
11
- // The above copyright notice and this permission notice shall be included in all
12
- // copies or substantial portions of the Software.
13
- //
14
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
- // SOFTWARE.
21
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
22
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
23
- return new (P || (P = Promise))(function (resolve, reject) {
24
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
25
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
26
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
27
- step((generator = generator.apply(thisArg, _arguments || [])).next());
28
- });
29
- };
30
- Object.defineProperty(exports, "__esModule", { value: true });
31
- const promises_1 = require("dns/promises");
32
- /** @ignore */
33
- const sleep = (timeout) => __awaiter(void 0, void 0, void 0, function* () { return new Promise(resolve => setTimeout(resolve, timeout)); });
34
- /** @ignore */
35
- const countColons = (value) => {
36
- let count = 0;
37
- value.replace(/:/g, val => { count++; return val; });
38
- return count;
39
- };
40
- /**
41
- * @ignore
42
- * Expands compressed IPv6 address to uncompressed form
43
- *
44
- * @param value
45
- */
46
- const expandIPv6 = (value) => {
47
- return value.replace(/::/, () => {
48
- return `:${Array((7 - countColons(value)) + 1).join(':')}:`;
49
- })
50
- .split(':')
51
- .map(val => {
52
- return Array(4 - val.length).fill('0').join('') + val;
53
- })
54
- .join(':');
55
- };
56
- /**
57
- * DNS TXT record resolution with automatic retries
58
- *
59
- * @param hostname
60
- * @param max_retries
61
- * @param retry
62
- * @ignore
63
- */
64
- const getTxtRecord = (hostname_1, ...args_1) => __awaiter(void 0, [hostname_1, ...args_1], void 0, function* (hostname, max_retries = 3, retry = 0) {
65
- try {
66
- return yield (0, promises_1.resolveTxt)(hostname);
67
- }
68
- catch (error) {
69
- if (error.toString().toLowerCase().includes('refused') && retry < max_retries) {
70
- yield sleep(1000);
71
- return getTxtRecord(hostname, max_retries, retry);
72
- }
73
- throw error;
74
- }
75
- });
76
- /**
77
- * Looks up information on the Autonomous System Number (ASN) via DNS
78
- *
79
- * @param as
80
- * @param max_retries
81
- * @ignore
82
- */
83
- const getASN = (as_1, ...args_1) => __awaiter(void 0, [as_1, ...args_1], void 0, function* (as, max_retries = 3) {
84
- if (typeof as === 'string') {
85
- as = parseInt(as);
86
- }
87
- const records = yield getTxtRecord(`AS${as}.asn.cymru.com`, max_retries);
88
- if (records.length === 0 || records[0].length === 0) {
89
- return undefined;
90
- }
91
- const [, country, registry, allocated, name] = records[0][0].split('|')
92
- .map(elem => elem.trim());
93
- return {
94
- asn: as,
95
- country: country.toUpperCase(),
96
- registry: registry.toUpperCase(),
97
- allocated: new Date(allocated),
98
- name: name.split(',')[0]
99
- };
100
- });
101
- /**
102
- * Looks up the prefix information via DNS
103
- *
104
- * @param address
105
- * @param max_retries
106
- * @ignore
107
- */
108
- const getPrefix = (address_1, ...args_1) => __awaiter(void 0, [address_1, ...args_1], void 0, function* (address, max_retries = 3) {
109
- const original_address = address;
110
- address = address.split('/')[0]; // strip off any CIDR notation
111
- if (address.includes(':')) {
112
- address = expandIPv6(address);
113
- address = address.split(':')
114
- .join('')
115
- .split('')
116
- .reverse()
117
- .join('.');
118
- address = `${address}.origin6.asn.cymru.com`;
119
- }
120
- else {
121
- address = address.split('.')
122
- .reverse()
123
- .join('.');
124
- address = `${address}.origin.asn.cymru.com`;
125
- }
126
- const records = yield getTxtRecord(address, max_retries);
127
- if (records.length === 0 || records[0].length === 0) {
128
- return undefined;
129
- }
130
- const [asn, prefix, country, registry, allocated] = records[0][0].split('|')
131
- .map(elem => elem.trim());
132
- return {
133
- address: original_address,
134
- zone: address,
135
- asn: parseInt(asn),
136
- prefix,
137
- country: country.toUpperCase(),
138
- registry: registry.toUpperCase(),
139
- allocated: new Date(allocated),
140
- as: yield getASN(asn)
141
- };
142
- });
143
- exports.default = {
144
- getPrefix
145
- };
146
- //# sourceMappingURL=helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts DELETED
@@ -1,60 +0,0 @@
1
- /**
2
- * ASN information
3
- */
4
- export interface ASNEntry {
5
- asn: number;
6
- country: string;
7
- registry: string;
8
- allocated: Date;
9
- name: string;
10
- }
11
- /**
12
- * IP Prefix information including the ASN name (if available)
13
- */
14
- export interface PrefixInfo {
15
- address: string;
16
- zone: string;
17
- asn: number;
18
- prefix: string;
19
- country: string;
20
- registry: string;
21
- allocated: Date;
22
- as?: ASNEntry;
23
- }
24
- export declare namespace Workers {
25
- interface Response {
26
- status: 'success' | 'fail';
27
- message?: string;
28
- query: string;
29
- country: string;
30
- countryCode: string;
31
- region: string;
32
- regionName: string;
33
- city: string;
34
- zip: string;
35
- lat: number;
36
- lon: number;
37
- timezone: string;
38
- isp: string;
39
- org: string;
40
- as: string;
41
- }
42
- }
43
- export interface CheckIPResponse {
44
- query: string;
45
- country: string;
46
- countryCode: string;
47
- region: string;
48
- regionName: string;
49
- city: string;
50
- zip: string;
51
- lat: number;
52
- lon: number;
53
- timezone: string;
54
- isp: string;
55
- org?: string;
56
- as: {
57
- asn: number;
58
- name: string;
59
- };
60
- }
package/dist/types.js DELETED
@@ -1,22 +0,0 @@
1
- "use strict";
2
- // Copyright (c) 2016-2023, Brandon Lehmann <brandonlehmann@gmail.com>
3
- //
4
- // Permission is hereby granted, free of charge, to any person obtaining a copy
5
- // of this software and associated documentation files (the "Software"), to deal
6
- // in the Software without restriction, including without limitation the rights
7
- // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
- // copies of the Software, and to permit persons to whom the Software is
9
- // furnished to do so, subject to the following conditions:
10
- //
11
- // The above copyright notice and this permission notice shall be included in all
12
- // copies or substantial portions of the Software.
13
- //
14
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
- // SOFTWARE.
21
- Object.defineProperty(exports, "__esModule", { value: true });
22
- //# sourceMappingURL=types.js.map
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,EAAE;AACF,+EAA+E;AAC/E,gFAAgF;AAChF,+EAA+E;AAC/E,4EAA4E;AAC5E,wEAAwE;AACxE,2DAA2D;AAC3D,EAAE;AACF,iFAAiF;AACjF,kDAAkD;AAClD,EAAE;AACF,6EAA6E;AAC7E,2EAA2E;AAC3E,8EAA8E;AAC9E,yEAAyE;AACzE,gFAAgF;AAChF,gFAAgF;AAChF,YAAY"}