Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including khal with all npm packages installed. Try it out:

var khal = require("khal")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

khal v2.0.0

Node utility librairies


Utils for node project


There is a lot of other npm that do what I've done but in a better/more fashion/more optimized way. But well, I know what is inside this, and this is the one I used a lot in my project. So don't blame for all the duplicates bytes I've done here.
I might optimize theses function in the future, just for the lolz and the learning.

More info about what has changed in the last version : Changelog


  • cl(args) - Works like console.log, but it return the args passed. If no arg passed, it just return the timestamp. If only one arg is passed, it return the arg, if many it return array
  • ce(args) - Same as above for console.error
  • clone(obj) - Make a clone of an object (useful is you don't want to keep ref)
  • intersect(arr, arr) - Return an array being the intersect of arrays given
  • union(arr,arr) - Return an array being the union of arrays given
  • is - Test a given argument being of type/state expected
    • arr
    • int
    • number
    • float
    • string
    • bool
    • obj
    • fn
    • def
    • undef
    • promise
    • obs
    • event
    • stringified
    • JSON
  • sort - Handle sorting
    • by (el, param) given an object el, will sort by param defined

Exemple :

let obj = [{name:"alex",age:15},{name:"jean",age:10},{name:"brice",age:10},{name:"charles",age:50},{name:"franck",age:1}];,{age:1}); //Will sort asc by age similar to,{age:'asc'});,{age:-1}); //Will sort desc by age similar to,{age:'desc'});,{name:1,age:1}); //Will first sort asc by name then by age (so brice will be before jean having same age)
  • file - Handle file
    • create(filename, [cb]) - Create an empty file (sync if not cb passed, async in the other case)
    • delete(filename, [cb]) - Delete a file (sync if not cb passed, async in the other case)
    • append(filename, data, [cb]) - Append data in file (sync if not cb passed, async in the other case)
    • exist(filename, [cb]) - Check if a file exist (sync if not cb passed, async in the other case)
    • sizeof(filename, [cb]) - Get bytes size of a file (sync if not cb passed, async in the other case)
  • geo - Handle geoCordinate
    • create(lat, lon) - returns a GeoCordinate object
    • geocordinateStringToGeoCoordinateObject(str) - transform a str "43.597446,1.454469" to a geoObject
    • calculateDistance(geoCordinate, geoCordinate, [unit{str}, [precision {int}]]) - get distance between two geoObject, can be in km,m or miles,
    • convert(float)
      • toMiles() - convert to Miles a value in meters
      • toMeters() - convert to Meters a value in miles
  • string - Handle string
    • pad - Handle Padding
      • left(string, length, [replacementString]) - Transform an input and adding in left the replacement value. Returns a string.
      • right(string, length, [replacementString]) - Transform an input and adding in right the replacement value. Returns a string.
  • math - Handle math
    • radianToDegree(rad)
    • degreeToRadian(deg)
    • randomBetweenMinAndMax(min,max,[precision])
    • levenshtein(stringA, stringB) - return an array as of levenshtein (string distance)
    • stringDistance(stringA, stringB) - return an int, value of the distance between two strings
    • highest(numbersList) - return the highest number from a list of numbers
    • lowest(numbersList) - return the lowest number from a list of numbers
    • median(numbersList) - return the median number from a list of numbers
    • mean(numbersList) - return the mean number from a list of numbers
    • average(numbersList) - return the average number from a list of numbers
  • misc - Handle stuff
    • formatByteSize(bytes,[isSIForm]) - Make bytes readable using IEEC (MB) or SI (MiB) form
    • sizeOfObject(obj) - Get bytes size from obj (number, object or string)
    • sizeOfObjectReadable(obj,[isSIForm]) - Make bytes readable using IEEC (MB) or SI (MiB) form from obj
    • merge(obj,[obj[...]]) - merge object with priority from left to right (left is left untouched), see it like an extends of left.
  • os - Handle OS stuff
    • getServerIp([_family]) - Get server ip by his familly (IPv4 by default, IPv6 should be passed as arg)
      => khal.os.getServerIP("IPv6") for IPv6
      => khal.os.getServerIP() or khal.os.getServerIP("IPv4") for IPv4
  • regex
    • regTest(reg, val) - Handy shortcut for regex testing
    • isUUIDV4(uuid) - Test a valid UUID V4
    • isUsername(username) - Test a valid username
    • isBirthdate(birthday) - Test a valid birthdate
    • isGender(gender) - Test a valid gender
    • isPassword(password) - Test a valid password
    • isEmail(email) - Test a valid email
    • isUnicodeEmail(email) - Test a valid unicode email
  • date
    • time
    • date
    • datetime
    • UTCEpochMS
    • UTCEpoch
    • localEpochMS
    • localEpoch
    • calculateAge(dateString, [date]) - Given a date String (YYYY-MM-DD) return the year diff between today or the date given as second arg.
    • YYYYMMDDhhmmss([params]] Return formatted date in specified form with specified separator. Where params can be :
      • separatorDate - Default "-", - Allow to set a separator between years, months, and date.
      • separatorTime - Default ":" - Allow to set a separator between Hours, minutes and seconds.
      • separatorBetween - Default " " - Will allow to set a separateur between the Time block and the Date block.
      • d - Default is Now Date. - Allow to use a specific Date object to format from.
RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free