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,12 +1,16 @@
1
1
  ---
2
- name: Set a code coverage threshold with the Bun test runner
2
+ title: Set a code coverage threshold with the Bun test runner
3
+ sidebarTitle: Coverage threshold
4
+ mode: center
3
5
  ---
4
6
 
5
7
  Bun's test runner supports built-in code coverage reporting via the `--coverage` flag.
6
8
 
7
- ```sh
8
- $ bun test --coverage
9
+ ```sh terminal icon="terminal"
10
+ bun test --coverage
11
+ ```
9
12
 
13
+ ```txt
10
14
  test.test.ts:
11
15
  ✓ math > add [0.71ms]
12
16
  ✓ math > multiply [0.03ms]
@@ -28,7 +32,7 @@ All files | 66.67 | 77.78 |
28
32
 
29
33
  To set a minimum coverage threshold, add the following line to your `bunfig.toml`. This requires that 90% of your codebase is covered by tests.
30
34
 
31
- ```toml
35
+ ```toml bunfig.toml icon="settings"
32
36
  [test]
33
37
  # to require 90% line-level and function-level coverage
34
38
  coverageThreshold = 0.9
@@ -38,8 +42,11 @@ coverageThreshold = 0.9
38
42
 
39
43
  If your test suite does not meet this threshold, `bun test` will exit with a non-zero exit code to signal a failure.
40
44
 
41
- ```sh
42
- $ bun test --coverage
45
+ ```sh terminal icon="terminal"
46
+ bun test --coverage
47
+ ```
48
+
49
+ ```txt
43
50
  <test output>
44
51
  $ echo $?
45
52
  1 # this is the exit code of the previous command
@@ -49,7 +56,7 @@ $ echo $?
49
56
 
50
57
  Different thresholds can be set for line-level and function-level coverage.
51
58
 
52
- ```toml
59
+ ```toml bunfig.toml icon="settings"
53
60
  [test]
54
61
  # to set different thresholds for lines and functions
55
62
  coverageThreshold = { lines = 0.5, functions = 0.7 }
@@ -1,5 +1,7 @@
1
1
  ---
2
- name: Generate code coverage reports with the Bun test runner
2
+ title: Generate code coverage reports with the Bun test runner
3
+ sidebarTitle: Coverage reports
4
+ mode: center
3
5
  ---
4
6
 
5
7
  Bun's test runner 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.
@@ -10,8 +12,11 @@ Pass the `--coverage` flag to `bun test` to enable this feature. This will print
10
12
 
11
13
  The coverage report lists the source files that were executed during the test run, the percentage of functions and lines that were executed, and the line ranges that were not executed during the run.
12
14
 
13
- ```sh
14
- $ bun test --coverage
15
+ ```sh terminal icon="terminal"
16
+ bun test --coverage
17
+ ```
18
+
19
+ ```txt
15
20
 
16
21
  test.test.ts:
17
22
  ✓ math > add [0.71ms]
@@ -34,7 +39,7 @@ All files | 66.67 | 77.78 |
34
39
 
35
40
  To always enable coverage reporting by default, add the following line to your `bunfig.toml`:
36
41
 
37
- ```toml
42
+ ```toml bunfig.toml icon="settings"
38
43
  [test]
39
44
  coverage = true # always enable coverage
40
45
  ```
@@ -1,5 +1,7 @@
1
1
  ---
2
- name: Write browser DOM tests with Bun and happy-dom
2
+ title: Write browser DOM tests with Bun and happy-dom
3
+ sidebarTitle: DOM tests
4
+ mode: center
3
5
  ---
4
6
 
5
7
  You can write and run browser tests with Bun's test runner in conjunction with [Happy DOM](https://github.com/capricorn86/happy-dom). Happy DOM implements mocked versions of browser APIs like `document` and `location`.
@@ -8,15 +10,15 @@ You can write and run browser tests with Bun's test runner in conjunction with [
8
10
 
9
11
  To get started, install `happy-dom`.
10
12
 
11
- ```sh
12
- $ bun add -d @happy-dom/global-registrator
13
+ ```sh terminal icon="terminal"
14
+ bun add -d @happy-dom/global-registrator
13
15
  ```
14
16
 
15
17
  ---
16
18
 
17
19
  This module exports a "registrator" that injects the mocked browser APIs to the global scope.
18
20
 
