generate-ip 2.4.7 → 2.4.8

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
@@ -1,3 +1,5 @@
1
+ <a id="top"></a>
2
+
1
3
  <div align="center">
2
4
 
3
5
  <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>
@@ -7,17 +9,17 @@
7
9
  <br>
8
10
 
9
11
  <a href="#%EF%B8%8F-mit-license">
10
- <img height=31 src="https://img.shields.io/badge/License-MIT-fc4f2d.svg?logo=internetarchive&logoColor=white&labelColor=464646&style=for-the-badge"></a>
11
- <a href="https://github.com/adamlui/js-utils/releases/tag/generate-ip-2.4.7">
12
- <img height=31 src="https://img.shields.io/badge/Latest_Build-2.4.7-44cc11.svg?logo=icinga&logoColor=white&labelColor=464646&style=for-the-badge"></a>
12
+ <img height=31 src="https://img.shields.io/badge/License-MIT-orange.svg?logo=internetarchive&logoColor=white&labelColor=464646&style=for-the-badge"></a>
13
+ <a href="https://github.com/adamlui/js-utils/releases/tag/generate-ip-2.4.8">
14
+ <img height=31 src="https://img.shields.io/badge/Latest_Build-2.4.8-44cc11.svg?logo=icinga&logoColor=white&labelColor=464646&style=for-the-badge"></a>
13
15
  <a href="https://www.npmjs.com/package/generate-ip?activeTab=code">
14
16
  <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>
15
- <a href="https://github.com/adamlui/js-utils/blob/generate-ip-2.4.7/generate-ip/dist/generate-ip.min.js">
16
- <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.7&label=Minified%20Size&logo=databricks&logoColor=white&labelColor=464646&color=ff69b4&style=for-the-badge"></a>
17
+ <a href="https://github.com/adamlui/js-utils/blob/generate-ip-2.4.8/generate-ip/dist/generate-ip.min.js">
18
+ <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.8&label=Minified%20Size&logo=databricks&logoColor=white&labelColor=464646&color=ff69b4&style=for-the-badge"></a>
17
19
  <a href="https://sonarcloud.io/component_measures?metric=new_vulnerabilities&id=adamlui_js-utils:generate-ip/src/generate-ip.js">
18
20
  <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>
19
21
  <a href="https://github.com/toolleeo/cli-apps#networking">
20
- <img height=31 src="https://img.shields.io/badge/Mentioned_in-Awesome-c4a2bd?logo=awesomelists&logoColor=white&labelColor=464646&style=for-the-badge"></a>
22
+ <img height=31 src="https://img.shields.io/badge/Mentioned_in-Awesome-ff69b4?logo=awesomelists&logoColor=white&labelColor=464646&style=for-the-badge"></a>
21
23
  <a href="https://www.jsdelivr.com/package/npm/generate-ip?tab=stats">
22
24
  <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>
23
25
 
@@ -75,7 +77,7 @@ import { ipv4, ipv6, mac } from 'generate-ip';
75
77
  #### CommonJS:
76
78
 
77
79
  ```js
78
- const { ipv4, ipv6, mac } = require('generate-ip');
80
+ const { ipv4, ipv6, mac } = require('generate-ip')
79
81
  ```
80
82
 
81
83
  ###### _*Node.js version 14 or higher required_
@@ -85,23 +87,23 @@ const { ipv4, ipv6, mac } = require('generate-ip');
85
87
  #### <> HTML script tag:
86
88
 
87
89
  ```html
88
- <script src="https://cdn.jsdelivr.net/npm/generate-ip@2.4.7/dist/generate-ip.min.js"></script>
90
+ <script src="https://cdn.jsdelivr.net/npm/generate-ip@2.4.8/dist/generate-ip.min.js"></script>
89
91
  ```
90
92
 
91
93
  #### ES6:
92
94
 
93
95
  ```js
94
96
  (async () => {
95
- await import('https://cdn.jsdelivr.net/npm/generate-ip@2.4.7/dist/generate-ip.min.js');
97
+ await import('https://cdn.jsdelivr.net/npm/generate-ip@2.4.8/dist/generate-ip.min.js')
96
98
  // Your code here...
97
- })();
99
+ })()
98
100
  ```
99
101
 
100
102
  ### <img height=17 src="https://assets.js-utils.org/images/icons/platforms/tampermonkey/icon28.png?v=0d36e26"><img height=17.5 src="https://assets.js-utils.org/images/icons/platforms/violentmonkey/icon25.png?v=0d36e26"> Greasemonkey
101
103
 
102
104
  ```js
103
105
  ...
104
- // @require https://cdn.jsdelivr.net/npm/generate-ip@2.4.7/dist/generate-ip.min.js
106
+ // @require https://cdn.jsdelivr.net/npm/generate-ip@2.4.8/dist/generate-ip.min.js
105
107
  // ==/UserScript==
106
108
 
107
109
  // Your code here...
@@ -109,7 +111,7 @@ const { ipv4, ipv6, mac } = require('generate-ip');
109
111
 
110
112
  <br>
111
113
 
112
- 📝 **Note:** To always import the latest version (not recommended in production!) remove the `@2.4.7` version tag from the jsDelivr URL: `https://cdn.jsdelivr.net/npm/generate-ip/dist/generate-ip.min.js`
114
+ 📝 **Note:** To always import the latest version (not recommended in production!) remove the `@2.4.8` version tag from the jsDelivr URL: `https://cdn.jsdelivr.net/npm/generate-ip/dist/generate-ip.min.js`
113
115
 
114
116
  <br>
115
117
 
@@ -128,15 +130,15 @@ const { ipv4, ipv6, mac } = require('generate-ip');
128
130
  Generates **one** IPv4 address if `qty` option is not given, returning a string:
129
131
 
130
132
  ```js
131
- const ip = ipv4.generate();
132
- console.log(ip); // sample output: '36.42.224.208'
133
+ const ip = ipv4.generate()
134
+ console.log(ip) // sample output: '36.42.224.208'
133
135
  ```
134
136
 
135
137
  ...or **multiple** IPv4 addresses if `qty` option is given, returning an array of strings:
136
138
 
137
139
  ```js
138
- const ips = ipv4.generate({ qty: 3 });
139
- console.log(ips);
140
+ const ips = ipv4.generate({ qty: 3 })
141
+ console.log(ips)
140
142
 
141
143
  /* sample output:
142
144
 
@@ -161,8 +163,8 @@ Name | Type | Description | Default Value
161
163
  Checks if given `address` is a valid IPv4 address:
162
164
 
163
165
  ```js
