Ben's miscellaneous utilities
A collection of utility functions for Node.js (or Javascript generally).
Usage
Install:
npm install --save bb-utils
Run tests:
npm test
Modify:
Source is in coffeescript, located in src
dir.
Coffee is compiled to JS via:
./node_modules/coffee-script/bin/coffee -c -b -o lib src/*.coffee
(also as npm prepublish
script)
Functions
General
-
requireFresh
: Wipe a module from the module cache and reload it. -
callbackOrThrow
: Pass an error along, either to a callback, or w/ an exception. -
callbackOrLog
: Tamer version of callbackOrThrow, this passes an error to a callback, or toconsole.error
. -
getStack
: Get a stack trace as a string.
Objects
-
convertNumbersAndBooleans
: Given an object, convert numeric strings to numbers, and convert boolean strings to booleans. With variable recursion depth and key patterns to ignore. -
textToObject
: For parsing flat-text config files, converts each line to a key:value in the returned object, with variable separator. -
traverse
: Get a value from an object, by traversing the object with a traversal string, separated by periods. Also handles arrays. (e.g.traverse(obj, 'x.y.z')
.) -
traverseSet
: Similar totraverse
, this sets a value using a traversal path. Creates any missing pieces in the chain (as sub-objects). Handles arrays if they already exist, but won't create a new array.
Strings
-
pad
: Pad an integer to a number of characters. (e.g.pad(1, 3)
=>'001'
) -
guid
: Generate a GUID in 8-4-4-4-12 format. -
numericGuid
: Likeguid
, but all numbers, not starting with 0. -
pathify
: Convert a string to a filename- or URL-friendly string. -
printf
: Very simple string interpolator. -
printfPlural
: Interpolation with single/plural handling. -
sumAsciiStringToNum
: Turn a string into a number, by adding together the ascii value of each char. Useful for hash ring algorithms.
Numbers
-
probability
: Get a boolean given a probability (between 0 and 1). -
isNumeric
: Numeric test (numbers or numeric strings). Checks value not type (unlike_.isNumber
).
Async
-
asyncSeriesTap
: Addon to async, run a named series flow (key:fn
style) with abeforeEach()
andafterEach()
callback, each getting(name, fn)
. Useful for debugging async flows or in tests. -
waitForSomething
: Wait for acheckFn
callback to return true, with variable interval, timeout, and message. -
debounceAfter
: Combination of underscore/lodash's_.debounce
and_.after
, fire something after it has occured N times in M milliseconds.
URLs
-
resolveUrl
: Join an array into a relative url, similar topath.resolve()
. -
compareUrls
: Check if two URLs are the same, optionally accounting for protocol, port, host, etc.
Arrays
startArrayWith
andendArrayWith
: Given two arrays, pull the elements in a 2nd array to the start or end of the first one.
Dates
maxDate
andminDate
: Given N dates (UTC strings or date objects), get the most recent or oldest.
Files
-
parsePath
: Given a file path, return a hash with dir, filename, extension. -
md5File
: Get md5 hash of a file, by path.