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 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.1"><img height=31 src="https://img.shields.io/badge/Latest_Build-2.0.1-44cc11.svg?logo=icinga&logoColor=white&labelColor=464646&style=for-the-badge"></a>
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); // sample output: 36.42.224.208
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 | Default Value
74
- ------------|---------|--------------------------------------------------------------------------------|---------------
75
- `verbose` | Boolean | Show logging in console/terminal. | `true`
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 | Default Value
98
- ------------|---------|--------------------------------------------------------------------------------|---------------
99
- `verbose` | Boolean | Show logging in console/terminal. | `true`
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); // sample output: 1379:6748:810c:5e16:b6c9:ae2:939f:8f2a
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 | Default Value
121
- ---------------|---------|--------------------------------------------------------------------------------|---------------
122
- `verbose` | Boolean | Show logging in console/terminal. | `true`
123
- `leadingZeros` | Boolean | Include leading zeros in hex pieces. | `false`
124
- `doubleColon` | Boolean | Replace series of zeros w/ `::` | `true`
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 | Default Value
150
- ---------------|---------|--------------------------------------------------------------------------------|---------------
151
- `verbose` | Boolean | Show logging in console/terminal. | `true`
152
- `leadingZeros` | Boolean | Include leading zeros in hex pieces. | `false`
153
- `doubleColon` | Boolean | Replace series of zeros w/ `::` | `true`
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 | Default Value
176
- ------------|---------|--------------------------------------------------------------------------------|---------------
177
- `verbose` | Boolean | Show logging in console/terminal. | `true`
192
+ Name | Type | Description | Default Value
193
+ ------------|---------|-----------------------------------|---------------
194
+ `verbose` | Boolean | Show logging in console/terminal. | `true`
178
195
 
179
196
  <br>
180
197
 
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
- const s=require("crypto")["randomInt"],n=require("child_process")["execSync"],i={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.verbose)return console.error("ipv4.generate() » ERROR: [verbose] option can only be `true` or `false`.");e.verbose&&console.info("ipv4.generate() » Generating IPv4 address...");var r=[];for(let e=0;e<4;e++)r.push(s(0,256));var n=r.join(".");return e.verbose&&console.log("\n"+n),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.verbose)return console.error("ipv4.validate() » ERROR: [verbose] option can only be `true` or `false`.");o.verbose&&console.info(`ipv4.validate() » Validating ${e}...`);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+=s(0,16).toString(16);r.push(o)}var n=this.format(r.join(":"),{...e,verbose:!1});return e.verbose&&console.log("\n"+n),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.");for(const a in o){if(!Object.prototype.hasOwnProperty.call(t,a))return console.error(`ipv6.format() » ERROR: \`${a}\` is an invalid option.`+`
6
- 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\`.`)}if(!this.validate(e,{verbose:!1}))return console.error(`ipv6.format() » ERROR:
7
- - ${e} is not a valid IPv6 address.`);o.verbose&&console.info(`ipv6.format() » Formatting ${e}...`);let s=e;if(s=o.doubleColon?(o.verbose&&console.info("ipv6.format() » Replacing zero series w/ '::'..."),s.replace(/:(?:0+:)+/,"::")):(o.verbose&&console.info("ipv6.format() » Expanding '::' into zero series..."),n=s.split(":").filter(Boolean).length,r=o.leadingZeros?"0000":"0",n=Array(8-n).fill(r).join(":"),s.replace("::",`:${n}:`)),o.leadingZeros){o.verbose&&console.info("ipv6.format() » Adding leading zeros...");var i=s.split(":");for(let e=0;e<i.length;e++)for(;i[e].length<4;)i[e]="0"+i[e];s=i.join(":")}else o.verbose&&console.info("ipv6.format() » Stripping leading zeros..."),s=e.replace(/(^|(?<=:))0+(?!:)/g,"$1");return o.verbose&&console.info(s!==e?s:"ipv6.format() » Address cannot be formatted!\n"),s},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 s of Object.keys(o))if(!Object.prototype.hasOwnProperty.call(r,s))return console.error(`ipv6.validate() » ERROR: \`${s}\` is an invalid option.`+`
8
- ipv6.validate() » Valid options: [ ${Object.keys(r).join(", ")} ]`);if("boolean"!=typeof o.verbose)return console.error("ipv6.validate() » ERROR: [verbose] option can only be `true` or `false`.");o.verbose&&console.info(`ipv6.validate() » Validating ${e}...`);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&&i.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:i,ipv6:e};else{const l="",p="",c="",v="",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 b of Object.keys(f[d]))o||process.argv.forEach(e=>{e.startsWith("-")&&(r=f[d][b].test(e)?void(o=!0):e)});if(r&&(console.error(`
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="",p="",c="",v="",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=>/^--?h(?:elp)?$/.test(e)))t();else if(process.argv.some(e=>/^--?ve?r?s?i?o?n?$/.test(e)))console.info("v"+require("./package.json").version);else{const g=i.generate({verbose:!1});a(g),console.log(v+g+l)}function t(e=["cmdFormat","formatOptions","infoCmds"]){const o={cmdFormat:[`
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.1",
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.5"
55
+ "@adamlui/minify.js": "^1.4.7"
56
56
  }
57
57
  }