bun-types 1.3.2-canary.20251104T140728 → 1.3.2-canary.20251106T140813

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 (312) hide show
  1. package/bun.d.ts +4 -4
  2. package/docs/README.md +28 -0
  3. package/globals.d.ts +0 -1
  4. package/overrides.d.ts +45 -15
  5. package/package.json +1 -1
  6. package/test.d.ts +1 -1
  7. package/docs/api/binary-data.md +0 -1038
  8. package/docs/api/cc.md +0 -197
  9. package/docs/api/color.md +0 -262
  10. package/docs/api/console.md +0 -57
  11. package/docs/api/cookie.md +0 -449
  12. package/docs/api/dns.md +0 -110
  13. package/docs/api/fetch.md +0 -463
  14. package/docs/api/ffi.md +0 -557
  15. package/docs/api/file-io.md +0 -366
  16. package/docs/api/file-system-router.md +0 -112
  17. package/docs/api/file.md +0 -19
  18. package/docs/api/glob.md +0 -178
  19. package/docs/api/globals.md +0 -387
  20. package/docs/api/hashing.md +0 -319
  21. package/docs/api/html-rewriter.md +0 -334
  22. package/docs/api/http.md +0 -1408
  23. package/docs/api/import-meta.md +0 -69
  24. package/docs/api/node-api.md +0 -14
  25. package/docs/api/redis.md +0 -597
  26. package/docs/api/s3.md +0 -850
  27. package/docs/api/secrets.md +0 -319
  28. package/docs/api/semver.md +0 -52
  29. package/docs/api/spawn.md +0 -582
  30. package/docs/api/sql.md +0 -1374
  31. package/docs/api/sqlite.md +0 -694
  32. package/docs/api/streams.md +0 -230
  33. package/docs/api/tcp.md +0 -221
  34. package/docs/api/transpiler.md +0 -276
  35. package/docs/api/udp.md +0 -123
  36. package/docs/api/utils.md +0 -891
  37. package/docs/api/websockets.md +0 -573
  38. package/docs/api/workers.md +0 -322
  39. package/docs/api/yaml.md +0 -668
  40. package/docs/benchmarks.md +0 -120
  41. package/docs/bun-flavored-toml.md +0 -42
  42. package/docs/bundler/css.md +0 -1028
  43. package/docs/bundler/css_modules.md +0 -145
  44. package/docs/bundler/executables.md +0 -626
  45. package/docs/bundler/fullstack.md +0 -418
  46. package/docs/bundler/hmr.md +0 -234
  47. package/docs/bundler/html.md +0 -349
  48. package/docs/bundler/index.md +0 -1735
  49. package/docs/bundler/intro.md +0 -75
  50. package/docs/bundler/loaders.md +0 -410
  51. package/docs/bundler/macros.md +0 -329
  52. package/docs/bundler/plugins.md +0 -449
  53. package/docs/bundler/vs-esbuild.md +0 -1127
  54. package/docs/cli/add.md +0 -173
  55. package/docs/cli/bun-completions.md +0 -3
  56. package/docs/cli/bun-create.md +0 -338
  57. package/docs/cli/bun-install.md +0 -349
  58. package/docs/cli/bun-upgrade.md +0 -39
  59. package/docs/cli/bunx.md +0 -89
  60. package/docs/cli/filter.md +0 -90
  61. package/docs/cli/info.md +0 -65
  62. package/docs/cli/init.md +0 -85
  63. package/docs/cli/install.md +0 -344
  64. package/docs/cli/link.md +0 -40
  65. package/docs/cli/outdated.md +0 -90
  66. package/docs/cli/patch-commit.md +0 -11
  67. package/docs/cli/pm.md +0 -285
  68. package/docs/cli/publish.md +0 -120
  69. package/docs/cli/remove.md +0 -7
  70. package/docs/cli/run.md +0 -261
  71. package/docs/cli/test.md +0 -397
  72. package/docs/cli/unlink.md +0 -9
  73. package/docs/cli/update.md +0 -129
  74. package/docs/cli/why.md +0 -67
  75. package/docs/contributing/upgrading-webkit.md +0 -57
  76. package/docs/ecosystem/elysia.md +0 -24
  77. package/docs/ecosystem/express.md +0 -37
  78. package/docs/ecosystem/hono.md +0 -18
  79. package/docs/ecosystem/react.md +0 -65
  80. package/docs/ecosystem/stric.md +0 -38
  81. package/docs/guides/binary/arraybuffer-to-array.md +0 -27
  82. package/docs/guides/binary/arraybuffer-to-blob.md +0 -24
  83. package/docs/guides/binary/arraybuffer-to-buffer.md +0 -25
  84. package/docs/guides/binary/arraybuffer-to-string.md +0 -15
  85. package/docs/guides/binary/arraybuffer-to-typedarray.md +0 -39
  86. package/docs/guides/binary/blob-to-arraybuffer.md +0 -14
  87. package/docs/guides/binary/blob-to-dataview.md +0 -14
  88. package/docs/guides/binary/blob-to-stream.md +0 -14
  89. package/docs/guides/binary/blob-to-string.md +0 -15
  90. package/docs/guides/binary/blob-to-typedarray.md +0 -14
  91. package/docs/guides/binary/buffer-to-arraybuffer.md +0 -14
  92. package/docs/guides/binary/buffer-to-blob.md +0 -14
  93. package/docs/guides/binary/buffer-to-readablestream.md +0 -41
  94. package/docs/guides/binary/buffer-to-string.md +0 -25
  95. package/docs/guides/binary/buffer-to-typedarray.md +0 -14
  96. package/docs/guides/binary/dataview-to-string.md +0 -15
  97. package/docs/guides/binary/typedarray-to-arraybuffer.md +0 -25
  98. package/docs/guides/binary/typedarray-to-blob.md +0 -16
  99. package/docs/guides/binary/typedarray-to-buffer.md +0 -14
  100. package/docs/guides/binary/typedarray-to-dataview.md +0 -14
  101. package/docs/guides/binary/typedarray-to-readablestream.md +0 -41
  102. package/docs/guides/binary/typedarray-to-string.md +0 -16
  103. package/docs/guides/deployment/railway.md +0 -157
  104. package/docs/guides/ecosystem/astro.md +0 -72
  105. package/docs/guides/ecosystem/discordjs.md +0 -77
  106. package/docs/guides/ecosystem/docker.md +0 -140
  107. package/docs/guides/ecosystem/drizzle.md +0 -185
  108. package/docs/guides/ecosystem/edgedb.md +0 -228
  109. package/docs/guides/ecosystem/elysia.md +0 -31
  110. package/docs/guides/ecosystem/express.md +0 -40
  111. package/docs/guides/ecosystem/hono.md +0 -39
  112. package/docs/guides/ecosystem/mongoose.md +0 -87
  113. package/docs/guides/ecosystem/neon-drizzle.md +0 -220
  114. package/docs/guides/ecosystem/neon-serverless-postgres.md +0 -55
  115. package/docs/guides/ecosystem/nextjs.md +0 -49
  116. package/docs/guides/ecosystem/nuxt.md +0 -56
  117. package/docs/guides/ecosystem/pm2.md +0 -57
  118. package/docs/guides/ecosystem/prisma.md +0 -141
  119. package/docs/guides/ecosystem/qwik.md +0 -107
  120. package/docs/guides/ecosystem/react.md +0 -50
  121. package/docs/guides/ecosystem/remix.md +0 -78
  122. package/docs/guides/ecosystem/render.md +0 -79
  123. package/docs/guides/ecosystem/sentry.md +0 -52
  124. package/docs/guides/ecosystem/solidstart.md +0 -58
  125. package/docs/guides/ecosystem/ssr-react.md +0 -51
  126. package/docs/guides/ecosystem/stric.md +0 -55
  127. package/docs/guides/ecosystem/sveltekit.md +0 -125
  128. package/docs/guides/ecosystem/systemd.md +0 -113
  129. package/docs/guides/ecosystem/vite.md +0 -71
  130. package/docs/guides/html-rewriter/extract-links.md +0 -68
  131. package/docs/guides/html-rewriter/extract-social-meta.md +0 -93
  132. package/docs/guides/http/cluster.md +0 -66
  133. package/docs/guides/http/fetch-unix.md +0 -33
  134. package/docs/guides/http/fetch.md +0 -24
  135. package/docs/guides/http/file-uploads.md +0 -94
  136. package/docs/guides/http/hot.md +0 -26
  137. package/docs/guides/http/proxy.md +0 -24
  138. package/docs/guides/http/server.md +0 -46
  139. package/docs/guides/http/simple.md +0 -18
  140. package/docs/guides/http/stream-file.md +0 -48
  141. package/docs/guides/http/stream-iterator.md +0 -47
  142. package/docs/guides/http/stream-node-streams-in-bun.md +0 -20
  143. package/docs/guides/http/tls.md +0 -30
  144. package/docs/guides/install/add-dev.md +0 -26
  145. package/docs/guides/install/add-git.md +0 -36
  146. package/docs/guides/install/add-optional.md +0 -25
  147. package/docs/guides/install/add-peer.md +0 -43
  148. package/docs/guides/install/add-tarball.md +0 -33
  149. package/docs/guides/install/add.md +0 -42
  150. package/docs/guides/install/azure-artifacts.md +0 -73
  151. package/docs/guides/install/cicd.md +0 -41
  152. package/docs/guides/install/custom-registry.md +0 -30
  153. package/docs/guides/install/from-npm-install-to-bun-install.md +0 -214
  154. package/docs/guides/install/git-diff-bun-lockfile.md +0 -44
  155. package/docs/guides/install/jfrog-artifactory.md +0 -28
  156. package/docs/guides/install/npm-alias.md +0 -23
  157. package/docs/guides/install/registry-scope.md +0 -38
  158. package/docs/guides/install/trusted.md +0 -46
  159. package/docs/guides/install/workspaces.md +0 -70
  160. package/docs/guides/install/yarnlock.md +0 -44
  161. package/docs/guides/process/argv.md +0 -58
  162. package/docs/guides/process/ctrl-c.md +0 -16
  163. package/docs/guides/process/ipc.md +0 -66
  164. package/docs/guides/process/nanoseconds.md +0 -13
  165. package/docs/guides/process/os-signals.md +0 -39
  166. package/docs/guides/process/spawn-stderr.md +0 -31
  167. package/docs/guides/process/spawn-stdout.md +0 -26
  168. package/docs/guides/process/spawn.md +0 -41
  169. package/docs/guides/process/stdin.md +0 -54
  170. package/docs/guides/read-file/arraybuffer.md +0 -28
  171. package/docs/guides/read-file/buffer.md +0 -19
  172. package/docs/guides/read-file/exists.md +0 -16
  173. package/docs/guides/read-file/json.md +0 -17
  174. package/docs/guides/read-file/mime.md +0 -20
  175. package/docs/guides/read-file/stream.md +0 -26
  176. package/docs/guides/read-file/string.md +0 -22
  177. package/docs/guides/read-file/uint8array.md +0 -21
  178. package/docs/guides/read-file/watch.md +0 -68
  179. package/docs/guides/runtime/build-time-constants.md +0 -293
  180. package/docs/guides/runtime/cicd.md +0 -43
  181. package/docs/guides/runtime/codesign-macos-executable.md +0 -56
  182. package/docs/guides/runtime/define-constant.md +0 -145
  183. package/docs/guides/runtime/delete-directory.md +0 -37
  184. package/docs/guides/runtime/delete-file.md +0 -19
  185. package/docs/guides/runtime/heap-snapshot.md +0 -26
  186. package/docs/guides/runtime/import-html.md +0 -15
  187. package/docs/guides/runtime/import-json.md +0 -44
  188. package/docs/guides/runtime/import-toml.md +0 -30
  189. package/docs/guides/runtime/import-yaml.md +0 -102
  190. package/docs/guides/runtime/read-env.md +0 -32
  191. package/docs/guides/runtime/set-env.md +0 -47
  192. package/docs/guides/runtime/shell.md +0 -40
  193. package/docs/guides/runtime/timezone.md +0 -35
  194. package/docs/guides/runtime/tsconfig-paths.md +0 -29
  195. package/docs/guides/runtime/typescript.md +0 -49
  196. package/docs/guides/runtime/vscode-debugger.md +0 -47
  197. package/docs/guides/runtime/web-debugger.md +0 -82
  198. package/docs/guides/streams/node-readable-to-arraybuffer.md +0 -11
  199. package/docs/guides/streams/node-readable-to-blob.md +0 -11
  200. package/docs/guides/streams/node-readable-to-json.md +0 -12
  201. package/docs/guides/streams/node-readable-to-string.md +0 -12
  202. package/docs/guides/streams/node-readable-to-uint8array.md +0 -11
  203. package/docs/guides/streams/to-array.md +0 -14
  204. package/docs/guides/streams/to-arraybuffer.md +0 -14
  205. package/docs/guides/streams/to-blob.md +0 -14
  206. package/docs/guides/streams/to-buffer.md +0 -15
  207. package/docs/guides/streams/to-json.md +0 -14
  208. package/docs/guides/streams/to-string.md +0 -14
  209. package/docs/guides/streams/to-typedarray.md +0 -22
  210. package/docs/guides/test/bail.md +0 -22
  211. package/docs/guides/test/coverage-threshold.md +0 -60
  212. package/docs/guides/test/coverage.md +0 -44
  213. package/docs/guides/test/happy-dom.md +0 -68
  214. package/docs/guides/test/migrate-from-jest.md +0 -143
  215. package/docs/guides/test/mock-clock.md +0 -48
  216. package/docs/guides/test/mock-functions.md +0 -68
  217. package/docs/guides/test/rerun-each.md +0 -14
  218. package/docs/guides/test/run-tests.md +0 -111
  219. package/docs/guides/test/skip-tests.md +0 -39
  220. package/docs/guides/test/snapshot.md +0 -95
  221. package/docs/guides/test/spy-on.md +0 -46
  222. package/docs/guides/test/svelte-test.md +0 -120
  223. package/docs/guides/test/testing-library.md +0 -92
  224. package/docs/guides/test/timeout.md +0 -15
  225. package/docs/guides/test/todo-tests.md +0 -67
  226. package/docs/guides/test/update-snapshots.md +0 -46
  227. package/docs/guides/test/watch-mode.md +0 -19
  228. package/docs/guides/util/base64.md +0 -15
  229. package/docs/guides/util/deep-equals.md +0 -39
  230. package/docs/guides/util/deflate.md +0 -18
  231. package/docs/guides/util/detect-bun.md +0 -23
  232. package/docs/guides/util/entrypoint.md +0 -17
  233. package/docs/guides/util/escape-html.md +0 -22
  234. package/docs/guides/util/file-url-to-path.md +0 -14
  235. package/docs/guides/util/gzip.md +0 -18
  236. package/docs/guides/util/hash-a-password.md +0 -54
  237. package/docs/guides/util/import-meta-dir.md +0 -13
  238. package/docs/guides/util/import-meta-file.md +0 -13
  239. package/docs/guides/util/import-meta-path.md +0 -13
  240. package/docs/guides/util/javascript-uuid.md +0 -23
  241. package/docs/guides/util/main.md +0 -32
  242. package/docs/guides/util/path-to-file-url.md +0 -14
  243. package/docs/guides/util/sleep.md +0 -22
  244. package/docs/guides/util/version.md +0 -21
  245. package/docs/guides/util/which-path-to-executable-bin.md +0 -15
  246. package/docs/guides/websocket/compression.md +0 -31
  247. package/docs/guides/websocket/context.md +0 -77
  248. package/docs/guides/websocket/pubsub.md +0 -41
  249. package/docs/guides/websocket/simple.md +0 -33
  250. package/docs/guides/write-file/append.md +0 -52
  251. package/docs/guides/write-file/basic.md +0 -44
  252. package/docs/guides/write-file/blob.md +0 -28
  253. package/docs/guides/write-file/cat.md +0 -17
  254. package/docs/guides/write-file/file-cp.md +0 -16
  255. package/docs/guides/write-file/filesink.md +0 -52
  256. package/docs/guides/write-file/response.md +0 -17
  257. package/docs/guides/write-file/stdout.md +0 -21
  258. package/docs/guides/write-file/stream.md +0 -17
  259. package/docs/guides/write-file/unlink.md +0 -16
  260. package/docs/index.md +0 -77
  261. package/docs/install/audit.md +0 -57
  262. package/docs/install/cache.md +0 -59
  263. package/docs/install/catalogs.md +0 -298
  264. package/docs/install/index.md +0 -248
  265. package/docs/install/isolated.md +0 -197
  266. package/docs/install/lifecycle.md +0 -46
  267. package/docs/install/lockfile.md +0 -58
  268. package/docs/install/npmrc.md +0 -105
  269. package/docs/install/overrides.md +0 -73
  270. package/docs/install/patch.md +0 -59
  271. package/docs/install/registries.md +0 -30
  272. package/docs/install/security-scanner-api.md +0 -81
  273. package/docs/install/workspaces.md +0 -114
  274. package/docs/installation.md +0 -327
  275. package/docs/project/asan.md +0 -124
  276. package/docs/project/benchmarking.md +0 -203
  277. package/docs/project/bindgen.md +0 -225
  278. package/docs/project/building-windows.md +0 -162
  279. package/docs/project/contributing.md +0 -347
  280. package/docs/project/internals/build-process-for-ci.md +0 -75
  281. package/docs/project/licensing.md +0 -73
  282. package/docs/project/roadmap.md +0 -87
  283. package/docs/quickstart.md +0 -157
  284. package/docs/runtime/autoimport.md +0 -94
  285. package/docs/runtime/bun-apis.md +0 -207
  286. package/docs/runtime/bunfig.md +0 -772
  287. package/docs/runtime/debugger.md +0 -325
  288. package/docs/runtime/env.md +0 -253
  289. package/docs/runtime/hot.md +0 -145
  290. package/docs/runtime/index.md +0 -312
  291. package/docs/runtime/jsx.md +0 -385
  292. package/docs/runtime/loaders.md +0 -130
  293. package/docs/runtime/modules.md +0 -320
  294. package/docs/runtime/nodejs-apis.md +0 -463
  295. package/docs/runtime/plugins.md +0 -561
  296. package/docs/runtime/shell.md +0 -605
  297. package/docs/runtime/typescript.md +0 -139
  298. package/docs/runtime/web-apis.md +0 -128
  299. package/docs/test/configuration.md +0 -154
  300. package/docs/test/coverage.md +0 -142
  301. package/docs/test/discovery.md +0 -85
  302. package/docs/test/dom.md +0 -75
  303. package/docs/test/examples/concurrent-test-glob.md +0 -132
  304. package/docs/test/hot.md +0 -15
  305. package/docs/test/lifecycle.md +0 -81
  306. package/docs/test/mocks.md +0 -313
  307. package/docs/test/reporters.md +0 -117
  308. package/docs/test/runtime-behavior.md +0 -95
  309. package/docs/test/snapshots.md +0 -68
  310. package/docs/test/time.md +0 -126
  311. package/docs/test/writing.md +0 -825
  312. package/docs/typescript.md +0 -53
