Skip to content

Instantly share code, notes, and snippets.

@ctavan
Last active December 2, 2021 22:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ctavan/519360f8777905838a9398b534e530ad to your computer and use it in GitHub Desktop.
Save ctavan/519360f8777905838a9398b534e530ad to your computer and use it in GitHub Desktop.
uuid browser build without IE support
diff -ur dist-node-10/esm-browser/md5.js dist/esm-browser/md5.js
--- dist-node-10/esm-browser/md5.js 2021-12-02 13:15:02.000000000 +0100
+++ dist/esm-browser/md5.js 2021-12-02 22:48:16.000000000 +0100
@@ -20,11 +20,11 @@
*/
function md5(bytes) {
if (typeof bytes === 'string') {
- var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape
+ const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape
bytes = new Uint8Array(msg.length);
- for (var i = 0; i < msg.length; ++i) {
+ for (let i = 0; i < msg.length; ++i) {
bytes[i] = msg.charCodeAt(i);
}
}
@@ -37,13 +37,13 @@
function md5ToHexEncodedArray(input) {
- var output = [];
- var length32 = input.length * 32;
- var hexTab = '0123456789abcdef';
-
- for (var i = 0; i < length32; i += 8) {
- var x = input[i >> 5] >>> i % 32 & 0xff;
- var hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);
+ const output = [];
+ const length32 = input.length * 32;
+ const hexTab = '0123456789abcdef';
+
+ for (let i = 0; i < length32; i += 8) {
+ const x = input[i >> 5] >>> i % 32 & 0xff;
+ const hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);
output.push(hex);
}
@@ -66,16 +66,16 @@
/* append padding */
x[len >> 5] |= 0x80 << len % 32;
x[getOutputLength(len) - 1] = len;
- var a = 1732584193;
- var b = -271733879;
- var c = -1732584194;
- var d = 271733878;
-
- for (var i = 0; i < x.length; i += 16) {
- var olda = a;
- var oldb = b;
- var oldc = c;
- var oldd = d;
+ let a = 1732584193;
+ let b = -271733879;
+ let c = -1732584194;
+ let d = 271733878;
+
+ for (let i = 0; i < x.length; i += 16) {
+ const olda = a;
+ const oldb = b;
+ const oldc = c;
+ const oldd = d;
a = md5ff(a, b, c, d, x[i], 7, -680876936);
d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);
c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);
@@ -159,10 +159,10 @@
return [];
}
- var length8 = input.length * 8;
- var output = new Uint32Array(getOutputLength(length8));
+ const length8 = input.length * 8;
+ const output = new Uint32Array(getOutputLength(length8));
- for (var i = 0; i < length8; i += 8) {
+ for (let i = 0; i < length8; i += 8) {
output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;
}
@@ -175,8 +175,8 @@
function safeAdd(x, y) {
- var lsw = (x & 0xffff) + (y & 0xffff);
- var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
+ const lsw = (x & 0xffff) + (y & 0xffff);
+ const msw = (x >> 16) + (y >> 16) + (lsw >> 16);
return msw << 16 | lsw & 0xffff;
}
/*
diff -ur dist-node-10/esm-browser/native.js dist/esm-browser/native.js
--- dist-node-10/esm-browser/native.js 2021-12-02 13:15:02.000000000 +0100
+++ dist/esm-browser/native.js 2021-12-02 22:48:16.000000000 +0100
@@ -1,4 +1,4 @@
-var randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);
+const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);
export default {
- randomUUID: randomUUID
+ randomUUID
};
\ No newline at end of file
diff -ur dist-node-10/esm-browser/parse.js dist/esm-browser/parse.js
--- dist-node-10/esm-browser/parse.js 2021-12-02 13:15:02.000000000 +0100
+++ dist/esm-browser/parse.js 2021-12-02 22:48:16.000000000 +0100
@@ -5,8 +5,8 @@
throw TypeError('Invalid UUID');
}
- var v;
- var arr = new Uint8Array(16); // Parse ########-....-....-....-............
+ let v;
+ const arr = new Uint8Array(16); // Parse ########-....-....-....-............
arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;
arr[1] = v >>> 16 & 0xff;
diff -ur dist-node-10/esm-browser/rng.js dist/esm-browser/rng.js
--- dist-node-10/esm-browser/rng.js 2021-12-02 13:15:02.000000000 +0100
+++ dist/esm-browser/rng.js 2021-12-02 22:48:16.000000000 +0100
@@ -1,8 +1,8 @@
// Unique ID creation requires a high quality random # generator. In the browser we therefore
// require the crypto API and do not support built-in fallback to lower quality random number
// generators (like Math.random()).
-var getRandomValues;
-var rnds8 = new Uint8Array(16);
+let getRandomValues;
+const rnds8 = new Uint8Array(16);
export default function rng() {
// lazy load so that environments that need to polyfill have a chance to do so
if (!getRandomValues) {
diff -ur dist-node-10/esm-browser/sha1.js dist/esm-browser/sha1.js
--- dist-node-10/esm-browser/sha1.js 2021-12-02 13:15:02.000000000 +0100
+++ dist/esm-browser/sha1.js 2021-12-02 22:48:16.000000000 +0100
@@ -21,15 +21,15 @@
}
function sha1(bytes) {
- var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];
- var H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];
+ const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];
+ const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];
if (typeof bytes === 'string') {
- var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape
+ const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape
bytes = [];
- for (var i = 0; i < msg.length; ++i) {
+ for (let i = 0; i < msg.length; ++i) {
bytes.push(msg.charCodeAt(i));
}
} else if (!Array.isArray(bytes)) {
@@ -38,44 +38,44 @@
}
bytes.push(0x80);
- var l = bytes.length / 4 + 2;
- var N = Math.ceil(l / 16);
- var M = new Array(N);
+ const l = bytes.length / 4 + 2;
+ const N = Math.ceil(l / 16);
+ const M = new Array(N);
- for (var _i = 0; _i < N; ++_i) {
- var arr = new Uint32Array(16);
+ for (let i = 0; i < N; ++i) {
+ const arr = new Uint32Array(16);
- for (var j = 0; j < 16; ++j) {
- arr[j] = bytes[_i * 64 + j * 4] << 24 | bytes[_i * 64 + j * 4 + 1] << 16 | bytes[_i * 64 + j * 4 + 2] << 8 | bytes[_i * 64 + j * 4 + 3];
+ for (let j = 0; j < 16; ++j) {
+ arr[j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3];
}
- M[_i] = arr;
+ M[i] = arr;
}
M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);
M[N - 1][14] = Math.floor(M[N - 1][14]);
M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;
- for (var _i2 = 0; _i2 < N; ++_i2) {
- var W = new Uint32Array(80);
+ for (let i = 0; i < N; ++i) {
+ const W = new Uint32Array(80);
- for (var t = 0; t < 16; ++t) {
- W[t] = M[_i2][t];
+ for (let t = 0; t < 16; ++t) {
+ W[t] = M[i][t];
}
- for (var _t = 16; _t < 80; ++_t) {
- W[_t] = ROTL(W[_t - 3] ^ W[_t - 8] ^ W[_t - 14] ^ W[_t - 16], 1);
+ for (let t = 16; t < 80; ++t) {
+ W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);
}
- var a = H[0];
- var b = H[1];
- var c = H[2];
- var d = H[3];
- var e = H[4];
-
- for (var _t2 = 0; _t2 < 80; ++_t2) {
- var s = Math.floor(_t2 / 20);
- var T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[_t2] >>> 0;
+ let a = H[0];
+ let b = H[1];
+ let c = H[2];
+ let d = H[3];
+ let e = H[4];
+
+ for (let t = 0; t < 80; ++t) {
+ const s = Math.floor(t / 20);
+ const T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;
e = d;
d = c;
c = ROTL(b, 30) >>> 0;
diff -ur dist-node-10/esm-browser/stringify.js dist/esm-browser/stringify.js
--- dist-node-10/esm-browser/stringify.js 2021-12-02 13:15:02.000000000 +0100
+++ dist/esm-browser/stringify.js 2021-12-02 22:48:16.000000000 +0100
@@ -4,17 +4,17 @@
* XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
*/
-var byteToHex = [];
+const byteToHex = [];
-for (var i = 0; i < 256; ++i) {
+for (let i = 0; i < 256; ++i) {
byteToHex.push((i + 0x100).toString(16).substr(1));
}
function stringify(arr) {
- var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
+ let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
// Note: Be careful editing this code! It's been tuned for performance
// and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434
- var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one
+ const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one
// of the following:
// - One or more input array values don't map to a hex octet (leading to
// "undefined" in the uuid)
diff -ur dist-node-10/esm-browser/v1.js dist/esm-browser/v1.js
--- dist-node-10/esm-browser/v1.js 2021-12-02 13:15:02.000000000 +0100
+++ dist/esm-browser/v1.js 2021-12-02 22:48:16.000000000 +0100
@@ -4,25 +4,25 @@
// Inspired by https://github.com/LiosK/UUID.js
// and http://docs.python.org/library/uuid.html
-var _nodeId;
+let _nodeId;
-var _clockseq; // Previous uuid creation time
+let _clockseq; // Previous uuid creation time
-var _lastMSecs = 0;
-var _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details
+let _lastMSecs = 0;
+let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details
function v1(options, buf, offset) {
- var i = buf && offset || 0;
- var b = buf || new Array(16);
+ let i = buf && offset || 0;
+ const b = buf || new Array(16);
options = options || {};
- var node = options.node || _nodeId;
- var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not
+ let node = options.node || _nodeId;
+ let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not
// specified. We do this lazily to minimize issues related to insufficient
// system entropy. See #189
if (node == null || clockseq == null) {
- var seedBytes = options.random || (options.rng || rng)();
+ const seedBytes = options.random || (options.rng || rng)();
if (node == null) {
// Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)
@@ -39,12 +39,12 @@
// (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.
- var msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock
+ let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock
// cycle to simulate higher resolution clock
- var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)
+ let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)
- var dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression
+ const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression
if (dt < 0 && options.clockseq === undefined) {
clockseq = clockseq + 1 & 0x3fff;
@@ -67,13 +67,13 @@
msecs += 12219292800000; // `time_low`
- var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;
+ const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;
b[i++] = tl >>> 24 & 0xff;
b[i++] = tl >>> 16 & 0xff;
b[i++] = tl >>> 8 & 0xff;
b[i++] = tl & 0xff; // `time_mid`
- var tmh = msecs / 0x100000000 * 10000 & 0xfffffff;
+ const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;
b[i++] = tmh >>> 8 & 0xff;
b[i++] = tmh & 0xff; // `time_high_and_version`
@@ -85,7 +85,7 @@
b[i++] = clockseq & 0xff; // `node`
- for (var n = 0; n < 6; ++n) {
+ for (let n = 0; n < 6; ++n) {
b[i + n] = node[n];
}
diff -ur dist-node-10/esm-browser/v3.js dist/esm-browser/v3.js
--- dist-node-10/esm-browser/v3.js 2021-12-02 13:15:02.000000000 +0100
+++ dist/esm-browser/v3.js 2021-12-02 22:48:16.000000000 +0100
@@ -1,4 +1,4 @@
import v35 from './v35.js';
import md5 from './md5.js';
-var v3 = v35('v3', 0x30, md5);
+const v3 = v35('v3', 0x30, md5);
export default v3;
\ No newline at end of file
diff -ur dist-node-10/esm-browser/v35.js dist/esm-browser/v35.js
--- dist-node-10/esm-browser/v35.js 2021-12-02 13:15:02.000000000 +0100
+++ dist/esm-browser/v35.js 2021-12-02 22:48:16.000000000 +0100
@@ -4,17 +4,17 @@
function stringToBytes(str) {
str = unescape(encodeURIComponent(str)); // UTF8 escape
- var bytes = [];
+ const bytes = [];
- for (var i = 0; i < str.length; ++i) {
+ for (let i = 0; i < str.length; ++i) {
bytes.push(str.charCodeAt(i));
}
return bytes;
}
-export var DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';
-export var URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';
+export const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';
+export const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';
export default function v35(name, version, hashfunc) {
function generateUUID(value, namespace, buf, offset) {
if (typeof value === 'string') {
@@ -32,7 +32,7 @@
// hashfunc([...namespace, ... value])`
- var bytes = new Uint8Array(16 + value.length);
+ let bytes = new Uint8Array(16 + value.length);
bytes.set(namespace);
bytes.set(value, namespace.length);
bytes = hashfunc(bytes);
@@ -42,7 +42,7 @@
if (buf) {
offset = offset || 0;
- for (var i = 0; i < 16; ++i) {
+ for (let i = 0; i < 16; ++i) {
buf[offset + i] = bytes[i];
}
diff -ur dist-node-10/esm-browser/v4.js dist/esm-browser/v4.js
--- dist-node-10/esm-browser/v4.js 2021-12-02 13:15:02.000000000 +0100
+++ dist/esm-browser/v4.js 2021-12-02 22:48:16.000000000 +0100
@@ -1,14 +1,14 @@
-import _native from './native.js';
+import native from './native.js';
import rng from './rng.js';
import stringify from './stringify.js';
function v4(options, buf, offset) {
- if (_native.randomUUID && !buf && !options) {
- return _native.randomUUID();
+ if (native.randomUUID && !buf && !options) {
+ return native.randomUUID();
}
options = options || {};
- var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
+ const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
rnds[6] = rnds[6] & 0x0f | 0x40;
rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided
@@ -16,7 +16,7 @@
if (buf) {
offset = offset || 0;
- for (var i = 0; i < 16; ++i) {
+ for (let i = 0; i < 16; ++i) {
buf[offset + i] = rnds[i];
}
diff -ur dist-node-10/esm-browser/v5.js dist/esm-browser/v5.js
--- dist-node-10/esm-browser/v5.js 2021-12-02 13:15:02.000000000 +0100
+++ dist/esm-browser/v5.js 2021-12-02 22:48:16.000000000 +0100
@@ -1,4 +1,4 @@
import v35 from './v35.js';
import sha1 from './sha1.js';
-var v5 = v35('v5', 0x50, sha1);
+const v5 = v35('v5', 0x50, sha1);
export default v5;
\ No newline at end of file
diff -ur dist-no-bugfix/esm-browser/stringify.js dist/esm-browser/stringify.js
--- dist-no-bugfix/esm-browser/stringify.js 2021-12-02 22:48:16.000000000 +0100
+++ dist/esm-browser/stringify.js 2021-12-02 23:05:52.000000000 +0100
@@ -10,8 +10,7 @@
byteToHex.push((i + 0x100).toString(16).substr(1));
}
-function stringify(arr) {
- let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
+function stringify(arr, offset = 0) {
// Note: Be careful editing this code! It's been tuned for performance
// and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434
const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment