Chai now only supports EcmaScript Modules (ESM). This means your tests will need to either have import {...} from 'chai' or import('chai'). require('chai') will cause failures in nodejs. If you're using ESM and seeing failures, it may be due to a bundler or transpiler which is incorrectly converting import statements into require calls.
Dropped support for Internet Explorer.
Dropped support for NodeJS < 18.
Minimum supported browsers are now Firefox 100, Safari 14.1, Chrome 100, Edge 100. Support for browsers prior to these versions is "best effort" (bug reports on older browsers will be assessed individually and may be marked as wontfix).
We've put out a few alpha versions and tested them out in various projects with good success. This RC includes all those changes plus any fixes that we've discovered since then.
Please try it out in your projects and let us know if you run into any issues so we can make fixes before version 5!
Fix TypeScript-specific class transform edge case (#3559)
The previous release introduced an optimization that avoided transforming super() in the class constructor for TypeScript code compiled with useDefineForClassFields set to false if all class instance fields have no initializers. The rationale was that in this case, all class instance fields are omitted in the output so no changes to the constructor are needed. However, if all of this is the case and there are #private instance fields with initializers, those private instance field initializers were still being moved into the constructor. This was problematic because they were being inserted before the call to super() (since super() is now no longer transformed in that case). This release introduces an additional optimization that avoids moving the private instance field initializers into the constructor in this edge case, which generates smaller code, matches the TypeScript compiler's output more closely, and avoids this bug:
// Original code
class Foo extends Bar {
#private = 1;
public: any;
constructor() {
super();
}
}
// Old output (with esbuild v0.19.9)
class Foo extends Bar {
constructor() {
super();
this.#private = 1;
}
#private;
}
// Old output (with esbuild v0.19.10)
class Foo extends Bar {
constructor() {
this.#private = 1;
super();
}
#private;
}
// New output
class Foo extends Bar {
#private = 1;
constructor() {
super();
}
}
Minifier: allow reording a primitive past a side-effect (#3568)
The minifier previously allowed reordering a side-effect past a primitive, but didn't handle the case of reordering a primitive past a side-effect. This additional case is now handled:
Fix TypeScript-specific class transform edge case (#3559)
The previous release introduced an optimization that avoided transforming super() in the class constructor for TypeScript code compiled with useDefineForClassFields set to false if all class instance fields have no initializers. The rationale was that in this case, all class instance fields are omitted in the output so no changes to the constructor are needed. However, if all of this is the case and there are #private instance fields with initializers, those private instance field initializers were still being moved into the constructor. This was problematic because they were being inserted before the call to super() (since super() is now no longer transformed in that case). This release introduces an additional optimization that avoids moving the private instance field initializers into the constructor in this edge case, which generates smaller code, matches the TypeScript compiler's output more closely, and avoids this bug:
// Original code
class Foo extends Bar {
#private = 1;
public: any;
constructor() {
super();
}
}
// Old output (with esbuild v0.19.9)
class Foo extends Bar {
constructor() {
super();
this.#private = 1;
}
#private;
}
// Old output (with esbuild v0.19.10)
class Foo extends Bar {
constructor() {
this.#private = 1;
super();
}
#private;
}
// New output
class Foo extends Bar {
#private = 1;
constructor() {
super();
}
}
Minifier: allow reording a primitive past a side-effect (#3568)
The minifier previously allowed reordering a side-effect past a primitive, but didn't handle the case of reordering a primitive past a side-effect. This additional case is now handled:
Bumps the dependencies group with 24 updates:
1.3.92
1.3.102
25.0.5
25.0.7
0.2.1
0.3.0
3.1.7
3.1.9
2.0.1
2.0.3
10.0.2
10.0.6
18.15.0
20.10.6
1.0.2
1.0.4
5.62.0
6.16.0
5.62.0
6.16.0
2.3.5
2.3.8
2.21.1
2.22.0
4.3.10
5.0.0
0.18.20
0.19.11
8.50.0
8.56.0
8.10.0
9.1.0
35.0.0
43.0.0
2.28.1
2.29.1
15.7.0
16.6.0
2.8.8
3.1.1
15.0.1
16.2.0
3.29.4
4.9.2
15.2.0
17.0.1
5.1.6
5.3.3
Updates
@swc/core
from 1.3.92 to 1.3.102Changelog
Sourced from
@swc/core
's changelog.... (truncated)
Commits
cc328ea
chore: Publishv1.3.102
withswc_core
v0.87.10
(#8464)66fe813
chore: Publish 1.3.102-nightly-20231231.12e0f305
chore: Publish 1.3.102-nightly-20231230.1e3f25c2
chore: Publish cratesd681785
fix(es/minifier): Add WeakRef as a safe global reference (#8458)4229e7b
chore: Publish crates0b188cc
fix(es/parser): Disallowing await as an identifier in class static block (#8450)b76dd46
chore: Publish 1.3.102-nightly-20231229.13492e6f
chore: Publish crates1e44e57
fix(es/renamer): Correctly check top level (#8456)Updates
@rollup/plugin-commonjs
from 25.0.5 to 25.0.7Changelog
Sourced from
@rollup/plugin-commonjs
's changelog.Commits
ad406ba
chore(release): commonjs v25.0.78e2ed59
fix(commonjs,dynamic-import-vars,esm-shim,inject,replace,strip): bump magic-s...88687f0
chore(release): commonjs v25.0.6cb579c8
fix(commonjs): Keep the shebang at the top of the file content (#1610)Updates
@rollup/plugin-swc
from 0.2.1 to 0.3.0Changelog
Sourced from
@rollup/plugin-swc
's changelog.Commits
2c58b01
chore(release): swc v0.3.0a4c7679
feat(swc): allow passingenv
property as option (#1624)dcd8da5
chore(repo): use@dot/versioner
for releases (#1612)Updates
@types/debounce-promise
from 3.1.7 to 3.1.9Commits
Updates
@types/json-parse-safe
from 2.0.1 to 2.0.3Commits
Updates
@types/mocha
from 10.0.2 to 10.0.6Commits
Updates
@types/node
from 18.15.0 to 20.10.6Commits
Updates
@types/readline-transform
from 1.0.2 to 1.0.4Commits
Updates
@typescript-eslint/eslint-plugin
from 5.62.0 to 6.16.0Release notes
Sourced from
@typescript-eslint/eslint-plugin
's releases.... (truncated)
Changelog
Sourced from
@typescript-eslint/eslint-plugin
's changelog.... (truncated)
Commits
7246e56
chore: publish v6.16.03182959
fix(eslint-plugin): [unbound-method] exempt all non-Promise built-in statics ...3031117
docs(eslint-plugin): enforce a heading for each rule option (#8015)b3f87fc
docs(eslint-plugin): add Deprecating Formatting Rules blog post (#8117)9368bf3
feat(eslint-plugin): deprecate no-extra-semi in favor of ESLint Stylistic equ...f6f6a57
docs: add tombstone file for no-parameter-properties and suggested replacemen...04dea84
feat(eslint-plugin): deprecate formatting (meta.type: layout) rules (#8073)b1c92bb
chore(website): auto-generate type checked rule notice in rule docs (#7951)26ba8ea
docs: add more rationale for no-for-in-array (#8082)eff7da1
docs: fix example for no-shadow (#8080)Updates
@typescript-eslint/parser
from 5.62.0 to 6.16.0Release notes
Sourced from
@typescript-eslint/parser
's releases.... (truncated)
Changelog
Sourced from
@typescript-eslint/parser
's changelog.... (truncated)
Commits
7246e56
chore: publish v6.16.06128a02
chore: publish v6.15.0c7d702f
chore: publish v6.14.0cc2c6d3
chore: publish v6.13.24dae083
chore: prefix all nx package scripts with npx (#7988)14f3ff0
chore: publish v6.13.139c437a
chore: publish v6.13.09093e95
chore: publish v6.12.02e535b8
chore(deps): update dependency prettier to v3.1.0 (#7938)06496e2
chore: publish v6.11.0Updates
@vscode/test-electron
from 2.3.5 to 2.3.8Changelog
Sourced from
@vscode/test-electron
's changelog.Commits
Updates
@vscode/vsce
from 2.21.1 to 2.22.0Commits
10309ba
remove win32-ia32 (#908)a001296
docs: fix grammatical error in engine mismatch message (#907)955a554
missing comma added for README.md (#903)Updates
chai
from 4.3.10 to 5.0.0Release notes
Sourced from chai's releases.
... (truncated)
Commits
723759c
5.0.0947ff86
update deep-eql to latest version0fc290b
Replacing Karma with Web Test Runner (#1546)54d3e6b
Updateassertion-error
to it's latest major version! (#1543)528f4da
Typo 'Test an object' not 'Test and object' (#1460)9011298
update loupe (#1545)9e276dc
Inlinetype-detect
as a simple function (#1544)de9fa39
updatedeep-eql
to latest version (#1542)f32439f
5.0.0-alpha.1c6481e0
update check-error (#1528)Updates
esbuild
from 0.18.20 to 0.19.11Release notes
Sourced from esbuild's releases.
... (truncated)
Changelog
Sourced from esbuild's changelog.
... (truncated)
Commits
6ee8225
publish 0.19.11 to npmf8ae3af
fix #3561: treeshaking of knownSymbol
instances0811058
switch define data to flagsf5f8ff8
fix #3568: can reorder primitive past side-effect914f608
fix #3558: put thestop()
api call back2aa166b
fix #3559: fix recent class transform regression55e1127
publish 0.19.10 to npmd968af2
fix #3511:@__NO_SIDE_EFFECTS__
with templates00c4ebe
fix #3546: don't transformrequire
glob importse1b7050
fix #3319: missing symbol usage in glob transformUpdates
eslint
from 8.50.0 to 8.56.0Release notes
Sourced from eslint's releases.
... (truncated)
Changelog
Sourced from eslint's changelog.