0

I am relatively new to Javascript and am currently making a Violentmonkey script. In my script I have a relatively big string that I want to compress but I don't know how I would do that since most methods I found only where using external libraries (which I don't know if or how to use in Violentmonkey).

So what's the best way of compressing a string in Violentmonkey? Thanks in advance

TheMaster
  • 45,448
  • 6
  • 62
  • 85
Der_Floh
  • 129
  • 10

1 Answers1

1

You can @require a CDN link to the lz-string library, and use it to decompress a pre-encoded base64 string.

Encode your original string using LZString.compressToBase64 and store it inside the script like below:

// ==UserScript==
// @name        Display Gettysburg Address
// @namespace   Stack Overflow
// @match       https://stackoverflow.com/questions/75940976/*
// @grant       none
// @version     1.0.0
// @author      Mr. Polywhirl
// @description Displays the Gettysburg Address from a Base64 lz-string
// @require     https://cdnjs.cloudflare.com/ajax/libs/lz-string/1.4.4/lz-string.min.js
// ==/UserScript==
(function() {
  'use strict'
  const main = () => {
    const decompressedText = LZString.decompressFromBase64(compressedText.trim());
    alert(decompressedText);
  };

  // https://people.sc.fsu.edu/~jburkardt/m_src/ncm_test/gettysburg.txt
  const compressedText = `
      GIewrgTgzgxiEFMAEBDAdgEyVBA3BaSAngitKgOYhLgRIBmKALgBYLkBGE4FLTD8VjUKsAllABQcN
      E1FoC/FEnkB3Zc1Eg0AGiTSYCUfixykAG1Ed2TIqkxIMCDKJjMnSJtVYIJAB26+IFCisloeLMyoZm
      ZIALYEqIh6iG5YCACOYChmAHQSAHIgairIZMgEFCgU7qZKFCn8MEaiMSpkukwIULJoFEgqbN50rJF
      oGloS8Ha2Y6GEUNT6hsZ2WAsOTi6peujmWn0EGJAIOUgA6qWIEvH8YXUNSBzMTGbI9KIIZlgg9OGR
      bRBThckBF8HoQPEPNRHM5XJ1UH5BJpCD8/vx3p8MLoUFBUAw5NkkIhunI+r4zCgDAJhiwgsgBtQ2F
      dKmDvKI6BZ8LiRvweeo5nFRLx+JyTkgAJL8cRRTzVIYSd5MHp9dBYfwgXzsNH9ZBQWlgL4OLwscR5
      ABCYCYulq5jI1ToODQOF0JR2hDQIH4MK28IAtDq3cpPeCnQgYBA3BJ/a7XO7gxFokUkP6xLj6uBMK
      cACpsR4RsHxHTmZq9VYbFBYiQM7BMCBgCgUV5YJkIXSg5DSHDh7YhXSMOgoDggMG0JCBKaBErDEAS
      CvfOiOWuUpjZ3MqeCGlQtGIWJWvIOdXQejn7IkIeKxKwQF0RJhV3UoWwt3QcS1IEKB+T4Oj0eBy/q
      3uECC2M4zbsGKkrvriv4QBIYDcrmnKkroEZDB01BWBssLbC2UJAUgYBoO8aDiGwWDrhAADWVYmjAL
      BAbY1a/vWfAguBIIoKyLDwQwZDYNQHocGYtgVrg6AGBgpyQeIEioUy1IEdyGHILh3pwu4nj4fUpC8
      jilFnrEKByKSEhWDByA8SmgH0NwsRATgIJaPA7iOBWAZMCglHIHI4akDgWCOLgnrIhIml8q48FvFM
      AwuPR3i2CyyDeLa3QMAaMTxDixw0L8gXBRMVn/Cp7EmrwwlngsZhcZE3gOa5awJjEHr8O2DgfCYaA
      SGJpiFbyJq4rMyK6IRjh0AA4iAWLYI1HFgkoqiPOyQg/AqiBOBCyZlnyVDfmgha3L8yWahqrwvrYR
      0ICdrYKd4fiXeS116tkTXBpqECkQwtn4aQECsDkQA=
  `.replace(/\s+/g, '');

  main();
})();
Mr. Polywhirl
  • 42,981
  • 12
  • 84
  • 132