bun-types 1.2.12-canary.20250502T140709 → 1.2.12-canary.20250503T140622

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bun.d.ts CHANGED
@@ -3258,6 +3258,12 @@ declare module "bun" {
3258
3258
  *
3259
3259
  */
3260
3260
  hmr?: boolean;
3261
+
3262
+ /**
3263
+ * Enable console log streaming from browser to server
3264
+ * @default false
3265
+ */
3266
+ console?: boolean;
3261
3267
  };
3262
3268
 
3263
3269
  error?: (this: Server, error: ErrorLike) => Response | Promise<Response> | void | Promise<void>;
package/docs/api/fetch.md CHANGED
@@ -337,7 +337,7 @@ This will print the request and response headers to your terminal:
337
337
  ```sh
338
338
  [fetch] > HTTP/1.1 GET http://example.com/
339
339
  [fetch] > Connection: keep-alive
340
- [fetch] > User-Agent: Bun/1.2.12-canary.20250502T140709
340
+ [fetch] > User-Agent: Bun/1.2.12-canary.20250503T140622
341
341
  [fetch] > Accept: */*
342
342
  [fetch] > Host: example.com
343
343
  [fetch] > Accept-Encoding: gzip, deflate, br
package/docs/api/spawn.md CHANGED
@@ -120,7 +120,7 @@ You can read results from the subprocess via the `stdout` and `stderr` propertie
120
120
  ```ts
121
121
  const proc = Bun.spawn(["bun", "--version"]);
122
122
  const text = await new Response(proc.stdout).text();
123
- console.log(text); // => "1.2.12-canary.20250502T140709"
123
+ console.log(text); // => "1.2.12-canary.20250503T140622"
124
124
  ```
125
125
 
126
126
  Configure the output stream by passing one of the following values to `stdout/stderr`:
@@ -203,6 +203,34 @@ When `development` is `true`, Bun will:
203
203
  - Include the `SourceMap` header in the response so that devtools can show the original source code
204
204
  - Disable minification
205
205
  - Re-bundle assets on each request to a .html file
206
+ - Enable hot module reloading (unless `hmr: false` is set)
207
+
208
+ #### Echo console logs from browser to terminal
209
+
210
+ Bun.serve() supports echoing console logs from the browser to the terminal.
211
+
212
+ To enable this, pass `console: true` in the `development` object in `Bun.serve()`.
213
+
214
+ ```ts
215
+ import homepage from "./index.html";
216
+
217
+ Bun.serve({
218
+ // development can also be an object.
219
+ development: {
220
+ // Enable Hot Module Reloading
221
+ hmr: true,
222
+
223
+ // Echo console logs from the browser to the terminal
224
+ console: true,
225
+ },
226
+
227
+ routes: {
228
+ "/": homepage,
229
+ },
230
+ });
231
+ ```
232
+
233
+ When `console: true` is set, Bun will stream console logs from the browser to the terminal. This reuses the existing WebSocket connection from HMR to send the logs.
206
234
 
207
235
  #### Production mode
208
236
 
@@ -194,6 +194,18 @@ import "tailwindcss";
194
194
 
195
195
  Only one of those are necessary, not all three.
196
196
 
197
+ ## `--console` streams console logs from the browser to the terminal
198
+
199
+ Bun's dev server supports streaming console logs from the browser to the terminal.
200
+
201
+ To enable, pass the `--console` CLI flag.
202
+
203
+ {% bunDevServerTerminal alt="bun --console ./index.html" path="./index.html" routes="" /%}
204
+
205
+ Each call to `console.log` or `console.error` will be broadcast to the terminal that started the server.
206
+
207
+ Internally, this reuses the existing WebSocket connection from hot module reloading to send the logs.
208
+
197
209
  ## Keyboard Shortcuts
198
210
 
199
211
  While the server is running:
@@ -288,7 +300,6 @@ All paths are resolved relative to your HTML file, making it easy to organize yo
288
300
 
289
301
  ## This is a work in progress
290
302
 
291
- - No HMR support yet
292
303
  - Need more plugins
293
304
  - Need more configuration options for things like asset handling
294
305
  - Need a way to configure CORS, headers, etc.
@@ -7,7 +7,7 @@ Use `bun publish` to publish a package to the npm registry.
7
7
  $ bun publish
8
8
 
9
9
  ## Output
10
- bun publish v1.2.12-canary.20250502T140709 (ca7428e9)
10
+ bun publish v1.2.12-canary.20250503T140622 (ca7428e9)
11
11
 
12
12
  packed 203B package.json
13
13
  packed 224B README.md
@@ -9,7 +9,7 @@ $ bunx nuxi init my-nuxt-app
9
9
  ✔ Which package manager would you like to use?
10
10
  bun
11
11
  ◐ Installing dependencies...
12
- bun install v1.2.12-canary.20250502T140709 (16b4bf34)
12
+ bun install v1.2.12-canary.20250503T140622 (16b4bf34)
13
13
  + @nuxt/devtools@0.8.2
14
14
  + nuxt@3.7.0
15
15
  785 packages installed [2.67s]
@@ -16,7 +16,7 @@ This will add the package to `peerDependencies` in `package.json`.
16
16
  ```json-diff
