middleout.js
Version:
A spoof compression library that pretends to revolutionize data compression using made-up algorithms — inspired by the legendary middle-out compression from Silicon Valley
64 lines (61 loc) • 1.68 kB
JavaScript
import {
decodeMO,
encodeMO
} from "./chunk-EKQOSSOR.js";
import {
getWeissmanScore
} from "./chunk-MRISBIOS.js";
// src/algorithms/stk.ts
function compressWithSTK(input, config) {
const preserveWhitespace = config?.preserveWhitespace ?? true;
const cleanedInput = preserveWhitespace ? input : input.replace(/\s+/g, "");
const patterns = [
{ key: "Exception", token: "T1" },
{ key: "at", token: "T2" },
{ key: "null", token: "T3" },
{ key: "undefined", token: "T4" },
{ key: "function", token: "T5" }
];
let compressed = cleanedInput;
for (const { key, token } of patterns) {
const regex = new RegExp(key, "g");
compressed = compressed.replace(regex, token);
}
const targetWeissman = config?.targetWeissman || 10;
const weissmanScore = getWeissmanScore(
"stk",
input.length,
compressed.length,
targetWeissman
);
return {
original: input,
compressed,
originalSize: input.length,
compressedSize: compressed.length,
algorithm: "stk",
weissmanScore,
encoded: encodeMO("stk", compressed, weissmanScore)
};
}
function decompressWithSTK(encoded) {
const { compressedData } = decodeMO(encoded);
const patterns = [
{ key: "Exception", token: "T1" },
{ key: "at", token: "T2" },
{ key: "null", token: "T3" },
{ key: "undefined", token: "T4" },
{ key: "function", token: "T5" }
];
let decompressed = compressedData;
for (const { key, token } of patterns) {
const regex = new RegExp(token, "g");
decompressed = decompressed.replace(regex, key);
}
return decompressed;
}
export {
compressWithSTK,
decompressWithSTK
};