summaryrefslogtreecommitdiff
path: root/ext/node/polyfills/internal_binding/_utils.ts
diff options
context:
space:
mode:
authorDivy Srivastava <dj.srivastava23@gmail.com>2024-06-26 06:24:58 -0700
committerGitHub <noreply@github.com>2024-06-26 06:24:58 -0700
commit2549e5154ceaa8246b328f204abf8d63a68d0c25 (patch)
tree378490ab4a7366c6d637e078643d48b156ef320f /ext/node/polyfills/internal_binding/_utils.ts
parent6da87450edab54f82599aacba2e696460f361212 (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.ts10
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;