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.
- package/bun.d.ts +4 -4
- package/docs/README.md +28 -0
- package/globals.d.ts +0 -1
- package/overrides.d.ts +45 -15
- package/package.json +1 -1
- package/test.d.ts +1 -1
- package/docs/api/binary-data.md +0 -1038
- package/docs/api/cc.md +0 -197
- package/docs/api/color.md +0 -262
- package/docs/api/console.md +0 -57
- package/docs/api/cookie.md +0 -449
- package/docs/api/dns.md +0 -110
- package/docs/api/fetch.md +0 -463
- package/docs/api/ffi.md +0 -557
- package/docs/api/file-io.md +0 -366
- package/docs/api/file-system-router.md +0 -112
- package/docs/api/file.md +0 -19
- package/docs/api/glob.md +0 -178
- package/docs/api/globals.md +0 -387
- package/docs/api/hashing.md +0 -319
- package/docs/api/html-rewriter.md +0 -334
- package/docs/api/http.md +0 -1408
- package/docs/api/import-meta.md +0 -69
- package/docs/api/node-api.md +0 -14
- package/docs/api/redis.md +0 -597
- package/docs/api/s3.md +0 -850
- package/docs/api/secrets.md +0 -319
- package/docs/api/semver.md +0 -52
- package/docs/api/spawn.md +0 -582
- package/docs/api/sql.md +0 -1374
- package/docs/api/sqlite.md +0 -694
- package/docs/api/streams.md +0 -230
- package/docs/api/tcp.md +0 -221
- package/docs/api/transpiler.md +0 -276
- package/docs/api/udp.md +0 -123
- package/docs/api/utils.md +0 -891
- package/docs/api/websockets.md +0 -573
- package/docs/api/workers.md +0 -322
- package/docs/api/yaml.md +0 -668
- package/docs/benchmarks.md +0 -120
- package/docs/bun-flavored-toml.md +0 -42
- package/docs/bundler/css.md +0 -1028
- package/docs/bundler/css_modules.md +0 -145
- package/docs/bundler/executables.md +0 -626
- package/docs/bundler/fullstack.md +0 -418
- package/docs/bundler/hmr.md +0 -234
- package/docs/bundler/html.md +0 -349
- package/docs/bundler/index.md +0 -1735
- package/docs/bundler/intro.md +0 -75
- package/docs/bundler/loaders.md +0 -410
- package/docs/bundler/macros.md +0 -329
- package/docs/bundler/plugins.md +0 -449
- package/docs/bundler/vs-esbuild.md +0 -1127
- package/docs/cli/add.md +0 -173
- package/docs/cli/bun-completions.md +0 -3
- package/docs/cli/bun-create.md +0 -338
- package/docs/cli/bun-install.md +0 -349
- package/docs/cli/bun-upgrade.md +0 -39
- package/docs/cli/bunx.md +0 -89
- package/docs/cli/filter.md +0 -90
- package/docs/cli/info.md +0 -65
- package/docs/cli/init.md +0 -85
- package/docs/cli/install.md +0 -344
- package/docs/cli/link.md +0 -40
- package/docs/cli/outdated.md +0 -90
- package/docs/cli/patch-commit.md +0 -11
- package/docs/cli/pm.md +0 -285
- package/docs/cli/publish.md +0 -120
- package/docs/cli/remove.md +0 -7
- package/docs/cli/run.md +0 -261
- package/docs/cli/test.md +0 -397
- package/docs/cli/unlink.md +0 -9
- package/docs/cli/update.md +0 -129
- package/docs/cli/why.md +0 -67
- package/docs/contributing/upgrading-webkit.md +0 -57
- package/docs/ecosystem/elysia.md +0 -24
- package/docs/ecosystem/express.md +0 -37
- package/docs/ecosystem/hono.md +0 -18
- package/docs/ecosystem/react.md +0 -65
- package/docs/ecosystem/stric.md +0 -38
- package/docs/guides/binary/arraybuffer-to-array.md +0 -27
- package/docs/guides/binary/arraybuffer-to-blob.md +0 -24
- package/docs/guides/binary/arraybuffer-to-buffer.md +0 -25
- package/docs/guides/binary/arraybuffer-to-string.md +0 -15
- package/docs/guides/binary/arraybuffer-to-typedarray.md +0 -39
- package/docs/guides/binary/blob-to-arraybuffer.md +0 -14
- package/docs/guides/binary/blob-to-dataview.md +0 -14
- package/docs/guides/binary/blob-to-stream.md +0 -14
- package/docs/guides/binary/blob-to-string.md +0 -15
- package/docs/guides/binary/blob-to-typedarray.md +0 -14
- package/docs/guides/binary/buffer-to-arraybuffer.md +0 -14
- package/docs/guides/binary/buffer-to-blob.md +0 -14
- package/docs/guides/binary/buffer-to-readablestream.md +0 -41
- package/docs/guides/binary/buffer-to-string.md +0 -25
- package/docs/guides/binary/buffer-to-typedarray.md +0 -14
- package/docs/guides/binary/dataview-to-string.md +0 -15
- package/docs/guides/binary/typedarray-to-arraybuffer.md +0 -25
- package/docs/guides/binary/typedarray-to-blob.md +0 -16
- package/docs/guides/binary/typedarray-to-buffer.md +0 -14
- package/docs/guides/binary/typedarray-to-dataview.md +0 -14
- package/docs/guides/binary/typedarray-to-readablestream.md +0 -41
- package/docs/guides/binary/typedarray-to-string.md +0 -16
- package/docs/guides/deployment/railway.md +0 -157
- package/docs/guides/ecosystem/astro.md +0 -72
- package/docs/guides/ecosystem/discordjs.md +0 -77
- package/docs/guides/ecosystem/docker.md +0 -140
- package/docs/guides/ecosystem/drizzle.md +0 -185
- package/docs/guides/ecosystem/edgedb.md +0 -228
- package/docs/guides/ecosystem/elysia.md +0 -31
- package/docs/guides/ecosystem/express.md +0 -40
- package/docs/guides/ecosystem/hono.md +0 -39
- package/docs/guides/ecosystem/mongoose.md +0 -87
- package/docs/guides/ecosystem/neon-drizzle.md +0 -220
- package/docs/guides/ecosystem/neon-serverless-postgres.md +0 -55
- package/docs/guides/ecosystem/nextjs.md +0 -49
- package/docs/guides/ecosystem/nuxt.md +0 -56
- package/docs/guides/ecosystem/pm2.md +0 -57
- package/docs/guides/ecosystem/prisma.md +0 -141
- package/docs/guides/ecosystem/qwik.md +0 -107
- package/docs/guides/ecosystem/react.md +0 -50
- package/docs/guides/ecosystem/remix.md +0 -78
- package/docs/guides/ecosystem/render.md +0 -79
- package/docs/guides/ecosystem/sentry.md +0 -52
- package/docs/guides/ecosystem/solidstart.md +0 -58
- package/docs/guides/ecosystem/ssr-react.md +0 -51
- package/docs/guides/ecosystem/stric.md +0 -55
- package/docs/guides/ecosystem/sveltekit.md +0 -125
- package/docs/guides/ecosystem/systemd.md +0 -113
- package/docs/guides/ecosystem/vite.md +0 -71
- package/docs/guides/html-rewriter/extract-links.md +0 -68
- package/docs/guides/html-rewriter/extract-social-meta.md +0 -93
- package/docs/guides/http/cluster.md +0 -66
- package/docs/guides/http/fetch-unix.md +0 -33
- package/docs/guides/http/fetch.md +0 -24
- package/docs/guides/http/file-uploads.md +0 -94
- package/docs/guides/http/hot.md +0 -26
- package/docs/guides/http/proxy.md +0 -24
- package/docs/guides/http/server.md +0 -46
- package/docs/guides/http/simple.md +0 -18
- package/docs/guides/http/stream-file.md +0 -48
- package/docs/guides/http/stream-iterator.md +0 -47
- package/docs/guides/http/stream-node-streams-in-bun.md +0 -20
- package/docs/guides/http/tls.md +0 -30
- package/docs/guides/install/add-dev.md +0 -26
- package/docs/guides/install/add-git.md +0 -36
- package/docs/guides/install/add-optional.md +0 -25
- package/docs/guides/install/add-peer.md +0 -43
- package/docs/guides/install/add-tarball.md +0 -33
- package/docs/guides/install/add.md +0 -42
- package/docs/guides/install/azure-artifacts.md +0 -73
- package/docs/guides/install/cicd.md +0 -41
- package/docs/guides/install/custom-registry.md +0 -30
- package/docs/guides/install/from-npm-install-to-bun-install.md +0 -214
- package/docs/guides/install/git-diff-bun-lockfile.md +0 -44
- package/docs/guides/install/jfrog-artifactory.md +0 -28
- package/docs/guides/install/npm-alias.md +0 -23
- package/docs/guides/install/registry-scope.md +0 -38
- package/docs/guides/install/trusted.md +0 -46
- package/docs/guides/install/workspaces.md +0 -70
- package/docs/guides/install/yarnlock.md +0 -44
- package/docs/guides/process/argv.md +0 -58
- package/docs/guides/process/ctrl-c.md +0 -16
- package/docs/guides/process/ipc.md +0 -66
- package/docs/guides/process/nanoseconds.md +0 -13
- package/docs/guides/process/os-signals.md +0 -39
- package/docs/guides/process/spawn-stderr.md +0 -31
- package/docs/guides/process/spawn-stdout.md +0 -26
- package/docs/guides/process/spawn.md +0 -41
- package/docs/guides/process/stdin.md +0 -54
- package/docs/guides/read-file/arraybuffer.md +0 -28
- package/docs/guides/read-file/buffer.md +0 -19
- package/docs/guides/read-file/exists.md +0 -16
- package/docs/guides/read-file/json.md +0 -17
- package/docs/guides/read-file/mime.md +0 -20
- package/docs/guides/read-file/stream.md +0 -26
- package/docs/guides/read-file/string.md +0 -22
- package/docs/guides/read-file/uint8array.md +0 -21
- package/docs/guides/read-file/watch.md +0 -68
- package/docs/guides/runtime/build-time-constants.md +0 -293
- package/docs/guides/runtime/cicd.md +0 -43
- package/docs/guides/runtime/codesign-macos-executable.md +0 -56
- package/docs/guides/runtime/define-constant.md +0 -145
- package/docs/guides/runtime/delete-directory.md +0 -37
- package/docs/guides/runtime/delete-file.md +0 -19
- package/docs/guides/runtime/heap-snapshot.md +0 -26
- package/docs/guides/runtime/import-html.md +0 -15
- package/docs/guides/runtime/import-json.md +0 -44
- package/docs/guides/runtime/import-toml.md +0 -30
- package/docs/guides/runtime/import-yaml.md +0 -102
- package/docs/guides/runtime/read-env.md +0 -32
- package/docs/guides/runtime/set-env.md +0 -47
- package/docs/guides/runtime/shell.md +0 -40
- package/docs/guides/runtime/timezone.md +0 -35
- package/docs/guides/runtime/tsconfig-paths.md +0 -29
- package/docs/guides/runtime/typescript.md +0 -49
- package/docs/guides/runtime/vscode-debugger.md +0 -47
- package/docs/guides/runtime/web-debugger.md +0 -82
- package/docs/guides/streams/node-readable-to-arraybuffer.md +0 -11
- package/docs/guides/streams/node-readable-to-blob.md +0 -11
- package/docs/guides/streams/node-readable-to-json.md +0 -12
- package/docs/guides/streams/node-readable-to-string.md +0 -12
- package/docs/guides/streams/node-readable-to-uint8array.md +0 -11
- package/docs/guides/streams/to-array.md +0 -14
- package/docs/guides/streams/to-arraybuffer.md +0 -14
- package/docs/guides/streams/to-blob.md +0 -14
- package/docs/guides/streams/to-buffer.md +0 -15
- package/docs/guides/streams/to-json.md +0 -14
- package/docs/guides/streams/to-string.md +0 -14
- package/docs/guides/streams/to-typedarray.md +0 -22
- package/docs/guides/test/bail.md +0 -22
- package/docs/guides/test/coverage-threshold.md +0 -60
- package/docs/guides/test/coverage.md +0 -44
- package/docs/guides/test/happy-dom.md +0 -68
- package/docs/guides/test/migrate-from-jest.md +0 -143
- package/docs/guides/test/mock-clock.md +0 -48
- package/docs/guides/test/mock-functions.md +0 -68
- package/docs/guides/test/rerun-each.md +0 -14
- package/docs/guides/test/run-tests.md +0 -111
- package/docs/guides/test/skip-tests.md +0 -39
- package/docs/guides/test/snapshot.md +0 -95
- package/docs/guides/test/spy-on.md +0 -46
- package/docs/guides/test/svelte-test.md +0 -120
- package/docs/guides/test/testing-library.md +0 -92
- package/docs/guides/test/timeout.md +0 -15
- package/docs/guides/test/todo-tests.md +0 -67
- package/docs/guides/test/update-snapshots.md +0 -46
- package/docs/guides/test/watch-mode.md +0 -19
- package/docs/guides/util/base64.md +0 -15
- package/docs/guides/util/deep-equals.md +0 -39
- package/docs/guides/util/deflate.md +0 -18
- package/docs/guides/util/detect-bun.md +0 -23
- package/docs/guides/util/entrypoint.md +0 -17
- package/docs/guides/util/escape-html.md +0 -22
- package/docs/guides/util/file-url-to-path.md +0 -14
- package/docs/guides/util/gzip.md +0 -18
- package/docs/guides/util/hash-a-password.md +0 -54
- package/docs/guides/util/import-meta-dir.md +0 -13
- package/docs/guides/util/import-meta-file.md +0 -13
- package/docs/guides/util/import-meta-path.md +0 -13
- package/docs/guides/util/javascript-uuid.md +0 -23
- package/docs/guides/util/main.md +0 -32
- package/docs/guides/util/path-to-file-url.md +0 -14
- package/docs/guides/util/sleep.md +0 -22
- package/docs/guides/util/version.md +0 -21
- package/docs/guides/util/which-path-to-executable-bin.md +0 -15
- package/docs/guides/websocket/compression.md +0 -31
- package/docs/guides/websocket/context.md +0 -77
- package/docs/guides/websocket/pubsub.md +0 -41
- package/docs/guides/websocket/simple.md +0 -33
- package/docs/guides/write-file/append.md +0 -52
- package/docs/guides/write-file/basic.md +0 -44
- package/docs/guides/write-file/blob.md +0 -28
- package/docs/guides/write-file/cat.md +0 -17
- package/docs/guides/write-file/file-cp.md +0 -16
- package/docs/guides/write-file/filesink.md +0 -52
- package/docs/guides/write-file/response.md +0 -17
- package/docs/guides/write-file/stdout.md +0 -21
- package/docs/guides/write-file/stream.md +0 -17
- package/docs/guides/write-file/unlink.md +0 -16
- package/docs/index.md +0 -77
- package/docs/install/audit.md +0 -57
- package/docs/install/cache.md +0 -59
- package/docs/install/catalogs.md +0 -298
- package/docs/install/index.md +0 -248
- package/docs/install/isolated.md +0 -197
- package/docs/install/lifecycle.md +0 -46
- package/docs/install/lockfile.md +0 -58
- package/docs/install/npmrc.md +0 -105
- package/docs/install/overrides.md +0 -73
- package/docs/install/patch.md +0 -59
- package/docs/install/registries.md +0 -30
- package/docs/install/security-scanner-api.md +0 -81
- package/docs/install/workspaces.md +0 -114
- package/docs/installation.md +0 -327
- package/docs/project/asan.md +0 -124
- package/docs/project/benchmarking.md +0 -203
- package/docs/project/bindgen.md +0 -225
- package/docs/project/building-windows.md +0 -162
- package/docs/project/contributing.md +0 -347
- package/docs/project/internals/build-process-for-ci.md +0 -75
- package/docs/project/licensing.md +0 -73
- package/docs/project/roadmap.md +0 -87
- package/docs/quickstart.md +0 -157
- package/docs/runtime/autoimport.md +0 -94
- package/docs/runtime/bun-apis.md +0 -207
- package/docs/runtime/bunfig.md +0 -772
- package/docs/runtime/debugger.md +0 -325
- package/docs/runtime/env.md +0 -253
- package/docs/runtime/hot.md +0 -145
- package/docs/runtime/index.md +0 -312
- package/docs/runtime/jsx.md +0 -385
- package/docs/runtime/loaders.md +0 -130
- package/docs/runtime/modules.md +0 -320
- package/docs/runtime/nodejs-apis.md +0 -463
- package/docs/runtime/plugins.md +0 -561
- package/docs/runtime/shell.md +0 -605
- package/docs/runtime/typescript.md +0 -139
- package/docs/runtime/web-apis.md +0 -128
- package/docs/test/configuration.md +0 -154
- package/docs/test/coverage.md +0 -142
- package/docs/test/discovery.md +0 -85
- package/docs/test/dom.md +0 -75
- package/docs/test/examples/concurrent-test-glob.md +0 -132
- package/docs/test/hot.md +0 -15
- package/docs/test/lifecycle.md +0 -81
- package/docs/test/mocks.md +0 -313
- package/docs/test/reporters.md +0 -117
- package/docs/test/runtime-behavior.md +0 -95
- package/docs/test/snapshots.md +0 -68
- package/docs/test/time.md +0 -126
- package/docs/test/writing.md +0 -825
- package/docs/typescript.md +0 -53
package/docs/project/roadmap.md
DELETED
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
Bun is a project with an incredibly large scope and is still in its early days. Long-term, Bun aims to provide an all-in-one toolkit to replace the complex, fragmented toolchains common today: Node.js, Jest, Webpack, esbuild, Babel, yarn, PostCSS, etc.
|
|
2
|
-
|
|
3
|
-
Refer to [Bun's Roadmap](https://github.com/oven-sh/bun/issues/159) on GitHub to learn more about the project's long-term plans and priorities.
|
|
4
|
-
|
|
5
|
-
<!--
|
|
6
|
-
{% table %}
|
|
7
|
-
|
|
8
|
-
- Feature
|
|
9
|
-
- Implemented in
|
|
10
|
-
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
- Web Streams with HTMLRewriter
|
|
14
|
-
- Bun.js
|
|
15
|
-
|
|
16
|
-
---
|
|
17
|
-
|
|
18
|
-
- Source Maps (unbundled is supported)
|
|
19
|
-
- JS Bundler
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
- Source Maps
|
|
24
|
-
- CSS
|
|
25
|
-
|
|
26
|
-
---
|
|
27
|
-
|
|
28
|
-
- JavaScript Minifier
|
|
29
|
-
- JS Transpiler
|
|
30
|
-
|
|
31
|
-
---
|
|
32
|
-
|
|
33
|
-
- CSS Minifier
|
|
34
|
-
- CSS
|
|
35
|
-
|
|
36
|
-
---
|
|
37
|
-
|
|
38
|
-
- CSS Parser (it only bundles)
|
|
39
|
-
- CSS
|
|
40
|
-
|
|
41
|
-
---
|
|
42
|
-
|
|
43
|
-
- Tree-shaking
|
|
44
|
-
- JavaScript
|
|
45
|
-
|
|
46
|
-
---
|
|
47
|
-
|
|
48
|
-
- Tree-shaking
|
|
49
|
-
- CSS
|
|
50
|
-
|
|
51
|
-
---
|
|
52
|
-
|
|
53
|
-
- [TypeScript Decorators](https://www.typescriptlang.org/docs/handbook/decorators.html)
|
|
54
|
-
- TS Transpiler
|
|
55
|
-
|
|
56
|
-
---
|
|
57
|
-
|
|
58
|
-
- `@jsxPragma` comments
|
|
59
|
-
- JS Transpiler
|
|
60
|
-
|
|
61
|
-
---
|
|
62
|
-
|
|
63
|
-
- Sharing `.bun` files
|
|
64
|
-
- Bun
|
|
65
|
-
|
|
66
|
-
---
|
|
67
|
-
|
|
68
|
-
- Dates & timestamps
|
|
69
|
-
- TOML parser
|
|
70
|
-
|
|
71
|
-
---
|
|
72
|
-
|
|
73
|
-
- [Hash components for Fast Refresh](https://github.com/oven-sh/bun/issues/18)
|
|
74
|
-
- JSX Transpiler
|
|
75
|
-
|
|
76
|
-
{% /table %} -->
|
|
77
|
-
|
|
78
|
-
<!-- ## Limitations & intended usage
|
|
79
|
-
|
|
80
|
-
Today, Bun is mostly focused on Bun.js: the JavaScript runtime.
|
|
81
|
-
|
|
82
|
-
While you could use Bun's bundler & transpiler separately to build for browsers or node, Bun doesn't have a minifier or support tree-shaking yet. For production browser builds, you probably should use a tool like esbuild or swc.
|
|
83
|
-
|
|
84
|
-
## Upcoming breaking changes
|
|
85
|
-
|
|
86
|
-
- Bun's CLI flags will change to better support Bun as a JavaScript runtime. They were chosen when Bun was just a frontend development tool.
|
|
87
|
-
- Bun's bundling format will change to accommodate production browser bundles and on-demand production bundling -->
|
package/docs/quickstart.md
DELETED
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
Let's write a simple HTTP server using the built-in `Bun.serve` API. First, create a fresh directory.
|
|
2
|
-
|
|
3
|
-
```bash
|
|
4
|
-
$ mkdir quickstart
|
|
5
|
-
$ cd quickstart
|
|
6
|
-
```
|
|
7
|
-
|
|
8
|
-
Run `bun init` to scaffold a new project. It's an interactive tool; for this tutorial, just press `enter` to accept the default answer for each prompt.
|
|
9
|
-
|
|
10
|
-
```bash
|
|
11
|
-
$ bun init
|
|
12
|
-
|
|
13
|
-
? Select a project template - Press return to submit.
|
|
14
|
-
❯ Blank
|
|
15
|
-
React
|
|
16
|
-
Library
|
|
17
|
-
|
|
18
|
-
✓ Select a project template: Blank
|
|
19
|
-
|
|
20
|
-
+ .gitignore
|
|
21
|
-
+ index.ts
|
|
22
|
-
+ tsconfig.json (for editor autocomplete)
|
|
23
|
-
+ README.md
|
|
24
|
-
|
|
25
|
-
To get started, run:
|
|
26
|
-
|
|
27
|
-
bun run index.ts
|
|
28
|
-
|
|
29
|
-
bun install v1.3.2-canary.20251104T140728
|
|
30
|
-
|
|
31
|
-
+ @types/bun@1.3.2-canary.20251104T140728
|
|
32
|
-
+ typescript@5.9.2
|
|
33
|
-
|
|
34
|
-
7 packages installed
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
Since our entry point is a `*.ts` file, Bun generates a `tsconfig.json` for you. If you're using plain JavaScript, it will generate a [`jsconfig.json`](https://code.visualstudio.com/docs/languages/jsconfig) instead.
|
|
38
|
-
|
|
39
|
-
## Run a file
|
|
40
|
-
|
|
41
|
-
Open `index.ts` and paste the following code snippet, which implements a simple HTTP server with [`Bun.serve`](https://bun.com/docs/api/http).
|
|
42
|
-
|
|
43
|
-
```ts
|
|
44
|
-
const server = Bun.serve({
|
|
45
|
-
port: 3000,
|
|
46
|
-
fetch(req) {
|
|
47
|
-
return new Response("Bun!");
|
|
48
|
-
},
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
console.log(`Listening on http://localhost:${server.port} ...`);
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
{% details summary="Seeing TypeScript errors on `Bun`?" %}
|
|
55
|
-
If you used `bun init`, Bun will have automatically installed Bun's TypeScript declarations and configured your `tsconfig.json`. If you're trying out Bun in an existing project, you may see a type error on the `Bun` global.
|
|
56
|
-
|
|
57
|
-
To fix this, first install `@types/bun` as a dev dependency.
|
|
58
|
-
|
|
59
|
-
```sh
|
|
60
|
-
$ bun add -d @types/bun
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
Then add the following to your `compilerOptions` in `tsconfig.json`:
|
|
64
|
-
|
|
65
|
-
```json#tsconfig.json
|
|
66
|
-
{
|
|
67
|
-
"compilerOptions": {
|
|
68
|
-
"lib": ["ESNext"],
|
|
69
|
-
"target": "ESNext",
|
|
70
|
-
"module": "Preserve",
|
|
71
|
-
"moduleDetection": "force",
|
|
72
|
-
"moduleResolution": "bundler",
|
|
73
|
-
"allowImportingTsExtensions": true,
|
|
74
|
-
"verbatimModuleSyntax": true,
|
|
75
|
-
"noEmit": true,
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
{% /details %}
|
|
81
|
-
|
|
82
|
-
Run the file from your shell.
|
|
83
|
-
|
|
84
|
-
```bash
|
|
85
|
-
$ bun index.ts
|
|
86
|
-
Listening on http://localhost:3000 ...
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
Visit [http://localhost:3000](http://localhost:3000) to test the server. You should see a simple page that says "Bun!".
|
|
90
|
-
|
|
91
|
-
## Run a script
|
|
92
|
-
|
|
93
|
-
Bun can also execute `"scripts"` from your `package.json`. Add the following script:
|
|
94
|
-
|
|
95
|
-
```json-diff
|
|
96
|
-
{
|
|
97
|
-
"name": "quickstart",
|
|
98
|
-
"module": "index.ts",
|
|
99
|
-
"type": "module",
|
|
100
|
-
"private": true,
|
|
101
|
-
+ "scripts": {
|
|
102
|
-
+ "start": "bun run index.ts"
|
|
103
|
-
+ },
|
|
104
|
-
"devDependencies": {
|
|
105
|
-
"@types/bun": "latest"
|
|
106
|
-
},
|
|
107
|
-
"peerDependencies": {
|
|
108
|
-
"typescript": "^5"
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
Then run it with `bun run start`.
|
|
114
|
-
|
|
115
|
-
```bash
|
|
116
|
-
$ bun run start
|
|
117
|
-
$ bun run index.ts
|
|
118
|
-
Listening on http://localhost:3000 ...
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
{% callout %}
|
|
122
|
-
⚡️ **Performance** — `bun run` is roughly 28x faster than `npm run` (6ms vs 170ms of overhead).
|
|
123
|
-
{% /callout %}
|
|
124
|
-
|
|
125
|
-
## Install a package
|
|
126
|
-
|
|
127
|
-
Let's make our server a little more interesting by installing a package. First install the `figlet` package and its type declarations. Figlet is a utility for converting strings into ASCII art.
|
|
128
|
-
|
|
129
|
-
```bash
|
|
130
|
-
$ bun add figlet
|
|
131
|
-
$ bun add -d @types/figlet # TypeScript users only
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
Update `index.ts` to use `figlet` in the `fetch` handler.
|
|
135
|
-
|
|
136
|
-
```ts-diff
|
|
137
|
-
+ import figlet from "figlet";
|
|
138
|
-
|
|
139
|
-
const server = Bun.serve({
|
|
140
|
-
port: 3000,
|
|
141
|
-
fetch(req) {
|
|
142
|
-
+ const body = figlet.textSync("Bun!");
|
|
143
|
-
+ return new Response(body);
|
|
144
|
-
- return new Response("Bun!");
|
|
145
|
-
},
|
|
146
|
-
});
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
Restart the server and refresh the page. You should see a new ASCII art banner.
|
|
150
|
-
|
|
151
|
-
```txt
|
|
152
|
-
____ _
|
|
153
|
-
| __ ) _ _ _ __ | |
|
|
154
|
-
| _ \| | | | '_ \| |
|
|
155
|
-
| |_) | |_| | | | |_|
|
|
156
|
-
|____/ \__,_|_| |_(_)
|
|
157
|
-
```
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
If no `node_modules` directory is found in the working directory or higher, Bun will abandon Node.js-style module resolution in favor of the **Bun module resolution algorithm**.
|
|
2
|
-
|
|
3
|
-
Under Bun-style module resolution, all imported packages are auto-installed on the fly into a [global module cache](https://bun.com/docs/install/cache) during execution (the same cache used by [`bun install`](https://bun.com/docs/cli/install)).
|
|
4
|
-
|
|
5
|
-
```ts
|
|
6
|
-
import { foo } from "foo"; // install `latest` version
|
|
7
|
-
|
|
8
|
-
foo();
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
The first time you run this script, Bun will auto-install `"foo"` and cache it. The next time you run the script, it will use the cached version.
|
|
12
|
-
|
|
13
|
-
## Version resolution
|
|
14
|
-
|
|
15
|
-
To determine which version to install, Bun follows the following algorithm:
|
|
16
|
-
|
|
17
|
-
1. Check for a `bun.lock` file in the project root. If it exists, use the version specified in the lockfile.
|
|
18
|
-
2. Otherwise, scan up the tree for a `package.json` that includes `"foo"` as a dependency. If found, use the specified semver version or version range.
|
|
19
|
-
3. Otherwise, use `latest`.
|
|
20
|
-
|
|
21
|
-
## Cache behavior
|
|
22
|
-
|
|
23
|
-
Once a version or version range has been determined, Bun will:
|
|
24
|
-
|
|
25
|
-
1. Check the module cache for a compatible version. If one exists, use it.
|
|
26
|
-
2. When resolving `latest`, Bun will check if `package@latest` has been downloaded and cached in the last _24 hours_. If so, use it.
|
|
27
|
-
3. Otherwise, download and install the appropriate version from the `npm` registry.
|
|
28
|
-
|
|
29
|
-
## Installation
|
|
30
|
-
|
|
31
|
-
Packages are installed and cached into `<cache>/<pkg>@<version>`, so multiple versions of the same package can be cached at once. Additionally, a symlink is created under `<cache>/<pkg>/<version>` to make it faster to look up all versions of a package that exist in the cache.
|
|
32
|
-
|
|
33
|
-
## Version specifiers
|
|
34
|
-
|
|
35
|
-
This entire resolution algorithm can be short-circuited by specifying a version or version range directly in your import statement.
|
|
36
|
-
|
|
37
|
-
```ts
|
|
38
|
-
import { z } from "zod@3.0.0"; // specific version
|
|
39
|
-
import { z } from "zod@next"; // npm tag
|
|
40
|
-
import { z } from "zod@^3.20.0"; // semver range
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
## Benefits
|
|
44
|
-
|
|
45
|
-
This auto-installation approach is useful for a few reasons:
|
|
46
|
-
|
|
47
|
-
- **Space efficiency** — Each version of a dependency only exists in one place on disk. This is a huge space and time savings compared to redundant per-project installations.
|
|
48
|
-
- **Portability** — To share simple scripts and gists, your source file is _self-contained_. No need to `zip` together a directory containing your code and config files. With version specifiers in `import` statements, even a `package.json` isn't necessary.
|
|
49
|
-
- **Convenience** — There's no need to run `npm install` or `bun install` before running a file or script. Just `bun run` it.
|
|
50
|
-
- **Backwards compatibility** — Because Bun still respects the versions specified in `package.json` if one exists, you can switch to Bun-style resolution with a single command: `rm -rf node_modules`.
|
|
51
|
-
|
|
52
|
-
## Limitations
|
|
53
|
-
|
|
54
|
-
- No Intellisense. TypeScript auto-completion in IDEs relies on the existence of type declaration files inside `node_modules`. We are investigating various solutions to this.
|
|
55
|
-
- No [patch-package](https://github.com/ds300/patch-package) support
|
|
56
|
-
|
|
57
|
-
<!-- - The implementation details of Bun's install cache will change between versions. Don't think of it as an API. To reliably resolve packages, use Bun's builtin APIs (such as `Bun.resolveSync` or `import.meta.resolve`) instead of relying on the filesystem directly. Bun will likely move to a binary archive format where packages may not correspond to files/folders on disk at all - so if you depend on the filesystem structure instead of the JavaScript API, your code will eventually break. -->
|
|
58
|
-
|
|
59
|
-
<!-- ## Customizing behavior
|
|
60
|
-
|
|
61
|
-
To prefer locally-installed versions of packages. Instead of checking npm for latest versions, you can pass the `--prefer-offline` flag to prefer locally-installed versions of packages.
|
|
62
|
-
|
|
63
|
-
```bash
|
|
64
|
-
$ bun run --prefer-offline my-script.ts
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
This will check the install cache for installed versions of packages before checking the npm registry. If no matching version of a package is installed, only then will it check npm for the latest version.
|
|
68
|
-
|
|
69
|
-
#### Prefer latest
|
|
70
|
-
|
|
71
|
-
To always use the latest version of a package, you can pass the `--prefer-latest` flag.
|
|
72
|
-
|
|
73
|
-
```bash
|
|
74
|
-
$ bun run --prefer-latest my-script.ts
|
|
75
|
-
``` -->
|
|
76
|
-
|
|
77
|
-
## FAQ
|
|
78
|
-
|
|
79
|
-
{% details summary="How is this different from what pnpm does?" %}
|
|
80
|
-
|
|
81
|
-
With pnpm, you have to run `pnpm install`, which creates a `node_modules` folder of symlinks for the runtime to resolve. By contrast, Bun resolves dependencies on the fly when you run a file; there's no need to run any `install` command ahead of time. Bun also doesn't create a `node_modules` folder.
|
|
82
|
-
|
|
83
|
-
{% /details %}
|
|
84
|
-
|
|
85
|
-
{% details summary="How is this different from Yarn Plug'N'Play does?" %}
|
|
86
|
-
With Yarn, you must run `yarn install` before you run a script. By contrast, Bun resolves dependencies on the fly when you run a file; there's no need to run any `install` command ahead of time.
|
|
87
|
-
|
|
88
|
-
Yarn Plug'N'Play also uses zip files to store dependencies. This makes dependency loading [slower at runtime](https://twitter.com/jarredsumner/status/1458207919636287490), as random access reads on zip files tend to be slower than the equivalent disk lookup.
|
|
89
|
-
{% /details %}
|
|
90
|
-
|
|
91
|
-
{% details summary="How is this different from what Deno does?" %}
|
|
92
|
-
|
|
93
|
-
Deno requires an `npm:` specifier before each npm `import`, lacks support for import maps via `compilerOptions.paths` in `tsconfig.json`, and has incomplete support for `package.json` settings. Unlike Deno, Bun does not currently support URL imports.
|
|
94
|
-
{% /details %}
|
package/docs/runtime/bun-apis.md
DELETED
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
Bun implements a set of native APIs on the `Bun` global object and through a number of built-in modules. These APIs are heavily optimized and represent the canonical "Bun-native" way to implement some common functionality.
|
|
2
|
-
|
|
3
|
-
Bun strives to implement standard Web APIs wherever possible. Bun introduces new APIs primarily for server-side tasks where no standard exists, such as file I/O and starting an HTTP server. In these cases, Bun's approach still builds atop standard APIs like `Blob`, `URL`, and `Request`.
|
|
4
|
-
|
|
5
|
-
```ts
|
|
6
|
-
Bun.serve({
|
|
7
|
-
fetch(req: Request) {
|
|
8
|
-
return new Response("Success!");
|
|
9
|
-
},
|
|
10
|
-
});
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
Click the link in the right column to jump to the associated documentation.
|
|
14
|
-
|
|
15
|
-
{% table %}
|
|
16
|
-
|
|
17
|
-
- Topic
|
|
18
|
-
- APIs
|
|
19
|
-
|
|
20
|
-
---
|
|
21
|
-
|
|
22
|
-
- HTTP Server
|
|
23
|
-
- [`Bun.serve`](https://bun.com/docs/api/http#bun-serve)
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
- Shell
|
|
28
|
-
- [`$`](https://bun.com/docs/runtime/shell)
|
|
29
|
-
|
|
30
|
-
---
|
|
31
|
-
|
|
32
|
-
- Bundler
|
|
33
|
-
- [`Bun.build`](https://bun.com/docs/bundler)
|
|
34
|
-
|
|
35
|
-
---
|
|
36
|
-
|
|
37
|
-
- File I/O
|
|
38
|
-
- [`Bun.file`](https://bun.com/docs/api/file-io#reading-files-bun-file), [`Bun.write`](https://bun.com/docs/api/file-io#writing-files-bun-write), `Bun.stdin`, `Bun.stdout`, `Bun.stderr`
|
|
39
|
-
|
|
40
|
-
---
|
|
41
|
-
|
|
42
|
-
- Child Processes
|
|
43
|
-
- [`Bun.spawn`](https://bun.com/docs/api/spawn#spawn-a-process-bun-spawn), [`Bun.spawnSync`](https://bun.com/docs/api/spawn#blocking-api-bun-spawnsync)
|
|
44
|
-
|
|
45
|
-
---
|
|
46
|
-
|
|
47
|
-
- TCP Sockets
|
|
48
|
-
- [`Bun.listen`](https://bun.com/docs/api/tcp#start-a-server-bun-listen), [`Bun.connect`](https://bun.com/docs/api/tcp#start-a-server-bun-listen)
|
|
49
|
-
|
|
50
|
-
---
|
|
51
|
-
|
|
52
|
-
- UDP Sockets
|
|
53
|
-
- [`Bun.udpSocket`](https://bun.com/docs/api/udp)
|
|
54
|
-
|
|
55
|
-
---
|
|
56
|
-
|
|
57
|
-
- WebSockets
|
|
58
|
-
- `new WebSocket()` (client), [`Bun.serve`](https://bun.com/docs/api/websockets) (server)
|
|
59
|
-
|
|
60
|
-
---
|
|
61
|
-
|
|
62
|
-
- Transpiler
|
|
63
|
-
- [`Bun.Transpiler`](https://bun.com/docs/api/transpiler)
|
|
64
|
-
|
|
65
|
-
---
|
|
66
|
-
|
|
67
|
-
- Routing
|
|
68
|
-
- [`Bun.FileSystemRouter`](https://bun.com/docs/api/file-system-router)
|
|
69
|
-
|
|
70
|
-
---
|
|
71
|
-
|
|
72
|
-
- Streaming HTML
|
|
73
|
-
- [`HTMLRewriter`](https://bun.com/docs/api/html-rewriter)
|
|
74
|
-
|
|
75
|
-
---
|
|
76
|
-
|
|
77
|
-
- Hashing
|
|
78
|
-
- [`Bun.password`](https://bun.com/docs/api/hashing#bun-password), [`Bun.hash`](https://bun.com/docs/api/hashing#bun-hash), [`Bun.CryptoHasher`](https://bun.com/docs/api/hashing#bun-cryptohasher), `Bun.sha`
|
|
79
|
-
|
|
80
|
-
---
|
|
81
|
-
|
|
82
|
-
- SQLite
|
|
83
|
-
- [`bun:sqlite`](https://bun.com/docs/api/sqlite)
|
|
84
|
-
|
|
85
|
-
---
|
|
86
|
-
|
|
87
|
-
- PostgreSQL Client
|
|
88
|
-
- [`Bun.SQL`](https://bun.com/docs/api/sql), `Bun.sql`
|
|
89
|
-
|
|
90
|
-
---
|
|
91
|
-
|
|
92
|
-
- Redis (Valkey) Client
|
|
93
|
-
- [`Bun.RedisClient`](https://bun.com/docs/api/redis), `Bun.redis`
|
|
94
|
-
|
|
95
|
-
---
|
|
96
|
-
|
|
97
|
-
- FFI (Foreign Function Interface)
|
|
98
|
-
- [`bun:ffi`](https://bun.com/docs/api/ffi)
|
|
99
|
-
|
|
100
|
-
---
|
|
101
|
-
|
|
102
|
-
- DNS
|
|
103
|
-
- [`Bun.dns.lookup`](https://bun.com/docs/api/dns), `Bun.dns.prefetch`, `Bun.dns.getCacheStats`
|
|
104
|
-
|
|
105
|
-
---
|
|
106
|
-
|
|
107
|
-
- Testing
|
|
108
|
-
- [`bun:test`](https://bun.com/docs/cli/test)
|
|
109
|
-
|
|
110
|
-
---
|
|
111
|
-
|
|
112
|
-
- Workers
|
|
113
|
-
- [`new Worker()`](https://bun.com/docs/api/workers)
|
|
114
|
-
|
|
115
|
-
---
|
|
116
|
-
|
|
117
|
-
- Module Loaders
|
|
118
|
-
- [`Bun.plugin`](https://bun.com/docs/bundler/plugins)
|
|
119
|
-
|
|
120
|
-
---
|
|
121
|
-
|
|
122
|
-
- Glob
|
|
123
|
-
- [`Bun.Glob`](https://bun.com/docs/api/glob)
|
|
124
|
-
|
|
125
|
-
---
|
|
126
|
-
|
|
127
|
-
- Cookies
|
|
128
|
-
- [`Bun.Cookie`](https://bun.com/docs/api/cookie), [`Bun.CookieMap`](https://bun.com/docs/api/cookie)
|
|
129
|
-
|
|
130
|
-
---
|
|
131
|
-
|
|
132
|
-
- Node-API
|
|
133
|
-
- [`Node-API`](https://bun.com/docs/api/node-api)
|
|
134
|
-
|
|
135
|
-
---
|
|
136
|
-
|
|
137
|
-
- `import.meta`
|
|
138
|
-
- [`import.meta`](https://bun.com/docs/api/import-meta)
|
|
139
|
-
|
|
140
|
-
---
|
|
141
|
-
|
|
142
|
-
- Utilities
|
|
143
|
-
- [`Bun.version`](https://bun.com/docs/api/utils#bun-version), [`Bun.revision`](https://bun.com/docs/api/utils#bun-revision), [`Bun.env`](https://bun.com/docs/api/utils#bun-env), [`Bun.main`](https://bun.com/docs/api/utils#bun-main)
|
|
144
|
-
|
|
145
|
-
---
|
|
146
|
-
|
|
147
|
-
- Sleep & Timing
|
|
148
|
-
- [`Bun.sleep()`](https://bun.com/docs/api/utils#bun-sleep), [`Bun.sleepSync()`](https://bun.com/docs/api/utils#bun-sleepsync), [`Bun.nanoseconds()`](https://bun.com/docs/api/utils#bun-nanoseconds)
|
|
149
|
-
|
|
150
|
-
---
|
|
151
|
-
|
|
152
|
-
- Random & UUID
|
|
153
|
-
- [`Bun.randomUUIDv7()`](https://bun.com/docs/api/utils#bun-randomuuidv7)
|
|
154
|
-
|
|
155
|
-
---
|
|
156
|
-
|
|
157
|
-
- System & Environment
|
|
158
|
-
- [`Bun.which()`](https://bun.com/docs/api/utils#bun-which)
|
|
159
|
-
|
|
160
|
-
---
|
|
161
|
-
|
|
162
|
-
- Comparison & Inspection
|
|
163
|
-
- [`Bun.peek()`](https://bun.com/docs/api/utils#bun-peek), [`Bun.deepEquals()`](https://bun.com/docs/api/utils#bun-deepequals), `Bun.deepMatch`, [`Bun.inspect()`](https://bun.com/docs/api/utils#bun-inspect)
|
|
164
|
-
|
|
165
|
-
---
|
|
166
|
-
|
|
167
|
-
- String & Text Processing
|
|
168
|
-
- [`Bun.escapeHTML()`](https://bun.com/docs/api/utils#bun-escapehtml), [`Bun.stringWidth()`](https://bun.com/docs/api/utils#bun-stringwidth), `Bun.indexOfLine`
|
|
169
|
-
|
|
170
|
-
---
|
|
171
|
-
|
|
172
|
-
- URL & Path Utilities
|
|
173
|
-
- [`Bun.fileURLToPath()`](https://bun.com/docs/api/utils#bun-fileurltopath), [`Bun.pathToFileURL()`](https://bun.com/docs/api/utils#bun-pathtofileurl)
|
|
174
|
-
|
|
175
|
-
---
|
|
176
|
-
|
|
177
|
-
- Compression
|
|
178
|
-
- [`Bun.gzipSync()`](https://bun.com/docs/api/utils#bun-gzipsync), [`Bun.gunzipSync()`](https://bun.com/docs/api/utils#bun-gunzipsync), [`Bun.deflateSync()`](https://bun.com/docs/api/utils#bun-deflatesync), [`Bun.inflateSync()`](https://bun.com/docs/api/utils#bun-inflatesync), `Bun.zstdCompressSync()`, `Bun.zstdDecompressSync()`, `Bun.zstdCompress()`, `Bun.zstdDecompress()`
|
|
179
|
-
|
|
180
|
-
---
|
|
181
|
-
|
|
182
|
-
- Stream Processing
|
|
183
|
-
- [`Bun.readableStreamTo*()`](https://bun.com/docs/api/utils#bun-readablestreamto), `Bun.readableStreamToBytes()`, `Bun.readableStreamToBlob()`, `Bun.readableStreamToFormData()`, `Bun.readableStreamToJSON()`, `Bun.readableStreamToArray()`
|
|
184
|
-
|
|
185
|
-
---
|
|
186
|
-
|
|
187
|
-
- Memory & Buffer Management
|
|
188
|
-
- `Bun.ArrayBufferSink`, `Bun.allocUnsafe`, `Bun.concatArrayBuffers`
|
|
189
|
-
|
|
190
|
-
---
|
|
191
|
-
|
|
192
|
-
- Module Resolution
|
|
193
|
-
- [`Bun.resolveSync()`](https://bun.com/docs/api/utils#bun-resolvesync)
|
|
194
|
-
|
|
195
|
-
---
|
|
196
|
-
|
|
197
|
-
- Parsing & Formatting
|
|
198
|
-
- [`Bun.semver`](https://bun.com/docs/api/semver), `Bun.TOML.parse`, [`Bun.YAML.parse`](https://bun.com/docs/api/yaml), [`Bun.color`](https://bun.com/docs/api/color)
|
|
199
|
-
|
|
200
|
-
---
|
|
201
|
-
|
|
202
|
-
- Low-level / Internals
|
|
203
|
-
- `Bun.mmap`, `Bun.gc`, `Bun.generateHeapSnapshot`, [`bun:jsc`](https://bun.com/reference/bun/jsc)
|
|
204
|
-
|
|
205
|
-
---
|
|
206
|
-
|
|
207
|
-
{% /table %}
|