bun-types 1.3.2-canary.20251105T140650 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (370) hide show
  1. package/bun.d.ts +102 -6
  2. package/docs/README.md +28 -0
  3. package/docs/bundler/bytecode.mdx +465 -0
  4. package/docs/bundler/{css.md → css.mdx} +97 -101
  5. package/docs/bundler/esbuild.mdx +253 -0
  6. package/docs/bundler/{executables.md → executables.mdx} +130 -221
  7. package/docs/bundler/fullstack.mdx +1064 -0
  8. package/docs/bundler/{hmr.md → hot-reloading.mdx} +74 -79
  9. package/docs/bundler/{html.md → html-static.mdx} +148 -111
  10. package/docs/bundler/index.mdx +1499 -0
  11. package/docs/bundler/loaders.mdx +356 -0
  12. package/docs/bundler/{macros.md → macros.mdx} +83 -84
  13. package/docs/bundler/minifier.mdx +1306 -0
  14. package/docs/bundler/plugins.mdx +411 -0
  15. package/docs/feedback.mdx +85 -0
  16. package/docs/guides/binary/{arraybuffer-to-array.md → arraybuffer-to-array.mdx} +3 -1
  17. package/docs/guides/binary/{arraybuffer-to-blob.md → arraybuffer-to-blob.mdx} +3 -1
  18. package/docs/guides/binary/{arraybuffer-to-buffer.md → arraybuffer-to-buffer.mdx} +3 -1
  19. package/docs/guides/binary/{arraybuffer-to-string.md → arraybuffer-to-string.mdx} +3 -1
  20. package/docs/guides/binary/{arraybuffer-to-typedarray.md → arraybuffer-to-typedarray.mdx} +3 -1
  21. package/docs/guides/binary/{blob-to-arraybuffer.md → blob-to-arraybuffer.mdx} +3 -1
  22. package/docs/guides/binary/{blob-to-dataview.md → blob-to-dataview.mdx} +3 -1
  23. package/docs/guides/binary/{blob-to-stream.md → blob-to-stream.mdx} +3 -1
  24. package/docs/guides/binary/{blob-to-string.md → blob-to-string.mdx} +3 -1
  25. package/docs/guides/binary/{blob-to-typedarray.md → blob-to-typedarray.mdx} +3 -1
  26. package/docs/guides/binary/{buffer-to-arraybuffer.md → buffer-to-arraybuffer.mdx} +3 -1
  27. package/docs/guides/binary/{buffer-to-blob.md → buffer-to-blob.mdx} +3 -1
  28. package/docs/guides/binary/{buffer-to-readablestream.md → buffer-to-readablestream.mdx} +3 -1
  29. package/docs/guides/binary/{buffer-to-string.md → buffer-to-string.mdx} +3 -1
  30. package/docs/guides/binary/{buffer-to-typedarray.md → buffer-to-typedarray.mdx} +3 -1
  31. package/docs/guides/binary/{dataview-to-string.md → dataview-to-string.mdx} +3 -1
  32. package/docs/guides/binary/{typedarray-to-arraybuffer.md → typedarray-to-arraybuffer.mdx} +3 -1
  33. package/docs/guides/binary/{typedarray-to-blob.md → typedarray-to-blob.mdx} +3 -1
  34. package/docs/guides/binary/{typedarray-to-buffer.md → typedarray-to-buffer.mdx} +3 -1
  35. package/docs/guides/binary/{typedarray-to-dataview.md → typedarray-to-dataview.mdx} +3 -1
  36. package/docs/guides/binary/{typedarray-to-readablestream.md → typedarray-to-readablestream.mdx} +3 -1
  37. package/docs/guides/binary/{typedarray-to-string.md → typedarray-to-string.mdx} +3 -1
  38. package/docs/guides/deployment/aws-lambda.mdx +204 -0
  39. package/docs/guides/deployment/digital-ocean.mdx +161 -0
  40. package/docs/guides/deployment/google-cloud-run.mdx +197 -0
  41. package/docs/guides/deployment/{railway.md → railway.mdx} +42 -54
  42. package/docs/guides/deployment/render.mdx +82 -0
  43. package/docs/guides/deployment/vercel.mdx +99 -0
  44. package/docs/guides/ecosystem/{astro.md → astro.mdx} +16 -6
  45. package/docs/guides/ecosystem/{discordjs.md → discordjs.mdx} +21 -18
  46. package/docs/guides/ecosystem/{docker.md → docker.mdx} +25 -14
  47. package/docs/guides/ecosystem/{drizzle.md → drizzle.mdx} +32 -22
  48. package/docs/guides/ecosystem/{edgedb.md → edgedb.mdx} +63 -34
  49. package/docs/guides/ecosystem/{elysia.md → elysia.mdx} +11 -11
  50. package/docs/guides/ecosystem/{express.md → express.mdx} +12 -9
  51. package/docs/guides/ecosystem/{hono.md → hono.mdx} +16 -8
  52. package/docs/guides/ecosystem/{mongoose.md → mongoose.mdx} +26 -21
  53. package/docs/guides/ecosystem/{neon-drizzle.md → neon-drizzle.mdx} +49 -35
  54. package/docs/guides/ecosystem/{neon-serverless-postgres.md → neon-serverless-postgres.mdx} +16 -11
  55. package/docs/guides/ecosystem/{nextjs.md → nextjs.mdx} +18 -10
  56. package/docs/guides/ecosystem/{nuxt.md → nuxt.mdx} +45 -11
  57. package/docs/guides/ecosystem/{pm2.md → pm2.mdx} +7 -9
  58. package/docs/guides/ecosystem/prisma-postgres.mdx +169 -0
  59. package/docs/guides/ecosystem/prisma.mdx +164 -0
  60. package/docs/guides/ecosystem/{qwik.md → qwik.mdx} +18 -11
  61. package/docs/guides/ecosystem/{react.md → react.mdx} +9 -7
  62. package/docs/guides/ecosystem/{remix.md → remix.mdx} +45 -26
  63. package/docs/guides/ecosystem/{sentry.md → sentry.mdx} +7 -5
  64. package/docs/guides/ecosystem/{solidstart.md → solidstart.mdx} +21 -13
  65. package/docs/guides/ecosystem/{ssr-react.md → ssr-react.mdx} +9 -11
  66. package/docs/guides/ecosystem/{stric.md → stric.mdx} +16 -17
  67. package/docs/guides/ecosystem/{sveltekit.md → sveltekit.mdx} +42 -29
  68. package/docs/guides/ecosystem/{systemd.md → systemd.mdx} +27 -26
  69. package/docs/guides/ecosystem/upstash.mdx +87 -0
  70. package/docs/guides/ecosystem/{vite.md → vite.mdx} +20 -14
  71. package/docs/guides/html-rewriter/{extract-links.md → extract-links.mdx} +11 -7
  72. package/docs/guides/html-rewriter/{extract-social-meta.md → extract-social-meta.mdx} +6 -2
  73. package/docs/guides/http/{cluster.md → cluster.mdx} +10 -7
  74. package/docs/guides/http/{fetch-unix.md → fetch-unix.mdx} +5 -3
  75. package/docs/guides/http/{fetch.md → fetch.mdx} +5 -3
  76. package/docs/guides/http/{file-uploads.md → file-uploads.mdx} +18 -15
  77. package/docs/guides/http/{hot.md → hot.mdx} +9 -7
  78. package/docs/guides/http/{proxy.md → proxy.mdx} +7 -5
  79. package/docs/guides/http/{server.md → server.mdx} +4 -2
  80. package/docs/guides/http/{simple.md → simple.mdx} +4 -2
  81. package/docs/guides/http/{stream-file.md → stream-file.mdx} +6 -4
  82. package/docs/guides/http/{stream-iterator.md → stream-iterator.mdx} +5 -3
  83. package/docs/guides/http/{stream-node-streams-in-bun.md → stream-node-streams-in-bun.mdx} +4 -2
  84. package/docs/guides/http/{tls.md → tls.mdx} +5 -3
  85. package/docs/guides/index.mdx +10 -0
  86. package/docs/guides/install/{add-dev.md → add-dev.mdx} +8 -6
  87. package/docs/guides/install/add-git.mdx +38 -0
  88. package/docs/guides/install/{add-optional.md → add-optional.mdx} +7 -5
  89. package/docs/guides/install/{add-peer.md → add-peer.mdx} +13 -11
  90. package/docs/guides/install/{add-tarball.md → add-tarball.mdx} +7 -5
  91. package/docs/guides/install/{add.md → add.mdx} +12 -10
  92. package/docs/guides/install/{azure-artifacts.md → azure-artifacts.mdx} +15 -12
  93. package/docs/guides/{runtime/cicd.md → install/cicd.mdx} +13 -13
  94. package/docs/guides/install/{custom-registry.md → custom-registry.mdx} +6 -4
  95. package/docs/guides/install/{from-npm-install-to-bun-install.md → from-npm-install-to-bun-install.mdx} +50 -34
  96. package/docs/guides/install/{git-diff-bun-lockfile.md → git-diff-bun-lockfile.mdx} +14 -11
  97. package/docs/guides/install/{jfrog-artifactory.md → jfrog-artifactory.mdx} +4 -4
  98. package/docs/guides/install/{npm-alias.md → npm-alias.mdx} +6 -4
  99. package/docs/guides/install/{registry-scope.md → registry-scope.mdx} +6 -4
  100. package/docs/guides/install/{trusted.md → trusted.mdx} +22 -18
  101. package/docs/guides/install/{workspaces.md → workspaces.mdx} +13 -13
  102. package/docs/guides/install/{yarnlock.md → yarnlock.mdx} +15 -9
  103. package/docs/guides/process/{argv.md → argv.mdx} +17 -9
  104. package/docs/guides/process/{ctrl-c.md → ctrl-c.mdx} +4 -2
  105. package/docs/guides/process/{ipc.md → ipc.mdx} +13 -10
  106. package/docs/guides/process/{nanoseconds.md → nanoseconds.mdx} +3 -1
  107. package/docs/guides/process/{os-signals.md → os-signals.mdx} +3 -1
  108. package/docs/guides/process/{spawn-stderr.md → spawn-stderr.mdx} +4 -1
  109. package/docs/guides/process/{spawn-stdout.md → spawn-stdout.mdx} +3 -1
  110. package/docs/guides/process/{spawn.md → spawn.mdx} +3 -1
  111. package/docs/guides/process/{stdin.md → stdin.mdx} +15 -7
  112. package/docs/guides/read-file/{arraybuffer.md → arraybuffer.mdx} +5 -3
  113. package/docs/guides/read-file/{buffer.md → buffer.mdx} +4 -2
  114. package/docs/guides/read-file/{exists.md → exists.mdx} +4 -2
  115. package/docs/guides/read-file/{json.md → json.mdx} +4 -2
  116. package/docs/guides/read-file/{mime.md → mime.mdx} +3 -1
  117. package/docs/guides/read-file/{stream.md → stream.mdx} +3 -1
  118. package/docs/guides/read-file/{string.md → string.mdx} +3 -1
  119. package/docs/guides/read-file/{uint8array.md → uint8array.mdx} +3 -1
  120. package/docs/guides/read-file/{watch.md → watch.mdx} +6 -8
  121. package/docs/guides/runtime/{build-time-constants.md → build-time-constants.mdx} +24 -22
  122. package/docs/guides/{install/cicd.md → runtime/cicd.mdx} +11 -7
  123. package/docs/guides/runtime/{codesign-macos-executable.md → codesign-macos-executable.mdx} +14 -9
  124. package/docs/guides/runtime/{define-constant.md → define-constant.mdx} +20 -16
  125. package/docs/guides/runtime/{delete-directory.md → delete-directory.mdx} +5 -3
  126. package/docs/guides/runtime/{delete-file.md → delete-file.mdx} +4 -2
  127. package/docs/guides/runtime/{heap-snapshot.md → heap-snapshot.mdx} +5 -3
  128. package/docs/guides/runtime/{import-html.md → import-html.mdx} +4 -2
  129. package/docs/guides/runtime/{import-json.md → import-json.mdx} +6 -4
  130. package/docs/guides/runtime/{import-toml.md → import-toml.mdx} +5 -3
  131. package/docs/guides/runtime/{import-yaml.md → import-yaml.mdx} +9 -7
  132. package/docs/guides/runtime/{read-env.md → read-env.mdx} +10 -5
  133. package/docs/guides/runtime/{set-env.md → set-env.mdx} +14 -10
  134. package/docs/guides/runtime/{shell.md → shell.mdx} +6 -4
  135. package/docs/guides/runtime/{timezone.md → timezone.mdx} +10 -7
  136. package/docs/guides/runtime/{tsconfig-paths.md → tsconfig-paths.mdx} +5 -3
  137. package/docs/guides/runtime/{typescript.md → typescript.mdx} +8 -6
  138. package/docs/guides/runtime/{vscode-debugger.md → vscode-debugger.mdx} +12 -11
  139. package/docs/guides/runtime/{web-debugger.md → web-debugger.mdx} +39 -18
  140. package/docs/guides/streams/{node-readable-to-arraybuffer.md → node-readable-to-arraybuffer.mdx} +3 -1
  141. package/docs/guides/streams/{node-readable-to-blob.md → node-readable-to-blob.mdx} +3 -1
  142. package/docs/guides/streams/{node-readable-to-json.md → node-readable-to-json.mdx} +3 -1
  143. package/docs/guides/streams/{node-readable-to-string.md → node-readable-to-string.mdx} +3 -1
  144. package/docs/guides/streams/{node-readable-to-uint8array.md → node-readable-to-uint8array.mdx} +3 -1
  145. package/docs/guides/streams/{to-array.md → to-array.mdx} +3 -1
  146. package/docs/guides/streams/{to-arraybuffer.md → to-arraybuffer.mdx} +3 -1
  147. package/docs/guides/streams/{to-blob.md → to-blob.mdx} +3 -1
  148. package/docs/guides/streams/{to-buffer.md → to-buffer.mdx} +3 -1
  149. package/docs/guides/streams/{to-json.md → to-json.mdx} +4 -2
  150. package/docs/guides/streams/{to-string.md → to-string.mdx} +3 -1
  151. package/docs/guides/streams/{to-typedarray.md → to-typedarray.mdx} +3 -1
  152. package/docs/guides/test/{bail.md → bail.mdx} +7 -5
  153. package/docs/guides/test/{coverage-threshold.md → coverage-threshold.mdx} +14 -7
  154. package/docs/guides/test/{coverage.md → coverage.mdx} +9 -4
  155. package/docs/guides/test/{happy-dom.md → happy-dom.mdx} +13 -8
  156. package/docs/guides/test/{migrate-from-jest.md → migrate-from-jest.mdx} +19 -37
  157. package/docs/guides/test/{mock-clock.md → mock-clock.mdx} +3 -1
  158. package/docs/guides/test/{mock-functions.md → mock-functions.mdx} +7 -5
  159. package/docs/guides/test/{rerun-each.md → rerun-each.mdx} +5 -3
  160. package/docs/guides/test/{run-tests.md → run-tests.mdx} +16 -11
  161. package/docs/guides/test/{skip-tests.md → skip-tests.mdx} +8 -4
  162. package/docs/guides/test/{snapshot.md → snapshot.mdx} +20 -13
  163. package/docs/guides/test/spy-on.mdx +49 -0
  164. package/docs/guides/test/{svelte-test.md → svelte-test.mdx} +16 -23
  165. package/docs/guides/test/{testing-library.md → testing-library.mdx} +18 -17
  166. package/docs/guides/test/{timeout.md → timeout.mdx} +5 -3
  167. package/docs/guides/test/{todo-tests.md → todo-tests.mdx} +13 -6
  168. package/docs/guides/test/{update-snapshots.md → update-snapshots.mdx} +9 -6
  169. package/docs/guides/test/{watch-mode.md → watch-mode.mdx} +9 -4
  170. package/docs/guides/util/{base64.md → base64.mdx} +3 -1
  171. package/docs/guides/util/{deep-equals.md → deep-equals.mdx} +5 -3
  172. package/docs/guides/util/{deflate.md → deflate.mdx} +3 -1
  173. package/docs/guides/util/{detect-bun.md → detect-bun.mdx} +3 -1
  174. package/docs/guides/util/{entrypoint.md → entrypoint.mdx} +4 -2
  175. package/docs/guides/util/{escape-html.md → escape-html.mdx} +3 -1
  176. package/docs/guides/util/{file-url-to-path.md → file-url-to-path.mdx} +3 -1
  177. package/docs/guides/util/{gzip.md → gzip.mdx} +3 -1
  178. package/docs/guides/util/{hash-a-password.md → hash-a-password.mdx} +3 -1
  179. package/docs/guides/util/{import-meta-dir.md → import-meta-dir.mdx} +4 -2
  180. package/docs/guides/util/{import-meta-file.md → import-meta-file.mdx} +4 -2
  181. package/docs/guides/util/{import-meta-path.md → import-meta-path.mdx} +4 -2
  182. package/docs/guides/util/{javascript-uuid.md → javascript-uuid.mdx} +3 -1
  183. package/docs/guides/util/{main.md → main.mdx} +19 -8
  184. package/docs/guides/util/{path-to-file-url.md → path-to-file-url.mdx} +3 -1
  185. package/docs/guides/util/{sleep.md → sleep.mdx} +3 -1
  186. package/docs/guides/util/{version.md → version.mdx} +6 -4
  187. package/docs/guides/util/{which-path-to-executable-bin.md → which-path-to-executable-bin.mdx} +4 -2
  188. package/docs/guides/websocket/{compression.md → compression.mdx} +5 -3
  189. package/docs/guides/websocket/{context.md → context.mdx} +9 -12
  190. package/docs/guides/websocket/{pubsub.md → pubsub.mdx} +5 -6
  191. package/docs/guides/websocket/{simple.md → simple.mdx} +5 -3
  192. package/docs/guides/write-file/{append.md → append.mdx} +3 -1
  193. package/docs/guides/write-file/{basic.md → basic.mdx} +3 -1
  194. package/docs/guides/write-file/{blob.md → blob.mdx} +3 -1
  195. package/docs/guides/write-file/{cat.md → cat.mdx} +4 -2
  196. package/docs/guides/write-file/{file-cp.md → file-cp.mdx} +3 -1
  197. package/docs/guides/write-file/{filesink.md → filesink.mdx} +3 -1
  198. package/docs/guides/write-file/{response.md → response.mdx} +3 -1
  199. package/docs/guides/write-file/{stdout.md → stdout.mdx} +3 -1
  200. package/docs/guides/write-file/{stream.md → stream.mdx} +3 -1
  201. package/docs/guides/write-file/{unlink.md → unlink.mdx} +3 -1
  202. package/docs/{index.md → index.mdx} +97 -41
  203. package/docs/installation.mdx +365 -0
  204. package/docs/{cli/bunx.md → pm/bunx.mdx} +25 -31
  205. package/docs/{install/catalogs.md → pm/catalogs.mdx} +18 -24
  206. package/docs/{cli/add.md → pm/cli/add.mdx} +61 -55
  207. package/docs/{install/audit.md → pm/cli/audit.mdx} +11 -8
  208. package/docs/{cli/install.md → pm/cli/install.mdx} +208 -81
  209. package/docs/{cli/link.md → pm/cli/link.mdx} +27 -19
  210. package/docs/{cli/outdated.md → pm/cli/outdated.mdx} +119 -12
  211. package/docs/{install/patch.md → pm/cli/patch.mdx} +25 -15
  212. package/docs/{cli/pm.md → pm/cli/pm.mdx} +96 -62
  213. package/docs/{cli/publish.md → pm/cli/publish.mdx} +38 -35
  214. package/docs/pm/cli/remove.mdx +16 -0
  215. package/docs/{cli/update.md → pm/cli/update.mdx} +26 -15
  216. package/docs/{cli/why.md → pm/cli/why.mdx} +27 -10
  217. package/docs/{cli/filter.md → pm/filter.mdx} +26 -14
  218. package/docs/{install/cache.md → pm/global-cache.mdx} +25 -12
  219. package/docs/{install/isolated.md → pm/isolated-installs.mdx} +32 -24
  220. package/docs/{install/lifecycle.md → pm/lifecycle.mdx} +20 -9
  221. package/docs/{install/lockfile.md → pm/lockfile.mdx} +18 -12
  222. package/docs/{install/npmrc.md → pm/npmrc.mdx} +30 -24
  223. package/docs/{install/overrides.md → pm/overrides.mdx} +47 -37
  224. package/docs/{install/registries.md → pm/scopes-registries.mdx} +8 -3
  225. package/docs/{install/security-scanner-api.md → pm/security-scanner-api.mdx} +22 -8
  226. package/docs/{install/workspaces.md → pm/workspaces.mdx} +17 -22
  227. package/docs/project/{benchmarking.md → benchmarking.mdx} +26 -11
  228. package/docs/project/{bindgen.md → bindgen.mdx} +12 -14
  229. package/docs/project/{building-windows.md → building-windows.mdx} +18 -47
  230. package/docs/project/{contributing.md → contributing.mdx} +56 -60
  231. package/docs/project/feedback.mdx +20 -0
  232. package/docs/project/license.mdx +78 -0
  233. package/docs/project/roadmap.mdx +8 -0
  234. package/docs/quickstart.mdx +240 -0
  235. package/docs/runtime/{autoimport.md → auto-install.mdx} +34 -31
  236. package/docs/{api/binary-data.md → runtime/binary-data.mdx} +77 -269
  237. package/docs/runtime/bun-apis.mdx +59 -0
  238. package/docs/runtime/{bunfig.md → bunfig.mdx} +95 -225
  239. package/docs/{api/cc.md → runtime/c-compiler.mdx} +16 -9
  240. package/docs/{api/spawn.md → runtime/child-process.mdx} +69 -119
  241. package/docs/{api/color.md → runtime/color.mdx} +6 -1
  242. package/docs/{api/console.md → runtime/console.mdx} +17 -7
  243. package/docs/{api/cookie.md → runtime/cookies.mdx} +24 -19
  244. package/docs/runtime/{debugger.md → debugger.mdx} +61 -51
  245. package/docs/runtime/environment-variables.mdx +214 -0
  246. package/docs/{api/ffi.md → runtime/ffi.mdx} +53 -45
  247. package/docs/{api/file-io.md → runtime/file-io.mdx} +41 -101
  248. package/docs/{api/file-system-router.md → runtime/file-system-router.mdx} +8 -2
  249. package/docs/{bundler/loaders.md → runtime/file-types.mdx} +56 -112
  250. package/docs/{api/glob.md → runtime/glob.mdx} +4 -1
  251. package/docs/runtime/globals.mdx +72 -0
  252. package/docs/{api/hashing.md → runtime/hashing.mdx} +18 -22
  253. package/docs/{api/html-rewriter.md → runtime/html-rewriter.mdx} +36 -30
  254. package/docs/runtime/http/cookies.mdx +79 -0
  255. package/docs/runtime/http/error-handling.mdx +40 -0
  256. package/docs/runtime/http/metrics.mdx +36 -0
  257. package/docs/runtime/http/routing.mdx +289 -0
  258. package/docs/runtime/http/server.mdx +647 -0
  259. package/docs/runtime/http/tls.mdx +101 -0
  260. package/docs/{api/websockets.md → runtime/http/websockets.mdx} +62 -231
  261. package/docs/{cli/run.md → runtime/index.mdx} +70 -108
  262. package/docs/runtime/jsx.mdx +115 -0
  263. package/docs/runtime/{modules.md → module-resolution.mdx} +83 -61
  264. package/docs/{api/dns.md → runtime/networking/dns.mdx} +23 -22
  265. package/docs/{api/fetch.md → runtime/networking/fetch.mdx} +10 -5
  266. package/docs/{api/tcp.md → runtime/networking/tcp.mdx} +59 -41
  267. package/docs/{api/udp.md → runtime/networking/udp.mdx} +14 -8
  268. package/docs/{api/node-api.md → runtime/node-api.mdx} +5 -0
  269. package/docs/runtime/{nodejs-apis.md → nodejs-compat.mdx} +9 -4
  270. package/docs/{bundler/plugins.md → runtime/plugins.mdx} +17 -61
  271. package/docs/{api/redis.md → runtime/redis.mdx} +65 -80
  272. package/docs/{api/s3.md → runtime/s3.mdx} +79 -66
  273. package/docs/{api/secrets.md → runtime/secrets.mdx} +27 -10
  274. package/docs/{api/semver.md → runtime/semver.mdx} +9 -4
  275. package/docs/runtime/{shell.md → shell.mdx} +52 -20
  276. package/docs/{api/sql.md → runtime/sql.mdx} +129 -99
  277. package/docs/{api/sqlite.md → runtime/sqlite.mdx} +162 -157
  278. package/docs/{api/streams.md → runtime/streams.mdx} +33 -31
  279. package/docs/{cli/bun-create.md → runtime/templating/create.mdx} +74 -143
  280. package/docs/{cli/init.md → runtime/templating/init.mdx} +24 -51
  281. package/docs/{api/transpiler.md → runtime/transpiler.mdx} +50 -38
  282. package/docs/{typescript.md → runtime/typescript.mdx} +7 -2
  283. package/docs/{api/utils.md → runtime/utils.mdx} +81 -50
  284. package/docs/runtime/{hot.md → watch-mode.mdx} +53 -37
  285. package/docs/runtime/web-apis.mdx +29 -0
  286. package/docs/{api/workers.md → runtime/workers.mdx} +28 -22
  287. package/docs/{api/yaml.md → runtime/yaml.mdx} +33 -232
  288. package/docs/snippets/cli/add.mdx +166 -0
  289. package/docs/snippets/cli/build.mdx +196 -0
  290. package/docs/snippets/cli/feedback.mdx +17 -0
  291. package/docs/snippets/cli/init.mdx +84 -0
  292. package/docs/snippets/cli/install.mdx +173 -0
  293. package/docs/snippets/cli/link.mdx +163 -0
  294. package/docs/snippets/cli/outdated.mdx +140 -0
  295. package/docs/snippets/cli/patch.mdx +171 -0
  296. package/docs/snippets/cli/publish.mdx +198 -0
  297. package/docs/snippets/cli/remove.mdx +146 -0
  298. package/docs/snippets/cli/run.mdx +293 -0
  299. package/docs/snippets/cli/test.mdx +100 -0
  300. package/docs/snippets/cli/update.mdx +144 -0
  301. package/docs/snippets/product-card.mdx +32 -0
  302. package/docs/snippets/product-tiles.mdx +94 -0
  303. package/docs/test/code-coverage.mdx +409 -0
  304. package/docs/test/configuration.mdx +467 -0
  305. package/docs/test/{time.md → dates-times.mdx} +23 -20
  306. package/docs/test/{discovery.md → discovery.mdx} +15 -10
  307. package/docs/test/dom.mdx +226 -0
  308. package/docs/{cli/test.md → test/index.mdx} +77 -94
  309. package/docs/test/lifecycle.mdx +348 -0
  310. package/docs/test/mocks.mdx +637 -0
  311. package/docs/test/{reporters.md → reporters.mdx} +15 -15
  312. package/docs/test/runtime-behavior.mdx +342 -0
  313. package/docs/test/snapshots.mdx +434 -0
  314. package/docs/test/writing-tests.mdx +635 -0
  315. package/docs/typescript.mdx +54 -0
  316. package/package.json +8 -6
  317. package/test.d.ts +2 -2
  318. package/docs/api/file.md +0 -19
  319. package/docs/api/globals.md +0 -387
  320. package/docs/api/http.md +0 -1408
  321. package/docs/api/import-meta.md +0 -69
  322. package/docs/benchmarks.md +0 -120
  323. package/docs/bun-flavored-toml.md +0 -42
  324. package/docs/bundler/css_modules.md +0 -145
  325. package/docs/bundler/fullstack.md +0 -418
  326. package/docs/bundler/index.md +0 -1735
  327. package/docs/bundler/intro.md +0 -75
  328. package/docs/bundler/vs-esbuild.md +0 -1127
  329. package/docs/cli/bun-completions.md +0 -3
  330. package/docs/cli/bun-install.md +0 -349
  331. package/docs/cli/bun-upgrade.md +0 -39
  332. package/docs/cli/info.md +0 -65
  333. package/docs/cli/patch-commit.md +0 -11
  334. package/docs/cli/remove.md +0 -7
  335. package/docs/cli/unlink.md +0 -9
  336. package/docs/contributing/upgrading-webkit.md +0 -57
  337. package/docs/ecosystem/elysia.md +0 -24
  338. package/docs/ecosystem/express.md +0 -37
  339. package/docs/ecosystem/hono.md +0 -18
  340. package/docs/ecosystem/react.md +0 -65
  341. package/docs/ecosystem/stric.md +0 -38
  342. package/docs/guides/ecosystem/prisma.md +0 -141
  343. package/docs/guides/ecosystem/render.md +0 -79
  344. package/docs/guides/install/add-git.md +0 -36
  345. package/docs/guides/test/spy-on.md +0 -46
  346. package/docs/install/index.md +0 -248
  347. package/docs/installation.md +0 -327
  348. package/docs/project/asan.md +0 -124
  349. package/docs/project/internals/build-process-for-ci.md +0 -75
  350. package/docs/project/licensing.md +0 -73
  351. package/docs/project/roadmap.md +0 -87
  352. package/docs/quickstart.md +0 -157
  353. package/docs/runtime/bun-apis.md +0 -207
  354. package/docs/runtime/env.md +0 -253
  355. package/docs/runtime/index.md +0 -312
  356. package/docs/runtime/jsx.md +0 -385
  357. package/docs/runtime/loaders.md +0 -130
  358. package/docs/runtime/plugins.md +0 -561
  359. package/docs/runtime/typescript.md +0 -139
  360. package/docs/runtime/web-apis.md +0 -128
  361. package/docs/test/configuration.md +0 -154
  362. package/docs/test/coverage.md +0 -142
  363. package/docs/test/dom.md +0 -75
  364. package/docs/test/examples/concurrent-test-glob.md +0 -132
  365. package/docs/test/hot.md +0 -15
  366. package/docs/test/lifecycle.md +0 -81
  367. package/docs/test/mocks.md +0 -313
  368. package/docs/test/runtime-behavior.md +0 -95
  369. package/docs/test/snapshots.md +0 -68
  370. package/docs/test/writing.md +0 -825
