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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@stackline/deep-is

v1.0.1

Published

Stack-safe deep equality with the proven deep-is 0.1.4 semantics

Downloads

156

Readme

@stackline/deep-is

Stack-safe deep equality with the established [email protected] behavior.

npm version npm downloads CI license

Docs and comparator | npm | GitHub | Migration | Security | Changelog

Current package version: 1.0.1

This package is an independent, maintained continuation of deep-is. It keeps the callable API and its intentionally loose compatibility semantics while handling cyclic and very deep object graphs without recursive call-stack exhaustion.

Install

npm install @stackline/deep-is

Preserve an existing require('deep-is') without changing application code:

npm install deep-is@npm:@stackline/deep-is

Usage

CommonJS

const deepIs = require('@stackline/deep-is');

deepIs({ answer: 42 }, { answer: '42' }); // true
deepIs(+0, -0); // false
deepIs(NaN, NaN); // true

ESM

import deepIs from '@stackline/deep-is';

const left = { id: 1 };
const right = { id: '1' };
left.self = left;
right.self = right;

deepIs(left, right); // true

API

deepIs(actual, expected)

Returns a boolean. Inputs are not mutated.

The package deliberately preserves the legacy contract:

  • NaN equals NaN;
  • positive and negative zero differ;
  • non-object primitive pairs use loose equality;
  • dates compare their timestamps;
  • enumerable own string keys are compared independent of order;
  • arguments objects retain their historical array comparison;
  • symbol and non-enumerable keys are outside the contract;
  • Map, Set, RegExp, and object-prototype internals are not interpreted.

Use node:util.isDeepStrictEqual or another strict comparator when new code needs strict modern semantics.

Reliability

The original recursive algorithm can throw RangeError for equivalent cycles or sufficiently deep inputs. This implementation uses iterative graph traversal and pair tracking. Regression coverage includes a 100,000-level object graph, cyclic graphs, and more than 5,000 differential comparisons against a frozen copy of [email protected].

There is no published CVE or GHSA claim associated with this change.

Compatibility

  • CommonJS and native ESM
  • First-party TypeScript declarations, including TypeScript 3.9 consumers
  • Browser bundle entry points
  • Node.js 12 and newer at runtime
  • Zero runtime dependencies

See COMPATIBILITY_CONTRACT.md and MIGRATION.md for the exact boundary and alias migration.

Security

Report vulnerabilities privately as described in SECURITY.md. Do not disclose an unpatched vulnerability in a public issue.

Provenance

The upstream source and authorship history are documented in UPSTREAM_AUDIT.md and NOTICE. The Stackline fork is not affiliated with or endorsed by the original authors.

License

MIT. Original copyright and permission notices are preserved in LICENSE.