From 01ea68928318873782d74b2eab50c65642208def Mon Sep 17 00:00:00 2001 From: Johnathon Selstad Date: Thu, 8 May 2025 23:45:05 -0700 Subject: [PATCH 1/2] Get JSZip Compression Working --- public/js/main.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/public/js/main.js b/public/js/main.js index 563039b..b006e46 100644 --- a/public/js/main.js +++ b/public/js/main.js @@ -159,7 +159,10 @@ function editorMain() { fileData += ' \n \n \n'; } else if (document.getElementById('offlinePack').checked) { data['EJS_gameUrl'] = 'new Blob([Uint8Array.from(atob(window.gameData), (m) => m.codePointAt(0))])'; - var b = bytesToBase64(new Uint8Array(await (new Blob([file])).arrayBuffer())); + let tempZip = new JSZip(); + tempZip.file(file.name, new Blob([file])); + let zippedBlob = await tempZip.generateAsync({ type: 'blob', compression: "DEFLATE"}); + var b = bytesToBase64(new Uint8Array(await (zippedBlob).arrayBuffer())); var a = spaces + 'window.gameData = `' + b + '`;\n'; fileData += a; for (var k in data) { @@ -173,7 +176,10 @@ function editorMain() { zipOut = false; } else { data['EJS_gameUrl'] = 'new Blob([Uint8Array.from(atob(window.gameData), (m) => m.codePointAt(0))])'; - var b = bytesToBase64(new Uint8Array(await (new Blob([file])).arrayBuffer())); + let tempZip = new JSZip(); + tempZip.file(file.name, new Blob([file])); + let zippedBlob = await tempZip.generateAsync({ type: 'blob', compression: "DEFLATE"}); + var b = bytesToBase64(new Uint8Array(await (zippedBlob).arrayBuffer())); zip.file('gameData.js', 'window.gameData = `' + b + '`\n'); for (var k in data) { if (data[k] === true || data[k] === false || k === 'EJS_gameUrl') { @@ -194,7 +200,7 @@ function editorMain() { zip.file('index.html', new Blob([fileData])); document.getElementById('select2').style = 'display:none;'; document.getElementById('zipStatus').style = 'display:block;'; - zip.generateAsync({ type: 'blob' }, function updateCallback(metadata) { + zip.generateAsync({ type: 'blob', compression: "DEFLATE" }, function updateCallback(metadata) { var zipStatus = metadata.percent.toFixed(2) + '%'; document.getElementById('zs1').innerHTML = ' ' + zipStatus + ' '; document.getElementById('zs1').value = metadata.percent.toFixed(2); From 7cdcc2b8355a68910549e854c29ed51479b1a170 Mon Sep 17 00:00:00 2001 From: Johnathon Selstad Date: Thu, 8 May 2025 23:49:36 -0700 Subject: [PATCH 2/2] Simplify the base64 translation --- public/js/main.js | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/public/js/main.js b/public/js/main.js index b006e46..a25b41f 100644 --- a/public/js/main.js +++ b/public/js/main.js @@ -161,8 +161,7 @@ function editorMain() { data['EJS_gameUrl'] = 'new Blob([Uint8Array.from(atob(window.gameData), (m) => m.codePointAt(0))])'; let tempZip = new JSZip(); tempZip.file(file.name, new Blob([file])); - let zippedBlob = await tempZip.generateAsync({ type: 'blob', compression: "DEFLATE"}); - var b = bytesToBase64(new Uint8Array(await (zippedBlob).arrayBuffer())); + var b = await tempZip.generateAsync({ type: 'base64', compression: "DEFLATE"}); var a = spaces + 'window.gameData = `' + b + '`;\n'; fileData += a; for (var k in data) { @@ -178,8 +177,7 @@ function editorMain() { data['EJS_gameUrl'] = 'new Blob([Uint8Array.from(atob(window.gameData), (m) => m.codePointAt(0))])'; let tempZip = new JSZip(); tempZip.file(file.name, new Blob([file])); - let zippedBlob = await tempZip.generateAsync({ type: 'blob', compression: "DEFLATE"}); - var b = bytesToBase64(new Uint8Array(await (zippedBlob).arrayBuffer())); + var b = await tempZip.generateAsync({ type: 'base64', compression: "DEFLATE"}); zip.file('gameData.js', 'window.gameData = `' + b + '`\n'); for (var k in data) { if (data[k] === true || data[k] === false || k === 'EJS_gameUrl') { @@ -271,10 +269,3 @@ function copy(textareaId) { textarea.select(); document.execCommand('copy'); } - -function bytesToBase64(bytes) { - const binString = Array.from(bytes, (byte) => - String.fromCodePoint(byte), - ).join(""); - return btoa(binString); -}