This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Convert a URL into a readable filename safe string | |
* - sort query params | |
* - remove protocol | |
* - replace / with ! | |
* - replace ? with !! | |
* - replace remaining illegal characters with - | |
* @example | |
* INPUT: convertUrlToReadableFilename('https://orcascan.com/guides/how-to-scan-barcodes-into-microsoft-excel-59fd67f9'); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* local storage helper (takes care of casting types) | |
*/ | |
var localStorageHelper = { | |
/** | |
* Check if item exists in local storage. | |
* @param {string} key - variable name | |
* @return {boolean} true if key exists, otherwise false | |
*/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Adds query params to existing URLs (inc merging duplicates) | |
* @param {string} url - src URL to modify | |
* @param {object} params - key/value object of params to add | |
* @example | |
* // returns /guides?tag=api | |
* addQueryParamsToUrl('/guides?tag=hardware', { tag:'api' }) | |
* @example | |
* // returns https://orcascan.com/guides?tag=api | |
* addQueryParamsToUrl('https://orcascan.com/guides?tag=hardware', { tag: 'api' }) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var fs = require('fs-extra'); | |
var fetch = require('node-fetch'); | |
/** | |
* Download a file to disk | |
* @example downloadFile('https://orcascan.com', './barcode-tracking.html') | |
* @param {string} fileUrl - url of file to download | |
* @param {string} destPath - destination path | |
* @returns {Promise} resolves once complete, otherwise rejects | |
*/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Checks if a string is a URL | |
* @example isUrl('https://orcascan.com') // true; | |
* @param {string} str - value to test | |
* @returns {boolean} true if URL otherwise false | |
*/ | |
function isUrl(str) { | |
return /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/.test(str); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Checks if a JavaScript value is empty | |
* @example | |
* isEmpty(null); // true | |
* isEmpty(undefined); // true | |
* isEmpty(''); // true | |
* isEmpty([]); // true | |
* isEmpty({}); // true | |
* @param {any} value - item to test | |
* @returns {boolean} true if empty, otherwise false |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Waits for multiple DOM events to fire | |
* @example | |
* waitForEvents(window, [ | |
* 'DOMContentLoaded', | |
* 'online' | |
* ]) | |
* .then(function(result) { | |
* // do stuff |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Executes an array of functions that return a promise in sequence | |
* @example | |
* promisesInSequence([ | |
* function() { return Promise.resolve(1); } | |
* function() { return Promise.resolve(2); }, | |
* function() { return Promise.resolve(3); } | |
* ]) | |
* .then(function(result) { | |
* console.log(result.join(',')); // output = 1,2,3 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Wait for the browser to fire an event (including custom events) | |
* @param {string} eventName - Event name | |
* @param {integer} seconds - number of seconds to wait. | |
* @returns {Promise} resolves when event fires or timeout is reached | |
*/ | |
async function waitForEvent(eventName, seconds) { | |
seconds = seconds || 30; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Gets attribute off HTML element or nearest parent | |
* @param {object} el - HTML element to retrieve attribute from | |
* @param {string} attributeName - name of the attribute | |
* @param {any} defaultValue - default value to return if no match found | |
* @returns {any} attribute value or defaultValue | |
*/ | |
function getNearestAttribute(el, attributeName, defaultValue) { | |
// walk up the dom tree looking for data-action and data-trigger |
NewerOlder