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
@@ -0,0 +1,409 @@
1
+ ---
2
+ title: "Code coverage"
3
+ description: "Learn how to use Bun's built-in code coverage reporting to track test coverage and find untested areas in your codebase"
4
+ ---
5
+
6
+ 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.
7
+
8
+ ## Enabling Coverage
9
+
10
+ `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:
11
+
12
+ ```bash terminal icon="terminal"
13
+ bun test --coverage
14
+
15
+ -------------|---------|---------|-------------------
16
+ File | % Funcs | % Lines | Uncovered Line #s
17
+ -------------|---------|---------|-------------------
18
+ All files | 38.89 | 42.11 |
19
+ index-0.ts | 33.33 | 36.84 | 10-15,19-24
20
+ index-1.ts | 33.33 | 36.84 | 10-15,19-24
21
+ index-10.ts | 33.33 | 36.84 | 10-15,19-24
22
+ index-2.ts | 33.33 | 36.84 | 10-15,19-24
23
+ index-3.ts | 33.33 | 36.84 | 10-15,19-24
24
+ index-4.ts | 33.33 | 36.84 | 10-15,19-24
25
+ index-5.ts | 33.33 | 36.84 | 10-15,19-24
26
+ index-6.ts | 33.33 | 36.84 | 10-15,19-24
27
+ index-7.ts | 33.33 | 36.84 | 10-15,19-24
28
+ index-8.ts | 33.33 | 36.84 | 10-15,19-24
29
+ index-9.ts | 33.33 | 36.84 | 10-15,19-24
30
+ index.ts | 100.00 | 100.00 |
31
+ -------------|---------|---------|-------------------
32
+ ```
33
+
34
+ ### Enable by Default
35
+
36
+ To always enable coverage reporting by default, add the following line to your `bunfig.toml`:
37
+
38
+ ```toml title="bunfig.toml"
39
+ [test]
40
+ # Always enable coverage
41
+ coverage = true
42
+ ```
43
+
44
+ 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`.
45
+
46
+ ```toml title="bunfig.toml" icon="settings"
47
+ [test]
48
+ coverageSkipTestFiles = true # default false
49
+ ```
50
+
51
+ ## Coverage Thresholds
52
+
53
+ 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.
54
+
55
+ ### Simple Threshold
56
+
57
+ ```toml title="bunfig.toml" icon="settings"
58
+ [test]
59
+ # To require 90% line-level and function-level coverage
60
+ coverageThreshold = 0.9
61
+ ```
62
+
63
+ ### Detailed Thresholds
64
+
65
+ ```toml title="bunfig.toml" icon="settings"
66
+ [test]
67
+ # To set different thresholds for lines and functions
68
+ coverageThreshold = { lines = 0.9, functions = 0.9, statements = 0.9 }
69
+ ```
70
+
71
+ Setting any of these thresholds enables `fail_on_low_coverage`, causing the test run to fail if coverage is below the threshold.
72
+
73
+ ## Coverage Reporters
74
+
75
+ By default, coverage reports will be printed to the console.
76
+
77
+ 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`.
78
+
79
+ ```toml title="bunfig.toml" icon="settings"
80
+ [test]
81
+ coverageReporter = ["text", "lcov"] # default ["text"]
82
+ coverageDir = "path/to/somewhere" # default "coverage"
83
+ ```
84
+
85
+ ### Available Reporters
86
+
87
+ | Reporter | Description |
88
+ | -------- | ---------------------------------------------------- |
89
+ | `text` | Prints a text summary of the coverage to the console |
90
+ | `lcov` | Save coverage in lcov format |
91
+
92
+ ### LCOV Coverage Reporter
93
+
94
+ To generate an lcov report, you can use the lcov reporter. This will generate an `lcov.info` file in the coverage directory.
95
+
96
+ ```toml title="bunfig.toml" icon="settings"
97
+ [test]
98
+ coverageReporter = "lcov"
99
+ ```
100
+
101
+ ```bash terminal icon="terminal"
102
+ # Or via CLI
103
+ bun test --coverage --coverage-reporter=lcov
104
+ ```
105
+
106
+ The LCOV format is widely supported by various tools and services:
107
+
108
+ - **Code editors**: VS Code extensions can show coverage inline
109
+ - **CI/CD services**: GitHub Actions, GitLab CI, CircleCI
110
+ - **Coverage services**: Codecov, Coveralls
111
+ - **IDEs**: WebStorm, IntelliJ IDEA
112
+
113
+ #### Using LCOV with GitHub Actions
114
+
115
+ ```yaml title=".github/workflows/test.yml" icon="file-code"
116
+ name: Test with Coverage
117
+ on: [push, pull_request]
118
+
119
+ jobs:
120
+ test:
121
+ runs-on: ubuntu-latest
122
+ steps:
123
+ - uses: actions/checkout@v4
124
+ - uses: oven-sh/setup-bun@v2
125
+ - run: bun install
126
+ - run: bun test --coverage --coverage-reporter=lcov
127
+ - name: Upload coverage to Codecov
128
+ uses: codecov/codecov-action@v3
129
+ with:
130
+ file: ./coverage/lcov.info
131
+ ```
132
+
133
+ ## Excluding Files from Coverage
134
+
135
+ ### Skip Test Files
136
+
137
+ By default, test files themselves are included in coverage reports. You can exclude them with:
138
+
139
+ ```toml title="bunfig.toml" icon="settings"
140
+ [test]
141
+ coverageSkipTestFiles = true # default false
142
+ ```
143
+
144
+ This will exclude files matching test patterns (e.g., `*.test.ts`, `*.spec.js`) from the coverage report.
145
+
146
+ ### Ignore Specific Paths and Patterns
147
+
148
+ You can exclude specific files or file patterns from coverage reports using `coveragePathIgnorePatterns`:
149
+
150
+ ```toml title="bunfig.toml" icon="settings"
151
+ [test]
152
+ # Single pattern
153
+ coveragePathIgnorePatterns = "**/*.spec.ts"
154
+
155
+ # Multiple patterns
156
+ coveragePathIgnorePatterns = [
157
+ "**/*.spec.ts",
158
+ "**/*.test.ts",
159
+ "src/utils/**",
160
+ "*.config.js"
161
+ ]
162
+ ```
163
+
164
+ 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.
165
+
166
+ #### Common Use Cases
167
+
168
+ ```toml title="bunfig.toml" icon="settings"
169
+ [test]
170
+ coveragePathIgnorePatterns = [
171
+ # Exclude utility files
172
+ "src/utils/**",
173
+
174
+ # Exclude configuration files
175
+ "*.config.js",
176
+ "webpack.config.ts",
177
+ "vite.config.ts",
178
+
179
+ # Exclude specific test patterns
180
+ "**/*.spec.ts",
181
+ "**/*.e2e.ts",
182
+
183
+ # Exclude build artifacts
184
+ "dist/**",
185
+ "build/**",
186
+
187
+ # Exclude generated files
188
+ "src/generated/**",
189
+ "**/*.generated.ts",
190
+
191
+ # Exclude vendor/third-party code
192
+ "vendor/**",
193
+ "third-party/**"
194
+ ]
195
+ ```
196
+
197
+ ## Sourcemaps
198
+
199
+ Internally, Bun transpiles all files by default, so Bun automatically generates an internal source map 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.
200
+
201
+ ```toml title="bunfig.toml" icon="settings"
202
+ [test]
203
+ coverageIgnoreSourcemaps = true # default false
204
+ ```
205
+
206
+ <Warning>
207
+ When using this option, you probably want to stick a `// @bun` comment at the top of the source file to opt out of the
208
+ transpilation process.
209
+ </Warning>
210
+
211
+ ## Coverage Defaults
212
+
213
+ By default, coverage reports:
214
+
215
+ - **Exclude** `node_modules` directories
216
+ - **Exclude** files loaded via non-JS/TS loaders (e.g., `.css`, `.txt`) unless a custom JS loader is specified
217
+ - **Include** test files themselves (can be disabled with `coverageSkipTestFiles = true`)
218
+ - Can exclude additional files with `coveragePathIgnorePatterns`
219
+
220
+ ## Advanced Configuration
221
+
222
+ ### Custom Coverage Directory
223
+
224
+ ```toml title="bunfig.toml" icon="settings"
225
+ [test]
226
+ coverageDir = "coverage-reports" # default "coverage"
227
+ ```
228
+
229
+ ### Multiple Reporters
230
+
231
+ ```toml title="bunfig.toml" icon="settings"
232
+ [test]
233
+ coverageReporter = ["text", "lcov"]
234
+ ```
235
+
236
+ ### Coverage with Specific Test Patterns
237
+
238
+ ```bash terminal icon="terminal"
239
+ # Run coverage only on specific test files
240
+ bun test --coverage src/components/*.test.ts
241
+
242
+ # Run coverage with name pattern
243
+ bun test --coverage --test-name-pattern="API"
244
+ ```
245
+
246
+ ## CI/CD Integration
247
+
248
+ ### GitHub Actions Example
249
+
250
+ ```yaml title=".github/workflows/coverage.yml" icon="file-code"
251
+ name: Coverage Report
252
+ on: [push, pull_request]
253
+
254
+ jobs:
255
+ coverage:
256
+ runs-on: ubuntu-latest
257
+ steps:
258
+ - name: Checkout
259
+ uses: actions/checkout@v4
260
+
261
+ - name: Setup Bun
262
+ uses: oven-sh/setup-bun@v2
263
+
264
+ - name: Install dependencies
265
+ run: bun install
266
+
267
+ - name: Run tests with coverage
268
+ run: bun test --coverage --coverage-reporter=lcov
269
+
270
+ - name: Upload to Codecov
271
+ uses: codecov/codecov-action@v3
272
+ with:
273
+ file: ./coverage/lcov.info
274
+ fail_ci_if_error: true
275
+ ```
276
+
277
+ ### GitLab CI Example
278
+
279
+ ```yaml title=".gitlab-ci.yml"
280
+ test:coverage:
281
+ stage: test
282
+ script:
283
+ - bun install
284
+ - bun test --coverage --coverage-reporter=lcov
285
+ coverage: '/Lines\s*:\s*(\d+.\d+)%/'
286
+ artifacts:
287
+ reports:
288
+ coverage_report:
289
+ coverage_format: cobertura
290
+ path: coverage/lcov.info
291
+ ```
292
+
293
+ ## Interpreting Coverage Reports
294
+
295
+ ### Text Output Explanation
296
+
297
+ ```
298
+ -------------|---------|---------|-------------------
299
+ File | % Funcs | % Lines | Uncovered Line #s
300
+ -------------|---------|---------|-------------------
301
+ All files | 85.71 | 90.48 |
302
+ src/ | 85.71 | 90.48 |
303
+ utils.ts | 100.00 | 100.00 |
304
+ api.ts | 75.00 | 85.71 | 15-18,25
305
+ main.ts | 80.00 | 88.89 | 42,50-52
306
+ -------------|---------|---------|-------------------
307
+ ```
308
+
309
+ - **% Funcs**: Percentage of functions that were called during tests
310
+ - **% Lines**: Percentage of executable lines that were run during tests
311
+ - **Uncovered Line #s**: Specific line numbers that were not executed
312
+
313
+ ### What to Aim For
314
+
315
+ - **80%+ overall coverage**: Generally considered good
316
+ - **90%+ critical paths**: Important business logic should be well-tested
317
+ - **100% utility functions**: Pure functions and utilities are easy to test completely
318
+ - **Lower coverage for UI components**: Often acceptable as they may require integration tests
319
+
320
+ ## Best Practices
321
+
322
+ ### Focus on Quality, Not Just Quantity
323
+
324
+ ```ts title="test.ts" icon="/icons/typescript.svg"
325
+ // Good: Test actual functionality
326
+ test("calculateTax should handle different tax rates", () => {
327
+ expect(calculateTax(100, 0.08)).toBe(8);
328
+ expect(calculateTax(100, 0.1)).toBe(10);
329
+ expect(calculateTax(0, 0.08)).toBe(0);
330
+ });
331
+
332
+ // Avoid: Just hitting lines for coverage
333
+ test("calculateTax exists", () => {
334
+ calculateTax(100, 0.08); // No assertions!
335
+ });
336
+ ```
337
+
338
+ ### Test Edge Cases
339
+
340
+ ```ts title="test.ts" icon="/icons/typescript.svg"
341
+ test("user input validation", () => {
342
+ // Test normal case
343
+ expect(validateEmail("user@example.com")).toBe(true);
344
+
345
+ // Test edge cases that improve coverage meaningfully
346
+ expect(validateEmail("")).toBe(false);
347
+ expect(validateEmail("invalid")).toBe(false);
348
+ expect(validateEmail(null)).toBe(false);
349
+ });
350
+ ```
351
+
352
+ ### Use Coverage to Find Missing Tests
353
+
354
+ ```bash terminal icon="terminal"
355
+ # Run coverage to identify untested code
356
+ bun test --coverage
357
+
358
+ # Look at specific files that need attention
359
+ bun test --coverage src/critical-module.ts
360
+ ```
361
+
362
+ ### Combine with Other Quality Metrics
363
+
364
+ Coverage is just one metric. Also consider:
365
+
366
+ - **Code review quality**
367
+ - **Integration test coverage**
368
+ - **Error handling tests**
369
+ - **Performance tests**
370
+ - **Type safety**
371
+
372
+ ## Troubleshooting
373
+
374
+ ### Coverage Not Showing for Some Files
375
+
376
+ If files aren't appearing in coverage reports, they might not be imported by your tests. Coverage only tracks files that are actually loaded.
377
+
378
+ ```ts title="test.ts" icon="/icons/typescript.svg"
379
+ // Make sure to import the modules you want to test
380
+ import { myFunction } from "../src/my-module";
381
+
382
+ test("my function works", () => {
383
+ expect(myFunction()).toBeDefined();
384
+ });
385
+ ```
386
+
387
+ ### False Coverage Reports
388
+
389
+ If you see coverage reports that don't match your expectations:
390
+
391
+ 1. Check if source maps are working correctly
392
+ 2. Verify file patterns in `coveragePathIgnorePatterns`
393
+ 3. Ensure test files are actually importing the code to test
394
+
395
+ ### Performance Issues with Large Codebases
396
+
397
+ For large projects, coverage collection can slow down tests:
398
+
399
+ ```toml title="bunfig.toml" icon="settings"
400
+ [test]
401
+ # Exclude large directories you don't need coverage for
402
+ coveragePathIgnorePatterns = [
403
+ "node_modules/**",
404
+ "vendor/**",
405
+ "generated/**"
406
+ ]
407
+ ```
408
+
409
+ Consider running coverage only on CI or specific branches rather than every test run during development.