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.
- package/bun.d.ts +102 -6
- package/docs/bundler/bytecode.mdx +465 -0
- package/docs/bundler/css.mdx +1024 -0
- package/docs/bundler/esbuild.mdx +253 -0
- package/docs/bundler/executables.mdx +535 -0
- package/docs/bundler/fullstack.mdx +1064 -0
- package/docs/bundler/hot-reloading.mdx +229 -0
- package/docs/bundler/html-static.mdx +386 -0
- package/docs/bundler/index.mdx +1499 -0
- package/docs/bundler/loaders.mdx +356 -0
- package/docs/bundler/macros.mdx +328 -0
- package/docs/bundler/minifier.mdx +1306 -0
- package/docs/bundler/plugins.mdx +411 -0
- package/docs/feedback.mdx +85 -0
- package/docs/guides/binary/arraybuffer-to-array.mdx +29 -0
- package/docs/guides/binary/arraybuffer-to-blob.mdx +26 -0
- package/docs/guides/binary/arraybuffer-to-buffer.mdx +27 -0
- package/docs/guides/binary/arraybuffer-to-string.mdx +17 -0
- package/docs/guides/binary/arraybuffer-to-typedarray.mdx +41 -0
- package/docs/guides/binary/blob-to-arraybuffer.mdx +16 -0
- package/docs/guides/binary/blob-to-dataview.mdx +16 -0
- package/docs/guides/binary/blob-to-stream.mdx +16 -0
- package/docs/guides/binary/blob-to-string.mdx +17 -0
- package/docs/guides/binary/blob-to-typedarray.mdx +16 -0
- package/docs/guides/binary/buffer-to-arraybuffer.mdx +16 -0
- package/docs/guides/binary/buffer-to-blob.mdx +16 -0
- package/docs/guides/binary/buffer-to-readablestream.mdx +43 -0
- package/docs/guides/binary/buffer-to-string.mdx +27 -0
- package/docs/guides/binary/buffer-to-typedarray.mdx +16 -0
- package/docs/guides/binary/dataview-to-string.mdx +17 -0
- package/docs/guides/binary/typedarray-to-arraybuffer.mdx +27 -0
- package/docs/guides/binary/typedarray-to-blob.mdx +18 -0
- package/docs/guides/binary/typedarray-to-buffer.mdx +16 -0
- package/docs/guides/binary/typedarray-to-dataview.mdx +16 -0
- package/docs/guides/binary/typedarray-to-readablestream.mdx +43 -0
- package/docs/guides/binary/typedarray-to-string.mdx +18 -0
- package/docs/guides/deployment/aws-lambda.mdx +204 -0
- package/docs/guides/deployment/digital-ocean.mdx +161 -0
- package/docs/guides/deployment/google-cloud-run.mdx +197 -0
- package/docs/guides/deployment/railway.mdx +145 -0
- package/docs/guides/deployment/render.mdx +82 -0
- package/docs/guides/deployment/vercel.mdx +99 -0
- package/docs/guides/ecosystem/astro.mdx +82 -0
- package/docs/guides/ecosystem/discordjs.mdx +80 -0
- package/docs/guides/ecosystem/docker.mdx +151 -0
- package/docs/guides/ecosystem/drizzle.mdx +195 -0
- package/docs/guides/ecosystem/edgedb.mdx +257 -0
- package/docs/guides/ecosystem/elysia.mdx +31 -0
- package/docs/guides/ecosystem/express.mdx +43 -0
- package/docs/guides/ecosystem/hono.mdx +47 -0
- package/docs/guides/ecosystem/mongoose.mdx +92 -0
- package/docs/guides/ecosystem/neon-drizzle.mdx +234 -0
- package/docs/guides/ecosystem/neon-serverless-postgres.mdx +60 -0
- package/docs/guides/ecosystem/nextjs.mdx +57 -0
- package/docs/guides/ecosystem/nuxt.mdx +90 -0
- package/docs/guides/ecosystem/pm2.mdx +55 -0
- package/docs/guides/ecosystem/prisma-postgres.mdx +169 -0
- package/docs/guides/ecosystem/prisma.mdx +164 -0
- package/docs/guides/ecosystem/qwik.mdx +114 -0
- package/docs/guides/ecosystem/react.mdx +52 -0
- package/docs/guides/ecosystem/remix.mdx +97 -0
- package/docs/guides/ecosystem/sentry.mdx +54 -0
- package/docs/guides/ecosystem/solidstart.mdx +66 -0
- package/docs/guides/ecosystem/ssr-react.mdx +49 -0
- package/docs/guides/ecosystem/stric.mdx +54 -0
- package/docs/guides/ecosystem/sveltekit.mdx +138 -0
- package/docs/guides/ecosystem/systemd.mdx +114 -0
- package/docs/guides/ecosystem/upstash.mdx +87 -0
- package/docs/guides/ecosystem/vite.mdx +77 -0
- package/docs/guides/html-rewriter/extract-links.mdx +72 -0
- package/docs/guides/html-rewriter/extract-social-meta.mdx +97 -0
- package/docs/guides/http/cluster.mdx +69 -0
- package/docs/guides/http/fetch-unix.mdx +35 -0
- package/docs/guides/http/fetch.mdx +26 -0
- package/docs/guides/http/file-uploads.mdx +97 -0
- package/docs/guides/http/hot.mdx +28 -0
- package/docs/guides/http/proxy.mdx +26 -0
- package/docs/guides/http/server.mdx +48 -0
- package/docs/guides/http/simple.mdx +20 -0
- package/docs/guides/http/stream-file.mdx +50 -0
- package/docs/guides/http/stream-iterator.mdx +49 -0
- package/docs/guides/http/stream-node-streams-in-bun.mdx +22 -0
- package/docs/guides/http/tls.mdx +32 -0
- package/docs/guides/index.mdx +10 -0
- package/docs/guides/install/add-dev.mdx +28 -0
- package/docs/guides/install/add-git.mdx +38 -0
- package/docs/guides/install/add-optional.mdx +27 -0
- package/docs/guides/install/add-peer.mdx +45 -0
- package/docs/guides/install/add-tarball.mdx +35 -0
- package/docs/guides/install/add.mdx +44 -0
- package/docs/guides/install/azure-artifacts.mdx +76 -0
- package/docs/guides/install/cicd.mdx +43 -0
- package/docs/guides/install/custom-registry.mdx +32 -0
- package/docs/guides/install/from-npm-install-to-bun-install.mdx +230 -0
- package/docs/guides/install/git-diff-bun-lockfile.mdx +47 -0
- package/docs/guides/install/jfrog-artifactory.mdx +28 -0
- package/docs/guides/install/npm-alias.mdx +25 -0
- package/docs/guides/install/registry-scope.mdx +40 -0
- package/docs/guides/install/trusted.mdx +50 -0
- package/docs/guides/install/workspaces.mdx +70 -0
- package/docs/guides/install/yarnlock.mdx +50 -0
- package/docs/guides/process/argv.mdx +66 -0
- package/docs/guides/process/ctrl-c.mdx +18 -0
- package/docs/guides/process/ipc.mdx +69 -0
- package/docs/guides/process/nanoseconds.mdx +15 -0
- package/docs/guides/process/os-signals.mdx +41 -0
- package/docs/guides/process/spawn-stderr.mdx +34 -0
- package/docs/guides/process/spawn-stdout.mdx +28 -0
- package/docs/guides/process/spawn.mdx +43 -0
- package/docs/guides/process/stdin.mdx +62 -0
- package/docs/guides/read-file/arraybuffer.mdx +30 -0
- package/docs/guides/read-file/buffer.mdx +21 -0
- package/docs/guides/read-file/exists.mdx +18 -0
- package/docs/guides/read-file/json.mdx +19 -0
- package/docs/guides/read-file/mime.mdx +22 -0
- package/docs/guides/read-file/stream.mdx +28 -0
- package/docs/guides/read-file/string.mdx +24 -0
- package/docs/guides/read-file/uint8array.mdx +23 -0
- package/docs/guides/read-file/watch.mdx +66 -0
- package/docs/guides/runtime/build-time-constants.mdx +295 -0
- package/docs/guides/runtime/cicd.mdx +45 -0
- package/docs/guides/runtime/codesign-macos-executable.mdx +61 -0
- package/docs/guides/runtime/define-constant.mdx +149 -0
- package/docs/guides/runtime/delete-directory.mdx +39 -0
- package/docs/guides/runtime/delete-file.mdx +21 -0
- package/docs/guides/runtime/heap-snapshot.mdx +28 -0
- package/docs/guides/runtime/import-html.mdx +17 -0
- package/docs/guides/runtime/import-json.mdx +46 -0
- package/docs/guides/runtime/import-toml.mdx +32 -0
- package/docs/guides/runtime/import-yaml.mdx +104 -0
- package/docs/guides/runtime/read-env.mdx +37 -0
- package/docs/guides/runtime/set-env.mdx +51 -0
- package/docs/guides/runtime/shell.mdx +42 -0
- package/docs/guides/runtime/timezone.mdx +38 -0
- package/docs/guides/runtime/tsconfig-paths.mdx +31 -0
- package/docs/guides/runtime/typescript.mdx +51 -0
- package/docs/guides/runtime/vscode-debugger.mdx +48 -0
- package/docs/guides/runtime/web-debugger.mdx +103 -0
- package/docs/guides/streams/node-readable-to-arraybuffer.mdx +13 -0
- package/docs/guides/streams/node-readable-to-blob.mdx +13 -0
- package/docs/guides/streams/node-readable-to-json.mdx +14 -0
- package/docs/guides/streams/node-readable-to-string.mdx +14 -0
- package/docs/guides/streams/node-readable-to-uint8array.mdx +13 -0
- package/docs/guides/streams/to-array.mdx +16 -0
- package/docs/guides/streams/to-arraybuffer.mdx +16 -0
- package/docs/guides/streams/to-blob.mdx +16 -0
- package/docs/guides/streams/to-buffer.mdx +17 -0
- package/docs/guides/streams/to-json.mdx +16 -0
- package/docs/guides/streams/to-string.mdx +16 -0
- package/docs/guides/streams/to-typedarray.mdx +24 -0
- package/docs/guides/test/bail.mdx +24 -0
- package/docs/guides/test/coverage-threshold.mdx +67 -0
- package/docs/guides/test/coverage.mdx +49 -0
- package/docs/guides/test/happy-dom.mdx +73 -0
- package/docs/guides/test/migrate-from-jest.mdx +125 -0
- package/docs/guides/test/mock-clock.mdx +50 -0
- package/docs/guides/test/mock-functions.mdx +70 -0
- package/docs/guides/test/rerun-each.mdx +16 -0
- package/docs/guides/test/run-tests.mdx +116 -0
- package/docs/guides/test/skip-tests.mdx +43 -0
- package/docs/guides/test/snapshot.mdx +102 -0
- package/docs/guides/test/spy-on.mdx +49 -0
- package/docs/guides/test/svelte-test.mdx +113 -0
- package/docs/guides/test/testing-library.mdx +93 -0
- package/docs/guides/test/timeout.mdx +17 -0
- package/docs/guides/test/todo-tests.mdx +74 -0
- package/docs/guides/test/update-snapshots.mdx +49 -0
- package/docs/guides/test/watch-mode.mdx +24 -0
- package/docs/guides/util/base64.mdx +17 -0
- package/docs/guides/util/deep-equals.mdx +41 -0
- package/docs/guides/util/deflate.mdx +20 -0
- package/docs/guides/util/detect-bun.mdx +25 -0
- package/docs/guides/util/entrypoint.mdx +19 -0
- package/docs/guides/util/escape-html.mdx +24 -0
- package/docs/guides/util/file-url-to-path.mdx +16 -0
- package/docs/guides/util/gzip.mdx +20 -0
- package/docs/guides/util/hash-a-password.mdx +56 -0
- package/docs/guides/util/import-meta-dir.mdx +15 -0
- package/docs/guides/util/import-meta-file.mdx +15 -0
- package/docs/guides/util/import-meta-path.mdx +15 -0
- package/docs/guides/util/javascript-uuid.mdx +25 -0
- package/docs/guides/util/main.mdx +43 -0
- package/docs/guides/util/path-to-file-url.mdx +16 -0
- package/docs/guides/util/sleep.mdx +24 -0
- package/docs/guides/util/version.mdx +23 -0
- package/docs/guides/util/which-path-to-executable-bin.mdx +17 -0
- package/docs/guides/websocket/compression.mdx +33 -0
- package/docs/guides/websocket/context.mdx +74 -0
- package/docs/guides/websocket/pubsub.mdx +40 -0
- package/docs/guides/websocket/simple.mdx +35 -0
- package/docs/guides/write-file/append.mdx +54 -0
- package/docs/guides/write-file/basic.mdx +46 -0
- package/docs/guides/write-file/blob.mdx +30 -0
- package/docs/guides/write-file/cat.mdx +19 -0
- package/docs/guides/write-file/file-cp.mdx +18 -0
- package/docs/guides/write-file/filesink.mdx +54 -0
- package/docs/guides/write-file/response.mdx +19 -0
- package/docs/guides/write-file/stdout.mdx +23 -0
- package/docs/guides/write-file/stream.mdx +19 -0
- package/docs/guides/write-file/unlink.mdx +18 -0
- package/docs/index.mdx +133 -0
- package/docs/installation.mdx +365 -0
- package/docs/pm/bunx.mdx +83 -0
- package/docs/pm/catalogs.mdx +292 -0
- package/docs/pm/cli/add.mdx +179 -0
- package/docs/pm/cli/audit.mdx +60 -0
- package/docs/pm/cli/install.mdx +471 -0
- package/docs/pm/cli/link.mdx +48 -0
- package/docs/pm/cli/outdated.mdx +197 -0
- package/docs/pm/cli/patch.mdx +69 -0
- package/docs/pm/cli/pm.mdx +319 -0
- package/docs/pm/cli/publish.mdx +123 -0
- package/docs/pm/cli/remove.mdx +16 -0
- package/docs/pm/cli/update.mdx +140 -0
- package/docs/pm/cli/why.mdx +84 -0
- package/docs/pm/filter.mdx +102 -0
- package/docs/pm/global-cache.mdx +72 -0
- package/docs/pm/isolated-installs.mdx +205 -0
- package/docs/pm/lifecycle.mdx +57 -0
- package/docs/pm/lockfile.mdx +64 -0
- package/docs/pm/npmrc.mdx +111 -0
- package/docs/pm/overrides.mdx +83 -0
- package/docs/pm/scopes-registries.mdx +35 -0
- package/docs/pm/security-scanner-api.mdx +95 -0
- package/docs/pm/workspaces.mdx +109 -0
- package/docs/project/benchmarking.mdx +218 -0
- package/docs/project/bindgen.mdx +223 -0
- package/docs/project/building-windows.mdx +133 -0
- package/docs/project/contributing.mdx +343 -0
- package/docs/project/feedback.mdx +20 -0
- package/docs/project/license.mdx +78 -0
- package/docs/project/roadmap.mdx +8 -0
- package/docs/quickstart.mdx +240 -0
- package/docs/runtime/auto-install.mdx +97 -0
- package/docs/runtime/binary-data.mdx +846 -0
- package/docs/runtime/bun-apis.mdx +59 -0
- package/docs/runtime/bunfig.mdx +642 -0
- package/docs/runtime/c-compiler.mdx +204 -0
- package/docs/runtime/child-process.mdx +532 -0
- package/docs/runtime/color.mdx +267 -0
- package/docs/runtime/console.mdx +67 -0
- package/docs/runtime/cookies.mdx +454 -0
- package/docs/runtime/debugger.mdx +335 -0
- package/docs/runtime/environment-variables.mdx +214 -0
- package/docs/runtime/ffi.mdx +565 -0
- package/docs/runtime/file-io.mdx +306 -0
- package/docs/runtime/file-system-router.mdx +118 -0
- package/docs/runtime/file-types.mdx +354 -0
- package/docs/runtime/glob.mdx +181 -0
- package/docs/runtime/globals.mdx +72 -0
- package/docs/runtime/hashing.mdx +315 -0
- package/docs/runtime/html-rewriter.mdx +340 -0
- package/docs/runtime/http/cookies.mdx +79 -0
- package/docs/runtime/http/error-handling.mdx +40 -0
- package/docs/runtime/http/metrics.mdx +36 -0
- package/docs/runtime/http/routing.mdx +289 -0
- package/docs/runtime/http/server.mdx +647 -0
- package/docs/runtime/http/tls.mdx +101 -0
- package/docs/runtime/http/websockets.mdx +404 -0
- package/docs/runtime/index.mdx +223 -0
- package/docs/runtime/jsx.mdx +115 -0
- package/docs/runtime/module-resolution.mdx +342 -0
- package/docs/runtime/networking/dns.mdx +111 -0
- package/docs/runtime/networking/fetch.mdx +468 -0
- package/docs/runtime/networking/tcp.mdx +239 -0
- package/docs/runtime/networking/udp.mdx +129 -0
- package/docs/runtime/node-api.mdx +19 -0
- package/docs/runtime/nodejs-compat.mdx +468 -0
- package/docs/runtime/plugins.mdx +405 -0
- package/docs/runtime/redis.mdx +582 -0
- package/docs/runtime/s3.mdx +863 -0
- package/docs/runtime/secrets.mdx +336 -0
- package/docs/runtime/semver.mdx +57 -0
- package/docs/runtime/shell.mdx +637 -0
- package/docs/runtime/sql.mdx +1404 -0
- package/docs/runtime/sqlite.mdx +699 -0
- package/docs/runtime/streams.mdx +232 -0
- package/docs/runtime/templating/create.mdx +269 -0
- package/docs/runtime/templating/init.mdx +58 -0
- package/docs/runtime/transpiler.mdx +288 -0
- package/docs/runtime/typescript.mdx +58 -0
- package/docs/runtime/utils.mdx +922 -0
- package/docs/runtime/watch-mode.mdx +161 -0
- package/docs/runtime/web-apis.mdx +29 -0
- package/docs/runtime/workers.mdx +328 -0
- package/docs/runtime/yaml.mdx +469 -0
- package/docs/snippets/cli/add.mdx +166 -0
- package/docs/snippets/cli/build.mdx +196 -0
- package/docs/snippets/cli/feedback.mdx +17 -0
- package/docs/snippets/cli/init.mdx +84 -0
- package/docs/snippets/cli/install.mdx +173 -0
- package/docs/snippets/cli/link.mdx +163 -0
- package/docs/snippets/cli/outdated.mdx +140 -0
- package/docs/snippets/cli/patch.mdx +171 -0
- package/docs/snippets/cli/publish.mdx +198 -0
- package/docs/snippets/cli/remove.mdx +146 -0
- package/docs/snippets/cli/run.mdx +293 -0
- package/docs/snippets/cli/test.mdx +100 -0
- package/docs/snippets/cli/update.mdx +144 -0
- package/docs/snippets/product-card.mdx +32 -0
- package/docs/snippets/product-tiles.mdx +94 -0
- package/docs/test/code-coverage.mdx +409 -0
- package/docs/test/configuration.mdx +467 -0
- package/docs/test/dates-times.mdx +129 -0
- package/docs/test/discovery.mdx +90 -0
- package/docs/test/dom.mdx +226 -0
- package/docs/test/index.mdx +380 -0
- package/docs/test/lifecycle.mdx +348 -0
- package/docs/test/mocks.mdx +637 -0
- package/docs/test/reporters.mdx +117 -0
- package/docs/test/runtime-behavior.mdx +342 -0
- package/docs/test/snapshots.mdx +434 -0
- package/docs/test/writing-tests.mdx +635 -0
- package/docs/typescript.mdx +54 -0
- package/package.json +8 -6
- package/test.d.ts +2 -2
|
@@ -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.
|