@@ -1,54 +0,0 @@
1
- ---
2
- name: Hash a password
3
- ---
4
-
5
- The `Bun.password.hash()` function provides a fast, built-in mechanism for securely hashing passwords in Bun. No third-party dependencies are required.
6
-
7
- ```ts
8
- const password = "super-secure-pa$$word";
9
-
10
- const hash = await Bun.password.hash(password);
11
- // => $argon2id$v=19$m=65536,t=2,p=1$tFq+9AVr1bfPxQdh6E8DQRhEXg/M/...
12
- ```
13
-
14
- ---
15
-
16
- By default, this uses the [Argon2id](https://en.wikipedia.org/wiki/Argon2) algorithm. Pass a second argument to `Bun.password.hash()` to use a different algorithm or configure the hashing parameters.
17
-
18
- ```ts
19
- const password = "super-secure-pa$$word";
20
-
21
- // use argon2 (default)
22
- const argonHash = await Bun.password.hash(password, {
23
- memoryCost: 4, // memory usage in kibibytes
24
- timeCost: 3, // the number of iterations
25
- });
26
- ```
27
-
28
- ---
29
-
30
- Bun also implements the [bcrypt](https://en.wikipedia.org/wiki/Bcrypt) algorithm. Specify `algorithm: "bcrypt"` to use it.
31
-
32
- ```ts
33
- // use bcrypt
34
- const bcryptHash = await Bun.password.hash(password, {
35
- algorithm: "bcrypt",
36
- cost: 4, // number between 4-31
37
- });
38
- ```
39
-
40
- ---
41
-
42
- Use `Bun.password.verify()` to verify a password. The algorithm and its parameters are stored in the hash itself, so re-specifying configuration is unnecessary.
43
-
44
- ```ts
45
- const password = "super-secure-pa$$word";
46
- const hash = await Bun.password.hash(password);
47
-
48
- const isMatch = await Bun.password.verify(password, hash);
49
- // => true
50
- ```
51
-
52
- ---
53
-
54
- See [Docs > API > Hashing](https://bun.com/docs/api/hashing#bun-password) for complete documentation.
@@ -1,13 +0,0 @@
1
- ---
2
- name: Get the directory of the current file
3
- ---
4
-
5
- Bun provides a handful of module-specific utilities on the [`import.meta`](https://bun.com/docs/api/import-meta) object.
6
-
7
- ```ts#/a/b/c.ts
8
- import.meta.dir; // => "/a/b"
9
- ```
10
-
11
- ---
12
-
13
- See [Docs > API > import.meta](https://bun.com/docs/api/import-meta) for complete documentation.
@@ -1,13 +0,0 @@
1
- ---
2
- name: Get the file name of the current file
3
- ---
4
-
5
- Bun provides a handful of module-specific utilities on the [`import.meta`](https://bun.com/docs/api/import-meta) object. Use `import.meta.file` to retrieve the name of the current file.
6
-
7
- ```ts#/a/b/c.ts
8
- import.meta.file; // => "c.ts"
9
- ```
10
-
11
- ---
12
-
13
- See [Docs > API > import.meta](https://bun.com/docs/api/import-meta) for complete documentation.
@@ -1,13 +0,0 @@
1
- ---
2
- name: Get the absolute path of the current file
3
- ---
4
-
5
- Bun provides a handful of module-specific utilities on the [`import.meta`](https://bun.com/docs/api/import-meta) object. Use `import.meta.path` to retrieve the absolute path of the current file.
6
-
7
- ```ts#/a/b/c.ts
8
- import.meta.path; // => "/a/b/c.ts"
9
- ```
10
-
11
- ---
12
-
13
- See [Docs > API > import.meta](https://bun.com/docs/api/import-meta) for complete documentation.
@@ -1,23 +0,0 @@
1
- ---
2
- name: Generate a UUID
3
- ---
4
-
5
- Use `crypto.randomUUID()` to generate a UUID v4. This API works in Bun, Node.js, and browsers. It requires no dependencies.
6
-
7
- ```ts
8
- crypto.randomUUID();
9
- // => "123e4567-e89b-12d3-a456-426614174000"
10
- ```
11
-
12
- ---
13
-
14
- In Bun, you can also use `Bun.randomUUIDv7()` to generate a [UUID v7](https://www.ietf.org/archive/id/draft-peabody-dispatch-new-uuid-format-01.html).
15
-
16
- ```ts
17
- Bun.randomUUIDv7();
18
- // => "0196a000-bb12-7000-905e-8039f5d5b206"
19
- ```
20
-
21
- ---
22
-
23
- See [Docs > API > Utils](https://bun.com/docs/api/utils) for more useful utilities.
@@ -1,32 +0,0 @@
1
- ---
2
- name: Get the absolute path to the current entrypoint
3
- ---
4
-
5
- The `Bun.main` property contains the absolute path to the current entrypoint.
6
-
7
- {% codetabs %}
8
-
9
- ```ts#foo.ts
10
- console.log(Bun.main);
11
- ```
12
-
13
- ```ts#index.ts
14
- import "./foo.ts";
15
- ```
16
-
17
- {% /codetabs %}
18
-
19
- ---
20
-
21
- The printed path corresponds to the file that is executed with `bun run`.
22
-
23
- ```sh
24
- $ bun run index.ts
25
- /path/to/index.ts
26
- $ bun run foo.ts
27
- /path/to/foo.ts
28
- ```
29
-
30
- ---
31
-
32
- See [Docs > API > Utils](https://bun.com/docs/api/utils) for more useful utilities.
@@ -1,14 +0,0 @@
1
- ---
2
- name: Convert an absolute path to a file URL
3
- ---
4
-
5
- Use `Bun.pathToFileURL()` to convert an absolute path to a `file://` URL.
6
-
7
- ```ts
8
- Bun.pathToFileURL("/path/to/file.txt");
9
- // => "file:///path/to/file.txt"
10
- ```
11
-
12
- ---
13
-
14
- See [Docs > API > Utils](https://bun.com/docs/api/utils) for more useful utilities.
@@ -1,22 +0,0 @@
1
- ---
2
- name: Sleep for a fixed number of milliseconds
3
- ---
4
-
5
- The `Bun.sleep` method provides a convenient way to create a void `Promise` that resolves in a fixed number of milliseconds.
6
-
7
- ```ts
8
- // sleep for 1 second
9
- await Bun.sleep(1000);
10
- ```
11
-
12
- ---
13
-
14
- Internally, this is equivalent to the following snippet that uses [`setTimeout`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout).
15
-
16
- ```ts
17
- await new Promise(resolve => setTimeout(resolve, ms));
18
- ```
19
-
20
- ---
21
-
22
- See [Docs > API > Utils](https://bun.com/docs/api/utils) for more useful utilities.
@@ -1,21 +0,0 @@
1
- ---
2
- name: Get the current Bun version
3
- ---
4
-
5
- Get the current version of Bun in a semver format.
6
-
7
- ```ts#index.ts
8
- Bun.version; // => "1.3.2-canary.20251104T140728"
9
- ```
10
-
11
- ---
12
-
13
- Get the exact `git` commit of [`oven-sh/bun`](https://github.com/oven-sh/bun) that was compiled to produce this Bun binary.
14
-
15
- ```ts#index.ts
16
- Bun.revision; // => "49231b2cb9aa48497ab966fc0bb6b742dacc4994"
17
- ```
18
-
19
- ---
20
-
21
- See [Docs > API > Utils](https://bun.com/docs/api/utils) for more useful utilities.
@@ -1,15 +0,0 @@
1
- ---
2
- name: Get the path to an executable bin file
3
- ---
4
-
5
- `Bun.which` is a utility function to find the absolute path of an executable file. It is similar to the `which` command in Unix-like systems.
6
-
7
- ```ts#foo.ts
8
- Bun.which("sh"); // => "/bin/sh"
9
- Bun.which("notfound"); // => null
10
- Bun.which("bun"); // => "/home/user/.bun/bin/bun"
11
- ```
12
-
13
- ---
14
-
15
- See [Docs > API > Utils](https://bun.com/docs/api/utils#bun-which) for complete documentation.
@@ -1,31 +0,0 @@
1
- ---
2
- name: Enable compression for WebSocket messages
3
- ---
4
-
5
- Per-message compression can be enabled with the `perMessageDeflate` parameter. When set, all messages will be compressed using the [permessage-deflate](https://tools.ietf.org/html/rfc7692) WebSocket extension.
6
-
7
- ```ts
8
- Bun.serve({
9
- // ...
10
- websocket: {
11
- // enable compression
12
- perMessageDeflate: true,
13
- },
14
- });
15
- ```
16
-
17
- ---
18
-
19
- To enable compression for individual messages, pass `true` as the second parameter to `ws.send()`.
20
-
21
- ```ts
22
- Bun.serve({
23
- // ...
24
- websocket: {
25
- async message(ws, message) {
26
- // send a compressed message
27
- ws.send(message, true);
28
- },
29
- },
30
- });
31
- ```
@@ -1,77 +0,0 @@
1
- ---
2
- name: Set per-socket contextual data on a WebSocket
3
- ---
4
-
5
- When building a WebSocket server, it's typically necessary to store some identifying information or context associated with each connected client.
6
-
7
- With [Bun.serve()](https://bun.com/docs/api/websockets#contextual-data), this "contextual data" is set when the connection is initially upgraded by passing a `data` parameter in the `server.upgrade()` call.
8
-
9
- ```ts
10
- Bun.serve({
11
- fetch(req, server) {
12
- const success = server.upgrade(req, {
13
- data: {
14
- socketId: Math.random(),
15
- },
16
- });
17
- if (success) return undefined;
18
-
19
- // handle HTTP request normally
20
- // ...
21
- },
22
- websocket: {
23
- // TypeScript: specify the type of ws.data like this
24
- data: {} as { socketId: number },
25
-
26
- // define websocket handlers
27
- async message(ws, message) {
28
- // the contextual data is available as the `data` property
29
- // on the WebSocket instance
30
- console.log(`Received ${message} from ${ws.data.socketId}}`);
31
- },
32
- },
33
- });
34
- ```
35
-
36
- ---
37
-
38
- It's common to read cookies/headers from the incoming request to identify the connecting client.
39
-
40
- ```ts
41
- type WebSocketData = {
42
- createdAt: number;
43
- token: string;
44
- userId: string;
45
- };
46
-
47
- Bun.serve({
48
- async fetch(req, server) {
49
- // use a library to parse cookies
50
- const cookies = parseCookies(req.headers.get("Cookie"));
51
- const token = cookies["X-Token"];
52
- const user = await getUserFromToken(token);
53
-
54
- const upgraded = server.upgrade(req, {
55
- data: {
56
- createdAt: Date.now(),
57
- token: cookies["X-Token"],
58
- userId: user.id,
59
- },
60
- });
61
-
62
- if (upgraded) return undefined;
63
- },
64
- websocket: {
65
- // TypeScript: specify the type of ws.data like this
66
- data: {} as WebSocketData,
67
-
68
- async message(ws, message) {
69
- // save the message to a database
70
- await saveMessageToDatabase({
71
- message: String(message),
72
- userId: ws.data.userId,
73
- });
74
- },
75
- },
76
- });
77
- ```
@@ -1,41 +0,0 @@
1
- ---
2
- name: Build a publish-subscribe WebSocket server
3
- ---
4
-
5
- Bun's server-side `WebSocket` API provides a native pub-sub API. Sockets can be subscribed to a set of named channels using `socket.subscribe(<name>)`; messages can be published to a channel using `socket.publish(<name>, <message>)`.
6
-
7
- This code snippet implements a simple single-channel chat server.
8
-
9
- ```ts
10
- const server = Bun.serve({
11
- fetch(req, server) {
12
- const cookies = req.headers.get("cookie");
13
- const username = getUsernameFromCookies(cookies);
14
- const success = server.upgrade(req, { data: { username } });
15
- if (success) return undefined;
16
-
17
- return new Response("Hello world");
18
- },
19
- websocket: {
20
- // TypeScript: specify the type of ws.data like this
21
- data: {} as { username: string },
22
-
23
- open(ws) {
24
- const msg = `${ws.data.username} has entered the chat`;
25
- ws.subscribe("the-group-chat");
26
- server.publish("the-group-chat", msg);
27
- },
28
- message(ws, message) {
29
- // the server re-broadcasts incoming messages to everyone
30
- server.publish("the-group-chat", `${ws.data.username}: ${message}`);
31
- },
32
- close(ws) {
33
- const msg = `${ws.data.username} has left the chat`;
34
- server.publish("the-group-chat", msg);
35
- ws.unsubscribe("the-group-chat");
36
- },
37
- },
38
- });
39
-
40
- console.log(`Listening on ${server.hostname}:${server.port}`);
41
- ```
@@ -1,33 +0,0 @@
1
- ---
2
- name: Build a simple WebSocket server
3
- ---
4
-
5
- Start a simple WebSocket server using [`Bun.serve`](https://bun.com/docs/api/http).
6
-
7
- Inside `fetch`, we attempt to upgrade incoming `ws:` or `wss:` requests to WebSocket connections.
8
-
9
- ```ts
10
- const server = Bun.serve({
11
- fetch(req, server) {
12
- const success = server.upgrade(req);
13
- if (success) {
14
- // Bun automatically returns a 101 Switching Protocols
15
- // if the upgrade succeeds
16
- return undefined;
17
- }
18
-
19
- // handle HTTP request normally
20
- return new Response("Hello world!");
21
- },
22
- websocket: {
23
- // this is called when a message is received
24
- async message(ws, message) {
25
- console.log(`Received ${message}`);
26
- // send back a message
27
- ws.send(`You said: ${message}`);
28
- },
29
- },
30
- });
31
-
32
- console.log(`Listening on ${server.hostname}:${server.port}`);
33
- ```
@@ -1,52 +0,0 @@
1
- ---
2
- name: Append content to a file
3
- ---
4
-
5
- Bun implements the `node:fs` module, which includes the `fs.appendFile` and `fs.appendFileSync` functions for appending content to files.
6
-
7
- ---
8
-
9
- You can use `fs.appendFile` to asynchronously append data to a file, creating the file if it does not yet exist. The content can be a string or a `Buffer`.
10
-
11
- ```ts
12
- import { appendFile } from "node:fs/promises";
13
-
14
- await appendFile("message.txt", "data to append");
15
- ```
16
-
17
- ---
18
-
19
- To use the non-`Promise` API:
20
-
21
- ```ts
22
- import { appendFile } from "node:fs";
23
-
24
- appendFile("message.txt", "data to append", err => {
25
- if (err) throw err;
26
- console.log('The "data to append" was appended to file!');
27
- });
28
- ```
29
-
30
- ---
31
-
32
- To specify the encoding of the content:
33
-
34
- ```js
35
- import { appendFile } from "node:fs";
36
-
37
- appendFile("message.txt", "data to append", "utf8", callback);
38
- ```
39
-
40
- ---
41
-
42
- To append the data synchronously, use `fs.appendFileSync`:
43
-
44
- ```ts
45
- import { appendFileSync } from "node:fs";
46
-
47
- appendFileSync("message.txt", "data to append", "utf8");
48
- ```
49
-
50
- ---
51
-
52
- See the [Node.js documentation](https://nodejs.org/api/fs.html#fspromisesappendfilepath-data-options) for more information.
@@ -1,44 +0,0 @@
1
- ---
2
- name: Write a string to a file
3
- ---
4
-
5
- This code snippet writes a string to disk at a particular _absolute path_.
6
-
7
- It uses the fast [`Bun.write()`](https://bun.com/docs/api/file-io#writing-files-bun-write) API to efficiently write data to disk. The first argument is a _destination_; the second is the _data_ to write.
8
-
9
- ```ts
10
- const path = "/path/to/file.txt";
11
- await Bun.write(path, "Lorem ipsum");
12
- ```
13
-
14
- ---
15
-
16
- Any relative paths will be resolved relative to the project root (the nearest directory containing a `package.json` file).
17
-
18
- ```ts
19
- const path = "./file.txt";
20
- await Bun.write(path, "Lorem ipsum");
21
- ```
22
-
23
- ---
24
-
25
- You can pass a `BunFile` as the destination. `Bun.write()` will write the data to its associated path.
26
-
27
- ```ts
28
- const path = Bun.file("./file.txt");
29
- await Bun.write(path, "Lorem ipsum");
30
- ```
31
-
32
- ---
33
-
34
- `Bun.write()` returns the number of bytes written to disk.
35
-
36
- ```ts
37
- const path = "./file.txt";
38
- const bytes = await Bun.write(path, "Lorem ipsum");
39
- // => 11
40
- ```
41
-
42
- ---
43
-
44
- See [Docs > API > File I/O](https://bun.com/docs/api/file-io#writing-files-bun-write) for complete documentation of `Bun.write()`.
@@ -1,28 +0,0 @@
1
- ---
2
- name: Write a Blob to a file
3
- ---
4
-
5
- This code snippet writes a `Blob` to disk at a particular path.
6
-
7
- It uses the fast [`Bun.write()`](https://bun.com/docs/api/file-io#writing-files-bun-write) API to efficiently write data to disk. The first argument is a _destination_, like an absolute path or `BunFile` instance. The second argument is the _data_ to write.
8
-
9
- ```ts
10
- const path = "/path/to/file.txt";
11
- await Bun.write(path, "Lorem ipsum");
12
- ```
13
-
14
- ---
15
-
16
- The `BunFile` class extends `Blob`, so you can pass a `BunFile` directly into `Bun.write()` as well.
17
-
18
- ```ts
19
- const path = "./out.txt";
20
- const data = Bun.file("./in.txt");
21
-
22
- // write the contents of ./in.txt to ./out.txt
23
- await Bun.write(path, data);
24
- ```
25
-
26
- ---
27
-
28
- See [Docs > API > File I/O](https://bun.com/docs/api/file-io#writing-files-bun-write) for complete documentation of `Bun.write()`.
@@ -1,17 +0,0 @@
1
- ---
2
- name: Write a file to stdout
3
- ---
4
-
5
- Bun exposes `stdout` as a `BunFile` with the `Bun.stdout` property. This can be used as a destination for [`Bun.write()`](https://bun.com/docs/api/file-io#writing-files-bun-write).
6
-
7
- This code writes a file to `stdout` similar to the `cat` command in Unix.
8
-
9
- ```ts#cat.ts
10
- const path = "/path/to/file.txt";
11
- const file = Bun.file(path);
12
- await Bun.write(Bun.stdout, file);
13
- ```
14
-
15
- ---
16
-
17
- See [Docs > API > File I/O](https://bun.com/docs/api/file-io#writing-files-bun-write) for complete documentation of `Bun.write()`.
@@ -1,16 +0,0 @@
1
- ---
2
- name: Copy a file to another location
3
- ---
4
-
5
- This code snippet copies a file to another location on disk.
6
-
7
- It uses the fast [`Bun.write()`](https://bun.com/docs/api/file-io#writing-files-bun-write) API to efficiently write data to disk. The first argument is a _destination_, like an absolute path or `BunFile` instance. The second argument is the _data_ to write.
8
-
9
- ```ts
10
- const file = Bun.file("/path/to/original.txt");
11
- await Bun.write("/path/to/copy.txt", file);
12
- ```
13
-
14
- ---
15
-
16
- See [Docs > API > File I/O](https://bun.com/docs/api/file-io#writing-files-bun-write) for complete documentation of `Bun.write()`.
@@ -1,52 +0,0 @@
1
- ---
2
- name: Write a file incrementally
3
- ---
4
-
5
- Bun provides an API for incrementally writing to a file. This is useful for writing large files, or for writing to a file over a long period of time.
6
-
7
- Call `.writer()` on a `BunFile` to retrieve a `FileSink` instance. This instance can be used to efficiently buffer data and periodically "flush" it to disk. You can write & flush many times.
8
-
9
- ```ts
10
- const file = Bun.file("/path/to/file.txt");
11
- const writer = file.writer();
12
-
13
- writer.write("lorem");
14
- writer.write("ipsum");
15
- writer.write("dolor");
16
-
17
- writer.flush();
18
-
19
- // continue writing & flushing
20
- ```
21
-
22
- ---
23
-
24
- The `.write()` method can accept strings or binary data.
25
-
26
- ```ts
27
- w.write("hello");
28
- w.write(Buffer.from("there"));
29
- w.write(new Uint8Array([0, 255, 128]));
30
- writer.flush();
31
- ```
32
-
33
- ---
34
-
35
- The `FileSink` will also auto-flush when its internal buffer is full. You can configure the buffer size with the `highWaterMark` option.
36
-
37
- ```ts
38
- const file = Bun.file("/path/to/file.txt");
39
- const writer = file.writer({ highWaterMark: 1024 * 1024 }); // 1MB
40
- ```
41
-
42
- ---
43
-
44
- When you're done writing to the file, call `.end()` to auto-flush the buffer and close the file.
45
-
46
- ```ts
47
- writer.end();
48
- ```
49
-
50
- ---
51
-
52
- Full documentation: [FileSink](https://bun.com/docs/api/file-io#incremental-writing-with-filesink).
@@ -1,17 +0,0 @@
1
- ---
2
- name: Write a Response to a file
3
- ---
4
-
5
- This code snippet writes a `Response` to disk at a particular path. Bun will consume the `Response` body according to its `Content-Type` header.
6
-
7
- It uses the fast [`Bun.write()`](https://bun.com/docs/api/file-io#writing-files-bun-write) API to efficiently write data to disk. The first argument is a _destination_, like an absolute path or `BunFile` instance. The second argument is the _data_ to write.
8
-
9
- ```ts
10
- const result = await fetch("https://bun.com");
11
- const path = "./file.txt";
12
- await Bun.write(path, result);
13
- ```
14
-
15
- ---
16
-
17
- See [Docs > API > File I/O](https://bun.com/docs/api/file-io#writing-files-bun-write) for complete documentation of `Bun.write()`.
@@ -1,21 +0,0 @@
1
- ---
2
- name: Write to stdout
3
- ---
4
-
5
- The `console.log` function writes to `stdout`. It will automatically append a line break at the end of the printed data.
6
-
7
- ```ts
8
- console.log("Lorem ipsum");
9
- ```
10
-
11
- ---
12
-
13
- For more advanced use cases, Bun exposes `stdout` as a `BunFile` via the `Bun.stdout` property. This can be used as a destination for [`Bun.write()`](https://bun.com/docs/api/file-io#writing-files-bun-write).
14
-
15
- ```ts
16
- await Bun.write(Bun.stdout, "Lorem ipsum");
17
- ```
18
-
19
- ---
20
-
21
- See [Docs > API > File I/O](https://bun.com/docs/api/file-io#writing-files-bun-write) for complete documentation of `Bun.write()`.