summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAdam <[email protected]>2025-12-21 04:06:10 -0600
committerAdam <[email protected]>2025-12-21 04:06:10 -0600
commit184643f0db48fe35dfbb32f5234bd8d28691c234 (patch)
tree52f8eb0fb8b1bd19a09f4f187ed00e76857b527e
parent1bce898ca72d275f3b4314e9b78d40f8a24d5f52 (diff)
downloadopencode-184643f0db48fe35dfbb32f5234bd8d28691c234.tar.gz
opencode-184643f0db48fe35dfbb32f5234bd8d28691c234.zip
fix(desktop): non-latin file paths failed
-rw-r--r--packages/util/src/encode.ts8
1 files changed, 6 insertions, 2 deletions
diff --git a/packages/util/src/encode.ts b/packages/util/src/encode.ts
index cc40fbe9d..fc1f783bf 100644
--- a/packages/util/src/encode.ts
+++ b/packages/util/src/encode.ts
@@ -1,9 +1,13 @@
export function base64Encode(value: string) {
- return btoa(value).replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, "")
+ const bytes = new TextEncoder().encode(value)
+ const binary = Array.from(bytes, (b) => String.fromCharCode(b)).join("")
+ return btoa(binary).replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, "")
}
export function base64Decode(value: string) {
- return atob(value.replace(/-/g, "+").replace(/_/g, "/"))
+ const binary = atob(value.replace(/-/g, "+").replace(/_/g, "/"))
+ const bytes = Uint8Array.from(binary, (c) => c.charCodeAt(0))
+ return new TextDecoder().decode(bytes)
}
export async function hash(content: string, algorithm = "SHA-256"): Promise<string> {