Utilities for node.js and backendjs
npm install bkjs-utilssplitArray(str) - split a string into an array separated by commas, supports quoted stringscountWords(word, text) - return how many time word appears in the text, uses Knuth-Morris-Pratt algorithmcountAllWords(list, text) - return an object with counters for each word from the list, i.e. how many times each word appears in the text, uses Aho-Corasick algorithmcountWordsInit() - clears word counting cachesnappyCompress(str) - compress a stringsnappyUncompress(str) - decompress a stringzlibCompress(str) - compress a stringzlibUncompress(str) - decompress a stringunzip(zipfile, outdir) - extract a zip archive into directoryunzipFile(zipfile, file [, outfile]) - extract a file from zip archive, return contents if no outfile s specifiedzipFiles(zipfile) - return a slist of all files in the zip archiverun(command, callback) - run shell command and return all output to the callbackgetUser([user]) - return an object with user info from the /etc/passwd file, user can be uid or namegetGroup([group]) - return an object with specified group info for the current user of for the given group id or namegeoDistance(lat1, lon1, lat2, lon2) - return distance between 2 coordinates in kmgeoBoundingBox(lat, lon, distance) - return bounding box geohash for given point around distancegeoHashEncode(lat, lon, len) - return geohash for given coordinate, len defines number of bytesin geohashgeoHashDecode(hash) - return coordinates for given geohashgeoHashAdjacent(geohash, dir) - return adjacent boxes for the given base in the given direction, dir is one of top,left,right,bottomgeoHashGrid(geoshash, steps) - return grid of all neighboring boxes around the center, steps defines how many boxes in each direction from the center. With steps = 1 the returned matrix is 3x3geoHashRow(geohash, steps) - same as grid but returns only one row, i.e. left of right of the centerinitBusy(ms) - setup busy monitor to track if incoming requests processing takes longer than given period in millisecondsisBusy() - return true if currently request processing takes longer than configured intervalgetBusy() - returns current lag for processing requestsgetTimeOfDay([type]) - return current time in microseconds, if type == 1 returns ad double seconds.microseconds, if type == 2 returns an object { tv_sec: T, tv_usec: U }For whatever reason npm exits with error gyp: name 'openssl_fips' is not defined...... run it as
npm i bkjs-utils --openssl_fips=X
Vlad Seryakov