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,6 +1,13 @@
1
- Bun provides native bindings for working with Redis databases with a modern, Promise-based API. The interface is designed to be simple and performant, with built-in connection management, fully typed responses, and TLS support. **New in Bun v1.2.9**
1
+ ---
2
+ title: Redis
3
+ description: Use Bun's native Redis client with a Promise-based API
4
+ ---
2
5
 
3
- ```ts
6
+ <Note>Bun's Redis client supports Redis server versions 7.2 and up.</Note>
7
+
8
+ Bun provides native bindings for working with Redis databases with a modern, Promise-based API. The interface is designed to be simple and performant, with built-in connection management, fully typed responses, and TLS support.
9
+
10
+ ```ts redis.ts icon="/icons/typescript.svg"
4
11
  import { redis } from "bun";
5
12
 
6
13
  // Set a key
@@ -21,11 +28,13 @@ const exists = await redis.exists("greeting");
21
28
  await redis.del("greeting");
22
29
  ```
23
30
 
31
+ ---
32
+
24
33
  ## Getting Started
25
34
 
26
35
  To use the Redis client, you first need to create a connection:
27
36
 
28
- ```ts
37
+ ```ts redis.ts icon="/icons/typescript.svg"
29
38
  import { redis, RedisClient } from "bun";
30
39
 
31
40
  // Using the default client (reads connection info from environment)
@@ -42,14 +51,13 @@ await client.incr("counter");
42
51
  By default, the client reads connection information from the following environment variables (in order of precedence):
43
52
 
44
53
  - `REDIS_URL`
45
- - `VALKEY_URL`
46
54
  - If not set, defaults to `"redis://localhost:6379"`
47
55
 
48
56
  ### Connection Lifecycle
49
57
 
50
58
  The Redis client automatically handles connections in the background:
51
59
 
52
- ```ts
60
+ ```ts redis.ts icon="/icons/typescript.svg"
53
61
  // No connection is made until a command is executed
54
62
  const client = new RedisClient();
55
63
 
@@ -65,7 +73,7 @@ client.close();
65
73
 
66
74
  You can also manually control the connection lifecycle:
67
75
 
68
- ```ts
76
+ ```ts redis.ts icon="/icons/typescript.svg"
69
77
  const client = new RedisClient();
70
78
 
71
79
  // Explicitly connect
@@ -78,11 +86,13 @@ await client.set("key", "value");
78
86
  client.close();
79
87
  ```
80
88
 
89
+ ---
90
+
81
91
  ## Basic Operations
82
92
 
83
93
  ### String Operations
84
94
 
85
- ```ts
95
+ ```ts redis.ts icon="/icons/typescript.svg"
86
96
  // Set a key
87
97
  await redis.set("user:1:name", "Alice");
88
98
 
@@ -108,7 +118,7 @@ const ttl = await redis.ttl("session:123");
108
118
 
109
119
  ### Numeric Operations
110
120
 
111
- ```ts
121
+ ```ts redis.ts icon="/icons/typescript.svg"
112
122
  // Set initial value
113
123
  await redis.set("counter", "0");
114
124
 
@@ -121,16 +131,9 @@ await redis.decr("counter");
121
131
 
122
132
  ### Hash Operations
123
133
 
124
- ```ts
134
+ ```ts redis.ts icon="/icons/typescript.svg"
125
135
  // Set multiple fields in a hash
126
- await redis.hmset("user:123", [
127
- "name",
128
- "Alice",
129
- "email",
130
- "alice@example.com",
131
- "active",
132
- "true",
133
- ]);
136
+ await redis.hmset("user:123", ["name", "Alice", "email", "alice@example.com", "active", "true"]);
134
137
 
135
138
  // Get multiple fields from a hash
136
139
  const userFields = await redis.hmget("user:123", ["name", "email"]);
@@ -149,7 +152,7 @@ await redis.hincrbyfloat("user:123", "score", 1.5);
149
152
 
150
153
  ### Set Operations
151
154
 
152
- ```ts
155
+ ```ts redis.ts icon="/icons/typescript.svg"
153
156
  // Add member to set
154
157
  await redis.sadd("tags", "javascript");