19
- ```ts#happydom.ts
21
+ ```ts happydom.ts icon="/icons/typescript.svg"
20
22
  import { GlobalRegistrator } from "@happy-dom/global-registrator";
21
23
 
22
24
  GlobalRegistrator.register();
@@ -28,7 +30,7 @@ We need to make sure this file is executed before any of our test files. That's
28
30
 
29
31
  The `./happydom.ts` file should contain the registration code above.
30
32
 
31
- ```toml#bunfig.toml
33
+ ```toml bunfig.toml icon="settings"
32
34
  [test]
33
35
  preload = "./happydom.ts"
34
36
  ```
@@ -37,7 +39,7 @@ preload = "./happydom.ts"
37
39
 
38
40
  Now running `bun test` inside our project will automatically execute `happydom.ts` first. We can start writing tests that use browser APIs.
39
41
 
40
- ```ts
42
+ ```ts dom.test.ts icon="/icons/typescript.svg"
41
43
  import { test, expect } from "bun:test";
42
44
 
43
45
  test("set button text", () => {
@@ -51,8 +53,11 @@ test("set button text", () => {
51
53
 
52
54
  With Happy DOM properly configured, this test runs as expected.
53
55
 
54
- ```sh
55
- $ bun test
56
+ ```sh terminal icon="terminal"
57
+ bun test
58
+ ```
59
+
60
+ ```txt
56
61
 
57
62
  dom.test.ts:
58
63
  ✓ set button text [0.82ms]
@@ -1,13 +1,15 @@
1
1
  ---
2
- name: Migrate from Jest to Bun's test runner
2
+ title: Migrate from Jest to Bun's test runner
3
+ sidebarTitle: Migrate from Jest
4
+ mode: center
3
5
  ---
4
6
 
5
7
  In many cases, Bun's test runner can run Jest test suites with no code changes. Just run `bun test` instead of `npx jest`, `yarn test`, etc.
6
8
 
7
- ```sh
8
- - $ npx jest
9
- - $ yarn test
10
- + $ bun test
9
+ ```sh terminal icon="terminal"
10
+ npx jest # [!code --]
11
+ yarn test # [!code --]
12
+ bun test # [!code ++]
11
13
  ```
12
14
 
13
15
  ---
@@ -19,9 +21,9 @@ There's often no need for code changes.
19
21
 
20
22
  But if you'd rather switch to the `bun:test` imports, you can do that too.
21
23
 
22
- ```ts-diff
23
- - import {test, expect} from "@jest/globals";
24
- + import {test, expect} from "bun:test";
24
+ ```ts title="test.ts" icon="/icons/typescript.svg"
25
+ import { test, expect } from "@jest/globals"; // [!code --]
26
+ import { test, expect } from "bun:test"; // [!code ++]
25
27
  ```
26
28
 
27
29
  ---
@@ -34,7 +36,7 @@ Add this directive to _just one file_ in your project, such as:
34
36
  - Your test `preload.ts` setup file (if using `preload` in bunfig.toml)
35
37
  - Any single `.ts` file that TypeScript includes in your compilation
36
38
 
37
- ```ts
39
+ ```ts title="global.d.ts" icon="/icons/typescript.svg"
38
40
  /// <reference types="bun-types/test-globals" />
39
41
  ```
40
42
 
@@ -42,7 +44,7 @@ Add this directive to _just one file_ in your project, such as:
42
44
 
43
45
  Once added, all test files in your project automatically get TypeScript support for Jest globals:
44
46
 
