From 3aee2f4057c8f7c694c2cc408e667104c95b81aa Mon Sep 17 00:00:00 2001 From: Richard Snider Date: Wed, 10 Jun 2026 12:20:33 -0600 Subject: [PATCH 1/2] make bundle script write in ordered chunks --- bundle.mjs | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/bundle.mjs b/bundle.mjs index fb1e842b..c7547ffa 100644 --- a/bundle.mjs +++ b/bundle.mjs @@ -1,4 +1,5 @@ import * as fs from "node:fs/promises"; +import { createWriteStream } from "node:fs"; import * as process from "node:process"; import * as fflate from "fflate"; @@ -34,17 +35,22 @@ if (process.argv.length > 2) { } const filename = `CCMultiworldRandomizer-${versionString}.ccmod`; -const outfile = await fs.open(filename, "w"); +const outfile = createWriteStream(filename); -const zipfile = new fflate.Zip((err, data, final) => { - if (err) { - console.error(err); - return; - } - outfile.write(data); - if (final) { - outfile.close(); - } +const zipfile = new fflate.Zip(); + +const finishedPromise = new Promise((res, rej) => { + zipfile.ondata = (err, data, final) => { + if (err) { + console.error(err); + rej(err); + } + outfile.write(data); + if (final) { + outfile.close(); + res(); + } + }; }); for (const path of files) { @@ -74,3 +80,5 @@ for (const dir of directories) { } zipfile.end(); + +await finishedPromise; From 3865d1ed835046995f1dfa5f4f53407d0fa3269a Mon Sep 17 00:00:00 2001 From: Richard Snider Date: Wed, 10 Jun 2026 12:49:16 -0600 Subject: [PATCH 2/2] remove wrapper added to guarantee writing at end of file --- bundle.mjs | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/bundle.mjs b/bundle.mjs index c7547ffa..382a3f2a 100644 --- a/bundle.mjs +++ b/bundle.mjs @@ -37,20 +37,15 @@ if (process.argv.length > 2) { const filename = `CCMultiworldRandomizer-${versionString}.ccmod`; const outfile = createWriteStream(filename); -const zipfile = new fflate.Zip(); - -const finishedPromise = new Promise((res, rej) => { - zipfile.ondata = (err, data, final) => { - if (err) { - console.error(err); - rej(err); - } - outfile.write(data); - if (final) { - outfile.close(); - res(); - } - }; +const zipfile = new fflate.Zip((err, data, final) => { + if (err) { + console.error(err); + return; + } + outfile.write(data); + if (final) { + outfile.close(); + } }); for (const path of files) { @@ -80,5 +75,3 @@ for (const dir of directories) { } zipfile.end(); - -await finishedPromise;