generate-ip 2.0.1 → 2.0.3
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 +42 -25
- package/dist/generate-ip.min.js +8 -8
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
### Randomly generate IPv4 and IPv6 addresses.
|
|
4
4
|
|
|
5
5
|
<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.0.
|
|
6
|
+
<a href="https://github.com/adamlui/js-utils/releases/tag/generate-ip-2.0.3"><img height=31 src="https://img.shields.io/badge/Latest_Build-2.0.3-44cc11.svg?logo=icinga&logoColor=white&labelColor=464646&style=for-the-badge"></a>
|
|
7
7
|
<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
8
|
<a href="https://sonarcloud.io/component_measures?metric=new_vulnerabilities&id=adamlui_js-utils:generate-ip/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%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>
|
|
9
9
|
|
|
@@ -65,14 +65,22 @@ Generates **one** IPv4 address:
|
|
|
65
65
|
|
|
66
66
|
```js
|
|
67
67
|
const ip = ipv4.generate();
|
|
68
|
-
console.log(ip);
|
|
68
|
+
console.log(ip);
|
|
69
|
+
|
|
70
|
+
/* sample output:
|
|
71
|
+
|
|
72
|
+
ipv4.generate() » Generating IPv4 address...
|
|
73
|
+
ipv4.generate() » IPv4 address generated!
|
|
74
|
+
ipv4.generate() » Check returned string.
|
|
75
|
+
36.42.224.208
|
|
76
|
+
*/
|
|
69
77
|
```
|
|
70
78
|
|
|
71
79
|
Available options (passed as object properties):
|
|
72
80
|
|
|
73
|
-
Name | Type | Description
|
|
74
|
-
|
|
75
|
-
`verbose` | Boolean | Show logging in console/terminal.
|
|
81
|
+
Name | Type | Description | Default Value
|
|
82
|
+
------------|---------|-----------------------------------|---------------
|
|
83
|
+
`verbose` | Boolean | Show logging in console/terminal. | `true`
|
|
76
84
|
|
|
77
85
|
#
|
|
78
86
|
|
|
@@ -94,9 +102,9 @@ true
|
|
|
94
102
|
|
|
95
103
|
Available options (passed as object properties):
|
|
96
104
|
|
|
97
|
-
Name | Type | Description
|
|
98
|
-
|
|
99
|
-
`verbose` | Boolean | Show logging in console/terminal.
|
|
105
|
+
Name | Type | Description | Default Value
|
|
106
|
+
------------|---------|-----------------------------------|---------------
|
|
107
|
+
`verbose` | Boolean | Show logging in console/terminal. | `true`
|
|
100
108
|
|
|
101
109
|
#
|
|
102
110
|
|
|
@@ -112,16 +120,24 @@ Generates **one** IPv6 address, returned as a string:
|
|
|
112
120
|
|
|
113
121
|
```js
|
|
114
122
|
const ip = ipv6.generate();
|
|
115
|
-
console.log(ip);
|
|
123
|
+
console.log(ip);
|
|
124
|
+
|
|
125
|
+
/* sample output:
|
|
126
|
+
|
|
127
|
+
ipv6.generate() » Generating IPv6 address...
|
|
128
|
+
ipv6.generate() » IPv6 address generated!
|
|
129
|
+
ipv6.generate() » Check returned string.
|
|
130
|
+
1379:6748:810c:5e16:b6c9:ae2:939f:8f2a
|
|
131
|
+
*/
|
|
116
132
|
```
|
|
117
133
|
|
|
118
134
|
Available options (passed as object properties):
|
|
119
135
|
|
|
120
|
-
Name | Type | Description
|
|
121
|
-
|
|
122
|
-
`verbose` | Boolean | Show logging in console/terminal.
|
|
123
|
-
`leadingZeros` | Boolean | Include leading zeros in hex pieces.
|
|
124
|
-
`doubleColon` | Boolean | Replace series of zeros w/ `::`
|
|
136
|
+
Name | Type | Description | Default Value
|
|
137
|
+
---------------|---------|--------------------------------------|---------------
|
|
138
|
+
`verbose` | Boolean | Show logging in console/terminal. | `true`
|
|
139
|
+
`leadingZeros` | Boolean | Include leading zeros in hex pieces. | `false`
|
|
140
|
+
`doubleColon` | Boolean | Replace series of zeros w/ `::` | `true`
|
|
125
141
|
|
|
126
142
|
#
|
|
127
143
|
|
|
@@ -131,26 +147,27 @@ Name | Type | Description
|
|
|
131
147
|
Formats an IPv6 address according to `options` passed, returning a string:
|
|
132
148
|
|
|
133
149
|
```js
|
|
134
|
-
const address = '0d::ffff:192.1.56.10/96'
|
|
150
|
+
const address = '0d::ffff:192.1.56.10/96',
|
|
135
151
|
formattedAddress = ipv6.format(address, { leadingZeros: true, doubleColon: false });
|
|
136
152
|
|
|
153
|
+
console.log(formattedAddress);
|
|
154
|
+
|
|
137
155
|
/* outputs:
|
|
138
156
|
|
|
139
|
-
ipv6.format() » Formatting 0d::ffff:192.1.56.10/96...
|
|
140
157
|
ipv6.format() » Expanding '::' into zero series...
|
|
141
158
|
ipv6.format() » Adding leading zeros...
|
|
142
|
-
|
|
159
|
+
ipv6.format() » IP formatted successfully!
|
|
143
160
|
000d:0000:0000:0000:0000:0000:ffff:192.1.56.10/96
|
|
144
161
|
*/
|
|
145
162
|
```
|
|
146
163
|
|
|
147
164
|
Available options:
|
|
148
165
|
|
|
149
|
-
Name | Type | Description
|
|
150
|
-
|
|
151
|
-
`verbose` | Boolean | Show logging in console/terminal.
|
|
152
|
-
`leadingZeros` | Boolean | Include leading zeros in hex pieces.
|
|
153
|
-
`doubleColon` | Boolean | Replace series of zeros w/ `::`
|
|
166
|
+
Name | Type | Description | Default Value
|
|
167
|
+
---------------|---------|--------------------------------------|---------------
|
|
168
|
+
`verbose` | Boolean | Show logging in console/terminal. | `true`
|
|
169
|
+
`leadingZeros` | Boolean | Include leading zeros in hex pieces. | `false`
|
|
170
|
+
`doubleColon` | Boolean | Replace series of zeros w/ `::` | `true`
|
|
154
171
|
|
|
155
172
|
#
|
|
156
173
|
|
|
@@ -172,9 +189,9 @@ true
|
|
|
172
189
|
|
|
173
190
|
Available options (passed as object properties):
|
|
174
191
|
|
|
175
|
-
Name | Type | Description
|
|
176
|
-
|
|
177
|
-
`verbose` | Boolean | Show logging in console/terminal.
|
|
192
|
+
Name | Type | Description | Default Value
|
|
193
|
+
------------|---------|-----------------------------------|---------------
|
|
194
|
+
`verbose` | Boolean | Show logging in console/terminal. | `true`
|
|
178
195
|
|
|
179
196
|
<br>
|
|
180
197
|
|
package/dist/generate-ip.min.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const
|
|
3
|
-
ipv4.generate() » Valid options: [ ${Object.keys(o).join(", ")} ]`);if("boolean"!=typeof e
|
|
4
|
-
ipv4.validate() » Valid options: [ ${Object.keys(r).join(", ")} ]`);if("boolean"!=typeof o
|
|
5
|
-
ipv6.generate() » Valid options: [ ${Object.keys(o).join(", ")} ]`);if("boolean"!=typeof e[t])return console.error(`ipv6.generate() » ERROR: [${t}] option can only be \`true\` or \`false\`.`)}e.verbose&&console.info("ipv6.generate() » Generating IPv6 address...");var r=[];for(let e=0;e<8;e++){let o="";for(let e=0;e<4;e++)o+=
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
ipv6.validate() » Valid options: [ ${Object.keys(r).join(", ")} ]`);if("boolean"!=typeof o
|
|
2
|
+
const i=require("crypto")["randomInt"],n=require("child_process")["execSync"],s={generate:function(e={}){var o={verbose:!0};e={...o,...e};for(const t of Object.keys(e)){if(!Object.prototype.hasOwnProperty.call(o,t))return console.error(`ipv4.generate() » ERROR: \`${t}\` is an invalid option.
|
|
3
|
+
`+`ipv4.generate() » Valid options: [ ${Object.keys(o).join(", ")} ]`);if("boolean"!=typeof e[t])return console.error(`ipv4.generate() » ERROR: [${t}] option can only be set to \`true\` or \`false\`.`)}e.verbose&&console.info("ipv4.generate() » Generating IPv4 address...");var r=[];for(let e=0;e<4;e++)r.push(i(0,256));var n=r.join(".");return e.verbose&&console.info("ipv4.generate() » IPv4 address generated!"+(require.main!==module?"\nipv4.generate() » Check returned string.":"")),n},validate:function(e,o={}){var r={verbose:!0};if(o={...r,...o},"string"!=typeof e)return console.error("ipv4.validate() » ERROR: 1st arg <address> must be a string.");for(const n of Object.keys(o)){if(!Object.prototype.hasOwnProperty.call(r,n))return console.error(`ipv4.validate() » ERROR: \`${n}\` is an invalid option.
|
|
4
|
+
`+`ipv4.validate() » Valid options: [ ${Object.keys(r).join(", ")} ]`);if("boolean"!=typeof o[n])return console.error(`ipv4.validate() » ERROR: [${n}] option can only be set to \`true\` or \`false\`.`)}o.verbose&&console.info("ipv4.validate() » Validating IPv4 address...");e=e.split("."),e=!(4!==e.length||e.some(e=>!/^\d+$/.test(e)||parseInt(e,10)<0||255<parseInt(e,10)));return o.verbose&&console.info(`ipv4.validate() » IP is ${e?"":"in"}valid IPv4 address!`),e}},e={generate:function(e={}){var o={verbose:!0,leadingZeros:!1,doubleColon:!0};for(const t in e={...o,...e}){if(!Object.prototype.hasOwnProperty.call(o,t))return console.error(`ipv6.generate() » ERROR: \`${t}\` is an invalid option.
|
|
5
|
+
`+`ipv6.generate() » Valid options: [ ${Object.keys(o).join(", ")} ]`);if("boolean"!=typeof e[t])return console.error(`ipv6.generate() » ERROR: [${t}] option can only be \`true\` or \`false\`.`)}e.verbose&&console.info("ipv6.generate() » Generating IPv6 address...");var r=[];for(let e=0;e<8;e++){let o="";for(let e=0;e<4;e++)o+=i(0,16).toString(16);r.push(o)}var n=this.format(r.join(":"),{...e,verbose:!1});return e.verbose&&console.info("ipv6.generate() » IPv6 address generated!"+(require.main!==module?"\nipv6.generate() » Check returned string.":"")),n},format:function(e,o={}){var r,n,t={verbose:!0,leadingZeros:!1,doubleColon:!0};if(o={...t,...o},"string"!=typeof e)return console.error("ipv6.format() » ERROR: 1st arg <address> must be a string.");if(!this.validate(e,{verbose:!1}))return console.error(`ipv6.format() » ERROR:
|
|
6
|
+
- ${e} is not a valid IPv6 address.`);for(const a in o){if(!Object.prototype.hasOwnProperty.call(t,a))return console.error(`ipv6.format() » ERROR: \`${a}\` is an invalid option.
|
|
7
|
+
`+`ipv6.format() » Valid options: [ ${Object.keys(t).join(", ")} ]`);if("boolean"!=typeof o[a])return console.error(`ipv6.format() » ERROR: [${a}] option can only be \`true\` or \`false\`.`)}let i=e;if(i=o.doubleColon?(o.verbose&&console.info("ipv6.format() » Replacing zero series w/ '::'..."),i.replace(/:(?:0+:)+/,"::")):(o.verbose&&console.info("ipv6.format() » Expanding '::' into zero series..."),n=i.split(":").filter(Boolean).length,r=o.leadingZeros?"0000":"0",n=Array(8-n).fill(r).join(":"),i.replace("::",`:${n}:`)),o.leadingZeros){o.verbose&&console.info("ipv6.format() » Adding leading zeros...");var s=i.split(":");for(let e=0;e<s.length;e++)for(;s[e].length<4;)s[e]="0"+s[e];i=s.join(":")}else o.verbose&&console.info("ipv6.format() » Stripping leading zeros..."),i=e.replace(/(^|(?<=:))0+(?!:)/g,"$1");return o.verbose&&(i!==e?console.info("ipv6.format() » IP formatted successfully!\nipv6.format() » Check returned string."):console.info("ipv6.format() » IP already formatted to specs.")),i},validate:function(e,o={}){var r={verbose:!0};if(o={...r,...o},"string"!=typeof e)return console.error("ipv6.validate() » ERROR: 1st arg <address> must be a string.");for(const i in o){if(!Object.prototype.hasOwnProperty.call(r,i))return console.error(`ipv6.validate() » ERROR: \`${i}\` is an invalid option.
|
|
8
|
+
`+`ipv6.validate() » Valid options: [ ${Object.keys(r).join(", ")} ]`);if("boolean"!=typeof o[i])return console.error(`ipv6.validate() » ERROR: [${i}] option can only be \`true\` or \`false\`.`)}o.verbose&&console.info("ipv6.validate() » Validating IPv6 address...");const n=e.split(/::?/),t=n[n.length-1];e=!(e.includes("::")&&2<e.split("::").length||/:{3,}/g.test(e)||n.length<2||8<n.length||n.some(e=>!(/^[\dA-Fa-f]{1,4}$/.test(e)||e===t&&s.validate(t.replace(/\/(?:0|(?:[1-2]?\d)|32|96)$/,""),{verbose:!1}))));return o.verbose&&console.info(`ipv6.validate() » IP is ${e?"":"in"}valid IPv6 address!`),e}};if(require.main!==module)module.exports={ipv4:s,ipv6:e};else{const l="[0m",p="[1;91m",c="[1;33m",v="[1;97m",f={infoCmds:{help:/^--?h(?:elp)?$/,version:/^--?ve?r?s?i?o?n?$/}};let o=!1,r;for(const d of Object.keys(f))for(const g of Object.keys(f[d]))o||process.argv.forEach(e=>{e.startsWith("-")&&(r=f[d][g].test(e)?void(o=!0):e)});if(r&&(console.error(`
|
|
9
9
|
${p}ERROR: Arg [${r}] not recognized.`+l),console.info(`
|
|
10
|
-
${c}Valid arguments are below.`+l),t(["infoCmds"]),process.exit(1)),process.argv.some(e
|
|
10
|
+
${c}Valid arguments are below.`+l),t(["infoCmds"]),process.exit(1)),process.argv.some(e=>f.infoCmds.help.test(e)))t();else if(process.argv.some(e=>f.infoCmds.version.test(e)))console.info("v"+require("./package.json").version);else{const u=s.generate({verbose:!1});a(u),console.log(v+u+l)}function t(e=["cmdFormat","formatOptions","infoCmds"]){const o={cmdFormat:[`
|
|
11
11
|
${c}generate-ip [commands]`+l],infoCmds:["\nInfo commands:"," -h, --help Display help screen."," -v, --version Show version number."]};e.forEach(e=>{o[e]?.forEach(e=>{{const n=process.stdout.columns||80,t=[],o=e.match(/\S+|\s+/g);let r="";o.forEach(e=>{var o=n-(0===t.length?0:29);r.length+e.length>o&&(t.push(0===t.length?r:r.trimStart()),r=""),r+=e}),t.push(0===t.length?r:r.trimStart()),t.forEach((e,o)=>console.info(0===o?e:" ".repeat(29)+e))}})})}function a(e){e=e.replace(/\s+$/,"").replace(/"/g,'""'),"darwin"===process.platform?n(`printf "${e}" | pbcopy`):"linux"===process.platform?n(`printf "${e}" | xclip -selection clipboard`):"win32"===process.platform&&n(`Set-Clipboard -Value "${e}"`,{shell:"powershell"})}}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "generate-ip",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.3",
|
|
4
4
|
"description": "Randomly generate IPv4 and IPv6 addresses.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Adam Lui",
|
|
@@ -52,6 +52,6 @@
|
|
|
52
52
|
"url": "https://github.com/sponsors/adamlui"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
|
-
"@adamlui/minify.js": "^1.4.
|
|
55
|
+
"@adamlui/minify.js": "^1.4.7"
|
|
56
56
|
}
|
|
57
57
|
}
|