Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

@keyv/serialize-superjson keyv

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.

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