@adamlui/geolocate 2.0.2 → 2.0.4
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/README.md +6 -6
- package/dist/cli.min.js +8 -9
- package/dist/geolocate.min.js +1 -1
- package/docs/README.md +6 -6
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
### Fetch IP geolocation data from the CLI.
|
|
4
4
|
|
|
5
|
-
<a href="https://github.com/adamlui/js-utils/releases/tag/geolocate-2.0.
|
|
5
|
+
<a href="https://github.com/adamlui/js-utils/releases/tag/geolocate-2.0.4"><img height=31 src="https://img.shields.io/badge/Latest_Build-2.0.4-44cc11.svg?logo=icinga&logoColor=white&labelColor=464646&style=for-the-badge"></a>
|
|
6
6
|
<a href="https://www.npmjs.com/package/@adamlui/geolocate?activeTab=code"><img height=31 src="https://img.shields.io/npm/unpacked-size/%40adamlui%2Fgeolocate?style=for-the-badge&logo=ebox&logoColor=white&labelColor=464646&color=blue"></a>
|
|
7
|
-
<a href="https://github.com/adamlui/js-utils/blob/geolocate-2.0.
|
|
7
|
+
<a href="https://github.com/adamlui/js-utils/blob/geolocate-2.0.4/geolocate/dist/geolocate.min.js"><img height=31 src="https://img.shields.io/github/size/adamlui/js-utils/geolocate/dist/geolocate.min.js?branch=geolocate-2.0.4&label=Minified%20Size&logo=databricks&logoColor=white&labelColor=464646&color=ff69b4&style=for-the-badge"></a>
|
|
8
8
|
<a href="https://sonarcloud.io/component_measures?metric=new_vulnerabilities&id=adamlui_js-utils:geolocate/src/geolocate.js"><img height=31 src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fsonarcloud.io%2Fapi%2Fmeasures%2Fcomponent%3Fcomponent%3Dadamlui_js-utils%3Ageolocate%2Fsrc%2Fgeolocate.js%26metricKeys%3Dvulnerabilities&query=%24.component.measures.0.value&style=for-the-badge&logo=sonarcloud&logoColor=white&labelColor=464646&label=Vulnerabilities&color=gold"></a>
|
|
9
9
|
|
|
10
10
|
<br>
|
|
@@ -89,14 +89,14 @@ const geo = require('@adamlui/geolocate');
|
|
|
89
89
|
#### <> HTML script tag:
|
|
90
90
|
|
|
91
91
|
```html
|
|
92
|
-
<script src="https://cdn.jsdelivr.net/npm/@adamlui/geolocate@2.0.
|
|
92
|
+
<script src="https://cdn.jsdelivr.net/npm/@adamlui/geolocate@2.0.4/dist/geolocate.min.js"></script>
|
|
93
93
|
```
|
|
94
94
|
|
|
95
95
|
#### ES6:
|
|
96
96
|
|
|
97
97
|
```js
|
|
98
98
|
(async () => {
|
|
99
|
-
await import('https://cdn.jsdelivr.net/npm/@adamlui/geolocate@2.0.
|
|
99
|
+
await import('https://cdn.jsdelivr.net/npm/@adamlui/geolocate@2.0.4/dist/geolocate.min.js');
|
|
100
100
|
// Your code here...
|
|
101
101
|
})();
|
|
102
102
|
```
|
|
@@ -105,7 +105,7 @@ const geo = require('@adamlui/geolocate');
|
|
|
105
105
|
|
|
106
106
|
```js
|
|
107
107
|
...
|
|
108
|
-
// @require https://cdn.jsdelivr.net/npm/@adamlui/geolocate@2.0.
|
|
108
|
+
// @require https://cdn.jsdelivr.net/npm/@adamlui/geolocate@2.0.4/dist/geolocate.min.js
|
|
109
109
|
// ==/UserScript==
|
|
110
110
|
|
|
111
111
|
// Your code here...
|
|
@@ -113,7 +113,7 @@ const geo = require('@adamlui/geolocate');
|
|
|
113
113
|
|
|
114
114
|
<br>
|
|
115
115
|
|
|
116
|
-
**📝 Note:** To always import the latest version (not recommended in production!) remove the `@2.0.
|
|
116
|
+
**📝 Note:** To always import the latest version (not recommended in production!) remove the `@2.0.4` version tag from the jsDelivr URL: `https://cdn.jsdelivr.net/npm/@adamlui/geolocate/dist/geolocate.min.js`
|
|
117
117
|
|
|
118
118
|
<br>
|
|
119
119
|
|
package/dist/cli.min.js
CHANGED
|
@@ -4,13 +4,12 @@
|
|
|
4
4
|
* Source: https://code.js-utils.com/geolocate
|
|
5
5
|
* Documentation: https://docs.js-utils.com/geolocate
|
|
6
6
|
*/
|
|
7
|
-
const pkgName="@adamlui/geolocate",docURL="https://docs.js-utils.com/geolocate/#-command-line-usage";(async()=>{const e=require(__dirname.match(/src/)?"./geolocate":"./geolocate.min"),s=require("fs"),n=require("path"),i=require("child_process")["execSync"],r="[0m",t="[1;
|
|
7
|
+
const pkgName="@adamlui/geolocate",copyright="© 2024 Adam Lui under the MIT license.",cmdFormat="geolocate [ip1] [ip2] [...] [options|commands]",srcURL="https://code.js-utils.com/geolocate",docURL="https://docs.js-utils.com/geolocate/#-command-line-usage";(async()=>{const e=require(__dirname.match(/src/)?"./geolocate":"./geolocate.min"),s=require("fs"),n=require("path"),i=require("child_process")["execSync"],r="[0m",t="[1;97m",c={},a={flags:{quietMode:/^--?q(?:uiet)?(?:-?mode)?$/},infoCmds:{help:/^--?h(?:elp)?$/,version:/^--?ve?r?s?i?o?n?$/}};if(process.argv.forEach(o=>{var e,s;o.startsWith("-")&&(e=Object.keys(a.flags).find(e=>a.flags[e].test(o)),s=Object.keys(a.infoCmds).find(e=>a.infoCmds[e].test(o)),e?c[e]=!0:s||(console.error(`
|
|
8
8
|
[1;91mERROR: Arg [${o}] not recognized.[0m`),console.info(`
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
`+
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
${
|
|
15
|
-
${
|
|
16
|
-
${c}Info commands:[0m`," -h, --help Display help screen."," -v, --version Show version number."]};e.forEach(e=>{o[e]?.forEach(e=>{{const n=process.stdout.columns||80,i=[],o=e.match(/\S+|\s+/g);let s="";o.forEach(e=>{var o=n-(0==i.length?0:29);s.length+e.length>o&&(i.push(0==i.length?s:s.trimStart()),s=""),s+=e}),i.push(0==i.length?s:s.trimStart()),i.forEach((e,o)=>console.info(0==o?e:" ".repeat(29)+e))}})})}})();
|
|
9
|
+
[1;33mValid arguments are below.[0m`),f(["configOptions","infoCmds"]),process.exit(1)))}),process.argv.some(e=>a.infoCmds.help.test(e)))f();else if(process.argv.some(e=>a.infoCmds.version.test(e))){var l=i(`npm view ${pkgName} version`).toString().trim()||"none";let e,o=process.cwd();for(;"/"!=o;){var p=n.join(o,"package.json");if(s.existsSync(p)){p=require(p);e=(p.dependencies?.[pkgName]||p.devDependencies?.[pkgName])?.match(/(\d+\.\d+\.\d+)/)[0]||"none";break}o=n.dirname(o)}console.info(`
|
|
10
|
+
Global version: `+l),console.info("Local version: "+e)}else{var o,m=[];for(const d of process.argv.slice(2))d.startsWith("-")||(o=d.replace(/[[\]]/g,""),m.push(o));l=await e.locate(m,{verbose:!c.quietMode});l||process.exit(1),c.quietMode||1!=l.length||(console.info(`
|
|
11
|
+
IP: `+t+l[0].ip+r),console.info("Country: "+t+l[0].country+r),console.info("Region: "+t+l[0].regionName+r),console.info("City: "+t+l[0].city+r),console.info("Zip: "+t+l[0].zip+r),console.info("Latitude: "+t+l[0].lat+r),console.info("Longitude: "+t+l[0].lon+r),console.info("Time zone: "+t+l[0].timezone.replace(/_/g," ").replace(/\//g," / ")+r),console.info("ISP: "+t+l[0].isp+r)),c.quietMode||console.info("\nCopying to clipboard..."),g=(g=JSON.stringify(l)).replace(/\s+$/,"").replace(/"/g,'""'),"darwin"==process.platform?i(`printf "${g}" | pbcopy`):"linux"==process.platform?i(`printf "${g}" | xclip -selection clipboard`):"win32"==process.platform&&i(`Set-Clipboard -Value "${g}"`,{shell:"powershell"})}var g;function f(e=["header","usage","configOptions","infoCmds"]){var o=`[106m[30m ${pkgName.replace(/^@[^/]+\//,"")} [0m `;const s={header:[`
|
|
12
|
+
├ `+o+copyright,o+"Source: "+srcURL],usage:[`
|
|
13
|
+
${t}o Usage:[0m`," [1;97m» [1;92m"+cmdFormat+r],configOptions:[`
|
|
14
|
+
${t}o Config options:[0m`," -q, --quiet Suppress all logging except errors."],infoCmds:[`
|
|
15
|
+
${t}o Info commands:[0m`," -h, --help Display help screen."," -v, --version Show version number."]};e.forEach(t=>{s[t]?.forEach(e=>{{var n=/header|usage/.test(t)?1:29;const i=process.stdout.columns||80,r=[],o=e.match(/\S+|\s+/g);let s="";o.forEach(e=>{var o=i-(0==r.length?0:n);s.length+"| ".length+e.length>o&&(r.push(0==r.length?s:s.trimStart()),s=""),s+=e}),r.push(0==r.length?s:s.trimStart()),r.forEach((e,o)=>console.info("| "+(0==o?e:" ".repeat(n)+e)))}})}),console.info("\nFor more help, please visit: "+t+docURL+r)}})();
|
package/dist/geolocate.min.js
CHANGED
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
* Source: https://code.js-utils.com/geolocate
|
|
4
4
|
* Documentation: https://docs.js-utils.com/geolocate
|
|
5
5
|
*/
|
|
6
|
-
async function geolocate(e,a={}){var o={verbose:!0};(e=Array.isArray(e)?e:[e])[0]=e[0]||await fetch("https://ifconfig.me/ip").then(e=>e.text()).catch(()=>fetch("http://ip-api.com/json/").then(e=>e.json()).then(e=>e.query)).catch(async()=>{try{var e=require("child_process")["exec"],o=require("util")["promisify"],{stdout:t,stderr:r}=await o(e)("curl -s ifconfig.me");return r?console.error("geolocate() »",r):t.trim()}catch(e){console.error("geolocate() »",e)}});for(const t of e){a.verbose&&console.info(`geolocate() » Validating ${t}...`);let o;try{o=require("generate-ip").ipv4.validate}catch(e){await import("https://cdn.jsdelivr.net/npm/generate-ip/dist/generate-ip.min.js"),o=ipv4.validate}if(o&&!o(t,{verbose:!1}))return console.error(`geolocate() » ERROR: ${t} is not a valid IPv4 address.`)}if(validateOptions(a,o,"https://docs.js-utils.com/geolocate/#locateip","geolocate('8.8.8.8', { verbose: false })")){a={...o,...a};try{var
|
|
6
|
+
async function geolocate(e,a={}){var o={verbose:!0};(e=Array.isArray(e)?e:[e])[0]=e[0]||await fetch("https://ifconfig.me/ip").then(e=>e.text()).catch(()=>fetch("http://ip-api.com/json/").then(e=>e.json()).then(e=>e.query)).catch(async()=>{try{var e=require("child_process")["exec"],o=require("util")["promisify"],{stdout:t,stderr:r}=await o(e)("curl -s ifconfig.me");return r?console.error("geolocate() »",r):t.trim()}catch(e){console.error("geolocate() »",e)}});for(const t of e){a.verbose&&console.info(`geolocate() » Validating ${t}...`);let o;try{o=require("generate-ip").ipv4.validate}catch(e){await import("https://cdn.jsdelivr.net/npm/generate-ip/dist/generate-ip.min.js"),o=ipv4.validate}if(o&&!o(t,{verbose:!1}))return console.error(`geolocate() » ERROR: ${t} is not a valid IPv4 address.`)}if(validateOptions(a,o,"https://docs.js-utils.com/geolocate/#locateip","geolocate('8.8.8.8', { verbose: false })")){a={...o,...a};try{var i=[];for(const c of e){a.verbose&&console.info(`geolocate() » Fetching geolocation data for ${c}...`);let{status:e,org:o,as:t,query:r,...n}=await(await fetchData("http://ip-api.com/json/"+c)).json();n={ip:c,...n},i.push(n)}return!a.verbose||"undefined"!=typeof require&&/cli(?:\.min)?\.js$/.test(require.main.filename)||console.info("geolocate() » Success! Check returned array."),i}catch(e){console.error("geolocate() » ERROR:",e.message)}}}function fetchData(r){return"undefined"==typeof fetch?new Promise((t,o)=>{try{var e=r.match(/^([^:]+):\/\//)[1];/^https?$/.test(e)||o(new Error("Invalid fetchData() URL.")),require(e).get(r,e=>{let o="";e.on("data",e=>o+=e),e.on("end",()=>t({json:()=>JSON.parse(o)}))}).on("error",e=>o(new Error(e.message)))}catch(e){o(new Error("Environment not supported."))}}):fetch(r)}function validateOptions(e,o,t,r){const n=JSON.stringify(o,null,2).replace(/"([^"]+)":/g,"$1:").replace(/"/g,"'").replace(/\n\s*/g," "),a=Object.keys(o).join(", "),i=Object.keys(o).filter(e=>"boolean"==typeof o[e]);let c="validateOptions() » ";try{c=validateOptions.caller?.name+"() » "}catch(e){}var s=r.split(",").findIndex(e=>e.trim().startsWith("{"))+1,l=(s+=["st","nd","rd"][s-1]||"th",()=>{console.info(`${c}Valid options: [ ${a} ]`),console.info(c+"If omitted, default settings are: "+n)}),p=()=>{console.info(c+"For more help, please visit "+t)};if("object"!=typeof e)return console.error(c+`ERROR: ${"0th"==s?"[O":s+" arg [o"}ptions] can only be an object of key/values.`),console.info(c+"Example valid call: "+r),l(),p(),!1;for(const f in e){if(!Object.prototype.hasOwnProperty.call(o,f))return console.error(`${c}ERROR: \`${f}\` is an invalid option.`),l(),p(),!1;if(i.includes(f)&&"boolean"!=typeof e[f])return console.error(`${c}ERROR: [${f}] option can only be \`true\` or \`false\`.`),p(),!1}return!0}const apiFunctions={geolocate:geolocate,locate:geolocate};try{module.exports={...apiFunctions}}catch(e){}try{window.geo={...apiFunctions}}catch(e){}
|
package/docs/README.md
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
### Fetch IP geolocation data from the CLI.
|
|
4
4
|
|
|
5
|
-
<a href="https://github.com/adamlui/js-utils/releases/tag/geolocate-2.0.
|
|
5
|
+
<a href="https://github.com/adamlui/js-utils/releases/tag/geolocate-2.0.4"><img height=31 src="https://img.shields.io/badge/Latest_Build-2.0.4-44cc11.svg?logo=icinga&logoColor=white&labelColor=464646&style=for-the-badge"></a>
|
|
6
6
|
<a href="https://www.npmjs.com/package/@adamlui/geolocate?activeTab=code"><img height=31 src="https://img.shields.io/npm/unpacked-size/%40adamlui%2Fgeolocate?style=for-the-badge&logo=ebox&logoColor=white&labelColor=464646&color=blue"></a>
|
|
7
|
-
<a href="https://github.com/adamlui/js-utils/blob/geolocate-2.0.
|
|
7
|
+
<a href="https://github.com/adamlui/js-utils/blob/geolocate-2.0.4/geolocate/dist/geolocate.min.js"><img height=31 src="https://img.shields.io/github/size/adamlui/js-utils/geolocate/dist/geolocate.min.js?branch=geolocate-2.0.4&label=Minified%20Size&logo=databricks&logoColor=white&labelColor=464646&color=ff69b4&style=for-the-badge"></a>
|
|
8
8
|
<a href="https://sonarcloud.io/component_measures?metric=new_vulnerabilities&id=adamlui_js-utils:geolocate/src/geolocate.js"><img height=31 src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fsonarcloud.io%2Fapi%2Fmeasures%2Fcomponent%3Fcomponent%3Dadamlui_js-utils%3Ageolocate%2Fsrc%2Fgeolocate.js%26metricKeys%3Dvulnerabilities&query=%24.component.measures.0.value&style=for-the-badge&logo=sonarcloud&logoColor=white&labelColor=464646&label=Vulnerabilities&color=gold"></a>
|
|
9
9
|
|
|
10
10
|
<br>
|
|
@@ -89,14 +89,14 @@ const geo = require('@adamlui/geolocate');
|
|
|
89
89
|
#### <> HTML script tag:
|
|
90
90
|
|
|
91
91
|
```html
|
|
92
|
-
<script src="https://cdn.jsdelivr.net/npm/@adamlui/geolocate@2.0.
|
|
92
|
+
<script src="https://cdn.jsdelivr.net/npm/@adamlui/geolocate@2.0.4/dist/geolocate.min.js"></script>
|
|
93
93
|
```
|
|
94
94
|
|
|
95
95
|
#### ES6:
|
|
96
96
|
|
|
97
97
|
```js
|
|
98
98
|
(async () => {
|
|
99
|
-
await import('https://cdn.jsdelivr.net/npm/@adamlui/geolocate@2.0.
|
|
99
|
+
await import('https://cdn.jsdelivr.net/npm/@adamlui/geolocate@2.0.4/dist/geolocate.min.js');
|
|
100
100
|
// Your code here...
|
|
101
101
|
})();
|
|
102
102
|
```
|
|
@@ -105,7 +105,7 @@ const geo = require('@adamlui/geolocate');
|
|
|
105
105
|
|
|
106
106
|
```js
|
|
107
107
|
...
|
|
108
|
-
// @require https://cdn.jsdelivr.net/npm/@adamlui/geolocate@2.0.
|
|
108
|
+
// @require https://cdn.jsdelivr.net/npm/@adamlui/geolocate@2.0.4/dist/geolocate.min.js
|
|
109
109
|
// ==/UserScript==
|
|
110
110
|
|
|
111
111
|
// Your code here...
|
|
@@ -113,7 +113,7 @@ const geo = require('@adamlui/geolocate');
|
|
|
113
113
|
|
|
114
114
|
<br>
|
|
115
115
|
|
|
116
|
-
**📝 Note:** To always import the latest version (not recommended in production!) remove the `@2.0.
|
|
116
|
+
**📝 Note:** To always import the latest version (not recommended in production!) remove the `@2.0.4` version tag from the jsDelivr URL: `https://cdn.jsdelivr.net/npm/@adamlui/geolocate/dist/geolocate.min.js`
|
|
117
117
|
|
|
118
118
|
<br>
|
|
119
119
|
|