npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

khal

v2.0.0

Published

Node utility librairies

Downloads

29

Readme

Khal

Utils for node project

Disclaimer

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

API

  • 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}];
sort.by(obj,{age:1}); //Will sort asc by age similar to sort.by(obj,{age:'asc'});
sort.by(obj,{age:-1}); //Will sort desc by age similar to sort.by(obj,{age:'desc'});

sort.by(obj,{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.