addr-to-ip-port
Advanced tools
Comparing version 1.5.3 to 1.5.4
@@ -0,1 +1,17 @@ | ||
## [1.5.4](https://github.com/webtorrent/addr-to-ip-port/compare/v1.5.3...v1.5.4) (2021-07-30) | ||
### Performance Improvements | ||
* use Map ([#8](https://github.com/webtorrent/addr-to-ip-port/issues/8)) ([99a86a4](https://github.com/webtorrent/addr-to-ip-port/commit/99a86a4d7c75c04688b89d2f57936447779cb4f2)) | ||
### BREAKING CHANGES | ||
* reset function removed | ||
* perf: use Map | ||
* use clear | ||
## [1.5.3](https://github.com/webtorrent/addr-to-ip-port/compare/v1.5.2...v1.5.3) (2021-07-23) | ||
@@ -2,0 +18,0 @@ |
20
index.js
@@ -1,23 +0,15 @@ | ||
const ADDR_RE = /^\[?([^\]]+)\]?:(\d+)$/ // ipv4/ipv6/hostname + port | ||
const ADDR_RE = /^\[?([^\]]+)]?:(\d+)$/ // ipv4/ipv6/hostname + port | ||
let cache = {} | ||
let cache = new Map() | ||
// reset cache when it gets to 100,000 elements (~ 600KB of ipv4 addresses) | ||
// so it will not grow to consume all memory in long-running processes | ||
let size = 0 | ||
module.exports = function addrToIPPort (addr) { | ||
if (size === 100000) module.exports.reset() | ||
if (!cache[addr]) { | ||
if (cache.size === 100000) cache.clear() | ||
if (!cache.has(addr)) { | ||
const m = ADDR_RE.exec(addr) | ||
if (!m) throw new Error(`invalid addr: ${addr}`) | ||
cache[addr] = [ m[1], Number(m[2]) ] | ||
size += 1 | ||
cache.set(addr, [ m[1], Number(m[2]) ]) | ||
} | ||
return cache[addr] | ||
return cache.get(addr) | ||
} | ||
module.exports.reset = function reset () { | ||
cache = {} | ||
size = 0 | ||
} |
{ | ||
"name": "addr-to-ip-port", | ||
"description": "Convert an 'address:port' string to an array [address:string, port:number]", | ||
"version": "1.5.3", | ||
"version": "1.5.4", | ||
"author": { | ||
@@ -18,3 +18,3 @@ "name": "WebTorrent, LLC", | ||
"semantic-release": "17.4.4", | ||
"tape": "4.13.3" | ||
"tape": "5.3.0" | ||
}, | ||
@@ -21,0 +21,0 @@ "homepage": "https://github.com/webtorrent/addr-to-ip-port", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
4966
3473
13