UNPKG

durabull

Version:

A durable workflow engine built on top of BullMQ and Redis

54 lines (53 loc) 1.4 kB
"use strict"; /** * Pluggable serializers for data persistence */ Object.defineProperty(exports, "__esModule", { value: true }); exports.getSerializer = exports.Base64Serializer = exports.JsonSerializer = void 0; /** * JSON serializer (default) */ class JsonSerializer { serialize(data) { if (data === undefined) { return JSON.stringify({ __type: 'undefined' }); } return JSON.stringify(data); } deserialize(str) { const parsed = JSON.parse(str); if (parsed && typeof parsed === 'object' && parsed.__type === 'undefined') { return undefined; } return parsed; } } exports.JsonSerializer = JsonSerializer; /** * Base64-encoded JSON serializer */ class Base64Serializer { serialize(data) { const json = JSON.stringify(data); return Buffer.from(json).toString('base64'); } deserialize(str) { const json = Buffer.from(str, 'base64').toString('utf-8'); return JSON.parse(json); } } exports.Base64Serializer = Base64Serializer; /** * Get serializer by name */ function getSerializer(name = 'json') { switch (name) { case 'json': return new JsonSerializer(); case 'base64': return new Base64Serializer(); default: return new JsonSerializer(); } } exports.getSerializer = getSerializer;