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,34 +1,36 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
2
|
+
title: Use Neon Postgres through Drizzle ORM
|
|
3
|
+
sidebarTitle: Neon Drizzle with Bun
|
|
4
|
+
mode: center
|
|
3
5
|
---
|
|
4
6
|
|
|
5
7
|
[Neon](https://neon.tech/) is a fully managed serverless Postgres, separating compute and storage to offer features like autoscaling, branching and bottomless storage. Neon can be used from Bun directly using the `@neondatabase/serverless` driver or through an ORM like `Drizzle`.
|
|
6
8
|
|
|
7
9
|
Drizzle ORM supports both a SQL-like "query builder" API and an ORM-like [Queries API](https://orm.drizzle.team/docs/rqb). Get started by creating a project directory, initializing the directory using `bun init`, and installing Drizzle and the [Neon serverless driver](https://github.com/neondatabase/serverless/).
|
|
8
10
|
|
|
9
|
-
```sh
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
```sh terminal icon="terminal"
|
|
12
|
+
mkdir bun-drizzle-neon
|
|
13
|
+
cd bun-drizzle-neon
|
|
14
|
+
bun init -y
|
|
15
|
+
bun add drizzle-orm @neondatabase/serverless
|
|
16
|
+
bun add -D drizzle-kit
|
|
15
17
|
```
|
|
16
18
|
|
|
17
19
|
---
|
|
18
20
|
|
|
19
21
|
Create a `.env.local` file and add your [Neon Postgres connection string](https://neon.tech/docs/connect/connect-from-any-app) to it.
|
|
20
22
|
|
|
21
|
-
```
|
|
22
|
-
DATABASE_URL=postgresql://
|
|
23
|
+
```txt .env.local icon="settings"
|
|
24
|
+
DATABASE_URL=postgresql://usertitle:password@ep-adj-noun-guid.us-east-1.aws.neon.tech/neondb?sslmode=require
|
|
23
25
|
```
|
|
24
26
|
|
|
25
27
|
---
|
|
26
28
|
|
|
27
29
|
We will connect to the Neon database using the Neon serverless driver, wrapped in a Drizzle database instance.
|
|
28
30
|
|
|
29
|
-
```ts
|
|
30
|
-
import { neon } from
|
|
31
|
-
import { drizzle } from
|
|
31
|
+
```ts db.ts icon="/icons/typescript.svg"
|
|
32
|
+
import { neon } from "@neondatabase/serverless";
|
|
33
|
+
import { drizzle } from "drizzle-orm/neon-http";
|
|
32
34
|
|
|
33
35
|
// Bun automatically loads the DATABASE_URL from .env.local
|
|
34
36
|
// Refer to: https://bun.com/docs/runtime/env for more information
|
|
@@ -41,7 +43,7 @@ export const db = drizzle(sql);
|
|
|
41
43
|
|
|
42
44
|
To see the database in action, add these lines to `index.ts`.
|
|
43
45
|
|
|
44
|
-
```ts
|
|
46
|
+
```ts index.ts icon="/icons/typescript.svg"
|
|
45
47
|
import { db } from "./db";
|
|
46
48
|
import { sql } from "drizzle-orm";
|
|
47
49
|
|
|
@@ -54,8 +56,11 @@ console.log(result.rows);
|
|
|
54
56
|
|
|
55
57
|
Then run `index.ts` with Bun.
|
|
56
58
|
|
|
57
|
-
```sh
|
|
58
|
-
|
|
59
|
+
```sh terminal icon="terminal"
|
|
60
|
+
bun run index.ts
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
```txt
|
|
59
64
|
[
|
|
60
65
|
{
|
|
61
66
|
text: "hello world",
|
|
@@ -67,12 +72,12 @@ $ bun run index.ts
|
|
|
67
72
|
|
|
68
73
|
We can define a schema for our database using Drizzle ORM primitives. Create a `schema.ts` file and add this code.
|
|
69
74
|
|
|
70
|
-
```ts
|
|
75
|
+
```ts schema.ts icon="/icons/typescript.svg"
|
|
71
76
|
import { pgTable, integer, serial, text, timestamp } from "drizzle-orm/pg-core";
|
|
72
77
|
|
|
73
78
|
export const authors = pgTable("authors", {
|
|
74
79
|
id: serial("id").primaryKey(),
|
|
75
|
-
|
|
80
|
+
title: text("name").notNull(),
|
|
76
81
|
bio: text("bio"),
|
|
77
82
|
createdAt: timestamp("created_at").notNull().defaultNow(),
|
|
78
83
|
});
|
|
@@ -83,14 +88,14 @@ export const authors = pgTable("authors", {
|
|
|
83
88
|
We then use the `drizzle-kit` CLI to generate an initial SQL migration.
|
|
84
89
|
|
|
85
90
|
```sh
|
|
86
|
-
|
|
91
|
+
bunx drizzle-kit generate --dialect postgresql --schema ./schema.ts --out ./drizzle
|
|
87
92
|
```
|
|
88
93
|
|
|
89
94
|
---
|
|
90
95
|
|
|
91
96
|
This creates a new `drizzle` directory containing a `.sql` migration file and `meta` directory.
|
|
92
97
|
|
|
93
|
-
```txt
|
|
98
|
+
```txt File Tree icon="folder-tree"
|
|
94
99
|
drizzle
|
|
95
100
|
├── 0000_aspiring_post.sql
|
|
96
101
|
└── meta
|
|
@@ -102,8 +107,8 @@ drizzle
|
|
|
102
107
|
|
|
103
108
|
We can execute these migrations with a simple `migrate.ts` script. This script creates a new connection to the Neon database and executes all unexecuted migrations in the `drizzle` directory.
|
|
104
109
|
|
|
105
|
-
```ts
|
|
106
|
-
import { db } from
|
|
110
|
+
```ts migrate.ts
|
|
111
|
+
import { db } from "./db";
|
|
107
112
|
import { migrate } from "drizzle-orm/neon-http/migrator";
|
|
108
113
|
|
|
109
114
|
const main = async () => {
|
|
@@ -123,8 +128,11 @@ main();
|
|
|
123
128
|
|
|
124
129
|
We can run this script with `bun` to execute the migration.
|
|
125
130
|
|
|
126
|
-
```sh
|
|
127
|
-
|
|
131
|
+
```sh terminal icon="terminal"
|
|
132
|
+
bun run migrate.ts
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
```txt
|
|
128
136
|
Migration completed
|
|
129
137
|
```
|
|
130
138
|
|
|
@@ -132,22 +140,22 @@ Migration completed
|
|
|
132
140
|
|
|
133
141
|
We can now add some data to our database. Create a `seed.ts` file with the following contents.
|
|
134
142
|
|
|
135
|
-
```ts
|
|
143
|
+
```ts seed.ts icon="/icons/typescript.svg"
|
|
136
144
|
import { db } from "./db";
|
|
137
145
|
import * as schema from "./schema";
|
|
138
146
|
|
|
139
147
|
async function seed() {
|
|
140
148
|
await db.insert(schema.authors).values([
|
|
141
149
|
{
|
|
142
|
-
|
|
150
|
+
title: "J.R.R. Tolkien",
|
|
143
151
|
bio: "The creator of Middle-earth and author of The Lord of the Rings.",
|
|
144
152
|
},
|
|
145
153
|
{
|
|
146
|
-
|
|
154
|
+
title: "George R.R. Martin",
|
|
147
155
|
bio: "The author of the epic fantasy series A Song of Ice and Fire.",
|
|
148
156
|
},
|
|
149
157
|
{
|
|
150
|
-
|
|
158
|
+
title: "J.K. Rowling",
|
|
151
159
|
bio: "The creator of the Harry Potter series.",
|
|
152
160
|
},
|
|
153
161
|
]);
|
|
@@ -170,8 +178,11 @@ main();
|
|
|
170
178
|
|
|
171
179
|
Then run this file.
|
|
172
180
|
|
|
173
|
-
```sh
|
|
174
|
-
|
|
181
|
+
```sh terminal icon="terminal"
|
|
182
|
+
bun run seed.ts
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
```txt
|
|
175
186
|
Seeding completed
|
|
176
187
|
```
|
|
177
188
|
|
|
@@ -179,7 +190,7 @@ Seeding completed
|
|
|
179
190
|
|
|
180
191
|
We now have a database with a schema and sample data. We can use Drizzle to query it. Replace the contents of `index.ts` with the following.
|
|
181
192
|
|
|
182
|
-
```ts
|
|
193
|
+
```ts index.ts icon="/icons/typescript.svg"
|
|
183
194
|
import * as schema from "./schema";
|
|
184
195
|
import { db } from "./db";
|
|
185
196
|
|
|
@@ -191,22 +202,25 @@ console.log(result);
|
|
|
191
202
|
|
|
192
203
|
Then run the file. You should see the three authors we inserted.
|
|
193
204
|
|
|
194
|
-
```sh
|
|
195
|
-
|
|
205
|
+
```sh terminal icon="terminal"
|
|
206
|
+
bun run index.ts
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
```txt
|
|
196
210
|
[
|
|
197
211
|
{
|
|
198
212
|
id: 1,
|
|
199
|
-
|
|
213
|
+
title: "J.R.R. Tolkien",
|
|
200
214
|
bio: "The creator of Middle-earth and author of The Lord of the Rings.",
|
|
201
215
|
createdAt: 2024-05-11T10:28:46.029Z,
|
|
202
216
|
}, {
|
|
203
217
|
id: 2,
|
|
204
|
-
|
|
218
|
+
title: "George R.R. Martin",
|
|
205
219
|
bio: "The author of the epic fantasy series A Song of Ice and Fire.",
|
|
206
220
|
createdAt: 2024-05-11T10:28:46.029Z,
|
|
207
221
|
}, {
|
|
208
222
|
id: 3,
|
|
209
|
-
|
|
223
|
+
title: "J.K. Rowling",
|
|
210
224
|
bio: "The creator of the Harry Potter series.",
|
|
211
225
|
createdAt: 2024-05-11T10:28:46.029Z,
|
|
212
226
|
}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
2
|
+
title: Use Neon's Serverless Postgres with Bun
|
|
3
|
+
sidebarTitle: Neon Serverless Postgres with Bun
|
|
4
|
+
mode: center
|
|
3
5
|
---
|
|
4
6
|
|
|
5
7
|
[Neon](https://neon.tech/) is a fully managed serverless Postgres. Neon separates compute and storage to offer modern developer features such as autoscaling, branching, bottomless storage, and more.
|
|
@@ -8,26 +10,26 @@ name: Use Neon's Serverless Postgres with Bun
|
|
|
8
10
|
|
|
9
11
|
Get started by creating a project directory, initializing the directory using `bun init`, and adding the [Neon serverless driver](https://github.com/neondatabase/serverless/) as a project dependency.
|
|
10
12
|
|
|
11
|
-
```sh
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
```sh terminal icon="terminal"
|
|
14
|
+
mkdir bun-neon-postgres
|
|
15
|
+
cd bun-neon-postgres
|
|
16
|
+
bun init -y
|
|
17
|
+
bun add @neondatabase/serverless
|
|
16
18
|
```
|
|
17
19
|
|
|
18
20
|
---
|
|
19
21
|
|
|
20
22
|
Create a `.env.local` file and add your [Neon Postgres connection string](https://neon.tech/docs/connect/connect-from-any-app) to it.
|
|
21
23
|
|
|
22
|
-
```sh
|
|
23
|
-
DATABASE_URL=postgresql://
|
|
24
|
+
```sh .env.local icon="settings"
|
|
25
|
+
DATABASE_URL=postgresql://usertitle:password@ep-adj-noun-guid.us-east-1.aws.neon.tech/neondb?sslmode=require
|
|
24
26
|
```
|
|
25
27
|
|
|
26
28
|
---
|
|
27
29
|
|
|
28
30
|
Paste the following code into your project's `index.ts` file.
|
|
29
31
|
|
|
30
|
-
```ts
|
|
32
|
+
```ts index.ts icon="/icons/typescript.svg"
|
|
31
33
|
import { neon } from "@neondatabase/serverless";
|
|
32
34
|
|
|
33
35
|
// Bun automatically loads the DATABASE_URL from .env.local
|
|
@@ -43,8 +45,11 @@ console.log(rows[0].version);
|
|
|
43
45
|
|
|
44
46
|
Start the program using `bun ./index.ts`. The Postgres version should be printed to the console.
|
|
45
47
|
|
|
46
|
-
```sh
|
|
47
|
-
|
|
48
|
+
```sh terminal icon="terminal"
|
|
49
|
+
bun ./index.ts
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
```txt
|
|
48
53
|
PostgreSQL 16.2 on x86_64-pc-linux-gnu, compiled by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit
|
|
49
54
|
```
|
|
50
55
|
|
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
2
|
+
title: Build an app with Next.js and Bun
|
|
3
|
+
sidebarTitle: Next.js with Bun
|
|
4
|
+
mode: center
|
|
3
5
|
---
|
|
4
6
|
|
|
5
7
|
Initialize a Next.js app with `create-next-app`. This will scaffold a new Next.js project and automatically install dependencies.
|
|
6
8
|
|
|
7
|
-
```sh
|
|
8
|
-
|
|
9
|
+
```sh terminal icon="terminal"
|
|
10
|
+
bun create next-app
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
```txt
|
|
9
14
|
✔ What is your project named? … my-app
|
|
10
15
|
✔ Would you like to use TypeScript with this project? … No / Yes
|
|
11
16
|
✔ Would you like to use ESLint with this project? … No / Yes
|
|
@@ -21,7 +26,10 @@ Creating a new Next.js app in /path/to/my-app.
|
|
|
21
26
|
You can specify a starter template using the `--example` flag.
|
|
22
27
|
|
|
23
28
|
```sh
|
|
24
|
-
|
|
29
|
+
bun create next-app --example with-supabase
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
```txt
|
|
25
33
|
✔ What is your project named? … my-app
|
|
26
34
|
...
|
|
27
35
|
```
|
|
@@ -30,18 +38,18 @@ $ bun create next-app --example with-supabase
|
|
|
30
38
|
|
|
31
39
|
To start the dev server with Bun, run `bun --bun run dev` from the project root.
|
|
32
40
|
|
|
33
|
-
```sh
|
|
34
|
-
|
|
35
|
-
|
|
41
|
+
```sh terminal icon="terminal"
|
|
42
|
+
cd my-app
|
|
43
|
+
bun --bun run dev
|
|
36
44
|
```
|
|
37
45
|
|
|
38
46
|
---
|
|
39
47
|
|
|
40
48
|
To run the dev server with Node.js instead, omit `--bun`.
|
|
41
49
|
|
|
42
|
-
```sh
|
|
43
|
-
|
|
44
|
-
|
|
50
|
+
```sh terminal icon="terminal"
|
|
51
|
+
cd my-app
|
|
52
|
+
bun run dev
|
|
45
53
|
```
|
|
46
54
|
|
|
47
55
|
---
|
|
@@ -1,15 +1,20 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
2
|
+
title: Build an app with Nuxt and Bun
|
|
3
|
+
sidebarTitle: Nuxt with Bun
|
|
4
|
+
mode: center
|
|
3
5
|
---
|
|
4
6
|
|
|
5
7
|
Bun supports [Nuxt](https://nuxt.com) out of the box. Initialize a Nuxt app with official `nuxi` CLI.
|
|
6
8
|
|
|
7
|
-
```sh
|
|
8
|
-
|
|
9
|
+
```sh terminal icon="terminal"
|
|
10
|
+
bunx nuxi init my-nuxt-app
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
```txt
|
|
9
14
|
✔ Which package manager would you like to use?
|
|
10
15
|
bun
|
|
11
16
|
◐ Installing dependencies...
|
|
12
|
-
bun install v1.3.
|
|
17
|
+
bun install v1.3.1 (16b4bf34)
|
|
13
18
|
+ @nuxt/devtools@0.8.2
|
|
14
19
|
+ nuxt@3.7.0
|
|
15
20
|
785 packages installed [2.67s]
|
|
@@ -24,14 +29,17 @@ bun install v1.3.2-canary.20251105T140650 (16b4bf34)
|
|
|
24
29
|
|
|
25
30
|
To start the dev server, run `bun --bun run dev` from the project root. This will execute the `nuxt dev` command (as defined in the `"dev"` script in `package.json`).
|
|
26
31
|
|
|
27
|
-
|
|
28
|
-
The `nuxt` CLI uses Node.js by default; passing the `--bun` flag forces the dev server to use the Bun runtime instead.
|
|
29
|
-
|
|
32
|
+
<Note>
|
|
33
|
+
The `nuxt` CLI uses Node.js by default; passing the `--bun` flag forces the dev server to use the Bun runtime instead.
|
|
34
|
+
</Note>
|
|
30
35
|
|
|
36
|
+
```sh terminal icon="terminal"
|
|
37
|
+
cd my-nuxt-app
|
|
38
|
+
bun --bun run dev
|
|
31
39
|
```
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
40
|
+
|
|
41
|
+
```txt
|
|
42
|
+
nuxt dev
|
|
35
43
|
Nuxi 3.6.5
|
|
36
44
|
Nuxt 3.6.5 with Nitro 2.5.2
|
|
37
45
|
> Local: http://localhost:3000/
|
|
@@ -49,7 +57,33 @@ Once the dev server spins up, open [http://localhost:3000](http://localhost:3000
|
|
|
49
57
|
|
|
50
58
|
To start developing your app, replace `<NuxtWelcome />` in `app.vue` with your own UI.
|
|
51
59
|
|
|
52
|
-
|
|
60
|
+
<Frame>
|
|
61
|
+

|
|
63
|
+
</Frame>
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
For production build, while the default preset is already compatible with Bun, you can also use [Bun preset](https://nitro.build/deploy/runtimes/bun) to generate better optimized builds.
|
|
68
|
+
|
|
69
|
+
```ts nuxt.config.ts icon="/icons/typescript.svg"
|
|
70
|
+
export default defineNuxtConfig({
|
|
71
|
+
nitro: {
|
|
72
|
+
preset: "bun", // [!code ++]
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
<Note>
|
|
78
|
+
Some packages provide Bun-specific exports that Nitro will not bundle correctly using the default preset. In this
|
|
79
|
+
case, you need to use Bun preset so that the packages will work correctly in production builds.
|
|
80
|
+
</Note>
|
|
81
|
+
|
|
82
|
+
After building with bun, run:
|
|
83
|
+
|
|
84
|
+
```sh terminal icon="terminal"
|
|
85
|
+
bun run ./.output/server/index.mjs
|
|
86
|
+
```
|
|
53
87
|
|
|
54
88
|
---
|
|
55
89
|
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
2
|
+
title: Run Bun as a daemon with PM2
|
|
3
|
+
sidebarTitle: PM2 with Bun
|
|
4
|
+
mode: center
|
|
3
5
|
---
|
|
4
6
|
|
|
5
7
|
[PM2](https://pm2.keymetrics.io/) is a popular process manager that manages and runs your applications as daemons (background processes).
|
|
@@ -17,11 +19,9 @@ You can use PM2 with Bun in two ways: as a CLI option or in a configuration file
|
|
|
17
19
|
|
|
18
20
|
### With `--interpreter`
|
|
19
21
|
|
|
20
|
-
---
|
|
21
|
-
|
|
22
22
|
To start your application with PM2 and Bun as the interpreter, open your terminal and run the following command:
|
|
23
23
|
|
|
24
|
-
```bash
|
|
24
|
+
```bash terminal icon="terminal"
|
|
25
25
|
pm2 start --interpreter ~/.bun/bin/bun index.ts
|
|
26
26
|
```
|
|
27
27
|
|
|
@@ -29,13 +29,11 @@ pm2 start --interpreter ~/.bun/bin/bun index.ts
|
|
|
29
29
|
|
|
30
30
|
### With a configuration file
|
|
31
31
|
|
|
32
|
-
---
|
|
33
|
-
|
|
34
32
|
Alternatively, you can create a PM2 configuration file. Create a file named `pm2.config.js` in your project directory and add the following content.
|
|
35
33
|
|
|
36
|
-
```
|
|
34
|
+
```js pm2.config.js icon="file-code"
|
|
37
35
|
module.exports = {
|
|
38
|
-
|
|
36
|
+
title: "app", // Name of your application
|
|
39
37
|
script: "index.ts", // Entry point of your application
|
|
40
38
|
interpreter: "bun", // Bun interpreter
|
|
41
39
|
env: {
|
|
@@ -48,7 +46,7 @@ module.exports = {
|
|
|
48
46
|
|
|
49
47
|
After saving the file, you can start your application with PM2
|
|
50
48
|
|
|
51
|
-
```bash
|
|
49
|
+
```bash terminal icon="terminal"
|
|
52
50
|
pm2 start pm2.config.js
|
|
53
51
|
```
|
|
54
52
|
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Use Prisma Postgres with Bun
|
|
3
|
+
sidebarTitle: Prisma Postgres with Bun
|
|
4
|
+
mode: center
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<Note>
|
|
8
|
+
**Note** — At the moment Prisma needs Node.js to be installed to run certain generation code. Make sure Node.js is
|
|
9
|
+
installed in the environment where you're running `bunx prisma` commands.
|
|
10
|
+
</Note>
|
|
11
|
+
|
|
12
|
+
<Steps>
|
|
13
|
+
<Step title="Create a new project">
|
|
14
|
+
First, create a directory and initialize it with `bun init`.
|
|
15
|
+
|
|
16
|
+
```bash terminal icon="terminal"
|
|
17
|
+
mkdir prisma-postgres-app
|
|
18
|
+
cd prisma-postgres-app
|
|
19
|
+
bun init
|
|
20
|
+
```
|
|
21
|
+
</Step>
|
|
22
|
+
|
|
23
|
+
<Step title="Install Prisma dependencies">
|
|
24
|
+
Then install the Prisma CLI (`prisma`), Prisma Client (`@prisma/client`), and the accelerate extension as dependencies.
|
|
25
|
+
|
|
26
|
+
```bash terminal icon="terminal"
|
|
27
|
+
bun add -d prisma
|
|
28
|
+
bun add @prisma/client @prisma/extension-accelerate
|
|
29
|
+
```
|
|
30
|
+
</Step>
|
|
31
|
+
|
|
32
|
+
<Step title="Initialize Prisma with PostgreSQL">
|
|
33
|
+
We'll use the Prisma CLI with `bunx` to initialize our schema and migration directory. We'll be using PostgreSQL as our database.
|
|
34
|
+
|
|
35
|
+
```bash terminal icon="terminal"
|
|
36
|
+
bunx --bun prisma init --db
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
This creates a basic schema. We need to update it to use the new Rust-free client with Bun optimization. Open `prisma/schema.prisma` and modify the generator block, then add a simple `User` model.
|
|
40
|
+
|
|
41
|
+
```prisma prisma/schema.prisma icon="/icons/ecosystem/prisma.svg"
|
|
42
|
+
generator client {
|
|
43
|
+
provider = "prisma-client"
|
|
44
|
+
output = "./generated" // [!code ++]
|
|
45
|
+
engineType = "client" // [!code ++]
|
|
46
|
+
runtime = "bun" // [!code ++]
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
datasource db {
|
|
50
|
+
provider = "postgresql"
|
|
51
|
+
url = env("DATABASE_URL")
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
model User { // [!code ++]
|
|
55
|
+
id Int @id @default(autoincrement()) // [!code ++]
|
|
56
|
+
email String @unique // [!code ++]
|
|
57
|
+
name String? // [!code ++]
|
|
58
|
+
} // [!code ++]
|
|
59
|
+
```
|
|
60
|
+
</Step>
|
|
61
|
+
|
|
62
|
+
<Step title="Configure database connection">
|
|
63
|
+
Set up your Postgres database URL in the `.env` file.
|
|
64
|
+
|
|
65
|
+
```env .env icon="settings"
|
|
66
|
+
DATABASE_URL="postgresql://username:password@localhost:5432/mydb?schema=public"
|
|
67
|
+
```
|
|
68
|
+
</Step>
|
|
69
|
+
|
|
70
|
+
<Step title="Create and run database migration">
|
|
71
|
+
Then generate and run initial migration.
|
|
72
|
+
|
|
73
|
+
This will generate a `.sql` migration file in `prisma/migrations`, and execute the migration against your Postgres database.
|
|
74
|
+
|
|
75
|
+
```bash terminal icon="terminal"
|
|
76
|
+
bunx --bun prisma migrate dev --name init
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
```txt
|
|
80
|
+
Environment variables loaded from .env
|
|
81
|
+
Prisma schema loaded from prisma/schema.prisma
|
|
82
|
+
Datasource "db": PostgreSQL database "mydb", schema "public" at "localhost:5432"
|
|
83
|
+
|
|
84
|
+
Applying migration `20250114141233_init`
|
|
85
|
+
|
|
86
|
+
The following migration(s) have been created and applied from new schema changes:
|
|
87
|
+
|
|
88
|
+
prisma/migrations/
|
|
89
|
+
└─ 20250114141233_init/
|
|
90
|
+
└─ migration.sql
|
|
91
|
+
|
|
92
|
+
Your database is now in sync with your schema.
|
|
93
|
+
|
|
94
|
+
✔ Generated Prisma Client (6.17.1) to ./generated in 18ms
|
|
95
|
+
```
|
|
96
|
+
</Step>
|
|
97
|
+
|
|
98
|
+
<Step title="Generate Prisma Client">
|
|
99
|
+
As indicated in the output, Prisma re-generates our _Prisma client_ whenever we execute a new migration. The client provides a fully typed API for reading and writing from our database. You can manually re-generate the client with the Prisma CLI.
|
|
100
|
+
|
|
101
|
+
```sh terminal icon="terminal"
|
|
102
|
+
bunx --bun prisma generate
|
|
103
|
+
```
|
|
104
|
+
</Step>
|
|
105
|
+
|
|
106
|
+
<Step title="Initialize Prisma Client with Accelerate">
|
|
107
|
+
Now we need to create a Prisma client instance. Create a new file `prisma/db.ts` to initialize the PrismaClient with the Postgres adapter.
|
|
108
|
+
|
|
109
|
+
```ts prisma/db.ts icon="/icons/typescript.svg"
|
|
110
|
+
import { PrismaClient } from "./generated/client";
|
|
111
|
+
import { withAccelerate } from '@prisma/extension-accelerate'
|
|
112
|
+
|
|
113
|
+
export const prisma = new PrismaClient().$extends(withAccelerate())
|
|
114
|
+
```
|
|
115
|
+
</Step>
|
|
116
|
+
|
|
117
|
+
<Step title="Create a test script">
|
|
118
|
+
Let's write a simple script to create a new user, then count the number of users in the database.
|
|
119
|
+
|
|
120
|
+
```ts index.ts icon="/icons/typescript.svg"
|
|
121
|
+
import { prisma } from "./prisma/db";
|
|
122
|
+
|
|
123
|
+
// create a new user
|
|
124
|
+
await prisma.user.create({
|
|
125
|
+
data: {
|
|
126
|
+
name: "John Dough",
|
|
127
|
+
email: `john-${Math.random()}@example.com`,
|
|
128
|
+
},
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
// count the number of users
|
|
132
|
+
const count = await prisma.user.count();
|
|
133
|
+
console.log(`There are ${count} users in the database.`);
|
|
134
|
+
```
|
|
135
|
+
</Step>
|
|
136
|
+
|
|
137
|
+
<Step title="Run and test the application">
|
|
138
|
+
Let's run this script with `bun run`. Each time we run it, a new user is created.
|
|
139
|
+
|
|
140
|
+
```bash terminal icon="terminal"
|
|
141
|
+
bun run index.ts
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
```txt
|
|
145
|
+
There are 1 users in the database.
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
```bash terminal icon="terminal"
|
|
149
|
+
bun run index.ts
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
```txt
|
|
153
|
+
There are 2 users in the database.
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
```bash terminal icon="terminal"
|
|
157
|
+
bun run index.ts
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
```txt
|
|
161
|
+
There are 3 users in the database.
|
|
162
|
+
```
|
|
163
|
+
</Step>
|
|
164
|
+
|
|
165
|
+
</Steps>
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
That's it! Now that you've set up Prisma Postgres using Bun, we recommend referring to the [official Prisma Postgres docs](https://www.prisma.io/docs/postgres) as you continue to develop your application.
|