bun-types 1.3.2-canary.20251105T140650 → 1.3.2

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 (370) hide show
  1. package/bun.d.ts +102 -6
  2. package/docs/README.md +28 -0
  3. package/docs/bundler/bytecode.mdx +465 -0
  4. package/docs/bundler/{css.md → css.mdx} +97 -101
  5. package/docs/bundler/esbuild.mdx +253 -0
  6. package/docs/bundler/{executables.md → executables.mdx} +130 -221
  7. package/docs/bundler/fullstack.mdx +1064 -0
  8. package/docs/bundler/{hmr.md → hot-reloading.mdx} +74 -79
  9. package/docs/bundler/{html.md → html-static.mdx} +148 -111
  10. package/docs/bundler/index.mdx +1499 -0
  11. package/docs/bundler/loaders.mdx +356 -0
  12. package/docs/bundler/{macros.md → macros.mdx} +83 -84
  13. package/docs/bundler/minifier.mdx +1306 -0
  14. package/docs/bundler/plugins.mdx +411 -0
  15. package/docs/feedback.mdx +85 -0
  16. package/docs/guides/binary/{arraybuffer-to-array.md → arraybuffer-to-array.mdx} +3 -1
  17. package/docs/guides/binary/{arraybuffer-to-blob.md → arraybuffer-to-blob.mdx} +3 -1
  18. package/docs/guides/binary/{arraybuffer-to-buffer.md → arraybuffer-to-buffer.mdx} +3 -1
  19. package/docs/guides/binary/{arraybuffer-to-string.md → arraybuffer-to-string.mdx} +3 -1
  20. package/docs/guides/binary/{arraybuffer-to-typedarray.md → arraybuffer-to-typedarray.mdx} +3 -1
  21. package/docs/guides/binary/{blob-to-arraybuffer.md → blob-to-arraybuffer.mdx} +3 -1
  22. package/docs/guides/binary/{blob-to-dataview.md → blob-to-dataview.mdx} +3 -1
  23. package/docs/guides/binary/{blob-to-stream.md → blob-to-stream.mdx} +3 -1
  24. package/docs/guides/binary/{blob-to-string.md → blob-to-string.mdx} +3 -1
  25. package/docs/guides/binary/{blob-to-typedarray.md → blob-to-typedarray.mdx} +3 -1
  26. package/docs/guides/binary/{buffer-to-arraybuffer.md → buffer-to-arraybuffer.mdx} +3 -1
  27. package/docs/guides/binary/{buffer-to-blob.md → buffer-to-blob.mdx} +3 -1
  28. package/docs/guides/binary/{buffer-to-readablestream.md → buffer-to-readablestream.mdx} +3 -1
  29. package/docs/guides/binary/{buffer-to-string.md → buffer-to-string.mdx} +3 -1
  30. package/docs/guides/binary/{buffer-to-typedarray.md → buffer-to-typedarray.mdx} +3 -1
  31. package/docs/guides/binary/{dataview-to-string.md → dataview-to-string.mdx} +3 -1
  32. package/docs/guides/binary/{typedarray-to-arraybuffer.md → typedarray-to-arraybuffer.mdx} +3 -1
  33. package/docs/guides/binary/{typedarray-to-blob.md → typedarray-to-blob.mdx} +3 -1
  34. package/docs/guides/binary/{typedarray-to-buffer.md → typedarray-to-buffer.mdx} +3 -1
  35. package/docs/guides/binary/{typedarray-to-dataview.md → typedarray-to-dataview.mdx} +3 -1
  36. package/docs/guides/binary/{typedarray-to-readablestream.md → typedarray-to-readablestream.mdx} +3 -1
  37. package/docs/guides/binary/{typedarray-to-string.md → typedarray-to-string.mdx} +3 -1
  38. package/docs/guides/deployment/aws-lambda.mdx +204 -0
  39. package/docs/guides/deployment/digital-ocean.mdx +161 -0
  40. package/docs/guides/deployment/google-cloud-run.mdx +197 -0
  41. package/docs/guides/deployment/{railway.md → railway.mdx} +42 -54
  42. package/docs/guides/deployment/render.mdx +82 -0
  43. package/docs/guides/deployment/vercel.mdx +99 -0
  44. package/docs/guides/ecosystem/{astro.md → astro.mdx} +16 -6
  45. package/docs/guides/ecosystem/{discordjs.md → discordjs.mdx} +21 -18
  46. package/docs/guides/ecosystem/{docker.md → docker.mdx} +25 -14
  47. package/docs/guides/ecosystem/{drizzle.md → drizzle.mdx} +32 -22
  48. package/docs/guides/ecosystem/{edgedb.md → edgedb.mdx} +63 -34
  49. package/docs/guides/ecosystem/{elysia.md → elysia.mdx} +11 -11
  50. package/docs/guides/ecosystem/{express.md → express.mdx} +12 -9
  51. package/docs/guides/ecosystem/{hono.md → hono.mdx} +16 -8
  52. package/docs/guides/ecosystem/{mongoose.md → mongoose.mdx} +26 -21
  53. package/docs/guides/ecosystem/{neon-drizzle.md → neon-drizzle.mdx} +49 -35
  54. package/docs/guides/ecosystem/{neon-serverless-postgres.md → neon-serverless-postgres.mdx} +16 -11
  55. package/docs/guides/ecosystem/{nextjs.md → nextjs.mdx} +18 -10
  56. package/docs/guides/ecosystem/{nuxt.md → nuxt.mdx} +45 -11
  57. package/docs/guides/ecosystem/{pm2.md → pm2.mdx} +7 -9
  58. package/docs/guides/ecosystem/prisma-postgres.mdx +169 -0
  59. package/docs/guides/ecosystem/prisma.mdx +164 -0
  60. package/docs/guides/ecosystem/{qwik.md → qwik.mdx} +18 -11
  61. package/docs/guides/ecosystem/{react.md → react.mdx} +9 -7
  62. package/docs/guides/ecosystem/{remix.md → remix.mdx} +45 -26
  63. package/docs/guides/ecosystem/{sentry.md → sentry.mdx} +7 -5
  64. package/docs/guides/ecosystem/{solidstart.md → solidstart.mdx} +21 -13
  65. package/docs/guides/ecosystem/{ssr-react.md → ssr-react.mdx} +9 -11
  66. package/docs/guides/ecosystem/{stric.md → stric.mdx} +16 -17
  67. package/docs/guides/ecosystem/{sveltekit.md → sveltekit.mdx} +42 -29
  68. package/docs/guides/ecosystem/{systemd.md → systemd.mdx} +27 -26
  69. package/docs/guides/ecosystem/upstash.mdx +87 -0
  70. package/docs/guides/ecosystem/{vite.md → vite.mdx} +20 -14
  71. package/docs/guides/html-rewriter/{extract-links.md → extract-links.mdx} +11 -7
  72. package/docs/guides/html-rewriter/{extract-social-meta.md → extract-social-meta.mdx} +6 -2
  73. package/docs/guides/http/{cluster.md → cluster.mdx} +10 -7
  74. package/docs/guides/http/{fetch-unix.md → fetch-unix.mdx} +5 -3
  75. package/docs/guides/http/{fetch.md → fetch.mdx} +5 -3
  76. package/docs/guides/http/{file-uploads.md → file-uploads.mdx} +18 -15
  77. package/docs/guides/http/{hot.md → hot.mdx} +9 -7
  78. package/docs/guides/http/{proxy.md → proxy.mdx} +7 -5
  79. package/docs/guides/http/{server.md → server.mdx} +4 -2
  80. package/docs/guides/http/{simple.md → simple.mdx} +4 -2
  81. package/docs/guides/http/{stream-file.md → stream-file.mdx} +6 -4
  82. package/docs/guides/http/{stream-iterator.md → stream-iterator.mdx} +5 -3
  83. package/docs/guides/http/{stream-node-streams-in-bun.md → stream-node-streams-in-bun.mdx} +4 -2
  84. package/docs/guides/http/{tls.md → tls.mdx} +5 -3
  85. package/docs/guides/index.mdx +10 -0
  86. package/docs/guides/install/{add-dev.md → add-dev.mdx} +8 -6
  87. package/docs/guides/install/add-git.mdx +38 -0
  88. package/docs/guides/install/{add-optional.md → add-optional.mdx} +7 -5
  89. package/docs/guides/install/{add-peer.md → add-peer.mdx} +13 -11
  90. package/docs/guides/install/{add-tarball.md → add-tarball.mdx} +7 -5
  91. package/docs/guides/install/{add.md → add.mdx} +12 -10
  92. package/docs/guides/install/{azure-artifacts.md → azure-artifacts.mdx} +15 -12
  93. package/docs/guides/{runtime/cicd.md → install/cicd.mdx} +13 -13
  94. package/docs/guides/install/{custom-registry.md → custom-registry.mdx} +6 -4
  95. package/docs/guides/install/{from-npm-install-to-bun-install.md → from-npm-install-to-bun-install.mdx} +50 -34
  96. package/docs/guides/install/{git-diff-bun-lockfile.md → git-diff-bun-lockfile.mdx} +14 -11
  97. package/docs/guides/install/{jfrog-artifactory.md → jfrog-artifactory.mdx} +4 -4
  98. package/docs/guides/install/{npm-alias.md → npm-alias.mdx} +6 -4
  99. package/docs/guides/install/{registry-scope.md → registry-scope.mdx} +6 -4
  100. package/docs/guides/install/{trusted.md → trusted.mdx} +22 -18
  101. package/docs/guides/install/{workspaces.md → workspaces.mdx} +13 -13
  102. package/docs/guides/install/{yarnlock.md → yarnlock.mdx} +15 -9
  103. package/docs/guides/process/{argv.md → argv.mdx} +17 -9
  104. package/docs/guides/process/{ctrl-c.md → ctrl-c.mdx} +4 -2
  105. package/docs/guides/process/{ipc.md → ipc.mdx} +13 -10
  106. package/docs/guides/process/{nanoseconds.md → nanoseconds.mdx} +3 -1
  107. package/docs/guides/process/{os-signals.md → os-signals.mdx} +3 -1
  108. package/docs/guides/process/{spawn-stderr.md → spawn-stderr.mdx} +4 -1
  109. package/docs/guides/process/{spawn-stdout.md → spawn-stdout.mdx} +3 -1
  110. package/docs/guides/process/{spawn.md → spawn.mdx} +3 -1
  111. package/docs/guides/process/{stdin.md → stdin.mdx} +15 -7
  112. package/docs/guides/read-file/{arraybuffer.md → arraybuffer.mdx} +5 -3
  113. package/docs/guides/read-file/{buffer.md → buffer.mdx} +4 -2
  114. package/docs/guides/read-file/{exists.md → exists.mdx} +4 -2
  115. package/docs/guides/read-file/{json.md → json.mdx} +4 -2
  116. package/docs/guides/read-file/{mime.md → mime.mdx} +3 -1
  117. package/docs/guides/read-file/{stream.md → stream.mdx} +3 -1
  118. package/docs/guides/read-file/{string.md → string.mdx} +3 -1
  119. package/docs/guides/read-file/{uint8array.md → uint8array.mdx} +3 -1
  120. package/docs/guides/read-file/{watch.md → watch.mdx} +6 -8
  121. package/docs/guides/runtime/{build-time-constants.md → build-time-constants.mdx} +24 -22
  122. package/docs/guides/{install/cicd.md → runtime/cicd.mdx} +11 -7
  123. package/docs/guides/runtime/{codesign-macos-executable.md → codesign-macos-executable.mdx} +14 -9
  124. package/docs/guides/runtime/{define-constant.md → define-constant.mdx} +20 -16
  125. package/docs/guides/runtime/{delete-directory.md → delete-directory.mdx} +5 -3
  126. package/docs/guides/runtime/{delete-file.md → delete-file.mdx} +4 -2
  127. package/docs/guides/runtime/{heap-snapshot.md → heap-snapshot.mdx} +5 -3
  128. package/docs/guides/runtime/{import-html.md → import-html.mdx} +4 -2
  129. package/docs/guides/runtime/{import-json.md → import-json.mdx} +6 -4
  130. package/docs/guides/runtime/{import-toml.md → import-toml.mdx} +5 -3
  131. package/docs/guides/runtime/{import-yaml.md → import-yaml.mdx} +9 -7
  132. package/docs/guides/runtime/{read-env.md → read-env.mdx} +10 -5
  133. package/docs/guides/runtime/{set-env.md → set-env.mdx} +14 -10
  134. package/docs/guides/runtime/{shell.md → shell.mdx} +6 -4
  135. package/docs/guides/runtime/{timezone.md → timezone.mdx} +10 -7
  136. package/docs/guides/runtime/{tsconfig-paths.md → tsconfig-paths.mdx} +5 -3
  137. package/docs/guides/runtime/{typescript.md → typescript.mdx} +8 -6
  138. package/docs/guides/runtime/{vscode-debugger.md → vscode-debugger.mdx} +12 -11
  139. package/docs/guides/runtime/{web-debugger.md → web-debugger.mdx} +39 -18
  140. package/docs/guides/streams/{node-readable-to-arraybuffer.md → node-readable-to-arraybuffer.mdx} +3 -1
  141. package/docs/guides/streams/{node-readable-to-blob.md → node-readable-to-blob.mdx} +3 -1
  142. package/docs/guides/streams/{node-readable-to-json.md → node-readable-to-json.mdx} +3 -1
  143. package/docs/guides/streams/{node-readable-to-string.md → node-readable-to-string.mdx} +3 -1
  144. package/docs/guides/streams/{node-readable-to-uint8array.md → node-readable-to-uint8array.mdx} +3 -1
  145. package/docs/guides/streams/{to-array.md → to-array.mdx} +3 -1
  146. package/docs/guides/streams/{to-arraybuffer.md → to-arraybuffer.mdx} +3 -1
  147. package/docs/guides/streams/{to-blob.md → to-blob.mdx} +3 -1
  148. package/docs/guides/streams/{to-buffer.md → to-buffer.mdx} +3 -1
  149. package/docs/guides/streams/{to-json.md → to-json.mdx} +4 -2
  150. package/docs/guides/streams/{to-string.md → to-string.mdx} +3 -1
  151. package/docs/guides/streams/{to-typedarray.md → to-typedarray.mdx} +3 -1
  152. package/docs/guides/test/{bail.md → bail.mdx} +7 -5
  153. package/docs/guides/test/{coverage-threshold.md → coverage-threshold.mdx} +14 -7
  154. package/docs/guides/test/{coverage.md → coverage.mdx} +9 -4
  155. package/docs/guides/test/{happy-dom.md → happy-dom.mdx} +13 -8
  156. package/docs/guides/test/{migrate-from-jest.md → migrate-from-jest.mdx} +19 -37
  157. package/docs/guides/test/{mock-clock.md → mock-clock.mdx} +3 -1
  158. package/docs/guides/test/{mock-functions.md → mock-functions.mdx} +7 -5
  159. package/docs/guides/test/{rerun-each.md → rerun-each.mdx} +5 -3
  160. package/docs/guides/test/{run-tests.md → run-tests.mdx} +16 -11
  161. package/docs/guides/test/{skip-tests.md → skip-tests.mdx} +8 -4
  162. package/docs/guides/test/{snapshot.md → snapshot.mdx} +20 -13
  163. package/docs/guides/test/spy-on.mdx +49 -0
  164. package/docs/guides/test/{svelte-test.md → svelte-test.mdx} +16 -23
  165. package/docs/guides/test/{testing-library.md → testing-library.mdx} +18 -17
  166. package/docs/guides/test/{timeout.md → timeout.mdx} +5 -3
  167. package/docs/guides/test/{todo-tests.md → todo-tests.mdx} +13 -6
  168. package/docs/guides/test/{update-snapshots.md → update-snapshots.mdx} +9 -6
  169. package/docs/guides/test/{watch-mode.md → watch-mode.mdx} +9 -4
  170. package/docs/guides/util/{base64.md → base64.mdx} +3 -1
  171. package/docs/guides/util/{deep-equals.md → deep-equals.mdx} +5 -3
  172. package/docs/guides/util/{deflate.md → deflate.mdx} +3 -1
  173. package/docs/guides/util/{detect-bun.md → detect-bun.mdx} +3 -1
  174. package/docs/guides/util/{entrypoint.md → entrypoint.mdx} +4 -2
  175. package/docs/guides/util/{escape-html.md → escape-html.mdx} +3 -1
  176. package/docs/guides/util/{file-url-to-path.md → file-url-to-path.mdx} +3 -1
  177. package/docs/guides/util/{gzip.md → gzip.mdx} +3 -1
  178. package/docs/guides/util/{hash-a-password.md → hash-a-password.mdx} +3 -1
  179. package/docs/guides/util/{import-meta-dir.md → import-meta-dir.mdx} +4 -2
  180. package/docs/guides/util/{import-meta-file.md → import-meta-file.mdx} +4 -2
  181. package/docs/guides/util/{import-meta-path.md → import-meta-path.mdx} +4 -2
  182. package/docs/guides/util/{javascript-uuid.md → javascript-uuid.mdx} +3 -1
  183. package/docs/guides/util/{main.md → main.mdx} +19 -8
  184. package/docs/guides/util/{path-to-file-url.md → path-to-file-url.mdx} +3 -1
  185. package/docs/guides/util/{sleep.md → sleep.mdx} +3 -1
  186. package/docs/guides/util/{version.md → version.mdx} +6 -4
  187. package/docs/guides/util/{which-path-to-executable-bin.md → which-path-to-executable-bin.mdx} +4 -2
  188. package/docs/guides/websocket/{compression.md → compression.mdx} +5 -3
  189. package/docs/guides/websocket/{context.md → context.mdx} +9 -12
  190. package/docs/guides/websocket/{pubsub.md → pubsub.mdx} +5 -6
  191. package/docs/guides/websocket/{simple.md → simple.mdx} +5 -3
  192. package/docs/guides/write-file/{append.md → append.mdx} +3 -1
  193. package/docs/guides/write-file/{basic.md → basic.mdx} +3 -1
  194. package/docs/guides/write-file/{blob.md → blob.mdx} +3 -1
  195. package/docs/guides/write-file/{cat.md → cat.mdx} +4 -2
  196. package/docs/guides/write-file/{file-cp.md → file-cp.mdx} +3 -1
  197. package/docs/guides/write-file/{filesink.md → filesink.mdx} +3 -1
  198. package/docs/guides/write-file/{response.md → response.mdx} +3 -1
  199. package/docs/guides/write-file/{stdout.md → stdout.mdx} +3 -1
  200. package/docs/guides/write-file/{stream.md → stream.mdx} +3 -1
  201. package/docs/guides/write-file/{unlink.md → unlink.mdx} +3 -1
  202. package/docs/{index.md → index.mdx} +97 -41
  203. package/docs/installation.mdx +365 -0
  204. package/docs/{cli/bunx.md → pm/bunx.mdx} +25 -31
  205. package/docs/{install/catalogs.md → pm/catalogs.mdx} +18 -24
  206. package/docs/{cli/add.md → pm/cli/add.mdx} +61 -55
  207. package/docs/{install/audit.md → pm/cli/audit.mdx} +11 -8
  208. package/docs/{cli/install.md → pm/cli/install.mdx} +208 -81
  209. package/docs/{cli/link.md → pm/cli/link.mdx} +27 -19
  210. package/docs/{cli/outdated.md → pm/cli/outdated.mdx} +119 -12
  211. package/docs/{install/patch.md → pm/cli/patch.mdx} +25 -15
  212. package/docs/{cli/pm.md → pm/cli/pm.mdx} +96 -62
  213. package/docs/{cli/publish.md → pm/cli/publish.mdx} +38 -35
  214. package/docs/pm/cli/remove.mdx +16 -0
  215. package/docs/{cli/update.md → pm/cli/update.mdx} +26 -15
  216. package/docs/{cli/why.md → pm/cli/why.mdx} +27 -10
  217. package/docs/{cli/filter.md → pm/filter.mdx} +26 -14
  218. package/docs/{install/cache.md → pm/global-cache.mdx} +25 -12
  219. package/docs/{install/isolated.md → pm/isolated-installs.mdx} +32 -24
  220. package/docs/{install/lifecycle.md → pm/lifecycle.mdx} +20 -9
  221. package/docs/{install/lockfile.md → pm/lockfile.mdx} +18 -12
  222. package/docs/{install/npmrc.md → pm/npmrc.mdx} +30 -24
  223. package/docs/{install/overrides.md → pm/overrides.mdx} +47 -37
  224. package/docs/{install/registries.md → pm/scopes-registries.mdx} +8 -3
  225. package/docs/{install/security-scanner-api.md → pm/security-scanner-api.mdx} +22 -8
  226. package/docs/{install/workspaces.md → pm/workspaces.mdx} +17 -22
  227. package/docs/project/{benchmarking.md → benchmarking.mdx} +26 -11
  228. package/docs/project/{bindgen.md → bindgen.mdx} +12 -14
  229. package/docs/project/{building-windows.md → building-windows.mdx} +18 -47
  230. package/docs/project/{contributing.md → contributing.mdx} +56 -60
  231. package/docs/project/feedback.mdx +20 -0
  232. package/docs/project/license.mdx +78 -0
  233. package/docs/project/roadmap.mdx +8 -0
  234. package/docs/quickstart.mdx +240 -0
  235. package/docs/runtime/{autoimport.md → auto-install.mdx} +34 -31
  236. package/docs/{api/binary-data.md → runtime/binary-data.mdx} +77 -269
  237. package/docs/runtime/bun-apis.mdx +59 -0
  238. package/docs/runtime/{bunfig.md → bunfig.mdx} +95 -225
  239. package/docs/{api/cc.md → runtime/c-compiler.mdx} +16 -9
  240. package/docs/{api/spawn.md → runtime/child-process.mdx} +69 -119
  241. package/docs/{api/color.md → runtime/color.mdx} +6 -1
  242. package/docs/{api/console.md → runtime/console.mdx} +17 -7
  243. package/docs/{api/cookie.md → runtime/cookies.mdx} +24 -19
  244. package/docs/runtime/{debugger.md → debugger.mdx} +61 -51
  245. package/docs/runtime/environment-variables.mdx +214 -0
  246. package/docs/{api/ffi.md → runtime/ffi.mdx} +53 -45
  247. package/docs/{api/file-io.md → runtime/file-io.mdx} +41 -101
  248. package/docs/{api/file-system-router.md → runtime/file-system-router.mdx} +8 -2
  249. package/docs/{bundler/loaders.md → runtime/file-types.mdx} +56 -112
  250. package/docs/{api/glob.md → runtime/glob.mdx} +4 -1
  251. package/docs/runtime/globals.mdx +72 -0
  252. package/docs/{api/hashing.md → runtime/hashing.mdx} +18 -22
  253. package/docs/{api/html-rewriter.md → runtime/html-rewriter.mdx} +36 -30
  254. package/docs/runtime/http/cookies.mdx +79 -0
  255. package/docs/runtime/http/error-handling.mdx +40 -0
  256. package/docs/runtime/http/metrics.mdx +36 -0
  257. package/docs/runtime/http/routing.mdx +289 -0
  258. package/docs/runtime/http/server.mdx +647 -0
  259. package/docs/runtime/http/tls.mdx +101 -0
  260. package/docs/{api/websockets.md → runtime/http/websockets.mdx} +62 -231
  261. package/docs/{cli/run.md → runtime/index.mdx} +70 -108
  262. package/docs/runtime/jsx.mdx +115 -0
  263. package/docs/runtime/{modules.md → module-resolution.mdx} +83 -61
  264. package/docs/{api/dns.md → runtime/networking/dns.mdx} +23 -22
  265. package/docs/{api/fetch.md → runtime/networking/fetch.mdx} +10 -5
  266. package/docs/{api/tcp.md → runtime/networking/tcp.mdx} +59 -41
  267. package/docs/{api/udp.md → runtime/networking/udp.mdx} +14 -8
  268. package/docs/{api/node-api.md → runtime/node-api.mdx} +5 -0
  269. package/docs/runtime/{nodejs-apis.md → nodejs-compat.mdx} +9 -4
  270. package/docs/{bundler/plugins.md → runtime/plugins.mdx} +17 -61
  271. package/docs/{api/redis.md → runtime/redis.mdx} +65 -80
  272. package/docs/{api/s3.md → runtime/s3.mdx} +79 -66
  273. package/docs/{api/secrets.md → runtime/secrets.mdx} +27 -10
  274. package/docs/{api/semver.md → runtime/semver.mdx} +9 -4
  275. package/docs/runtime/{shell.md → shell.mdx} +52 -20
  276. package/docs/{api/sql.md → runtime/sql.mdx} +129 -99
  277. package/docs/{api/sqlite.md → runtime/sqlite.mdx} +162 -157
  278. package/docs/{api/streams.md → runtime/streams.mdx} +33 -31
  279. package/docs/{cli/bun-create.md → runtime/templating/create.mdx} +74 -143
  280. package/docs/{cli/init.md → runtime/templating/init.mdx} +24 -51
  281. package/docs/{api/transpiler.md → runtime/transpiler.mdx} +50 -38
  282. package/docs/{typescript.md → runtime/typescript.mdx} +7 -2
  283. package/docs/{api/utils.md → runtime/utils.mdx} +81 -50
  284. package/docs/runtime/{hot.md → watch-mode.mdx} +53 -37
  285. package/docs/runtime/web-apis.mdx +29 -0
  286. package/docs/{api/workers.md → runtime/workers.mdx} +28 -22
  287. package/docs/{api/yaml.md → runtime/yaml.mdx} +33 -232
  288. package/docs/snippets/cli/add.mdx +166 -0
  289. package/docs/snippets/cli/build.mdx +196 -0
  290. package/docs/snippets/cli/feedback.mdx +17 -0
  291. package/docs/snippets/cli/init.mdx +84 -0
  292. package/docs/snippets/cli/install.mdx +173 -0
  293. package/docs/snippets/cli/link.mdx +163 -0
  294. package/docs/snippets/cli/outdated.mdx +140 -0
  295. package/docs/snippets/cli/patch.mdx +171 -0
  296. package/docs/snippets/cli/publish.mdx +198 -0
  297. package/docs/snippets/cli/remove.mdx +146 -0
  298. package/docs/snippets/cli/run.mdx +293 -0
  299. package/docs/snippets/cli/test.mdx +100 -0
  300. package/docs/snippets/cli/update.mdx +144 -0
  301. package/docs/snippets/product-card.mdx +32 -0
  302. package/docs/snippets/product-tiles.mdx +94 -0
  303. package/docs/test/code-coverage.mdx +409 -0
  304. package/docs/test/configuration.mdx +467 -0
  305. package/docs/test/{time.md → dates-times.mdx} +23 -20
  306. package/docs/test/{discovery.md → discovery.mdx} +15 -10
  307. package/docs/test/dom.mdx +226 -0
  308. package/docs/{cli/test.md → test/index.mdx} +77 -94
  309. package/docs/test/lifecycle.mdx +348 -0
  310. package/docs/test/mocks.mdx +637 -0
  311. package/docs/test/{reporters.md → reporters.mdx} +15 -15
  312. package/docs/test/runtime-behavior.mdx +342 -0
  313. package/docs/test/snapshots.mdx +434 -0
  314. package/docs/test/writing-tests.mdx +635 -0
  315. package/docs/typescript.mdx +54 -0
  316. package/package.json +8 -6
  317. package/test.d.ts +2 -2
  318. package/docs/api/file.md +0 -19
  319. package/docs/api/globals.md +0 -387
  320. package/docs/api/http.md +0 -1408
  321. package/docs/api/import-meta.md +0 -69
  322. package/docs/benchmarks.md +0 -120
  323. package/docs/bun-flavored-toml.md +0 -42
  324. package/docs/bundler/css_modules.md +0 -145
  325. package/docs/bundler/fullstack.md +0 -418
  326. package/docs/bundler/index.md +0 -1735
  327. package/docs/bundler/intro.md +0 -75
  328. package/docs/bundler/vs-esbuild.md +0 -1127
  329. package/docs/cli/bun-completions.md +0 -3
  330. package/docs/cli/bun-install.md +0 -349
  331. package/docs/cli/bun-upgrade.md +0 -39
  332. package/docs/cli/info.md +0 -65
  333. package/docs/cli/patch-commit.md +0 -11
  334. package/docs/cli/remove.md +0 -7
  335. package/docs/cli/unlink.md +0 -9
  336. package/docs/contributing/upgrading-webkit.md +0 -57
  337. package/docs/ecosystem/elysia.md +0 -24
  338. package/docs/ecosystem/express.md +0 -37
  339. package/docs/ecosystem/hono.md +0 -18
  340. package/docs/ecosystem/react.md +0 -65
  341. package/docs/ecosystem/stric.md +0 -38
  342. package/docs/guides/ecosystem/prisma.md +0 -141
  343. package/docs/guides/ecosystem/render.md +0 -79
  344. package/docs/guides/install/add-git.md +0 -36
  345. package/docs/guides/test/spy-on.md +0 -46
  346. package/docs/install/index.md +0 -248
  347. package/docs/installation.md +0 -327
  348. package/docs/project/asan.md +0 -124
  349. package/docs/project/internals/build-process-for-ci.md +0 -75
  350. package/docs/project/licensing.md +0 -73
  351. package/docs/project/roadmap.md +0 -87
  352. package/docs/quickstart.md +0 -157
  353. package/docs/runtime/bun-apis.md +0 -207
  354. package/docs/runtime/env.md +0 -253
  355. package/docs/runtime/index.md +0 -312
  356. package/docs/runtime/jsx.md +0 -385
  357. package/docs/runtime/loaders.md +0 -130
  358. package/docs/runtime/plugins.md +0 -561
  359. package/docs/runtime/typescript.md +0 -139
  360. package/docs/runtime/web-apis.md +0 -128
  361. package/docs/test/configuration.md +0 -154
  362. package/docs/test/coverage.md +0 -142
  363. package/docs/test/dom.md +0 -75
  364. package/docs/test/examples/concurrent-test-glob.md +0 -132
  365. package/docs/test/hot.md +0 -15
  366. package/docs/test/lifecycle.md +0 -81
  367. package/docs/test/mocks.md +0 -313
  368. package/docs/test/runtime-behavior.md +0 -95
  369. package/docs/test/snapshots.md +0 -68
  370. package/docs/test/writing.md +0 -825
