SuperJSON-based serializer for Keyv with support for Date, Map, Set, BigInt, RegExp, and more
@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:
DateRegExpMapSetBigIntundefinedErrorURL
Installation
npm install @keyv/serialize-superjson
Note:
keyvis 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';