Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package esbuild for openSUSE:Factory checked 
in at 2025-04-02 17:22:47
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/esbuild (Old)
 and      /work/SRC/openSUSE:Factory/.esbuild.new.1907 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "esbuild"

Wed Apr  2 17:22:47 2025 rev:16 rq:1266344 version:0.25.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/esbuild/esbuild.changes  2025-03-16 
18:59:45.219398587 +0100
+++ /work/SRC/openSUSE:Factory/.esbuild.new.1907/esbuild.changes        
2025-04-02 17:22:49.045149849 +0200
@@ -2 +2,9 @@
-Sat Mar 15 23:09:15 UTC 2025 - Avindra Goolcharan <avin...@opensuse.org>
+Wed Apr  2 02:11:52 UTC 2025 - Avindra Goolcharan <avin...@opensuse.org>
+
+- update to 0.25.2:
+  * Support flags in regular expressions for the API (#4121)
+  * Fix node-specific annotations for string literal export names (#4100)
+  * Basic support for index source maps (#3439, #4109)
+
+-------------------------------------------------------------------
+Wed Mar 19 03:39:26 UTC 2025 - Avindra Goolcharan <avin...@opensuse.org>

Old:
----
  esbuild-0.25.1.tar.gz

New:
----
  _scmsync.obsinfo
  build.specials.obscpio
  esbuild-0.25.2.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ esbuild.spec ++++++
--- /var/tmp/diff_new_pack.S2PnGg/_old  2025-04-02 17:22:49.793181239 +0200
+++ /var/tmp/diff_new_pack.S2PnGg/_new  2025-04-02 17:22:49.797181406 +0200
@@ -28,7 +28,7 @@
 %global tag   v%{version}
 %global extractdir0 esbuild-%{version}
 Name:           esbuild
-Version:        0.25.1
+Version:        0.25.2
 Release:        0
 Summary:        A JavaScript bundler written for speed
 License:        MIT

++++++ _scmsync.obsinfo ++++++
mtime: 1743560008
commit: db2a819db8071fdffd47e96d675f8ea9c2fe9a256509f0b9adf8a90af740696d
url: https://src.opensuse.org/javascript/esbuild.git
revision: db2a819db8071fdffd47e96d675f8ea9c2fe9a256509f0b9adf8a90af740696d
projectscmsync: https://src.opensuse.org/javascript/_ObsPrj.git

++++++ esbuild-0.25.1.tar.gz -> esbuild-0.25.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.25.1/CHANGELOG.md 
new/esbuild-0.25.2/CHANGELOG.md
--- old/esbuild-0.25.1/CHANGELOG.md     2025-03-10 04:42:44.000000000 +0100
+++ new/esbuild-0.25.2/CHANGELOG.md     2025-03-30 19:31:14.000000000 +0200
@@ -1,5 +1,53 @@
 # Changelog
 
+## 0.25.2
+
+* Support flags in regular expressions for the API 
([#4121](https://github.com/evanw/esbuild/issues/4121))
+
+    The JavaScript plugin API for esbuild takes JavaScript regular expression 
objects for the `filter` option. Internally these are translated into Go 
regular expressions. However, this translation previously ignored the `flags` 
property of the regular expression. With this release, esbuild will now 
translate JavaScript regular expression flags into Go regular expression flags. 
Specifically the JavaScript regular expression `/\.[jt]sx?$/i` is turned into 
the Go regular expression `` `(?i)\.[jt]sx?$` `` internally inside of esbuild's 
API. This should make it possible to use JavaScript regular expressions with 
the `i` flag. Note that JavaScript and Go don't support all of the same regular 
expression features, so this mapping is only approximate.
+
+* Fix node-specific annotations for string literal export names 
([#4100](https://github.com/evanw/esbuild/issues/4100))
+
+    When node instantiates a CommonJS module, it scans the AST to look for 
names to expose via ESM named exports. This is a heuristic that looks for 
certain patterns such as `exports.NAME = ...` or `module.exports = { ... }`. 
This behavior is used by esbuild to "annotate" CommonJS code that was converted 
from ESM with the original ESM export names. For example, when converting the 
file `export let foo, bar` from ESM to CommonJS, esbuild appends this to the 
end of the file:
+
+    ```js
+    // Annotate the CommonJS export names for ESM import in node:
+    0 && (module.exports = {
+      bar,
+      foo
+    });
+    ```
+
+    However, this feature previously didn't work correctly for export names 
that are not valid identifiers, which can be constructed using string literal 
export names. The generated code contained a syntax error. That problem is 
fixed in this release:
+
+    ```js
+    // Original code
+    let foo
+    export { foo as "foo!" }
+
+    // Old output (with --format=cjs --platform=node)
+    ...
+    0 && (module.exports = {
+      "foo!"
+    });
+
+    // New output (with --format=cjs --platform=node)
+    ...
+    0 && (module.exports = {
+      "foo!": null
+    });
+    ```
+
+* Basic support for index source maps 
([#3439](https://github.com/evanw/esbuild/issues/3439), 
[#4109](https://github.com/evanw/esbuild/pull/4109))
+
+    The source map specification has an optional mode called [index source 
maps](https://tc39.es/ecma426/#sec-index-source-map) that makes it easier for 
tools to create an aggregate JavaScript file by concatenating many smaller 
JavaScript files with source maps, and then generate an aggregate source map by 
simply providing the original source maps along with some offset information. 
My understanding is that this is rarely used in practice. I'm only aware of two 
uses of it in the wild: [ClojureScript](https://clojurescript.org/) and 
[Turbopack](https://turbo.build/pack/).
+
+    This release provides basic support for indexed source maps. However, the 
implementation has not been tested on a real app (just on very simple test 
input). If you are using index source maps in a real app, please try this out 
and report back if anything isn't working for you.
+
+    Note that this is also not a complete implementation. For example, index 
source maps technically allows nesting source maps to an arbitrary depth, while 
esbuild's implementation in this release only supports a single level of 
nesting. It's unclear whether supporting more than one level of nesting is 
important or not given the lack of available test cases.
+
+    This feature was contributed by [@clyfish](https://github.com/clyfish).
+
 ## 0.25.1
 
 * Fix incorrect paths in inline source maps 
([#4070](https://github.com/evanw/esbuild/issues/4070), 
[#4075](https://github.com/evanw/esbuild/issues/4075), 
[#4105](https://github.com/evanw/esbuild/issues/4105))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.25.1/cmd/esbuild/version.go 
new/esbuild-0.25.2/cmd/esbuild/version.go
--- old/esbuild-0.25.1/cmd/esbuild/version.go   2025-03-10 04:42:44.000000000 
+0100
+++ new/esbuild-0.25.2/cmd/esbuild/version.go   2025-03-30 19:31:14.000000000 
+0200
@@ -1,3 +1,3 @@
 package main
 
-const esbuildVersion = "0.25.1"
+const esbuildVersion = "0.25.2"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/esbuild-0.25.1/internal/bundler_tests/bundler_default_test.go 
new/esbuild-0.25.2/internal/bundler_tests/bundler_default_test.go
--- old/esbuild-0.25.1/internal/bundler_tests/bundler_default_test.go   
2025-03-10 04:42:44.000000000 +0100
+++ new/esbuild-0.25.2/internal/bundler_tests/bundler_default_test.go   
2025-03-30 19:31:14.000000000 +0200
@@ -1698,6 +1698,27 @@
        })
 }
 
+// https://github.com/evanw/esbuild/issues/4100
+func TestNodeAnnotationInvalidIdentifierIssue4100(t *testing.T) {
+       default_suite.expectBundled(t, bundled{
+               files: map[string]string{
+                       "/entry.mjs": `
+                               let foo, bar, baz
+                               export {
+                                       foo, bar as if, baz as "..."
+                               }
+                       `,
+               },
+               entryPaths: []string{"/entry.mjs"},
+               options: config.Options{
+                       Mode:          config.ModeBundle,
+                       OutputFormat:  config.FormatCommonJS,
+                       AbsOutputFile: "/out.js",
+                       Platform:      config.PlatformNode,
+               },
+       })
+}
+
 func TestMinifiedBundleES6(t *testing.T) {
        default_suite.expectBundled(t, bundled{
                files: map[string]string{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/esbuild-0.25.1/internal/bundler_tests/bundler_loader_test.go 
new/esbuild-0.25.2/internal/bundler_tests/bundler_loader_test.go
--- old/esbuild-0.25.1/internal/bundler_tests/bundler_loader_test.go    
2025-03-10 04:42:44.000000000 +0100
+++ new/esbuild-0.25.2/internal/bundler_tests/bundler_loader_test.go    
2025-03-30 19:31:14.000000000 +0200
@@ -1786,3 +1786,89 @@
                },
        })
 }
+
+// See: https://github.com/evanw/esbuild/issues/4075
+func TestLoaderInlineSourceMapAbsolutePathIssue4075Unix(t *testing.T) {
+       urlEncodedUnix := "%22file%3A%2F%2F%2Fout%2Fsrc%2Fstyles1.scss%22" // 
file:///out/src/styles1.scss
+       pathEncodedUnix := "%22%2Fout%2Fsrc%2Fstyles2.scss%22"             // 
/out/src/styles2.scss
+
+       loader_suite.expectBundledUnix(t, bundled{
+               files: map[string]string{
+                       "/home/user/project/src/entry.css": `
+                               @import "./styles1.css";
+                               @import "./styles2.css";
+                       `,
+                       "/home/user/project/src/styles1.css": `/* You can add 
global styles to this file, and also import other style files */
+                       * {
+                               content: "foo";
+                       }
+
+                       /*# 
sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,` +
+                               `%22sourceRoot%22:%22%22,%22sources%22:%5B` + 
urlEncodedUnix + `%5D,%22n` +
+                               
`ames%22:%5B%5D,%22mappings%22:%22AAAA;AACA;EACE,SAAS%22,%22file%22:%22o` +
+                               
`ut%22,%22sourcesContent%22:%5B%22/*%20You%20can%20add%20global%20styles` +
+                               
`%20to%20this%20file,%20and%20also%20import%20other%20style%20files%20%2` +
+                               
`A/%5Cn*%20%7B%5Cn%20%20content:%20%5C%22foo%5C%22%5Cn%7D%5Cn%22%5D%7D */`,
+                       "/home/user/project/src/styles2.css": `/* You can add 
global styles to this file, and also import other style files */
+                       * {
+                               content: "bar";
+                       }
+
+                       /*# 
sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,` +
+                               `%22sourceRoot%22:%22%22,%22sources%22:%5B` + 
pathEncodedUnix + `%5D,%22` +
+                               
`names%22:%5B%5D,%22mappings%22:%22AAAA;AACA;EACE,SAAS%22,%22file%22:%22` +
+                               
`out%22,%22sourcesContent%22:%5B%22/*%20You%20can%20add%20global%20style` +
+                               
`s%20to%20this%20file,%20and%20also%20import%20other%20style%20files%20%` +
+                               
`2A/%5Cn*%20%7B%5Cn%20%20content:%20%5C%22bar%5C%22%5Cn%7D%5Cn%22%5D%7D */`,
+               },
+               entryPaths: []string{"/home/user/project/src/entry.css"},
+               options: config.Options{
+                       Mode:         config.ModeBundle,
+                       SourceMap:    config.SourceMapLinkedWithComment,
+                       AbsOutputDir: "/out",
+               },
+       })
+}
+
+// See: https://github.com/evanw/esbuild/issues/4075
+func TestLoaderInlineSourceMapAbsolutePathIssue4075Windows(t *testing.T) {
+       urlEncodedWin := 
"%22file%3A%2F%2F%2FC%3A%2Fout%2Fsrc%2Fstyles1.scss%22" // 
file:///C:/out/src/styles1.scss
+       pathEncodedWin := "%22C%3A%5C%5Cout%5C%5Csrc%5C%5Cstyles2.scss%22"      
 // C:\out\src\styles2.scss
+
+       loader_suite.expectBundledWindows(t, bundled{
+               files: map[string]string{
+                       "/home/user/project/src/entry.css": `
+                               @import "./styles1.css";
+                               @import "./styles2.css";
+                       `,
+                       "/home/user/project/src/styles1.css": `/* You can add 
global styles to this file, and also import other style files */
+                       * {
+                               content: "foo";
+                       }
+
+                       /*# 
sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,` +
+                               `%22sourceRoot%22:%22%22,%22sources%22:%5B` + 
urlEncodedWin + `%5D,%22n` +
+                               
`ames%22:%5B%5D,%22mappings%22:%22AAAA;AACA;EACE,SAAS%22,%22file%22:%22o` +
+                               
`ut%22,%22sourcesContent%22:%5B%22/*%20You%20can%20add%20global%20styles` +
+                               
`%20to%20this%20file,%20and%20also%20import%20other%20style%20files%20%2` +
+                               
`A/%5Cn*%20%7B%5Cn%20%20content:%20%5C%22foo%5C%22%5Cn%7D%5Cn%22%5D%7D */`,
+                       "/home/user/project/src/styles2.css": `/* You can add 
global styles to this file, and also import other style files */
+                       * {
+                               content: "bar";
+                       }
+
+                       /*# 
sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,` +
+                               `%22sourceRoot%22:%22%22,%22sources%22:%5B` + 
pathEncodedWin + `%5D,%22` +
+                               
`names%22:%5B%5D,%22mappings%22:%22AAAA;AACA;EACE,SAAS%22,%22file%22:%22` +
+                               
`out%22,%22sourcesContent%22:%5B%22/*%20You%20can%20add%20global%20style` +
+                               
`s%20to%20this%20file,%20and%20also%20import%20other%20style%20files%20%` +
+                               
`2A/%5Cn*%20%7B%5Cn%20%20content:%20%5C%22bar%5C%22%5Cn%7D%5Cn%22%5D%7D */`,
+               },
+               entryPaths: []string{"/home/user/project/src/entry.css"},
+               options: config.Options{
+                       Mode:         config.ModeBundle,
+                       SourceMap:    config.SourceMapLinkedWithComment,
+                       AbsOutputDir: "/out",
+               },
+       })
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/esbuild-0.25.1/internal/bundler_tests/snapshots/snapshots_default.txt 
new/esbuild-0.25.2/internal/bundler_tests/snapshots/snapshots_default.txt
--- old/esbuild-0.25.1/internal/bundler_tests/snapshots/snapshots_default.txt   
2025-03-10 04:42:44.000000000 +0100
+++ new/esbuild-0.25.2/internal/bundler_tests/snapshots/snapshots_default.txt   
2025-03-30 19:31:14.000000000 +0200
@@ -5432,6 +5432,27 @@
 });
 
 
================================================================================
+TestNodeAnnotationInvalidIdentifierIssue4100
+---------- /out.js ----------
+// entry.mjs
+var entry_exports = {};
+__export(entry_exports, {
+  "...": () => baz,
+  foo: () => foo,
+  if: () => bar
+});
+module.exports = __toCommonJS(entry_exports);
+var foo;
+var bar;
+var baz;
+// Annotate the CommonJS export names for ESM import in node:
+0 && (module.exports = {
+  "...": null,
+  foo,
+  if: null
+});
+
+================================================================================
 TestNodeModules
 ---------- /Users/user/project/out.js ----------
 // Users/user/project/node_modules/demo-pkg/index.js
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/esbuild-0.25.1/internal/bundler_tests/snapshots/snapshots_loader.txt 
new/esbuild-0.25.2/internal/bundler_tests/snapshots/snapshots_loader.txt
--- old/esbuild-0.25.1/internal/bundler_tests/snapshots/snapshots_loader.txt    
2025-03-10 04:42:44.000000000 +0100
+++ new/esbuild-0.25.2/internal/bundler_tests/snapshots/snapshots_loader.txt    
2025-03-30 19:31:14.000000000 +0200
@@ -903,6 +903,56 @@
 console.log(file_default);
 
 
================================================================================
+TestLoaderInlineSourceMapAbsolutePathIssue4075Unix
+---------- /out/entry.css.map ----------
+{
+  "version": 3,
+  "sources": ["src/styles1.scss", "src/styles2.scss"],
+  "sourcesContent": ["/* You can add global styles to this file, and also 
import other style files */\n* {\n  content: \"foo\"\n}\n", "/* You can add 
global styles to this file, and also import other style files */\n* {\n  
content: \"bar\"\n}\n"],
+  "mappings": ";AACA;AACE,WAAS;;;;ACDX;AACE,WAAS;;",
+  "names": []
+}
+
+---------- /out/entry.css ----------
+/* home/user/project/src/styles1.css */
+* {
+  content: "foo";
+}
+
+/* home/user/project/src/styles2.css */
+* {
+  content: "bar";
+}
+
+/* home/user/project/src/entry.css */
+/*# sourceMappingURL=entry.css.map */
+
+================================================================================
+TestLoaderInlineSourceMapAbsolutePathIssue4075Windows
+---------- /out/entry.css.map ----------
+{
+  "version": 3,
+  "sources": ["src/styles1.scss", "src/styles2.scss"],
+  "sourcesContent": ["/* You can add global styles to this file, and also 
import other style files */\n* {\n  content: \"foo\"\n}\n", "/* You can add 
global styles to this file, and also import other style files */\n* {\n  
content: \"bar\"\n}\n"],
+  "mappings": ";AACA;AACE,WAAS;;;;ACDX;AACE,WAAS;;",
+  "names": []
+}
+
+---------- /out/entry.css ----------
+/* home/user/project/src/styles1.css */
+* {
+  content: "foo";
+}
+
+/* home/user/project/src/styles2.css */
+* {
+  content: "bar";
+}
+
+/* home/user/project/src/entry.css */
+/*# sourceMappingURL=entry.css.map */
+
+================================================================================
 TestLoaderJSONCommonJSAndES6
 ---------- /out.js ----------
 // x.json
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/esbuild-0.25.1/internal/js_parser/sourcemap_parser.go 
new/esbuild-0.25.2/internal/js_parser/sourcemap_parser.go
--- old/esbuild-0.25.1/internal/js_parser/sourcemap_parser.go   2025-03-10 
04:42:44.000000000 +0100
+++ new/esbuild-0.25.2/internal/js_parser/sourcemap_parser.go   2025-03-30 
19:31:14.000000000 +0200
@@ -28,232 +28,387 @@
                return nil
        }
 
-       var sources []string
-       var sourcesArray []js_ast.Expr
-       var sourcesContent []sourcemap.SourceContent
-       var names []string
-       var mappingsRaw []uint16
-       var mappingsStart int32
-       var sourceRoot string
-       hasVersion := false
-
-       for _, prop := range obj.Properties {
-               keyRange := source.RangeOfString(prop.Key.Loc)
-
-               switch 
helpers.UTF16ToString(prop.Key.Data.(*js_ast.EString).Value) {
-               case "sections":
-                       log.AddID(logger.MsgID_SourceMap_SectionsInSourceMap, 
logger.Warning, &tracker, keyRange, "Source maps with \"sections\" are not 
supported")
-                       return nil
-
-               case "version":
-                       if value, ok := prop.ValueOrNil.Data.(*js_ast.ENumber); 
ok && value.Value == 3 {
-                               hasVersion = true
-                       }
+       type sourceMapSection struct {
+               lineOffset   int32
+               columnOffset int32
+               sourceMap    *js_ast.EObject
+       }
 
-               case "mappings":
-                       if value, ok := prop.ValueOrNil.Data.(*js_ast.EString); 
ok {
-                               mappingsRaw = value.Value
-                               mappingsStart = prop.ValueOrNil.Loc.Start + 1
-                       }
+       var sections []sourceMapSection
+       hasSections := false
 
-               case "sourceRoot":
-                       if value, ok := prop.ValueOrNil.Data.(*js_ast.EString); 
ok {
-                               sourceRoot = helpers.UTF16ToString(value.Value)
-                       }
+       for _, prop := range obj.Properties {
+               if 
!helpers.UTF16EqualsString(prop.Key.Data.(*js_ast.EString).Value, "sections") {
+                       continue
+               }
 
-               case "sources":
-                       if value, ok := prop.ValueOrNil.Data.(*js_ast.EArray); 
ok {
-                               sources = make([]string, len(value.Items))
-                               sourcesArray = value.Items
-                               for i, item := range value.Items {
-                                       if element, ok := 
item.Data.(*js_ast.EString); ok {
-                                               sources[i] = 
helpers.UTF16ToString(element.Value)
+               if value, ok := prop.ValueOrNil.Data.(*js_ast.EArray); ok {
+                       for _, item := range value.Items {
+                               if element, ok := item.Data.(*js_ast.EObject); 
ok {
+                                       var sectionLineOffset int32
+                                       var sectionColumnOffset int32
+                                       var sectionSourceMap *js_ast.EObject
+
+                                       for _, sectionProp := range 
element.Properties {
+                                               switch 
helpers.UTF16ToString(sectionProp.Key.Data.(*js_ast.EString).Value) {
+                                               case "offset":
+                                                       if offsetValue, ok := 
sectionProp.ValueOrNil.Data.(*js_ast.EObject); ok {
+                                                               for _, 
offsetProp := range offsetValue.Properties {
+                                                                       switch 
helpers.UTF16ToString(offsetProp.Key.Data.(*js_ast.EString).Value) {
+                                                                       case 
"line":
+                                                                               
if lineValue, ok := offsetProp.ValueOrNil.Data.(*js_ast.ENumber); ok {
+                                                                               
        sectionLineOffset = int32(lineValue.Value)
+                                                                               
}
+
+                                                                       case 
"column":
+                                                                               
if columnValue, ok := offsetProp.ValueOrNil.Data.(*js_ast.ENumber); ok {
+                                                                               
        sectionColumnOffset = int32(columnValue.Value)
+                                                                               
}
+                                                                       }
+                                                               }
+                                                       } else {
+                                                               
log.AddError(&tracker, logger.Range{Loc: sectionProp.ValueOrNil.Loc}, "Expected 
\"offset\" to be an object")
+                                                               return nil
+                                                       }
+
+                                               case "map":
+                                                       if mapValue, ok := 
sectionProp.ValueOrNil.Data.(*js_ast.EObject); ok {
+                                                               
sectionSourceMap = mapValue
+                                                       } else {
+                                                               
log.AddError(&tracker, logger.Range{Loc: sectionProp.ValueOrNil.Loc}, "Expected 
\"map\" to be an object")
+                                                               return nil
+                                                       }
+                                               }
                                        }
-                               }
-                       }
 
-               case "sourcesContent":
-                       if value, ok := prop.ValueOrNil.Data.(*js_ast.EArray); 
ok {
-                               sourcesContent = []sourcemap.SourceContent{}
-                               for _, item := range value.Items {
-                                       if element, ok := 
item.Data.(*js_ast.EString); ok {
-                                               sourcesContent = 
append(sourcesContent, sourcemap.SourceContent{
-                                                       Value:  element.Value,
-                                                       Quoted: 
source.TextForRange(source.RangeOfString(item.Loc)),
+                                       if sectionSourceMap != nil {
+                                               sections = append(sections, 
sourceMapSection{
+                                                       lineOffset:   
sectionLineOffset,
+                                                       columnOffset: 
sectionColumnOffset,
+                                                       sourceMap:    
sectionSourceMap,
                                                })
-                                       } else {
-                                               sourcesContent = 
append(sourcesContent, sourcemap.SourceContent{})
-                                       }
-                               }
-                       }
-
-               case "names":
-                       if value, ok := prop.ValueOrNil.Data.(*js_ast.EArray); 
ok {
-                               names = []string{}
-                               for _, item := range value.Items {
-                                       if element, ok := 
item.Data.(*js_ast.EString); ok {
-                                               names = append(names, 
helpers.UTF16ToString(element.Value))
-                                       } else {
-                                               names = append(names, "")
                                        }
                                }
                        }
+               } else {
+                       log.AddError(&tracker, logger.Range{Loc: 
prop.ValueOrNil.Loc}, "Expected \"sections\" to be an array")
+                       return nil
                }
-       }
 
-       // Silently fail if the version was missing or incorrect
-       if !hasVersion {
-               return nil
+               hasSections = true
+               break
        }
 
-       // Silently fail if the source map is pointless (i.e. empty)
-       if len(sources) == 0 || len(mappingsRaw) == 0 {
-               return nil
+       if !hasSections {
+               sections = append(sections, sourceMapSection{
+                       sourceMap: obj,
+               })
        }
 
+       var sources []string
+       var sourcesContent []sourcemap.SourceContent
+       var names []string
        var mappings mappingArray
-       mappingsLen := len(mappingsRaw)
-       sourcesLen := len(sources)
-       namesLen := len(names)
        var generatedLine int32
        var generatedColumn int32
-       var sourceIndex int32
-       var originalLine int32
-       var originalColumn int32
-       var originalName int32
-       current := 0
-       errorText := ""
-       errorLen := 0
        needSort := false
 
-       // Parse the mappings
-       for current < mappingsLen {
-               // Handle a line break
-               if mappingsRaw[current] == ';' {
-                       generatedLine++
-                       generatedColumn = 0
-                       current++
+       for _, section := range sections {
+               var sourcesArray []js_ast.Expr
+               var sourcesContentArray []js_ast.Expr
+               var namesArray []js_ast.Expr
+               var mappingsRaw []uint16
+               var mappingsStart int32
+               var sourceRoot string
+               hasVersion := false
+
+               for _, prop := range section.sourceMap.Properties {
+                       switch 
helpers.UTF16ToString(prop.Key.Data.(*js_ast.EString).Value) {
+                       case "version":
+                               if value, ok := 
prop.ValueOrNil.Data.(*js_ast.ENumber); ok && value.Value == 3 {
+                                       hasVersion = true
+                               }
+
+                       case "mappings":
+                               if value, ok := 
prop.ValueOrNil.Data.(*js_ast.EString); ok {
+                                       mappingsRaw = value.Value
+                                       mappingsStart = 
prop.ValueOrNil.Loc.Start + 1
+                               }
+
+                       case "sourceRoot":
+                               if value, ok := 
prop.ValueOrNil.Data.(*js_ast.EString); ok {
+                                       sourceRoot = 
helpers.UTF16ToString(value.Value)
+                               }
+
+                       case "sources":
+                               if value, ok := 
prop.ValueOrNil.Data.(*js_ast.EArray); ok {
+                                       sourcesArray = value.Items
+                               }
+
+                       case "sourcesContent":
+                               if value, ok := 
prop.ValueOrNil.Data.(*js_ast.EArray); ok {
+                                       sourcesContentArray = value.Items
+                               }
+
+                       case "names":
+                               if value, ok := 
prop.ValueOrNil.Data.(*js_ast.EArray); ok {
+                                       namesArray = value.Items
+                               }
+                       }
+               }
+
+               // Silently ignore the section if the version was missing or 
incorrect
+               if !hasVersion {
                        continue
                }
 
-               // Read the generated column
-               generatedColumnDelta, i, ok := 
sourcemap.DecodeVLQUTF16(mappingsRaw[current:])
-               if !ok {
-                       errorText = "Missing generated column"
-                       errorLen = i
-                       break
+               mappingsLen := len(mappingsRaw)
+               sourcesLen := len(sourcesArray)
+               namesLen := len(namesArray)
+
+               // Silently ignore the section if the source map is pointless 
(i.e. empty)
+               if mappingsLen == 0 || sourcesLen == 0 {
+                       continue
                }
-               if generatedColumnDelta < 0 {
-                       // This would mess up binary search
+
+               if section.lineOffset < generatedLine || (section.lineOffset == 
generatedLine && section.columnOffset < generatedColumn) {
                        needSort = true
                }
-               generatedColumn += generatedColumnDelta
-               if generatedColumn < 0 {
-                       errorText = fmt.Sprintf("Invalid generated column 
value: %d", generatedColumn)
-                       errorLen = i
-                       break
-               }
-               current += i
-
-               // According to the specification, it's valid for a mapping to 
have 1,
-               // 4, or 5 variable-length fields. Having one field means 
there's no
-               // original location information, which is pretty useless. Just 
ignore
-               // those entries.
-               if current == mappingsLen {
-                       break
-               }
-               switch mappingsRaw[current] {
-               case ',':
-                       current++
-                       continue
-               case ';':
-                       continue
-               }
 
-               // Read the original source
-               sourceIndexDelta, i, ok := 
sourcemap.DecodeVLQUTF16(mappingsRaw[current:])
-               if !ok {
-                       errorText = "Missing source index"
-                       errorLen = i
-                       break
-               }
-               sourceIndex += sourceIndexDelta
-               if sourceIndex < 0 || sourceIndex >= int32(sourcesLen) {
-                       errorText = fmt.Sprintf("Invalid source index value: 
%d", sourceIndex)
-                       errorLen = i
-                       break
-               }
-               current += i
-
-               // Read the original line
-               originalLineDelta, i, ok := 
sourcemap.DecodeVLQUTF16(mappingsRaw[current:])
-               if !ok {
-                       errorText = "Missing original line"
-                       errorLen = i
-                       break
-               }
-               originalLine += originalLineDelta
-               if originalLine < 0 {
-                       errorText = fmt.Sprintf("Invalid original line value: 
%d", originalLine)
-                       errorLen = i
-                       break
-               }
-               current += i
-
-               // Read the original column
-               originalColumnDelta, i, ok := 
sourcemap.DecodeVLQUTF16(mappingsRaw[current:])
-               if !ok {
-                       errorText = "Missing original column"
-                       errorLen = i
-                       break
-               }
-               originalColumn += originalColumnDelta
-               if originalColumn < 0 {
-                       errorText = fmt.Sprintf("Invalid original column value: 
%d", originalColumn)
-                       errorLen = i
-                       break
-               }
-               current += i
-
-               // Read the original name
-               var optionalName ast.Index32
-               if originalNameDelta, i, ok := 
sourcemap.DecodeVLQUTF16(mappingsRaw[current:]); ok {
-                       originalName += originalNameDelta
-                       if originalName < 0 || originalName >= int32(namesLen) {
-                               errorText = fmt.Sprintf("Invalid name index 
value: %d", originalName)
+               lineOffset := section.lineOffset
+               columnOffset := section.columnOffset
+               sourceOffset := int32(len(sources))
+               nameOffset := int32(len(names))
+
+               generatedLine = lineOffset
+               generatedColumn = columnOffset
+               sourceIndex := sourceOffset
+               var originalLine int32
+               var originalColumn int32
+               originalName := nameOffset
+
+               current := 0
+               errorText := ""
+               errorLen := 0
+
+               // Parse the mappings
+               for current < mappingsLen {
+                       // Handle a line break
+                       if mappingsRaw[current] == ';' {
+                               generatedLine++
+                               generatedColumn = 0
+                               current++
+                               continue
+                       }
+
+                       // Read the generated column
+                       generatedColumnDelta, i, ok := 
sourcemap.DecodeVLQUTF16(mappingsRaw[current:])
+                       if !ok {
+                               errorText = "Missing generated column"
+                               errorLen = i
+                               break
+                       }
+                       if generatedColumnDelta < 0 {
+                               // This would mess up binary search
+                               needSort = true
+                       }
+                       generatedColumn += generatedColumnDelta
+                       if (generatedLine == lineOffset && generatedColumn < 
columnOffset) || generatedColumn < 0 {
+                               errorText = fmt.Sprintf("Invalid generated 
column value: %d", generatedColumn)
                                errorLen = i
                                break
                        }
-                       optionalName = ast.MakeIndex32(uint32(originalName))
                        current += i
-               }
 
-               // Handle the next character
-               if current < mappingsLen {
-                       if c := mappingsRaw[current]; c == ',' {
+                       // According to the specification, it's valid for a 
mapping to have 1,
+                       // 4, or 5 variable-length fields. Having one field 
means there's no
+                       // original location information, which is pretty 
useless. Just ignore
+                       // those entries.
+                       if current == mappingsLen {
+                               break
+                       }
+                       switch mappingsRaw[current] {
+                       case ',':
                                current++
-                       } else if c != ';' {
-                               errorText = fmt.Sprintf("Invalid character 
after mapping: %q",
-                                       
helpers.UTF16ToString(mappingsRaw[current:current+1]))
-                               errorLen = 1
+                               continue
+                       case ';':
+                               continue
+                       }
+
+                       // Read the original source
+                       sourceIndexDelta, i, ok := 
sourcemap.DecodeVLQUTF16(mappingsRaw[current:])
+                       if !ok {
+                               errorText = "Missing source index"
+                               errorLen = i
+                               break
+                       }
+                       sourceIndex += sourceIndexDelta
+                       if sourceIndex < sourceOffset || sourceIndex >= 
sourceOffset+int32(sourcesLen) {
+                               errorText = fmt.Sprintf("Invalid source index 
value: %d", sourceIndex)
+                               errorLen = i
+                               break
+                       }
+                       current += i
+
+                       // Read the original line
+                       originalLineDelta, i, ok := 
sourcemap.DecodeVLQUTF16(mappingsRaw[current:])
+                       if !ok {
+                               errorText = "Missing original line"
+                               errorLen = i
+                               break
+                       }
+                       originalLine += originalLineDelta
+                       if originalLine < 0 {
+                               errorText = fmt.Sprintf("Invalid original line 
value: %d", originalLine)
+                               errorLen = i
+                               break
+                       }
+                       current += i
+
+                       // Read the original column
+                       originalColumnDelta, i, ok := 
sourcemap.DecodeVLQUTF16(mappingsRaw[current:])
+                       if !ok {
+                               errorText = "Missing original column"
+                               errorLen = i
+                               break
+                       }
+                       originalColumn += originalColumnDelta
+                       if originalColumn < 0 {
+                               errorText = fmt.Sprintf("Invalid original 
column value: %d", originalColumn)
+                               errorLen = i
                                break
                        }
+                       current += i
+
+                       // Read the original name
+                       var optionalName ast.Index32
+                       if originalNameDelta, i, ok := 
sourcemap.DecodeVLQUTF16(mappingsRaw[current:]); ok {
+                               originalName += originalNameDelta
+                               if originalName < nameOffset || originalName >= 
nameOffset+int32(namesLen) {
+                                       errorText = fmt.Sprintf("Invalid name 
index value: %d", originalName)
+                                       errorLen = i
+                                       break
+                               }
+                               optionalName = 
ast.MakeIndex32(uint32(originalName))
+                               current += i
+                       }
+
+                       // Handle the next character
+                       if current < mappingsLen {
+                               if c := mappingsRaw[current]; c == ',' {
+                                       current++
+                               } else if c != ';' {
+                                       errorText = fmt.Sprintf("Invalid 
character after mapping: %q",
+                                               
helpers.UTF16ToString(mappingsRaw[current:current+1]))
+                                       errorLen = 1
+                                       break
+                               }
+                       }
+
+                       mappings = append(mappings, sourcemap.Mapping{
+                               GeneratedLine:   generatedLine,
+                               GeneratedColumn: generatedColumn,
+                               SourceIndex:     sourceIndex,
+                               OriginalLine:    originalLine,
+                               OriginalColumn:  originalColumn,
+                               OriginalName:    optionalName,
+                       })
                }
 
-               mappings = append(mappings, sourcemap.Mapping{
-                       GeneratedLine:   generatedLine,
-                       GeneratedColumn: generatedColumn,
-                       SourceIndex:     sourceIndex,
-                       OriginalLine:    originalLine,
-                       OriginalColumn:  originalColumn,
-                       OriginalName:    optionalName,
-               })
+               if errorText != "" {
+                       r := logger.Range{Loc: logger.Loc{Start: mappingsStart 
+ int32(current)}, Len: int32(errorLen)}
+                       log.AddID(logger.MsgID_SourceMap_InvalidSourceMappings, 
logger.Warning, &tracker, r,
+                               fmt.Sprintf("Bad \"mappings\" data in source 
map at character %d: %s", current, errorText))
+                       return nil
+               }
+
+               // Try resolving relative source URLs into absolute source URLs.
+               // See https://tc39.es/ecma426/#resolving-sources for details.
+               var sourceURLPrefix string
+               var baseURL *url.URL
+               if sourceRoot != "" {
+                       if index := strings.LastIndexByte(sourceRoot, '/'); 
index != -1 {
+                               sourceURLPrefix = sourceRoot[:index+1]
+                       } else {
+                               sourceURLPrefix = sourceRoot + "/"
+                       }
+               }
+               if source.KeyPath.Namespace == "file" {
+                       baseURL = 
helpers.FileURLFromFilePath(source.KeyPath.Text)
+               }
+
+               for _, item := range sourcesArray {
+                       if element, ok := item.Data.(*js_ast.EString); ok {
+                               sourcePath := sourceURLPrefix + 
helpers.UTF16ToString(element.Value)
+                               sourceURL, err := url.Parse(sourcePath)
+
+                               // Report URL parse errors (such as "%XY" being 
an invalid escape)
+                               if err != nil {
+                                       if urlErr, ok := err.(*url.Error); ok {
+                                               err = urlErr.Err // Use the 
underlying error to reduce noise
+                                       }
+                                       
log.AddID(logger.MsgID_SourceMap_InvalidSourceURL, logger.Warning, &tracker, 
source.RangeOfString(item.Loc),
+                                               fmt.Sprintf("Invalid source 
URL: %s", err.Error()))
+                                       sources = append(sources, "")
+                                       continue
+                               }
+
+                               // Resolve this URL relative to the enclosing 
directory
+                               if baseURL != nil {
+                                       sourceURL = 
baseURL.ResolveReference(sourceURL)
+                               }
+                               sources = append(sources, sourceURL.String())
+                       } else {
+                               sources = append(sources, "")
+                       }
+               }
+
+               if len(sourcesContentArray) > 0 {
+                       // It's possible that one of the source maps inside 
"sections" has
+                       // different lengths for the "sources" and 
"sourcesContent" arrays.
+                       // This is bad because we need to us a single index to 
get the name
+                       // of the source from "sources[i]" and the content of 
the source
+                       // from "sourcesContent[i]".
+                       //
+                       // So if a previous source map had a shorter 
"sourcesContent" array
+                       // than its "sources" array (or if the previous source 
map just had
+                       // no "sourcesContent" array), expand our aggregated 
array to the
+                       // right length by padding it out with empty entries.
+                       sourcesContent = append(sourcesContent, 
make([]sourcemap.SourceContent, int(sourceOffset)-len(sourcesContent))...)
+
+                       for i, item := range sourcesContentArray {
+                               // Make sure we don't ever record more 
"sourcesContent" entries
+                               // than there are "sources" entries, which is 
possible because
+                               // these are two separate arrays in the source 
map JSON. We need
+                               // to avoid this because that would mess up our 
shared indexing
+                               // of the "sources" and "sourcesContent" 
arrays. See the above
+                               // comment for more details.
+                               if i == sourcesLen {
+                                       break
+                               }
+
+                               if element, ok := item.Data.(*js_ast.EString); 
ok {
+                                       sourcesContent = append(sourcesContent, 
sourcemap.SourceContent{
+                                               Value:  element.Value,
+                                               Quoted: 
source.TextForRange(source.RangeOfString(item.Loc)),
+                                       })
+                               } else {
+                                       sourcesContent = append(sourcesContent, 
sourcemap.SourceContent{})
+                               }
+                       }
+               }
+
+               for _, item := range namesArray {
+                       if element, ok := item.Data.(*js_ast.EString); ok {
+                               names = append(names, 
helpers.UTF16ToString(element.Value))
+                       } else {
+                               names = append(names, "")
+                       }
+               }
        }
 
-       if errorText != "" {
-               r := logger.Range{Loc: logger.Loc{Start: mappingsStart + 
int32(current)}, Len: int32(errorLen)}
-               log.AddID(logger.MsgID_SourceMap_InvalidSourceMappings, 
logger.Warning, &tracker, r,
-                       fmt.Sprintf("Bad \"mappings\" data in source map at 
character %d: %s", current, errorText))
+       // Silently fail if the source map is pointless (i.e. empty)
+       if len(sources) == 0 || len(mappings) == 0 {
                return nil
        }
 
@@ -265,44 +420,6 @@
                sort.Stable(mappings)
        }
 
-       // Try resolving relative source URLs into absolute source URLs.
-       // See https://tc39.es/ecma426/#resolving-sources for details.
-       var sourceURLPrefix string
-       var baseURL *url.URL
-       if sourceRoot != "" {
-               if index := strings.LastIndexByte(sourceRoot, '/'); index != -1 
{
-                       sourceURLPrefix = sourceRoot[:index+1]
-               } else {
-                       sourceURLPrefix = sourceRoot + "/"
-               }
-       }
-       if source.KeyPath.Namespace == "file" {
-               baseURL = helpers.FileURLFromFilePath(source.KeyPath.Text)
-       }
-       for i, sourcePath := range sources {
-               if sourcePath == "" {
-                       continue // Skip null entries
-               }
-               sourcePath = sourceURLPrefix + sourcePath
-               sourceURL, err := url.Parse(sourcePath)
-
-               // Report URL parse errors (such as "%XY" being an invalid 
escape)
-               if err != nil {
-                       if urlErr, ok := err.(*url.Error); ok {
-                               err = urlErr.Err // Use the underlying error to 
reduce noise
-                       }
-                       log.AddID(logger.MsgID_SourceMap_InvalidSourceURL, 
logger.Warning, &tracker, source.RangeOfString(sourcesArray[i].Loc),
-                               fmt.Sprintf("Invalid source URL: %s", 
err.Error()))
-                       continue
-               }
-
-               // Resolve this URL relative to the enclosing directory
-               if baseURL != nil {
-                       sourceURL = baseURL.ResolveReference(sourceURL)
-               }
-               sources[i] = sourceURL.String()
-       }
-
        return &sourcemap.SourceMap{
                Sources:        sources,
                SourcesContent: sourcesContent,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.25.1/internal/linker/linker.go 
new/esbuild-0.25.2/internal/linker/linker.go
--- old/esbuild-0.25.1/internal/linker/linker.go        2025-03-10 
04:42:44.000000000 +0100
+++ new/esbuild-0.25.2/internal/linker/linker.go        2025-03-30 
19:31:14.000000000 +0200
@@ -5078,7 +5078,7 @@
 
                                // "{if: null}"
                                var valueOrNil js_ast.Expr
-                               if _, ok := js_lexer.Keywords[export]; ok {
+                               if _, ok := js_lexer.Keywords[export]; ok || 
!js_ast.IsIdentifier(export) {
                                        // Make sure keywords don't cause a 
syntax error. This has to map to
                                        // "null" instead of something shorter 
like "0" because the library
                                        // "cjs-module-lexer" only supports 
identifiers in this position, and
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.25.1/internal/logger/msg_ids.go 
new/esbuild-0.25.2/internal/logger/msg_ids.go
--- old/esbuild-0.25.1/internal/logger/msg_ids.go       2025-03-10 
04:42:44.000000000 +0100
+++ new/esbuild-0.25.2/internal/logger/msg_ids.go       2025-03-30 
19:31:14.000000000 +0200
@@ -71,7 +71,6 @@
        MsgID_SourceMap_InvalidSourceMappings
        MsgID_SourceMap_InvalidSourceURL
        MsgID_SourceMap_MissingSourceMap
-       MsgID_SourceMap_SectionsInSourceMap
        MsgID_SourceMap_UnsupportedSourceMapComment
 
        // package.json
@@ -212,8 +211,6 @@
                overrides[MsgID_SourceMap_InvalidSourceURL] = logLevel
        case "missing-source-map":
                overrides[MsgID_SourceMap_MissingSourceMap] = logLevel
-       case "sections-in-source-map":
-               overrides[MsgID_SourceMap_SectionsInSourceMap] = logLevel
        case "unsupported-source-map-comment":
                overrides[MsgID_SourceMap_UnsupportedSourceMapComment] = 
logLevel
 
@@ -348,8 +345,6 @@
                return "invalid-source-url"
        case MsgID_SourceMap_MissingSourceMap:
                return "missing-source-map"
-       case MsgID_SourceMap_SectionsInSourceMap:
-               return "sections-in-source-map"
        case MsgID_SourceMap_UnsupportedSourceMapComment:
                return "unsupported-source-map-comment"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.25.1/lib/shared/common.ts 
new/esbuild-0.25.2/lib/shared/common.ts
--- old/esbuild-0.25.1/lib/shared/common.ts     2025-03-10 04:42:44.000000000 
+0100
+++ new/esbuild-0.25.2/lib/shared/common.ts     2025-03-30 19:31:14.000000000 
+0200
@@ -190,8 +190,8 @@
   if (ignoreAnnotations) flags.push(`--ignore-annotations`)
   if (drop) for (let what of drop) 
flags.push(`--drop:${validateStringValue(what, 'drop')}`)
   if (dropLabels) flags.push(`--drop-labels=${Array.from(dropLabels).map(what 
=> validateStringValue(what, 'dropLabels')).join(',')}`)
-  if (mangleProps) flags.push(`--mangle-props=${mangleProps.source}`)
-  if (reserveProps) flags.push(`--reserve-props=${reserveProps.source}`)
+  if (mangleProps) 
flags.push(`--mangle-props=${jsRegExpToGoRegExp(mangleProps)}`)
+  if (reserveProps) 
flags.push(`--reserve-props=${jsRegExpToGoRegExp(reserveProps)}`)
   if (mangleQuoted !== void 0) flags.push(`--mangle-quoted=${mangleQuoted}`)
 
   if (jsx) flags.push(`--jsx=${jsx}`)
@@ -1316,7 +1316,7 @@
           if (filter == null) throw new Error(`onResolve() call is missing a 
filter`)
           let id = nextCallbackID++
           onResolveCallbacks[id] = { name: name!, callback, note: 
registeredNote }
-          plugin.onResolve.push({ id, filter: filter.source, namespace: 
namespace || '' })
+          plugin.onResolve.push({ id, filter: jsRegExpToGoRegExp(filter), 
namespace: namespace || '' })
         },
 
         onLoad(options, callback) {
@@ -1329,7 +1329,7 @@
           if (filter == null) throw new Error(`onLoad() call is missing a 
filter`)
           let id = nextCallbackID++
           onLoadCallbacks[id] = { name: name!, callback, note: registeredNote }
-          plugin.onLoad.push({ id, filter: filter.source, namespace: namespace 
|| '' })
+          plugin.onLoad.push({ id, filter: jsRegExpToGoRegExp(filter), 
namespace: namespace || '' })
         },
 
         onDispose(callback) {
@@ -1859,3 +1859,9 @@
     },
   }
 }
+
+function jsRegExpToGoRegExp(regexp: RegExp): string {
+  let result = regexp.source
+  if (regexp.flags) result = `(?${regexp.flags})${result}`
+  return result
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.25.1/npm/@esbuild/aix-ppc64/package.json 
new/esbuild-0.25.2/npm/@esbuild/aix-ppc64/package.json
--- old/esbuild-0.25.1/npm/@esbuild/aix-ppc64/package.json      2025-03-10 
04:42:44.000000000 +0100
+++ new/esbuild-0.25.2/npm/@esbuild/aix-ppc64/package.json      2025-03-30 
19:31:14.000000000 +0200
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/aix-ppc64",
-  "version": "0.25.1",
+  "version": "0.25.2",
   "description": "The IBM AIX PowerPC 64-bit binary for esbuild, a JavaScript 
bundler.",
   "repository": {
     "type": "git",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.25.1/npm/@esbuild/android-arm/package.json 
new/esbuild-0.25.2/npm/@esbuild/android-arm/package.json
--- old/esbuild-0.25.1/npm/@esbuild/android-arm/package.json    2025-03-10 
04:42:44.000000000 +0100
+++ new/esbuild-0.25.2/npm/@esbuild/android-arm/package.json    2025-03-30 
19:31:14.000000000 +0200
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/android-arm",
-  "version": "0.25.1",
+  "version": "0.25.2",
   "description": "A WebAssembly shim for esbuild on Android ARM.",
   "repository": {
     "type": "git",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/esbuild-0.25.1/npm/@esbuild/android-arm64/package.json 
new/esbuild-0.25.2/npm/@esbuild/android-arm64/package.json
--- old/esbuild-0.25.1/npm/@esbuild/android-arm64/package.json  2025-03-10 
04:42:44.000000000 +0100
+++ new/esbuild-0.25.2/npm/@esbuild/android-arm64/package.json  2025-03-30 
19:31:14.000000000 +0200
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/android-arm64",
-  "version": "0.25.1",
+  "version": "0.25.2",
   "description": "The Android ARM 64-bit binary for esbuild, a JavaScript 
bundler.",
   "repository": {
     "type": "git",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.25.1/npm/@esbuild/android-x64/package.json 
new/esbuild-0.25.2/npm/@esbuild/android-x64/package.json
--- old/esbuild-0.25.1/npm/@esbuild/android-x64/package.json    2025-03-10 
04:42:44.000000000 +0100
+++ new/esbuild-0.25.2/npm/@esbuild/android-x64/package.json    2025-03-30 
19:31:14.000000000 +0200
@@ -1,8 +1,11 @@
 {
   "name": "@esbuild/android-x64",
-  "version": "0.25.1",
+  "version": "0.25.2",
   "description": "A WebAssembly shim for esbuild on Android x64.",
-  "repository": "https://github.com/evanw/esbuild";,
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/evanw/esbuild.git";
+  },
   "license": "MIT",
   "preferUnplugged": true,
   "engines": {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/esbuild-0.25.1/npm/@esbuild/darwin-arm64/package.json 
new/esbuild-0.25.2/npm/@esbuild/darwin-arm64/package.json
--- old/esbuild-0.25.1/npm/@esbuild/darwin-arm64/package.json   2025-03-10 
04:42:44.000000000 +0100
+++ new/esbuild-0.25.2/npm/@esbuild/darwin-arm64/package.json   2025-03-30 
19:31:14.000000000 +0200
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/darwin-arm64",
-  "version": "0.25.1",
+  "version": "0.25.2",
   "description": "The macOS ARM 64-bit binary for esbuild, a JavaScript 
bundler.",
   "repository": {
     "type": "git",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.25.1/npm/@esbuild/darwin-x64/package.json 
new/esbuild-0.25.2/npm/@esbuild/darwin-x64/package.json
--- old/esbuild-0.25.1/npm/@esbuild/darwin-x64/package.json     2025-03-10 
04:42:44.000000000 +0100
+++ new/esbuild-0.25.2/npm/@esbuild/darwin-x64/package.json     2025-03-30 
19:31:14.000000000 +0200
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/darwin-x64",
-  "version": "0.25.1",
+  "version": "0.25.2",
   "description": "The macOS 64-bit binary for esbuild, a JavaScript bundler.",
   "repository": {
     "type": "git",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/esbuild-0.25.1/npm/@esbuild/freebsd-arm64/package.json 
new/esbuild-0.25.2/npm/@esbuild/freebsd-arm64/package.json
--- old/esbuild-0.25.1/npm/@esbuild/freebsd-arm64/package.json  2025-03-10 
04:42:44.000000000 +0100
+++ new/esbuild-0.25.2/npm/@esbuild/freebsd-arm64/package.json  2025-03-30 
19:31:14.000000000 +0200
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/freebsd-arm64",
-  "version": "0.25.1",
+  "version": "0.25.2",
   "description": "The FreeBSD ARM 64-bit binary for esbuild, a JavaScript 
bundler.",
   "repository": {
     "type": "git",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.25.1/npm/@esbuild/freebsd-x64/package.json 
new/esbuild-0.25.2/npm/@esbuild/freebsd-x64/package.json
--- old/esbuild-0.25.1/npm/@esbuild/freebsd-x64/package.json    2025-03-10 
04:42:44.000000000 +0100
+++ new/esbuild-0.25.2/npm/@esbuild/freebsd-x64/package.json    2025-03-30 
19:31:14.000000000 +0200
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/freebsd-x64",
-  "version": "0.25.1",
+  "version": "0.25.2",
   "description": "The FreeBSD 64-bit binary for esbuild, a JavaScript 
bundler.",
   "repository": {
     "type": "git",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.25.1/npm/@esbuild/linux-arm/package.json 
new/esbuild-0.25.2/npm/@esbuild/linux-arm/package.json
--- old/esbuild-0.25.1/npm/@esbuild/linux-arm/package.json      2025-03-10 
04:42:44.000000000 +0100
+++ new/esbuild-0.25.2/npm/@esbuild/linux-arm/package.json      2025-03-30 
19:31:14.000000000 +0200
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/linux-arm",
-  "version": "0.25.1",
+  "version": "0.25.2",
   "description": "The Linux ARM binary for esbuild, a JavaScript bundler.",
   "repository": {
     "type": "git",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.25.1/npm/@esbuild/linux-arm64/package.json 
new/esbuild-0.25.2/npm/@esbuild/linux-arm64/package.json
--- old/esbuild-0.25.1/npm/@esbuild/linux-arm64/package.json    2025-03-10 
04:42:44.000000000 +0100
+++ new/esbuild-0.25.2/npm/@esbuild/linux-arm64/package.json    2025-03-30 
19:31:14.000000000 +0200
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/linux-arm64",
-  "version": "0.25.1",
+  "version": "0.25.2",
   "description": "The Linux ARM 64-bit binary for esbuild, a JavaScript 
bundler.",
   "repository": {
     "type": "git",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.25.1/npm/@esbuild/linux-ia32/package.json 
new/esbuild-0.25.2/npm/@esbuild/linux-ia32/package.json
--- old/esbuild-0.25.1/npm/@esbuild/linux-ia32/package.json     2025-03-10 
04:42:44.000000000 +0100
+++ new/esbuild-0.25.2/npm/@esbuild/linux-ia32/package.json     2025-03-30 
19:31:14.000000000 +0200
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/linux-ia32",
-  "version": "0.25.1",
+  "version": "0.25.2",
   "description": "The Linux 32-bit binary for esbuild, a JavaScript bundler.",
   "repository": {
     "type": "git",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/esbuild-0.25.1/npm/@esbuild/linux-loong64/package.json 
new/esbuild-0.25.2/npm/@esbuild/linux-loong64/package.json
--- old/esbuild-0.25.1/npm/@esbuild/linux-loong64/package.json  2025-03-10 
04:42:44.000000000 +0100
+++ new/esbuild-0.25.2/npm/@esbuild/linux-loong64/package.json  2025-03-30 
19:31:14.000000000 +0200
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/linux-loong64",
-  "version": "0.25.1",
+  "version": "0.25.2",
   "description": "The Linux LoongArch 64-bit binary for esbuild, a JavaScript 
bundler.",
   "repository": {
     "type": "git",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/esbuild-0.25.1/npm/@esbuild/linux-mips64el/package.json 
new/esbuild-0.25.2/npm/@esbuild/linux-mips64el/package.json
--- old/esbuild-0.25.1/npm/@esbuild/linux-mips64el/package.json 2025-03-10 
04:42:44.000000000 +0100
+++ new/esbuild-0.25.2/npm/@esbuild/linux-mips64el/package.json 2025-03-30 
19:31:14.000000000 +0200
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/linux-mips64el",
-  "version": "0.25.1",
+  "version": "0.25.2",
   "description": "The Linux MIPS 64-bit Little Endian binary for esbuild, a 
JavaScript bundler.",
   "repository": {
     "type": "git",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.25.1/npm/@esbuild/linux-ppc64/package.json 
new/esbuild-0.25.2/npm/@esbuild/linux-ppc64/package.json
--- old/esbuild-0.25.1/npm/@esbuild/linux-ppc64/package.json    2025-03-10 
04:42:44.000000000 +0100
+++ new/esbuild-0.25.2/npm/@esbuild/linux-ppc64/package.json    2025-03-30 
19:31:14.000000000 +0200
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/linux-ppc64",
-  "version": "0.25.1",
+  "version": "0.25.2",
   "description": "The Linux PowerPC 64-bit Little Endian binary for esbuild, a 
JavaScript bundler.",
   "repository": {
     "type": "git",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/esbuild-0.25.1/npm/@esbuild/linux-riscv64/package.json 
new/esbuild-0.25.2/npm/@esbuild/linux-riscv64/package.json
--- old/esbuild-0.25.1/npm/@esbuild/linux-riscv64/package.json  2025-03-10 
04:42:44.000000000 +0100
+++ new/esbuild-0.25.2/npm/@esbuild/linux-riscv64/package.json  2025-03-30 
19:31:14.000000000 +0200
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/linux-riscv64",
-  "version": "0.25.1",
+  "version": "0.25.2",
   "description": "The Linux RISC-V 64-bit binary for esbuild, a JavaScript 
bundler.",
   "repository": {
     "type": "git",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.25.1/npm/@esbuild/linux-s390x/package.json 
new/esbuild-0.25.2/npm/@esbuild/linux-s390x/package.json
--- old/esbuild-0.25.1/npm/@esbuild/linux-s390x/package.json    2025-03-10 
04:42:44.000000000 +0100
+++ new/esbuild-0.25.2/npm/@esbuild/linux-s390x/package.json    2025-03-30 
19:31:14.000000000 +0200
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/linux-s390x",
-  "version": "0.25.1",
+  "version": "0.25.2",
   "description": "The Linux IBM Z 64-bit Big Endian binary for esbuild, a 
JavaScript bundler.",
   "repository": {
     "type": "git",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.25.1/npm/@esbuild/linux-x64/package.json 
new/esbuild-0.25.2/npm/@esbuild/linux-x64/package.json
--- old/esbuild-0.25.1/npm/@esbuild/linux-x64/package.json      2025-03-10 
04:42:44.000000000 +0100
+++ new/esbuild-0.25.2/npm/@esbuild/linux-x64/package.json      2025-03-30 
19:31:14.000000000 +0200
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/linux-x64",
-  "version": "0.25.1",
+  "version": "0.25.2",
   "description": "The Linux 64-bit binary for esbuild, a JavaScript bundler.",
   "repository": {
     "type": "git",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/esbuild-0.25.1/npm/@esbuild/netbsd-arm64/package.json 
new/esbuild-0.25.2/npm/@esbuild/netbsd-arm64/package.json
--- old/esbuild-0.25.1/npm/@esbuild/netbsd-arm64/package.json   2025-03-10 
04:42:44.000000000 +0100
+++ new/esbuild-0.25.2/npm/@esbuild/netbsd-arm64/package.json   2025-03-30 
19:31:14.000000000 +0200
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/netbsd-arm64",
-  "version": "0.25.1",
+  "version": "0.25.2",
   "description": "The NetBSD ARM 64-bit binary for esbuild, a JavaScript 
bundler.",
   "repository": {
     "type": "git",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.25.1/npm/@esbuild/netbsd-x64/package.json 
new/esbuild-0.25.2/npm/@esbuild/netbsd-x64/package.json
--- old/esbuild-0.25.1/npm/@esbuild/netbsd-x64/package.json     2025-03-10 
04:42:44.000000000 +0100
+++ new/esbuild-0.25.2/npm/@esbuild/netbsd-x64/package.json     2025-03-30 
19:31:14.000000000 +0200
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/netbsd-x64",
-  "version": "0.25.1",
+  "version": "0.25.2",
   "description": "The NetBSD AMD64 binary for esbuild, a JavaScript bundler.",
   "repository": {
     "type": "git",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/esbuild-0.25.1/npm/@esbuild/openbsd-arm64/package.json 
new/esbuild-0.25.2/npm/@esbuild/openbsd-arm64/package.json
--- old/esbuild-0.25.1/npm/@esbuild/openbsd-arm64/package.json  2025-03-10 
04:42:44.000000000 +0100
+++ new/esbuild-0.25.2/npm/@esbuild/openbsd-arm64/package.json  2025-03-30 
19:31:14.000000000 +0200
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/openbsd-arm64",
-  "version": "0.25.1",
+  "version": "0.25.2",
   "description": "The OpenBSD ARM 64-bit binary for esbuild, a JavaScript 
bundler.",
   "repository": {
     "type": "git",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.25.1/npm/@esbuild/openbsd-x64/package.json 
new/esbuild-0.25.2/npm/@esbuild/openbsd-x64/package.json
--- old/esbuild-0.25.1/npm/@esbuild/openbsd-x64/package.json    2025-03-10 
04:42:44.000000000 +0100
+++ new/esbuild-0.25.2/npm/@esbuild/openbsd-x64/package.json    2025-03-30 
19:31:14.000000000 +0200
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/openbsd-x64",
-  "version": "0.25.1",
+  "version": "0.25.2",
   "description": "The OpenBSD 64-bit binary for esbuild, a JavaScript 
bundler.",
   "repository": {
     "type": "git",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.25.1/npm/@esbuild/sunos-x64/package.json 
new/esbuild-0.25.2/npm/@esbuild/sunos-x64/package.json
--- old/esbuild-0.25.1/npm/@esbuild/sunos-x64/package.json      2025-03-10 
04:42:44.000000000 +0100
+++ new/esbuild-0.25.2/npm/@esbuild/sunos-x64/package.json      2025-03-30 
19:31:14.000000000 +0200
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/sunos-x64",
-  "version": "0.25.1",
+  "version": "0.25.2",
   "description": "The illumos 64-bit binary for esbuild, a JavaScript 
bundler.",
   "repository": {
     "type": "git",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/esbuild-0.25.1/npm/@esbuild/wasi-preview1/package.json 
new/esbuild-0.25.2/npm/@esbuild/wasi-preview1/package.json
--- old/esbuild-0.25.1/npm/@esbuild/wasi-preview1/package.json  2025-03-10 
04:42:44.000000000 +0100
+++ new/esbuild-0.25.2/npm/@esbuild/wasi-preview1/package.json  2025-03-30 
19:31:14.000000000 +0200
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/wasi-preview1",
-  "version": "0.25.1",
+  "version": "0.25.2",
   "description": "The WASI (WebAssembly System Interface) preview 1 binary for 
esbuild, a JavaScript bundler.",
   "repository": {
     "type": "git",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.25.1/npm/@esbuild/win32-arm64/package.json 
new/esbuild-0.25.2/npm/@esbuild/win32-arm64/package.json
--- old/esbuild-0.25.1/npm/@esbuild/win32-arm64/package.json    2025-03-10 
04:42:44.000000000 +0100
+++ new/esbuild-0.25.2/npm/@esbuild/win32-arm64/package.json    2025-03-30 
19:31:14.000000000 +0200
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/win32-arm64",
-  "version": "0.25.1",
+  "version": "0.25.2",
   "description": "The Windows ARM 64-bit binary for esbuild, a JavaScript 
bundler.",
   "repository": {
     "type": "git",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.25.1/npm/@esbuild/win32-ia32/package.json 
new/esbuild-0.25.2/npm/@esbuild/win32-ia32/package.json
--- old/esbuild-0.25.1/npm/@esbuild/win32-ia32/package.json     2025-03-10 
04:42:44.000000000 +0100
+++ new/esbuild-0.25.2/npm/@esbuild/win32-ia32/package.json     2025-03-30 
19:31:14.000000000 +0200
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/win32-ia32",
-  "version": "0.25.1",
+  "version": "0.25.2",
   "description": "The Windows 32-bit binary for esbuild, a JavaScript 
bundler.",
   "repository": {
     "type": "git",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.25.1/npm/@esbuild/win32-x64/package.json 
new/esbuild-0.25.2/npm/@esbuild/win32-x64/package.json
--- old/esbuild-0.25.1/npm/@esbuild/win32-x64/package.json      2025-03-10 
04:42:44.000000000 +0100
+++ new/esbuild-0.25.2/npm/@esbuild/win32-x64/package.json      2025-03-30 
19:31:14.000000000 +0200
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/win32-x64",
-  "version": "0.25.1",
+  "version": "0.25.2",
   "description": "The Windows 64-bit binary for esbuild, a JavaScript 
bundler.",
   "repository": {
     "type": "git",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.25.1/npm/esbuild/package.json 
new/esbuild-0.25.2/npm/esbuild/package.json
--- old/esbuild-0.25.1/npm/esbuild/package.json 2025-03-10 04:42:44.000000000 
+0100
+++ new/esbuild-0.25.2/npm/esbuild/package.json 2025-03-30 19:31:14.000000000 
+0200
@@ -1,6 +1,6 @@
 {
   "name": "esbuild",
-  "version": "0.25.1",
+  "version": "0.25.2",
   "description": "An extremely fast JavaScript and CSS bundler and minifier.",
   "repository": {
     "type": "git",
@@ -18,31 +18,31 @@
     "esbuild": "bin/esbuild"
   },
   "optionalDependencies": {
-    "@esbuild/aix-ppc64": "0.25.1",
-    "@esbuild/android-arm": "0.25.1",
-    "@esbuild/android-arm64": "0.25.1",
-    "@esbuild/android-x64": "0.25.1",
-    "@esbuild/darwin-arm64": "0.25.1",
-    "@esbuild/darwin-x64": "0.25.1",
-    "@esbuild/freebsd-arm64": "0.25.1",
-    "@esbuild/freebsd-x64": "0.25.1",
-    "@esbuild/linux-arm": "0.25.1",
-    "@esbuild/linux-arm64": "0.25.1",
-    "@esbuild/linux-ia32": "0.25.1",
-    "@esbuild/linux-loong64": "0.25.1",
-    "@esbuild/linux-mips64el": "0.25.1",
-    "@esbuild/linux-ppc64": "0.25.1",
-    "@esbuild/linux-riscv64": "0.25.1",
-    "@esbuild/linux-s390x": "0.25.1",
-    "@esbuild/linux-x64": "0.25.1",
-    "@esbuild/netbsd-arm64": "0.25.1",
-    "@esbuild/netbsd-x64": "0.25.1",
-    "@esbuild/openbsd-arm64": "0.25.1",
-    "@esbuild/openbsd-x64": "0.25.1",
-    "@esbuild/sunos-x64": "0.25.1",
-    "@esbuild/win32-arm64": "0.25.1",
-    "@esbuild/win32-ia32": "0.25.1",
-    "@esbuild/win32-x64": "0.25.1"
+    "@esbuild/aix-ppc64": "0.25.2",
+    "@esbuild/android-arm": "0.25.2",
+    "@esbuild/android-arm64": "0.25.2",
+    "@esbuild/android-x64": "0.25.2",
+    "@esbuild/darwin-arm64": "0.25.2",
+    "@esbuild/darwin-x64": "0.25.2",
+    "@esbuild/freebsd-arm64": "0.25.2",
+    "@esbuild/freebsd-x64": "0.25.2",
+    "@esbuild/linux-arm": "0.25.2",
+    "@esbuild/linux-arm64": "0.25.2",
+    "@esbuild/linux-ia32": "0.25.2",
+    "@esbuild/linux-loong64": "0.25.2",
+    "@esbuild/linux-mips64el": "0.25.2",
+    "@esbuild/linux-ppc64": "0.25.2",
+    "@esbuild/linux-riscv64": "0.25.2",
+    "@esbuild/linux-s390x": "0.25.2",
+    "@esbuild/linux-x64": "0.25.2",
+    "@esbuild/netbsd-arm64": "0.25.2",
+    "@esbuild/netbsd-x64": "0.25.2",
+    "@esbuild/openbsd-arm64": "0.25.2",
+    "@esbuild/openbsd-x64": "0.25.2",
+    "@esbuild/sunos-x64": "0.25.2",
+    "@esbuild/win32-arm64": "0.25.2",
+    "@esbuild/win32-ia32": "0.25.2",
+    "@esbuild/win32-x64": "0.25.2"
   },
   "license": "MIT"
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.25.1/npm/esbuild-wasm/package.json 
new/esbuild-0.25.2/npm/esbuild-wasm/package.json
--- old/esbuild-0.25.1/npm/esbuild-wasm/package.json    2025-03-10 
04:42:44.000000000 +0100
+++ new/esbuild-0.25.2/npm/esbuild-wasm/package.json    2025-03-30 
19:31:14.000000000 +0200
@@ -1,6 +1,6 @@
 {
   "name": "esbuild-wasm",
-  "version": "0.25.1",
+  "version": "0.25.2",
   "description": "The cross-platform WebAssembly binary for esbuild, a 
JavaScript bundler.",
   "repository": {
     "type": "git",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.25.1/scripts/end-to-end-tests.js 
new/esbuild-0.25.2/scripts/end-to-end-tests.js
--- old/esbuild-0.25.1/scripts/end-to-end-tests.js      2025-03-10 
04:42:44.000000000 +0100
+++ new/esbuild-0.25.2/scripts/end-to-end-tests.js      2025-03-30 
19:31:14.000000000 +0200
@@ -2197,14 +2197,18 @@
 
 // Test external ES6 export
 tests.push(
-  test(['--bundle', 'foo.js', '--outfile=out.js', '--format=cjs'], {
+  test(['--bundle', 'foo.js', '--outfile=out.js', '--format=cjs', 
'--platform=node'], {
     'foo.js': `export const foo = 123`,
     'node.js': `const out = require('./out'); if (!out.__esModule || out.foo 
!== 123) throw 'fail'`,
   }),
-  test(['--bundle', 'foo.js', '--outfile=out.js', '--format=cjs'], {
+  test(['--bundle', 'foo.js', '--outfile=out.js', '--format=cjs', 
'--platform=node'], {
     'foo.js': `export default 123`,
     'node.js': `const out = require('./out'); if (!out.__esModule || 
out.default !== 123) throw 'fail'`,
   }),
+  test(['--bundle', 'foo.js', '--outfile=out.js', '--format=cjs', 
'--platform=node'], {
+    'foo.js': `const something = 123; export { something as 'some name' }`,
+    'node.js': `const out = require('./out'); if (!out.__esModule || out['some 
name'] !== 123) throw 'fail'`,
+  }),
   test(['--bundle', 'foo.js', '--outfile=out.js', '--format=esm'], {
     'foo.js': `export const foo = 123`,
     'node.js': `import {foo} from './out.js'; if (foo !== 123) throw 'fail'`,
@@ -2213,6 +2217,10 @@
     'foo.js': `export default 123`,
     'node.js': `import out from './out.js'; if (out !== 123) throw 'fail'`,
   }),
+  test(['--bundle', 'foo.js', '--outfile=out.js', '--format=esm'], {
+    'foo.js': `const something = 123; export { something as 'some name' }`,
+    'node.js': `import { 'some name' as out } from './out.js'; if (out !== 
123) throw 'fail'`,
+  }),
   test(['--bundle', 'foo.js', '--outfile=out.js', '--format=cjs', 
'--platform=node'], {
     'foo.js': `
       export function confuseNode(exports) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.25.1/scripts/plugin-tests.js 
new/esbuild-0.25.2/scripts/plugin-tests.js
--- old/esbuild-0.25.1/scripts/plugin-tests.js  2025-03-10 04:42:44.000000000 
+0100
+++ new/esbuild-0.25.2/scripts/plugin-tests.js  2025-03-30 19:31:14.000000000 
+0200
@@ -145,6 +145,48 @@
     }
   },
 
+  async caseInsensitiveRegExp({ esbuild, testDir }) {
+    const inputJs = path.join(testDir, 'in.js')
+    await writeFileAsync(inputJs, `export default 123`)
+
+    const inputCpp = path.join(testDir, 'in.CpP')
+    await writeFileAsync(inputCpp, `export default 123`)
+
+    // onResolve
+    const onResolveResult = await esbuild.build({
+      entryPoints: ['example.CpP'],
+      write: false,
+      plugins: [{
+        name: 'name',
+        setup(build) {
+          build.onResolve({ filter: /\.c(pp|xx)?$/i }, args => {
+            assert.strictEqual(args.path, 'example.CpP')
+            return { path: inputJs }
+          })
+        },
+      }],
+    })
+    assert.strictEqual(onResolveResult.outputFiles.length, 1)
+    assert.strictEqual(onResolveResult.outputFiles[0].text, `export default 
123;\n`)
+
+    // onLoad
+    const onLoadResult = await esbuild.build({
+      entryPoints: [inputCpp],
+      write: false,
+      plugins: [{
+        name: 'name',
+        setup(build) {
+          build.onLoad({ filter: /\.c(pp|xx)?$/i }, args => {
+            assert(args.path.endsWith('in.CpP'))
+            return { contents: 'export default true' }
+          })
+        },
+      }],
+    })
+    assert.strictEqual(onLoadResult.outputFiles.length, 1)
+    assert.strictEqual(onLoadResult.outputFiles[0].text, `export default 
true;\n`)
+  },
+
   async pluginMissingName({ esbuild }) {
     try {
       await esbuild.build({
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.25.1/scripts/verify-source-map.js 
new/esbuild-0.25.2/scripts/verify-source-map.js
--- old/esbuild-0.25.1/scripts/verify-source-map.js     2025-03-10 
04:42:44.000000000 +0100
+++ new/esbuild-0.25.2/scripts/verify-source-map.js     2025-03-30 
19:31:14.000000000 +0200
@@ -496,6 +496,69 @@
   test: 'input.js',
 }
 
+// This test case was generated using the "shadow-cljs" tool by someone who has
+// no idea how to write Clojure code (i.e. me). See the following GitHub issue
+// for more details: https://github.com/evanw/esbuild/issues/3439
+//
+// Note that the mappings in the Clojure output strangely seem to be really
+// buggy. Many sub-expressions with two operands map the operands switched,
+// strings are way off, and there's even one mapping that's floating off in
+// space past the end of the line. This appears to just be bad output from the
+// Clojure tooling itself though, and not a problem with esbuild.
+//
+// For the example code below, I manually edited the mapping for the "done"
+// string to line up correctly so that this test can pass (it was off by
+// five lines).
+const testCaseIndexSourceMap = {
+  'entry.js': `
+    import './app.main.js'
+    console.log('testing')
+  `,
+  'app.main.js': `export const $APP = {};
+export const shadow$provide = {};
+export const $jscomp = {};
+/*
+
+ Copyright The Closure Library Authors.
+ SPDX-License-Identifier: Apache-2.0
+*/
+console.log(function $app$lib$log_many$$($G__6268$jscomp$1_i$jscomp$282$$, 
$collection$$) {
+  return $G__6268$jscomp$1_i$jscomp$282$$ < $collection$$.length ? (console.` +
+    `log($collection$$.at($G__6268$jscomp$1_i$jscomp$282$$)), $G__6268$jscom` +
+    `p$1_i$jscomp$282$$ += 1, $app$lib$log_many$$.$cljs$core$IFn$_invoke$ari` +
+    `ty$2$ ? $app$lib$log_many$$.$cljs$core$IFn$_invoke$arity$2$($G__6268$js` +
+    `comp$1_i$jscomp$282$$, $collection$$) : $app$lib$log_many$$.call(null, ` +
+    `$G__6268$jscomp$1_i$jscomp$282$$, $collection$$)) : "done";
+}(0, Object.keys(console)));
+export const render = {}.render;
+
+//# sourceMappingURL=app.main.js.map`,
+  'app.main.js.map': `{"version":3,"file":"app.main.js","sections":[{"offset` +
+    `":{"line":3,"column":0},"map":{"version":3,"file":"app.main.js","lineCo` +
+    `unt":10,"mappings":"A;;;;;AAGMA,OAAAA,CAAAA,GAAAA,CCDAC,QAAAA,oBAAAA,CA` +
+    `AUC,gCAAVD,EAAYE,aAAZF,CAAYE;AAAlB,SACSD,gCADT,GACWC,aAAUA,CAAAA,MADrB,` +
+    `IAGYH,OAAAA,CAAAA,GAAAA,CAAgBG,aAAAA,CAAAA,EAAAA,CAAWD,gCAAXC,CAAhBH,CA` +
+    `CN,EAAUE,gCAAV,IAAaA,CAAb,EAAAE,mBAAAC,CAAAA,+BAAA,GAAAD,mBAAAC,CAAAA,+` +
+    `BAAA,CAAAC,gCAAA,EAAkBH,aAAlB,CAAA,GAAAI,mBAAAA,CAAAA,IAAAA,CAAAA,IAAAA` +
+    `,EAAAD,gCAAAC,EAAkBJ,aAAlBI,CAJN,IAKI,MALJ;AAAkBJ,CDCD,CAACF,CAAD,EAAgB` +
+    `O,MAAOC,CAAAA,IAAP,CAAiBT,OAAjB,CAAhB,CAAXA,CAAAA;AEFN,sBFDkBU,EECaC,CA` +
+    `AAA,MAA/B;;","sources":["app/app.cljs","app/lib.cljs","shadow/module/ap` +
+    `p.main/append.js"],"sourcesContent":["(ns app.app\\n  (:require [app.li` +
+    `b :as lib]))\\n\\n(.log js/console (lib/log-many 0 (.keys js/Object js/` +
+    `console)))\\n","(ns app.lib)\\n\\n(defn log-many [i collection]\\n  (if` +
+    ` (< i (.-length collection))\\n    (do\\n      (.log js/console (.at co` +
+    `llection i))\\n      (log-many (+ i 1) collection))\\n    \\"done\\"))` +
+    `\\n","\\nshadow$export(\\"render\\",app.app.render);"],"names":["js/con` +
+    `sole","app.lib/log-many","i","collection","app.lib.log_manycljs$core$IF` +
+    `n$_invoke$arity$2","cljs$core$IFn$_invoke$arity$2","G__6268","G__6269",` +
+    `"Object","js/Object","app.apprender","render"],"x_google_ignoreList":[2` +
+    `]}}]}`,
+}
+
+const toSearchIndexSourceMap = {
+  'done': 'app/lib.cljs',
+}
+
 // This case covers a crash when esbuild would generate an invalid source map
 // containing a mapping with an index of a source that's out of bounds of the
 // "sources" array. This happened when generating the namespace exports chunk
@@ -1147,6 +1210,12 @@
           outfile: 'out.js',
           flags: flags.concat('--bundle'),
           entryPoints: ['entry.js'],
+          crlf,
+        }),
+        check('indexed-source-map' + suffix, testCaseIndexSourceMap, 
toSearchIndexSourceMap, {
+          outfile: 'out.js',
+          flags: flags.concat('--bundle'),
+          entryPoints: ['entry.js'],
           crlf,
         }),
         check('issue-4070' + suffix, testCaseNestedFoldersIssue4070, 
toSearchNestedFoldersIssue4070, {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.25.1/version.txt 
new/esbuild-0.25.2/version.txt
--- old/esbuild-0.25.1/version.txt      2025-03-10 04:42:44.000000000 +0100
+++ new/esbuild-0.25.2/version.txt      2025-03-30 19:31:14.000000000 +0200
@@ -1 +1 @@
-0.25.1
+0.25.2

Reply via email to