@@ -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
- ```
package/docs/test/dom.md DELETED
@@ -1,75 +0,0 @@
1
- Bun's test runner plays well with existing component and DOM testing libraries, including React Testing Library and [`happy-dom`](https://github.com/capricorn86/happy-dom).
2
-
3
- ## `happy-dom`
4
-
5
- For writing headless tests for your frontend code and components, we recommend [`happy-dom`](https://github.com/capricorn86/happy-dom). Happy DOM implements a complete set of HTML and DOM APIs in plain JavaScript, making it possible to simulate a browser environment with high fidelity.
6
-
7
- To get started install the `@happy-dom/global-registrator` package as a dev dependency.
8
-
9
- ```bash
10
- $ bun add -d @happy-dom/global-registrator
11
- ```
12
-
13
- We'll be using Bun's _preload_ functionality to register the `happy-dom` globals before running our tests. This step will make browser APIs like `document` available in the global scope. Create a file called `happydom.ts` in the root of your project and add the following code:
14
-
15
- ```ts
16
- import { GlobalRegistrator } from "@happy-dom/global-registrator";
17
-
18
- GlobalRegistrator.register();
19
- ```
20
-
21
- To preload this file before `bun test`, open or create a `bunfig.toml` file and add the following lines.
22
-
23
- ```toml
24
- [test]
25
- preload = "./happydom.ts"
26
- ```
27
-
28
- This will execute `happydom.ts` when you run `bun test`. Now you can write tests that use browser APIs like `document` and `window`.
29
-
30
- ```ts#dom.test.ts
31
- import {test, expect} from 'bun:test';
32
-
33
- test('dom test', () => {
34
- document.body.innerHTML = `<button>My button</button>`;
35
- const button = document.querySelector('button');
36
- expect(button?.innerText).toEqual('My button');
37
- });
38
- ```
39
-
40
- Depending on your `tsconfig.json` setup, you may see a `"Cannot find name 'document'"` type error in the code above. To "inject" the types for `document` and other browser APIs, add the following [triple-slash directive](https://www.typescriptlang.org/docs/handbook/triple-slash-directives.html) to the top of any test file.
41
-
42
- ```ts-diff#dom.test.ts
43
- + /// <reference lib="dom" />
44
-
45
- import {test, expect} from 'bun:test';
46
-
47
- test('dom test', () => {
48
- document.body.innerHTML = `<button>My button</button>`;
49
- const button = document.querySelector('button');
50
- expect(button?.innerText).toEqual('My button');
51
- });
52
- ```
53
-
54
- Let's run this test with `bun test`:
55
-
56
- ```bash
57
- $ bun test
58
- bun test v1.3.2-canary.20251105T140650
59
-
60
- dom.test.ts:
61
- ✓ dom test [0.82ms]
62
-
63
- 1 pass
64
- 0 fail
65
- 1 expect() calls
66
- Ran 1 tests across 1 files. 1 total [125.00ms]
67
- ```
68
-
69
- <!-- ## React Testing Library
70
-
71
- Once you've set up `happy-dom` as described above, you can use it with React Testing Library. To get started, install the `@testing-library/react` package as a dev dependency.
72
-
73
- ```bash
74
- $ bun add -d @testing-library/react
75
- ``` -->