155
158
 
@@ -169,23 +172,25 @@ const randomTag = await redis.srandmember("tags");
169
172
  const poppedTag = await redis.spop("tags");
170
173
  ```
171
174
 
175
+ ---
176
+
172
177
  ## Pub/Sub
173
178
 
174
179
  Bun provides native bindings for the [Redis
175
180
  Pub/Sub](https://redis.io/docs/latest/develop/pubsub/) protocol. **New in Bun
176
181
  1.2.23**
177
182
 
178
- {% callout %}
179
- **🚧** — The Redis Pub/Sub feature is experimental. Although we expect it to be
180
- stable, we're currently actively looking for feedback and areas for improvement.
181
- {% /callout %}
183
+ <Warning>
184
+ The Redis Pub/Sub feature is experimental. Although we expect it to be stable, we're currently actively looking for
185
+ feedback and areas for improvement.
186
+ </Warning>
182
187
 
183
188
  ### Basic Usage
184
189
 
185
190
  To get started publishing messages, you can set up a publisher in
186
191
  `publisher.ts`:
187
192
 
188
- ```typescript#publisher.ts
193
+ ```typescript publisher.ts icon="/icons/typescript.svg"
189
194
  import { RedisClient } from "bun";
190
195
 
191
196
  const writer = new RedisClient("redis://localhost:6739");
@@ -198,7 +203,7 @@ writer.close();
198
203
 
199
204
  In another file, create the subscriber in `subscriber.ts`:
200
205
 
201
- ```typescript#subscriber.ts
206
+ ```typescript subscriber.ts icon="/icons/typescript.svg"
202
207
  import { RedisClient } from "bun";
203
208
 
204
209
  const listener = new RedisClient("redis://localhost:6739");
@@ -211,40 +216,40 @@ await listener.subscribe("general", (message, channel) => {
211
216
 
212
217
  In one shell, run your subscriber:
213
218
 
214
- ```bash
219
+ ```bash terminal icon="terminal"
215
220
  bun run subscriber.ts
216
221
  ```
217
222
 
218
223
  and, in another, run your publisher:
219
224
 
220
- ```bash
225
+ ```bash terminal icon="terminal"
221
226
  bun run publisher.ts
222
227
  ```
223
228
 
224
- {% callout %}
225
- **Note:** The subscription mode takes over the `RedisClient` connection. A
229
+ <Note>
230
+ The subscription mode takes over the `RedisClient` connection. A
226
231
  client with subscriptions can only call `RedisClient.prototype.subscribe()`. In
227
232
  other words, applications which need to message Redis need a separate
228
233
  connection, acquirable through `.duplicate()`:
229
234
 
230
- ```typescript
235
+ ```ts redis.ts icon="/icons/typescript.svg"
231
236
  import { RedisClient } from "bun";
232
237
 
233
238
  const redis = new RedisClient("redis://localhost:6379");
234
239
  await redis.connect();
235
- const subscriber = await redis.duplicate();
240
+ const subscriber = await redis.duplicate(); // [!code ++]
236
241
 
237
242
  await subscriber.subscribe("foo", () => {});
238
243
  await redis.set("bar", "baz");
239
244
  ```
240
245
 
241
- {% /callout %}
246
+ </Note>
242
247
 
243
248
  ### Publishing
244
249
 
245
250
  Publishing messages is done through the `publish()` method:
246
251
 
247
- ```typescript
252
+ ```typescript redis.ts icon="/icons/typescript.svg"
248
253
  await client.publish(channelName, message);
249
254
  ```
250
255
 
@@ -253,13 +258,13 @@ await client.publish(channelName, message);
253
258
  The Bun `RedisClient` allows you to subscribe to channels through the
254
259
  `.subscribe()` method:
255
260
 
256
- ```typescript
261
+ ```typescript redis.ts icon="/icons/typescript.svg"
257
262
  await client.subscribe(channel, (message, channel) => {});
258
263
  ```
259
264
 
260
265
  You can unsubscribe through the `.unsubscribe()` method:
261
266
 
262
- ```typescript
267
+ ```typescript redis.ts icon="/icons/typescript.svg"
263
268
  await client.unsubscribe(); // Unsubscribe from all channels.
