From a0e983d5c3bcc7979c679685bc97bc99a697e4f7 Mon Sep 17 00:00:00 2001 From: Reimar Date: Thu, 16 Oct 2025 08:35:34 +0200 Subject: [PATCH] fix saving file on chrome --- src/karlkoder_codec.js | 8 +++----- src/utils.js | 13 +++++++++++++ 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/karlkoder_codec.js b/src/karlkoder_codec.js index da694f7..71bf407 100644 --- a/src/karlkoder_codec.js +++ b/src/karlkoder_codec.js @@ -1,3 +1,5 @@ +import { readFileToBytes, strToBytes } from "./utils.js"; + const KEYWORDS = ["asset", "code"]; const MIN_KW_LENGTH = Math.min(...KEYWORDS.map((x) => x.length)); const MAX_KW_LENGTH = Math.max(...KEYWORDS.map((x) => x.length)); @@ -8,10 +10,6 @@ function isKeyword(buffer) { return KEYWORDS.includes(kw); } -function strToBytes(str) { - return str.split("").map((x) => x.charCodeAt(0)); -} - export class KarlkoderCodec { static async en(name, code, assets) { const ret = []; @@ -25,7 +23,7 @@ export class KarlkoderCodec { ret.push(...strToBytes(";")); ret.push(...strToBytes(asset.name)); ret.push(...strToBytes(asset.file.type)); - ret.push(...await asset.file.bytes()); + ret.push(...await readFileToBytes(asset.file)); } ret.push(...strToBytes("code")); ret.push(...strToBytes(name.length.toString())); diff --git a/src/utils.js b/src/utils.js index 5f5dd43..4e71c0c 100644 --- a/src/utils.js +++ b/src/utils.js @@ -18,3 +18,16 @@ export function minifyJs(code) { .filter((line) => line.length > 0) .join("\n"); } + +export function strToBytes(str) { + return str.split("").map((x) => x.charCodeAt(0)); +} + +export function readFileToBytes(file) { + return new Promise((resolve, reject) => { + const reader = new FileReader(); + reader.readAsArrayBuffer(file); + reader.onload = () => resolve(new Uint8Array(reader.result)); + reader.onerror = () => reject(reader.error); + }); +}