Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

@keyv/serialize-msgpackr keyv

High-performance MessagePack serializer for Keyv using msgpackr

build codecov GitHub license npm

@keyv/serialize-msgpackr is a serialization adapter for Keyv powered by msgpackr. It uses the MessagePack binary format for high-performance serialization with rich type support.

Supported Types

In addition to all standard JSON types, msgpackr supports:

  • Date
  • RegExp
  • Map
  • Set
  • Error
  • undefined
  • NaN, Infinity, -Infinity

Binary data is base64-encoded for compatibility with string-based storage adapters.

Installation

npm install @keyv/serialize-msgpackr

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

Usage

import Keyv from 'keyv';
import { msgpackrSerializer } from '@keyv/serialize-msgpackr';

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

// 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

KeyvMsgpackrSerializer

A class that implements the KeyvSerializationAdapter interface from keyv.

import { KeyvMsgpackrSerializer } from '@keyv/serialize-msgpackr';

const serializer = new KeyvMsgpackrSerializer();

stringify(object: unknown): string

Serializes a value to a base64-encoded MessagePack string using msgpackr.

parse<T>(data: string): T

Deserializes a base64-encoded MessagePack string back to its original value with all types restored.

msgpackrSerializer

A default KeyvMsgpackrSerializer instance, ready to use.

import { msgpackrSerializer } from '@keyv/serialize-msgpackr';

License

MIT © Jared Wray