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";
})();
Bumps the dependencies group with 17 updates:
20.10.6
20.11.28
1.85.0
1.87.0
6.16.0
7.2.0
6.16.0
7.2.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.2
3.10.0
3.11.0
Updates
@types/node
from 20.10.6 to 20.11.28Commits
Updates
@types/vscode
from 1.85.0 to 1.87.0Commits
Updates
@typescript-eslint/eslint-plugin
from 6.16.0 to 7.2.0Release notes
Sourced from
@typescript-eslint/eslint-plugin
's releases.... (truncated)
Changelog
Sourced from
@typescript-eslint/eslint-plugin
's changelog.... (truncated)
Commits
95cf139
chore(release): publish 7.2.0c0e3267
fix(eslint-plugin): [prefer-find] support ternary branches in prefer-find (#8...25e6518
fix(eslint-plugin): [no-unnecessary-condition] handle union array and tuple t...ef0e5cc
fix(eslint-plugin): [no-useless-template-literals] detect TemplateLiteral (#8...5292399
fix(eslint-plugin): [no-var-requires, no-require-imports] support template li...c06ce1a
fix(eslint-plugin): [member-ordering] report alphabetical sorting for all gro...32d8a8f
feat(eslint-plugin): [prefer-string-starts-ends-with] add allowSingleElementE...4c8b06d
fix(eslint-plugin): expose *-type-checked-only configs for extension (#8600)49d79a6
docs: alphabetize consistent-type-imports options for consistent type imports...21375f6
chore: enable no-non-null-assertion internally, excluding tests (#8019)Updates
@typescript-eslint/parser
from 6.16.0 to 7.2.0Release notes
Sourced from
@typescript-eslint/parser
's releases.... (truncated)
Changelog
Sourced from
@typescript-eslint/parser
's changelog.... (truncated)
Commits
95cf139
chore(release): publish 7.2.088b7463
chore(release): publish 7.1.14bc6944
chore(release): publish 7.1.0677e7cc
chore(release): publish 7.0.24f3215f
chore(release): publish 7.0.1b27de99
chore(release): publish 7.0.01aa393c
chore(deps): update dependency prettier to v3.2.5 (#8401)8ef5f4b
feat: add support for flat configs (#7935)1200b4c
chore(deps): update nx to v17.3.0 (#8317)584db29
feat: bump ESLint, NodeJS, and TS minimum version requirements (#8377)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.
Looks like these dependencies are updatable in another way, so this is no longer needed.