@@ -1,12 +1,19 @@
1
+ ---
2
+ title: C Compiler
3
+ description: Compile and run C from JavaScript with low overhead
4
+ ---
5
+
1
6
  `bun:ffi` has experimental support for compiling and running C from JavaScript with low overhead.
2
7
 
8
+ ---
9
+
3
10
  ## Usage (cc in `bun:ffi`)
4
11
 
5
12
  See the [introduction blog post](https://bun.com/blog/compile-and-run-c-in-js) for more information.
6
13
 
7
14
  JavaScript:
8
15
 
9
- ```ts#hello.js
16
+ ```ts hello.js icon="file-code"
10
17
  import { cc } from "bun:ffi";
11
18
  import source from "./hello.c" with { type: "file" };
12
19
 
@@ -27,7 +34,7 @@ console.log("What is the answer to the universe?", hello());
27
34
 
28
35
  C source:
29
36
 
30
- ```c#hello.c
37
+ ```c hello.c
31
38
  int hello() {
32
39
  return 42;
33
40
  }
@@ -35,8 +42,8 @@ int hello() {
35
42
 
36
43
  When you run `hello.js`, it will print:
37
44
 
38
- ```sh
39
- $ bun hello.js
45
+ ```sh terminal icon="terminal"
46
+ bun hello.js
40
47
  What is the answer to the universe? 42
41
48
  ```
42
49
 
@@ -44,7 +51,7 @@ Under the hood, `cc` uses [TinyCC](https://bellard.org/tcc/) to compile the C co
44
51
 
45
52
  ### Primitive types
46
53
 
47
- The same `FFIType` values in [`dlopen`](/docs/api/ffi) are supported in `cc`.
54
+ The same `FFIType` values in [`dlopen`](/runtime/ffi) are supported in `cc`.
48
55
 
49
56
  | `FFIType` | C Type | Aliases |
50
57
  | ---------- | -------------- | --------------------------- |
@@ -80,7 +87,7 @@ You can also pass a `napi_env` to receive the N-API environment used to call the
80
87
 
81
88
  For example, if you have a string in C, you can return it to JavaScript like this:
82
89
 
83
- ```ts#hello.js
90
+ ```ts hello.js
84
91
  import { cc } from "bun:ffi";
85
92
  import source from "./hello.c" with { type: "file" };
86
93
 
@@ -101,7 +108,7 @@ const result = hello();
101
108
 
102
109
  And in C:
103
110
 
104
- ```c#hello.c
111
+ ```c hello.c
105
112
  #include <node/node_api.h>
106
113
 
107
114
  napi_value hello(napi_env env) {
@@ -113,7 +120,7 @@ napi_value hello(napi_env env) {
113
120
 
114
121
  You can also use this to return other types like objects and arrays:
115
122
 
116
- ```c#hello.c
123
+ ```c hello.c
117
124
  #include <node/node_api.h>
118
125
 
119
126
  napi_value hello(napi_env env) {
@@ -189,7 +196,7 @@ type Defines = Record<string, string>;
189
196
  cc({
190
197
  source: "hello.c",
191
198
  define: {
192
- "NDEBUG": "1",
199
+ NDEBUG: "1",
193
200
  },
194
201
  });
195
202
  ```
@@ -1,4 +1,7 @@
1
- Spawn child processes with `Bun.spawn` or `Bun.spawnSync`.
1
+ ---
2
+ title: Spawn
3
+ description: Spawn child processes with `Bun.spawn` or `Bun.spawnSync`
4
+ ---
2
5
 
3
6
  ## Spawn a process (`Bun.spawn()`)
4
7
 
@@ -29,68 +32,25 @@ By default, the input stream of the subprocess is undefined; it can be configure
29
32
 
30
33
  ```ts
31
34
  const proc = Bun.spawn(["cat"], {
32
- stdin: await fetch(
33
- "https://raw.githubusercontent.com/oven-sh/bun/main/examples/hashing.js",
34
- ),
35
+ stdin: await fetch("https://raw.githubusercontent.com/oven-sh/bun/main/examples/hashing.js"),
35
36
  });
36
37
 
37
38
  const text = await proc.stdout.text();
38
39
  console.log(text); // "const input = "hello world".repeat(400); ..."
39
40
  ```
40
41
 
41
- {% table %}
42
-
43
- ---
44
-
45
- - `null`
46
- - **Default.** Provide no input to the subprocess
47
-
48
- ---
49
-
50
- - `"pipe"`
51
- - Return a `FileSink` for fast incremental writing
52
-
53
- ---
54
-
55
- - `"inherit"`
56
- - Inherit the `stdin` of the parent process
57
-
58
- ---
59
-
60
- - `Bun.file()`
61
- - Read from the specified file.
62
-
63
- ---
64
-
65
- - `TypedArray | DataView`
66
- - Use a binary buffer as input.
67
-
68
- ---
69
-
70
- - `Response`
71
- - Use the response `body` as input.
72
-
73
- ---
74
-
75
- - `Request`
76
- - Use the request `body` as input.
77
-
78
- ---
79
-
80
- - `ReadableStream`
81
- - Use a readable stream as input.
82
-
83
- ---
84
-
85
- - `Blob`
86
- - Use a blob as input.
87
-
88
- ---
89
-
90
- - `number`
91
- - Read from the file with a given file descriptor.
92
-
93
- {% /table %}
42
+ | Value | Description |
43
+ | ------------------------ | ------------------------------------------------ |
44
+ | `null` | **Default.** Provide no input to the subprocess |
45
+ | `"pipe"` | Return a `FileSink` for fast incremental writing |
46
+ | `"inherit"` | Inherit the `stdin` of the parent process |
47
+ | `Bun.file()` | Read from the specified file |
48
+ | `TypedArray \| DataView` | Use a binary buffer as input |
49
+ | `Response` | Use the response `body` as input |
50
+ | `Request` | Use the request `body` as input |
51
+ | `ReadableStream` | Use a readable stream as input |
52
+ | `Blob` | Use a blob as input |
53
+ | `number` | Read from the file with a given file descriptor |
94
54
 
95
55
  The `"pipe"` option lets incrementally write to the subprocess's input stream from the parent process.
96
56
 
@@ -129,7 +89,7 @@ const proc = Bun.spawn(["cat"], {
129
89
  stdout: "pipe",
130
90
  });
131
91
 
132
- const output = await new Response(proc.stdout).text();
92
+ const output = await proc.stdout.text();
133
93
  console.log(output); // "Hello from ReadableStream!"
134
94
  ```
135
95
 
@@ -140,45 +100,24 @@ You can read results from the subprocess via the `stdout` and `stderr` propertie
140
100
  ```ts
141
101
  const proc = Bun.spawn(["bun", "--version"]);
142
102
  const text = await proc.stdout.text();
143
- console.log(text); // => "1.3.2-canary.20251105T140650\n"
103
+ console.log(text); // => "1.3.1\n"
144
104
  ```
145
105
 
146
106
  Configure the output stream by passing one of the following values to `stdout/stderr`:
147
107
 
148
- {% table %}
149
-
150
- ---
151
-
152
- - `"pipe"`
153
- - **Default for `stdout`.** Pipe the output to a `ReadableStream` on the returned `Subprocess` object.
154
-
155
- ---
156
-
157
- - `"inherit"`
158
- - **Default for `stderr`.** Inherit from the parent process.
159
-
160
- ---
161
-
162
- - `"ignore"`
163
- - Discard the output.
164
-
165
- ---
166
-
167
- - `Bun.file()`
168
- - Write to the specified file.
169
-
170
- ---
171
-
172
- - `number`
173
- - Write to the file with the given file descriptor.
174
-
175
- {% /table %}
108
+ | Value | Description |
109
+ | ------------ | --------------------------------------------------------------------------------------------------- |
110
+ | `"pipe"` | **Default for `stdout`.** Pipe the output to a `ReadableStream` on the returned `Subprocess` object |
111
+ | `"inherit"` | **Default for `stderr`.** Inherit from the parent process |
112
+ | `"ignore"` | Discard the output |
113
+ | `Bun.file()` | Write to the specified file |
114
+ | `number` | Write to the file with the given file descriptor |
176
115
 
177
116
  ## Exit handling
178
117
 
179
118
  Use the `onExit` callback to listen for the process exiting or being killed.
180
119
 
181
- ```ts
120
+ ```ts index.ts icon="/icons/typescript.svg"
182
121
  const proc = Bun.spawn(["bun", "--version"], {
183
122
  onExit(proc, exitCode, signalCode, error) {
184
123
  // exit handler
@@ -188,7 +127,7 @@ const proc = Bun.spawn(["bun", "--version"], {
188
127
 
189
128
  For convenience, the `exited` property is a `Promise` that resolves when the process exits.
190
129
 
191
- ```ts
130
+ ```ts index.ts icon="/icons/typescript.svg"
192
131
  const proc = Bun.spawn(["bun", "--version"]);
193
132
 
194
133
  await proc.exited; // resolves when process exit
@@ -199,7 +138,7 @@ proc.signalCode; // null | "SIGABRT" | "SIGALRM" | ...
199
138
 
200
139
  To kill a process:
201
140
 
202
- ```ts
141
+ ```ts index.ts icon="/icons/typescript.svg"
203
142
  const proc = Bun.spawn(["bun", "--version"]);
204
143
  proc.kill();
205
144
  proc.killed; // true
@@ -210,7 +149,7 @@ proc.kill("SIGTERM"); // specify a signal name
210
149
 
211
150
  The parent `bun` process will not terminate until all child processes have exited. Use `proc.unref()` to detach the child process from the parent.
212
151
 
213
- ```ts
152
+ ```ts index.ts icon="/icons/typescript.svg"
214
153
  const proc = Bun.spawn(["bun", "--version"]);
215
154
  proc.unref();
216
155
  ```
@@ -219,7 +158,7 @@ proc.unref();
219
158
 
220
159
  You can get information about the process's resource usage after it has exited:
221
160
 
222
- ```ts
161
+ ```ts index.ts icon="/icons/typescript.svg"
223
162
  const proc = Bun.spawn(["bun", "--version"]);
224
163
  await proc.exited;
225
164
 
@@ -233,7 +172,7 @@ console.log(`CPU time (system): ${usage.cpuTime.system} µs`);
233
172
 
234
173
  You can abort a subprocess using an `AbortSignal`:
235
174
 
236
- ```ts
175
+ ```ts index.ts icon="/icons/typescript.svg"
237
176
  const controller = new AbortController();
238
177
  const { signal } = controller;
239
178
 
@@ -250,7 +189,7 @@ controller.abort();
250
189
 
251
190
  You can set a timeout for a subprocess to automatically terminate after a specific duration:
252
191
 
253
- ```ts
192
+ ```ts index.ts icon="/icons/typescript.svg"
254
193
  // Kill the process after 5 seconds
255
194
  const proc = Bun.spawn({
256
195
  cmd: ["sleep", "10"],
@@ -262,7 +201,7 @@ await proc.exited; // Will resolve after 5 seconds
262
201
 
263
202
  By default, timed-out processes are killed with the `SIGTERM` signal. You can specify a different signal with the `killSignal` option:
264
203
 
265
- ```ts
204
+ ```ts index.ts icon="/icons/typescript.svg"
266
205
  // Kill the process with SIGKILL after 5 seconds
267
206
  const proc = Bun.spawn({
268
207
  cmd: ["sleep", "10"],
@@ -277,10 +216,10 @@ The `killSignal` option also controls which signal is sent when an AbortSignal i
277
216
 
278
217
  For spawnSync, you can limit the maximum number of bytes of output before the process is killed:
279
218
 
280
- ```ts
281
- // KIll 'yes' after it emits over 100 bytes of output
219
+ ```ts index.ts icon="/icons/typescript.svg"
220
+ // Kill 'yes' after it emits over 100 bytes of output
282
221
  const result = Bun.spawnSync({
283
- cmd: ["yes"], // or ["bun", "exec", "yes"] on windows
222
+ cmd: ["yes"], // or ["bun", "exec", "yes"] on Windows
284
223
  maxBuffer: 100,
285
224
  });
286
225
  // process exits
@@ -290,7 +229,7 @@ const result = Bun.spawnSync({
290
229
 
291
230
  Bun supports direct inter-process communication channel between two `bun` processes. To receive messages from a spawned Bun subprocess, specify an `ipc` handler.
292
231
 
293
- ```ts#parent.ts
232
+ ```ts parent.ts icon="/icons/typescript.svg"
294
233
  const child = Bun.spawn(["bun", "child.ts"], {
295
234
  ipc(message) {
296
235
  /**
@@ -302,13 +241,13 @@ const child = Bun.spawn(["bun", "child.ts"], {
302
241
 
303
242
  The parent process can send messages to the subprocess using the `.send()` method on the returned `Subprocess` instance. A reference to the sending subprocess is also available as the second argument in the `ipc` handler.
304
243
 
305
- ```ts#parent.ts
244
+ ```ts parent.ts icon="/icons/typescript.svg"
306
245
  const childProc = Bun.spawn(["bun", "child.ts"], {
307
246
  ipc(message, childProc) {
308
247
  /**
309
248
  * The message received from the sub process
310
249
  **/
311
- childProc.send("Respond to child")
250
+ childProc.send("Respond to child");
312
251
  },
313
252
  });
314
253
 
@@ -317,17 +256,17 @@ childProc.send("I am your father"); // The parent can send messages to the child
317
256
 
318
257
  Meanwhile the child process can send messages to its parent using with `process.send()` and receive messages with `process.on("message")`. This is the same API used for `child_process.fork()` in Node.js.
319
258
 
320
- ```ts#child.ts
259
+ ```ts child.ts
321
260
  process.send("Hello from child as string");
322
261
  process.send({ message: "Hello from child as object" });
323
262
 
324
- process.on("message", (message) => {
263
+ process.on("message", message => {
325
264
  // print message from parent
326
265
  console.log(message);
327
266
  });
328
267
  ```
329
268
 
330
- ```ts#child.ts
269
+ ```ts child.ts
331
270
  // send a string
332
271
  process.send("Hello from child as string");
333
272
 
@@ -350,7 +289,7 @@ childProc.disconnect();
350
289
 
351
290
  To use IPC between a `bun` process and a Node.js process, set `serialization: "json"` in `Bun.spawn`. This is because Node.js and Bun use different JavaScript engines with different object serialization formats.
352
291
 
353
- ```js#bun-node-ipc.js
292
+ ```ts bun-node-ipc.js icon="file-code"
354
293
  if (typeof Bun !== "undefined") {
355
294
  const prefix = `[bun ${process.versions.bun} 🐇]`;
356
295
  const node = Bun.spawn({
@@ -374,6 +313,8 @@ if (typeof Bun !== "undefined") {
374
313
  }
375
314
  ```
376
315
 
316
+ ---
317
+
377
318
  ## Blocking API (`Bun.spawnSync()`)
378
319
 
379
320
  Bun provides a synchronous equivalent of `Bun.spawn` called `Bun.spawnSync`. This is a blocking API that supports the same inputs and parameters as `Bun.spawn`. It returns a `SyncSubprocess` object, which differs from `Subprocess` in a few ways.
@@ -391,23 +332,35 @@ console.log(proc.stdout.toString());
391
332
 
392
333
  As a rule of thumb, the asynchronous `Bun.spawn` API is better for HTTP servers and apps, and `Bun.spawnSync` is better for building command-line tools.
393
334
 
335
+ ---
336
+
394
337
  ## Benchmarks
395
338
 
396
- {%callout%}
397
- ⚡️ Under the hood, `Bun.spawn` and `Bun.spawnSync` use [`posix_spawn(3)`](https://man7.org/linux/man-pages/man3/posix_spawn.3.html).
398
- {%/callout%}
339
+ <Note>
340
+ ⚡️ Under the hood, `Bun.spawn` and `Bun.spawnSync` use
341
+ [`posix_spawn(3)`](https://man7.org/linux/man-pages/man3/posix_spawn.3.html).
342
+ </Note>
399
343
 
400
344
  Bun's `spawnSync` spawns processes 60% faster than the Node.js `child_process` module.
401
345
 
402
- ```bash
403
- $ bun spawn.mjs
346
+ ```bash terminal icon="terminal"
347
+ bun spawn.mjs
348
+ ```
349
+
350
+ ```txt
404
351
  cpu: Apple M1 Max
405
352
  runtime: bun 1.x (arm64-darwin)
406
353
 
407
354
  benchmark time (avg) (min … max) p75 p99 p995
408
355
  --------------------------------------------------------- -----------------------------
409
356
  spawnSync echo hi 888.14 µs/iter (821.83 µs … 1.2 ms) 905.92 µs 1 ms 1.03 ms
410
- $ node spawn.node.mjs
357
+ ```
358
+
359
+ ```sh terminal icon="terminal"
360
+ node spawn.node.mjs
361
+ ```
362
+
363
+ ```txt
411
364
  cpu: Apple M1 Max
412
365
  runtime: node v18.9.1 (arm64-darwin)
413
366
 
@@ -416,22 +369,19 @@ benchmark time (avg) (min … max) p75 p99
416
369
  spawnSync echo hi 1.47 ms/iter (1.14 ms … 2.64 ms) 1.57 ms 2.37 ms 2.52 ms
417
370
  ```
418
371
 
372
+ ---
373
+
419
374
  ## Reference
420
375
 
421
376
  A reference of the Spawn API and types are shown below. The real types have complex generics to strongly type the `Subprocess` streams with the options passed to `Bun.spawn` and `Bun.spawnSync`. For full details, find these types as defined [bun.d.ts](https://github.com/oven-sh/bun/blob/main/packages/bun-types/bun.d.ts).
422
377
 
423
- ```ts
378
+ ```ts See Typescript Definitions expandable
424
379
  interface Bun {
425
380
  spawn(command: string[], options?: SpawnOptions.OptionsObject): Subprocess;
426
- spawnSync(
427
- command: string[],
428
- options?: SpawnOptions.OptionsObject,
429
- ): SyncSubprocess;
381
+ spawnSync(command: string[], options?: SpawnOptions.OptionsObject): SyncSubprocess;
430
382
 
431
383
  spawn(options: { cmd: string[] } & SpawnOptions.OptionsObject): Subprocess;
432
- spawnSync(
433
- options: { cmd: string[] } & SpawnOptions.OptionsObject,
434
- ): SyncSubprocess;
384
+ spawnSync(options: { cmd: string[] } & SpawnOptions.OptionsObject): SyncSubprocess;
435
385
  }
436
386
 
437
387
  namespace SpawnOptions {
@@ -1,3 +1,8 @@
1
+ ---
2
+ title: Color
3
+ description: Format colors as CSS, ANSI, numbers, hex strings, and more
4
+ ---
5
+
1
6
  `Bun.color(input, outputFormat?)` leverages Bun's CSS parser to parse, normalize, and convert colors from user input to a variety of output formats, including:
2
7
 
3
8
  | Format | Example |
@@ -242,7 +247,7 @@ Bun.color([255, 0, 0], "HEX"); // "#FF0000"
242
247
 
243
248
  Like many of Bun's APIs, you can use macros to invoke `Bun.color` at bundle-time for use in client-side JavaScript builds:
244
249
 
245
- ```ts#client-side.ts
250
+ ```ts client-side.ts
246
251
  import { color } from "bun" with { type: "macro" };
247
252
 
248
253
  console.log(color("#f00", "css"));
@@ -1,6 +1,14 @@
1
- {% callout %}
2
- **Note** — Bun provides a browser- and Node.js-compatible [console](https://developer.mozilla.org/en-US/docs/Web/API/console) global. This page only documents Bun-native APIs.
3
- {% /callout %}
1
+ ---
2
+ title: Console
3
+ description: The console object in Bun
4
+ ---
5
+
6
+ <Note>
7
+ Bun provides a browser- and Node.js-compatible [console](https://developer.mozilla.org/en-US/docs/Web/API/console)
8
+ global. This page only documents Bun-native APIs.
9
+ </Note>
10
+
11
+ ---
4
12
 
5
13
  ## Object inspection depth
6
14
 
@@ -19,11 +27,13 @@ console.log(nested);
19
27
 
20
28
  The CLI flag takes precedence over the configuration file setting.
21
29
 
30
+ ---
31
+
22
32
  ## Reading from stdin
23
33
 
24
34
  In Bun, the `console` object can be used as an `AsyncIterable` to sequentially read lines from `process.stdin`.
25
35
 
26
- ```ts
36
+ ```ts adder.ts icon="/icons/typescript.svg"
27
37
  for await (const line of console) {
28
38
  console.log(line);
29
39
  }
@@ -31,7 +41,7 @@ for await (const line of console) {
31
41
 
32
42
  This is useful for implementing interactive programs, like the following addition calculator.
33
43
 
34
- ```ts#adder.ts
44
+ ```ts adder.ts icon="/icons/typescript.svg"
35
45
  console.log(`Let's add some numbers!`);
36
46
  console.write(`Count: 0\n> `);
37
47
 
@@ -44,8 +54,8 @@ for await (const line of console) {
44
54
 
45
55
  To run the file:
46
56
 
47
- ```bash
48
- $ bun adder.ts
57
+ ```bash terminal icon="terminal"
58
+ bun adder.ts
49
59
  Let's add some numbers!
50
60
  Count: 0
51
61
  > 5
@@ -1,10 +1,15 @@
1
+ ---
2
+ title: Cookies
3
+ description: Use Bun's native APIs for working with HTTP cookies
4
+ ---
5
+
1
6
  Bun provides native APIs for working with HTTP cookies through `Bun.Cookie` and `Bun.CookieMap`. These APIs offer fast, easy-to-use methods for parsing, generating, and manipulating cookies in HTTP requests and responses.
2
7
 
3
8
  ## CookieMap class
4
9
 
5
10
  `Bun.CookieMap` provides a Map-like interface for working with collections of cookies. It implements the `Iterable` interface, allowing you to use it with `for...of` loops and other iteration methods.
6
11
 
7
- ```ts
12
+ ```ts filename="cookies.ts" icon="/icons/typescript.svg"
8
13
  // Empty cookie map
9
14
  const cookies = new Bun.CookieMap();
10
15
 
@@ -28,7 +33,7 @@ const cookies3 = new Bun.CookieMap([
28
33
 
29
34
  In Bun's HTTP server, the `cookies` property on the request object (in `routes`) is an instance of `CookieMap`:
30
35
 
31
- ```ts
36
+ ```ts filename="server.ts" icon="/icons/typescript.svg"
32
37
  const server = Bun.serve({
33
38
  routes: {
34
39
  "/": req => {
@@ -63,7 +68,7 @@ console.log("Server listening at: " + server.url);
63
68
 
64
69
  Retrieves a cookie by name. Returns `null` if the cookie doesn't exist.
65
70
 
66
- ```ts
71
+ ```ts filename="get-cookie.ts" icon="/icons/typescript.svg"
67
72
  // Get by name
68
73
  const cookie = cookies.get("session");
69
74
 
@@ -76,7 +81,7 @@ if (cookie != null) {
76
81
 
77
82
  Checks if a cookie with the given name exists.
78
83
 
79
- ```ts
84
+ ```ts filename="has-cookie.ts" icon="/icons/typescript.svg"
80
85
  // Check if cookie exists
81
86
  if (cookies.has("session")) {
82
87
  // Cookie exists
@@ -91,7 +96,7 @@ if (cookies.has("session")) {
91
96
 
92
97
  Adds or updates a cookie in the map. Cookies default to `{ path: "/", sameSite: "lax" }`.
93
98
 
94
- ```ts
99
+ ```ts filename="set-cookie.ts" icon="/icons/typescript.svg"
95
100
  // Set by name and value
96
101
  cookies.set("session", "abc123");
97
102
 
@@ -114,7 +119,7 @@ cookies.set(cookie);
114
119
 
115
120
  Removes a cookie from the map. When applied to a Response, this adds a cookie with an empty string value and an expiry date in the past. A cookie will only delete successfully on the browser if the domain and path is the same as it was when the cookie was created.
116
121
 
117
- ```ts
122
+ ```ts filename="delete-cookie.ts" icon="/icons/typescript.svg"
118
123
  // Delete by name using default domain and path.
119
124
  cookies.delete("session");
120
125
 
@@ -130,7 +135,7 @@ cookies.delete({
130
135
 
131
136
  Converts the cookie map to a serializable format.
132
137
 
133
- ```ts
138
+ ```ts filename="cookie-to-json.ts" icon="/icons/typescript.svg"
134
139
  const json = cookies.toJSON();
135
140
  ```
136
141
 
@@ -140,7 +145,7 @@ Returns an array of values for Set-Cookie headers that can be used to apply all
140
145
 
141
146
  When using `Bun.serve()`, you don't need to call this method explicitly. Any changes made to the `req.cookies` map are automatically applied to the response headers. This method is primarily useful when working with other HTTP server implementations.
142
147
 
143
- ```js
148
+ ```ts filename="node-server.js" icon="file-code"
144
149
  import { createServer } from "node:http";
145
150
  import { CookieMap } from "bun";
146
151
 
@@ -167,7 +172,7 @@ server.listen(3000, () => {
167
172
 
168
173
  `CookieMap` provides several methods for iteration:
169
174
 
170
- ```ts
175
+ ```ts filename="iterate-cookies.ts" icon="/icons/typescript.svg"
171
176
  // Iterate over [name, cookie] entries
172
177
  for (const [name, value] of cookies) {
173
178
  console.log(`${name}: ${value}`);
@@ -200,7 +205,7 @@ cookies.forEach((value, name) => {
200
205
 
201
206
  Returns the number of cookies in the map.
202
207
 
203
- ```ts
208
+ ```ts filename="cookie-size.ts" icon="/icons/typescript.svg"
204
209
  console.log(cookies.size); // Number of cookies
205
210
  ```
206
211
 
@@ -208,7 +213,7 @@ console.log(cookies.size); // Number of cookies
208
213
 
209
214
  `Bun.Cookie` represents an HTTP cookie with its name, value, and attributes.
210
215
 
211
- ```ts
216
+ ```ts filename="cookie-class.ts" icon="/icons/typescript.svg"
212
217
  import { Cookie } from "bun";
213
218
 
214
219
  // Create a basic cookie
@@ -238,7 +243,7 @@ const objCookie = new Bun.Cookie({
238
243
 
239
244
  ### Constructors
240
245
 
241
- ```ts
246
+ ```ts filename="constructors.ts" icon="/icons/typescript.svg"
242
247
  // Basic constructor with name/value
243
248
  new Bun.Cookie(name: string, value: string);
244
249
 
@@ -254,7 +259,7 @@ new Bun.Cookie(options: CookieInit);
254
259
 
255
260
  ### Properties
256
261
 
257
- ```ts
262
+ ```ts filename="cookie-properties.ts" icon="/icons/typescript.svg"
258
263
  cookie.name; // string - Cookie name
259
264
  cookie.value; // string - Cookie value
260
265
  cookie.domain; // string | null - Domain scope (null if not specified)
@@ -273,7 +278,7 @@ cookie.httpOnly; // boolean - Accessible only via HTTP (not JavaScript)
273
278
 
274
279
  Checks if the cookie has expired.
275
280
 
276
- ```ts
281
+ ```ts filename="is-expired.ts" icon="/icons/typescript.svg"
277
282
  // Expired cookie (Date in the past)
278
283
  const expiredCookie = new Bun.Cookie("name", "value", {
279
284
  expires: new Date(Date.now() - 1000),
@@ -297,7 +302,7 @@ console.log(sessionCookie.isExpired()); // false
297
302
 
298
303
  Returns a string representation of the cookie suitable for a `Set-Cookie` header.
299
304
 
300
- ```ts
305
+ ```ts filename="serialize-cookie.ts" icon="/icons/typescript.svg"
301
306
  const cookie = new Bun.Cookie("session", "abc123", {
302
307
  domain: "example.com",
303
308
  path: "/admin",
@@ -317,7 +322,7 @@ console.log(cookie.toString());
317
322
 
318
323
  Converts the cookie to a plain object suitable for JSON serialization.
319
324
 
320
- ```ts
325
+ ```ts filename="cookie-json.ts" icon="/icons/typescript.svg"
321
326
  const cookie = new Bun.Cookie("session", "abc123", {
322
327
  secure: true,
323
328
  httpOnly: true,
@@ -344,7 +349,7 @@ const jsonString = JSON.stringify(cookie);
344
349
 
345
350
  Parses a cookie string into a `Cookie` instance.
346
351
 
347
- ```ts
352
+ ```ts filename="parse-cookie.ts" icon="/icons/typescript.svg"
348
353
  const cookie = Bun.Cookie.parse("name=value; Path=/; Secure; SameSite=Lax");
349
354
 
350
355
  console.log(cookie.name); // "name"
@@ -358,7 +363,7 @@ console.log(cookie.sameSite); // "lax"
358
363
 
359
364
  Factory method to create a cookie.
360
365
 
361
- ```ts
366
+ ```ts filename="cookie-from.ts" icon="/icons/typescript.svg"
362
367
  const cookie = Bun.Cookie.from("session", "abc123", {
363
368
  httpOnly: true,
364
369
  secure: true,
@@ -368,7 +373,7 @@ const cookie = Bun.Cookie.from("session", "abc123", {
368
373
 
369
374
  ## Types
370
375
 
371
- ```ts
376
+ ```ts filename="types.ts" icon="/icons/typescript.svg"
372
377
  interface CookieInit {
373
378
  name?: string;
374
379
  value?: string;