bun-types 1.3.2-canary.20251105T140650 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (370) hide show
  1. package/bun.d.ts +102 -6
  2. package/docs/README.md +28 -0
  3. package/docs/bundler/bytecode.mdx +465 -0
  4. package/docs/bundler/{css.md → css.mdx} +97 -101
  5. package/docs/bundler/esbuild.mdx +253 -0
  6. package/docs/bundler/{executables.md → executables.mdx} +130 -221
  7. package/docs/bundler/fullstack.mdx +1064 -0
  8. package/docs/bundler/{hmr.md → hot-reloading.mdx} +74 -79
  9. package/docs/bundler/{html.md → html-static.mdx} +148 -111
  10. package/docs/bundler/index.mdx +1499 -0
  11. package/docs/bundler/loaders.mdx +356 -0
  12. package/docs/bundler/{macros.md → macros.mdx} +83 -84
  13. package/docs/bundler/minifier.mdx +1306 -0
  14. package/docs/bundler/plugins.mdx +411 -0
  15. package/docs/feedback.mdx +85 -0
  16. package/docs/guides/binary/{arraybuffer-to-array.md → arraybuffer-to-array.mdx} +3 -1
  17. package/docs/guides/binary/{arraybuffer-to-blob.md → arraybuffer-to-blob.mdx} +3 -1
  18. package/docs/guides/binary/{arraybuffer-to-buffer.md → arraybuffer-to-buffer.mdx} +3 -1
  19. package/docs/guides/binary/{arraybuffer-to-string.md → arraybuffer-to-string.mdx} +3 -1
  20. package/docs/guides/binary/{arraybuffer-to-typedarray.md → arraybuffer-to-typedarray.mdx} +3 -1
  21. package/docs/guides/binary/{blob-to-arraybuffer.md → blob-to-arraybuffer.mdx} +3 -1
  22. package/docs/guides/binary/{blob-to-dataview.md → blob-to-dataview.mdx} +3 -1
  23. package/docs/guides/binary/{blob-to-stream.md → blob-to-stream.mdx} +3 -1
  24. package/docs/guides/binary/{blob-to-string.md → blob-to-string.mdx} +3 -1
  25. package/docs/guides/binary/{blob-to-typedarray.md → blob-to-typedarray.mdx} +3 -1
  26. package/docs/guides/binary/{buffer-to-arraybuffer.md → buffer-to-arraybuffer.mdx} +3 -1
  27. package/docs/guides/binary/{buffer-to-blob.md → buffer-to-blob.mdx} +3 -1
  28. package/docs/guides/binary/{buffer-to-readablestream.md → buffer-to-readablestream.mdx} +3 -1
  29. package/docs/guides/binary/{buffer-to-string.md → buffer-to-string.mdx} +3 -1
  30. package/docs/guides/binary/{buffer-to-typedarray.md → buffer-to-typedarray.mdx} +3 -1
  31. package/docs/guides/binary/{dataview-to-string.md → dataview-to-string.mdx} +3 -1
  32. package/docs/guides/binary/{typedarray-to-arraybuffer.md → typedarray-to-arraybuffer.mdx} +3 -1
  33. package/docs/guides/binary/{typedarray-to-blob.md → typedarray-to-blob.mdx} +3 -1
  34. package/docs/guides/binary/{typedarray-to-buffer.md → typedarray-to-buffer.mdx} +3 -1
  35. package/docs/guides/binary/{typedarray-to-dataview.md → typedarray-to-dataview.mdx} +3 -1
  36. package/docs/guides/binary/{typedarray-to-readablestream.md → typedarray-to-readablestream.mdx} +3 -1
  37. package/docs/guides/binary/{typedarray-to-string.md → typedarray-to-string.mdx} +3 -1
  38. package/docs/guides/deployment/aws-lambda.mdx +204 -0
  39. package/docs/guides/deployment/digital-ocean.mdx +161 -0
  40. package/docs/guides/deployment/google-cloud-run.mdx +197 -0
  41. package/docs/guides/deployment/{railway.md → railway.mdx} +42 -54
  42. package/docs/guides/deployment/render.mdx +82 -0
  43. package/docs/guides/deployment/vercel.mdx +99 -0
  44. package/docs/guides/ecosystem/{astro.md → astro.mdx} +16 -6
  45. package/docs/guides/ecosystem/{discordjs.md → discordjs.mdx} +21 -18
  46. package/docs/guides/ecosystem/{docker.md → docker.mdx} +25 -14
  47. package/docs/guides/ecosystem/{drizzle.md → drizzle.mdx} +32 -22
  48. package/docs/guides/ecosystem/{edgedb.md → edgedb.mdx} +63 -34
  49. package/docs/guides/ecosystem/{elysia.md → elysia.mdx} +11 -11
  50. package/docs/guides/ecosystem/{express.md → express.mdx} +12 -9
  51. package/docs/guides/ecosystem/{hono.md → hono.mdx} +16 -8
  52. package/docs/guides/ecosystem/{mongoose.md → mongoose.mdx} +26 -21
  53. package/docs/guides/ecosystem/{neon-drizzle.md → neon-drizzle.mdx} +49 -35
  54. package/docs/guides/ecosystem/{neon-serverless-postgres.md → neon-serverless-postgres.mdx} +16 -11
  55. package/docs/guides/ecosystem/{nextjs.md → nextjs.mdx} +18 -10
  56. package/docs/guides/ecosystem/{nuxt.md → nuxt.mdx} +45 -11
  57. package/docs/guides/ecosystem/{pm2.md → pm2.mdx} +7 -9
  58. package/docs/guides/ecosystem/prisma-postgres.mdx +169 -0
  59. package/docs/guides/ecosystem/prisma.mdx +164 -0
  60. package/docs/guides/ecosystem/{qwik.md → qwik.mdx} +18 -11
  61. package/docs/guides/ecosystem/{react.md → react.mdx} +9 -7
  62. package/docs/guides/ecosystem/{remix.md → remix.mdx} +45 -26
  63. package/docs/guides/ecosystem/{sentry.md → sentry.mdx} +7 -5
  64. package/docs/guides/ecosystem/{solidstart.md → solidstart.mdx} +21 -13
  65. package/docs/guides/ecosystem/{ssr-react.md → ssr-react.mdx} +9 -11
  66. package/docs/guides/ecosystem/{stric.md → stric.mdx} +16 -17
  67. package/docs/guides/ecosystem/{sveltekit.md → sveltekit.mdx} +42 -29
  68. package/docs/guides/ecosystem/{systemd.md → systemd.mdx} +27 -26
  69. package/docs/guides/ecosystem/upstash.mdx +87 -0
  70. package/docs/guides/ecosystem/{vite.md → vite.mdx} +20 -14
  71. package/docs/guides/html-rewriter/{extract-links.md → extract-links.mdx} +11 -7
  72. package/docs/guides/html-rewriter/{extract-social-meta.md → extract-social-meta.mdx} +6 -2
  73. package/docs/guides/http/{cluster.md → cluster.mdx} +10 -7
  74. package/docs/guides/http/{fetch-unix.md → fetch-unix.mdx} +5 -3
  75. package/docs/guides/http/{fetch.md → fetch.mdx} +5 -3
  76. package/docs/guides/http/{file-uploads.md → file-uploads.mdx} +18 -15
  77. package/docs/guides/http/{hot.md → hot.mdx} +9 -7
  78. package/docs/guides/http/{proxy.md → proxy.mdx} +7 -5
  79. package/docs/guides/http/{server.md → server.mdx} +4 -2
  80. package/docs/guides/http/{simple.md → simple.mdx} +4 -2
  81. package/docs/guides/http/{stream-file.md → stream-file.mdx} +6 -4
  82. package/docs/guides/http/{stream-iterator.md → stream-iterator.mdx} +5 -3
  83. package/docs/guides/http/{stream-node-streams-in-bun.md → stream-node-streams-in-bun.mdx} +4 -2
  84. package/docs/guides/http/{tls.md → tls.mdx} +5 -3
  85. package/docs/guides/index.mdx +10 -0
  86. package/docs/guides/install/{add-dev.md → add-dev.mdx} +8 -6
  87. package/docs/guides/install/add-git.mdx +38 -0
  88. package/docs/guides/install/{add-optional.md → add-optional.mdx} +7 -5
  89. package/docs/guides/install/{add-peer.md → add-peer.mdx} +13 -11
  90. package/docs/guides/install/{add-tarball.md → add-tarball.mdx} +7 -5
  91. package/docs/guides/install/{add.md → add.mdx} +12 -10
  92. package/docs/guides/install/{azure-artifacts.md → azure-artifacts.mdx} +15 -12
  93. package/docs/guides/{runtime/cicd.md → install/cicd.mdx} +13 -13
  94. package/docs/guides/install/{custom-registry.md → custom-registry.mdx} +6 -4
  95. package/docs/guides/install/{from-npm-install-to-bun-install.md → from-npm-install-to-bun-install.mdx} +50 -34
  96. package/docs/guides/install/{git-diff-bun-lockfile.md → git-diff-bun-lockfile.mdx} +14 -11
  97. package/docs/guides/install/{jfrog-artifactory.md → jfrog-artifactory.mdx} +4 -4
  98. package/docs/guides/install/{npm-alias.md → npm-alias.mdx} +6 -4
  99. package/docs/guides/install/{registry-scope.md → registry-scope.mdx} +6 -4
  100. package/docs/guides/install/{trusted.md → trusted.mdx} +22 -18
  101. package/docs/guides/install/{workspaces.md → workspaces.mdx} +13 -13
  102. package/docs/guides/install/{yarnlock.md → yarnlock.mdx} +15 -9
  103. package/docs/guides/process/{argv.md → argv.mdx} +17 -9
  104. package/docs/guides/process/{ctrl-c.md → ctrl-c.mdx} +4 -2
  105. package/docs/guides/process/{ipc.md → ipc.mdx} +13 -10
  106. package/docs/guides/process/{nanoseconds.md → nanoseconds.mdx} +3 -1
  107. package/docs/guides/process/{os-signals.md → os-signals.mdx} +3 -1
  108. package/docs/guides/process/{spawn-stderr.md → spawn-stderr.mdx} +4 -1
  109. package/docs/guides/process/{spawn-stdout.md → spawn-stdout.mdx} +3 -1
  110. package/docs/guides/process/{spawn.md → spawn.mdx} +3 -1
  111. package/docs/guides/process/{stdin.md → stdin.mdx} +15 -7
  112. package/docs/guides/read-file/{arraybuffer.md → arraybuffer.mdx} +5 -3
  113. package/docs/guides/read-file/{buffer.md → buffer.mdx} +4 -2
  114. package/docs/guides/read-file/{exists.md → exists.mdx} +4 -2
  115. package/docs/guides/read-file/{json.md → json.mdx} +4 -2
  116. package/docs/guides/read-file/{mime.md → mime.mdx} +3 -1
  117. package/docs/guides/read-file/{stream.md → stream.mdx} +3 -1
  118. package/docs/guides/read-file/{string.md → string.mdx} +3 -1
  119. package/docs/guides/read-file/{uint8array.md → uint8array.mdx} +3 -1
  120. package/docs/guides/read-file/{watch.md → watch.mdx} +6 -8
  121. package/docs/guides/runtime/{build-time-constants.md → build-time-constants.mdx} +24 -22
  122. package/docs/guides/{install/cicd.md → runtime/cicd.mdx} +11 -7
  123. package/docs/guides/runtime/{codesign-macos-executable.md → codesign-macos-executable.mdx} +14 -9
  124. package/docs/guides/runtime/{define-constant.md → define-constant.mdx} +20 -16
  125. package/docs/guides/runtime/{delete-directory.md → delete-directory.mdx} +5 -3
  126. package/docs/guides/runtime/{delete-file.md → delete-file.mdx} +4 -2
  127. package/docs/guides/runtime/{heap-snapshot.md → heap-snapshot.mdx} +5 -3
  128. package/docs/guides/runtime/{import-html.md → import-html.mdx} +4 -2
  129. package/docs/guides/runtime/{import-json.md → import-json.mdx} +6 -4
  130. package/docs/guides/runtime/{import-toml.md → import-toml.mdx} +5 -3
  131. package/docs/guides/runtime/{import-yaml.md → import-yaml.mdx} +9 -7
  132. package/docs/guides/runtime/{read-env.md → read-env.mdx} +10 -5
  133. package/docs/guides/runtime/{set-env.md → set-env.mdx} +14 -10
  134. package/docs/guides/runtime/{shell.md → shell.mdx} +6 -4
  135. package/docs/guides/runtime/{timezone.md → timezone.mdx} +10 -7
  136. package/docs/guides/runtime/{tsconfig-paths.md → tsconfig-paths.mdx} +5 -3
  137. package/docs/guides/runtime/{typescript.md → typescript.mdx} +8 -6
  138. package/docs/guides/runtime/{vscode-debugger.md → vscode-debugger.mdx} +12 -11
  139. package/docs/guides/runtime/{web-debugger.md → web-debugger.mdx} +39 -18
  140. package/docs/guides/streams/{node-readable-to-arraybuffer.md → node-readable-to-arraybuffer.mdx} +3 -1
  141. package/docs/guides/streams/{node-readable-to-blob.md → node-readable-to-blob.mdx} +3 -1
  142. package/docs/guides/streams/{node-readable-to-json.md → node-readable-to-json.mdx} +3 -1
  143. package/docs/guides/streams/{node-readable-to-string.md → node-readable-to-string.mdx} +3 -1
  144. package/docs/guides/streams/{node-readable-to-uint8array.md → node-readable-to-uint8array.mdx} +3 -1
  145. package/docs/guides/streams/{to-array.md → to-array.mdx} +3 -1
  146. package/docs/guides/streams/{to-arraybuffer.md → to-arraybuffer.mdx} +3 -1
  147. package/docs/guides/streams/{to-blob.md → to-blob.mdx} +3 -1
  148. package/docs/guides/streams/{to-buffer.md → to-buffer.mdx} +3 -1
  149. package/docs/guides/streams/{to-json.md → to-json.mdx} +4 -2
  150. package/docs/guides/streams/{to-string.md → to-string.mdx} +3 -1
  151. package/docs/guides/streams/{to-typedarray.md → to-typedarray.mdx} +3 -1
  152. package/docs/guides/test/{bail.md → bail.mdx} +7 -5
  153. package/docs/guides/test/{coverage-threshold.md → coverage-threshold.mdx} +14 -7
  154. package/docs/guides/test/{coverage.md → coverage.mdx} +9 -4
  155. package/docs/guides/test/{happy-dom.md → happy-dom.mdx} +13 -8
  156. package/docs/guides/test/{migrate-from-jest.md → migrate-from-jest.mdx} +19 -37
  157. package/docs/guides/test/{mock-clock.md → mock-clock.mdx} +3 -1
  158. package/docs/guides/test/{mock-functions.md → mock-functions.mdx} +7 -5
  159. package/docs/guides/test/{rerun-each.md → rerun-each.mdx} +5 -3
  160. package/docs/guides/test/{run-tests.md → run-tests.mdx} +16 -11
  161. package/docs/guides/test/{skip-tests.md → skip-tests.mdx} +8 -4
  162. package/docs/guides/test/{snapshot.md → snapshot.mdx} +20 -13
  163. package/docs/guides/test/spy-on.mdx +49 -0
  164. package/docs/guides/test/{svelte-test.md → svelte-test.mdx} +16 -23
  165. package/docs/guides/test/{testing-library.md → testing-library.mdx} +18 -17
  166. package/docs/guides/test/{timeout.md → timeout.mdx} +5 -3
  167. package/docs/guides/test/{todo-tests.md → todo-tests.mdx} +13 -6
  168. package/docs/guides/test/{update-snapshots.md → update-snapshots.mdx} +9 -6
  169. package/docs/guides/test/{watch-mode.md → watch-mode.mdx} +9 -4
  170. package/docs/guides/util/{base64.md → base64.mdx} +3 -1
  171. package/docs/guides/util/{deep-equals.md → deep-equals.mdx} +5 -3
  172. package/docs/guides/util/{deflate.md → deflate.mdx} +3 -1
  173. package/docs/guides/util/{detect-bun.md → detect-bun.mdx} +3 -1
  174. package/docs/guides/util/{entrypoint.md → entrypoint.mdx} +4 -2
  175. package/docs/guides/util/{escape-html.md → escape-html.mdx} +3 -1
  176. package/docs/guides/util/{file-url-to-path.md → file-url-to-path.mdx} +3 -1
  177. package/docs/guides/util/{gzip.md → gzip.mdx} +3 -1
  178. package/docs/guides/util/{hash-a-password.md → hash-a-password.mdx} +3 -1
  179. package/docs/guides/util/{import-meta-dir.md → import-meta-dir.mdx} +4 -2
  180. package/docs/guides/util/{import-meta-file.md → import-meta-file.mdx} +4 -2
  181. package/docs/guides/util/{import-meta-path.md → import-meta-path.mdx} +4 -2
  182. package/docs/guides/util/{javascript-uuid.md → javascript-uuid.mdx} +3 -1
  183. package/docs/guides/util/{main.md → main.mdx} +19 -8
  184. package/docs/guides/util/{path-to-file-url.md → path-to-file-url.mdx} +3 -1
  185. package/docs/guides/util/{sleep.md → sleep.mdx} +3 -1
  186. package/docs/guides/util/{version.md → version.mdx} +6 -4
  187. package/docs/guides/util/{which-path-to-executable-bin.md → which-path-to-executable-bin.mdx} +4 -2
  188. package/docs/guides/websocket/{compression.md → compression.mdx} +5 -3
  189. package/docs/guides/websocket/{context.md → context.mdx} +9 -12
  190. package/docs/guides/websocket/{pubsub.md → pubsub.mdx} +5 -6
  191. package/docs/guides/websocket/{simple.md → simple.mdx} +5 -3
  192. package/docs/guides/write-file/{append.md → append.mdx} +3 -1
  193. package/docs/guides/write-file/{basic.md → basic.mdx} +3 -1
  194. package/docs/guides/write-file/{blob.md → blob.mdx} +3 -1
  195. package/docs/guides/write-file/{cat.md → cat.mdx} +4 -2
  196. package/docs/guides/write-file/{file-cp.md → file-cp.mdx} +3 -1
  197. package/docs/guides/write-file/{filesink.md → filesink.mdx} +3 -1
  198. package/docs/guides/write-file/{response.md → response.mdx} +3 -1
  199. package/docs/guides/write-file/{stdout.md → stdout.mdx} +3 -1
  200. package/docs/guides/write-file/{stream.md → stream.mdx} +3 -1
  201. package/docs/guides/write-file/{unlink.md → unlink.mdx} +3 -1
  202. package/docs/{index.md → index.mdx} +97 -41
  203. package/docs/installation.mdx +365 -0
  204. package/docs/{cli/bunx.md → pm/bunx.mdx} +25 -31
  205. package/docs/{install/catalogs.md → pm/catalogs.mdx} +18 -24
  206. package/docs/{cli/add.md → pm/cli/add.mdx} +61 -55
  207. package/docs/{install/audit.md → pm/cli/audit.mdx} +11 -8
  208. package/docs/{cli/install.md → pm/cli/install.mdx} +208 -81
  209. package/docs/{cli/link.md → pm/cli/link.mdx} +27 -19
  210. package/docs/{cli/outdated.md → pm/cli/outdated.mdx} +119 -12
  211. package/docs/{install/patch.md → pm/cli/patch.mdx} +25 -15
  212. package/docs/{cli/pm.md → pm/cli/pm.mdx} +96 -62
  213. package/docs/{cli/publish.md → pm/cli/publish.mdx} +38 -35
  214. package/docs/pm/cli/remove.mdx +16 -0
  215. package/docs/{cli/update.md → pm/cli/update.mdx} +26 -15
  216. package/docs/{cli/why.md → pm/cli/why.mdx} +27 -10
  217. package/docs/{cli/filter.md → pm/filter.mdx} +26 -14
  218. package/docs/{install/cache.md → pm/global-cache.mdx} +25 -12
  219. package/docs/{install/isolated.md → pm/isolated-installs.mdx} +32 -24
  220. package/docs/{install/lifecycle.md → pm/lifecycle.mdx} +20 -9
  221. package/docs/{install/lockfile.md → pm/lockfile.mdx} +18 -12
  222. package/docs/{install/npmrc.md → pm/npmrc.mdx} +30 -24
  223. package/docs/{install/overrides.md → pm/overrides.mdx} +47 -37
  224. package/docs/{install/registries.md → pm/scopes-registries.mdx} +8 -3
  225. package/docs/{install/security-scanner-api.md → pm/security-scanner-api.mdx} +22 -8
  226. package/docs/{install/workspaces.md → pm/workspaces.mdx} +17 -22
  227. package/docs/project/{benchmarking.md → benchmarking.mdx} +26 -11
  228. package/docs/project/{bindgen.md → bindgen.mdx} +12 -14
  229. package/docs/project/{building-windows.md → building-windows.mdx} +18 -47
  230. package/docs/project/{contributing.md → contributing.mdx} +56 -60
  231. package/docs/project/feedback.mdx +20 -0
  232. package/docs/project/license.mdx +78 -0
  233. package/docs/project/roadmap.mdx +8 -0
  234. package/docs/quickstart.mdx +240 -0
  235. package/docs/runtime/{autoimport.md → auto-install.mdx} +34 -31
  236. package/docs/{api/binary-data.md → runtime/binary-data.mdx} +77 -269
  237. package/docs/runtime/bun-apis.mdx +59 -0
  238. package/docs/runtime/{bunfig.md → bunfig.mdx} +95 -225
  239. package/docs/{api/cc.md → runtime/c-compiler.mdx} +16 -9
  240. package/docs/{api/spawn.md → runtime/child-process.mdx} +69 -119
  241. package/docs/{api/color.md → runtime/color.mdx} +6 -1
  242. package/docs/{api/console.md → runtime/console.mdx} +17 -7
  243. package/docs/{api/cookie.md → runtime/cookies.mdx} +24 -19
  244. package/docs/runtime/{debugger.md → debugger.mdx} +61 -51
  245. package/docs/runtime/environment-variables.mdx +214 -0
  246. package/docs/{api/ffi.md → runtime/ffi.mdx} +53 -45
  247. package/docs/{api/file-io.md → runtime/file-io.mdx} +41 -101
  248. package/docs/{api/file-system-router.md → runtime/file-system-router.mdx} +8 -2
  249. package/docs/{bundler/loaders.md → runtime/file-types.mdx} +56 -112
  250. package/docs/{api/glob.md → runtime/glob.mdx} +4 -1
  251. package/docs/runtime/globals.mdx +72 -0
  252. package/docs/{api/hashing.md → runtime/hashing.mdx} +18 -22
  253. package/docs/{api/html-rewriter.md → runtime/html-rewriter.mdx} +36 -30
  254. package/docs/runtime/http/cookies.mdx +79 -0
  255. package/docs/runtime/http/error-handling.mdx +40 -0
  256. package/docs/runtime/http/metrics.mdx +36 -0
  257. package/docs/runtime/http/routing.mdx +289 -0
  258. package/docs/runtime/http/server.mdx +647 -0
  259. package/docs/runtime/http/tls.mdx +101 -0
  260. package/docs/{api/websockets.md → runtime/http/websockets.mdx} +62 -231
  261. package/docs/{cli/run.md → runtime/index.mdx} +70 -108
  262. package/docs/runtime/jsx.mdx +115 -0
  263. package/docs/runtime/{modules.md → module-resolution.mdx} +83 -61
  264. package/docs/{api/dns.md → runtime/networking/dns.mdx} +23 -22
  265. package/docs/{api/fetch.md → runtime/networking/fetch.mdx} +10 -5
  266. package/docs/{api/tcp.md → runtime/networking/tcp.mdx} +59 -41
  267. package/docs/{api/udp.md → runtime/networking/udp.mdx} +14 -8
  268. package/docs/{api/node-api.md → runtime/node-api.mdx} +5 -0
  269. package/docs/runtime/{nodejs-apis.md → nodejs-compat.mdx} +9 -4
  270. package/docs/{bundler/plugins.md → runtime/plugins.mdx} +17 -61
  271. package/docs/{api/redis.md → runtime/redis.mdx} +65 -80
  272. package/docs/{api/s3.md → runtime/s3.mdx} +79 -66
  273. package/docs/{api/secrets.md → runtime/secrets.mdx} +27 -10
  274. package/docs/{api/semver.md → runtime/semver.mdx} +9 -4
  275. package/docs/runtime/{shell.md → shell.mdx} +52 -20
  276. package/docs/{api/sql.md → runtime/sql.mdx} +129 -99
  277. package/docs/{api/sqlite.md → runtime/sqlite.mdx} +162 -157
  278. package/docs/{api/streams.md → runtime/streams.mdx} +33 -31
  279. package/docs/{cli/bun-create.md → runtime/templating/create.mdx} +74 -143
  280. package/docs/{cli/init.md → runtime/templating/init.mdx} +24 -51
  281. package/docs/{api/transpiler.md → runtime/transpiler.mdx} +50 -38
  282. package/docs/{typescript.md → runtime/typescript.mdx} +7 -2
  283. package/docs/{api/utils.md → runtime/utils.mdx} +81 -50
  284. package/docs/runtime/{hot.md → watch-mode.mdx} +53 -37
  285. package/docs/runtime/web-apis.mdx +29 -0
  286. package/docs/{api/workers.md → runtime/workers.mdx} +28 -22
  287. package/docs/{api/yaml.md → runtime/yaml.mdx} +33 -232
  288. package/docs/snippets/cli/add.mdx +166 -0
  289. package/docs/snippets/cli/build.mdx +196 -0
  290. package/docs/snippets/cli/feedback.mdx +17 -0
  291. package/docs/snippets/cli/init.mdx +84 -0
  292. package/docs/snippets/cli/install.mdx +173 -0
  293. package/docs/snippets/cli/link.mdx +163 -0
  294. package/docs/snippets/cli/outdated.mdx +140 -0
  295. package/docs/snippets/cli/patch.mdx +171 -0
  296. package/docs/snippets/cli/publish.mdx +198 -0
  297. package/docs/snippets/cli/remove.mdx +146 -0
  298. package/docs/snippets/cli/run.mdx +293 -0
  299. package/docs/snippets/cli/test.mdx +100 -0
  300. package/docs/snippets/cli/update.mdx +144 -0
  301. package/docs/snippets/product-card.mdx +32 -0
  302. package/docs/snippets/product-tiles.mdx +94 -0
  303. package/docs/test/code-coverage.mdx +409 -0
  304. package/docs/test/configuration.mdx +467 -0
  305. package/docs/test/{time.md → dates-times.mdx} +23 -20
  306. package/docs/test/{discovery.md → discovery.mdx} +15 -10
  307. package/docs/test/dom.mdx +226 -0
  308. package/docs/{cli/test.md → test/index.mdx} +77 -94
  309. package/docs/test/lifecycle.mdx +348 -0
  310. package/docs/test/mocks.mdx +637 -0
  311. package/docs/test/{reporters.md → reporters.mdx} +15 -15
  312. package/docs/test/runtime-behavior.mdx +342 -0
  313. package/docs/test/snapshots.mdx +434 -0
  314. package/docs/test/writing-tests.mdx +635 -0
  315. package/docs/typescript.mdx +54 -0
  316. package/package.json +8 -6
  317. package/test.d.ts +2 -2
  318. package/docs/api/file.md +0 -19
  319. package/docs/api/globals.md +0 -387
  320. package/docs/api/http.md +0 -1408
  321. package/docs/api/import-meta.md +0 -69
  322. package/docs/benchmarks.md +0 -120
  323. package/docs/bun-flavored-toml.md +0 -42
  324. package/docs/bundler/css_modules.md +0 -145
  325. package/docs/bundler/fullstack.md +0 -418
  326. package/docs/bundler/index.md +0 -1735
  327. package/docs/bundler/intro.md +0 -75
  328. package/docs/bundler/vs-esbuild.md +0 -1127
  329. package/docs/cli/bun-completions.md +0 -3
  330. package/docs/cli/bun-install.md +0 -349
  331. package/docs/cli/bun-upgrade.md +0 -39
  332. package/docs/cli/info.md +0 -65
  333. package/docs/cli/patch-commit.md +0 -11
  334. package/docs/cli/remove.md +0 -7
  335. package/docs/cli/unlink.md +0 -9
  336. package/docs/contributing/upgrading-webkit.md +0 -57
  337. package/docs/ecosystem/elysia.md +0 -24
  338. package/docs/ecosystem/express.md +0 -37
  339. package/docs/ecosystem/hono.md +0 -18
  340. package/docs/ecosystem/react.md +0 -65
  341. package/docs/ecosystem/stric.md +0 -38
  342. package/docs/guides/ecosystem/prisma.md +0 -141
  343. package/docs/guides/ecosystem/render.md +0 -79
  344. package/docs/guides/install/add-git.md +0 -36
  345. package/docs/guides/test/spy-on.md +0 -46
  346. package/docs/install/index.md +0 -248
  347. package/docs/installation.md +0 -327
  348. package/docs/project/asan.md +0 -124
  349. package/docs/project/internals/build-process-for-ci.md +0 -75
  350. package/docs/project/licensing.md +0 -73
  351. package/docs/project/roadmap.md +0 -87
  352. package/docs/quickstart.md +0 -157
  353. package/docs/runtime/bun-apis.md +0 -207
  354. package/docs/runtime/env.md +0 -253
  355. package/docs/runtime/index.md +0 -312
  356. package/docs/runtime/jsx.md +0 -385
  357. package/docs/runtime/loaders.md +0 -130
  358. package/docs/runtime/plugins.md +0 -561
  359. package/docs/runtime/typescript.md +0 -139
  360. package/docs/runtime/web-apis.md +0 -128
  361. package/docs/test/configuration.md +0 -154
  362. package/docs/test/coverage.md +0 -142
  363. package/docs/test/dom.md +0 -75
  364. package/docs/test/examples/concurrent-test-glob.md +0 -132
  365. package/docs/test/hot.md +0 -15
  366. package/docs/test/lifecycle.md +0 -81
  367. package/docs/test/mocks.md +0 -313
  368. package/docs/test/runtime-behavior.md +0 -95
  369. package/docs/test/snapshots.md +0 -68
  370. package/docs/test/writing.md +0 -825
