diff --git a/scripts/tdd.js b/scripts/tdd.js index 4d2183440..33d5978c4 100644 --- a/scripts/tdd.js +++ b/scripts/tdd.js @@ -29,7 +29,7 @@ snippetFiles.push(...snippetFilesArchive); // Current Snippet that depend on node_modules -const errSnippets = ['JSONToFile', 'readFileLines', 'UUIDGeneratorNode']; +const errSnippets = ['JSONToFile', 'readFileLines', 'UUIDGeneratorNode', 'hashNode']; console.time('Tester'); snippetFiles .filter(fileName => !errSnippets.includes(fileName)) diff --git a/snippets/hashBrowser.md b/snippets/hashBrowser.md new file mode 100644 index 000000000..d81ee2cc9 --- /dev/null +++ b/snippets/hashBrowser.md @@ -0,0 +1,22 @@ +### hashBrowser + +Creates a hash for a value using the [SHA-256](https://en.wikipedia.org/wiki/SHA-2) algorithm. Returns a promise. + +Use the [SubtleCrypto](https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto) API to create a hash for the given value. + +```js +const hashBrowser = val => + crypto.subtle + .digest('SHA-256', new TextEncoder('utf-8').encode(val)) + .then(h => { + let hexes = [], + view = new DataView(h); + for (let i = 0; i < view.byteLength; i += 4) + hexes.push(('00000000' + view.getUint32(i).toString(16)).slice(-8)); + return hexes.join(''); + }); +``` + +```js +hashBrowser(JSON.stringify({a :'a', b: [1,2,3,4], 'foo': {c: 'bar'}})).then(console.log); // '04aa106279f5977f59f9067fa9712afc4aedc6f5862a8defc34552d8c7206393' +``` diff --git a/snippets/hashNode.md b/snippets/hashNode.md new file mode 100644 index 000000000..59bf34149 --- /dev/null +++ b/snippets/hashNode.md @@ -0,0 +1,15 @@ +### hashNode + +Creates a hash for a value using the [SHA-256](https://en.wikipedia.org/wiki/SHA-2) algorithm. Returns a promise. + +Use `crypto` API to create a hash for the given value. + +```js +const crypto = require('crypto'); +const hashNode = val => + new Promise(resolve => setTimeout(() => resolve(crypto.createHash('sha256').update(val).digest('hex')),0)); +``` + +```js +hashBrowser(JSON.stringify({a :'a', b: [1,2,3,4], 'foo': {c: 'bar'}})).then(console.log); // '04aa106279f5977f59f9067fa9712afc4aedc6f5862a8defc34552d8c7206393' +``` diff --git a/tag_database b/tag_database index c0b80e5cb..f24d2af5c 100644 --- a/tag_database +++ b/tag_database @@ -64,6 +64,8 @@ groupBy:array,object hammingDistance:math hasClass:browser,css hasFlags:node +hashBrowser:browser,utility,advanced +hashNode:node,utility head:array hexToRGB:utility,string,math,advanced hide:browser,css