@keyv/serialize-superjson

SuperJSON-based serializer for Keyv with support for Date, Map, Set, BigInt, RegExp, and more

build codecov GitHub license npm

@keyv/serialize-superjson is a serialization adapter for Keyv powered by SuperJSON. It preserves JavaScript types that standard JSON does not support.

Table of Contents

Supported Types

In addition to all standard JSON types, SuperJSON supports:

  • Date
  • RegExp
  • Map
  • Set
  • BigInt
  • undefined
  • Error
  • URL

Installation

npm install @keyv/serialize-superjson

Note: keyv is a peer dependency and must be installed alongside this package.

Usage

import Keyv from 'keyv';
import { superJsonSerializer } from '@keyv/serialize-superjson';

const keyv = new Keyv({ serialization: superJsonSerializer });

// Store a Date — it comes back as a Date, not a string
await keyv.set('date', new Date('2024-01-15'));
const date = await keyv.get('date');
console.log(date instanceof Date); // true

// Store a Map
await keyv.set('map', new Map([['a', 1], ['b', 2]]));
const map = await keyv.get('map');
console.log(map instanceof Map); // true
console.log(map.get('a')); // 1

// Store a Set
await keyv.set('set', new Set([1, 2, 3]));
const set = await keyv.get('set');
console.log(set instanceof Set); // true

API

KeyvSuperJsonSerializer

A class that implements the KeyvSerializationAdapter interface from keyv.

import { KeyvSuperJsonSerializer } from '@keyv/serialize-superjson';

const serializer = new KeyvSuperJsonSerializer();

stringify(object: unknown): string

Serializes a value to a JSON string using SuperJSON, preserving type information.

parse<T>(data: string): T

Deserializes a SuperJSON string back to its original value with all types restored.

superJsonSerializer

A default KeyvSuperJsonSerializer instance, ready to use.

import { superJsonSerializer } from '@keyv/serialize-superjson';

License

MIT © Jared Wray

Edit this page