generate-ip 2.4.3 → 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 +31 -27
- package/dist/generate-ip.min.js +1 -1
- package/docs/README.md +31 -27
- 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,13 +51,13 @@ $ npm install generate-ip
|
|
|
47
51
|
|
|
48
52
|
<br>
|
|
49
53
|
|
|
50
|
-
<a href="https://github.com/sponsors/adamlui"><img src="https://media.js-utils.
|
|
54
|
+
<a href="https://github.com/sponsors/adamlui"><img src="https://media.js-utils.org/images/banners/sponsor/$10/banner1660x260.png?09f5d64"></a>
|
|
51
55
|
|
|
52
|
-
<img height=6px width="100%" src="https://media.js-utils.
|
|
56
|
+
<img height=6px width="100%" src="https://media.js-utils.org/images/separators/gradient-aqua.png?c0192d3">
|
|
53
57
|
|
|
54
58
|
## 🔌 Importing the APIs
|
|
55
59
|
|
|
56
|
-
### <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
|
|
57
61
|
|
|
58
62
|
#### ECMAScript*:
|
|
59
63
|
|
|
@@ -69,28 +73,28 @@ const { ipv4, ipv6, mac } = require('generate-ip');
|
|
|
69
73
|
|
|
70
74
|
###### _*Node.js version 14 or higher required_
|
|
71
75
|
|
|
72
|
-
### <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
|
|
73
77
|
|
|
74
78
|
#### <> HTML script tag:
|
|
75
79
|
|
|
76
80
|
```html
|
|
77
|
-
<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>
|
|
78
82
|
```
|
|
79
83
|
|
|
80
84
|
#### ES6:
|
|
81
85
|
|
|
82
86
|
```js
|
|
83
87
|
(async () => {
|
|
84
|
-
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');
|
|
85
89
|
// Your code here...
|
|
86
90
|
})();
|
|
87
91
|
```
|
|
88
92
|
|
|
89
|
-
### <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
|
|
90
94
|
|
|
91
95
|
```js
|
|
92
96
|
...
|
|
93
|
-
// @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
|
|
94
98
|
// ==/UserScript==
|
|
95
99
|
|
|
96
100
|
// Your code here...
|
|
@@ -98,11 +102,11 @@ const { ipv4, ipv6, mac } = require('generate-ip');
|
|
|
98
102
|
|
|
99
103
|
<br>
|
|
100
104
|
|
|
101
|
-
📝 **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`
|
|
102
106
|
|
|
103
107
|
<br>
|
|
104
108
|
|
|
105
|
-
<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">
|
|
106
110
|
|
|
107
111
|
## 📋 API usage
|
|
108
112
|
|
|
@@ -333,7 +337,7 @@ Name | Type | Description | Default Value
|
|
|
333
337
|
|
|
334
338
|
<br>
|
|
335
339
|
|
|
336
|
-
<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">
|
|
337
341
|
|
|
338
342
|
## 💻 Command line usage
|
|
339
343
|
|
|
@@ -369,7 +373,7 @@ Info commands:
|
|
|
369
373
|
|
|
370
374
|
<br>
|
|
371
375
|
|
|
372
|
-
<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">
|
|
373
377
|
|
|
374
378
|
## 🏛️ MIT License
|
|
375
379
|
|
|
@@ -383,32 +387,32 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
|
|
383
387
|
|
|
384
388
|
<br>
|
|
385
389
|
|
|
386
|
-
<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">
|
|
387
391
|
|
|
388
392
|
## 🛠️ Related utilities
|
|
389
393
|
|
|
390
|
-
### [🔒 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>
|
|
391
395
|
|
|
392
396
|
> Randomly generate, strengthen, and validate cryptographically-secure passwords.
|
|
393
397
|
<br>[Install](https://docs.generatepw.org/#-installation) /
|
|
394
398
|
[Readme](https://docs.generatepw.org/#readme) /
|
|
395
399
|
[API usage](https://docs.generatepw.org/#-api-usage) /
|
|
396
400
|
[CLI usage](https://docs.generatepw.org/#-command-line-usage) /
|
|
397
|
-
[Discuss](https://github.js-utils.
|
|
401
|
+
[Discuss](https://github.js-utils.org/discussions)
|
|
398
402
|
|
|
399
|
-
### <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>
|
|
400
404
|
|
|
401
405
|
> Fetch IP geolocation data from the CLI.
|
|
402
406
|
<br>[Install](https://docs.geolocatejs.org/#-installation) /
|
|
403
407
|
[Readme](https://docs.geolocatejs.org/#readme) /
|
|
404
408
|
[CLI usage](https://docs.geolocatejs.org/#-command-line-usage) /
|
|
405
409
|
[API usage](https://docs.geolocatejs.org/#-api-usage) /
|
|
406
|
-
[Discuss](https://github.js-utils.
|
|
410
|
+
[Discuss](https://github.js-utils.org/discussions)
|
|
407
411
|
|
|
408
412
|
<br>
|
|
409
413
|
|
|
410
|
-
<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">
|
|
411
415
|
|
|
412
|
-
<picture><source media="(prefers-color-scheme: dark)" srcset="https://media.js-utils.
|
|
413
|
-
<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> /
|
|
414
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,13 +51,13 @@ $ npm install generate-ip
|
|
|
47
51
|
|
|
48
52
|
<br>
|
|
49
53
|
|
|
50
|
-
<a href="https://github.com/sponsors/adamlui"><img src="https://media.js-utils.
|
|
54
|
+
<a href="https://github.com/sponsors/adamlui"><img src="https://media.js-utils.org/images/banners/sponsor/$10/banner1660x260.png?09f5d64"></a>
|
|
51
55
|
|
|
52
|
-
<img height=6px width="100%" src="https://media.js-utils.
|
|
56
|
+
<img height=6px width="100%" src="https://media.js-utils.org/images/separators/gradient-aqua.png?c0192d3">
|
|
53
57
|
|
|
54
58
|
## 🔌 Importing the APIs
|
|
55
59
|
|
|
56
|
-
### <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
|
|
57
61
|
|
|
58
62
|
#### ECMAScript*:
|
|
59
63
|
|
|
@@ -69,28 +73,28 @@ const { ipv4, ipv6, mac } = require('generate-ip');
|
|
|
69
73
|
|
|
70
74
|
###### _*Node.js version 14 or higher required_
|
|
71
75
|
|
|
72
|
-
### <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
|
|
73
77
|
|
|
74
78
|
#### <> HTML script tag:
|
|
75
79
|
|
|
76
80
|
```html
|
|
77
|
-
<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>
|
|
78
82
|
```
|
|
79
83
|
|
|
80
84
|
#### ES6:
|
|
81
85
|
|
|
82
86
|
```js
|
|
83
87
|
(async () => {
|
|
84
|
-
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');
|
|
85
89
|
// Your code here...
|
|
86
90
|
})();
|
|
87
91
|
```
|
|
88
92
|
|
|
89
|
-
### <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
|
|
90
94
|
|
|
91
95
|
```js
|
|
92
96
|
...
|
|
93
|
-
// @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
|
|
94
98
|
// ==/UserScript==
|
|
95
99
|
|
|
96
100
|
// Your code here...
|
|
@@ -98,11 +102,11 @@ const { ipv4, ipv6, mac } = require('generate-ip');
|
|
|
98
102
|
|
|
99
103
|
<br>
|
|
100
104
|
|
|
101
|
-
📝 **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`
|
|
102
106
|
|
|
103
107
|
<br>
|
|
104
108
|
|
|
105
|
-
<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">
|
|
106
110
|
|
|
107
111
|
## 📋 API usage
|
|
108
112
|
|
|
@@ -333,7 +337,7 @@ Name | Type | Description | Default Value
|
|
|
333
337
|
|
|
334
338
|
<br>
|
|
335
339
|
|
|
336
|
-
<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">
|
|
337
341
|
|
|
338
342
|
## 💻 Command line usage
|
|
339
343
|
|
|
@@ -369,7 +373,7 @@ Info commands:
|
|
|
369
373
|
|
|
370
374
|
<br>
|
|
371
375
|
|
|
372
|
-
<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">
|
|
373
377
|
|
|
374
378
|
## 🏛️ MIT License
|
|
375
379
|
|
|
@@ -383,32 +387,32 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
|
|
383
387
|
|
|
384
388
|
<br>
|
|
385
389
|
|
|
386
|
-
<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">
|
|
387
391
|
|
|
388
392
|
## 🛠️ Related utilities
|
|
389
393
|
|
|
390
|
-
### [🔒 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>
|
|
391
395
|
|
|
392
396
|
> Randomly generate, strengthen, and validate cryptographically-secure passwords.
|
|
393
397
|
<br>[Install](https://docs.generatepw.org/#-installation) /
|
|
394
398
|
[Readme](https://docs.generatepw.org/#readme) /
|
|
395
399
|
[API usage](https://docs.generatepw.org/#-api-usage) /
|
|
396
400
|
[CLI usage](https://docs.generatepw.org/#-command-line-usage) /
|
|
397
|
-
[Discuss](https://github.js-utils.
|
|
401
|
+
[Discuss](https://github.js-utils.org/discussions)
|
|
398
402
|
|
|
399
|
-
### <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>
|
|
400
404
|
|
|
401
405
|
> Fetch IP geolocation data from the CLI.
|
|
402
406
|
<br>[Install](https://docs.geolocatejs.org/#-installation) /
|
|
403
407
|
[Readme](https://docs.geolocatejs.org/#readme) /
|
|
404
408
|
[CLI usage](https://docs.geolocatejs.org/#-command-line-usage) /
|
|
405
409
|
[API usage](https://docs.geolocatejs.org/#-api-usage) /
|
|
406
|
-
[Discuss](https://github.js-utils.
|
|
410
|
+
[Discuss](https://github.js-utils.org/discussions)
|
|
407
411
|
|
|
408
412
|
<br>
|
|
409
413
|
|
|
410
|
-
<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">
|
|
411
415
|
|
|
412
|
-
<picture><source media="(prefers-color-scheme: dark)" srcset="https://media.js-utils.
|
|
413
|
-
<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> /
|
|
414
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.8.
|
|
61
|
+
"@adamlui/minify.js": "^1.8.5"
|
|
56
62
|
}
|
|
57
63
|
}
|