17
17
  {
18
18
  "peerDependencies": {
19
- + "@types/bun": "^1.2.12-canary.20250502T140709"
19
+ + "@types/bun": "^1.2.12-canary.20250503T140622"
20
20
  }
21
21
  }
22
22
  ```
@@ -28,7 +28,7 @@ Running `bun install` will install peer dependencies by default, unless marked o
28
28
  ```json-diff
29
29
  {
30
30
  "peerDependencies": {
31
- "@types/bun": "^1.2.12-canary.20250502T140709"
31
+ "@types/bun": "^1.2.12-canary.20250503T140622"
32
32
  },
33
33
  "peerDependenciesMeta": {
34
34
  + "@types/bun": {
@@ -97,7 +97,7 @@ $ bun update
97
97
  $ bun update @types/bun --latest
98
98
 
99
99
  # Update a dependency to a specific version
100
- $ bun update @types/bun@1.2.12-canary.20250502T140709
100
+ $ bun update @types/bun@1.2.12-canary.20250503T140622
101
101
 
102
102
  # Update all dependencies to the latest versions
103
103
  $ bun update --latest
@@ -21,7 +21,7 @@ Here's what the output of a typical test run looks like. In this case, there are
21
21
 
22
22
  ```sh
23
23
  $ bun test
24
- bun test v1.2.12-canary.20250502T140709 (9c68abdb)
24
+ bun test v1.2.12-canary.20250503T140622 (9c68abdb)
25
25
 
26
26
  test.test.js:
27
27
  ✓ add [0.87ms]
@@ -47,7 +47,7 @@ To only run certain test files, pass a positional argument to `bun test`. The ru
47
47
 
48
48
  ```sh
49
49
  $ bun test test3
50
- bun test v1.2.12-canary.20250502T140709 (9c68abdb)
50
+ bun test v1.2.12-canary.20250503T140622 (9c68abdb)
51
51
 
52
52
  test3.test.js:
53
53
  ✓ add [1.40ms]
@@ -85,7 +85,7 @@ Adding `-t add` will only run tests with "add" in the name. This works with test
85
85
 
86
86
  ```sh
87
87
  $ bun test -t add
88
- bun test v1.2.12-canary.20250502T140709 (9c68abdb)
88
+ bun test v1.2.12-canary.20250503T140622 (9c68abdb)
89
89
 
90
90
  test.test.js:
91
91
  ✓ add [1.79ms]
@@ -18,7 +18,7 @@ The first time this test is executed, Bun will evaluate the value passed into `e
18
18
 
19
19
  ```sh
20
20
  $ bun test test/snap
21
- bun test v1.2.12-canary.20250502T140709 (9c68abdb)
21
+ bun test v1.2.12-canary.20250503T140622 (9c68abdb)
22
22
 
23
23
  test/snap.test.ts:
24
24
  ✓ snapshot [1.48ms]
@@ -61,7 +61,7 @@ Later, when this test file is executed again, Bun will read the snapshot file an
61
61
 
62
62
  ```sh
63
63
  $ bun test
64
- bun test v1.2.12-canary.20250502T140709 (9c68abdb)
64
+ bun test v1.2.12-canary.20250503T140622 (9c68abdb)
65
65
 
66
66
  test/snap.test.ts:
67
67
  ✓ snapshot [1.05ms]
@@ -78,7 +78,7 @@ To update snapshots, use the `--update-snapshots` flag.
78
78
 
79
79
  ```sh
80
80
  $ bun test --update-snapshots
81
- bun test v1.2.12-canary.20250502T140709 (9c68abdb)
81
+ bun test v1.2.12-canary.20250503T140622 (9c68abdb)
82
82
 
83
83
  test/snap.test.ts:
84
84
  ✓ snapshot [0.86ms]
@@ -29,7 +29,7 @@ To regenerate snapshots, use the `--update-snapshots` flag.
29
29
 
30
30
  ```sh
31
31
  $ bun test --update-snapshots
32
- bun test v1.2.12-canary.20250502T140709 (9c68abdb)
32
+ bun test v1.2.12-canary.20250503T140622 (9c68abdb)
33
33
 
34
34
  test/snap.test.ts:
35
35
  ✓ snapshot [0.86ms]
@@ -5,7 +5,7 @@ name: Get the current Bun version
5
5
  Get the current version of Bun in a semver format.
6
6
 
7
7
  ```ts#index.ts
8
- Bun.version; // => "1.2.12-canary.20250502T140709"
8
+ Bun.version; // => "1.2.12-canary.20250503T140622"
9
9
  ```
10
10
 
11
11
  ---
@@ -14,7 +14,7 @@ Kernel version 5.6 or higher is strongly recommended, but the minimum is 5.1. Us
14
14
  ```bash#macOS/Linux_(curl)
15
15
  $ curl -fsSL https://bun.sh/install | bash # for macOS, Linux, and WSL
16
16
  # to install a specific version
17
- $ curl -fsSL https://bun.sh/install | bash -s "bun-v1.2.12-canary.20250502T140709"
17
+ $ curl -fsSL https://bun.sh/install | bash -s "bun-v1.2.12-canary.20250503T140622"
18
18
  ```
19
19
 
20
20
  ```bash#npm
@@ -189,10 +189,10 @@ Since Bun is a single binary, you can install older versions of Bun by re-runnin
189
189
 
190
190
  ### Installing a specific version of Bun on Linux/Mac
191
191
 
192
- To install a specific version of Bun, you can pass the git tag of the version you want to install to the install script, such as `bun-v1.2.0` or `bun-v1.2.12-canary.20250502T140709`.
192
+ To install a specific version of Bun, you can pass the git tag of the version you want to install to the install script, such as `bun-v1.2.0` or `bun-v1.2.12-canary.20250503T140622`.
193
193
 
194
194
  ```sh
195
- $ curl -fsSL https://bun.sh/install | bash -s "bun-v1.2.12-canary.20250502T140709"
195
+ $ curl -fsSL https://bun.sh/install | bash -s "bun-v1.2.12-canary.20250503T140622"
196
196
  ```
197
197
 
198
198
  ### Installing a specific version of Bun on Windows
@@ -201,7 +201,7 @@ On Windows, you can install a specific version of Bun by passing the version num
201
201
 
202
202
  ```sh
203
203
  # PowerShell:
204
- $ iex "& {$(irm https://bun.sh/install.ps1)} -Version 1.2.12-canary.20250502T140709"
204
+ $ iex "& {$(irm https://bun.sh/install.ps1)} -Version 1.2.12-canary.20250503T140622"
205
205
  ```
206
206
 
207
207
  ## Downloading Bun binaries directly
@@ -0,0 +1,124 @@
1
+ # ASAN Builds for Bun
2
+
3
+ This document explains how to use and configure ASAN (Address Sanitizer) builds for Bun.
4
+
5
+ > **Note**: ASAN builds are available in CI for Linux and are configured to help identify memory issues in release builds.
6
+
7
+ ## What is ASAN?
8
+
9
+ ASAN (Address Sanitizer) is a memory error detector for C/C++ and Zig code. It can detect:
10
+
11
+ - Use-after-free
12
+ - Heap buffer overflow
13
+ - Stack buffer overflow
14
+ - Global buffer overflow
15
+ - Use-after-return
16
+ - Use-after-scope
17
+ - Initialization order bugs
18
+ - Memory leaks
19
+
20
+ ## ASAN Builds in CI
21
+
22
+ Bun CI includes ASAN builds to catch memory errors. These builds are configured with:
23
+
24
+ - Release optimizations for speed
25
+ - ASAN instrumentation for memory error detection
26
+ - Assertions enabled for both Bun and WebKit
27
+
28
+ The CI pipeline automatically:
29
+
30
+ - Builds a special ASAN-enabled release build for Linux
31
+ - Runs all tests to thoroughly check for memory issues
32
+ - Uses reduced parallelism to avoid memory pressure during testing
33
+ - Applies suppressions for known false positives
34
+ - Extends test timeouts to accommodate ASAN overhead
35
+ - Includes ASAN builds in release artifacts for debugging purposes
36
+
37
+ ## Local ASAN Builds
38
+
39
+ To build Bun with ASAN locally, you can use the npm script:
40
+
41
+ ```bash
42
+ # Build a release build with ASAN and assertions (recommended)
43
+ bun run build:asan
44
+ ```
45
+
46
+ Or manually with CMake:
47
+
48
+ ```bash
49
+ # Debug build with ASAN
50
+ cmake -B build -DCMAKE_BUILD_TYPE=Debug -DENABLE_ASAN=ON
51
+
52
+ # Release build with ASAN
53
+ cmake -B build -DCMAKE_BUILD_TYPE=Release -DENABLE_ASAN=ON
54
+
55
+ # Release build with ASAN and assertions
56
+ cmake -B build -DCMAKE_BUILD_TYPE=Release -DENABLE_ASAN=ON -DENABLE_ASSERTIONS=ON
57
+ ```
58
+
59
+ ## Running with ASAN
60
+
61
+ When running an ASAN build, you can configure behavior with environment variables:
62
+
63
+ ```bash
64
+ # Basic ASAN options - leak detection disabled (recommended)
65
+ ASAN_OPTIONS=detect_leaks=0:halt_on_error=0:detect_odr_violation=0 ./build/bun-asan
66
+
67
+ # If you really need leak detection (will produce A LOT of noise)
68
+ # ASAN_OPTIONS=detect_leaks=1:leak_check_at_exit=1:halt_on_error=0 ./build/bun-asan
69
+ # LSAN_OPTIONS=suppressions=lsan.supp:print_suppressions=1 ./build/bun-asan
70
+ ```
71
+
72
+ > **Warning**: Enabling leak detection will generate excessive noise due to deliberately uncollected memory in WebKit and other components. It's recommended to keep leak detection disabled and focus on other memory errors like use-after-free, buffer overflows, etc.
73
+
74
+ ## Other Memory Error Types
75
+
76
+ ASAN can detect several types of memory errors:
77
+
78
+ 1. **Use-after-free**: When a program continues to use memory after it's been freed
79
+ 2. **Buffer overflow**: When a program writes beyond the bounds of allocated memory
80
+ 3. **Stack overflow**: When a function's stack usage exceeds available space
81
+ 4. **Memory corruption**: Often caused by writing to invalid memory locations
82
+ 5. **Use-after-return**: When a function returns a pointer to stack memory that's no longer valid
83
+
84
+ When an error is detected, ASAN will print a helpful report showing:
85
+
86
+ - The type of error
87
+ - The memory address where the error occurred
88
+ - A stack trace showing the code path that led to the error
89
+ - Information about the memory allocation/deallocation (if relevant)
90
+
91
+ Example error output:
92
+
93
+ ```
94
+ ==1234==ERROR: AddressSanitizer: heap-use-after-free on address 0x614000000044 at pc 0x55d8e2ac1f14...
95
+ READ of size 4 at 0x614000000044 thread T0
96
+ #0 0x55d8e2ac1f14 in main example.c:10
97
+ #1 0x7f91e6f5e0b2 in __libc_start_main...
98
+ ```
99
+
100
+ ## Understanding ASAN Reports
101
+
102
+ ASAN reports contain detailed information about memory errors:
103
+
104
+ ```
105
+ ==12345==ERROR: AddressSanitizer: heap-use-after-free on address 0x7f7ddab8c084
106
+ READ of size 4 at 0x7f7ddab8c084 thread T0
107
+ #0 0x43b45a in Function source/file.cpp:123:45
108
+ #1 0x44af90 in AnotherFunction source/file.cpp:234:10
109
+ ...
110
+ ```
111
+
112
+ Key components of the report:
113
+
114
+ - Error type (heap-use-after-free, heap-buffer-overflow, etc.)
115
+ - Operation (READ/WRITE) and size
116
+ - Stack trace showing where the error occurred
117
+ - Information about the allocated/freed memory
118
+
119
+ ## Best Practices
120
+
121
+ 1. Run tests with ASAN builds regularly
122
+ 2. Add suppressions only for well-understood false positives
123
+ 3. Fix real issues promptly - ASAN errors indicate real problems
124
+ 4. Consider using ASAN in debug builds during development
@@ -124,11 +124,11 @@ await fetch("https://example.com", {
124
124
  This prints the `fetch` request as a single-line `curl` command to let you copy-paste into your terminal to replicate the request.
125
125
 
126
126
  ```sh
127
- [fetch] $ curl --http1.1 "https://example.com/" -X POST -H "content-type: application/json" -H "Connection: keep-alive" -H "User-Agent: Bun/1.2.12-canary.20250502T140709" -H "Accept: */*" -H "Host: example.com" -H "Accept-Encoding: gzip, deflate, br" --compressed -H "Content-Length: 13" --data-raw "{\"foo\":\"bar\"}"
127
+ [fetch] $ curl --http1.1 "https://example.com/" -X POST -H "content-type: application/json" -H "Connection: keep-alive" -H "User-Agent: Bun/1.2.12-canary.20250503T140622" -H "Accept: */*" -H "Host: example.com" -H "Accept-Encoding: gzip, deflate, br" --compressed -H "Content-Length: 13" --data-raw "{\"foo\":\"bar\"}"
128
128
  [fetch] > HTTP/1.1 POST https://example.com/
129
129
  [fetch] > content-type: application/json
130
130
  [fetch] > Connection: keep-alive
131
- [fetch] > User-Agent: Bun/1.2.12-canary.20250502T140709
131
+ [fetch] > User-Agent: Bun/1.2.12-canary.20250503T140622
132
132
  [fetch] > Accept: */*
133
133
  [fetch] > Host: example.com
134
134
  [fetch] > Accept-Encoding: gzip, deflate, br
@@ -170,7 +170,7 @@ This prints the following to the console:
170
170
  [fetch] > HTTP/1.1 POST https://example.com/
171
171
  [fetch] > content-type: application/json
172
172
  [fetch] > Connection: keep-alive
173
- [fetch] > User-Agent: Bun/1.2.12-canary.20250502T140709
173
+ [fetch] > User-Agent: Bun/1.2.12-canary.20250503T140622
174
174
  [fetch] > Accept: */*
175
175
  [fetch] > Host: example.com
176
176
  [fetch] > Accept-Encoding: gzip, deflate, br
package/docs/test/dom.md CHANGED
@@ -55,7 +55,7 @@ Let's run this test with `bun test`:
55
55
 
56
56
  ```bash
57
57
  $ bun test
58
- bun test v1.2.12-canary.20250502T140709
58
+ bun test v1.2.12-canary.20250503T140622
59
59
 
60
60
  dom.test.ts:
61
61
  ✓ dom test [0.82ms]
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.2.12-canary.20250502T140709",
2
+ "version": "1.2.12-canary.20250503T140622",
3
3
  "name": "bun-types",
4
4
  "license": "MIT",
5
5
  "types": "./index.d.ts",