264
269
  await client.unsubscribe(channel); // Unsubscribe a particular channel.
265
270
  await client.unsubscribe(channel, listener); // Unsubscribe a particular listener.
@@ -271,19 +276,16 @@ await client.unsubscribe(channel, listener); // Unsubscribe a particular listene
271
276
 
272
277
  The client automatically pipelines commands, improving performance by sending multiple commands in a batch and processing responses as they arrive.
273
278
 
274
- ```ts
279
+ ```ts redis.ts icon="/icons/typescript.svg"
275
280
  // Commands are automatically pipelined by default
276
- const [infoResult, listResult] = await Promise.all([
277
- redis.get("user:1:name"),
278
- redis.get("user:2:email"),
279
- ]);
281
+ const [infoResult, listResult] = await Promise.all([redis.get("user:1:name"), redis.get("user:2:email")]);
280
282
  ```
281
283
 
282
284
  To disable automatic pipelining, you can set the `enableAutoPipelining` option to `false`:
283
285
 
284
- ```ts
286
+ ```ts redis.ts icon="/icons/typescript.svg"
285
287
  const client = new RedisClient("redis://localhost:6379", {
286
- enableAutoPipelining: false,
288
+ enableAutoPipelining: false, // [!code ++]
287
289
  });
288
290
  ```
289
291
 
