Support TypeScript experimental decorators on abstract class fields (#3684)
With this release, you can now use TypeScript experimental decorators on abstract class fields. This was silently compiled incorrectly in esbuild 0.19.7 and below, and was an error from esbuild 0.19.8 to esbuild 0.20.1. Code such as the following should now work correctly:
// Original code
const log = (x: any, y: string) => console.log(y)
abstract class Foo { @log abstract foo: string }
new class extends Foo { foo = '' }
// Old output (with --loader=ts --tsconfig-raw={"compilerOptions":{"experimentalDecorators":true}})
const log = (x, y) => console.log(y);
class Foo {
}
new class extends Foo {
foo = "";
}();
// New output (with --loader=ts --tsconfig-raw={"compilerOptions":{"experimentalDecorators":true}})
const log = (x, y) => console.log(y);
class Foo {
}
__decorateClass([
log
], Foo.prototype, "foo", 2);
new class extends Foo {
foo = "";
}();
JSON loader now preserves __proto__ properties (#3700)
Copying JSON source code into a JavaScript file will change its meaning if a JSON object contains the __proto__ key. A literal __proto__ property in a JavaScript object literal sets the prototype of the object instead of adding a property named __proto__, while a literal __proto__ property in a JSON object literal just adds a property named __proto__. With this release, esbuild will now work around this problem by converting JSON to JavaScript with a computed property key in this case:
// Original code
import data from 'data:application/json,{"__proto__":{"fail":true}}'
if (Object.getPrototypeOf(data)?.fail) throw 'fail'
// Old output (with --bundle)
(() => {
// <data:application/json,{"proto":{"fail":true}}>
var json_proto_fail_true_default = { proto: { fail: true } };
// entry.js
if (Object.getPrototypeOf(json_proto_fail_true_default)?.fail)
throw "fail";
})();
Support TypeScript experimental decorators on abstract class fields (#3684)
With this release, you can now use TypeScript experimental decorators on abstract class fields. This was silently compiled incorrectly in esbuild 0.19.7 and below, and was an error from esbuild 0.19.8 to esbuild 0.20.1. Code such as the following should now work correctly:
// Original code
const log = (x: any, y: string) => console.log(y)
abstract class Foo { @log abstract foo: string }
new class extends Foo { foo = '' }
// Old output (with --loader=ts --tsconfig-raw={"compilerOptions":{"experimentalDecorators":true}})
const log = (x, y) => console.log(y);
class Foo {
}
new class extends Foo {
foo = "";
}();
// New output (with --loader=ts --tsconfig-raw={"compilerOptions":{"experimentalDecorators":true}})
const log = (x, y) => console.log(y);
class Foo {
}
__decorateClass([
log
], Foo.prototype, "foo", 2);
new class extends Foo {
foo = "";
}();
JSON loader now preserves __proto__ properties (#3700)
Copying JSON source code into a JavaScript file will change its meaning if a JSON object contains the __proto__ key. A literal __proto__ property in a JavaScript object literal sets the prototype of the object instead of adding a property named __proto__, while a literal __proto__ property in a JSON object literal just adds a property named __proto__. With this release, esbuild will now work around this problem by converting JSON to JavaScript with a computed property key in this case:
// Original code
import data from 'data:application/json,{"__proto__":{"fail":true}}'
if (Object.getPrototypeOf(data)?.fail) throw 'fail'
// Old output (with --bundle)
(() => {
// <data:application/json,{"proto":{"fail":true}}>
var json_proto_fail_true_default = { proto: { fail: true } };
// entry.js
if (Object.getPrototypeOf(json_proto_fail_true_default)?.fail)
throw "fail";
})();
This is a prerelease version to test our ability to release.
Other than removing or updating dependencies, it contains no intended user-facing changes.
Bumps the dependencies group with 15 updates:
20.10.6
20.11.30
1.85.0
1.87.0
2.3.8
2.3.9
2.22.0
2.24.0
5.0.0
5.1.0
0.19.11
0.20.2
8.56.0
8.57.0
43.0.0
43.0.1
16.6.0
16.6.2
10.2.0
10.3.0
2.0.1
2.0.2
3.1.1
3.2.5
16.2.0
16.3.0
5.3.3
5.4.3
3.10.0
3.11.0
Updates
@types/node
from 20.10.6 to 20.11.30Commits
Updates
@types/vscode
from 1.85.0 to 1.87.0Commits
Updates
@vscode/test-electron
from 2.3.8 to 2.3.9Changelog
Sourced from
@vscode/test-electron
's changelog.Commits
Updates
@vscode/vsce
from 2.22.0 to 2.24.0Commits
a080290
Revert "feat: Support for yarn workspaces (#493)" (#936)6e959ca
remove fixture files (#925)f37621d
fixes #322 (#924)3fc1a9a
publish pre-release on main ci (#923)1be75b2
feat: show targets in show command (#922)4df2693
show pre-release data in show command (#921)b18c620
rewrite video src links (#920)916fd91
feat: support --readme-path and --changelog-path (#919)302f02c
handle multi line images (#918)160d0e0
Filter data from other platforms (#912)Updates
chai
from 5.0.0 to 5.1.0Release notes
Sourced from chai's releases.
Commits
2cf92f5
Fix publish script (#1602)1ba37b5
Set support in same members (#1583)f224339
Assert interface fix (#1601)d504573
Implementiterable
assertion (#1592)640d932
Convert comments in "legal comments" format to jsdoc (#1598)e7f768e
Cleanup jsdoc comments (#1596)3290eb4
Remove useless guards and add parentheses to constuctors (#1593)44b81df
5.0.31a4dca1
5.0.257fef84
Fix 1564 (#1566)Updates
esbuild
from 0.19.11 to 0.20.2Release notes
Sourced from esbuild's releases.
... (truncated)
Changelog
Sourced from esbuild's changelog.
... (truncated)
Commits
617edda
publish 0.20.2 to npm4780075
fix #3700: json loader preserves__proto__
keys30bed2d
better errors for invalid js decorator syntax300eeb7
ts: allow non-null assertions in js decorators4d997d9
fix #3698: yarn pnp edge case withtsconfig.json
cf42954
resolver: improve some debug loggingb0765ae
fix some lintsdfa6206
fix some comments (closes #3683)ae5cc17
fix #3684:abstract
experimental decoratorsc809af0
fix #2388: allow consuming types without dom types (#3679)Updates
eslint
from 8.56.0 to 8.57.0Release notes
Sourced from eslint's releases.
Changelog
Sourced from eslint's changelog.
... (truncated)
Commits
abea3b6
8.57.01cd3f8c
Build: changelog update for 8.57.01813aec
chore: upgrade@eslint/js
@8
.57.0 (#18143)5c356bb
chore: package.json update for@eslint/js
release84922d0
docs: Show prerelease version in dropdown (#18139)1120b9b
feat: Add loadESLint() API method for v8 (#18098)5b8c363
docs: Switch to Ethical Ads (#18117)2196d97
fix: handle absolute file paths inFlatRuleTester
(#18064)f4a1fe2
test: add more tests for ignoring files and directories (#18068)69dd1d1
fix: Ensure config keys are printed for config errors (#18067)Updates
eslint-config-standard-with-typescript
from 43.0.0 to 43.0.1Release notes
Sourced from eslint-config-standard-with-typescript's releases.
Changelog
Sourced from eslint-config-standard-with-typescript's changelog.
Commits
a15c932
chore(release): 43.0.1 [skip ci]c7782be
Merge pull request #1394 from mightyiam/renovate/semantic-release-23.x5fb79c3
chore(deps): update dependency semantic-release to v23d3b4d11
Merge pull request #1400 from mightyiam/renovate/node-20.x7414eba
chore(deps): update dependency@types/node
to v20.11.58470a93
Merge pull request #1397 from mightyiam/repo-transfer932ffce
docs: update repository urls372e604
Merge pull request #1399 from mightyiam/project8d2f497
build: rm add-to-project workflowcd71373
Merge pull request #1393 from standard/renovate/node-20.xUpdates
eslint-plugin-n
from 16.6.0 to 16.6.2Release notes
Sourced from eslint-plugin-n's releases.
Commits
ec5badb
Release 16.6.29ddd351
chore: update tests to use eslintrc options5fc2198
fix: no-callback-literal ignore unknown nodes (#163)c191101
chore: add non-rule-change issue template (#159)ad8f4f4
chore: move rule tests parserOptions to ruleTester (#157)bc6c538
Release 16.6.12419888
fix: eslint 7.0 support (#156)Updates
mocha
from 10.2.0 to 10.3.0Release notes
Sourced from mocha's releases.
... (truncated)
Changelog
Sourced from mocha's changelog.
Commits
a886829
chore: fix link in pull request template (#5091)53a4baf
chore: remove unnecessary canvas dependency (#5069)1ebff45
chore: inline nyan reporter's write function (#5056)8812413
fix: add alt text to Built with Netlify badge (#5068)645469e
docs: touchups to labels and a template title post-revamp (#5050)9f99178
docs: overhaul contributing and maintenance docs for end-of-year 2023 (#5038)eca4fec
docs: fix return jsdoc type oftitlePath
(#4886)060f77d
docs: use mocha.js instead of mocha in the example run (#4927)4b60c1a
docs: fix fragment ID for yargs.jsextends
docs (#4918)b41e985
chore: remove stale workflow (#5029)Maintainer changes
This version was pushed to npm by joshuakgoldberg, a new releaser for mocha since your current version.
Updates
pkgroll
from 2.0.1 to 2.0.2Release notes
Sourced from pkgroll's releases.
Commits
9049b3e
docs: resize text129e052
docs: add logoc09f162
chore: upgrade dependencies1a60389
chore: upgrade dev deps92077f1
style: lint fix (#50)b5dd748
docs: add badges743f26f
fix: supportcomposite
intsconfig.json
(#55)dcec5fe
test: create missing symlink directoryfca7722
chore: add todo to rename flagd9a1e39
chore: upgrade deps (major)Updates
prettier
from 3.1.1 to 3.2.5Release notes
Sourced from prettier's releases.
Changelog
Sourced from prettier's changelog.