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,3 +0,0 @@
|
|
|
1
|
-
This command installs completions for `zsh` and/or `fish`. It runs automatically on every `bun upgrade` and on install. It reads from `$SHELL` to determine which shell to install for. It tries several common shell completion directories for your shell and OS.
|
|
2
|
-
|
|
3
|
-
If you want to copy the completions manually, run `bun completions > path-to-file`. If you know the completions directory to install them to, run `bun completions /path/to/directory`.
|
package/docs/cli/bun-install.md
DELETED
|
@@ -1,349 +0,0 @@
|
|
|
1
|
-
### `bun install`
|
|
2
|
-
|
|
3
|
-
bun install is a fast package manager & npm client.
|
|
4
|
-
|
|
5
|
-
bun install can be configured via `bunfig.toml`, environment variables, and CLI flags.
|
|
6
|
-
|
|
7
|
-
#### Configuring `bun install` with `bunfig.toml`
|
|
8
|
-
|
|
9
|
-
`bunfig.toml` is searched for in the following paths on `bun install`, `bun remove`, and `bun add`:
|
|
10
|
-
|
|
11
|
-
1. `$XDG_CONFIG_HOME/.bunfig.toml` or `$HOME/.bunfig.toml`
|
|
12
|
-
2. `./bunfig.toml`
|
|
13
|
-
|
|
14
|
-
If both are found, the results are merged together.
|
|
15
|
-
|
|
16
|
-
Configuring with `bunfig.toml` is optional. Bun tries to be zero configuration in general, but that's not always possible.
|
|
17
|
-
|
|
18
|
-
```toml
|
|
19
|
-
# Using scoped packages with bun install
|
|
20
|
-
[install.scopes]
|
|
21
|
-
|
|
22
|
-
# Scope name The value can be a URL string or an object
|
|
23
|
-
"@mybigcompany" = { token = "123456", url = "https://registry.mybigcompany.com" }
|
|
24
|
-
# URL is optional and falls back to the default registry
|
|
25
|
-
|
|
26
|
-
# The "@" in the scope is optional
|
|
27
|
-
mybigcompany2 = { token = "123456" }
|
|
28
|
-
|
|
29
|
-
# Environment variables can be referenced as a string that starts with $ and it will be replaced
|
|
30
|
-
mybigcompany3 = { token = "$npm_config_token" }
|
|
31
|
-
|
|
32
|
-
# Setting username and password turns it into a Basic Auth header by taking base64("username:password")
|
|
33
|
-
mybigcompany4 = { username = "myusername", password = "$npm_config_password", url = "https://registry.yarnpkg.com/" }
|
|
34
|
-
# You can set username and password in the registry URL. This is the same as above.
|
|
35
|
-
mybigcompany5 = "https://username:password@registry.yarnpkg.com/"
|
|
36
|
-
|
|
37
|
-
# You can set a token for a registry URL:
|
|
38
|
-
mybigcompany6 = "https://:$NPM_CONFIG_TOKEN@registry.yarnpkg.com/"
|
|
39
|
-
|
|
40
|
-
[install]
|
|
41
|
-
# Default registry
|
|
42
|
-
# can be a URL string or an object
|
|
43
|
-
registry = "https://registry.yarnpkg.com/"
|
|
44
|
-
# as an object
|
|
45
|
-
#registry = { url = "https://registry.yarnpkg.com/", token = "123456" }
|
|
46
|
-
|
|
47
|
-
# Install for production? This is the equivalent to the "--production" CLI argument
|
|
48
|
-
production = false
|
|
49
|
-
|
|
50
|
-
# Save a text-based lockfile? This is equivalent to the "--save-text-lockfile" CLI argument
|
|
51
|
-
saveTextLockfile = false
|
|
52
|
-
|
|
53
|
-
# Disallow changes to lockfile? This is the equivalent to the "--frozen-lockfile" CLI argument
|
|
54
|
-
frozenLockfile = false
|
|
55
|
-
|
|
56
|
-
# Don't actually install
|
|
57
|
-
dryRun = true
|
|
58
|
-
|
|
59
|
-
# Install optionalDependencies (default: true)
|
|
60
|
-
# Setting this to false is equivalent to the `--omit=optional` CLI argument
|
|
61
|
-
optional = true
|
|
62
|
-
|
|
63
|
-
# Install local devDependencies (default: true)
|
|
64
|
-
# Setting this to false is equivalent to the `--omit=dev` CLI argument
|
|
65
|
-
dev = true
|
|
66
|
-
|
|
67
|
-
# Install peerDependencies (default: true)
|
|
68
|
-
# Setting this to false is equivalent to the `--omit=peer` CLI argument
|
|
69
|
-
peer = true
|
|
70
|
-
|
|
71
|
-
# Max number of concurrent lifecycle scripts (default: (cpu count or GOMAXPROCS) x2)
|
|
72
|
-
concurrentScripts = 16
|
|
73
|
-
|
|
74
|
-
# When using `bun install -g`, install packages here
|
|
75
|
-
globalDir = "~/.bun/install/global"
|
|
76
|
-
|
|
77
|
-
# When using `bun install -g`, link package bins here
|
|
78
|
-
globalBinDir = "~/.bun/bin"
|
|
79
|
-
|
|
80
|
-
# cache-related configuration
|
|
81
|
-
[install.cache]
|
|
82
|
-
# The directory to use for the cache
|
|
83
|
-
dir = "~/.bun/install/cache"
|
|
84
|
-
|
|
85
|
-
# Don't load from the global cache.
|
|
86
|
-
# Note: Bun may still write to node_modules/.cache
|
|
87
|
-
disable = false
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
# Always resolve the latest versions from the registry
|
|
91
|
-
disableManifest = false
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
# Lockfile-related configuration
|
|
95
|
-
[install.lockfile]
|
|
96
|
-
|
|
97
|
-
# Print a yarn v1 lockfile
|
|
98
|
-
# Note: it does not load the lockfile, it just converts bun.lock into a yarn.lock
|
|
99
|
-
print = "yarn"
|
|
100
|
-
|
|
101
|
-
# Save the lockfile to disk
|
|
102
|
-
save = true
|
|
103
|
-
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
If it's easier to read as TypeScript types:
|
|
107
|
-
|
|
108
|
-
```ts
|
|
109
|
-
export interface Root {
|
|
110
|
-
install: Install;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
export interface Install {
|
|
114
|
-
scopes: Scopes;
|
|
115
|
-
registry: Registry;
|
|
116
|
-
production: boolean;
|
|
117
|
-
saveTextLockfile: boolean;
|
|
118
|
-
frozenLockfile: boolean;
|
|
119
|
-
dryRun: boolean;
|
|
120
|
-
optional: boolean;
|
|
121
|
-
dev: boolean;
|
|
122
|
-
peer: boolean;
|
|
123
|
-
globalDir: string;
|
|
124
|
-
globalBinDir: string;
|
|
125
|
-
cache: Cache;
|
|
126
|
-
lockfile: Lockfile;
|
|
127
|
-
logLevel: "debug" | "error" | "warn";
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
type Registry =
|
|
131
|
-
| string
|
|
132
|
-
| {
|
|
133
|
-
url?: string;
|
|
134
|
-
token?: string;
|
|
135
|
-
username?: string;
|
|
136
|
-
password?: string;
|
|
137
|
-
};
|
|
138
|
-
|
|
139
|
-
type Scopes = Record<string, Registry>;
|
|
140
|
-
|
|
141
|
-
export interface Cache {
|
|
142
|
-
dir: string;
|
|
143
|
-
disable: boolean;
|
|
144
|
-
disableManifest: boolean;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
export interface Lockfile {
|
|
148
|
-
print?: "yarn";
|
|
149
|
-
save: boolean;
|
|
150
|
-
}
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
## Configuring with environment variables
|
|
154
|
-
|
|
155
|
-
Environment variables have a higher priority than `bunfig.toml`.
|
|
156
|
-
|
|
157
|
-
| Name | Description |
|
|
158
|
-
| -------------------------------- | ------------------------------------------------------------- |
|
|
159
|
-
| BUN_CONFIG_REGISTRY | Set an npm registry (default: <https://registry.npmjs.org>) |
|
|
160
|
-
| BUN_CONFIG_TOKEN | Set an auth token (currently does nothing) |
|
|
161
|
-
| BUN_CONFIG_YARN_LOCKFILE | Save a Yarn v1-style yarn.lock |
|
|
162
|
-
| BUN_CONFIG_LINK_NATIVE_BINS | Point `bin` in package.json to a platform-specific dependency |
|
|
163
|
-
| BUN_CONFIG_SKIP_SAVE_LOCKFILE | Don’t save a lockfile |
|
|
164
|
-
| BUN_CONFIG_SKIP_LOAD_LOCKFILE | Don’t load a lockfile |
|
|
165
|
-
| BUN_CONFIG_SKIP_INSTALL_PACKAGES | Don’t install any packages |
|
|
166
|
-
|
|
167
|
-
Bun always tries to use the fastest available installation method for the target platform. On macOS, that’s `clonefile` and on Linux, that’s `hardlink`. You can change which installation method is used with the `--backend` flag. When unavailable or on error, `clonefile` and `hardlink` fallsback to a platform-specific implementation of copying files.
|
|
168
|
-
|
|
169
|
-
Bun stores installed packages from npm in `~/.bun/install/cache/${name}@${version}`. Note that if the semver version has a `build` or a `pre` tag, it is replaced with a hash of that value instead. This is to reduce the chances of errors from long file paths, but unfortunately complicates figuring out where a package was installed on disk.
|
|
170
|
-
|
|
171
|
-
When the `node_modules` folder exists, before installing, Bun checks if the `"name"` and `"version"` in `package/package.json` in the expected node_modules folder matches the expected `name` and `version`. This is how it determines whether it should install. It uses a custom JSON parser which stops parsing as soon as it finds `"name"` and `"version"`.
|
|
172
|
-
|
|
173
|
-
When a `bun.lock` doesn’t exist or `package.json` has changed dependencies, tarballs are downloaded & extracted eagerly while resolving.
|
|
174
|
-
|
|
175
|
-
When a `bun.lock` exists and `package.json` hasn’t changed, Bun downloads missing dependencies lazily. If the package with a matching `name` & `version` already exists in the expected location within `node_modules`, Bun won’t attempt to download the tarball.
|
|
176
|
-
|
|
177
|
-
## Platform-specific dependencies?
|
|
178
|
-
|
|
179
|
-
bun stores normalized `cpu` and `os` values from npm in the lockfile, along with the resolved packages. It skips downloading, extracting, and installing packages disabled for the current target at runtime. This means the lockfile won't change between platforms/architectures even if the packages ultimately installed do change.
|
|
180
|
-
|
|
181
|
-
### `--cpu` and `--os` flags
|
|
182
|
-
|
|
183
|
-
You can override the target platform for package selection:
|
|
184
|
-
|
|
185
|
-
```bash
|
|
186
|
-
bun install --cpu=x64 --os=linux
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
This installs packages for the specified platform instead of the current system. Useful for cross-platform builds or when preparing deployments for different environments.
|
|
190
|
-
|
|
191
|
-
**Accepted values for `--cpu`**: `arm64`, `x64`, `ia32`, `ppc64`, `s390x`
|
|
192
|
-
|
|
193
|
-
**Accepted values for `--os`**: `linux`, `darwin`, `win32`, `freebsd`, `openbsd`, `sunos`, `aix`
|
|
194
|
-
|
|
195
|
-
## Peer dependencies?
|
|
196
|
-
|
|
197
|
-
Peer dependencies are handled similarly to yarn. `bun install` will automatically install peer dependencies. If the dependency is marked optional in `peerDependenciesMeta`, an existing dependency will be chosen if possible.
|
|
198
|
-
|
|
199
|
-
## Lockfile
|
|
200
|
-
|
|
201
|
-
`bun.lock` is Bun’s lockfile format. See [our blogpost about the text lockfile](https://bun.com/blog/bun-lock-text-lockfile).
|
|
202
|
-
|
|
203
|
-
Prior to Bun 1.2, the lockfile was binary and called `bun.lockb`. Old lockfiles can be upgraded to the new format by running `bun install --save-text-lockfile --frozen-lockfile --lockfile-only`, and then deleting `bun.lockb`.
|
|
204
|
-
|
|
205
|
-
## Cache
|
|
206
|
-
|
|
207
|
-
To delete the cache:
|
|
208
|
-
|
|
209
|
-
```bash
|
|
210
|
-
$ rm -rf ~/.bun/install/cache
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
## Platform-specific backends
|
|
214
|
-
|
|
215
|
-
`bun install` uses different system calls to install dependencies depending on the platform. This is a performance optimization. You can force a specific backend with the `--backend` flag.
|
|
216
|
-
|
|
217
|
-
**`hardlink`** is the default backend on Linux. Benchmarking showed it to be the fastest on Linux.
|
|
218
|
-
|
|
219
|
-
```bash
|
|
220
|
-
$ rm -rf node_modules
|
|
221
|
-
$ bun install --backend hardlink
|
|
222
|
-
```
|
|
223
|
-
|
|
224
|
-
**`clonefile`** is the default backend on macOS. Benchmarking showed it to be the fastest on macOS. It is only available on macOS.
|
|
225
|
-
|
|
226
|
-
```bash
|
|
227
|
-
$ rm -rf node_modules
|
|
228
|
-
$ bun install --backend clonefile
|
|
229
|
-
```
|
|
230
|
-
|
|
231
|
-
**`clonefile_each_dir`** is similar to `clonefile`, except it clones each file individually per directory. It is only available on macOS and tends to perform slower than `clonefile`. Unlike `clonefile`, this does not recursively clone subdirectories in one system call.
|
|
232
|
-
|
|
233
|
-
```bash
|
|
234
|
-
$ rm -rf node_modules
|
|
235
|
-
$ bun install --backend clonefile_each_dir
|
|
236
|
-
```
|
|
237
|
-
|
|
238
|
-
**`copyfile`** is the fallback used when any of the above fail, and is the slowest. on macOS, it uses `fcopyfile()` and on linux it uses `copy_file_range()`.
|
|
239
|
-
|
|
240
|
-
```bash
|
|
241
|
-
$ rm -rf node_modules
|
|
242
|
-
$ bun install --backend copyfile
|
|
243
|
-
```
|
|
244
|
-
|
|
245
|
-
**`symlink`** is typically only used for `file:` dependencies (and eventually `link:`) internally. To prevent infinite loops, it skips symlinking the `node_modules` folder.
|
|
246
|
-
|
|
247
|
-
If you install with `--backend=symlink`, Node.js won't resolve node_modules of dependencies unless each dependency has its own node_modules folder or you pass `--preserve-symlinks` to `node` or `bun`. See [Node.js documentation on `--preserve-symlinks`](https://nodejs.org/api/cli.html#--preserve-symlinks).
|
|
248
|
-
|
|
249
|
-
```bash
|
|
250
|
-
$ rm -rf node_modules
|
|
251
|
-
$ bun install --backend symlink
|
|
252
|
-
$ bun --preserve-symlinks ./my-file.js
|
|
253
|
-
$ node --preserve-symlinks ./my-file.js # https://nodejs.org/api/cli.html#--preserve-symlinks
|
|
254
|
-
```
|
|
255
|
-
|
|
256
|
-
## npm registry metadata
|
|
257
|
-
|
|
258
|
-
bun uses a binary format for caching NPM registry responses. This loads much faster than JSON and tends to be smaller on disk.
|
|
259
|
-
You will see these files in `~/.bun/install/cache/*.npm`. The filename pattern is `${hash(packageName)}.npm`. It’s a hash so that extra directories don’t need to be created for scoped packages.
|
|
260
|
-
|
|
261
|
-
Bun's usage of `Cache-Control` ignores `Age`. This improves performance, but means bun may be about 5 minutes out of date to receive the latest package version metadata from npm.
|
|
262
|
-
|
|
263
|
-
## pnpm migration
|
|
264
|
-
|
|
265
|
-
Bun automatically migrates projects from pnpm to bun. When a `pnpm-lock.yaml` file is detected and no `bun.lock` file exists, Bun will automatically migrate the lockfile to `bun.lock` during installation. The original `pnpm-lock.yaml` file remains unmodified.
|
|
266
|
-
|
|
267
|
-
```bash
|
|
268
|
-
bun install
|
|
269
|
-
```
|
|
270
|
-
|
|
271
|
-
**Note**: Migration only runs when `bun.lock` is absent. There is currently no opt-out flag for pnpm migration.
|
|
272
|
-
|
|
273
|
-
The migration process handles:
|
|
274
|
-
|
|
275
|
-
### Lockfile Migration
|
|
276
|
-
|
|
277
|
-
- Converts `pnpm-lock.yaml` to `bun.lock` format
|
|
278
|
-
- Preserves package versions and resolution information
|
|
279
|
-
- Maintains dependency relationships and peer dependencies
|
|
280
|
-
- Handles patched dependencies with integrity hashes
|
|
281
|
-
|
|
282
|
-
### Workspace Configuration
|
|
283
|
-
|
|
284
|
-
When a `pnpm-workspace.yaml` file exists, Bun migrates workspace settings to your root `package.json`:
|
|
285
|
-
|
|
286
|
-
```yaml
|
|
287
|
-
# pnpm-workspace.yaml
|
|
288
|
-
packages:
|
|
289
|
-
- "apps/*"
|
|
290
|
-
- "packages/*"
|
|
291
|
-
|
|
292
|
-
catalog:
|
|
293
|
-
react: ^18.0.0
|
|
294
|
-
typescript: ^5.0.0
|
|
295
|
-
|
|
296
|
-
catalogs:
|
|
297
|
-
build:
|
|
298
|
-
webpack: ^5.0.0
|
|
299
|
-
babel: ^7.0.0
|
|
300
|
-
```
|
|
301
|
-
|
|
302
|
-
The workspace packages list and catalogs are moved to the `workspaces` field in `package.json`:
|
|
303
|
-
|
|
304
|
-
```json
|
|
305
|
-
{
|
|
306
|
-
"workspaces": {
|
|
307
|
-
"packages": ["apps/*", "packages/*"],
|
|
308
|
-
"catalog": {
|
|
309
|
-
"react": "^18.0.0",
|
|
310
|
-
"typescript": "^5.0.0"
|
|
311
|
-
},
|
|
312
|
-
"catalogs": {
|
|
313
|
-
"build": {
|
|
314
|
-
"webpack": "^5.0.0",
|
|
315
|
-
"babel": "^7.0.0"
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
```
|
|
321
|
-
|
|
322
|
-
### Catalog Dependencies
|
|
323
|
-
|
|
324
|
-
Dependencies using pnpm's `catalog:` protocol are preserved:
|
|
325
|
-
|
|
326
|
-
```json
|
|
327
|
-
{
|
|
328
|
-
"dependencies": {
|
|
329
|
-
"react": "catalog:",
|
|
330
|
-
"webpack": "catalog:build"
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
```
|
|
334
|
-
|
|
335
|
-
### Configuration Migration
|
|
336
|
-
|
|
337
|
-
The following pnpm configuration is migrated from both `pnpm-lock.yaml` and `pnpm-workspace.yaml`:
|
|
338
|
-
|
|
339
|
-
- **Overrides**: Moved from `pnpm.overrides` to root-level `overrides` in `package.json`
|
|
340
|
-
- **Patched Dependencies**: Moved from `pnpm.patchedDependencies` to root-level `patchedDependencies` in `package.json`
|
|
341
|
-
- **Workspace Overrides**: Applied from `pnpm-workspace.yaml` to root `package.json`
|
|
342
|
-
|
|
343
|
-
### Requirements
|
|
344
|
-
|
|
345
|
-
- Requires pnpm lockfile version 7 or higher
|
|
346
|
-
- Workspace packages must have a `name` field in their `package.json`
|
|
347
|
-
- All catalog entries referenced by dependencies must exist in the catalogs definition
|
|
348
|
-
|
|
349
|
-
After migration, you can safely remove `pnpm-lock.yaml` and `pnpm-workspace.yaml` files.
|
package/docs/cli/bun-upgrade.md
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
To upgrade Bun, run `bun upgrade`.
|
|
2
|
-
|
|
3
|
-
It automatically downloads the latest version of Bun and overwrites the currently-running version.
|
|
4
|
-
|
|
5
|
-
This works by checking the latest version of Bun in [bun-releases-for-updater](https://github.com/Jarred-Sumner/bun-releases-for-updater/releases) and unzipping it using the system-provided `unzip` library (so that Gatekeeper works on macOS)
|
|
6
|
-
|
|
7
|
-
If for any reason you run into issues, you can also use the curl install script:
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
$ curl https://bun.com/install | bash
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
It will still work when Bun is already installed.
|
|
14
|
-
|
|
15
|
-
Bun is distributed as a single binary file, so you can also do this manually:
|
|
16
|
-
|
|
17
|
-
- Download the latest version of Bun for your platform in [bun-releases-for-updater](https://github.com/Jarred-Sumner/bun-releases-for-updater/releases/latest) (`darwin` == macOS)
|
|
18
|
-
- Unzip the folder
|
|
19
|
-
- Move the `bun` binary to `~/.bun/bin` (or anywhere)
|
|
20
|
-
|
|
21
|
-
## `--canary`
|
|
22
|
-
|
|
23
|
-
[Canary](https://github.com/oven-sh/bun/releases/tag/canary) builds are generated on every commit.
|
|
24
|
-
|
|
25
|
-
To install a [canary](https://github.com/oven-sh/bun/releases/tag/canary) build of Bun, run:
|
|
26
|
-
|
|
27
|
-
```bash
|
|
28
|
-
$ bun upgrade --canary
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
This flag is not persistent (though that might change in the future). If you want to always run the canary build of Bun, set the `BUN_CANARY` environment variable to `1` in your shell's startup script.
|
|
32
|
-
|
|
33
|
-
This will download the release zip from https://github.com/oven-sh/bun/releases/tag/canary.
|
|
34
|
-
|
|
35
|
-
To revert to the latest published version of Bun, run:
|
|
36
|
-
|
|
37
|
-
```bash
|
|
38
|
-
$ bun upgrade
|
|
39
|
-
```
|
package/docs/cli/info.md
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
`bun info` displays package metadata from the npm registry.
|
|
2
|
-
|
|
3
|
-
## Usage
|
|
4
|
-
|
|
5
|
-
```bash
|
|
6
|
-
$ bun info react
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
This will display information about the `react` package, including its latest version, description, homepage, dependencies, and more.
|
|
10
|
-
|
|
11
|
-
## Viewing specific versions
|
|
12
|
-
|
|
13
|
-
To view information about a specific version:
|
|
14
|
-
|
|
15
|
-
```bash
|
|
16
|
-
$ bun info react@18.0.0
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
## Viewing specific properties
|
|
20
|
-
|
|
21
|
-
You can also query specific properties from the package metadata:
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
$ bun info react version
|
|
25
|
-
$ bun info react dependencies
|
|
26
|
-
$ bun info react repository.url
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
## JSON output
|
|
30
|
-
|
|
31
|
-
To get the output in JSON format, use the `--json` flag:
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
$ bun info react --json
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
## Alias
|
|
38
|
-
|
|
39
|
-
`bun pm view` is an alias for `bun info`:
|
|
40
|
-
|
|
41
|
-
```bash
|
|
42
|
-
$ bun pm view react # equivalent to: bun info react
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
## Examples
|
|
46
|
-
|
|
47
|
-
```bash
|
|
48
|
-
# View basic package information
|
|
49
|
-
$ bun info is-number
|
|
50
|
-
|
|
51
|
-
# View a specific version
|
|
52
|
-
$ bun info is-number@7.0.0
|
|
53
|
-
|
|
54
|
-
# View all available versions
|
|
55
|
-
$ bun info is-number versions
|
|
56
|
-
|
|
57
|
-
# View package dependencies
|
|
58
|
-
$ bun info express dependencies
|
|
59
|
-
|
|
60
|
-
# View package homepage
|
|
61
|
-
$ bun info lodash homepage
|
|
62
|
-
|
|
63
|
-
# Get JSON output
|
|
64
|
-
$ bun info react --json
|
|
65
|
-
```
|
package/docs/cli/patch-commit.md
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
An alias for `bun patch --commit` to maintain compatibility with pnpm.
|
|
2
|
-
|
|
3
|
-
To get started with patch, first prepare the package for patching with [`bun patch <pkg>`](https://bun.com/docs/install/patch).
|
|
4
|
-
|
|
5
|
-
### `--patches-dir`
|
|
6
|
-
|
|
7
|
-
By default, `bun patch-commit` will use the `patches` directory in the temporary directory.
|
|
8
|
-
|
|
9
|
-
You can specify a different directory with the `--patches-dir` flag.
|
|
10
|
-
|
|
11
|
-
{% bunCLIUsage command="patch-commit" /%}
|
package/docs/cli/remove.md
DELETED
package/docs/cli/unlink.md
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
Bun uses [a fork](https://github.com/oven-sh/WebKit) of WebKit with a small number of changes.
|
|
2
|
-
|
|
3
|
-
It's important to periodically update WebKit for many reasons:
|
|
4
|
-
|
|
5
|
-
- Security
|
|
6
|
-
- Performance
|
|
7
|
-
- Compatibility
|
|
8
|
-
- …and many more.
|
|
9
|
-
|
|
10
|
-
To upgrade, first find the commit in **Bun's WebKit fork** (not Bun!) between when we last upgraded and now.
|
|
11
|
-
|
|
12
|
-
```bash
|
|
13
|
-
$ cd src/bun.js/WebKit # In the WebKit directory! not bun
|
|
14
|
-
$ git checkout $COMMIT
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
This is the main command to run:
|
|
18
|
-
|
|
19
|
-
```bash
|
|
20
|
-
$ git merge upstream main
|
|
21
|
-
# If you get an error saying histories are unrelated, run this and try again:
|
|
22
|
-
$ git fetch --unshallow
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
Then, you will likely see some silly merge conflicts. Fix them and then run:
|
|
26
|
-
|
|
27
|
-
```bash
|
|
28
|
-
# You might have to run this multiple times.
|
|
29
|
-
$ rm -rf WebKitBuild
|
|
30
|
-
|
|
31
|
-
# Go to Bun's directory! Not WebKit.
|
|
32
|
-
cd ../../../../
|
|
33
|
-
make jsc-build-mac-compile
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
Make sure that JSC's CLI is able to load successfully. This verifies that the build is working.
|
|
37
|
-
|
|
38
|
-
You know this worked when it printed help options. If it complains about symbols, crashes, or anything else that looks wrong, something is wrong.
|
|
39
|
-
|
|
40
|
-
```bash
|
|
41
|
-
src/bun.js/WebKit/WebKitBuild/Release/bin/jsc --help
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
Then, clear out our bindings and regenerate the C++<>Zig headers:
|
|
45
|
-
|
|
46
|
-
```bash
|
|
47
|
-
make clean-bindings headers builtins
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
Now update Bun's bindings wherever there are compiler errors:
|
|
51
|
-
|
|
52
|
-
```bash
|
|
53
|
-
# It will take awhile if you don't pass -j here
|
|
54
|
-
make bindings -j10
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
This is the hard part. It might involve digging through WebKit's commit history to figure out what changed and why. Fortunately, WebKit contributors write great commit messages.
|
package/docs/ecosystem/elysia.md
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
[Elysia](https://elysiajs.com) is a Bun-first performance focused web framework that takes full advantage of Bun's HTTP, file system, and hot reloading APIs.
|
|
2
|
-
Designed with TypeScript in mind, you don't need to understand TypeScript to gain the benefit of TypeScript with Elysia. The library understands what you want and automatically infers the type from your code.
|
|
3
|
-
|
|
4
|
-
⚡️ Elysia is [one of the fastest Bun web frameworks](https://github.com/SaltyAom/bun-http-framework-benchmark)
|
|
5
|
-
|
|
6
|
-
```ts#server.ts
|
|
7
|
-
import { Elysia } from 'elysia'
|
|
8
|
-
|
|
9
|
-
const app = new Elysia()
|
|
10
|
-
.get('/', () => 'Hello Elysia')
|
|
11
|
-
.listen(8080)
|
|
12
|
-
|
|
13
|
-
console.log(`🦊 Elysia is running at on port ${app.server.port}...`)
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
Get started with `bun create`.
|
|
17
|
-
|
|
18
|
-
```bash
|
|
19
|
-
$ bun create elysia ./myapp
|
|
20
|
-
$ cd myapp
|
|
21
|
-
$ bun run dev
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
Refer to the Elysia [documentation](https://elysiajs.com/quick-start.html) for more information.
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
Projects that use Express and other major Node.js HTTP libraries should work out of the box.
|
|
2
|
-
|
|
3
|
-
{% callout %}
|
|
4
|
-
If you run into bugs, [please file an issue](https://bun.com/issues) _in Bun's repo_, not the library. It is Bun's responsibility to address Node.js compatibility issues.
|
|
5
|
-
{% /callout %}
|
|
6
|
-
|
|
7
|
-
```ts
|
|
8
|
-
import express from "express";
|
|
9
|
-
|
|
10
|
-
const app = express();
|
|
11
|
-
const port = 8080;
|
|
12
|
-
|
|
13
|
-
app.get("/", (req, res) => {
|
|
14
|
-
res.send("Hello World!");
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
app.listen(port, () => {
|
|
18
|
-
console.log(`Listening on port ${port}...`);
|
|
19
|
-
});
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
Bun implements the [`node:http`](https://nodejs.org/api/http.html) and [`node:https`](https://nodejs.org/api/https.html) modules that these libraries rely on. These modules can also be used directly, though [`Bun.serve`](https://bun.com/docs/api/http) is recommended for most use cases.
|
|
23
|
-
|
|
24
|
-
{% callout %}
|
|
25
|
-
**Note** — Refer to the [Runtime > Node.js APIs](https://bun.com/docs/runtime/nodejs-apis#node-http) page for more detailed compatibility information.
|
|
26
|
-
{% /callout %}
|
|
27
|
-
|
|
28
|
-
```ts
|
|
29
|
-
import * as http from "node:http";
|
|
30
|
-
|
|
31
|
-
http
|
|
32
|
-
.createServer(function (req, res) {
|
|
33
|
-
res.write("Hello World!");
|
|
34
|
-
res.end();
|
|
35
|
-
})
|
|
36
|
-
.listen(8080);
|
|
37
|
-
```
|
package/docs/ecosystem/hono.md
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
[Hono](https://github.com/honojs/hono) is a lightweight ultrafast web framework designed for the edge.
|
|
2
|
-
|
|
3
|
-
```ts
|
|
4
|
-
import { Hono } from "hono";
|
|
5
|
-
const app = new Hono();
|
|
6
|
-
|
|
7
|
-
app.get("/", c => c.text("Hono!"));
|
|
8
|
-
|
|
9
|
-
export default app;
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
Get started with `bun create` or follow Hono's [Bun quickstart](https://hono.dev/getting-started/bun).
|
|
13
|
-
|
|
14
|
-
```bash
|
|
15
|
-
$ bun create hono ./myapp
|
|
16
|
-
$ cd myapp
|
|
17
|
-
$ bun run start
|
|
18
|
-
```
|
package/docs/ecosystem/react.md
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
Bun supports `.jsx` and `.tsx` files out of the box. Bun's internal transpiler converts JSX syntax into vanilla JavaScript before execution.
|
|
2
|
-
|
|
3
|
-
```tsx#react.tsx
|
|
4
|
-
function Component(props: {message: string}) {
|
|
5
|
-
return (
|
|
6
|
-
<body>
|
|
7
|
-
<h1 style={{color: 'red'}}>{props.message}</h1>
|
|
8
|
-
</body>
|
|
9
|
-
);
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
console.log(<Component message="Hello world!" />);
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
Bun implements special logging for JSX to make debugging easier.
|
|
16
|
-
|
|
17
|
-
```bash
|
|
18
|
-
$ bun run react.tsx
|
|
19
|
-
<Component message="Hello world!" />
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
### Prop punning
|
|
23
|
-
|
|
24
|
-
The Bun runtime also supports "prop punning" for JSX. This is a shorthand syntax useful for assigning a variable to a prop with the same name.
|
|
25
|
-
|
|
26
|
-
```tsx
|
|
27
|
-
function Div(props: {className: string;}) {
|
|
28
|
-
const {className} = props;
|
|
29
|
-
|
|
30
|
-
// without punning
|
|
31
|
-
return <div className={className} />;
|
|
32
|
-
// with punning
|
|
33
|
-
return <div {className} />;
|
|
34
|
-
}
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
### Server-side rendering
|
|
38
|
-
|
|
39
|
-
To server-side render (SSR) React in an [HTTP server](https://bun.com/docs/api/http):
|
|
40
|
-
|
|
41
|
-
```tsx#ssr.tsx
|
|
42
|
-
import {renderToReadableStream} from 'react-dom/server';
|
|
43
|
-
|
|
44
|
-
function Component(props: {message: string}) {
|
|
45
|
-
return (
|
|
46
|
-
<body>
|
|
47
|
-
<h1 style={{color: 'red'}}>{props.message}</h1>
|
|
48
|
-
</body>
|
|
49
|
-
);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
Bun.serve({
|
|
53
|
-
port: 4000,
|
|
54
|
-
async fetch() {
|
|
55
|
-
const stream = await renderToReadableStream(
|
|
56
|
-
<Component message="Hello from server!" />
|
|
57
|
-
);
|
|
58
|
-
return new Response(stream, {
|
|
59
|
-
headers: {'Content-Type': 'text/html'},
|
|
60
|
-
});
|
|
61
|
-
},
|
|
62
|
-
});
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
React `18.3` and later includes an [SSR optimization](https://github.com/facebook/react/pull/25597) that takes advantage of Bun's "direct" `ReadableStream` implementation.
|