45
- ```ts#math.test.ts
47
+ ```ts math.test.ts icon="/icons/typescript.svg"
46
48
  describe("my test suite", () => {
47
49
  test("should work", () => {
48
50
  expect(1 + 1).toBe(2);
@@ -72,7 +74,7 @@ If you're using `testEnvironment: "jsdom"` to run your tests in a browser-like e
72
74
 
73
75
  At the moment jsdom does not work in Bun due to its internal use of V8 APIs. Track support for it [here](https://github.com/oven-sh/bun/issues/3554).
74
76
 
75
- ```toml#bunfig.toml
77
+ ```toml bunfig.toml
76
78
  [test]
77
79
  preload = ["./happy-dom.ts"]
78
80
  ```
@@ -81,44 +83,24 @@ preload = ["./happy-dom.ts"]
81
83
 
82
84
  Replace `bail` in your Jest config with the `--bail` CLI flag.
83
85
 
84
- <!-- ```ts-diff
85
- - import type {Config} from 'jest';
86
- -
87
- - const config: Config = {
88
- - bail: 3
89
- - };
90
- ``` -->
91
-
92
- ```sh
93
- $ bun test --bail=3
86
+ ```sh terminal icon="terminal"
87
+ bun test --bail=3
94
88
  ```
95
89
 
96
90
  ---
97
91
 
98
92
  Replace `collectCoverage` with the `--coverage` CLI flag.
99
93
 
100
- <!-- ```ts-diff
101
- - import type {Config} from 'jest';
102
- -
103
- - const config: Config = {
104
- - collectCoverageFrom: [
105
- - '**/*.{js,jsx}',
106
- - '!**/node_modules/**',
107
- - '!**/vendor/**',
108
- - ],
109
- - };
110
- ``` -->
111
-
112
- ```sh
113
- $ bun test --coverage
94
+ ```sh terminal icon="terminal"
95
+ bun test --coverage
114
96
  ```
115
97
 
116
98
  ---
117
99
 
118
100
  Replace `testTimeout` with the `--test-timeout` CLI flag.
119
101
 
120
- ```sh
121
- $ bun test --timeout 10000
102
+ ```sh terminal icon="terminal"
103
+ bun test --timeout 10000
122
104
  ```
123
105
 
124
106
  ---
@@ -1,5 +1,7 @@
1
1
  ---
2
- name: Set the system time in Bun's test runner
2
+ title: Set the system time in Bun's test runner
3
+ sidebarTitle: Mock system time
4
+ mode: center
3
5
  ---
4
6
 
5
7
  Bun's test runner supports setting the system time programmatically with the `setSystemTime` function.
@@ -1,10 +1,12 @@
1
1
  ---
2
- name: Mock functions in `bun test`
2
+ title: Mock functions in `bun test`
3
+ sidebarTitle: Mock functions
4
+ mode: center
3
5
  ---
4
6
 
5
7
  Create mocks with the `mock` function from `bun:test`.
6
8
 
7
- ```ts
9
+ ```ts test.ts icon="/icons/typescript.svg"
8
10
  import { test, expect, mock } from "bun:test";
9
11
 
10
12
  const random = mock(() => Math.random());
@@ -14,7 +16,7 @@ const random = mock(() => Math.random());
14
16
 
15
17
  The mock function can accept arguments.
16
18
 
17
- ```ts
19
+ ```ts test.ts icon="/icons/typescript.svg"
18
20
  import { test, expect, mock } from "bun:test";
19
21
 
20
22
  const random = mock((multiplier: number) => multiplier * Math.random());
@@ -24,7 +26,7 @@ const random = mock((multiplier: number) => multiplier * Math.random());
24
26
 
25
27
  The result of `mock()` is a new function that's been decorated with some additional properties.
26
28
 
27
- ```ts
29
+ ```ts test.ts icon="/icons/typescript.svg"
28
30
  import { mock } from "bun:test";
29
31
 
30
32
  const random = mock((multiplier: number) => multiplier * Math.random());
@@ -46,7 +48,7 @@ random.mock.results;
46
48
 
47
49
  These extra properties make it possible to write `expect` assertions about usage of the mock function, including how many times it was called, the arguments, and the return values.
48
50
 
49
- ```ts
51
+ ```ts test.ts icon="/icons/typescript.svg"
50
52
  import { test, expect, mock } from "bun:test";
51
53
 
52
54
  const random = mock((multiplier: number) => multiplier * Math.random());
@@ -1,12 +1,14 @@
1
1
  ---
2
- name: Re-run tests multiple times with the Bun test runner
2
+ title: Re-run tests multiple times with the Bun test runner
3
+ sidebarTitle: Re-run tests
4
+ mode: center
3
5
  ---
4
6
 
5
7
  Use the `--rerun-each` flag to re-run every test multiple times with the Bun test runner. This is useful for finding flaky or non-deterministic tests.
6
8
 
7
- ```sh
9
+ ```sh terminal icon="terminal"
8
10
  # re-run each test 10 times
9
- $ bun test --rerun-each 10
11
+ bun test --rerun-each 10
10
12
  ```
11
13
 
12
14
  ---
@@ -1,5 +1,7 @@
1
1
  ---
2
- name: Run your tests with the Bun test runner
2
+ title: Run your tests with the Bun test runner
3
+ sidebarTitle: Run tests
4
+ mode: center
3
5
  ---
4
6
 
5
7
  Bun has a built-in [test runner](https://bun.sh/docs/cli/test) with a Jest-like `expect` API.
@@ -8,7 +10,7 @@ Bun has a built-in [test runner](https://bun.sh/docs/cli/test) with a Jest-like
8
10
 
9
11
  To use it, run the `bun test` command from your project directory. The test runner will recursively search for all files in the directory that match the following patterns and execute the tests they contain.
10
12
 
11
- ```txt
13
+ ```txt File Tree icon="folder-tree"
12
14
  *.test.{js|jsx|ts|tsx}
13
15
  *_test.{js|jsx|ts|tsx}
14
16
  *.spec.{js|jsx|ts|tsx}
@@ -19,10 +21,11 @@ To use it, run the `bun test` command from your project directory. The test runn
19
21
 
20
22
  Here's what the output of a typical test run looks like. In this case, there are three tests files (`test.test.js`, `test2.test.js`, and `test3.test.js`) containing two tests each (`add` and `multiply`).
21
23
 
22
- ```sh
23
- $ bun test
24
- bun test v1.3.2-canary.20251105T140650 (9c68abdb)
24
+ ```sh terminal icon="terminal"
25
+ bun test
26
+ ```
25
27
 
28
+ ```txt
26
29
  test.test.js:
27
30
  ✓ add [0.87ms]
28
31
  ✓ multiply [0.02ms]
@@ -45,10 +48,11 @@ Ran 6 tests across 3 files. [9.00ms]
45
48
 
46
49
  To only run certain test files, pass a positional argument to `bun test`. The runner will only execute files that contain that argument in their path.
47
50
 
48
- ```sh
49
- $ bun test test3
50
- bun test v1.3.2-canary.20251105T140650 (9c68abdb)
51
+ ```sh terminal icon="terminal"
52
+ bun test test3
53
+ ```
51
54
 
55
+ ```txt
52
56
  test3.test.js:
53
57
  ✓ add [1.40ms]
54
58
  ✓ multiply [0.03ms]
@@ -83,10 +87,11 @@ To filter which tests are executed by name, use the `-t`/`--test-name-pattern` f
83
87
 
84
88
  Adding `-t add` will only run tests with "add" in the name. This works with test names defined with `test` or test suite names defined with `describe`.
85
89
 
86
- ```sh
87
- $ bun test -t add
88
- bun test v1.3.2-canary.20251105T140650 (9c68abdb)
90
+ ```sh terminal icon="terminal"
91
+ bun test -t add
92
+ ```
89
93
 
94
+ ```txt
90
95
  test.test.js:
91
96
  ✓ add [1.79ms]
92
97
  » multiply
@@ -1,10 +1,12 @@
1
1
  ---
2
- name: Skip tests with the Bun test runner
2
+ title: Skip tests with the Bun test runner
3
+ sidebarTitle: Skip tests
4
+ mode: center
3
5
  ---
4
6
 
5
7
  To skip a test with the Bun test runner, use the `test.skip` function.
6
8
 
7
- ```ts
9
+ ```ts test.ts icon="/icons/typescript.svg"
8
10
  import { test } from "bun:test";
9
11
 
10
12
  test.skip("unimplemented feature", () => {
@@ -16,9 +18,11 @@ test.skip("unimplemented feature", () => {
16
18
 
17
19
  Running `bun test` will not execute this test. It will be marked as skipped in the terminal output.
18
20
 
19
- ```sh
20
- $ bun test
21
+ ```sh terminal icon="terminal"
22
+ bun test
23
+ ```
21
24
 
25
+ ```txt
22
26
  test.test.ts:
23
27
  ✓ add [0.03ms]
24
28
  ✓ multiply [0.02ms]
@@ -1,10 +1,12 @@
1
1
  ---
2
- name: Use snapshot testing in `bun test`
2
+ title: Use snapshot testing in `bun test`
3
+ sidebarTitle: Snapshot testing
4
+ mode: center
3
5
  ---
4
6
 
5
7
  Bun's test runner supports Jest-style snapshot testing via `.toMatchSnapshot()`.
6
8
 
7
- ```ts#snap.test.ts
9
+ ```ts snap.test.ts icon="/icons/typescript.svg"
8
10
  import { test, expect } from "bun:test";
9
11
 
10
12
  test("snapshot", () => {
@@ -16,10 +18,11 @@ test("snapshot", () => {
16
18
 
17
19
  The first time this test is executed, Bun will evaluate the value passed into `expect()` and write it to disk in a directory called `__snapshots__` that lives alongside the test file. (Note the `snapshots: +1 added` line in the output.)
18
20
 
19
- ```sh
20
- $ bun test test/snap
21
- bun test v1.3.2-canary.20251105T140650 (9c68abdb)
21
+ ```sh terminal icon="terminal"
22
+ bun test test/snap
23
+ ```
22
24
 
25
+ ```txt
23
26
  test/snap.test.ts:
24
27
  ✓ snapshot [1.48ms]
25
28
 
@@ -34,7 +37,7 @@ Ran 1 tests across 1 files. [82.00ms]
34
37
 
35
38
  The `__snapshots__` directory contains a `.snap` file for each test file in the directory.
36
39
 
37
- ```txt
40
+ ```txt File Tree icon="folder-tree"
38
41
  test
39
42
  ├── __snapshots__
40
43
  │   └── snap.test.ts.snap
@@ -45,7 +48,7 @@ test
45
48
 
46
49
  The `snap.test.ts.snap` file is a JavaScript file that exports a serialized version of the value passed into `expect()`. The `{foo: "bar"}` object has been serialized to JSON.
47
50
 
48
- ```js
51
+ ```js snap.test.ts.snap icon="file-code"
49
52
  // Bun Snapshot v1, https://bun.sh/docs/test/snapshots
50
53
 
51
54
  exports[`snapshot 1`] = `
@@ -59,10 +62,12 @@ exports[`snapshot 1`] = `
59
62
 
60
63
  Later, when this test file is executed again, Bun will read the snapshot file and compare it to the value passed into `expect()`. If the values are different, the test will fail.
61
64
 
62
- ```sh
63
- $ bun test
64
- bun test v1.3.2-canary.20251105T140650 (9c68abdb)
65
+ ```sh terminal icon="terminal"
66
+ bun test
67
+ bun test v1.3.1 (9c68abdb)
68
+ ```
65
69
 
70
+ ```txt
66
71
  test/snap.test.ts:
67
72
  ✓ snapshot [1.05ms]
68
73
 
@@ -76,10 +81,12 @@ Ran 1 tests across 1 files. [101.00ms]
76
81
 
77
82
  To update snapshots, use the `--update-snapshots` flag.
78
83
 
79
- ```sh
80
- $ bun test --update-snapshots
81
- bun test v1.3.2-canary.20251105T140650 (9c68abdb)
84
+ ```sh terminal icon="terminal"
85
+ bun test --update-snapshots
86
+ bun test v1.3.1 (9c68abdb)
87
+ ```
82
88
 
89
+ ```txt
83
90
  test/snap.test.ts:
84
91
  ✓ snapshot [0.86ms]
85
92
 
@@ -0,0 +1,49 @@
1
+ ---
2
+ title: Spy on methods in `bun test`
3
+ sidebarTitle: Spy on methods
4
+ mode: center
5
+ ---
6
+
7
+ Use the `spyOn` utility to track method calls with Bun's test runner.
8
+
9
+ ```ts
10
+ import { test, expect, spyOn } from "bun:test";
11
+
12
+ const leo = {
13
+ name: "Leonardo",
14
+ sayHi(thing: string) {
15
+ console.log(`Sup I'm ${this.name} and I like ${thing}`);
16
+ },
17
+ };
18
+
19
+ const spy = spyOn(leo, "sayHi");
20
+ ```
21
+
22
+ ---
23
+
24
+ Once the spy is created, it can be used to write `expect` assertions relating to method calls.
25
+
26
+ ```ts
27
+ import { test, expect, spyOn } from "bun:test";
28
+
29
+ const leo = {
30
+ name: "Leonardo",
31
+ sayHi(thing: string) {
32
+ console.log(`Sup I'm ${this.name} and I like ${thing}`);
33
+ },
34
+ };
35
+
36
+ const spy = spyOn(leo, "sayHi");
37
+
38
+ test("turtles", () => {
39
+ // [!code ++]
40
+ expect(spy).toHaveBeenCalledTimes(0); // [!code ++]
41
+ leo.sayHi("pizza"); // [!code ++]
42
+ expect(spy).toHaveBeenCalledTimes(1); // [!code ++]
43
+ expect(spy.mock.calls).toEqual([["pizza"]]); // [!code ++]
44
+ }); // [!code ++]
45
+ ```
46
+
47
+ ---
48
+
49
+ See [Docs > Test Runner > Mocks](https://bun.sh/docs/test/mocks) for complete documentation on mocking with the Bun test runner.
@@ -1,18 +1,20 @@
1
1
  ---
2
- name: "import, require, and test Svelte components with bun test"
2
+ title: "import, require, and test Svelte components with bun test"
3
+ sidebarTitle: Test Svelte
4
+ mode: center
3
5
  ---
4
6
 
5
- Bun's [Plugin API](/docs/runtime/plugins) lets you add custom loaders to your project. The `test.preload` option in `bunfig.toml` lets you configure your loader to start before your tests run.
7
+ Bun's [Plugin API](/runtime/plugins) lets you add custom loaders to your project. The `test.preload` option in `bunfig.toml` lets you configure your loader to start before your tests run.
6
8
 
7
9
  Firstly, install `@testing-library/svelte`, `svelte`, and `@happy-dom/global-registrator`.
8
10
 
9
- ```bash
10
- $ bun add @testing-library/svelte svelte@4 @happy-dom/global-registrator
11
+ ```bash terminal icon="terminal"
12
+ bun add @testing-library/svelte svelte@4 @happy-dom/global-registrator
11
13
  ```
12
14
 
13
15
  Then, save this plugin in your project.
14
16
 
15
- ```ts#svelte-loader.js
17
+ ```ts svelte-loader.js icon="/icons/typescript.svg"
16
18
  import { plugin } from "bun";
17
19
  import { compile } from "svelte/compiler";
18
20
  import { readFileSync } from "fs";
@@ -28,20 +30,14 @@ afterEach(async () => {
28
30
  });
29
31
 
30
32
  plugin({
31
- name: "svelte loader",
33
+ title: "svelte loader",
32
34
  setup(builder) {
33
35
  builder.onLoad({ filter: /\.svelte(\?[^.]+)?$/ }, ({ path }) => {
34
36
  try {
35
- const source = readFileSync(
36
- path.substring(
37
- 0,
38
- path.includes("?") ? path.indexOf("?") : path.length
39
- ),
40
- "utf-8"
41
- );
37
+ const source = readFileSync(path.substring(0, path.includes("?") ? path.indexOf("?") : path.length), "utf-8");
42
38
 
43
39
  const result = compile(source, {
44
- filename: path,
40
+ filetitle: path,
45
41
  generate: "client",
46
42
  dev: false,
47
43
  });
@@ -56,14 +52,13 @@ plugin({
56
52
  });
57
53
  },
58
54
  });
59
-
60
55
  ```
61
56
 
62
57
  ---
63
58
 
64
59
  Add this to `bunfig.toml` to tell Bun to preload the plugin, so it loads before your tests run.
65
60
 
66
- ```toml#bunfig.toml
61
+ ```toml bunfig.toml icon="settings"
67
62
  [test]
68
63
  # Tell Bun to load this plugin before your tests run
69
64
  preload = ["./svelte-loader.js"]
@@ -76,20 +71,20 @@ preload = ["./svelte-loader.js"]
76
71
 
77
72
  Add an example `.svelte` file in your project.
78
73
 
79
- ```html#Counter.svelte
74
+ ```html Counter.svelte icon="file-code"
80
75
  <script>
81
76
  export let initialCount = 0;
82
77
  let count = initialCount;
83
78
  </script>
84
79
 
85
- <button on:click={() => (count += 1)}>+1</button>
80
+ <button on:click="{()" ="">(count += 1)}>+1</button>
86
81
  ```
87
82
 
88
83
  ---
89
84
 
90
85
  Now you can `import` or `require` `*.svelte` files in your tests, and it will load the Svelte component as a JavaScript module.
91
86
 
92
- ```ts#hello-svelte.test.ts
87
+ ```ts hello-svelte.test.ts icon="/icons/typescript.svg"
93
88
  import { test, expect } from "bun:test";
94
89
  import { render, fireEvent } from "@testing-library/svelte";
95
90
  import Counter from "./Counter.svelte";
@@ -113,8 +108,6 @@ test("Counter increments when clicked", async () => {
113
108
 
114
109
  Use `bun test` to run your tests.
115
110
 
116
- ```bash
117
- $ bun test
111
+ ```bash terminal icon="terminal"
112
+ bun test
118
113
  ```
119
-
120
- ---