mirror of
https://github.com/oven-sh/bun
synced 2026-02-11 11:29:02 +00:00
## Problem The bundler's number renamer was mangling `.name` properties on crypto class prototype methods and constructors: - `hash.update.name` → `"update2"` instead of `"update"` - `verify.verify.name` → `"verify2"` instead of `"verify"` - `cipher.update.name` → `"update3"` instead of `"update"` - `crypto.Hash.name` → `"Hash2"` instead of `"Hash"` ### Root causes 1. **Named function expressions on prototypes** collided with other bindings after scope flattening (e.g. `Verify.prototype.verify = function verify(...)` collided with the imported `verify`) 2. **Block-scoped constructor declarations** (`Hash`, `Hmac`) got renamed when the bundler hoisted them out of block scope 3. **Shared function declarations** in the Cipher/Decipher block all got numeric suffixes (`update3`, `final2`, `setAutoPadding2`, etc.) ## Fix - Use `Object.assign` with object literals for prototype methods — object literal property keys correctly infer `.name` and aren't subject to the renamer - Remove unnecessary block scopes around `Hash` and `Hmac` constructors so they stay at module level and don't get renamed - Inline `Cipheriv` methods and copy references to `Decipheriv` ## Tests Added comprehensive `.name` tests for all crypto classes: Hash, Hmac, Sign, Verify, Cipheriv, Decipheriv, DiffieHellman, ECDH, plus factory functions and constructor names.
27 KiB
27 KiB