| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 | // Finalize Nodejs Script// 1 - Append JS in HTML Document// 2 - Gzip HTML// 3 - Covert to Raw Bytes// 4 - ( Save to File: webpage.h ) in dist Folderconst fs = require('fs');const zlib = require('zlib');const { gzip } = require('@gfx/zopfli');function getByteArray(file){    let fileData = file.toString('hex');    let result = [];    for (let i = 0; i < fileData.length; i+=2)      result.push('0x'+fileData[i]+''+fileData[i+1]);    return result;}let js = fs.readFileSync(__dirname+'/dist/js/app.js');let html = `<!DOCTYPE html><html lang="en">  <head>    <meta charset="utf-8">    <meta http-equiv="X-UA-Compatible" content="IE=edge">    <meta name="viewport" content="width=device-width,initial-scale=1.0">    <title>WebSerial</title>    <script data-name="BMC-Widget" async src="https://cdnjs.buymeacoffee.com/1.0.0/widget.prod.min.js" data-id="6QGVpSj" data-description="Support me on Buy me a coffee!" data-message="You can always support my work by buying me a coffee!" data-color="#FF813F" data-position="right" data-x_margin="24" data-y_margin="24"></script>  </head>  <body>    <noscript>      <strong>We're sorry but WebSerial doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>    </noscript>    <div id="app"></div>    <script>${js}</script>  </body></html>`;// Gzip the index.html file with JS Code.const gzippedIndex = zlib.gzipSync(html, {'level': zlib.constants.Z_BEST_COMPRESSION});let indexHTML = getByteArray(gzippedIndex);let source = `const uint32_t WEBSERIAL_HTML_SIZE = ${indexHTML.length};const uint8_t WEBSERIAL_HTML[] PROGMEM = { ${indexHTML} };`;fs.writeFileSync(__dirname+'/dist/webpage.h', source, 'utf8');// Produce a second variant with zopfli// Zopfli is a improved zip algorithm by google// Takes much more time and maybe is not available on every machineconst input =  html;gzip(input, {numiterations: 15}, (err, output) => {    indexHTML = output;    let source =`const uint32_t WEBSERIAL_HTML_SIZE = ${indexHTML.length};const uint8_t WEBSERIAL_HTML[] PROGMEM = { ${indexHTML} };`;  fs.writeFileSync(__dirname + '/dist/webpage_zopfli.h', source, 'utf8');});
 |