Commit Graph

13725 Commits

Author SHA1 Message Date
Alistair Smith
b516eedc67 fix mod 2025-09-18 17:57:46 -07:00
Alistair Smith
bcea163fd2 update framework def 2025-09-18 17:55:28 -07:00
Alistair Smith
a47cbef4ca restore bundler options 2025-09-18 17:39:48 -07:00
Alistair Smith
90e68fa095 use different react bundles 2025-09-18 17:33:49 -07:00
Alistair Smith
da0b090834 use the specific bundles 2025-09-18 17:25:26 -07:00
Alistair Smith
e6aced6637 remove 2025-09-18 17:17:27 -07:00
Alistair Smith
ce560cd318 Merge branch 'zack/ssg-3' of github.com:oven-sh/bun into ali/react 2025-09-18 17:16:07 -07:00
Alistair Smith
e554c4e1ca Update bun-framework-react dependencies and imports
- Changed the version of `react-server-dom-bun` from a local link to a specific experimental version in `package.json` and `bun.lock`.
- Updated the import path for `renderToPipeableStream` to use the `.node` variant for compatibility.
- Added `neo-async` as a dependency for `react-server-dom-bun` to ensure proper functionality.
2025-09-18 14:18:11 -07:00
Zack Radisic
731f42ca72 fix test 2025-09-17 20:49:55 -07:00
Zack Radisic
f33a852a80 merge 2025-09-17 17:14:56 -07:00
Zack Radisic
f5122bdbf1 use import instead of class 2025-09-17 17:09:18 -07:00
Jarred Sumner
2eebcee522 Fix DevServer HMR sourcemap offset issues (#22739)
## Summary
Fixes sourcemap offset issues in DevServer HMR mode that were causing
incorrect line number mappings when debugging.

## Problem

When using DevServer with HMR enabled, sourcemap line numbers were
consistently off by one or more lines when shown in Chrome DevTools. In
some cases, they were off when shown in the terminal as well.

## Solution

### 1. Remove magic +2 offset
Removed an arbitrary "+2" that was added to `runtime.line_count` in
SourceMapStore.zig. The comment said "magic fairy in my dreams said it
would align the source maps" - this was causing positions to be
incorrectly offset.

### 2. Fix double-increment bug
ErrorReportRequest.zig was incorrectly adding 1 to line numbers that
were already 1-based from the browser, causing an off-by-one error.

### 3. Improve type safety
Converted all line/column handling to use `bun.Ordinal` type instead of
raw `i32`, ensuring consistent 0-based vs 1-based conversions throughout
the codebase.

## Test plan
- [x] Added comprehensive sourcemap tests for complex error scenarios
- [x] Tested with React applications in dev mode
- [x] Verified line numbers match correctly in browser dev tools
- [x] Existing sourcemap tests continue to pass

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-authored-by: Claude <noreply@anthropic.com>
2025-09-17 15:37:09 -07:00
Alistair Smith
c29c69b9b5 types 2025-09-17 13:55:46 -07:00
Ciro Spaciari
d85207f179 fix(Bun.SQL) fix MySQL execution on windows (#22696)
### What does this PR do?
Fixes https://github.com/oven-sh/bun/issues/22695
Fixes https://github.com/oven-sh/bun/issues/22654

### How did you verify your code works?
Added mysql:9 + run mysql tests on windows

<img width="1035" height="708"
alt="489727987-3cca2da4-0ff8-4b4a-b5be-9fbdd1c9862d"
src="https://github.com/user-attachments/assets/02c6880d-547e-43b5-8af8-0b7c895c6166"
/>
2025-09-17 08:46:23 -07:00
robobun
661deb8eaf Fix MessagePort communication after transfer to Worker (#22638)
## Summary

Fixes #22635 - MessagePort communication fails after being transferred
to a Worker thread.
Fixes https://github.com/oven-sh/bun/issues/22636

The issue was that `MessagePort::addEventListener()` only called
`start()` for attribute listeners (like `onmessage = ...`) but not for
regular event listeners added via `addEventListener()` or the Node.js
EventEmitter wrapper (`.on('message', ...)`).

## Changes

- Modified `MessagePort::addEventListener()` to call `start()` for all
message event listeners, not just attribute listeners
- Added regression test for issue #22635

## Test Plan

- [x] Regression test added and passing
- [x] Original reproduction case from issue #22635 now works correctly
- [x] Existing MessagePort tests still pass

🤖 Generated with [Claude Code](https://claude.ai/code)

---------

Co-authored-by: Claude Bot <claude-bot@bun.sh>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
2025-09-17 03:33:14 -07:00
Zack Radisic
916d44fc45 Merge branch 'zack/ssg-3' of github.com:oven-sh/bun into zack/ssg-3 2025-09-16 23:12:15 -07:00
Zack Radisic
421a4f37cd FIX the concurrent request bug 2025-09-16 21:55:05 -07:00
Alistair Smith
d0da7076e6 types 2025-09-16 16:35:41 -07:00
Dylan Conway
041f3e9df0 update security scanner link 2025-09-16 16:31:04 -07:00
Alistair Smith
ea78d564da bump react 2025-09-16 16:29:45 -07:00
Alistair Smith
6338d55f70 continue 2025-09-16 15:56:29 -07:00
Alistair Smith
d3bdc77274 types 2025-09-16 15:56:24 -07:00
Ciro Spaciari
768748ec2d fix(Server) check before downgrade (#22726)
### What does this PR do?
This fix assertion in debug mode, remove flag `has_js_deinited` since
js_value is tagged with finalized and is more reliable
### How did you verify your code works?
run `bun-debug test test/js/bun/http/serve.test.ts`

<img width="514" height="217" alt="Screenshot 2025-09-16 at 14 51 40"
src="https://github.com/user-attachments/assets/6a0e9d9a-eb98-4602-8c62-403a77dfcf76"
/>
2025-09-16 15:39:18 -07:00
Alistair Smith
ecd2fed665 try with redo of react-server-dom-bun 2025-09-16 15:11:22 -07:00
Michael H
31202ec210 In error messages, dim current cwd to help with identifying local code (#22469)
### What does this PR do?

<img width="577" height="273" alt="image"
src="https://github.com/user-attachments/assets/0b20f0a5-45d2-4acf-bb72-85d52f7f1bfb"
/>

not sure if its a good idea though.

### How did you verify your code works?

---------

Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
2025-09-15 23:41:50 -07:00
robobun
344a772ad5 Fix crypto.Sign exception with JWK EC keys and ieee-p1363 encoding (#22668)
Fixes https://github.com/oven-sh/bun/issues/21547

## Summary
- Fixes "Length out of range of buffer" error when using
`crypto.createSign().sign()` with JWK EC keys and `dsaEncoding:
"ieee-p1363"`
- The issue only occurred with the specific combination of JWK format
keys and IEEE P1363 signature encoding

## The Bug
When signing with EC keys in JWK format and requesting IEEE P1363
signature encoding, the code would:
1. Create a DER-encoded signature
2. Convert it to P1363 format (fixed-size raw r||s concatenation)
3. Replace the signature buffer with the P1363 buffer
4. **But incorrectly use the original DER signature length when creating
the final JSUint8Array**

This caused a buffer overflow since P1363 signatures are always 64 bytes
for P-256 curves, while DER signatures vary in length (typically 70-72
bytes).

## The Fix
Track the correct signature length after P1363 conversion and use it
when creating the final JSUint8Array.

## Test Plan
Added comprehensive tests in
`test/js/node/crypto/sign-jwk-ieee-p1363.test.ts` that:
- Verify the original failing case now works
- Test different encoding options (default DER, explicit DER, IEEE
P1363)
- Test with both JWK objects and KeyObject instances
- Verify signature lengths are correct for each format

The tests fail on the current main branch and pass with this fix.

🤖 Generated with [Claude Code](https://claude.ai/code)

---------

Co-authored-by: Claude Bot <claude-bot@bun.sh>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-09-15 23:38:24 -07:00
robobun
dd9d1530da Fix crash when plugin onResolve returns undefined (#22670)
## Summary
Fixes #22199

When a plugin's `onResolve` handler returns `undefined` or `null`, Bun
should continue to the next plugin or use default resolution. However,
the code was crashing with a segmentation fault.

## The Bug
The crash occurred when:
1. A plugin's `onResolve` handler returned `undefined` (especially from
an async function as a fulfilled promise)
2. The code extracted the promise result but didn't check if it was
undefined before expecting it to be an object
3. This caused an improper exception to be thrown, leading to a crash

## The Fix
1. **Main fix**: Added a check for `undefined/null` after extracting the
result from a fulfilled promise, allowing the code to continue to the
next plugin
2. **Promise rejection fix**: Changed rejected promise handling to
return the promise itself instead of throwing an exception (which was
causing hangs)
3. **Exception handling**: Standardized exception throwing throughout
the file to use the proper `throwException` pattern

## Test Plan
Added comprehensive regression tests in
`test/regression/issue/22199.test.ts` that verify:
-  Async function returning `undefined` doesn't crash
-  Async function returning `null` doesn't crash  
-  Sync function returning `undefined` doesn't crash
-  Async function throwing an error properly shows the error

All tests:
- **Fail (crash) with release Bun**: Segmentation fault
- **Pass with this fix**: All test cases pass

## Verification
```bash
# Crashes without the fix
bun test test/regression/issue/22199.test.ts  

# Passes with the fix
bun bd test test/regression/issue/22199.test.ts
```

🤖 Generated with [Claude Code](https://claude.ai/code)

---------

Co-authored-by: Claude Bot <claude-bot@bun.sh>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-09-15 23:37:10 -07:00
Alistair Smith
a09c45396e bun whoami as alias for bun pm whoami (currently reserved) (#22613)
### What does this PR do?

Previously, 'bun whoami' showed a reservation message indicating it was
reserved for future use. This change updates the command to execute 'bun
pm whoami' directly, making it consistent with npm's behavior.

Fixes #22614

Changes:
- Route 'bun whoami' to PackageManagerCommand instead of ReservedCommand
- Update PackageManagerCommand.exec to handle direct 'whoami' invocation

### How did you verify your code works?

- Add tests to verify both 'bun whoami' and 'bun pm whoami' work
correctly

---------

Co-authored-by: Claude Bot <claude-bot@bun.sh>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-09-15 23:36:48 -07:00
Alistair Smith
28447ab578 Refactor HotReloadEvent and comment out unused code in BundleV2
- Updated `HotReloadEvent.zig` to use duplicated strings for extra files to prevent potential memory issues.
- Commented out unused code related to "bun:app" in `bundle_v2.zig` to improve clarity and maintainability.
2025-09-15 21:55:59 -07:00
Alistair Smith
3e798f1787 type only import 2025-09-15 21:24:12 -07:00
Alistair Smith
a64f073ad3 minimize 2025-09-15 21:13:45 -07:00
Alistair Smith
bb19610f0d Update Bun framework to use react-server-dom-webpack and upgrade dependencies
- Changed module imports from "react-server-dom-bun" to "react-server-dom-webpack" in multiple files.
- Updated dependencies in package.json and bun.lock to use newer versions of React, React DOM, React Refresh, and the new react-server-dom-webpack package.
- Adjusted type definitions in bun-types to reflect changes in import sources.

This update enhances compatibility with the latest React features and improves the overall framework structure.
2025-09-15 21:00:46 -07:00
Alistair Smith
ed4a887047 Merge branch 'zack/ssg-3' into ali/react 2025-09-15 16:38:40 -07:00
Alistair Smith
894a654e26 print errors during framework resolution 2025-09-15 16:38:27 -07:00
Zack Radisic
99dd08bccb Merge branch 'main' into zack/ssg-3 2025-09-15 16:26:34 -07:00
Alistair Smith
7339d1841b specify absolute path 2025-09-15 15:15:52 -07:00
Alistair Smith
1217e87379 remove builtInModules in zig 2025-09-15 15:07:32 -07:00
Alistair Smith
704661e96f remove support for builtInModules 2025-09-15 15:05:32 -07:00
robobun
0351bd5f28 Fix zstd decompression truncation for multi-frame responses (#22680)
## Summary

Fixes #20053

When a server sends zstd-compressed data with chunked transfer encoding,
each chunk may be compressed as a separate zstd frame. Previously, Bun's
zstd decompressor would stop after the first frame, causing responses to
be truncated at 16KB.

## The Fix

The fix modifies the zstd decompressor (`src/deps/zstd.zig`) to continue
decompression when a frame completes but input data remains. When
`ZSTD_decompressStream` returns 0 (frame complete), we now check if
there's more input data and reinitialize the decompressor to handle the
next frame.

## Testing

Added regression tests in `test/regression/issue/20053.test.ts` that:
1. Test multi-frame zstd decompression where two frames need to be
concatenated
2. Simulate the exact Hono + compression middleware scenario from the
original issue

Both tests fail without the fix (truncating at 16KB) and pass with the
fix.

## Verification

```bash
# Without fix (regular bun):
$ bun test test/regression/issue/20053.test.ts
 0 pass
 2 fail

# With fix (debug build):
$ bun bd test test/regression/issue/20053.test.ts  
 2 pass
 0 fail
```

🤖 Generated with [Claude Code](https://claude.ai/code)

---------

Co-authored-by: Claude Bot <claude-bot@bun.sh>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-09-15 14:24:03 -07:00
autofix-ci[bot]
8e659b2dc8 [autofix.ci] apply automated fixes 2025-09-15 20:44:31 +00:00
Alistair Smith
93007de396 Merge branch 'zack/ssg-3' of github.com:oven-sh/bun into ali/react 2025-09-15 13:39:44 -07:00
robobun
0ec153ee1c docs: Add TypeScript support documentation for YAML imports (#22675) 2025-09-15 00:30:59 -07:00
Jarred Sumner
6397654e22 Bump 2025-09-14 18:48:26 -07:00
Jarred Sumner
6bafe2602e Fix Windows shell crash with && operator and external commands (#22651)
## What does this PR do?

Fixes https://github.com/oven-sh/bun/issues/22650
Fixes https://github.com/oven-sh/bun/issues/22615
Fixes https://github.com/oven-sh/bun/issues/22603
Fixes https://github.com/oven-sh/bun/issues/22602

Fixes a crash that occurred when running shell commands through `bun
run` (package.json scripts) on Windows that use the `&&` operator
followed by an external command.

### The Problem

The minimal reproduction was:
```bash
bun exec 'echo && node --version'
```

This would crash with: `panic(main thread): attempt to use null value`

### Root Causes

Two issues were causing the crash:

1. **Missing top_level_dir**: When `runPackageScriptForeground` creates
a MiniEventLoop for running package scripts, it wasn't setting the
`top_level_dir` field. This caused a null pointer dereference when the
shell tried to access it.

2. **MovableIfWindowsFd handling**: After PR #21800 introduced
`MovableIfWindowsFd` to handle file descriptor ownership on Windows, the
`IOWriter.fd` could be moved to libuv, leaving it null. When the shell
tried to spawn an external command after a `&&` operator, it would crash
trying to access this null fd.

### The Fix

1. Set `mini.top_level_dir = cwd` after initializing the MiniEventLoop
in `run_command.zig`
2. In `IO.zig`, when the fd has been moved to libuv (is null), use
`.inherit` for stdio instead of trying to pass the null fd

### How did you verify your code works?

- Added a regression test that reproduces the issue
- Verified the test fails without the fix and passes with it
- Tested the minimal reproduction command directly
- The fix correctly allows both commands in the `&&` chain to execute

```bash
# Before fix: crashes
> bun exec 'echo test && node --version'
panic(main thread): attempt to use null value

# After fix: works correctly
> bun exec 'echo test && node --version'
test
v22.4.1
```
<sub>
also probably fixes #22615 and fixes #22603 and fixes #22602
</sub>

---------

Co-authored-by: Zack Radisic <zack@theradisic.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
bun-v1.2.22
2025-09-14 04:14:48 -07:00
Jarred Sumner
9411c62756 Make the bundler tests use the API by default in most cases (#22646)
### What does this PR do?

This branch:
> Ran 1600 tests across 46 files. [63.24s]

Main:
> Ran 1600 tests across 46 files. [137.05s]

This makes the bundler tests run about 60 seconds faster 

### How did you verify your code works?
2025-09-14 02:27:53 -07:00
Jarred Sumner
8614b98f6b Disable glibcxx assertions in WebKit release non-asan builds (#22647)
### What does this PR do?

Evidently, Ubuntu turns them on by default. 

Claude:
```
> What is the typical overhead for glibcxx assertions?

⏺ The overhead of glibc/libstdc++ assertions can be significant, especially in
  performance-critical code:

  Typical Overhead Ranges:

  libstdc++ (C++ standard library) assertions:
  - 5-15% overall performance impact in typical applications
  - Up to 30-50% in container-heavy code (vectors, maps, etc.)
  - Iterator validity checks are particularly expensive

  glibc (C library) assertions:
  - 2-8% overall impact in typical applications
  - Up to 20% in malloc/free intensive code
  - Heap consistency checks, buffer overflow detection
 ```
2025-09-14 02:25:23 -07:00
Jarred Sumner
ecd23df4ca Fix banner positioning with --format=cjs --target=bun (#22641)
## Summary
- Fixes incorrect banner positioning when using `--banner` with
`--format=cjs` and `--target=bun`
- Ensures Bun-specific comments (`// @bun @bun-cjs`) appear before user
banner content
- Properly extracts and positions hashbangs from banner content

## Problem
When using `--banner` with `--format=cjs --target=bun`, the banner was
incorrectly placed before the `// @bun @bun-cjs` comment and CJS wrapper
function, breaking the module format that Bun expects.

## Solution
Implemented proper ordering:
1. **Hashbang** (from source file or extracted from banner if it starts
with `#!`)
2. **@bun comments** (e.g., `// @bun`, `// @bun @bun-cjs`, `// @bun
@bytecode`)
3. **CJS wrapper** `(function(exports, require, module, __filename,
__dirname) {`
4. **Banner content** (excluding any extracted hashbang)

## Test plan
- [x] Added comprehensive tests for banner positioning with CJS/ESM and
Bun target
- [x] Tests cover hashbang extraction from banners
- [x] Tests verify proper ordering with bytecode generation
- [x] All existing tests pass

🤖 Generated with [Claude Code](https://claude.ai/code)

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-09-14 01:01:22 -07:00
Zack Radisic
2166f0c200 Merge branch 'main' into zack/ssg-3 2025-09-13 18:43:47 -07:00
Jarred Sumner
3d8139dc27 fix(bundler): propagate TLA through importers (#22229)
(For internal tracking: fixes ENG-20351)

---------

Co-authored-by: Dylan Conway <dylan.conway567@gmail.com>
Co-authored-by: Claude Bot <claude-bot@bun.sh>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: taylor.fish <contact@taylor.fish>
2025-09-13 16:15:03 -07:00
Ciro Spaciari
beea7180f3 refactor(MySQL) (#22619)
### What does this PR do?

### How did you verify your code works?

---------

Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-09-13 14:52:19 -07:00