bb-utils
v0.0.3
Published
Misc JS/node utility functions
Downloads
4
Readme
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.