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,8 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "File Types"
|
|
3
|
+
description: "File types and loaders supported by Bun's bundler and runtime"
|
|
4
|
+
---
|
|
5
|
+
|
|
1
6
|
The Bun bundler implements a set of default loaders out of the box. As a rule of thumb, the bundler and the runtime both support the same set of file types out of the box.
|
|
2
7
|
|
|
3
|
-
`.js` `.cjs` `.mjs` `.mts` `.cts` `.ts` `.tsx` `.jsx` `.toml` `.json` `.
|
|
8
|
+
`.js` `.cjs` `.mjs` `.mts` `.cts` `.ts` `.tsx` `.jsx` `.toml` `.json` `.txt` `.wasm` `.node` `.html`
|
|
4
9
|
|
|
5
|
-
Bun uses the file extension to determine which built-in _loader_ should be used to parse the file. Every loader has a name, such as `js`, `tsx`, or `json`. These names are used when building [plugins](
|
|
10
|
+
Bun uses the file extension to determine which built-in _loader_ should be used to parse the file. Every loader has a name, such as `js`, `tsx`, or `json`. These names are used when building [plugins](/bundler/plugins) that extend Bun with custom loaders.
|
|
6
11
|
|
|
7
12
|
You can explicitly specify which loader to use using the 'loader' import attribute.
|
|
8
13
|
|
|
@@ -10,6 +15,8 @@ You can explicitly specify which loader to use using the 'loader' import attribu
|
|
|
10
15
|
import my_toml from "./my_file" with { loader: "toml" };
|
|
11
16
|
```
|
|
12
17
|
|
|
18
|
+
---
|
|
19
|
+
|
|
13
20
|
## Built-in loaders
|
|
14
21
|
|
|
15
22
|
### `js`
|
|
@@ -57,9 +64,9 @@ pkg.name;
|
|
|
57
64
|
|
|
58
65
|
If a `.json` file is passed as an entrypoint to the bundler, it will be converted to a `.js` module that `export default`s the parsed object.
|
|
59
66
|
|
|
60
|
-
|
|
67
|
+
<CodeGroup>
|
|
61
68
|
|
|
62
|
-
```json
|
|
69
|
+
```json Input
|
|
63
70
|
{
|
|
64
71
|
"name": "John Doe",
|
|
65
72
|
"age": 35,
|
|
@@ -67,15 +74,15 @@ If a `.json` file is passed as an entrypoint to the bundler, it will be converte
|
|
|
67
74
|
}
|
|
68
75
|
```
|
|
69
76
|
|
|
70
|
-
```
|
|
77
|
+
```ts Output
|
|
71
78
|
export default {
|
|
72
79
|
name: "John Doe",
|
|
73
80
|
age: 35,
|
|
74
|
-
email: "johndoe@example.com"
|
|
75
|
-
}
|
|
81
|
+
email: "johndoe@example.com",
|
|
82
|
+
};
|
|
76
83
|
```
|
|
77
84
|
|
|
78
|
-
|
|
85
|
+
</CodeGroup>
|
|
79
86
|
|
|
80
87
|
### `toml`
|
|
81
88
|
|
|
@@ -103,72 +110,23 @@ config.logLevel;
|
|
|
103
110
|
|
|
104
111
|
If a `.toml` file is passed as an entrypoint, it will be converted to a `.js` module that `export default`s the parsed object.
|
|
105
112
|
|
|
106
|
-
|
|
113
|
+
<CodeGroup>
|
|
107
114
|
|
|
108
|
-
```toml
|
|
115
|
+
```toml Input
|
|
109
116
|
name = "John Doe"
|
|
110
117
|
age = 35
|
|
111
118
|
email = "johndoe@example.com"
|
|
112
119
|
```
|
|
113
120
|
|
|
114
|
-
```
|
|
121
|
+
```ts Output
|
|
115
122
|
export default {
|
|
116
123
|
name: "John Doe",
|
|
117
124
|
age: 35,
|
|
118
|
-
email: "johndoe@example.com"
|
|
119
|
-
}
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
{% /codetabs %}
|
|
123
|
-
|
|
124
|
-
### `yaml`
|
|
125
|
-
|
|
126
|
-
**YAML loader**. Default for `.yaml` and `.yml`.
|
|
127
|
-
|
|
128
|
-
YAML files can be directly imported. Bun will parse them with its fast native YAML parser.
|
|
129
|
-
|
|
130
|
-
```ts
|
|
131
|
-
import config from "./config.yaml";
|
|
132
|
-
config.database.host; // => "localhost"
|
|
133
|
-
|
|
134
|
-
// via import attribute:
|
|
135
|
-
// import myCustomYAML from './my.config' with {type: "yaml"};
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
During bundling, the parsed YAML is inlined into the bundle as a JavaScript object.
|
|
139
|
-
|
|
140
|
-
```ts
|
|
141
|
-
var config = {
|
|
142
|
-
database: {
|
|
143
|
-
host: "localhost",
|
|
144
|
-
port: 5432,
|
|
145
|
-
},
|
|
146
|
-
// ...other fields
|
|
125
|
+
email: "johndoe@example.com",
|
|
147
126
|
};
|
|
148
|
-
config.database.host;
|
|
149
127
|
```
|
|
150
128
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
{% codetabs %}
|
|
154
|
-
|
|
155
|
-
```yaml#Input
|
|
156
|
-
name: John Doe
|
|
157
|
-
age: 35
|
|
158
|
-
email: johndoe@example.com
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
```js#Output
|
|
162
|
-
export default {
|
|
163
|
-
name: "John Doe",
|
|
164
|
-
age: 35,
|
|
165
|
-
email: "johndoe@example.com"
|
|
166
|
-
}
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
{% /codetabs %}
|
|
170
|
-
|
|
171
|
-
For more details on YAML support including the runtime API `Bun.YAML.parse()`, see the [YAML API documentation](/docs/api/yaml).
|
|
129
|
+
</CodeGroup>
|
|
172
130
|
|
|
173
131
|
### `text`
|
|
174
132
|
|
|
@@ -195,17 +153,17 @@ console.log(contents);
|
|
|
195
153
|
|
|
196
154
|
If a `.txt` file is passed as an entrypoint, it will be converted to a `.js` module that `export default`s the file contents.
|
|
197
155
|
|
|
198
|
-
|
|
156
|
+
<CodeGroup>
|
|
199
157
|
|
|
200
|
-
```txt
|
|
158
|
+
```txt Input
|
|
201
159
|
Hello, world!
|
|
202
160
|
```
|
|
203
161
|
|
|
204
|
-
```
|
|
162
|
+
```ts Output
|
|
205
163
|
export default "Hello, world!";
|
|
206
164
|
```
|
|
207
165
|
|
|
208
|
-
|
|
166
|
+
</CodeGroup>
|
|
209
167
|
|
|
210
168
|
### `napi`
|
|
211
169
|
|
|
@@ -224,7 +182,7 @@ In the bundler, `.node` files are handled using the [`file`](#file) loader.
|
|
|
224
182
|
|
|
225
183
|
**SQLite loader**. `with { "type": "sqlite" }` import attribute
|
|
226
184
|
|
|
227
|
-
In the runtime and bundler, SQLite databases can be directly imported. This will load the database using [`bun:sqlite`](
|
|
185
|
+
In the runtime and bundler, SQLite databases can be directly imported. This will load the database using [`bun:sqlite`](/runtime/sqlite).
|
|
228
186
|
|
|
229
187
|
```ts
|
|
230
188
|
import db from "./my.db" with { type: "sqlite" };
|
|
@@ -241,7 +199,7 @@ You can change this behavior with the `"embed"` attribute:
|
|
|
241
199
|
import db from "./my.db" with { type: "sqlite", embed: "true" };
|
|
242
200
|
```
|
|
243
201
|
|
|
244
|
-
When using a [standalone executable](
|
|
202
|
+
When using a [standalone executable](/bundler/executables), the database is embedded into the single-file executable.
|
|
245
203
|
|
|
246
204
|
Otherwise, the database to embed is copied into the `outdir` with a hashed filename.
|
|
247
205
|
|
|
@@ -256,37 +214,37 @@ The html loader processes HTML files and bundles any referenced assets. It will:
|
|
|
256
214
|
|
|
257
215
|
For example, given this HTML file:
|
|
258
216
|
|
|
259
|
-
|
|
217
|
+
<CodeGroup>
|
|
260
218
|
|
|
261
|
-
```html
|
|
219
|
+
```html src/index.html
|
|
262
220
|
<!DOCTYPE html>
|
|
263
221
|
<html>
|
|
264
222
|
<body>
|
|
265
|
-
<img src="./image.jpg" alt="Local image"
|
|
266
|
-
<img src="https://example.com/image.jpg" alt="External image"
|
|
223
|
+
<img src="./image.jpg" alt="Local image" />
|
|
224
|
+
<img src="https://example.com/image.jpg" alt="External image" />
|
|
267
225
|
<script type="module" src="./script.js"></script>
|
|
268
226
|
</body>
|
|
269
227
|
</html>
|
|
270
228
|
```
|
|
271
229
|
|
|
272
|
-
|
|
230
|
+
</CodeGroup>
|
|
273
231
|
|
|
274
232
|
It will output a new HTML file with the bundled assets:
|
|
275
233
|
|
|
276
|
-
|
|
234
|
+
<CodeGroup>
|
|
277
235
|
|
|
278
|
-
```html
|
|
236
|
+
```html dist/output.html
|
|
279
237
|
<!DOCTYPE html>
|
|
280
238
|
<html>
|
|
281
239
|
<body>
|
|
282
|
-
<img src="./image-HASHED.jpg" alt="Local image"
|
|
283
|
-
<img src="https://example.com/image.jpg" alt="External image"
|
|
240
|
+
<img src="./image-HASHED.jpg" alt="Local image" />
|
|
241
|
+
<img src="https://example.com/image.jpg" alt="External image" />
|
|
284
242
|
<script type="module" src="./output-ALSO-HASHED.js"></script>
|
|
285
243
|
</body>
|
|
286
244
|
</html>
|
|
287
245
|
```
|
|
288
246
|
|
|
289
|
-
|
|
247
|
+
</CodeGroup>
|
|
290
248
|
|
|
291
249
|
Under the hood, it uses [`lol-html`](https://github.com/cloudflare/lol-html) to extract script and link tags as entrypoints, and other assets as external.
|
|
292
250
|
|
|
@@ -311,7 +269,7 @@ Currently, the list of selectors is:
|
|
|
311
269
|
- `video[poster]`
|
|
312
270
|
- `video[src]`
|
|
313
271
|
|
|
314
|
-
|
|
272
|
+
<Note>
|
|
315
273
|
|
|
316
274
|
**HTML Loader Behavior in Different Contexts**
|
|
317
275
|
|
|
@@ -323,16 +281,16 @@ The `html` loader behaves differently depending on how it's used:
|
|
|
323
281
|
|
|
324
282
|
3. **Full-stack Build:** When you run `bun build --target=bun server.ts` (where `server.ts` imports an HTML file), the import resolves to a manifest object that `Bun.serve` uses to efficiently serve pre-bundled assets in production.
|
|
325
283
|
|
|
326
|
-
|
|
284
|
+
</Note>
|
|
327
285
|
|
|
328
286
|
### `sh` loader
|
|
329
287
|
|
|
330
288
|
**Bun Shell loader**. Default for `.sh` files
|
|
331
289
|
|
|
332
|
-
This loader is used to parse [Bun Shell](
|
|
290
|
+
This loader is used to parse [Bun Shell](/runtime/shell) scripts. It's only supported when starting Bun itself, so it's not available in the bundler or in the runtime.
|
|
333
291
|
|
|
334
292
|
```sh
|
|
335
|
-
|
|
293
|
+
bun run ./script.sh
|
|
336
294
|
```
|
|
337
295
|
|
|
338
296
|
### `file`
|
|
@@ -341,7 +299,7 @@ $ bun run ./script.sh
|
|
|
341
299
|
|
|
342
300
|
The file loader resolves the import as a _path/URL_ to the imported file. It's commonly used for referencing media or font assets.
|
|
343
301
|
|
|
344
|
-
```ts
|
|
302
|
+
```ts logo.ts
|
|
345
303
|
import logo from "./logo.svg";
|
|
346
304
|
console.log(logo);
|
|
347
305
|
```
|
|
@@ -349,47 +307,32 @@ console.log(logo);
|
|
|
349
307
|
_In the runtime_, Bun checks that the `logo.svg` file exists and converts it to an absolute path to the location of `logo.svg` on disk.
|
|
350
308
|
|
|
351
309
|
```bash
|
|
352
|
-
|
|
310
|
+
bun run logo.ts
|
|
353
311
|
/path/to/project/logo.svg
|
|
354
312
|
```
|
|
355
313
|
|
|
356
314
|
_In the bundler_, things are slightly different. The file is copied into `outdir` as-is, and the import is resolved as a relative path pointing to the copied file.
|
|
357
315
|
|
|
358
|
-
```ts
|
|
316
|
+
```ts Output
|
|
359
317
|
var logo = "./logo.svg";
|
|
360
318
|
console.log(logo);
|
|
361
319
|
```
|
|
362
320
|
|
|
363
321
|
If a value is specified for `publicPath`, the import will use value as a prefix to construct an absolute path/URL.
|
|
364
322
|
|
|
365
|
-
|
|
323
|
+
| Public path | Resolved import |
|
|
324
|
+
| ---------------------------- | ---------------------------------- |
|
|
325
|
+
| `""` (default) | `/logo.svg` |
|
|
326
|
+
| `"/assets"` | `/assets/logo.svg` |
|
|
327
|
+
| `"https://cdn.example.com/"` | `https://cdn.example.com/logo.svg` |
|
|
366
328
|
|
|
367
|
-
|
|
368
|
-
|
|
329
|
+
<Note>
|
|
330
|
+
The location and file name of the copied file is determined by the value of [`naming.asset`](/bundler#naming).
|
|
331
|
+
</Note>
|
|
332
|
+
This loader is copied into the `outdir` as-is. The name of the copied file is determined using the value of
|
|
333
|
+
`naming.asset`.
|
|
369
334
|
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
- `""` (default)
|
|
373
|
-
- `/logo.svg`
|
|
374
|
-
|
|
375
|
-
---
|
|
376
|
-
|
|
377
|
-
- `"/assets"`
|
|
378
|
-
- `/assets/logo.svg`
|
|
379
|
-
|
|
380
|
-
---
|
|
381
|
-
|
|
382
|
-
- `"https://cdn.example.com/"`
|
|
383
|
-
- `https://cdn.example.com/logo.svg`
|
|
384
|
-
|
|
385
|
-
{% /table %}
|
|
386
|
-
|
|
387
|
-
{% callout %}
|
|
388
|
-
The location and file name of the copied file is determined by the value of [`naming.asset`](https://bun.com/docs/bundler#naming).
|
|
389
|
-
{% /callout %}
|
|
390
|
-
This loader is copied into the `outdir` as-is. The name of the copied file is determined using the value of `naming.asset`.
|
|
391
|
-
|
|
392
|
-
{% details summary="Fixing TypeScript import errors" %}
|
|
335
|
+
<Accordion title="Fixing TypeScript import errors">
|
|
393
336
|
If you're using TypeScript, you may get an error like this:
|
|
394
337
|
|
|
395
338
|
```ts
|
|
@@ -407,4 +350,5 @@ declare module "*.svg" {
|
|
|
407
350
|
```
|
|
408
351
|
|
|
409
352
|
This tells TypeScript that any default imports from `.svg` should be treated as a string.
|
|
410
|
-
|
|
353
|
+
|
|
354
|
+
</Accordion>
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Globals
|
|
3
|
+
description: Use Bun's global objects
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Bun implements the following globals.
|
|
7
|
+
|
|
8
|
+
| Global | Source | Notes |
|
|
9
|
+
| ----------------------------------------------------------------------------------------------------------------------- | -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
10
|
+
| [`AbortController`](https://developer.mozilla.org/en-US/docs/Web/API/AbortController) | Web | |
|
|
11
|
+
| [`AbortSignal`](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal) | Web | |
|
|
12
|
+
| [`alert`](https://developer.mozilla.org/en-US/docs/Web/API/Window/alert) | Web | Intended for command-line tools |
|
|
13
|
+
| [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob) | Web | |
|
|
14
|
+
| [`Buffer`](https://nodejs.org/api/buffer.html#class-buffer) | Node.js | See [Node.js > `Buffer`](/runtime/nodejs-compat#node-buffer) |
|
|
15
|
+
| `Bun` | Bun | Subject to change as additional APIs are added |
|
|
16
|
+
| [`ByteLengthQueuingStrategy`](https://developer.mozilla.org/en-US/docs/Web/API/ByteLengthQueuingStrategy) | Web | |
|
|
17
|
+
| [`confirm`](https://developer.mozilla.org/en-US/docs/Web/API/Window/confirm) | Web | Intended for command-line tools |
|
|
18
|
+
| [`__dirname`](https://nodejs.org/api/globals.html#__dirname) | Node.js | |
|
|
19
|
+
| [`__filename`](https://nodejs.org/api/globals.html#__filename) | Node.js | |
|
|
20
|
+
| [`atob()`](https://developer.mozilla.org/en-US/docs/Web/API/atob) | Web | |
|
|
21
|
+
| [`btoa()`](https://developer.mozilla.org/en-US/docs/Web/API/btoa) | Web | |
|
|
22
|
+
| `BuildMessage` | Bun | |
|
|
23
|
+
| [`clearImmediate()`](https://developer.mozilla.org/en-US/docs/Web/API/Window/clearImmediate) | Web | |
|
|
24
|
+
| [`clearInterval()`](https://developer.mozilla.org/en-US/docs/Web/API/Window/clearInterval) | Web | |
|
|
25
|
+
| [`clearTimeout()`](https://developer.mozilla.org/en-US/docs/Web/API/Window/clearTimeout) | Web | |
|
|
26
|
+
| [`console`](https://developer.mozilla.org/en-US/docs/Web/API/console) | Web | |
|
|
27
|
+
| [`CountQueuingStrategy`](https://developer.mozilla.org/en-US/docs/Web/API/CountQueuingStrategy) | Web | |
|
|
28
|
+
| [`Crypto`](https://developer.mozilla.org/en-US/docs/Web/API/Crypto) | Web | |
|
|
29
|
+
| [`crypto`](https://developer.mozilla.org/en-US/docs/Web/API/crypto) | Web | |
|
|
30
|
+
| [`CryptoKey`](https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey) | Web | |
|
|
31
|
+
| [`CustomEvent`](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent) | Web | |
|
|
32
|
+
| [`Event`](https://developer.mozilla.org/en-US/docs/Web/API/Event) | Web | Also [`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). |
|
|
33
|
+
| [`EventTarget`](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget) | Web | |
|
|
34
|
+
| [`exports`](https://nodejs.org/api/globals.html#exports) | Node.js | |
|
|
35
|
+
| [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/fetch) | Web | |
|
|
36
|
+
| [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData) | Web | |
|
|
37
|
+
| [`global`](https://nodejs.org/api/globals.html#global) | Node.js | See [Node.js > `global`](/runtime/nodejs-compat#global). |
|
|
38
|
+
| [`globalThis`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis) | Cross-platform | Aliases to `global` |
|
|
39
|
+
| [`Headers`](https://developer.mozilla.org/en-US/docs/Web/API/Headers) | Web | |
|
|
40
|
+
| [`HTMLRewriter`](/runtime/html-rewriter) | Cloudflare | |
|
|
41
|
+
| [`JSON`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON) | Web | |
|
|
42
|
+
| [`MessageEvent`](https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent) | Web | |
|
|
43
|
+
| [`module`](https://nodejs.org/api/globals.html#module) | Node.js | |
|
|
44
|
+
| [`performance`](https://developer.mozilla.org/en-US/docs/Web/API/performance) | Web | |
|
|
45
|
+
| [`process`](https://nodejs.org/api/process.html) | Node.js | See [Node.js > `process`](/runtime/nodejs-compat#node-process) |
|
|
46
|
+
| [`prompt`](https://developer.mozilla.org/en-US/docs/Web/API/Window/prompt) | Web | Intended for command-line tools |
|
|
47
|
+
| [`queueMicrotask()`](https://developer.mozilla.org/en-US/docs/Web/API/queueMicrotask) | Web | |
|
|
48
|
+
| [`ReadableByteStreamController`](https://developer.mozilla.org/en-US/docs/Web/API/ReadableByteStreamController) | Web | |
|
|
49
|
+
| [`ReadableStream`](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream) | Web | |
|
|
50
|
+
| [`ReadableStreamDefaultController`](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultController) | Web | |
|
|
51
|
+
| [`ReadableStreamDefaultReader`](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader) | Web | |
|
|
52
|
+
| [`reportError`](https://developer.mozilla.org/en-US/docs/Web/API/reportError) | Web | |
|
|
53
|
+
| [`require()`](https://nodejs.org/api/globals.html#require) | Node.js | |
|
|
54
|
+
| `ResolveMessage` | Bun | |
|
|
55
|
+
| [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response) | Web | |
|
|
56
|
+
| [`Request`](https://developer.mozilla.org/en-US/docs/Web/API/Request) | Web | |
|
|
57
|
+
| [`setImmediate()`](https://developer.mozilla.org/en-US/docs/Web/API/Window/setImmediate) | Web | |
|
|
58
|
+
| [`setInterval()`](https://developer.mozilla.org/en-US/docs/Web/API/Window/setInterval) | Web | |
|
|
59
|
+
| [`setTimeout()`](https://developer.mozilla.org/en-US/docs/Web/API/Window/setTimeout) | Web | |
|
|
60
|
+
| [`ShadowRealm`](https://github.com/tc39/proposal-shadowrealm) | Web | Stage 3 proposal |
|
|
61
|
+
| [`SubtleCrypto`](https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto) | Web | |
|
|
62
|
+
| [`DOMException`](https://developer.mozilla.org/en-US/docs/Web/API/DOMException) | Web | |
|
|
63
|
+
| [`TextDecoder`](https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder) | Web | |
|
|
64
|
+
| [`TextEncoder`](https://developer.mozilla.org/en-US/docs/Web/API/TextEncoder) | Web | |
|
|
65
|
+
| [`TransformStream`](https://developer.mozilla.org/en-US/docs/Web/API/TransformStream) | Web | |
|
|
66
|
+
| [`TransformStreamDefaultController`](https://developer.mozilla.org/en-US/docs/Web/API/TransformStreamDefaultController) | Web | |
|
|
67
|
+
| [`URL`](https://developer.mozilla.org/en-US/docs/Web/API/URL) | Web | |
|
|
68
|
+
| [`URLSearchParams`](https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams) | Web | |
|
|
69
|
+
| [`WebAssembly`](https://nodejs.org/api/globals.html#webassembly) | Web | |
|
|
70
|
+
| [`WritableStream`](https://developer.mozilla.org/en-US/docs/Web/API/WritableStream) | Web | |
|
|
71
|
+
| [`WritableStreamDefaultController`](https://developer.mozilla.org/en-US/docs/Web/API/WritableStreamDefaultController) | Web | |
|
|
72
|
+
| [`WritableStreamDefaultWriter`](https://developer.mozilla.org/en-US/docs/Web/API/WritableStreamDefaultWriter) | Web | |
|
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
---
|
|
2
|
+
title: Hashing
|
|
3
|
+
description: Bun provides a set of utility functions for hashing and verifying passwords with various cryptographically secure algorithms
|
|
4
|
+
---
|
|
2
5
|
|
|
3
|
-
|
|
6
|
+
<Note>
|
|
7
|
+
Bun implements the `createHash` and `createHmac` functions from [`node:crypto`](https://nodejs.org/api/crypto.html) in
|
|
8
|
+
addition to the Bun-native APIs documented below.
|
|
9
|
+
</Note>
|
|
4
10
|
|
|
5
|
-
|
|
11
|
+
---
|
|
6
12
|
|
|
7
13
|
## `Bun.password`
|
|
8
14
|
|
|
@@ -132,6 +138,8 @@ The format is composed of:
|
|
|
132
138
|
- `salt`: `$xXnlSvPh4ym5KYmxKAuuHVlDvy2QGHBNuI6bJJrRDOs`
|
|
133
139
|
- `hash`: `$2YY6M48XmHn+s5NoBaL+ficzXajq2Yj8wut3r0vnrwI`
|
|
134
140
|
|
|
141
|
+
---
|
|
142
|
+
|
|
135
143
|
## `Bun.hash`
|
|
136
144
|
|
|
137
145
|
`Bun.hash` is a collection of utilities for _non-cryptographic_ hashing. Non-cryptographic hashing algorithms are optimized for speed of computation over collision-resistance or security.
|
|
@@ -178,13 +186,14 @@ Bun.hash.murmur64v2("data", 1234);
|
|
|
178
186
|
Bun.hash.rapidhash("data", 1234);
|
|
179
187
|
```
|
|
180
188
|
|
|
189
|
+
---
|
|
190
|
+
|
|
181
191
|
## `Bun.CryptoHasher`
|
|
182
192
|
|
|
183
193
|
`Bun.CryptoHasher` is a general-purpose utility class that lets you incrementally compute a hash of string or binary data using a range of cryptographic hash algorithms. The following algorithms are supported:
|
|
184
194
|
|
|
185
195
|
- `"blake2b256"`
|
|
186
196
|
- `"blake2b512"`
|
|
187
|
-
- `"blake2s256"`
|
|
188
197
|
- `"md4"`
|
|
189
198
|
- `"md5"`
|
|
190
199
|
- `"ripemd160"`
|
|
@@ -221,24 +230,11 @@ hasher.update(new ArrayBuffer(10));
|
|
|
221
230
|
|
|
222
231
|
If a `string` is passed, an optional second parameter can be used to specify the encoding (default `'utf-8'`). The following encodings are supported:
|
|
223
232
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
- `"base64"` `"base64url"` `"hex"` `"binary"`
|
|
230
|
-
|
|
231
|
-
---
|
|
232
|
-
|
|
233
|
-
- Character encodings
|
|
234
|
-
- `"utf8"` `"utf-8"` `"utf16le"` `"latin1"`
|
|
235
|
-
|
|
236
|
-
---
|
|
237
|
-
|
|
238
|
-
- Legacy character encodings
|
|
239
|
-
- `"ascii"` `"binary"` `"ucs2"` `"ucs-2"`
|
|
240
|
-
|
|
241
|
-
{% /table %}
|
|
233
|
+
| Category | Encodings |
|
|
234
|
+
| -------------------------- | ------------------------------------------- |
|
|
235
|
+
| Binary encodings | `"base64"` `"base64url"` `"hex"` `"binary"` |
|
|
236
|
+
| Character encodings | `"utf8"` `"utf-8"` `"utf16le"` `"latin1"` |
|
|
237
|
+
| Legacy character encodings | `"ascii"` `"binary"` `"ucs2"` `"ucs-2"` |
|
|
242
238
|
|
|
243
239
|
```ts
|
|
244
240
|
hasher.update("hello world"); // defaults to utf8
|
|
@@ -1,5 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: HTMLRewriter
|
|
3
|
+
description: Use Bun's HTMLRewriter to transform HTML documents with CSS selectors
|
|
4
|
+
---
|
|
5
|
+
|
|
1
6
|
HTMLRewriter lets you use CSS selectors to transform HTML documents. It works with `Request`, `Response`, as well as `string`. Bun's implementation is based on Cloudflare's [lol-html](https://github.com/cloudflare/lol-html).
|
|
2
7
|
|
|
8
|
+
---
|
|
9
|
+
|
|
3
10
|
## Usage
|
|
4
11
|
|
|
5
12
|
A common usecase is rewriting URLs in HTML content. Here's an example that rewrites image sources and link URLs to use a CDN domain:
|
|
@@ -9,16 +16,12 @@ A common usecase is rewriting URLs in HTML content. Here's an example that rewri
|
|
|
9
16
|
const rewriter = new HTMLRewriter().on("img", {
|
|
10
17
|
element(img) {
|
|
11
18
|
// Famous rickroll video thumbnail
|
|
12
|
-
img.setAttribute(
|
|
13
|
-
"src",
|
|
14
|
-
"https://img.youtube.com/vi/dQw4w9WgXcQ/maxresdefault.jpg",
|
|
15
|
-
);
|
|
19
|
+
img.setAttribute("src", "https://img.youtube.com/vi/dQw4w9WgXcQ/maxresdefault.jpg");
|
|
16
20
|
|
|
17
21
|
// Wrap the image in a link to the video
|
|
18
|
-
img.before(
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
);
|
|
22
|
+
img.before('<a href="https://www.youtube.com/watch?v=dQw4w9WgXcQ" target="_blank">', {
|
|
23
|
+
html: true,
|
|
24
|
+
});
|
|
22
25
|
img.after("</a>", { html: true });
|
|
23
26
|
|
|
24
27
|
// Add some fun alt text
|
|
@@ -43,21 +46,29 @@ console.log(result);
|
|
|
43
46
|
|
|
44
47
|
This replaces all images with a thumbnail of Rick Astley and wraps each `<img>` in a link, producing a diff like this:
|
|
45
48
|
|
|
46
|
-
```html
|
|
49
|
+
```html
|
|
47
50
|
<html>
|
|
48
51
|
<body>
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
52
|
+
<img src="/cat.jpg" /> // [!code --] <img src="dog.png" /> // [!code --]
|
|
53
|
+
<img src="https://example.com/bird.webp" /> // [!code --]
|
|
54
|
+
<a href="https://www.youtube.com/watch?v=dQw4w9WgXcQ" target="_blank">
|
|
55
|
+
// [!code ++]
|
|
56
|
+
<img src="https://img.youtube.com/vi/dQw4w9WgXcQ/maxresdefault.jpg" alt="Definitely not a rickroll" />
|
|
57
|
+
// [!code ++]
|
|
58
|
+
</a>
|
|
59
|
+
// [!code ++]
|
|
60
|
+
<a href="https://www.youtube.com/watch?v=dQw4w9WgXcQ" target="_blank">
|
|
61
|
+
// [!code ++]
|
|
62
|
+
<img src="https://img.youtube.com/vi/dQw4w9WgXcQ/maxresdefault.jpg" alt="Definitely not a rickroll" />
|
|
63
|
+
// [!code ++]
|
|
64
|
+
</a>
|
|
65
|
+
// [!code ++]
|
|
66
|
+
<a href="https://www.youtube.com/watch?v=dQw4w9WgXcQ" target="_blank">
|
|
67
|
+
// [!code ++]
|
|
68
|
+
<img src="https://img.youtube.com/vi/dQw4w9WgXcQ/maxresdefault.jpg" alt="Definitely not a rickroll" />
|
|
69
|
+
// [!code ++]
|
|
70
|
+
</a>
|
|
71
|
+
// [!code ++]
|
|
61
72
|
</body>
|
|
62
73
|
</html>
|
|
63
74
|
```
|
|
@@ -180,10 +191,7 @@ rewriter.on("div", {
|
|
|
180
191
|
el.setInnerContent(""); // Clear content
|
|
181
192
|
|
|
182
193
|
// Position manipulation
|
|
183
|
-
el.before("Content before")
|
|
184
|
-
.after("Content after")
|
|
185
|
-
.prepend("First child")
|
|
186
|
-
.append("Last child");
|
|
194
|
+
el.before("Content before").after("Content after").prepend("First child").append("Last child");
|
|
187
195
|
|
|
188
196
|
// HTML content insertion
|
|
189
197
|
el.before("<span>before</span>", { html: true })
|
|
@@ -255,11 +263,7 @@ rewriter.on("*", {
|
|
|
255
263
|
console.log(comment.removed); // Whether comment was removed
|
|
256
264
|
|
|
257
265
|
// Manipulation
|
|
258
|
-
comment
|
|
259
|
-
.before("Before comment")
|
|
260
|
-
.after("After comment")
|
|
261
|
-
.replace("New comment")
|
|
262
|
-
.remove();
|
|
266
|
+
comment.before("Before comment").after("After comment").replace("New comment").remove();
|
|
263
267
|
|
|
264
268
|
// HTML content insertion
|
|
265
269
|
comment
|
|
@@ -329,6 +333,8 @@ try {
|
|
|
329
333
|
}
|
|
330
334
|
```
|
|
331
335
|
|
|
336
|
+
---
|
|
337
|
+
|
|
332
338
|
## See also
|
|
333
339
|
|
|
334
340
|
You can also read the [Cloudflare documentation](https://developers.cloudflare.com/workers/runtime-apis/html-rewriter/), which this API is intended to be compatible with.
|