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

deverything

v1.12.1

Published

Everything you need for Dev

Downloads

8,548

Readme

Everything you constantly need for development (and probably still copy-pasting from other projects)

The promise:

  • ✅ 1 package: say goodbye to lodash, faker, and the other package you don't recall the name of.
  • ⭕ 0 dependencies: keep it simple and lightweight.
  • 🏆 Pick the best: the code is minimal and uses the best practices for max performance.
  • 👪🏼 Typescript: use it, support it and export it.
  • 🌊 Intuitive: favour always the most intuitive API and common usage, never throw error unless asked to.
  • 🙈 Semantic: use simple function names that are easy to remember, no complicated options.

Contributions always welcome!

Validators

  • isArray()
  • isBoolean()
  • isBrowser() to detect if you are on the browser
  • isBuffer() if it's a buffer
  • isClient() same as isBrowser
  • isEmail() this is a relaxed check, use your own validation if you need to be strict
  • isEmpty() to check for empty object, empty array, empty string, null or undefined
    • isEmptyString() trims the string and checks if something is left
    • isEmptyArray() checks if the array has no items
    • isEmptyObject() checks if the object has no keys
  • isFile() if it's a file
  • isFunction()
  • isJsDate() if it's a valid javascript's Date
    • isFutureDate()
    • isPastDate()
    • isStringDate() also checks if the string passed is a valid date
  • isKey() is a real key of an object
  • isLastIndex() is the index is the last item of array
  • isNotEmptyString() must have some text, checks for spaces-only
  • isNumber() if the arg is number, and also usable (no infinity)
    • isInt() if it's an integer
    • isEven()
    • isOdd()
    • isPositiveInt()
    • isNegativeInt()
  • isNumeric() if string is representing a number
  • isObject() if it's a js plain Object
  • isPromise() if it's a promise
  • isPWA() to detect if you are on a PWA
  • isReactElement() if it's a valid React Element
  • isRegExp() if it's a valid RegExp
  • isSame() Compare if dates, functions, arrays, objects or anything else are the same
  • isSequence() if the array is a perfect sequence
  • isServer() if you are on the server
  • isString()
  • isURL()
  • isUUID() if it's a valid UUID

Dates

  • isOver18()
  • startOfNextMonth()
  • startOfNextWeek()
  • startOfThisWeek()
  • startOfToday()
  • startOfTomorrow()

Math

  • average()
  • isBetween()
  • isOutside()
  • isStrictlyBetween()
  • max()
  • min()
  • multiply()
  • normaliseArray()
  • normaliseNumber()
  • percentageChange()
  • sum()

Helpers

  • array() create an arbitrary array based on a function
    • arrayDiff() get the difference of two arrays
    • arrayIntersection() get the intersection of two arrays
  • capitalize() word => Word
  • clamp() clamp number in a range
  • cleanSpaces() trims and turns double spaces into single space
  • enumKeys() enum FRUIT { APPLE, PEAR } => ["APPLE", "PEAR"]
  • enumValues() enum FRUIT { APPLE = 1, PEAR = 3 } => [1, 3]
  • filterAlphanumeric() remove non-alphanumeric characters
  • first() get the first element of an array
  • firstKey() get the first key of an object
  • firstValue() get the first value of an object
  • getUrlSearchParam() get URL search param
  • getUrlSearchParams() get URL search params
  • incrementalId() autoincremental SQL-like, process-unique numeric id
  • keysLength() get the length of keys in an object
  • last() get the last element of an array
  • lastIndex() get the last index of an array
  • merge() deep merge objects
  • moveToFirst() move array element to first
  • moveToIndex() move array element to desired index
  • moveToLast() move array element to last
  • normalizeNumber() normalizes between 0 and 1
  • objectDiff() get the difference between two objects
  • parseDate() pass anything Date-Like, and get a JS Date back
  • promiseWithTimeout() takes a promise, a timeoutMs, and an option error as arguments. Returns a new Promise that either resolves with the value of the input promise or rejects with the provided error or a default error message if the input promise does not resolve or reject within the specified timeoutMs.
  • scrambleText() replace alpha chars with random chars
  • seriesAll() executes promises in series, and returns all results
  • setObjectPath() set a value in an object by path
  • setUrlSearchParams() set URL search params
  • shuffle() shuffles elements in an array
  • sleep() promise-based sleep
  • stringify() stringify anything, without breaking on circular dependencies
  • toggleArrayValue() remove/add value in array
  • truncate() truncate text, does not break emojis
  • uniqueValues() gets unique values in an array

Formatters

  • formatCamelCase()
  • formatCookies() { cookie1: "1", cookie2: "2" } => "cookie1=1; cookie2=2"
  • formatNumber() 1000 => "1,000" or "1K" or 0.112 => "11.2%"
  • formatPercentage() 0.11 => "11%"
  • formatProgress() => "[2/10]"
  • stringToCSSUnicode() "hello" => "\000068\000065\00006c\00006c\00006f" use this for CSS
  • stringToUnicode() "hello" => "\u0068\u0065\u006c\u006c\u006f"

Random data generators

These functions are optimized for low entropy random data generation useful for Unit Testing, Storybook, Pass real validations, Reverse hacking, Penetration testing...

  • randomAddress()
  • randomAlphaNumericCode()
  • randomArray()
  • randomArrayItem() now supporting non-uniform distribution
  • randomBankAccount()
  • randomBool()
  • randomChar()
  • randomCompany()
  • randomCoords()
    • randomLat()
    • randomLng()
  • randomDate() a safe range in decade
    • randomMaxDate() a range in the Max dates allowed by JS
    • randomFutureDate()
    • randomPastDate()
    • randomDateRange() => { startDate, endDate }
  • randomEmail()
  • randomEmoji()
  • randomEnumKey() enum FRUIT { APPLE, PEAR } => APPLE
  • randomEnumValue() enum FRUIT { APPLE = 1, PEAR = 3 } => 3
  • randomFile()
  • randomFloat()
  • randomObject()
  • randomHandle() useful for social identifiers, or slugs
  • randomHexColor()
  • randomHexValue()
  • randomHtmlColorName()
  • randomIBAN()
  • randomInt()
    • randomBigInt()
    • randomMaxInt() Range within the Maximum integer supported by js
    • randomMaxSafeInt() Range of very BIG integers, which are still safe to use tho
    • randomNegativeInt() < 0
    • randomPositiveInt() > 0
  • randomIP()
  • randomName()
    • randomFirstName()
    • randomLastName()
    • randomFullName()
  • randomNumericCode()
  • randomObject()
  • randomParagraph()
  • randomPassword()
  • randomPath() /path/to/something
  • randomPhoneNumber()
  • randomString()
  • randomSymbol()
  • randomUUID() lightweight uuid generation, passing UUID validation
  • randomValue()
  • randomWord()

TypeScript Helpers & Generics

  • Coords
  • DateLike
  • Defined<T>
  • Dimensions
  • HashMap<>
    • BoolMap
    • NumberMap
    • StringMap
    • TrueMap
  • Key
  • Maybe<>
    • MaybePromise<>
    • MaybePromiseOrValue<>
    • MaybePromiseOrValueArray<>
  • NonUndefined
  • ObjectEntries<>
  • ObjectEntry<>
  • ObjectKey<>
  • ObjectKeys<>
  • ObjectValue<>
  • ObjectValues<>
  • PlainObject use this instead of Record<,> or extends object, also makes sure it's not an array
  • PickDefined<T, K>
  • PickRequired<T, K>
  • PlainKey
  • Point
  • VoidFn

Development

After changes, run

pnpm release

To bump the version. CI will take care of publishing the package when merged.