easy-compress

Compress known sequences of chars a bit to lower the traffic between two devices. This is not really that practical, I just wanted to make my own compression for some reason.

Usage no npm install needed!

<script type="module">
  import easyCompress from 'https://cdn.skypack.dev/easy-compress';
</script>

README

ez-compress

Compress known sequences of chars a bit to lower the traffic between two devices. This is not really that practical, I just wanted to make my own compression for some reason.









Installation:

npm i --save ez-compress





Usage:

const ez = require("ez-compress");
const rawHTML = `
<!DOCTYPE html>
<html>
    <body>
        <div>Hello World!</div>
    </body>
</html>
`;

var compressedHTML = ez.encode.HTML(rawHTML);

/*   RESULT:
`
%¤?S%¤hd>
¤hh>
¤hº¤hb>
¤h¦¤hvHello World!¤hV
¤hº¤hB>
¤hH>
`
*/




Compressing multiple languages:

const ez = require("ez-compress");
const rawHTML = fs.readFileSync("./index.html"); // big HTML file with HTML, CSS and JS

var compressedHTML = ez.encode.HTML(ez.encode.CSS(ez.encode.JS(rawHTML)));

// WARNING!
// decode in the same sequence, else problems might occur
// example for this one:

var decompressedHTML = ez.decode.HTML(ez.decode.CSS(ez.decode.JS(compressedHTML)));




Changing the default char:

ez.changeChar("¥"); // this makes the package use "\u00A5" instead of the default "\u00A4" character
// (old compressions that use this char (¤) can't be decompressed with the new char)
// (to find out the char, parse the first line of the data which contains a known sequence that contains the char (see below for more info))
// best option is a char that is as high up as possible on this list (https://unicode-table.com/) and that doesn't at all occur in your to-be-compressed data









Supported Languages:

  • Web:
    • HTML
    • JS
    • CSS









Planned Languages:

  • Backend-JS (Node)
  • PHP




















Sequences:

Beginning of File/String/Whatever was encoded: %$?S% (gets added and removed automatically, $ contains the escape char)
Syntax: $lc

  • $: the set / default (¤) escape char
  • l: the language char from the table below
  • c: a character from one of the js files in the regexes folder
    (%, ? and S are fixed chars)

Language Chars:

Language Char
HTML h
Web-JavaScript j
CSS c

Planned:

Language Char
PHP p
NodeJS J