@@ -1,5 +1,7 @@
1
1
  ---
2
- name: Convert a Uint8Array to a Buffer
2
+ title: Convert a Uint8Array to a Buffer
3
+ sidebarTitle: "Uint8Array to Buffer"
4
+ mode: center
3
5
  ---
4
6
 
5
7
  The [`Buffer`](https://nodejs.org/api/buffer.html) class extends [`Uint8Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) with a number of additional methods. Use `Buffer.from()` to create a `Buffer` instance from a `Uint8Array`.
@@ -1,5 +1,7 @@
1
1
  ---
2
- name: Convert a Uint8Array to a DataView
2
+ title: Convert a Uint8Array to a DataView
3
+ sidebarTitle: "Uint8Array to DataView"
4
+ mode: center
3
5
  ---
4
6
 
5
7
  A [`Uint8Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) is a _typed array_ class, meaning it is a mechanism for viewing data in an underlying `ArrayBuffer`. The following snippet creates a [`DataView`] instance over the same range of data as the `Uint8Array`.
@@ -1,5 +1,7 @@
1
1
  ---
2
- name: Convert a Uint8Array to a ReadableStream
2
+ title: Convert a Uint8Array to a ReadableStream
3
+ sidebarTitle: "Uint8Array to ReadableStream"
4
+ mode: center
3
5
  ---
4
6
 
5
7
  The naive approach to creating a [`ReadableStream`](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream) from a [`Uint8Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) is to use the [`ReadableStream`](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream) constructor and enqueue the entire array as a single chunk. For larger chunks, this may be undesirable as it isn't actually "streaming" the data.
@@ -1,5 +1,7 @@
1
1
  ---
2
- name: Convert a Uint8Array to a string
2
+ title: Convert a Uint8Array to a string
3
+ sidebarTitle: "Uint8Array to string"
4
+ mode: center
3
5
  ---
4
6
 
5
7
  Bun implements the Web-standard [`TextDecoder`](https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder) class for converting from binary data types like `Uint8Array` and strings.
@@ -0,0 +1,204 @@
1
+ ---
2
+ title: Deploy a Bun application on AWS Lambda
3
+ sidebarTitle: Deploy on AWS Lambda
4
+ mode: center
5
+ ---
6
+
7
+ [AWS Lambda](https://aws.amazon.com/lambda/) is a serverless compute service that lets you run code without provisioning or managing servers.
8
+
9
+ In this guide, we will deploy a Bun HTTP server to AWS Lambda using a `Dockerfile`.
10
+
11
+ <Note>
12
+ Before continuing, make sure you have:
13
+
14
+ - A Bun application ready for deployment
15
+ - An [AWS account](https://aws.amazon.com/)
16
+ - [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) installed and configured
17
+ - [Docker](https://docs.docker.com/get-started/get-docker/) installed and added to your `PATH`
18
+
19
+ </Note>
20
+
21
+ ---
22
+
23
+ <Steps>
24
+ <Step title="Create a new Dockerfile">
25
+ Make sure you're in the directory containing your project, then create a new `Dockerfile` in the root of your project. This file contains the instructions to initialize the container, copy your local project files into it, install dependencies, and start the application.
26
+
27
+ ```docker Dockerfile icon="docker"
28
+ # Use the official AWS Lambda adapter image to handle the Lambda runtime
29
+ FROM public.ecr.aws/awsguru/aws-lambda-adapter:0.9.0 AS aws-lambda-adapter
30
+
31
+ # Use the official Bun image to run the application
32
+ FROM oven/bun:debian AS bun_latest
33
+
34
+ # Copy the Lambda adapter into the container
35
+ COPY --from=aws-lambda-adapter /lambda-adapter /opt/extensions/lambda-adapter
36
+
37
+ # Set the port to 8080. This is required for the AWS Lambda adapter.
38
+ ENV PORT=8080
39
+
40
+ # Set the work directory to `/var/task`. This is the default work directory for Lambda.
41
+ WORKDIR "/var/task"
42
+
43
+ # Copy the package.json and bun.lock into the container
44
+ COPY package.json bun.lock ./
45
+
46
+ # Install the dependencies
47
+ RUN bun install --production --frozen-lockfile
48
+
49
+ # Copy the rest of the application into the container
50
+ COPY . /var/task
51
+
52
+ # Run the application.
53
+ CMD ["bun", "index.ts"]
54
+ ```
55
+
56
+ <Note>
57
+ Make sure that the start command corresponds to your application's entry point. This can also be `CMD ["bun", "run", "start"]` if you have a start script in your `package.json`.
58
+
59
+ This image installs dependencies and runs your app with Bun inside a container. If your app doesn't have dependencies, you can omit the `RUN bun install --production --frozen-lockfile` line.
60
+ </Note>
61
+
62
+ Create a new `.dockerignore` file in the root of your project. This file contains the files and directories that should be _excluded_ from the container image, such as `node_modules`. This makes your builds faster and smaller:
63
+
64
+ ```docker .dockerignore icon="Docker"
65
+ node_modules
66
+ Dockerfile*
67
+ .dockerignore
68
+ .git
69
+ .gitignore
70
+ README.md
71
+ LICENSE
72
+ .vscode
73
+ .env
74
+ # Any other files or directories you want to exclude
75
+ ```
76
+ </Step>
77
+ <Step title="Build the Docker image">
78
+ Make sure you're in the directory containing your `Dockerfile`, then build the Docker image. In this case, we'll call the image `bun-lambda-demo` and tag it as `latest`.
79
+
80
+ ```bash terminal icon="terminal"
81
+ # cd /path/to/your/app
82
+ docker build --provenance=false --platform linux/amd64 -t bun-lambda-demo:latest .
83
+ ```
84
+ </Step>
85
+ <Step title="Create an ECR repository">
86
+ To push the image to AWS Lambda, we first need to create an [ECR repository](https://aws.amazon.com/ecr/) to push the image to.
87
+
88
+ By running the following command, we:
89
+ - Create an ECR repository named `bun-lambda-demo` in the `us-east-1` region
90
+ - Get the repository URI, and export the repository URI as an environment variable. This is optional, but make the next steps easier.
91
+
92
+ ```bash terminal icon="terminal"
93
+ export ECR_URI=$(aws ecr create-repository --repository-name bun-lambda-demo --region us-east-1 --query 'repository.repositoryUri' --output text)
94
+ echo $ECR_URI
95
+ ```
96
+ ```txt
97
+ [id].dkr.ecr.us-east-1.amazonaws.com/bun-lambda-demo
98
+ ```
99
+
100
+ <Note>
101
+ If you're using IAM Identity Center (SSO) or have configured AWS CLI with profiles, you'll need to add the `--profile` flag to your AWS CLI commands.
102
+
103
+ For example, if your profile is named `my-sso-app`, use `--profile my-sso-app`. Check your AWS CLI configuration with `aws configure list-profiles` to see available profiles.
104
+
105
+ ```bash terminal icon="terminal"
106
+ export ECR_URI=$(aws ecr create-repository --repository-name bun-lambda-demo --region us-east-1 --profile my-sso-app --query 'repository.repositoryUri' --output text)
107
+ echo $ECR_URI
108
+ ```
109
+ </Note>
110
+
111
+ </Step>
112
+ <Step title="Authenticate with the ECR repository">
113
+ Log in to the ECR repository:
114
+
115
+ ```bash terminal icon="terminal"
116
+ aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin $ECR_URI
117
+ ```
118
+ ```txt
119
+ Login Succeeded
120
+ ```
121
+
122
+ <Note>
123
+ If using a profile, use the `--profile` flag:
124
+
125
+ ```bash terminal icon="terminal"
126
+ aws ecr get-login-password --region us-east-1 --profile my-sso-app | docker login --username AWS --password-stdin $ECR_URI
127
+ ```
128
+
129
+ </Note>
130
+
131
+ </Step>
132
+ <Step title="Tag and push the docker image to the ECR repository">
133
+ Make sure you're in the directory containing your `Dockerfile`, then tag the docker image with the ECR repository URI.
134
+
135
+ ```bash terminal icon="terminal"
136
+ docker tag bun-lambda-demo:latest ${ECR_URI}:latest
137
+ ```
138
+
139
+ Then, push the image to the ECR repository.
140
+
141
+ ```bash terminal icon="terminal"
142
+ docker push ${ECR_URI}:latest
143
+ ```
144
+ </Step>
145
+ <Step title="Create an AWS Lambda function">
146
+ Go to **AWS Console** > **Lambda** > [**Create Function**](https://us-east-1.console.aws.amazon.com/lambda/home?region=us-east-1#/create/function?intent=authorFromImage) > Select **Container image**
147
+
148
+ <Warning>Make sure you've selected the right region, this URL defaults to `us-east-1`.</Warning>
149
+
150
+ <Frame>
151
+ ![Create Function](/images/guides/lambda1.png)
152
+ </Frame>
153
+
154
+ Give the function a name, like `my-bun-function`.
155
+ </Step>
156
+ <Step title="Select the container image">
157
+ Then, go to the **Container image URI** section, click on **Browse images**. Select the image we just pushed to the ECR repository.
158
+
159
+ <Frame>
160
+ ![Select Container Repository](/images/guides/lambda2.png)
161
+ </Frame>
162
+
163
+ Then, select the `latest` image, and click on **Select image**.
164
+
165
+ <Frame>
166
+ ![Select Container Image](/images/guides/lambda3.png)
167
+ </Frame>
168
+ </Step>
169
+ <Step title="Configure the function">
170
+ To get a public URL for the function, we need to go to **Additional configurations** > **Networking** > **Function URL**.
171
+
172
+ Set this to **Enable**, with Auth Type **NONE**.
173
+
174
+ <Frame>
175
+ ![Set the Function URL](/images/guides/lambda4.png)
176
+ </Frame>
177
+ </Step>
178
+ <Step title="Create the function">
179
+ Click on **Create function** at the bottom of the page, this will create the function.
180
+
181
+ <Frame>
182
+ ![Create Function](/images/guides/lambda6.png)
183
+ </Frame>
184
+
185
+ </Step>
186
+ <Step title="Get the function URL">
187
+ Once the function has been created you'll be redirected to the function's page, where you can see the function URL in the **"Function URL"** section.
188
+
189
+ <Frame>
190
+ ![Function URL](/images/guides/lambda5.png)
191
+ </Frame>
192
+ </Step>
193
+ <Step title="Test the function">
194
+ 🥳 Your app is now live! To test the function, you can either go to the **Test** tab, or call the function URL directly.
195
+
196
+ ```bash terminal icon="terminal"
197
+ curl -X GET https://[your-function-id].lambda-url.us-east-1.on.aws/
198
+ ```
199
+ ```txt
200
+ Hello from Bun on Lambda!
201
+ ```
202
+ </Step>
203
+
204
+ </Steps>
@@ -0,0 +1,161 @@
1
+ ---
2
+ title: Deploy a Bun application on DigitalOcean
3
+ sidebarTitle: Deploy on DigitalOcean
4
+ mode: center
5
+ ---
6
+
7
+ [DigitalOcean](https://www.digitalocean.com/) is a cloud platform that provides a range of services for building and deploying applications.
8
+
9
+ In this guide, we will deploy a Bun HTTP server to DigitalOcean using a `Dockerfile`.
10
+
11
+ <Note>
12
+ Before continuing, make sure you have:
13
+
14
+ - A Bun application ready for deployment
15
+ - A [DigitalOcean account](https://www.digitalocean.com/)
16
+ - [DigitalOcean CLI](https://docs.digitalocean.com/reference/doctl/how-to/install/#step-1-install-doctl) installed and configured
17
+ - [Docker](https://docs.docker.com/get-started/get-docker/) installed and added to your `PATH`
18
+
19
+ </Note>
20
+
21
+ ---
22
+
23
+ <Steps>
24
+ <Step title="Create a new DigitalOcean Container Registry">
25
+ Create a new Container Registry to store the Docker image.
26
+
27
+ <Tabs>
28
+ <Tab title="Through the DigitalOcean dashboard">
29
+ In the DigitalOcean dashboard, go to [**Container Registry**](https://cloud.digitalocean.com/registry), and enter the details for the new registry.
30
+
31
+ <Frame>
32
+ ![DigitalOcean registry dashboard](/images/guides/digitalocean-7.png)
33
+ </Frame>
34
+
35
+ Make sure the details are correct, then click **Create Registry**.
36
+ </Tab>
37
+ <Tab title="Through the DigitalOcean CLI">
38
+
39
+ ```bash terminal icon="terminal"
40
+ doctl registry create bun-digitalocean-demo
41
+ ```
42
+ ```txt
43
+ Name Endpoint Region slug
44
+ bun-digitalocean-demo registry.digitalocean.com/bun-digitalocean-demo sfo2
45
+ ```
46
+
47
+ </Tab>
48
+ </Tabs>
49
+
50
+ You should see the new registry in the [**DigitalOcean registry dashboard**](https://cloud.digitalocean.com/registry):
51
+
52
+ <Frame>
53
+ ![DigitalOcean registry dashboard](/images/guides/digitalocean-1.png)
54
+ </Frame>
55
+ </Step>
56
+ <Step title="Create a new Dockerfile">
57
+ Make sure you're in the directory containing your project, then create a new `Dockerfile` in the root of your project. This file contains the instructions to initialize the container, copy your local project files into it, install dependencies, and start the application.
58
+
59
+ ```docker Dockerfile icon="docker"
60
+ # Use the official Bun image to run the application
61
+ FROM oven/bun:debian
62
+
63
+ # Set the work directory to `/app`
64
+ WORKDIR /app
65
+
66
+ # Copy the package.json and bun.lock into the container
67
+ COPY package.json bun.lock ./
68
+
69
+ # Install the dependencies
70
+ RUN bun install --production --frozen-lockfile
71
+
72
+ # Copy the rest of the application into the container
73
+ COPY . .
74
+
75
+ # Expose the port (DigitalOcean will set PORT env var)
76
+ EXPOSE 8080
77
+
78
+ # Run the application
79
+ CMD ["bun", "index.ts"]
80
+ ```
81
+
82
+ <Note>
83
+ Make sure that the start command corresponds to your application's entry point. This can also be `CMD ["bun", "run", "start"]` if you have a start script in your `package.json`.
84
+
85
+ This image installs dependencies and runs your app with Bun inside a container. If your app doesn't have dependencies, you can omit the `RUN bun install --production --frozen-lockfile` line.
86
+ </Note>
87
+
88
+ Create a new `.dockerignore` file in the root of your project. This file contains the files and directories that should be _excluded_ from the container image, such as `node_modules`. This makes your builds faster and smaller:
89
+
90
+ ```docker .dockerignore icon="Docker"
91
+ node_modules
92
+ Dockerfile*
93
+ .dockerignore
94
+ .git
95
+ .gitignore
96
+ README.md
97
+ LICENSE
98
+ .vscode
99
+ .env
100
+ # Any other files or directories you want to exclude
101
+ ```
102
+ </Step>
103
+ <Step title="Authenticate Docker with DigitalOcean registry">
104
+ Before building and pushing the Docker image, authenticate Docker with the DigitalOcean Container Registry:
105
+
106
+ ```bash terminal icon="terminal"
107
+ doctl registry login
108
+ ```
109
+ ```txt
110
+ Successfully authenticated with registry.digitalocean.com
111
+ ```
112
+
113
+ <Note>
114
+ This command authenticates Docker with DigitalOcean's registry using your DigitalOcean credentials. Without this step, the build and push command will fail with a 401 authentication error.
115
+ </Note>
116
+ </Step>
117
+ <Step title="Build and push the Docker image to the DigitalOcean registry">
118
+ Make sure you're in the directory containing your `Dockerfile`, then build and push the Docker image to the DigitalOcean registry in one command:
119
+
120
+ ```bash terminal icon="terminal"
121
+ docker buildx build --platform=linux/amd64 -t registry.digitalocean.com/bun-digitalocean-demo/bun-digitalocean-demo:latest --push .
122
+ ```
123
+
124
+ <Note>
125
+ If you're building on an ARM Mac (M1/M2), you must use `docker buildx` with `--platform=linux/amd64` to ensure compatibility with DigitalOcean's infrastructure. Using `docker build` without the platform flag will create an ARM64 image that won't run on DigitalOcean.
126
+ </Note>
127
+
128
+ Once the image is pushed, you should see it in the [**DigitalOcean registry dashboard**](https://cloud.digitalocean.com/registry):
129
+
130
+ <Frame>
131
+ ![DigitalOcean registry dashboard](/images/guides/digitalocean-2.png)
132
+ </Frame>
133
+ </Step>
134
+ <Step title="Create a new DigitalOcean App Platform project">
135
+ In the DigitalOcean dashboard, go to [**App Platform**](https://cloud.digitalocean.com/apps) > **Create App**. We can create a project directly from the container image.
136
+
137
+ <Frame>
138
+ ![DigitalOcean App Platform project dashboard](/images/guides/digitalocean-3.png)
139
+ </Frame>
140
+
141
+ Make sure the details are correct, then click **Next**.
142
+
143
+ <Frame>
144
+ ![DigitalOcean App Platform service dashboard](/images/guides/digitalocean-4.png)
145
+ </Frame>
146
+
147
+ Review and configure resource settings, then click **Create app**.
148
+
149
+ <Frame>
150
+ ![DigitalOcean App Platform service dashboard](/images/guides/digitalocean-6.png)
151
+ </Frame>
152
+ </Step>
153
+ <Step title="Visit your live application">
154
+ 🥳 Your app is now live! Once the app is created, you should see it in the App Platform dashboard with the public URL.
155
+
156
+ <Frame>
157
+ ![DigitalOcean App Platform app dashboard](/images/guides/digitalocean-5.png)
158
+ </Frame>
159
+ </Step>
160
+
161
+ </Steps>
@@ -0,0 +1,197 @@
1
+ ---
2
+ title: Deploy a Bun application on Google Cloud Run
3
+ sidebarTitle: Deploy on Google Cloud Run
4
+ mode: center
5
+ ---
6
+
7
+ [Google Cloud Run](https://cloud.google.com/run) is a managed platform for deploying and scaling serverless applications. Google handles the infrastructure for you.
8
+
9
+ In this guide, we will deploy a Bun HTTP server to Google Cloud Run using a `Dockerfile`.
10
+
11
+ <Note>
12
+ Before continuing, make sure you have:
13
+
14
+ - A Bun application ready for deployment
15
+ - A [Google Cloud account](https://cloud.google.com/) with billing enabled
16
+ - [Google Cloud CLI](https://cloud.google.com/sdk/docs/install) installed and configured
17
+
18
+ </Note>
19
+
20
+ ---
21
+
22
+ <Steps>
23
+ <Step title={<span>Initialize <code>gcloud</code> by select/creating a project</span>}>
24
+
25
+ Make sure that you've initialized the Google Cloud CLI. This command logs you in, and prompts you to either select an existing project or create a new one.
26
+
27
+ For more help with the Google Cloud CLI, see the [official documentation](https://docs.cloud.google.com/sdk/gcloud/reference/init).
28
+
29
+ ```bash terminal icon="terminal"
30
+ gcloud init
31
+ ```
32
+
33
+ ```txt
34
+ Welcome! This command will take you through the configuration of gcloud.
35
+
36
+ You must sign in to continue. Would you like to sign in (Y/n)? Y
37
+ You are signed in as [email@example.com].
38
+
39
+ Pick cloud project to use:
40
+ [1] existing-bun-app-1234
41
+ [2] Enter a project ID
42
+ [3] Create a new project
43
+ Please enter numeric choice or text value (must exactly match list item): 3
44
+
45
+ Enter a Project ID. my-bun-app
46
+ Your current project has been set to: [my-bun-app]
47
+
48
+ The Google Cloud CLI is configured and ready to use!
49
+ ```
50
+
51
+ </Step>
52
+ <Step title="(Optional) Store your project info in environment variables">
53
+ Set variables for your project ID and number so they're easier to reuse in the following steps.
54
+
55
+ ```bash terminal icon="terminal"
56
+ PROJECT_ID=$(gcloud projects list --format='value(projectId)' --filter='name="my bun app"')
57
+ PROJECT_NUMBER=$(gcloud projects list --format='value(projectNumber)' --filter='name="my bun app"')
58
+
59
+ echo $PROJECT_ID $PROJECT_NUMBER
60
+ ```
61
+
62
+ ```txt
63
+ my-bun-app-... [PROJECT_NUMBER]
64
+ ```
65
+
66
+ </Step>
67
+ <Step title="Link a billing account">
68
+ List your available billing accounts and link one to your project:
69
+
70
+ ```bash terminal icon="terminal"
71
+ gcloud billing accounts list
72
+ ```
73
+
74
+ ```txt
75
+ ACCOUNT_ID NAME OPEN MASTER_ACCOUNT_ID
76
+ [BILLING_ACCOUNT_ID] My Billing Account True
77
+ ```
78
+
79
+ Link your billing account to your project. Replace `[BILLING_ACCOUNT_ID]` with the ID of your billing account.
80
+
81
+ ```bash terminal icon="terminal"
82
+ gcloud billing projects link $PROJECT_ID --billing-account=[BILLING_ACCOUNT_ID]
83
+ ```
84
+
85
+ ```txt
86
+ billingAccountName: billingAccounts/[BILLING_ACCOUNT_ID]
87
+ billingEnabled: true
88
+ name: projects/my-bun-app-.../billingInfo
89
+ projectId: my-bun-app-...
90
+ ```
91
+
92
+ </Step>
93
+ <Step title="Enable APIs and configure IAM roles">
94
+ Activate the necessary services and grant Cloud Build permissions:
95
+
96
+ ```bash terminal icon="terminal"
97
+ gcloud services enable run.googleapis.com cloudbuild.googleapis.com
98
+ gcloud projects add-iam-policy-binding $PROJECT_ID \
99
+ --member=serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com \
100
+ --role=roles/run.builder
101
+ ```
102
+
103
+ <Note>
104
+ These commands enable Cloud Run (`run.googleapis.com`) and Cloud Build (`cloudbuild.googleapis.com`), which are required for deploying from source. Cloud Run runs your containerized app, while Cloud Build handles building and packaging it.
105
+
106
+ The IAM binding grants the Compute Engine service account (`$PROJECT_NUMBER-compute@developer.gserviceaccount.com`) permission to build and deploy images on your behalf.
107
+
108
+ </Note>
109
+
110
+ </Step>
111
+ <Step title="Add a Dockerfile">
112
+ Create a new `Dockerfile` in the root of your project. This file contains the instructions to initialize the container, copy your local project files into it, install dependencies, and start the application.
113
+
114
+ ```docker Dockerfile icon="docker"
115
+ # Use the official Bun image to run the application
116
+ FROM oven/bun:latest
117
+
118
+ # Copy the package.json and bun.lock into the container
119
+ COPY package.json bun.lock ./
120
+
121
+ # Install the dependencies
122
+ # Install the dependencies
123
+ RUN bun install --production --frozen-lockfile
124
+
125
+ # Copy the rest of the application into the container
126
+ COPY . .
127
+
128
+ # Run the application
129
+ CMD ["bun", "index.ts"]
130
+ ```
131
+
132
+ <Note>
133
+ Make sure that the start command corresponds to your application's entry point. This can also be `CMD ["bun", "run", "start"]` if you have a start script in your `package.json`.
134
+
135
+ This image installs dependencies and runs your app with Bun inside a container. If your app doesn't have dependencies, you can omit the `RUN bun install --production --frozen-lockfile` line.
136
+
137
+ This image installs dependencies and runs your app with Bun inside a container. If your app doesn't have dependencies, you can omit the `RUN bun install --production --frozen-lockfile` line.
138
+
139
+ </Note>
140
+
141
+ Create a new `.dockerignore` file in the root of your project. This file contains the files and directories that should be _excluded_ from the container image, such as `node_modules`. This makes your builds faster and smaller:
142
+
143
+ ```docker .dockerignore icon="Docker"
144
+ node_modules
145
+ Dockerfile*
146
+ .dockerignore
147
+ .git
148
+ .gitignore
149
+ README.md
150
+ LICENSE
151
+ .vscode
152
+ .env
153
+ # Any other files or directories you want to exclude
154
+ ```
155
+
156
+ </Step>
157
+ <Step title="Deploy your service">
158
+ Make sure you're in the directory containing your `Dockerfile`, then deploy directly from your local source:
159
+
160
+ <Note>
161
+ Update the `--region` flag to your preferred region. You can also omit this flag to get an interactive prompt to
162
+ select a region. Update the `--region` flag to your preferred region. You can also omit this flag to get an
163
+ interactive prompt to select a region.
164
+ </Note>
165
+
166
+ ```bash terminal icon="terminal"
167
+ gcloud run deploy my-bun-app --source . --region=us-west1 --allow-unauthenticated
168
+ ```
169
+
170
+ ```txt
171
+ Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named
172
+ [cloud-run-source-deploy] in region [us-west1] will be created.
173
+
174
+ Do you want to continue (Y/n)? Y
175
+
176
+ Building using Dockerfile and deploying container to Cloud Run service [my-bun-app] in project [my-bun-app-...] region [us-west1]
177
+ ✓ Building and deploying... Done.
178
+ ✓ Validating Service...
179
+ ✓ Uploading sources...
180
+ ✓ Building Container... Logs are available at [https://console.cloud.google.com/cloud-build/builds...].
181
+ ✓ Creating Revision...
182
+ ✓ Routing traffic...
183
+ ✓ Setting IAM Policy...
184
+ Done.
185
+ Service [my-bun-app] revision [my-bun-app-...] has been deployed and is serving 100 percent of traffic.
186
+ Service URL: https://my-bun-app-....us-west1.run.app
187
+ ```
188
+
189
+ </Step>
190
+ <Step title="Visit your live application">
191
+
192
+ 🎉 Your Bun application is now live!
193
+
194
+ Visit the Service URL (`https://my-bun-app-....us-west1.run.app`) to confirm everything works as expected.
195
+
196
+ </Step>
197
+ </Steps>