bun-types 1.3.2-canary.20251105T140650 → 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 (308) hide show
  1. package/docs/README.md +28 -0
  2. package/package.json +1 -1
  3. package/docs/api/binary-data.md +0 -1038
  4. package/docs/api/cc.md +0 -197
  5. package/docs/api/color.md +0 -262
  6. package/docs/api/console.md +0 -57
  7. package/docs/api/cookie.md +0 -449
  8. package/docs/api/dns.md +0 -110
  9. package/docs/api/fetch.md +0 -463
  10. package/docs/api/ffi.md +0 -557
  11. package/docs/api/file-io.md +0 -366
  12. package/docs/api/file-system-router.md +0 -112
  13. package/docs/api/file.md +0 -19
  14. package/docs/api/glob.md +0 -178
  15. package/docs/api/globals.md +0 -387
  16. package/docs/api/hashing.md +0 -319
  17. package/docs/api/html-rewriter.md +0 -334
  18. package/docs/api/http.md +0 -1408
  19. package/docs/api/import-meta.md +0 -69
  20. package/docs/api/node-api.md +0 -14
  21. package/docs/api/redis.md +0 -597
  22. package/docs/api/s3.md +0 -850
  23. package/docs/api/secrets.md +0 -319
  24. package/docs/api/semver.md +0 -52
  25. package/docs/api/spawn.md +0 -582
  26. package/docs/api/sql.md +0 -1374
  27. package/docs/api/sqlite.md +0 -694
  28. package/docs/api/streams.md +0 -230
  29. package/docs/api/tcp.md +0 -221
  30. package/docs/api/transpiler.md +0 -276
  31. package/docs/api/udp.md +0 -123
  32. package/docs/api/utils.md +0 -891
  33. package/docs/api/websockets.md +0 -573
  34. package/docs/api/workers.md +0 -322
  35. package/docs/api/yaml.md +0 -668
  36. package/docs/benchmarks.md +0 -120
  37. package/docs/bun-flavored-toml.md +0 -42
  38. package/docs/bundler/css.md +0 -1028
  39. package/docs/bundler/css_modules.md +0 -145
  40. package/docs/bundler/executables.md +0 -626
  41. package/docs/bundler/fullstack.md +0 -418
  42. package/docs/bundler/hmr.md +0 -234
  43. package/docs/bundler/html.md +0 -349
  44. package/docs/bundler/index.md +0 -1735
  45. package/docs/bundler/intro.md +0 -75
  46. package/docs/bundler/loaders.md +0 -410
  47. package/docs/bundler/macros.md +0 -329
  48. package/docs/bundler/plugins.md +0 -449
  49. package/docs/bundler/vs-esbuild.md +0 -1127
  50. package/docs/cli/add.md +0 -173
  51. package/docs/cli/bun-completions.md +0 -3
  52. package/docs/cli/bun-create.md +0 -338
  53. package/docs/cli/bun-install.md +0 -349
  54. package/docs/cli/bun-upgrade.md +0 -39
  55. package/docs/cli/bunx.md +0 -89
  56. package/docs/cli/filter.md +0 -90
  57. package/docs/cli/info.md +0 -65
  58. package/docs/cli/init.md +0 -85
  59. package/docs/cli/install.md +0 -344
  60. package/docs/cli/link.md +0 -40
  61. package/docs/cli/outdated.md +0 -90
  62. package/docs/cli/patch-commit.md +0 -11
  63. package/docs/cli/pm.md +0 -285
  64. package/docs/cli/publish.md +0 -120
  65. package/docs/cli/remove.md +0 -7
  66. package/docs/cli/run.md +0 -261
  67. package/docs/cli/test.md +0 -397
  68. package/docs/cli/unlink.md +0 -9
  69. package/docs/cli/update.md +0 -129
  70. package/docs/cli/why.md +0 -67
  71. package/docs/contributing/upgrading-webkit.md +0 -57
  72. package/docs/ecosystem/elysia.md +0 -24
  73. package/docs/ecosystem/express.md +0 -37
  74. package/docs/ecosystem/hono.md +0 -18
  75. package/docs/ecosystem/react.md +0 -65
  76. package/docs/ecosystem/stric.md +0 -38
  77. package/docs/guides/binary/arraybuffer-to-array.md +0 -27
  78. package/docs/guides/binary/arraybuffer-to-blob.md +0 -24
  79. package/docs/guides/binary/arraybuffer-to-buffer.md +0 -25
  80. package/docs/guides/binary/arraybuffer-to-string.md +0 -15
  81. package/docs/guides/binary/arraybuffer-to-typedarray.md +0 -39
  82. package/docs/guides/binary/blob-to-arraybuffer.md +0 -14
  83. package/docs/guides/binary/blob-to-dataview.md +0 -14
  84. package/docs/guides/binary/blob-to-stream.md +0 -14
  85. package/docs/guides/binary/blob-to-string.md +0 -15
  86. package/docs/guides/binary/blob-to-typedarray.md +0 -14
  87. package/docs/guides/binary/buffer-to-arraybuffer.md +0 -14
  88. package/docs/guides/binary/buffer-to-blob.md +0 -14
  89. package/docs/guides/binary/buffer-to-readablestream.md +0 -41
  90. package/docs/guides/binary/buffer-to-string.md +0 -25
  91. package/docs/guides/binary/buffer-to-typedarray.md +0 -14
  92. package/docs/guides/binary/dataview-to-string.md +0 -15
  93. package/docs/guides/binary/typedarray-to-arraybuffer.md +0 -25
  94. package/docs/guides/binary/typedarray-to-blob.md +0 -16
  95. package/docs/guides/binary/typedarray-to-buffer.md +0 -14
  96. package/docs/guides/binary/typedarray-to-dataview.md +0 -14
  97. package/docs/guides/binary/typedarray-to-readablestream.md +0 -41
  98. package/docs/guides/binary/typedarray-to-string.md +0 -16
  99. package/docs/guides/deployment/railway.md +0 -157
  100. package/docs/guides/ecosystem/astro.md +0 -72
  101. package/docs/guides/ecosystem/discordjs.md +0 -77
  102. package/docs/guides/ecosystem/docker.md +0 -140
  103. package/docs/guides/ecosystem/drizzle.md +0 -185
  104. package/docs/guides/ecosystem/edgedb.md +0 -228
  105. package/docs/guides/ecosystem/elysia.md +0 -31
  106. package/docs/guides/ecosystem/express.md +0 -40
  107. package/docs/guides/ecosystem/hono.md +0 -39
  108. package/docs/guides/ecosystem/mongoose.md +0 -87
  109. package/docs/guides/ecosystem/neon-drizzle.md +0 -220
  110. package/docs/guides/ecosystem/neon-serverless-postgres.md +0 -55
  111. package/docs/guides/ecosystem/nextjs.md +0 -49
  112. package/docs/guides/ecosystem/nuxt.md +0 -56
  113. package/docs/guides/ecosystem/pm2.md +0 -57
  114. package/docs/guides/ecosystem/prisma.md +0 -141
  115. package/docs/guides/ecosystem/qwik.md +0 -107
  116. package/docs/guides/ecosystem/react.md +0 -50
  117. package/docs/guides/ecosystem/remix.md +0 -78
  118. package/docs/guides/ecosystem/render.md +0 -79
  119. package/docs/guides/ecosystem/sentry.md +0 -52
  120. package/docs/guides/ecosystem/solidstart.md +0 -58
  121. package/docs/guides/ecosystem/ssr-react.md +0 -51
  122. package/docs/guides/ecosystem/stric.md +0 -55
  123. package/docs/guides/ecosystem/sveltekit.md +0 -125
  124. package/docs/guides/ecosystem/systemd.md +0 -113
  125. package/docs/guides/ecosystem/vite.md +0 -71
  126. package/docs/guides/html-rewriter/extract-links.md +0 -68
  127. package/docs/guides/html-rewriter/extract-social-meta.md +0 -93
  128. package/docs/guides/http/cluster.md +0 -66
  129. package/docs/guides/http/fetch-unix.md +0 -33
  130. package/docs/guides/http/fetch.md +0 -24
  131. package/docs/guides/http/file-uploads.md +0 -94
  132. package/docs/guides/http/hot.md +0 -26
  133. package/docs/guides/http/proxy.md +0 -24
  134. package/docs/guides/http/server.md +0 -46
  135. package/docs/guides/http/simple.md +0 -18
  136. package/docs/guides/http/stream-file.md +0 -48
  137. package/docs/guides/http/stream-iterator.md +0 -47
  138. package/docs/guides/http/stream-node-streams-in-bun.md +0 -20
  139. package/docs/guides/http/tls.md +0 -30
  140. package/docs/guides/install/add-dev.md +0 -26
  141. package/docs/guides/install/add-git.md +0 -36
  142. package/docs/guides/install/add-optional.md +0 -25
  143. package/docs/guides/install/add-peer.md +0 -43
  144. package/docs/guides/install/add-tarball.md +0 -33
  145. package/docs/guides/install/add.md +0 -42
  146. package/docs/guides/install/azure-artifacts.md +0 -73
  147. package/docs/guides/install/cicd.md +0 -41
  148. package/docs/guides/install/custom-registry.md +0 -30
  149. package/docs/guides/install/from-npm-install-to-bun-install.md +0 -214
  150. package/docs/guides/install/git-diff-bun-lockfile.md +0 -44
  151. package/docs/guides/install/jfrog-artifactory.md +0 -28
  152. package/docs/guides/install/npm-alias.md +0 -23
  153. package/docs/guides/install/registry-scope.md +0 -38
  154. package/docs/guides/install/trusted.md +0 -46
  155. package/docs/guides/install/workspaces.md +0 -70
  156. package/docs/guides/install/yarnlock.md +0 -44
  157. package/docs/guides/process/argv.md +0 -58
  158. package/docs/guides/process/ctrl-c.md +0 -16
  159. package/docs/guides/process/ipc.md +0 -66
  160. package/docs/guides/process/nanoseconds.md +0 -13
  161. package/docs/guides/process/os-signals.md +0 -39
  162. package/docs/guides/process/spawn-stderr.md +0 -31
  163. package/docs/guides/process/spawn-stdout.md +0 -26
  164. package/docs/guides/process/spawn.md +0 -41
  165. package/docs/guides/process/stdin.md +0 -54
  166. package/docs/guides/read-file/arraybuffer.md +0 -28
  167. package/docs/guides/read-file/buffer.md +0 -19
  168. package/docs/guides/read-file/exists.md +0 -16
  169. package/docs/guides/read-file/json.md +0 -17
  170. package/docs/guides/read-file/mime.md +0 -20
  171. package/docs/guides/read-file/stream.md +0 -26
  172. package/docs/guides/read-file/string.md +0 -22
  173. package/docs/guides/read-file/uint8array.md +0 -21
  174. package/docs/guides/read-file/watch.md +0 -68
  175. package/docs/guides/runtime/build-time-constants.md +0 -293
  176. package/docs/guides/runtime/cicd.md +0 -43
  177. package/docs/guides/runtime/codesign-macos-executable.md +0 -56
  178. package/docs/guides/runtime/define-constant.md +0 -145
  179. package/docs/guides/runtime/delete-directory.md +0 -37
  180. package/docs/guides/runtime/delete-file.md +0 -19
  181. package/docs/guides/runtime/heap-snapshot.md +0 -26
  182. package/docs/guides/runtime/import-html.md +0 -15
  183. package/docs/guides/runtime/import-json.md +0 -44
  184. package/docs/guides/runtime/import-toml.md +0 -30
  185. package/docs/guides/runtime/import-yaml.md +0 -102
  186. package/docs/guides/runtime/read-env.md +0 -32
  187. package/docs/guides/runtime/set-env.md +0 -47
  188. package/docs/guides/runtime/shell.md +0 -40
  189. package/docs/guides/runtime/timezone.md +0 -35
  190. package/docs/guides/runtime/tsconfig-paths.md +0 -29
  191. package/docs/guides/runtime/typescript.md +0 -49
  192. package/docs/guides/runtime/vscode-debugger.md +0 -47
  193. package/docs/guides/runtime/web-debugger.md +0 -82
  194. package/docs/guides/streams/node-readable-to-arraybuffer.md +0 -11
  195. package/docs/guides/streams/node-readable-to-blob.md +0 -11
  196. package/docs/guides/streams/node-readable-to-json.md +0 -12
  197. package/docs/guides/streams/node-readable-to-string.md +0 -12
  198. package/docs/guides/streams/node-readable-to-uint8array.md +0 -11
  199. package/docs/guides/streams/to-array.md +0 -14
  200. package/docs/guides/streams/to-arraybuffer.md +0 -14
  201. package/docs/guides/streams/to-blob.md +0 -14
  202. package/docs/guides/streams/to-buffer.md +0 -15
  203. package/docs/guides/streams/to-json.md +0 -14
  204. package/docs/guides/streams/to-string.md +0 -14
  205. package/docs/guides/streams/to-typedarray.md +0 -22
  206. package/docs/guides/test/bail.md +0 -22
  207. package/docs/guides/test/coverage-threshold.md +0 -60
  208. package/docs/guides/test/coverage.md +0 -44
  209. package/docs/guides/test/happy-dom.md +0 -68
  210. package/docs/guides/test/migrate-from-jest.md +0 -143
  211. package/docs/guides/test/mock-clock.md +0 -48
  212. package/docs/guides/test/mock-functions.md +0 -68
  213. package/docs/guides/test/rerun-each.md +0 -14
  214. package/docs/guides/test/run-tests.md +0 -111
  215. package/docs/guides/test/skip-tests.md +0 -39
  216. package/docs/guides/test/snapshot.md +0 -95
  217. package/docs/guides/test/spy-on.md +0 -46
  218. package/docs/guides/test/svelte-test.md +0 -120
  219. package/docs/guides/test/testing-library.md +0 -92
  220. package/docs/guides/test/timeout.md +0 -15
  221. package/docs/guides/test/todo-tests.md +0 -67
  222. package/docs/guides/test/update-snapshots.md +0 -46
  223. package/docs/guides/test/watch-mode.md +0 -19
  224. package/docs/guides/util/base64.md +0 -15
  225. package/docs/guides/util/deep-equals.md +0 -39
  226. package/docs/guides/util/deflate.md +0 -18
  227. package/docs/guides/util/detect-bun.md +0 -23
  228. package/docs/guides/util/entrypoint.md +0 -17
  229. package/docs/guides/util/escape-html.md +0 -22
  230. package/docs/guides/util/file-url-to-path.md +0 -14
  231. package/docs/guides/util/gzip.md +0 -18
  232. package/docs/guides/util/hash-a-password.md +0 -54
  233. package/docs/guides/util/import-meta-dir.md +0 -13
  234. package/docs/guides/util/import-meta-file.md +0 -13
  235. package/docs/guides/util/import-meta-path.md +0 -13
  236. package/docs/guides/util/javascript-uuid.md +0 -23
  237. package/docs/guides/util/main.md +0 -32
  238. package/docs/guides/util/path-to-file-url.md +0 -14
  239. package/docs/guides/util/sleep.md +0 -22
  240. package/docs/guides/util/version.md +0 -21
  241. package/docs/guides/util/which-path-to-executable-bin.md +0 -15
  242. package/docs/guides/websocket/compression.md +0 -31
  243. package/docs/guides/websocket/context.md +0 -77
  244. package/docs/guides/websocket/pubsub.md +0 -41
  245. package/docs/guides/websocket/simple.md +0 -33
  246. package/docs/guides/write-file/append.md +0 -52
  247. package/docs/guides/write-file/basic.md +0 -44
  248. package/docs/guides/write-file/blob.md +0 -28
  249. package/docs/guides/write-file/cat.md +0 -17
  250. package/docs/guides/write-file/file-cp.md +0 -16
  251. package/docs/guides/write-file/filesink.md +0 -52
  252. package/docs/guides/write-file/response.md +0 -17
  253. package/docs/guides/write-file/stdout.md +0 -21
  254. package/docs/guides/write-file/stream.md +0 -17
  255. package/docs/guides/write-file/unlink.md +0 -16
  256. package/docs/index.md +0 -77
  257. package/docs/install/audit.md +0 -57
  258. package/docs/install/cache.md +0 -59
  259. package/docs/install/catalogs.md +0 -298
  260. package/docs/install/index.md +0 -248
  261. package/docs/install/isolated.md +0 -197
  262. package/docs/install/lifecycle.md +0 -46
  263. package/docs/install/lockfile.md +0 -58
  264. package/docs/install/npmrc.md +0 -105
  265. package/docs/install/overrides.md +0 -73
  266. package/docs/install/patch.md +0 -59
  267. package/docs/install/registries.md +0 -30
  268. package/docs/install/security-scanner-api.md +0 -81
  269. package/docs/install/workspaces.md +0 -114
  270. package/docs/installation.md +0 -327
  271. package/docs/project/asan.md +0 -124
  272. package/docs/project/benchmarking.md +0 -203
  273. package/docs/project/bindgen.md +0 -225
  274. package/docs/project/building-windows.md +0 -162
  275. package/docs/project/contributing.md +0 -347
  276. package/docs/project/internals/build-process-for-ci.md +0 -75
  277. package/docs/project/licensing.md +0 -73
  278. package/docs/project/roadmap.md +0 -87
  279. package/docs/quickstart.md +0 -157
  280. package/docs/runtime/autoimport.md +0 -94
  281. package/docs/runtime/bun-apis.md +0 -207
  282. package/docs/runtime/bunfig.md +0 -772
  283. package/docs/runtime/debugger.md +0 -325
  284. package/docs/runtime/env.md +0 -253
  285. package/docs/runtime/hot.md +0 -145
  286. package/docs/runtime/index.md +0 -312
  287. package/docs/runtime/jsx.md +0 -385
  288. package/docs/runtime/loaders.md +0 -130
  289. package/docs/runtime/modules.md +0 -320
  290. package/docs/runtime/nodejs-apis.md +0 -463
  291. package/docs/runtime/plugins.md +0 -561
  292. package/docs/runtime/shell.md +0 -605
  293. package/docs/runtime/typescript.md +0 -139
  294. package/docs/runtime/web-apis.md +0 -128
  295. package/docs/test/configuration.md +0 -154
  296. package/docs/test/coverage.md +0 -142
  297. package/docs/test/discovery.md +0 -85
  298. package/docs/test/dom.md +0 -75
  299. package/docs/test/examples/concurrent-test-glob.md +0 -132
  300. package/docs/test/hot.md +0 -15
  301. package/docs/test/lifecycle.md +0 -81
  302. package/docs/test/mocks.md +0 -313
  303. package/docs/test/reporters.md +0 -117
  304. package/docs/test/runtime-behavior.md +0 -95
  305. package/docs/test/snapshots.md +0 -68
  306. package/docs/test/time.md +0 -126
  307. package/docs/test/writing.md +0 -825
  308. package/docs/typescript.md +0 -53