@@ -291,7 +293,7 @@ const client = new RedisClient("redis://localhost:6379", {
291
293
 
292
294
  When you need to use commands that don't have convenience methods, you can use the `send` method:
293
295
 
294
- ```ts
296
+ ```ts redis.ts icon="/icons/typescript.svg"
295
297
  // Run any Redis command
296
298
  const info = await redis.send("INFO", []);
297
299
 
@@ -308,7 +310,7 @@ The `send` method allows you to use any Redis command, even ones that don't have
308
310
 
309
311
  You can register handlers for connection events:
310
312
 
311
- ```ts
313
+ ```ts redis.ts icon="/icons/typescript.svg"
312
314
  const client = new RedisClient();
313
315
 
314
316
  // Called when successfully connected to Redis server
@@ -328,7 +330,7 @@ client.close();
328
330
 
329
331
  ### Connection Status and Monitoring
330
332
 
331
- ```ts
333
+ ```ts redis.ts icon="/icons/typescript.svg"
332
334
  // Check if connected
333
335
  console.log(client.connected); // boolean indicating connection status
334
336
 
@@ -373,11 +375,13 @@ The following commands disable automatic pipelining:
373
375
  - `UNSUBSCRIBE`
374
376
  - `UNPSUBSCRIBE`
375
377
 
378
+ ---
379
+
376
380
  ## Connection Options
377
381
 
378
382
  When creating a client, you can pass various options to configure the connection:
379
383
 
380
- ```ts
384
+ ```ts redis.ts icon="/icons/typescript.svg"
381
385
  const client = new RedisClient("redis://localhost:6379", {
382
386
  // Connection timeout in milliseconds (default: 10000)
383
387
  connectionTimeout: 5000,
@@ -420,11 +424,13 @@ When a connection is lost, the client automatically attempts to reconnect with e
420
424
  - Queued if `enableOfflineQueue` is true (default)
421
425
  - Rejected immediately if `enableOfflineQueue` is false
422
426
 
427
+ ---
428
+
423
429
  ## Supported URL Formats
424
430
 
425
431
  The Redis client supports various URL formats:
426
432
 
427
- ```ts
433
+ ```ts redis.ts icon="/icons/typescript.svg"
428
434
  // Standard Redis URL
429
435
  new RedisClient("redis://localhost:6379");
430
436
  new RedisClient("redis://localhost:6379");
@@ -450,11 +456,13 @@ new RedisClient("redis+tls+unix:///path/to/socket");
450
456
  new RedisClient("redis+tls+unix:///path/to/socket");
451
457
  ```
452
458
 
459
+ ---
460
+
453
461
  ## Error Handling
454
462
 
455
463
  The Redis client throws typed errors for different scenarios:
456
464
 
457
- ```ts
465
+ ```ts redis.ts icon="/icons/typescript.svg"
458
466
  try {
459
467
  await redis.get("non-existent-key");
460
468
  } catch (error) {
@@ -474,11 +482,13 @@ Common error codes:
474
482
  - `ERR_REDIS_AUTHENTICATION_FAILED` - Failed to authenticate with the server
475
483
  - `ERR_REDIS_INVALID_RESPONSE` - Received an invalid response from the server
476
484
 
485
+ ---
486
+
477
487
  ## Example Use Cases
478
488
 
479
489
  ### Caching
480
490
 
481
- ```ts
491
+ ```ts redis.ts icon="/icons/typescript.svg"
482
492
  async function getUserWithCache(userId) {
483
493
  const cacheKey = `user:${userId}`;
484
494
 
@@ -501,7 +511,7 @@ async function getUserWithCache(userId) {
501
511
 
502
512
  ### Rate Limiting
503
513
 
504
- ```ts
514
+ ```ts redis.ts icon="/icons/typescript.svg"
505
515
  async function rateLimit(ip, limit = 100, windowSecs = 3600) {
506
516
  const key = `ratelimit:${ip}`;
507
517
 
@@ -523,20 +533,13 @@ async function rateLimit(ip, limit = 100, windowSecs = 3600) {
523
533
 
524
534
  ### Session Storage
525
535
 
526
- ```ts
536
+ ```ts redis.ts icon="/icons/typescript.svg"
527
537
  async function createSession(userId, data) {
528
538
  const sessionId = crypto.randomUUID();
529
539
  const key = `session:${sessionId}`;
530
540
 
531
541
  // Store session with expiration
532
- await redis.hmset(key, [
533
- "userId",
534
- userId.toString(),
535
- "created",
536
- Date.now().toString(),
537
- "data",
538
- JSON.stringify(data),
539
- ]);
542
+ await redis.hmset(key, ["userId", userId.toString(), "created", Date.now().toString(), "data", JSON.stringify(data)]);
540
543
  await redis.expire(key, 86400); // 24 hours
541
544
 
542
545
  return sessionId;
@@ -549,11 +552,7 @@ async function getSession(sessionId) {
549
552
  const exists = await redis.exists(key);
550
553
  if (!exists) return null;
551
554
 
552
- const [userId, created, data] = await redis.hmget(key, [
553
- "userId",
554
- "created",
555
- "data",
556
- ]);
555
+ const [userId, created, data] = await redis.hmget(key, ["userId", "created", "data"]);
557
556
 
558
557
  return {
559
558
  userId: Number(userId),
@@ -563,33 +562,19 @@ async function getSession(sessionId) {
563
562
  }
564
563
  ```
565
564
 
565
+ ---
566
+
566
567
  ## Implementation Notes
567
568
 
568
569
  Bun's Redis client is implemented in Zig and uses the Redis Serialization Protocol (RESP3). It manages connections efficiently and provides automatic reconnection with exponential backoff.
569
570
 
570
571
  The client supports pipelining commands, meaning multiple commands can be sent without waiting for the replies to previous commands. This significantly improves performance when sending multiple commands in succession.
571
572
 
572
- ### RESP3 Protocol Support
573
-
574
- Bun's Redis client uses the newer RESP3 protocol by default, which provides more data types and features compared to RESP2:
575
-
576
- - Better error handling with typed errors
577
- - Native Boolean responses
578
- - Map/Dictionary responses (key-value objects)
579
- - Set responses
580
- - Double (floating point) values
581
- - BigNumber support for large integer values
582
-
583
- When connecting to Redis servers using older versions that don't support RESP3, the client automatically fallbacks to compatible modes.
584
-
585
573
  ## Limitations and Future Plans
586
574
 
587
575
  Current limitations of the Redis client we are planning to address in future versions:
588
576
 
589
- - [ ] Transactions (MULTI/EXEC) must be done through raw commands for now
590
- - [ ] Streams are supported but without dedicated methods
591
- - [ ] Pub/Sub does not currently support binary data, nor pattern-based
592
- subscriptions.
577
+ - Transactions (MULTI/EXEC) must be done through raw commands for now
593
578
 
594
579
  Unsupported features:
595
580