**Description:**
For following code
```js
var NaN = 1
console.log(NaN)
```
Result would be
|Envirnoment|Result|
|-|-|
|Non strict script(browser, nodejs repl)|NaN|
|Non strict script(nodejs script)|1|
|Strict script(browser, nodejs repl)|runtime error|
|Strict script(nodejs script)|1|
|ESM|1|
So SWC choose to behave like browser in script mode and confirm to esm
standard.
**Related issue:**
- Closes#8465
**Description:**
Updates `indexmap` to `v2`, reducing dependency duplication. Unfortunately there are still many dependencies that require `v1`, including `rkyv` and `cranelift-egraph` that have no published versions using indexmap `v2`.
**Description:**
Regarding https://github.com/vercel/next.js/issues/55682, I made a mistake while investigating. I assumed it's `swcMinify`-only but it seems like `node-fetch` is fundamentally incompatible with our minification options.
I thought `node-fetch` works with terser, but it did not, and it **should not**. But as I thought `terser` works, I assumed that `terser` has a hack for `AbortSignal`. And that's how I fixed `swcMinify: true`. The correct fix is `keep_classnames: true` but it will result in +~10% bundle size bloat.
At first, I used the correct way (`keep_classnames: true`), but it resulted in the bundle size bloat, so I mimicked the hack of terser with https://github.com/vercel/next.js/pull/57904.
While working on other minification issues, I found that there's no such hack in `terser` and I need to remove the hack in the SWC minifier.
The repro in https://github.com/vercel/next.js/issues/55682 does not work with `swcMinify: false`, even with next@14. The problem of minifier and node-fetch was not exploited before `serverMinification: true`.
**Related issue:**
- https://github.com/brix/crypto-js/issues/415