chore(deps): update all non-major dependencies #51
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
^20.12.5
->^20.14.2
^0.20.2
->^0.21.5
^1.0.0
->^1.0.1
^3.2.5
->^3.3.2
^0.2.7
->^0.2.8
^7.6.0
->^7.6.2
^5.4.4
->^5.4.5
Release Notes
evanw/esbuild (esbuild)
v0.21.5
Compare Source
Fix
Symbol.metadata
on classes without a class decorator (#3781)This release fixes a bug with esbuild's support for the decorator metadata proposal. Previously esbuild only added the
Symbol.metadata
property to decorated classes if there was a decorator on the class element itself. However, the proposal says that theSymbol.metadata
property should be present on all classes that have any decorators at all, not just those with a decorator on the class element itself.Allow unknown import attributes to be used with the
copy
loader (#3792)Import attributes (the
with
keyword onimport
statements) are allowed to alter how that path is loaded. For example, esbuild cannot assume that it knows how to load./bagel.js
as typebagel
:Because of that, bundling this code with esbuild is an error unless the file
./bagel.js
is external to the bundle (such as with--bundle --external:./bagel.js
).However, there is an additional case where it's ok for esbuild to allow this: if the file is loaded using the
copy
loader. That's because thecopy
loader behaves similarly to--external
in that the file is left external to the bundle. The difference is that thecopy
loader copies the file into the output folder and rewrites the import path while--external
doesn't. That means the following will now work with thecopy
loader (such as with--bundle --loader:.bagel=copy
):Support import attributes with glob-style imports (#3797)
This release adds support for import attributes (the
with
option) to glob-style imports (dynamic imports with certain string literal patterns as paths). These imports previously didn't support import attributes due to an oversight. So code like this will now work correctly:Previously this didn't work even though esbuild normally supports forcing the JSON loader using an import attribute. Attempting to do this used to result in the following error:
In addition, this change means plugins can now access the contents of
with
for glob-style imports.Support
${configDir}
intsconfig.json
files (#3782)This adds support for a new feature from the upcoming TypeScript 5.5 release. The character sequence
${configDir}
is now respected at the start ofbaseUrl
andpaths
values, which are used by esbuild during bundling to correctly map import paths to file system paths. This feature lets basetsconfig.json
files specified viaextends
refer to the directory of the top-leveltsconfig.json
file. Here is an example:You can read more in TypeScript's blog post about their upcoming 5.5 release. Note that this feature does not make use of template literals (you need to use
"${configDir}/dist/js/*"
not`${configDir}/dist/js/*`
). The syntax fortsconfig.json
is still just JSON with comments, and JSON syntax does not allow template literals. This feature only recognizes${configDir}
in strings for certain path-like properties, and only at the beginning of the string.Fix internal error with
--supported:object-accessors=false
(#3794)This release fixes a regression in 0.21.0 where some code that was added to esbuild's internal runtime library of helper functions for JavaScript decorators fails to parse when you configure esbuild with
--supported:object-accessors=false
. The reason is that esbuild introduced code that does{ get [name]() {} }
which uses both theobject-extensions
feature for the[name]
and theobject-accessors
feature for theget
, but esbuild was incorrectly only checking forobject-extensions
and not forobject-accessors
. Additional tests have been added to avoid this type of issue in the future. A workaround for this issue in earlier releases is to also add--supported:object-extensions=false
.v0.21.4
Compare Source
Update support for import assertions and import attributes in node (#3778)
Import assertions (the
assert
keyword) have been removed from node starting in v22.0.0. So esbuild will now strip them and generate a warning with--target=node22
or above:Import attributes (the
with
keyword) have been backported to node 18 starting in v18.20.0. So esbuild will no longer strip them with--target=node18.N
ifN
is 20 or greater.Fix
for await
transform when a label is presentThis release fixes a bug where the
for await
transform, which wraps the loop in atry
statement, previously failed to also move the loop's label into thetry
statement. This bug only affects code that uses both of these features in combination. Here's an example of some affected code:Do additional constant folding after cross-module enum inlining (#3416, #3425)
This release adds a few more cases where esbuild does constant folding after cross-module enum inlining.
Pass import attributes to on-resolve plugins (#3384, #3639, #3646)
With this release, on-resolve plugins will now have access to the import attributes on the import via the
with
property of the arguments object. This mirrors thewith
property of the arguments object that's already passed to on-load plugins. In addition, you can now passwith
to theresolve()
API call which will then forward that value on to all relevant plugins. Here's an example of a plugin that can now be written:Formatting support for the
@position-try
rule (#3773)Chrome shipped this new CSS at-rule in version 125 as part of the CSS anchor positioning API. With this release, esbuild now knows to expect a declaration list inside of the
@position-try
body block and will format it appropriately.Always allow internal string import and export aliases (#3343)
Import and export names can be string literals in ES2022+. Previously esbuild forbid any usage of these aliases when the target was below ES2022. Starting with this release, esbuild will only forbid such usage when the alias would otherwise end up in output as a string literal. String literal aliases that are only used internally in the bundle and are "compiled away" are no longer errors. This makes it possible to use string literal aliases with esbuild's
inject
feature even when the target is earlier than ES2022.v0.21.3
Compare Source
Implement the decorator metadata proposal (#3760)
This release implements the decorator metadata proposal, which is a sub-proposal of the decorators proposal. Microsoft shipped the decorators proposal in TypeScript 5.0 and the decorator metadata proposal in TypeScript 5.2, so it's important that esbuild also supports both of these features. Here's a quick example:
This proposal has been marked as "stage 3" which means "recommended for implementation". However, it's still a work in progress and isn't a part of JavaScript yet, so keep in mind that any code that uses JavaScript decorator metadata may need to be updated as the feature continues to evolve. If/when that happens, I will update esbuild's implementation to match the specification. I will not be supporting old versions of the specification.
Fix bundled decorators in derived classes (#3768)
In certain cases, bundling code that uses decorators in a derived class with a class body that references its own class name could previously generate code that crashes at run-time due to an incorrect variable name. This problem has been fixed. Here is an example of code that was compiled incorrectly before this fix:
Fix
tsconfig.json
files inside symlinked directories (#3767)This release fixes an issue with a scenario involving a
tsconfig.json
file thatextends
another file from within a symlinked directory that uses thepaths
feature. In that case, the implicitbaseURL
value should be based on the real path (i.e. after expanding all symbolic links) instead of the original path. This was already done for other files that esbuild resolves but was not yet done fortsconfig.json
because it's special-cased (the regular path resolver can't be used because the information insidetsconfig.json
is involved in path resolution). Note that this fix no longer applies if the--preserve-symlinks
setting is enabled.v0.21.2
Compare Source
Correct
this
in field and accessor decorators (#3761)This release changes the value of
this
in initializers for class field and accessor decorators from the module-levelthis
value to the appropriatethis
value for the decorated element (either the class or the instance). It was previously incorrect due to lack of test coverage. Here's an example of a decorator that doesn't work without this change:Allow
es2023
as a target environment (#3762)TypeScript recently added
es2023
as a compilation target, so esbuild now supports this too. There is no difference between a target ofes2022
andes2023
as far as esbuild is concerned since the 2023 edition of JavaScript doesn't introduce any new syntax features.v0.21.1
Compare Source
Fix a regression with
--keep-names
(#3756)The previous release introduced a regression with the
--keep-names
setting and object literals withget
/set
accessor methods, in which case the generated code contained syntax errors. This release fixes the regression:v0.21.0
Compare Source
This release doesn't contain any deliberately-breaking changes. However, it contains a very complex new feature and while all of esbuild's tests pass, I would not be surprised if an important edge case turns out to be broken. So I'm releasing this as a breaking change release to avoid causing any trouble. As usual, make sure to test your code when you upgrade.
Implement the JavaScript decorators proposal (#104)
With this release, esbuild now contains an implementation of the upcoming JavaScript decorators proposal. This is the same feature that shipped in TypeScript 5.0 and has been highly-requested on esbuild's issue tracker. You can read more about them in that blog post and in this other (now slightly outdated) extensive blog post here: https://2ality.com/2022/10/javascript-decorators.html. Here's a quick example:
Note that this feature is different than the existing "TypeScript experimental decorators" feature that esbuild already implements. It uses similar syntax but behaves very differently, and the two are not compatible (although it's sometimes possible to write decorators that work with both). TypeScript experimental decorators will still be supported by esbuild going forward as they have been around for a long time, are very widely used, and let you do certain things that are not possible with JavaScript decorators (such as decorating function parameters). By default esbuild will parse and transform JavaScript decorators, but you can tell esbuild to parse and transform TypeScript experimental decorators instead by setting
"experimentalDecorators": true
in yourtsconfig.json
file.Probably at least half of the work for this feature went into creating a test suite that exercises many of the proposal's edge cases: https://github.com/evanw/decorator-tests. It has given me a reasonable level of confidence that esbuild's initial implementation is acceptable. However, I don't have access to a significant sample of real code that uses JavaScript decorators. If you're currently using JavaScript decorators in a real code base, please try out esbuild's implementation and let me know if anything seems off.
This proposal has been in the works for a very long time (work began around 10 years ago in 2014) and it is finally getting close to becoming part of the JavaScript language. However, it's still a work in progress and isn't a part of JavaScript yet, so keep in mind that any code that uses JavaScript decorators may need to be updated as the feature continues to evolve. The decorators proposal is pretty close to its final form but it can and likely will undergo some small behavioral adjustments before it ends up becoming a part of the standard. If/when that happens, I will update esbuild's implementation to match the specification. I will not be supporting old versions of the specification.
Optimize the generated code for private methods
Previously when lowering private methods for old browsers, esbuild would generate one
WeakSet
for each private method. This mirrors similar logic for generating oneWeakSet
for each private field. Using a separateWeakMap
for private fields is necessary as their assignment can be observable:This prints
true false
because this partially-initialized instance has#x
but not#y
. In other words, it's not true that all class instances will always have all of their private fields. However, the assignment of private methods to a class instance is not observable. In other words, it's true that all class instances will always have all of their private methods. This means esbuild can lower private methods into code where all methods share a singleWeakSet
, which is smaller, faster, and uses less memory. Other JavaScript processing tools such as the TypeScript compiler already make this optimization. Here's what this change looks like:Fix an obscure bug with lowering class members with computed property keys
When class members that use newer syntax features are transformed for older target environments, they sometimes need to be relocated. However, care must be taken to not reorder any side effects caused by computed property keys. For example, the following code must evaluate
a()
thenb()
thenc()
:Previously esbuild did this by shifting the computed property key forward to the next spot in the evaluation order. Classes evaluate all computed keys first and then all static class elements, so if the last computed key needs to be shifted, esbuild previously inserted a static block at start of the class body, ensuring it came before all other static class elements:
However, this could cause esbuild to accidentally generate a syntax error if the computed property key contains code that isn't allowed in a static block, such as an
await
expression. With this release, esbuild fixes this problem by shifting the computed property key backward to the previous spot in the evaluation order instead, which may push it into theextends
clause or even before the class itself:Fix some
--keep-names
edge casesThe
NamedEvaluation
syntax-directed operation in the JavaScript specification gives certain anonymous expressions aname
property depending on where they are in the syntax tree. For example, the following initializers convey aname
value:When you enable esbuild's
--keep-names
setting, esbuild generates additional code to represent thisNamedEvaluation
operation so that the value of thename
property persists even when the identifiers are renamed (e.g. due to minification).However, I recently learned that esbuild's implementation of
NamedEvaluation
is missing a few cases. Specifically esbuild was missing property definitions, class initializers, logical-assignment operators. These cases should now all be handled:alexeyraspopov/picocolors (picocolors)
v1.0.1
Compare Source
prettier/prettier (prettier)
v3.3.2
Compare Source
diff
Fix handlebars path expressions starts with
@
(#16358 by @Princeyadav05)v3.3.1
Compare Source
diff
Preserve empty lines in front matter (#16347 by @fisker)
Preserve explicit language in front matter (#16348 by @fisker)
Avoid line breaks in import attributes (#16349 by @fisker)
v3.3.0
Compare Source
diff
🔗 Release Notes
bluwy/publint (publint)
v0.2.8
Compare Source
Bug fixes
Full Changelog: bluwy/publint@v0.2.7...v0.2.8
npm/node-semver (semver)
v7.6.2
Compare Source
Bug Fixes
6466ba9
#713 lru: use map.delete() directly (#713) (@negezor, @lukekarrys)v7.6.1
Compare Source
Bug Fixes
c570a34
#704 linting: no-unused-vars (@wraithgar)ad8ff11
#704 use internal cache implementation (@mbtools)ac9b357
#682 typo in compareBuild debug message (#682) (@mbtools)Dependencies
988a8de
#709 uninstalllru-cache
(#709)3fabe4d
#704 remove lru-cacheChores
dd09b60
#705 bump @npmcli/template-oss to 4.22.0 (@lukekarrys)ec49cdc
#701 chore: chore: postinstall for dependabot template-oss PR (@lukekarrys)b236c3d
#696 add benchmarks (#696) (@H4ad)692451b
#688 various improvements to README (#688) (@mbtools)5feeb7f
#705 postinstall for dependabot template-oss PR (@lukekarrys)074156f
#701 bump @npmcli/template-oss from 4.21.3 to 4.21.4 (@dependabot[bot])Microsoft/TypeScript (typescript)
v5.4.5
: TypeScript 5.4.5Compare Source
For release notes, check out the release announcement.
For the complete list of fixed issues, check out the
Downloads are available on:
Configuration
📅 Schedule: Branch creation - "before 4am on Monday" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR has been generated by Mend Renovate. View repository job log here.