Comparing version 2.1.3 to 2.1.4
@@ -32,3 +32,3 @@ /** | ||
module.exports = function (random, alphabet, size) { | ||
var mask = (2 << Math.log(alphabet.length - 1) / Math.LN2) - 1 | ||
var mask = (2 << 31 - Math.clz32((alphabet.length - 1) | 1)) - 1 | ||
var step = Math.ceil(1.6 * mask * size / alphabet.length) | ||
@@ -39,3 +39,3 @@ size = +size | ||
return random(step).then(function (bytes) { | ||
for (var i = 0; i < step; i++) { | ||
for (var i = step; i--;) { | ||
var byte = bytes[i] & mask | ||
@@ -42,0 +42,0 @@ if (alphabet[byte]) { |
@@ -24,4 +24,2 @@ var random = require('./random') | ||
*/ | ||
module.exports = function (alphabet, size) { | ||
return format(random, alphabet, size) | ||
} | ||
module.exports = format.bind(null, random) |
@@ -13,3 +13,3 @@ var crypto = self.crypto || self.msCrypto | ||
var bytes = crypto.getRandomValues(new Uint8Array(size)) | ||
while (0 < size--) { | ||
while (size--) { | ||
id += url[bytes[size] & 63] | ||
@@ -16,0 +16,0 @@ } |
@@ -27,3 +27,3 @@ var random = require('./random') | ||
var id = '' | ||
while (0 < size--) { | ||
while (size--) { | ||
id += url[bytes[size] & 63] | ||
@@ -30,0 +30,0 @@ } |
# Change Log | ||
This project adheres to [Semantic Versioning](http://semver.org/). | ||
## 2.1.4 | ||
* Reduce `generate` size (by Vsevolod Rodionov). | ||
* Reduce `format` and `format` size (by Victor). | ||
* Reduce `async`, `non-secure` and `non-secure/generate` size. | ||
* Speed up `format` and `async/format` (by Max Graey). | ||
* Improve development process on Windows (by Stanislav Lashmanov). | ||
## 2.1.3 | ||
@@ -5,0 +12,0 @@ * Improve performance (by Stephen Richardson). |
@@ -30,13 +30,14 @@ /** | ||
module.exports = function (random, alphabet, size) { | ||
var mask = (2 << Math.log(alphabet.length - 1) / Math.LN2) - 1 | ||
var mask = (2 << 31 - Math.clz32((alphabet.length - 1) | 1)) - 1 | ||
var step = Math.ceil(1.6 * mask * size / alphabet.length) | ||
var id = '' | ||
size = +size | ||
var id = '' | ||
while (true) { | ||
var bytes = random(step) | ||
for (var i = 0; i < step; i++) { | ||
for (var i = step; i--;) { | ||
var byte = bytes[i] & mask | ||
if (alphabet[byte]) { | ||
id += alphabet[byte] | ||
var alpha = alphabet[byte] | ||
if (alpha) { | ||
id += alpha | ||
if (id.length === size) return id | ||
@@ -43,0 +44,0 @@ } |
@@ -22,4 +22,2 @@ var random = require('./random') | ||
*/ | ||
module.exports = function (alphabet, size) { | ||
return format(random, alphabet, size) | ||
} | ||
module.exports = format.bind(null, random) |
@@ -30,5 +30,5 @@ if (process.env.NODE_ENV !== 'production') { | ||
while (size--) { | ||
id = id + url[bytes[size] & 63] | ||
id += url[bytes[size] & 63] | ||
} | ||
return id | ||
} |
@@ -25,3 +25,3 @@ var random = require('./random') | ||
var id = '' | ||
while (0 < size--) { | ||
while (size--) { | ||
id += url[bytes[size] & 63] | ||
@@ -28,0 +28,0 @@ } |
@@ -20,3 +20,3 @@ /** | ||
var id = '' | ||
while (0 < size--) { | ||
while (size--) { | ||
id += alphabet[Math.random() * alphabet.length | 0] | ||
@@ -23,0 +23,0 @@ } |
@@ -21,3 +21,3 @@ var url = 'bjectSymhasOwnProp-0123456789ABCDEFGHIJKLMNQRTUVWXYZ_dfgiklquvxz' | ||
var id = '' | ||
while (0 < size--) { | ||
while (size--) { | ||
id += url[Math.random() * 64 | 0] | ||
@@ -24,0 +24,0 @@ } |
{ | ||
"name": "nanoid", | ||
"version": "2.1.3", | ||
"version": "2.1.4", | ||
"description": "A tiny (139 bytes), secure URL-friendly unique string ID generator", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
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
25233
375