Skip to content

Latest commit

 

History

History
220 lines (197 loc) · 7.43 KB

README.md

File metadata and controls

220 lines (197 loc) · 7.43 KB

Screenshot 2023-03-18 at 19 06 18

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
  • 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
  • Dimensions
  • HashMap<>
    • BoolMap
    • NumberMap
    • StringMap
    • TrueMap
  • Forbid<>
  • 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
  • PickRequired<>
  • PlainKey
  • Point
  • Required<>
  • VoidFn

Development

After changes, run

pnpm release

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