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.
Files changed (370) hide show
  1. package/bun.d.ts +102 -6
  2. package/docs/README.md +28 -0
  3. package/docs/bundler/bytecode.mdx +465 -0
  4. package/docs/bundler/{css.md → css.mdx} +97 -101
  5. package/docs/bundler/esbuild.mdx +253 -0
  6. package/docs/bundler/{executables.md → executables.mdx} +130 -221
  7. package/docs/bundler/fullstack.mdx +1064 -0
  8. package/docs/bundler/{hmr.md → hot-reloading.mdx} +74 -79
  9. package/docs/bundler/{html.md → html-static.mdx} +148 -111
  10. package/docs/bundler/index.mdx +1499 -0
  11. package/docs/bundler/loaders.mdx +356 -0
  12. package/docs/bundler/{macros.md → macros.mdx} +83 -84
  13. package/docs/bundler/minifier.mdx +1306 -0
  14. package/docs/bundler/plugins.mdx +411 -0
  15. package/docs/feedback.mdx +85 -0
  16. package/docs/guides/binary/{arraybuffer-to-array.md → arraybuffer-to-array.mdx} +3 -1
  17. package/docs/guides/binary/{arraybuffer-to-blob.md → arraybuffer-to-blob.mdx} +3 -1
  18. package/docs/guides/binary/{arraybuffer-to-buffer.md → arraybuffer-to-buffer.mdx} +3 -1
  19. package/docs/guides/binary/{arraybuffer-to-string.md → arraybuffer-to-string.mdx} +3 -1
  20. package/docs/guides/binary/{arraybuffer-to-typedarray.md → arraybuffer-to-typedarray.mdx} +3 -1
  21. package/docs/guides/binary/{blob-to-arraybuffer.md → blob-to-arraybuffer.mdx} +3 -1
  22. package/docs/guides/binary/{blob-to-dataview.md → blob-to-dataview.mdx} +3 -1
  23. package/docs/guides/binary/{blob-to-stream.md → blob-to-stream.mdx} +3 -1
  24. package/docs/guides/binary/{blob-to-string.md → blob-to-string.mdx} +3 -1
  25. package/docs/guides/binary/{blob-to-typedarray.md → blob-to-typedarray.mdx} +3 -1
  26. package/docs/guides/binary/{buffer-to-arraybuffer.md → buffer-to-arraybuffer.mdx} +3 -1
  27. package/docs/guides/binary/{buffer-to-blob.md → buffer-to-blob.mdx} +3 -1
  28. package/docs/guides/binary/{buffer-to-readablestream.md → buffer-to-readablestream.mdx} +3 -1
  29. package/docs/guides/binary/{buffer-to-string.md → buffer-to-string.mdx} +3 -1
  30. package/docs/guides/binary/{buffer-to-typedarray.md → buffer-to-typedarray.mdx} +3 -1
  31. package/docs/guides/binary/{dataview-to-string.md → dataview-to-string.mdx} +3 -1
  32. package/docs/guides/binary/{typedarray-to-arraybuffer.md → typedarray-to-arraybuffer.mdx} +3 -1
  33. package/docs/guides/binary/{typedarray-to-blob.md → typedarray-to-blob.mdx} +3 -1
  34. package/docs/guides/binary/{typedarray-to-buffer.md → typedarray-to-buffer.mdx} +3 -1
  35. package/docs/guides/binary/{typedarray-to-dataview.md → typedarray-to-dataview.mdx} +3 -1
  36. package/docs/guides/binary/{typedarray-to-readablestream.md → typedarray-to-readablestream.mdx} +3 -1
  37. package/docs/guides/binary/{typedarray-to-string.md → typedarray-to-string.mdx} +3 -1
  38. package/docs/guides/deployment/aws-lambda.mdx +204 -0
  39. package/docs/guides/deployment/digital-ocean.mdx +161 -0
  40. package/docs/guides/deployment/google-cloud-run.mdx +197 -0
  41. package/docs/guides/deployment/{railway.md → railway.mdx} +42 -54
  42. package/docs/guides/deployment/render.mdx +82 -0
  43. package/docs/guides/deployment/vercel.mdx +99 -0
  44. package/docs/guides/ecosystem/{astro.md → astro.mdx} +16 -6
  45. package/docs/guides/ecosystem/{discordjs.md → discordjs.mdx} +21 -18
  46. package/docs/guides/ecosystem/{docker.md → docker.mdx} +25 -14
  47. package/docs/guides/ecosystem/{drizzle.md → drizzle.mdx} +32 -22
  48. package/docs/guides/ecosystem/{edgedb.md → edgedb.mdx} +63 -34
  49. package/docs/guides/ecosystem/{elysia.md → elysia.mdx} +11 -11
  50. package/docs/guides/ecosystem/{express.md → express.mdx} +12 -9
  51. package/docs/guides/ecosystem/{hono.md → hono.mdx} +16 -8
  52. package/docs/guides/ecosystem/{mongoose.md → mongoose.mdx} +26 -21
  53. package/docs/guides/ecosystem/{neon-drizzle.md → neon-drizzle.mdx} +49 -35
  54. package/docs/guides/ecosystem/{neon-serverless-postgres.md → neon-serverless-postgres.mdx} +16 -11
  55. package/docs/guides/ecosystem/{nextjs.md → nextjs.mdx} +18 -10
  56. package/docs/guides/ecosystem/{nuxt.md → nuxt.mdx} +45 -11
  57. package/docs/guides/ecosystem/{pm2.md → pm2.mdx} +7 -9
  58. package/docs/guides/ecosystem/prisma-postgres.mdx +169 -0
  59. package/docs/guides/ecosystem/prisma.mdx +164 -0
  60. package/docs/guides/ecosystem/{qwik.md → qwik.mdx} +18 -11
  61. package/docs/guides/ecosystem/{react.md → react.mdx} +9 -7
  62. package/docs/guides/ecosystem/{remix.md → remix.mdx} +45 -26
  63. package/docs/guides/ecosystem/{sentry.md → sentry.mdx} +7 -5
  64. package/docs/guides/ecosystem/{solidstart.md → solidstart.mdx} +21 -13
  65. package/docs/guides/ecosystem/{ssr-react.md → ssr-react.mdx} +9 -11
  66. package/docs/guides/ecosystem/{stric.md → stric.mdx} +16 -17
  67. package/docs/guides/ecosystem/{sveltekit.md → sveltekit.mdx} +42 -29
  68. package/docs/guides/ecosystem/{systemd.md → systemd.mdx} +27 -26
  69. package/docs/guides/ecosystem/upstash.mdx +87 -0
  70. package/docs/guides/ecosystem/{vite.md → vite.mdx} +20 -14
  71. package/docs/guides/html-rewriter/{extract-links.md → extract-links.mdx} +11 -7
  72. package/docs/guides/html-rewriter/{extract-social-meta.md → extract-social-meta.mdx} +6 -2
  73. package/docs/guides/http/{cluster.md → cluster.mdx} +10 -7
  74. package/docs/guides/http/{fetch-unix.md → fetch-unix.mdx} +5 -3
  75. package/docs/guides/http/{fetch.md → fetch.mdx} +5 -3
  76. package/docs/guides/http/{file-uploads.md → file-uploads.mdx} +18 -15
  77. package/docs/guides/http/{hot.md → hot.mdx} +9 -7
  78. package/docs/guides/http/{proxy.md → proxy.mdx} +7 -5
  79. package/docs/guides/http/{server.md → server.mdx} +4 -2
  80. package/docs/guides/http/{simple.md → simple.mdx} +4 -2
  81. package/docs/guides/http/{stream-file.md → stream-file.mdx} +6 -4
  82. package/docs/guides/http/{stream-iterator.md → stream-iterator.mdx} +5 -3
  83. package/docs/guides/http/{stream-node-streams-in-bun.md → stream-node-streams-in-bun.mdx} +4 -2
  84. package/docs/guides/http/{tls.md → tls.mdx} +5 -3
  85. package/docs/guides/index.mdx +10 -0
  86. package/docs/guides/install/{add-dev.md → add-dev.mdx} +8 -6
  87. package/docs/guides/install/add-git.mdx +38 -0
  88. package/docs/guides/install/{add-optional.md → add-optional.mdx} +7 -5
  89. package/docs/guides/install/{add-peer.md → add-peer.mdx} +13 -11
  90. package/docs/guides/install/{add-tarball.md → add-tarball.mdx} +7 -5
  91. package/docs/guides/install/{add.md → add.mdx} +12 -10
  92. package/docs/guides/install/{azure-artifacts.md → azure-artifacts.mdx} +15 -12
  93. package/docs/guides/{runtime/cicd.md → install/cicd.mdx} +13 -13
  94. package/docs/guides/install/{custom-registry.md → custom-registry.mdx} +6 -4
  95. package/docs/guides/install/{from-npm-install-to-bun-install.md → from-npm-install-to-bun-install.mdx} +50 -34
  96. package/docs/guides/install/{git-diff-bun-lockfile.md → git-diff-bun-lockfile.mdx} +14 -11
  97. package/docs/guides/install/{jfrog-artifactory.md → jfrog-artifactory.mdx} +4 -4
  98. package/docs/guides/install/{npm-alias.md → npm-alias.mdx} +6 -4
  99. package/docs/guides/install/{registry-scope.md → registry-scope.mdx} +6 -4
  100. package/docs/guides/install/{trusted.md → trusted.mdx} +22 -18
  101. package/docs/guides/install/{workspaces.md → workspaces.mdx} +13 -13
  102. package/docs/guides/install/{yarnlock.md → yarnlock.mdx} +15 -9
  103. package/docs/guides/process/{argv.md → argv.mdx} +17 -9
  104. package/docs/guides/process/{ctrl-c.md → ctrl-c.mdx} +4 -2
  105. package/docs/guides/process/{ipc.md → ipc.mdx} +13 -10
  106. package/docs/guides/process/{nanoseconds.md → nanoseconds.mdx} +3 -1
  107. package/docs/guides/process/{os-signals.md → os-signals.mdx} +3 -1
  108. package/docs/guides/process/{spawn-stderr.md → spawn-stderr.mdx} +4 -1
  109. package/docs/guides/process/{spawn-stdout.md → spawn-stdout.mdx} +3 -1
  110. package/docs/guides/process/{spawn.md → spawn.mdx} +3 -1
  111. package/docs/guides/process/{stdin.md → stdin.mdx} +15 -7
  112. package/docs/guides/read-file/{arraybuffer.md → arraybuffer.mdx} +5 -3
  113. package/docs/guides/read-file/{buffer.md → buffer.mdx} +4 -2
  114. package/docs/guides/read-file/{exists.md → exists.mdx} +4 -2
  115. package/docs/guides/read-file/{json.md → json.mdx} +4 -2
  116. package/docs/guides/read-file/{mime.md → mime.mdx} +3 -1
  117. package/docs/guides/read-file/{stream.md → stream.mdx} +3 -1
  118. package/docs/guides/read-file/{string.md → string.mdx} +3 -1
  119. package/docs/guides/read-file/{uint8array.md → uint8array.mdx} +3 -1
  120. package/docs/guides/read-file/{watch.md → watch.mdx} +6 -8
  121. package/docs/guides/runtime/{build-time-constants.md → build-time-constants.mdx} +24 -22
  122. package/docs/guides/{install/cicd.md → runtime/cicd.mdx} +11 -7
  123. package/docs/guides/runtime/{codesign-macos-executable.md → codesign-macos-executable.mdx} +14 -9
  124. package/docs/guides/runtime/{define-constant.md → define-constant.mdx} +20 -16
  125. package/docs/guides/runtime/{delete-directory.md → delete-directory.mdx} +5 -3
  126. package/docs/guides/runtime/{delete-file.md → delete-file.mdx} +4 -2
  127. package/docs/guides/runtime/{heap-snapshot.md → heap-snapshot.mdx} +5 -3
  128. package/docs/guides/runtime/{import-html.md → import-html.mdx} +4 -2
  129. package/docs/guides/runtime/{import-json.md → import-json.mdx} +6 -4
  130. package/docs/guides/runtime/{import-toml.md → import-toml.mdx} +5 -3
  131. package/docs/guides/runtime/{import-yaml.md → import-yaml.mdx} +9 -7
  132. package/docs/guides/runtime/{read-env.md → read-env.mdx} +10 -5
  133. package/docs/guides/runtime/{set-env.md → set-env.mdx} +14 -10
  134. package/docs/guides/runtime/{shell.md → shell.mdx} +6 -4
  135. package/docs/guides/runtime/{timezone.md → timezone.mdx} +10 -7
  136. package/docs/guides/runtime/{tsconfig-paths.md → tsconfig-paths.mdx} +5 -3
  137. package/docs/guides/runtime/{typescript.md → typescript.mdx} +8 -6
  138. package/docs/guides/runtime/{vscode-debugger.md → vscode-debugger.mdx} +12 -11
  139. package/docs/guides/runtime/{web-debugger.md → web-debugger.mdx} +39 -18
  140. package/docs/guides/streams/{node-readable-to-arraybuffer.md → node-readable-to-arraybuffer.mdx} +3 -1
  141. package/docs/guides/streams/{node-readable-to-blob.md → node-readable-to-blob.mdx} +3 -1
  142. package/docs/guides/streams/{node-readable-to-json.md → node-readable-to-json.mdx} +3 -1
  143. package/docs/guides/streams/{node-readable-to-string.md → node-readable-to-string.mdx} +3 -1
  144. package/docs/guides/streams/{node-readable-to-uint8array.md → node-readable-to-uint8array.mdx} +3 -1
  145. package/docs/guides/streams/{to-array.md → to-array.mdx} +3 -1
  146. package/docs/guides/streams/{to-arraybuffer.md → to-arraybuffer.mdx} +3 -1
  147. package/docs/guides/streams/{to-blob.md → to-blob.mdx} +3 -1
  148. package/docs/guides/streams/{to-buffer.md → to-buffer.mdx} +3 -1
  149. package/docs/guides/streams/{to-json.md → to-json.mdx} +4 -2
  150. package/docs/guides/streams/{to-string.md → to-string.mdx} +3 -1
  151. package/docs/guides/streams/{to-typedarray.md → to-typedarray.mdx} +3 -1
  152. package/docs/guides/test/{bail.md → bail.mdx} +7 -5
  153. package/docs/guides/test/{coverage-threshold.md → coverage-threshold.mdx} +14 -7
  154. package/docs/guides/test/{coverage.md → coverage.mdx} +9 -4
  155. package/docs/guides/test/{happy-dom.md → happy-dom.mdx} +13 -8
  156. package/docs/guides/test/{migrate-from-jest.md → migrate-from-jest.mdx} +19 -37
  157. package/docs/guides/test/{mock-clock.md → mock-clock.mdx} +3 -1
  158. package/docs/guides/test/{mock-functions.md → mock-functions.mdx} +7 -5
  159. package/docs/guides/test/{rerun-each.md → rerun-each.mdx} +5 -3
  160. package/docs/guides/test/{run-tests.md → run-tests.mdx} +16 -11
  161. package/docs/guides/test/{skip-tests.md → skip-tests.mdx} +8 -4
  162. package/docs/guides/test/{snapshot.md → snapshot.mdx} +20 -13
  163. package/docs/guides/test/spy-on.mdx +49 -0
  164. package/docs/guides/test/{svelte-test.md → svelte-test.mdx} +16 -23
  165. package/docs/guides/test/{testing-library.md → testing-library.mdx} +18 -17
  166. package/docs/guides/test/{timeout.md → timeout.mdx} +5 -3
  167. package/docs/guides/test/{todo-tests.md → todo-tests.mdx} +13 -6
  168. package/docs/guides/test/{update-snapshots.md → update-snapshots.mdx} +9 -6
  169. package/docs/guides/test/{watch-mode.md → watch-mode.mdx} +9 -4
  170. package/docs/guides/util/{base64.md → base64.mdx} +3 -1
  171. package/docs/guides/util/{deep-equals.md → deep-equals.mdx} +5 -3
  172. package/docs/guides/util/{deflate.md → deflate.mdx} +3 -1
  173. package/docs/guides/util/{detect-bun.md → detect-bun.mdx} +3 -1
  174. package/docs/guides/util/{entrypoint.md → entrypoint.mdx} +4 -2
  175. package/docs/guides/util/{escape-html.md → escape-html.mdx} +3 -1
  176. package/docs/guides/util/{file-url-to-path.md → file-url-to-path.mdx} +3 -1
  177. package/docs/guides/util/{gzip.md → gzip.mdx} +3 -1
  178. package/docs/guides/util/{hash-a-password.md → hash-a-password.mdx} +3 -1
  179. package/docs/guides/util/{import-meta-dir.md → import-meta-dir.mdx} +4 -2
  180. package/docs/guides/util/{import-meta-file.md → import-meta-file.mdx} +4 -2
  181. package/docs/guides/util/{import-meta-path.md → import-meta-path.mdx} +4 -2
  182. package/docs/guides/util/{javascript-uuid.md → javascript-uuid.mdx} +3 -1
  183. package/docs/guides/util/{main.md → main.mdx} +19 -8
  184. package/docs/guides/util/{path-to-file-url.md → path-to-file-url.mdx} +3 -1
  185. package/docs/guides/util/{sleep.md → sleep.mdx} +3 -1
  186. package/docs/guides/util/{version.md → version.mdx} +6 -4
  187. package/docs/guides/util/{which-path-to-executable-bin.md → which-path-to-executable-bin.mdx} +4 -2
  188. package/docs/guides/websocket/{compression.md → compression.mdx} +5 -3
  189. package/docs/guides/websocket/{context.md → context.mdx} +9 -12
  190. package/docs/guides/websocket/{pubsub.md → pubsub.mdx} +5 -6
  191. package/docs/guides/websocket/{simple.md → simple.mdx} +5 -3
  192. package/docs/guides/write-file/{append.md → append.mdx} +3 -1
  193. package/docs/guides/write-file/{basic.md → basic.mdx} +3 -1
  194. package/docs/guides/write-file/{blob.md → blob.mdx} +3 -1
  195. package/docs/guides/write-file/{cat.md → cat.mdx} +4 -2
  196. package/docs/guides/write-file/{file-cp.md → file-cp.mdx} +3 -1
  197. package/docs/guides/write-file/{filesink.md → filesink.mdx} +3 -1
  198. package/docs/guides/write-file/{response.md → response.mdx} +3 -1
  199. package/docs/guides/write-file/{stdout.md → stdout.mdx} +3 -1
  200. package/docs/guides/write-file/{stream.md → stream.mdx} +3 -1
  201. package/docs/guides/write-file/{unlink.md → unlink.mdx} +3 -1
  202. package/docs/{index.md → index.mdx} +97 -41
  203. package/docs/installation.mdx +365 -0
  204. package/docs/{cli/bunx.md → pm/bunx.mdx} +25 -31
  205. package/docs/{install/catalogs.md → pm/catalogs.mdx} +18 -24
  206. package/docs/{cli/add.md → pm/cli/add.mdx} +61 -55
  207. package/docs/{install/audit.md → pm/cli/audit.mdx} +11 -8
  208. package/docs/{cli/install.md → pm/cli/install.mdx} +208 -81
  209. package/docs/{cli/link.md → pm/cli/link.mdx} +27 -19
  210. package/docs/{cli/outdated.md → pm/cli/outdated.mdx} +119 -12
  211. package/docs/{install/patch.md → pm/cli/patch.mdx} +25 -15
  212. package/docs/{cli/pm.md → pm/cli/pm.mdx} +96 -62
  213. package/docs/{cli/publish.md → pm/cli/publish.mdx} +38 -35
  214. package/docs/pm/cli/remove.mdx +16 -0
  215. package/docs/{cli/update.md → pm/cli/update.mdx} +26 -15
  216. package/docs/{cli/why.md → pm/cli/why.mdx} +27 -10
  217. package/docs/{cli/filter.md → pm/filter.mdx} +26 -14
  218. package/docs/{install/cache.md → pm/global-cache.mdx} +25 -12
  219. package/docs/{install/isolated.md → pm/isolated-installs.mdx} +32 -24
  220. package/docs/{install/lifecycle.md → pm/lifecycle.mdx} +20 -9
  221. package/docs/{install/lockfile.md → pm/lockfile.mdx} +18 -12
  222. package/docs/{install/npmrc.md → pm/npmrc.mdx} +30 -24
  223. package/docs/{install/overrides.md → pm/overrides.mdx} +47 -37
  224. package/docs/{install/registries.md → pm/scopes-registries.mdx} +8 -3
  225. package/docs/{install/security-scanner-api.md → pm/security-scanner-api.mdx} +22 -8
  226. package/docs/{install/workspaces.md → pm/workspaces.mdx} +17 -22
  227. package/docs/project/{benchmarking.md → benchmarking.mdx} +26 -11
  228. package/docs/project/{bindgen.md → bindgen.mdx} +12 -14
  229. package/docs/project/{building-windows.md → building-windows.mdx} +18 -47
  230. package/docs/project/{contributing.md → contributing.mdx} +56 -60
  231. package/docs/project/feedback.mdx +20 -0
  232. package/docs/project/license.mdx +78 -0
  233. package/docs/project/roadmap.mdx +8 -0
  234. package/docs/quickstart.mdx +240 -0
  235. package/docs/runtime/{autoimport.md → auto-install.mdx} +34 -31
  236. package/docs/{api/binary-data.md → runtime/binary-data.mdx} +77 -269
  237. package/docs/runtime/bun-apis.mdx +59 -0
  238. package/docs/runtime/{bunfig.md → bunfig.mdx} +95 -225
  239. package/docs/{api/cc.md → runtime/c-compiler.mdx} +16 -9
  240. package/docs/{api/spawn.md → runtime/child-process.mdx} +69 -119
  241. package/docs/{api/color.md → runtime/color.mdx} +6 -1
  242. package/docs/{api/console.md → runtime/console.mdx} +17 -7
  243. package/docs/{api/cookie.md → runtime/cookies.mdx} +24 -19
  244. package/docs/runtime/{debugger.md → debugger.mdx} +61 -51
  245. package/docs/runtime/environment-variables.mdx +214 -0
  246. package/docs/{api/ffi.md → runtime/ffi.mdx} +53 -45
  247. package/docs/{api/file-io.md → runtime/file-io.mdx} +41 -101
  248. package/docs/{api/file-system-router.md → runtime/file-system-router.mdx} +8 -2
  249. package/docs/{bundler/loaders.md → runtime/file-types.mdx} +56 -112
  250. package/docs/{api/glob.md → runtime/glob.mdx} +4 -1
  251. package/docs/runtime/globals.mdx +72 -0
  252. package/docs/{api/hashing.md → runtime/hashing.mdx} +18 -22
  253. package/docs/{api/html-rewriter.md → runtime/html-rewriter.mdx} +36 -30
  254. package/docs/runtime/http/cookies.mdx +79 -0
  255. package/docs/runtime/http/error-handling.mdx +40 -0
  256. package/docs/runtime/http/metrics.mdx +36 -0
  257. package/docs/runtime/http/routing.mdx +289 -0
  258. package/docs/runtime/http/server.mdx +647 -0
  259. package/docs/runtime/http/tls.mdx +101 -0
  260. package/docs/{api/websockets.md → runtime/http/websockets.mdx} +62 -231
  261. package/docs/{cli/run.md → runtime/index.mdx} +70 -108
  262. package/docs/runtime/jsx.mdx +115 -0
  263. package/docs/runtime/{modules.md → module-resolution.mdx} +83 -61
  264. package/docs/{api/dns.md → runtime/networking/dns.mdx} +23 -22
  265. package/docs/{api/fetch.md → runtime/networking/fetch.mdx} +10 -5
  266. package/docs/{api/tcp.md → runtime/networking/tcp.mdx} +59 -41
  267. package/docs/{api/udp.md → runtime/networking/udp.mdx} +14 -8
  268. package/docs/{api/node-api.md → runtime/node-api.mdx} +5 -0
  269. package/docs/runtime/{nodejs-apis.md → nodejs-compat.mdx} +9 -4
  270. package/docs/{bundler/plugins.md → runtime/plugins.mdx} +17 -61
  271. package/docs/{api/redis.md → runtime/redis.mdx} +65 -80
  272. package/docs/{api/s3.md → runtime/s3.mdx} +79 -66
  273. package/docs/{api/secrets.md → runtime/secrets.mdx} +27 -10
  274. package/docs/{api/semver.md → runtime/semver.mdx} +9 -4
  275. package/docs/runtime/{shell.md → shell.mdx} +52 -20
  276. package/docs/{api/sql.md → runtime/sql.mdx} +129 -99
  277. package/docs/{api/sqlite.md → runtime/sqlite.mdx} +162 -157
  278. package/docs/{api/streams.md → runtime/streams.mdx} +33 -31
  279. package/docs/{cli/bun-create.md → runtime/templating/create.mdx} +74 -143
  280. package/docs/{cli/init.md → runtime/templating/init.mdx} +24 -51
  281. package/docs/{api/transpiler.md → runtime/transpiler.mdx} +50 -38
  282. package/docs/{typescript.md → runtime/typescript.mdx} +7 -2
  283. package/docs/{api/utils.md → runtime/utils.mdx} +81 -50
  284. package/docs/runtime/{hot.md → watch-mode.mdx} +53 -37
  285. package/docs/runtime/web-apis.mdx +29 -0
  286. package/docs/{api/workers.md → runtime/workers.mdx} +28 -22
  287. package/docs/{api/yaml.md → runtime/yaml.mdx} +33 -232
  288. package/docs/snippets/cli/add.mdx +166 -0
  289. package/docs/snippets/cli/build.mdx +196 -0
  290. package/docs/snippets/cli/feedback.mdx +17 -0
  291. package/docs/snippets/cli/init.mdx +84 -0
  292. package/docs/snippets/cli/install.mdx +173 -0
  293. package/docs/snippets/cli/link.mdx +163 -0
  294. package/docs/snippets/cli/outdated.mdx +140 -0
  295. package/docs/snippets/cli/patch.mdx +171 -0
  296. package/docs/snippets/cli/publish.mdx +198 -0
  297. package/docs/snippets/cli/remove.mdx +146 -0
  298. package/docs/snippets/cli/run.mdx +293 -0
  299. package/docs/snippets/cli/test.mdx +100 -0
  300. package/docs/snippets/cli/update.mdx +144 -0
  301. package/docs/snippets/product-card.mdx +32 -0
  302. package/docs/snippets/product-tiles.mdx +94 -0
  303. package/docs/test/code-coverage.mdx +409 -0
  304. package/docs/test/configuration.mdx +467 -0
  305. package/docs/test/{time.md → dates-times.mdx} +23 -20
  306. package/docs/test/{discovery.md → discovery.mdx} +15 -10
  307. package/docs/test/dom.mdx +226 -0
  308. package/docs/{cli/test.md → test/index.mdx} +77 -94
  309. package/docs/test/lifecycle.mdx +348 -0
  310. package/docs/test/mocks.mdx +637 -0
  311. package/docs/test/{reporters.md → reporters.mdx} +15 -15
  312. package/docs/test/runtime-behavior.mdx +342 -0
  313. package/docs/test/snapshots.mdx +434 -0
  314. package/docs/test/writing-tests.mdx +635 -0
  315. package/docs/typescript.mdx +54 -0
  316. package/package.json +8 -6
  317. package/test.d.ts +2 -2
  318. package/docs/api/file.md +0 -19
  319. package/docs/api/globals.md +0 -387
  320. package/docs/api/http.md +0 -1408
  321. package/docs/api/import-meta.md +0 -69
  322. package/docs/benchmarks.md +0 -120
  323. package/docs/bun-flavored-toml.md +0 -42
  324. package/docs/bundler/css_modules.md +0 -145
  325. package/docs/bundler/fullstack.md +0 -418
  326. package/docs/bundler/index.md +0 -1735
  327. package/docs/bundler/intro.md +0 -75
  328. package/docs/bundler/vs-esbuild.md +0 -1127
  329. package/docs/cli/bun-completions.md +0 -3
  330. package/docs/cli/bun-install.md +0 -349
  331. package/docs/cli/bun-upgrade.md +0 -39
  332. package/docs/cli/info.md +0 -65
  333. package/docs/cli/patch-commit.md +0 -11
  334. package/docs/cli/remove.md +0 -7
  335. package/docs/cli/unlink.md +0 -9
  336. package/docs/contributing/upgrading-webkit.md +0 -57
  337. package/docs/ecosystem/elysia.md +0 -24
  338. package/docs/ecosystem/express.md +0 -37
  339. package/docs/ecosystem/hono.md +0 -18
  340. package/docs/ecosystem/react.md +0 -65
  341. package/docs/ecosystem/stric.md +0 -38
  342. package/docs/guides/ecosystem/prisma.md +0 -141
  343. package/docs/guides/ecosystem/render.md +0 -79
  344. package/docs/guides/install/add-git.md +0 -36
  345. package/docs/guides/test/spy-on.md +0 -46
  346. package/docs/install/index.md +0 -248
  347. package/docs/installation.md +0 -327
  348. package/docs/project/asan.md +0 -124
  349. package/docs/project/internals/build-process-for-ci.md +0 -75
  350. package/docs/project/licensing.md +0 -73
  351. package/docs/project/roadmap.md +0 -87
  352. package/docs/quickstart.md +0 -157
  353. package/docs/runtime/bun-apis.md +0 -207
  354. package/docs/runtime/env.md +0 -253
  355. package/docs/runtime/index.md +0 -312
  356. package/docs/runtime/jsx.md +0 -385
  357. package/docs/runtime/loaders.md +0 -130
  358. package/docs/runtime/plugins.md +0 -561
  359. package/docs/runtime/typescript.md +0 -139
  360. package/docs/runtime/web-apis.md +0 -128
  361. package/docs/test/configuration.md +0 -154
  362. package/docs/test/coverage.md +0 -142
  363. package/docs/test/dom.md +0 -75
  364. package/docs/test/examples/concurrent-test-glob.md +0 -132
  365. package/docs/test/hot.md +0 -15
  366. package/docs/test/lifecycle.md +0 -81
  367. package/docs/test/mocks.md +0 -313
  368. package/docs/test/runtime-behavior.md +0 -95
  369. package/docs/test/snapshots.md +0 -68
  370. 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-diff
