durabull
Version:
A durable workflow engine built on top of BullMQ and Redis
54 lines (53 loc) • 1.4 kB
JavaScript
;
/**
* 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;