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,9 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
---
|
|
2
|
+
title: FFI
|
|
3
|
+
description: Use Bun's FFI module to efficiently call native libraries from JavaScript
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<Warning>
|
|
7
|
+
`bun:ffi` is **experimental**, with known bugs and limitations, and should not be relied on in production. The most
|
|
8
|
+
stable way to interact with native code from Bun is to write a [Node-API module](/runtime/node-api).
|
|
9
|
+
</Warning>
|
|
4
10
|
|
|
5
11
|
Use the built-in `bun:ffi` module to efficiently call native libraries from JavaScript. It works with languages that support the C ABI (Zig, Rust, C/C++, C#, Nim, Kotlin, etc).
|
|
6
12
|
|
|
13
|
+
---
|
|
14
|
+
|
|
7
15
|
## dlopen usage (`bun:ffi`)
|
|
8
16
|
|
|
9
17
|
To print the version number of `sqlite3`:
|
|
@@ -33,20 +41,23 @@ const {
|
|
|
33
41
|
console.log(`SQLite 3 version: ${sqlite3_libversion()}`);
|
|
34
42
|
```
|
|
35
43
|
|
|
44
|
+
---
|
|
45
|
+
|
|
36
46
|
## Performance
|
|
37
47
|
|
|
38
48
|
According to [our benchmark](https://github.com/oven-sh/bun/tree/main/bench/ffi), `bun:ffi` is roughly 2-6x faster than Node.js FFI via `Node-API`.
|
|
39
49
|
|
|
40
|
-
|
|
50
|
+
<Image src="/images/ffi.png" height="400" />
|
|
41
51
|
|
|
42
52
|
Bun generates & just-in-time compiles C bindings that efficiently convert values between JavaScript types and native types. To compile C, Bun embeds [TinyCC](https://github.com/TinyCC/tinycc), a small and fast C compiler.
|
|
43
53
|
|
|
54
|
+
---
|
|
55
|
+
|
|
44
56
|
## Usage
|
|
45
57
|
|
|
46
58
|
### Zig
|
|
47
59
|
|
|
48
|
-
```zig
|
|
49
|
-
// add.zig
|
|
60
|
+
```zig add.zig icon="file-code"
|
|
50
61
|
pub export fn add(a: i32, b: i32) i32 {
|
|
51
62
|
return a + b;
|
|
52
63
|
}
|
|
@@ -54,8 +65,8 @@ pub export fn add(a: i32, b: i32) i32 {
|
|
|
54
65
|
|
|
55
66
|
To compile:
|
|
56
67
|
|
|
57
|
-
```bash
|
|
58
|
-
|
|
68
|
+
```bash terminal icon="terminal"
|
|
69
|
+
zig build-lib add.zig -dynamic -OReleaseFast
|
|
59
70
|
```
|
|
60
71
|
|
|
61
72
|
Pass a path to the shared library and a map of symbols to import into `dlopen`:
|
|
@@ -89,7 +100,7 @@ pub extern "C" fn add(a: i32, b: i32) -> i32 {
|
|
|
89
100
|
To compile:
|
|
90
101
|
|
|
91
102
|
```bash
|
|
92
|
-
|
|
103
|
+
rustc --crate-type cdylib add.rs
|
|
93
104
|
```
|
|
94
105
|
|
|
95
106
|
### C++
|
|
@@ -105,9 +116,11 @@ extern "C" int32_t add(int32_t a, int32_t b) {
|
|
|
105
116
|
To compile:
|
|
106
117
|
|
|
107
118
|
```bash
|
|
108
|
-
|
|
119
|
+
zig build-lib add.cpp -dynamic -lc -lc++
|
|
109
120
|
```
|
|
110
121
|
|
|
122
|
+
---
|
|
123
|
+
|
|
111
124
|
## FFI types
|
|
112
125
|
|
|
113
126
|
The following `FFIType` values are supported.
|
|
@@ -137,11 +150,13 @@ The following `FFIType` values are supported.
|
|
|
137
150
|
|
|
138
151
|
Note: `buffer` arguments must be a `TypedArray` or `DataView`.
|
|
139
152
|
|
|
153
|
+
---
|
|
154
|
+
|
|
140
155
|
## Strings
|
|
141
156
|
|
|
142
157
|
JavaScript strings and C-like strings are different, and that complicates using strings with native libraries.
|
|
143
158
|
|
|
144
|
-
|
|
159
|
+
<Accordion title="How are JavaScript strings and C strings different?">
|
|
145
160
|
JavaScript strings:
|
|
146
161
|
|
|
147
162
|
- UTF16 (2 bytes per letter) or potentially latin1, depending on the JavaScript engine & what characters are used
|
|
@@ -154,7 +169,7 @@ C strings:
|
|
|
154
169
|
- The length is not stored. Instead, the string is null-terminated which means the length is the index of the first `\0` it finds
|
|
155
170
|
- Mutable
|
|
156
171
|
|
|
157
|
-
|
|
172
|
+
</Accordion>
|
|
158
173
|
|
|
159
174
|
To solve this, `bun:ffi` exports `CString` which extends JavaScript's built-in `String` to support null-terminated strings and add a few extras:
|
|
160
175
|
|
|
@@ -201,13 +216,11 @@ console.log(myString);
|
|
|
201
216
|
|
|
202
217
|
When used in `returns`, `FFIType.cstring` coerces the pointer to a JavaScript `string`. When used in `args`, `FFIType.cstring` is identical to `ptr`.
|
|
203
218
|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
{% callout %}
|
|
219
|
+
---
|
|
207
220
|
|
|
208
|
-
|
|
221
|
+
## Function pointers
|
|
209
222
|
|
|
210
|
-
|
|
223
|
+
<Note>Async functions are not yet supported</Note>
|
|
211
224
|
|
|
212
225
|
To call a function pointer from JavaScript, use `CFunction`. This is useful if using Node-API (napi) with Bun, and you've already loaded some symbols.
|
|
213
226
|
|
|
@@ -255,13 +268,11 @@ const lib = linkSymbols({
|
|
|
255
268
|
},
|
|
256
269
|
});
|
|
257
270
|
|
|
258
|
-
const [major, minor, patch] = [
|
|
259
|
-
lib.symbols.getMajor(),
|
|
260
|
-
lib.symbols.getMinor(),
|
|
261
|
-
lib.symbols.getPatch(),
|
|
262
|
-
];
|
|
271
|
+
const [major, minor, patch] = [lib.symbols.getMajor(), lib.symbols.getMinor(), lib.symbols.getPatch()];
|
|
263
272
|
```
|
|
264
273
|
|
|
274
|
+
---
|
|
275
|
+
|
|
265
276
|
## Callbacks
|
|
266
277
|
|
|
267
278
|
Use `JSCallback` to create JavaScript callback functions that can be passed to C/FFI functions. The C/FFI function can call into the JavaScript/TypeScript code. This is useful for asynchronous code or whenever you want to call into JavaScript code from C.
|
|
@@ -279,13 +290,10 @@ const {
|
|
|
279
290
|
},
|
|
280
291
|
});
|
|
281
292
|
|
|
282
|
-
const searchIterator = new JSCallback(
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
args: ["ptr", "usize"],
|
|
287
|
-
},
|
|
288
|
-
);
|
|
293
|
+
const searchIterator = new JSCallback((ptr, length) => /hello/.test(new CString(ptr, length)), {
|
|
294
|
+
returns: "bool",
|
|
295
|
+
args: ["ptr", "usize"],
|
|
296
|
+
});
|
|
289
297
|
|
|
290
298
|
const str = Buffer.from("wwutwutwutwutwutwutwutwutwutwutut\0", "utf8");
|
|
291
299
|
if (search(ptr(str), searchIterator)) {
|
|
@@ -305,21 +313,17 @@ When you're done with a JSCallback, you should call `close()` to free the memory
|
|
|
305
313
|
|
|
306
314
|
`JSCallback` has experimental support for thread-safe callbacks. This will be needed if you pass a callback function into a different thread from its instantiation context. You can enable it with the optional `threadsafe` parameter.
|
|
307
315
|
|
|
308
|
-
Currently, thread-safe callbacks work best when run from another thread that is running JavaScript code, i.e. a [`Worker`](/
|
|
316
|
+
Currently, thread-safe callbacks work best when run from another thread that is running JavaScript code, i.e. a [`Worker`](/runtime/workers). A future version of Bun will enable them to be called from any thread (such as new threads spawned by your native library that Bun is not aware of).
|
|
309
317
|
|
|
310
318
|
```ts
|
|
311
|
-
const searchIterator = new JSCallback(
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
threadsafe: true, // Optional. Defaults to `false`
|
|
317
|
-
},
|
|
318
|
-
);
|
|
319
|
+
const searchIterator = new JSCallback((ptr, length) => /hello/.test(new CString(ptr, length)), {
|
|
320
|
+
returns: "bool",
|
|
321
|
+
args: ["ptr", "usize"],
|
|
322
|
+
threadsafe: true, // Optional. Defaults to `false`
|
|
323
|
+
});
|
|
319
324
|
```
|
|
320
325
|
|
|
321
|
-
|
|
322
|
-
|
|
326
|
+
<Note>
|
|
323
327
|
**⚡️ Performance tip** — For a slight performance boost, directly pass `JSCallback.prototype.ptr` instead of the `JSCallback` object:
|
|
324
328
|
|
|
325
329
|
```ts
|
|
@@ -340,17 +344,21 @@ setOnResolve(onResolve.ptr);
|
|
|
340
344
|
setOnResolve(onResolve);
|
|
341
345
|
```
|
|
342
346
|
|
|
343
|
-
|
|
347
|
+
</Note>
|
|
348
|
+
|
|
349
|
+
---
|
|
344
350
|
|
|
345
351
|
## Pointers
|
|
346
352
|
|
|
347
353
|
Bun represents [pointers](<https://en.wikipedia.org/wiki/Pointer_(computer_programming)>) as a `number` in JavaScript.
|
|
348
354
|
|
|
349
|
-
|
|
355
|
+
<Accordion title="How does a 64 bit pointer fit in a JavaScript number?">
|
|
356
|
+
|
|
350
357
|
64-bit processors support up to [52 bits of addressable space](https://en.wikipedia.org/wiki/64-bit_computing#Limits_of_processors). [JavaScript numbers](https://en.wikipedia.org/wiki/Double-precision_floating-point_format#IEEE_754_double-precision_binary_floating-point_format:_binary64) support 53 bits of usable space, so that leaves us with about 11 bits of extra space.
|
|
351
358
|
|
|
352
359
|
**Why not `BigInt`?** `BigInt` is slower. JavaScript engines allocate a separate `BigInt` which means they can't fit into a regular JavaScript value. If you pass a `BigInt` to a function, it will be converted to a `number`
|
|
353
|
-
|
|
360
|
+
|
|
361
|
+
</Accordion>
|
|
354
362
|
|
|
355
363
|
To convert from a `TypedArray` to a pointer:
|
|
356
364
|
|
|
@@ -503,7 +511,7 @@ const out = encode_png(
|
|
|
503
511
|
|
|
504
512
|
The [auto-generated wrapper](https://github.com/oven-sh/bun/blob/6a65631cbdcae75bfa1e64323a6ad613a922cd1a/src/bun.js/ffi.exports.js#L180-L182) converts the pointer to a `TypedArray`.
|
|
505
513
|
|
|
506
|
-
|
|
514
|
+
<Accordion title="Hardmode">
|
|
507
515
|
|
|
508
516
|
If you don't want the automatic conversion or you want a pointer to a specific byte offset within the `TypedArray`, you can also directly get the pointer to the `TypedArray`:
|
|
509
517
|
|
|
@@ -535,7 +543,7 @@ const out = encode_png(
|
|
|
535
543
|
);
|
|
536
544
|
```
|
|
537
545
|
|
|
538
|
-
|
|
546
|
+
</Accordion>
|
|
539
547
|
|
|
540
548
|
### Reading pointers
|
|
541
549
|
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
|
|
1
|
+
---
|
|
2
|
+
title: File I/O
|
|
3
|
+
description: Bun provides a set of optimized APIs for reading and writing files.
|
|
4
|
+
---
|
|
2
5
|
|
|
3
|
-
|
|
6
|
+
<Note>
|
|
4
7
|
|
|
5
|
-
|
|
8
|
+
The `Bun.file` and `Bun.write` APIs documented on this page are heavily optimized and represent the recommended way to perform file-system tasks using Bun. For operations that are not yet available with `Bun.file`, such as `mkdir` or `readdir`, you can use Bun's [nearly complete](/runtime/nodejs-compat#node-fs) implementation of the [`node:fs`](https://nodejs.org/api/fs.html) module.
|
|
6
9
|
|
|
7
|
-
|
|
10
|
+
</Note>
|
|
8
11
|
|
|
9
|
-
|
|
12
|
+
---
|
|
10
13
|
|
|
11
14
|
## Reading files (`Bun.file()`)
|
|
12
15
|
|
|
@@ -26,6 +29,7 @@ The reference conforms to the [`Blob`](https://developer.mozilla.org/en-US/docs/
|
|
|
26
29
|
const foo = Bun.file("foo.txt");
|
|
27
30
|
|
|
28
31
|
await foo.text(); // contents as a string
|
|
32
|
+
await foo.json(); // contents as a JSON object
|
|
29
33
|
await foo.stream(); // contents as ReadableStream
|
|
30
34
|
await foo.arrayBuffer(); // contents as ArrayBuffer
|
|
31
35
|
await foo.bytes(); // contents as Uint8Array
|
|
@@ -70,6 +74,8 @@ You can delete a file by calling the `.delete()` function.
|
|
|
70
74
|
await Bun.file("logs.json").delete();
|
|
71
75
|
```
|
|
72
76
|
|
|
77
|
+
---
|
|
78
|
+
|
|
73
79
|
## Writing files (`Bun.write()`)
|
|
74
80
|
|
|
75
81
|
`Bun.write(destination, data): Promise<number>`
|
|
@@ -92,88 +98,22 @@ The second argument is the data to be written. It can be any of the following:
|
|
|
92
98
|
|
|
93
99
|
All possible permutations are handled using the fastest available system calls on the current platform.
|
|
94
100
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
{% table %}
|
|
98
|
-
|
|
99
|
-
- Output
|
|
100
|
-
- Input
|
|
101
|
-
- System call
|
|
102
|
-
- Platform
|
|
103
|
-
|
|
104
|
-
---
|
|
105
|
-
|
|
106
|
-
- file
|
|
107
|
-
- file
|
|
108
|
-
- copy_file_range
|
|
109
|
-
- Linux
|
|
110
|
-
|
|
111
|
-
---
|
|
112
|
-
|
|
113
|
-
- file
|
|
114
|
-
- pipe
|
|
115
|
-
- sendfile
|
|
116
|
-
- Linux
|
|
117
|
-
|
|
118
|
-
---
|
|
119
|
-
|
|
120
|
-
- pipe
|
|
121
|
-
- pipe
|
|
122
|
-
- splice
|
|
123
|
-
- Linux
|
|
124
|
-
|
|
125
|
-
---
|
|
126
|
-
|
|
127
|
-
- terminal
|
|
128
|
-
- file
|
|
129
|
-
- sendfile
|
|
130
|
-
- Linux
|
|
131
|
-
|
|
132
|
-
---
|
|
133
|
-
|
|
134
|
-
- terminal
|
|
135
|
-
- terminal
|
|
136
|
-
- sendfile
|
|
137
|
-
- Linux
|
|
101
|
+
<Accordion title="See syscalls">
|
|
138
102
|
|
|
139
|
-
|
|
103
|
+
| Output | Input | System call | Platform |
|
|
104
|
+
| -------------------- | -------------- | ----------------------------- | -------- |
|
|
105
|
+
| file | file | copy_file_range | Linux |
|
|
106
|
+
| file | pipe | sendfile | Linux |
|
|
107
|
+
| pipe | pipe | splice | Linux |
|
|
108
|
+
| terminal | file | sendfile | Linux |
|
|
109
|
+
| terminal | terminal | sendfile | Linux |
|
|
110
|
+
| socket | file or pipe | sendfile (if http, not https) | Linux |
|
|
111
|
+
| file (doesn't exist) | file (path) | clonefile | macOS |
|
|
112
|
+
| file (exists) | file | fcopyfile | macOS |
|
|
113
|
+
| file | Blob or string | write | macOS |
|
|
114
|
+
| file | Blob or string | write | Linux |
|
|
140
115
|
|
|
141
|
-
|
|
142
|
-
- file or pipe
|
|
143
|
-
- sendfile (if http, not https)
|
|
144
|
-
- Linux
|
|
145
|
-
|
|
146
|
-
---
|
|
147
|
-
|
|
148
|
-
- file (doesn't exist)
|
|
149
|
-
- file (path)
|
|
150
|
-
- clonefile
|
|
151
|
-
- macOS
|
|
152
|
-
|
|
153
|
-
---
|
|
154
|
-
|
|
155
|
-
- file (exists)
|
|
156
|
-
- file
|
|
157
|
-
- fcopyfile
|
|
158
|
-
- macOS
|
|
159
|
-
|
|
160
|
-
---
|
|
161
|
-
|
|
162
|
-
- file
|
|
163
|
-
- Blob or string
|
|
164
|
-
- write
|
|
165
|
-
- macOS
|
|
166
|
-
|
|
167
|
-
---
|
|
168
|
-
|
|
169
|
-
- file
|
|
170
|
-
- Blob or string
|
|
171
|
-
- write
|
|
172
|
-
- Linux
|
|
173
|
-
|
|
174
|
-
{% /table %}
|
|
175
|
-
|
|
176
|
-
{% /details %}
|
|
116
|
+
</Accordion>
|
|
177
117
|
|
|
178
118
|
To write a string to disk:
|
|
179
119
|
|
|
@@ -184,7 +124,7 @@ await Bun.write("output.txt", data);
|
|
|
184
124
|
|
|
185
125
|
To copy a file to another location on disk:
|
|
186
126
|
|
|
187
|
-
```
|
|
127
|
+
```ts
|
|
188
128
|
const input = Bun.file("input.txt");
|
|
189
129
|
const output = Bun.file("output.txt"); // doesn't exist yet!
|
|
190
130
|
await Bun.write(output, input);
|
|
@@ -212,6 +152,8 @@ const response = await fetch("https://bun.com");
|
|
|
212
152
|
await Bun.write("index.html", response);
|
|
213
153
|
```
|
|
214
154
|
|
|
155
|
+
---
|
|
156
|
+
|
|
215
157
|
## Incremental writing with `FileSink`
|
|
216
158
|
|
|
217
159
|
Bun provides a native incremental file writing API called `FileSink`. To retrieve a `FileSink` instance from a `BunFile`:
|
|
@@ -259,6 +201,8 @@ writer.unref();
|
|
|
259
201
|
writer.ref();
|
|
260
202
|
```
|
|
261
203
|
|
|
204
|
+
---
|
|
205
|
+
|
|
262
206
|
## Directories
|
|
263
207
|
|
|
264
208
|
Bun's implementation of `node:fs` is fast, and we haven't implemented a Bun-specific API for reading directories just yet. For now, you should use `node:fs` for working with directories in Bun.
|
|
@@ -295,13 +239,15 @@ import { mkdir } from "node:fs/promises";
|
|
|
295
239
|
await mkdir("path/to/dir", { recursive: true });
|
|
296
240
|
```
|
|
297
241
|
|
|
242
|
+
---
|
|
243
|
+
|
|
298
244
|
## Benchmarks
|
|
299
245
|
|
|
300
246
|
The following is a 3-line implementation of the Linux `cat` command.
|
|
301
247
|
|
|
302
|
-
```ts
|
|
248
|
+
```ts cat.ts icon="/icons/typescript.svg"
|
|
303
249
|
// Usage
|
|
304
|
-
//
|
|
250
|
+
// bun ./cat.ts ./path-to-file
|
|
305
251
|
|
|
306
252
|
import { resolve } from "path";
|
|
307
253
|
|
|
@@ -311,13 +257,15 @@ await Bun.write(Bun.stdout, Bun.file(path));
|
|
|
311
257
|
|
|
312
258
|
To run the file:
|
|
313
259
|
|
|
314
|
-
```bash
|
|
315
|
-
|
|
260
|
+
```bash terminal icon="terminal"
|
|
261
|
+
bun ./cat.ts ./path-to-file
|
|
316
262
|
```
|
|
317
263
|
|
|
318
264
|
It runs 2x faster than GNU `cat` for large files on Linux.
|
|
319
265
|
|
|
320
|
-
|
|
266
|
+
<Frame></Frame>
|
|
267
|
+
|
|
268
|
+
---
|
|
321
269
|
|
|
322
270
|
## Reference
|
|
323
271
|
|
|
@@ -331,13 +279,7 @@ interface Bun {
|
|
|
331
279
|
|
|
332
280
|
write(
|
|
333
281
|
destination: string | number | BunFile | URL,
|
|
334
|
-
input:
|
|
335
|
-
| string
|
|
336
|
-
| Blob
|
|
337
|
-
| ArrayBuffer
|
|
338
|
-
| SharedArrayBuffer
|
|
339
|
-
| TypedArray
|
|
340
|
-
| Response,
|
|
282
|
+
input: string | Blob | ArrayBuffer | SharedArrayBuffer | TypedArray | Response,
|
|
341
283
|
): Promise<number>;
|
|
342
284
|
}
|
|
343
285
|
|
|
@@ -354,9 +296,7 @@ interface BunFile {
|
|
|
354
296
|
}
|
|
355
297
|
|
|
356
298
|
export interface FileSink {
|
|
357
|
-
write(
|
|
358
|
-
chunk: string | ArrayBufferView | ArrayBuffer | SharedArrayBuffer,
|
|
359
|
-
): number;
|
|
299
|
+
write(chunk: string | ArrayBufferView | ArrayBuffer | SharedArrayBuffer): number;
|
|
360
300
|
flush(): number | Promise<number>;
|
|
361
301
|
end(error?: Error): number | Promise<number>;
|
|
362
302
|
start(options?: { highWaterMark?: number }): void;
|
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
---
|
|
2
|
+
title: File System Router
|
|
3
|
+
description: Bun provides a fast API for resolving routes against file-system paths
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
This API is primarily intended for library authors. At the moment only Next.js-style file-system routing is supported, but other styles may be added in the future.
|
|
2
7
|
|
|
3
8
|
## Next.js-style
|
|
4
9
|
|
|
@@ -16,13 +21,14 @@ pages
|
|
|
16
21
|
|
|
17
22
|
The `FileSystemRouter` can be used to resolve routes against this directory:
|
|
18
23
|
|
|
19
|
-
```ts
|
|
24
|
+
```ts router.ts
|
|
20
25
|
const router = new Bun.FileSystemRouter({
|
|
21
26
|
style: "nextjs",
|
|
22
27
|
dir: "./pages",
|
|
23
28
|
origin: "https://mydomain.com",
|
|
24
29
|
assetPrefix: "_next/static/"
|
|
25
30
|
});
|
|
31
|
+
|
|
26
32
|
router.match("/");
|
|
27
33
|
|
|
28
34
|
// =>
|