@@ -1,139 +0,0 @@
1
- Bun treats TypeScript as a first-class citizen.
2
-
3
- {% callout %}
4
-
5
- **Note** — To add type declarations for Bun APIs like the `Bun` global, follow the instructions at [Intro > TypeScript](https://bun.com/docs/typescript). This page describes how the Bun runtime runs TypeScript code.
6
-
7
- {% /callout %}
8
-
9
- ## Running `.ts` files
10
-
11
- Bun can directly execute `.ts` and `.tsx` files just like vanilla JavaScript, with no extra configuration. If you import a `.ts` or `.tsx` file (or an `npm` module that exports these files), Bun internally transpiles it into JavaScript then executes the file.
12
-
13
- **Note** — Similar to other build tools, Bun does not typecheck the files. Use [`tsc`](https://www.typescriptlang.org/docs/handbook/compiler-options.html) (the official TypeScript CLI) if you're looking to catch static type errors.
14
-
15
- {% callout %}
16
-
17
- **Is transpiling still necessary?** — Because Bun can directly execute TypeScript, you may not need to transpile your TypeScript to run in production. Bun internally transpiles every file it executes (both `.js` and `.ts`), so the additional overhead of directly executing your `.ts/.tsx` source files is negligible.
18
-
19
- That said, if you are using Bun as a development tool but still targeting Node.js or browsers in production, you'll still need to transpile.
20
-
21
- {% /callout %}
22
-
23
- ## Path mapping
24
-
25
- When resolving modules, Bun's runtime respects path mappings defined in [`compilerOptions.paths`](https://www.typescriptlang.org/tsconfig#paths) in your `tsconfig.json`. No other runtime does this.
26
-
27
- Consider the following `tsconfig.json`.
28
-
29
- ```json
30
- {
31
- "compilerOptions": {
32
- "baseUrl": "./src",
33
- "paths": {
34
- "data": ["./data.ts"]
35
- }
36
- }
37
- }
38
- ```
39
-
40
- Bun will use `baseUrl` to resolve module paths.
41
-
42
- ```ts
43
- // resolves to ./src/components/Button.tsx
44
- import { Button } from "components/Button.tsx";
45
- ```
46
-
47
- Bun will also correctly resolve imports from `"data"`.
48
-
49
- {% codetabs %}
50
-
51
- ```ts#index.ts
52
- import { foo } from "data";
53
- console.log(foo); // => "Hello world!"
54
- ```
55
-
56
- ```ts#data.ts
57
- export const foo = "Hello world!"
58
- ```
59
-
60
- {% /codetabs %}
61
-
62
- ## Experimental Decorators
63
-
64
- Bun supports the pre-TypeScript 5.0 experimental decorators syntax.
65
-
66
- ```ts#hello.ts
67
- // Simple logging decorator
68
- function log(target: any, propertyKey: string, descriptor: PropertyDescriptor) {
69
- const originalMethod = descriptor.value;
70
-
71
- descriptor.value = function(...args: any[]) {
72
- console.log(`Calling ${propertyKey} with:`, args);
73
- return originalMethod.apply(this, args);
74
- };
75
- }
76
-
77
- class Example {
78
- @log
79
- greet(name: string) {
80
- return `Hello ${name}!`;
81
- }
82
- }
83
-
84
- // Usage
85
- const example = new Example();
86
- example.greet("world"); // Logs: "Calling greet with: ['world']"
87
- ```
88
-
89
- To enable it, add `"experimentalDecorators": true` to your `tsconfig.json`:
90
-
91
- ```jsonc#tsconfig.json
92
- {
93
- "compilerOptions": {
94
- // ... rest of your config
95
- "experimentalDecorators": true,
96
- },
97
- }
98
- ```
99
-
100
- We generally don't recommend using this in new codebases, but plenty of existing codebases have come to rely on it.
101
-
102
- ### emitDecoratorMetadata
103
-
104
- Bun supports `emitDecoratorMetadata` in your `tsconfig.json`. This enables emitting design-time type metadata for decorated declarations in source files.
105
-
106
- ```ts#emit-decorator-metadata.ts
107
- import "reflect-metadata";
108
-
109
- class User {
110
- id: number;
111
- name: string;
112
- }
113
-
114
- function Injectable(target: Function) {
115
- // Get metadata about constructor parameters
116
- const params = Reflect.getMetadata("design:paramtypes", target);
117
- console.log("Dependencies:", params); // [User]
118
- }
119
-
120
- @Injectable
121
- class UserService {
122
- constructor(private user: User) {}
123
- }
124
-
125
- // Creates new UserService instance with dependencies
126
- const container = new UserService(new User());
127
- ```
128
-
129
- To enable it, add `"emitDecoratorMetadata": true` to your `tsconfig.json`:
130
-
131
- ```jsonc#tsconfig.json
132
- {
133
- "compilerOptions": {
134
- // ... rest of your config
135
- "experimentalDecorators": true,
136
- "emitDecoratorMetadata": true,
137
- },
138
- }
139
- ```
@@ -1,128 +0,0 @@
1
- Some Web APIs aren't relevant in the context of a server-first runtime like Bun, such as the [DOM API](https://developer.mozilla.org/en-US/docs/Web/API/HTML_DOM_API#html_dom_api_interfaces) or [History API](https://developer.mozilla.org/en-US/docs/Web/API/History_API). Many others, though, are broadly useful outside of the browser context; when possible, Bun implements these Web-standard APIs instead of introducing new APIs.
2
-
3
- The following Web APIs are partially or completely supported.
4
-
5
- {% table %}
6
-
7
- ---
8
-
9
- - HTTP
10
- - [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/fetch)
11
- [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response)
12
- [`Request`](https://developer.mozilla.org/en-US/docs/Web/API/Request)
13
- [`Headers`](https://developer.mozilla.org/en-US/docs/Web/API/Headers)
14
- [`AbortController`](https://developer.mozilla.org/en-US/docs/Web/API/AbortController)
15
- [`AbortSignal`](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal)
16
-
17
- ---
18
-
19
- - URLs
20
- - [`URL`](https://developer.mozilla.org/en-US/docs/Web/API/URL)
21
- [`URLSearchParams`](https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams)
22
-
23
- ---
24
-
25
- - Web Workers
26
- - [`Worker`](https://developer.mozilla.org/en-US/docs/Web/API/Worker)
27
- [`self.postMessage`](https://developer.mozilla.org/en-US/docs/Web/API/DedicatedWorkerGlobalScope/postMessage)
28
- [`structuredClone`](https://developer.mozilla.org/en-US/docs/Web/API/structuredClone)
29
- [`MessagePort`](https://developer.mozilla.org/en-US/docs/Web/API/MessagePort)
30
- [`MessageChannel`](https://developer.mozilla.org/en-US/docs/Web/API/MessageChannel)
31
- [`BroadcastChannel`](https://developer.mozilla.org/en-US/docs/Web/API/BroadcastChannel).
32
-
33
- ---
34
-
35
- - Streams
36
- - [`ReadableStream`](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream)
37
- [`WritableStream`](https://developer.mozilla.org/en-US/docs/Web/API/WritableStream)
38
- [`TransformStream`](https://developer.mozilla.org/en-US/docs/Web/API/TransformStream)
39
- [`ByteLengthQueuingStrategy`](https://developer.mozilla.org/en-US/docs/Web/API/ByteLengthQueuingStrategy)
40
- [`CountQueuingStrategy`](https://developer.mozilla.org/en-US/docs/Web/API/CountQueuingStrategy) and associated classes
41
-
42
- ---
43
-
44
- - Blob
45
- - [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob)
46
-
47
- ---
48
-
49
- - WebSockets
50
- - [`WebSocket`](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket)
51
-
52
- ---
53
-
54
- - Encoding and decoding
55
- - [`atob`](https://developer.mozilla.org/en-US/docs/Web/API/atob)
56
- [`btoa`](https://developer.mozilla.org/en-US/docs/Web/API/btoa)
57
- [`TextEncoder`](https://developer.mozilla.org/en-US/docs/Web/API/TextEncoder)
58
- [`TextDecoder`](https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder)
59
-
60
- ---
61
-
62
- - JSON
63
- - [`JSON`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON)
64
-
65
- ---
66
-
67
- - Timeouts
68
- - [`setTimeout`](https://developer.mozilla.org/en-US/docs/Web/API/setTimeout)
69
- [`clearTimeout`](https://developer.mozilla.org/en-US/docs/Web/API/clearTimeout)
70
-
71
- ---
72
-
73
- - Intervals
74
- - [`setInterval`](https://developer.mozilla.org/en-US/docs/Web/API/setInterval)
75
- [`clearInterval`](https://developer.mozilla.org/en-US/docs/Web/API/clearInterval)
76
-
77
- ---
78
-
79
- - Crypto
80
- - [`crypto`](https://developer.mozilla.org/en-US/docs/Web/API/Crypto)
81
- [`SubtleCrypto`](https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto)
82
- [`CryptoKey`](https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey)
83
-
84
- ---
85
-
86
- - Debugging
87
-
88
- - [`console`](https://developer.mozilla.org/en-US/docs/Web/API/console)
89
- [`performance`](https://developer.mozilla.org/en-US/docs/Web/API/Performance)
90
-
91
- ---
92
-
93
- - Microtasks
94
- - [`queueMicrotask`](https://developer.mozilla.org/en-US/docs/Web/API/queueMicrotask)
95
-
96
- ---
97
-
98
- - Errors
99
- - [`reportError`](https://developer.mozilla.org/en-US/docs/Web/API/reportError)
100
-
101
- ---
102
-
103
- - User interaction
104
- - [`alert`](https://developer.mozilla.org/en-US/docs/Web/API/Window/alert)
105
- [`confirm`](https://developer.mozilla.org/en-US/docs/Web/API/Window/confirm)
106
- [`prompt`](https://developer.mozilla.org/en-US/docs/Web/API/Window/prompt) (intended for interactive CLIs)
107
-
108
- <!-- - Blocking. Prints the alert message to terminal and awaits `[ENTER]` before proceeding. -->
109
- <!-- - Blocking. Prints confirmation message and awaits `[y/N]` input from user. Returns `true` if user entered `y` or `Y`, `false` otherwise.
110
- - Blocking. Prints prompt message and awaits user input. Returns the user input as a string. -->
111
-
112
- ---
113
-
114
- - Realms
115
- - [`ShadowRealm`](https://github.com/tc39/proposal-shadowrealm)
116
-
117
- ---
118
-
119
- - Events
120
- - [`EventTarget`](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget)
121
- [`Event`](https://developer.mozilla.org/en-US/docs/Web/API/Event)
122
- [`ErrorEvent`](https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent)
123
- [`CloseEvent`](https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent)
124
- [`MessageEvent`](https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent)
125
-
126
- ---
127
-
128
- {% /table %}
@@ -1,154 +0,0 @@
1
- Configure `bun test` via `bunfig.toml` file and command-line options. This page documents the available configuration options for `bun test`.
2
-
3
- ## bunfig.toml options
4
-
5
- You can configure `bun test` behavior by adding a `[test]` section to your `bunfig.toml` file:
6
-
7
- ```toml
8
- [test]
9
- # Options go here
10
- ```
11
-
12
- ### Test discovery
13
-
14
- #### root
15
-
16
- The `root` option specifies a root directory for test discovery, overriding the default behavior of scanning from the project root.
17
-
18
- ```toml
19
- [test]
20
- root = "src" # Only scan for tests in the src directory
21
- ```
22
-
23
- ### Reporters
24
-
25
- #### reporter.junit
26
-
27
- Configure the JUnit reporter output file path directly in the config file:
28
-
29
- ```toml
30
- [test.reporter]
31
- junit = "path/to/junit.xml" # Output path for JUnit XML report
32
- ```
33
-
34
- This complements the `--reporter=junit` and `--reporter-outfile` CLI flags.
35
-
36
- ### Memory usage
37
-
38
- #### smol
39
-
40
- Enable the `--smol` memory-saving mode specifically for the test runner:
41
-
42
- ```toml
43
- [test]
44
- smol = true # Reduce memory usage during test runs
45
- ```
46
-
47
- This is equivalent to using the `--smol` flag on the command line.
48
-
49
- ### Test execution
50
-
51
- #### concurrentTestGlob
52
-
53
- Automatically run test files matching a glob pattern with concurrent test execution enabled. This is useful for gradually migrating test suites to concurrent execution or for running specific test types concurrently.
54
-
55
- ```toml
56
- [test]
57
- concurrentTestGlob = "**/concurrent-*.test.ts" # Run files matching this pattern concurrently
58
- ```
59
-
60
- Test files matching this pattern will behave as if the `--concurrent` flag was passed, running all tests within those files concurrently. This allows you to:
61
-
62
- - Gradually migrate your test suite to concurrent execution
63
- - Run integration tests concurrently while keeping unit tests sequential
64
- - Separate fast concurrent tests from tests that require sequential execution
65
-
66
- The `--concurrent` CLI flag will override this setting when specified, forcing all tests to run concurrently regardless of the glob pattern.
67
-
68
- #### randomize
69
-
70
- Run tests in random order to identify tests with hidden dependencies:
71
-
72
- ```toml
73
- [test]
74
- randomize = true
75
- ```
76
-
77
- #### seed
78
-
79
- Specify a seed for reproducible random test order. Requires `randomize = true`:
80
-
81
- ```toml
82
- [test]
83
- randomize = true
84
- seed = 2444615283
85
- ```
86
-
87
- #### rerunEach
88
-
89
- Re-run each test file multiple times to identify flaky tests:
90
-
91
- ```toml
92
- [test]
93
- rerunEach = 3
94
- ```
95
-
96
- ### Coverage options
97
-
98
- In addition to the options documented in the [coverage documentation](./coverage.md), the following options are available:
99
-
100
- #### coverageSkipTestFiles
101
-
102
- Exclude files matching test patterns (e.g., \*.test.ts) from the coverage report:
103
-
104
- ```toml
105
- [test]
106
- coverageSkipTestFiles = true # Exclude test files from coverage reports
107
- ```
108
-
109
- #### coverageThreshold (Object form)
110
-
111
- The coverage threshold can be specified either as a number (as shown in the coverage documentation) or as an object with specific thresholds:
112
-
113
- ```toml
114
- [test]
115
- # Set specific thresholds for different coverage metrics
116
- coverageThreshold = { lines = 0.9, functions = 0.8, statements = 0.85 }
117
- ```
118
-
119
- Setting any of these enables `fail_on_low_coverage`, causing the test run to fail if coverage is below the threshold.
120
-
121
- #### coveragePathIgnorePatterns
122
-
123
- Exclude specific files or file patterns from coverage reports using glob patterns:
124
-
125
- ```toml
126
- [test]
127
- # Single pattern
128
- coveragePathIgnorePatterns = "**/*.spec.ts"
129
-
130
- # Multiple patterns
131
- coveragePathIgnorePatterns = [
132
- "**/*.spec.ts",
133
- "**/*.test.ts",
134
- "src/utils/**",
135
- "*.config.js"
136
- ]
137
- ```
138
-
139
- Files matching any of these patterns will be excluded from coverage calculation and reporting. See the [coverage documentation](./coverage.md) for more details and examples.
140
-
141
- #### coverageIgnoreSourcemaps
142
-
143
- Internally, Bun transpiles every file. That means code coverage must also go through sourcemaps before they can be reported. We expose this as a flag to allow you to opt out of this behavior, but it will be confusing because during the transpilation process, Bun may move code around and change variable names. This option is mostly useful for debugging coverage issues.
144
-
145
- ```toml
146
- [test]
147
- coverageIgnoreSourcemaps = true # Don't use sourcemaps for coverage analysis
148
- ```
149
-
150
- When using this option, you probably want to stick a `// @bun` comment at the top of the source file to opt out of the transpilation process.
151
-
152
- ### Install settings inheritance
153
-
154
- The `bun test` command inherits relevant network and installation configuration (registry, cafile, prefer, exact, etc.) from the `[install]` section of bunfig.toml. This is important if tests need to interact with private registries or require specific install behaviors triggered during the test run.
@@ -1,142 +0,0 @@
1
- Bun's test runner now supports built-in _code coverage reporting_. This makes it easy to see how much of the codebase is covered by tests, and find areas that are not currently well-tested.
2
-
3
- ## Enabling coverage
4
-
5
- `bun:test` supports seeing which lines of code are covered by tests. To use this feature, pass `--coverage` to the CLI. It will print out a coverage report to the console:
6
-
7
- ```js
8
- $ bun test --coverage
9
- -------------|---------|---------|-------------------
10
- File | % Funcs | % Lines | Uncovered Line #s
11
- -------------|---------|---------|-------------------
12
- All files | 38.89 | 42.11 |
13
- index-0.ts | 33.33 | 36.84 | 10-15,19-24
14
- index-1.ts | 33.33 | 36.84 | 10-15,19-24
15
- index-10.ts | 33.33 | 36.84 | 10-15,19-24
16
- index-2.ts | 33.33 | 36.84 | 10-15,19-24
17
- index-3.ts | 33.33 | 36.84 | 10-15,19-24
18
- index-4.ts | 33.33 | 36.84 | 10-15,19-24
19
- index-5.ts | 33.33 | 36.84 | 10-15,19-24
20
- index-6.ts | 33.33 | 36.84 | 10-15,19-24
21
- index-7.ts | 33.33 | 36.84 | 10-15,19-24
22
- index-8.ts | 33.33 | 36.84 | 10-15,19-24
23
- index-9.ts | 33.33 | 36.84 | 10-15,19-24
24
- index.ts | 100.00 | 100.00 |
25
- -------------|---------|---------|-------------------
26
- ```
27
-
28
- To always enable coverage reporting by default, add the following line to your `bunfig.toml`:
29
-
30
- ```toml
31
- [test]
32
-
33
- # always enable coverage
34
- coverage = true
35
- ```
36
-
37
- By default coverage reports will _include_ test files and _exclude_ sourcemaps. This is usually what you want, but it can be configured otherwise in `bunfig.toml`.
38
-
39
- ```toml
40
- [test]
41
- coverageSkipTestFiles = true # default false
42
- ```
43
-
44
- ### Coverage thresholds
45
-
46
- It is possible to specify a coverage threshold in `bunfig.toml`. If your test suite does not meet or exceed this threshold, `bun test` will exit with a non-zero exit code to indicate the failure.
47
-
48
- ```toml
49
- [test]
50
-
51
- # to require 90% line-level and function-level coverage
52
- coverageThreshold = 0.9
53
-
54
- # to set different thresholds for lines and functions
55
- coverageThreshold = { lines = 0.9, functions = 0.9, statements = 0.9 }
56
- ```
57
-
58
- Setting any of these thresholds enables `fail_on_low_coverage`, causing the test run to fail if coverage is below the threshold.
59
-
60
- ### Sourcemaps
61
-
62
- Internally, Bun transpiles all files by default, so Bun automatically generates an internal [source map](https://web.dev/source-maps/) that maps lines of your original source code onto Bun's internal representation. If for any reason you want to disable this, set `test.coverageIgnoreSourcemaps` to `true`; this will rarely be desirable outside of advanced use cases.
63
-
64
- ```toml
65
- [test]
66
- coverageIgnoreSourcemaps = true # default false
67
- ```
68
-
69
- ### Exclude files from coverage
70
-
71
- #### Skip test files
72
-
73
- By default, test files themselves are included in coverage reports. You can exclude them with:
74
-
75
- ```toml
76
- [test]
77
- coverageSkipTestFiles = true # default false
78
- ```
79
-
80
- This will exclude files matching test patterns (e.g., _.test.ts, _\_spec.js) from the coverage report.
81
-
82
- #### Ignore specific paths and patterns
83
-
84
- You can exclude specific files or file patterns from coverage reports using `coveragePathIgnorePatterns`:
85
-
86
- ```toml
87
- [test]
88
- # Single pattern
89
- coveragePathIgnorePatterns = "**/*.spec.ts"
90
-
91
- # Multiple patterns
92
- coveragePathIgnorePatterns = [
93
- "**/*.spec.ts",
94
- "**/*.test.ts",
95
- "src/utils/**",
96
- "*.config.js"
97
- ]
98
- ```
99
-
100
- This option accepts glob patterns and works similarly to Jest's `collectCoverageFrom` ignore patterns. Files matching any of these patterns will be excluded from coverage calculation and reporting in both text and LCOV outputs.
101
-
102
- Common use cases:
103
-
104
- - Exclude utility files: `"src/utils/**"`
105
- - Exclude configuration files: `"*.config.js"`
106
- - Exclude specific test patterns: `"**/*.spec.ts"`
107
- - Exclude build artifacts: `"dist/**"`
108
-
109
- ### Coverage defaults
110
-
111
- By default, coverage reports:
112
-
113
- 1. Exclude `node_modules` directories
114
- 2. Exclude files loaded via non-JS/TS loaders (e.g., .css, .txt) unless a custom JS loader is specified
115
- 3. Include test files themselves (can be disabled with `coverageSkipTestFiles = true` as shown above)
116
- 4. Can exclude additional files with `coveragePathIgnorePatterns` as shown above
117
-
118
- ### Coverage reporters
119
-
120
- By default, coverage reports will be printed to the console.
121
-
122
- For persistent code coverage reports in CI environments and for other tools, you can pass a `--coverage-reporter=lcov` CLI option or `coverageReporter` option in `bunfig.toml`.
123
-
124
- ```toml
125
- [test]
126
- coverageReporter = ["text", "lcov"] # default ["text"]
127
- coverageDir = "path/to/somewhere" # default "coverage"
128
- ```
129
-
130
- | Reporter | Description |
131
- | -------- | --------------------------------------------------------------------------- |
132
- | `text` | Prints a text summary of the coverage to the console. |
133
- | `lcov` | Save coverage in [lcov](https://github.com/linux-test-project/lcov) format. |
134
-
135
- #### lcov coverage reporter
136
-
137
- To generate an lcov report, you can use the `lcov` reporter. This will generate an `lcov.info` file in the `coverage` directory.
138
-
139
- ```toml
140
- [test]
141
- coverageReporter = "lcov"
142
- ```
@@ -1,85 +0,0 @@
1
- bun test's file discovery mechanism determines which files to run as tests. Understanding how it works helps you structure your test files effectively.
2
-
3
- ## Default Discovery Logic
4
-
5
- By default, `bun test` recursively searches the project directory for files that match specific patterns:
6
-
7
- - `*.test.{js|jsx|ts|tsx}` - Files ending with `.test.js`, `.test.jsx`, `.test.ts`, or `.test.tsx`
8
- - `*_test.{js|jsx|ts|tsx}` - Files ending with `_test.js`, `_test.jsx`, `_test.ts`, or `_test.tsx`
9
- - `*.spec.{js|jsx|ts|tsx}` - Files ending with `.spec.js`, `.spec.jsx`, `.spec.ts`, or `.spec.tsx`
10
- - `*_spec.{js|jsx|ts|tsx}` - Files ending with `_spec.js`, `_spec.jsx`, `_spec.ts`, or `_spec.tsx`
11
-
12
- ## Exclusions
13
-
14
- By default, Bun test ignores:
15
-
16
- - `node_modules` directories
17
- - Hidden directories (those starting with a period `.`)
18
- - Files that don't have JavaScript-like extensions (based on available loaders)
19
-
20
- ## Customizing Test Discovery
21
-
22
- ### Position Arguments as Filters
23
-
24
- You can filter which test files run by passing additional positional arguments to `bun test`:
25
-
26
- ```bash
27
- $ bun test <filter> <filter> ...
28
- ```
29
-
30
- Any test file with a path that contains one of the filters will run. These filters are simple substring matches, not glob patterns.
31
-
32
- For example, to run all tests in a `utils` directory:
33
-
34
- ```bash
35
- $ bun test utils
36
- ```
37
-
38
- This would match files like `src/utils/string.test.ts` and `lib/utils/array_test.js`.
39
-
40
- ### Specifying Exact File Paths
41
-
42
- To run a specific file in the test runner, make sure the path starts with `./` or `/` to distinguish it from a filter name:
43
-
44
- ```bash
45
- $ bun test ./test/specific-file.test.ts
46
- ```
47
-
48
- ### Filter by Test Name
49
-
50
- To filter tests by name rather than file path, use the `-t`/`--test-name-pattern` flag with a regex pattern:
51
-
52
- ```sh
53
- # run all tests with "addition" in the name
54
- $ bun test --test-name-pattern addition
55
- ```
56
-
57
- The pattern is matched against a concatenated string of the test name prepended with the labels of all its parent describe blocks, separated by spaces. For example, a test defined as:
58
-
59
- ```js
60
- describe("Math", () => {
61
- describe("operations", () => {
62
- test("should add correctly", () => {
63
- // ...
64
- });
65
- });
66
- });
67
- ```
68
-
69
- Would be matched against the string "Math operations should add correctly".
70
-
71
- ### Changing the Root Directory
72
-
73
- By default, Bun looks for test files starting from the current working directory. You can change this with the `root` option in your `bunfig.toml`:
74
-
75
- ```toml
76
- [test]
77
- root = "src" # Only scan for tests in the src directory
78
- ```
79
-
80
- ## Execution Order
81
-
82
- Tests are run in the following order:
83
-
84
- 1. Test files are executed sequentially (not in parallel)
85
- 2. Within each file, tests run sequentially based on their definition order