From 8612acfca182e1941caf0acd1a07e48ad538d2e7 Mon Sep 17 00:00:00 2001 From: Misaki Kasumi Date: Tue, 2 Jan 2024 14:51:47 +0800 Subject: [PATCH] polish --- src/polyfill.ts | 52 +++++++++++++++++++++++++++++-------------------- src/watchers.ts | 2 +- 2 files changed, 32 insertions(+), 22 deletions(-) diff --git a/src/polyfill.ts b/src/polyfill.ts index 729c27f..910e668 100644 --- a/src/polyfill.ts +++ b/src/polyfill.ts @@ -1,28 +1,38 @@ export function toBase64(array: Uint8Array | Uint8ClampedArray): string { - let base64 = ""; + const base64: string[] = []; const characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; const padding = array.length % 3; - - for (let i = 0; i < array.length - padding; i += 3) { + let i = 0; + for (; i < array.length - padding; i += 3) { const combined = (array[i] << 16) | (array[i + 1] << 8) | array[i + 2]; - base64 += - characters[(combined >> 18) & 63] + - characters[(combined >> 12) & 63] + - characters[(combined >> 6) & 63] + - characters[combined & 63]; + base64.push( + characters[(combined >>> 18) & 63], + characters[(combined >>> 12) & 63], + characters[(combined >>> 6) & 63], + characters[combined & 63], + ); } - - if (padding === 2) { - const combined = (array[array.length - 2] << 8) | array[array.length - 1]; - base64 += - characters[(combined >> 10) & 63] + - characters[(combined >> 4) & 63] + - characters[(combined << 2) & 63] + - "="; - } else if (padding === 1) { - const combined = array[array.length - 1]; - base64 += characters[(combined >> 2) & 63] + characters[(combined << 4) & 63] + "=="; + switch (padding) { + case 2: { + const combined = (array[i] << 8) | array[i + 1]; + base64.push( + characters[(combined >>> 10) & 63], + characters[(combined >>> 4) & 63], + characters[(combined << 2) & 63], + "=", + ); + break; + } + case 1: { + const combined = array[i]; + base64.push( + characters[(combined >>> 2) & 63], + characters[(combined << 4) & 63], + "=", + "=", + ); + break; + } } - - return base64; + return base64.join(""); } diff --git a/src/watchers.ts b/src/watchers.ts index 8cf9b72..af35a2d 100644 --- a/src/watchers.ts +++ b/src/watchers.ts @@ -46,7 +46,7 @@ function watchInner( return watch( source, (newV, oldV, onCleanup) => { - if (oldValue === voidSymbol) { + if (oldValue == voidSymbol) { oldValue = oldV; } return debounced(newV, onCleanup);