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,5 +1,7 @@
1
1
  ---
2
- name: Using Testing Library with Bun
2
+ title: Using Testing Library with Bun
3
+ sidebarTitle: Testing Library
4
+ mode: center
3
5
  ---
4
6
 
5
7
  You can use [Testing Library](https://testing-library.com/) with Bun's test runner.
@@ -8,7 +10,7 @@ You can use [Testing Library](https://testing-library.com/) with Bun's test runn
8
10
 
9
11
  As a prerequisite to using Testing Library you will need to install [Happy Dom](https://github.com/capricorn86/happy-dom). ([see Bun's Happy DOM guide for more information](https://bun.sh/guides/test/happy-dom)).
10
12
 
11
- ```sh
13
+ ```sh terminal icon="terminal"
12
14
  bun add -D @happy-dom/global-registrator
13
15
  ```
14
16
 
@@ -16,7 +18,7 @@ bun add -D @happy-dom/global-registrator
16
18
 
17
19
  Next you should install the Testing Library packages you are planning on using. For example, if you are setting up testing for React your installs may look like this. You will also need to install `@testing-library/jest-dom` to get matchers working later.
18
20
 
19
- ```sh
21
+ ```sh terminal icon="terminal"
20
22
  bun add -D @testing-library/react @testing-library/dom @testing-library/jest-dom
21
23
  ```
22
24
 
@@ -24,8 +26,8 @@ bun add -D @testing-library/react @testing-library/dom @testing-library/jest-dom
24
26
 
25
27
  Next you will need to create a preload script for Happy DOM and for Testing Library. For more details about the Happy DOM setup script see [Bun's Happy DOM guide](https://bun.sh/guides/test/happy-dom).
26
28
 
27
- ```ts#happydom.ts
28
- import { GlobalRegistrator } from '@happy-dom/global-registrator';
29
+ ```ts happydom.ts icon="/icons/typescript.svg"
30
+ import { GlobalRegistrator } from "@happy-dom/global-registrator";
29
31
 
30
32
  GlobalRegistrator.register();
31
33
  ```
@@ -34,10 +36,10 @@ GlobalRegistrator.register();
34
36
 
35
37
  For Testing Library, you will want to extend Bun's `expect` function with Testing Library's matchers. Optionally, to better match the behavior of test-runners like Jest, you may want to run cleanup after each test.
36
38
 
37
- ```ts#testing-library.ts
38
- import { afterEach, expect } from 'bun:test';
39
- import { cleanup } from '@testing-library/react';
40
- import * as matchers from '@testing-library/jest-dom/matchers';
39
+ ```ts testing-library.ts icon="/icons/typescript.svg"
40
+ import { afterEach, expect } from "bun:test";
41
+ import { cleanup } from "@testing-library/react";
42
+ import * as matchers from "@testing-library/jest-dom/matchers";
41
43
 
42
44
  expect.extend(matchers);
43
45
 
@@ -51,7 +53,7 @@ afterEach(() => {
51
53
 
52
54
  Next, add these preload scripts to your `bunfig.toml` (you can also have everything in a single `preload.ts` script if you prefer).
53
55
 
54
- ```toml#bunfig.toml
56
+ ```toml bunfig.toml icon="settings"
55
57
  [test]
56
58
  preload = ["./happydom.ts", "./testing-library.ts"]
57
59
  ```
@@ -60,13 +62,12 @@ preload = ["./happydom.ts", "./testing-library.ts"]
60
62
 
61
63
  If you are using TypeScript you will also need to make use of declaration merging in order to get the new matcher types to show up in your editor. To do this, create a type declaration file that extends `Matchers` like this.
62
64
 
63
- ```ts#matchers.d.ts
64
- import { TestingLibraryMatchers } from '@testing-library/jest-dom/matchers';
65
- import { Matchers, AsymmetricMatchers } from 'bun:test';
65
+ ```ts matchers.d.ts icon="/icons/typescript.svg"
66
+ import { TestingLibraryMatchers } from "@testing-library/jest-dom/matchers";
67
+ import { Matchers, AsymmetricMatchers } from "bun:test";
66
68
 
67
- declare module 'bun:test' {
68
- interface Matchers<T>
69
- extends TestingLibraryMatchers<typeof expect.stringContaining, T> {}
69
+ declare module "bun:test" {
70
+ interface Matchers<T> extends TestingLibraryMatchers<typeof expect.stringContaining, T> {}
70
71
  interface AsymmetricMatchers extends TestingLibraryMatchers {}
71
72
  }
72
73
  ```
@@ -75,7 +76,7 @@ declare module 'bun:test' {
75
76
 
76
77
  You should now be able to use Testing Library in your tests
77
78
 
78
- ```ts
79
+ ```ts matchers.d.ts icon="/icons/typescript.svg"
79
80
  import { test, expect } from "bun:test";
80
81
  import { screen, render } from "@testing-library/react";
81
82
  import { MyComponent } from "./myComponent";
@@ -1,13 +1,15 @@
1
1
  ---
2
- name: Set a per-test timeout with the Bun test runner
2
+ title: Set a per-test timeout with the Bun test runner
3
+ sidebarTitle: Test timeout
4
+ mode: center
3
5
  ---
4
6
 
5
7
  Use the `--timeout` flag to set a timeout for each test in milliseconds. If any test exceeds this timeout, it will be marked as failed.
6
8
 
7
9
  The default timeout is `5000` (5 seconds).
8
10
 
9
- ```sh
10
- $ bun test --timeout 3000 # 3 seconds
11
+ ```sh terminal icon="terminal"
12
+ bun test --timeout 3000 # 3 seconds
11
13
  ```
12
14
 
13
15
  ---
@@ -1,10 +1,12 @@
1
1
  ---
2
- name: Mark a test as a "todo" with the Bun test runner
2
+ title: Mark a test as a "todo" with the Bun test runner
3
+ sidebarTitle: Todo tests
4
+ mode: center
3
5
  ---
4
6
 
5
7
  To remind yourself to write a test later, use the `test.todo` function. There's no need to provide a test implementation.
6
8
 
7
- ```ts
9
+ ```ts test.ts icon="/icons/typescript.svg"
8
10
  import { test, expect } from "bun:test";
9
11
 
10
12
  // write this later
@@ -15,9 +17,11 @@ test.todo("unimplemented feature");
15
17
 
16
18
  The output of `bun test` indicates how many `todo` tests were encountered.
17
19
 
18
- ```sh
19
- $ bun test
20
+ ```sh terminal icon="terminal"
21
+ bun test
22
+ ```
20
23
 
24
+ ```txt
21
25
  test.test.ts:
22
26
  ✓ add [0.03ms]
23
27
  ✓ multiply [0.02ms]
@@ -46,8 +50,11 @@ test.todo("unimplemented feature", () => {
46
50
 
47
51
  If an implementation is provided, it will not be run unless the `--todo` flag is passed. If the `--todo` flag is passed, the test will be executed and _expected to fail_ by test runner! If a todo test passes, the `bun test` run will return a non-zero exit code to signal the failure.
48
52
 
49
- ```sh
50
- $ bun test --todo
53
+ ```sh terminal icon="terminal"
54
+ bun test --todo
55
+ ```
56
+
57
+ ```txt
51
58
  my.test.ts:
52
59
  ✗ unimplemented feature
53
60
  ^ this test is marked as todo but passes. Remove `.todo` or check that test is correct.
@@ -1,10 +1,12 @@
1
1
  ---
2
- name: Update snapshots in `bun test`
2
+ title: Update snapshots in `bun test`
3
+ sidebarTitle: Update snapshots
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,7 +18,7 @@ test("snapshot", () => {
16
18
 
17
19
  The first time this test is executed, Bun will write a snapshot file to disk in a directory called `__snapshots__` that lives alongside the test file.
18
20
 
19
- ```txt
21
+ ```txt File Tree icon="folder-tree"
20
22
  test
21
23
  ├── __snapshots__
22
24
  │   └── snap.test.ts.snap
@@ -27,10 +29,11 @@ test
27
29
 
28
30
  To regenerate snapshots, use the `--update-snapshots` flag.
29
31
 
30
- ```sh
31
- $ bun test --update-snapshots
32
- bun test v1.3.2-canary.20251105T140650 (9c68abdb)
32
+ ```sh terminal icon="terminal"
33
+ bun test --update-snapshots
34
+ ```
33
35
 
36
+ ```txt
34
37
  test/snap.test.ts:
35
38
  ✓ snapshot [0.86ms]
36
39
 
@@ -1,18 +1,23 @@
1
1
  ---
2
- name: Run tests in watch mode with Bun
2
+ title: Run tests in watch mode with Bun
3
+ sidebarTitle: Watch mode
4
+ mode: center
3
5
  ---
4
6
 
5
7
  Use the `--watch` flag to run your tests in watch mode.
6
8
 
7
- ```sh
8
- $ bun test --watch
9
+ ```sh terminal icon="terminal"
10
+ bun test --watch
9
11
  ```
10
12
 
11
13
  ---
12
14
 
13
15
  This will restart the running Bun process whenever a file change is detected. It's fast. In this example, the editor is configured to save the file on every keystroke.
14
16
 
15
- {% image src="https://github.com/oven-sh/bun/assets/3084745/dc49a36e-ba82-416f-b960-1c883a924248" caption="Running tests in watch mode in Bun" /%}
17
+ <Frame>
18
+ ![Running tests in watch mode in
19
+ Bun](https://github.com/oven-sh/bun/assets/3084745/dc49a36e-ba82-416f-b960-1c883a924248)
20
+ </Frame>
16
21
 
17
22
  ---
18
23
 
@@ -1,5 +1,7 @@
1
1
  ---
2
- name: Encode and decode base64 strings
2
+ title: Encode and decode base64 strings
3
+ sidebarTitle: Base64 encoding
4
+ mode: center
3
5
  ---
4
6
 
5
7
  Bun implements the Web-standard [`atob`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/atob) and [`btoa`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/btoa) functions for encoding and decoding base64 strings.
@@ -1,10 +1,12 @@
1
1
  ---
2
- name: Check if two objects are deeply equal
2
+ title: Check if two objects are deeply equal
3
+ sidebarTitle: Deep equality
4
+ mode: center
3
5
  ---
4
6
 
5
7
  Check if two objects are deeply equal. This is used internally by `expect().toEqual()` in Bun's [test runner](https://bun.com/docs/test/writing).
6
8
 
7
- ```ts#index.ts
9
+ ```ts index.ts icon="/icons/typescript.svg"
8
10
  const a = { a: 1, b: 2, c: { d: 3 } };
9
11
  const b = { a: 1, b: 2, c: { d: 3 } };
10
12
 
@@ -17,7 +19,7 @@ Pass `true` as a third argument to enable strict mode. This is used internally b
17
19
 
18
20
  The following examples would return `true` in non-strict mode but `false` in strict mode.
19
21
 
20
- ```ts
22
+ ```ts index.ts icon="/icons/typescript.svg"
21
23
  // undefined values
22
24
  Bun.deepEquals({}, { a: undefined }, true); // false
23
25
 
@@ -1,5 +1,7 @@
1
1
  ---
2
- name: Compress and decompress data with DEFLATE
2
+ title: Compress and decompress data with DEFLATE
3
+ sidebarTitle: DEFLATE compression
4
+ mode: center
3
5
  ---
4
6
 
5
7
  Use `Bun.deflateSync()` to compress a `Uint8Array` with DEFLATE.
@@ -1,5 +1,7 @@
1
1
  ---
2
- name: Detect when code is executed with Bun
2
+ title: Detect when code is executed with Bun
3
+ sidebarTitle: Detect Bun
4
+ mode: center
3
5
  ---
4
6
 
5
7
  The recommended way to conditionally detect when code is being executed with `bun` is to check for the existence of the `Bun` global.
@@ -1,10 +1,12 @@
1
1
  ---
2
- name: Check if the current file is the entrypoint
2
+ title: Check if the current file is the entrypoint
3
+ sidebarTitle: Check entrypoint
4
+ mode: center
3
5
  ---
4
6
 
5
7
  Bun provides a handful of module-specific utilities on the [`import.meta`](https://bun.com/docs/api/import-meta) object. Use `import.meta.main` to check if the current file is the entrypoint of the current process.
6
8
 
7
- ```ts#index.ts
9
+ ```ts index.ts icon="/icons/typescript.svg"
8
10
  if (import.meta.main) {
9
11
  // this file is directly executed with `bun run`
10
12
  } else {
@@ -1,5 +1,7 @@
1
1
  ---
2
- name: Escape an HTML string
2
+ title: Escape an HTML string
3
+ sidebarTitle: Escape HTML
4
+ mode: center
3
5
  ---
4
6
 
5
7
  The `Bun.escapeHTML()` utility can be used to escape HTML characters in a string. The following replacements are made.
@@ -1,5 +1,7 @@
1
1
  ---
2
- name: Convert a file URL to an absolute path
2
+ title: Convert a file URL to an absolute path
3
+ sidebarTitle: File URL to path
4
+ mode: center
3
5
  ---
4
6
 
5
7
  Use `Bun.fileURLToPath()` to convert a `file://` URL to an absolute path.
@@ -1,5 +1,7 @@
1
1
  ---
2
- name: Compress and decompress data with gzip
2
+ title: Compress and decompress data with gzip
3
+ sidebarTitle: Gzip compression
4
+ mode: center
3
5
  ---
4
6
 
5
7
  Use `Bun.gzipSync()` to compress a `Uint8Array` with gzip.
@@ -1,5 +1,7 @@
1
1
  ---
2
- name: Hash a password
2
+ title: Hash a password
3
+ sidebarTitle: Hash password
4
+ mode: center
3
5
  ---
4
6
 
5
7
  The `Bun.password.hash()` function provides a fast, built-in mechanism for securely hashing passwords in Bun. No third-party dependencies are required.
@@ -1,10 +1,12 @@
1
1
  ---
2
- name: Get the directory of the current file
2
+ title: Get the directory of the current file
3
+ sidebarTitle: import.meta.dir
4
+ mode: center
3
5
  ---
4
6
 
5
7
  Bun provides a handful of module-specific utilities on the [`import.meta`](https://bun.com/docs/api/import-meta) object.
6
8
 
7
- ```ts#/a/b/c.ts
9
+ ```ts /a/b/c.ts icon="/icons/typescript.svg"
8
10
  import.meta.dir; // => "/a/b"
9
11
  ```
10
12
 
@@ -1,10 +1,12 @@
1
1
  ---
2
- name: Get the file name of the current file
2
+ title: Get the file name of the current file
3
+ sidebarTitle: import.meta.file
4
+ mode: center
3
5
  ---
4
6
 
5
7
  Bun provides a handful of module-specific utilities on the [`import.meta`](https://bun.com/docs/api/import-meta) object. Use `import.meta.file` to retrieve the name of the current file.
6
8
 
7
- ```ts#/a/b/c.ts
9
+ ```ts /a/b/c.ts icon="/icons/typescript.svg"
8
10
  import.meta.file; // => "c.ts"
9
11
  ```
10
12
 
@@ -1,10 +1,12 @@
1
1
  ---
2
- name: Get the absolute path of the current file
2
+ title: Get the absolute path of the current file
3
+ sidebarTitle: import.meta.path
4
+ mode: center
3
5
  ---
4
6
 
5
7
  Bun provides a handful of module-specific utilities on the [`import.meta`](https://bun.com/docs/api/import-meta) object. Use `import.meta.path` to retrieve the absolute path of the current file.
6
8
 
7
- ```ts#/a/b/c.ts
9
+ ```ts /a/b/c.ts icon="/icons/typescript.svg"
8
10
  import.meta.path; // => "/a/b/c.ts"
9
11
  ```
10
12
 
@@ -1,5 +1,7 @@
1
1
  ---
2
- name: Generate a UUID
2
+ title: Generate a UUID
3
+ sidebarTitle: Generate UUID
4
+ mode: center
3
5
  ---
4
6
 
5
7
  Use `crypto.randomUUID()` to generate a UUID v4. This API works in Bun, Node.js, and browsers. It requires no dependencies.
@@ -1,29 +1,40 @@
1
1
  ---
2
- name: Get the absolute path to the current entrypoint
2
+ title: Get the absolute path to the current entrypoint
3
+ sidebarTitle: Get entrypoint path
4
+ mode: center
3
5
  ---
4
6
 
5
7
  The `Bun.main` property contains the absolute path to the current entrypoint.
6
8
 
7
- {% codetabs %}
9
+ <CodeGroup>
8
10
 
9
- ```ts#foo.ts
11
+ ```ts foo.ts icon="/icons/typescript.svg"
10
12
  console.log(Bun.main);
11
13
  ```
12
14
 
13
- ```ts#index.ts
15
+ ```ts index.ts icon="/icons/typescript.svg"
14
16
  import "./foo.ts";
15
17
  ```
16
18
 
17
- {% /codetabs %}
19
+ </CodeGroup>
18
20
 
19
21
  ---
20
22
 
21
23
  The printed path corresponds to the file that is executed with `bun run`.
22
24
 
23
- ```sh
24
- $ bun run index.ts
25
+ ```sh terminal icon="terminal"
26
+ bun run index.ts
27
+ ```
28
+
29
+ ```txt
25
30
  /path/to/index.ts
26
- $ bun run foo.ts
31
+ ```
32
+
33
+ ```sh terminal icon="terminal"
34
+ bun run foo.ts
35
+ ```
36
+
37
+ ```txt
27
38
  /path/to/foo.ts
28
39
  ```
29
40
 
@@ -1,5 +1,7 @@
1
1
  ---
2
- name: Convert an absolute path to a file URL
2
+ title: Convert an absolute path to a file URL
3
+ sidebarTitle: Path to file URL
4
+ mode: center
3
5
  ---
4
6
 
5
7
  Use `Bun.pathToFileURL()` to convert an absolute path to a `file://` URL.
@@ -1,5 +1,7 @@
1
1
  ---
2
- name: Sleep for a fixed number of milliseconds
2
+ title: Sleep for a fixed number of milliseconds
3
+ sidebarTitle: Sleep
4
+ mode: center
3
5
  ---
4
6
 
5
7
  The `Bun.sleep` method provides a convenient way to create a void `Promise` that resolves in a fixed number of milliseconds.
@@ -1,18 +1,20 @@
1
1
  ---
2
- name: Get the current Bun version
2
+ title: Get the current Bun version
3
+ sidebarTitle: Get Bun version
4
+ mode: center
3
5
  ---
4
6
 
5
7
  Get the current version of Bun in a semver format.
6
8
 
7
- ```ts#index.ts
8
- Bun.version; // => "1.3.2-canary.20251105T140650"
9
+ ```ts index.ts icon="/icons/typescript.svg"
10
+ Bun.version; // => "1.3.1"
9
11
  ```
10
12
 
11
13
  ---
12
14
 
13
15
  Get the exact `git` commit of [`oven-sh/bun`](https://github.com/oven-sh/bun) that was compiled to produce this Bun binary.
14
16
 
15
- ```ts#index.ts
17
+ ```ts index.ts icon="/icons/typescript.svg"
16
18
  Bun.revision; // => "49231b2cb9aa48497ab966fc0bb6b742dacc4994"
17
19
  ```
18
20
 
@@ -1,10 +1,12 @@
1
1
  ---
2
- name: Get the path to an executable bin file
2
+ title: Get the path to an executable bin file
3
+ sidebarTitle: Find executable path
4
+ mode: center
3
5
  ---
4
6
 
5
7
  `Bun.which` is a utility function to find the absolute path of an executable file. It is similar to the `which` command in Unix-like systems.
6
8
 
7
- ```ts#foo.ts
9
+ ```ts foo.ts icon="/icons/typescript.svg"
8
10
  Bun.which("sh"); // => "/bin/sh"
9
11
  Bun.which("notfound"); // => null
10
12
  Bun.which("bun"); // => "/home/user/.bun/bin/bun"
@@ -1,10 +1,12 @@
1
1
  ---
2
- name: Enable compression for WebSocket messages
2
+ title: Enable compression for WebSocket messages
3
+ sidebarTitle: Enable compression
4
+ mode: center
3
5
  ---
4
6
 
5
7
  Per-message compression can be enabled with the `perMessageDeflate` parameter. When set, all messages will be compressed using the [permessage-deflate](https://tools.ietf.org/html/rfc7692) WebSocket extension.
6
8
 
7
- ```ts
9
+ ```ts server.ts icon="/icons/typescript.svg"
8
10
  Bun.serve({
9
11
  // ...
10
12
  websocket: {
@@ -18,7 +20,7 @@ Bun.serve({
18
20
 
19
21
  To enable compression for individual messages, pass `true` as the second parameter to `ws.send()`.
20
22
 
21
- ```ts
23
+ ```ts server.ts icon="/icons/typescript.svg"
22
24
  Bun.serve({
23
25
  // ...
24
26
  websocket: {
@@ -1,13 +1,15 @@
1
1
  ---
2
- name: Set per-socket contextual data on a WebSocket
2
+ title: Set per-socket contextual data on a WebSocket
3
+ sidebarTitle: Contextual data
4
+ mode: center
3
5
  ---
4
6
 
5
7
  When building a WebSocket server, it's typically necessary to store some identifying information or context associated with each connected client.
6
8
 
7
- With [Bun.serve()](https://bun.com/docs/api/websockets#contextual-data), this "contextual data" is set when the connection is initially upgraded by passing a `data` parameter in the `server.upgrade()` call.
9
+ With [Bun.serve()](https://bun.com/docs/api/websockets contextual-data), this "contextual data" is set when the connection is initially upgraded by passing a `data` parameter in the `server.upgrade()` call.
8
10
 
9
- ```ts
10
- Bun.serve({
11
+ ```ts server.ts icon="/icons/typescript.svg"
12
+ Bun.serve<{ socketId: number }>({
11
13
  fetch(req, server) {
12
14
  const success = server.upgrade(req, {
13
15
  data: {
@@ -20,9 +22,6 @@ Bun.serve({
20
22
  // ...
21
23
  },
22
24
  websocket: {
23
- // TypeScript: specify the type of ws.data like this
24
- data: {} as { socketId: number },
25
-
26
25
  // define websocket handlers
27
26
  async message(ws, message) {
28
27
  // the contextual data is available as the `data` property
@@ -37,14 +36,15 @@ Bun.serve({
37
36
 
38
37
  It's common to read cookies/headers from the incoming request to identify the connecting client.
39
38
 
40
- ```ts
39
+ ```ts server.ts icon="/icons/typescript.svg"
41
40
  type WebSocketData = {
42
41
  createdAt: number;
43
42
  token: string;
44
43
  userId: string;
45
44
  };
46
45
 
47
- Bun.serve({
46
+ // TypeScript: specify the type of `data`
47
+ Bun.serve<WebSocketData>({
48
48
  async fetch(req, server) {
49
49
  // use a library to parse cookies
50
50
  const cookies = parseCookies(req.headers.get("Cookie"));
@@ -62,9 +62,6 @@ Bun.serve({
62
62
  if (upgraded) return undefined;
63
63
  },
64
64
  websocket: {
65
- // TypeScript: specify the type of ws.data like this
66
- data: {} as WebSocketData,
67
-
68
65
  async message(ws, message) {
69
66
  // save the message to a database
70
67
  await saveMessageToDatabase({
@@ -1,13 +1,15 @@
1
1
  ---
2
- name: Build a publish-subscribe WebSocket server
2
+ title: Build a publish-subscribe WebSocket server
3
+ sidebarTitle: Pub-sub server
4
+ mode: center
3
5
  ---
4
6
 
5
7
  Bun's server-side `WebSocket` API provides a native pub-sub API. Sockets can be subscribed to a set of named channels using `socket.subscribe(<name>)`; messages can be published to a channel using `socket.publish(<name>, <message>)`.
6
8
 
7
9
  This code snippet implements a simple single-channel chat server.
8
10
 
9
- ```ts
10
- const server = Bun.serve({
11
+ ```ts server.ts icon="/icons/typescript.svg"
12
+ const server = Bun.serve<{ username: string }>({
11
13
  fetch(req, server) {
12
14
  const cookies = req.headers.get("cookie");
13
15
  const username = getUsernameFromCookies(cookies);
@@ -17,9 +19,6 @@ const server = Bun.serve({
17
19
  return new Response("Hello world");
18
20
  },
19
21
  websocket: {
20
- // TypeScript: specify the type of ws.data like this
21
- data: {} as { username: string },
22
-
23
22
  open(ws) {
24
23
  const msg = `${ws.data.username} has entered the chat`;
25
24
  ws.subscribe("the-group-chat");
@@ -1,13 +1,15 @@
1
1
  ---
2
- name: Build a simple WebSocket server
2
+ title: Build a simple WebSocket server
3
+ sidebarTitle: Simple server
4
+ mode: center
3
5
  ---
4
6
 
5
7
  Start a simple WebSocket server using [`Bun.serve`](https://bun.com/docs/api/http).
6
8
 
7
9
  Inside `fetch`, we attempt to upgrade incoming `ws:` or `wss:` requests to WebSocket connections.
8
10
 
9
- ```ts
10
- const server = Bun.serve({
11
+ ```ts server.ts icon="/icons/typescript.svg"
12
+ const server = Bun.serve<{ authToken: string }>({
11
13
  fetch(req, server) {
12
14
  const success = server.upgrade(req);
13
15
  if (success) {
@@ -1,5 +1,7 @@
1
1
  ---
2
- name: Append content to a file
2
+ title: Append content to a file
3
+ sidebarTitle: Append to file
4
+ mode: center
3
5
  ---
4
6
 
5
7
  Bun implements the `node:fs` module, which includes the `fs.appendFile` and `fs.appendFileSync` functions for appending content to files.
@@ -1,5 +1,7 @@
1
1
  ---
2
- name: Write a string to a file
2
+ title: Write a string to a file
3
+ sidebarTitle: Write string to file
4
+ mode: center
3
5
  ---
4
6
 
5
7
  This code snippet writes a string to disk at a particular _absolute path_.
@@ -1,5 +1,7 @@
1
1
  ---
2
- name: Write a Blob to a file
2
+ title: Write a Blob to a file
3
+ sidebarTitle: Write Blob
4
+ mode: center
3
5
  ---
4
6
 
5
7
  This code snippet writes a `Blob` to disk at a particular path.