Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
131 commits
Select commit Hold shift + click to select a range
f6509f5
Bump node-fetch from 2.6.1 to 2.6.7
dependabot[bot] Jan 29, 2022
f075a0e
Added `stringArrayCallsTransform` and `stringArrayCallsTransformThres…
sanex3339 Feb 5, 2022
ec12ffc
`stringArrayCallsTransform` is disabled in `default` preset
sanex3339 Feb 5, 2022
bbeadad
Updated default preset section in README.md
sanex3339 Feb 5, 2022
711a135
Updated option normalizers for `stringArrayCallsTransform` option
sanex3339 Feb 5, 2022
e540103
Increased memory amount for memory test
sanex3339 Feb 5, 2022
618c0a0
Version update to 3.2.0
sanex3339 Feb 5, 2022
006375d
Updated copyrights
sanex3339 Feb 5, 2022
56955ae
3.2.1 version
sanex3339 Feb 5, 2022
fd869ca
remove duplicate stringArray
BlackYuzia Feb 5, 2022
8d259dc
Merge pull request #1048 from BlackYuzia/master
sanex3339 Feb 5, 2022
2e0ce8a
Updated seed view when tests are failing
sanex3339 Feb 6, 2022
588d615
Merge remote-tracking branch 'origin/master'
sanex3339 Feb 6, 2022
cd4bf15
Fixed zero threshold case for string array storage analyze
sanex3339 Feb 6, 2022
ce98e68
Merge pull request #1042 from javascript-obfuscator/dependabot/npm_an…
sanex3339 Feb 6, 2022
40eec61
Dependencies update 2022-02-06
sanex3339 Feb 6, 2022
77f64bf
Fixed wrong generation of code that has statements after `ReturnStatm…
sanex3339 Feb 6, 2022
ec4b70f
String array calls transform fix (#1050)
sanex3339 Feb 7, 2022
edc2a22
Replaced @nuxtjs/opencollective on opencollective-postinstall
sanex3339 Feb 7, 2022
2095d47
Dead code injection transformer ignores PrivateIdentifier nodes (#1057)
sanex3339 Feb 9, 2022
b99b6a4
Improved integration between `renameProperties` and `controlFlowFlatt…
sanex3339 Feb 12, 2022
92535aa
Added .mjs and .cjs support (#1059)
seho-dev Feb 12, 2022
496a610
`.cjs` file support for config files
sanex3339 Feb 12, 2022
c4dae41
Bump ajv from 6.12.0 to 6.12.6 (#1061)
dependabot[bot] Feb 12, 2022
30ba697
Fixed cases when dead code is added to the inner code of `eval` expre…
sanex3339 Feb 14, 2022
e8e92c6
`debugProtectionInteraval` option now accepts value in milliseconds i…
sanex3339 Feb 14, 2022
0f63eba
Fixed typo in CHANGELOG.md
sanex3339 Feb 14, 2022
6f669f4
Removed some donation options
sanex3339 Mar 13, 2022
ce5ab51
Removed some donation options #2
sanex3339 Mar 13, 2022
88bfc0e
Update incorrect 'ignoreRequireImports' to 'ignoreImports' (#1086)
fuka-g May 7, 2022
30fa60f
Update README.md
sanex3339 Aug 9, 2022
fae8105
Update README.md
sanex3339 Jan 25, 2023
b55c7db
Bump class-validator from 0.13.2 to 0.14.0 (#1146)
billsykes Feb 10, 2023
61c9fd1
Bump json5 from 1.0.1 to 1.0.2 (#1138)
dependabot[bot] Feb 10, 2023
1b840fa
4.0.1 version
sanex3339 Feb 11, 2023
0dddaa8
Bump decode-uri-component from 0.2.0 to 0.2.2 (#1133)
dependabot[bot] Feb 11, 2023
1db729c
Update sponsor links
sanex3339 Feb 11, 2023
0c3b192
Merge remote-tracking branch 'origin/master'
sanex3339 Feb 11, 2023
2f1b290
Dependencies update (#1148)
sanex3339 Feb 12, 2023
d7f7393
Remove open-collective links back
sanex3339 Mar 18, 2023
662b239
Update README.md
sanex3339 Jun 11, 2023
26a8dd9
Update FUNDING.yml
sanex3339 Aug 8, 2023
c7d4f9c
Update README.md
sanex3339 Aug 8, 2023
54cbdf6
Add target 'service-worker' (#1134)
fohletex Sep 5, 2023
5154057
Better use of cross-env (#1171)
mkafrin Sep 5, 2023
712c319
add snowpack plugin link (#1064)
Markshall Sep 5, 2023
1000402
Version update to 4.1.0
sanex3339 Sep 5, 2023
0c1c432
Update README.md
sanex3339 Jun 14, 2024
07ec287
Fixed Grammatical Error in README.md (#1249)
smell-of-curry Jun 14, 2024
4e4efb7
Support new nodejs version (#1261)
sanex3339 Jun 15, 2024
f886c6c
Update class-validator and version (#1262)
sanex3339 Jun 15, 2024
828a190
Update CHANGELOG.md
sanex3339 Jun 15, 2024
d5497db
Add claude.md file (#1326)
sanex3339 Oct 30, 2025
39f7ff4
Update dependencies (#1327)
sanex3339 Oct 30, 2025
6640907
Speedup ObjectExpressionKeysTransformer.ts (#1331)
sanex3339 Nov 29, 2025
64edd44
Revert 5683e75 (#1332)
sanex3339 Nov 29, 2025
bb9b33f
fix: .mjs and .cjs in availableInputExtensions (#1301)
F33RNI Nov 29, 2025
145746c
Update CHANGELOG.md
sanex3339 Nov 29, 2025
301b049
Don't publish root index.ts files to NPM as we have typings (#1333)
sanex3339 Nov 29, 2025
b36951a
Fix control flow flattening + optional chaining compatibility (#1334)
sanex3339 Nov 29, 2025
cd63f59
Don't obfuscate import.meta.* (#1335)
sanex3339 Nov 29, 2025
9643763
Fix error when ClassExpression is the CallExpression callee (#1336)
sanex3339 Nov 29, 2025
f5f2cbc
Version update
sanex3339 Nov 29, 2025
01465a2
Version update
sanex3339 Nov 30, 2025
4ee4b21
Add prettier (#1339)
sanex3339 Dec 3, 2025
64e14eb
Adjust precommit hook
sanex3339 Dec 3, 2025
3bb9b18
Downgrade multimatch (#1341)
sanex3339 Dec 4, 2025
4f3a456
Add Async PRO API (#1343)
sanex3339 Dec 6, 2025
d7114b7
Don't run tests on build
sanex3339 Dec 6, 2025
4ac3368
Version 5.0.1 (#1344)
sanex3339 Dec 7, 2025
6866396
Add `version` parameter to the `apiConfig` to use different versions …
sanex3339 Dec 13, 2025
12aff3c
Optimize performance (#1355)
sanex3339 Dec 16, 2025
1c2d8bd
Update readme
sanex3339 Dec 22, 2025
a86314d
Update readme #2
sanex3339 Dec 22, 2025
90362a2
Update readme #3
sanex3339 Dec 22, 2025
c844f97
Ignore transformation of `process.env.*` (#1367)
sanex3339 Jan 6, 2026
311799e
Add vmPreprocessIdentifiers to the readme
sanex3339 Jan 25, 2026
2be7035
Add strictMode to the readme
sanex3339 Jan 25, 2026
99c635a
Fixed `controlFlowFlattening` breaking short-circuit evaluation with …
sanex3339 Jan 27, 2026
3848bca
Backport some fixes from Pro version (#1374)
sanex3339 Jan 27, 2026
44028a1
Fixed `transformObjectKeys` incorrectly hoisting object literal outsi…
sanex3339 Jan 27, 2026
ccece3f
Fixed parsing error when `await` is used as an identifier in non-asyn…
sanex3339 Jan 27, 2026
05aacd9
Fixed `deadCodeInjection` causing SyntaxError when `arguments` from c…
sanex3339 Jan 27, 2026
999e93c
Fixed `transformObjectKeys` with `mangled` identifier generator causi…
sanex3339 Jan 27, 2026
6864328
Fix identifiers generation (#1378)
sanex3339 Jan 27, 2026
25427bc
Add Pro API support to CLI including support for large files obfuscat…
sanex3339 Feb 3, 2026
22d090a
Set version 5.3.0 to beta
sanex3339 Feb 3, 2026
0a06d29
Set version 5.3.0 to stable
sanex3339 Feb 4, 2026
7792fb0
Fixed class expression name references inside class body being incorr…
sanex3339 Mar 21, 2026
1aadbac
Replace mkdirp with native fs.mkdirSync({ recursive: true }) (#1384)
roli-lpci Mar 22, 2026
560212c
Add import attributes support (#1388)
sanex3339 Mar 22, 2026
1385963
Remove removed in Pro@6.0.0 options from README.md
sanex3339 Mar 22, 2026
2246099
Fixed `reservedNames` not preserving class method and property names …
sanex3339 Mar 22, 2026
8ade200
Remove `conf` package in favor of a custom implementation (#1391)
sanex3339 Mar 22, 2026
bac513e
Fix `transformObjectKeys` to preserve evaluation order in sequence ex…
sanex3339 Mar 22, 2026
e1d9435
Fixed infinite loop / stack overflow when `reservedNames` patterns ma…
sanex3339 Mar 22, 2026
d8db023
Add `renameProperties` support for private class fields and methods (…
sanex3339 Mar 22, 2026
b4993e6
Fix coveralls error on CI (#1394)
sanex3339 Mar 22, 2026
aa3c9fd
Fixed CLI `--options-preset` not applying preset values for options n…
sanex3339 Mar 22, 2026
2ec6e13
Fixed destructuring patterns inside class static blocks not being ren…
sanex3339 Mar 22, 2026
6659c82
Add domain lock case with `-` char
sanex3339 Mar 22, 2026
84861e8
Updated reserved DOM properties list (#1397)
sanex3339 Mar 22, 2026
8a67a82
Fixed missing space between keywords (`return`, `throw`, `typeof`) an…
sanex3339 Mar 22, 2026
fb74744
Removed `source-map-support` runtime dependency (#1399)
sanex3339 Mar 22, 2026
459fb31
Fix domain lock to be case-insensitive by normalizing domain values t…
sanex3339 Mar 22, 2026
dd62fea
Make `Utils.nodeRequire` lazy-evaluated to avoid ReferenceError in br…
sanex3339 Mar 22, 2026
ea26067
Add Vite plugin to README (#1402)
z0ffy Mar 23, 2026
6a31817
Update VM options
sanex3339 Apr 2, 2026
1857849
Fix self-defending obfuscated code hanging in Bun environments (#1407)
sanex3339 Apr 17, 2026
e2abba3
Update readme
sanex3339 Apr 24, 2026
4ebced3
Inversify v7 migration (#1368)
notaphplover Apr 27, 2026
10c763f
Add reference letter mention
sanex3339 Apr 27, 2026
a4ed355
Fixed `controlFlowFlattening` occasionally dropping the `?.` short-ci…
sanex3339 May 21, 2026
7035494
Update acorn version (#1411)
sanex3339 Jun 10, 2026
8be923d
Optimize scope identifiers transformer performance (#1417)
filipsobol Jul 9, 2026
0044334
Reuse scope analysis between identifier transformers (#1418)
filipsobol Jul 9, 2026
fecc145
Fixed `SyntaxError` when obfuscating a class that extends a boolean l…
cycsmail Jul 9, 2026
c6d0872
Update changelog
sanex3339 Jul 9, 2026
5e95732
Fixed `controlFlowFlattening` intermittently dropping arguments of a …
sanex3339 Jul 9, 2026
f3d0a64
Fixed `selfDefending` making obfuscated code run several times slower…
sanex3339 Jul 9, 2026
a3df841
Fixed dropped parentheses around an `in` operator inside an arrow bod…
sanex3339 Jul 9, 2026
f180550
Fixed unicode (`\uXXXX`, `\u{XXXX}`) and hex (`\xXX`) escape sequence…
sanex3339 Jul 9, 2026
09b2ff1
Fixed `URIError: URI malformed` crash when `stringArray` with `base64…
sanex3339 Jul 10, 2026
4626dd5
Fixed `sourceMapFileName` ending in `.js.map` (e.g. `foo.min.js.map`)…
sanex3339 Jul 10, 2026
1bdaa51
Bumped the production `brace-expansion` transitive dependency to a pa…
sanex3339 Jul 10, 2026
ecbffd8
Fixed CLI `--config` failures hiding the real cause behind a generic …
sanex3339 Jul 10, 2026
35860ec
Fixed directory obfuscation with a set `sourceMapFileName` making all…
sanex3339 Jul 10, 2026
d250166
Add esbuild plugin link
sanex3339 Jul 15, 2026
45ad03b
Reworked large file uploads (#1438)
sanex3339 Jul 17, 2026
c948c1b
docs: pair the two npm-only command blocks in CLAUDE.md with their ya…
NieZhuZhu Jul 29, 2026
8cfd307
Update readme
sanex3339 Aug 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
534 changes: 245 additions & 289 deletions .eslintrc.js

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
github: sanex3339
open_collective: javascript-obfuscator
custom: ["https://xscode.com/sanex3339/javascript-obfuscator"]
custom: ["https://github.com/javascript-obfuscator/javascript-obfuscator#you-can-support-this-project-by-donating"]
5 changes: 4 additions & 1 deletion .github/ISSUE_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,10 @@
1.
2.
3.
4.

## JavaScript Obfuscator Edition
- JavaScript Obfuscator Open Source
- JavaScript Obfuscator Pro via API or [http://obfuscator.io](http://obfuscator.io])

## Your Environment
<!--- Include as many relevant details about the environment you experienced the bug in -->
Expand Down
5 changes: 4 additions & 1 deletion .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,10 @@ assignees: ''
1.
2.
3.
4.

## JavaScript Obfuscator Edition
- JavaScript Obfuscator Open Source
- JavaScript Obfuscator Pro via API or [http://obfuscator.io](http://obfuscator.io])

## Your Environment
<!--- Include as many relevant details about the environment you experienced the bug in -->
Expand Down
42 changes: 29 additions & 13 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ name: JavaScript Obfuscator CI

on:
push:
branches: [master]
branches: [master, release-**]
pull_request:
branches: [master]
branches: [master, release-**]
schedule:
- cron: '0 1 * * *'

Expand All @@ -17,34 +17,50 @@ jobs:
matrix:
include:
- os: ubuntu-latest,
node-version: 12.x
node-version: 20.x
- os: ubuntu-latest,
node-version: 14.x
node-version: 22.x
- os: ubuntu-latest,
node-version: 16.x
node-version: 24.x
- os: windows-latest,
node-version: 14.x
node-version: 20.x
- os: windows-latest,
node-version: 16.x
node-version: 22.x
- os: windows-latest,
node-version: 24.x

steps:
- uses: actions/checkout@v2
- uses: styfle/cancel-workflow-action@0.6.0
- uses: actions/checkout@v4
- uses: styfle/cancel-workflow-action@0.12.1
with:
access_token: ${{ github.token }}
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- uses: actions/cache@v2
- uses: actions/cache@v4
with:
path: '**/node_modules'
key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }}
- run: yarn install
- run: yarn run build
- run: yarn run test:mocha-coverage
- run: yarn run test:mocha-coverage:report
- name: Coveralls
uses: coverallsapp/github-action@master
uses: coverallsapp/github-action@v2
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
path-to-lcov: './coverage/lcov.info'
parallel: true
flag-name: node-${{ matrix.node-version }}-${{ matrix.os }}

coveralls-finish:
needs: build
if: always()
runs-on: ubuntu-latest
steps:
- name: Coveralls Finished
uses: coverallsapp/github-action@v2
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
path-to-lcov: './coverage/lcov.info'
parallel-finished: true
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
.claude
.DS_Store
.idea
.nyc_output
Expand All @@ -13,3 +14,4 @@ npm-debug.log
/test/benchmark/**/**
*dockerfile
/test*.js
/reproductions
3 changes: 3 additions & 0 deletions .mocharc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"node-option": []
}
4 changes: 4 additions & 0 deletions .npmignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
.awcache
.claude
.github
.idea
.nyc_output
Expand All @@ -9,3 +10,6 @@
/src/
/test/
/test*.js
index.ts
index.cli.ts
/reproductions
34 changes: 34 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Dependencies
node_modules

# Build output
dist
*.browser.js

# Coverage
coverage
.nyc_output

# Type definitions
typings

# Webpack bundles
webpack

# Lock files
package-lock.json
yarn.lock

# Logs
*.log

# Temporary files
*.tmp
.DS_Store

# Test fixtures and expected output
test/**/*.expected.js
test/**/*.fixture.js

# Templates (custom code helpers - these are code templates, not regular code)
src/custom-code-helpers/**/templates/*.ts
50 changes: 50 additions & 0 deletions .prettierrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
module.exports = {
// Basic formatting
printWidth: 120,
tabWidth: 4,
useTabs: false,
semi: true,
singleQuote: true,
quoteProps: 'consistent',
trailingComma: 'none',

// Spacing
bracketSpacing: true,
arrowParens: 'always',

// Line breaks
endOfLine: 'lf',

// TypeScript
parser: 'typescript',

// Override for specific file types
overrides: [
{
files: '*.ts',
options: {
parser: 'typescript'
}
},
{
files: '*.js',
options: {
parser: 'babel'
}
},
{
files: '*.json',
options: {
parser: 'json',
tabWidth: 2
}
},
{
files: '*.md',
options: {
parser: 'markdown',
proseWrap: 'preserve'
}
}
]
};
168 changes: 167 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,171 @@
Change Log

v5.5.0
---
* Pro API: reworked large file uploads — fixed `413 Content Too Large` for ~4.4–4.6MB request bodies, and Blob uploads now send the raw source (`blobFormat: 'raw'`) instead of the JSON request body, so uploads always fit the plan's file size cap

v5.4.7
---
* Fixed directory obfuscation with a set `sourceMapFileName` making all files share and overwrite one `.map`. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/817
* Fixed CLI `--config` failures hiding the real cause behind a generic `Cannot open config file` message. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1101
* Fixed `sourceMapFileName` ending in `.js.map` (e.g. `foo.min.js.map`) being mangled in the emitted `//# sourceMappingURL=` comment. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1312
* Fixed `URIError: URI malformed` crash when `stringArray` with `base64`/`rc4` encoding processed a string literal containing lone surrogate code units (e.g. `"[^\uD800-\uDFFF]"`). Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1431
* Bumped the production `brace-expansion` transitive dependency to a patched version, resolving `CVE-2026-25547`. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1405

v5.4.6
---
* Fixed unicode (`\uXXXX`, `\u{XXXX}`) and hex (`\xXX`) escape sequences of string literals being un-escaped into their literal characters during obfuscation. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/345

v5.4.5
---
* Fixed `controlFlowFlattening` intermittently dropping arguments of a spread call (e.g. `foo(...args)`) when it reused a control flow wrapper of a same-arity plain call. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1423
* Fixed `selfDefending` making obfuscated code run several times slower on Bun/JavaScriptCore. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1421
* Fixed dropped parentheses around an `in` operator inside an arrow body in a `for`-init, producing unparsable output. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1419

v5.4.4
---
* Optimized scope identifiers transformer performance
* Optimized identifier renaming performance by reusing scope analysis between transformers
* Fixed `Invalid regular expression` error when obfuscating code that uses ES2025 RegExp pattern modifiers (e.g. `/(?i:abc)/`). Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1410
* Fixed `SyntaxError` when obfuscating a class that extends a boolean literal (e.g. `class C extends true {}`). Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1131

v5.4.3
---
* Fixed `controlFlowFlattening` occasionally dropping the `?.` short-circuit on `foo?.(arg)` calls, causing `TypeError: <X> is not a function`. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1408

v5.4.2
---
* Fixed obfuscated code hanging in Bun when `selfDefending` is enabled. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1404

v5.4.1
---
* Fixed `Utils.nodeRequire` causing `ReferenceError: require is not defined` in browser build by making it lazy-evaluated
* Fixed missing space between keywords (`return`, `throw`, `typeof`) and Unicode surrogate pair identifiers in compact mode. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1112
* Fixed `domainLock` being case-sensitive — domain values are now normalized to lowercase. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1182
* Removed `source-map-support` runtime dependency. Use `node --enable-source-maps` instead. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1149

v5.4.0
---
* Add support for `import attributes`. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1256
* Add `renameProperties` support for private class fields and methods (`#foo`, `#bar()`). Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1220
* Fixed `reservedNames` not preserving class method and property names when `stringArray` or `deadCodeInjection` is enabled. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1279
* Fixed infinite loop / stack overflow when `reservedNames` patterns match all generated identifier names. Now throws a descriptive error instead. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1382
* Fixed `transformObjectKeys` changing evaluation order when object expression is inside a sequence expression with preceding side effects (e.g. `return aux(ys), { min }`). Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1246
* Fixed destructuring patterns inside class static blocks not being renamed when `renameGlobals` is disabled. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1141
* Fixed CLI `--options-preset` not applying preset values for options not explicitly set via command line (e.g. `splitStrings` from `high-obfuscation` preset was ignored). Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1236
* Replaced `mkdirp` dependency with native `fs.mkdirSync({ recursive: true })`. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1275. Thank you https://github.com/roli-lpci!
* Updated reserved DOM properties list, fixing `renameProperties` breaking modern built-in methods like `Array.prototype.at()`. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1066
* Replaced `conf` dependency with custom implementation using `env-paths` and native `fs`

v5.3.1
---
* Fixed class expression name references inside class body being incorrectly resolved to an import binding with the same name, causing broken code at runtime. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1386

v5.3.0
---
* Add Pro API support to CLI
* Add large files upload support to Pro API

v5.2.1
---
* Fixed `transformObjectKeys` incorrectly hoisting object literal outside of loop when loop body is a single statement without braces, causing all iterations to share the same object reference. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1300
* Fixed parsing error when `await` is used as an identifier in non-async context. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1127
* Fixed `deadCodeInjection` causing SyntaxError when `arguments` from collected block statements was injected into class field initializers or static initialization blocks. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1166
* Fixed `transformObjectKeys` with `mangled` identifier generator causing variable shadowing when extracted object variable name matched an existing inner scope variable. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1232

v5.2.0
---
* Skip obfuscation of `process.env.*`
* Fixed `controlFlowFlattening` breaking short-circuit evaluation with spread operator and conditional objects. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1372
* Fix Annex B function hoisting: block-scoped function declarations are now correctly linked to references outside the block in non-strict mode
* Fixed `NodeUtils.cloneRecursive` corrupting `range` property when cloning AST nodes, causing scope analysis to incorrectly resolve destructuring default parameter references

v5.1.0
---
* Add `version` parameter to the `apiConfig` to use different versions JavaScript Obfuscator Pro via API

v5.0.1
---
* Add JavaScript Obfuscator PRO advertisement message

v5.0.0
---
* Add JavaScript Obfuscator PRO support via calling its API

v4.2.1
---
* Downgrade `multimatch` version to avoid esm errors

v4.2.0
---
* Dropped support of Node versions 17 and below
* Fix `transformObjectKeys` performance in some edge-cases
* Fix `controlFlowFlattening` + optional chaining compatibility. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1325
* Don't obfuscate import.meta.*. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1267
* Revert `Improved stringArray calls wrapper templates` commit. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1330
* Fix error when ClassExpression is the CallExpression callee. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1132
* Don't publish root index.ts files to NPM. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1252
* Update `class-validator` version. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1324
* Update other dependencies
* CLI: support `.mjs` and `.cjs` extensions. Kudos to https://github.com/javascript-obfuscator/javascript-obfuscator/pull/1301

v4.1.1
---
* Update supported Node.js versions up to `node@22`. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/pull/1100
* Update `class-validator` version. Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1247
* Fixed CI

v4.1.0
---
* Add target `service-worker`

v4.0.2
---
* Add support for `node@18`
* Update dependencies

v4.0.1
---
* Update `class-validator` dependency https://github.com/javascript-obfuscator/javascript-obfuscator/pull/1146

v4.0.0
---
* **Breaking change:** `debugProtectionInterval` option now accepts value in milliseconds instead of `boolean` value. Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1031

v3.2.7
---
* Fixed cases when dead code is added to the inner code of `eval` expressions. Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1053

v3.2.6
---
* Improved integration between `renameProperties` and `controlFlowFlattening` options. Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1053

v3.2.5
---
* Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1056

v3.2.4
---
* Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1052

v3.2.3
---
* Fixed missing transformation of string array calls in some cases
* Fixed generation of reserved identifier names like `Map` or `Set` for `mangled` and `mangled-shuffled` identifier names generators

v3.2.2
---
* Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/1039

v3.2.1
---
* Updated copyright

v3.2.0
---
* **New options**: `stringArrayCallsTransform` and `stringArrayCallsTransformThreshold`
* Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/pull/1046

v3.1.0
---
* Added support of `es2022` features: class static block
Expand Down Expand Up @@ -887,4 +1053,4 @@ v0.7.0-dev.1
* **Breaking API change:** now `obfuscate(sourceCode, options)` returns `ObfuscationResult` object instead `string`. `ObfuscationResult` object contains two public methods: `getObfuscatedCode()` and `getSourceMap()`.
* CLI. Now any code can be obfuscated through CLI `javascript-obfuscator` command. See `README.md` for available options.
* New option `sourceMap` enables source map generation for obfuscated code.
* New option `sourceMapMode` specifies source map generation mode.
* New option `sourceMapMode` specifies source map generation mode.
Loading