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,34 +1,36 @@
1
1
  ---
2
- name: Use Neon Postgres through Drizzle ORM
2
+ title: Use Neon Postgres through Drizzle ORM
3
+ sidebarTitle: Neon Drizzle with Bun
4
+ mode: center
3
5
  ---
4
6
 
5
7
  [Neon](https://neon.tech/) is a fully managed serverless Postgres, separating compute and storage to offer features like autoscaling, branching and bottomless storage. Neon can be used from Bun directly using the `@neondatabase/serverless` driver or through an ORM like `Drizzle`.
6
8
 
7
9
  Drizzle ORM supports both a SQL-like "query builder" API and an ORM-like [Queries API](https://orm.drizzle.team/docs/rqb). Get started by creating a project directory, initializing the directory using `bun init`, and installing Drizzle and the [Neon serverless driver](https://github.com/neondatabase/serverless/).
8
10
 
9
- ```sh
10
- $ mkdir bun-drizzle-neon
11
- $ cd bun-drizzle-neon
12
- $ bun init -y
13
- $ bun add drizzle-orm @neondatabase/serverless
14
- $ bun add -D drizzle-kit
11
+ ```sh terminal icon="terminal"
12
+ mkdir bun-drizzle-neon
13
+ cd bun-drizzle-neon
14
+ bun init -y
15
+ bun add drizzle-orm @neondatabase/serverless
16
+ bun add -D drizzle-kit
15
17
  ```
16
18
 
17
19
  ---
18
20
 
19
21
  Create a `.env.local` file and add your [Neon Postgres connection string](https://neon.tech/docs/connect/connect-from-any-app) to it.
20
22
 
21
- ```sh
22
- DATABASE_URL=postgresql://username:password@ep-adj-noun-guid.us-east-1.aws.neon.tech/neondb?sslmode=require
23
+ ```txt .env.local icon="settings"
24
+ DATABASE_URL=postgresql://usertitle:password@ep-adj-noun-guid.us-east-1.aws.neon.tech/neondb?sslmode=require
23
25
  ```
24
26
 
25
27
  ---
26
28
 
27
29
  We will connect to the Neon database using the Neon serverless driver, wrapped in a Drizzle database instance.
28
30
 
29
- ```ts#db.ts
30
- import { neon } from '@neondatabase/serverless';
31
- import { drizzle } from 'drizzle-orm/neon-http';
31
+ ```ts db.ts icon="/icons/typescript.svg"
32
+ import { neon } from "@neondatabase/serverless";
33
+ import { drizzle } from "drizzle-orm/neon-http";
32
34
 
33
35
  // Bun automatically loads the DATABASE_URL from .env.local
34
36
  // Refer to: https://bun.com/docs/runtime/env for more information
@@ -41,7 +43,7 @@ export const db = drizzle(sql);
41
43
 
42
44
  To see the database in action, add these lines to `index.ts`.
43
45
 
44
- ```ts#index.ts
46
+ ```ts index.ts icon="/icons/typescript.svg"
45
47
  import { db } from "./db";
46
48
  import { sql } from "drizzle-orm";
47
49
 
@@ -54,8 +56,11 @@ console.log(result.rows);
54
56
 
55
57
  Then run `index.ts` with Bun.
56
58
 
57
- ```sh
58
- $ bun run index.ts
59
+ ```sh terminal icon="terminal"
60
+ bun run index.ts
61
+ ```
62
+
63
+ ```txt
59
64
  [
60
65
  {
61
66
  text: "hello world",
@@ -67,12 +72,12 @@ $ bun run index.ts
67
72
 
68
73
  We can define a schema for our database using Drizzle ORM primitives. Create a `schema.ts` file and add this code.
69
74
 
70
- ```ts#schema.ts
75
+ ```ts schema.ts icon="/icons/typescript.svg"
71
76
  import { pgTable, integer, serial, text, timestamp } from "drizzle-orm/pg-core";
72
77
 
73
78
  export const authors = pgTable("authors", {
74
79
  id: serial("id").primaryKey(),
75
- name: text("name").notNull(),
80
+ title: text("name").notNull(),
76
81
  bio: text("bio"),
77
82
  createdAt: timestamp("created_at").notNull().defaultNow(),
78
83
  });
@@ -83,14 +88,14 @@ export const authors = pgTable("authors", {
83
88
  We then use the `drizzle-kit` CLI to generate an initial SQL migration.
84
89
 
85
90
  ```sh
86
- $ bunx drizzle-kit generate --dialect postgresql --schema ./schema.ts --out ./drizzle
91
+ bunx drizzle-kit generate --dialect postgresql --schema ./schema.ts --out ./drizzle
87
92
  ```
88
93
 
89
94
  ---
90
95
 
91
96
  This creates a new `drizzle` directory containing a `.sql` migration file and `meta` directory.
92
97
 
93
- ```txt
98
+ ```txt File Tree icon="folder-tree"
94
99
  drizzle
95
100
  ├── 0000_aspiring_post.sql
96
101
  └── meta
@@ -102,8 +107,8 @@ drizzle
102
107
 
103
108
  We can execute these migrations with a simple `migrate.ts` script. This script creates a new connection to the Neon database and executes all unexecuted migrations in the `drizzle` directory.
104
109
 
105
- ```ts#migrate.ts
106
- import { db } from './db';
110
+ ```ts migrate.ts
111
+ import { db } from "./db";
107
112
  import { migrate } from "drizzle-orm/neon-http/migrator";
108
113
 
109
114
  const main = async () => {
@@ -123,8 +128,11 @@ main();
123
128
 
124
129
  We can run this script with `bun` to execute the migration.
125
130
 
126
- ```sh
127
- $ bun run migrate.ts
131
+ ```sh terminal icon="terminal"
132
+ bun run migrate.ts
133
+ ```
134
+
135
+ ```txt
128
136
  Migration completed
129
137
  ```
130
138
 
@@ -132,22 +140,22 @@ Migration completed
132
140
 
133
141
  We can now add some data to our database. Create a `seed.ts` file with the following contents.
134
142
 
135
- ```ts#seed.ts
143
+ ```ts seed.ts icon="/icons/typescript.svg"
136
144
  import { db } from "./db";
137
145
  import * as schema from "./schema";
138
146
 
139
147
  async function seed() {
140
148
  await db.insert(schema.authors).values([
141
149
  {
142
- name: "J.R.R. Tolkien",
150
+ title: "J.R.R. Tolkien",
143
151
  bio: "The creator of Middle-earth and author of The Lord of the Rings.",
144
152
  },
145
153
  {
146
- name: "George R.R. Martin",
154
+ title: "George R.R. Martin",
147
155
  bio: "The author of the epic fantasy series A Song of Ice and Fire.",
148
156
  },
149
157
  {
150
- name: "J.K. Rowling",
158
+ title: "J.K. Rowling",
151
159
  bio: "The creator of the Harry Potter series.",
152
160
  },
153
161
  ]);
@@ -170,8 +178,11 @@ main();
170
178
 
171
179
  Then run this file.
172
180
 
173
- ```sh
174
- $ bun run seed.ts
181
+ ```sh terminal icon="terminal"
182
+ bun run seed.ts
183
+ ```
184
+
185
+ ```txt
175
186
  Seeding completed
176
187
  ```
177
188
 
@@ -179,7 +190,7 @@ Seeding completed
179
190
 
180
191
  We now have a database with a schema and sample data. We can use Drizzle to query it. Replace the contents of `index.ts` with the following.
181
192
 
182
- ```ts#index.ts
193
+ ```ts index.ts icon="/icons/typescript.svg"
183
194
  import * as schema from "./schema";
184
195
  import { db } from "./db";
185
196
 
@@ -191,22 +202,25 @@ console.log(result);
191
202
 
192
203
  Then run the file. You should see the three authors we inserted.
193
204
 
194
- ```sh
195
- $ bun run index.ts
205
+ ```sh terminal icon="terminal"
206
+ bun run index.ts
207
+ ```
208
+
209
+ ```txt
196
210
  [
197
211
  {
198
212
  id: 1,
199
- name: "J.R.R. Tolkien",
213
+ title: "J.R.R. Tolkien",
200
214
  bio: "The creator of Middle-earth and author of The Lord of the Rings.",
201
215
  createdAt: 2024-05-11T10:28:46.029Z,
202
216
  }, {
203
217
  id: 2,
204
- name: "George R.R. Martin",
218
+ title: "George R.R. Martin",
205
219
  bio: "The author of the epic fantasy series A Song of Ice and Fire.",
206
220
  createdAt: 2024-05-11T10:28:46.029Z,
207
221
  }, {
208
222
  id: 3,
209
- name: "J.K. Rowling",
223
+ title: "J.K. Rowling",
210
224
  bio: "The creator of the Harry Potter series.",
211
225
  createdAt: 2024-05-11T10:28:46.029Z,
212
226
  }
@@ -1,5 +1,7 @@
1
1
  ---
2
- name: Use Neon's Serverless Postgres with Bun
2
+ title: Use Neon's Serverless Postgres with Bun
3
+ sidebarTitle: Neon Serverless Postgres with Bun
4
+ mode: center
3
5
  ---
4
6
 
5
7
  [Neon](https://neon.tech/) is a fully managed serverless Postgres. Neon separates compute and storage to offer modern developer features such as autoscaling, branching, bottomless storage, and more.
@@ -8,26 +10,26 @@ name: Use Neon's Serverless Postgres with Bun
8
10
 
9
11
  Get started by creating a project directory, initializing the directory using `bun init`, and adding the [Neon serverless driver](https://github.com/neondatabase/serverless/) as a project dependency.
10
12
 
11
- ```sh
12
- $ mkdir bun-neon-postgres
13
- $ cd bun-neon-postgres
14
- $ bun init -y
15
- $ bun add @neondatabase/serverless
13
+ ```sh terminal icon="terminal"
14
+ mkdir bun-neon-postgres
15
+ cd bun-neon-postgres
16
+ bun init -y
17
+ bun add @neondatabase/serverless
16
18
  ```
17
19
 
18
20
  ---
19
21
 
20
22
  Create a `.env.local` file and add your [Neon Postgres connection string](https://neon.tech/docs/connect/connect-from-any-app) to it.
21
23
 
22
- ```sh
23
- DATABASE_URL=postgresql://username:password@ep-adj-noun-guid.us-east-1.aws.neon.tech/neondb?sslmode=require
24
+ ```sh .env.local icon="settings"
25
+ DATABASE_URL=postgresql://usertitle:password@ep-adj-noun-guid.us-east-1.aws.neon.tech/neondb?sslmode=require
24
26
  ```
25
27
 
26
28
  ---
27
29
 
28
30
  Paste the following code into your project's `index.ts` file.
29
31
 
30
- ```ts
32
+ ```ts index.ts icon="/icons/typescript.svg"
31
33
  import { neon } from "@neondatabase/serverless";
32
34
 
33
35
  // Bun automatically loads the DATABASE_URL from .env.local
@@ -43,8 +45,11 @@ console.log(rows[0].version);
43
45
 
44
46
  Start the program using `bun ./index.ts`. The Postgres version should be printed to the console.
45
47
 
46
- ```sh
47
- $ bun ./index.ts
48
+ ```sh terminal icon="terminal"
49
+ bun ./index.ts
50
+ ```
51
+
52
+ ```txt
48
53
  PostgreSQL 16.2 on x86_64-pc-linux-gnu, compiled by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit
49
54
  ```
50
55
 
@@ -1,11 +1,16 @@
1
1
  ---
2
- name: Build an app with Next.js and Bun
2
+ title: Build an app with Next.js and Bun
3
+ sidebarTitle: Next.js with Bun
4
+ mode: center
3
5
  ---
4
6
 
5
7
  Initialize a Next.js app with `create-next-app`. This will scaffold a new Next.js project and automatically install dependencies.
6
8
 
7
- ```sh
8
- $ bun create next-app
9
+ ```sh terminal icon="terminal"
10
+ bun create next-app
11
+ ```
12
+
13
+ ```txt
9
14
  ✔ What is your project named? … my-app
10
15
  ✔ Would you like to use TypeScript with this project? … No / Yes
11
16
  ✔ Would you like to use ESLint with this project? … No / Yes
@@ -21,7 +26,10 @@ Creating a new Next.js app in /path/to/my-app.
21
26
  You can specify a starter template using the `--example` flag.
22
27
 
23
28
  ```sh
24
- $ bun create next-app --example with-supabase
29
+ bun create next-app --example with-supabase
30
+ ```
31
+
32
+ ```txt
25
33
  ✔ What is your project named? … my-app
26
34
  ...
27
35
  ```
@@ -30,18 +38,18 @@ $ bun create next-app --example with-supabase
30
38
 
31
39
  To start the dev server with Bun, run `bun --bun run dev` from the project root.
32
40
 
33
- ```sh
34
- $ cd my-app
35
- $ bun --bun run dev
41
+ ```sh terminal icon="terminal"
42
+ cd my-app
43
+ bun --bun run dev
36
44
  ```
37
45
 
38
46
  ---
39
47
 
40
48
  To run the dev server with Node.js instead, omit `--bun`.
41
49
 
42
- ```sh
43
- $ cd my-app
44
- $ bun run dev
50
+ ```sh terminal icon="terminal"
51
+ cd my-app
52
+ bun run dev
45
53
  ```
46
54
 
47
55
  ---
@@ -1,15 +1,20 @@
1
1
  ---
2
- name: Build an app with Nuxt and Bun
2
+ title: Build an app with Nuxt and Bun
3
+ sidebarTitle: Nuxt with Bun
4
+ mode: center
3
5
  ---
4
6
 
5
7
  Bun supports [Nuxt](https://nuxt.com) out of the box. Initialize a Nuxt app with official `nuxi` CLI.
6
8
 
7
- ```sh
8
- $ bunx nuxi init my-nuxt-app
9
+ ```sh terminal icon="terminal"
10
+ bunx nuxi init my-nuxt-app
11
+ ```
12
+
13
+ ```txt
9
14
  ✔ Which package manager would you like to use?
10
15
  bun
11
16
  ◐ Installing dependencies...
12
- bun install v1.3.2-canary.20251105T140650 (16b4bf34)
17
+ bun install v1.3.1 (16b4bf34)
13
18
  + @nuxt/devtools@0.8.2
14
19
  + nuxt@3.7.0
15
20
  785 packages installed [2.67s]
@@ -24,14 +29,17 @@ bun install v1.3.2-canary.20251105T140650 (16b4bf34)
24
29
 
25
30
  To start the dev server, run `bun --bun run dev` from the project root. This will execute the `nuxt dev` command (as defined in the `"dev"` script in `package.json`).
26
31
 
27
- {% callout %}
28
- The `nuxt` CLI uses Node.js by default; passing the `--bun` flag forces the dev server to use the Bun runtime instead.
29
- {% /callout %}
32
+ <Note>
33
+ The `nuxt` CLI uses Node.js by default; passing the `--bun` flag forces the dev server to use the Bun runtime instead.
34
+ </Note>
30
35
 
36
+ ```sh terminal icon="terminal"
37
+ cd my-nuxt-app
38
+ bun --bun run dev
31
39
  ```
32
- $ cd my-nuxt-app
33
- $ bun --bun run dev
34
- $ nuxt dev
40
+
41
+ ```txt
42
+ nuxt dev
35
43
  Nuxi 3.6.5
36
44
  Nuxt 3.6.5 with Nitro 2.5.2
37
45
  > Local: http://localhost:3000/
@@ -49,7 +57,33 @@ Once the dev server spins up, open [http://localhost:3000](http://localhost:3000
49
57
 
50
58
  To start developing your app, replace `<NuxtWelcome />` in `app.vue` with your own UI.
51
59
 
52
- {% image src="https://github.com/oven-sh/bun/assets/3084745/2c683ecc-3298-4bb0-b8c0-cf4cfaea1daa" caption="Demo Nuxt app running on localhost" /%}
60
+ <Frame>
61
+ ![Demo Nuxt app running on
62
+ localhost](https://github.com/oven-sh/bun/assets/3084745/2c683ecc-3298-4bb0-b8c0-cf4cfaea1daa)
63
+ </Frame>
64
+
65
+ ---
66
+
67
+ For production build, while the default preset is already compatible with Bun, you can also use [Bun preset](https://nitro.build/deploy/runtimes/bun) to generate better optimized builds.
68
+
69
+ ```ts nuxt.config.ts icon="/icons/typescript.svg"
70
+ export default defineNuxtConfig({
71
+ nitro: {
72
+ preset: "bun", // [!code ++]
73
+ },
74
+ });
75
+ ```
76
+
77
+ <Note>
78
+ Some packages provide Bun-specific exports that Nitro will not bundle correctly using the default preset. In this
79
+ case, you need to use Bun preset so that the packages will work correctly in production builds.
80
+ </Note>
81
+
82
+ After building with bun, run:
83
+
84
+ ```sh terminal icon="terminal"
85
+ bun run ./.output/server/index.mjs
86
+ ```
53
87
 
54
88
  ---
55
89
 
@@ -1,5 +1,7 @@
1
1
  ---
2
- name: Run Bun as a daemon with PM2
2
+ title: Run Bun as a daemon with PM2
3
+ sidebarTitle: PM2 with Bun
4
+ mode: center
3
5
  ---
4
6
 
5
7
  [PM2](https://pm2.keymetrics.io/) is a popular process manager that manages and runs your applications as daemons (background processes).
@@ -17,11 +19,9 @@ You can use PM2 with Bun in two ways: as a CLI option or in a configuration file
17
19
 
18
20
  ### With `--interpreter`
19
21
 
20
- ---
21
-
22
22
  To start your application with PM2 and Bun as the interpreter, open your terminal and run the following command:
23
23
 
24
- ```bash
24
+ ```bash terminal icon="terminal"
25
25
  pm2 start --interpreter ~/.bun/bin/bun index.ts
26
26
  ```
27
27
 
@@ -29,13 +29,11 @@ pm2 start --interpreter ~/.bun/bin/bun index.ts
29
29
 
30
30
  ### With a configuration file
31
31
 
32
- ---
33
-
34
32
  Alternatively, you can create a PM2 configuration file. Create a file named `pm2.config.js` in your project directory and add the following content.
35
33
 
36
- ```javascript
34
+ ```js pm2.config.js icon="file-code"
37
35
  module.exports = {
38
- name: "app", // Name of your application
36
+ title: "app", // Name of your application
39
37
  script: "index.ts", // Entry point of your application
40
38
  interpreter: "bun", // Bun interpreter
41
39
  env: {
@@ -48,7 +46,7 @@ module.exports = {
48
46
 
49
47
  After saving the file, you can start your application with PM2
50
48
 
51
- ```bash
49
+ ```bash terminal icon="terminal"
52
50
  pm2 start pm2.config.js
53
51
  ```
54
52
 
@@ -0,0 +1,169 @@
1
+ ---
2
+ title: Use Prisma Postgres with Bun
3
+ sidebarTitle: Prisma Postgres with Bun
4
+ mode: center
5
+ ---
6
+
7
+ <Note>
8
+ **Note** — At the moment Prisma needs Node.js to be installed to run certain generation code. Make sure Node.js is
9
+ installed in the environment where you're running `bunx prisma` commands.
10
+ </Note>
11
+
12
+ <Steps>
13
+ <Step title="Create a new project">
14
+ First, create a directory and initialize it with `bun init`.
15
+
16
+ ```bash terminal icon="terminal"
17
+ mkdir prisma-postgres-app
18
+ cd prisma-postgres-app
19
+ bun init
20
+ ```
21
+ </Step>
22
+
23
+ <Step title="Install Prisma dependencies">
24
+ Then install the Prisma CLI (`prisma`), Prisma Client (`@prisma/client`), and the accelerate extension as dependencies.
25
+
26
+ ```bash terminal icon="terminal"
27
+ bun add -d prisma
28
+ bun add @prisma/client @prisma/extension-accelerate
29
+ ```
30
+ </Step>
31
+
32
+ <Step title="Initialize Prisma with PostgreSQL">
33
+ We'll use the Prisma CLI with `bunx` to initialize our schema and migration directory. We'll be using PostgreSQL as our database.
34
+
35
+ ```bash terminal icon="terminal"
36
+ bunx --bun prisma init --db
37
+ ```
38
+
39
+ This creates a basic schema. We need to update it to use the new Rust-free client with Bun optimization. Open `prisma/schema.prisma` and modify the generator block, then add a simple `User` model.
40
+
41
+ ```prisma prisma/schema.prisma icon="/icons/ecosystem/prisma.svg"
42
+ generator client {
43
+ provider = "prisma-client"
44
+ output = "./generated" // [!code ++]
45
+ engineType = "client" // [!code ++]
46
+ runtime = "bun" // [!code ++]
47
+ }
48
+
49
+ datasource db {
50
+ provider = "postgresql"
51
+ url = env("DATABASE_URL")
52
+ }
53
+
54
+ model User { // [!code ++]
55
+ id Int @id @default(autoincrement()) // [!code ++]
56
+ email String @unique // [!code ++]
57
+ name String? // [!code ++]
58
+ } // [!code ++]
59
+ ```
60
+ </Step>
61
+
62
+ <Step title="Configure database connection">
63
+ Set up your Postgres database URL in the `.env` file.
64
+
65
+ ```env .env icon="settings"
66
+ DATABASE_URL="postgresql://username:password@localhost:5432/mydb?schema=public"
67
+ ```
68
+ </Step>
69
+
70
+ <Step title="Create and run database migration">
71
+ Then generate and run initial migration.
72
+
73
+ This will generate a `.sql` migration file in `prisma/migrations`, and execute the migration against your Postgres database.
74
+
75
+ ```bash terminal icon="terminal"
76
+ bunx --bun prisma migrate dev --name init
77
+ ```
78
+
79
+ ```txt
80
+ Environment variables loaded from .env
81
+ Prisma schema loaded from prisma/schema.prisma
82
+ Datasource "db": PostgreSQL database "mydb", schema "public" at "localhost:5432"
83
+
84
+ Applying migration `20250114141233_init`
85
+
86
+ The following migration(s) have been created and applied from new schema changes:
87
+
88
+ prisma/migrations/
89
+ └─ 20250114141233_init/
90
+ └─ migration.sql
91
+
92
+ Your database is now in sync with your schema.
93
+
94
+ ✔ Generated Prisma Client (6.17.1) to ./generated in 18ms
95
+ ```
96
+ </Step>
97
+
98
+ <Step title="Generate Prisma Client">
99
+ As indicated in the output, Prisma re-generates our _Prisma client_ whenever we execute a new migration. The client provides a fully typed API for reading and writing from our database. You can manually re-generate the client with the Prisma CLI.
100
+
101
+ ```sh terminal icon="terminal"
102
+ bunx --bun prisma generate
103
+ ```
104
+ </Step>
105
+
106
+ <Step title="Initialize Prisma Client with Accelerate">
107
+ Now we need to create a Prisma client instance. Create a new file `prisma/db.ts` to initialize the PrismaClient with the Postgres adapter.
108
+
109
+ ```ts prisma/db.ts icon="/icons/typescript.svg"
110
+ import { PrismaClient } from "./generated/client";
111
+ import { withAccelerate } from '@prisma/extension-accelerate'
112
+
113
+ export const prisma = new PrismaClient().$extends(withAccelerate())
114
+ ```
115
+ </Step>
116
+
117
+ <Step title="Create a test script">
118
+ Let's write a simple script to create a new user, then count the number of users in the database.
119
+
120
+ ```ts index.ts icon="/icons/typescript.svg"
121
+ import { prisma } from "./prisma/db";
122
+
123
+ // create a new user
124
+ await prisma.user.create({
125
+ data: {
126
+ name: "John Dough",
127
+ email: `john-${Math.random()}@example.com`,
128
+ },
129
+ });
130
+
131
+ // count the number of users
132
+ const count = await prisma.user.count();
133
+ console.log(`There are ${count} users in the database.`);
134
+ ```
135
+ </Step>
136
+
137
+ <Step title="Run and test the application">
138
+ Let's run this script with `bun run`. Each time we run it, a new user is created.
139
+
140
+ ```bash terminal icon="terminal"
141
+ bun run index.ts
142
+ ```
143
+
144
+ ```txt
145
+ There are 1 users in the database.
146
+ ```
147
+
148
+ ```bash terminal icon="terminal"
149
+ bun run index.ts
150
+ ```
151
+
152
+ ```txt
153
+ There are 2 users in the database.
154
+ ```
155
+
156
+ ```bash terminal icon="terminal"
157
+ bun run index.ts
158
+ ```
159
+
160
+ ```txt
161
+ There are 3 users in the database.
162
+ ```
163
+ </Step>
164
+
165
+ </Steps>
166
+
167
+ ---
168
+
169
+ That's it! Now that you've set up Prisma Postgres using Bun, we recommend referring to the [official Prisma Postgres docs](https://www.prisma.io/docs/postgres) as you continue to develop your application.