obsidian-tasks
obsidian-tasks copied to clipboard
chore(deps-dev): bump esbuild from 0.15.6 to 0.24.0
Bumps esbuild from 0.15.6 to 0.24.0.
Release notes
Sourced from esbuild's releases.
v0.24.0
This release deliberately contains backwards-incompatible changes. To avoid automatically picking up releases like this, you should either be pinning the exact version of
esbuild
in yourpackage.json
file (recommended) or be using a version range syntax that only accepts patch upgrades such as^0.23.0
or~0.23.0
. See npm's documentation about semver for more information.
Drop support for older platforms (#3902)
This release drops support for the following operating system:
- macOS 10.15 Catalina
This is because the Go programming language dropped support for this operating system version in Go 1.23, and this release updates esbuild from Go 1.22 to Go 1.23. Go 1.23 now requires macOS 11 Big Sur or later.
Note that this only affects the binary esbuild executables that are published to the esbuild npm package. It's still possible to compile esbuild's source code for these older operating systems. If you need to, you can compile esbuild for yourself using an older version of the Go compiler (before Go version 1.23). That might look something like this:
git clone https://github.com/evanw/esbuild.git cd esbuild go build ./cmd/esbuild ./esbuild --version
Fix class field decorators in TypeScript if
useDefineForClassFields
isfalse
(#3913)Setting the
useDefineForClassFields
flag tofalse
intsconfig.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 (#3898)TypeScript 5.0 introduced multiple inheritance for
tsconfig.json
files whereextends
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
(#3915)Previously a
tsconfig.json
file thatextends
another file in a package with anexports
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+ (#3917)
This version of Deno broke the
stdin
andstdout
properties on command objects for inherited streams, which matters when you run esbuild's Deno module as the entry point (i.e. whenimport.meta.main
istrue
). Previously esbuild would crash in Deno 1.31+ if you ran esbuild like that. This should be fixed starting with this release.This fix was contributed by
@Joshix-1
.v0.23.1
Allow using the
node:
import prefix withes*
targets (#3821)The
node:
prefix on imports is an alternate way to import built-in node modules. For example,import fs from "fs"
can also be writtenimport 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 thenode:
prefix because none of thees*
targets are known to support this feature. This release adds the support for thenode:
flag to esbuild's internal compatibility table fores*
to allow you to use compound targets like this:// Original code import fs from 'node:fs' fs.open
// Old output (with --bundle --format=esm --platform=node --target=node18,es2022) import fs from "fs";
... (truncated)
Changelog
Sourced from esbuild's changelog.
Changelog: 2022
This changelog documents all esbuild versions published in the year 2022 (versions 0.14.11 through 0.16.12).
0.16.12
Loader defaults to
js
for extensionless files (#2776)Certain packages contain files without an extension. For example, the
yargs
package contains the fileyargs/yargs
which has no extension. Node, Webpack, and Parcel can all understand code that importsyargs/yargs
because they assume that the file is JavaScript. However, esbuild was previously unable to understand this code because it relies on the file extension to tell it how to interpret the file. With this release, esbuild will now assume files without an extension are JavaScript files. This can be customized by setting the loader for""
(the empty string, representing files without an extension) to another loader. For example, if you want files without an extension to be treated as CSS instead, you can do that like this:
CLI:
esbuild --bundle --loader:=css
JS:
esbuild.build({ bundle: true, loader: { '': 'css' }, })
Go:
api.Build(api.BuildOptions{ Bundle: true, Loader: map[string]api.Loader{"": api.LoaderCSS}, })
In addition, the
"type"
field inpackage.json
files now only applies to files with an explicit.js
,.jsx
,.ts
, or.tsx
extension. Previously it was incorrectly applied by esbuild to all files that had an extension other than.mjs
,.mts
,.cjs
, or.cts
including extensionless files. So for example an extensionless file in a"type": "module"
package is now treated as CommonJS instead of ESM.0.16.11
Avoid a syntax error in the presence of direct
eval
(#2761)The behavior of nested
function
declarations in JavaScript depends on whether the code is run in strict mode or not. It would be problematic if esbuild preserved nestedfunction
declarations in its output because then the behavior would depend on whether the output was run in strict mode or not instead of respecting the strict mode behavior of the original source code. To avoid this, esbuild transforms nestedfunction
declarations to preserve the intended behavior of the original source code regardless of whether the output is run in strict mode or not:// Original code if (true) { function foo() {} console.log(!!foo) foo = null console.log(!!foo) }
... (truncated)
Commits
d34e79e
publish 0.24.0 to npm045a87f
fix #3887: omit dead export warning fordefault
6e049b8
fix #3913: useDefineForClassFields and decorators9c26f98
lower decorators for useDefineForClassFields #391346fdb68
fix #3898: incorrect cyclic tsconfig.json warningb500443
fix #3917: running esbuild cli with denob125e62
runmake update-compat-table
112b9aa
fix #3915: stack overflow with yarn + tsconfiged5a555
wasm: catch and rethrow stack overflows (#3915)11d3196
fix #3902: update go 1.22.5 => 1.23.1- Additional commits viewable in compare view
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase
.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
-
@dependabot rebase
will rebase this PR -
@dependabot recreate
will recreate this PR, overwriting any edits that have been made to it -
@dependabot merge
will merge this PR after your CI passes on it -
@dependabot squash and merge
will squash and merge this PR after your CI passes on it -
@dependabot cancel merge
will cancel a previously requested merge and block automerging -
@dependabot reopen
will reopen this PR if it is closed -
@dependabot close
will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually -
@dependabot show <dependency name> ignore conditions
will show all of the ignore conditions of the specified dependency -
@dependabot ignore this major version
will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) -
@dependabot ignore this minor version
will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) -
@dependabot ignore this dependency
will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)