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,434 @@
1
+ ---
2
+ title: "Snapshots"
3
+ description: "Learn how to use snapshot testing in Bun to save and compare output between test runs"
4
+ ---
5
+
6
+ Snapshot testing saves the output of a value and compares it against future test runs. This is particularly useful for UI components, complex objects, or any output that needs to remain consistent.
7
+
8
+ ## Basic Snapshots
9
+
10
+ Snapshot tests are written using the `.toMatchSnapshot()` matcher:
11
+
12
+ ```ts title="test.ts" icon="/icons/typescript.svg"
13
+ import { test, expect } from "bun:test";
14
+
15
+ test("snap", () => {
16
+ expect("foo").toMatchSnapshot();
17
+ });
18
+ ```
19
+
20
+ The first time this test is run, the argument to `expect` will be serialized and written to a special snapshot file in a `__snapshots__` directory alongside the test file.
21
+
22
+ ### Snapshot Files
23
+
24
+ After running the test above, Bun will create:
25
+
26
+ ```text title="directory structure" icon="file-directory"
27
+ your-project/
28
+ ├── snap.test.ts
29
+ └── __snapshots__/
30
+ └── snap.test.ts.snap
31
+ ```
32
+
33
+ The snapshot file contains:
34
+
35
+ ```txt title="snapshot file" icon="file-code"
36
+ // Bun Snapshot v1, https://goo.gl/fbAQLP
37
+
38
+ exports[`snap 1`] = `"foo"`;
39
+ ```
40
+
41
+ On future runs, the argument is compared against the snapshot on disk.
42
+
43
+ ## Updating Snapshots
44
+
45
+ Snapshots can be re-generated with the following command:
46
+
47
+ ```bash terminal icon="terminal"
48
+ bun test --update-snapshots
49
+ ```
50
+
51
+ This is useful when:
52
+
53
+ - You've intentionally changed the output
54
+ - You're adding new snapshot tests
55
+ - The expected output has legitimately changed
56
+
57
+ ## Inline Snapshots
58
+
59
+ For smaller values, you can use inline snapshots with `.toMatchInlineSnapshot()`. These snapshots are stored directly in your test file:
60
+
61
+ ```ts title="test.ts" icon="/icons/typescript.svg"
62
+ import { test, expect } from "bun:test";
63
+
64
+ test("inline snapshot", () => {
65
+ // First run: snapshot will be inserted automatically
66
+ expect({ hello: "world" }).toMatchInlineSnapshot();
67
+ });
68
+ ```
69
+
70
+ After the first run, Bun automatically updates your test file:
71
+
72
+ ```ts title="test.ts" icon="/icons/typescript.svg"
73
+ import { test, expect } from "bun:test";
74
+
75
+ test("inline snapshot", () => {
76
+ expect({ hello: "world" }).toMatchInlineSnapshot(`
77
+ {
78
+ "hello": "world",
79
+ }
80
+ `);
81
+ });
82
+ ```
83
+
84
+ ### Using Inline Snapshots
85
+
86
+ 1. Write your test with `.toMatchInlineSnapshot()`
87
+ 2. Run the test once
88
+ 3. Bun automatically updates your test file with the snapshot
89
+ 4. On subsequent runs, the value will be compared against the inline snapshot
90
+
91
+ Inline snapshots are particularly useful for small, simple values where it's helpful to see the expected output right in the test file.
92
+
93
+ ## Error Snapshots
94
+
95
+ You can also snapshot error messages using `.toThrowErrorMatchingSnapshot()` and `.toThrowErrorMatchingInlineSnapshot()`:
96
+
97
+ ```ts title="test.ts" icon="/icons/typescript.svg"
98
+ import { test, expect } from "bun:test";
99
+
100
+ test("error snapshot", () => {
101
+ expect(() => {
102
+ throw new Error("Something went wrong");
103
+ }).toThrowErrorMatchingSnapshot();
104
+
105
+ expect(() => {
106
+ throw new Error("Another error");
107
+ }).toThrowErrorMatchingInlineSnapshot();
108
+ });
109
+ ```
110
+
111
+ After running, the inline version becomes:
112
+
113
+ ```ts title="test.ts" icon="/icons/typescript.svg"
114
+ test("error snapshot", () => {
115
+ expect(() => {
116
+ throw new Error("Something went wrong");
117
+ }).toThrowErrorMatchingSnapshot();
118
+
119
+ expect(() => {
120
+ throw new Error("Another error");
121
+ }).toThrowErrorMatchingInlineSnapshot(`"Another error"`);
122
+ });
123
+ ```
124
+
125
+ ## Advanced Snapshot Usage
126
+
127
+ ### Complex Objects
128
+
129
+ Snapshots work well with complex nested objects:
130
+
131
+ ```ts title="test.ts" icon="/icons/typescript.svg"
132
+ import { test, expect } from "bun:test";
133
+
134
+ test("complex object snapshot", () => {
135
+ const user = {
136
+ id: 1,
137
+ name: "John Doe",
138
+ email: "john@example.com",
139
+ profile: {
140
+ age: 30,
141
+ preferences: {
142
+ theme: "dark",
143
+ notifications: true,
144
+ },
145
+ },
146
+ tags: ["developer", "javascript", "bun"],
147
+ };
148
+
149
+ expect(user).toMatchSnapshot();
150
+ });
151
+ ```
152
+
153
+ ### Array Snapshots
154
+
155
+ Arrays are also well-suited for snapshot testing:
156
+
157
+ ```ts title="test.ts" icon="/icons/typescript.svg"
158
+ import { test, expect } from "bun:test";
159
+
160
+ test("array snapshot", () => {
161
+ const numbers = [1, 2, 3, 4, 5].map(n => n * 2);
162
+ expect(numbers).toMatchSnapshot();
163
+ });
164
+ ```
165
+
166
+ ### Function Output Snapshots
167
+
168
+ Snapshot the output of functions:
169
+
170
+ ```ts title="test.ts" icon="/icons/typescript.svg"
171
+ import { test, expect } from "bun:test";
172
+
173
+ function generateReport(data: any[]) {
174
+ return {
175
+ total: data.length,
176
+ summary: data.map(item => ({ id: item.id, name: item.name })),
177
+ timestamp: "2024-01-01", // Fixed for testing
178
+ };
179
+ }
180
+
181
+ test("report generation", () => {
182
+ const data = [
183
+ { id: 1, name: "Alice", age: 30 },
184
+ { id: 2, name: "Bob", age: 25 },
185
+ ];
186
+
187
+ expect(generateReport(data)).toMatchSnapshot();
188
+ });
189
+ ```
190
+
191
+ ## React Component Snapshots
192
+
193
+ Snapshots are particularly useful for React components:
194
+
195
+ ```tsx title="test.ts" icon="/icons/typescript.svg"
196
+ import { test, expect } from "bun:test";
197
+ import { render } from "@testing-library/react";
198
+
199
+ function Button({ children, variant = "primary" }) {
200
+ return <button className={`btn btn-${variant}`}>{children}</button>;
201
+ }
202
+
203
+ test("Button component snapshots", () => {
204
+ const { container: primary } = render(<Button>Click me</Button>);
205
+ const { container: secondary } = render(<Button variant="secondary">Cancel</Button>);
206
+
207
+ expect(primary.innerHTML).toMatchSnapshot();
208
+ expect(secondary.innerHTML).toMatchSnapshot();
209
+ });
210
+ ```
211
+
212
+ ## Property Matchers
213
+
214
+ For values that change between test runs (like timestamps or IDs), use property matchers:
215
+
216
+ ```ts title="test.ts" icon="/icons/typescript.svg"
217
+ import { test, expect } from "bun:test";
218
+
219
+ test("snapshot with dynamic values", () => {
220
+ const user = {
221
+ id: Math.random(), // This changes every run
222
+ name: "John",
223
+ createdAt: new Date().toISOString(), // This also changes
224
+ };
225
+
226
+ expect(user).toMatchSnapshot({
227
+ id: expect.any(Number),
228
+ createdAt: expect.any(String),
229
+ });
230
+ });
231
+ ```
232
+
233
+ The snapshot will store:
234
+
235
+ ```txt title="snapshot file" icon="file-code"
236
+ exports[`snapshot with dynamic values 1`] = `
237
+ {
238
+ "createdAt": Any<String>,
239
+ "id": Any<Number>,
240
+ "name": "John",
241
+ }
242
+ `;
243
+ ```
244
+
245
+ ## Custom Serializers
246
+
247
+ You can customize how objects are serialized in snapshots:
248
+
249
+ ```ts title="test.ts" icon="/icons/typescript.svg"
250
+ import { test, expect } from "bun:test";
251
+
252
+ // Custom serializer for Date objects
253
+ expect.addSnapshotSerializer({
254
+ test: val => val instanceof Date,
255
+ serialize: val => `"${val.toISOString()}"`,
256
+ });
257
+
258
+ test("custom serializer", () => {
259
+ const event = {
260
+ name: "Meeting",
261
+ date: new Date("2024-01-01T10:00:00Z"),
262
+ };
263
+
264
+ expect(event).toMatchSnapshot();
265
+ });
266
+ ```
267
+
268
+ ## Best Practices
269
+
270
+ ### Keep Snapshots Small
271
+
272
+ ```ts title="test.ts" icon="/icons/typescript.svg"
273
+ // Good: Focused snapshots
274
+ test("user name formatting", () => {
275
+ const formatted = formatUserName("john", "doe");
276
+ expect(formatted).toMatchInlineSnapshot(`"John Doe"`);
277
+ });
278
+
279
+ // Avoid: Huge snapshots that are hard to review
280
+ test("entire page render", () => {
281
+ const page = renderEntirePage();
282
+ expect(page).toMatchSnapshot(); // This could be thousands of lines
283
+ });
284
+ ```
285
+
286
+ ### Use Descriptive Test Names
287
+
288
+ ```ts title="test.ts" icon="/icons/typescript.svg"
289
+ // Good: Clear what the snapshot represents
290
+ test("formats currency with USD symbol", () => {
291
+ expect(formatCurrency(99.99)).toMatchInlineSnapshot(`"$99.99"`);
292
+ });
293
+
294
+ // Avoid: Unclear what's being tested
295
+ test("format test", () => {
296
+ expect(format(99.99)).toMatchInlineSnapshot(`"$99.99"`);
297
+ });
298
+ ```
299
+
300
+ ### Group Related Snapshots
301
+
302
+ ```ts title="test.ts" icon="/icons/typescript.svg"
303
+ import { describe, test, expect } from "bun:test";
304
+
305
+ describe("Button component", () => {
306
+ test("primary variant", () => {
307
+ expect(render(<Button variant="primary">Click</Button>))
308
+ .toMatchSnapshot();
309
+ });
310
+
311
+ test("secondary variant", () => {
312
+ expect(render(<Button variant="secondary">Cancel</Button>))
313
+ .toMatchSnapshot();
314
+ });
315
+
316
+ test("disabled state", () => {
317
+ expect(render(<Button disabled>Disabled</Button>))
318
+ .toMatchSnapshot();
319
+ });
320
+ });
321
+ ```
322
+
323
+ ### Handle Dynamic Data
324
+
325
+ ```ts title="test.ts" icon="/icons/typescript.svg"
326
+ // Good: Normalize dynamic data
327
+ test("API response format", () => {
328
+ const response = {
329
+ data: { id: 1, name: "Test" },
330
+ timestamp: Date.now(),
331
+ requestId: generateId(),
332
+ };
333
+
334
+ expect({
335
+ ...response,
336
+ timestamp: "TIMESTAMP",
337
+ requestId: "REQUEST_ID",
338
+ }).toMatchSnapshot();
339
+ });
340
+
341
+ // Or use property matchers
342
+ test("API response with matchers", () => {
343
+ const response = getApiResponse();
344
+
345
+ expect(response).toMatchSnapshot({
346
+ timestamp: expect.any(Number),
347
+ requestId: expect.any(String),
348
+ });
349
+ });
350
+ ```
351
+
352
+ ## Managing Snapshots
353
+
354
+ ### Reviewing Snapshot Changes
355
+
356
+ When snapshots change, carefully review them:
357
+
358
+ ```bash terminal icon="terminal"
359
+ # See what changed
360
+ git diff __snapshots__/
361
+
362
+ # Update if changes are intentional
363
+ bun test --update-snapshots
364
+
365
+ # Commit the updated snapshots
366
+ git add __snapshots__/
367
+ git commit -m "Update snapshots after UI changes"
368
+ ```
369
+
370
+ ### Cleaning Up Unused Snapshots
371
+
372
+ Bun will warn about unused snapshots:
373
+
374
+ ```txt title="warning" icon="warning"
375
+ Warning: 1 unused snapshot found:
376
+ my-test.test.ts.snap: "old test that no longer exists 1"
377
+ ```
378
+
379
+ Remove unused snapshots by deleting them from the snapshot files or by running tests with cleanup flags if available.
380
+
381
+ ### Organizing Large Snapshot Files
382
+
383
+ For large projects, consider organizing tests to keep snapshot files manageable:
384
+
385
+ ```text title="directory structure" icon="file-directory"
386
+ tests/
387
+ ├── components/
388
+ │ ├── Button.test.tsx
389
+ │ └── __snapshots__/
390
+ │ └── Button.test.tsx.snap
391
+ ├── utils/
392
+ │ ├── formatters.test.ts
393
+ │ └── __snapshots__/
394
+ │ └── formatters.test.ts.snap
395
+ ```
396
+
397
+ ## Troubleshooting
398
+
399
+ ### Snapshot Failures
400
+
401
+ When snapshots fail, you'll see a diff:
402
+
403
+ ```text title="diff" icon="file-code"
404
+ - Expected
405
+ + Received
406
+
407
+ Object {
408
+ - "name": "John",
409
+ + "name": "Jane",
410
+ }
411
+ ```
412
+
413
+ Common causes:
414
+
415
+ - Intentional changes (update with `--update-snapshots`)
416
+ - Unintentional changes (fix the code)
417
+ - Dynamic data (use property matchers)
418
+ - Environment differences (normalize the data)
419
+
420
+ ### Platform Differences
421
+
422
+ Be aware of platform-specific differences:
423
+
424
+ ```ts title="test.ts" icon="/icons/typescript.svg"
425
+ // Paths might differ between Windows/Unix
426
+ test("file operations", () => {
427
+ const result = processFile("./test.txt");
428
+
429
+ expect({
430
+ ...result,
431
+ path: result.path.replace(/\\/g, "/"), // Normalize paths
432
+ }).toMatchSnapshot();
433
+ });
434
+ ```