164
- const ipIsValid = ipv4.validate('36.42.224.208');
165
- console.log(ipIsValid);
166
+ const ipIsValid = ipv4.validate('36.42.224.208')
167
+ console.log(ipIsValid)
166
168
 
167
169
  /* outputs:
168
170
 
@@ -191,15 +193,15 @@ Name | Type | Description | Default Value
191
193
  Generates **one** IPv6 address if `qty` option is not given, returning a string:
192
194
 
193
195
  ```js
194
- const ip = ipv6.generate();
195
- console.log(ip); // sample output: '1379:6748:810c:5e16:b6c9:ae2:939f:8f2a'
196
+ const ip = ipv6.generate()
197
+ console.log(ip) // sample output: '1379:6748:810c:5e16:b6c9:ae2:939f:8f2a'
196
198
  ```
197
199
 
198
200
  ...or **multiple** IPv6 addresses if `qty` option is given, returning an array of strings:
199
201
 
200
202
  ```js
201
- const ips = ipv4.generate({ qty: 5 });
202
- console.log(ips);
203
+ const ips = ipv4.generate({ qty: 5 })
204
+ console.log(ips)
203
205
 
204
206
  /* sample output:
205
207
 
@@ -233,9 +235,9 @@ Formats an IPv6 address according to `options` passed, returning a string:
233
235
 
234
236
  ```js
235
237
  const ipv6address = '0d::ffff:192.1.56.10/96',
236
- formattedAddress = ipv6.format(ipv6address, { leadingZeros: true, doubleColon: false });
238
+ formattedAddress = ipv6.format(ipv6address, { leadingZeros: true, doubleColon: false })
237
239
 
238
- console.log(formattedAddress);
240
+ console.log(formattedAddress)
239
241
 
240
242
  /* outputs:
241
243
 
@@ -262,8 +264,8 @@ Name | Type | Description | Default Value
262
264
  Checks if given `address` is a valid IPv6 address:
263
265
 
264
266
  ```js
265
- const ipIsValid = ipv6.validate('0:0:0:0:0:ffff:192.1.56.10/96');
266
- console.log(ipIsValid);
267
+ const ipIsValid = ipv6.validate('0:0:0:0:0:ffff:192.1.56.10/96')
268
+ console.log(ipIsValid)
267
269
 
268
270
  /* outputs:
269
271
 
@@ -292,15 +294,15 @@ Name | Type | Description | Default Value
292
294
  Generates **one** MAC address if `qty` option is not given, returning a string:
293
295
 
294
296
  ```js
295
- const macAddress = mac.generate();
296
- console.log(macAddress); // sample output: '1d:3a:af:21:b1:8c'
297
+ const macAddress = mac.generate()
298
+ console.log(macAddress) // sample output: '1d:3a:af:21:b1:8c'
297
299
  ```
298
300
 
299
301
  ...or **multiple** MAC addresses if `qty` option is given, returning an array of strings:
300
302
 
301
303
  ```js
302
- const macAddresses = mac.generate({ qty: 2 });
303
- console.log(macAddresses);
304
+ const macAddresses = mac.generate({ qty: 2 })
305
+ console.log(macAddresses)
304
306
 
305
307
  /* sample output:
306
308
 
@@ -325,8 +327,8 @@ Name | Type | Description | Default Value
325
327
  Checks if given `address` is a valid MAC address:
326
328
 
327
329
  ```js
328
- const addressIsValid = mac.validate('1d:3a:af:21:b1:8c');
329
- console.log(addressIsValid);
330
+ const addressIsValid = mac.validate('1d:3a:af:21:b1:8c')
331
+ console.log(addressIsValid)
330
332
 
331
333
  /* outputs:
332
334
 
@@ -422,4 +424,4 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
422
424
 
423
425
  <picture><source media="(prefers-color-scheme: dark)" srcset="https://assets.js-utils.org/images/icons/home/white/icon32x27.png?v=0d36e26"><img height=13 src="https://assets.js-utils.org/images/icons/home/dark-gray/icon32x27.png?v=0d36e26"></picture> <a href="https://js-utils.org">**More JavaScript utilities**</a> /
424
426
  <a href="https://github.com/adamlui/js-utils/discussions">Discuss</a> /
425
- <a href="#-generate-ip">Back to top ↑</a>
427
+ <a href="#top">Back to top ↑</a>
package/bin/generate-ip CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  require('child_process').spawnSync('node',
4
- [require.resolve('generate-ip/dist/cli.min.js'), '--ipv4', ...process.argv.slice(2)],
4
+ [require.resolve('generate-ip/dist/cli/index.min.js'), '--ipv4', ...process.argv.slice(2)],
5
5
  { stdio: 'inherit' }
6
6
  );
package/bin/generate-ipv4 CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  require('child_process').spawnSync('node',
4
- [require.resolve('generate-ip/dist/cli.min.js'), '--ipv4', ...process.argv.slice(2)],
4
+ [require.resolve('generate-ip/dist/cli/index.min.js'), '--ipv4', ...process.argv.slice(2)],
5
5
  { stdio: 'inherit' }
6
6
  );
package/bin/generate-ipv6 CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  require('child_process').spawnSync('node',
4
- [require.resolve('generate-ip/dist/cli.min.js'), '--ipv6', ...process.argv.slice(2)],
4
+ [require.resolve('generate-ip/dist/cli/index.min.js'), '--ipv6', ...process.argv.slice(2)],
5
5
  { stdio: 'inherit' }
6
6
  );
package/bin/generate-mac CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  require('child_process').spawnSync('node',
4
- [require.resolve('generate-ip/dist/cli.min.js'), '--mac', ...process.argv.slice(2)],
4
+ [require.resolve('generate-ip/dist/cli/index.min.js'), '--mac', ...process.argv.slice(2)],
5
5
  { stdio: 'inherit' }
6
6
  );
package/bin/generateip CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  require('child_process').spawnSync('node',
4
- [require.resolve('generate-ip/dist/cli.min.js'), '--ipv4', ...process.argv.slice(2)],
4
+ [require.resolve('generate-ip/dist/cli/index.min.js'), '--ipv4', ...process.argv.slice(2)],
5
5
  { stdio: 'inherit' }
6
6
  );
package/bin/generateipv4 CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  require('child_process').spawnSync('node',
4
- [require.resolve('generate-ip/dist/cli.min.js'), '--ipv4', ...process.argv.slice(2)],
4
+ [require.resolve('generate-ip/dist/cli/index.min.js'), '--ipv4', ...process.argv.slice(2)],
5
5
  { stdio: 'inherit' }
6
6
  );
package/bin/generateipv6 CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  require('child_process').spawnSync('node',
4
- [require.resolve('generate-ip/dist/cli.min.js'), '--ipv6', ...process.argv.slice(2)],
4
+ [require.resolve('generate-ip/dist/cli/index.min.js'), '--ipv6', ...process.argv.slice(2)],
5
5
  { stdio: 'inherit' }
6
6
  );
package/bin/generatemac CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  require('child_process').spawnSync('node',
4
- [require.resolve('generate-ip/dist/cli.min.js'), '--mac', ...process.argv.slice(2)],
4
+ [require.resolve('generate-ip/dist/cli/index.min.js'), '--mac', ...process.argv.slice(2)],
5
5
  { stdio: 'inherit' }
6
6
  );
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * © 2024–2026 Adam Lui & contributors under the MIT license.
4
+ * Source: https://code.generate-ip.org
5
+ * Documentation: https://docs.generate-ip.org
6
+ */
7
+ (async()=>{globalThis.env={devMode:__dirname.match(/[\\/]src/)};var e=require("node-clipboardy"),s=require("child_process").execSync,o=require("fs"),{getMsgs:a,getSysLang:p}=require(`./lib/language${env.devMode?"":".min"}.js`),{ipv4:r,ipv6:i,mac:n}=require(`../generate-ip${env.devMode?"":".min"}.js`),t=require("path");globalThis.app=require(`../${env.devMode?"../":"./data/"}app.json`),app.urls.docs+="/#-command-line-usage",app.msgs=await a(p()),app.regex={paramOptions:{qty:/^--?qu?a?n?ti?t?y(?:=.*|$)/},flags:{ipv6mode:/^--?(?:ip)?v?6(?:-?mode)?$/,macMode:/^--?m(?:ac)?(?:-?mode)?$/,quietMode:/^--?q(?:uiet)?(?:-?mode)?$/},infoCmds:{help:/^--?h(?:elp)?$/,version:/^--?ve?r?s?i?o?n?$/},version:/^[~^>=]?\d+\.\d+\.\d+$/};let m="",g="";if(app.config={},process.argv.forEach(p=>{var e,s,o;p.startsWith("-")&&(e=Object.keys(app.regex.paramOptions).find(e=>app.regex.paramOptions[e].test(p)),o=Object.keys(app.regex.flags).find(e=>app.regex.flags[e].test(p)),s=Object.keys(app.regex.infoCmds).find(e=>app.regex.infoCmds[e].test(p)),o?app.config[o]=!0:e?(/=.+/.test(p)||(console.error(`
8
+ ${m}${app.msgs.prefix_error}: Arg [--${p.replace(/-/g,"")}] ${app.msgs.error_noEqual}.`),f(),process.exit(1)),o=p.split("=")[1],app.config[e]=parseInt(o)||o):s||/ipv4/.test(p)||(console.error(`
9
+ ${m}${app.msgs.prefix_error}: Arg [${p}] ${app.msgs.error_notRecognized}.`),console.info(`
10
+ ${app.msgs.info_validArgs}.`),l(["paramOptions","flags","infoCmds"]),process.exit(1)))}),app.config.qty&&(isNaN(app.config.qty)||app.config.qty<1)&&(console.error(`
11
+ ${m}${app.msgs.prefix_error}: [qty] ${app.msgs.error_nonPositiveNum}.`),f(),process.exit(1)),process.argv.some(e=>app.regex.infoCmds.help.test(e)))l();else if(process.argv.some(e=>app.regex.infoCmds.version.test(e))){var a=s(`npm view ${JSON.stringify(app.name)} version`).toString().trim()||"none";let e,p=process.cwd();for(;"/"!=p;){var c=t.join(p,"package.json");if(o.existsSync(c)){c=require(c);e=(c.dependencies?.[app.name]||c.devDependencies?.[app.name])?.match(app.regex.version)?.[1]||"none";break}p=t.dirname(p)}console.info(`
12
+ ${app.msgs.prefix_globalVer}: `+a),console.info(app.msgs.prefix_localVer+": "+e)}else{p={qty:app.config.qty||1,verbose:!app.config.quietMode},s=(app.config.ipv6mode?i:app.config.macMode?n:r).generate(p);a=`
13
+ ${app.msgs.info_copying}...`,app.config.quietMode||console.info(a),e.writeSync(Array.isArray(s)?s.join("\n"):s)}function f(){console.info(`
14
+ ${app.msgs.info_moreHelp}, ${app.msgs.info_type} ${app.name} --help' ${app.msgs.info_or} ${app.msgs.info_visit}
15
+ ${g}${app.urls.docs}`)}function l(e=["header","usage","paramOptions","flags","infoCmds"]){app.prefix=` ${app.name}  `;let p={header:[`
16
+ ├ ${app.prefix}${app.msgs.appCopyright||`© ${app.copyrightYear} ${app.author} under the ${app.license} license`}.`,""+app.prefix+app.msgs.prefix_source+": "+app.urls.src],usage:[`
17
+ ${g}o ${app.msgs.helpSection_usage}:`,` ${g}» ${app.cmdFormat}`],paramOptions:[`
18
+ ${g}o ${app.msgs.helpSection_paramOptions}:`,` --qty=n ${app.msgs.optionDesc_qty}.`],flags:[`
19
+ ${g}o ${app.msgs.helpSection_flags}:`,` -6, --ipv6 ${app.msgs.optionDesc_ipv6}.`,` -m, --mac ${app.msgs.optionDesc_mac}.`,` -q, --quiet ${app.msgs.optionDesc_quiet}.`],infoCmds:[`
20
+ ${g}o ${app.msgs.helpSection_infoCmds}:`," -h, --help "+app.msgs.optionDesc_help,` -v, --version ${app.msgs.optionDesc_version}.`]};e.forEach(i=>p[i]?.forEach(p=>{{var r=/header|usage/.test(i)?1:29;let s=process.stdout.columns||80,o=[],e=p.match(/\S+|\s+/g),a="";e.forEach(e=>{var p=s-(o.length?r:0);a.length+"| ".length+e.length>p&&(o.push(o.length?a.trimStart():a),a=""),a+=e}),o.push(o.length?a.trimStart():a),o.forEach((e,p)=>console.info("| "+(0==p?e:" ".repeat(r)+e)))}})),console.info(`
21
+ ${app.msgs.info_moreHelp}, ${app.msgs.info_visit}: ${g}${app.urls.docs}`)}})();
@@ -0,0 +1,6 @@
1
+ /**
2
+ * © 2024–2026 Adam Lui & contributors under the MIT license.
3
+ * Source: https://code.generate-ip.org
4
+ * Documentation: https://docs.generate-ip.org
5
+ */
6
+ module.exports={fetch(n){return new Promise((t,e)=>{var r=n.match(/^([^:]+):\/\//)[1];/^https?$/.test(r)||e(new Error(app.msgs.error_invalidURL+".")),require(r).get(n,e=>{let r="";e.on("data",e=>r+=e),e.on("end",()=>t({json:()=>JSON.parse(r)}))}).on("error",e)})},flatten(e,{key:r="message"}={}){var t,n={};for(t in e)n[t]="object"==typeof e[t]&&r in e[t]?e[t][r]:e[t];return n}};
@@ -0,0 +1,6 @@
1
+ /**
2
+ * © 2024–2026 Adam Lui & contributors under the MIT license.
3
+ * Source: https://code.generate-ip.org
4
+ * Documentation: https://docs.generate-ip.org
5
+ */
6
+ module.exports={async getMsgs(r="en"){var e=require(`./data${env.devMode?"":".min"}.js`);let t=e.flatten(require(`../../${env.devMode?"../_locales/en/":"data/"}messages.json`),{key:"message"});if(!r.startsWith("en")){var n=`${app.urls.jsdelivr}@${app.commitHashes.locales}/${app.name}/_locales/`;let s=n+`${r?r.replace("-","_"):"en"}/`+"messages.json",a=0;for(;a<3;)try{t=e.flatten(await(await e.fetch(s)).json(),{key:"message"});break}catch(e){if(3==++a)break;s=r.includes("-")&&1==a?s.replace(/([^_]*)_[^/]*(\/.*)/,"$1$2"):n+"en/messages.json"}}return t},getSysLang(){var e;if("win32"!=process.platform)return((e=process.env).LANG||e.LANGUAGE||e.LC_ALL||e.LC_MESSAGES||e.LC_NAME||"en").split(".")[0];try{return require("child_process").execSync("(Get-Culture).TwoLetterISOLanguageName",{shell:"powershell",encoding:"utf-8"}).trim()}catch(e){return console.error("ERROR loading system language:",e.message),"en"}}};
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "generate-ip",
3
+ "author": "Adam Lui & contributors",
4
+ "license": "MIT",
5
+ "copyrightYear": "2024–2026",
6
+ "cmdFormat": "generate-[ip|ipv6|mac] [options|commands]",
7
+ "urls": {
8
+ "docs": "https://github.com/adamlui/js-utils/tree/main/generate-ip/docs",
9
+ "github": "https://github.com/adamlui/js-utils",
10
+ "jsdelivr": "https://cdn.jsdelivr.net/gh/adamlui/js-utils",
11
+ "npm": "https://www.npmjs.com/package/generate-ip",
12
+ "src": "https://github.com/adamlui/js-utils/tree/main/generate-ip/src"
13
+ },
14
+ "commitHashes": {
15
+ "locales": "0e30af1"
16
+ }
17
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "appName": { "message": "generate-ip" },
3
+ "appCopyright": { "message": "© 2024–2026 Adam Lui & contributors under the MIT license" },
4
+ "prefix_error": { "message": "ERROR" },
5
+ "prefix_globalVer": { "message": "Global version" },
6
+ "prefix_localVer": { "message": "Local version" },
7
+ "prefix_source": { "message": "Source" },
8
+ "error_noEqual": { "message": "requires '=' followed by a value" },
9
+ "error_notRecognized": { "message": "not recognized" },
10
+ "error_nonPositiveNum": { "message": "argument can only be > 0" },
11
+ "error_invalidURL": { "message": "Invalid URL" },
12
+ "info_validArgs": { "message": "Valid arguments are below" },
13
+ "info_copying": { "message": "Copying to clipboard" },
14
+ "info_moreHelp": { "message": "For more help" },
15
+ "info_type": { "message": "type" },
16
+ "info_or": { "message": "or" },
17
+ "info_visit": { "message": "visit" },
18
+ "helpSection_usage": { "message": "Usage" },
19
+ "helpSection_paramOptions": { "message": "Parameter options" },
20
+ "helpSection_flags": { "message": "Boolean options" },
21
+ "helpSection_infoCmds": { "message": "Info commands" },
22
+ "optionDesc_qty": { "message": "Generate n IP address(es)" },
23
+ "optionDesc_ipv6": { "message": "Generate IPv6 address" },
24
+ "optionDesc_mac": { "message": "Generate MAC address" },
25
+ "optionDesc_quiet": { "message": "Suppress all logging except errors" },
26
+ "optionDesc_help": { "message": "Display help screen" },
27
+ "optionDesc_version": { "message": "Show version number" }
28
+ }
@@ -3,4 +3,4 @@
3
3
  * Source: https://code.generate-ip.org
4
4
  * Documentation: https://docs.generate-ip.org
5
5
  */
6
- let ipv4={generate:function(o={}){var e="ipv4.generate() » ",t={verbose:!0,qty:1};if(validateOptions(o,t,"https://docs.generate-ip.org/#ipv4generateoptions","ipv4.generate({ verbose: false, qty: 3 })")){(o={...t,...o}).verbose&&console.info(e+`Generating IPv4 address${1<o.qty?"es":""}...`);var r=[];if(1<o.qty)for(let e=0;e<o.qty;e++)r.push(this.generate({...o,qty:1,verbose:!1}));else{var s=[];for(let e=0;e<4;e++)s.push(randomInt(0,256));r.push(s.join("."))}t=1<o.qty?r:r[0];return o.verbose&&(console.info(e+`IPv4 address${1<o.qty?"es":""} generated!`),console.info(e+(1==o.qty?t:t.join(", ")))),t}},validate:function(e,o={}){var t="https://docs.generate-ip.org/#ipv4validateaddress-options",r={verbose:!0},s="ipv4.validate() » ";if("string"!=typeof e)console.error(s+"ERROR: 1st arg <address> must be a string."),console.info(s+"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(s+`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(s+`IP is ${r?"":"in"}valid IPv4 address!`),r}},ipv6={generate:function(r={}){var e="ipv6.generate() » ",o={verbose:!0,qty:1,leadingZeros:!1,doubleColon:!0};if(validateOptions(r,o,"https://docs.generate-ip.org/#ipv6generateoptions","ipv6.generate({ leadingZeros: true, qty: 5 })")){(r={...o,...r}).verbose&&console.info(e+`Generating IPv6 address${1<r.qty?"es":""}...`);var s=[];if(1<r.qty)for(let e=0;e<r.qty;e++)s.push(this.generate({...r,qty:1,verbose:!1}));else{let o=[],{qty:e,...t}=r;for(let e=0;e<8;e++){var i=randomHex(4);o.push(i)}s.push(this.format(o.join(":"),{...t,verbose:!1}))}o=1<r.qty?s:s[0];return r.verbose&&(console.info(e+`IPv6 address${1<r.qty?"es":""} generated!`),console.info(e+(1==r.qty?o:o.join(", ")))),o}},format:function(o,t={}){var r,e="https://docs.generate-ip.org/#ipv6formatipv6address-options",s="ipv6.format() » ",i={verbose:!0,leadingZeros:!1,doubleColon:!0};if("string"!=typeof o)console.error(s+"ERROR: 1st arg <ipv6address> must be a string."),console.info(s+"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(s+"Replacing zero series w/ '::'..."),e.replace(/:(?:0+:)+/,"::")):(t.verbose&&console.info(s+"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(s+"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(s+"Stripping leading zeros..."),e=o.replace(/(^|(?<=:))0+(?!:)/g,"$1");return t.verbose&&(e!=o?console.info(s+"IP formatted successfully!"):console.info(s+"IP already formatted to specs."),console.info(s+e)),e}}else console.error(s+`ERROR: ${o} is not a valid IPv6 address.`),console.info(s+"For more help, please visit "+e)},validate:function(t,r={}){var s="https://docs.generate-ip.org/#ipv6validateaddress-options",i={verbose:!0},n="ipv6.validate() » ";if("string"!=typeof t)console.error(n+"ERROR: 1st arg <address> must be a string."),console.info(n+"For more help, please visit "+s);else if(validateOptions(r,i,s,"ipv6.validate('0:0:0:0:0:ffff:192.1.56.10/96', { verbose: false })")){(r={...i,...r}).verbose&&console.info(n+`Validating ${t}...`);let e=t.split(/::?/),o=e[e.length-1];s=!(t.includes("::")&&2<t.split("::").length||/:{3,}/.test(t)||e.length<2||8<e.length||e.some(e=>!(/^[\da-f]{1,4}$/i.test(e)||e==o&&ipv4.validate(o.replace(/\/(?:12[0-8]|[1-9]?\d)$/,""),{verbose:!1}))));return r.verbose&&console.info(n+`IP is ${s?"":"in"}valid IPv6 address!`),s}}},mac={generate:function(o={}){var e="mac.generate() » ",t={verbose:!0,qty:1};if(validateOptions(o,t,"https://docs.generate-ip.org/#macgenerateoptions","mac.generate({ verbose: false, qty: 2 })")){(o={...t,...o}).verbose&&console.info(e+`Generating MAC address${1<o.qty?"es":""}...`);var r=[];if(1<o.qty)for(let e=0;e<o.qty;e++)r.push(this.generate({...o,qty:1,verbose:!1}));else{var[t,s]=Array.from({length:2},()=>{var o=[];for(let e=0;e<3;e++)o.push(randomHex(2));return o.join(":")});r.push(t+":"+s)}t=1<o.qty?r:r[0];return o.verbose&&(console.info(e+`MAC address${1<o.qty?"es":""} generated!`),console.info(e+(1==o.qty?t:t.join(", ")))),t}},validate:function(e,o={}){var t="https://docs.generate-ip.org/#macvalidateaddress-options",r={verbose:!0},s="mac.validate() » ";if("string"!=typeof e)console.error(s+"ERROR: 1st arg <address> must be a string."),console.info(s+"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(s+`Validating ${e}...`),t=/^(?:[\da-f]{2}[:-]){5}[\da-f]{2}$/i.test(e),o.verbose&&console.info(s+`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){let s=JSON.stringify(o,void 0,2).replace(/"([^"]+)":/g,"$1:").replace(/"/g,"'").replace(/\n\s*/g," "),i=Object.keys(o).join(", "),n=Object.keys(o).filter(e=>"boolean"==typeof o[e]),a=Object.keys(o).filter(e=>Number.isInteger(o[e])),l=`${validateOptions.caller?.name||"validateOptions"}() » `;var d,p=r.split(",").findIndex(e=>e.trim().startsWith("{"))+1,v=(p+=["st","nd","rd"][p-1]||"th",()=>{console.info(l+`Valid options: [ ${i} ]`),console.info(l+"If omitted, default settings are: "+s)}),f=()=>{console.info(l+"For more help, please visit "+t)};if("object"!=typeof e)return console.error(l+`ERROR: ${"0th"==p?"[O":p+" arg [o"}ptions] can only be an object of key/values.`),console.info(l+"Example valid call: "+r),v(),f(),!1;for(d in e){if(!Object.prototype.hasOwnProperty.call(o,d))return console.error(l+`ERROR: \`${d}\` is an invalid option.`),v(),f(),!1;if(n.includes(d)&&"boolean"!=typeof e[d])return console.error(l+`ERROR: [${d}] option can only be \`true\` or \`false\`.`),f(),!1;if(a.includes(d)&&(e[d]=parseInt(e[d],10),isNaN(e[d])||e[d]<1))return console.error(l+`ERROR: [${d}] option can only be an integer > 0.`),f(),!1}return!0}let 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(let o in gipAliases)gipAliases[o].forEach(e=>{try{module.exports[e]=module.exports[o]}catch(e){}try{window[e]=window[o]}catch(e){}});
6
+ let ipv4={generate:function(o={}){var e="ipv4.generate() » ",t={verbose:!0,qty:1};if(validateOptions(o,t,"https://docs.generate-ip.org/#ipv4generateoptions","ipv4.generate({ verbose: false, qty: 3 })")){(o={...t,...o}).verbose&&console.info(e+`Generating IPv4 address${1<o.qty?"es":""}...`);var r=[];if(1<o.qty)for(let e=0;e<o.qty;e++)r.push(this.generate({...o,qty:1,verbose:!1}));else{var s=[];for(let e=0;e<4;e++)s.push(randomInt(0,256));r.push(s.join("."))}t=1<o.qty?r:r[0];return o.verbose&&(console.info(e+`IPv4 address${1<o.qty?"es":""} generated!`),console.info(e+(1==o.qty?t:t.join(", ")))),t}},validate:function(e,o={}){var t="https://docs.generate-ip.org/#ipv4validateaddress-options",r={verbose:!0},s="ipv4.validate() » ";if("string"!=typeof e)console.error(s+"ERROR: 1st arg <address> must be a string."),console.info(s+"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(s+`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(s+`IP is ${r?"":"in"}valid IPv4 address!`),r}},ipv6={generate:function(r={}){var e="ipv6.generate() » ",o={verbose:!0,qty:1,leadingZeros:!1,doubleColon:!0};if(validateOptions(r,o,"https://docs.generate-ip.org/#ipv6generateoptions","ipv6.generate({ leadingZeros: true, qty: 5 })")){(r={...o,...r}).verbose&&console.info(e+`Generating IPv6 address${1<r.qty?"es":""}...`);var s=[];if(1<r.qty)for(let e=0;e<r.qty;e++)s.push(this.generate({...r,qty:1,verbose:!1}));else{let o=[],{qty:e,...t}=r;for(let e=0;e<8;e++){var n=randomHex(4);o.push(n)}s.push(this.format(o.join(":"),{...t,verbose:!1}))}o=1<r.qty?s:s[0];return r.verbose&&(console.info(e+`IPv6 address${1<r.qty?"es":""} generated!`),console.info(e+(1==r.qty?o:o.join(", ")))),o}},format:function(o,t={}){var r,e="https://docs.generate-ip.org/#ipv6formatipv6address-options",s="ipv6.format() » ",n={verbose:!0,leadingZeros:!1,doubleColon:!0};if("string"!=typeof o)console.error(s+"ERROR: 1st arg <ipv6address> must be a string."),console.info(s+"For more help, please visit "+e);else if(this.validate(o,{verbose:!1})){if(validateOptions(t,n,e,"ipv6.format('0d::ffff:192.1.56.10/96', { leadingZeros: true, doubleColon: false })")){t={...n,...t};let e=o;if(e=t.doubleColon?(t.verbose&&console.info(s+"Replacing zero series w/ '::'..."),e.replace(/:(?:0+:)+/,"::")):(t.verbose&&console.info(s+"Expanding '::' into zero series..."),n=e.split(":").filter(Boolean).length,r=t.leadingZeros?"0000":"0",n=Array(8-n).fill(r).join(":"),e.replace("::",`:${n}:`)),t.leadingZeros){t.verbose&&console.info(s+"Adding leading zeros...");var i=e.split(":");for(let e=0;e<i.length;e++)for(;i[e].length<4;)i[e]="0"+i[e];e=i.join(":")}else t.verbose&&console.info(s+"Stripping leading zeros..."),e=o.replace(/(^|(?<=:))0+(?!:)/g,"$1");return t.verbose&&(e!=o?console.info(s+"IP formatted successfully!"):console.info(s+"IP already formatted to specs."),console.info(s+e)),e}}else console.error(s+`ERROR: ${o} is not a valid IPv6 address.`),console.info(s+"For more help, please visit "+e)},validate:function(t,r={}){var s="https://docs.generate-ip.org/#ipv6validateaddress-options",n={verbose:!0},i="ipv6.validate() » ";if("string"!=typeof t)console.error(i+"ERROR: 1st arg <address> must be a string."),console.info(i+"For more help, please visit "+s);else if(validateOptions(r,n,s,"ipv6.validate('0:0:0:0:0:ffff:192.1.56.10/96', { verbose: false })")){(r={...n,...r}).verbose&&console.info(i+`Validating ${t}...`);let e=t.split(/::?/),o=e[e.length-1];s=!(t.includes("::")&&2<t.split("::").length||/:{3,}/.test(t)||e.length<2||8<e.length||e.some(e=>!(/^[\da-f]{1,4}$/i.test(e)||e==o&&ipv4.validate(o.replace(/\/(?:12[0-8]|[1-9]?\d)$/,""),{verbose:!1}))));return r.verbose&&console.info(i+`IP is ${s?"":"in"}valid IPv6 address!`),s}}},mac={generate:function(o={}){var e="mac.generate() » ",t={verbose:!0,qty:1};if(validateOptions(o,t,"https://docs.generate-ip.org/#macgenerateoptions","mac.generate({ verbose: false, qty: 2 })")){(o={...t,...o}).verbose&&console.info(e+`Generating MAC address${1<o.qty?"es":""}...`);var r=[];if(1<o.qty)for(let e=0;e<o.qty;e++)r.push(this.generate({...o,qty:1,verbose:!1}));else{var[t,s]=Array.from({length:2},()=>{var o=[];for(let e=0;e<3;e++)o.push(randomHex(2));return o.join(":")});r.push(t+":"+s)}t=1<o.qty?r:r[0];return o.verbose&&(console.info(e+`MAC address${1<o.qty?"es":""} generated!`),console.info(e+(1==o.qty?t:t.join(", ")))),t}},validate:function(e,o={}){var t="https://docs.generate-ip.org/#macvalidateaddress-options",r={verbose:!0},s="mac.validate() » ";if("string"!=typeof e)console.error(s+"ERROR: 1st arg <address> must be a string."),console.info(s+"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(s+`Validating ${e}...`),t=/^(?:[\da-f]{2}[:-]){5}[\da-f]{2}$/i.test(e),o.verbose&&console.info(s+`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){let s=JSON.stringify(o,void 0,2).replace(/"([^"]+)":/g,"$1:").replace(/"/g,"'").replace(/\n\s*/g," "),n=Object.keys(o).join(", "),i=Object.keys(o).filter(e=>"boolean"==typeof o[e]),a=Object.keys(o).filter(e=>Number.isInteger(o[e])),l=`${validateOptions.caller?.name||"validateOptions"}() » `;var d,p=r.split(",").findIndex(e=>e.trim().startsWith("{"))+1;function v(){console.info(l+`Valid options: [ ${n} ]`),console.info(l+"If omitted, default settings are: "+s)}function f(){console.info(l+"For more help, please visit "+t)}if(p+=["st","nd","rd"][p-1]||"th","object"!=typeof e)return console.error(l+`ERROR: ${"0th"==p?"[O":p+" arg [o"}ptions] can only be an object of key/values.`),console.info(l+"Example valid call: "+r),v(),f(),!1;for(d in e){if(!Object.prototype.hasOwnProperty.call(o,d))return console.error(l+`ERROR: \`${d}\` is an invalid option.`),v(),f(),!1;if(i.includes(d)&&"boolean"!=typeof e[d])return console.error(l+`ERROR: [${d}] option can only be \`true\` or \`false\`.`),f(),!1;if(a.includes(d)&&(e[d]=parseInt(e[d],10),isNaN(e[d])||e[d]<1))return console.error(l+`ERROR: [${d}] option can only be an integer > 0.`),f(),!1}return!0}let 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(let o in gipAliases)gipAliases[o].forEach(e=>{try{module.exports[e]=module.exports[o]}catch(e){}try{window[e]=window[o]}catch(e){}});
package/docs/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ <a id="top"></a>
2
+
1
3
  <div align="center">
2
4
 
3
5
  <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>
@@ -7,17 +9,17 @@
7
9
  <br>
8
10
 
9
11
  <a href="#%EF%B8%8F-mit-license">
10
- <img height=31 src="https://img.shields.io/badge/License-MIT-fc4f2d.svg?logo=internetarchive&logoColor=white&labelColor=464646&style=for-the-badge"></a>
11
- <a href="https://github.com/adamlui/js-utils/releases/tag/generate-ip-2.4.7">
12
- <img height=31 src="https://img.shields.io/badge/Latest_Build-2.4.7-44cc11.svg?logo=icinga&logoColor=white&labelColor=464646&style=for-the-badge"></a>
12
+ <img height=31 src="https://img.shields.io/badge/License-MIT-orange.svg?logo=internetarchive&logoColor=white&labelColor=464646&style=for-the-badge"></a>
13
+ <a href="https://github.com/adamlui/js-utils/releases/tag/generate-ip-2.4.8">
14
+ <img height=31 src="https://img.shields.io/badge/Latest_Build-2.4.8-44cc11.svg?logo=icinga&logoColor=white&labelColor=464646&style=for-the-badge"></a>
13
15
  <a href="https://www.npmjs.com/package/generate-ip?activeTab=code">
14
16
  <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>
15
- <a href="https://github.com/adamlui/js-utils/blob/generate-ip-2.4.7/generate-ip/dist/generate-ip.min.js">
16
- <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.7&label=Minified%20Size&logo=databricks&logoColor=white&labelColor=464646&color=ff69b4&style=for-the-badge"></a>
17
+ <a href="https://github.com/adamlui/js-utils/blob/generate-ip-2.4.8/generate-ip/dist/generate-ip.min.js">
18
+ <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.8&label=Minified%20Size&logo=databricks&logoColor=white&labelColor=464646&color=ff69b4&style=for-the-badge"></a>
17
19
  <a href="https://sonarcloud.io/component_measures?metric=new_vulnerabilities&id=adamlui_js-utils:generate-ip/src/generate-ip.js">
18
20
  <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>
19
21
  <a href="https://github.com/toolleeo/cli-apps#networking">
20
- <img height=31 src="https://img.shields.io/badge/Mentioned_in-Awesome-c4a2bd?logo=awesomelists&logoColor=white&labelColor=464646&style=for-the-badge"></a>
22
+ <img height=31 src="https://img.shields.io/badge/Mentioned_in-Awesome-ff69b4?logo=awesomelists&logoColor=white&labelColor=464646&style=for-the-badge"></a>
21
23
  <a href="https://www.jsdelivr.com/package/npm/generate-ip?tab=stats">
22
24
  <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>
23
25
 
@@ -75,7 +77,7 @@ import { ipv4, ipv6, mac } from 'generate-ip';
75
77
  #### CommonJS:
76
78
 
77
79
  ```js
78
- const { ipv4, ipv6, mac } = require('generate-ip');
80
+ const { ipv4, ipv6, mac } = require('generate-ip')
79
81
  ```
80
82
 
81
83
  ###### _*Node.js version 14 or higher required_
@@ -85,23 +87,23 @@ const { ipv4, ipv6, mac } = require('generate-ip');
85
87
  #### <> HTML script tag:
86
88
 
87
89
  ```html
88
- <script src="https://cdn.jsdelivr.net/npm/generate-ip@2.4.7/dist/generate-ip.min.js"></script>
90
+ <script src="https://cdn.jsdelivr.net/npm/generate-ip@2.4.8/dist/generate-ip.min.js"></script>
89
91
  ```
90
92
 
91
93
  #### ES6:
92
94
 
93
95
  ```js
94
96
  (async () => {
95
- await import('https://cdn.jsdelivr.net/npm/generate-ip@2.4.7/dist/generate-ip.min.js');
97
+ await import('https://cdn.jsdelivr.net/npm/generate-ip@2.4.8/dist/generate-ip.min.js')
96
98
  // Your code here...
97
- })();
99
+ })()
98
100
  ```
99
101
 
100
102
  ### <img height=17 src="https://assets.js-utils.org/images/icons/platforms/tampermonkey/icon28.png?v=0d36e26"><img height=17.5 src="https://assets.js-utils.org/images/icons/platforms/violentmonkey/icon25.png?v=0d36e26"> Greasemonkey
101
103
 
102
104
  ```js
103
105
  ...
104
- // @require https://cdn.jsdelivr.net/npm/generate-ip@2.4.7/dist/generate-ip.min.js
106
+ // @require https://cdn.jsdelivr.net/npm/generate-ip@2.4.8/dist/generate-ip.min.js
105
107
  // ==/UserScript==
106
108
 
107
109
  // Your code here...
@@ -109,7 +111,7 @@ const { ipv4, ipv6, mac } = require('generate-ip');
109
111
 
110
112
  <br>
111
113
 
112
- 📝 **Note:** To always import the latest version (not recommended in production!) remove the `@2.4.7` version tag from the jsDelivr URL: `https://cdn.jsdelivr.net/npm/generate-ip/dist/generate-ip.min.js`
114
+ 📝 **Note:** To always import the latest version (not recommended in production!) remove the `@2.4.8` version tag from the jsDelivr URL: `https://cdn.jsdelivr.net/npm/generate-ip/dist/generate-ip.min.js`
113
115
 
114
116
  <br>
115
117
 
@@ -128,15 +130,15 @@ const { ipv4, ipv6, mac } = require('generate-ip');
128
130
  Generates **one** IPv4 address if `qty` option is not given, returning a string:
129
131
 
130
132
  ```js
131
- const ip = ipv4.generate();
132
- console.log(ip); // sample output: '36.42.224.208'
133
+ const ip = ipv4.generate()
134
+ console.log(ip) // sample output: '36.42.224.208'
133
135
  ```
134
136
 
135
137
  ...or **multiple** IPv4 addresses if `qty` option is given, returning an array of strings:
136
138
 
137
139
  ```js
138
- const ips = ipv4.generate({ qty: 3 });
139
- console.log(ips);
140
+ const ips = ipv4.generate({ qty: 3 })
141
+ console.log(ips)
140
142
 
141
143
  /* sample output:
142
144
 
@@ -161,8 +163,8 @@ Name | Type | Description | Default Value
161
163
  Checks if given `address` is a valid IPv4 address:
162
164
 
163
165
  ```js
164
- const ipIsValid = ipv4.validate('36.42.224.208');
165
- console.log(ipIsValid);
166
+ const ipIsValid = ipv4.validate('36.42.224.208')
167
+ console.log(ipIsValid)
166
168
 
167
169
  /* outputs:
168
170
 
@@ -191,15 +193,15 @@ Name | Type | Description | Default Value
191
193
  Generates **one** IPv6 address if `qty` option is not given, returning a string:
192
194
 
193
195
  ```js
194
- const ip = ipv6.generate();
195
- console.log(ip); // sample output: '1379:6748:810c:5e16:b6c9:ae2:939f:8f2a'
196
+ const ip = ipv6.generate()
197
+ console.log(ip) // sample output: '1379:6748:810c:5e16:b6c9:ae2:939f:8f2a'
196
198
  ```
197
199
 
198
200
  ...or **multiple** IPv6 addresses if `qty` option is given, returning an array of strings:
199
201
 
200
202
  ```js
201
- const ips = ipv4.generate({ qty: 5 });
202
- console.log(ips);
203
+ const ips = ipv4.generate({ qty: 5 })
204
+ console.log(ips)
203
205
 
204
206
  /* sample output:
205
207
 
@@ -233,9 +235,9 @@ Formats an IPv6 address according to `options` passed, returning a string:
233
235
 
234
236
  ```js
235
237
  const ipv6address = '0d::ffff:192.1.56.10/96',
236
- formattedAddress = ipv6.format(ipv6address, { leadingZeros: true, doubleColon: false });
238
+ formattedAddress = ipv6.format(ipv6address, { leadingZeros: true, doubleColon: false })
237
239
 
238
- console.log(formattedAddress);
240
+ console.log(formattedAddress)
239
241
 
240
242
  /* outputs:
241
243
 
@@ -262,8 +264,8 @@ Name | Type | Description | Default Value
262
264
  Checks if given `address` is a valid IPv6 address:
263
265
 
264
266
  ```js
265
- const ipIsValid = ipv6.validate('0:0:0:0:0:ffff:192.1.56.10/96');
266
- console.log(ipIsValid);
267
+ const ipIsValid = ipv6.validate('0:0:0:0:0:ffff:192.1.56.10/96')
268
+ console.log(ipIsValid)
267
269
 
268
270
  /* outputs:
269
271
 
@@ -292,15 +294,15 @@ Name | Type | Description | Default Value
292
294
  Generates **one** MAC address if `qty` option is not given, returning a string:
293
295
 
294
296
  ```js
295
- const macAddress = mac.generate();
296
- console.log(macAddress); // sample output: '1d:3a:af:21:b1:8c'
297
+ const macAddress = mac.generate()
298
+ console.log(macAddress) // sample output: '1d:3a:af:21:b1:8c'
297
299
  ```
298
300
 
299
301
  ...or **multiple** MAC addresses if `qty` option is given, returning an array of strings:
300
302
 
301
303
  ```js
302
- const macAddresses = mac.generate({ qty: 2 });
303
- console.log(macAddresses);
304
+ const macAddresses = mac.generate({ qty: 2 })
305
+ console.log(macAddresses)
304
306
 
305
307
  /* sample output:
306
308
 
@@ -325,8 +327,8 @@ Name | Type | Description | Default Value
325
327
  Checks if given `address` is a valid MAC address:
326
328
 
327
329
  ```js
328
- const addressIsValid = mac.validate('1d:3a:af:21:b1:8c');
329
- console.log(addressIsValid);
330
+ const addressIsValid = mac.validate('1d:3a:af:21:b1:8c')
331
+ console.log(addressIsValid)
330
332
 
331
333
  /* outputs:
332
334
 
@@ -422,4 +424,4 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
422
424
 
423
425
  <picture><source media="(prefers-color-scheme: dark)" srcset="https://assets.js-utils.org/images/icons/home/white/icon32x27.png?v=0d36e26"><img height=13 src="https://assets.js-utils.org/images/icons/home/dark-gray/icon32x27.png?v=0d36e26"></picture> <a href="https://js-utils.org">**More JavaScript utilities**</a> /
424
426
  <a href="https://github.com/adamlui/js-utils/discussions">Discuss</a> /
425
- <a href="#-generate-ip">Back to top ↑</a>
427
+ <a href="#top">Back to top ↑</a>
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "generate-ip",
3
- "version": "2.4.7",
3
+ "version": "2.4.8",
4
4
  "description": "Randomly generate, format, and validate IPv4 + IPv6 + MAC addresses.",
5
5
  "author": {
6
6
  "name": "Adam Lui",
7
7
  "email": "adam@kudoai.com",
8
8
  "url": "https://github.com/adamlui"
9
9
  },
10
- "homepage": "https://generate-ip.org",
10
+ "homepage": "https://github.com/adamlui/js-utils",
11
11
  "license": "MIT",
12
12
  "funding": [
13
13
  {
@@ -29,7 +29,8 @@
29
29
  ],
30
30
  "main": "dist/generate-ip.min.js",
31
31
  "files": [
32
- "docs"
32
+ "dist/",
33
+ "docs/"
33
34
  ],
34
35
  "directories": {
35
36
  "bin": "./bin",
@@ -59,9 +60,12 @@
59
60
  "mac"
60
61
  ],
61
62
  "bugs": {
62
- "url": "https://support.generate-ip.org"
63
+ "url": "https://github.com/adamlui/js-utils/issues"
64
+ },
65
+ "dependencies": {
66
+ "node-clipboardy": "^1.0.3"
63
67
  },
64
68
  "devDependencies": {
65
- "@adamlui/minify.js": "^2.1.0"
69
+ "@adamlui/minify.js": "^2.1.3"
66
70
  }
67
71
  }