bun-types 1.3.2-canary.20251106T140813 → 1.3.2-canary.20251108T140624

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 (316) hide show
  1. package/bun.d.ts +102 -6
  2. package/docs/bundler/bytecode.mdx +465 -0
  3. package/docs/bundler/css.mdx +1024 -0
  4. package/docs/bundler/esbuild.mdx +253 -0
  5. package/docs/bundler/executables.mdx +535 -0
  6. package/docs/bundler/fullstack.mdx +1064 -0
  7. package/docs/bundler/hot-reloading.mdx +229 -0
  8. package/docs/bundler/html-static.mdx +386 -0
  9. package/docs/bundler/index.mdx +1499 -0
  10. package/docs/bundler/loaders.mdx +356 -0
  11. package/docs/bundler/macros.mdx +328 -0
  12. package/docs/bundler/minifier.mdx +1306 -0
  13. package/docs/bundler/plugins.mdx +411 -0
  14. package/docs/feedback.mdx +85 -0
  15. package/docs/guides/binary/arraybuffer-to-array.mdx +29 -0
  16. package/docs/guides/binary/arraybuffer-to-blob.mdx +26 -0
  17. package/docs/guides/binary/arraybuffer-to-buffer.mdx +27 -0
  18. package/docs/guides/binary/arraybuffer-to-string.mdx +17 -0
  19. package/docs/guides/binary/arraybuffer-to-typedarray.mdx +41 -0
  20. package/docs/guides/binary/blob-to-arraybuffer.mdx +16 -0
  21. package/docs/guides/binary/blob-to-dataview.mdx +16 -0
  22. package/docs/guides/binary/blob-to-stream.mdx +16 -0
  23. package/docs/guides/binary/blob-to-string.mdx +17 -0
  24. package/docs/guides/binary/blob-to-typedarray.mdx +16 -0
  25. package/docs/guides/binary/buffer-to-arraybuffer.mdx +16 -0
  26. package/docs/guides/binary/buffer-to-blob.mdx +16 -0
  27. package/docs/guides/binary/buffer-to-readablestream.mdx +43 -0
  28. package/docs/guides/binary/buffer-to-string.mdx +27 -0
  29. package/docs/guides/binary/buffer-to-typedarray.mdx +16 -0
  30. package/docs/guides/binary/dataview-to-string.mdx +17 -0
  31. package/docs/guides/binary/typedarray-to-arraybuffer.mdx +27 -0
  32. package/docs/guides/binary/typedarray-to-blob.mdx +18 -0
  33. package/docs/guides/binary/typedarray-to-buffer.mdx +16 -0
  34. package/docs/guides/binary/typedarray-to-dataview.mdx +16 -0
  35. package/docs/guides/binary/typedarray-to-readablestream.mdx +43 -0
  36. package/docs/guides/binary/typedarray-to-string.mdx +18 -0
  37. package/docs/guides/deployment/aws-lambda.mdx +204 -0
  38. package/docs/guides/deployment/digital-ocean.mdx +161 -0
  39. package/docs/guides/deployment/google-cloud-run.mdx +197 -0
  40. package/docs/guides/deployment/railway.mdx +145 -0
  41. package/docs/guides/deployment/render.mdx +82 -0
  42. package/docs/guides/deployment/vercel.mdx +99 -0
  43. package/docs/guides/ecosystem/astro.mdx +82 -0
  44. package/docs/guides/ecosystem/discordjs.mdx +80 -0
  45. package/docs/guides/ecosystem/docker.mdx +151 -0
  46. package/docs/guides/ecosystem/drizzle.mdx +195 -0
  47. package/docs/guides/ecosystem/edgedb.mdx +257 -0
  48. package/docs/guides/ecosystem/elysia.mdx +31 -0
  49. package/docs/guides/ecosystem/express.mdx +43 -0
  50. package/docs/guides/ecosystem/hono.mdx +47 -0
  51. package/docs/guides/ecosystem/mongoose.mdx +92 -0
  52. package/docs/guides/ecosystem/neon-drizzle.mdx +234 -0
  53. package/docs/guides/ecosystem/neon-serverless-postgres.mdx +60 -0
  54. package/docs/guides/ecosystem/nextjs.mdx +57 -0
  55. package/docs/guides/ecosystem/nuxt.mdx +90 -0
  56. package/docs/guides/ecosystem/pm2.mdx +55 -0
  57. package/docs/guides/ecosystem/prisma-postgres.mdx +169 -0
  58. package/docs/guides/ecosystem/prisma.mdx +164 -0
  59. package/docs/guides/ecosystem/qwik.mdx +114 -0
  60. package/docs/guides/ecosystem/react.mdx +52 -0
  61. package/docs/guides/ecosystem/remix.mdx +97 -0
  62. package/docs/guides/ecosystem/sentry.mdx +54 -0
  63. package/docs/guides/ecosystem/solidstart.mdx +66 -0
  64. package/docs/guides/ecosystem/ssr-react.mdx +49 -0
  65. package/docs/guides/ecosystem/stric.mdx +54 -0
  66. package/docs/guides/ecosystem/sveltekit.mdx +138 -0
  67. package/docs/guides/ecosystem/systemd.mdx +114 -0
  68. package/docs/guides/ecosystem/upstash.mdx +87 -0
  69. package/docs/guides/ecosystem/vite.mdx +77 -0
  70. package/docs/guides/html-rewriter/extract-links.mdx +72 -0
  71. package/docs/guides/html-rewriter/extract-social-meta.mdx +97 -0
  72. package/docs/guides/http/cluster.mdx +69 -0
  73. package/docs/guides/http/fetch-unix.mdx +35 -0
  74. package/docs/guides/http/fetch.mdx +26 -0
  75. package/docs/guides/http/file-uploads.mdx +97 -0
  76. package/docs/guides/http/hot.mdx +28 -0
  77. package/docs/guides/http/proxy.mdx +26 -0
  78. package/docs/guides/http/server.mdx +48 -0
  79. package/docs/guides/http/simple.mdx +20 -0
  80. package/docs/guides/http/stream-file.mdx +50 -0
  81. package/docs/guides/http/stream-iterator.mdx +49 -0
  82. package/docs/guides/http/stream-node-streams-in-bun.mdx +22 -0
  83. package/docs/guides/http/tls.mdx +32 -0
  84. package/docs/guides/index.mdx +10 -0
  85. package/docs/guides/install/add-dev.mdx +28 -0
  86. package/docs/guides/install/add-git.mdx +38 -0
  87. package/docs/guides/install/add-optional.mdx +27 -0
  88. package/docs/guides/install/add-peer.mdx +45 -0
  89. package/docs/guides/install/add-tarball.mdx +35 -0
  90. package/docs/guides/install/add.mdx +44 -0
  91. package/docs/guides/install/azure-artifacts.mdx +76 -0
  92. package/docs/guides/install/cicd.mdx +43 -0
  93. package/docs/guides/install/custom-registry.mdx +32 -0
  94. package/docs/guides/install/from-npm-install-to-bun-install.mdx +230 -0
  95. package/docs/guides/install/git-diff-bun-lockfile.mdx +47 -0
  96. package/docs/guides/install/jfrog-artifactory.mdx +28 -0
  97. package/docs/guides/install/npm-alias.mdx +25 -0
  98. package/docs/guides/install/registry-scope.mdx +40 -0
  99. package/docs/guides/install/trusted.mdx +50 -0
  100. package/docs/guides/install/workspaces.mdx +70 -0
  101. package/docs/guides/install/yarnlock.mdx +50 -0
  102. package/docs/guides/process/argv.mdx +66 -0
  103. package/docs/guides/process/ctrl-c.mdx +18 -0
  104. package/docs/guides/process/ipc.mdx +69 -0
  105. package/docs/guides/process/nanoseconds.mdx +15 -0
  106. package/docs/guides/process/os-signals.mdx +41 -0
  107. package/docs/guides/process/spawn-stderr.mdx +34 -0
  108. package/docs/guides/process/spawn-stdout.mdx +28 -0
  109. package/docs/guides/process/spawn.mdx +43 -0
  110. package/docs/guides/process/stdin.mdx +62 -0
  111. package/docs/guides/read-file/arraybuffer.mdx +30 -0
  112. package/docs/guides/read-file/buffer.mdx +21 -0
  113. package/docs/guides/read-file/exists.mdx +18 -0
  114. package/docs/guides/read-file/json.mdx +19 -0
  115. package/docs/guides/read-file/mime.mdx +22 -0
  116. package/docs/guides/read-file/stream.mdx +28 -0
  117. package/docs/guides/read-file/string.mdx +24 -0
  118. package/docs/guides/read-file/uint8array.mdx +23 -0
  119. package/docs/guides/read-file/watch.mdx +66 -0
  120. package/docs/guides/runtime/build-time-constants.mdx +295 -0
  121. package/docs/guides/runtime/cicd.mdx +45 -0
  122. package/docs/guides/runtime/codesign-macos-executable.mdx +61 -0
  123. package/docs/guides/runtime/define-constant.mdx +149 -0
  124. package/docs/guides/runtime/delete-directory.mdx +39 -0
  125. package/docs/guides/runtime/delete-file.mdx +21 -0
  126. package/docs/guides/runtime/heap-snapshot.mdx +28 -0
  127. package/docs/guides/runtime/import-html.mdx +17 -0
  128. package/docs/guides/runtime/import-json.mdx +46 -0
  129. package/docs/guides/runtime/import-toml.mdx +32 -0
  130. package/docs/guides/runtime/import-yaml.mdx +104 -0
  131. package/docs/guides/runtime/read-env.mdx +37 -0
  132. package/docs/guides/runtime/set-env.mdx +51 -0
  133. package/docs/guides/runtime/shell.mdx +42 -0
  134. package/docs/guides/runtime/timezone.mdx +38 -0
  135. package/docs/guides/runtime/tsconfig-paths.mdx +31 -0
  136. package/docs/guides/runtime/typescript.mdx +51 -0
  137. package/docs/guides/runtime/vscode-debugger.mdx +48 -0
  138. package/docs/guides/runtime/web-debugger.mdx +103 -0
  139. package/docs/guides/streams/node-readable-to-arraybuffer.mdx +13 -0
  140. package/docs/guides/streams/node-readable-to-blob.mdx +13 -0
  141. package/docs/guides/streams/node-readable-to-json.mdx +14 -0
  142. package/docs/guides/streams/node-readable-to-string.mdx +14 -0
  143. package/docs/guides/streams/node-readable-to-uint8array.mdx +13 -0
  144. package/docs/guides/streams/to-array.mdx +16 -0
  145. package/docs/guides/streams/to-arraybuffer.mdx +16 -0
  146. package/docs/guides/streams/to-blob.mdx +16 -0
  147. package/docs/guides/streams/to-buffer.mdx +17 -0
  148. package/docs/guides/streams/to-json.mdx +16 -0
  149. package/docs/guides/streams/to-string.mdx +16 -0
  150. package/docs/guides/streams/to-typedarray.mdx +24 -0
  151. package/docs/guides/test/bail.mdx +24 -0
  152. package/docs/guides/test/coverage-threshold.mdx +67 -0
  153. package/docs/guides/test/coverage.mdx +49 -0
  154. package/docs/guides/test/happy-dom.mdx +73 -0
  155. package/docs/guides/test/migrate-from-jest.mdx +125 -0
  156. package/docs/guides/test/mock-clock.mdx +50 -0
  157. package/docs/guides/test/mock-functions.mdx +70 -0
  158. package/docs/guides/test/rerun-each.mdx +16 -0
  159. package/docs/guides/test/run-tests.mdx +116 -0
  160. package/docs/guides/test/skip-tests.mdx +43 -0
  161. package/docs/guides/test/snapshot.mdx +102 -0
  162. package/docs/guides/test/spy-on.mdx +49 -0
  163. package/docs/guides/test/svelte-test.mdx +113 -0
  164. package/docs/guides/test/testing-library.mdx +93 -0
  165. package/docs/guides/test/timeout.mdx +17 -0
  166. package/docs/guides/test/todo-tests.mdx +74 -0
  167. package/docs/guides/test/update-snapshots.mdx +49 -0
  168. package/docs/guides/test/watch-mode.mdx +24 -0
  169. package/docs/guides/util/base64.mdx +17 -0
  170. package/docs/guides/util/deep-equals.mdx +41 -0
  171. package/docs/guides/util/deflate.mdx +20 -0
  172. package/docs/guides/util/detect-bun.mdx +25 -0
  173. package/docs/guides/util/entrypoint.mdx +19 -0
  174. package/docs/guides/util/escape-html.mdx +24 -0
  175. package/docs/guides/util/file-url-to-path.mdx +16 -0
  176. package/docs/guides/util/gzip.mdx +20 -0
  177. package/docs/guides/util/hash-a-password.mdx +56 -0
  178. package/docs/guides/util/import-meta-dir.mdx +15 -0
  179. package/docs/guides/util/import-meta-file.mdx +15 -0
  180. package/docs/guides/util/import-meta-path.mdx +15 -0
  181. package/docs/guides/util/javascript-uuid.mdx +25 -0
  182. package/docs/guides/util/main.mdx +43 -0
  183. package/docs/guides/util/path-to-file-url.mdx +16 -0
  184. package/docs/guides/util/sleep.mdx +24 -0
  185. package/docs/guides/util/version.mdx +23 -0
  186. package/docs/guides/util/which-path-to-executable-bin.mdx +17 -0
  187. package/docs/guides/websocket/compression.mdx +33 -0
  188. package/docs/guides/websocket/context.mdx +74 -0
  189. package/docs/guides/websocket/pubsub.mdx +40 -0
  190. package/docs/guides/websocket/simple.mdx +35 -0
  191. package/docs/guides/write-file/append.mdx +54 -0
  192. package/docs/guides/write-file/basic.mdx +46 -0
  193. package/docs/guides/write-file/blob.mdx +30 -0
  194. package/docs/guides/write-file/cat.mdx +19 -0
  195. package/docs/guides/write-file/file-cp.mdx +18 -0
  196. package/docs/guides/write-file/filesink.mdx +54 -0
  197. package/docs/guides/write-file/response.mdx +19 -0
  198. package/docs/guides/write-file/stdout.mdx +23 -0
  199. package/docs/guides/write-file/stream.mdx +19 -0
  200. package/docs/guides/write-file/unlink.mdx +18 -0
  201. package/docs/index.mdx +133 -0
  202. package/docs/installation.mdx +365 -0
  203. package/docs/pm/bunx.mdx +83 -0
  204. package/docs/pm/catalogs.mdx +292 -0
  205. package/docs/pm/cli/add.mdx +179 -0
  206. package/docs/pm/cli/audit.mdx +60 -0
  207. package/docs/pm/cli/install.mdx +471 -0
  208. package/docs/pm/cli/link.mdx +48 -0
  209. package/docs/pm/cli/outdated.mdx +197 -0
  210. package/docs/pm/cli/patch.mdx +69 -0
  211. package/docs/pm/cli/pm.mdx +319 -0
  212. package/docs/pm/cli/publish.mdx +123 -0
  213. package/docs/pm/cli/remove.mdx +16 -0
  214. package/docs/pm/cli/update.mdx +140 -0
  215. package/docs/pm/cli/why.mdx +84 -0
  216. package/docs/pm/filter.mdx +102 -0
  217. package/docs/pm/global-cache.mdx +72 -0
  218. package/docs/pm/isolated-installs.mdx +205 -0
  219. package/docs/pm/lifecycle.mdx +57 -0
  220. package/docs/pm/lockfile.mdx +64 -0
  221. package/docs/pm/npmrc.mdx +111 -0
  222. package/docs/pm/overrides.mdx +83 -0
  223. package/docs/pm/scopes-registries.mdx +35 -0
  224. package/docs/pm/security-scanner-api.mdx +95 -0
  225. package/docs/pm/workspaces.mdx +109 -0
  226. package/docs/project/benchmarking.mdx +218 -0
  227. package/docs/project/bindgen.mdx +223 -0
  228. package/docs/project/building-windows.mdx +133 -0
  229. package/docs/project/contributing.mdx +343 -0
  230. package/docs/project/feedback.mdx +20 -0
  231. package/docs/project/license.mdx +78 -0
  232. package/docs/project/roadmap.mdx +8 -0
  233. package/docs/quickstart.mdx +240 -0
  234. package/docs/runtime/auto-install.mdx +97 -0
  235. package/docs/runtime/binary-data.mdx +846 -0
  236. package/docs/runtime/bun-apis.mdx +59 -0
  237. package/docs/runtime/bunfig.mdx +642 -0
  238. package/docs/runtime/c-compiler.mdx +204 -0
  239. package/docs/runtime/child-process.mdx +532 -0
  240. package/docs/runtime/color.mdx +267 -0
  241. package/docs/runtime/console.mdx +67 -0
  242. package/docs/runtime/cookies.mdx +454 -0
  243. package/docs/runtime/debugger.mdx +335 -0
  244. package/docs/runtime/environment-variables.mdx +214 -0
  245. package/docs/runtime/ffi.mdx +565 -0
  246. package/docs/runtime/file-io.mdx +306 -0
  247. package/docs/runtime/file-system-router.mdx +118 -0
  248. package/docs/runtime/file-types.mdx +354 -0
  249. package/docs/runtime/glob.mdx +181 -0
  250. package/docs/runtime/globals.mdx +72 -0
  251. package/docs/runtime/hashing.mdx +315 -0
  252. package/docs/runtime/html-rewriter.mdx +340 -0
  253. package/docs/runtime/http/cookies.mdx +79 -0
  254. package/docs/runtime/http/error-handling.mdx +40 -0
  255. package/docs/runtime/http/metrics.mdx +36 -0
  256. package/docs/runtime/http/routing.mdx +289 -0
  257. package/docs/runtime/http/server.mdx +647 -0
  258. package/docs/runtime/http/tls.mdx +101 -0
  259. package/docs/runtime/http/websockets.mdx +404 -0
  260. package/docs/runtime/index.mdx +223 -0
  261. package/docs/runtime/jsx.mdx +115 -0
  262. package/docs/runtime/module-resolution.mdx +342 -0
  263. package/docs/runtime/networking/dns.mdx +111 -0
  264. package/docs/runtime/networking/fetch.mdx +468 -0
  265. package/docs/runtime/networking/tcp.mdx +239 -0
  266. package/docs/runtime/networking/udp.mdx +129 -0
  267. package/docs/runtime/node-api.mdx +19 -0
  268. package/docs/runtime/nodejs-compat.mdx +468 -0
  269. package/docs/runtime/plugins.mdx +405 -0
  270. package/docs/runtime/redis.mdx +582 -0
  271. package/docs/runtime/s3.mdx +863 -0
  272. package/docs/runtime/secrets.mdx +336 -0
  273. package/docs/runtime/semver.mdx +57 -0
  274. package/docs/runtime/shell.mdx +637 -0
  275. package/docs/runtime/sql.mdx +1404 -0
  276. package/docs/runtime/sqlite.mdx +699 -0
  277. package/docs/runtime/streams.mdx +232 -0
  278. package/docs/runtime/templating/create.mdx +269 -0
  279. package/docs/runtime/templating/init.mdx +58 -0
  280. package/docs/runtime/transpiler.mdx +288 -0
  281. package/docs/runtime/typescript.mdx +58 -0
  282. package/docs/runtime/utils.mdx +922 -0
  283. package/docs/runtime/watch-mode.mdx +161 -0
  284. package/docs/runtime/web-apis.mdx +29 -0
  285. package/docs/runtime/workers.mdx +328 -0
  286. package/docs/runtime/yaml.mdx +469 -0
  287. package/docs/snippets/cli/add.mdx +166 -0
  288. package/docs/snippets/cli/build.mdx +196 -0
  289. package/docs/snippets/cli/feedback.mdx +17 -0
  290. package/docs/snippets/cli/init.mdx +84 -0
  291. package/docs/snippets/cli/install.mdx +173 -0
  292. package/docs/snippets/cli/link.mdx +163 -0
  293. package/docs/snippets/cli/outdated.mdx +140 -0
  294. package/docs/snippets/cli/patch.mdx +171 -0
  295. package/docs/snippets/cli/publish.mdx +198 -0
  296. package/docs/snippets/cli/remove.mdx +146 -0
  297. package/docs/snippets/cli/run.mdx +293 -0
  298. package/docs/snippets/cli/test.mdx +100 -0
  299. package/docs/snippets/cli/update.mdx +144 -0
  300. package/docs/snippets/product-card.mdx +32 -0
  301. package/docs/snippets/product-tiles.mdx +94 -0
  302. package/docs/test/code-coverage.mdx +409 -0
  303. package/docs/test/configuration.mdx +467 -0
  304. package/docs/test/dates-times.mdx +129 -0
  305. package/docs/test/discovery.mdx +90 -0
  306. package/docs/test/dom.mdx +226 -0
  307. package/docs/test/index.mdx +380 -0
  308. package/docs/test/lifecycle.mdx +348 -0
  309. package/docs/test/mocks.mdx +637 -0
  310. package/docs/test/reporters.mdx +117 -0
  311. package/docs/test/runtime-behavior.mdx +342 -0
  312. package/docs/test/snapshots.mdx +434 -0
  313. package/docs/test/writing-tests.mdx +635 -0
  314. package/docs/typescript.mdx +54 -0
  315. package/package.json +8 -6
  316. package/test.d.ts +2 -2
