diff options
author | Divy Srivastava <dj.srivastava23@gmail.com> | 2024-06-26 06:24:58 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-26 06:24:58 -0700 |
commit | 2549e5154ceaa8246b328f204abf8d63a68d0c25 (patch) | |
tree | 378490ab4a7366c6d637e078643d48b156ef320f /ext/node/polyfills/internal_binding/_utils.ts | |
parent | 6da87450edab54f82599aacba2e696460f361212 (diff) |
perf: optimize Buffer.from("base64") for forgiving-base64 conforming input (#24346)
Diffstat (limited to 'ext/node/polyfills/internal_binding/_utils.ts')
-rw-r--r-- | ext/node/polyfills/internal_binding/_utils.ts | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/ext/node/polyfills/internal_binding/_utils.ts b/ext/node/polyfills/internal_binding/_utils.ts index a773f0a9c..74dc3cbcd 100644 --- a/ext/node/polyfills/internal_binding/_utils.ts +++ b/ext/node/polyfills/internal_binding/_utils.ts @@ -18,9 +18,13 @@ export function asciiToBytes(str: string) { } export function base64ToBytes(str: string) { - str = base64clean(str); - str = str.replaceAll("-", "+").replaceAll("_", "/"); - return forgivingBase64Decode(str); + try { + return forgivingBase64Decode(str); + } catch { + str = base64clean(str); + str = str.replaceAll("-", "+").replaceAll("_", "/"); + return forgivingBase64Decode(str); + } } const INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g; |