diff options
| author | Adam <[email protected]> | 2025-12-21 04:06:10 -0600 |
|---|---|---|
| committer | Adam <[email protected]> | 2025-12-21 04:06:10 -0600 |
| commit | 184643f0db48fe35dfbb32f5234bd8d28691c234 (patch) | |
| tree | 52f8eb0fb8b1bd19a09f4f187ed00e76857b527e | |
| parent | 1bce898ca72d275f3b4314e9b78d40f8a24d5f52 (diff) | |
| download | opencode-184643f0db48fe35dfbb32f5234bd8d28691c234.tar.gz opencode-184643f0db48fe35dfbb32f5234bd8d28691c234.zip | |
fix(desktop): non-latin file paths failed
| -rw-r--r-- | packages/util/src/encode.ts | 8 |
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> { |
