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.
- package/bun.d.ts +102 -6
- package/docs/README.md +28 -0
- package/docs/bundler/bytecode.mdx +465 -0
- package/docs/bundler/{css.md → css.mdx} +97 -101
- package/docs/bundler/esbuild.mdx +253 -0
- package/docs/bundler/{executables.md → executables.mdx} +130 -221
- package/docs/bundler/fullstack.mdx +1064 -0
- package/docs/bundler/{hmr.md → hot-reloading.mdx} +74 -79
- package/docs/bundler/{html.md → html-static.mdx} +148 -111
- package/docs/bundler/index.mdx +1499 -0
- package/docs/bundler/loaders.mdx +356 -0
- package/docs/bundler/{macros.md → macros.mdx} +83 -84
- package/docs/bundler/minifier.mdx +1306 -0
- package/docs/bundler/plugins.mdx +411 -0
- package/docs/feedback.mdx +85 -0
- package/docs/guides/binary/{arraybuffer-to-array.md → arraybuffer-to-array.mdx} +3 -1
- package/docs/guides/binary/{arraybuffer-to-blob.md → arraybuffer-to-blob.mdx} +3 -1
- package/docs/guides/binary/{arraybuffer-to-buffer.md → arraybuffer-to-buffer.mdx} +3 -1
- package/docs/guides/binary/{arraybuffer-to-string.md → arraybuffer-to-string.mdx} +3 -1
- package/docs/guides/binary/{arraybuffer-to-typedarray.md → arraybuffer-to-typedarray.mdx} +3 -1
- package/docs/guides/binary/{blob-to-arraybuffer.md → blob-to-arraybuffer.mdx} +3 -1
- package/docs/guides/binary/{blob-to-dataview.md → blob-to-dataview.mdx} +3 -1
- package/docs/guides/binary/{blob-to-stream.md → blob-to-stream.mdx} +3 -1
- package/docs/guides/binary/{blob-to-string.md → blob-to-string.mdx} +3 -1
- package/docs/guides/binary/{blob-to-typedarray.md → blob-to-typedarray.mdx} +3 -1
- package/docs/guides/binary/{buffer-to-arraybuffer.md → buffer-to-arraybuffer.mdx} +3 -1
- package/docs/guides/binary/{buffer-to-blob.md → buffer-to-blob.mdx} +3 -1
- package/docs/guides/binary/{buffer-to-readablestream.md → buffer-to-readablestream.mdx} +3 -1
- package/docs/guides/binary/{buffer-to-string.md → buffer-to-string.mdx} +3 -1
- package/docs/guides/binary/{buffer-to-typedarray.md → buffer-to-typedarray.mdx} +3 -1
- package/docs/guides/binary/{dataview-to-string.md → dataview-to-string.mdx} +3 -1
- package/docs/guides/binary/{typedarray-to-arraybuffer.md → typedarray-to-arraybuffer.mdx} +3 -1
- package/docs/guides/binary/{typedarray-to-blob.md → typedarray-to-blob.mdx} +3 -1
- package/docs/guides/binary/{typedarray-to-buffer.md → typedarray-to-buffer.mdx} +3 -1
- package/docs/guides/binary/{typedarray-to-dataview.md → typedarray-to-dataview.mdx} +3 -1
- package/docs/guides/binary/{typedarray-to-readablestream.md → typedarray-to-readablestream.mdx} +3 -1
- package/docs/guides/binary/{typedarray-to-string.md → typedarray-to-string.mdx} +3 -1
- package/docs/guides/deployment/aws-lambda.mdx +204 -0
- package/docs/guides/deployment/digital-ocean.mdx +161 -0
- package/docs/guides/deployment/google-cloud-run.mdx +197 -0
- package/docs/guides/deployment/{railway.md → railway.mdx} +42 -54
- package/docs/guides/deployment/render.mdx +82 -0
- package/docs/guides/deployment/vercel.mdx +99 -0
- package/docs/guides/ecosystem/{astro.md → astro.mdx} +16 -6
- package/docs/guides/ecosystem/{discordjs.md → discordjs.mdx} +21 -18
- package/docs/guides/ecosystem/{docker.md → docker.mdx} +25 -14
- package/docs/guides/ecosystem/{drizzle.md → drizzle.mdx} +32 -22
- package/docs/guides/ecosystem/{edgedb.md → edgedb.mdx} +63 -34
- package/docs/guides/ecosystem/{elysia.md → elysia.mdx} +11 -11
- package/docs/guides/ecosystem/{express.md → express.mdx} +12 -9
- package/docs/guides/ecosystem/{hono.md → hono.mdx} +16 -8
- package/docs/guides/ecosystem/{mongoose.md → mongoose.mdx} +26 -21
- package/docs/guides/ecosystem/{neon-drizzle.md → neon-drizzle.mdx} +49 -35
- package/docs/guides/ecosystem/{neon-serverless-postgres.md → neon-serverless-postgres.mdx} +16 -11
- package/docs/guides/ecosystem/{nextjs.md → nextjs.mdx} +18 -10
- package/docs/guides/ecosystem/{nuxt.md → nuxt.mdx} +45 -11
- package/docs/guides/ecosystem/{pm2.md → pm2.mdx} +7 -9
- package/docs/guides/ecosystem/prisma-postgres.mdx +169 -0
- package/docs/guides/ecosystem/prisma.mdx +164 -0
- package/docs/guides/ecosystem/{qwik.md → qwik.mdx} +18 -11
- package/docs/guides/ecosystem/{react.md → react.mdx} +9 -7
- package/docs/guides/ecosystem/{remix.md → remix.mdx} +45 -26
- package/docs/guides/ecosystem/{sentry.md → sentry.mdx} +7 -5
- package/docs/guides/ecosystem/{solidstart.md → solidstart.mdx} +21 -13
- package/docs/guides/ecosystem/{ssr-react.md → ssr-react.mdx} +9 -11
- package/docs/guides/ecosystem/{stric.md → stric.mdx} +16 -17
- package/docs/guides/ecosystem/{sveltekit.md → sveltekit.mdx} +42 -29
- package/docs/guides/ecosystem/{systemd.md → systemd.mdx} +27 -26
- package/docs/guides/ecosystem/upstash.mdx +87 -0
- package/docs/guides/ecosystem/{vite.md → vite.mdx} +20 -14
- package/docs/guides/html-rewriter/{extract-links.md → extract-links.mdx} +11 -7
- package/docs/guides/html-rewriter/{extract-social-meta.md → extract-social-meta.mdx} +6 -2
- package/docs/guides/http/{cluster.md → cluster.mdx} +10 -7
- package/docs/guides/http/{fetch-unix.md → fetch-unix.mdx} +5 -3
- package/docs/guides/http/{fetch.md → fetch.mdx} +5 -3
- package/docs/guides/http/{file-uploads.md → file-uploads.mdx} +18 -15
- package/docs/guides/http/{hot.md → hot.mdx} +9 -7
- package/docs/guides/http/{proxy.md → proxy.mdx} +7 -5
- package/docs/guides/http/{server.md → server.mdx} +4 -2
- package/docs/guides/http/{simple.md → simple.mdx} +4 -2
- package/docs/guides/http/{stream-file.md → stream-file.mdx} +6 -4
- package/docs/guides/http/{stream-iterator.md → stream-iterator.mdx} +5 -3
- package/docs/guides/http/{stream-node-streams-in-bun.md → stream-node-streams-in-bun.mdx} +4 -2
- package/docs/guides/http/{tls.md → tls.mdx} +5 -3
- package/docs/guides/index.mdx +10 -0
- package/docs/guides/install/{add-dev.md → add-dev.mdx} +8 -6
- package/docs/guides/install/add-git.mdx +38 -0
- package/docs/guides/install/{add-optional.md → add-optional.mdx} +7 -5
- package/docs/guides/install/{add-peer.md → add-peer.mdx} +13 -11
- package/docs/guides/install/{add-tarball.md → add-tarball.mdx} +7 -5
- package/docs/guides/install/{add.md → add.mdx} +12 -10
- package/docs/guides/install/{azure-artifacts.md → azure-artifacts.mdx} +15 -12
- package/docs/guides/{runtime/cicd.md → install/cicd.mdx} +13 -13
- package/docs/guides/install/{custom-registry.md → custom-registry.mdx} +6 -4
- package/docs/guides/install/{from-npm-install-to-bun-install.md → from-npm-install-to-bun-install.mdx} +50 -34
- package/docs/guides/install/{git-diff-bun-lockfile.md → git-diff-bun-lockfile.mdx} +14 -11
- package/docs/guides/install/{jfrog-artifactory.md → jfrog-artifactory.mdx} +4 -4
- package/docs/guides/install/{npm-alias.md → npm-alias.mdx} +6 -4
- package/docs/guides/install/{registry-scope.md → registry-scope.mdx} +6 -4
- package/docs/guides/install/{trusted.md → trusted.mdx} +22 -18
- package/docs/guides/install/{workspaces.md → workspaces.mdx} +13 -13
- package/docs/guides/install/{yarnlock.md → yarnlock.mdx} +15 -9
- package/docs/guides/process/{argv.md → argv.mdx} +17 -9
- package/docs/guides/process/{ctrl-c.md → ctrl-c.mdx} +4 -2
- package/docs/guides/process/{ipc.md → ipc.mdx} +13 -10
- package/docs/guides/process/{nanoseconds.md → nanoseconds.mdx} +3 -1
- package/docs/guides/process/{os-signals.md → os-signals.mdx} +3 -1
- package/docs/guides/process/{spawn-stderr.md → spawn-stderr.mdx} +4 -1
- package/docs/guides/process/{spawn-stdout.md → spawn-stdout.mdx} +3 -1
- package/docs/guides/process/{spawn.md → spawn.mdx} +3 -1
- package/docs/guides/process/{stdin.md → stdin.mdx} +15 -7
- package/docs/guides/read-file/{arraybuffer.md → arraybuffer.mdx} +5 -3
- package/docs/guides/read-file/{buffer.md → buffer.mdx} +4 -2
- package/docs/guides/read-file/{exists.md → exists.mdx} +4 -2
- package/docs/guides/read-file/{json.md → json.mdx} +4 -2
- package/docs/guides/read-file/{mime.md → mime.mdx} +3 -1
- package/docs/guides/read-file/{stream.md → stream.mdx} +3 -1
- package/docs/guides/read-file/{string.md → string.mdx} +3 -1
- package/docs/guides/read-file/{uint8array.md → uint8array.mdx} +3 -1
- package/docs/guides/read-file/{watch.md → watch.mdx} +6 -8
- package/docs/guides/runtime/{build-time-constants.md → build-time-constants.mdx} +24 -22
- package/docs/guides/{install/cicd.md → runtime/cicd.mdx} +11 -7
- package/docs/guides/runtime/{codesign-macos-executable.md → codesign-macos-executable.mdx} +14 -9
- package/docs/guides/runtime/{define-constant.md → define-constant.mdx} +20 -16
- package/docs/guides/runtime/{delete-directory.md → delete-directory.mdx} +5 -3
- package/docs/guides/runtime/{delete-file.md → delete-file.mdx} +4 -2
- package/docs/guides/runtime/{heap-snapshot.md → heap-snapshot.mdx} +5 -3
- package/docs/guides/runtime/{import-html.md → import-html.mdx} +4 -2
- package/docs/guides/runtime/{import-json.md → import-json.mdx} +6 -4
- package/docs/guides/runtime/{import-toml.md → import-toml.mdx} +5 -3
- package/docs/guides/runtime/{import-yaml.md → import-yaml.mdx} +9 -7
- package/docs/guides/runtime/{read-env.md → read-env.mdx} +10 -5
- package/docs/guides/runtime/{set-env.md → set-env.mdx} +14 -10
- package/docs/guides/runtime/{shell.md → shell.mdx} +6 -4
- package/docs/guides/runtime/{timezone.md → timezone.mdx} +10 -7
- package/docs/guides/runtime/{tsconfig-paths.md → tsconfig-paths.mdx} +5 -3
- package/docs/guides/runtime/{typescript.md → typescript.mdx} +8 -6
- package/docs/guides/runtime/{vscode-debugger.md → vscode-debugger.mdx} +12 -11
- package/docs/guides/runtime/{web-debugger.md → web-debugger.mdx} +39 -18
- package/docs/guides/streams/{node-readable-to-arraybuffer.md → node-readable-to-arraybuffer.mdx} +3 -1
- package/docs/guides/streams/{node-readable-to-blob.md → node-readable-to-blob.mdx} +3 -1
- package/docs/guides/streams/{node-readable-to-json.md → node-readable-to-json.mdx} +3 -1
- package/docs/guides/streams/{node-readable-to-string.md → node-readable-to-string.mdx} +3 -1
- package/docs/guides/streams/{node-readable-to-uint8array.md → node-readable-to-uint8array.mdx} +3 -1
- package/docs/guides/streams/{to-array.md → to-array.mdx} +3 -1
- package/docs/guides/streams/{to-arraybuffer.md → to-arraybuffer.mdx} +3 -1
- package/docs/guides/streams/{to-blob.md → to-blob.mdx} +3 -1
- package/docs/guides/streams/{to-buffer.md → to-buffer.mdx} +3 -1
- package/docs/guides/streams/{to-json.md → to-json.mdx} +4 -2
- package/docs/guides/streams/{to-string.md → to-string.mdx} +3 -1
- package/docs/guides/streams/{to-typedarray.md → to-typedarray.mdx} +3 -1
- package/docs/guides/test/{bail.md → bail.mdx} +7 -5
- package/docs/guides/test/{coverage-threshold.md → coverage-threshold.mdx} +14 -7
- package/docs/guides/test/{coverage.md → coverage.mdx} +9 -4
- package/docs/guides/test/{happy-dom.md → happy-dom.mdx} +13 -8
- package/docs/guides/test/{migrate-from-jest.md → migrate-from-jest.mdx} +19 -37
- package/docs/guides/test/{mock-clock.md → mock-clock.mdx} +3 -1
- package/docs/guides/test/{mock-functions.md → mock-functions.mdx} +7 -5
- package/docs/guides/test/{rerun-each.md → rerun-each.mdx} +5 -3
- package/docs/guides/test/{run-tests.md → run-tests.mdx} +16 -11
- package/docs/guides/test/{skip-tests.md → skip-tests.mdx} +8 -4
- package/docs/guides/test/{snapshot.md → snapshot.mdx} +20 -13
- package/docs/guides/test/spy-on.mdx +49 -0
- package/docs/guides/test/{svelte-test.md → svelte-test.mdx} +16 -23
- package/docs/guides/test/{testing-library.md → testing-library.mdx} +18 -17
- package/docs/guides/test/{timeout.md → timeout.mdx} +5 -3
- package/docs/guides/test/{todo-tests.md → todo-tests.mdx} +13 -6
- package/docs/guides/test/{update-snapshots.md → update-snapshots.mdx} +9 -6
- package/docs/guides/test/{watch-mode.md → watch-mode.mdx} +9 -4
- package/docs/guides/util/{base64.md → base64.mdx} +3 -1
- package/docs/guides/util/{deep-equals.md → deep-equals.mdx} +5 -3
- package/docs/guides/util/{deflate.md → deflate.mdx} +3 -1
- package/docs/guides/util/{detect-bun.md → detect-bun.mdx} +3 -1
- package/docs/guides/util/{entrypoint.md → entrypoint.mdx} +4 -2
- package/docs/guides/util/{escape-html.md → escape-html.mdx} +3 -1
- package/docs/guides/util/{file-url-to-path.md → file-url-to-path.mdx} +3 -1
- package/docs/guides/util/{gzip.md → gzip.mdx} +3 -1
- package/docs/guides/util/{hash-a-password.md → hash-a-password.mdx} +3 -1
- package/docs/guides/util/{import-meta-dir.md → import-meta-dir.mdx} +4 -2
- package/docs/guides/util/{import-meta-file.md → import-meta-file.mdx} +4 -2
- package/docs/guides/util/{import-meta-path.md → import-meta-path.mdx} +4 -2
- package/docs/guides/util/{javascript-uuid.md → javascript-uuid.mdx} +3 -1
- package/docs/guides/util/{main.md → main.mdx} +19 -8
- package/docs/guides/util/{path-to-file-url.md → path-to-file-url.mdx} +3 -1
- package/docs/guides/util/{sleep.md → sleep.mdx} +3 -1
- package/docs/guides/util/{version.md → version.mdx} +6 -4
- package/docs/guides/util/{which-path-to-executable-bin.md → which-path-to-executable-bin.mdx} +4 -2
- package/docs/guides/websocket/{compression.md → compression.mdx} +5 -3
- package/docs/guides/websocket/{context.md → context.mdx} +9 -12
- package/docs/guides/websocket/{pubsub.md → pubsub.mdx} +5 -6
- package/docs/guides/websocket/{simple.md → simple.mdx} +5 -3
- package/docs/guides/write-file/{append.md → append.mdx} +3 -1
- package/docs/guides/write-file/{basic.md → basic.mdx} +3 -1
- package/docs/guides/write-file/{blob.md → blob.mdx} +3 -1
- package/docs/guides/write-file/{cat.md → cat.mdx} +4 -2
- package/docs/guides/write-file/{file-cp.md → file-cp.mdx} +3 -1
- package/docs/guides/write-file/{filesink.md → filesink.mdx} +3 -1
- package/docs/guides/write-file/{response.md → response.mdx} +3 -1
- package/docs/guides/write-file/{stdout.md → stdout.mdx} +3 -1
- package/docs/guides/write-file/{stream.md → stream.mdx} +3 -1
- package/docs/guides/write-file/{unlink.md → unlink.mdx} +3 -1
- package/docs/{index.md → index.mdx} +97 -41
- package/docs/installation.mdx +365 -0
- package/docs/{cli/bunx.md → pm/bunx.mdx} +25 -31
- package/docs/{install/catalogs.md → pm/catalogs.mdx} +18 -24
- package/docs/{cli/add.md → pm/cli/add.mdx} +61 -55
- package/docs/{install/audit.md → pm/cli/audit.mdx} +11 -8
- package/docs/{cli/install.md → pm/cli/install.mdx} +208 -81
- package/docs/{cli/link.md → pm/cli/link.mdx} +27 -19
- package/docs/{cli/outdated.md → pm/cli/outdated.mdx} +119 -12
- package/docs/{install/patch.md → pm/cli/patch.mdx} +25 -15
- package/docs/{cli/pm.md → pm/cli/pm.mdx} +96 -62
- package/docs/{cli/publish.md → pm/cli/publish.mdx} +38 -35
- package/docs/pm/cli/remove.mdx +16 -0
- package/docs/{cli/update.md → pm/cli/update.mdx} +26 -15
- package/docs/{cli/why.md → pm/cli/why.mdx} +27 -10
- package/docs/{cli/filter.md → pm/filter.mdx} +26 -14
- package/docs/{install/cache.md → pm/global-cache.mdx} +25 -12
- package/docs/{install/isolated.md → pm/isolated-installs.mdx} +32 -24
- package/docs/{install/lifecycle.md → pm/lifecycle.mdx} +20 -9
- package/docs/{install/lockfile.md → pm/lockfile.mdx} +18 -12
- package/docs/{install/npmrc.md → pm/npmrc.mdx} +30 -24
- package/docs/{install/overrides.md → pm/overrides.mdx} +47 -37
- package/docs/{install/registries.md → pm/scopes-registries.mdx} +8 -3
- package/docs/{install/security-scanner-api.md → pm/security-scanner-api.mdx} +22 -8
- package/docs/{install/workspaces.md → pm/workspaces.mdx} +17 -22
- package/docs/project/{benchmarking.md → benchmarking.mdx} +26 -11
- package/docs/project/{bindgen.md → bindgen.mdx} +12 -14
- package/docs/project/{building-windows.md → building-windows.mdx} +18 -47
- package/docs/project/{contributing.md → contributing.mdx} +56 -60
- package/docs/project/feedback.mdx +20 -0
- package/docs/project/license.mdx +78 -0
- package/docs/project/roadmap.mdx +8 -0
- package/docs/quickstart.mdx +240 -0
- package/docs/runtime/{autoimport.md → auto-install.mdx} +34 -31
- package/docs/{api/binary-data.md → runtime/binary-data.mdx} +77 -269
- package/docs/runtime/bun-apis.mdx +59 -0
- package/docs/runtime/{bunfig.md → bunfig.mdx} +95 -225
- package/docs/{api/cc.md → runtime/c-compiler.mdx} +16 -9
- package/docs/{api/spawn.md → runtime/child-process.mdx} +69 -119
- package/docs/{api/color.md → runtime/color.mdx} +6 -1
- package/docs/{api/console.md → runtime/console.mdx} +17 -7
- package/docs/{api/cookie.md → runtime/cookies.mdx} +24 -19
- package/docs/runtime/{debugger.md → debugger.mdx} +61 -51
- package/docs/runtime/environment-variables.mdx +214 -0
- package/docs/{api/ffi.md → runtime/ffi.mdx} +53 -45
- package/docs/{api/file-io.md → runtime/file-io.mdx} +41 -101
- package/docs/{api/file-system-router.md → runtime/file-system-router.mdx} +8 -2
- package/docs/{bundler/loaders.md → runtime/file-types.mdx} +56 -112
- package/docs/{api/glob.md → runtime/glob.mdx} +4 -1
- package/docs/runtime/globals.mdx +72 -0
- package/docs/{api/hashing.md → runtime/hashing.mdx} +18 -22
- package/docs/{api/html-rewriter.md → runtime/html-rewriter.mdx} +36 -30
- package/docs/runtime/http/cookies.mdx +79 -0
- package/docs/runtime/http/error-handling.mdx +40 -0
- package/docs/runtime/http/metrics.mdx +36 -0
- package/docs/runtime/http/routing.mdx +289 -0
- package/docs/runtime/http/server.mdx +647 -0
- package/docs/runtime/http/tls.mdx +101 -0
- package/docs/{api/websockets.md → runtime/http/websockets.mdx} +62 -231
- package/docs/{cli/run.md → runtime/index.mdx} +70 -108
- package/docs/runtime/jsx.mdx +115 -0
- package/docs/runtime/{modules.md → module-resolution.mdx} +83 -61
- package/docs/{api/dns.md → runtime/networking/dns.mdx} +23 -22
- package/docs/{api/fetch.md → runtime/networking/fetch.mdx} +10 -5
- package/docs/{api/tcp.md → runtime/networking/tcp.mdx} +59 -41
- package/docs/{api/udp.md → runtime/networking/udp.mdx} +14 -8
- package/docs/{api/node-api.md → runtime/node-api.mdx} +5 -0
- package/docs/runtime/{nodejs-apis.md → nodejs-compat.mdx} +9 -4
- package/docs/{bundler/plugins.md → runtime/plugins.mdx} +17 -61
- package/docs/{api/redis.md → runtime/redis.mdx} +65 -80
- package/docs/{api/s3.md → runtime/s3.mdx} +79 -66
- package/docs/{api/secrets.md → runtime/secrets.mdx} +27 -10
- package/docs/{api/semver.md → runtime/semver.mdx} +9 -4
- package/docs/runtime/{shell.md → shell.mdx} +52 -20
- package/docs/{api/sql.md → runtime/sql.mdx} +129 -99
- package/docs/{api/sqlite.md → runtime/sqlite.mdx} +162 -157
- package/docs/{api/streams.md → runtime/streams.mdx} +33 -31
- package/docs/{cli/bun-create.md → runtime/templating/create.mdx} +74 -143
- package/docs/{cli/init.md → runtime/templating/init.mdx} +24 -51
- package/docs/{api/transpiler.md → runtime/transpiler.mdx} +50 -38
- package/docs/{typescript.md → runtime/typescript.mdx} +7 -2
- package/docs/{api/utils.md → runtime/utils.mdx} +81 -50
- package/docs/runtime/{hot.md → watch-mode.mdx} +53 -37
- package/docs/runtime/web-apis.mdx +29 -0
- package/docs/{api/workers.md → runtime/workers.mdx} +28 -22
- package/docs/{api/yaml.md → runtime/yaml.mdx} +33 -232
- package/docs/snippets/cli/add.mdx +166 -0
- package/docs/snippets/cli/build.mdx +196 -0
- package/docs/snippets/cli/feedback.mdx +17 -0
- package/docs/snippets/cli/init.mdx +84 -0
- package/docs/snippets/cli/install.mdx +173 -0
- package/docs/snippets/cli/link.mdx +163 -0
- package/docs/snippets/cli/outdated.mdx +140 -0
- package/docs/snippets/cli/patch.mdx +171 -0
- package/docs/snippets/cli/publish.mdx +198 -0
- package/docs/snippets/cli/remove.mdx +146 -0
- package/docs/snippets/cli/run.mdx +293 -0
- package/docs/snippets/cli/test.mdx +100 -0
- package/docs/snippets/cli/update.mdx +144 -0
- package/docs/snippets/product-card.mdx +32 -0
- package/docs/snippets/product-tiles.mdx +94 -0
- package/docs/test/code-coverage.mdx +409 -0
- package/docs/test/configuration.mdx +467 -0
- package/docs/test/{time.md → dates-times.mdx} +23 -20
- package/docs/test/{discovery.md → discovery.mdx} +15 -10
- package/docs/test/dom.mdx +226 -0
- package/docs/{cli/test.md → test/index.mdx} +77 -94
- package/docs/test/lifecycle.mdx +348 -0
- package/docs/test/mocks.mdx +637 -0
- package/docs/test/{reporters.md → reporters.mdx} +15 -15
- package/docs/test/runtime-behavior.mdx +342 -0
- package/docs/test/snapshots.mdx +434 -0
- package/docs/test/writing-tests.mdx +635 -0
- package/docs/typescript.mdx +54 -0
- package/package.json +8 -6
- package/test.d.ts +2 -2
- package/docs/api/file.md +0 -19
- package/docs/api/globals.md +0 -387
- package/docs/api/http.md +0 -1408
- package/docs/api/import-meta.md +0 -69
- package/docs/benchmarks.md +0 -120
- package/docs/bun-flavored-toml.md +0 -42
- package/docs/bundler/css_modules.md +0 -145
- package/docs/bundler/fullstack.md +0 -418
- package/docs/bundler/index.md +0 -1735
- package/docs/bundler/intro.md +0 -75
- package/docs/bundler/vs-esbuild.md +0 -1127
- package/docs/cli/bun-completions.md +0 -3
- package/docs/cli/bun-install.md +0 -349
- package/docs/cli/bun-upgrade.md +0 -39
- package/docs/cli/info.md +0 -65
- package/docs/cli/patch-commit.md +0 -11
- package/docs/cli/remove.md +0 -7
- package/docs/cli/unlink.md +0 -9
- package/docs/contributing/upgrading-webkit.md +0 -57
- package/docs/ecosystem/elysia.md +0 -24
- package/docs/ecosystem/express.md +0 -37
- package/docs/ecosystem/hono.md +0 -18
- package/docs/ecosystem/react.md +0 -65
- package/docs/ecosystem/stric.md +0 -38
- package/docs/guides/ecosystem/prisma.md +0 -141
- package/docs/guides/ecosystem/render.md +0 -79
- package/docs/guides/install/add-git.md +0 -36
- package/docs/guides/test/spy-on.md +0 -46
- package/docs/install/index.md +0 -248
- package/docs/installation.md +0 -327
- package/docs/project/asan.md +0 -124
- package/docs/project/internals/build-process-for-ci.md +0 -75
- package/docs/project/licensing.md +0 -73
- package/docs/project/roadmap.md +0 -87
- package/docs/quickstart.md +0 -157
- package/docs/runtime/bun-apis.md +0 -207
- package/docs/runtime/env.md +0 -253
- package/docs/runtime/index.md +0 -312
- package/docs/runtime/jsx.md +0 -385
- package/docs/runtime/loaders.md +0 -130
- package/docs/runtime/plugins.md +0 -561
- package/docs/runtime/typescript.md +0 -139
- package/docs/runtime/web-apis.md +0 -128
- package/docs/test/configuration.md +0 -154
- package/docs/test/coverage.md +0 -142
- package/docs/test/dom.md +0 -75
- package/docs/test/examples/concurrent-test-glob.md +0 -132
- package/docs/test/hot.md +0 -15
- package/docs/test/lifecycle.md +0 -81
- package/docs/test/mocks.md +0 -313
- package/docs/test/runtime-behavior.md +0 -95
- package/docs/test/snapshots.md +0 -68
- package/docs/test/writing.md +0 -825
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
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
|
-
|
|
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`.
|
package/docs/guides/binary/{typedarray-to-readablestream.md → typedarray-to-readablestream.mdx}
RENAMED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
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
|
-
|
|
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
|
+

|
|
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
|
+

|
|
161
|
+
</Frame>
|
|
162
|
+
|
|
163
|
+
Then, select the `latest` image, and click on **Select image**.
|
|
164
|
+
|
|
165
|
+
<Frame>
|
|
166
|
+

|
|
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
|
+

|
|
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
|
+

|
|
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
|
+

|
|
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
|
+

|
|
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
|
+

|
|
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
|
+

|
|
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
|
+

|
|
139
|
+
</Frame>
|
|
140
|
+
|
|
141
|
+
Make sure the details are correct, then click **Next**.
|
|
142
|
+
|
|
143
|
+
<Frame>
|
|
144
|
+

|
|
145
|
+
</Frame>
|
|
146
|
+
|
|
147
|
+
Review and configure resource settings, then click **Create app**.
|
|
148
|
+
|
|
149
|
+
<Frame>
|
|
150
|
+

|
|
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
|
+

|
|
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>
|