From 6b9ca7249c0a8ef86a3db6791aaf689c4ea6fe3c Mon Sep 17 00:00:00 2001 From: 30secondsofcode <30secondsofcode@gmail.com> Date: Wed, 17 Jan 2018 19:27:05 +0000 Subject: [PATCH] Travis build: 1289 --- README.md | 66 +++++++++++++++++++++++++++++++++++++++++ docs/index.html | 26 +++++++++++++++- snippets/hashBrowser.md | 18 +++++------ snippets/hashNode.md | 15 ++++++++-- 4 files changed, 112 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index f2638c72f..7aca4b9d9 100644 --- a/README.md +++ b/README.md @@ -162,6 +162,7 @@ average(1, 2, 3); * [`getScrollPosition`](#getscrollposition) * [`getStyle`](#getstyle) * [`hasClass`](#hasclass) +* [`hashBrowser`](#hashbrowser-) * [`hide`](#hide) * [`httpsRedirect`](#httpsredirect) * [`observeMutations`](#observemutations-) @@ -255,6 +256,7 @@ average(1, 2, 3); * [`colorize`](#colorize) * [`hasFlags`](#hasflags) +* [`hashNode`](#hashnode) * [`isTravisCI`](#istravisci) * [`JSONToFile`](#jsontofile) * [`readFileLines`](#readfilelines) @@ -2223,6 +2225,35 @@ hasClass(document.querySelector('p.special'), 'special'); // true
[⬆ Back to top](#table-of-contents) +### hashBrowser ![advanced](/advanced.svg) + +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(''); + }); +``` + +
+Examples + +```js +hashBrowser(JSON.stringify({ a: 'a', b: [1, 2, 3, 4], foo: { c: 'bar' } })).then(console.log); // '04aa106279f5977f59f9067fa9712afc4aedc6f5862a8defc34552d8c7206393' +``` + +
+ +
[⬆ Back to top](#table-of-contents) + + ### hide Hides all the elements specified. @@ -3915,6 +3946,41 @@ hasFlags('special'); // false
[⬆ Back to top](#table-of-contents) +### 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 + ) + ); +``` + +
+Examples + +```js +hashBrowser(JSON.stringify({ a: 'a', b: [1, 2, 3, 4], foo: { c: 'bar' } })).then(console.log); // '04aa106279f5977f59f9067fa9712afc4aedc6f5862a8defc34552d8c7206393' +``` + +
+ +
[⬆ Back to top](#table-of-contents) + + ### isTravisCI Checks if the current environment is [Travis CI](https://travis-ci.org/). diff --git a/docs/index.html b/docs/index.html index 9b11b1347..6720fc8de 100644 --- a/docs/index.html +++ b/docs/index.html @@ -50,7 +50,7 @@ scrollToTop(); } }, false); - }

logo 30 seconds of code Curated collection of useful JavaScript snippets that you can understand in 30 seconds or less.

 

Adapter

call

Given a key and a set of arguments, call them when given a context. Primarily useful in composition.

Use a closure to call a stored key with stored arguments.

const call = (key, ...args) => context => context[key](...args);
+      }

logo 30 seconds of code Curated collection of useful JavaScript snippets that you can understand in 30 seconds or less.

 

Adapter

call

Given a key and a set of arguments, call them when given a context. Primarily useful in composition.

Use a closure to call a stored key with stored arguments.

const call = (key, ...args) => context => context[key](...args);
 
Promise.resolve([1, 2, 3])
   .then(call('map', x => 2 * x))
   .then(console.log); //[ 2, 4, 6 ]
@@ -449,6 +449,15 @@ hub.off
getStyle(document.querySelector('p'), 'font-size'); // '16px'
 

hasClass

Returns true if the element has the specified class, false otherwise.

Use element.classList.contains() to check if the element has the specified class.

const hasClass = (el, className) => el.classList.contains(className);
 
hasClass(document.querySelector('p.special'), 'special'); // true
+

hashBrowseradvanced

Creates a hash for a value using the SHA-256 algorithm. Returns a promise.

Use the SubtleCrypto API to create a hash for the given value.

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('');
+  });
+
hashBrowser(JSON.stringify({ a: 'a', b: [1, 2, 3, 4], foo: { c: 'bar' } })).then(console.log); // '04aa106279f5977f59f9067fa9712afc4aedc6f5862a8defc34552d8c7206393'
 

hide

Hides all the elements specified.

Use the spread operator (...) and Array.forEach() to apply display: none to each element specified.

const hide = (...el) => [...el].forEach(e => (e.style.display = 'none'));
 
hide(...document.querySelectorAll('img')); // Hides all <img> elements on the page
 

httpsRedirect

Redirects the page to HTTPS if its currently in HTTP. Also, pressing the back button doesn't take it back to the HTTP page as its replaced in the history.

Use location.protocol to get the protocol currently being used. If it's not HTTPS, use location.replace() to replace the existing page with the HTTPS version of the page. Use location.href to get the full address, split it with String.split() and remove the protocol part of the URL.

const httpsRedirect = () => {
@@ -859,6 +868,21 @@ console.log<
 hasFlags('-s'); // true
 hasFlags('--test', 'cool=true', '-s'); // true
 hasFlags('special'); // false
+

hashNode

Creates a hash for a value using the SHA-256 algorithm. Returns a promise.

Use crypto API to create a hash for the given value.

const crypto = require('crypto');
+const hashNode = val =>
+  new Promise(resolve =>
+    setTimeout(
+      () =>
+        resolve(
+          crypto
+            .createHash('sha256')
+            .update(val)
+            .digest('hex')
+        ),
+      0
+    )
+  );
+
hashBrowser(JSON.stringify({ a: 'a', b: [1, 2, 3, 4], foo: { c: 'bar' } })).then(console.log); // '04aa106279f5977f59f9067fa9712afc4aedc6f5862a8defc34552d8c7206393'
 

isTravisCI

Checks if the current environment is Travis CI.

Checks if the current environment has the TRAVIS and CI environment variables (reference).

const isTravisCI = () => 'TRAVIS' in process.env && 'CI' in process.env;
 
isTravisCI(); // true (if code is running on Travis CI)
 

JSONToFile

Writes a JSON object to a file.

Use fs.writeFile(), template literals and JSON.stringify() to write a json object to a .json file.

const fs = require('fs');
diff --git a/snippets/hashBrowser.md b/snippets/hashBrowser.md
index d81ee2cc9..38e4d978c 100644
--- a/snippets/hashBrowser.md
+++ b/snippets/hashBrowser.md
@@ -6,17 +6,15 @@ Use the [SubtleCrypto](https://developer.mozilla.org/en-US/docs/Web/API/SubtleCr
 
 ```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('');
-    });
+  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'
+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 59bf34149..de94595da 100644
--- a/snippets/hashNode.md
+++ b/snippets/hashNode.md
@@ -7,9 +7,20 @@ 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));
+  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'
+hashBrowser(JSON.stringify({ a: 'a', b: [1, 2, 3, 4], foo: { c: 'bar' } })).then(console.log); // '04aa106279f5977f59f9067fa9712afc4aedc6f5862a8defc34552d8c7206393'
 ```