bun-types 1.3.2-canary.20251105T140650 → 1.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bun.d.ts +102 -6
- package/docs/README.md +28 -0
- package/docs/bundler/bytecode.mdx +465 -0
- package/docs/bundler/{css.md → css.mdx} +97 -101
- package/docs/bundler/esbuild.mdx +253 -0
- package/docs/bundler/{executables.md → executables.mdx} +130 -221
- package/docs/bundler/fullstack.mdx +1064 -0
- package/docs/bundler/{hmr.md → hot-reloading.mdx} +74 -79
- package/docs/bundler/{html.md → html-static.mdx} +148 -111
- package/docs/bundler/index.mdx +1499 -0
- package/docs/bundler/loaders.mdx +356 -0
- package/docs/bundler/{macros.md → macros.mdx} +83 -84
- package/docs/bundler/minifier.mdx +1306 -0
- package/docs/bundler/plugins.mdx +411 -0
- package/docs/feedback.mdx +85 -0
- package/docs/guides/binary/{arraybuffer-to-array.md → arraybuffer-to-array.mdx} +3 -1
- package/docs/guides/binary/{arraybuffer-to-blob.md → arraybuffer-to-blob.mdx} +3 -1
- package/docs/guides/binary/{arraybuffer-to-buffer.md → arraybuffer-to-buffer.mdx} +3 -1
- package/docs/guides/binary/{arraybuffer-to-string.md → arraybuffer-to-string.mdx} +3 -1
- package/docs/guides/binary/{arraybuffer-to-typedarray.md → arraybuffer-to-typedarray.mdx} +3 -1
- package/docs/guides/binary/{blob-to-arraybuffer.md → blob-to-arraybuffer.mdx} +3 -1
- package/docs/guides/binary/{blob-to-dataview.md → blob-to-dataview.mdx} +3 -1
- package/docs/guides/binary/{blob-to-stream.md → blob-to-stream.mdx} +3 -1
- package/docs/guides/binary/{blob-to-string.md → blob-to-string.mdx} +3 -1
- package/docs/guides/binary/{blob-to-typedarray.md → blob-to-typedarray.mdx} +3 -1
- package/docs/guides/binary/{buffer-to-arraybuffer.md → buffer-to-arraybuffer.mdx} +3 -1
- package/docs/guides/binary/{buffer-to-blob.md → buffer-to-blob.mdx} +3 -1
- package/docs/guides/binary/{buffer-to-readablestream.md → buffer-to-readablestream.mdx} +3 -1
- package/docs/guides/binary/{buffer-to-string.md → buffer-to-string.mdx} +3 -1
- package/docs/guides/binary/{buffer-to-typedarray.md → buffer-to-typedarray.mdx} +3 -1
- package/docs/guides/binary/{dataview-to-string.md → dataview-to-string.mdx} +3 -1
- package/docs/guides/binary/{typedarray-to-arraybuffer.md → typedarray-to-arraybuffer.mdx} +3 -1
- package/docs/guides/binary/{typedarray-to-blob.md → typedarray-to-blob.mdx} +3 -1
- package/docs/guides/binary/{typedarray-to-buffer.md → typedarray-to-buffer.mdx} +3 -1
- package/docs/guides/binary/{typedarray-to-dataview.md → typedarray-to-dataview.mdx} +3 -1
- package/docs/guides/binary/{typedarray-to-readablestream.md → typedarray-to-readablestream.mdx} +3 -1
- package/docs/guides/binary/{typedarray-to-string.md → typedarray-to-string.mdx} +3 -1
- package/docs/guides/deployment/aws-lambda.mdx +204 -0
- package/docs/guides/deployment/digital-ocean.mdx +161 -0
- package/docs/guides/deployment/google-cloud-run.mdx +197 -0
- package/docs/guides/deployment/{railway.md → railway.mdx} +42 -54
- package/docs/guides/deployment/render.mdx +82 -0
- package/docs/guides/deployment/vercel.mdx +99 -0
- package/docs/guides/ecosystem/{astro.md → astro.mdx} +16 -6
- package/docs/guides/ecosystem/{discordjs.md → discordjs.mdx} +21 -18
- package/docs/guides/ecosystem/{docker.md → docker.mdx} +25 -14
- package/docs/guides/ecosystem/{drizzle.md → drizzle.mdx} +32 -22
- package/docs/guides/ecosystem/{edgedb.md → edgedb.mdx} +63 -34
- package/docs/guides/ecosystem/{elysia.md → elysia.mdx} +11 -11
- package/docs/guides/ecosystem/{express.md → express.mdx} +12 -9
- package/docs/guides/ecosystem/{hono.md → hono.mdx} +16 -8
- package/docs/guides/ecosystem/{mongoose.md → mongoose.mdx} +26 -21
- package/docs/guides/ecosystem/{neon-drizzle.md → neon-drizzle.mdx} +49 -35
- package/docs/guides/ecosystem/{neon-serverless-postgres.md → neon-serverless-postgres.mdx} +16 -11
- package/docs/guides/ecosystem/{nextjs.md → nextjs.mdx} +18 -10
- package/docs/guides/ecosystem/{nuxt.md → nuxt.mdx} +45 -11
- package/docs/guides/ecosystem/{pm2.md → pm2.mdx} +7 -9
- package/docs/guides/ecosystem/prisma-postgres.mdx +169 -0
- package/docs/guides/ecosystem/prisma.mdx +164 -0
- package/docs/guides/ecosystem/{qwik.md → qwik.mdx} +18 -11
- package/docs/guides/ecosystem/{react.md → react.mdx} +9 -7
- package/docs/guides/ecosystem/{remix.md → remix.mdx} +45 -26
- package/docs/guides/ecosystem/{sentry.md → sentry.mdx} +7 -5
- package/docs/guides/ecosystem/{solidstart.md → solidstart.mdx} +21 -13
- package/docs/guides/ecosystem/{ssr-react.md → ssr-react.mdx} +9 -11
- package/docs/guides/ecosystem/{stric.md → stric.mdx} +16 -17
- package/docs/guides/ecosystem/{sveltekit.md → sveltekit.mdx} +42 -29
- package/docs/guides/ecosystem/{systemd.md → systemd.mdx} +27 -26
- package/docs/guides/ecosystem/upstash.mdx +87 -0
- package/docs/guides/ecosystem/{vite.md → vite.mdx} +20 -14
- package/docs/guides/html-rewriter/{extract-links.md → extract-links.mdx} +11 -7
- package/docs/guides/html-rewriter/{extract-social-meta.md → extract-social-meta.mdx} +6 -2
- package/docs/guides/http/{cluster.md → cluster.mdx} +10 -7
- package/docs/guides/http/{fetch-unix.md → fetch-unix.mdx} +5 -3
- package/docs/guides/http/{fetch.md → fetch.mdx} +5 -3
- package/docs/guides/http/{file-uploads.md → file-uploads.mdx} +18 -15
- package/docs/guides/http/{hot.md → hot.mdx} +9 -7
- package/docs/guides/http/{proxy.md → proxy.mdx} +7 -5
- package/docs/guides/http/{server.md → server.mdx} +4 -2
- package/docs/guides/http/{simple.md → simple.mdx} +4 -2
- package/docs/guides/http/{stream-file.md → stream-file.mdx} +6 -4
- package/docs/guides/http/{stream-iterator.md → stream-iterator.mdx} +5 -3
- package/docs/guides/http/{stream-node-streams-in-bun.md → stream-node-streams-in-bun.mdx} +4 -2
- package/docs/guides/http/{tls.md → tls.mdx} +5 -3
- package/docs/guides/index.mdx +10 -0
- package/docs/guides/install/{add-dev.md → add-dev.mdx} +8 -6
- package/docs/guides/install/add-git.mdx +38 -0
- package/docs/guides/install/{add-optional.md → add-optional.mdx} +7 -5
- package/docs/guides/install/{add-peer.md → add-peer.mdx} +13 -11
- package/docs/guides/install/{add-tarball.md → add-tarball.mdx} +7 -5
- package/docs/guides/install/{add.md → add.mdx} +12 -10
- package/docs/guides/install/{azure-artifacts.md → azure-artifacts.mdx} +15 -12
- package/docs/guides/{runtime/cicd.md → install/cicd.mdx} +13 -13
- package/docs/guides/install/{custom-registry.md → custom-registry.mdx} +6 -4
- package/docs/guides/install/{from-npm-install-to-bun-install.md → from-npm-install-to-bun-install.mdx} +50 -34
- package/docs/guides/install/{git-diff-bun-lockfile.md → git-diff-bun-lockfile.mdx} +14 -11
- package/docs/guides/install/{jfrog-artifactory.md → jfrog-artifactory.mdx} +4 -4
- package/docs/guides/install/{npm-alias.md → npm-alias.mdx} +6 -4
- package/docs/guides/install/{registry-scope.md → registry-scope.mdx} +6 -4
- package/docs/guides/install/{trusted.md → trusted.mdx} +22 -18
- package/docs/guides/install/{workspaces.md → workspaces.mdx} +13 -13
- package/docs/guides/install/{yarnlock.md → yarnlock.mdx} +15 -9
- package/docs/guides/process/{argv.md → argv.mdx} +17 -9
- package/docs/guides/process/{ctrl-c.md → ctrl-c.mdx} +4 -2
- package/docs/guides/process/{ipc.md → ipc.mdx} +13 -10
- package/docs/guides/process/{nanoseconds.md → nanoseconds.mdx} +3 -1
- package/docs/guides/process/{os-signals.md → os-signals.mdx} +3 -1
- package/docs/guides/process/{spawn-stderr.md → spawn-stderr.mdx} +4 -1
- package/docs/guides/process/{spawn-stdout.md → spawn-stdout.mdx} +3 -1
- package/docs/guides/process/{spawn.md → spawn.mdx} +3 -1
- package/docs/guides/process/{stdin.md → stdin.mdx} +15 -7
- package/docs/guides/read-file/{arraybuffer.md → arraybuffer.mdx} +5 -3
- package/docs/guides/read-file/{buffer.md → buffer.mdx} +4 -2
- package/docs/guides/read-file/{exists.md → exists.mdx} +4 -2
- package/docs/guides/read-file/{json.md → json.mdx} +4 -2
- package/docs/guides/read-file/{mime.md → mime.mdx} +3 -1
- package/docs/guides/read-file/{stream.md → stream.mdx} +3 -1
- package/docs/guides/read-file/{string.md → string.mdx} +3 -1
- package/docs/guides/read-file/{uint8array.md → uint8array.mdx} +3 -1
- package/docs/guides/read-file/{watch.md → watch.mdx} +6 -8
- package/docs/guides/runtime/{build-time-constants.md → build-time-constants.mdx} +24 -22
- package/docs/guides/{install/cicd.md → runtime/cicd.mdx} +11 -7
- package/docs/guides/runtime/{codesign-macos-executable.md → codesign-macos-executable.mdx} +14 -9
- package/docs/guides/runtime/{define-constant.md → define-constant.mdx} +20 -16
- package/docs/guides/runtime/{delete-directory.md → delete-directory.mdx} +5 -3
- package/docs/guides/runtime/{delete-file.md → delete-file.mdx} +4 -2
- package/docs/guides/runtime/{heap-snapshot.md → heap-snapshot.mdx} +5 -3
- package/docs/guides/runtime/{import-html.md → import-html.mdx} +4 -2
- package/docs/guides/runtime/{import-json.md → import-json.mdx} +6 -4
- package/docs/guides/runtime/{import-toml.md → import-toml.mdx} +5 -3
- package/docs/guides/runtime/{import-yaml.md → import-yaml.mdx} +9 -7
- package/docs/guides/runtime/{read-env.md → read-env.mdx} +10 -5
- package/docs/guides/runtime/{set-env.md → set-env.mdx} +14 -10
- package/docs/guides/runtime/{shell.md → shell.mdx} +6 -4
- package/docs/guides/runtime/{timezone.md → timezone.mdx} +10 -7
- package/docs/guides/runtime/{tsconfig-paths.md → tsconfig-paths.mdx} +5 -3
- package/docs/guides/runtime/{typescript.md → typescript.mdx} +8 -6
- package/docs/guides/runtime/{vscode-debugger.md → vscode-debugger.mdx} +12 -11
- package/docs/guides/runtime/{web-debugger.md → web-debugger.mdx} +39 -18
- package/docs/guides/streams/{node-readable-to-arraybuffer.md → node-readable-to-arraybuffer.mdx} +3 -1
- package/docs/guides/streams/{node-readable-to-blob.md → node-readable-to-blob.mdx} +3 -1
- package/docs/guides/streams/{node-readable-to-json.md → node-readable-to-json.mdx} +3 -1
- package/docs/guides/streams/{node-readable-to-string.md → node-readable-to-string.mdx} +3 -1
- package/docs/guides/streams/{node-readable-to-uint8array.md → node-readable-to-uint8array.mdx} +3 -1
- package/docs/guides/streams/{to-array.md → to-array.mdx} +3 -1
- package/docs/guides/streams/{to-arraybuffer.md → to-arraybuffer.mdx} +3 -1
- package/docs/guides/streams/{to-blob.md → to-blob.mdx} +3 -1
- package/docs/guides/streams/{to-buffer.md → to-buffer.mdx} +3 -1
- package/docs/guides/streams/{to-json.md → to-json.mdx} +4 -2
- package/docs/guides/streams/{to-string.md → to-string.mdx} +3 -1
- package/docs/guides/streams/{to-typedarray.md → to-typedarray.mdx} +3 -1
- package/docs/guides/test/{bail.md → bail.mdx} +7 -5
- package/docs/guides/test/{coverage-threshold.md → coverage-threshold.mdx} +14 -7
- package/docs/guides/test/{coverage.md → coverage.mdx} +9 -4
- package/docs/guides/test/{happy-dom.md → happy-dom.mdx} +13 -8
- package/docs/guides/test/{migrate-from-jest.md → migrate-from-jest.mdx} +19 -37
- package/docs/guides/test/{mock-clock.md → mock-clock.mdx} +3 -1
- package/docs/guides/test/{mock-functions.md → mock-functions.mdx} +7 -5
- package/docs/guides/test/{rerun-each.md → rerun-each.mdx} +5 -3
- package/docs/guides/test/{run-tests.md → run-tests.mdx} +16 -11
- package/docs/guides/test/{skip-tests.md → skip-tests.mdx} +8 -4
- package/docs/guides/test/{snapshot.md → snapshot.mdx} +20 -13
- package/docs/guides/test/spy-on.mdx +49 -0
- package/docs/guides/test/{svelte-test.md → svelte-test.mdx} +16 -23
- package/docs/guides/test/{testing-library.md → testing-library.mdx} +18 -17
- package/docs/guides/test/{timeout.md → timeout.mdx} +5 -3
- package/docs/guides/test/{todo-tests.md → todo-tests.mdx} +13 -6
- package/docs/guides/test/{update-snapshots.md → update-snapshots.mdx} +9 -6
- package/docs/guides/test/{watch-mode.md → watch-mode.mdx} +9 -4
- package/docs/guides/util/{base64.md → base64.mdx} +3 -1
- package/docs/guides/util/{deep-equals.md → deep-equals.mdx} +5 -3
- package/docs/guides/util/{deflate.md → deflate.mdx} +3 -1
- package/docs/guides/util/{detect-bun.md → detect-bun.mdx} +3 -1
- package/docs/guides/util/{entrypoint.md → entrypoint.mdx} +4 -2
- package/docs/guides/util/{escape-html.md → escape-html.mdx} +3 -1
- package/docs/guides/util/{file-url-to-path.md → file-url-to-path.mdx} +3 -1
- package/docs/guides/util/{gzip.md → gzip.mdx} +3 -1
- package/docs/guides/util/{hash-a-password.md → hash-a-password.mdx} +3 -1
- package/docs/guides/util/{import-meta-dir.md → import-meta-dir.mdx} +4 -2
- package/docs/guides/util/{import-meta-file.md → import-meta-file.mdx} +4 -2
- package/docs/guides/util/{import-meta-path.md → import-meta-path.mdx} +4 -2
- package/docs/guides/util/{javascript-uuid.md → javascript-uuid.mdx} +3 -1
- package/docs/guides/util/{main.md → main.mdx} +19 -8
- package/docs/guides/util/{path-to-file-url.md → path-to-file-url.mdx} +3 -1
- package/docs/guides/util/{sleep.md → sleep.mdx} +3 -1
- package/docs/guides/util/{version.md → version.mdx} +6 -4
- package/docs/guides/util/{which-path-to-executable-bin.md → which-path-to-executable-bin.mdx} +4 -2
- package/docs/guides/websocket/{compression.md → compression.mdx} +5 -3
- package/docs/guides/websocket/{context.md → context.mdx} +9 -12
- package/docs/guides/websocket/{pubsub.md → pubsub.mdx} +5 -6
- package/docs/guides/websocket/{simple.md → simple.mdx} +5 -3
- package/docs/guides/write-file/{append.md → append.mdx} +3 -1
- package/docs/guides/write-file/{basic.md → basic.mdx} +3 -1
- package/docs/guides/write-file/{blob.md → blob.mdx} +3 -1
- package/docs/guides/write-file/{cat.md → cat.mdx} +4 -2
- package/docs/guides/write-file/{file-cp.md → file-cp.mdx} +3 -1
- package/docs/guides/write-file/{filesink.md → filesink.mdx} +3 -1
- package/docs/guides/write-file/{response.md → response.mdx} +3 -1
- package/docs/guides/write-file/{stdout.md → stdout.mdx} +3 -1
- package/docs/guides/write-file/{stream.md → stream.mdx} +3 -1
- package/docs/guides/write-file/{unlink.md → unlink.mdx} +3 -1
- package/docs/{index.md → index.mdx} +97 -41
- package/docs/installation.mdx +365 -0
- package/docs/{cli/bunx.md → pm/bunx.mdx} +25 -31
- package/docs/{install/catalogs.md → pm/catalogs.mdx} +18 -24
- package/docs/{cli/add.md → pm/cli/add.mdx} +61 -55
- package/docs/{install/audit.md → pm/cli/audit.mdx} +11 -8
- package/docs/{cli/install.md → pm/cli/install.mdx} +208 -81
- package/docs/{cli/link.md → pm/cli/link.mdx} +27 -19
- package/docs/{cli/outdated.md → pm/cli/outdated.mdx} +119 -12
- package/docs/{install/patch.md → pm/cli/patch.mdx} +25 -15
- package/docs/{cli/pm.md → pm/cli/pm.mdx} +96 -62
- package/docs/{cli/publish.md → pm/cli/publish.mdx} +38 -35
- package/docs/pm/cli/remove.mdx +16 -0
- package/docs/{cli/update.md → pm/cli/update.mdx} +26 -15
- package/docs/{cli/why.md → pm/cli/why.mdx} +27 -10
- package/docs/{cli/filter.md → pm/filter.mdx} +26 -14
- package/docs/{install/cache.md → pm/global-cache.mdx} +25 -12
- package/docs/{install/isolated.md → pm/isolated-installs.mdx} +32 -24
- package/docs/{install/lifecycle.md → pm/lifecycle.mdx} +20 -9
- package/docs/{install/lockfile.md → pm/lockfile.mdx} +18 -12
- package/docs/{install/npmrc.md → pm/npmrc.mdx} +30 -24
- package/docs/{install/overrides.md → pm/overrides.mdx} +47 -37
- package/docs/{install/registries.md → pm/scopes-registries.mdx} +8 -3
- package/docs/{install/security-scanner-api.md → pm/security-scanner-api.mdx} +22 -8
- package/docs/{install/workspaces.md → pm/workspaces.mdx} +17 -22
- package/docs/project/{benchmarking.md → benchmarking.mdx} +26 -11
- package/docs/project/{bindgen.md → bindgen.mdx} +12 -14
- package/docs/project/{building-windows.md → building-windows.mdx} +18 -47
- package/docs/project/{contributing.md → contributing.mdx} +56 -60
- package/docs/project/feedback.mdx +20 -0
- package/docs/project/license.mdx +78 -0
- package/docs/project/roadmap.mdx +8 -0
- package/docs/quickstart.mdx +240 -0
- package/docs/runtime/{autoimport.md → auto-install.mdx} +34 -31
- package/docs/{api/binary-data.md → runtime/binary-data.mdx} +77 -269
- package/docs/runtime/bun-apis.mdx +59 -0
- package/docs/runtime/{bunfig.md → bunfig.mdx} +95 -225
- package/docs/{api/cc.md → runtime/c-compiler.mdx} +16 -9
- package/docs/{api/spawn.md → runtime/child-process.mdx} +69 -119
- package/docs/{api/color.md → runtime/color.mdx} +6 -1
- package/docs/{api/console.md → runtime/console.mdx} +17 -7
- package/docs/{api/cookie.md → runtime/cookies.mdx} +24 -19
- package/docs/runtime/{debugger.md → debugger.mdx} +61 -51
- package/docs/runtime/environment-variables.mdx +214 -0
- package/docs/{api/ffi.md → runtime/ffi.mdx} +53 -45
- package/docs/{api/file-io.md → runtime/file-io.mdx} +41 -101
- package/docs/{api/file-system-router.md → runtime/file-system-router.mdx} +8 -2
- package/docs/{bundler/loaders.md → runtime/file-types.mdx} +56 -112
- package/docs/{api/glob.md → runtime/glob.mdx} +4 -1
- package/docs/runtime/globals.mdx +72 -0
- package/docs/{api/hashing.md → runtime/hashing.mdx} +18 -22
- package/docs/{api/html-rewriter.md → runtime/html-rewriter.mdx} +36 -30
- package/docs/runtime/http/cookies.mdx +79 -0
- package/docs/runtime/http/error-handling.mdx +40 -0
- package/docs/runtime/http/metrics.mdx +36 -0
- package/docs/runtime/http/routing.mdx +289 -0
- package/docs/runtime/http/server.mdx +647 -0
- package/docs/runtime/http/tls.mdx +101 -0
- package/docs/{api/websockets.md → runtime/http/websockets.mdx} +62 -231
- package/docs/{cli/run.md → runtime/index.mdx} +70 -108
- package/docs/runtime/jsx.mdx +115 -0
- package/docs/runtime/{modules.md → module-resolution.mdx} +83 -61
- package/docs/{api/dns.md → runtime/networking/dns.mdx} +23 -22
- package/docs/{api/fetch.md → runtime/networking/fetch.mdx} +10 -5
- package/docs/{api/tcp.md → runtime/networking/tcp.mdx} +59 -41
- package/docs/{api/udp.md → runtime/networking/udp.mdx} +14 -8
- package/docs/{api/node-api.md → runtime/node-api.mdx} +5 -0
- package/docs/runtime/{nodejs-apis.md → nodejs-compat.mdx} +9 -4
- package/docs/{bundler/plugins.md → runtime/plugins.mdx} +17 -61
- package/docs/{api/redis.md → runtime/redis.mdx} +65 -80
- package/docs/{api/s3.md → runtime/s3.mdx} +79 -66
- package/docs/{api/secrets.md → runtime/secrets.mdx} +27 -10
- package/docs/{api/semver.md → runtime/semver.mdx} +9 -4
- package/docs/runtime/{shell.md → shell.mdx} +52 -20
- package/docs/{api/sql.md → runtime/sql.mdx} +129 -99
- package/docs/{api/sqlite.md → runtime/sqlite.mdx} +162 -157
- package/docs/{api/streams.md → runtime/streams.mdx} +33 -31
- package/docs/{cli/bun-create.md → runtime/templating/create.mdx} +74 -143
- package/docs/{cli/init.md → runtime/templating/init.mdx} +24 -51
- package/docs/{api/transpiler.md → runtime/transpiler.mdx} +50 -38
- package/docs/{typescript.md → runtime/typescript.mdx} +7 -2
- package/docs/{api/utils.md → runtime/utils.mdx} +81 -50
- package/docs/runtime/{hot.md → watch-mode.mdx} +53 -37
- package/docs/runtime/web-apis.mdx +29 -0
- package/docs/{api/workers.md → runtime/workers.mdx} +28 -22
- package/docs/{api/yaml.md → runtime/yaml.mdx} +33 -232
- package/docs/snippets/cli/add.mdx +166 -0
- package/docs/snippets/cli/build.mdx +196 -0
- package/docs/snippets/cli/feedback.mdx +17 -0
- package/docs/snippets/cli/init.mdx +84 -0
- package/docs/snippets/cli/install.mdx +173 -0
- package/docs/snippets/cli/link.mdx +163 -0
- package/docs/snippets/cli/outdated.mdx +140 -0
- package/docs/snippets/cli/patch.mdx +171 -0
- package/docs/snippets/cli/publish.mdx +198 -0
- package/docs/snippets/cli/remove.mdx +146 -0
- package/docs/snippets/cli/run.mdx +293 -0
- package/docs/snippets/cli/test.mdx +100 -0
- package/docs/snippets/cli/update.mdx +144 -0
- package/docs/snippets/product-card.mdx +32 -0
- package/docs/snippets/product-tiles.mdx +94 -0
- package/docs/test/code-coverage.mdx +409 -0
- package/docs/test/configuration.mdx +467 -0
- package/docs/test/{time.md → dates-times.mdx} +23 -20
- package/docs/test/{discovery.md → discovery.mdx} +15 -10
- package/docs/test/dom.mdx +226 -0
- package/docs/{cli/test.md → test/index.mdx} +77 -94
- package/docs/test/lifecycle.mdx +348 -0
- package/docs/test/mocks.mdx +637 -0
- package/docs/test/{reporters.md → reporters.mdx} +15 -15
- package/docs/test/runtime-behavior.mdx +342 -0
- package/docs/test/snapshots.mdx +434 -0
- package/docs/test/writing-tests.mdx +635 -0
- package/docs/typescript.mdx +54 -0
- package/package.json +8 -6
- package/test.d.ts +2 -2
- package/docs/api/file.md +0 -19
- package/docs/api/globals.md +0 -387
- package/docs/api/http.md +0 -1408
- package/docs/api/import-meta.md +0 -69
- package/docs/benchmarks.md +0 -120
- package/docs/bun-flavored-toml.md +0 -42
- package/docs/bundler/css_modules.md +0 -145
- package/docs/bundler/fullstack.md +0 -418
- package/docs/bundler/index.md +0 -1735
- package/docs/bundler/intro.md +0 -75
- package/docs/bundler/vs-esbuild.md +0 -1127
- package/docs/cli/bun-completions.md +0 -3
- package/docs/cli/bun-install.md +0 -349
- package/docs/cli/bun-upgrade.md +0 -39
- package/docs/cli/info.md +0 -65
- package/docs/cli/patch-commit.md +0 -11
- package/docs/cli/remove.md +0 -7
- package/docs/cli/unlink.md +0 -9
- package/docs/contributing/upgrading-webkit.md +0 -57
- package/docs/ecosystem/elysia.md +0 -24
- package/docs/ecosystem/express.md +0 -37
- package/docs/ecosystem/hono.md +0 -18
- package/docs/ecosystem/react.md +0 -65
- package/docs/ecosystem/stric.md +0 -38
- package/docs/guides/ecosystem/prisma.md +0 -141
- package/docs/guides/ecosystem/render.md +0 -79
- package/docs/guides/install/add-git.md +0 -36
- package/docs/guides/test/spy-on.md +0 -46
- package/docs/install/index.md +0 -248
- package/docs/installation.md +0 -327
- package/docs/project/asan.md +0 -124
- package/docs/project/internals/build-process-for-ci.md +0 -75
- package/docs/project/licensing.md +0 -73
- package/docs/project/roadmap.md +0 -87
- package/docs/quickstart.md +0 -157
- package/docs/runtime/bun-apis.md +0 -207
- package/docs/runtime/env.md +0 -253
- package/docs/runtime/index.md +0 -312
- package/docs/runtime/jsx.md +0 -385
- package/docs/runtime/loaders.md +0 -130
- package/docs/runtime/plugins.md +0 -561
- package/docs/runtime/typescript.md +0 -139
- package/docs/runtime/web-apis.md +0 -128
- package/docs/test/configuration.md +0 -154
- package/docs/test/coverage.md +0 -142
- package/docs/test/dom.md +0 -75
- package/docs/test/examples/concurrent-test-glob.md +0 -132
- package/docs/test/hot.md +0 -15
- package/docs/test/lifecycle.md +0 -81
- package/docs/test/mocks.md +0 -313
- package/docs/test/runtime-behavior.md +0 -95
- package/docs/test/snapshots.md +0 -68
- package/docs/test/writing.md +0 -825
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Lifecycle scripts"
|
|
3
|
+
description: "How Bun handles package lifecycle scripts securely"
|
|
4
|
+
---
|
|
5
|
+
|
|
1
6
|
Packages on `npm` can define _lifecycle scripts_ in their `package.json`. Some of the most common are below, but there are [many others](https://docs.npmjs.com/cli/v10/using-npm/scripts).
|
|
2
7
|
|
|
3
8
|
- `preinstall`: Runs before the package is installed
|
|
@@ -7,11 +12,13 @@ Packages on `npm` can define _lifecycle scripts_ in their `package.json`. Some o
|
|
|
7
12
|
|
|
8
13
|
These scripts are arbitrary shell commands that the package manager is expected to read and execute at the appropriate time. But executing arbitrary scripts represents a potential security risk, so—unlike other `npm` clients—Bun does not execute arbitrary lifecycle scripts by default.
|
|
9
14
|
|
|
15
|
+
---
|
|
16
|
+
|
|
10
17
|
## `postinstall`
|
|
11
18
|
|
|
12
19
|
The `postinstall` script is particularly important. It's widely used to build or install platform-specific binaries for packages that are implemented as [native Node.js add-ons](https://nodejs.org/api/addons.html). For example, `node-sass` is a popular package that uses `postinstall` to build a native binary for Sass.
|
|
13
20
|
|
|
14
|
-
```json
|
|
21
|
+
```json package.json icon="file-json"
|
|
15
22
|
{
|
|
16
23
|
"name": "my-app",
|
|
17
24
|
"version": "1.0.0",
|
|
@@ -21,26 +28,30 @@ The `postinstall` script is particularly important. It's widely used to build or
|
|
|
21
28
|
}
|
|
22
29
|
```
|
|
23
30
|
|
|
31
|
+
---
|
|
32
|
+
|
|
24
33
|
## `trustedDependencies`
|
|
25
34
|
|
|
26
35
|
Instead of executing arbitrary scripts, Bun uses a "default-secure" approach. You can add certain packages to an allow list, and Bun will execute lifecycle scripts for those packages. To tell Bun to allow lifecycle scripts for a particular package, add the package name to `trustedDependencies` array in your `package.json`.
|
|
27
36
|
|
|
28
|
-
```json-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
37
|
+
```json package.json icon="file-json"
|
|
38
|
+
{
|
|
39
|
+
"name": "my-app",
|
|
40
|
+
"version": "1.0.0",
|
|
41
|
+
"trustedDependencies": ["node-sass"] // [!code ++]
|
|
42
|
+
}
|
|
34
43
|
```
|
|
35
44
|
|
|
36
45
|
Once added to `trustedDependencies`, install/re-install the package. Bun will read this field and run lifecycle scripts for `my-trusted-package`.
|
|
37
46
|
|
|
38
47
|
As of Bun v1.0.16, the top 500 npm packages with lifecycle scripts are allowed by default. You can see the full list [here](https://github.com/oven-sh/bun/blob/main/src/install/default-trusted-dependencies.txt).
|
|
39
48
|
|
|
49
|
+
---
|
|
50
|
+
|
|
40
51
|
## `--ignore-scripts`
|
|
41
52
|
|
|
42
53
|
To disable lifecycle scripts for all packages, use the `--ignore-scripts` flag.
|
|
43
54
|
|
|
44
|
-
```bash
|
|
45
|
-
|
|
55
|
+
```bash terminal icon="terminal"
|
|
56
|
+
bun install --ignore-scripts
|
|
46
57
|
```
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Lockfile"
|
|
3
|
+
description: "Bun's lockfile format and configuration"
|
|
4
|
+
---
|
|
5
|
+
|
|
1
6
|
Running `bun install` will create a lockfile called `bun.lock`.
|
|
2
7
|
|
|
3
8
|
#### Should it be committed to git?
|
|
@@ -8,38 +13,39 @@ Yes
|
|
|
8
13
|
|
|
9
14
|
To generate a lockfile without installing to `node_modules` you can use the `--lockfile-only` flag. The lockfile will always be saved to disk, even if it is up-to-date with the `package.json`(s) for your project.
|
|
10
15
|
|
|
11
|
-
```bash
|
|
12
|
-
|
|
16
|
+
```bash terminal icon="terminal"
|
|
17
|
+
bun install --lockfile-only
|
|
13
18
|
```
|
|
14
19
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
20
|
+
<Note>
|
|
21
|
+
Using `--lockfile-only` will still populate the global install cache with registry metadata and git/tarball
|
|
22
|
+
dependencies.
|
|
23
|
+
</Note>
|
|
18
24
|
|
|
19
25
|
#### Can I opt out?
|
|
20
26
|
|
|
21
27
|
To install without creating a lockfile:
|
|
22
28
|
|
|
23
|
-
```bash
|
|
24
|
-
|
|
29
|
+
```bash terminal icon="terminal"
|
|
30
|
+
bun install --no-save
|
|
25
31
|
```
|
|
26
32
|
|
|
27
33
|
To install a Yarn lockfile _in addition_ to `bun.lock`.
|
|
28
34
|
|
|
29
|
-
|
|
35
|
+
<CodeGroup>
|
|
30
36
|
|
|
31
|
-
```bash
|
|
32
|
-
|
|
37
|
+
```bash terminal icon="terminal"
|
|
38
|
+
bun install --yarn
|
|
33
39
|
```
|
|
34
40
|
|
|
35
|
-
```toml
|
|
41
|
+
```toml bunfig.toml icon="settings"
|
|
36
42
|
[install.lockfile]
|
|
37
43
|
# whether to save a non-Bun lockfile alongside bun.lock
|
|
38
44
|
# only "yarn" is supported
|
|
39
45
|
print = "yarn"
|
|
40
46
|
```
|
|
41
47
|
|
|
42
|
-
|
|
48
|
+
</CodeGroup>
|
|
43
49
|
|
|
44
50
|
#### Text-based lockfile
|
|
45
51
|
|
|
@@ -1,49 +1,55 @@
|
|
|
1
|
-
|
|
1
|
+
---
|
|
2
|
+
title: .npmrc support
|
|
3
|
+
description:
|
|
4
|
+
---
|
|
2
5
|
|
|
3
|
-
|
|
6
|
+
Bun supports loading configuration options from [`.npmrc`](https://docs.npmjs.com/cli/v10/configuring-npm/npmrc) files, allowing you to reuse existing registry/scope configurations.
|
|
4
7
|
|
|
5
|
-
|
|
8
|
+
<Note>
|
|
9
|
+
We recommend migrating your `.npmrc` file to Bun's [`bunfig.toml`](/runtime/bunfig) format, as it provides more
|
|
10
|
+
flexible options and can let you configure Bun-specific options.
|
|
11
|
+
</Note>
|
|
6
12
|
|
|
7
|
-
|
|
13
|
+
---
|
|
8
14
|
|
|
9
15
|
## Supported options
|
|
10
16
|
|
|
11
|
-
###
|
|
17
|
+
### Set the default registry
|
|
12
18
|
|
|
13
19
|
The default registry is used to resolve packages, its default value is `npm`'s official registry (`https://registry.npmjs.org/`).
|
|
14
20
|
|
|
15
21
|
To change it, you can set the `registry` option in `.npmrc`:
|
|
16
22
|
|
|
17
|
-
```ini
|
|
23
|
+
```ini .npmrc icon="npm"
|
|
18
24
|
registry=http://localhost:4873/
|
|
19
25
|
```
|
|
20
26
|
|
|
21
|
-
The equivalent `bunfig.toml` option is [`install.registry`](
|
|
27
|
+
The equivalent `bunfig.toml` option is [`install.registry`](/runtime/bunfig#install-registry):
|
|
22
28
|
|
|
23
|
-
```toml
|
|
29
|
+
```toml bunfig.toml icon="settings"
|
|
24
30
|
install.registry = "http://localhost:4873/"
|
|
25
31
|
```
|
|
26
32
|
|
|
27
|
-
###
|
|
33
|
+
### Set the registry for a specific scope
|
|
28
34
|
|
|
29
|
-
|
|
35
|
+
`@<scope>:registry` allows you to set the registry for a specific scope:
|
|
30
36
|
|
|
31
|
-
```ini
|
|
37
|
+
```ini .npmrc icon="npm"
|
|
32
38
|
@myorg:registry=http://localhost:4873/
|
|
33
39
|
```
|
|
34
40
|
|
|
35
|
-
The equivalent `bunfig.toml` option is to add a key in [`install.scopes`](
|
|
41
|
+
The equivalent `bunfig.toml` option is to add a key in [`install.scopes`](/runtime/bunfig#install-registry):
|
|
36
42
|
|
|
37
|
-
```toml
|
|
43
|
+
```toml bunfig.toml icon="settings"
|
|
38
44
|
[install.scopes]
|
|
39
45
|
myorg = "http://localhost:4873/"
|
|
40
46
|
```
|
|
41
47
|
|
|
42
|
-
###
|
|
48
|
+
### Configure options for a specific registry
|
|
43
49
|
|
|
44
|
-
|
|
50
|
+
`//<registry_url>/:<key>=<value>` allows you to set options for a specific registry:
|
|
45
51
|
|
|
46
|
-
```ini
|
|
52
|
+
```ini .npmrc icon="npm"
|
|
47
53
|
# set an auth token for the registry
|
|
48
54
|
# ${...} is a placeholder for environment variables
|
|
49
55
|
//http://localhost:4873/:_authToken=${NPM_TOKEN}
|
|
@@ -67,9 +73,9 @@ The following options are supported:
|
|
|
67
73
|
- `_password` (base64 encoded password)
|
|
68
74
|
- `_auth` (base64 encoded username:password, e.g. `btoa(username + ":" + password)`)
|
|
69
75
|
|
|
70
|
-
The equivalent `bunfig.toml` option is to add a key in [`install.scopes`](
|
|
76
|
+
The equivalent `bunfig.toml` option is to add a key in [`install.scopes`](/runtime/bunfig#install-registry):
|
|
71
77
|
|
|
72
|
-
```toml
|
|
78
|
+
```toml bunfig.toml icon="settings"
|
|
73
79
|
[install.scopes]
|
|
74
80
|
myorg = { url = "http://localhost:4873/", username = "myusername", password = "$NPM_PASSWORD" }
|
|
75
81
|
```
|
|
@@ -78,13 +84,13 @@ myorg = { url = "http://localhost:4873/", username = "myusername", password = "$
|
|
|
78
84
|
|
|
79
85
|
Controls how workspace packages are installed when available locally:
|
|
80
86
|
|
|
81
|
-
```ini
|
|
87
|
+
```ini .npmrc icon="npm"
|
|
82
88
|
link-workspace-packages=true
|
|
83
89
|
```
|
|
84
90
|
|
|
85
|
-
The equivalent `bunfig.toml` option is [`install.linkWorkspacePackages`](
|
|
91
|
+
The equivalent `bunfig.toml` option is [`install.linkWorkspacePackages`](/runtime/bunfig#install-linkworkspacepackages):
|
|
86
92
|
|
|
87
|
-
```toml
|
|
93
|
+
```toml bunfig.toml icon="settings"
|
|
88
94
|
[install]
|
|
89
95
|
linkWorkspacePackages = true
|
|
90
96
|
```
|
|
@@ -93,13 +99,13 @@ linkWorkspacePackages = true
|
|
|
93
99
|
|
|
94
100
|
Always saves exact versions without the `^` prefix:
|
|
95
101
|
|
|
96
|
-
```ini
|
|
102
|
+
```ini .npmrc icon="npm"
|
|
97
103
|
save-exact=true
|
|
98
104
|
```
|
|
99
105
|
|
|
100
|
-
The equivalent `bunfig.toml` option is [`install.exact`](
|
|
106
|
+
The equivalent `bunfig.toml` option is [`install.exact`](/runtime/bunfig#install-exact):
|
|
101
107
|
|
|
102
|
-
```toml
|
|
108
|
+
```toml bunfig.toml icon="settings"
|
|
103
109
|
[install]
|
|
104
110
|
exact = true
|
|
105
111
|
```
|
|
@@ -1,20 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Overrides and resolutions"
|
|
3
|
+
description: "Control metadependency versions with npm overrides and Yarn resolutions"
|
|
4
|
+
---
|
|
5
|
+
|
|
1
6
|
Bun supports npm's `"overrides"` and Yarn's `"resolutions"` in `package.json`. These are mechanisms for specifying a version range for _metadependencies_—the dependencies of your dependencies.
|
|
2
7
|
|
|
3
|
-
```json
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
8
|
+
```json package.json icon="file-json"
|
|
9
|
+
{
|
|
10
|
+
"name": "my-app",
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"foo": "^2.0.0"
|
|
13
|
+
},
|
|
14
|
+
"overrides": {
|
|
15
|
+
// [!code ++]
|
|
16
|
+
"bar": "~4.4.0" // [!code ++]
|
|
17
|
+
} // [!code ++]
|
|
18
|
+
}
|
|
13
19
|
```
|
|
14
20
|
|
|
15
21
|
By default, Bun will install the latest version of all dependencies and metadependencies, according to the ranges specified in each package's `package.json`. Let's say you have a project with one dependency, `foo`, which in turn has a dependency on `bar`. This means `bar` is a _metadependency_ of our project.
|
|
16
22
|
|
|
17
|
-
```json
|
|
23
|
+
```json package.json icon="file-json"
|
|
18
24
|
{
|
|
19
25
|
"name": "my-app",
|
|
20
26
|
"dependencies": {
|
|
@@ -25,8 +31,7 @@ By default, Bun will install the latest version of all dependencies and metadepe
|
|
|
25
31
|
|
|
26
32
|
When you run `bun install`, Bun will install the latest versions of each package.
|
|
27
33
|
|
|
28
|
-
```
|
|
29
|
-
# tree layout of node_modules
|
|
34
|
+
```txt tree layout of node_modules icon="list-tree"
|
|
30
35
|
node_modules
|
|
31
36
|
├── foo@1.2.3
|
|
32
37
|
└── bar@4.5.6
|
|
@@ -34,24 +39,28 @@ node_modules
|
|
|
34
39
|
|
|
35
40
|
But what if a security vulnerability was introduced in `bar@4.5.6`? We may want a way to pin `bar` to an older version that doesn't have the vulnerability. This is where `"overrides"`/`"resolutions"` come in.
|
|
36
41
|
|
|
42
|
+
---
|
|
43
|
+
|
|
37
44
|
## `"overrides"`
|
|
38
45
|
|
|
39
46
|
Add `bar` to the `"overrides"` field in `package.json`. Bun will defer to the specified version range when determining which version of `bar` to install, whether it's a dependency or a metadependency.
|
|
40
47
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
48
|
+
<Note>
|
|
49
|
+
Bun currently only supports top-level `"overrides"`. [Nested
|
|
50
|
+
overrides](https://docs.npmjs.com/cli/v9/configuring-npm/package-json#overrides) are not supported.
|
|
51
|
+
</Note>
|
|
52
|
+
|
|
53
|
+
```json package.json icon="file-json"
|
|
54
|
+
{
|
|
55
|
+
"name": "my-app",
|
|
56
|
+
"dependencies": {
|
|
57
|
+
"foo": "^2.0.0"
|
|
58
|
+
},
|
|
59
|
+
"overrides": {
|
|
60
|
+
// [!code ++]
|
|
61
|
+
"bar": "~4.4.0" // [!code ++]
|
|
62
|
+
} // [!code ++]
|
|
63
|
+
}
|
|
55
64
|
```
|
|
56
65
|
|
|
57
66
|
## `"resolutions"`
|
|
@@ -60,14 +69,15 @@ The syntax is similar for `"resolutions"`, which is Yarn's alternative to `"over
|
|
|
60
69
|
|
|
61
70
|
As with `"overrides"`, _nested resolutions_ are not currently supported.
|
|
62
71
|
|
|
63
|
-
```json
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
72
|
+
```json package.json icon="file-json"
|
|
73
|
+
{
|
|
74
|
+
"name": "my-app",
|
|
75
|
+
"dependencies": {
|
|
76
|
+
"foo": "^2.0.0"
|
|
77
|
+
},
|
|
78
|
+
"resolutions": {
|
|
79
|
+
// [!code ++]
|
|
80
|
+
"bar": "~4.4.0" // [!code ++]
|
|
81
|
+
} // [!code ++]
|
|
82
|
+
}
|
|
73
83
|
```
|
|
@@ -1,6 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Scopes and registries"
|
|
3
|
+
description: "Configure private registries and scoped packages"
|
|
4
|
+
---
|
|
5
|
+
|
|
1
6
|
The default registry is `registry.npmjs.org`. This can be globally configured in `bunfig.toml`:
|
|
2
7
|
|
|
3
|
-
```toml
|
|
8
|
+
```toml bunfig.toml icon="settings"
|
|
4
9
|
[install]
|
|
5
10
|
# set default registry as a string
|
|
6
11
|
registry = "https://registry.npmjs.org"
|
|
@@ -12,7 +17,7 @@ registry = "https://username:password@registry.npmjs.org"
|
|
|
12
17
|
|
|
13
18
|
To configure a private registry scoped to a particular organization:
|
|
14
19
|
|
|
15
|
-
```toml
|
|
20
|
+
```toml bunfig.toml icon="settings"
|
|
16
21
|
[install.scopes]
|
|
17
22
|
# registry as string
|
|
18
23
|
"@myorg1" = "https://username:password@registry.myorg.com/"
|
|
@@ -27,4 +32,4 @@ To configure a private registry scoped to a particular organization:
|
|
|
27
32
|
|
|
28
33
|
### `.npmrc`
|
|
29
34
|
|
|
30
|
-
Bun also reads `.npmrc` files, [learn more](
|
|
35
|
+
Bun also reads `.npmrc` files, [learn more](/pm/npmrc).
|
|
@@ -1,10 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Security Scanner API
|
|
3
|
+
description:
|
|
4
|
+
---
|
|
5
|
+
|
|
1
6
|
Bun's package manager can scan packages for security vulnerabilities before installation, helping protect your applications from supply chain attacks and known vulnerabilities.
|
|
2
7
|
|
|
8
|
+
---
|
|
9
|
+
|
|
3
10
|
## Quick Start
|
|
4
11
|
|
|
5
12
|
Configure a security scanner in your `bunfig.toml`:
|
|
6
13
|
|
|
7
|
-
```toml
|
|
14
|
+
```toml bunfig.toml icon="settings"
|
|
8
15
|
[install.security]
|
|
9
16
|
scanner = "@acme/bun-security-scanner"
|
|
10
17
|
```
|
|
@@ -16,6 +23,8 @@ When configured, Bun will:
|
|
|
16
23
|
- Cancel installation if critical vulnerabilities are found
|
|
17
24
|
- Automatically disable auto-install for security
|
|
18
25
|
|
|
26
|
+
---
|
|
27
|
+
|
|
19
28
|
## How It Works
|
|
20
29
|
|
|
21
30
|
Security scanners analyze packages during `bun install`, `bun add`, and other package operations. They can detect:
|
|
@@ -32,6 +41,8 @@ Scanners report issues at two severity levels:
|
|
|
32
41
|
- **`fatal`** - Installation stops immediately, exits with non-zero code
|
|
33
42
|
- **`warn`** - In interactive terminals, prompts to continue; in CI, exits immediately
|
|
34
43
|
|
|
44
|
+
---
|
|
45
|
+
|
|
35
46
|
## Using Pre-built Scanners
|
|
36
47
|
|
|
37
48
|
Many security companies publish Bun security scanners as npm packages that you can install and use immediately.
|
|
@@ -40,17 +51,20 @@ Many security companies publish Bun security scanners as npm packages that you c
|
|
|
40
51
|
|
|
41
52
|
Install a security scanner from npm:
|
|
42
53
|
|
|
43
|
-
```bash
|
|
44
|
-
|
|
54
|
+
```bash terminal icon="terminal"
|
|
55
|
+
bun add -d @acme/bun-security-scanner
|
|
45
56
|
```
|
|
46
57
|
|
|
47
|
-
>
|
|
58
|
+
<Note>
|
|
59
|
+
Consult your security scanner's documentation for their specific package name and installation instructions. Most
|
|
60
|
+
scanners will be installed with `bun add`.
|
|
61
|
+
</Note>
|
|
48
62
|
|
|
49
63
|
### Configuring the Scanner
|
|
50
64
|
|
|
51
65
|
After installation, configure it in your `bunfig.toml`:
|
|
52
66
|
|
|
53
|
-
```toml
|
|
67
|
+
```toml bunfig.toml icon="settings"
|
|
54
68
|
[install.security]
|
|
55
69
|
scanner = "@acme/bun-security-scanner"
|
|
56
70
|
```
|
|
@@ -59,7 +73,7 @@ scanner = "@acme/bun-security-scanner"
|
|
|
59
73
|
|
|
60
74
|
Some enterprise scanners might support authentication and/or configuration through environment variables:
|
|
61
75
|
|
|
62
|
-
```bash
|
|
76
|
+
```bash terminal icon="terminal"
|
|
63
77
|
# This might go in ~/.bashrc, for example
|
|
64
78
|
export SECURITY_API_KEY="your-api-key"
|
|
65
79
|
|
|
@@ -76,6 +90,6 @@ For a complete example with tests and CI setup, see the official template:
|
|
|
76
90
|
|
|
77
91
|
## Related
|
|
78
92
|
|
|
79
|
-
- [Configuration (bunfig.toml)](/
|
|
80
|
-
- [Package Manager](/
|
|
93
|
+
- [Configuration (bunfig.toml)](/runtime/bunfig#install-security-scanner)
|
|
94
|
+
- [Package Manager](/installation)
|
|
81
95
|
- [Security Scanner Template](https://github.com/oven-sh/security-scanner-template)
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Workspaces"
|
|
3
|
+
description: "Develop complex monorepos with multiple independent packages"
|
|
4
|
+
---
|
|
5
|
+
|
|
1
6
|
Bun supports [`workspaces`](https://docs.npmjs.com/cli/v9/using-npm/workspaces?v=true#description) in `package.json`. Workspaces make it easy to develop complex software as a _monorepo_ consisting of several independent packages.
|
|
2
7
|
|
|
3
8
|
It's common for a monorepo to have the following structure:
|
|
@@ -37,21 +42,11 @@ In the root `package.json`, the `"workspaces"` key is used to indicate which sub
|
|
|
37
42
|
}
|
|
38
43
|
```
|
|
39
44
|
|
|
40
|
-
|
|
41
|
-
**Glob support** — Bun supports full glob syntax in `"workspaces"
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
{
|
|
46
|
-
"name": "my-project",
|
|
47
|
-
"version": "1.0.0",
|
|
48
|
-
"workspaces": [
|
|
49
|
-
"packages/**",
|
|
50
|
-
"!packages/**/test/**",
|
|
51
|
-
"!packages/**/template/**"
|
|
52
|
-
]
|
|
53
|
-
}
|
|
54
|
-
```
|
|
45
|
+
<Note>
|
|
46
|
+
**Glob support** — Bun supports full glob syntax in `"workspaces"` (see [here](/runtime/glob#supported-glob-patterns)
|
|
47
|
+
for a comprehensive list of supported syntax), _except_ for exclusions (e.g. `!**/excluded/**`), which are not
|
|
48
|
+
implemented yet.
|
|
49
|
+
</Note>
|
|
55
50
|
|
|
56
51
|
Each workspace has it's own `package.json`. When referencing other packages in the monorepo, semver or workspace protocols (e.g. `workspace:*`) can be used as the version field in your `package.json`.
|
|
57
52
|
|
|
@@ -69,10 +64,10 @@ Each workspace has it's own `package.json`. When referencing other packages in t
|
|
|
69
64
|
|
|
70
65
|
```bash
|
|
71
66
|
# Install dependencies for all workspaces starting with `pkg-` except for `pkg-c`
|
|
72
|
-
|
|
67
|
+
bun install --filter "pkg-*" --filter "!pkg-c"
|
|
73
68
|
|
|
74
69
|
# Paths can also be used. This is equivalent to the command above.
|
|
75
|
-
|
|
70
|
+
bun install --filter "./packages/pkg-*" --filter "!pkg-c" # or --filter "!./packages/pkg-c"
|
|
76
71
|
```
|
|
77
72
|
|
|
78
73
|
When publishing, `workspace:` versions are replaced by the package's `package.json` version,
|
|
@@ -93,7 +88,7 @@ Workspaces have a couple major benefits.
|
|
|
93
88
|
|
|
94
89
|
- **Code can be split into logical parts.** If one package relies on another, you can simply add it as a dependency in `package.json`. If package `b` depends on `a`, `bun install` will install your local `packages/a` directory into `node_modules` instead of downloading it from the npm registry.
|
|
95
90
|
- **Dependencies can be de-duplicated.** If `a` and `b` share a common dependency, it will be _hoisted_ to the root `node_modules` directory. This reduces redundant disk usage and minimizes "dependency hell" issues associated with having multiple versions of a package installed simultaneously.
|
|
96
|
-
- **Run scripts in multiple packages.** You can use the [`--filter` flag](
|
|
91
|
+
- **Run scripts in multiple packages.** You can use the [`--filter` flag](/pm/filter) to easily run `package.json` scripts in multiple packages in your workspace, , or `--workspaces` to run scripts across all workspaces.
|
|
97
92
|
|
|
98
93
|
## Share versions with Catalogs
|
|
99
94
|
|
|
@@ -101,14 +96,14 @@ When many packages need the same dependency versions, catalogs let you define
|
|
|
101
96
|
those versions once in the root `package.json` and reference them from your
|
|
102
97
|
workspaces using the `catalog:` protocol. Updating the catalog automatically
|
|
103
98
|
updates every package that references it. See
|
|
104
|
-
[Catalogs](
|
|
99
|
+
[Catalogs](/pm/catalogs) for details.
|
|
105
100
|
|
|
106
|
-
|
|
101
|
+
<Note>
|
|
107
102
|
⚡️ **Speed** — Installs are fast, even for big monorepos. Bun installs the [Remix](https://github.com/remix-run/remix) monorepo in about `500ms` on Linux.
|
|
108
103
|
|
|
109
104
|
- 28x faster than `npm install`
|
|
110
105
|
- 12x faster than `yarn install` (v1)
|
|
111
106
|
- 8x faster than `pnpm install`
|
|
112
107
|
|
|
113
|
-
|
|
114
|
-
|
|
108
|
+
<Image src="https://user-images.githubusercontent.com/709451/212829600-77df9544-7c9f-4d8d-a984-b2cd0fd2aa52.png" />
|
|
109
|
+
</Note>
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Benchmarking
|
|
3
|
+
description: How to benchmark Bun
|
|
4
|
+
---
|
|
5
|
+
|
|
1
6
|
Bun is designed for speed. Hot paths are extensively profiled and benchmarked. The source code for all of Bun's public benchmarks can be found in the [`/bench`](https://github.com/oven-sh/bun/tree/main/bench) directory of the Bun repo.
|
|
2
7
|
|
|
3
8
|
## Measuring time
|
|
@@ -22,8 +27,6 @@ When writing your own benchmarks, it's important to choose the right tool.
|
|
|
22
27
|
|
|
23
28
|
Bun has two heaps. One heap is for the JavaScript runtime and the other heap is for everything else.
|
|
24
29
|
|
|
25
|
-
{% anchor id="bunjsc" /%}
|
|
26
|
-
|
|
27
30
|
### JavaScript heap stats
|
|
28
31
|
|
|
29
32
|
The `bun:jsc` module exposes a few functions for measuring memory usage:
|
|
@@ -33,9 +36,9 @@ import { heapStats } from "bun:jsc";
|
|
|
33
36
|
console.log(heapStats());
|
|
34
37
|
```
|
|
35
38
|
|
|
36
|
-
|
|
39
|
+
<Accordion title="View example statistics">
|
|
37
40
|
|
|
38
|
-
```ts
|
|
41
|
+
```ts expandable icon="/icons/typescript.svg"
|
|
39
42
|
{
|
|
40
43
|
heapSize: 1657575,
|
|
41
44
|
heapCapacity: 2872775,
|
|
@@ -138,13 +141,13 @@ console.log(heapStats());
|
|
|
138
141
|
}
|
|
139
142
|
```
|
|
140
143
|
|
|
141
|
-
|
|
144
|
+
</Accordion>
|
|
142
145
|
|
|
143
146
|
JavaScript is a garbage-collected language, not reference counted. It's normal and correct for objects to not be freed immediately in all cases, though it's not normal for objects to never be freed.
|
|
144
147
|
|
|
145
148
|
To force garbage collection to run manually:
|
|
146
149
|
|
|
147
|
-
```
|
|
150
|
+
```ts
|
|
148
151
|
Bun.gc(true); // synchronous
|
|
149
152
|
Bun.gc(false); // asynchronous
|
|
150
153
|
```
|
|
@@ -165,22 +168,34 @@ To view the snapshot, open the `heap.json` file in Safari's Developer Tools (or
|
|
|
165
168
|
3. Click "JavaScript Allocations" in the menu on the left. It might not be visible until you click the pencil icon to show all the timelines
|
|
166
169
|
4. Click "Import" and select your heap snapshot JSON
|
|
167
170
|
|
|
168
|
-
|
|
171
|
+
<Frame>
|
|
172
|
+
<img
|
|
173
|
+
src="https://user-images.githubusercontent.com/709451/204428943-ba999e8f-8984-4f23-97cb-b4e3e280363e.png"
|
|
174
|
+
alt="Importing a heap snapshot"
|
|
175
|
+
/>
|
|
176
|
+
</Frame>
|
|
169
177
|
|
|
170
178
|
Once imported, you should see something like this:
|
|
171
179
|
|
|
172
|
-
|
|
180
|
+
<Frame>
|
|
181
|
+
<img
|
|
182
|
+
alt="Viewing heap snapshot in Safari"
|
|
183
|
+
src="https://user-images.githubusercontent.com/709451/204429337-b0d8935f-3509-4071-b991-217794d1fb27.png"
|
|
184
|
+
caption="Viewing heap snapshot in Safari Dev Tools"
|
|
185
|
+
/>
|
|
186
|
+
</Frame>
|
|
173
187
|
|
|
174
|
-
> The [web debugger](
|
|
188
|
+
> The [web debugger](/runtime/debugger#inspect) also offers the timeline feature which allows you to track and examine the memory usage of the running debug session.
|
|
175
189
|
|
|
176
190
|
### Native heap stats
|
|
177
191
|
|
|
178
192
|
Bun uses mimalloc for the other heap. To report a summary of non-JavaScript memory usage, set the `MIMALLOC_SHOW_STATS=1` environment variable. and stats will print on exit.
|
|
179
193
|
|
|
180
|
-
```
|
|
194
|
+
```sh terminal icon="terminal"
|
|
181
195
|
MIMALLOC_SHOW_STATS=1 bun script.js
|
|
196
|
+
```
|
|
182
197
|
|
|
183
|
-
|
|
198
|
+
```txt
|
|
184
199
|
heap stats: peak total freed current unit count
|
|
185
200
|
reserved: 64.0 MiB 64.0 MiB 0 64.0 MiB not all freed!
|
|
186
201
|
committed: 64.0 MiB 64.0 MiB 0 64.0 MiB not all freed!
|