@@ -0,0 +1,69 @@
1
+ ---
2
+ title: Spawn a child process and communicate using IPC
3
+ sidebarTitle: Spawn a child process and communicate using IPC
4
+ mode: center
5
+ ---
6
+
7
+ Use [`Bun.spawn()`](https://bun.com/docs/api/spawn) to spawn a child process. When spawning a second `bun` process, you can open a direct inter-process communication (IPC) channel between the two processes.
8
+
9
+ <Note>
10
+ This API is only compatible with other `bun` processes. Use `process.execPath` to get a path to the currently running
11
+ `bun` executable.
12
+ </Note>
13
+
14
+ ```ts parent.ts icon="/icons/typescript.svg"
15
+ const child = Bun.spawn(["bun", "child.ts"], {
16
+ ipc(message) {
17
+ /**
18
+ * The message received from the sub process
19
+ **/
20
+ },
21
+ });
22
+ ```
23
+
24
+ ---
25
+
26
+ The parent process can send messages to the subprocess using the `.send()` method on the returned `Subprocess` instance. A reference to the sending subprocess is also available as the second argument in the `ipc` handler.
27
+
28
+ ```ts parent.ts icon="/icons/typescript.svg"
29
+ const childProc = Bun.spawn(["bun", "child.ts"], {
30
+ ipc(message, childProc) {
31
+ /**
32
+ * The message received from the sub process
33
+ **/
34
+ childProc.send("Respond to child");
35
+ },
36
+ });
37
+
38
+ childProc.send("I am your father"); // The parent can send messages to the child as well
39
+ ```
40
+
41
+ ---
42
+
43
+ Meanwhile the child process can send messages to its parent using with `process.send()` and receive messages with `process.on("message")`. This is the same API used for `child_process.fork()` in Node.js.
44
+
45
+ ```ts child.ts icon="/icons/typescript.svg"
46
+ process.send("Hello from child as string");
47
+ process.send({ message: "Hello from child as object" });
48
+
49
+ process.on("message", message => {
50
+ // print message from parent
51
+ console.log(message);
52
+ });
53
+ ```
54
+
55
+ ---
56
+
57
+ All messages are serialized using the JSC `serialize` API, which allows for the same set of [transferrable types](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Transferable_objects) supported by `postMessage` and `structuredClone`, including strings, typed arrays, streams, and objects.
58
+
59
+ ```ts child.ts icon="/icons/typescript.svg"
60
+ // send a string
61
+ process.send("Hello from child as string");
62
+
63
+ // send an object
64
+ process.send({ message: "Hello from child as object" });
65
+ ```
66
+
67
+ ---
68
+
69
+ See [Docs > API > Child processes](https://bun.com/docs/api/spawn) for complete documentation.
@@ -0,0 +1,15 @@
1
+ ---
2
+ title: Get the process uptime in nanoseconds
3
+ sidebarTitle: Process uptime
4
+ mode: center
5
+ ---
6
+
7
+ Use `Bun.nanoseconds()` to get the total number of nanoseconds the `bun` process has been alive.
8
+
9
+ ```ts
10
+ Bun.nanoseconds();
11
+ ```
12
+
13
+ ---
14
+
15
+ See [Docs > API > Utils](https://bun.com/docs/api/utils) for more useful utilities.
@@ -0,0 +1,41 @@
1
+ ---
2
+ title: Listen to OS signals
3
+ sidebarTitle: OS signals
4
+ mode: center
5
+ ---
6
+
7
+ Bun supports the Node.js `process` global, including the `process.on()` method for listening to OS signals.
8
+
9
+ ```ts
10
+ process.on("SIGINT", () => {
11
+ console.log("Received SIGINT");
12
+ });
13
+ ```
14
+
15
+ ---
16
+
17
+ If you don't know which signal to listen for, you listen to the umbrella `"exit"` event.
18
+
19
+ ```ts
20
+ process.on("exit", code => {
21
+ console.log(`Process exited with code ${code}`);
22
+ });
23
+ ```
24
+
25
+ ---
26
+
27
+ If you don't know which signal to listen for, you listen to the [`"beforeExit"`](https://nodejs.org/api/process.html#event-beforeexit) and [`"exit"`](https://nodejs.org/api/process.html#event-exit) events.
28
+
29
+ ```ts
30
+ process.on("beforeExit", code => {
31
+ console.log(`Event loop is empty!`);
32
+ });
33
+
34
+ process.on("exit", code => {
35
+ console.log(`Process is exiting with code ${code}`);
36
+ });
37
+ ```
38
+
39
+ ---
40
+
41
+ See [Docs > API > Utils](https://bun.com/docs/api/utils) for more useful utilities.
@@ -0,0 +1,34 @@
1
+ ---
2
+ title: Read stderr from a child process
3
+ sidebarTitle: Read stderr
4
+ mode: center
5
+ ---
6
+
7
+ When using [`Bun.spawn()`](https://bun.com/docs/api/spawn), the child process inherits the `stderr` of the spawning process. If instead you'd prefer to read and handle `stderr`, set the `stderr` option to `"pipe"`.
8
+
9
+ ```ts
10
+ const proc = Bun.spawn(["echo", "hello"], {
11
+ stderr: "pipe",
12
+ });
13
+
14
+ proc.stderr; // => ReadableStream
15
+ ```
16
+
17
+ ---
18
+
19
+ To read `stderr` until the child process exits, use .text()
20
+
21
+ ```ts
22
+ const proc = Bun.spawn(["echo", "hello"], {
23
+ stderr: "pipe",
24
+ });
25
+
26
+ const errors: string = await proc.stderr.text();
27
+ if (errors) {
28
+ // handle errors
29
+ }
30
+ ```
31
+
32
+ ---
33
+
34
+ See [Docs > API > Child processes](https://bun.com/docs/api/spawn) for complete documentation.
@@ -0,0 +1,28 @@
1
+ ---
2
+ title: Read stdout from a child process
3
+ sidebarTitle: Read stdout
4
+ mode: center
5
+ ---
6
+
7
+ When using [`Bun.spawn()`](https://bun.com/docs/api/spawn), the `stdout` of the child process can be consumed as a `ReadableStream` via `proc.stdout`.
8
+
9
+ ```ts
10
+ const proc = Bun.spawn(["echo", "hello"]);
11
+
12
+ const output = await proc.stdout.text();
13
+ output; // => "hello"
14
+ ```
15
+
16
+ ---
17
+
18
+ To instead pipe the `stdout` of the child process to `stdout` of the parent process, set "inherit".
19
+
20
+ ```ts
21
+ const proc = Bun.spawn(["echo", "hello"], {
22
+ stdout: "inherit",
23
+ });
24
+ ```
25
+
26
+ ---
27
+
28
+ See [Docs > API > Child processes](https://bun.com/docs/api/spawn) for complete documentation.
@@ -0,0 +1,43 @@
1
+ ---
2
+ title: Spawn a child process
3
+ sidebarTitle: Spawn child process
4
+ mode: center
5
+ ---
6
+
7
+ Use [`Bun.spawn()`](https://bun.com/docs/api/spawn) to spawn a child process.
8
+
9
+ ```ts
10
+ const proc = Bun.spawn(["echo", "hello"]);
11
+
12
+ // await completion
13
+ await proc.exited;
14
+ ```
15
+
16
+ ---
17
+
18
+ The second argument accepts a configuration object.
19
+
20
+ ```ts
21
+ const proc = Bun.spawn(["echo", "Hello, world!"], {
22
+ cwd: "/tmp",
23
+ env: { FOO: "bar" },
24
+ onExit(proc, exitCode, signalCode, error) {
25
+ // exit handler
26
+ },
27
+ });
28
+ ```
29
+
30
+ ---
31
+
32
+ By default, the `stdout` of the child process can be consumed as a `ReadableStream` using `proc.stdout`.
33
+
34
+ ```ts
35
+ const proc = Bun.spawn(["echo", "hello"]);
36
+
37
+ const output = await proc.stdout.text();
38
+ output; // => "hello\n"
39
+ ```
40
+
41
+ ---
42
+
43
+ See [Docs > API > Child processes](https://bun.com/docs/api/spawn) for complete documentation.
@@ -0,0 +1,62 @@
1
+ ---
2
+ title: Read from stdin
3
+ sidebarTitle: Read from stdin
4
+ mode: center
5
+ ---
6
+
7
+ For CLI tools, it's often useful to read from `stdin`. In Bun, the `console` object is an `AsyncIterable` that yields lines from `stdin`.
8
+
9
+ ```ts index.ts icon="/icons/typescript.svg"
10
+ const prompt = "Type something: ";
11
+ process.stdout.write(prompt);
12
+ for await (const line of console) {
13
+ console.log(`You typed: ${line}`);
14
+ process.stdout.write(prompt);
15
+ }
16
+ ```
17
+
18
+ ---
19
+
20
+ Running this file results in a never-ending interactive prompt that echoes whatever the user types.
21
+
22
+ ```sh terminal icon="terminal"
23
+ bun run index.ts
24
+ ```
25
+
26
+ ```txt
27
+ Type something: hello
28
+ You typed: hello
29
+ Type something: hello again
30
+ You typed: hello again
31
+ ```
32
+
33
+ ---
34
+
35
+ Bun also exposes stdin as a `BunFile` via `Bun.stdin`. This is useful for incrementally reading large inputs that are piped into the `bun` process.
36
+
37
+ There is no guarantee that the chunks will be split line-by-line.
38
+
39
+ ```ts stdin.ts icon="/icons/typescript.svg"
40
+ for await (const chunk of Bun.stdin.stream()) {
41
+ // chunk is Uint8Array
42
+ // this converts it to text (assumes ASCII encoding)
43
+ const chunkText = Buffer.from(chunk).toString();
44
+ console.log(`Chunk: ${chunkText}`);
45
+ }
46
+ ```
47
+
48
+ ---
49
+
50
+ This will print the input that is piped into the `bun` process.
51
+
52
+ ```sh terminal icon="terminal"
53
+ echo "hello" | bun run stdin.ts
54
+ ```
55
+
56
+ ```txt
57
+ Chunk: hello
58
+ ```
59
+
60
+ ---
61
+
62
+ See [Docs > API > Utils](https://bun.com/docs/api/utils) for more useful utilities.
@@ -0,0 +1,30 @@
1
+ ---
2
+ title: Read a file to an ArrayBuffer
3
+ sidebarTitle: Read to ArrayBuffer
4
+ mode: center
5
+ ---
6
+
7
+ The `Bun.file()` function accepts a path and returns a `BunFile` instance. The `BunFile` class extends `Blob` and allows you to lazily read the file in a variety of formats. Use `.arrayBuffer()` to read the file as an `ArrayBuffer`.
8
+
9
+ ```ts index.ts icon="/icons/typescript.svg"
10
+ const path = "/path/to/package.json";
11
+ const file = Bun.file(path);
12
+
13
+ const buffer = await file.arrayBuffer();
14
+ ```
15
+
16
+ ---
17
+
18
+ The binary content in the `ArrayBuffer` can then be read as a typed array, such as `Int8Array`. For `Uint8Array`, use [`.bytes()`](./uint8array).
19
+
20
+ ```ts index.ts icon="/icons/typescript.svg"
21
+ const buffer = await file.arrayBuffer();
22
+ const bytes = new Int8Array(buffer);
23
+
24
+ bytes[0];
25
+ bytes.length;
26
+ ```
27
+
28
+ ---
29
+
30
+ Refer to the [Typed arrays](https://bun.com/docs/api/binary-data#typedarray) docs for more information on working with typed arrays in Bun.
@@ -0,0 +1,21 @@
1
+ ---
2
+ title: Read a file to a Buffer
3
+ sidebarTitle: Read to Buffer
4
+ mode: center
5
+ ---
6
+
7
+ The `Bun.file()` function accepts a path and returns a `BunFile` instance. The `BunFile` class extends `Blob` and allows you to lazily read the file in a variety of formats.
8
+
9
+ To read the file into a `Buffer` instance, first use `.arrayBuffer()` to consume the file as an `ArrayBuffer`, then use `Buffer.from()` to create a `Buffer` from the `ArrayBuffer`.
10
+
11
+ ```ts index.ts icon="/icons/typescript.svg"
12
+ const path = "/path/to/package.json";
13
+ const file = Bun.file(path);
14
+
15
+ const arrbuf = await file.arrayBuffer();
16
+ const buffer = Buffer.from(arrbuf);
17
+ ```
18
+
19
+ ---
20
+
21
+ Refer to [Binary data > Buffer](https://bun.com/docs/api/binary-data#buffer) for more information on working with `Buffer` and other binary data formats in Bun.
@@ -0,0 +1,18 @@
1
+ ---
2
+ title: Check if a file exists
3
+ sidebarTitle: Check file exists
4
+ mode: center
5
+ ---
6
+
7
+ The `Bun.file()` function accepts a path and returns a `BunFile` instance. Use the `.exists()` method to check if a file exists at the given path.
8
+
9
+ ```ts index.ts icon="/icons/typescript.svg"
10
+ const path = "/path/to/package.json";
11
+ const file = Bun.file(path);
12
+
13
+ await file.exists(); // boolean;
14
+ ```
15
+
16
+ ---
17
+
18
+ Refer to [API > File I/O](https://bun.com/docs/api/file-io) for more information on working with `BunFile`.
@@ -0,0 +1,19 @@
1
+ ---
2
+ title: Read a JSON file
3
+ sidebarTitle: Read JSON file
4
+ mode: center
5
+ ---
6
+
7
+ The `Bun.file()` function accepts a path and returns a `BunFile` instance. The `BunFile` class extends `Blob` and allows you to lazily read the file in a variety of formats. Use `.json()` to read and parse the contents of a `.json` file as a plain object.
8
+
9
+ The MIME type of the `BunFile` will be set accordingly.
10
+
11
+ ```ts index.ts icon="/icons/typescript.svg"
12
+ const path = "/path/to/package.json";
13
+ const file = Bun.file(path);
14
+
15
+ const contents = await file.json();
16
+ // { name: "my-package" }
17
+
18
+ file.type; // => "application/json;charset=utf-8";
19
+ ```
@@ -0,0 +1,22 @@
1
+ ---
2
+ title: Get the MIME type of a file
3
+ sidebarTitle: Get MIME type
4
+ mode: center
5
+ ---
6
+
7
+ The `Bun.file()` function accepts a path and returns a `BunFile` instance. The `BunFile` class extends `Blob`, so use the `.type` property to read the MIME type.
8
+
9
+ ```ts
10
+ const file = Bun.file("./package.json");
11
+ file.type; // application/json
12
+
13
+ const file = Bun.file("./index.html");
14
+ file.type; // text/html
15
+
16
+ const file = Bun.file("./image.png");
17
+ file.type; // image/png
18
+ ```
19
+
20
+ ---
21
+
22
+ Refer to [API > File I/O](https://bun.com/docs/api/file-io) for more information on working with `BunFile`.
@@ -0,0 +1,28 @@
1
+ ---
2
+ title: Read a file as a ReadableStream
3
+ sidebarTitle: Read as stream
4
+ mode: center
5
+ ---
6
+
7
+ The `Bun.file()` function accepts a path and returns a `BunFile` instance. The `BunFile` class extends `Blob` and allows you to lazily read the file in a variety of formats. Use `.stream()` to consume the file incrementally as a `ReadableStream`.
8
+
9
+ ```ts
10
+ const path = "/path/to/package.json";
11
+ const file = Bun.file(path);
12
+
13
+ const stream = file.stream();
14
+ ```
15
+
16
+ ---
17
+
18
+ The chunks of the stream can be consumed as an [async iterable](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#the_async_iterator_and_async_iterable_protocols) using `for await`.
19
+
20
+ ```ts
21
+ for await (const chunk of stream) {
22
+ chunk; // => Uint8Array
23
+ }
24
+ ```
25
+
26
+ ---
27
+
28
+ Refer to the [Streams](https://bun.com/docs/api/streams) documentation for more information on working with streams in Bun.
@@ -0,0 +1,24 @@
1
+ ---
2
+ title: Read a file as a string
3
+ sidebarTitle: Read as string
4
+ mode: center
5
+ ---
6
+
7
+ The `Bun.file()` function accepts a path and returns a `BunFile` instance. The `BunFile` class extends `Blob` and allows you to lazily read the file in a variety of formats. Use `.text()` to read the contents as a string.
8
+
9
+ ```ts
10
+ const path = "/path/to/file.txt";
11
+ const file = Bun.file(path);
12
+
13
+ const text = await file.text();
14
+ // string
15
+ ```
16
+
17
+ ---
18
+
19
+ Any relative paths will be resolved relative to the project root (the nearest directory containing a `package.json` file).
20
+
21
+ ```ts
22
+ const path = "./file.txt";
23
+ const file = Bun.file(path);
24
+ ```
@@ -0,0 +1,23 @@
1
+ ---
2
+ title: Read a file to a Uint8Array
3
+ sidebarTitle: Read to Uint8Array
4
+ mode: center
5
+ ---
6
+
7
+ The `Bun.file()` function accepts a path and returns a `BunFile` instance. The `BunFile` class extends `Blob` and allows you to lazily read the file in a variety of formats.
8
+
9
+ To read the file into a `Uint8Array` instance, retrieve the contents of the `BunFile` with `.bytes()`.
10
+
11
+ ```ts
12
+ const path = "/path/to/package.json";
13
+ const file = Bun.file(path);
14
+
15
+ const byteArray = await file.bytes();
16
+
17
+ byteArray[0]; // first byteArray
18
+ byteArray.length; // length of byteArray
19
+ ```
20
+
21
+ ---
22
+
23
+ Refer to [API > Binary data > Typed arrays](https://bun.com/docs/api/binary-data#typedarray) for more information on working with `Uint8Array` and other binary data formats in Bun.
@@ -0,0 +1,66 @@
1
+ ---
2
+ title: Watch a directory for changes
3
+ sidebarTitle: Watch directory
4
+ mode: center
5
+ ---
6
+
7
+ Bun implements the `node:fs` module, including the `fs.watch` function for listening for file system changes.
8
+
9
+ This code block listens for changes to files in the current directory. By default this operation is _shallow_, meaning that changes to files in subdirectories will not be detected.
10
+
11
+ ```ts
12
+ import { watch } from "fs";
13
+
14
+ const watcher = watch(import.meta.dir, (event, filename) => {
15
+ console.log(`Detected ${event} in ${filename}`);
16
+ });
17
+ ```
18
+
19
+ ---
20
+
21
+ To listen to changes in subdirectories, pass the `recursive: true` option to `fs.watch`.
22
+
23
+ ```ts
24
+ import { watch } from "fs";
25
+
26
+ const watcher = watch(import.meta.dir, { recursive: true }, (event, filename) => {
27
+ console.log(`Detected ${event} in ${filename}`);
28
+ });
29
+ ```
30
+
31
+ ---
32
+
33
+ Using the `node:fs/promises` module, you can listen for changes using `for await...of` instead of a callback.
34
+
35
+ ```ts
36
+ import { watch } from "fs/promises";
37
+
38
+ const watcher = watch(import.meta.dir);
39
+ for await (const event of watcher) {
40
+ console.log(`Detected ${event.eventType} in ${event.filename}`);
41
+ }
42
+ ```
43
+
44
+ ---
45
+
46
+ To stop listening for changes, call `watcher.close()`. It's common to do this when the process receives a `SIGINT` signal, such as when the user presses Ctrl-C.
47
+
48
+ ```ts
49
+ import { watch } from "fs";
50
+
51
+ const watcher = watch(import.meta.dir, (event, filename) => {
52
+ console.log(`Detected ${event} in ${filename}`);
53
+ });
54
+
55
+ process.on("SIGINT", () => {
56
+ // close watcher when Ctrl-C is pressed
57
+ console.log("Closing watcher...");
58
+ watcher.close();
59
+
60
+ process.exit(0);
61
+ });
62
+ ```
63
+
64
+ ---
65
+
66
+ Refer to [API > Binary data > Typed arrays](https://bun.com/docs/api/binary-data#typedarray) for more information on working with `Uint8Array` and other binary data formats in Bun.