UNPKG

key-value-compress

Version:

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

62 lines (61 loc) 1.68 kB
"use strict"; /** * _util.ts */ Object.defineProperty(exports, "__esModule", { value: true }); exports.base64KVS = exports.concatBuffer = exports.splitBuffer = exports.digestBuffer = void 0; const crypto = require("crypto"); const _transform_1 = require("./_transform"); /** * generate digest hash string for Buffer */ function digestBuffer(algorithm, chunk) { return crypto.createHash(algorithm).update(chunk).digest("hex"); } exports.digestBuffer = digestBuffer; /** * split a large Buffer to smaller chunks */ function splitBuffer(buffer, chunkSize) { const chunks = []; let start = 0; const total = buffer.length; if (total < chunkSize) return [buffer]; while (start < total) { const end = Math.min(start + chunkSize, total); const chunk = buffer.slice(start, end); chunks.push(chunk); start = end; } return chunks; } exports.splitBuffer = splitBuffer; /** * concatenate Buffer chunks to a single Buffer */ function concatBuffer(chunks) { if (!chunks) return; if (chunks.length === 1) { return chunks[0]; // single chunk } else { return Buffer.concat(chunks); // multiple chunks } } exports.concatBuffer = concatBuffer; /** * transform key-value storage to encode Buffer to base64 string, and vice versa */ function base64KVS(storage, encoding) { if (!encoding) encoding = "base64"; return (0, _transform_1.encodeKVS)(storage, { // Buffer to base64 encode: buf => buf.toString(encoding), // base64 to Buffer decode: str => Buffer.from(str || "", encoding), }); } exports.base64KVS = base64KVS;