yuzutech / kroki

Creates diagrams from textual descriptions!
https://kroki.io
MIT License
2.87k stars 211 forks source link

Mention that pako v2 removed the option `{ to: 'string' }` on deflate #593

Open ggrossetie opened 3 years ago

ggrossetie commented 3 years ago

Since pako v2 removed the option { to: 'string' } on deflate, we should update the documentation to suggest an alternative.

With pako v2, it's possible to use https://npmjs.com/package/base64-js to convert a bytes array (Uint8Array) to base64:

<script src="https://unpkg.com/pako@2.0.3/dist/pako_deflate.min.js"></script>
<script src="https://unpkg.com/base64-js@1.5.1/base64js.min.js"></script>
var diagramSource = 'digraph G { Hello->World }'

var data = textEncode(diagramSource) 
var buffer = pako.deflate(data, { level: 9 }) 
var result = base64js.fromByteArray(buffer)
  .replace(/\+/g, '-')
  .replace(/\//g, '_') 

https://docs.kroki.io/kroki/setup/encode-diagram/#javascript

frafra commented 1 year ago

There is no need to use replace with the newer versions of Base64 (there is a boolean parameter for that).

Example:

<script type="module">
import pako from 'https://cdn.jsdelivr.net/npm/pako@2/+esm';
import { Base64 } from 'https://cdn.jsdelivr.net/npm/js-base64@3/base64.mjs';

var diagramSource = 'digraph G { Hello->World }';
var data = new TextEncoder('utf-8').encode(diagramSource);
var buffer= pako.deflate(data, { level: 9 });
var result = Base64.fromUint8Array(buffer, true);
</script>