UNPKG

key-value-compress

Version:

Key-Value interface to deflate, split, concatenate and inflate storage.

56 lines (55 loc) 1.73 kB
"use strict"; /** * _transform.ts */ Object.defineProperty(exports, "__esModule", { value: true }); exports.stringifyKVS = exports.encodeKVS = exports.keyFilterKVS = exports.namespaceKVS = void 0; /** * wrap key-value storage to prepend a prefix string for storage keys */ function namespaceKVS(storage, prefix) { if (!prefix) return storage; return keyFilterKVS(storage, key => prefix + key); } exports.namespaceKVS = namespaceKVS; function keyFilterKVS(storage, filter) { const out = {}; out.get = (key) => storage.get(filter(key)); out.set = (key, value) => storage.set(filter(key), value); if (storage.delete) out.delete = (key) => storage.delete(filter(key)); if (storage.has) out.has = (key) => storage.has(filter(key)); return out; } exports.keyFilterKVS = keyFilterKVS; /** * transform key-value storage to apply encode() and decode() methods */ function encodeKVS(storage, filter) { const out = {}; out.get = async (key) => { const value = await storage.get(key); if ("undefined" === typeof value) return; return filter.decode(value); }; out.set = async (key, value) => storage.set(key, filter.encode(value)); if (storage.delete) out.delete = async (key) => storage.delete(key); if (storage.has) out.has = async (key) => storage.has(key); return out; } exports.encodeKVS = encodeKVS; /** * transform key-value storage to apply stringify() and parse() methods */ function stringifyKVS(storage, filter) { return encodeKVS(storage, { encode: value => filter.stringify(value), decode: value => filter.parse(value), }); } exports.stringifyKVS = stringifyKVS;