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); + }
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.offgetStyle(document.querySelector('p'), 'font-size'); // '16px'hasClass
Returns
trueif the element has the specified class,falseotherwise.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 (
...) andArray.forEach()to applydisplay: noneto each element specified.const hide = (...el) => [...el].forEach(e => (e.style.display = 'none'));hide(...document.querySelectorAll('img')); // Hides all <img> elements on the pagehttpsRedirect
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.protocolto get the protocol currently being used. If it's not HTTPS, uselocation.replace()to replace the existing page with the HTTPS version of the page. Uselocation.hrefto get the full address, split it withString.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
cryptoAPI 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
JSONToFile
Writes a JSON object to a file.
Use
fs.writeFile(), template literals andJSON.stringify()to write ajsonobject to a.jsonfile.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' ```