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-02-25 21:10:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/esbuild (Old)
 and      /work/SRC/openSUSE:Factory/.esbuild.new.1977 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "esbuild"

Wed Feb 25 21:10:52 2026 rev:20 rq:1334917 version:0.27.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/esbuild/esbuild.changes  2026-01-19 
18:40:52.868950246 +0100
+++ /work/SRC/openSUSE:Factory/.esbuild.new.1977/esbuild.changes        
2026-02-25 21:11:20.240067494 +0100
@@ -1,0 +2,9 @@
+Wed Feb 25 07:17:39 UTC 2026 - Avindra Goolcharan <[email protected]>
+
+- update to 0.27.3:
+  * Preserve URL fragments in data URLs (#4370)
+  * Parse and print CSS @scope rules (#4322)
+  * Fix a minification bug with lowering of for await (#4378, #4385)
+  * Update the Go compiler from v1.25.5 to v1.25.7 (#4383, #4388)
+
+-------------------------------------------------------------------

Old:
----
  esbuild-0.27.2.tar.gz

New:
----
  esbuild-0.27.3.tar.gz

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

Other differences:
------------------
++++++ esbuild.spec ++++++
--- /var/tmp/diff_new_pack.4s1GcZ/_old  2026-02-25 21:11:20.744088306 +0100
+++ /var/tmp/diff_new_pack.4s1GcZ/_new  2026-02-25 21:11:20.744088306 +0100
@@ -24,7 +24,7 @@
 %global tag   v%{version}
 %global extractdir0 esbuild-%{version}
 Name:           esbuild
-Version:        0.27.2
+Version:        0.27.3
 Release:        0
 Summary:        A JavaScript bundler written for speed
 License:        MIT

++++++ _scmsync.obsinfo ++++++
--- /var/tmp/diff_new_pack.4s1GcZ/_old  2026-02-25 21:11:20.788090123 +0100
+++ /var/tmp/diff_new_pack.4s1GcZ/_new  2026-02-25 21:11:20.792090287 +0100
@@ -1,6 +1,6 @@
-mtime: 1768778776
-commit: 6d3deea53d3800dcc56ccb1bef7fa7e0e803ace2e7f264190788e646e9e368d2
+mtime: 1772003968
+commit: 857bb2499ad7e712a526b7aefa7a8c66e9973dbc985022a44d0f5807e709f8ec
 url: https://src.opensuse.org/javascript/esbuild.git
-revision: 6d3deea53d3800dcc56ccb1bef7fa7e0e803ace2e7f264190788e646e9e368d2
+revision: 857bb2499ad7e712a526b7aefa7a8c66e9973dbc985022a44d0f5807e709f8ec
 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-02-25 08:20:09.000000000 +0100
@@ -0,0 +1 @@
+.osc

++++++ esbuild-0.27.2.tar.gz -> esbuild-0.27.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.27.2/CHANGELOG.md 
new/esbuild-0.27.3/CHANGELOG.md
--- old/esbuild-0.27.2/CHANGELOG.md     2025-12-17 01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/CHANGELOG.md     2026-02-05 22:52:09.000000000 +0100
@@ -1,5 +1,85 @@
 # Changelog
 
+## 0.27.3
+
+* Preserve URL fragments in data URLs 
([#4370](https://github.com/evanw/esbuild/issues/4370))
+
+    Consider the following HTML, CSS, and SVG:
+
+    * `index.html`:
+
+        ```html
+        <!DOCTYPE html>
+        <html>
+          <head><link rel="stylesheet" href="icons.css"></head>
+          <body><div class="triangle"></div></body>
+        </html>
+        ```
+
+    * `icons.css`:
+
+        ```css
+        .triangle {
+          width: 10px;
+          height: 10px;
+          background: currentColor;
+          clip-path: url(./triangle.svg#x);
+        }
+        ```
+
+    * `triangle.svg`:
+
+        ```xml
+        <svg xmlns="http://www.w3.org/2000/svg";>
+          <defs>
+            <clipPath id="x">
+              <path d="M0 0H10V10Z"/>
+            </clipPath>
+          </defs>
+        </svg>
+        ```
+
+    The CSS uses a URL fragment (the `#x`) to reference the `clipPath` element 
in the SVG file. Previously esbuild's CSS bundler didn't preserve the URL 
fragment when bundling the SVG using the `dataurl` loader, which broke the 
bundled CSS. With this release, esbuild will now preserve the URL fragment in 
the bundled CSS:
+
+    ```css
+    /* icons.css */
+    .triangle {
+      width: 10px;
+      height: 10px;
+      background: currentColor;
+      clip-path: url('data:image/svg+xml,<svg 
xmlns="http://www.w3.org/2000/svg";><defs><clipPath id="x"><path d="M0 
0H10V10Z"/></clipPath></defs></svg>#x');
+    }
+    ```
+
+* Parse and print CSS `@scope` rules 
([#4322](https://github.com/evanw/esbuild/issues/4322))
+
+    This release includes dedicated support for parsing `@scope` rules in CSS. 
These rules include optional "start" and "end" selector lists. One important 
consequence of this is that the local/global status of names in selector lists 
is now respected, which improves the correctness of esbuild's support for [CSS 
modules](https://esbuild.github.io/content-types/#local-css). Minification of 
selectors inside `@scope` rules has also improved slightly.
+
+    Here's an example:
+
+    ```css
+    /* Original code */
+    @scope (:global(.foo)) to (:local(.bar)) {
+      .bar {
+        color: red;
+      }
+    }
+
+    /* Old output (with --loader=local-css --minify) */
+    @scope (:global(.foo)) to (:local(.bar)){.o{color:red}}
+
+    /* New output (with --loader=local-css --minify) */
+    @scope(.foo)to (.o){.o{color:red}}
+    ```
+
+* Fix a minification bug with lowering of `for await` 
([#4378](https://github.com/evanw/esbuild/pull/4378), 
[#4385](https://github.com/evanw/esbuild/pull/4385))
+
+    This release fixes a bug where the minifier would incorrectly strip the 
variable in the automatically-generated `catch` clause of lowered `for await` 
loops. The code that generated the loop previously failed to mark the internal 
variable references as used.
+
+* Update the Go compiler from v1.25.5 to v1.25.7 
([#4383](https://github.com/evanw/esbuild/issues/4383), 
[#4388](https://github.com/evanw/esbuild/pull/4388))
+
+    This PR was contributed by 
[@MikeWillCook](https://github.com/MikeWillCook).
+
 ## 0.27.2
 
 * Allow import path specifiers starting with `#/` 
([#4361](https://github.com/evanw/esbuild/pull/4361))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.27.2/cmd/esbuild/version.go 
new/esbuild-0.27.3/cmd/esbuild/version.go
--- old/esbuild-0.27.2/cmd/esbuild/version.go   2025-12-17 01:46:56.000000000 
+0100
+++ new/esbuild-0.27.3/cmd/esbuild/version.go   2026-02-05 22:52:09.000000000 
+0100
@@ -1,3 +1,3 @@
 package main
 
-const esbuildVersion = "0.27.2"
+const esbuildVersion = "0.27.3"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.27.2/compat-table/package-lock.json 
new/esbuild-0.27.3/compat-table/package-lock.json
--- old/esbuild-0.27.2/compat-table/package-lock.json   2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/compat-table/package-lock.json   2026-02-05 
22:52:09.000000000 +0100
@@ -5,16 +5,17 @@
   "packages": {
     "": {
       "dependencies": {
-        "@mdn/browser-compat-data": "^7.1.20",
+        "@mdn/browser-compat-data": "7.3.0",
         "@types/caniuse-lite": "1.0.1",
         "@types/node": "25.0.2",
-        "caniuse-lite": "^1.0.30001754"
+        "caniuse-lite": "1.0.30001768"
       }
     },
     "node_modules/@mdn/browser-compat-data": {
-      "version": "7.1.20",
-      "resolved": 
"https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-7.1.20.tgz";,
-      "integrity": 
"sha512-ICINlHmfC/D1XSeo4vFRILo/ZTcNF5GSqht6G1vFECqfzJijuRDSr4b+TrvIJpGDjsu7FchP5Ffx4+03WlUe3g=="
+      "version": "7.3.0",
+      "resolved": 
"https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-7.3.0.tgz";,
+      "integrity": 
"sha512-B7X53zLkrQOVNzsWg4d+iE5vbrreOYB9H/2Ikeit9LPb3tqRNRsEAxysQduFLODBJBSgFGr2FkJLq7tMQkqLZQ==",
+      "license": "CC0-1.0"
     },
     "node_modules/@types/caniuse-lite": {
       "version": "1.0.1",
@@ -30,9 +31,9 @@
       }
     },
     "node_modules/caniuse-lite": {
-      "version": "1.0.30001754",
-      "resolved": 
"https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001754.tgz";,
-      "integrity": 
"sha512-x6OeBXueoAceOmotzx3PO4Zpt4rzpeIFsSr6AAePTZxSkXiYDUmpypEl7e2+8NCd9bD7bXjqyef8CJYPC1jfxg==",
+      "version": "1.0.30001768",
+      "resolved": 
"https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001768.tgz";,
+      "integrity": 
"sha512-qY3aDRZC5nWPgHUgIB84WL+nySuo19wk0VJpp/XI9T34lrvkyhRvNVOFJOp2kxClQhiFBu+TaUSudf6oa3vkSA==",
       "funding": [
         {
           "type": "opencollective",
@@ -46,7 +47,8 @@
           "type": "github",
           "url": "https://github.com/sponsors/ai";
         }
-      ]
+      ],
+      "license": "CC-BY-4.0"
     },
     "node_modules/undici-types": {
       "version": "7.16.0",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.27.2/compat-table/package.json 
new/esbuild-0.27.3/compat-table/package.json
--- old/esbuild-0.27.2/compat-table/package.json        2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/compat-table/package.json        2026-02-05 
22:52:09.000000000 +0100
@@ -1,12 +1,11 @@
 {
   "githubDependencies": {
-    "kangax/compat-table": "70d05d4de500f81e5612aafdee014e1a8419fa75",
-    "williamkapke/node-compat-table": 
"4a9a0ac491c12eb2e70b70126cd9486100c28e12"
+    "compat-table/compat-table": "f12538fe11c48c4fd35d6cdc7789653e10871b90"
   },
   "dependencies": {
-    "@mdn/browser-compat-data": "^7.1.20",
+    "@mdn/browser-compat-data": "7.3.0",
     "@types/caniuse-lite": "1.0.1",
     "@types/node": "25.0.2",
-    "caniuse-lite": "^1.0.30001754"
+    "caniuse-lite": "1.0.30001768"
   }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.27.2/compat-table/src/compat-table.ts 
new/esbuild-0.27.3/compat-table/src/compat-table.ts
--- old/esbuild-0.27.2/compat-table/src/compat-table.ts 1970-01-01 
01:00:00.000000000 +0100
+++ new/esbuild-0.27.3/compat-table/src/compat-table.ts 2026-02-05 
22:52:09.000000000 +0100
@@ -0,0 +1,197 @@
+// This file processes the data contained in 
https://github.com/kangax/compat-table
+
+import fs = require('fs')
+import path = require('path')
+
+import es5 = require('../repos/compat-table/compat-table/data-es5.js')
+import es6 = require('../repos/compat-table/compat-table/data-es6.js')
+import stage1to3 = require('../repos/compat-table/compat-table/data-esnext.js')
+import stage4 = 
require('../repos/compat-table/compat-table/data-es2016plus.js')
+import environments = 
require('../repos/compat-table/compat-table/environments.json')
+import parseEnvsVersions = 
require('../repos/compat-table/compat-table/build-utils/parse-envs-versions.js')
+import interpolateAllResults = 
require('../repos/compat-table/compat-table/build-utils/interpolate-all-results.js')
+import { Engine, JSFeature, SupportMap } from './index'
+
+interpolateAllResults(es5.tests, environments)
+interpolateAllResults(es6.tests, environments)
+interpolateAllResults(stage1to3.tests, environments)
+interpolateAllResults(stage4.tests, environments)
+
+const features: Record<string, JSFeature> = {
+  // ES5 features
+  'Object/array literal extensions: Getter accessors': 'ObjectAccessors',
+  'Object/array literal extensions: Setter accessors': 'ObjectAccessors',
+
+  // ES6 features
+  'arrow functions': 'Arrow',
+  'class': 'Class',
+  'const': 'ConstAndLet',
+  'default function parameters': 'DefaultArgument',
+  'destructuring, assignment': 'Destructuring',
+  'destructuring, declarations': 'Destructuring',
+  'destructuring, parameters': 'Destructuring',
+  'for..of loops': 'ForOf',
+  'function "name" property: isn\'t writable, is configurable': 
'FunctionNameConfigurable',
+  'generators': 'Generator',
+  'let': 'ConstAndLet',
+  'new.target': 'NewTarget',
+  'object literal extensions': 'ObjectExtensions',
+  'RegExp "y" and "u" flags': 'RegexpStickyAndUnicodeFlags',
+  'rest parameters': 'RestArgument',
+  'spread syntax for iterable objects': 'ArraySpread',
+  'template literals': 'TemplateLiteral',
+  'Unicode code point escapes': 'UnicodeEscapes',
+
+  // >ES6 features
+  'async functions': 'AsyncAwait',
+  'Asynchronous Iterators: async generators': 'AsyncGenerator',
+  'Asynchronous Iterators: for-await-of loops': 'ForAwait',
+  'BigInt: basic functionality': 'Bigint',
+  'exponentiation (**) operator': 'ExponentOperator',
+  'Hashbang Grammar': 'Hashbang',
+  'Logical Assignment': 'LogicalAssignment',
+  'nested rest destructuring, declarations': 'NestedRestBinding',
+  'nested rest destructuring, parameters': 'NestedRestBinding',
+  'nullish coalescing operator (??)': 'NullishCoalescing',
+  'object rest/spread properties': 'ObjectRestSpread',
+  'optional catch binding': 'OptionalCatchBinding',
+  'optional chaining operator (?.)': 'OptionalChain',
+  'RegExp Lookbehind Assertions': 'RegexpLookbehindAssertions',
+  'RegExp named capture groups': 'RegexpNamedCaptureGroups',
+  'RegExp Unicode Property Escapes': 'RegexpUnicodePropertyEscapes',
+  's (dotAll) flag for regular expressions': 'RegexpDotAllFlag',
+  'Explicit Resource Management': 'Using',
+
+  // Public fields
+  'instance class fields: computed instance class fields': 'ClassField',
+  'instance class fields: public instance class fields': 'ClassField',
+  'static class fields: computed static class fields': 'ClassStaticField',
+  'static class fields: public static class fields': 'ClassStaticField',
+
+  // Private fields
+  'instance class fields: optional deep private instance class fields access': 
'ClassPrivateField',
+  'instance class fields: optional private instance class fields access': 
'ClassPrivateField',
+  'instance class fields: private instance class fields basic support': 
'ClassPrivateField',
+  'instance class fields: private instance class fields initializers': 
'ClassPrivateField',
+  'static class fields: private static class fields': 
'ClassPrivateStaticField',
+
+  // Private methods
+  'private class methods: private accessor properties': 'ClassPrivateAccessor',
+  'private class methods: private instance methods': 'ClassPrivateMethod',
+  'private class methods: private static accessor properties': 
'ClassPrivateStaticAccessor',
+  'private class methods: private static methods': 'ClassPrivateStaticMethod',
+
+  // Private "in"
+  'Ergonomic brand checks for private fields': 'ClassPrivateBrandCheck',
+}
+
+const environmentToEngine: Record<string, Engine> = {
+  // The JavaScript standard
+  'es': 'ES',
+
+  // Common JavaScript runtimes
+  'chrome': 'Chrome',
+  'edge': 'Edge',
+  'firefox': 'Firefox',
+  'ie': 'IE',
+  'ios': 'IOS',
+  'node': 'Node',
+  'opera': 'Opera',
+  'safari': 'Safari',
+
+  // Uncommon JavaScript runtimes
+  'deno': 'Deno',
+  'hermes': 'Hermes',
+  'rhino': 'Rhino',
+}
+
+const subtestsToSkip: Record<string, boolean> = {
+  // Safari supposedly doesn't throw an error for duplicate identifiers in
+  // a function parameter list. The failing test case looks like this:
+  //
+  //   var f = function f([id, id]) { return id }
+  //
+  // However, this code will cause a compile error with esbuild so it's not
+  // possible to encounter this issue when running esbuild-generated code in
+  // Safari. I'm ignoring this test since Safari's destructuring otherwise
+  // works fine so destructuring shouldn't be forbidden when building for
+  // Safari.
+  'destructuring, parameters: duplicate identifier': true,
+}
+
+const getValueOfTest = (value: boolean | { val: boolean }): boolean => {
+  // Handle values like this:
+  //
+  //   {
+  //     val: true,
+  //     note_id: "ff-shorthand-methods",
+  //     ...
+  //   }
+  //
+  if (typeof value === 'object' && value !== null) {
+    return value.val === true
+  }
+
+  // String values such as "flagged" are considered to be false
+  return value === true
+}
+
+interface Test {
+  name: string
+  res: Record<string, boolean | { val: boolean }>
+  subtests?: { name: string, res: Record<string, boolean | { val: boolean }> 
}[]
+}
+
+const updateMap = (map: SupportMap<JSFeature>, feature: JSFeature, engine: 
Engine, version: string, testName: string, passed: boolean): void => {
+  const engines = map[feature] || (map[feature] = {})
+  const versions = engines[engine] || (engines[engine] = {})
+  const support = versions[version] || (versions[version] = {})
+  if (passed) {
+    support.passed = (support.passed || 0) + 1
+  } else {
+    support.failed ||= new Set
+    support.failed.add(testName)
+  }
+}
+
+const mergeIndividualTestResults = (map: SupportMap<JSFeature>, feature: 
JSFeature, testName: string, res: Record<string, boolean | { val: boolean }>): 
void => {
+  const environments = parseEnvsVersions(res)
+  for (const environment in environments) {
+    const engine = environmentToEngine[environment]
+    if (engine) {
+      for (const parsed of environments[environment]) {
+        const version = parsed.version.join('.')
+        if (/^\d+(?:\.\d+(?:\.\d+)?)?$/.test(version)) {
+          updateMap(map, feature, engine, version, testName, 
getValueOfTest(res[parsed.id]))
+        }
+      }
+    }
+  }
+}
+
+const mergeAllTestResults = (map: SupportMap<JSFeature>, tests: Test[]): void 
=> {
+  for (const test of tests) {
+    const feature = features[test.name]
+    if (feature) {
+      if (test.subtests) {
+        for (const subtest of test.subtests) {
+          const fullName = `${test.name}: ${subtest.name}`
+          if (subtestsToSkip[fullName]) continue
+          mergeIndividualTestResults(map, feature, fullName, subtest.res)
+        }
+      } else {
+        mergeIndividualTestResults(map, feature, test.name, test.res)
+      }
+    } else if (test.subtests) {
+      for (const subtest of test.subtests) {
+        const fullName = `${test.name}: ${subtest.name}`
+        if (subtestsToSkip[fullName]) continue
+        const feature = features[fullName]
+        if (feature) mergeIndividualTestResults(map, feature, fullName, 
subtest.res)
+      }
+    }
+  }
+}
+
+export const js: SupportMap<JSFeature> = {} as SupportMap<JSFeature>
+mergeAllTestResults(js, [...es5.tests, ...es6.tests, ...stage4.tests, 
...stage1to3.tests])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.27.2/compat-table/src/index.ts 
new/esbuild-0.27.3/compat-table/src/index.ts
--- old/esbuild-0.27.2/compat-table/src/index.ts        2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/compat-table/src/index.ts        2026-02-05 
22:52:09.000000000 +0100
@@ -335,11 +335,11 @@
 // These dependencies are not published on npm and are instead pulled from 
GitHub (but pinned to a specific commit)
 installGitHubDependencies()
 
-import('./kangax').then(kangax => {
+import('./compat-table').then(compatTable => {
   const js: SupportMap<JSFeature> = {} as SupportMap<JSFeature>
   for (const feature in jsFeatures) js[feature as JSFeature] = {}
 
-  mergeSupportMaps(js, kangax.js)
+  mergeSupportMaps(js, compatTable.js)
   mergeSupportMaps(js, caniuse.js)
   mergeSupportMaps(js, mdn.js)
 
@@ -564,8 +564,9 @@
 mergePrefixMaps(cssPrefix, caniuse.cssPrefix)
 mergePrefixMaps(cssPrefix, mdn.cssPrefix)
 
-// MDN data is wrong here, Firefox 127 still has gradient interpolation 
rendering bugs: https://bugzilla.mozilla.org/show_bug.cgi?id=1904106
-css.GradientInterpolation.Firefox = {}
+// MDN data is wrong here, Firefox still had gradient interpolation rendering
+// bugs until version 137: https://bugzilla.mozilla.org/show_bug.cgi?id=1904106
+css.GradientInterpolation.Firefox = { 137: { force: true } }
 
 const [cssVersionRanges] = supportMapToVersionRanges(css)
 generateTableForCSS(cssVersionRanges, cssPrefix)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.27.2/compat-table/src/kangax.ts 
new/esbuild-0.27.3/compat-table/src/kangax.ts
--- old/esbuild-0.27.2/compat-table/src/kangax.ts       2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/compat-table/src/kangax.ts       1970-01-01 
01:00:00.000000000 +0100
@@ -1,257 +0,0 @@
-// This file processes the data contained in 
https://github.com/kangax/compat-table
-
-import fs = require('fs')
-import path = require('path')
-
-import es5 = require('../repos/kangax/compat-table/data-es5.js')
-import es6 = require('../repos/kangax/compat-table/data-es6.js')
-import stage1to3 = require('../repos/kangax/compat-table/data-esnext.js')
-import stage4 = require('../repos/kangax/compat-table/data-es2016plus.js')
-import environments = require('../repos/kangax/compat-table/environments.json')
-import parseEnvsVersions = 
require('../repos/kangax/compat-table/build-utils/parse-envs-versions.js')
-import interpolateAllResults = 
require('../repos/kangax/compat-table/build-utils/interpolate-all-results.js')
-import { Engine, JSFeature, SupportMap } from './index'
-
-interpolateAllResults(es5.tests, environments)
-interpolateAllResults(es6.tests, environments)
-interpolateAllResults(stage1to3.tests, environments)
-interpolateAllResults(stage4.tests, environments)
-
-const features: Record<string, JSFeature> = {
-  // ES5 features
-  'Object/array literal extensions: Getter accessors': 'ObjectAccessors',
-  'Object/array literal extensions: Setter accessors': 'ObjectAccessors',
-
-  // ES6 features
-  'arrow functions': 'Arrow',
-  'class': 'Class',
-  'const': 'ConstAndLet',
-  'default function parameters': 'DefaultArgument',
-  'destructuring, assignment': 'Destructuring',
-  'destructuring, declarations': 'Destructuring',
-  'destructuring, parameters': 'Destructuring',
-  'for..of loops': 'ForOf',
-  'function "name" property: isn\'t writable, is configurable': 
'FunctionNameConfigurable',
-  'generators': 'Generator',
-  'let': 'ConstAndLet',
-  'new.target': 'NewTarget',
-  'object literal extensions': 'ObjectExtensions',
-  'RegExp "y" and "u" flags': 'RegexpStickyAndUnicodeFlags',
-  'rest parameters': 'RestArgument',
-  'spread syntax for iterable objects': 'ArraySpread',
-  'template literals': 'TemplateLiteral',
-  'Unicode code point escapes': 'UnicodeEscapes',
-
-  // >ES6 features
-  'async functions': 'AsyncAwait',
-  'Asynchronous Iterators: async generators': 'AsyncGenerator',
-  'Asynchronous Iterators: for-await-of loops': 'ForAwait',
-  'BigInt: basic functionality': 'Bigint',
-  'exponentiation (**) operator': 'ExponentOperator',
-  'Hashbang Grammar': 'Hashbang',
-  'Logical Assignment': 'LogicalAssignment',
-  'nested rest destructuring, declarations': 'NestedRestBinding',
-  'nested rest destructuring, parameters': 'NestedRestBinding',
-  'nullish coalescing operator (??)': 'NullishCoalescing',
-  'object rest/spread properties': 'ObjectRestSpread',
-  'optional catch binding': 'OptionalCatchBinding',
-  'optional chaining operator (?.)': 'OptionalChain',
-  'RegExp Lookbehind Assertions': 'RegexpLookbehindAssertions',
-  'RegExp named capture groups': 'RegexpNamedCaptureGroups',
-  'RegExp Unicode Property Escapes': 'RegexpUnicodePropertyEscapes',
-  's (dotAll) flag for regular expressions': 'RegexpDotAllFlag',
-
-  // Public fields
-  'instance class fields: computed instance class fields': 'ClassField',
-  'instance class fields: public instance class fields': 'ClassField',
-  'static class fields: computed static class fields': 'ClassStaticField',
-  'static class fields: public static class fields': 'ClassStaticField',
-
-  // Private fields
-  'instance class fields: optional deep private instance class fields access': 
'ClassPrivateField',
-  'instance class fields: optional private instance class fields access': 
'ClassPrivateField',
-  'instance class fields: private instance class fields basic support': 
'ClassPrivateField',
-  'instance class fields: private instance class fields initializers': 
'ClassPrivateField',
-  'static class fields: private static class fields': 
'ClassPrivateStaticField',
-
-  // Private methods
-  'private class methods: private accessor properties': 'ClassPrivateAccessor',
-  'private class methods: private instance methods': 'ClassPrivateMethod',
-  'private class methods: private static accessor properties': 
'ClassPrivateStaticAccessor',
-  'private class methods: private static methods': 'ClassPrivateStaticMethod',
-
-  // Private "in"
-  'Ergonomic brand checks for private fields': 'ClassPrivateBrandCheck',
-}
-
-const environmentToEngine: Record<string, Engine> = {
-  // The JavaScript standard
-  'es': 'ES',
-
-  // Common JavaScript runtimes
-  'chrome': 'Chrome',
-  'edge': 'Edge',
-  'firefox': 'Firefox',
-  'ie': 'IE',
-  'ios': 'IOS',
-  'node': 'Node',
-  'opera': 'Opera',
-  'safari': 'Safari',
-
-  // Uncommon JavaScript runtimes
-  'deno': 'Deno',
-  'hermes': 'Hermes',
-  'rhino': 'Rhino',
-}
-
-const subtestsToSkip: Record<string, boolean> = {
-  // Safari supposedly doesn't throw an error for duplicate identifiers in
-  // a function parameter list. The failing test case looks like this:
-  //
-  //   var f = function f([id, id]) { return id }
-  //
-  // However, this code will cause a compile error with esbuild so it's not
-  // possible to encounter this issue when running esbuild-generated code in
-  // Safari. I'm ignoring this test since Safari's destructuring otherwise
-  // works fine so destructuring shouldn't be forbidden when building for
-  // Safari.
-  'destructuring, parameters: duplicate identifier': true,
-}
-
-const getValueOfTest = (value: boolean | { val: boolean }): boolean => {
-  // Handle values like this:
-  //
-  //   {
-  //     val: true,
-  //     note_id: "ff-shorthand-methods",
-  //     ...
-  //   }
-  //
-  if (typeof value === 'object' && value !== null) {
-    return value.val === true
-  }
-
-  // String values such as "flagged" are considered to be false
-  return value === true
-}
-
-interface Test {
-  name: string
-  res: Record<string, boolean | { val: boolean }>
-  subtests?: { name: string, res: Record<string, boolean | { val: boolean }> 
}[]
-}
-
-const updateMap = (map: SupportMap<JSFeature>, feature: JSFeature, engine: 
Engine, version: string, testName: string, passed: boolean): void => {
-  const engines = map[feature] || (map[feature] = {})
-  const versions = engines[engine] || (engines[engine] = {})
-  const support = versions[version] || (versions[version] = {})
-  if (passed) {
-    support.passed = (support.passed || 0) + 1
-  } else {
-    support.failed ||= new Set
-    support.failed.add(testName)
-  }
-}
-
-const mergeIndividualTestResults = (map: SupportMap<JSFeature>, feature: 
JSFeature, testName: string, res: Record<string, boolean | { val: boolean }>, 
omit: Engine[]): void => {
-  const environments = parseEnvsVersions(res)
-  for (const environment in environments) {
-    const engine = environmentToEngine[environment]
-    if (engine && omit.indexOf(engine) < 0) {
-      for (const parsed of environments[environment]) {
-        const version = parsed.version.join('.')
-        if (/^\d+(?:\.\d+(?:\.\d+)?)?$/.test(version)) {
-          updateMap(map, feature, engine, version, testName, 
getValueOfTest(res[parsed.id]))
-        }
-      }
-    }
-  }
-}
-
-const mergeAllTestResults = (map: SupportMap<JSFeature>, tests: Test[], { omit 
= [] }: { omit?: Engine[] } = {}): void => {
-  for (const test of tests) {
-    const feature = features[test.name]
-    if (feature) {
-      if (test.subtests) {
-        for (const subtest of test.subtests) {
-          const fullName = `${test.name}: ${subtest.name}`
-          if (subtestsToSkip[fullName]) continue
-          mergeIndividualTestResults(map, feature, fullName, subtest.res, omit)
-        }
-      } else {
-        mergeIndividualTestResults(map, feature, test.name, test.res, omit)
-      }
-    } else if (test.subtests) {
-      for (const subtest of test.subtests) {
-        const fullName = `${test.name}: ${subtest.name}`
-        if (subtestsToSkip[fullName]) continue
-        const feature = features[fullName]
-        if (feature) mergeIndividualTestResults(map, feature, fullName, 
subtest.res, omit)
-      }
-    }
-  }
-}
-
-// Node compatibility data is handled separately because the data source
-// https://github.com/williamkapke/node-compat-table is (for now at least)
-// more up to date than https://github.com/kangax/compat-table.
-const reformatNodeCompatTable = (): Test[] => {
-  const nodeCompatTableDir = path.join(__dirname, 
'repos/williamkapke/node-compat-table/results/v8')
-  const testMap: Record<string, Test> = {}
-  const subtestMap: Record<string, Test> = {}
-  const tests: Test[] = []
-
-  // Format the data like the kangax table
-  for (const entry of fs.readdirSync(nodeCompatTableDir)) {
-    // Note: this omits data for the "0.x.y" releases because the data isn't 
clean
-    const match = /^([1-9]\d*\.\d+\.\d+)\.json$/.exec(entry)
-    if (match) {
-      const version = 'node' + match[1].replace(/\./g, '_')
-      const jsonPath = path.join(nodeCompatTableDir, entry)
-      const json = JSON.parse(fs.readFileSync(jsonPath, 'utf8'))
-
-      for (const key in json) {
-        if (key.startsWith('ES')) {
-          const object = json[key]
-
-          for (const key in object) {
-            const testResult = object[key]
-            const split = key.replace('<code>', '').replace('</code>', 
'').split('›')
-
-            if (split.length === 2) {
-              let test = testMap[split[1]]
-              if (!test) {
-                test = testMap[split[1]] = { name: split[1], res: {} }
-                tests.push(test)
-              }
-              test.res[version] = testResult
-            }
-
-            else if (split.length === 3) {
-              const subtestKey = `${split[1]}: ${split[2]}`
-              let subtest = subtestMap[subtestKey]
-              if (!subtest) {
-                let test = testMap[split[1]]
-                if (!test) {
-                  test = testMap[split[1]] = { name: split[1], res: {} }
-                  tests.push(test)
-                }
-                subtest = subtestMap[subtestKey] = { name: split[2], res: {} }
-                test.subtests ||= []
-                test.subtests.push(subtest)
-              }
-              subtest.res[version] = testResult
-            }
-          }
-        }
-      }
-    }
-  }
-
-  return tests
-}
-
-export const js: SupportMap<JSFeature> = {} as SupportMap<JSFeature>
-
-mergeAllTestResults(js, [...es5.tests, ...es6.tests, ...stage4.tests, 
...stage1to3.tests], { omit: ['Node'] })
-mergeAllTestResults(js, reformatNodeCompatTable())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.27.2/go.version 
new/esbuild-0.27.3/go.version
--- old/esbuild-0.27.2/go.version       2025-12-17 01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/go.version       2026-02-05 22:52:09.000000000 +0100
@@ -1 +1 @@
-1.25.5
+1.25.7
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.27.2/internal/bundler/bundler.go 
new/esbuild-0.27.3/internal/bundler/bundler.go
--- old/esbuild-0.27.2/internal/bundler/bundler.go      2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/internal/bundler/bundler.go      2026-02-05 
22:52:09.000000000 +0100
@@ -380,6 +380,10 @@
        case config.LoaderDataURL:
                mimeType := guessMimeType(ext, source.Contents)
                url := helpers.EncodeStringAsShortestDataURL(mimeType, 
source.Contents)
+               if strings.HasPrefix(source.KeyPath.IgnoredSuffix, "#") {
+                       // Preserve URL fragments as they are meaningful in CSS
+                       url += source.KeyPath.IgnoredSuffix
+               }
                expr := js_ast.Expr{Data: &js_ast.EString{Value: 
helpers.StringToUTF16(url)}}
                ast := js_parser.LazyExportAST(args.log, source, 
js_parser.OptionsFromConfig(&args.options), expr, nil)
                ast.URLForCSS = url
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/esbuild-0.27.2/internal/bundler_tests/bundler_loader_test.go 
new/esbuild-0.27.3/internal/bundler_tests/bundler_loader_test.go
--- old/esbuild-0.27.2/internal/bundler_tests/bundler_loader_test.go    
2025-12-17 01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/internal/bundler_tests/bundler_loader_test.go    
2026-02-05 22:52:09.000000000 +0100
@@ -1905,3 +1905,29 @@
                },
        })
 }
+
+// See: https://github.com/evanw/esbuild/issues/4370
+func TestLoaderDataURLHashSuffixIssue4370(t *testing.T) {
+       loader_suite.expectBundled(t, bundled{
+               files: map[string]string{
+                       "/icons.css": `
+                               .triangle {
+                                       width: 10px;
+                                       height: 10px;
+                                       background: currentColor;
+                                       clip-path: url(./triangle.svg#x);
+                               }
+                       `,
+                       "/triangle.svg": `<svg 
xmlns="http://www.w3.org/2000/svg";><defs><clipPath id="x"><path d="M0 
0H10V10Z"/></clipPath></defs></svg>`,
+               },
+               entryPaths: []string{"/icons.css"},
+               options: config.Options{
+                       Mode:         config.ModeBundle,
+                       AbsOutputDir: "/out/",
+                       ExtensionToLoader: map[string]config.Loader{
+                               ".css": config.LoaderCSS,
+                               ".svg": config.LoaderDataURL,
+                       },
+               },
+       })
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/esbuild-0.27.2/internal/bundler_tests/bundler_lower_test.go 
new/esbuild-0.27.3/internal/bundler_tests/bundler_lower_test.go
--- old/esbuild-0.27.2/internal/bundler_tests/bundler_lower_test.go     
2025-12-17 01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/internal/bundler_tests/bundler_lower_test.go     
2026-02-05 22:52:09.000000000 +0100
@@ -3115,6 +3115,7 @@
        })
 }
 
+// https://github.com/evanw/esbuild/issues/3768
 func TestJavaScriptDecoratorsBundleIssue3768(t *testing.T) {
        lower_suite.expectBundled(t, bundled{
                files: map[string]string{
@@ -3142,3 +3143,23 @@
                },
        })
 }
+
+// https://github.com/evanw/esbuild/issues/4378
+func TestForAwaitWithOptionalCatchIssue4378(t *testing.T) {
+       lower_suite.expectBundled(t, bundled{
+               files: map[string]string{
+                       "/entry.js": `
+                               async function test(b) {
+                                       for await (const a of b) a()
+                               }
+                       `,
+               },
+               entryPaths: []string{"/entry.js"},
+               options: config.Options{
+                       Mode:                  config.ModePassThrough,
+                       AbsOutputFile:         "/out.js",
+                       UnsupportedJSFeatures: compat.ForAwait,
+                       MinifySyntax:          true,
+               },
+       })
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/esbuild-0.27.2/internal/bundler_tests/snapshots/snapshots_loader.txt 
new/esbuild-0.27.3/internal/bundler_tests/snapshots/snapshots_loader.txt
--- old/esbuild-0.27.2/internal/bundler_tests/snapshots/snapshots_loader.txt    
2025-12-17 01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/internal/bundler_tests/snapshots/snapshots_loader.txt    
2026-02-05 22:52:09.000000000 +0100
@@ -627,6 +627,17 @@
 };
 
 
================================================================================
+TestLoaderDataURLHashSuffixIssue4370
+---------- /out/icons.css ----------
+/* icons.css */
+.triangle {
+  width: 10px;
+  height: 10px;
+  background: currentColor;
+  clip-path: url('data:image/svg+xml,<svg 
xmlns="http://www.w3.org/2000/svg";><defs><clipPath id="x"><path d="M0 
0H10V10Z"/></clipPath></defs></svg>#x');
+}
+
+================================================================================
 TestLoaderDataURLTextCSS
 ---------- /out/entry.css ----------
 /* <data:text/css,body{color:%72%65%64}> */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/esbuild-0.27.2/internal/bundler_tests/snapshots/snapshots_lower.txt 
new/esbuild-0.27.3/internal/bundler_tests/snapshots/snapshots_lower.txt
--- old/esbuild-0.27.2/internal/bundler_tests/snapshots/snapshots_lower.txt     
2025-12-17 01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/internal/bundler_tests/snapshots/snapshots_lower.txt     
2026-02-05 22:52:09.000000000 +0100
@@ -17,6 +17,27 @@
 _e = new WeakMap();
 
 
================================================================================
+TestForAwaitWithOptionalCatchIssue4378
+---------- /out.js ----------
+async function test(b) {
+  try {
+    for (var iter = __forAwait(b), more, temp, error; more = !(temp = await 
iter.next()).done; more = !1) {
+      const a = temp.value;
+      a();
+    }
+  } catch (temp) {
+    error = [temp];
+  } finally {
+    try {
+      more && (temp = iter.return) && await temp.call(iter);
+    } finally {
+      if (error)
+        throw error[0];
+    }
+  }
+}
+
+================================================================================
 TestJavaScriptAutoAccessorES2021
 ---------- /out/js-define.js ----------
 var _a, _b, _one, __two, _Foo_instances, two_get, two_set, _a2, _four, __five, 
_Foo_static, five_get, five_set, _b2;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.27.2/internal/compat/css_table.go 
new/esbuild-0.27.3/internal/compat/css_table.go
--- old/esbuild-0.27.2/internal/compat/css_table.go     2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/internal/compat/css_table.go     2026-02-05 
22:52:09.000000000 +0100
@@ -66,11 +66,12 @@
                Safari:  {{start: v{12, 1, 0}}},
        },
        GradientInterpolation: {
-               Chrome: {{start: v{111, 0, 0}}},
-               Edge:   {{start: v{111, 0, 0}}},
-               IOS:    {{start: v{16, 2, 0}}},
-               Opera:  {{start: v{97, 0, 0}}},
-               Safari: {{start: v{16, 2, 0}}},
+               Chrome:  {{start: v{111, 0, 0}}},
+               Edge:    {{start: v{111, 0, 0}}},
+               Firefox: {{start: v{137, 0, 0}}},
+               IOS:     {{start: v{16, 2, 0}}},
+               Opera:   {{start: v{97, 0, 0}}},
+               Safari:  {{start: v{16, 2, 0}}},
        },
        GradientMidpoints: {
                Chrome:  {{start: v{40, 0, 0}}},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.27.2/internal/compat/js_table.go 
new/esbuild-0.27.3/internal/compat/js_table.go
--- old/esbuild-0.27.2/internal/compat/js_table.go      2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/internal/compat/js_table.go      2026-02-05 
22:52:09.000000000 +0100
@@ -326,7 +326,7 @@
                ES:      {{start: v{2022, 0, 0}}},
                Firefox: {{start: v{90, 0, 0}}},
                IOS:     {{start: v{15, 0, 0}}},
-               Node:    {{start: v{16, 4, 0}}},
+               Node:    {{start: v{16, 9, 0}}},
                Opera:   {{start: v{77, 0, 0}}},
                Safari:  {{start: v{15, 0, 0}}},
        },
@@ -592,7 +592,7 @@
                Firefox: {{start: v{67, 0, 0}}},
                Hermes:  {{start: v{0, 7, 0}}},
                IOS:     {{start: v{13, 4, 0}}},
-               Node:    {{start: v{12, 5, 0}}},
+               Node:    {{start: v{12, 0, 0}}},
                Opera:   {{start: v{62, 0, 0}}},
                Rhino:   {{start: v{1, 7, 15}}},
                Safari:  {{start: v{13, 1, 0}}},
@@ -757,7 +757,7 @@
                Firefox: {{start: v{74, 0, 0}}},
                Hermes:  {{start: v{0, 12, 0}}},
                IOS:     {{start: v{13, 4, 0}}},
-               Node:    {{start: v{16, 1, 0}}},
+               Node:    {{start: v{16, 9, 0}}},
                Opera:   {{start: v{77, 0, 0}}},
                Safari:  {{start: v{13, 1, 0}}},
        },
@@ -838,7 +838,7 @@
                // Note: The latest version of "Hermes" failed 8 tests 
including: RegExp Unicode Property Escapes: Unicode 11
                // Note: The latest version of "IE" failed 8 tests including: 
RegExp Unicode Property Escapes: Unicode 11
                // Note: The latest version of "IOS" failed this test: RegExp 
Unicode Property Escapes: Unicode 17.0
-               // Note: The latest version of "Node" failed this test: RegExp 
Unicode Property Escapes: Unicode 17.0
+               // Note: The latest version of "Node" failed 2 tests including: 
RegExp Unicode Property Escapes: Unicode 16.0
                // Note: The latest version of "Rhino" failed 9 tests 
including: RegExp Unicode Property Escapes: Unicode 11
                // Note: The latest version of "Safari" failed this test: 
RegExp Unicode Property Escapes: Unicode 17.0
                ES: {{start: v{2018, 0, 0}}},
@@ -867,7 +867,7 @@
                ES:      {{start: v{2015, 0, 0}}},
                Firefox: {{start: v{53, 0, 0}}},
                IOS:     {{start: v{13, 0, 0}}},
-               Node:    {{start: v{10, 0, 0}}},
+               Node:    {{start: v{8, 10, 0}}},
                Opera:   {{start: v{49, 0, 0}}},
                Safari:  {{start: v{13, 0, 0}}},
        },
@@ -909,7 +909,15 @@
                Rhino:   {{start: v{1, 7, 15}}},
                Safari:  {{start: v{9, 0, 0}}},
        },
-       Using: {},
+       Using: {
+               // Note: The latest version of "IE" failed 7 tests including: 
Explicit Resource Management: AsyncDisposableStack
+               // Note: The latest version of "IOS" failed 7 tests including: 
Explicit Resource Management: AsyncDisposableStack
+               // Note: The latest version of "Safari" failed 7 tests 
including: Explicit Resource Management: AsyncDisposableStack
+               Chrome:  {{start: v{143, 0, 0}}},
+               Edge:    {{start: v{143, 0, 0}}},
+               Firefox: {{start: v{147, 0, 0}}},
+               Node:    {{start: v{25, 0, 0}}},
+       },
 }
 
 // Return all features that are not available in at least one environment
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.27.2/internal/css_ast/css_ast.go 
new/esbuild-0.27.3/internal/css_ast/css_ast.go
--- old/esbuild-0.27.2/internal/css_ast/css_ast.go      2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/internal/css_ast/css_ast.go      2026-02-05 
22:52:09.000000000 +0100
@@ -1106,6 +1106,26 @@
        return cmp
 }
 
+type RAtScope struct {
+       Start         []ComplexSelector
+       End           []ComplexSelector
+       Rules         []Rule
+       CloseBraceLoc logger.Loc
+}
+
+func (a *RAtScope) Equal(rule R, check *CrossFileEqualityCheck) bool {
+       b, ok := rule.(*RAtScope)
+       return ok && ComplexSelectorsEqual(a.Start, b.Start, check) && 
ComplexSelectorsEqual(a.End, b.End, check) && RulesEqual(a.Rules, b.Rules, 
check)
+}
+
+func (r *RAtScope) Hash() (uint32, bool) {
+       hash := uint32(11)
+       hash = HashComplexSelectors(hash, r.Start)
+       hash = HashComplexSelectors(hash, r.End)
+       hash = HashRules(hash, r.Rules)
+       return hash, true
+}
+
 type ComplexSelector struct {
        Selectors []CompoundSelector
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/esbuild-0.27.2/internal/css_parser/css_decls_gradient.go 
new/esbuild-0.27.3/internal/css_parser/css_decls_gradient.go
--- old/esbuild-0.27.2/internal/css_parser/css_decls_gradient.go        
2025-12-17 01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/internal/css_parser/css_decls_gradient.go        
2026-02-05 22:52:09.000000000 +0100
@@ -707,25 +707,6 @@
                stop.v0, stop.v1, stop.v2 = premultiply(v0, v1, v2, stop.alpha, 
colorSpace)
        }
 
-       // Duplicate the endpoints if they should wrap around to themselves
-       if hueMethod == longerHue && colorSpace.isPolar() && len(colorStops) > 
0 {
-               if first := colorStops[0]; len(first.positionTerms) == 1 {
-                       if first.positionTerms[0].value.Value() < 0 {
-                               colorStops[0].positionTerms[0].value = 
helpers.NewF64(0)
-                       } else if first.positionTerms[0].value.Value() > 0 {
-                               first.midpoint = nil
-                               first.positionTerms = []valueWithUnit{{value: 
helpers.NewF64(0), unit: first.positionTerms[0].unit}}
-                               colorStops = append([]parsedColorStop{first}, 
colorStops...)
-                       }
-               }
-               if last := colorStops[len(colorStops)-1]; 
len(last.positionTerms) == 1 {
-                       if last.positionTerms[0].unit != "%" || 
last.positionTerms[0].value.Value() < 100 {
-                               last.positionTerms = []valueWithUnit{{value: 
helpers.NewF64(100), unit: "%"}}
-                               colorStops = append(colorStops, last)
-                       }
-               }
-       }
-
        var newColorStops []colorStop
        var generateColorStops func(
                int, parsedColorStop, parsedColorStop,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.27.2/internal/css_parser/css_parser.go 
new/esbuild-0.27.3/internal/css_parser/css_parser.go
--- old/esbuild-0.27.2/internal/css_parser/css_parser.go        2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/internal/css_parser/css_parser.go        2026-02-05 
22:52:09.000000000 +0100
@@ -1507,6 +1507,8 @@
                        } else {
                                p.anonLayerCount++
                        }
+
+                       // Parse the block for this rule
                        var rules []css_ast.Rule
                        if context.isDeclarationList {
                                rules = 
p.parseListOfDeclarations(listOfDeclarationsOpts{
@@ -1517,6 +1519,7 @@
                                        parseSelectors: true,
                                })
                        }
+
                        if len(names) != 1 {
                                p.anonLayerCount--
                        }
@@ -1565,12 +1568,12 @@
                if !p.expect(css_lexer.TOpenBrace) {
                        break
                }
-               var rules []css_ast.Rule
 
                // Push the "@media" conditions
                p.enclosingAtMedia = append(p.enclosingAtMedia, queries)
 
                // Parse the block for this rule
+               var rules []css_ast.Rule
                if context.isDeclarationList {
                        rules = 
p.parseListOfDeclarations(listOfDeclarationsOpts{
                                canInlineNoOpNesting: 
context.canInlineNoOpNesting,
@@ -1591,6 +1594,57 @@
 
                return css_ast.Rule{Loc: atRange.Loc, Data: 
&css_ast.RAtMedia{Queries: queries, Rules: rules, CloseBraceLoc: closeBraceLoc}}
 
+       case "scope":
+               var ok bool
+
+               // Parse the start limit
+               var start []css_ast.ComplexSelector
+               p.eat(css_lexer.TWhitespace)
+               if p.eat(css_lexer.TOpenParen) {
+                       if start, ok = 
p.parseSelectorList(parseSelectorOpts{stopOnCloseParen: true}); !ok || 
!p.expect(css_lexer.TCloseParen) {
+                               break
+                       }
+                       p.eat(css_lexer.TWhitespace)
+               }
+
+               // Parse the end limit
+               var end []css_ast.ComplexSelector
+               if strings.EqualFold(p.decoded(), "to") && 
p.eat(css_lexer.TIdent) {
+                       p.eat(css_lexer.TWhitespace)
+                       if !p.expect(css_lexer.TOpenParen) {
+                               break
+                       }
+                       if end, ok = 
p.parseSelectorList(parseSelectorOpts{stopOnCloseParen: true}); !ok || 
!p.expect(css_lexer.TCloseParen) {
+                               break
+                       }
+               }
+               p.eat(css_lexer.TWhitespace)
+
+               // Expect a block after the query
+               matchingLoc := p.current().Range.Loc
+               if !p.expect(css_lexer.TOpenBrace) {
+                       break
+               }
+
+               // Parse the block for this rule
+               var rules []css_ast.Rule
+               if context.isDeclarationList {
+                       rules = 
p.parseListOfDeclarations(listOfDeclarationsOpts{
+                               canInlineNoOpNesting: 
context.canInlineNoOpNesting,
+                       })
+               } else {
+                       rules = p.parseListOfRules(ruleContext{
+                               parseSelectors: true,
+                       })
+               }
+
+               closeBraceLoc := p.current().Range.Loc
+               if !p.expectWithMatchingLoc(css_lexer.TCloseBrace, matchingLoc) 
{
+                       closeBraceLoc = logger.Loc{}
+               }
+
+               return css_ast.Rule{Loc: atRange.Loc, Data: 
&css_ast.RAtScope{Start: start, End: end, Rules: rules, CloseBraceLoc: 
closeBraceLoc}}
+
        default:
                if kind == atRuleUnknown && lowerAtToken == "namespace" {
                        // CSS namespaces are a weird feature that appears to 
only really be
@@ -1614,6 +1668,7 @@
        }
 
        // Parse an unknown prelude
+       p.index = preludeStart
 prelude:
        for {
                switch p.current().Kind {
@@ -1679,9 +1734,9 @@
                // Parse known rules whose blocks consist of whatever the 
current context is
                matchingLoc := p.current().Range.Loc
                p.expect(css_lexer.TOpenBrace)
-               var rules []css_ast.Rule
 
                // Parse the block for this rule
+               var rules []css_ast.Rule
                if context.isDeclarationList {
                        rules = 
p.parseListOfDeclarations(listOfDeclarationsOpts{
                                canInlineNoOpNesting: 
context.canInlineNoOpNesting,
@@ -1699,7 +1754,7 @@
 
                // Handle local names for "@container"
                if len(prelude) >= 1 && lowerAtToken == "container" {
-                       if t := &prelude[0]; t.Kind == css_lexer.TIdent && 
strings.ToLower(t.Text) != "not" {
+                       if t := &prelude[0]; t.Kind == css_lexer.TIdent && 
!strings.EqualFold(t.Text, "not") {
                                t.Kind = css_lexer.TSymbol
                                t.PayloadIndex = p.symbolForName(t.Loc, 
t.Text).Ref.InnerIndex
                        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/esbuild-0.27.2/internal/css_parser/css_parser_test.go 
new/esbuild-0.27.3/internal/css_parser/css_parser_test.go
--- old/esbuild-0.27.2/internal/css_parser/css_parser_test.go   2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/internal/css_parser/css_parser_test.go   2026-02-05 
22:52:09.000000000 +0100
@@ -2741,6 +2741,23 @@
        expectPrintedLowerMangle(t, "@media not (2px >= width >= 1px) { a { 
color: red } }", "@media not ((max-width: 2px) and (min-width: 1px)) {\n  a {\n 
   color: red;\n  }\n}\n", "")
 }
 
+func TestAtScope(t *testing.T) {
+       expectPrinted(t, "@scope { div { color: red } }", "@scope {\n  div {\n  
  color: red;\n  }\n}\n", "")
+       expectPrinted(t, "@scope (a) { div { color: red } }", "@scope (a) {\n  
div {\n    color: red;\n  }\n}\n", "")
+       expectPrinted(t, "@scope to (a) { div { color: red } }", "@scope to (a) 
{\n  div {\n    color: red;\n  }\n}\n", "")
+       expectPrinted(t, "@scope(a)to (b){ div { color: red } }", "@scope (a) 
to (b) {\n  div {\n    color: red;\n  }\n}\n", "")
+       expectPrinted(t, "@scope (a>*) to (~b) { div { color: red } }", "@scope 
(a > *) to (~ b) {\n  div {\n    color: red;\n  }\n}\n", "")
+       expectPrinted(t, "@scope (a,b) to (c,d) { div { color: red } }", 
"@scope (a, b) to (c, d) {\n  div {\n    color: red;\n  }\n}\n", "")
+
+       expectPrinted(t, "@scope a { div { color: red } }", "@scope a {\n  div 
{\n    color: red;\n  }\n}\n", "<stdin>: WARNING: Expected \"{\" but found 
\"a\"\n")
+       expectPrinted(t, "@scope to a { div { color: red } }", "@scope to a {\n 
 div {\n    color: red;\n  }\n}\n", "<stdin>: WARNING: Expected \"(\" but found 
\"a\"\n")
+       expectPrinted(t, "@scope (a) to b { div { color: red } }", "@scope (a) 
to b {\n  div {\n    color: red;\n  }\n}\n", "<stdin>: WARNING: Expected \"(\" 
but found \"b\"\n")
+
+       warning := "<stdin>: WARNING: Unexpected \"{\"\n<stdin>: WARNING: 
Expected \")\" to go with \"(\"\n<stdin>: NOTE: The unbalanced \"(\" is here:\n"
+       expectPrinted(t, "@scope (a { div { color: red } }", "@scope (a { div { 
color: red } }) {\n}\n", warning)
+       expectPrinted(t, "@scope to (a { div { color: red } }", "@scope to (a { 
div { color: red } }) {\n}\n", warning)
+}
+
 func TestFontWeight(t *testing.T) {
        expectPrintedMangle(t, "a { font-weight: normal }", "a {\n  
font-weight: 400;\n}\n", "")
        expectPrintedMangle(t, "a { font-weight: bold }", "a {\n  font-weight: 
700;\n}\n", "")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.27.2/internal/css_printer/css_printer.go 
new/esbuild-0.27.3/internal/css_printer/css_printer.go
--- old/esbuild-0.27.2/internal/css_printer/css_printer.go      2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/internal/css_printer/css_printer.go      2026-02-05 
22:52:09.000000000 +0100
@@ -377,6 +377,31 @@
                }
                p.printRuleBlock(r.Rules, indent, r.CloseBraceLoc)
 
+       case *css_ast.RAtScope:
+               p.print("@scope")
+               if len(r.Start) > 0 {
+                       if p.options.MinifyWhitespace {
+                               p.print("(")
+                       } else {
+                               p.print(" (")
+                       }
+                       p.printComplexSelectors(r.Start, indent, 
layoutSingleLine)
+                       p.print(")")
+               }
+               if len(r.End) > 0 {
+                       if p.options.MinifyWhitespace {
+                               p.print("to (")
+                       } else {
+                               p.print(" to (")
+                       }
+                       p.printComplexSelectors(r.End, indent, layoutSingleLine)
+                       p.print(")")
+               }
+               if !p.options.MinifyWhitespace {
+                       p.print(" ")
+               }
+               p.printRuleBlock(r.Rules, indent, r.CloseBraceLoc)
+
        default:
                panic("Internal error")
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/esbuild-0.27.2/internal/css_printer/css_printer_test.go 
new/esbuild-0.27.3/internal/css_printer/css_printer_test.go
--- old/esbuild-0.27.2/internal/css_printer/css_printer_test.go 2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/internal/css_printer/css_printer_test.go 2026-02-05 
22:52:09.000000000 +0100
@@ -376,6 +376,14 @@
        expectPrintedMinify(t, "@media junk(1, 2, 3) {div{color:red}}", "@media 
junk(1,2,3){div{color:red}}")
 }
 
+func TestAtScope(t *testing.T) {
+       expectPrinted(t, "@scope { div { color: red } }", "@scope {\n  div {\n  
  color: red;\n  }\n}\n")
+       expectPrinted(t, "@scope (a, .b) to (c > *) { div { color: red } }", 
"@scope (a, .b) to (c > *) {\n  div {\n    color: red;\n  }\n}\n")
+
+       expectPrintedMinify(t, "@scope { div { color: red } }", 
"@scope{div{color:red}}")
+       expectPrintedMinify(t, "@scope (a, .b) to (c > *) { div { color: red } 
}", "@scope(a,.b)to (c>*){div{color:red}}")
+}
+
 func TestAtFontFace(t *testing.T) {
        expectPrinted(t, "@font-face { font-family: 'Open Sans'; src: 
url('OpenSans.woff') format('woff') }",
                "@font-face {\n  font-family: \"Open Sans\";\n  src: 
url(OpenSans.woff) format(\"woff\");\n}\n")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.27.2/internal/js_parser/js_parser_lower.go 
new/esbuild-0.27.3/internal/js_parser/js_parser_lower.go
--- old/esbuild-0.27.2/internal/js_parser/js_parser_lower.go    2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/internal/js_parser/js_parser_lower.go    2026-02-05 
22:52:09.000000000 +0100
@@ -1097,6 +1097,11 @@
        tempRef := p.generateTempRef(tempRefNoDeclare, "temp")
        errorRef := p.generateTempRef(tempRefNoDeclare, "error")
 
+       p.recordUsage(iterRef)
+       p.recordUsage(moreRef)
+       p.recordUsage(tempRef)
+       p.recordUsage(errorRef)
+
        switch init := loop.Init.Data.(type) {
        case *js_ast.SLocal:
                if len(init.Decls) == 1 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.27.2/npm/@esbuild/aix-ppc64/package.json 
new/esbuild-0.27.3/npm/@esbuild/aix-ppc64/package.json
--- old/esbuild-0.27.2/npm/@esbuild/aix-ppc64/package.json      2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/npm/@esbuild/aix-ppc64/package.json      2026-02-05 
22:52:09.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/aix-ppc64",
-  "version": "0.27.2",
+  "version": "0.27.3",
   "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.2/npm/@esbuild/android-arm/package.json 
new/esbuild-0.27.3/npm/@esbuild/android-arm/package.json
--- old/esbuild-0.27.2/npm/@esbuild/android-arm/package.json    2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/npm/@esbuild/android-arm/package.json    2026-02-05 
22:52:09.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/android-arm",
-  "version": "0.27.2",
+  "version": "0.27.3",
   "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.2/npm/@esbuild/android-arm64/package.json 
new/esbuild-0.27.3/npm/@esbuild/android-arm64/package.json
--- old/esbuild-0.27.2/npm/@esbuild/android-arm64/package.json  2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/npm/@esbuild/android-arm64/package.json  2026-02-05 
22:52:09.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/android-arm64",
-  "version": "0.27.2",
+  "version": "0.27.3",
   "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.2/npm/@esbuild/android-x64/package.json 
new/esbuild-0.27.3/npm/@esbuild/android-x64/package.json
--- old/esbuild-0.27.2/npm/@esbuild/android-x64/package.json    2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/npm/@esbuild/android-x64/package.json    2026-02-05 
22:52:09.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/android-x64",
-  "version": "0.27.2",
+  "version": "0.27.3",
   "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.2/npm/@esbuild/darwin-arm64/package.json 
new/esbuild-0.27.3/npm/@esbuild/darwin-arm64/package.json
--- old/esbuild-0.27.2/npm/@esbuild/darwin-arm64/package.json   2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/npm/@esbuild/darwin-arm64/package.json   2026-02-05 
22:52:09.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/darwin-arm64",
-  "version": "0.27.2",
+  "version": "0.27.3",
   "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.2/npm/@esbuild/darwin-x64/package.json 
new/esbuild-0.27.3/npm/@esbuild/darwin-x64/package.json
--- old/esbuild-0.27.2/npm/@esbuild/darwin-x64/package.json     2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/npm/@esbuild/darwin-x64/package.json     2026-02-05 
22:52:09.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/darwin-x64",
-  "version": "0.27.2",
+  "version": "0.27.3",
   "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.2/npm/@esbuild/freebsd-arm64/package.json 
new/esbuild-0.27.3/npm/@esbuild/freebsd-arm64/package.json
--- old/esbuild-0.27.2/npm/@esbuild/freebsd-arm64/package.json  2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/npm/@esbuild/freebsd-arm64/package.json  2026-02-05 
22:52:09.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/freebsd-arm64",
-  "version": "0.27.2",
+  "version": "0.27.3",
   "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.2/npm/@esbuild/freebsd-x64/package.json 
new/esbuild-0.27.3/npm/@esbuild/freebsd-x64/package.json
--- old/esbuild-0.27.2/npm/@esbuild/freebsd-x64/package.json    2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/npm/@esbuild/freebsd-x64/package.json    2026-02-05 
22:52:09.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/freebsd-x64",
-  "version": "0.27.2",
+  "version": "0.27.3",
   "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.2/npm/@esbuild/linux-arm/package.json 
new/esbuild-0.27.3/npm/@esbuild/linux-arm/package.json
--- old/esbuild-0.27.2/npm/@esbuild/linux-arm/package.json      2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/npm/@esbuild/linux-arm/package.json      2026-02-05 
22:52:09.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/linux-arm",
-  "version": "0.27.2",
+  "version": "0.27.3",
   "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.2/npm/@esbuild/linux-arm64/package.json 
new/esbuild-0.27.3/npm/@esbuild/linux-arm64/package.json
--- old/esbuild-0.27.2/npm/@esbuild/linux-arm64/package.json    2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/npm/@esbuild/linux-arm64/package.json    2026-02-05 
22:52:09.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/linux-arm64",
-  "version": "0.27.2",
+  "version": "0.27.3",
   "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.2/npm/@esbuild/linux-ia32/package.json 
new/esbuild-0.27.3/npm/@esbuild/linux-ia32/package.json
--- old/esbuild-0.27.2/npm/@esbuild/linux-ia32/package.json     2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/npm/@esbuild/linux-ia32/package.json     2026-02-05 
22:52:09.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/linux-ia32",
-  "version": "0.27.2",
+  "version": "0.27.3",
   "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.2/npm/@esbuild/linux-loong64/package.json 
new/esbuild-0.27.3/npm/@esbuild/linux-loong64/package.json
--- old/esbuild-0.27.2/npm/@esbuild/linux-loong64/package.json  2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/npm/@esbuild/linux-loong64/package.json  2026-02-05 
22:52:09.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/linux-loong64",
-  "version": "0.27.2",
+  "version": "0.27.3",
   "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.2/npm/@esbuild/linux-mips64el/package.json 
new/esbuild-0.27.3/npm/@esbuild/linux-mips64el/package.json
--- old/esbuild-0.27.2/npm/@esbuild/linux-mips64el/package.json 2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/npm/@esbuild/linux-mips64el/package.json 2026-02-05 
22:52:09.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/linux-mips64el",
-  "version": "0.27.2",
+  "version": "0.27.3",
   "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.2/npm/@esbuild/linux-ppc64/package.json 
new/esbuild-0.27.3/npm/@esbuild/linux-ppc64/package.json
--- old/esbuild-0.27.2/npm/@esbuild/linux-ppc64/package.json    2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/npm/@esbuild/linux-ppc64/package.json    2026-02-05 
22:52:09.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/linux-ppc64",
-  "version": "0.27.2",
+  "version": "0.27.3",
   "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.2/npm/@esbuild/linux-riscv64/package.json 
new/esbuild-0.27.3/npm/@esbuild/linux-riscv64/package.json
--- old/esbuild-0.27.2/npm/@esbuild/linux-riscv64/package.json  2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/npm/@esbuild/linux-riscv64/package.json  2026-02-05 
22:52:09.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/linux-riscv64",
-  "version": "0.27.2",
+  "version": "0.27.3",
   "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.2/npm/@esbuild/linux-s390x/package.json 
new/esbuild-0.27.3/npm/@esbuild/linux-s390x/package.json
--- old/esbuild-0.27.2/npm/@esbuild/linux-s390x/package.json    2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/npm/@esbuild/linux-s390x/package.json    2026-02-05 
22:52:09.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/linux-s390x",
-  "version": "0.27.2",
+  "version": "0.27.3",
   "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.2/npm/@esbuild/linux-x64/package.json 
new/esbuild-0.27.3/npm/@esbuild/linux-x64/package.json
--- old/esbuild-0.27.2/npm/@esbuild/linux-x64/package.json      2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/npm/@esbuild/linux-x64/package.json      2026-02-05 
22:52:09.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/linux-x64",
-  "version": "0.27.2",
+  "version": "0.27.3",
   "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.2/npm/@esbuild/netbsd-arm64/package.json 
new/esbuild-0.27.3/npm/@esbuild/netbsd-arm64/package.json
--- old/esbuild-0.27.2/npm/@esbuild/netbsd-arm64/package.json   2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/npm/@esbuild/netbsd-arm64/package.json   2026-02-05 
22:52:09.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/netbsd-arm64",
-  "version": "0.27.2",
+  "version": "0.27.3",
   "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.2/npm/@esbuild/netbsd-x64/package.json 
new/esbuild-0.27.3/npm/@esbuild/netbsd-x64/package.json
--- old/esbuild-0.27.2/npm/@esbuild/netbsd-x64/package.json     2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/npm/@esbuild/netbsd-x64/package.json     2026-02-05 
22:52:09.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/netbsd-x64",
-  "version": "0.27.2",
+  "version": "0.27.3",
   "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.2/npm/@esbuild/openbsd-arm64/package.json 
new/esbuild-0.27.3/npm/@esbuild/openbsd-arm64/package.json
--- old/esbuild-0.27.2/npm/@esbuild/openbsd-arm64/package.json  2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/npm/@esbuild/openbsd-arm64/package.json  2026-02-05 
22:52:09.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/openbsd-arm64",
-  "version": "0.27.2",
+  "version": "0.27.3",
   "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.2/npm/@esbuild/openbsd-x64/package.json 
new/esbuild-0.27.3/npm/@esbuild/openbsd-x64/package.json
--- old/esbuild-0.27.2/npm/@esbuild/openbsd-x64/package.json    2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/npm/@esbuild/openbsd-x64/package.json    2026-02-05 
22:52:09.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/openbsd-x64",
-  "version": "0.27.2",
+  "version": "0.27.3",
   "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.2/npm/@esbuild/openharmony-arm64/package.json 
new/esbuild-0.27.3/npm/@esbuild/openharmony-arm64/package.json
--- old/esbuild-0.27.2/npm/@esbuild/openharmony-arm64/package.json      
2025-12-17 01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/npm/@esbuild/openharmony-arm64/package.json      
2026-02-05 22:52:09.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/openharmony-arm64",
-  "version": "0.27.2",
+  "version": "0.27.3",
   "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.2/npm/@esbuild/sunos-x64/package.json 
new/esbuild-0.27.3/npm/@esbuild/sunos-x64/package.json
--- old/esbuild-0.27.2/npm/@esbuild/sunos-x64/package.json      2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/npm/@esbuild/sunos-x64/package.json      2026-02-05 
22:52:09.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/sunos-x64",
-  "version": "0.27.2",
+  "version": "0.27.3",
   "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.2/npm/@esbuild/wasi-preview1/package.json 
new/esbuild-0.27.3/npm/@esbuild/wasi-preview1/package.json
--- old/esbuild-0.27.2/npm/@esbuild/wasi-preview1/package.json  2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/npm/@esbuild/wasi-preview1/package.json  2026-02-05 
22:52:09.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/wasi-preview1",
-  "version": "0.27.2",
+  "version": "0.27.3",
   "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.2/npm/@esbuild/win32-arm64/package.json 
new/esbuild-0.27.3/npm/@esbuild/win32-arm64/package.json
--- old/esbuild-0.27.2/npm/@esbuild/win32-arm64/package.json    2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/npm/@esbuild/win32-arm64/package.json    2026-02-05 
22:52:09.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/win32-arm64",
-  "version": "0.27.2",
+  "version": "0.27.3",
   "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.2/npm/@esbuild/win32-ia32/package.json 
new/esbuild-0.27.3/npm/@esbuild/win32-ia32/package.json
--- old/esbuild-0.27.2/npm/@esbuild/win32-ia32/package.json     2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/npm/@esbuild/win32-ia32/package.json     2026-02-05 
22:52:09.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/win32-ia32",
-  "version": "0.27.2",
+  "version": "0.27.3",
   "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.2/npm/@esbuild/win32-x64/package.json 
new/esbuild-0.27.3/npm/@esbuild/win32-x64/package.json
--- old/esbuild-0.27.2/npm/@esbuild/win32-x64/package.json      2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/npm/@esbuild/win32-x64/package.json      2026-02-05 
22:52:09.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@esbuild/win32-x64",
-  "version": "0.27.2",
+  "version": "0.27.3",
   "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.2/npm/esbuild/package.json 
new/esbuild-0.27.3/npm/esbuild/package.json
--- old/esbuild-0.27.2/npm/esbuild/package.json 2025-12-17 01:46:56.000000000 
+0100
+++ new/esbuild-0.27.3/npm/esbuild/package.json 2026-02-05 22:52:09.000000000 
+0100
@@ -1,6 +1,6 @@
 {
   "name": "esbuild",
-  "version": "0.27.2",
+  "version": "0.27.3",
   "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.2",
-    "@esbuild/android-arm": "0.27.2",
-    "@esbuild/android-arm64": "0.27.2",
-    "@esbuild/android-x64": "0.27.2",
-    "@esbuild/darwin-arm64": "0.27.2",
-    "@esbuild/darwin-x64": "0.27.2",
-    "@esbuild/freebsd-arm64": "0.27.2",
-    "@esbuild/freebsd-x64": "0.27.2",
-    "@esbuild/linux-arm": "0.27.2",
-    "@esbuild/linux-arm64": "0.27.2",
-    "@esbuild/linux-ia32": "0.27.2",
-    "@esbuild/linux-loong64": "0.27.2",
-    "@esbuild/linux-mips64el": "0.27.2",
-    "@esbuild/linux-ppc64": "0.27.2",
-    "@esbuild/linux-riscv64": "0.27.2",
-    "@esbuild/linux-s390x": "0.27.2",
-    "@esbuild/linux-x64": "0.27.2",
-    "@esbuild/netbsd-arm64": "0.27.2",
-    "@esbuild/netbsd-x64": "0.27.2",
-    "@esbuild/openbsd-arm64": "0.27.2",
-    "@esbuild/openbsd-x64": "0.27.2",
-    "@esbuild/openharmony-arm64": "0.27.2",
-    "@esbuild/sunos-x64": "0.27.2",
-    "@esbuild/win32-arm64": "0.27.2",
-    "@esbuild/win32-ia32": "0.27.2",
-    "@esbuild/win32-x64": "0.27.2"
+    "@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"
   },
   "license": "MIT"
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/esbuild-0.27.2/npm/esbuild-wasm/package.json 
new/esbuild-0.27.3/npm/esbuild-wasm/package.json
--- old/esbuild-0.27.2/npm/esbuild-wasm/package.json    2025-12-17 
01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/npm/esbuild-wasm/package.json    2026-02-05 
22:52:09.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "esbuild-wasm",
-  "version": "0.27.2",
+  "version": "0.27.3",
   "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.2/version.txt 
new/esbuild-0.27.3/version.txt
--- old/esbuild-0.27.2/version.txt      2025-12-17 01:46:56.000000000 +0100
+++ new/esbuild-0.27.3/version.txt      2026-02-05 22:52:09.000000000 +0100
@@ -1 +1 @@
-0.27.2
+0.27.3

Reply via email to