bun-types 1.2.12-canary.20250502T140709 → 1.2.12
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 +6 -0
- package/docs/api/fetch.md +1 -1
- package/docs/api/spawn.md +1 -1
- package/docs/bundler/fullstack.md +28 -0
- package/docs/bundler/html.md +12 -1
- package/docs/cli/publish.md +1 -1
- package/docs/guides/ecosystem/nuxt.md +1 -1
- package/docs/guides/install/add-peer.md +2 -2
- package/docs/guides/install/from-npm-install-to-bun-install.md +1 -1
- package/docs/guides/test/run-tests.md +3 -3
- package/docs/guides/test/snapshot.md +3 -3
- package/docs/guides/test/update-snapshots.md +1 -1
- package/docs/guides/util/version.md +1 -1
- package/docs/installation.md +4 -4
- package/docs/project/asan.md +124 -0
- package/docs/runtime/debugger.md +3 -3
- package/docs/test/dom.md +1 -1
- package/package.json +1 -1
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
|
|
340
|
+
[fetch] > User-Agent: Bun/1.2.12
|
|
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
|
|
123
|
+
console.log(text); // => "1.2.12"
|
|
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
|
|
package/docs/bundler/html.md
CHANGED
|
@@ -194,6 +194,18 @@ import "tailwindcss";
|
|
|
194
194
|
|
|
195
195
|
Only one of those are necessary, not all three.
|
|
196
196
|
|
|
197
|
+
### Echo console logs from browser to 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 ./index.html --console" path="./index.html --console" routes="" /%}
|
|
204
|
+
|
|
205
|
+
Each call to `console.log` or `console.error` will be broadcast to the terminal that started the server. This is useful to see errors from the browser in the same place you run your server. This is also useful for AI agents that watch terminal output.
|
|
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.
|
package/docs/cli/publish.md
CHANGED
|
@@ -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
|
|
12
|
+
bun install v1.2.12 (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
|
|
19
|
+
+ "@types/bun": "^1.2.12"
|
|
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
|
|
31
|
+
"@types/bun": "^1.2.12"
|
|
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
|
|
100
|
+
$ bun update @types/bun@1.2.12
|
|
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
|
|
24
|
+
bun test v1.2.12 (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
|
|
50
|
+
bun test v1.2.12 (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
|
|
88
|
+
bun test v1.2.12 (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
|
|
21
|
+
bun test v1.2.12 (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
|
|
64
|
+
bun test v1.2.12 (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
|
|
81
|
+
bun test v1.2.12 (9c68abdb)
|
|
82
82
|
|
|
83
83
|
test/snap.test.ts:
|
|
84
84
|
✓ snapshot [0.86ms]
|
package/docs/installation.md
CHANGED
|
@@ -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
|
|
17
|
+
$ curl -fsSL https://bun.sh/install | bash -s "bun-v1.2.12"
|
|
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
|
|
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`.
|
|
193
193
|
|
|
194
194
|
```sh
|
|
195
|
-
$ curl -fsSL https://bun.sh/install | bash -s "bun-v1.2.12
|
|
195
|
+
$ curl -fsSL https://bun.sh/install | bash -s "bun-v1.2.12"
|
|
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
|
|
204
|
+
$ iex "& {$(irm https://bun.sh/install.ps1)} -Version 1.2.12"
|
|
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
|
package/docs/runtime/debugger.md
CHANGED
|
@@ -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
|
|
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" -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
|
|
131
|
+
[fetch] > User-Agent: Bun/1.2.12
|
|
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
|
|
173
|
+
[fetch] > User-Agent: Bun/1.2.12
|
|
174
174
|
[fetch] > Accept: */*
|
|
175
175
|
[fetch] > Host: example.com
|
|
176
176
|
[fetch] > Accept-Encoding: gzip, deflate, br
|
package/docs/test/dom.md
CHANGED
package/package.json
CHANGED