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

@nozomi-hiragi/i-json

v0.1.2

Published

Strict JSON parser, serializer and validator conforming to I-JSON (RFC 7493): UTF-8 only, no duplicate keys, IEEE 754 safe numbers, no lone surrogates.

Readme

i-json

Strict JSON parser, serializer and validator conforming to I-JSON (RFC 7493).

CI npm JSR

What I-JSON requires

I-JSON is a restricted profile of JSON (RFC 8259) designed for interoperability. An I-JSON message must:

  • be encoded in UTF-8
  • contain no unpaired surrogates or noncharacters in strings, including when escaped ("\uDEAD")
  • have no duplicate member names within an object
  • use only numbers representable as IEEE 754 double-precision values (integers should be within ±(2^53 − 1))

Install

npm install @nozomi-hiragi/i-json

Also on JSR for Deno and other runtimes:

deno add jsr:@nozomi-hiragi/i-json
# or: npx jsr add @nozomi-hiragi/i-json

Usage

import { isIJson, parse, stringify, IJsonError } from "@nozomi-hiragi/i-json";

isIJson('{"a":1}'); // true
isIJson('{"a":1,"a":2}'); // false: duplicate member name

parse('{"name":"i-json"}'); // { name: "i-json" }
parse(new Uint8Array(bytes)); // UTF-8 bytes are validated too

try {
  parse('["\\uDEAD"]');
} catch (error) {
  if (error instanceof IJsonError) {
    error.rule; // "characters"
    error.position; // 2 (index of the escape)
  }
}

stringify({ a: [1, "x"] }); // '{"a":[1,"x"]}'
stringify({ a: undefined }); // throws IJsonError instead of dropping the member

parse and isIJson accept a string or UTF-8 bytes. stringify throws on anything JSON.stringify would silently drop or change: undefined, functions, symbols (as values or keys), bigints, NaN and Infinity, cycles, array holes and non-index array properties, non-plain objects (objects with toJSON are allowed), and strings with unpaired surrogates or noncharacters.

Options

| Option | Default | Effect | | --- | --- | --- | | strict | false | Also enforce the RFC 7493 SHOULD rules: a number must be written with the same value as the shortest representation of the double it parses to (no overflow, underflow, excess digits, or integer literals beyond ±(2^53−1)), and the top-level value must be an object or array. | | maxDepth | 512 | Maximum nesting of arrays and objects. |

By default only the MUST rules are enforced, since a message that breaks a SHOULD rule is still I-JSON. See docs/test-cases.md for every rule and decision.

License

MIT