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
package/docs/runtime/index.md
DELETED
|
@@ -1,312 +0,0 @@
|
|
|
1
|
-
Bun is a new JavaScript & TypeScript runtime designed to be a faster, leaner, and more modern drop-in replacement for Node.js.
|
|
2
|
-
|
|
3
|
-
## Speed
|
|
4
|
-
|
|
5
|
-
Bun is designed to start fast and run fast. Its transpiler and runtime are written in Zig, a modern, high-performance language. On Linux, this translates into startup times [4x faster](https://twitter.com/jarredsumner/status/1499225725492076544) than Node.js.
|
|
6
|
-
|
|
7
|
-
{% image src="/images/bun-run-speed.jpeg" caption="Bun vs Node.js vs Deno running Hello World" /%}
|
|
8
|
-
|
|
9
|
-
<!-- If no `node_modules` directory is found in the working directory or above, Bun will abandon Node.js-style module resolution in favor of the `Bun module resolution algorithm`. Under Bun-style module resolution, all packages are _auto-installed_ on the fly into a [global module cache](https://bun.com/docs/install/cache). For full details on this algorithm, refer to [Runtime > Modules](https://bun.com/docs/runtime/modules). -->
|
|
10
|
-
|
|
11
|
-
Performance sensitive APIs like `Buffer`, `fetch`, and `Response` are heavily profiled and optimized. Under the hood Bun uses the [JavaScriptCore engine](https://developer.apple.com/documentation/javascriptcore), which is developed by Apple for Safari. It starts and runs faster than V8, the engine used by Node.js and Chromium-based browsers.
|
|
12
|
-
|
|
13
|
-
## TypeScript
|
|
14
|
-
|
|
15
|
-
Bun natively supports TypeScript out of the box. All files are transpiled on the fly by Bun's fast native transpiler before being executed. Similar to other build tools, Bun does not perform typechecking; it simply removes type annotations from the file.
|
|
16
|
-
|
|
17
|
-
```bash
|
|
18
|
-
$ bun index.js
|
|
19
|
-
$ bun index.jsx
|
|
20
|
-
$ bun index.ts
|
|
21
|
-
$ bun index.tsx
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
Some aspects of Bun's runtime behavior are affected by the contents of your `tsconfig.json` file. Refer to [Runtime > TypeScript](https://bun.com/docs/runtime/typescript) page for details.
|
|
25
|
-
|
|
26
|
-
<!-- Before execution, Bun internally transforms all source files to vanilla JavaScript using its fast native transpiler. The transpiler looks at the files extension to determine how to handle it. -->
|
|
27
|
-
|
|
28
|
-
<!--
|
|
29
|
-
|
|
30
|
-
every file before execution. Its transpiler can directly run TypeScript and JSX `{.js|.jsx|.ts|.tsx}` files directly. During execution, Bun internally transpiles all files (including `.js` files) to vanilla JavaScript with its fast native transpiler. -->
|
|
31
|
-
|
|
32
|
-
<!-- A loader determines how to map imports & file extensions to transforms and output. -->
|
|
33
|
-
|
|
34
|
-
<!-- Currently, Bun implements the following loaders: -->
|
|
35
|
-
|
|
36
|
-
<!-- {% table %}
|
|
37
|
-
|
|
38
|
-
- Extension
|
|
39
|
-
- Transforms
|
|
40
|
-
- Output (internal)
|
|
41
|
-
|
|
42
|
-
---
|
|
43
|
-
|
|
44
|
-
- `.js`
|
|
45
|
-
- JSX + JavaScript
|
|
46
|
-
- `.js`
|
|
47
|
-
|
|
48
|
-
---
|
|
49
|
-
|
|
50
|
-
- `.jsx`
|
|
51
|
-
- JSX + JavaScript
|
|
52
|
-
- `.js`
|
|
53
|
-
|
|
54
|
-
---
|
|
55
|
-
|
|
56
|
-
- `.ts`
|
|
57
|
-
- TypeScript + JavaScript
|
|
58
|
-
- `.js`
|
|
59
|
-
|
|
60
|
-
---
|
|
61
|
-
|
|
62
|
-
- `.tsx`
|
|
63
|
-
- TypeScript + JSX + JavaScript
|
|
64
|
-
- `.js`
|
|
65
|
-
|
|
66
|
-
---
|
|
67
|
-
|
|
68
|
-
- `.mjs`
|
|
69
|
-
- JavaScript
|
|
70
|
-
- `.js`
|
|
71
|
-
|
|
72
|
-
---
|
|
73
|
-
|
|
74
|
-
- `.cjs`
|
|
75
|
-
- JavaScript
|
|
76
|
-
- `.js`
|
|
77
|
-
|
|
78
|
-
---
|
|
79
|
-
|
|
80
|
-
- `.mts`
|
|
81
|
-
- TypeScript
|
|
82
|
-
- `.js`
|
|
83
|
-
|
|
84
|
-
---
|
|
85
|
-
|
|
86
|
-
- `.cts`
|
|
87
|
-
- TypeScript
|
|
88
|
-
- `.js`
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
{% /table %} -->
|
|
92
|
-
|
|
93
|
-
## JSX
|
|
94
|
-
|
|
95
|
-
## JSON, TOML, and YAML
|
|
96
|
-
|
|
97
|
-
Source files can import `*.json`, `*.toml`, or `*.yaml` files to load their contents as plain JavaScript objects.
|
|
98
|
-
|
|
99
|
-
```ts
|
|
100
|
-
import pkg from "./package.json";
|
|
101
|
-
import bunfig from "./bunfig.toml";
|
|
102
|
-
import config from "./config.yaml";
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
See the [YAML API documentation](/docs/api/yaml) for more details on YAML support.
|
|
106
|
-
|
|
107
|
-
## WASI
|
|
108
|
-
|
|
109
|
-
{% callout %}
|
|
110
|
-
🚧 **Experimental**
|
|
111
|
-
{% /callout %}
|
|
112
|
-
|
|
113
|
-
Bun has experimental support for WASI, the [WebAssembly System Interface](https://github.com/WebAssembly/WASI). To run a `.wasm` binary with Bun:
|
|
114
|
-
|
|
115
|
-
```bash
|
|
116
|
-
$ bun ./my-wasm-app.wasm
|
|
117
|
-
# if the filename doesn't end with ".wasm"
|
|
118
|
-
$ bun run ./my-wasm-app.whatever
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
{% callout %}
|
|
122
|
-
|
|
123
|
-
**Note** — WASI support is based on [wasi-js](https://github.com/sagemathinc/cowasm/tree/main/core/wasi-js). Currently, it only supports WASI binaries that use the `wasi_snapshot_preview1` or `wasi_unstable` APIs. Bun's implementation is not fully optimized for performance; this will become more of a priority as WASM grows in popularity.
|
|
124
|
-
{% /callout %}
|
|
125
|
-
|
|
126
|
-
## Node.js compatibility
|
|
127
|
-
|
|
128
|
-
Long-term, Bun aims for complete Node.js compatibility. Most Node.js packages already work with Bun out of the box, but certain low-level APIs like `dgram` are still unimplemented. Track the current compatibility status at [Ecosystem > Node.js](https://bun.com/docs/runtime/nodejs-apis).
|
|
129
|
-
|
|
130
|
-
Bun implements the Node.js module resolution algorithm, so dependencies can still be managed with `package.json`, `node_modules`, and CommonJS-style imports.
|
|
131
|
-
|
|
132
|
-
{% callout %}
|
|
133
|
-
**Note** — We recommend using Bun's [built-in package manager](https://bun.com/docs/cli/install) for a performance boost over other npm clients.
|
|
134
|
-
{% /callout %}
|
|
135
|
-
|
|
136
|
-
## Web APIs
|
|
137
|
-
|
|
138
|
-
<!-- When prudent, Bun attempts to implement Web-standard APIs instead of introducing new APIs. Refer to [Runtime > Web APIs](https://bun.com/docs/web-apis) for a list of Web APIs that are available in Bun. -->
|
|
139
|
-
|
|
140
|
-
Some Web APIs aren't relevant in the context of a server-first runtime like Bun, such as the [DOM API](https://developer.mozilla.org/en-US/docs/Web/API/HTML_DOM_API#html_dom_api_interfaces) or [History API](https://developer.mozilla.org/en-US/docs/Web/API/History_API). Many others, though, are broadly useful outside of the browser context; when possible, Bun implements these Web-standard APIs instead of introducing new APIs.
|
|
141
|
-
|
|
142
|
-
The following Web APIs are partially or completely supported.
|
|
143
|
-
|
|
144
|
-
{% table %}
|
|
145
|
-
|
|
146
|
-
---
|
|
147
|
-
|
|
148
|
-
- HTTP
|
|
149
|
-
- [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/fetch) [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response) [`Request`](https://developer.mozilla.org/en-US/docs/Web/API/Request) [`Headers`](https://developer.mozilla.org/en-US/docs/Web/API/Headers) [`AbortController`](https://developer.mozilla.org/en-US/docs/Web/API/AbortController) [`AbortSignal`](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal)
|
|
150
|
-
|
|
151
|
-
---
|
|
152
|
-
|
|
153
|
-
- URLs
|
|
154
|
-
- [`URL`](https://developer.mozilla.org/en-US/docs/Web/API/URL) [`URLSearchParams`](https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams)
|
|
155
|
-
|
|
156
|
-
---
|
|
157
|
-
|
|
158
|
-
- Streams
|
|
159
|
-
- [`ReadableStream`](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream) [`WritableStream`](https://developer.mozilla.org/en-US/docs/Web/API/WritableStream) [`TransformStream`](https://developer.mozilla.org/en-US/docs/Web/API/TransformStream) [`ByteLengthQueuingStrategy`](https://developer.mozilla.org/en-US/docs/Web/API/ByteLengthQueuingStrategy) [`CountQueuingStrategy`](https://developer.mozilla.org/en-US/docs/Web/API/CountQueuingStrategy) and associated classes
|
|
160
|
-
|
|
161
|
-
---
|
|
162
|
-
|
|
163
|
-
- Blob
|
|
164
|
-
- [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob)
|
|
165
|
-
|
|
166
|
-
---
|
|
167
|
-
|
|
168
|
-
- WebSockets
|
|
169
|
-
- [`WebSocket`](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket)
|
|
170
|
-
|
|
171
|
-
---
|
|
172
|
-
|
|
173
|
-
- Encoding and decoding
|
|
174
|
-
- [`atob`](https://developer.mozilla.org/en-US/docs/Web/API/atob) [`btoa`](https://developer.mozilla.org/en-US/docs/Web/API/btoa) [`TextEncoder`](https://developer.mozilla.org/en-US/docs/Web/API/TextEncoder) [`TextDecoder`](https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder)
|
|
175
|
-
|
|
176
|
-
---
|
|
177
|
-
|
|
178
|
-
- Timeouts
|
|
179
|
-
- [`setTimeout`](https://developer.mozilla.org/en-US/docs/Web/API/setTimeout) [`clearTimeout`](https://developer.mozilla.org/en-US/docs/Web/API/clearTimeout)
|
|
180
|
-
|
|
181
|
-
---
|
|
182
|
-
|
|
183
|
-
- Intervals
|
|
184
|
-
- [`setInterval`](https://developer.mozilla.org/en-US/docs/Web/API/setInterval)[`clearInterval`](https://developer.mozilla.org/en-US/docs/Web/API/clearInterval)
|
|
185
|
-
|
|
186
|
-
---
|
|
187
|
-
|
|
188
|
-
- Crypto
|
|
189
|
-
- [`crypto`](https://developer.mozilla.org/en-US/docs/Web/API/Crypto) [`SubtleCrypto`](https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto)
|
|
190
|
-
[`CryptoKey`](https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey)
|
|
191
|
-
|
|
192
|
-
---
|
|
193
|
-
|
|
194
|
-
- Debugging
|
|
195
|
-
|
|
196
|
-
- [`console`](https://developer.mozilla.org/en-US/docs/Web/API/console) [`performance`](https://developer.mozilla.org/en-US/docs/Web/API/Performance)
|
|
197
|
-
|
|
198
|
-
---
|
|
199
|
-
|
|
200
|
-
- Microtasks
|
|
201
|
-
- [`queueMicrotask`](https://developer.mozilla.org/en-US/docs/Web/API/queueMicrotask)
|
|
202
|
-
|
|
203
|
-
---
|
|
204
|
-
|
|
205
|
-
- Errors
|
|
206
|
-
- [`reportError`](https://developer.mozilla.org/en-US/docs/Web/API/reportError)
|
|
207
|
-
|
|
208
|
-
---
|
|
209
|
-
|
|
210
|
-
- User interaction
|
|
211
|
-
- [`alert`](https://developer.mozilla.org/en-US/docs/Web/API/Window/alert) [`confirm`](https://developer.mozilla.org/en-US/docs/Web/API/Window/confirm) [`prompt`](https://developer.mozilla.org/en-US/docs/Web/API/Window/prompt) (intended for interactive CLIs)
|
|
212
|
-
|
|
213
|
-
<!-- - Blocking. Prints the alert message to terminal and awaits `[ENTER]` before proceeding. -->
|
|
214
|
-
<!-- - Blocking. Prints confirmation message and awaits `[y/N]` input from user. Returns `true` if user entered `y` or `Y`, `false` otherwise.
|
|
215
|
-
- Blocking. Prints prompt message and awaits user input. Returns the user input as a string. -->
|
|
216
|
-
|
|
217
|
-
---
|
|
218
|
-
|
|
219
|
-
- Realms
|
|
220
|
-
- [`ShadowRealm`](https://github.com/tc39/proposal-shadowrealm)
|
|
221
|
-
|
|
222
|
-
---
|
|
223
|
-
|
|
224
|
-
- Events
|
|
225
|
-
- [`EventTarget`](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget)
|
|
226
|
-
[`Event`](https://developer.mozilla.org/en-US/docs/Web/API/Event) [`ErrorEvent`](https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent) [`CloseEvent`](https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent) [`MessageEvent`](https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent)
|
|
227
|
-
|
|
228
|
-
---
|
|
229
|
-
|
|
230
|
-
{% /table %}
|
|
231
|
-
|
|
232
|
-
## Bun APIs
|
|
233
|
-
|
|
234
|
-
Bun exposes a set of Bun-specific APIs on the `Bun` global object and through a number of built-in modules. These APIs represent the canonical "Bun-native" way to perform some common development tasks. They are all heavily optimized for performance. Click the link in the left column to view the associated documentation.
|
|
235
|
-
|
|
236
|
-
{% table %}
|
|
237
|
-
|
|
238
|
-
- Topic
|
|
239
|
-
- APIs
|
|
240
|
-
|
|
241
|
-
---
|
|
242
|
-
|
|
243
|
-
- [HTTP](https://bun.com/docs/api/http)
|
|
244
|
-
- `Bun.serve`
|
|
245
|
-
|
|
246
|
-
---
|
|
247
|
-
|
|
248
|
-
- [File I/O](https://bun.com/docs/api/file-io)
|
|
249
|
-
- `Bun.file` `Bun.write`
|
|
250
|
-
|
|
251
|
-
---
|
|
252
|
-
|
|
253
|
-
- [Processes](https://bun.com/docs/api/spawn)
|
|
254
|
-
- `Bun.spawn` `Bun.spawnSync`
|
|
255
|
-
|
|
256
|
-
---
|
|
257
|
-
|
|
258
|
-
- [TCP](https://bun.com/docs/api/tcp)
|
|
259
|
-
- `Bun.listen` `Bun.connect`
|
|
260
|
-
|
|
261
|
-
---
|
|
262
|
-
|
|
263
|
-
- [Transpiler](https://bun.com/docs/api/transpiler)
|
|
264
|
-
- `Bun.Transpiler`
|
|
265
|
-
|
|
266
|
-
---
|
|
267
|
-
|
|
268
|
-
- [Routing](https://bun.com/docs/api/file-system-router)
|
|
269
|
-
- `Bun.FileSystemRouter`
|
|
270
|
-
|
|
271
|
-
---
|
|
272
|
-
|
|
273
|
-
- [HTMLRewriter](https://bun.com/docs/api/html-rewriter)
|
|
274
|
-
- `HTMLRewriter`
|
|
275
|
-
|
|
276
|
-
---
|
|
277
|
-
|
|
278
|
-
- [Utils](https://bun.com/docs/api/utils)
|
|
279
|
-
- `Bun.peek` `Bun.which`
|
|
280
|
-
|
|
281
|
-
---
|
|
282
|
-
|
|
283
|
-
- [SQLite](https://bun.com/docs/api/sqlite)
|
|
284
|
-
- `bun:sqlite`
|
|
285
|
-
|
|
286
|
-
---
|
|
287
|
-
|
|
288
|
-
- [FFI](https://bun.com/docs/api/ffi)
|
|
289
|
-
- `bun:ffi`
|
|
290
|
-
|
|
291
|
-
---
|
|
292
|
-
|
|
293
|
-
- [DNS](https://bun.com/docs/api/dns)
|
|
294
|
-
- `bun:dns`
|
|
295
|
-
|
|
296
|
-
---
|
|
297
|
-
|
|
298
|
-
- [Testing](https://bun.com/docs/api/test)
|
|
299
|
-
- `bun:test`
|
|
300
|
-
|
|
301
|
-
---
|
|
302
|
-
|
|
303
|
-
- [Node-API](https://bun.com/docs/api/node-api)
|
|
304
|
-
- `Node-API`
|
|
305
|
-
|
|
306
|
-
---
|
|
307
|
-
|
|
308
|
-
{% /table %}
|
|
309
|
-
|
|
310
|
-
## Plugins
|
|
311
|
-
|
|
312
|
-
Support for additional file types can be implemented with plugins. Refer to [Runtime > Plugins](https://bun.com/docs/bundler/plugins) for full documentation.
|
package/docs/runtime/jsx.md
DELETED
|
@@ -1,385 +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
|
-
## Configuration
|
|
16
|
-
|
|
17
|
-
Bun reads your `tsconfig.json` or `jsconfig.json` configuration files to determines how to perform the JSX transform internally. To avoid using either of these, the following options can also be defined in [`bunfig.toml`](https://bun.com/docs/runtime/bunfig).
|
|
18
|
-
|
|
19
|
-
The following compiler options are respected.
|
|
20
|
-
|
|
21
|
-
### [`jsx`](https://www.typescriptlang.org/tsconfig#jsx)
|
|
22
|
-
|
|
23
|
-
How JSX constructs are transformed into vanilla JavaScript internally. The table below lists the possible values of `jsx`, along with their transpilation of the following simple JSX component:
|
|
24
|
-
|
|
25
|
-
```tsx
|
|
26
|
-
<Box width={5}>Hello</Box>
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
{% table %}
|
|
30
|
-
|
|
31
|
-
- Compiler options
|
|
32
|
-
- Transpiled output
|
|
33
|
-
|
|
34
|
-
---
|
|
35
|
-
|
|
36
|
-
- ```json
|
|
37
|
-
{
|
|
38
|
-
"jsx": "react"
|
|
39
|
-
}
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
- ```tsx
|
|
43
|
-
import { createElement } from "react";
|
|
44
|
-
createElement("Box", { width: 5 }, "Hello");
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
---
|
|
48
|
-
|
|
49
|
-
- ```json
|
|
50
|
-
{
|
|
51
|
-
"jsx": "react-jsx"
|
|
52
|
-
}
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
- ```tsx
|
|
56
|
-
import { jsx } from "react/jsx-runtime";
|
|
57
|
-
jsx("Box", { width: 5 }, "Hello");
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
---
|
|
61
|
-
|
|
62
|
-
- ```json
|
|
63
|
-
{
|
|
64
|
-
"jsx": "react-jsxdev"
|
|
65
|
-
}
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
- ```tsx
|
|
69
|
-
import { jsxDEV } from "react/jsx-dev-runtime";
|
|
70
|
-
jsxDEV(
|
|
71
|
-
"Box",
|
|
72
|
-
{ width: 5, children: "Hello" },
|
|
73
|
-
undefined,
|
|
74
|
-
false,
|
|
75
|
-
undefined,
|
|
76
|
-
this,
|
|
77
|
-
);
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
The `jsxDEV` variable name is a convention used by React. The `DEV` suffix is a visible way to indicate that the code is intended for use in development. The development version of React is slower and includes additional validity checks & debugging tools.
|
|
81
|
-
|
|
82
|
-
---
|
|
83
|
-
|
|
84
|
-
- ```json
|
|
85
|
-
{
|
|
86
|
-
"jsx": "preserve"
|
|
87
|
-
}
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
- ```tsx
|
|
91
|
-
// JSX is not transpiled
|
|
92
|
-
// "preserve" is not supported by Bun currently
|
|
93
|
-
<Box width={5}>Hello</Box>
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
{% /table %}
|
|
97
|
-
|
|
98
|
-
<!-- {% table %}
|
|
99
|
-
|
|
100
|
-
- `react`
|
|
101
|
-
- `React.createElement("Box", {width: 5}, "Hello")`
|
|
102
|
-
|
|
103
|
-
---
|
|
104
|
-
|
|
105
|
-
- `react-jsx`
|
|
106
|
-
- `jsx("Box", {width: 5}, "Hello")`
|
|
107
|
-
|
|
108
|
-
---
|
|
109
|
-
|
|
110
|
-
- `react-jsxdev`
|
|
111
|
-
- `jsxDEV("Box", {width: 5}, "Hello", void 0, false)`
|
|
112
|
-
|
|
113
|
-
---
|
|
114
|
-
|
|
115
|
-
- `preserve`
|
|
116
|
-
- `<Box width={5}>Hello</Box>` Left as-is; not yet supported by Bun.
|
|
117
|
-
|
|
118
|
-
{% /table %} -->
|
|
119
|
-
|
|
120
|
-
### [`jsxFactory`](https://www.typescriptlang.org/tsconfig#jsxFactory)
|
|
121
|
-
|
|
122
|
-
{% callout %}
|
|
123
|
-
**Note** — Only applicable when `jsx` is `react`.
|
|
124
|
-
{% /callout %}
|
|
125
|
-
|
|
126
|
-
The function name used to represent JSX constructs. Default value is `"createElement"`. This is useful for libraries like [Preact](https://preactjs.com/) that use a different function name (`"h"`).
|
|
127
|
-
|
|
128
|
-
{% table %}
|
|
129
|
-
|
|
130
|
-
- Compiler options
|
|
131
|
-
- Transpiled output
|
|
132
|
-
|
|
133
|
-
---
|
|
134
|
-
|
|
135
|
-
- ```json
|
|
136
|
-
{
|
|
137
|
-
"jsx": "react",
|
|
138
|
-
"jsxFactory": "h"
|
|
139
|
-
}
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
- ```tsx
|
|
143
|
-
import { h } from "react";
|
|
144
|
-
h("Box", { width: 5 }, "Hello");
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
{% /table %}
|
|
148
|
-
|
|
149
|
-
### [`jsxFragmentFactory`](https://www.typescriptlang.org/tsconfig#jsxFragmentFactory)
|
|
150
|
-
|
|
151
|
-
{% callout %}
|
|
152
|
-
**Note** — Only applicable when `jsx` is `react`.
|
|
153
|
-
{% /callout %}
|
|
154
|
-
|
|
155
|
-
The function name used to represent [JSX fragments](https://react.dev/reference/react/Fragment) such as `<>Hello</>`; only applicable when `jsx` is `react`. Default value is `"Fragment"`.
|
|
156
|
-
|
|
157
|
-
{% table %}
|
|
158
|
-
|
|
159
|
-
- Compiler options
|
|
160
|
-
- Transpiled output
|
|
161
|
-
|
|
162
|
-
---
|
|
163
|
-
|
|
164
|
-
- ```json
|
|
165
|
-
{
|
|
166
|
-
"jsx": "react",
|
|
167
|
-
"jsxFactory": "myjsx",
|
|
168
|
-
"jsxFragmentFactory": "MyFragment"
|
|
169
|
-
}
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
- ```tsx
|
|
173
|
-
// input
|
|
174
|
-
<>Hello</>;
|
|
175
|
-
|
|
176
|
-
// output
|
|
177
|
-
import { myjsx, MyFragment } from "react";
|
|
178
|
-
myjsx(MyFragment, null, "Hello");
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
{% /table %}
|
|
182
|
-
|
|
183
|
-
### [`jsxImportSource`](https://www.typescriptlang.org/tsconfig#jsxImportSource)
|
|
184
|
-
|
|
185
|
-
{% callout %}
|
|
186
|
-
**Note** — Only applicable when `jsx` is `react-jsx` or `react-jsxdev`.
|
|
187
|
-
{% /callout %}
|
|
188
|
-
|
|
189
|
-
The module from which the component factory function (`createElement`, `jsx`, `jsxDEV`, etc) will be imported. Default value is `"react"`. This will typically be necessary when using a component library like Preact.
|
|
190
|
-
|
|
191
|
-
{% table %}
|
|
192
|
-
|
|
193
|
-
- Compiler options
|
|
194
|
-
- Transpiled output
|
|
195
|
-
|
|
196
|
-
---
|
|
197
|
-
|
|
198
|
-
- ```jsonc
|
|
199
|
-
{
|
|
200
|
-
"jsx": "react",
|
|
201
|
-
// jsxImportSource is not defined
|
|
202
|
-
// default to "react"
|
|
203
|
-
}
|
|
204
|
-
```
|
|
205
|
-
|
|
206
|
-
- ```tsx
|
|
207
|
-
import { jsx } from "react/jsx-runtime";
|
|
208
|
-
jsx("Box", { width: 5, children: "Hello" });
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
---
|
|
212
|
-
|
|
213
|
-
- ```jsonc
|
|
214
|
-
{
|
|
215
|
-
"jsx": "react-jsx",
|
|
216
|
-
"jsxImportSource": "preact",
|
|
217
|
-
}
|
|
218
|
-
```
|
|
219
|
-
|
|
220
|
-
- ```tsx
|
|
221
|
-
import { jsx } from "preact/jsx-runtime";
|
|
222
|
-
jsx("Box", { width: 5, children: "Hello" });
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
---
|
|
226
|
-
|
|
227
|
-
- ```jsonc
|
|
228
|
-
{
|
|
229
|
-
"jsx": "react-jsxdev",
|
|
230
|
-
"jsxImportSource": "preact",
|
|
231
|
-
}
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
- ```tsx
|
|
235
|
-
// /jsx-runtime is automatically appended
|
|
236
|
-
import { jsxDEV } from "preact/jsx-dev-runtime";
|
|
237
|
-
jsxDEV(
|
|
238
|
-
"Box",
|
|
239
|
-
{ width: 5, children: "Hello" },
|
|
240
|
-
undefined,
|
|
241
|
-
false,
|
|
242
|
-
undefined,
|
|
243
|
-
this,
|
|
244
|
-
);
|
|
245
|
-
```
|
|
246
|
-
|
|
247
|
-
{% /table %}
|
|
248
|
-
|
|
249
|
-
### `jsxSideEffects`
|
|
250
|
-
|
|
251
|
-
By default, Bun marks JSX expressions as `/* @__PURE__ */` so they can be removed during bundling if they are unused (known as "dead code elimination" or "tree shaking"). Set `jsxSideEffects` to `true` to prevent this behavior.
|
|
252
|
-
|
|
253
|
-
{% table %}
|
|
254
|
-
|
|
255
|
-
- Compiler options
|
|
256
|
-
- Transpiled output
|
|
257
|
-
|
|
258
|
-
---
|
|
259
|
-
|
|
260
|
-
- ```jsonc
|
|
261
|
-
{
|
|
262
|
-
"jsx": "react",
|
|
263
|
-
// jsxSideEffects is false by default
|
|
264
|
-
}
|
|
265
|
-
```
|
|
266
|
-
|
|
267
|
-
- ```tsx
|
|
268
|
-
// JSX expressions are marked as pure
|
|
269
|
-
/* @__PURE__ */ React.createElement("div", null, "Hello");
|
|
270
|
-
```
|
|
271
|
-
|
|
272
|
-
---
|
|
273
|
-
|
|
274
|
-
- ```jsonc
|
|
275
|
-
{
|
|
276
|
-
"jsx": "react",
|
|
277
|
-
"jsxSideEffects": true,
|
|
278
|
-
}
|
|
279
|
-
```
|
|
280
|
-
|
|
281
|
-
- ```tsx
|
|
282
|
-
// JSX expressions are not marked as pure
|
|
283
|
-
React.createElement("div", null, "Hello");
|
|
284
|
-
```
|
|
285
|
-
|
|
286
|
-
---
|
|
287
|
-
|
|
288
|
-
- ```jsonc
|
|
289
|
-
{
|
|
290
|
-
"jsx": "react-jsx",
|
|
291
|
-
"jsxSideEffects": true,
|
|
292
|
-
}
|
|
293
|
-
```
|
|
294
|
-
|
|
295
|
-
- ```tsx
|
|
296
|
-
// Automatic runtime also respects jsxSideEffects
|
|
297
|
-
jsx("div", { children: "Hello" });
|
|
298
|
-
```
|
|
299
|
-
|
|
300
|
-
{% /table %}
|
|
301
|
-
|
|
302
|
-
This option is also available as a CLI flag:
|
|
303
|
-
|
|
304
|
-
```bash
|
|
305
|
-
$ bun build --jsx-side-effects
|
|
306
|
-
```
|
|
307
|
-
|
|
308
|
-
### JSX pragma
|
|
309
|
-
|
|
310
|
-
All of these values can be set on a per-file basis using _pragmas_. A pragma is a special comment that sets a compiler option in a particular file.
|
|
311
|
-
|
|
312
|
-
{% table %}
|
|
313
|
-
|
|
314
|
-
- Pragma
|
|
315
|
-
- Equivalent config
|
|
316
|
-
|
|
317
|
-
---
|
|
318
|
-
|
|
319
|
-
- ```ts
|
|
320
|
-
// @jsx h
|
|
321
|
-
```
|
|
322
|
-
|
|
323
|
-
- ```jsonc
|
|
324
|
-
{
|
|
325
|
-
"jsxFactory": "h",
|
|
326
|
-
}
|
|
327
|
-
```
|
|
328
|
-
|
|
329
|
-
---
|
|
330
|
-
|
|
331
|
-
- ```ts
|
|
332
|
-
// @jsxFrag MyFragment
|
|
333
|
-
```
|
|
334
|
-
- ```jsonc
|
|
335
|
-
{
|
|
336
|
-
"jsxFragmentFactory": "MyFragment",
|
|
337
|
-
}
|
|
338
|
-
```
|
|
339
|
-
|
|
340
|
-
---
|
|
341
|
-
|
|
342
|
-
- ```ts
|
|
343
|
-
// @jsxImportSource preact
|
|
344
|
-
```
|
|
345
|
-
- ```jsonc
|
|
346
|
-
{
|
|
347
|
-
"jsxImportSource": "preact",
|
|
348
|
-
}
|
|
349
|
-
```
|
|
350
|
-
|
|
351
|
-
{% /table %}
|
|
352
|
-
|
|
353
|
-
## Logging
|
|
354
|
-
|
|
355
|
-
Bun implements special logging for JSX to make debugging easier. Given the following file:
|
|
356
|
-
|
|
357
|
-
```tsx#index.tsx
|
|
358
|
-
import { Stack, UserCard } from "./components";
|
|
359
|
-
|
|
360
|
-
console.log(
|
|
361
|
-
<Stack>
|
|
362
|
-
<UserCard name="Dom" bio="Street racer and Corona lover" />
|
|
363
|
-
<UserCard name="Jakob" bio="Super spy and Dom's secret brother" />
|
|
364
|
-
</Stack>
|
|
365
|
-
);
|
|
366
|
-
```
|
|
367
|
-
|
|
368
|
-
Bun will pretty-print the component tree when logged:
|
|
369
|
-
|
|
370
|
-
{% image src="https://github.com/oven-sh/bun/assets/3084745/d29db51d-6837-44e2-b8be-84fc1b9e9d97" / %}
|
|
371
|
-
|
|
372
|
-
## Prop punning
|
|
373
|
-
|
|
374
|
-
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.
|
|
375
|
-
|
|
376
|
-
```tsx
|
|
377
|
-
function Div(props: {className: string;}) {
|
|
378
|
-
const {className} = props;
|
|
379
|
-
|
|
380
|
-
// without punning
|
|
381
|
-
return <div className={className} />;
|
|
382
|
-
// with punning
|
|
383
|
-
return <div {className} />;
|
|
384
|
-
}
|
|
385
|
-
```
|