Path to this page:
Subject: CVS commit: pkgsrc/www/esbuild
From: Benny Siegert
Date: 2024-11-16 11:12:17
Message id: 20241116101217.34E98FC7D@cvs.NetBSD.org
Log Message:
esbuild: update to 0.24.0
0.24.0
------
Fix class field decorators in TypeScript if useDefineForClassFields is false
Setting the useDefineForClassFields flag to false in tsconfig.json means class
fields use the legacy TypeScript behavior instead of the standard JavaScript
behavior. Specifically they use assign semantics instead of define semantics
(e.g. setters are triggered) and fields without an initializer are not
initialized at all. However, when this legacy behavior is combined with
standard JavaScript decorators, TypeScript switches to always initializing all
fields, even those without initializers. Previously esbuild incorrectly
continued to omit field initializers for this edge case. These field
initializers in this case should now be emitted starting with this release.
Avoid incorrect cycle warning with tsconfig.json multiple inheritance
TypeScript 5.0 introduced multiple inheritance for tsconfig.json files where
extends can be an array of file paths. Previously esbuild would incorrectly
treat files encountered more than once when processing separate subtrees of the
multiple inheritance hierarchy as an inheritance cycle. With this release,
tsconfig.json files containing this edge case should work correctly without
generating a warning.
Handle Yarn Plug'n'Play stack overflow with tsconfig.json
Previously a tsconfig.json file that extends another file in a package with an
exports map could cause a stack overflow when Yarn's Plug'n'Play resolution was
active. This edge case should work now starting with this release.
Work around more issues with Deno 1.31+
This version of Deno broke the stdin and stdout properties on command objects
for inherited streams, which matters when you run esbuild's Deno module as the
entry point (i.e. when import.meta.main is true). Previously esbuild would
crash in Deno 1.31+ if you ran esbuild like that. This should be fixed starting
with this release.
0.23.1
------
Allow using the node: import prefix with es* targets
The node: prefix on imports is an alternate way to import built-in node
modules. For example, import fs from "fs" can also be written import \
fs from
"node:fs". This only works with certain newer versions of node, so esbuild
removes it when you target older versions of node such as with --target=node14
so that your code still works. With the way esbuild's platform-specific feature
compatibility table works, this was added by saying that only newer versions of
node support this feature. However, that means that a target such as
--target=node18,es2022 removes the node: prefix because none of the es* targets
are known to support this feature. This release adds the support for the node:
flag to esbuild's internal compatibility table for es* to allow you to use
compound targets.
Fix a panic when using the CLI with invalid build flags if --analyze is present
Previously esbuild's CLI could crash if it was invoked with flags that aren't
valid for a "build" API call and the --analyze flag is present. This \
was caused
by esbuild's internals attempting to add a Go plugin (which is how --analyze is
implemented) to a null build object. The panic has been fixed in this release.
Fix incorrect location of certain error messages
This release fixes a regression that caused certain errors relating to variable
declarations to be reported at an incorrect location. The regression was
introduced in version 0.18.7 of esbuild.
Print comments before case clauses in switch statements
With this release, esbuild will attempt to print comments that come before case
clauses in switch statements. This is similar to what esbuild already does for
comments inside of certain types of expressions. Note that these types of
comments are not printed if minification is enabled (specifically whitespace
minification).
Fix a memory leak with pluginData
With this release, the build context's internal pluginData cache will now be
cleared when starting a new build. This should fix a leak of memory from
plugins that return pluginData objects from onResolve and/or onLoad callbacks.
0.23
----
Revert the recent change to avoid bundling dependencies for node
This release reverts the recent change in version 0.22.0 that made
--packages=external the default behavior with --platform=node. The default is
now back to --packages=bundle.
I've just been made aware that Amazon doesn't pin their dependencies in their
"AWS CDK" product, which means that whenever esbuild publishes a new \
release,
many people (potentially everyone?) using their SDK around the world instantly
starts using it without Amazon checking that it works first. This change in
version 0.22.0 happened to break their SDK. I'm amazed that things haven't
broken before this point. This revert attempts to avoid these problems for
Amazon's customers. Hopefully Amazon will pin their dependencies in the future.
In addition, this is probably a sign that esbuild is used widely enough that it
now needs to switch to a more complicated release model. I may have esbuild use
a beta channel model for further development.
Fix preserving collapsed JSX whitespace
When transformed, certain whitespace inside JSX elements is ignored completely
if it collapses to an empty string. However, the whitespace should only be
ignored if the JSX is being transformed, not if it's being preserved. This
release fixes a bug where esbuild was previously incorrectly ignoring collapsed
whitespace with --jsx=preserve.
Files: