From 01629c535b422f7f772ca44f50866386da1d476b Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Wed, 17 Jan 2018 14:09:01 +0200 Subject: [PATCH 1/4] Hash methods --- snippets/hashBrowser.md | 22 ++++++++++++++++++++++ snippets/hashNode.md | 14 ++++++++++++++ tag_database | 2 ++ 3 files changed, 38 insertions(+) create mode 100644 snippets/hashBrowser.md create mode 100644 snippets/hashNode.md diff --git a/snippets/hashBrowser.md b/snippets/hashBrowser.md new file mode 100644 index 000000000..262746cef --- /dev/null +++ b/snippets/hashBrowser.md @@ -0,0 +1,22 @@ +### functionName + +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(hash => console.log(hash)); // '04aa106279f5977f59f9067fa9712afc4aedc6f5862a8defc34552d8c7206393' +``` diff --git a/snippets/hashNode.md b/snippets/hashNode.md new file mode 100644 index 000000000..9de0174b5 --- /dev/null +++ b/snippets/hashNode.md @@ -0,0 +1,14 @@ +### functionName + +Creates a hash for a value using the [SHA-256](https://en.wikipedia.org/wiki/SHA-2) algorithm. + +Use `crypto` API to create a hash for the given value. + +```js +const crypto = require('crypto'); +const hashNode = val => crypto.createHash('sha256').update(val).digest('hex'); +``` + +```js +hashNode(JSON.stringify({a :'a', b: [1,2,3,4], 'foo': {c: 'bar'}})); // '04aa106279f5977f59f9067fa9712afc4aedc6f5862a8defc34552d8c7206393' +``` diff --git a/tag_database b/tag_database index 84a3b4dfa..d7a60d942 100644 --- a/tag_database +++ b/tag_database @@ -65,6 +65,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 From a43efa885ccdbdfb778850ea9877400b49ca92c9 Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Wed, 17 Jan 2018 17:37:14 +0200 Subject: [PATCH 2/4] Update hashBrowser.md --- snippets/hashBrowser.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snippets/hashBrowser.md b/snippets/hashBrowser.md index 262746cef..a6274c870 100644 --- a/snippets/hashBrowser.md +++ b/snippets/hashBrowser.md @@ -1,4 +1,4 @@ -### functionName +### hashBrowser Creates a hash for a value using the [SHA-256](https://en.wikipedia.org/wiki/SHA-2) algorithm. Returns a promise. From 5c0228d3cd868d8d91fb03ee55a1c26985a6d08d Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Wed, 17 Jan 2018 17:37:27 +0200 Subject: [PATCH 3/4] Update hashNode.md --- snippets/hashNode.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snippets/hashNode.md b/snippets/hashNode.md index 9de0174b5..ced01afb1 100644 --- a/snippets/hashNode.md +++ b/snippets/hashNode.md @@ -1,4 +1,4 @@ -### functionName +### hashNode Creates a hash for a value using the [SHA-256](https://en.wikipedia.org/wiki/SHA-2) algorithm. From b9c82fae1a16f8a496f0c4d4c93e11a6d521fd07 Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Wed, 17 Jan 2018 21:13:12 +0200 Subject: [PATCH 4/4] Update tdd and convert node snippet to async --- scripts/tdd.js | 2 +- snippets/hashBrowser.md | 2 +- snippets/hashNode.md | 7 ++++--- 3 files changed, 6 insertions(+), 5 deletions(-) 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 index a6274c870..d81ee2cc9 100644 --- a/snippets/hashBrowser.md +++ b/snippets/hashBrowser.md @@ -18,5 +18,5 @@ const hashBrowser = val => ``` ```js -hashBrowser(JSON.stringify({a :'a', b: [1,2,3,4], 'foo': {c: 'bar'}})).then(hash => console.log(hash)); // '04aa106279f5977f59f9067fa9712afc4aedc6f5862a8defc34552d8c7206393' +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 index ced01afb1..59bf34149 100644 --- a/snippets/hashNode.md +++ b/snippets/hashNode.md @@ -1,14 +1,15 @@ ### hashNode -Creates a hash for a value using the [SHA-256](https://en.wikipedia.org/wiki/SHA-2) algorithm. +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 => crypto.createHash('sha256').update(val).digest('hex'); +const hashNode = val => + new Promise(resolve => setTimeout(() => resolve(crypto.createHash('sha256').update(val).digest('hex')),0)); ``` ```js -hashNode(JSON.stringify({a :'a', b: [1,2,3,4], 'foo': {c: 'bar'}})); // '04aa106279f5977f59f9067fa9712afc4aedc6f5862a8defc34552d8c7206393' +hashBrowser(JSON.stringify({a :'a', b: [1,2,3,4], 'foo': {c: 'bar'}})).then(console.log); // '04aa106279f5977f59f9067fa9712afc4aedc6f5862a8defc34552d8c7206393' ```