bun-types 1.3.2-canary.20251104T140728 → 1.3.2-canary.20251106T140813

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.
Files changed (312) hide show
  1. package/bun.d.ts +4 -4
  2. package/docs/README.md +28 -0
  3. package/globals.d.ts +0 -1
  4. package/overrides.d.ts +45 -15
  5. package/package.json +1 -1
  6. package/test.d.ts +1 -1
  7. package/docs/api/binary-data.md +0 -1038
  8. package/docs/api/cc.md +0 -197
  9. package/docs/api/color.md +0 -262
  10. package/docs/api/console.md +0 -57
  11. package/docs/api/cookie.md +0 -449
  12. package/docs/api/dns.md +0 -110
  13. package/docs/api/fetch.md +0 -463
  14. package/docs/api/ffi.md +0 -557
  15. package/docs/api/file-io.md +0 -366
  16. package/docs/api/file-system-router.md +0 -112
  17. package/docs/api/file.md +0 -19
  18. package/docs/api/glob.md +0 -178
  19. package/docs/api/globals.md +0 -387
  20. package/docs/api/hashing.md +0 -319
  21. package/docs/api/html-rewriter.md +0 -334
  22. package/docs/api/http.md +0 -1408
  23. package/docs/api/import-meta.md +0 -69
  24. package/docs/api/node-api.md +0 -14
  25. package/docs/api/redis.md +0 -597
  26. package/docs/api/s3.md +0 -850
  27. package/docs/api/secrets.md +0 -319
  28. package/docs/api/semver.md +0 -52
  29. package/docs/api/spawn.md +0 -582
  30. package/docs/api/sql.md +0 -1374
  31. package/docs/api/sqlite.md +0 -694
  32. package/docs/api/streams.md +0 -230
  33. package/docs/api/tcp.md +0 -221
  34. package/docs/api/transpiler.md +0 -276
  35. package/docs/api/udp.md +0 -123
  36. package/docs/api/utils.md +0 -891
  37. package/docs/api/websockets.md +0 -573
  38. package/docs/api/workers.md +0 -322
  39. package/docs/api/yaml.md +0 -668
  40. package/docs/benchmarks.md +0 -120
  41. package/docs/bun-flavored-toml.md +0 -42
  42. package/docs/bundler/css.md +0 -1028
  43. package/docs/bundler/css_modules.md +0 -145
  44. package/docs/bundler/executables.md +0 -626
  45. package/docs/bundler/fullstack.md +0 -418
  46. package/docs/bundler/hmr.md +0 -234
  47. package/docs/bundler/html.md +0 -349
  48. package/docs/bundler/index.md +0 -1735
  49. package/docs/bundler/intro.md +0 -75
  50. package/docs/bundler/loaders.md +0 -410
  51. package/docs/bundler/macros.md +0 -329
  52. package/docs/bundler/plugins.md +0 -449
  53. package/docs/bundler/vs-esbuild.md +0 -1127
  54. package/docs/cli/add.md +0 -173
  55. package/docs/cli/bun-completions.md +0 -3
  56. package/docs/cli/bun-create.md +0 -338
  57. package/docs/cli/bun-install.md +0 -349
  58. package/docs/cli/bun-upgrade.md +0 -39
  59. package/docs/cli/bunx.md +0 -89
  60. package/docs/cli/filter.md +0 -90
  61. package/docs/cli/info.md +0 -65
  62. package/docs/cli/init.md +0 -85
  63. package/docs/cli/install.md +0 -344
  64. package/docs/cli/link.md +0 -40
  65. package/docs/cli/outdated.md +0 -90
  66. package/docs/cli/patch-commit.md +0 -11
  67. package/docs/cli/pm.md +0 -285
  68. package/docs/cli/publish.md +0 -120
  69. package/docs/cli/remove.md +0 -7
  70. package/docs/cli/run.md +0 -261
  71. package/docs/cli/test.md +0 -397
  72. package/docs/cli/unlink.md +0 -9
  73. package/docs/cli/update.md +0 -129
  74. package/docs/cli/why.md +0 -67
  75. package/docs/contributing/upgrading-webkit.md +0 -57
  76. package/docs/ecosystem/elysia.md +0 -24
  77. package/docs/ecosystem/express.md +0 -37
  78. package/docs/ecosystem/hono.md +0 -18
  79. package/docs/ecosystem/react.md +0 -65
  80. package/docs/ecosystem/stric.md +0 -38
  81. package/docs/guides/binary/arraybuffer-to-array.md +0 -27
  82. package/docs/guides/binary/arraybuffer-to-blob.md +0 -24
  83. package/docs/guides/binary/arraybuffer-to-buffer.md +0 -25
  84. package/docs/guides/binary/arraybuffer-to-string.md +0 -15
  85. package/docs/guides/binary/arraybuffer-to-typedarray.md +0 -39
  86. package/docs/guides/binary/blob-to-arraybuffer.md +0 -14
  87. package/docs/guides/binary/blob-to-dataview.md +0 -14
  88. package/docs/guides/binary/blob-to-stream.md +0 -14
  89. package/docs/guides/binary/blob-to-string.md +0 -15
  90. package/docs/guides/binary/blob-to-typedarray.md +0 -14
  91. package/docs/guides/binary/buffer-to-arraybuffer.md +0 -14
  92. package/docs/guides/binary/buffer-to-blob.md +0 -14
  93. package/docs/guides/binary/buffer-to-readablestream.md +0 -41
  94. package/docs/guides/binary/buffer-to-string.md +0 -25
  95. package/docs/guides/binary/buffer-to-typedarray.md +0 -14
  96. package/docs/guides/binary/dataview-to-string.md +0 -15
  97. package/docs/guides/binary/typedarray-to-arraybuffer.md +0 -25
  98. package/docs/guides/binary/typedarray-to-blob.md +0 -16
  99. package/docs/guides/binary/typedarray-to-buffer.md +0 -14
  100. package/docs/guides/binary/typedarray-to-dataview.md +0 -14
  101. package/docs/guides/binary/typedarray-to-readablestream.md +0 -41
  102. package/docs/guides/binary/typedarray-to-string.md +0 -16
  103. package/docs/guides/deployment/railway.md +0 -157
  104. package/docs/guides/ecosystem/astro.md +0 -72
  105. package/docs/guides/ecosystem/discordjs.md +0 -77
  106. package/docs/guides/ecosystem/docker.md +0 -140
  107. package/docs/guides/ecosystem/drizzle.md +0 -185
  108. package/docs/guides/ecosystem/edgedb.md +0 -228
  109. package/docs/guides/ecosystem/elysia.md +0 -31
  110. package/docs/guides/ecosystem/express.md +0 -40
  111. package/docs/guides/ecosystem/hono.md +0 -39
  112. package/docs/guides/ecosystem/mongoose.md +0 -87
  113. package/docs/guides/ecosystem/neon-drizzle.md +0 -220
  114. package/docs/guides/ecosystem/neon-serverless-postgres.md +0 -55
  115. package/docs/guides/ecosystem/nextjs.md +0 -49
  116. package/docs/guides/ecosystem/nuxt.md +0 -56
  117. package/docs/guides/ecosystem/pm2.md +0 -57
  118. package/docs/guides/ecosystem/prisma.md +0 -141
  119. package/docs/guides/ecosystem/qwik.md +0 -107
  120. package/docs/guides/ecosystem/react.md +0 -50
  121. package/docs/guides/ecosystem/remix.md +0 -78
  122. package/docs/guides/ecosystem/render.md +0 -79
  123. package/docs/guides/ecosystem/sentry.md +0 -52
  124. package/docs/guides/ecosystem/solidstart.md +0 -58
  125. package/docs/guides/ecosystem/ssr-react.md +0 -51
  126. package/docs/guides/ecosystem/stric.md +0 -55
  127. package/docs/guides/ecosystem/sveltekit.md +0 -125
  128. package/docs/guides/ecosystem/systemd.md +0 -113
  129. package/docs/guides/ecosystem/vite.md +0 -71
  130. package/docs/guides/html-rewriter/extract-links.md +0 -68
  131. package/docs/guides/html-rewriter/extract-social-meta.md +0 -93
  132. package/docs/guides/http/cluster.md +0 -66
  133. package/docs/guides/http/fetch-unix.md +0 -33
  134. package/docs/guides/http/fetch.md +0 -24
  135. package/docs/guides/http/file-uploads.md +0 -94
  136. package/docs/guides/http/hot.md +0 -26
  137. package/docs/guides/http/proxy.md +0 -24
  138. package/docs/guides/http/server.md +0 -46
  139. package/docs/guides/http/simple.md +0 -18
  140. package/docs/guides/http/stream-file.md +0 -48
  141. package/docs/guides/http/stream-iterator.md +0 -47
  142. package/docs/guides/http/stream-node-streams-in-bun.md +0 -20
  143. package/docs/guides/http/tls.md +0 -30
  144. package/docs/guides/install/add-dev.md +0 -26
  145. package/docs/guides/install/add-git.md +0 -36
  146. package/docs/guides/install/add-optional.md +0 -25
  147. package/docs/guides/install/add-peer.md +0 -43
  148. package/docs/guides/install/add-tarball.md +0 -33
  149. package/docs/guides/install/add.md +0 -42
  150. package/docs/guides/install/azure-artifacts.md +0 -73
  151. package/docs/guides/install/cicd.md +0 -41
  152. package/docs/guides/install/custom-registry.md +0 -30
  153. package/docs/guides/install/from-npm-install-to-bun-install.md +0 -214
  154. package/docs/guides/install/git-diff-bun-lockfile.md +0 -44
  155. package/docs/guides/install/jfrog-artifactory.md +0 -28
  156. package/docs/guides/install/npm-alias.md +0 -23
  157. package/docs/guides/install/registry-scope.md +0 -38
  158. package/docs/guides/install/trusted.md +0 -46
  159. package/docs/guides/install/workspaces.md +0 -70
  160. package/docs/guides/install/yarnlock.md +0 -44
  161. package/docs/guides/process/argv.md +0 -58
  162. package/docs/guides/process/ctrl-c.md +0 -16
  163. package/docs/guides/process/ipc.md +0 -66
  164. package/docs/guides/process/nanoseconds.md +0 -13
  165. package/docs/guides/process/os-signals.md +0 -39
  166. package/docs/guides/process/spawn-stderr.md +0 -31
  167. package/docs/guides/process/spawn-stdout.md +0 -26
  168. package/docs/guides/process/spawn.md +0 -41
  169. package/docs/guides/process/stdin.md +0 -54
  170. package/docs/guides/read-file/arraybuffer.md +0 -28
  171. package/docs/guides/read-file/buffer.md +0 -19
  172. package/docs/guides/read-file/exists.md +0 -16
  173. package/docs/guides/read-file/json.md +0 -17
  174. package/docs/guides/read-file/mime.md +0 -20
  175. package/docs/guides/read-file/stream.md +0 -26
  176. package/docs/guides/read-file/string.md +0 -22
  177. package/docs/guides/read-file/uint8array.md +0 -21
  178. package/docs/guides/read-file/watch.md +0 -68
  179. package/docs/guides/runtime/build-time-constants.md +0 -293
  180. package/docs/guides/runtime/cicd.md +0 -43
  181. package/docs/guides/runtime/codesign-macos-executable.md +0 -56
  182. package/docs/guides/runtime/define-constant.md +0 -145
  183. package/docs/guides/runtime/delete-directory.md +0 -37
  184. package/docs/guides/runtime/delete-file.md +0 -19
  185. package/docs/guides/runtime/heap-snapshot.md +0 -26
  186. package/docs/guides/runtime/import-html.md +0 -15
  187. package/docs/guides/runtime/import-json.md +0 -44
  188. package/docs/guides/runtime/import-toml.md +0 -30
  189. package/docs/guides/runtime/import-yaml.md +0 -102
  190. package/docs/guides/runtime/read-env.md +0 -32
  191. package/docs/guides/runtime/set-env.md +0 -47
  192. package/docs/guides/runtime/shell.md +0 -40
  193. package/docs/guides/runtime/timezone.md +0 -35
  194. package/docs/guides/runtime/tsconfig-paths.md +0 -29
  195. package/docs/guides/runtime/typescript.md +0 -49
  196. package/docs/guides/runtime/vscode-debugger.md +0 -47
  197. package/docs/guides/runtime/web-debugger.md +0 -82
  198. package/docs/guides/streams/node-readable-to-arraybuffer.md +0 -11
  199. package/docs/guides/streams/node-readable-to-blob.md +0 -11
  200. package/docs/guides/streams/node-readable-to-json.md +0 -12
  201. package/docs/guides/streams/node-readable-to-string.md +0 -12
  202. package/docs/guides/streams/node-readable-to-uint8array.md +0 -11
  203. package/docs/guides/streams/to-array.md +0 -14
  204. package/docs/guides/streams/to-arraybuffer.md +0 -14
  205. package/docs/guides/streams/to-blob.md +0 -14
  206. package/docs/guides/streams/to-buffer.md +0 -15
  207. package/docs/guides/streams/to-json.md +0 -14
  208. package/docs/guides/streams/to-string.md +0 -14
  209. package/docs/guides/streams/to-typedarray.md +0 -22
  210. package/docs/guides/test/bail.md +0 -22
  211. package/docs/guides/test/coverage-threshold.md +0 -60
  212. package/docs/guides/test/coverage.md +0 -44
  213. package/docs/guides/test/happy-dom.md +0 -68
  214. package/docs/guides/test/migrate-from-jest.md +0 -143
  215. package/docs/guides/test/mock-clock.md +0 -48
  216. package/docs/guides/test/mock-functions.md +0 -68
  217. package/docs/guides/test/rerun-each.md +0 -14
  218. package/docs/guides/test/run-tests.md +0 -111
  219. package/docs/guides/test/skip-tests.md +0 -39
  220. package/docs/guides/test/snapshot.md +0 -95
  221. package/docs/guides/test/spy-on.md +0 -46
  222. package/docs/guides/test/svelte-test.md +0 -120
  223. package/docs/guides/test/testing-library.md +0 -92
  224. package/docs/guides/test/timeout.md +0 -15
  225. package/docs/guides/test/todo-tests.md +0 -67
  226. package/docs/guides/test/update-snapshots.md +0 -46
  227. package/docs/guides/test/watch-mode.md +0 -19
  228. package/docs/guides/util/base64.md +0 -15
  229. package/docs/guides/util/deep-equals.md +0 -39
  230. package/docs/guides/util/deflate.md +0 -18
  231. package/docs/guides/util/detect-bun.md +0 -23
  232. package/docs/guides/util/entrypoint.md +0 -17
  233. package/docs/guides/util/escape-html.md +0 -22
  234. package/docs/guides/util/file-url-to-path.md +0 -14
  235. package/docs/guides/util/gzip.md +0 -18
  236. package/docs/guides/util/hash-a-password.md +0 -54
  237. package/docs/guides/util/import-meta-dir.md +0 -13
  238. package/docs/guides/util/import-meta-file.md +0 -13
  239. package/docs/guides/util/import-meta-path.md +0 -13
  240. package/docs/guides/util/javascript-uuid.md +0 -23
  241. package/docs/guides/util/main.md +0 -32
  242. package/docs/guides/util/path-to-file-url.md +0 -14
  243. package/docs/guides/util/sleep.md +0 -22
  244. package/docs/guides/util/version.md +0 -21
  245. package/docs/guides/util/which-path-to-executable-bin.md +0 -15
  246. package/docs/guides/websocket/compression.md +0 -31
  247. package/docs/guides/websocket/context.md +0 -77
  248. package/docs/guides/websocket/pubsub.md +0 -41
  249. package/docs/guides/websocket/simple.md +0 -33
  250. package/docs/guides/write-file/append.md +0 -52
  251. package/docs/guides/write-file/basic.md +0 -44
  252. package/docs/guides/write-file/blob.md +0 -28
  253. package/docs/guides/write-file/cat.md +0 -17
  254. package/docs/guides/write-file/file-cp.md +0 -16
  255. package/docs/guides/write-file/filesink.md +0 -52
  256. package/docs/guides/write-file/response.md +0 -17
  257. package/docs/guides/write-file/stdout.md +0 -21
  258. package/docs/guides/write-file/stream.md +0 -17
  259. package/docs/guides/write-file/unlink.md +0 -16
  260. package/docs/index.md +0 -77
  261. package/docs/install/audit.md +0 -57
  262. package/docs/install/cache.md +0 -59
  263. package/docs/install/catalogs.md +0 -298
  264. package/docs/install/index.md +0 -248
  265. package/docs/install/isolated.md +0 -197
  266. package/docs/install/lifecycle.md +0 -46
  267. package/docs/install/lockfile.md +0 -58
  268. package/docs/install/npmrc.md +0 -105
  269. package/docs/install/overrides.md +0 -73
  270. package/docs/install/patch.md +0 -59
  271. package/docs/install/registries.md +0 -30
  272. package/docs/install/security-scanner-api.md +0 -81
  273. package/docs/install/workspaces.md +0 -114
  274. package/docs/installation.md +0 -327
  275. package/docs/project/asan.md +0 -124
  276. package/docs/project/benchmarking.md +0 -203
  277. package/docs/project/bindgen.md +0 -225
  278. package/docs/project/building-windows.md +0 -162
  279. package/docs/project/contributing.md +0 -347
  280. package/docs/project/internals/build-process-for-ci.md +0 -75
  281. package/docs/project/licensing.md +0 -73
  282. package/docs/project/roadmap.md +0 -87
  283. package/docs/quickstart.md +0 -157
  284. package/docs/runtime/autoimport.md +0 -94
  285. package/docs/runtime/bun-apis.md +0 -207
  286. package/docs/runtime/bunfig.md +0 -772
  287. package/docs/runtime/debugger.md +0 -325
  288. package/docs/runtime/env.md +0 -253
  289. package/docs/runtime/hot.md +0 -145
  290. package/docs/runtime/index.md +0 -312
  291. package/docs/runtime/jsx.md +0 -385
  292. package/docs/runtime/loaders.md +0 -130
  293. package/docs/runtime/modules.md +0 -320
  294. package/docs/runtime/nodejs-apis.md +0 -463
  295. package/docs/runtime/plugins.md +0 -561
  296. package/docs/runtime/shell.md +0 -605
  297. package/docs/runtime/typescript.md +0 -139
  298. package/docs/runtime/web-apis.md +0 -128
  299. package/docs/test/configuration.md +0 -154
  300. package/docs/test/coverage.md +0 -142
  301. package/docs/test/discovery.md +0 -85
  302. package/docs/test/dom.md +0 -75
  303. package/docs/test/examples/concurrent-test-glob.md +0 -132
  304. package/docs/test/hot.md +0 -15
  305. package/docs/test/lifecycle.md +0 -81
  306. package/docs/test/mocks.md +0 -313
  307. package/docs/test/reporters.md +0 -117
  308. package/docs/test/runtime-behavior.md +0 -95
  309. package/docs/test/snapshots.md +0 -68
  310. package/docs/test/time.md +0 -126
  311. package/docs/test/writing.md +0 -825
  312. package/docs/typescript.md +0 -53
