Jordan Harband
@ljharb
software engineer/nerd/teacher/will try anything once; surgeon with git rebase. @TC39 ex @Coinbase @Airbnb @Twitter @MobBase. Fav punctuation ⸮, scent petrichor
240
Published Tools
245,792
Total Stars
113,012,270
Weekly Downloads
7,998
GitHub Followers
275
Public Repos
100/100
Avg Security
Published Tools
240 Skillsacross 1 categoryeslint-config-airbnb
ljharb
Airbnb's ESLint config, following our styleguide
enzyme
ljharb
JavaScript Testing utilities for React
enzyme-adapter-utils
ljharb
JavaScript Testing utilities for React
eslint-plugin-react
ljharb
React specific linting rules for ESLint
qs
ljharb
A querystring parser that supports nesting and arrays, with a depth limit
es5-shim
ljharb
ECMAScript 5 compatibility shims for legacy JavaScript engines
eslint-plugin-import
ljharb
Import with sanity.
prop-types
ljharb
Runtime type checking for React props and similar objects.
node-polyglot
ljharb
Give your JavaScript the ability to speak many languages.
eslint-plugin-jsx-a11y
ljharb
Static AST checker for accessibility rules on JSX elements.
es6-shim
ljharb
ECMAScript 6 (Harmony) compatibility shims for legacy JavaScript engines
form-data
ljharb
A library to create readable "multipart/form-data" streams. Can be used to submit forms and file uploads to other web applications.
...moreforms
ljharb
An easy way to create, parse, and validate forms
resolve
ljharb
resolve like require.resolve() on behalf of files asynchronously and synchronously
babel-plugin-add-module-exports
ljharb
Fix babel/babel#2212
react-outside-click-handler
ljharb
A React component for dealing with clicks outside its subtree
babel-plugin-dynamic-import-node
ljharb
Babel plugin to transpile import() to a deferred require(), for node
babel-plugin-inline-react-svg
ljharb
A babel plugin that optimizes and inlines SVGs for your react components.
url
ljharb
The core `url` packaged standalone for use with Browserify.
assert
ljharb
The assert module from Node.js, for the browser.
aria-query
ljharb
Programmatic access to the ARIA specification
sha.js
ljharb
Streamable SHA hashes in pure javascript
prop-types-exact
ljharb
For use with React PropTypes. Will error on any prop not explicitly specified.
eslint-find-rules
ljharb
Find built-in ESLint rules you don't have in your custom config.
pbkdf2
ljharb
This library provides the functionality of PBKDF2 with the ability to use any supported hashing algorithm returned from crypto.getHashes()
...morees7-shim
ljharb
ECMAScript 7 compatibility shims for legacy JavaScript engines
jsx-ast-utils
ljharb
AST utility module for statically analyzing JSX
object-inspect
ljharb
string representations of objects in node and the browser
globalthis
ljharb
ECMAScript spec-compliant polyfill/shim for `globalThis`
function-bind
ljharb
Implementation of Function.prototype.bind
promise.prototype.finally
ljharb
ES Proposal spec-compliant shim for Promise.prototype.finally
node.extend
ljharb
A port of jQuery.extend that actually works on node.js
es-abstract
ljharb
ECMAScript spec abstract operations.
object.assign
ljharb
ES6 spec-compliant Object.assign shim. From https://github.com/es-shims/es6-shim
promise.allsettled
ljharb
ES Proposal spec-compliant shim for Promise.allSettled
is-touch-device
ljharb
Is the current JS environment a touch device?
object.values
ljharb
ES2017 spec-compliant Object.values shim.
deline
ljharb
Template tag that takes out unwanted newlines
object.entries
ljharb
ES2017 spec-compliant Object.entries shim.
ls-engines
ljharb
Determine if your dependency graph's stated "engines" criteria is met.
is-generator-function
ljharb
Determine if a function is a native generator function.
browserify-sign
ljharb
adds node crypto signing for browsers
object-keys
ljharb
An Object.keys replacement, in case Object.keys is not available. From https://github.com/es-shims/es5-shim
array-includes
ljharb
An ES7/ES2016 spec-compliant `Array.prototype.includes` shim/polyfill/replacement that works as far down as ES3.
is-callable
ljharb
Is this JS value callable? Works with Functions and GeneratorFunctions, despite ES6 @@toStringTag.
array.prototype.find
ljharb
Array.prototype.find ES6 polyfill.
disposablestack
ljharb
An ESnext spec-compliant `DisposableStack`, `AsyncDisposableStack`, `Symbol.dispose`, and `Symbol.asyncDispose` shim/polyfill/replacement that works as far down as ES3.
...morestring.prototype.replaceall
ljharb
Spec-compliant polyfill for String.prototype.replaceAll ESnext proposal
get-intrinsic
ljharb
Get and robustly cache all JS language-level intrinsics at first require time
ripemd160
ljharb
Compute ripemd160 of bytes or strings.
axobject-query
ljharb
Programmatic access to information about the AXObject Model
array.prototype.flatmap
ljharb
An ES2019 spec-compliant `Array.prototype.flatMap` shim/polyfill/replacement that works as far down as ES3.
object.fromentries
ljharb
ES proposal-spec-compliant Object.fromEntries shim.
array.prototype.flat
ljharb
An ES2019 spec-compliant `Array.prototype.flat` shim/polyfill/replacement that works as far down as ES3.
array.prototype.at
ljharb
An ES-spec-compliant (proposed) Array.prototype.at shim/polyfill/replacement that works as far down as ES3
to-buffer
ljharb
Pass in a string, array, Buffer, Data View, or Uint8Array, and get a Buffer back.
npmignore
ljharb
Command line tool for creating or updating a .npmignore file based on .gitignore.
array.prototype.findindex
ljharb
Array.prototype.findIndex ES2015 polyfill.
is-core-module
ljharb
Is this specifier a node.js core module?
object-is
ljharb
ES2015-compliant shim for Object.is - differentiates between -0 and +0
is-regex
ljharb
Is this value a JS regex? Works cross-realm/iframe, and despite ES6 @@toStringTag
is-arrow-function
ljharb
Determine if a function is an ES6 arrow function or not.
for-each
ljharb
A better forEach
string.prototype.padstart
ljharb
ES2017 spec-compliant String.prototype.padStart shim.
cipher-base
ljharb
abstract base class for crypto-streams
es-to-primitive
ljharb
ECMAScript “ToPrimitive” algorithm. Provides ES5 and ES2015 versions.
is-string
ljharb
Is this value a JS String object or primitive? This module works cross-realm/iframe, and despite ES6 @@toStringTag.
is-object
ljharb
Checks whether a value is an object
is-data-descriptor
ljharb
Returns true if a value has the characteristics of a valid JavaScript data descriptor.
define-properties
ljharb
Define multiple non-enumerable properties at once. Uses `Object.defineProperty` when available; falls back to standard assignment in older engines.
...more@ljharb/eslint-config
ljharb
My shareable eslint config
es-iterator-helpers
ljharb
An ESnext spec-compliant iterator helpers shim/polyfill/replacement that works as far down as ES3.
object.getownpropertydescriptors
ljharb
ES2017 spec-compliant shim for `Object.getOwnPropertyDescriptors` that works in ES5.
browserify-rsa
ljharb
RSA for browserify
is-symbol
ljharb
Determine if a value is an ES6 Symbol or not.
has-symbols
ljharb
Determine if the JS environment has Symbol support. Supports spec, or shams.
is-negative-zero
ljharb
Is this value negative zero? === will lie to you
is-async-function
ljharb
Determine if a function is a native async function.
is-arguments
ljharb
Is this an arguments object? It's a harder question than you think.
string.prototype.matchall
ljharb
Spec-compliant polyfill for String.prototype.matchAll
object.hasown
ljharb
ES spec-compliant shim for Object.hasOwn
is-date-object
ljharb
Is this value a JS Date object? This module works cross-realm/iframe, and despite ES6 @@toStringTag.
is-accessor-descriptor
ljharb
Returns true if a value has the characteristics of a valid JavaScript accessor descriptor.
promise.any
ljharb
ES 2021 spec-compliant shim for Promise.any
es-aggregate-error
ljharb
ES Proposal spec-compliant shim for AggregateError
string.prototype.trim
ljharb
ES5 spec-compliant shim for String.prototype.trim
es-get-iterator
ljharb
Get an iterator for any JS language value. Works robustly across all environments, all versions.
is-array-buffer
ljharb
Is this value a JS ArrayBuffer?
reduce
ljharb
A better [].reduce
is-descriptor
ljharb
Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for data descriptors and accessor descriptors.
...morefunction.prototype.name
ljharb
An ES2015 spec-compliant `Function.prototype.name` shim
is-nan
ljharb
ES2015-compliant shim for Number.isNaN - the global isNaN returns false positives.
is-typed-array
ljharb
Is this value a JS Typed Array? This module works cross-realm/iframe, does not depend on `instanceof` or mutable properties, and despite ES6 Symbol.toStringTag.
...moreget-json
ljharb
Cross-platform library for getting JSON docs
uglify-register
ljharb
uglify require hook
hash-base
ljharb
abstract base class for hash-streams
array.prototype.tosorted
ljharb
An ESnext spec-compliant `Array.prototype.toSorted` shim/polyfill/replacement that works as far down as ES3.
string.prototype.padend
ljharb
ES2017 spec-compliant String.prototype.padEnd shim.
es-errors
ljharb
A simple cache for a few of the JS Error constructors.
promiseback
ljharb
Accept an optional node-style callback, and also return a spec-compliant Promise!
functions-have-names
ljharb
Does this JS environment support the `name` property on functions?
is-map
ljharb
Is this value a JS Map? This module works cross-realm/iframe, and despite ES6 @@toStringTag.
internal-slot
ljharb
ES spec-like internal slots
regexp.prototype.flags
ljharb
ES6 spec-compliant RegExp.prototype.flags shim.
string.prototype.trimleft
ljharb
ES2019 spec-compliant String.prototype.trimLeft shim.
string.prototype.trimright
ljharb
ES2019 spec-compliant String.prototype.trimLeft shim.
is-number-object
ljharb
Is this value a JS Number object? This module works cross-realm/iframe, and despite ES6 @@toStringTag.
has-bigints
ljharb
Determine if the JS environment has BigInt support.
is-boolean-object
ljharb
Is this value a JS Boolean? This module works cross-realm/iframe, and despite ES6 @@toStringTag.
safe-regex-test
ljharb
Give a regex, get a robust predicate function that tests it against a string.
has-package-exports
ljharb
Does the current node version have support for the "exports" field in package.json?
has-template-literals
ljharb
Determine if the JS environment has template literal support.
array.prototype.every
ljharb
An ES5 spec-compliant `Array.prototype.every` shim/polyfill/replacement that works as far down as ES3.
is-bigint
ljharb
Is this value an ES BigInt?
mock-property
ljharb
Given an object and a property, replaces a property descriptor (or deletes it), and returns a thunk to restore it.
pargs
ljharb
A useful wrapper for `util.parseArgs`
reflect.ownkeys
ljharb
ES2015 spec-compliant shim for Reflect.ownKeys
has-proto
ljharb
Does this environment have the ability to get the [[Prototype]] of an object on creation with `__proto__`?
async-function
ljharb
A function that returns the normally hidden `AsyncFunction` constructor
call-bind-apply-helpers
ljharb
Helper functions around Function call/apply/bind, for use in `call-bind`
has-tostringtag
ljharb
Determine if the JS environment has `Symbol.toStringTag` support. Supports spec, or shams.
string.prototype.trimend
ljharb
ES2019 spec-compliant String.prototype.trimEnd shim.
es-object-atoms
ljharb
ES Object-related atoms: Object, ToObject, RequireObjectCoercible
typed-array-buffer
ljharb
Get the ArrayBuffer out of a TypedArray, robustly.
array.prototype.findlast
ljharb
An ESnext spec-compliant `Array.prototype.findLast` shim/polyfill/replacement that works as far down as ES3.
object.groupby
ljharb
An ESnext spec-compliant `Object.groupBy` shim/polyfill/replacement that works as far down as ES3.
array.prototype.reduce
ljharb
An ES5 spec-compliant `Array.prototype.reduce` shim/polyfill/replacement that works as far down as ES3.
array.prototype.map
ljharb
An ES5 spec-compliant `Array.prototype.map` shim/polyfill/replacement that works as far down as ES3.
array.prototype.filter
ljharb
An ES5 spec-compliant `Array.prototype.filter` shim/polyfill/replacement that works as far down as ES3.
string.prototype.trimstart
ljharb
ES2019 spec-compliant String.prototype.trimStart shim.
stop-iteration-iterator
ljharb
Firefox 17-26 iterators throw a StopIteration object to indicate "done". This normalizes it.
well-known-symbols
ljharb
An ESnext spec-compliant shim/polyfill/replacement for all Well-Known Symbols that works in any environment with Symbols.
...moremake-async-function
ljharb
Function that returns an arbitrary `async function`, or undefined if `async function` syntax is unsupported.
define-data-property
ljharb
Define a data property on an object. Will fall back to assignment in an engine without descriptors.
reflect.getprototypeof
ljharb
An ES2015 mostly-spec-compliant `Reflect.getPrototypeOf` sham/polyfill/replacement that works in as many engines as possible
...morearray.prototype.findlastindex
ljharb
An ESnext spec-compliant `Array.prototype.findLastIndex` shim/polyfill/replacement that works as far down as ES3.
typedarray.prototype.slice
ljharb
ES spec-compliant shim for TypedArray.prototype.slice
jsonify
ljharb
JSON without touching any globals
es-value-fixtures
ljharb
Fixtures of ES values, for testing purposes
has-property-descriptors
ljharb
Does the environment have full property descriptor support? Handles IE 8's broken defineProperty/gOPD.
get-symbol-description
ljharb
Gets the description of a Symbol. Handles `Symbol()` vs `Symbol('')` properly when possible.
is-weakref
ljharb
Is this value a JS WeakRef? This module works cross-realm/iframe, and despite ES6 @@toStringTag.
is-shared-array-buffer
ljharb
Is this value a JS SharedArrayBuffer?
is-set
ljharb
Is this value a JS Set? This module works cross-realm/iframe, and despite ES6 @@toStringTag.
is-weakmap
ljharb
Is this value a JS WeakMap? This module works cross-realm/iframe, and despite ES6 @@toStringTag.
is-weakset
ljharb
Is this value a JS WeakSet? This module works cross-realm/iframe, and despite ES6 @@toStringTag.
has-dynamic-import
ljharb
Does the current environment have `import()` support?
object.getprototypeof
ljharb
An ES5 mostly-spec-compliant `Object.getPrototypeOf` sham/polyfill/replacement that works in as many engines as possible
suppressed-error
ljharb
ES Proposal spec-compliant shim for SuppressedError
make-arrow-function
ljharb
Function that returns an arbitrary arrow function, or undefined if arrow function syntax is unsupported.
iterate-value
ljharb
Iterate any iterable JS value. Works robustly in all environments, all versions.
data-view-byte-length
ljharb
Get the byteLength out of a DataView, robustly.
data-view-byte-offset
ljharb
Get the byteOffset out of a DataView, robustly.
is-data-view
ljharb
Is this value a JS DataView? This module works cross-realm/iframe, does not depend on `instanceof` or mutable properties, and despite ES6 Symbol.toStringTag.
...moredata-view-buffer
ljharb
Get the ArrayBuffer out of a DataView, robustly.
math-intrinsics
ljharb
ES Math-related intrinsics and helpers, robustly cached.
is-finalizationregistry
ljharb
Is this value a JS FinalizationRegistry? This module works cross-realm/iframe, and despite ES6 @@toStringTag.
es-shim-unscopables
ljharb
Helper package to shim a method into `Array.prototype[Symbol.unscopables]`
es-set-tostringtag
ljharb
A helper to optimistically set Symbol.toStringTag, when possible.
hasown
ljharb
A robust, ES3 compatible, "has own property" predicate.
array-buffer-byte-length
ljharb
Get the byte length of an ArrayBuffer, even in engines without a `.byteLength` method.
define-accessor-property
ljharb
Define an accessor property on an object. Will either throw, or fall back to assignment in loose mode, in an engine without descriptors.
...moregenerator-function
ljharb
A function that returns the normally hidden `GeneratorFunction` constructor
ent
ljharb
Encode and decode HTML entities
iterate-iterator
ljharb
Iterate any JS iterator. Works robustly in all environments, all versions.
array.prototype.foreach
ljharb
An ES spec-compliant `Array.prototype.forEach` shim/polyfill/replacement that works as far down as ES3.
array.prototype.some
ljharb
An ES5 spec-compliant `Array.prototype.some` shim/polyfill/replacement that works as far down as ES3.
supports-preserve-symlinks-flag
ljharb
Determine if the current node version supports the `--preserve-symlinks` flag.
node-exports-info
ljharb
Info about node `exports` field support: version ranges, categories, etc.
dunder-proto
ljharb
If available, the `Object.prototype.__proto__` accessor and mutator, call-bound
possible-typed-array-names
ljharb
A simple list of possible Typed Array names.
make-async-generator-function
ljharb
Function that returns an arbitrary async generator function, or undefined if async generator syntax is unsupported.
arraybuffer.prototype.slice
ljharb
ES spec-compliant shim for ArrayBuffer.prototype.slice
array.prototype.toreversed
ljharb
An ESnext spec-compliant `Array.prototype.toReversed` shim/polyfill/replacement that works as far down as ES3.
async-generator-function
ljharb
A function that returns the normally hidden `AsyncGeneratorFunction` constructor
@minimistjs/subarg
ljharb
parse arguments with recursive contexts
typed-array-byte-offset
ljharb
Robustly get the byte offset of a Typed Array
typed-array-byte-length
ljharb
Robustly get the byte length of a Typed Array
typed-array-length
ljharb
Robustly get the length of a Typed Array
covert
ljharb
code coverage command con coverify
extend
ljharb
Port of jQuery.extend for node.js and the browser
set-function-length
ljharb
Set a function's length property
set-function-name
ljharb
Set a function's name property
tape
ljharb
tap-producing test harness for node and browsers
is
ljharb
the definitive JavaScript type testing library
side-channel-map
ljharb
Store information about any JS value in a side channel, using a Map
side-channel-weakmap
ljharb
Store information about any JS value in a side channel. Uses WeakMap if available.
side-channel-list
ljharb
Store information about any JS value in a side channel, using a linked list
side-channel
ljharb
Store information about any JS value in a side channel. Uses WeakMap if available.
crypto-browserify
ljharb
implementation of crypto for the browser
call-bound
ljharb
Robust call-bound JavaScript intrinsics, using `call-bind` and `get-intrinsic`.
available-typed-arrays
ljharb
Returns an array of Typed Array names that are available in the current environment
which-typed-array
ljharb
Which kind of Typed Array is this JavaScript value? Works cross-realm, without `instanceof`, and despite Symbol.toStringTag.
...morecall-bind
ljharb
Robustly `.call.bind()` a function
unbox-primitive
ljharb
Unbox a boxed JS primitive value.
which-collection
ljharb
Which kind of Collection (Map, Set, WeakMap, WeakSet) is this JavaScript value? Works cross-realm, without `instanceof`, and despite Symbol.toStringTag.
...moreminimist
ljharb
parse argument options
es-define-property
ljharb
`Object.defineProperty`, but not IE 8's broken one.
gopd
ljharb
`Object.getOwnPropertyDescriptor`, but accounts for IE's broken implementation.
get-proto
ljharb
Robustly get the [[Prototype]] of an object
typedarray
ljharb
TypedArray polyfill for old browsers
concat-map
ljharb
concatenative mapdashery
which-boxed-primitive
ljharb
Which kind of boxed JS primitive is this?
safe-array-concat
ljharb
`Array.prototype.concat`, but made safe by ignoring Symbol.isConcatSpreadable
iterator.prototype
ljharb
`Iterator.prototype`, or a shared object to use.
which-builtin-type
ljharb
What is the type of this builtin JS value?
safe-push-apply
ljharb
Push an array of items into an array, while being robust against prototype modification
shell-quote
ljharb
quote and parse shell commands
set-proto
ljharb
Robustly set the [[Prototype]] of an object
own-keys
ljharb
Robustly get an object's own property keys (strings and symbols), including non-enumerables when possible
parse-asn1
ljharb
utility library for parsing asn1 files for use with browserify-sign.
deep-equal
ljharb
node's assert.deepEqual algorithm
@ljharb/through
ljharb
simplified stream construction
json-stable-stringify
ljharb
deterministic JSON.stringify() with custom sorting to get deterministic hashes from stringified results
traverse
ljharb
traverse and transform objects by visiting every node on a recursive walk
camelize
ljharb
recursively transform key strings to camel-case
defined
ljharb
return the first argument that is `!== undefined`
buffer-equal
ljharb
return whether two buffers are equal
html-element-map
ljharb
Look up HTML tag names via HTML Element constructors, and vice versa.
asynciterator.prototype
ljharb
`AsyncIterator.prototype`, or a shared object to use.
parse-github-url
ljharb
Parse a github URL into an object.
symbol.prototype.description
ljharb
Spec-compliant shim for Symbol.prototype.description proposal.
faucet
ljharb
human-readable TAP summarizer
@es-shims/api
ljharb
Loosely test a package's compliance with the es-shim API
purl
ljharb
a PURL ( https://tc54.org/purl/ ) parser and serializer
make-generator-function
ljharb
Returns an arbitrary generator function, or undefined if generator syntax is unsupported.
listify
ljharb
Turn an array into a list of comma-separated values, appropriate for use in an English sentence.
global-cache
ljharb
Sometimes you have to do horrible things, like use the global object to share a singleton. Abstract that away, with this!
...morecoverify
ljharb
code coverage browserify transform
es-array-method-boxes-properly
ljharb
Utility package to determine if an `Array.prototype` method properly boxes the callback's receiver and third argument.
deep-equal-json
ljharb
`deep-equal`, but only for JSON-supported values.
dotignore
ljharb
ignorefile/includefile matching .gitignore spec
document.contains
ljharb
Polyfill/shim for `document.contains`
util.promisify
ljharb
Polyfill/shim for util.promisify in node versions < v8
json-file-plus
ljharb
[![github actions][actions-image]][actions-url] [![coverage][codecov-image]][codecov-url] [![dependency status][deps-svg]][deps-url] [![dev dependency status][dev-deps-svg]][dev-deps-url] [![License][license-image]][license-url] [![Downloads][downloads-im
...moreavailable-regexp-flags
ljharb
Which regular expression flags does the current environment support?
daytime
ljharb
combine two Date objects, "day" and "time", into a new Date object
nvmrc
ljharb
command-line tool to validate a `.nvmrc` file
testling
ljharb
write tests for browser code
travis-ci
ljharb
node library to access the Travis-CI API