diff --git a/.gitignore b/.gitignore
index 67b36b30..a74c6cda 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,3 +4,4 @@ dist/
browserstack.err
local.log
*.tgz
+.envrc
diff --git a/examples/browser-rollup/example-all.js b/examples/browser-rollup/example-all.js
index f67de6c2..4e421731 100644
--- a/examples/browser-rollup/example-all.js
+++ b/examples/browser-rollup/example-all.js
@@ -1,9 +1,20 @@
-import { v1 as uuidv1, v4 as uuidv4, v3 as uuidv3, v5 as uuidv5 } from 'uuid';
+import {
+ parse as uuidParse,
+ stringify as uuidStringify,
+ v1 as uuidv1,
+ v3 as uuidv3,
+ v4 as uuidv4,
+ v5 as uuidv5,
+ validate as uuidValidate,
+ version as uuidVersion,
+} from 'uuid';
import * as uuid from 'uuid';
import testpage from '../utils/testpage';
testpage(function (addTest, done) {
+ addTest('Named exports');
+
addTest('uuidv1()', uuidv1());
addTest('uuidv4()', uuidv4());
@@ -34,7 +45,13 @@ testpage(function (addTest, done) {
// const MY_NAMESPACE = '1b671a64-40d5-491e-99b0-da01ff1f3341';
addTest('uuidv5() MY_NAMESPACE', uuidv5('Hello, World!', MY_NAMESPACE));
- addTest('Same with default export');
+ // Utility functions
+ addTest('uuidParse()', uuidParse(MY_NAMESPACE));
+ addTest('uuidStringify()', uuidStringify(uuidParse(MY_NAMESPACE)));
+ addTest('uuidValidate()', uuidValidate(MY_NAMESPACE));
+ addTest('uuidVersion()', uuidVersion(MY_NAMESPACE));
+
+ addTest('Default export');
addTest('uuid.v1()', uuid.v1());
addTest('uuid.v4()', uuid.v4());
@@ -45,5 +62,10 @@ testpage(function (addTest, done) {
addTest('uuid.v5() URL', uuid.v5('http://example.com/hello', uuid.v5.URL));
addTest('uuid.v5() MY_NAMESPACE', uuid.v5('Hello, World!', MY_NAMESPACE));
+ addTest('uuid.parse()', uuid.parse(MY_NAMESPACE));
+ addTest('uuid.stringify()', uuid.stringify(uuid.parse(MY_NAMESPACE)));
+ addTest('uuid.validate()', uuid.validate(MY_NAMESPACE));
+ addTest('uuid.version()', uuid.version(MY_NAMESPACE));
+
done();
});
diff --git a/examples/browser-webpack/example-all.js b/examples/browser-webpack/example-all.js
index f67de6c2..4e421731 100644
--- a/examples/browser-webpack/example-all.js
+++ b/examples/browser-webpack/example-all.js
@@ -1,9 +1,20 @@
-import { v1 as uuidv1, v4 as uuidv4, v3 as uuidv3, v5 as uuidv5 } from 'uuid';
+import {
+ parse as uuidParse,
+ stringify as uuidStringify,
+ v1 as uuidv1,
+ v3 as uuidv3,
+ v4 as uuidv4,
+ v5 as uuidv5,
+ validate as uuidValidate,
+ version as uuidVersion,
+} from 'uuid';
import * as uuid from 'uuid';
import testpage from '../utils/testpage';
testpage(function (addTest, done) {
+ addTest('Named exports');
+
addTest('uuidv1()', uuidv1());
addTest('uuidv4()', uuidv4());
@@ -34,7 +45,13 @@ testpage(function (addTest, done) {
// const MY_NAMESPACE = '1b671a64-40d5-491e-99b0-da01ff1f3341';
addTest('uuidv5() MY_NAMESPACE', uuidv5('Hello, World!', MY_NAMESPACE));
- addTest('Same with default export');
+ // Utility functions
+ addTest('uuidParse()', uuidParse(MY_NAMESPACE));
+ addTest('uuidStringify()', uuidStringify(uuidParse(MY_NAMESPACE)));
+ addTest('uuidValidate()', uuidValidate(MY_NAMESPACE));
+ addTest('uuidVersion()', uuidVersion(MY_NAMESPACE));
+
+ addTest('Default export');
addTest('uuid.v1()', uuid.v1());
addTest('uuid.v4()', uuid.v4());
@@ -45,5 +62,10 @@ testpage(function (addTest, done) {
addTest('uuid.v5() URL', uuid.v5('http://example.com/hello', uuid.v5.URL));
addTest('uuid.v5() MY_NAMESPACE', uuid.v5('Hello, World!', MY_NAMESPACE));
+ addTest('uuid.parse()', uuid.parse(MY_NAMESPACE));
+ addTest('uuid.stringify()', uuid.stringify(uuid.parse(MY_NAMESPACE)));
+ addTest('uuid.validate()', uuid.validate(MY_NAMESPACE));
+ addTest('uuid.version()', uuid.version(MY_NAMESPACE));
+
done();
});
diff --git a/examples/utils/testpage.js b/examples/utils/testpage.js
index 13cdb6b5..b78ae0d8 100644
--- a/examples/utils/testpage.js
+++ b/examples/utils/testpage.js
@@ -1,23 +1,37 @@
export default function test(callback) {
- const ul = document.createElement('ul');
- document.body.appendChild(ul);
+ const style = document.createElement('style');
+ style.appendChild(
+ document.createTextNode(
+ [
+ 'body {font-family: monospace;}',
+ 'dt, dd {display: inline-block; margin: 0;}',
+ 'dt {min-width: 15em;}',
+ ].join('\n')
+ )
+ );
+ document.body.appendChild(style);
function addTest(title, result) {
- const li = document.createElement('li');
+ // join() result if it's array-like
+ if (result instanceof Uint8Array || Array.isArray(result)) {
+ result = Array.prototype.join.apply(result);
+ }
- const h2 = document.createElement('h2');
- h2.innerHTML = title;
- li.appendChild(h2);
+ let el;
+ if (result === undefined) {
+ el = document.createElement('h2');
+ el.innerHTML = title;
+ } else {
+ el = document.createElement('div');
+ el.className = 'test_result';
+ el.innerHTML = '
' + title + ': ' + result + '';
+ }
- const p = document.createElement('p');
- p.innerHTML = result;
- li.appendChild(p);
-
- ul.appendChild(li);
+ document.body.appendChild(el);
}
function done() {
- const div = document.createElement('div');
+ const div = document.createElement('h2');
div.id = 'done';
document.body.appendChild(div);
}
diff --git a/package-lock.json b/package-lock.json
index 7958fc1b..b2ff5473 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -14145,15 +14145,6 @@
"json-stringify-safe": "^5.0.1"
}
},
- "randombytes": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
- "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
- "dev": true,
- "requires": {
- "safe-buffer": "^5.1.0"
- }
- },
"range-parser": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
diff --git a/prettier.config.js b/prettier.config.js
index a7925694..78ef1dd7 100644
--- a/prettier.config.js
+++ b/prettier.config.js
@@ -3,5 +3,5 @@ module.exports = {
printWidth: 100,
proseWrap: 'never',
singleQuote: true,
- trailingComma: 'all',
+ trailingComma: 'es5',
};
diff --git a/src/rng-browser.js b/src/rng-browser.js
index ff7bc09a..1af1e4c9 100644
--- a/src/rng-browser.js
+++ b/src/rng-browser.js
@@ -17,7 +17,7 @@ const rnds8 = new Uint8Array(16);
export default function rng() {
if (!getRandomValues) {
throw new Error(
- 'crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported',
+ 'crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported'
);
}
diff --git a/src/uuid-bin.js b/src/uuid-bin.js
index f7305adc..a411b193 100644
--- a/src/uuid-bin.js
+++ b/src/uuid-bin.js
@@ -14,7 +14,7 @@ function usage() {
console.log(' uuid v5 ');
console.log(' uuid --help');
console.log(
- '\nNote: may be "URL" or "DNS" to use the corresponding UUIDs defined by RFC4122',
+ '\nNote: may be "URL" or "DNS" to use the corresponding UUIDs defined by RFC4122'
);
}
diff --git a/test/browser/browser.spec.js b/test/browser/browser.spec.js
index 3ee235f4..a0d9d543 100644
--- a/test/browser/browser.spec.js
+++ b/test/browser/browser.spec.js
@@ -1,10 +1,10 @@
/* global browser:false, $:false, $$:false */
const v1Regex = new RegExp(
- /^[0-9A-F]{8}-[0-9A-F]{4}-1[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,
+ /^[0-9A-F]{8}-[0-9A-F]{4}-1[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i
);
const v4Regex = new RegExp(
- /^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,
+ /^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i
);
const v1 = (result) => expect(result).toMatch(v1Regex);
@@ -15,7 +15,12 @@ const v3custom = (result) => expect(result).toBe('f5a52d34-dcd7-30f7-b581-0112fa
const v5dns = (result) => expect(result).toBe('fdda765f-fc57-5604-a269-52a7df8164ec');
const v5url = (result) => expect(result).toBe('3bbcee75-cecc-5b56-8031-b6641c1ed1f1');
const v5custom = (result) => expect(result).toBe('c49c5142-4d9a-5940-a926-612ede0ec632');
-const ignore = (result) => true;
+
+const parse = (result) =>
+ expect(result).toEqual('85,35,141,21,201,38,69,152,180,157,207,78,145,59,161,60');
+const stringify = (result) => expect(result).toBe('55238d15-c926-4598-b49d-cf4e913ba13c');
+const validate = (result) => expect(result).toBe('true');
+const version = (result) => expect(result).toBe('4');
const expectations = {
'uuidv1()': v1,
@@ -26,7 +31,12 @@ const expectations = {
'uuidv5() DNS': v5dns,
'uuidv5() URL': v5url,
'uuidv5() MY_NAMESPACE': v5custom,
- 'Same with default export': ignore,
+
+ 'uuidParse()': parse,
+ 'uuidStringify()': stringify,
+ 'uuidValidate()': validate,
+ 'uuidVersion()': version,
+
'uuid.v1()': v1,
'uuid.v4()': v4,
'uuid.v3() DNS': v3dns,
@@ -35,6 +45,11 @@ const expectations = {
'uuid.v5() DNS': v5dns,
'uuid.v5() URL': v5url,
'uuid.v5() MY_NAMESPACE': v5custom,
+
+ 'uuid.parse()': parse,
+ 'uuid.stringify()': stringify,
+ 'uuid.validate()': validate,
+ 'uuid.version()': version,
};
const expectationTitles = Object.keys(expectations);
@@ -47,7 +62,7 @@ describe('BrowserStack Local Testing', () => {
await browser.waitUntil(async () => $('#done').isExisting(), 30000);
- const elements = await $$('li');
+ const elements = await $$('.test_result');
// Unfortunately the WebDriver API is not thread safe and we cannot use Promise.all() to
// query it in parallel:
@@ -56,10 +71,11 @@ describe('BrowserStack Local Testing', () => {
for (let i = 0; i < elements.length; ++i) {
const element = elements[i];
- const h2 = await element.$('h2');
- const title = await h2.getText();
- const p = await element.$('p');
- const result = await p.getText();
+ const titleEl = await element.$('dt');
+ const title = await titleEl.getText();
+ const resultEl = await element.$('dd');
+ const result = await resultEl.getText();
+
expectations[title](result);
titles.push(title);
}
diff --git a/test/unit/parse.test.js b/test/unit/parse.test.js
index 7137d953..5611563e 100644
--- a/test/unit/parse.test.js
+++ b/test/unit/parse.test.js
@@ -34,7 +34,7 @@ describe('parse', () => {
0x3a,
0x08,
0x4b,
- ]),
+ ])
);
});
@@ -49,14 +49,14 @@ describe('parse', () => {
// Verify upper/lower case neutrality
assert.deepStrictEqual(
parse('0f5abcd1-c194-47f3-905b-2df7263a084b'),
- parse('0f5abcd1-c194-47f3-905b-2df7263a084b'.toUpperCase()),
+ parse('0f5abcd1-c194-47f3-905b-2df7263a084b'.toUpperCase())
);
});
test('Null UUID case', () => {
assert.deepStrictEqual(
parse('00000000-0000-0000-0000-000000000000'),
- Uint8Array.from(new Array(16).fill(0)),
+ Uint8Array.from(new Array(16).fill(0))
);
});
diff --git a/test/unit/v1.test.js b/test/unit/v1.test.js
index c0defc76..6c200265 100644
--- a/test/unit/v1.test.js
+++ b/test/unit/v1.test.js
@@ -53,7 +53,7 @@ describe('v1', () => {
const uidtb = v1({ msecs: TIME - 1 });
assert(
parseInt(uidtb.split('-')[3], 16) - parseInt(uidt.split('-')[3], 16) === 1,
- 'Clock regression by msec increments the clockseq',
+ 'Clock regression by msec increments the clockseq'
);
});
@@ -63,7 +63,7 @@ describe('v1', () => {
const uidtnb = v1({ msecs: TIME, nsecs: 9 });
assert(
parseInt(uidtnb.split('-')[3], 16) - parseInt(uidtn.split('-')[3], 16) === 1,
- 'Clock regression by nsec increments the clockseq',
+ 'Clock regression by nsec increments the clockseq'
);
});
diff --git a/test/unit/v35.test.js b/test/unit/v35.test.js
index b6d9312f..1cf9f9b8 100644
--- a/test/unit/v35.test.js
+++ b/test/unit/v35.test.js
@@ -73,29 +73,29 @@ describe('v35', () => {
assert.strictEqual(
v3('http://example.com/hello', v3.URL),
- 'c6235813-3ba4-3801-ae84-e0a6ebb7d138',
+ 'c6235813-3ba4-3801-ae84-e0a6ebb7d138'
);
assert.strictEqual(
v3('hello', '0f5abcd1-c194-47f3-905b-2df7263a084b'),
- 'a981a0c2-68b1-35dc-bcfc-296e52ab01ec',
+ 'a981a0c2-68b1-35dc-bcfc-296e52ab01ec'
);
});
test('v3 namespace.toUpperCase', () => {
assert.strictEqual(
v3('hello.example.com', v3.DNS.toUpperCase()),
- '9125a8dc-52ee-365b-a5aa-81b0b3681cf6',
+ '9125a8dc-52ee-365b-a5aa-81b0b3681cf6'
);
assert.strictEqual(
v3('http://example.com/hello', v3.URL.toUpperCase()),
- 'c6235813-3ba4-3801-ae84-e0a6ebb7d138',
+ 'c6235813-3ba4-3801-ae84-e0a6ebb7d138'
);
assert.strictEqual(
v3('hello', '0f5abcd1-c194-47f3-905b-2df7263a084b'.toUpperCase()),
- 'a981a0c2-68b1-35dc-bcfc-296e52ab01ec',
+ 'a981a0c2-68b1-35dc-bcfc-296e52ab01ec'
);
});
@@ -168,12 +168,12 @@ describe('v35', () => {
assert.strictEqual(
v5('http://example.com/hello', v5.URL),
- '3bbcee75-cecc-5b56-8031-b6641c1ed1f1',
+ '3bbcee75-cecc-5b56-8031-b6641c1ed1f1'
);
assert.strictEqual(
v5('hello', '0f5abcd1-c194-47f3-905b-2df7263a084b'),
- '90123e1c-7512-523e-bb28-76fab9f2f73d',
+ '90123e1c-7512-523e-bb28-76fab9f2f73d'
);
});
@@ -181,17 +181,17 @@ describe('v35', () => {
// Expect to get the same results as http://tools.adjet.org/uuid-v5
assert.strictEqual(
v5('hello.example.com', v5.DNS.toUpperCase()),
- 'fdda765f-fc57-5604-a269-52a7df8164ec',
+ 'fdda765f-fc57-5604-a269-52a7df8164ec'
);
assert.strictEqual(
v5('http://example.com/hello', v5.URL.toUpperCase()),
- '3bbcee75-cecc-5b56-8031-b6641c1ed1f1',
+ '3bbcee75-cecc-5b56-8031-b6641c1ed1f1'
);
assert.strictEqual(
v5('hello', '0f5abcd1-c194-47f3-905b-2df7263a084b'.toUpperCase()),
- '90123e1c-7512-523e-bb28-76fab9f2f73d',
+ '90123e1c-7512-523e-bb28-76fab9f2f73d'
);
});
diff --git a/test/unit/v4.test.js b/test/unit/v4.test.js
index 6275dd40..bd8247b9 100644
--- a/test/unit/v4.test.js
+++ b/test/unit/v4.test.js
@@ -49,7 +49,7 @@ describe('v4', () => {
{
random: randomBytesFixture,
},
- buffer,
+ buffer
);
assert.deepEqual(buffer, expectedBytes);
assert.strictEqual(buffer, result);
@@ -62,14 +62,14 @@ describe('v4', () => {
random: randomBytesFixture,
},
buffer,
- 0,
+ 0
);
v4(
{
random: randomBytesFixture,
},
buffer,
- 16,
+ 16
);
assert.deepEqual(buffer, expectedBytes.concat(expectedBytes));
});
diff --git a/test/unit/validate.test.js b/test/unit/validate.test.js
index 29dbfe98..3ed9a948 100644
--- a/test/unit/validate.test.js
+++ b/test/unit/validate.test.js
@@ -24,9 +24,9 @@ describe('validate', () => {
assert.strictEqual(
validate(
- '=Y00a-f*v00b*-00c-00d#-p00f\b-00g-00h-####00i^^^-00j*1*2*3&-L00k-\n00l-/00m-----00n-fg000-00p-00r+',
+ '=Y00a-f*v00b*-00c-00d#-p00f\b-00g-00h-####00i^^^-00j*1*2*3&-L00k-\n00l-/00m-----00n-fg000-00p-00r+'
),
- false,
+ false
);
});
});
diff --git a/test/unit/version.test.js b/test/unit/version.test.js
index 9e0b8925..c482b4e7 100644
--- a/test/unit/version.test.js
+++ b/test/unit/version.test.js
@@ -26,7 +26,7 @@ describe('version', () => {
assert.throws(() => {
version(
- '=Y00a-f*v00b*-00c-00d#-p00f\b-00g-00h-####00i^^^-00j*1*2*3&-L00k-\n00l-/00m-----00n-fg000-00p-00r+',
+ '=Y00a-f*v00b*-00c-00d#-p00f\b-00g-00h-####00i^^^-00j*1*2*3&-L00k-\n00l-/00m-----00n-fg000-00p-00r+'
);
});
});