package/docs/cli/test.md DELETED
@@ -1,397 +0,0 @@
1
- Bun ships with a fast, built-in, Jest-compatible test runner. Tests are executed with the Bun runtime, and support the following features.
2
-
3
- - TypeScript and JSX
4
- - Lifecycle hooks
5
- - Snapshot testing
6
- - UI & DOM testing
7
- - Watch mode with `--watch`
8
- - Script pre-loading with `--preload`
9
-
10
- {% callout %}
11
- Bun aims for compatibility with Jest, but not everything is implemented. To track compatibility, see [this tracking issue](https://github.com/oven-sh/bun/issues/1825).
12
- {% /callout %}
13
-
14
- ## Run tests
15
-
16
- ```bash
17
- $ bun test
18
- ```
19
-
20
- Tests are written in JavaScript or TypeScript with a Jest-like API. Refer to [Writing tests](https://bun.com/docs/test/writing) for full documentation.
21
-
22
- ```ts#math.test.ts
23
- import { expect, test } from "bun:test";
24
-
25
- test("2 + 2", () => {
26
- expect(2 + 2).toBe(4);
27
- });
28
- ```
29
-
30
- The runner recursively searches the working directory for files that match the following patterns:
31
-
32
- - `*.test.{js|jsx|ts|tsx}`
33
- - `*_test.{js|jsx|ts|tsx}`
34
- - `*.spec.{js|jsx|ts|tsx}`
35
- - `*_spec.{js|jsx|ts|tsx}`
36
-
37
- You can filter the set of _test files_ to run by passing additional positional arguments to `bun test`. Any test file with a path that matches one of the filters will run. Commonly, these filters will be file or directory names; glob patterns are not yet supported.
38
-
39
- ```bash
40
- $ bun test <filter> <filter> ...
41
- ```
42
-
43
- To filter by _test name_, use the `-t`/`--test-name-pattern` flag.
44
-
45
- ```sh
46
- # run all tests or test suites with "addition" in the name
47
- $ bun test --test-name-pattern addition
48
- ```
49
-
50
- When no tests match the filter, `bun test` exits with code 1.
51
-
52
- To run a specific file in the test runner, make sure the path starts with `./` or `/` to distinguish it from a filter name.
53
-
54
- ```bash
55
- $ bun test ./test/specific-file.test.ts
56
- ```
57
-
58
- The test runner runs all tests in a single process. It loads all `--preload` scripts (see [Lifecycle](https://bun.com/docs/test/lifecycle) for details), then runs all tests. If a test fails, the test runner will exit with a non-zero exit code.
59
-
60
- ## CI/CD integration
61
-
62
- `bun test` supports a variety of CI/CD integrations.
63
-
64
- ### GitHub Actions
65
-
66
- `bun test` automatically detects if it's running inside GitHub Actions and will emit GitHub Actions annotations to the console directly.
67
-
68
- No configuration is needed, other than installing `bun` in the workflow and running `bun test`.
69
-
70
- #### How to install `bun` in a GitHub Actions workflow
71
-
72
- To use `bun test` in a GitHub Actions workflow, add the following step:
73
-
74
- ```yaml
75
- jobs:
76
- build:
77
- name: build-app
78
- runs-on: ubuntu-latest
79
- steps:
80
- - name: Checkout
81
- uses: actions/checkout@v4
82
- - name: Install bun
83
- uses: oven-sh/setup-bun@v2
84
- - name: Install dependencies # (assuming your project has dependencies)
85
- run: bun install # You can use npm/yarn/pnpm instead if you prefer
86
- - name: Run tests
87
- run: bun test
88
- ```
89
-
90
- From there, you'll get GitHub Actions annotations.
91
-
92
- ### JUnit XML reports (GitLab, etc.)
93
-
94
- To use `bun test` with a JUnit XML reporter, you can use the `--reporter=junit` in combination with `--reporter-outfile`.
95
-
96
- ```sh
97
- $ bun test --reporter=junit --reporter-outfile=./bun.xml
98
- ```
99
-
100
- This will continue to output to stdout/stderr as usual, and also write a JUnit
101
- XML report to the given path at the very end of the test run.
102
-
103
- JUnit XML is a popular format for reporting test results in CI/CD pipelines.
104
-
105
- ## Timeouts
106
-
107
- Use the `--timeout` flag to specify a _per-test_ timeout in milliseconds. If a test times out, it will be marked as failed. The default value is `5000`.
108
-
109
- ```bash
110
- # default value is 5000
111
- $ bun test --timeout 20
112
- ```
113
-
114
- ## Concurrent test execution
115
-
116
- By default, Bun runs all tests sequentially within each test file. You can enable concurrent execution to run async tests in parallel, significantly speeding up test suites with independent tests.
117
-
118
- ### `--concurrent` flag
119
-
120
- Use the `--concurrent` flag to run all tests concurrently within their respective files:
121
-
122
- ```sh
123
- $ bun test --concurrent
124
- ```
125
-
126
- When this flag is enabled, all tests will run in parallel unless explicitly marked with `test.serial`.
127
-
128
- ### `--max-concurrency` flag
129
-
130
- Control the maximum number of tests running simultaneously with the `--max-concurrency` flag:
131
-
132
- ```sh
133
- # Limit to 4 concurrent tests
134
- $ bun test --concurrent --max-concurrency 4
135
-
136
- # Default: 20
137
- $ bun test --concurrent
138
- ```
139
-
140
- This helps prevent resource exhaustion when running many concurrent tests. The default value is 20.
141
-
142
- ### `test.concurrent`
143
-
144
- Mark individual tests to run concurrently, even when the `--concurrent` flag is not used:
145
-
146
- ```ts
147
- import { test, expect } from "bun:test";
148
-
149
- // These tests run in parallel with each other
150
- test.concurrent("concurrent test 1", async () => {
151
- await fetch("/api/endpoint1");
152
- expect(true).toBe(true);
153
- });
154
-
155
- test.concurrent("concurrent test 2", async () => {
156
- await fetch("/api/endpoint2");
157
- expect(true).toBe(true);
158
- });
159
-
160
- // This test runs sequentially
161
- test("sequential test", () => {
162
- expect(1 + 1).toBe(2);
163
- });
164
- ```
165
-
166
- ### `test.serial`
167
-
168
- Force tests to run sequentially, even when the `--concurrent` flag is enabled:
169
-
170
- ```ts
171
- import { test, expect } from "bun:test";
172
-
173
- let sharedState = 0;
174
-
175
- // These tests must run in order
176
- test.serial("first serial test", () => {
177
- sharedState = 1;
178
- expect(sharedState).toBe(1);
179
- });
180
-
181
- test.serial("second serial test", () => {
182
- // Depends on the previous test
183
- expect(sharedState).toBe(1);
184
- sharedState = 2;
185
- });
186
-
187
- // This test can run concurrently if --concurrent is enabled
188
- test("independent test", () => {
189
- expect(true).toBe(true);
190
- });
191
-
192
- // Chaining test qualifiers
193
- test.failing.each([1, 2, 3])("chained qualifiers %d", input => {
194
- expect(input).toBe(0); // This test is expected to fail for each input
195
- });
196
- ```
197
-
198
- ## Rerun tests
199
-
200
- Use the `--rerun-each` flag to run each test multiple times. This is useful for detecting flaky or non-deterministic test failures.
201
-
202
- ```sh
203
- $ bun test --rerun-each 100
204
- ```
205
-
206
- ## Randomize test execution order
207
-
208
- Use the `--randomize` flag to run tests in a random order. This helps detect tests that depend on shared state or execution order.
209
-
210
- ```sh
211
- $ bun test --randomize
212
- ```
213
-
214
- When using `--randomize`, the seed used for randomization will be displayed in the test summary:
215
-
216
- ```sh
217
- $ bun test --randomize
218
- # ... test output ...
219
- --seed=12345
220
- 2 pass
221
- 8 fail
222
- Ran 10 tests across 2 files. [50.00ms]
223
- ```
224
-
225
- ### Reproducible random order with `--seed`
226
-
227
- Use the `--seed` flag to specify a seed for the randomization. This allows you to reproduce the same test order when debugging order-dependent failures.
228
-
229
- ```sh
230
- # Reproduce a previous randomized run
231
- $ bun test --seed 123456
232
- ```
233
-
234
- The `--seed` flag implies `--randomize`, so you don't need to specify both. Using the same seed value will always produce the same test execution order, making it easier to debug intermittent failures caused by test interdependencies.
235
-
236
- ## Bail out with `--bail`
237
-
238
- Use the `--bail` flag to abort the test run early after a pre-determined number of test failures. By default Bun will run all tests and report all failures, but sometimes in CI environments it's preferable to terminate earlier to reduce CPU usage.
239
-
240
- ```sh
241
- # bail after 1 failure
242
- $ bun test --bail
243
-
244
- # bail after 10 failure
245
- $ bun test --bail=10
246
- ```
247
-
248
- ## Watch mode
249
-
250
- Similar to `bun run`, you can pass the `--watch` flag to `bun test` to watch for changes and re-run tests.
251
-
252
- ```bash
253
- $ bun test --watch
254
- ```
255
-
256
- ## Lifecycle hooks
257
-
258
- Bun supports the following lifecycle hooks:
259
-
260
- | Hook | Description |
261
- | ---------------- | -------------------------------------------------------- |
262
- | `beforeAll` | Runs once before all tests. |
263
- | `beforeEach` | Runs before each test. |
264
- | `afterEach` | Runs after each test. |
265
- | `afterAll` | Runs once after all tests. |
266
- | `onTestFinished` | Runs after a test finishes, including after `afterEach`. |
267
-
268
- These hooks can be defined inside test files, or in a separate file that is preloaded with the `--preload` flag.
269
-
270
- ```ts
271
- $ bun test --preload ./setup.ts
272
- ```
273
-
274
- See [Test > Lifecycle](https://bun.com/docs/test/lifecycle) for complete documentation.
275
-
276
- ## Mocks
277
-
278
- Create mock functions with the `mock` function.
279
-
280
- ```ts
281
- import { test, expect, mock } from "bun:test";
282
- const random = mock(() => Math.random());
283
-
284
- test("random", () => {
285
- const val = random();
286
- expect(val).toBeGreaterThan(0);
287
- expect(random).toHaveBeenCalled();
288
- expect(random).toHaveBeenCalledTimes(1);
289
- });
290
- ```
291
-
292
- Alternatively, you can use `jest.fn()`, it behaves identically.
293
-
294
- ```ts-diff
295
- - import { test, expect, mock } from "bun:test";
296
- + import { test, expect, jest } from "bun:test";
297
-
298
- - const random = mock(() => Math.random());
299
- + const random = jest.fn(() => Math.random());
300
- ```
301
-
302
- See [Test > Mocks](https://bun.com/docs/test/mocks) for complete documentation.
303
-
304
- ## Snapshot testing
305
-
306
- Snapshots are supported by `bun test`.
307
-
308
- ```ts
309
- // example usage of toMatchSnapshot
310
- import { test, expect } from "bun:test";
311
-
312
- test("snapshot", () => {
313
- expect({ a: 1 }).toMatchSnapshot();
314
- });
315
- ```
316
-
317
- To update snapshots, use the `--update-snapshots` flag.
318
-
319
- ```sh
320
- $ bun test --update-snapshots
321
- ```
322
-
323
- See [Test > Snapshots](https://bun.com/docs/test/snapshots) for complete documentation.
324
-
325
- ## UI & DOM testing
326
-
327
- Bun is compatible with popular UI testing libraries:
328
-
329
- - [HappyDOM](https://github.com/capricorn86/happy-dom)
330
- - [DOM Testing Library](https://testing-library.com/docs/dom-testing-library/intro/)
331
- - [React Testing Library](https://testing-library.com/docs/react-testing-library/intro)
332
-
333
- See [Test > DOM Testing](https://bun.com/docs/test/dom) for complete documentation.
334
-
335
- ## Performance
336
-
337
- Bun's test runner is fast.
338
-
339
- {% image src="/images/buntest.jpeg" caption="Running 266 React SSR tests faster than Jest can print its version number." /%}
340
-
341
- <!--
342
- Consider the following directory structure:
343
-
344
- ```
345
- .
346
- ├── a.test.ts
347
- ├── b.test.ts
348
- ├── c.test.ts
349
- └── foo
350
- ├── a.test.ts
351
- └── b.test.ts
352
- ```
353
-
354
- To run both `a.test.ts` files:
355
-
356
- ```
357
- $ bun test a
358
- ```
359
-
360
- To run all tests in the `foo` directory:
361
-
362
- ```
363
- $ bun test foo
364
- ```
365
-
366
- Any test file in the directory with an _absolute path_ that contains one of the targets will run. Glob patterns are not yet supported. -->
367
-
368
- ## AI Agent Integration
369
-
370
- When using Bun's test runner with AI coding assistants, you can enable quieter output to improve readability and reduce context noise. This feature minimizes test output verbosity while preserving essential failure information.
371
-
372
- ### Environment Variables
373
-
374
- Set any of the following environment variables to enable AI-friendly output:
375
-
376
- - `CLAUDECODE=1` - For Claude Code
377
- - `REPL_ID=1` - For Replit
378
- - `AGENT=1` - Generic AI agent flag
379
-
380
- ### Behavior
381
-
382
- When an AI agent environment is detected:
383
-
384
- - Only test failures are displayed in detail
385
- - Passing, skipped, and todo test indicators are hidden
386
- - Summary statistics remain intact
387
-
388
- ```bash
389
- # Example: Enable quiet output for Claude Code
390
- $ CLAUDECODE=1 bun test
391
-
392
- # Still shows failures and summary, but hides verbose passing test output
393
- ```
394
-
395
- This feature is particularly useful in AI-assisted development workflows where reduced output verbosity improves context efficiency while maintaining visibility into test failures.
396
-
397
- {% bunCLIUsage command="test" /%}
@@ -1,9 +0,0 @@
1
- Use `bun unlink` in the root directory to unregister a local package.
2
-
3
- ```bash
4
- $ cd /path/to/cool-pkg
5
- $ bun unlink
6
- bun unlink v1.x (7416672e)
7
- ```
8
-
9
- {% bunCLIUsage command="unlink" /%}
@@ -1,129 +0,0 @@
1
- To update all dependencies to the latest version:
2
-
3
- ```sh
4
- $ bun update
5
- ```
6
-
7
- To update a specific dependency to the latest version:
8
-
9
- ```sh
10
- $ bun update [package]
11
- ```
12
-
13
- ## `--interactive`
14
-
15
- For a more controlled update experience, use the `--interactive` flag to select which packages to update:
16
-
17
- ```sh
18
- $ bun update --interactive
19
- $ bun update -i
20
- ```
21
-
22
- This launches an interactive terminal interface that shows all outdated packages with their current and target versions. You can then select which packages to update.
23
-
24
- ### Interactive Interface
25
-
26
- The interface displays packages grouped by dependency type:
27
-
28
- ```
29
- ? Select packages to update - Space to toggle, Enter to confirm, a to select all, n to select none, i to invert, l to toggle latest
30
-
31
- dependencies Current Target Latest
32
- □ react 17.0.2 18.2.0 18.3.1
33
- □ lodash 4.17.20 4.17.21 4.17.21
34
-
35
- devDependencies Current Target Latest
36
- □ typescript 4.8.0 5.0.0 5.3.3
37
- □ @types/node 16.11.7 18.0.0 20.11.5
38
-
39
- optionalDependencies Current Target Latest
40
- □ some-optional-package 1.0.0 1.1.0 1.2.0
41
- ```
42
-
43
- **Sections:**
44
-
45
- - Packages are grouped under section headers: `dependencies`, `devDependencies`, `peerDependencies`, `optionalDependencies`
46
- - Each section shows column headers aligned with the package data
47
-
48
- **Columns:**
49
-
50
- - **Package**: Package name (may have suffix like ` dev`, ` peer`, ` optional` for clarity)
51
- - **Current**: Currently installed version
52
- - **Target**: Version that would be installed (respects semver constraints)
53
- - **Latest**: Latest available version
54
-
55
- ### Keyboard Controls
56
-
57
- **Selection:**
58
-
59
- - **Space**: Toggle package selection
60
- - **Enter**: Confirm selections and update
61
- - **a/A**: Select all packages
62
- - **n/N**: Select none
63
- - **i/I**: Invert selection
64
-
65
- **Navigation:**
66
-
67
- - **↑/↓ Arrow keys** or **j/k**: Move cursor
68
- - **l/L**: Toggle between target and latest version for current package
69
-
70
- **Exit:**
71
-
72
- - **Ctrl+C** or **Ctrl+D**: Cancel without updating
73
-
74
- ### Visual Indicators
75
-
76
- - **☑** Selected packages (will be updated)
77
- - **□** Unselected packages
78
- - **>** Current cursor position
79
- - **Colors**: Red (major), yellow (minor), green (patch) version changes
80
- - **Underlined**: Currently selected update target
81
-
82
- ### Package Grouping
83
-
84
- Packages are organized in sections by dependency type:
85
-
86
- - **dependencies** - Regular runtime dependencies
87
- - **devDependencies** - Development dependencies
88
- - **peerDependencies** - Peer dependencies
89
- - **optionalDependencies** - Optional dependencies
90
-
91
- Within each section, individual packages may have additional suffixes (` dev`, ` peer`, ` optional`) for extra clarity.
92
-
93
- ## `--recursive`
94
-
95
- Use the `--recursive` flag with `--interactive` to update dependencies across all workspaces in a monorepo:
96
-
97
- ```sh
98
- $ bun update --interactive --recursive
99
- $ bun update -i -r
100
- ```
101
-
102
- This displays an additional "Workspace" column showing which workspace each dependency belongs to.
103
-
104
- ## `--latest`
105
-
106
- By default, `bun update` will update to the latest version of a dependency that satisfies the version range specified in your `package.json`.
107
-
108
- To update to the latest version, regardless of if it's compatible with the current version range, use the `--latest` flag:
109
-
110
- ```sh
111
- $ bun update --latest
112
- ```
113
-
114
- In interactive mode, you can toggle individual packages between their target version (respecting semver) and latest version using the **l** key.
115
-
116
- For example, with the following `package.json`:
117
-
118
- ```json
119
- {
120
- "dependencies": {
121
- "react": "^17.0.2"
122
- }
123
- }
124
- ```
125
-
126
- - `bun update` would update to a version that matches `17.x`.
127
- - `bun update --latest` would update to a version that matches `18.x` or later.
128
-
129
- {% bunCLIUsage command="update" /%}
package/docs/cli/why.md DELETED
@@ -1,67 +0,0 @@
1
- The `bun why` command explains why a package is installed in your project by showing the dependency chain that led to its installation.
2
-
3
- ## Usage
4
-
5
- ```bash
6
- $ bun why <package>
7
- ```
8
-
9
- ## Arguments
10
-
11
- - `<package>`: The name of the package to explain. Supports glob patterns like `@org/*` or `*-lodash`.
12
-
13
- ## Options
14
-
15
- - `--top`: Show only the top-level dependencies instead of the complete dependency tree.
16
- - `--depth <number>`: Maximum depth of the dependency tree to display.
17
-
18
- ## Examples
19
-
20
- Check why a specific package is installed:
21
-
22
- ```bash
23
- $ bun why react
24
- react@18.2.0
25
- └─ my-app@1.0.0 (requires ^18.0.0)
26
- ```
27
-
28
- Check why all packages with a specific pattern are installed:
29
-
30
- ```bash
31
- $ bun why "@types/*"
32
- @types/react@18.2.15
33
- └─ dev my-app@1.0.0 (requires ^18.0.0)
34
-
35
- @types/react-dom@18.2.7
36
- └─ dev my-app@1.0.0 (requires ^18.0.0)
37
- ```
38
-
39
- Show only top-level dependencies:
40
-
41
- ```bash
42
- $ bun why express --top
43
- express@4.18.2
44
- └─ my-app@1.0.0 (requires ^4.18.2)
45
- ```
46
-
47
- Limit the dependency tree depth:
48
-
49
- ```bash
50
- $ bun why express --depth 2
51
- express@4.18.2
52
- └─ express-pollyfill@1.20.1 (requires ^4.18.2)
53
- └─ body-parser@1.20.1 (requires ^1.20.1)
54
- └─ accepts@1.3.8 (requires ^1.3.8)
55
- └─ (deeper dependencies hidden)
56
- ```
57
-
58
- ## Understanding the Output
59
-
60
- The output shows:
61
-
62
- - The package name and version being queried
63
- - The dependency chain that led to its installation
64
- - The type of dependency (dev, peer, optional, or production)
65
- - The version requirement specified in each package's dependencies
66
-
67
- For nested dependencies, the command shows the complete dependency tree by default, with indentation indicating the relationship hierarchy.
@@ -1,57 +0,0 @@
1
- Bun uses [a fork](https://github.com/oven-sh/WebKit) of WebKit with a small number of changes.
2
-
3
- It's important to periodically update WebKit for many reasons:
4
-
5
- - Security
6
- - Performance
7
- - Compatibility
8
- - …and many more.
9
-
10
- To upgrade, first find the commit in **Bun's WebKit fork** (not Bun!) between when we last upgraded and now.
11
-
12
- ```bash
13
- $ cd src/bun.js/WebKit # In the WebKit directory! not bun
14
- $ git checkout $COMMIT
15
- ```
16
-
17
- This is the main command to run:
18
-
19
- ```bash
20
- $ git merge upstream main
21
- # If you get an error saying histories are unrelated, run this and try again:
22
- $ git fetch --unshallow
23
- ```
24
-
25
- Then, you will likely see some silly merge conflicts. Fix them and then run:
26
-
27
- ```bash
28
- # You might have to run this multiple times.
29
- $ rm -rf WebKitBuild
30
-
31
- # Go to Bun's directory! Not WebKit.
32
- cd ../../../../
33
- make jsc-build-mac-compile
34
- ```
35
-
36
- Make sure that JSC's CLI is able to load successfully. This verifies that the build is working.
37
-
38
- You know this worked when it printed help options. If it complains about symbols, crashes, or anything else that looks wrong, something is wrong.
39
-
40
- ```bash
41
- src/bun.js/WebKit/WebKitBuild/Release/bin/jsc --help
42
- ```
43
-
44
- Then, clear out our bindings and regenerate the C++<>Zig headers:
45
-
46
- ```bash
47
- make clean-bindings headers builtins
48
- ```
49
-
50
- Now update Bun's bindings wherever there are compiler errors:
51
-
52
- ```bash
53
- # It will take awhile if you don't pass -j here
54
- make bindings -j10
55
- ```
56
-
57
- This is the hard part. It might involve digging through WebKit's commit history to figure out what changed and why. Fortunately, WebKit contributors write great commit messages.
@@ -1,24 +0,0 @@
1
- [Elysia](https://elysiajs.com) is a Bun-first performance focused web framework that takes full advantage of Bun's HTTP, file system, and hot reloading APIs.
2
- Designed with TypeScript in mind, you don't need to understand TypeScript to gain the benefit of TypeScript with Elysia. The library understands what you want and automatically infers the type from your code.
3
-
4
- ⚡️ Elysia is [one of the fastest Bun web frameworks](https://github.com/SaltyAom/bun-http-framework-benchmark)
5
-
6
- ```ts#server.ts
7
- import { Elysia } from 'elysia'
8
-
9
- const app = new Elysia()
10
- .get('/', () => 'Hello Elysia')
11
- .listen(8080)
12
-
13
- console.log(`🦊 Elysia is running at on port ${app.server.port}...`)
14
- ```
15
-
16
- Get started with `bun create`.
17
-
18
- ```bash
19
- $ bun create elysia ./myapp
20
- $ cd myapp
21
- $ bun run dev
22
- ```
23
-
24
- Refer to the Elysia [documentation](https://elysiajs.com/quick-start.html) for more information.