generate-ip 2.4.2 → 2.4.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 +32 -26
- package/dist/generate-ip.min.js +1 -1
- package/docs/README.md +32 -26
- package/docs/SECURITY.md +1 -1
- package/package.json +13 -7
package/README.md
CHANGED
|
@@ -1,18 +1,22 @@
|
|
|
1
|
-
|
|
1
|
+
<div align="center">
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
<picture><source media="(prefers-color-scheme: dark)" srcset="https://media.generate-ip.org/images/logos/generate-ip/white-logo.png?7768152"><img width=700 src="https://media.generate-ip.org/images/logos/generate-ip/black-logo.png?7768152"></picture>
|
|
4
|
+
|
|
5
|
+
### <picture><source media="(prefers-color-scheme: dark)" srcset="https://media.generate-ip.org/images/icons/node-graph/white/icon55x49.png?b4eb06e"><img width=23 src="https://media.generate-ip.org/images/icons/node-graph/black/icon55x49.png?b4eb06e"></picture> Randomly generate, format, and validate IPv4 + IPv6 + MAC addresses.
|
|
6
|
+
|
|
7
|
+
<br>
|
|
4
8
|
|
|
5
9
|
<a href="#%EF%B8%8F-mit-license"><img height=31 src="https://img.shields.io/badge/License-MIT-orange.svg?logo=internetarchive&logoColor=white&labelColor=464646&style=for-the-badge"></a>
|
|
6
|
-
<a href="https://github.com/adamlui/js-utils/releases/tag/generate-ip-2.4.
|
|
10
|
+
<a href="https://github.com/adamlui/js-utils/releases/tag/generate-ip-2.4.4"><img height=31 src="https://img.shields.io/badge/Latest_Build-2.4.4-44cc11.svg?logo=icinga&logoColor=white&labelColor=464646&style=for-the-badge"></a>
|
|
7
11
|
<a href="https://www.npmjs.com/package/generate-ip?activeTab=code"><img height=31 src="https://img.shields.io/npm/unpacked-size/generate-ip?style=for-the-badge&logo=ebox&logoColor=white&labelColor=464646&color=blue"></a>
|
|
8
|
-
<a href="https://github.com/adamlui/js-utils/blob/generate-ip-2.4.
|
|
12
|
+
<a href="https://github.com/adamlui/js-utils/blob/generate-ip-2.4.4/generate-ip/dist/generate-ip.min.js"><img height=31 src="https://img.shields.io/github/size/adamlui/js-utils/generate-ip/dist/generate-ip.min.js?branch=generate-ip-2.4.4&label=Minified%20Size&logo=databricks&logoColor=white&labelColor=464646&color=ff69b4&style=for-the-badge"></a>
|
|
9
13
|
<a href="https://sonarcloud.io/component_measures?metric=new_vulnerabilities&id=adamlui_js-utils:generate-ip/src/generate-ip.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%3Agenerate-ip%2Fsrc%2Fgenerate-ip.js%26metricKeys%3Dvulnerabilities&query=%24.component.measures.0.value&style=for-the-badge&logo=sonarcloud&logoColor=white&labelColor=464646&label=Vulnerabilities&color=gold"></a>
|
|
10
14
|
<a href="https://github.com/toolleeo/cli-apps#networking"><img height=31 src="https://img.shields.io/badge/Mentioned_in-Awesome-c4a2bd?logo=awesomelists&logoColor=white&labelColor=464646&style=for-the-badge"></a>
|
|
11
15
|
<a href="https://www.jsdelivr.com/package/npm/generate-ip?tab=stats"><img height=31 src="https://img.shields.io/jsdelivr/npm/hm/generate-ip?style=for-the-badge&logo=jsdelivr&logoColor=white&label=jsDelivr%20Hits&labelColor=464646&color=49c5d8"></a>
|
|
12
16
|
|
|
13
|
-
|
|
17
|
+
</div>
|
|
14
18
|
|
|
15
|
-
<img height=6px width="100%" src="https://media.js-utils.
|
|
19
|
+
<img height=6px width="100%" src="https://media.js-utils.org/images/separators/gradient-aqua.png?c0192d3">
|
|
16
20
|
|
|
17
21
|
## 💡 About
|
|
18
22
|
|
|
@@ -23,7 +27,7 @@
|
|
|
23
27
|
- **Multi-environment support —** Use in Node.js or the web browser
|
|
24
28
|
- **Command line usable —** Just type `generate-ip`, that's it
|
|
25
29
|
|
|
26
|
-
<img height=6px width="100%" src="https://media.js-utils.
|
|
30
|
+
<img height=6px width="100%" src="https://media.js-utils.org/images/separators/gradient-aqua.png?c0192d3">
|
|
27
31
|
|
|
28
32
|
## ⚡ Installation
|
|
29
33
|
|
|
@@ -47,11 +51,13 @@ $ npm install generate-ip
|
|
|
47
51
|
|
|
48
52
|
<br>
|
|
49
53
|
|
|
50
|
-
<
|
|
54
|
+
<a href="https://github.com/sponsors/adamlui"><img src="https://media.js-utils.org/images/banners/sponsor/$10/banner1660x260.png?09f5d64"></a>
|
|
55
|
+
|
|
56
|
+
<img height=6px width="100%" src="https://media.js-utils.org/images/separators/gradient-aqua.png?c0192d3">
|
|
51
57
|
|
|
52
58
|
## 🔌 Importing the APIs
|
|
53
59
|
|
|
54
|
-
### <img height=18 src="https://media.js-utils.
|
|
60
|
+
### <img height=18 src="https://media.js-utils.org/images/icons/platforms/node.js/icon25x28.png?3e22bae"> Node.js
|
|
55
61
|
|
|
56
62
|
#### ECMAScript*:
|
|
57
63
|
|
|
@@ -67,28 +73,28 @@ const { ipv4, ipv6, mac } = require('generate-ip');
|
|
|
67
73
|
|
|
68
74
|
###### _*Node.js version 14 or higher required_
|
|
69
75
|
|
|
70
|
-
### <picture><source media="(prefers-color-scheme: dark)" srcset="https://media.js-utils.
|
|
76
|
+
### <picture><source media="(prefers-color-scheme: dark)" srcset="https://media.js-utils.org/images/icons/platforms/web/light/icon25.png?3e22bae"><img width=16 src="https://media.js-utils.org/images/icons/platforms/web/dark/icon25.png?3e22bae"></picture> Web
|
|
71
77
|
|
|
72
78
|
#### <> HTML script tag:
|
|
73
79
|
|
|
74
80
|
```html
|
|
75
|
-
<script src="https://cdn.jsdelivr.net/npm/generate-ip@2.4.
|
|
81
|
+
<script src="https://cdn.jsdelivr.net/npm/generate-ip@2.4.4/dist/generate-ip.min.js"></script>
|
|
76
82
|
```
|
|
77
83
|
|
|
78
84
|
#### ES6:
|
|
79
85
|
|
|
80
86
|
```js
|
|
81
87
|
(async () => {
|
|
82
|
-
await import('https://cdn.jsdelivr.net/npm/generate-ip@2.4.
|
|
88
|
+
await import('https://cdn.jsdelivr.net/npm/generate-ip@2.4.4/dist/generate-ip.min.js');
|
|
83
89
|
// Your code here...
|
|
84
90
|
})();
|
|
85
91
|
```
|
|
86
92
|
|
|
87
|
-
### <img height=17 src="https://media.js-utils.
|
|
93
|
+
### <img height=17 src="https://media.js-utils.org/images/icons/platforms/tampermonkey/icon28.png?4fd2fa7"><img height=17.5 src="https://media.js-utils.org/images/icons/platforms/violentmonkey/icon25.png?2fe972c"> Greasemonkey
|
|
88
94
|
|
|
89
95
|
```js
|
|
90
96
|
...
|
|
91
|
-
// @require https://cdn.jsdelivr.net/npm/generate-ip@2.4.
|
|
97
|
+
// @require https://cdn.jsdelivr.net/npm/generate-ip@2.4.4/dist/generate-ip.min.js
|
|
92
98
|
// ==/UserScript==
|
|
93
99
|
|
|
94
100
|
// Your code here...
|
|
@@ -96,11 +102,11 @@ const { ipv4, ipv6, mac } = require('generate-ip');
|
|
|
96
102
|
|
|
97
103
|
<br>
|
|
98
104
|
|
|
99
|
-
📝 **Note:** To always import the latest version (not recommended in production!) remove the `@2.4.
|
|
105
|
+
📝 **Note:** To always import the latest version (not recommended in production!) remove the `@2.4.4` version tag from the jsDelivr URL: `https://cdn.jsdelivr.net/npm/generate-ip/dist/generate-ip.min.js`
|
|
100
106
|
|
|
101
107
|
<br>
|
|
102
108
|
|
|
103
|
-
<img height=6px width="100%" src="https://media.js-utils.
|
|
109
|
+
<img height=6px width="100%" src="https://media.js-utils.org/images/separators/gradient-aqua.png?c0192d3">
|
|
104
110
|
|
|
105
111
|
## 📋 API usage
|
|
106
112
|
|
|
@@ -331,7 +337,7 @@ Name | Type | Description | Default Value
|
|
|
331
337
|
|
|
332
338
|
<br>
|
|
333
339
|
|
|
334
|
-
<img height=6px width="100%" src="https://media.js-utils.
|
|
340
|
+
<img height=6px width="100%" src="https://media.js-utils.org/images/separators/gradient-aqua.png?c0192d3">
|
|
335
341
|
|
|
336
342
|
## 💻 Command line usage
|
|
337
343
|
|
|
@@ -367,7 +373,7 @@ Info commands:
|
|
|
367
373
|
|
|
368
374
|
<br>
|
|
369
375
|
|
|
370
|
-
<img height=6px width="100%" src="https://media.js-utils.
|
|
376
|
+
<img height=6px width="100%" src="https://media.js-utils.org/images/separators/gradient-aqua.png?c0192d3">
|
|
371
377
|
|
|
372
378
|
## 🏛️ MIT License
|
|
373
379
|
|
|
@@ -381,32 +387,32 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
|
|
381
387
|
|
|
382
388
|
<br>
|
|
383
389
|
|
|
384
|
-
<img height=6px width="100%" src="https://media.js-utils.
|
|
390
|
+
<img height=6px width="100%" src="https://media.js-utils.org/images/separators/gradient-aqua.png?c0192d3">
|
|
385
391
|
|
|
386
392
|
## 🛠️ Related utilities
|
|
387
393
|
|
|
388
|
-
### [🔒 generate-pw](../generate-pw) <a href="https://github.com/toolleeo/cli-apps#password-managers"><img height=18 src="https://media.js-utils.
|
|
394
|
+
### [🔒 generate-pw](../generate-pw) <a href="https://github.com/toolleeo/cli-apps#password-managers"><img height=18 src="https://media.js-utils.org/images/badges/awesome/badge.svg?7b16322"></a>
|
|
389
395
|
|
|
390
396
|
> Randomly generate, strengthen, and validate cryptographically-secure passwords.
|
|
391
397
|
<br>[Install](https://docs.generatepw.org/#-installation) /
|
|
392
398
|
[Readme](https://docs.generatepw.org/#readme) /
|
|
393
399
|
[API usage](https://docs.generatepw.org/#-api-usage) /
|
|
394
400
|
[CLI usage](https://docs.generatepw.org/#-command-line-usage) /
|
|
395
|
-
[Discuss](https://github.js-utils.
|
|
401
|
+
[Discuss](https://github.js-utils.org/discussions)
|
|
396
402
|
|
|
397
|
-
### <picture><source media="(prefers-color-scheme: dark)" srcset="https://media.geolocatejs.org/images/icons/wire-globe/white/icon32.png?e735b99"><img height=22 src="https://media.geolocatejs.org/images/icons/wire-globe/black/icon32.png?e735b99"></picture> [geolocate](https://js-utils.
|
|
403
|
+
### <picture><source media="(prefers-color-scheme: dark)" srcset="https://media.geolocatejs.org/images/icons/wire-globe/white/icon32.png?e735b99"><img height=22 src="https://media.geolocatejs.org/images/icons/wire-globe/black/icon32.png?e735b99"></picture> [geolocate](https://js-utils.org/geolocate) <a href="https://github.com/toolleeo/cli-apps#networking"><img height=18 src="https://media.js-utils.org/images/badges/awesome/badge.svg?7b16322"></a>
|
|
398
404
|
|
|
399
405
|
> Fetch IP geolocation data from the CLI.
|
|
400
406
|
<br>[Install](https://docs.geolocatejs.org/#-installation) /
|
|
401
407
|
[Readme](https://docs.geolocatejs.org/#readme) /
|
|
402
408
|
[CLI usage](https://docs.geolocatejs.org/#-command-line-usage) /
|
|
403
409
|
[API usage](https://docs.geolocatejs.org/#-api-usage) /
|
|
404
|
-
[Discuss](https://github.js-utils.
|
|
410
|
+
[Discuss](https://github.js-utils.org/discussions)
|
|
405
411
|
|
|
406
412
|
<br>
|
|
407
413
|
|
|
408
|
-
<img height=6px width="100%" src="https://media.js-utils.
|
|
414
|
+
<img height=6px width="100%" src="https://media.js-utils.org/images/separators/gradient-aqua.png?c0192d3">
|
|
409
415
|
|
|
410
|
-
<picture><source media="(prefers-color-scheme: dark)" srcset="https://media.js-utils.
|
|
411
|
-
<a href="https://github.js-utils.
|
|
416
|
+
<picture><source media="(prefers-color-scheme: dark)" srcset="https://media.js-utils.org/images/icons/home/white/icon32x27.png?e735b99"><img height=13 src="https://media.js-utils.org/images/icons/home/dark-gray/icon32x27.png?e735b99"></picture> <a href="https://js-utils.org">**More JavaScript utilities**</a> /
|
|
417
|
+
<a href="https://github.js-utils.org/discussions">Discuss</a> /
|
|
412
418
|
<a href="#-generate-ip">Back to top ↑</a>
|
package/dist/generate-ip.min.js
CHANGED
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
* Source: https://code.generate-ip.org
|
|
4
4
|
* Documentation: https://docs.generate-ip.org
|
|
5
5
|
*/
|
|
6
|
-
const ipv4={generate:function(o={}){var e={verbose:!0,qty:1};if(validateOptions(o,e,"https://docs.generate-ip.org/#ipv4generateoptions","ipv4.generate({ verbose: false, qty: 3 })")){(o={...e,...o}).verbose&&console.info(`ipv4.generate() » Generating IPv4 address${1<o.qty?"es":""}...`);var t=[];if(1<o.qty)for(let e=0;e<o.qty;e++)t.push(this.generate({...o,qty:1,verbose:!1}));else{var r=[];for(let e=0;e<4;e++)r.push(randomInt(0,256));t.push(r.join("."))}e=1<o.qty?t:t[0];return o.verbose&&(console.info(`ipv4.generate() » IPv4 address${1<o.qty?"es":""} generated!`),console.info("ipv4.generate() » "+(1==o.qty?e:e.join(", ")))),e}},validate:function(e,o={}){var t="https://docs.generate-ip.org/#ipv4validateaddress-options",r={verbose:!0};if("string"!=typeof e)console.error("ipv4.validate() » ERROR: 1st arg <address> must be a string."),console.info("ipv4.validate() » For more help, please visit "+t);else if(validateOptions(o,r,t,"ipv4.validate('0.0.255.255', { verbose: false })"))return(o={...r,...o}).verbose&&console.info(`ipv4.validate() » Validating ${e}...`),r=!(4!=(t=e.split(".")).length||t.some(e=>!/^\d+$/.test(e)||parseInt(e,10)<0||255<parseInt(e,10))),o.verbose&&console.info(`ipv4.validate() » IP is ${r?"":"in"}valid IPv4 address!`),r}},ipv6={generate:function(o={}){var e={verbose:!0,qty:1,leadingZeros:!1,doubleColon:!0};if(validateOptions(o,e,"https://docs.generate-ip.org/#ipv6generateoptions","ipv6.generate({ leadingZeros: true, qty: 5 })")){(o={...e,...o}).verbose&&console.info(`ipv6.generate() » Generating IPv6 address${1<o.qty?"es":""}...`);var t=[];if(1<o.qty)for(let e=0;e<o.qty;e++)t.push(this.generate({...o,qty:1,verbose:!1}));else{const i=[],{qty:n,...s}=o;for(let e=0;e<8;e++){var r=randomHex(4);i.push(r)}t.push(this.format(i.join(":"),{...s,verbose:!1}))}e=1<o.qty?t:t[0];return o.verbose&&(console.info(`ipv6.generate() » IPv6 address${1<o.qty?"es":""} generated!`),console.info("ipv6.generate() » "+(1==o.qty?e:e.join(", ")))),e}},format:function(o,t={}){var r,e="https://docs.generate-ip.org/#ipv6formatipv6address-options",i={verbose:!0,leadingZeros:!1,doubleColon:!0};if("string"!=typeof o)console.error("ipv6.format() » ERROR: 1st arg <ipv6address> must be a string."),console.info("ipv6.format() » For more help, please visit "+e);else if(this.validate(o,{verbose:!1})){if(validateOptions(t,i,e,"ipv6.format('0d::ffff:192.1.56.10/96', { leadingZeros: true, doubleColon: false })")){t={...i,...t};let e=o;if(e=t.doubleColon?(t.verbose&&console.info("ipv6.format() » Replacing zero series w/ '::'..."),e.replace(/:(?:0+:)+/,"::")):(t.verbose&&console.info("ipv6.format() » Expanding '::' into zero series..."),i=e.split(":").filter(Boolean).length,r=t.leadingZeros?"0000":"0",i=Array(8-i).fill(r).join(":"),e.replace("::",`:${i}:`)),t.leadingZeros){t.verbose&&console.info("ipv6.format() » Adding leading zeros...");var n=e.split(":");for(let e=0;e<n.length;e++)for(;n[e].length<4;)n[e]="0"+n[e];e=n.join(":")}else t.verbose&&console.info("ipv6.format() » Stripping leading zeros..."),e=o.replace(/(^|(?<=:))0+(?!:)/g,"$1");return t.verbose&&(e!=o?console.info("ipv6.format() » IP formatted successfully!"):console.info("ipv6.format() » IP already formatted to specs."),console.info("ipv6.format() » "+e)),e}}else console.error(`ipv6.format() » ERROR: ${o} is not a valid IPv6 address.`),console.info("ipv6.format() » For more help, please visit "+e)},validate:function(e,o={}){var t="https://docs.generate-ip.org/#ipv6validateaddress-options",r={verbose:!0};if("string"!=typeof e)console.error("ipv6.validate() » ERROR: 1st arg <address> must be a string."),console.info("ipv6.validate() » For more help, please visit "+t);else if(validateOptions(o,r,t,"ipv6.validate('0:0:0:0:0:ffff:192.1.56.10/96', { verbose: false })")){(o={...r,...o}).verbose&&console.info(`ipv6.validate() » Validating ${e}...`);const i=e.split(/::?/),n=i[i.length-1];t=!(e.includes("::")&&2<e.split("::").length||/:{3,}
|
|
6
|
+
const ipv4={generate:function(o={}){var e={verbose:!0,qty:1};if(validateOptions(o,e,"https://docs.generate-ip.org/#ipv4generateoptions","ipv4.generate({ verbose: false, qty: 3 })")){(o={...e,...o}).verbose&&console.info(`ipv4.generate() » Generating IPv4 address${1<o.qty?"es":""}...`);var t=[];if(1<o.qty)for(let e=0;e<o.qty;e++)t.push(this.generate({...o,qty:1,verbose:!1}));else{var r=[];for(let e=0;e<4;e++)r.push(randomInt(0,256));t.push(r.join("."))}e=1<o.qty?t:t[0];return o.verbose&&(console.info(`ipv4.generate() » IPv4 address${1<o.qty?"es":""} generated!`),console.info("ipv4.generate() » "+(1==o.qty?e:e.join(", ")))),e}},validate:function(e,o={}){var t="https://docs.generate-ip.org/#ipv4validateaddress-options",r={verbose:!0};if("string"!=typeof e)console.error("ipv4.validate() » ERROR: 1st arg <address> must be a string."),console.info("ipv4.validate() » For more help, please visit "+t);else if(validateOptions(o,r,t,"ipv4.validate('0.0.255.255', { verbose: false })"))return(o={...r,...o}).verbose&&console.info(`ipv4.validate() » Validating ${e}...`),r=!(4!=(t=e.split(".")).length||t.some(e=>!/^\d+$/.test(e)||parseInt(e,10)<0||255<parseInt(e,10))),o.verbose&&console.info(`ipv4.validate() » IP is ${r?"":"in"}valid IPv4 address!`),r}},ipv6={generate:function(o={}){var e={verbose:!0,qty:1,leadingZeros:!1,doubleColon:!0};if(validateOptions(o,e,"https://docs.generate-ip.org/#ipv6generateoptions","ipv6.generate({ leadingZeros: true, qty: 5 })")){(o={...e,...o}).verbose&&console.info(`ipv6.generate() » Generating IPv6 address${1<o.qty?"es":""}...`);var t=[];if(1<o.qty)for(let e=0;e<o.qty;e++)t.push(this.generate({...o,qty:1,verbose:!1}));else{const i=[],{qty:n,...s}=o;for(let e=0;e<8;e++){var r=randomHex(4);i.push(r)}t.push(this.format(i.join(":"),{...s,verbose:!1}))}e=1<o.qty?t:t[0];return o.verbose&&(console.info(`ipv6.generate() » IPv6 address${1<o.qty?"es":""} generated!`),console.info("ipv6.generate() » "+(1==o.qty?e:e.join(", ")))),e}},format:function(o,t={}){var r,e="https://docs.generate-ip.org/#ipv6formatipv6address-options",i={verbose:!0,leadingZeros:!1,doubleColon:!0};if("string"!=typeof o)console.error("ipv6.format() » ERROR: 1st arg <ipv6address> must be a string."),console.info("ipv6.format() » For more help, please visit "+e);else if(this.validate(o,{verbose:!1})){if(validateOptions(t,i,e,"ipv6.format('0d::ffff:192.1.56.10/96', { leadingZeros: true, doubleColon: false })")){t={...i,...t};let e=o;if(e=t.doubleColon?(t.verbose&&console.info("ipv6.format() » Replacing zero series w/ '::'..."),e.replace(/:(?:0+:)+/,"::")):(t.verbose&&console.info("ipv6.format() » Expanding '::' into zero series..."),i=e.split(":").filter(Boolean).length,r=t.leadingZeros?"0000":"0",i=Array(8-i).fill(r).join(":"),e.replace("::",`:${i}:`)),t.leadingZeros){t.verbose&&console.info("ipv6.format() » Adding leading zeros...");var n=e.split(":");for(let e=0;e<n.length;e++)for(;n[e].length<4;)n[e]="0"+n[e];e=n.join(":")}else t.verbose&&console.info("ipv6.format() » Stripping leading zeros..."),e=o.replace(/(^|(?<=:))0+(?!:)/g,"$1");return t.verbose&&(e!=o?console.info("ipv6.format() » IP formatted successfully!"):console.info("ipv6.format() » IP already formatted to specs."),console.info("ipv6.format() » "+e)),e}}else console.error(`ipv6.format() » ERROR: ${o} is not a valid IPv6 address.`),console.info("ipv6.format() » For more help, please visit "+e)},validate:function(e,o={}){var t="https://docs.generate-ip.org/#ipv6validateaddress-options",r={verbose:!0};if("string"!=typeof e)console.error("ipv6.validate() » ERROR: 1st arg <address> must be a string."),console.info("ipv6.validate() » For more help, please visit "+t);else if(validateOptions(o,r,t,"ipv6.validate('0:0:0:0:0:ffff:192.1.56.10/96', { verbose: false })")){(o={...r,...o}).verbose&&console.info(`ipv6.validate() » Validating ${e}...`);const i=e.split(/::?/),n=i[i.length-1];t=!(e.includes("::")&&2<e.split("::").length||/:{3,}/.test(e)||i.length<2||8<i.length||i.some(e=>!(/^[\da-f]{1,4}$/i.test(e)||e==n&&ipv4.validate(n.replace(/\/(?:12[0-8]|[1-9]?\d)$/,""),{verbose:!1}))));return o.verbose&&console.info(`ipv6.validate() » IP is ${t?"":"in"}valid IPv6 address!`),t}}},mac={generate:function(o={}){var e={verbose:!0,qty:1};if(validateOptions(o,e,"https://docs.generate-ip.org/#macgenerateoptions","mac.generate({ verbose: false, qty: 2 })")){(o={...e,...o}).verbose&&console.info(`mac.generate() » Generating MAC address${1<o.qty?"es":""}...`);var t=[];if(1<o.qty)for(let e=0;e<o.qty;e++)t.push(this.generate({...o,qty:1,verbose:!1}));else{var[e,r]=Array.from({length:2},()=>{var o=[];for(let e=0;e<3;e++)o.push(randomHex(2));return o.join(":")});t.push(e+":"+r)}e=1<o.qty?t:t[0];return o.verbose&&(console.info(`mac.generate() » MAC address${1<o.qty?"es":""} generated!`),console.info("mac.generate() » "+(1==o.qty?e:e.join(", ")))),e}},validate:function(e,o={}){var t="https://docs.generate-ip.org/#macvalidateaddress-options",r={verbose:!0};if("string"!=typeof e)console.error("mac.validate() » ERROR: 1st arg <address> must be a string."),console.info("mac.validate() » For more help, please visit "+t);else if(validateOptions(o,r,t,"mac.validate('00:1A:2B:3C:4D:5E', { verbose: false })"))return(o={...r,...o}).verbose&&console.info(`mac.validate() » Validating ${e}...`),t=/^(?:[\da-f]{2}[:-]){5}[\da-f]{2}$/i.test(e),o.verbose&&console.info(`mac.validate() » Address is ${t?"":"in"}valid MAC address!`),t}};function randomInt(e,o){var t;return"undefined"==typeof require?(t=(window.crypto||window.msCrypto)?.getRandomValues(new Uint32Array(1))[0]/4294967295||Math.random(),Math.floor(t*(o-e))+e):require("crypto").randomInt(e,o)}function randomHex(o){let t="";for(let e=0;e<o;e++)t+=randomInt(0,16).toString(16);return t}function validateOptions(e,o,t,r){const i=JSON.stringify(o,null,2).replace(/"([^"]+)":/g,"$1:").replace(/"/g,"'").replace(/\n\s*/g," "),n=Object.keys(o).join(", "),s=Object.keys(o).filter(e=>"boolean"==typeof o[e]),a=Object.keys(o).filter(e=>Number.isInteger(o[e]));let l="validateOptions() » ";try{l=validateOptions.caller?.name+"() » "}catch(e){}var v=r.split(",").findIndex(e=>e.trim().startsWith("{"))+1,p=(v+=["st","nd","rd"][v-1]||"th",()=>{console.info(`${l}Valid options: [ ${n} ]`),console.info(l+"If omitted, default settings are: "+i)}),d=()=>{console.info(l+"For more help, please visit "+t)};if("object"!=typeof e)return console.error(l+`ERROR: ${"0th"==v?"[O":v+" arg [o"}ptions] can only be an object of key/values.`),console.info(l+"Example valid call: "+r),p(),d(),!1;for(const f in e){if(!Object.prototype.hasOwnProperty.call(o,f))return console.error(`${l}ERROR: \`${f}\` is an invalid option.`),p(),d(),!1;if(s.includes(f)&&"boolean"!=typeof e[f])return console.error(`${l}ERROR: [${f}] option can only be \`true\` or \`false\`.`),d(),!1;if(a.includes(f)&&(e[f]=parseInt(e[f],10),isNaN(e[f])||e[f]<1))return console.error(`${l}ERROR: [${f}] option can only be an integer > 0.`),d(),!1}return!0}const gipAliases={ipv4:["ipV4","IPv4","IPV4","Ipv4","IpV4","ip","IP","Ip"],ipv6:["ipV6","IPv6","IPV6","Ipv6","IpV6"],mac:["MAC","Mac","ethernet","Ethernet"]};try{module.exports={ipv4:ipv4,ipv6:ipv6,mac:mac}}catch(e){}try{window.ipv4=ipv4,window.ipv6=ipv6,window.mac=mac}catch(e){}for(const Ma in gipAliases)gipAliases[Ma].forEach(e=>{try{module.exports[e]=module.exports[Ma]}catch(e){}try{window[e]=window[Ma]}catch(e){}});
|
package/docs/README.md
CHANGED
|
@@ -1,18 +1,22 @@
|
|
|
1
|
-
|
|
1
|
+
<div align="center">
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
<picture><source media="(prefers-color-scheme: dark)" srcset="https://media.generate-ip.org/images/logos/generate-ip/white-logo.png?7768152"><img width=700 src="https://media.generate-ip.org/images/logos/generate-ip/black-logo.png?7768152"></picture>
|
|
4
|
+
|
|
5
|
+
### <picture><source media="(prefers-color-scheme: dark)" srcset="https://media.generate-ip.org/images/icons/node-graph/white/icon55x49.png?b4eb06e"><img width=23 src="https://media.generate-ip.org/images/icons/node-graph/black/icon55x49.png?b4eb06e"></picture> Randomly generate, format, and validate IPv4 + IPv6 + MAC addresses.
|
|
6
|
+
|
|
7
|
+
<br>
|
|
4
8
|
|
|
5
9
|
<a href="#%EF%B8%8F-mit-license"><img height=31 src="https://img.shields.io/badge/License-MIT-orange.svg?logo=internetarchive&logoColor=white&labelColor=464646&style=for-the-badge"></a>
|
|
6
|
-
<a href="https://github.com/adamlui/js-utils/releases/tag/generate-ip-2.4.
|
|
10
|
+
<a href="https://github.com/adamlui/js-utils/releases/tag/generate-ip-2.4.4"><img height=31 src="https://img.shields.io/badge/Latest_Build-2.4.4-44cc11.svg?logo=icinga&logoColor=white&labelColor=464646&style=for-the-badge"></a>
|
|
7
11
|
<a href="https://www.npmjs.com/package/generate-ip?activeTab=code"><img height=31 src="https://img.shields.io/npm/unpacked-size/generate-ip?style=for-the-badge&logo=ebox&logoColor=white&labelColor=464646&color=blue"></a>
|
|
8
|
-
<a href="https://github.com/adamlui/js-utils/blob/generate-ip-2.4.
|
|
12
|
+
<a href="https://github.com/adamlui/js-utils/blob/generate-ip-2.4.4/generate-ip/dist/generate-ip.min.js"><img height=31 src="https://img.shields.io/github/size/adamlui/js-utils/generate-ip/dist/generate-ip.min.js?branch=generate-ip-2.4.4&label=Minified%20Size&logo=databricks&logoColor=white&labelColor=464646&color=ff69b4&style=for-the-badge"></a>
|
|
9
13
|
<a href="https://sonarcloud.io/component_measures?metric=new_vulnerabilities&id=adamlui_js-utils:generate-ip/src/generate-ip.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%3Agenerate-ip%2Fsrc%2Fgenerate-ip.js%26metricKeys%3Dvulnerabilities&query=%24.component.measures.0.value&style=for-the-badge&logo=sonarcloud&logoColor=white&labelColor=464646&label=Vulnerabilities&color=gold"></a>
|
|
10
14
|
<a href="https://github.com/toolleeo/cli-apps#networking"><img height=31 src="https://img.shields.io/badge/Mentioned_in-Awesome-c4a2bd?logo=awesomelists&logoColor=white&labelColor=464646&style=for-the-badge"></a>
|
|
11
15
|
<a href="https://www.jsdelivr.com/package/npm/generate-ip?tab=stats"><img height=31 src="https://img.shields.io/jsdelivr/npm/hm/generate-ip?style=for-the-badge&logo=jsdelivr&logoColor=white&label=jsDelivr%20Hits&labelColor=464646&color=49c5d8"></a>
|
|
12
16
|
|
|
13
|
-
|
|
17
|
+
</div>
|
|
14
18
|
|
|
15
|
-
<img height=6px width="100%" src="https://media.js-utils.
|
|
19
|
+
<img height=6px width="100%" src="https://media.js-utils.org/images/separators/gradient-aqua.png?c0192d3">
|
|
16
20
|
|
|
17
21
|
## 💡 About
|
|
18
22
|
|
|
@@ -23,7 +27,7 @@
|
|
|
23
27
|
- **Multi-environment support —** Use in Node.js or the web browser
|
|
24
28
|
- **Command line usable —** Just type `generate-ip`, that's it
|
|
25
29
|
|
|
26
|
-
<img height=6px width="100%" src="https://media.js-utils.
|
|
30
|
+
<img height=6px width="100%" src="https://media.js-utils.org/images/separators/gradient-aqua.png?c0192d3">
|
|
27
31
|
|
|
28
32
|
## ⚡ Installation
|
|
29
33
|
|
|
@@ -47,11 +51,13 @@ $ npm install generate-ip
|
|
|
47
51
|
|
|
48
52
|
<br>
|
|
49
53
|
|
|
50
|
-
<
|
|
54
|
+
<a href="https://github.com/sponsors/adamlui"><img src="https://media.js-utils.org/images/banners/sponsor/$10/banner1660x260.png?09f5d64"></a>
|
|
55
|
+
|
|
56
|
+
<img height=6px width="100%" src="https://media.js-utils.org/images/separators/gradient-aqua.png?c0192d3">
|
|
51
57
|
|
|
52
58
|
## 🔌 Importing the APIs
|
|
53
59
|
|
|
54
|
-
### <img height=18 src="https://media.js-utils.
|
|
60
|
+
### <img height=18 src="https://media.js-utils.org/images/icons/platforms/node.js/icon25x28.png?3e22bae"> Node.js
|
|
55
61
|
|
|
56
62
|
#### ECMAScript*:
|
|
57
63
|
|
|
@@ -67,28 +73,28 @@ const { ipv4, ipv6, mac } = require('generate-ip');
|
|
|
67
73
|
|
|
68
74
|
###### _*Node.js version 14 or higher required_
|
|
69
75
|
|
|
70
|
-
### <picture><source media="(prefers-color-scheme: dark)" srcset="https://media.js-utils.
|
|
76
|
+
### <picture><source media="(prefers-color-scheme: dark)" srcset="https://media.js-utils.org/images/icons/platforms/web/light/icon25.png?3e22bae"><img width=16 src="https://media.js-utils.org/images/icons/platforms/web/dark/icon25.png?3e22bae"></picture> Web
|
|
71
77
|
|
|
72
78
|
#### <> HTML script tag:
|
|
73
79
|
|
|
74
80
|
```html
|
|
75
|
-
<script src="https://cdn.jsdelivr.net/npm/generate-ip@2.4.
|
|
81
|
+
<script src="https://cdn.jsdelivr.net/npm/generate-ip@2.4.4/dist/generate-ip.min.js"></script>
|
|
76
82
|
```
|
|
77
83
|
|
|
78
84
|
#### ES6:
|
|
79
85
|
|
|
80
86
|
```js
|
|
81
87
|
(async () => {
|
|
82
|
-
await import('https://cdn.jsdelivr.net/npm/generate-ip@2.4.
|
|
88
|
+
await import('https://cdn.jsdelivr.net/npm/generate-ip@2.4.4/dist/generate-ip.min.js');
|
|
83
89
|
// Your code here...
|
|
84
90
|
})();
|
|
85
91
|
```
|
|
86
92
|
|
|
87
|
-
### <img height=17 src="https://media.js-utils.
|
|
93
|
+
### <img height=17 src="https://media.js-utils.org/images/icons/platforms/tampermonkey/icon28.png?4fd2fa7"><img height=17.5 src="https://media.js-utils.org/images/icons/platforms/violentmonkey/icon25.png?2fe972c"> Greasemonkey
|
|
88
94
|
|
|
89
95
|
```js
|
|
90
96
|
...
|
|
91
|
-
// @require https://cdn.jsdelivr.net/npm/generate-ip@2.4.
|
|
97
|
+
// @require https://cdn.jsdelivr.net/npm/generate-ip@2.4.4/dist/generate-ip.min.js
|
|
92
98
|
// ==/UserScript==
|
|
93
99
|
|
|
94
100
|
// Your code here...
|
|
@@ -96,11 +102,11 @@ const { ipv4, ipv6, mac } = require('generate-ip');
|
|
|
96
102
|
|
|
97
103
|
<br>
|
|
98
104
|
|
|
99
|
-
📝 **Note:** To always import the latest version (not recommended in production!) remove the `@2.4.
|
|
105
|
+
📝 **Note:** To always import the latest version (not recommended in production!) remove the `@2.4.4` version tag from the jsDelivr URL: `https://cdn.jsdelivr.net/npm/generate-ip/dist/generate-ip.min.js`
|
|
100
106
|
|
|
101
107
|
<br>
|
|
102
108
|
|
|
103
|
-
<img height=6px width="100%" src="https://media.js-utils.
|
|
109
|
+
<img height=6px width="100%" src="https://media.js-utils.org/images/separators/gradient-aqua.png?c0192d3">
|
|
104
110
|
|
|
105
111
|
## 📋 API usage
|
|
106
112
|
|
|
@@ -331,7 +337,7 @@ Name | Type | Description | Default Value
|
|
|
331
337
|
|
|
332
338
|
<br>
|
|
333
339
|
|
|
334
|
-
<img height=6px width="100%" src="https://media.js-utils.
|
|
340
|
+
<img height=6px width="100%" src="https://media.js-utils.org/images/separators/gradient-aqua.png?c0192d3">
|
|
335
341
|
|
|
336
342
|
## 💻 Command line usage
|
|
337
343
|
|
|
@@ -367,7 +373,7 @@ Info commands:
|
|
|
367
373
|
|
|
368
374
|
<br>
|
|
369
375
|
|
|
370
|
-
<img height=6px width="100%" src="https://media.js-utils.
|
|
376
|
+
<img height=6px width="100%" src="https://media.js-utils.org/images/separators/gradient-aqua.png?c0192d3">
|
|
371
377
|
|
|
372
378
|
## 🏛️ MIT License
|
|
373
379
|
|
|
@@ -381,32 +387,32 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
|
|
381
387
|
|
|
382
388
|
<br>
|
|
383
389
|
|
|
384
|
-
<img height=6px width="100%" src="https://media.js-utils.
|
|
390
|
+
<img height=6px width="100%" src="https://media.js-utils.org/images/separators/gradient-aqua.png?c0192d3">
|
|
385
391
|
|
|
386
392
|
## 🛠️ Related utilities
|
|
387
393
|
|
|
388
|
-
### [🔒 generate-pw](../generate-pw) <a href="https://github.com/toolleeo/cli-apps#password-managers"><img height=18 src="https://media.js-utils.
|
|
394
|
+
### [🔒 generate-pw](../generate-pw) <a href="https://github.com/toolleeo/cli-apps#password-managers"><img height=18 src="https://media.js-utils.org/images/badges/awesome/badge.svg?7b16322"></a>
|
|
389
395
|
|
|
390
396
|
> Randomly generate, strengthen, and validate cryptographically-secure passwords.
|
|
391
397
|
<br>[Install](https://docs.generatepw.org/#-installation) /
|
|
392
398
|
[Readme](https://docs.generatepw.org/#readme) /
|
|
393
399
|
[API usage](https://docs.generatepw.org/#-api-usage) /
|
|
394
400
|
[CLI usage](https://docs.generatepw.org/#-command-line-usage) /
|
|
395
|
-
[Discuss](https://github.js-utils.
|
|
401
|
+
[Discuss](https://github.js-utils.org/discussions)
|
|
396
402
|
|
|
397
|
-
### <picture><source media="(prefers-color-scheme: dark)" srcset="https://media.geolocatejs.org/images/icons/wire-globe/white/icon32.png?e735b99"><img height=22 src="https://media.geolocatejs.org/images/icons/wire-globe/black/icon32.png?e735b99"></picture> [geolocate](https://js-utils.
|
|
403
|
+
### <picture><source media="(prefers-color-scheme: dark)" srcset="https://media.geolocatejs.org/images/icons/wire-globe/white/icon32.png?e735b99"><img height=22 src="https://media.geolocatejs.org/images/icons/wire-globe/black/icon32.png?e735b99"></picture> [geolocate](https://js-utils.org/geolocate) <a href="https://github.com/toolleeo/cli-apps#networking"><img height=18 src="https://media.js-utils.org/images/badges/awesome/badge.svg?7b16322"></a>
|
|
398
404
|
|
|
399
405
|
> Fetch IP geolocation data from the CLI.
|
|
400
406
|
<br>[Install](https://docs.geolocatejs.org/#-installation) /
|
|
401
407
|
[Readme](https://docs.geolocatejs.org/#readme) /
|
|
402
408
|
[CLI usage](https://docs.geolocatejs.org/#-command-line-usage) /
|
|
403
409
|
[API usage](https://docs.geolocatejs.org/#-api-usage) /
|
|
404
|
-
[Discuss](https://github.js-utils.
|
|
410
|
+
[Discuss](https://github.js-utils.org/discussions)
|
|
405
411
|
|
|
406
412
|
<br>
|
|
407
413
|
|
|
408
|
-
<img height=6px width="100%" src="https://media.js-utils.
|
|
414
|
+
<img height=6px width="100%" src="https://media.js-utils.org/images/separators/gradient-aqua.png?c0192d3">
|
|
409
415
|
|
|
410
|
-
<picture><source media="(prefers-color-scheme: dark)" srcset="https://media.js-utils.
|
|
411
|
-
<a href="https://github.js-utils.
|
|
416
|
+
<picture><source media="(prefers-color-scheme: dark)" srcset="https://media.js-utils.org/images/icons/home/white/icon32x27.png?e735b99"><img height=13 src="https://media.js-utils.org/images/icons/home/dark-gray/icon32x27.png?e735b99"></picture> <a href="https://js-utils.org">**More JavaScript utilities**</a> /
|
|
417
|
+
<a href="https://github.js-utils.org/discussions">Discuss</a> /
|
|
412
418
|
<a href="#-generate-ip">Back to top ↑</a>
|
package/docs/SECURITY.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# 🛡️ Security Policy
|
|
2
2
|
|
|
3
|
-
If you find a vulnerability, please open a [draft security advisory](https://github.js-utils.
|
|
3
|
+
If you find a vulnerability, please open a [draft security advisory](https://github.js-utils.org/security/advisories/new).
|
|
4
4
|
|
|
5
5
|
Pull requests are also welcome, but for safety reasons, send an email to <adam@kudoai.com> and wait for a response before making it public.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "generate-ip",
|
|
3
|
-
"version": "2.4.
|
|
3
|
+
"version": "2.4.4",
|
|
4
4
|
"description": "Randomly generate, format, and validate IPv4 + IPv6 + MAC addresses.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Adam Lui",
|
|
@@ -9,6 +9,16 @@
|
|
|
9
9
|
},
|
|
10
10
|
"homepage": "https://generate-ip.org",
|
|
11
11
|
"license": "MIT",
|
|
12
|
+
"funding": [
|
|
13
|
+
{
|
|
14
|
+
"type": "github",
|
|
15
|
+
"url": "http://github.com/sponsors/adamlui"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"type": "ko-fi",
|
|
19
|
+
"url": "https://ko-fi.com/adamlui"
|
|
20
|
+
}
|
|
21
|
+
],
|
|
12
22
|
"main": "dist/generate-ip.min.js",
|
|
13
23
|
"files": [
|
|
14
24
|
"docs"
|
|
@@ -45,13 +55,9 @@
|
|
|
45
55
|
"mac"
|
|
46
56
|
],
|
|
47
57
|
"bugs": {
|
|
48
|
-
"url": "https://
|
|
49
|
-
},
|
|
50
|
-
"funding": {
|
|
51
|
-
"type": "github",
|
|
52
|
-
"url": "https://github.com/sponsors/adamlui"
|
|
58
|
+
"url": "https://support.generate-ip.org"
|
|
53
59
|
},
|
|
54
60
|
"devDependencies": {
|
|
55
|
-
"@adamlui/minify.js": "^1.
|
|
61
|
+
"@adamlui/minify.js": "^1.8.5"
|
|
56
62
|
}
|
|
57
63
|
}
|