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