29
- {
30
- "name": "my-app",
31
- "version": "1.0.0",
32
- + "trustedDependencies": ["node-sass"]
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
- $ bun install --ignore-scripts
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
- $ bun install --lockfile-only
16
+ ```bash terminal icon="terminal"
17
+ bun install --lockfile-only
13
18
  ```
14
19
 
15
- {% callout %}
16
- **Note** - using `--lockfile-only` will still populate the global install cache with registry metadata and git/tarball dependencies.
17
- {% /callout %}
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
- $ bun install --no-save
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
- {% codetabs %}
35
+ <CodeGroup>
30
36
 
31
- ```bash#CLI flag
32
- $ bun install --yarn
37
+ ```bash terminal icon="terminal"
38
+ bun install --yarn
33
39
  ```
34
40
 
35
- ```toml#bunfig.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
- {% /codetabs %}
48
+ </CodeGroup>
43
49
 
44
50
  #### Text-based lockfile
45
51
 
@@ -1,49 +1,55 @@
1
- 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.
1
+ ---
2
+ title: .npmrc support
3
+ description:
4
+ ---
2
5
 
3
- {% callout %}
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
- **NOTE**: We recommend migrating your `.npmrc` file to Bun's [`bunfig.toml`](https://bun.com/docs/runtime/bunfig) format, as it provides more flexible options and can let you configure Bun-specific options.
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
- {% /callout %}
13
+ ---
8
14
 
9
15
  ## Supported options
10
16
 
11
- ### `registry`: Set the default registry
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`](https://bun.com/docs/runtime/bunfig#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
- ### `@<scope>:registry`: Set the registry for a specific scope
33
+ ### Set the registry for a specific scope
28
34
 
29
- Allows you to set the registry for a specific scope:
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`](https://bun.com/docs/runtime/bunfig#install-registry):
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
- ### `//<registry_url>/:<key>=<value>`: Configure options for a specific registry
48
+ ### Configure options for a specific registry
43
49
 
44
- Allows you to set options for a specific registry:
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`](https://bun.com/docs/runtime/bunfig#install-registry):
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`](https://bun.com/docs/runtime/bunfig#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`](https://bun.com/docs/runtime/bunfig#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-diff#package.json
4
- {
5
- "name": "my-app",
6
- "dependencies": {
7
- "foo": "^2.0.0"
8
- },
9
- + "overrides": {
10
- + "bar": "~4.4.0"
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#package.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
- {% callout %}
42
- **Note** — Bun currently only supports top-level `"overrides"`. [Nested overrides](https://docs.npmjs.com/cli/v9/configuring-npm/package-json#overrides) are not supported.
43
- {% /callout %}
44
-
45
- ```json-diff#package.json
46
- {
47
- "name": "my-app",
48
- "dependencies": {
49
- "foo": "^2.0.0"
50
- },
51
- + "overrides": {
52
- + "bar": "~4.4.0"
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-diff#package.json
64
- {
65
- "name": "my-app",
66
- "dependencies": {
67
- "foo": "^2.0.0"
68
- },
69
- + "resolutions": {
70
- + "bar": "~4.4.0"
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](https://bun.com/docs/install/npmrc).
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
- $ bun add -d @acme/bun-security-scanner
54
+ ```bash terminal icon="terminal"
55
+ bun add -d @acme/bun-security-scanner
45
56
  ```
46
57
 
47
- > **Note:** Consult your security scanner's documentation for their specific package name and installation instructions. Most scanners will be installed with `bun add`.
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)](/docs/runtime/bunfig#install-security-scanner)
80
- - [Package Manager](/docs/install)
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
- {% callout %}
41
- **Glob support** — Bun supports full glob syntax in `"workspaces"`, including negative patterns (e.g. `!**/excluded/**`). See [here](https://bun.com/docs/api/glob#supported-glob-patterns) for a comprehensive list of supported syntax.
42
- {% /callout %}
43
-
44
- ```json
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
- $ bun install --filter "pkg-*" --filter "!pkg-c"
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
- $ bun install --filter "./packages/pkg-*" --filter "!pkg-c" # or --filter "!./packages/pkg-c"
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](https://bun.com/docs/cli/filter) to easily run `package.json` scripts in multiple packages in your workspace, or `--workspaces` to run scripts across all workspaces.
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](https://bun.com/docs/install/catalogs) for details.
99
+ [Catalogs](/pm/catalogs) for details.
105
100
 
106
- {% callout %}
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
- {% image src="https://user-images.githubusercontent.com/709451/212829600-77df9544-7c9f-4d8d-a984-b2cd0fd2aa52.png" /%}
114
- {% /callout %}
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
- {% details summary="View example statistics" %}
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
- {% /details %}
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
- ```js
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
- {% image alt="Import heap json" src="https://user-images.githubusercontent.com/709451/204428943-ba999e8f-8984-4f23-97cb-b4e3e280363e.png" caption="Importing a heap snapshot" /%}
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
- {% image alt="Viewing heap snapshot in Safari" src="https://user-images.githubusercontent.com/709451/204429337-b0d8935f-3509-4071-b991-217794d1fb27.png" caption="Viewing heap snapshot in Safari Dev Tools" /%}
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](https://bun.com/docs/runtime/debugger#inspect) also offers the timeline feature which allows you to track and examine the memory usage of the running debug session.
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
- ```js
194
+ ```sh terminal icon="terminal"
181
195
  MIMALLOC_SHOW_STATS=1 bun script.js
196
+ ```
182
197
 
183
- # will show something like this:
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!