Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package esbuild for openSUSE:Factory checked 
in at 2026-03-15 14:32:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/esbuild (Old)
 and      /work/SRC/openSUSE:Factory/.esbuild.new.8177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "esbuild"

Sun Mar 15 14:32:33 2026 rev:21 rq:1339042 version:0.27.4

Changes:
--------
--- /work/SRC/openSUSE:Factory/esbuild/esbuild.changes  2026-02-25 
21:11:20.240067494 +0100
+++ /work/SRC/openSUSE:Factory/.esbuild.new.8177/esbuild.changes        
2026-03-15 14:33:28.550126845 +0100
@@ -1,0 +2,8 @@
+Sun Mar 15 01:05:36 UTC 2026 - Avindra Goolcharan <[email protected]>
+
+- update to 0.27.4:
+  * Fix a regression with CSS media queries (#4395, #4405, #4406)
+  * Fix an edge case with the inject feature (#4407)
+  * Attempt to improve API handling of huge metafiles (#4329, #4415)
+
+-------------------------------------------------------------------

Old:
----
  esbuild-0.27.3.tar.gz

New:
----
  esbuild-0.27.4.tar.gz

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

Other differences:
------------------
++++++ esbuild.spec ++++++
--- /var/tmp/diff_new_pack.S47baI/_old  2026-03-15 14:33:29.102149568 +0100
+++ /var/tmp/diff_new_pack.S47baI/_new  2026-03-15 14:33:29.102149568 +0100
@@ -24,7 +24,7 @@
 %global tag   v%{version}
 %global extractdir0 esbuild-%{version}
 Name:           esbuild
-Version:        0.27.3
+Version:        0.27.4
 Release:        0
 Summary:        A JavaScript bundler written for speed
 License:        MIT

++++++ _scmsync.obsinfo ++++++
--- /var/tmp/diff_new_pack.S47baI/_old  2026-03-15 14:33:29.142151215 +0100
+++ /var/tmp/diff_new_pack.S47baI/_new  2026-03-15 14:33:29.146151379 +0100
@@ -1,6 +1,6 @@
-mtime: 1772003968
-commit: 857bb2499ad7e712a526b7aefa7a8c66e9973dbc985022a44d0f5807e709f8ec
+mtime: 1773536828
+commit: cb5ed694e68e6c7d5868410a4e97fd11f74aa8a43e8b6d07f311fcec21ae6462
 url: https://src.opensuse.org/javascript/esbuild.git
-revision: 857bb2499ad7e712a526b7aefa7a8c66e9973dbc985022a44d0f5807e709f8ec
+revision: cb5ed694e68e6c7d5868410a4e97fd11f74aa8a43e8b6d07f311fcec21ae6462
 projectscmsync: https://src.opensuse.org/javascript/_ObsPrj.git
 

++++++ build.specials.obscpio ++++++

++++++ build.specials.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/.gitignore new/.gitignore
--- old/.gitignore      1970-01-01 01:00:00.000000000 +0100
+++ new/.gitignore      2026-03-15 02:08:00.000000000 +0100
@@ -0,0 +1 @@
+.osc

++++++ esbuild-0.27.3.tar.gz -> esbuild-0.27.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.27.3/CHANGELOG.md 
new/esbuild-0.27.4/CHANGELOG.md
--- old/esbuild-0.27.3/CHANGELOG.md     2026-02-05 22:52:09.000000000 +0100
+++ new/esbuild-0.27.4/CHANGELOG.md     2026-03-12 15:12:56.000000000 +0100
@@ -1,5 +1,59 @@
 # Changelog
 
+## 0.27.4
+
+* Fix a regression with CSS media queries 
([#4395](https://github.com/evanw/esbuild/issues/4395), 
[#4405](https://github.com/evanw/esbuild/issues/4405), 
[#4406](https://github.com/evanw/esbuild/issues/4406))
+
+    Version 0.25.11 of esbuild introduced support for parsing media queries. 
This unintentionally introduced a regression with printing media queries that 
use the `<media-type> and <media-condition-without-or>` grammar. Specifically, 
esbuild was failing to wrap an `or` clause with parentheses when inside 
`<media-condition-without-or>`. This release fixes the regression.
+
+    Here is an example:
+
+    ```css
+    /* Original code */
+    @media only screen and ((min-width: 10px) or (min-height: 10px)) {
+      a { color: red }
+    }
+
+    /* Old output (incorrect) */
+    @media only screen and (min-width: 10px) or (min-height: 10px) {
+      a {
+        color: red;
+      }
+    }
+
+    /* New output (correct) */
+    @media only screen and ((min-width: 10px) or (min-height: 10px)) {
+      a {
+        color: red;
+      }
+    }
+    ```
+
+* Fix an edge case with the `inject` feature 
([#4407](https://github.com/evanw/esbuild/issues/4407))
+
+    This release fixes an edge case where esbuild's `inject` feature could not 
be used with arbitrary module namespace names exported using an `export {} 
from` statement with bundling disabled and a target environment where arbitrary 
module namespace names is unsupported.
+
+    With the fix, the following `inject` file:
+
+    ```js
+    import jquery from 'jquery';
+    export { jquery as 'window.jQuery' };
+    ```
+
+    Can now always be rewritten as this without esbuild sometimes incorrectly 
generating an error:
+
+    ```js
+    export { default as 'window.jQuery' } from 'jquery';
+    ```
+
+* Attempt to improve API handling of huge metafiles 
([#4329](https://github.com/evanw/esbuild/issues/4329), 
[#4415](https://github.com/evanw/esbuild/issues/4415))
+
+    This release contains a few changes that attempt to improve the behavior 
of esbuild's JavaScript API with huge metafiles (esbuild's name for the build 
metadata, formatted as a JSON object). The JavaScript API is designed to return 
the metafile JSON as a JavaScript object in memory, which makes it easy to 
access from within a JavaScript-based plugin. Multiple people have encountered 
issues where this API breaks down with a pathologically-large metafile.
+
+    The primary issue is that V8 has an implementation-specific maximum string 
length, so using the `JSON.parse` API with large enough strings is impossible. 
This release will now attempt to use a fallback JavaScript-based JSON parser 
that operates directly on the UTF8-encoded JSON bytes instead of using 
`JSON.parse` when the JSON metafile is too big to fit in a JavaScript string. 
The new fallback path has not yet been heavily-tested. The metafile will also 
now be generated with whitespace removed if the bundle is significantly large, 
which will reduce the size of the metafile JSON slightly.
+
+    However, hitting this case is potentially a sign that something else is 
wrong. Ideally you wouldn't be building something so enormous that the build 
metadata can't even fit inside a JavaScript string. You may want to consider 
optimizing your project, or breaking up your project into multiple parts that 
are built independently. Another option could potentially be to use esbuild's 
command-line API instead of its JavaScript API, which is more efficient 
(although of course then you can't use JavaScript plugins, so it may not be an 
option).
+
 ## 0.27.3
 
 * Preserve URL fragments in data URLs 
([#4370](https://github.com/evanw/esbuild/issues/4370))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.27.3/cmd/esbuild/service.go 
new/esbuild-0.27.4/cmd/esbuild/service.go
--- old/esbuild-0.27.3/cmd/esbuild/service.go   2026-02-05 22:52:09.000000000 
+0100
+++ new/esbuild-0.27.4/cmd/esbuild/service.go   2026-03-12 15:12:56.000000000 
+0100
@@ -660,7 +660,7 @@
                        response["outputFiles"] = 
encodeOutputFiles(result.OutputFiles)
                }
                if options.Metafile {
-                       response["metafile"] = result.Metafile
+                       response["metafile"] = []byte(result.Metafile)
                }
                if options.MangleCache != nil {
                        response["mangleCache"] = result.MangleCache
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.27.3/cmd/esbuild/version.go 
new/esbuild-0.27.4/cmd/esbuild/version.go
--- old/esbuild-0.27.3/cmd/esbuild/version.go   2026-02-05 22:52:09.000000000 
+0100
+++ new/esbuild-0.27.4/cmd/esbuild/version.go   2026-03-12 15:12:56.000000000 
+0100
@@ -1,3 +1,3 @@
 package main
 
-const esbuildVersion = "0.27.3"
+const esbuildVersion = "0.27.4"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.27.3/internal/bundler/bundler.go 
new/esbuild-0.27.4/internal/bundler/bundler.go
--- old/esbuild-0.27.3/internal/bundler/bundler.go      2026-02-05 
22:52:09.000000000 +0100
+++ new/esbuild-0.27.4/internal/bundler/bundler.go      2026-03-12 
15:12:56.000000000 +0100
@@ -2411,6 +2411,11 @@
                }
        }
 
+       // Automatically minify the metafile JSON if the bundle is really big
+       if len(s.results) > 256 {
+               s.options.MetafileFormat = config.MinifiedMetafile
+       }
+
        // Now that all files have been scanned, process the final file import 
records
        for sourceIndex, result := range s.results {
                if !result.ok {
@@ -2423,7 +2428,9 @@
                // Begin the metadata chunk
                if s.options.NeedsMetafile {
                        
sb.Write(helpers.QuoteForJSON(result.file.inputFile.Source.PrettyPaths.Select(s.options.MetafilePathStyle),
 s.options.ASCIIOnly))
-                       sb.WriteString(fmt.Sprintf(": {\n      \"bytes\": %d,\n 
     \"imports\": [", len(result.file.inputFile.Source.Contents)))
+                       sb.WriteString(fmt.Sprintf(
+                               
s.options.MetafileFormat.MaybeRemoveWhitespace(": {\n      \"bytes\": %d,\n     
 \"imports\": ["),
+                               len(result.file.inputFile.Source.Contents)))
                }
 
                // Don't try to resolve paths if we're not bundling
@@ -2439,17 +2446,17 @@
                                if s.options.NeedsMetafile {
                                        if with := record.AssertOrWith; with != 
nil && with.Keyword == ast.WithKeyword && len(with.Entries) > 0 {
                                                data := strings.Builder{}
-                                               data.WriteString(",\n          
\"with\": {")
+                                               
data.WriteString(s.options.MetafileFormat.MaybeRemoveWhitespace(",\n          
\"with\": {"))
                                                for i, entry := range 
with.Entries {
                                                        if i > 0 {
                                                                
data.WriteByte(',')
                                                        }
-                                                       data.WriteString("\n    
        ")
+                                                       
data.WriteString(s.options.MetafileFormat.MaybeRemoveWhitespace("\n            
"))
                                                        
data.Write(helpers.QuoteForJSON(helpers.UTF16ToString(entry.Key), 
s.options.ASCIIOnly))
-                                                       data.WriteString(": ")
+                                                       
data.WriteString(s.options.MetafileFormat.MaybeRemoveWhitespace(": "))
                                                        
data.Write(helpers.QuoteForJSON(helpers.UTF16ToString(entry.Value), 
s.options.ASCIIOnly))
                                                }
-                                               data.WriteString("\n          
}")
+                                               
data.WriteString(s.options.MetafileFormat.MaybeRemoveWhitespace("\n          
}"))
                                                metafileWith = data.String()
                                        }
                                }
@@ -2460,11 +2467,12 @@
                                        if s.options.NeedsMetafile {
                                                if isFirstImport {
                                                        isFirstImport = false
-                                                       sb.WriteString("\n      
  ")
+                                                       
sb.WriteString(s.options.MetafileFormat.MaybeRemoveWhitespace("\n        "))
                                                } else {
-                                                       sb.WriteString(",\n     
   ")
+                                                       
sb.WriteString(s.options.MetafileFormat.MaybeRemoveWhitespace(",\n        "))
                                                }
-                                               sb.WriteString(fmt.Sprintf("{\n 
         \"path\": %s,\n          \"kind\": %s,\n          \"external\": 
true%s\n        }",
+                                               sb.WriteString(fmt.Sprintf(
+                                                       
s.options.MetafileFormat.MaybeRemoveWhitespace("{\n          \"path\": %s,\n    
      \"kind\": %s,\n          \"external\": true%s\n        }"),
                                                        
helpers.QuoteForJSON(record.Path.Text, s.options.ASCIIOnly),
                                                        
helpers.QuoteForJSON(record.Kind.StringForMetafile(), s.options.ASCIIOnly),
                                                        metafileWith))
@@ -2497,11 +2505,12 @@
                                if s.options.NeedsMetafile {
                                        if isFirstImport {
                                                isFirstImport = false
-                                               sb.WriteString("\n        ")
+                                               
sb.WriteString(s.options.MetafileFormat.MaybeRemoveWhitespace("\n        "))
                                        } else {
-                                               sb.WriteString(",\n        ")
+                                               
sb.WriteString(s.options.MetafileFormat.MaybeRemoveWhitespace(",\n        "))
                                        }
-                                       sb.WriteString(fmt.Sprintf("{\n         
 \"path\": %s,\n          \"kind\": %s,\n          \"original\": %s%s\n        
}",
+                                       sb.WriteString(fmt.Sprintf(
+                                               
s.options.MetafileFormat.MaybeRemoveWhitespace("{\n          \"path\": %s,\n    
      \"kind\": %s,\n          \"original\": %s%s\n        }"),
                                                
helpers.QuoteForJSON(otherFile.inputFile.Source.PrettyPaths.Select(s.options.MetafilePathStyle),
 s.options.ASCIIOnly),
                                                
helpers.QuoteForJSON(record.Kind.StringForMetafile(), s.options.ASCIIOnly),
                                                
helpers.QuoteForJSON(record.Path.Text, s.options.ASCIIOnly),
@@ -2673,7 +2682,7 @@
                // End the metadata chunk
                if s.options.NeedsMetafile {
                        if !isFirstImport {
-                               sb.WriteString("\n      ")
+                               
sb.WriteString(s.options.MetafileFormat.MaybeRemoveWhitespace("\n      "))
                        }
                        if repr, ok := 
result.file.inputFile.Repr.(*graph.JSRepr); ok &&
                                (repr.AST.ExportsKind == js_ast.ExportsCommonJS 
|| repr.AST.ExportsKind == js_ast.ExportsESM) {
@@ -2681,24 +2690,25 @@
                                if repr.AST.ExportsKind == js_ast.ExportsESM {
                                        format = "esm"
                                }
-                               sb.WriteString(fmt.Sprintf("],\n      
\"format\": %q", format))
+                               
sb.WriteString(fmt.Sprintf(s.options.MetafileFormat.MaybeRemoveWhitespace("],\n 
     \"format\": %q"), format))
                        } else {
                                sb.WriteString("]")
                        }
                        if attrs := 
result.file.inputFile.Source.KeyPath.ImportAttributes.DecodeIntoArray(); 
len(attrs) > 0 {
-                               sb.WriteString(",\n      \"with\": {")
+                               
sb.WriteString(s.options.MetafileFormat.MaybeRemoveWhitespace(",\n      
\"with\": {"))
                                for i, attr := range attrs {
                                        if i > 0 {
                                                sb.WriteByte(',')
                                        }
-                                       sb.WriteString(fmt.Sprintf("\n        
%s: %s",
+                                       sb.WriteString(fmt.Sprintf(
+                                               
s.options.MetafileFormat.MaybeRemoveWhitespace("\n        %s: %s"),
                                                helpers.QuoteForJSON(attr.Key, 
s.options.ASCIIOnly),
                                                
helpers.QuoteForJSON(attr.Value, s.options.ASCIIOnly),
                                        ))
                                }
-                               sb.WriteString("\n      }")
+                               
sb.WriteString(s.options.MetafileFormat.MaybeRemoveWhitespace("\n      }"))
                        }
-                       sb.WriteString("\n    }")
+                       
sb.WriteString(s.options.MetafileFormat.MaybeRemoveWhitespace("\n    }"))
                }
 
                result.file.jsonMetadataChunk = sb.String()
@@ -2767,17 +2777,19 @@
                        // Optionally add metadata about the file
                        var jsonMetadataChunk string
                        if s.options.NeedsMetafile {
-                               inputs := fmt.Sprintf("{\n        %s: {\n       
   \"bytesInOutput\": %d\n        }\n      }",
+                               inputs := fmt.Sprintf(
+                                       
s.options.MetafileFormat.MaybeRemoveWhitespace("{\n        %s: {\n          
\"bytesInOutput\": %d\n        }\n      }"),
                                        
helpers.QuoteForJSON(result.file.inputFile.Source.PrettyPaths.Select(s.options.MetafilePathStyle),
 s.options.ASCIIOnly),
                                        len(bytes),
                                )
                                entryPointJSON := ""
                                if isEntryPoint {
-                                       entryPointJSON = 
fmt.Sprintf("\"entryPoint\": %s,\n      ",
+                                       entryPointJSON = fmt.Sprintf(
+                                               
s.options.MetafileFormat.MaybeRemoveWhitespace("\"entryPoint\": %s,\n      "),
                                                
helpers.QuoteForJSON(result.file.inputFile.Source.PrettyPaths.Select(s.options.MetafilePathStyle),
 s.options.ASCIIOnly))
                                }
                                jsonMetadataChunk = fmt.Sprintf(
-                                       "{\n      \"imports\": [],\n      
\"exports\": [],\n      %s\"inputs\": %s,\n      \"bytes\": %d\n    }",
+                                       
s.options.MetafileFormat.MaybeRemoveWhitespace("{\n      \"imports\": [],\n     
 \"exports\": [],\n      %s\"inputs\": %s,\n      \"bytes\": %d\n    }"),
                                        entryPointJSON,
                                        inputs,
                                        len(bytes),
@@ -3073,7 +3085,7 @@
        var metafileJSON string
        if options.NeedsMetafile {
                timer.Begin("Generate metadata JSON")
-               metafileJSON = b.generateMetadataJSON(outputFiles, 
allReachableFiles, options.ASCIIOnly)
+               metafileJSON = b.generateMetadataJSON(outputFiles, 
allReachableFiles, &options)
                timer.End("Generate metadata JSON")
        }
 
@@ -3261,9 +3273,9 @@
        }
 }
 
-func (b *Bundle) generateMetadataJSON(results []graph.OutputFile, 
allReachableFiles []uint32, asciiOnly bool) string {
+func (b *Bundle) generateMetadataJSON(results []graph.OutputFile, 
allReachableFiles []uint32, options *config.Options) string {
        sb := strings.Builder{}
-       sb.WriteString("{\n  \"inputs\": {")
+       sb.WriteString(options.MetafileFormat.MaybeRemoveWhitespace("{\n  
\"inputs\": {"))
 
        // Write inputs
        isFirst := true
@@ -3274,15 +3286,15 @@
                if file := &b.files[sourceIndex]; len(file.jsonMetadataChunk) > 
0 {
                        if isFirst {
                                isFirst = false
-                               sb.WriteString("\n    ")
+                               
sb.WriteString(options.MetafileFormat.MaybeRemoveWhitespace("\n    "))
                        } else {
-                               sb.WriteString(",\n    ")
+                               
sb.WriteString(options.MetafileFormat.MaybeRemoveWhitespace(",\n    "))
                        }
                        sb.WriteString(file.jsonMetadataChunk)
                }
        }
 
-       sb.WriteString("\n  },\n  \"outputs\": {")
+       sb.WriteString(options.MetafileFormat.MaybeRemoveWhitespace("\n  },\n  
\"outputs\": {"))
 
        // Write outputs
        isFirst = true
@@ -3297,17 +3309,18 @@
                        }
                        if isFirst {
                                isFirst = false
-                               sb.WriteString("\n    ")
+                               
sb.WriteString(options.MetafileFormat.MaybeRemoveWhitespace("\n    "))
                        } else {
-                               sb.WriteString(",\n    ")
+                               
sb.WriteString(options.MetafileFormat.MaybeRemoveWhitespace(",\n    "))
                        }
                        pathMap[path] = struct{}{}
-                       sb.WriteString(fmt.Sprintf("%s: ", 
helpers.QuoteForJSON(path, asciiOnly)))
+                       
sb.WriteString(fmt.Sprintf(options.MetafileFormat.MaybeRemoveWhitespace("%s: 
"), helpers.QuoteForJSON(path, options.ASCIIOnly)))
                        sb.WriteString(result.JSONMetadataChunk)
                }
        }
 
-       sb.WriteString("\n  }\n}\n")
+       sb.WriteString(options.MetafileFormat.MaybeRemoveWhitespace("\n  }\n}"))
+       sb.WriteByte('\n')
        return sb.String()
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/esbuild-0.27.3/internal/bundler_tests/bundler_default_test.go 
new/esbuild-0.27.4/internal/bundler_tests/bundler_default_test.go
--- old/esbuild-0.27.3/internal/bundler_tests/bundler_default_test.go   
2026-02-05 22:52:09.000000000 +0100
+++ new/esbuild-0.27.4/internal/bundler_tests/bundler_default_test.go   
2026-03-12 15:12:56.000000000 +0100
@@ -9110,7 +9110,7 @@
                        UnsupportedJSFeatures: 
compat.ArbitraryModuleNamespaceNames,
                },
                expectedCompileLog: `entry.js: ERROR: Using the string "not ok" 
as an export name is not supported in the configured target environment
-entry.js: ERROR: Using the string "same name" as an export name is not 
supported in the configured target environment
+entry.js: ERROR: Using the string "same name" as an import name is not 
supported in the configured target environment
 entry.js: ERROR: Using the string "name 1" as an import name is not supported 
in the configured target environment
 entry.js: ERROR: Using the string "name 2" as an export name is not supported 
in the configured target environment
 entry.js: ERROR: Using the string "name space" as an export name is not 
supported in the configured target environment
@@ -9228,6 +9228,26 @@
                        AbsOutputFile:         "/out.js",
                        InjectPaths:           []string{"/inject.js"},
                        UnsupportedJSFeatures: 
compat.ArbitraryModuleNamespaceNames,
+               },
+       })
+}
+
+func TestInjectWithStringReExportNameNoBundle(t *testing.T) {
+       default_suite.expectBundled(t, bundled{
+               files: map[string]string{
+                       "/entry.js": `
+                               console.log(test)
+                       `,
+                       "/inject.js": `
+                               export { fn as "console.log" } from 'pkg'
+                       `,
+               },
+               entryPaths: []string{"/entry.js"},
+               options: config.Options{
+                       Mode:                  config.ModePassThrough,
+                       AbsOutputFile:         "/out.js",
+                       InjectPaths:           []string{"/inject.js"},
+                       UnsupportedJSFeatures: 
compat.ArbitraryModuleNamespaceNames,
                },
        })
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/esbuild-0.27.3/internal/bundler_tests/snapshots/snapshots_default.txt 
new/esbuild-0.27.4/internal/bundler_tests/snapshots/snapshots_default.txt
--- old/esbuild-0.27.3/internal/bundler_tests/snapshots/snapshots_default.txt   
2026-02-05 22:52:09.000000000 +0100
+++ new/esbuild-0.27.4/internal/bundler_tests/snapshots/snapshots_default.txt   
2026-03-12 15:12:56.000000000 +0100
@@ -2250,6 +2250,12 @@
 fn(test);
 
 
================================================================================
+TestInjectWithStringReExportNameNoBundle
+---------- /out.js ----------
+import { fn } from "pkg";
+fn(test);
+
+================================================================================
 TestJSXAutomaticImportsCommonJS
 ---------- /out.js ----------
 // custom-react.js
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.27.3/internal/config/config.go 
new/esbuild-0.27.4/internal/config/config.go
--- old/esbuild-0.27.3/internal/config/config.go        2026-02-05 
22:52:09.000000000 +0100
+++ new/esbuild-0.27.4/internal/config/config.go        2026-03-12 
15:12:56.000000000 +0100
@@ -495,6 +495,9 @@
        // If true, make sure to generate a single file that can be written to 
stdout
        WriteToStdout bool
 
+       // Large bundles minify the metafile JSON to reduce its size
+       MetafileFormat MetafileFormat
+
        OmitRuntimeForTests    bool
        OmitJSXRuntimeForTests bool
        ASCIIOnly              bool
@@ -869,3 +872,30 @@
        }
        return
 }
+
+type MetafileFormat uint8
+
+const (
+       UnminifiedMetafile MetafileFormat = iota
+       MinifiedMetafile
+)
+
+func (mf MetafileFormat) MaybeRemoveWhitespace(fmt string) string {
+       if mf == MinifiedMetafile {
+               resultLen := 0
+               for i := 0; i < len(fmt); i++ {
+                       if c := fmt[i]; c != ' ' && c != '\n' {
+                               resultLen++
+                       }
+               }
+               var result strings.Builder
+               result.Grow(resultLen)
+               for i := 0; i < len(fmt); i++ {
+                       if c := fmt[i]; c != ' ' && c != '\n' {
+                               result.WriteByte(c)
+                       }
+               }
+               return result.String()
+       }
+       return fmt
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/esbuild-0.27.3/internal/css_parser/css_parser_test.go 
new/esbuild-0.27.4/internal/css_parser/css_parser_test.go
--- old/esbuild-0.27.3/internal/css_parser/css_parser_test.go   2026-02-05 
22:52:09.000000000 +0100
+++ new/esbuild-0.27.4/internal/css_parser/css_parser_test.go   2026-03-12 
15:12:56.000000000 +0100
@@ -2639,6 +2639,16 @@
        expectPrintedMangle(t, "@media (a) and ((b) or (c)) { a { color: red } 
}", "@media (a) and ((b) or (c)) {\n  a {\n    color: red;\n  }\n}\n", "")
        expectPrintedMangle(t, "@media (a) or ((b) and (c)) { a { color: red } 
}", "@media (a) or ((b) and (c)) {\n  a {\n    color: red;\n  }\n}\n", "")
 
+       expectPrintedMangle(t, "@media screen and (((a) and (b)) and (c)) { a { 
color: red } }", "@media screen and (a) and (b) and (c) {\n  a {\n    color: 
red;\n  }\n}\n", "")
+       expectPrintedMangle(t, "@media screen and (((a) or (b)) or (c)) { a { 
color: red } }", "@media screen and ((a) or (b) or (c)) {\n  a {\n    color: 
red;\n  }\n}\n", "")
+       expectPrintedMangle(t, "@media screen and ((a) and ((b) and (c))) { a { 
color: red } }", "@media screen and (a) and (b) and (c) {\n  a {\n    color: 
red;\n  }\n}\n", "")
+       expectPrintedMangle(t, "@media screen and ((a) or ((b) or (c))) { a { 
color: red } }", "@media screen and ((a) or (b) or (c)) {\n  a {\n    color: 
red;\n  }\n}\n", "")
+
+       expectPrintedMangle(t, "@media screen and (((a) and (b)) or (c)) { a { 
color: red } }", "@media screen and (((a) and (b)) or (c)) {\n  a {\n    color: 
red;\n  }\n}\n", "")
+       expectPrintedMangle(t, "@media screen and (((a) or (b)) and (c)) { a { 
color: red } }", "@media screen and ((a) or (b)) and (c) {\n  a {\n    color: 
red;\n  }\n}\n", "")
+       expectPrintedMangle(t, "@media screen and ((a) and ((b) or (c))) { a { 
color: red } }", "@media screen and (a) and ((b) or (c)) {\n  a {\n    color: 
red;\n  }\n}\n", "")
+       expectPrintedMangle(t, "@media screen and ((a) or ((b) and (c))) { a { 
color: red } }", "@media screen and ((a) or ((b) and (c))) {\n  a {\n    color: 
red;\n  }\n}\n", "")
+
        expectPrintedMangle(t, "@media not (not (color)) { a { color: red } }", 
"@media (color) {\n  a {\n    color: red;\n  }\n}\n", "")
        expectPrintedMangle(t, "@media not (not (not (color))) { a { color: red 
} }", "@media not (color) {\n  a {\n    color: red;\n  }\n}\n", "")
        expectPrintedMangle(t, "@media not (not (not (not (color)))) { a { 
color: red } }", "@media (color) {\n  a {\n    color: red;\n  }\n}\n", "")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.27.3/internal/css_printer/css_printer.go 
new/esbuild-0.27.4/internal/css_printer/css_printer.go
--- old/esbuild-0.27.3/internal/css_printer/css_printer.go      2026-02-05 
22:52:09.000000000 +0100
+++ new/esbuild-0.27.4/internal/css_printer/css_printer.go      2026-03-12 
15:12:56.000000000 +0100
@@ -51,6 +51,7 @@
        AddSourceMappings   bool
        LegalComments       config.LegalComments
        NeedsMetafile       bool
+       MetafileFormat      config.MetafileFormat
 }
 
 type PrintResult struct {
@@ -93,9 +94,10 @@
                record := p.importRecords[importRecordIndex]
                external := ""
                if (record.Flags & ast.ShouldNotBeExternalInMetafile) == 0 {
-                       external = ",\n          \"external\": true"
+                       external = 
p.options.MetafileFormat.MaybeRemoveWhitespace(",\n          \"external\": 
true")
                }
-               p.jsonMetadataImports = append(p.jsonMetadataImports, 
fmt.Sprintf("\n        {\n          \"path\": %s,\n          \"kind\": %s%s\n   
     }",
+               p.jsonMetadataImports = append(p.jsonMetadataImports, 
fmt.Sprintf(
+                       p.options.MetafileFormat.MaybeRemoveWhitespace("\n      
  {\n          \"path\": %s,\n          \"kind\": %s%s\n        }"),
                        helpers.QuoteForJSON(record.Path.Text, 
p.options.ASCIIOnly),
                        helpers.QuoteForJSON(record.Kind.StringForMetafile(), 
p.options.ASCIIOnly),
                        external))
@@ -444,7 +446,11 @@
                p.printIdent(q.Type, identNormal, 0)
                if q.AndOrNull.Data != nil {
                        p.print(" and ")
-                       p.printMediaQuery(q.AndOrNull, 0)
+                       var flags mqFlags
+                       if binary, ok := q.AndOrNull.Data.(*css_ast.MQBinary); 
ok && binary.Op == css_ast.MQBinaryOpOr {
+                               flags = mqNeedsParens
+                       }
+                       p.printMediaQuery(q.AndOrNull, flags)
                }
 
        case *css_ast.MQNot:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.27.3/internal/js_printer/js_printer.go 
new/esbuild-0.27.4/internal/js_printer/js_printer.go
--- old/esbuild-0.27.3/internal/js_printer/js_printer.go        2026-02-05 
22:52:09.000000000 +0100
+++ new/esbuild-0.27.4/internal/js_printer/js_printer.go        2026-03-12 
15:12:56.000000000 +0100
@@ -3936,9 +3936,10 @@
        if p.options.NeedsMetafile {
                external := ""
                if (record.Flags & ast.ShouldNotBeExternalInMetafile) == 0 {
-                       external = ",\n          \"external\": true"
+                       external = 
p.options.MetafileFormat.MaybeRemoveWhitespace(",\n          \"external\": 
true")
                }
-               p.jsonMetadataImports = append(p.jsonMetadataImports, 
fmt.Sprintf("\n        {\n          \"path\": %s,\n          \"kind\": %s%s\n   
     }",
+               p.jsonMetadataImports = append(p.jsonMetadataImports, 
fmt.Sprintf(
+                       p.options.MetafileFormat.MaybeRemoveWhitespace("\n      
  {\n          \"path\": %s,\n          \"kind\": %s%s\n        }"),
                        helpers.QuoteForJSON(record.Path.Text, 
p.options.ASCIIOnly),
                        helpers.QuoteForJSON(importKind.StringForMetafile(), 
p.options.ASCIIOnly),
                        external))
@@ -4942,6 +4943,7 @@
        SourceMap           config.SourceMap
        AddSourceMappings   bool
        NeedsMetafile       bool
+       MetafileFormat      config.MetafileFormat
 }
 
 type RequireOrImportMeta struct {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.27.3/internal/linker/linker.go 
new/esbuild-0.27.4/internal/linker/linker.go
--- old/esbuild-0.27.3/internal/linker/linker.go        2026-02-05 
22:52:09.000000000 +0100
+++ new/esbuild-0.27.4/internal/linker/linker.go        2026-03-12 
15:12:56.000000000 +0100
@@ -706,7 +706,8 @@
                                        AbsPath:  
c.fs.Join(c.options.AbsOutputDir, finalRelPathForLegalComments),
                                        Contents: chunk.externalLegalComments,
                                        JSONMetadataChunk: fmt.Sprintf(
-                                               "{\n      \"imports\": [],\n    
  \"exports\": [],\n      \"inputs\": {},\n      \"bytes\": %d\n    }", 
len(chunk.externalLegalComments)),
+                                               
c.options.MetafileFormat.MaybeRemoveWhitespace("{\n      \"imports\": [],\n     
 \"exports\": [],\n      \"inputs\": {},\n      \"bytes\": %d\n    }"),
+                                               
len(chunk.externalLegalComments)),
                                })
                        }
 
@@ -744,7 +745,8 @@
                                                AbsPath:  
c.fs.Join(c.options.AbsOutputDir, finalRelPathForSourceMap),
                                                Contents: outputSourceMap,
                                                JSONMetadataChunk: fmt.Sprintf(
-                                                       "{\n      \"imports\": 
[],\n      \"exports\": [],\n      \"inputs\": {},\n      \"bytes\": %d\n    
}", len(outputSourceMap)),
+                                                       
c.options.MetafileFormat.MaybeRemoveWhitespace("{\n      \"imports\": [],\n     
 \"exports\": [],\n      \"inputs\": {},\n      \"bytes\": %d\n    }"),
+                                                       len(outputSourceMap)),
                                        })
                                }
                        }
@@ -4467,10 +4469,7 @@
 
                        if 
c.options.UnsupportedJSFeatures.Has(compat.ArbitraryModuleNamespaceNames) {
                                for _, item := range s.Items {
-                                       
c.maybeForbidArbitraryModuleNamespaceIdentifier("export", sourceIndex, 
item.AliasLoc, item.Alias)
-                                       if item.AliasLoc != item.Name.Loc {
-                                               
c.maybeForbidArbitraryModuleNamespaceIdentifier("import", sourceIndex, 
item.Name.Loc, item.OriginalName)
-                                       }
+                                       
c.maybeForbidArbitraryModuleNamespaceIdentifier("import", sourceIndex, 
item.Name.Loc, item.OriginalName)
                                }
                        }
 
@@ -4485,6 +4484,12 @@
                                        ImportRecordIndex: s.ImportRecordIndex,
                                        IsSingleLine:      s.IsSingleLine,
                                }
+                       } else if 
c.options.UnsupportedJSFeatures.Has(compat.ArbitraryModuleNamespaceNames) {
+                               for _, item := range s.Items {
+                                       if item.AliasLoc != item.Name.Loc {
+                                               
c.maybeForbidArbitraryModuleNamespaceIdentifier("export", sourceIndex, 
item.AliasLoc, item.Alias)
+                                       }
+                               }
                        }
 
                        // Make sure these don't end up in the wrapper closure
@@ -4965,6 +4970,7 @@
                RequireOrImportMetaForSource: c.requireOrImportMetaForSource,
                MangledProps:                 c.mangledProps,
                NeedsMetafile:                c.options.NeedsMetafile,
+               MetafileFormat:               c.options.MetafileFormat,
        }
        tree := repr.AST
        tree.Directives = nil // This is handled elsewhere
@@ -4975,7 +4981,8 @@
        }
 
        if file.InputFile.Loader == config.LoaderFile {
-               result.JSONMetadataImports = append(result.JSONMetadataImports, 
fmt.Sprintf("\n        {\n          \"path\": %s,\n          \"kind\": 
\"file-loader\"\n        }",
+               result.JSONMetadataImports = append(result.JSONMetadataImports, 
fmt.Sprintf(
+                       c.options.MetafileFormat.MaybeRemoveWhitespace("\n      
  {\n          \"path\": %s,\n          \"kind\": \"file-loader\"\n        }"),
                        
helpers.QuoteForJSON(file.InputFile.UniqueKeyForAdditionalFile, 
c.options.ASCIIOnly)))
        }
 
@@ -5627,6 +5634,7 @@
                        MinifySyntax:      c.options.MinifySyntax,
                        LineLimit:         c.options.LineLimit,
                        NeedsMetafile:     c.options.NeedsMetafile,
+                       MetafileFormat:    c.options.MetafileFormat,
                }
                crossChunkImportRecords := make([]ast.ImportRecord, 
len(chunk.crossChunkImports))
                for i, chunkImport := range chunk.crossChunkImports {
@@ -5742,7 +5750,7 @@
        if c.options.NeedsMetafile {
                // Print imports
                isFirstMeta := true
-               jMeta.AddString("{\n      \"imports\": [")
+               
jMeta.AddString(c.options.MetafileFormat.MaybeRemoveWhitespace("{\n      
\"imports\": ["))
                for _, json := range jsonMetadataImports {
                        if isFirstMeta {
                                isFirstMeta = false
@@ -5762,11 +5770,11 @@
                        }
                }
                if !isFirstMeta {
-                       jMeta.AddString("\n      ")
+                       
jMeta.AddString(c.options.MetafileFormat.MaybeRemoveWhitespace("\n      "))
                }
 
                // Print exports
-               jMeta.AddString("],\n      \"exports\": [")
+               
jMeta.AddString(c.options.MetafileFormat.MaybeRemoveWhitespace("],\n      
\"exports\": ["))
                var aliases []string
                if c.options.OutputFormat.KeepESMImportExportSyntax() {
                        if chunk.isEntryPoint {
@@ -5794,21 +5802,22 @@
                        } else {
                                jMeta.AddString(",")
                        }
-                       jMeta.AddString(fmt.Sprintf("\n        %s",
+                       jMeta.AddString(fmt.Sprintf(
+                               
c.options.MetafileFormat.MaybeRemoveWhitespace("\n        %s"),
                                helpers.QuoteForJSON(alias, 
c.options.ASCIIOnly)))
                }
                if !isFirstMeta {
-                       jMeta.AddString("\n      ")
+                       
jMeta.AddString(c.options.MetafileFormat.MaybeRemoveWhitespace("\n      "))
                }
-               jMeta.AddString("],\n")
+               
jMeta.AddString(c.options.MetafileFormat.MaybeRemoveWhitespace("],\n"))
                if chunk.isEntryPoint {
                        entryPoint := 
c.graph.Files[chunk.sourceIndex].InputFile.Source.PrettyPaths.Select(c.options.MetafilePathStyle)
-                       jMeta.AddString(fmt.Sprintf("      \"entryPoint\": 
%s,\n", helpers.QuoteForJSON(entryPoint, c.options.ASCIIOnly)))
+                       
jMeta.AddString(fmt.Sprintf(c.options.MetafileFormat.MaybeRemoveWhitespace("    
  \"entryPoint\": %s,\n"), helpers.QuoteForJSON(entryPoint, 
c.options.ASCIIOnly)))
                }
                if chunkRepr.hasCSSChunk {
-                       jMeta.AddString(fmt.Sprintf("      \"cssBundle\": 
%s,\n", helpers.QuoteForJSON(c.chunks[chunkRepr.cssChunkIndex].uniqueKey, 
c.options.ASCIIOnly)))
+                       
jMeta.AddString(fmt.Sprintf(c.options.MetafileFormat.MaybeRemoveWhitespace("    
  \"cssBundle\": %s,\n"), 
helpers.QuoteForJSON(c.chunks[chunkRepr.cssChunkIndex].uniqueKey, 
c.options.ASCIIOnly)))
                }
-               jMeta.AddString("      \"inputs\": {")
+               
jMeta.AddString(c.options.MetafileFormat.MaybeRemoveWhitespace("      
\"inputs\": {"))
        }
 
        // Concatenate the generated JavaScript chunks together
@@ -5969,14 +5978,15 @@
                                for _, output := range pieces[i] {
                                        count += 
c.accurateFinalByteCount(output, finalRelDir)
                                }
-                               jMeta.AddString(fmt.Sprintf("\n        %s: {\n  
        \"bytesInOutput\": %d\n        %s}",
+                               jMeta.AddString(fmt.Sprintf(
+                                       
c.options.MetafileFormat.MaybeRemoveWhitespace("\n        %s: {\n          
\"bytesInOutput\": %d\n        %s}"),
                                        
helpers.QuoteForJSON(c.graph.Files[sourceIndex].InputFile.Source.PrettyPaths.Select(c.options.MetafilePathStyle),
 c.options.ASCIIOnly),
                                        count, 
c.generateExtraDataForFileJS(sourceIndex)))
                        }
                        if len(metaOrder) > 0 {
-                               jMeta.AddString("\n      ")
+                               
jMeta.AddString(c.options.MetafileFormat.MaybeRemoveWhitespace("\n      "))
                        }
-                       jMeta.AddString(fmt.Sprintf("},\n      \"bytes\": %d\n  
  }", finalOutputSize))
+                       
jMeta.AddString(fmt.Sprintf(c.options.MetafileFormat.MaybeRemoveWhitespace("},\n
      \"bytes\": %d\n    }"), finalOutputSize))
                        return jMeta
                }
        }
@@ -6232,6 +6242,7 @@
                                SourceMap:           c.options.SourceMap,
                                UnsupportedFeatures: 
c.options.UnsupportedCSSFeatures,
                                NeedsMetafile:       c.options.NeedsMetafile,
+                               MetafileFormat:      c.options.MetafileFormat,
                                LocalNames:          c.mangledProps,
                        }
 
@@ -6288,6 +6299,7 @@
                                LineLimit:        c.options.LineLimit,
                                ASCIIOnly:        c.options.ASCIIOnly,
                                NeedsMetafile:    c.options.NeedsMetafile,
+                               MetafileFormat:   c.options.MetafileFormat,
                        })
                        jsonMetadataImports = result.JSONMetadataImports
                        if len(result.CSS) > 0 {
@@ -6302,7 +6314,7 @@
        jMeta := helpers.Joiner{}
        if c.options.NeedsMetafile {
                isFirstMeta := true
-               jMeta.AddString("{\n      \"imports\": [")
+               
jMeta.AddString(c.options.MetafileFormat.MaybeRemoveWhitespace("{\n      
\"imports\": ["))
                for _, json := range jsonMetadataImports {
                        if isFirstMeta {
                                isFirstMeta = false
@@ -6322,7 +6334,7 @@
                        }
                }
                if !isFirstMeta {
-                       jMeta.AddString("\n      ")
+                       
jMeta.AddString(c.options.MetafileFormat.MaybeRemoveWhitespace("\n      "))
                }
                if chunk.isEntryPoint {
                        file := &c.graph.Files[chunk.sourceIndex]
@@ -6331,13 +6343,14 @@
                        // importing CSS into JavaScript. We want this to be a 
1:1 relationship
                        // and there is already an output file for the 
JavaScript entry point.
                        if _, ok := file.InputFile.Repr.(*graph.CSSRepr); ok {
-                               jMeta.AddString(fmt.Sprintf("],\n      
\"entryPoint\": %s,\n      \"inputs\": {",
+                               jMeta.AddString(fmt.Sprintf(
+                                       
c.options.MetafileFormat.MaybeRemoveWhitespace("],\n      \"entryPoint\": %s,\n 
     \"inputs\": {"),
                                        
helpers.QuoteForJSON(file.InputFile.Source.PrettyPaths.Select(c.options.MetafilePathStyle),
 c.options.ASCIIOnly)))
                        } else {
-                               jMeta.AddString("],\n      \"inputs\": {")
+                               
jMeta.AddString(c.options.MetafileFormat.MaybeRemoveWhitespace("],\n      
\"inputs\": {"))
                        }
                } else {
-                       jMeta.AddString("],\n      \"inputs\": {")
+                       
jMeta.AddString(c.options.MetafileFormat.MaybeRemoveWhitespace("],\n      
\"inputs\": {"))
                }
        }
 
@@ -6440,14 +6453,15 @@
                                } else {
                                        jMeta.AddString(",")
                                }
-                               jMeta.AddString(fmt.Sprintf("\n        %s: {\n  
        \"bytesInOutput\": %d\n        }",
+                               jMeta.AddString(fmt.Sprintf(
+                                       
c.options.MetafileFormat.MaybeRemoveWhitespace("\n        %s: {\n          
\"bytesInOutput\": %d\n        }"),
                                        
helpers.QuoteForJSON(c.graph.Files[compileResult.sourceIndex.GetIndex()].InputFile.Source.PrettyPaths.Select(c.options.MetafilePathStyle),
 c.options.ASCIIOnly),
                                        c.accurateFinalByteCount(pieces[i], 
finalRelDir)))
                        }
                        if len(compileResults) > 0 {
-                               jMeta.AddString("\n      ")
+                               
jMeta.AddString(c.options.MetafileFormat.MaybeRemoveWhitespace("\n      "))
                        }
-                       jMeta.AddString(fmt.Sprintf("},\n      \"bytes\": %d\n  
  }", finalOutputSize))
+                       
jMeta.AddString(fmt.Sprintf(c.options.MetafileFormat.MaybeRemoveWhitespace("},\n
      \"bytes\": %d\n    }"), finalOutputSize))
                        return jMeta
                }
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.27.3/lib/shared/common.ts 
new/esbuild-0.27.4/lib/shared/common.ts
--- old/esbuild-0.27.3/lib/shared/common.ts     2026-02-05 22:52:09.000000000 
+0100
+++ new/esbuild-0.27.4/lib/shared/common.ts     2026-03-12 15:12:56.000000000 
+0100
@@ -1,5 +1,6 @@
 import type * as types from "./types"
 import * as protocol from "./stdio_protocol"
+import { JSON_parse } from "./uint8array_json_parser"
 
 declare const ESBUILD_VERSION: string
 
@@ -952,7 +953,7 @@
       const originalErrors = result.errors.slice()
       const originalWarnings = result.warnings.slice()
       if (response!.outputFiles) result.outputFiles = 
response!.outputFiles.map(convertOutputFiles)
-      if (response!.metafile) result.metafile = JSON.parse(response!.metafile)
+      if (response!.metafile) result.metafile = parseJSON(response!.metafile)
       if (response!.mangleCache) result.mangleCache = response!.mangleCache
       if (response!.writeToStdout !== void 0) 
console.log(protocol.decodeUTF8(response!.writeToStdout).replace(/\n$/, ''))
       runOnEndCallbacks(result, (onEndErrors, onEndWarnings) => {
@@ -1858,3 +1859,20 @@
   if (regexp.flags) result = `(?${regexp.flags})${result}`
   return result
 }
+
+function parseJSON(bytes: Uint8Array): any {
+  let text: string
+  try {
+    // This may fail in V8 with the error "Cannot create a string longer than
+    // 0x1fffffe8 characters". Other JS engines may have similar limitations.
+    text = protocol.decodeUTF8(bytes)
+  } catch {
+    // In that case, we attempt to parse the JSON ourselves directly from the
+    // Uint8Array. This bypasses the string length limit as we no longer need
+    // to construct a string that's the length of the input. However, doing
+    // this is likely significantly slower (perhaps around ~4x slower?), so we
+    // only do it if we have to.
+    return JSON_parse(bytes)
+  }
+  return JSON.parse(text)
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.27.3/lib/shared/stdio_protocol.ts 
new/esbuild-0.27.4/lib/shared/stdio_protocol.ts
--- old/esbuild-0.27.3/lib/shared/stdio_protocol.ts     2026-02-05 
22:52:09.000000000 +0100
+++ new/esbuild-0.27.4/lib/shared/stdio_protocol.ts     2026-03-12 
15:12:56.000000000 +0100
@@ -51,7 +51,7 @@
   errors: types.Message[]
   warnings: types.Message[]
   outputFiles?: BuildOutputFile[]
-  metafile?: string
+  metafile?: Uint8Array
   mangleCache?: Record<string, string | false>
   writeToStdout?: Uint8Array
 }
@@ -445,10 +445,12 @@
 `)
 
 export function readUInt32LE(buffer: Uint8Array, offset: number): number {
-  return buffer[offset++] |
+  return (
+    buffer[offset++] |
     (buffer[offset++] << 8) |
     (buffer[offset++] << 16) |
     (buffer[offset++] << 24)
+  ) >>> 0
 }
 
 function writeUInt32LE(buffer: Uint8Array, value: number, offset: number): 
void {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.27.3/lib/shared/uint8array_json_parser.ts 
new/esbuild-0.27.4/lib/shared/uint8array_json_parser.ts
--- old/esbuild-0.27.3/lib/shared/uint8array_json_parser.ts     1970-01-01 
01:00:00.000000000 +0100
+++ new/esbuild-0.27.4/lib/shared/uint8array_json_parser.ts     2026-03-12 
15:12:56.000000000 +0100
@@ -0,0 +1,415 @@
+const enum State {
+  TopLevel,
+  Array,
+  Object,
+}
+
+const enum Char {
+  // Punctuation
+  Newline = 0x0A,
+  Space = 0x20,
+  Quote = 0x22,
+  Plus = 0x2B,
+  Comma = 0x2C,
+  Minus = 0x2D,
+  Dot = 0x2E,
+  Slash = 0x2F,
+  Colon = 0x3A,
+  OpenBracket = 0x5B,
+  Backslash = 0x5C,
+  CloseBracket = 0x5D,
+  OpenBrace = 0x7B,
+  CloseBrace = 0x7D,
+
+  // Numbers
+  Digit0 = 0x30,
+  Digit1 = 0x31,
+  Digit2 = 0x32,
+  Digit3 = 0x33,
+  Digit4 = 0x34,
+  Digit5 = 0x35,
+  Digit6 = 0x36,
+  Digit7 = 0x37,
+  Digit8 = 0x38,
+  Digit9 = 0x39,
+
+  // Uppercase letters
+  UpperA = 0x41,
+  UpperE = 0x45,
+  UpperF = 0x46,
+
+  // Lowercase letters
+  LowerA = 0x61,
+  LowerB = 0x62,
+  LowerE = 0x65,
+  LowerF = 0x66,
+  LowerL = 0x6C,
+  LowerN = 0x6E,
+  LowerR = 0x72,
+  LowerS = 0x73,
+  LowerT = 0x74,
+  LowerU = 0x75,
+}
+
+const fromCharCode = String.fromCharCode
+
+function throwSyntaxError(bytes: Uint8Array, index: number, message?: string): 
void {
+  const c = bytes[index]
+  let line = 1
+  let column = 0
+
+  for (let i = 0; i < index; i++) {
+    if (bytes[i] === Char.Newline) {
+      line++
+      column = 0
+    } else {
+      column++
+    }
+  }
+
+  throw new SyntaxError(
+    message ? message :
+      index === bytes.length ? 'Unexpected end of input while parsing JSON' :
+        c >= 0x20 && c <= 0x7E ? `Unexpected character ${fromCharCode(c)} in 
JSON at position ${index} (line ${line}, column ${column})` :
+          `Unexpected byte 0x${c.toString(16)} in JSON at position ${index} 
(line ${line}, column ${column})`)
+}
+
+export function JSON_parse(bytes: Uint8Array): any {
+  if (!(bytes instanceof Uint8Array)) {
+    throw new Error(`JSON input must be a Uint8Array`)
+  }
+
+  const propertyStack: (string | null)[] = []
+  const objectStack: any[] = []
+  const stateStack: State[] = []
+  const length = bytes.length
+  let property: string | null = null
+  let state = State.TopLevel
+  let object: any
+  let i = 0
+
+  while (i < length) {
+    let c = bytes[i++]
+
+    // Skip whitespace
+    if (c <= Char.Space) {
+      continue
+    }
+
+    let value: any
+
+    // Validate state inside objects
+    if (state === State.Object && property === null && c !== Char.Quote && c 
!== Char.CloseBrace) {
+      throwSyntaxError(bytes, --i)
+    }
+
+    switch (c) {
+      // True
+      case Char.LowerT: {
+        if (bytes[i++] !== Char.LowerR || bytes[i++] !== Char.LowerU || 
bytes[i++] !== Char.LowerE) {
+          throwSyntaxError(bytes, --i)
+        }
+
+        value = true
+        break
+      }
+
+      // False
+      case Char.LowerF: {
+        if (bytes[i++] !== Char.LowerA || bytes[i++] !== Char.LowerL || 
bytes[i++] !== Char.LowerS || bytes[i++] !== Char.LowerE) {
+          throwSyntaxError(bytes, --i)
+        }
+
+        value = false
+        break
+      }
+
+      // Null
+      case Char.LowerN: {
+        if (bytes[i++] !== Char.LowerU || bytes[i++] !== Char.LowerL || 
bytes[i++] !== Char.LowerL) {
+          throwSyntaxError(bytes, --i)
+        }
+
+        value = null
+        break
+      }
+
+      // Number begin
+      case Char.Minus:
+      case Char.Dot:
+      case Char.Digit0:
+      case Char.Digit1:
+      case Char.Digit2:
+      case Char.Digit3:
+      case Char.Digit4:
+      case Char.Digit5:
+      case Char.Digit6:
+      case Char.Digit7:
+      case Char.Digit8:
+      case Char.Digit9: {
+        let index = i
+        value = fromCharCode(c)
+        c = bytes[i]
+
+        // Scan over the rest of the number
+        while (true) {
+          switch (c) {
+            case Char.Plus:
+            case Char.Minus:
+            case Char.Dot:
+            case Char.Digit0:
+            case Char.Digit1:
+            case Char.Digit2:
+            case Char.Digit3:
+            case Char.Digit4:
+            case Char.Digit5:
+            case Char.Digit6:
+            case Char.Digit7:
+            case Char.Digit8:
+            case Char.Digit9:
+            case Char.LowerE:
+            case Char.UpperE: {
+              value += fromCharCode(c)
+              c = bytes[++i]
+              continue
+            }
+          }
+
+          // Number end
+          break
+        }
+
+        // Convert the string to a number
+        value = +value
+
+        // Validate the number
+        if (isNaN(value)) {
+          throwSyntaxError(bytes, --index, 'Invalid number')
+        }
+
+        break
+      }
+
+      // String begin
+      case Char.Quote: {
+        value = ''
+
+        while (true) {
+          if (i >= length) {
+            throwSyntaxError(bytes, length)
+          }
+
+          c = bytes[i++]
+
+          // String end
+          if (c === Char.Quote) {
+            break
+          }
+
+          // Escape sequence
+          else if (c === Char.Backslash) {
+            switch (bytes[i++]) {
+              // Normal escape sequence
+              case Char.Quote: value += '\"'; break
+              case Char.Slash: value += '\/'; break
+              case Char.Backslash: value += '\\'; break
+              case Char.LowerB: value += '\b'; break
+              case Char.LowerF: value += '\f'; break
+              case Char.LowerN: value += '\n'; break
+              case Char.LowerR: value += '\r'; break
+              case Char.LowerT: value += '\t'; break
+
+              // Unicode escape sequence
+              case Char.LowerU: {
+                let code = 0
+                for (let j = 0; j < 4; j++) {
+                  c = bytes[i++]
+                  code <<= 4
+                  if (c >= Char.Digit0 && c <= Char.Digit9) code |= c - 
Char.Digit0
+                  else if (c >= Char.LowerA && c <= Char.LowerF) code |= c + 
(10 - Char.LowerA)
+                  else if (c >= Char.UpperA && c <= Char.UpperF) code |= c + 
(10 - Char.UpperA)
+                  else throwSyntaxError(bytes, --i)
+                }
+                value += fromCharCode(code)
+                break
+              }
+
+              // Invalid escape sequence
+              default: throwSyntaxError(bytes, --i); break
+            }
+          }
+
+          // ASCII text
+          else if (c <= 0x7F) {
+            value += fromCharCode(c)
+          }
+
+          // 2-byte UTF-8 sequence
+          else if ((c & 0xE0) === 0xC0) {
+            value += fromCharCode(((c & 0x1F) << 6) | (bytes[i++] & 0x3F))
+          }
+
+          // 3-byte UTF-8 sequence
+          else if ((c & 0xF0) === 0xE0) {
+            value += fromCharCode(((c & 0x0F) << 12) | ((bytes[i++] & 0x3F) << 
6) | (bytes[i++] & 0x3F))
+          }
+
+          // 4-byte UTF-8 sequence
+          else if ((c & 0xF8) == 0xF0) {
+            let codePoint = ((c & 0x07) << 18) | ((bytes[i++] & 0x3F) << 12) | 
((bytes[i++] & 0x3F) << 6) | (bytes[i++] & 0x3F)
+            if (codePoint > 0xFFFF) {
+              codePoint -= 0x10000
+              value += fromCharCode(((codePoint >> 10) & 0x3FF) | 0xD800)
+              codePoint = 0xDC00 | (codePoint & 0x3FF)
+            }
+            value += fromCharCode(codePoint)
+          }
+        }
+
+        // Force V8's rope representation to be flattened to compact the 
string and avoid running out of memory
+        value[0]
+        break
+      }
+
+      // Array begin
+      case Char.OpenBracket: {
+        value = []
+
+        // Push the stack
+        propertyStack.push(property)
+        objectStack.push(object)
+        stateStack.push(state)
+
+        // Enter the array
+        property = null
+        object = value
+        state = State.Array
+        continue
+      }
+
+      // Object begin
+      case Char.OpenBrace: {
+        value = {}
+
+        // Push the stack
+        propertyStack.push(property)
+        objectStack.push(object)
+        stateStack.push(state)
+
+        // Enter the object
+        property = null
+        object = value
+        state = State.Object
+        continue
+      }
+
+      // Array end
+      case Char.CloseBracket: {
+        if (state !== State.Array) {
+          throwSyntaxError(bytes, --i)
+        }
+
+        // Leave the array
+        value = object
+
+        // Pop the stack
+        property = propertyStack.pop() as string | null
+        object = objectStack.pop()
+        state = stateStack.pop() as State
+        break
+      }
+
+      // Object end
+      case Char.CloseBrace: {
+        if (state !== State.Object) {
+          throwSyntaxError(bytes, --i)
+        }
+
+        // Leave the object
+        value = object
+
+        // Pop the stack
+        property = propertyStack.pop() as string | null
+        object = objectStack.pop()
+        state = stateStack.pop() as State
+        break
+      }
+
+      default: {
+        throwSyntaxError(bytes, --i)
+      }
+    }
+
+    c = bytes[i]
+
+    // Skip whitespace
+    while (c <= Char.Space) {
+      c = bytes[++i]
+    }
+
+    switch (state) {
+      case State.TopLevel: {
+        // Expect the end of the input
+        if (i === length) {
+          return value
+        }
+
+        break
+      }
+
+      case State.Array: {
+        object.push(value)
+
+        // Check for more values
+        if (c === Char.Comma) {
+          i++
+          continue
+        }
+
+        // Expect the end of the array
+        if (c === Char.CloseBracket) {
+          continue
+        }
+
+        break
+      }
+
+      case State.Object: {
+        // Property
+        if (property === null) {
+          property = value
+
+          // Expect a colon
+          if (c === Char.Colon) {
+            i++
+            continue
+          }
+        }
+
+        // Value
+        else {
+          object[property] = value
+          property = null
+
+          // Check for more values
+          if (c === Char.Comma) {
+            i++
+            continue
+          }
+
+          // Expect the end of the object
+          if (c === Char.CloseBrace) {
+            continue
+          }
+        }
+
+        break
+      }
+    }
+
+    // It's an error if we get here
+    break
+  }
+
+  throwSyntaxError(bytes, i)
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.27.3/npm/@esbuild/aix-ppc64/package.json 
new/esbuild-0.27.4/npm/@esbuild/aix-ppc64/package.json
--- old/esbuild-0.27.3/npm/@esbuild/aix-ppc64/package.json      2026-02-05 
22:52:09.000000000 +0100
+++ new/esbuild-0.27.4/npm/@esbuild/aix-ppc64/package.json      2026-03-12 
15:12:56.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/aix-ppc64",
-  "version": "0.27.3",
+  "version": "0.27.4",
   "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.27.3/npm/@esbuild/android-arm/package.json 
new/esbuild-0.27.4/npm/@esbuild/android-arm/package.json
--- old/esbuild-0.27.3/npm/@esbuild/android-arm/package.json    2026-02-05 
22:52:09.000000000 +0100
+++ new/esbuild-0.27.4/npm/@esbuild/android-arm/package.json    2026-03-12 
15:12:56.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/android-arm",
-  "version": "0.27.3",
+  "version": "0.27.4",
   "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.27.3/npm/@esbuild/android-arm64/package.json 
new/esbuild-0.27.4/npm/@esbuild/android-arm64/package.json
--- old/esbuild-0.27.3/npm/@esbuild/android-arm64/package.json  2026-02-05 
22:52:09.000000000 +0100
+++ new/esbuild-0.27.4/npm/@esbuild/android-arm64/package.json  2026-03-12 
15:12:56.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/android-arm64",
-  "version": "0.27.3",
+  "version": "0.27.4",
   "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.27.3/npm/@esbuild/android-x64/package.json 
new/esbuild-0.27.4/npm/@esbuild/android-x64/package.json
--- old/esbuild-0.27.3/npm/@esbuild/android-x64/package.json    2026-02-05 
22:52:09.000000000 +0100
+++ new/esbuild-0.27.4/npm/@esbuild/android-x64/package.json    2026-03-12 
15:12:56.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/android-x64",
-  "version": "0.27.3",
+  "version": "0.27.4",
   "description": "A WebAssembly shim for esbuild on Android x64.",
   "repository": {
     "type": "git",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/esbuild-0.27.3/npm/@esbuild/darwin-arm64/package.json 
new/esbuild-0.27.4/npm/@esbuild/darwin-arm64/package.json
--- old/esbuild-0.27.3/npm/@esbuild/darwin-arm64/package.json   2026-02-05 
22:52:09.000000000 +0100
+++ new/esbuild-0.27.4/npm/@esbuild/darwin-arm64/package.json   2026-03-12 
15:12:56.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/darwin-arm64",
-  "version": "0.27.3",
+  "version": "0.27.4",
   "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.27.3/npm/@esbuild/darwin-x64/package.json 
new/esbuild-0.27.4/npm/@esbuild/darwin-x64/package.json
--- old/esbuild-0.27.3/npm/@esbuild/darwin-x64/package.json     2026-02-05 
22:52:09.000000000 +0100
+++ new/esbuild-0.27.4/npm/@esbuild/darwin-x64/package.json     2026-03-12 
15:12:56.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/darwin-x64",
-  "version": "0.27.3",
+  "version": "0.27.4",
   "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.27.3/npm/@esbuild/freebsd-arm64/package.json 
new/esbuild-0.27.4/npm/@esbuild/freebsd-arm64/package.json
--- old/esbuild-0.27.3/npm/@esbuild/freebsd-arm64/package.json  2026-02-05 
22:52:09.000000000 +0100
+++ new/esbuild-0.27.4/npm/@esbuild/freebsd-arm64/package.json  2026-03-12 
15:12:56.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/freebsd-arm64",
-  "version": "0.27.3",
+  "version": "0.27.4",
   "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.27.3/npm/@esbuild/freebsd-x64/package.json 
new/esbuild-0.27.4/npm/@esbuild/freebsd-x64/package.json
--- old/esbuild-0.27.3/npm/@esbuild/freebsd-x64/package.json    2026-02-05 
22:52:09.000000000 +0100
+++ new/esbuild-0.27.4/npm/@esbuild/freebsd-x64/package.json    2026-03-12 
15:12:56.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/freebsd-x64",
-  "version": "0.27.3",
+  "version": "0.27.4",
   "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.27.3/npm/@esbuild/linux-arm/package.json 
new/esbuild-0.27.4/npm/@esbuild/linux-arm/package.json
--- old/esbuild-0.27.3/npm/@esbuild/linux-arm/package.json      2026-02-05 
22:52:09.000000000 +0100
+++ new/esbuild-0.27.4/npm/@esbuild/linux-arm/package.json      2026-03-12 
15:12:56.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/linux-arm",
-  "version": "0.27.3",
+  "version": "0.27.4",
   "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.27.3/npm/@esbuild/linux-arm64/package.json 
new/esbuild-0.27.4/npm/@esbuild/linux-arm64/package.json
--- old/esbuild-0.27.3/npm/@esbuild/linux-arm64/package.json    2026-02-05 
22:52:09.000000000 +0100
+++ new/esbuild-0.27.4/npm/@esbuild/linux-arm64/package.json    2026-03-12 
15:12:56.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/linux-arm64",
-  "version": "0.27.3",
+  "version": "0.27.4",
   "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.27.3/npm/@esbuild/linux-ia32/package.json 
new/esbuild-0.27.4/npm/@esbuild/linux-ia32/package.json
--- old/esbuild-0.27.3/npm/@esbuild/linux-ia32/package.json     2026-02-05 
22:52:09.000000000 +0100
+++ new/esbuild-0.27.4/npm/@esbuild/linux-ia32/package.json     2026-03-12 
15:12:56.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/linux-ia32",
-  "version": "0.27.3",
+  "version": "0.27.4",
   "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.27.3/npm/@esbuild/linux-loong64/package.json 
new/esbuild-0.27.4/npm/@esbuild/linux-loong64/package.json
--- old/esbuild-0.27.3/npm/@esbuild/linux-loong64/package.json  2026-02-05 
22:52:09.000000000 +0100
+++ new/esbuild-0.27.4/npm/@esbuild/linux-loong64/package.json  2026-03-12 
15:12:56.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/linux-loong64",
-  "version": "0.27.3",
+  "version": "0.27.4",
   "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.27.3/npm/@esbuild/linux-mips64el/package.json 
new/esbuild-0.27.4/npm/@esbuild/linux-mips64el/package.json
--- old/esbuild-0.27.3/npm/@esbuild/linux-mips64el/package.json 2026-02-05 
22:52:09.000000000 +0100
+++ new/esbuild-0.27.4/npm/@esbuild/linux-mips64el/package.json 2026-03-12 
15:12:56.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/linux-mips64el",
-  "version": "0.27.3",
+  "version": "0.27.4",
   "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.27.3/npm/@esbuild/linux-ppc64/package.json 
new/esbuild-0.27.4/npm/@esbuild/linux-ppc64/package.json
--- old/esbuild-0.27.3/npm/@esbuild/linux-ppc64/package.json    2026-02-05 
22:52:09.000000000 +0100
+++ new/esbuild-0.27.4/npm/@esbuild/linux-ppc64/package.json    2026-03-12 
15:12:56.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/linux-ppc64",
-  "version": "0.27.3",
+  "version": "0.27.4",
   "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.27.3/npm/@esbuild/linux-riscv64/package.json 
new/esbuild-0.27.4/npm/@esbuild/linux-riscv64/package.json
--- old/esbuild-0.27.3/npm/@esbuild/linux-riscv64/package.json  2026-02-05 
22:52:09.000000000 +0100
+++ new/esbuild-0.27.4/npm/@esbuild/linux-riscv64/package.json  2026-03-12 
15:12:56.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/linux-riscv64",
-  "version": "0.27.3",
+  "version": "0.27.4",
   "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.27.3/npm/@esbuild/linux-s390x/package.json 
new/esbuild-0.27.4/npm/@esbuild/linux-s390x/package.json
--- old/esbuild-0.27.3/npm/@esbuild/linux-s390x/package.json    2026-02-05 
22:52:09.000000000 +0100
+++ new/esbuild-0.27.4/npm/@esbuild/linux-s390x/package.json    2026-03-12 
15:12:56.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/linux-s390x",
-  "version": "0.27.3",
+  "version": "0.27.4",
   "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.27.3/npm/@esbuild/linux-x64/package.json 
new/esbuild-0.27.4/npm/@esbuild/linux-x64/package.json
--- old/esbuild-0.27.3/npm/@esbuild/linux-x64/package.json      2026-02-05 
22:52:09.000000000 +0100
+++ new/esbuild-0.27.4/npm/@esbuild/linux-x64/package.json      2026-03-12 
15:12:56.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/linux-x64",
-  "version": "0.27.3",
+  "version": "0.27.4",
   "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.27.3/npm/@esbuild/netbsd-arm64/package.json 
new/esbuild-0.27.4/npm/@esbuild/netbsd-arm64/package.json
--- old/esbuild-0.27.3/npm/@esbuild/netbsd-arm64/package.json   2026-02-05 
22:52:09.000000000 +0100
+++ new/esbuild-0.27.4/npm/@esbuild/netbsd-arm64/package.json   2026-03-12 
15:12:56.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/netbsd-arm64",
-  "version": "0.27.3",
+  "version": "0.27.4",
   "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.27.3/npm/@esbuild/netbsd-x64/package.json 
new/esbuild-0.27.4/npm/@esbuild/netbsd-x64/package.json
--- old/esbuild-0.27.3/npm/@esbuild/netbsd-x64/package.json     2026-02-05 
22:52:09.000000000 +0100
+++ new/esbuild-0.27.4/npm/@esbuild/netbsd-x64/package.json     2026-03-12 
15:12:56.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/netbsd-x64",
-  "version": "0.27.3",
+  "version": "0.27.4",
   "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.27.3/npm/@esbuild/openbsd-arm64/package.json 
new/esbuild-0.27.4/npm/@esbuild/openbsd-arm64/package.json
--- old/esbuild-0.27.3/npm/@esbuild/openbsd-arm64/package.json  2026-02-05 
22:52:09.000000000 +0100
+++ new/esbuild-0.27.4/npm/@esbuild/openbsd-arm64/package.json  2026-03-12 
15:12:56.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/openbsd-arm64",
-  "version": "0.27.3",
+  "version": "0.27.4",
   "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.27.3/npm/@esbuild/openbsd-x64/package.json 
new/esbuild-0.27.4/npm/@esbuild/openbsd-x64/package.json
--- old/esbuild-0.27.3/npm/@esbuild/openbsd-x64/package.json    2026-02-05 
22:52:09.000000000 +0100
+++ new/esbuild-0.27.4/npm/@esbuild/openbsd-x64/package.json    2026-03-12 
15:12:56.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/openbsd-x64",
-  "version": "0.27.3",
+  "version": "0.27.4",
   "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.27.3/npm/@esbuild/openharmony-arm64/package.json 
new/esbuild-0.27.4/npm/@esbuild/openharmony-arm64/package.json
--- old/esbuild-0.27.3/npm/@esbuild/openharmony-arm64/package.json      
2026-02-05 22:52:09.000000000 +0100
+++ new/esbuild-0.27.4/npm/@esbuild/openharmony-arm64/package.json      
2026-03-12 15:12:56.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/openharmony-arm64",
-  "version": "0.27.3",
+  "version": "0.27.4",
   "description": "A WebAssembly shim for esbuild on OpenHarmony ARM64.",
   "repository": {
     "type": "git",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.27.3/npm/@esbuild/sunos-x64/package.json 
new/esbuild-0.27.4/npm/@esbuild/sunos-x64/package.json
--- old/esbuild-0.27.3/npm/@esbuild/sunos-x64/package.json      2026-02-05 
22:52:09.000000000 +0100
+++ new/esbuild-0.27.4/npm/@esbuild/sunos-x64/package.json      2026-03-12 
15:12:56.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/sunos-x64",
-  "version": "0.27.3",
+  "version": "0.27.4",
   "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.27.3/npm/@esbuild/wasi-preview1/package.json 
new/esbuild-0.27.4/npm/@esbuild/wasi-preview1/package.json
--- old/esbuild-0.27.3/npm/@esbuild/wasi-preview1/package.json  2026-02-05 
22:52:09.000000000 +0100
+++ new/esbuild-0.27.4/npm/@esbuild/wasi-preview1/package.json  2026-03-12 
15:12:56.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/wasi-preview1",
-  "version": "0.27.3",
+  "version": "0.27.4",
   "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.27.3/npm/@esbuild/win32-arm64/package.json 
new/esbuild-0.27.4/npm/@esbuild/win32-arm64/package.json
--- old/esbuild-0.27.3/npm/@esbuild/win32-arm64/package.json    2026-02-05 
22:52:09.000000000 +0100
+++ new/esbuild-0.27.4/npm/@esbuild/win32-arm64/package.json    2026-03-12 
15:12:56.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/win32-arm64",
-  "version": "0.27.3",
+  "version": "0.27.4",
   "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.27.3/npm/@esbuild/win32-ia32/package.json 
new/esbuild-0.27.4/npm/@esbuild/win32-ia32/package.json
--- old/esbuild-0.27.3/npm/@esbuild/win32-ia32/package.json     2026-02-05 
22:52:09.000000000 +0100
+++ new/esbuild-0.27.4/npm/@esbuild/win32-ia32/package.json     2026-03-12 
15:12:56.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/win32-ia32",
-  "version": "0.27.3",
+  "version": "0.27.4",
   "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.27.3/npm/@esbuild/win32-x64/package.json 
new/esbuild-0.27.4/npm/@esbuild/win32-x64/package.json
--- old/esbuild-0.27.3/npm/@esbuild/win32-x64/package.json      2026-02-05 
22:52:09.000000000 +0100
+++ new/esbuild-0.27.4/npm/@esbuild/win32-x64/package.json      2026-03-12 
15:12:56.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/win32-x64",
-  "version": "0.27.3",
+  "version": "0.27.4",
   "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.27.3/npm/esbuild/package.json 
new/esbuild-0.27.4/npm/esbuild/package.json
--- old/esbuild-0.27.3/npm/esbuild/package.json 2026-02-05 22:52:09.000000000 
+0100
+++ new/esbuild-0.27.4/npm/esbuild/package.json 2026-03-12 15:12:56.000000000 
+0100
@@ -1,6 +1,6 @@
 {
   "name": "esbuild",
-  "version": "0.27.3",
+  "version": "0.27.4",
   "description": "An extremely fast JavaScript and CSS bundler and minifier.",
   "repository": {
     "type": "git",
@@ -18,32 +18,32 @@
     "esbuild": "bin/esbuild"
   },
   "optionalDependencies": {
-    "@esbuild/aix-ppc64": "0.27.3",
-    "@esbuild/android-arm": "0.27.3",
-    "@esbuild/android-arm64": "0.27.3",
-    "@esbuild/android-x64": "0.27.3",
-    "@esbuild/darwin-arm64": "0.27.3",
-    "@esbuild/darwin-x64": "0.27.3",
-    "@esbuild/freebsd-arm64": "0.27.3",
-    "@esbuild/freebsd-x64": "0.27.3",
-    "@esbuild/linux-arm": "0.27.3",
-    "@esbuild/linux-arm64": "0.27.3",
-    "@esbuild/linux-ia32": "0.27.3",
-    "@esbuild/linux-loong64": "0.27.3",
-    "@esbuild/linux-mips64el": "0.27.3",
-    "@esbuild/linux-ppc64": "0.27.3",
-    "@esbuild/linux-riscv64": "0.27.3",
-    "@esbuild/linux-s390x": "0.27.3",
-    "@esbuild/linux-x64": "0.27.3",
-    "@esbuild/netbsd-arm64": "0.27.3",
-    "@esbuild/netbsd-x64": "0.27.3",
-    "@esbuild/openbsd-arm64": "0.27.3",
-    "@esbuild/openbsd-x64": "0.27.3",
-    "@esbuild/openharmony-arm64": "0.27.3",
-    "@esbuild/sunos-x64": "0.27.3",
-    "@esbuild/win32-arm64": "0.27.3",
-    "@esbuild/win32-ia32": "0.27.3",
-    "@esbuild/win32-x64": "0.27.3"
+    "@esbuild/aix-ppc64": "0.27.4",
+    "@esbuild/android-arm": "0.27.4",
+    "@esbuild/android-arm64": "0.27.4",
+    "@esbuild/android-x64": "0.27.4",
+    "@esbuild/darwin-arm64": "0.27.4",
+    "@esbuild/darwin-x64": "0.27.4",
+    "@esbuild/freebsd-arm64": "0.27.4",
+    "@esbuild/freebsd-x64": "0.27.4",
+    "@esbuild/linux-arm": "0.27.4",
+    "@esbuild/linux-arm64": "0.27.4",
+    "@esbuild/linux-ia32": "0.27.4",
+    "@esbuild/linux-loong64": "0.27.4",
+    "@esbuild/linux-mips64el": "0.27.4",
+    "@esbuild/linux-ppc64": "0.27.4",
+    "@esbuild/linux-riscv64": "0.27.4",
+    "@esbuild/linux-s390x": "0.27.4",
+    "@esbuild/linux-x64": "0.27.4",
+    "@esbuild/netbsd-arm64": "0.27.4",
+    "@esbuild/netbsd-x64": "0.27.4",
+    "@esbuild/openbsd-arm64": "0.27.4",
+    "@esbuild/openbsd-x64": "0.27.4",
+    "@esbuild/openharmony-arm64": "0.27.4",
+    "@esbuild/sunos-x64": "0.27.4",
+    "@esbuild/win32-arm64": "0.27.4",
+    "@esbuild/win32-ia32": "0.27.4",
+    "@esbuild/win32-x64": "0.27.4"
   },
   "license": "MIT"
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.27.3/npm/esbuild-wasm/package.json 
new/esbuild-0.27.4/npm/esbuild-wasm/package.json
--- old/esbuild-0.27.3/npm/esbuild-wasm/package.json    2026-02-05 
22:52:09.000000000 +0100
+++ new/esbuild-0.27.4/npm/esbuild-wasm/package.json    2026-03-12 
15:12:56.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "esbuild-wasm",
-  "version": "0.27.3",
+  "version": "0.27.4",
   "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.27.3/pkg/api/api_impl.go 
new/esbuild-0.27.4/pkg/api/api_impl.go
--- old/esbuild-0.27.3/pkg/api/api_impl.go      2026-02-05 22:52:09.000000000 
+0100
+++ new/esbuild-0.27.4/pkg/api/api_impl.go      2026-03-12 15:12:56.000000000 
+0100
@@ -169,7 +169,7 @@
        case LegalCommentsExternal:
                return config.LegalCommentsExternalWithoutComment
        default:
-               panic("Invalid source map")
+               panic("Invalid legal comments")
        }
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.27.3/version.txt 
new/esbuild-0.27.4/version.txt
--- old/esbuild-0.27.3/version.txt      2026-02-05 22:52:09.000000000 +0100
+++ new/esbuild-0.27.4/version.txt      2026-03-12 15:12:56.000000000 +0100
@@ -1 +1 @@
-0.27.3
+0.27.4

Reply via email to