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