@depup/bun-types 1.3.11-depup.0
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/CLAUDE.md +105 -0
- package/README.md +25 -0
- package/bun.d.ts +8712 -0
- package/bun.ns.d.ts +5 -0
- package/bundle.d.ts +74 -0
- package/changes.json +5 -0
- package/deprecated.d.ts +184 -0
- package/devserver.d.ts +187 -0
- package/docs/README.md +28 -0
- package/docs/bundler/bytecode.mdx +447 -0
- package/docs/bundler/css.mdx +1024 -0
- package/docs/bundler/esbuild.mdx +304 -0
- package/docs/bundler/executables.mdx +1318 -0
- package/docs/bundler/fullstack.mdx +1086 -0
- package/docs/bundler/hot-reloading.mdx +229 -0
- package/docs/bundler/html-static.mdx +498 -0
- package/docs/bundler/index.mdx +1840 -0
- package/docs/bundler/loaders.mdx +451 -0
- package/docs/bundler/macros.mdx +328 -0
- package/docs/bundler/minifier.mdx +1286 -0
- package/docs/bundler/plugins.mdx +477 -0
- package/docs/bundler/standalone-html.mdx +314 -0
- package/docs/feedback.mdx +75 -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 +194 -0
- package/docs/guides/deployment/railway.mdx +145 -0
- package/docs/guides/deployment/render.mdx +82 -0
- package/docs/guides/deployment/vercel.mdx +97 -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/elysia.mdx +31 -0
- package/docs/guides/ecosystem/express.mdx +43 -0
- package/docs/guides/ecosystem/gel.mdx +261 -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 +103 -0
- package/docs/guides/ecosystem/nuxt.mdx +96 -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 +62 -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/tanstack-start.mdx +791 -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 +71 -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 +50 -0
- package/docs/guides/http/server.mdx +48 -0
- package/docs/guides/http/simple.mdx +20 -0
- package/docs/guides/http/sse.mdx +91 -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 +40 -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 +48 -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 +52 -0
- package/docs/guides/install/workspaces.mdx +70 -0
- package/docs/guides/install/yarnlock.mdx +51 -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 +31 -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 +15 -0
- package/docs/guides/runtime/import-json.mdx +46 -0
- package/docs/guides/runtime/import-json5.mdx +74 -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 +47 -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/concurrent-test-glob.mdx +146 -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 +28 -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/upgrade.mdx +93 -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 +79 -0
- package/docs/guides/websocket/pubsub.mdx +43 -0
- package/docs/guides/websocket/simple.mdx +38 -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 +372 -0
- package/docs/pm/bunx.mdx +91 -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/info.mdx +70 -0
- package/docs/pm/cli/install.mdx +591 -0
- package/docs/pm/cli/link.mdx +61 -0
- package/docs/pm/cli/outdated.mdx +197 -0
- package/docs/pm/cli/patch.mdx +69 -0
- package/docs/pm/cli/pm.mdx +323 -0
- package/docs/pm/cli/publish.mdx +131 -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 +127 -0
- package/docs/pm/global-cache.mdx +72 -0
- package/docs/pm/isolated-installs.mdx +220 -0
- package/docs/pm/lifecycle.mdx +64 -0
- package/docs/pm/lockfile.mdx +64 -0
- package/docs/pm/npmrc.mdx +245 -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 +115 -0
- package/docs/project/benchmarking.mdx +296 -0
- package/docs/project/bindgen.mdx +223 -0
- package/docs/project/building-windows.mdx +143 -0
- package/docs/project/contributing.mdx +366 -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 +251 -0
- package/docs/runtime/archive.mdx +452 -0
- package/docs/runtime/auto-install.mdx +97 -0
- package/docs/runtime/binary-data.mdx +846 -0
- package/docs/runtime/bun-apis.mdx +60 -0
- package/docs/runtime/bunfig.mdx +765 -0
- package/docs/runtime/c-compiler.mdx +204 -0
- package/docs/runtime/child-process.mdx +659 -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/cron.mdx +358 -0
- package/docs/runtime/csrf.mdx +171 -0
- package/docs/runtime/debugger.mdx +335 -0
- package/docs/runtime/environment-variables.mdx +231 -0
- package/docs/runtime/ffi.mdx +567 -0
- package/docs/runtime/file-io.mdx +306 -0
- package/docs/runtime/file-system-router.mdx +118 -0
- package/docs/runtime/file-types.mdx +482 -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 +333 -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 +672 -0
- package/docs/runtime/http/tls.mdx +101 -0
- package/docs/runtime/http/websockets.mdx +414 -0
- package/docs/runtime/index.mdx +223 -0
- package/docs/runtime/json5.mdx +271 -0
- package/docs/runtime/jsonl.mdx +188 -0
- package/docs/runtime/jsx.mdx +115 -0
- package/docs/runtime/markdown.mdx +381 -0
- package/docs/runtime/module-resolution.mdx +374 -0
- package/docs/runtime/networking/dns.mdx +111 -0
- package/docs/runtime/networking/fetch.mdx +484 -0
- package/docs/runtime/networking/tcp.mdx +239 -0
- package/docs/runtime/networking/udp.mdx +180 -0
- package/docs/runtime/node-api.mdx +19 -0
- package/docs/runtime/nodejs-compat.mdx +468 -0
- package/docs/runtime/plugins.mdx +419 -0
- package/docs/runtime/redis.mdx +583 -0
- package/docs/runtime/repl.mdx +176 -0
- package/docs/runtime/s3.mdx +881 -0
- package/docs/runtime/secrets.mdx +340 -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 +721 -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/toml.mdx +238 -0
- package/docs/runtime/transpiler.mdx +288 -0
- package/docs/runtime/typescript.mdx +58 -0
- package/docs/runtime/utils.mdx +1010 -0
- package/docs/runtime/watch-mode.mdx +161 -0
- package/docs/runtime/web-apis.mdx +29 -0
- package/docs/runtime/workers.mdx +314 -0
- package/docs/runtime/yaml.mdx +470 -0
- package/docs/snippets/cli/add.mdx +166 -0
- package/docs/snippets/cli/build.mdx +197 -0
- package/docs/snippets/cli/bunx.mdx +49 -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 +305 -0
- package/docs/snippets/cli/test.mdx +105 -0
- package/docs/snippets/cli/update.mdx +144 -0
- package/docs/test/code-coverage.mdx +409 -0
- package/docs/test/configuration.mdx +574 -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 +409 -0
- package/docs/test/lifecycle.mdx +366 -0
- package/docs/test/mocks.mdx +637 -0
- package/docs/test/reporters.mdx +126 -0
- package/docs/test/runtime-behavior.mdx +342 -0
- package/docs/test/snapshots.mdx +434 -0
- package/docs/test/writing-tests.mdx +672 -0
- package/docs/typescript.mdx +54 -0
- package/extensions.d.ts +40 -0
- package/fetch.d.ts +79 -0
- package/ffi.d.ts +1154 -0
- package/globals.d.ts +2067 -0
- package/html-rewriter.d.ts +186 -0
- package/index.d.ts +32 -0
- package/jsc.d.ts +233 -0
- package/jsx.d.ts +11 -0
- package/overrides.d.ts +376 -0
- package/package.json +53 -0
- package/redis.d.ts +3352 -0
- package/s3.d.ts +1354 -0
- package/security.d.ts +101 -0
- package/serve.d.ts +1296 -0
- package/shell.d.ts +380 -0
- package/sql.d.ts +887 -0
- package/sqlite.d.ts +1322 -0
- package/test-globals.d.ts +22 -0
- package/test.d.ts +2392 -0
- package/vendor/expect-type/branding.d.ts +283 -0
- package/vendor/expect-type/index.d.ts +1207 -0
- package/vendor/expect-type/messages.d.ts +395 -0
- package/vendor/expect-type/overloads.d.ts +669 -0
- package/vendor/expect-type/utils.d.ts +431 -0
- package/wasm.d.ts +193 -0
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: TOML
|
|
3
|
+
description: Use Bun's built-in support for TOML files through both runtime APIs and bundler integration
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
In Bun, TOML is a first-class citizen alongside JSON, JSON5, and YAML. You can:
|
|
7
|
+
|
|
8
|
+
- Parse TOML strings with `Bun.TOML.parse`
|
|
9
|
+
- `import` & `require` TOML files as modules at runtime (including hot reloading & watch mode support)
|
|
10
|
+
- `import` & `require` TOML files in frontend apps via Bun's bundler
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Runtime API
|
|
15
|
+
|
|
16
|
+
### `Bun.TOML.parse()`
|
|
17
|
+
|
|
18
|
+
Parse a TOML string into a JavaScript object.
|
|
19
|
+
|
|
20
|
+
```ts
|
|
21
|
+
import { TOML } from "bun";
|
|
22
|
+
const text = `
|
|
23
|
+
name = "my-app"
|
|
24
|
+
version = "1.0.0"
|
|
25
|
+
debug = true
|
|
26
|
+
|
|
27
|
+
[database]
|
|
28
|
+
host = "localhost"
|
|
29
|
+
port = 5432
|
|
30
|
+
|
|
31
|
+
[features]
|
|
32
|
+
tags = ["web", "api"]
|
|
33
|
+
`;
|
|
34
|
+
|
|
35
|
+
const data = TOML.parse(text);
|
|
36
|
+
console.log(data);
|
|
37
|
+
// {
|
|
38
|
+
// name: "my-app",
|
|
39
|
+
// version: "1.0.0",
|
|
40
|
+
// debug: true,
|
|
41
|
+
// database: { host: "localhost", port: 5432 },
|
|
42
|
+
// features: { tags: ["web", "api"] }
|
|
43
|
+
// }
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
#### Supported TOML Features
|
|
47
|
+
|
|
48
|
+
Bun's TOML parser supports the [TOML v1.0 specification](https://toml.io/en/v1.0.0), including:
|
|
49
|
+
|
|
50
|
+
- **Strings**: basic (`"..."`) and literal (`'...'`), including multi-line
|
|
51
|
+
- **Integers**: decimal, hex (`0x`), octal (`0o`), and binary (`0b`)
|
|
52
|
+
- **Floats**: including `inf` and `nan`
|
|
53
|
+
- **Booleans**: `true` and `false`
|
|
54
|
+
- **Arrays**: including mixed types and nested arrays
|
|
55
|
+
- **Tables**: standard (`[table]`) and inline (`{ key = "value" }`)
|
|
56
|
+
- **Array of tables**: `[[array]]`
|
|
57
|
+
- **Dotted keys**: `a.b.c = "value"`
|
|
58
|
+
- **Comments**: using `#`
|
|
59
|
+
|
|
60
|
+
```ts
|
|
61
|
+
const data = Bun.TOML.parse(`
|
|
62
|
+
# Application config
|
|
63
|
+
title = "My App"
|
|
64
|
+
|
|
65
|
+
[owner]
|
|
66
|
+
name = "John Doe"
|
|
67
|
+
|
|
68
|
+
[database]
|
|
69
|
+
enabled = true
|
|
70
|
+
ports = [8000, 8001, 8002]
|
|
71
|
+
connection_max = 5000
|
|
72
|
+
|
|
73
|
+
[servers.alpha]
|
|
74
|
+
ip = "10.0.0.1"
|
|
75
|
+
role = "frontend"
|
|
76
|
+
|
|
77
|
+
[servers.beta]
|
|
78
|
+
ip = "10.0.0.2"
|
|
79
|
+
role = "backend"
|
|
80
|
+
`);
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
#### Error Handling
|
|
84
|
+
|
|
85
|
+
`Bun.TOML.parse()` throws if the TOML is invalid:
|
|
86
|
+
|
|
87
|
+
```ts
|
|
88
|
+
try {
|
|
89
|
+
Bun.TOML.parse("invalid = = =");
|
|
90
|
+
} catch (error) {
|
|
91
|
+
console.error("Failed to parse TOML:", error.message);
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## Module Import
|
|
98
|
+
|
|
99
|
+
### ES Modules
|
|
100
|
+
|
|
101
|
+
You can import TOML files directly as ES modules. The TOML content is parsed and made available as both default and named exports:
|
|
102
|
+
|
|
103
|
+
```toml config.toml
|
|
104
|
+
[database]
|
|
105
|
+
host = "localhost"
|
|
106
|
+
port = 5432
|
|
107
|
+
name = "myapp"
|
|
108
|
+
|
|
109
|
+
[redis]
|
|
110
|
+
host = "localhost"
|
|
111
|
+
port = 6379
|
|
112
|
+
|
|
113
|
+
[features]
|
|
114
|
+
auth = true
|
|
115
|
+
rateLimit = true
|
|
116
|
+
analytics = false
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
#### Default Import
|
|
120
|
+
|
|
121
|
+
```ts app.ts icon="/icons/typescript.svg"
|
|
122
|
+
import config from "./config.toml";
|
|
123
|
+
|
|
124
|
+
console.log(config.database.host); // "localhost"
|
|
125
|
+
console.log(config.redis.port); // 6379
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
#### Named Imports
|
|
129
|
+
|
|
130
|
+
You can destructure top-level TOML tables as named imports:
|
|
131
|
+
|
|
132
|
+
```ts app.ts icon="/icons/typescript.svg"
|
|
133
|
+
import { database, redis, features } from "./config.toml";
|
|
134
|
+
|
|
135
|
+
console.log(database.host); // "localhost"
|
|
136
|
+
console.log(redis.port); // 6379
|
|
137
|
+
console.log(features.auth); // true
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Or combine both:
|
|
141
|
+
|
|
142
|
+
```ts app.ts icon="/icons/typescript.svg"
|
|
143
|
+
import config, { database, features } from "./config.toml";
|
|
144
|
+
|
|
145
|
+
// Use the full config object
|
|
146
|
+
console.log(config);
|
|
147
|
+
|
|
148
|
+
// Or use specific parts
|
|
149
|
+
if (features.rateLimit) {
|
|
150
|
+
setupRateLimiting(database);
|
|
151
|
+
}
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
#### Import Attributes
|
|
155
|
+
|
|
156
|
+
You can also use import attributes to load any file as TOML:
|
|
157
|
+
|
|
158
|
+
```ts app.ts icon="/icons/typescript.svg"
|
|
159
|
+
import myConfig from "./my.config" with { type: "toml" };
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### CommonJS
|
|
163
|
+
|
|
164
|
+
TOML files can also be required in CommonJS:
|
|
165
|
+
|
|
166
|
+
```ts app.ts icon="/icons/typescript.svg"
|
|
167
|
+
const config = require("./config.toml");
|
|
168
|
+
console.log(config.database.name); // "myapp"
|
|
169
|
+
|
|
170
|
+
// Destructuring also works
|
|
171
|
+
const { database, redis } = require("./config.toml");
|
|
172
|
+
console.log(database.port); // 5432
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## Hot Reloading with TOML
|
|
178
|
+
|
|
179
|
+
When you run your application with `bun --hot`, changes to TOML files are automatically detected and reloaded without restarting:
|
|
180
|
+
|
|
181
|
+
```toml config.toml
|
|
182
|
+
[server]
|
|
183
|
+
port = 3000
|
|
184
|
+
host = "localhost"
|
|
185
|
+
|
|
186
|
+
[features]
|
|
187
|
+
debug = true
|
|
188
|
+
verbose = false
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
```ts server.ts icon="/icons/typescript.svg"
|
|
192
|
+
import { server, features } from "./config.toml";
|
|
193
|
+
|
|
194
|
+
console.log(`Starting server on ${server.host}:${server.port}`);
|
|
195
|
+
|
|
196
|
+
Bun.serve({
|
|
197
|
+
port: server.port,
|
|
198
|
+
hostname: server.host,
|
|
199
|
+
fetch(req) {
|
|
200
|
+
if (features.verbose) {
|
|
201
|
+
console.log(`${req.method} ${req.url}`);
|
|
202
|
+
}
|
|
203
|
+
return new Response("Hello World");
|
|
204
|
+
},
|
|
205
|
+
});
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
Run with hot reloading:
|
|
209
|
+
|
|
210
|
+
```bash terminal icon="terminal"
|
|
211
|
+
bun --hot server.ts
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
Now when you modify `config.toml`, the changes are immediately reflected in your running application.
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## Bundler Integration
|
|
219
|
+
|
|
220
|
+
When you import TOML files and bundle with Bun, the TOML is parsed at build time and included as a JavaScript module:
|
|
221
|
+
|
|
222
|
+
```bash terminal icon="terminal"
|
|
223
|
+
bun build app.ts --outdir=dist
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
This means:
|
|
227
|
+
|
|
228
|
+
- Zero runtime TOML parsing overhead in production
|
|
229
|
+
- Smaller bundle sizes
|
|
230
|
+
- Tree-shaking support for unused properties (named imports)
|
|
231
|
+
|
|
232
|
+
### Dynamic Imports
|
|
233
|
+
|
|
234
|
+
TOML files can be dynamically imported:
|
|
235
|
+
|
|
236
|
+
```ts
|
|
237
|
+
const config = await import("./config.toml");
|
|
238
|
+
```
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Transpiler
|
|
3
|
+
description: Use Bun's transpiler to transpile JavaScript and TypeScript code
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Bun exposes its internal transpiler via the `Bun.Transpiler` class. To create an instance of Bun's transpiler:
|
|
7
|
+
|
|
8
|
+
```ts
|
|
9
|
+
const transpiler = new Bun.Transpiler({
|
|
10
|
+
loader: "tsx", // "js | "jsx" | "ts" | "tsx"
|
|
11
|
+
});
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## `.transformSync()`
|
|
17
|
+
|
|
18
|
+
Transpile code synchronously with the `.transformSync()` method. Modules are not resolved and the code is not executed. The result is a string of vanilla JavaScript code.
|
|
19
|
+
|
|
20
|
+
<CodeGroup>
|
|
21
|
+
```ts transpile.ts icon="/icons/typescript.svg"
|
|
22
|
+
const transpiler = new Bun.Transpiler({
|
|
23
|
+
loader: 'tsx',
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
const code = `
|
|
27
|
+
import * as whatever from "./whatever.ts"
|
|
28
|
+
export function Home(props: {title: string}){
|
|
29
|
+
return <p>{props.title}</p>;
|
|
30
|
+
}`;
|
|
31
|
+
|
|
32
|
+
const result = transpiler.transformSync(code);
|
|
33
|
+
|
|
34
|
+
````
|
|
35
|
+
|
|
36
|
+
```ts output
|
|
37
|
+
import { __require as require } from "bun:wrap";
|
|
38
|
+
import * as JSX from "react/jsx-dev-runtime";
|
|
39
|
+
var jsx = require(JSX).jsxDEV;
|
|
40
|
+
|
|
41
|
+
export default jsx(
|
|
42
|
+
"div",
|
|
43
|
+
{
|
|
44
|
+
children: "hi!",
|
|
45
|
+
},
|
|
46
|
+
undefined,
|
|
47
|
+
false,
|
|
48
|
+
undefined,
|
|
49
|
+
this,
|
|
50
|
+
);
|
|
51
|
+
````
|
|
52
|
+
|
|
53
|
+
</CodeGroup>
|
|
54
|
+
|
|
55
|
+
To override the default loader specified in the `new Bun.Transpiler()` constructor, pass a second argument to `.transformSync()`.
|
|
56
|
+
|
|
57
|
+
```ts
|
|
58
|
+
transpiler.transformSync("<div>hi!</div>", "tsx");
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
<Accordion title="Nitty gritty">
|
|
62
|
+
|
|
63
|
+
When `.transformSync` is called, the transpiler is run in the same thread as the currently executed code.
|
|
64
|
+
|
|
65
|
+
If a macro is used, it will be run in the same thread as the transpiler, but in a separate event loop from the rest of your application. Currently, globals between macros and regular code are shared, which means it is possible (but not recommended) to share states between macros and regular code. Attempting to use AST nodes outside of a macro is undefined behavior.
|
|
66
|
+
|
|
67
|
+
</Accordion>
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## `.transform()`
|
|
72
|
+
|
|
73
|
+
The `transform()` method is an async version of `.transformSync()` that returns a `Promise<string>`.
|
|
74
|
+
|
|
75
|
+
```js
|
|
76
|
+
const transpiler = new Bun.Transpiler({ loader: "jsx" });
|
|
77
|
+
const result = await transpiler.transform("<div>hi!</div>");
|
|
78
|
+
console.log(result);
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Unless you're transpiling _many_ large files, you should probably use `Bun.Transpiler.transformSync`. The cost of the threadpool will often take longer than actually transpiling code.
|
|
82
|
+
|
|
83
|
+
```ts
|
|
84
|
+
await transpiler.transform("<div>hi!</div>", "tsx");
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
<Accordion title="Nitty gritty">
|
|
88
|
+
|
|
89
|
+
The `.transform()` method runs the transpiler in Bun's worker threadpool, so if you run it 100 times, it will run it across `Math.floor($cpu_count * 0.8)` threads, without blocking the main JavaScript thread.
|
|
90
|
+
|
|
91
|
+
If your code uses a macro, it will potentially spawn a new copy of Bun's JavaScript runtime environment in that new thread.
|
|
92
|
+
|
|
93
|
+
</Accordion>
|
|
94
|
+
|
|
95
|
+
## `.scan()`
|
|
96
|
+
|
|
97
|
+
The `Transpiler` instance can also scan some source code and return a list of its imports and exports, plus additional metadata about each one. [Type-only](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html#type-only-imports-and-export) imports and exports are ignored.
|
|
98
|
+
|
|
99
|
+
<CodeGroup>
|
|
100
|
+
|
|
101
|
+
```ts example.ts icon="/icons/typescript.svg"
|
|
102
|
+
const transpiler = new Bun.Transpiler({
|
|
103
|
+
loader: "tsx",
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
const code = `
|
|
107
|
+
import React from 'react';
|
|
108
|
+
import type {ReactNode} from 'react';
|
|
109
|
+
const val = require('./cjs.js')
|
|
110
|
+
import('./loader');
|
|
111
|
+
|
|
112
|
+
export const name = "hello";
|
|
113
|
+
`;
|
|
114
|
+
|
|
115
|
+
const result = transpiler.scan(code);
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
```json output
|
|
119
|
+
{
|
|
120
|
+
"exports": ["name"],
|
|
121
|
+
"imports": [
|
|
122
|
+
{
|
|
123
|
+
"kind": "import-statement",
|
|
124
|
+
"path": "react"
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"kind": "import-statement",
|
|
128
|
+
"path": "remix"
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"kind": "dynamic-import",
|
|
132
|
+
"path": "./loader"
|
|
133
|
+
}
|
|
134
|
+
]
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
</CodeGroup>
|
|
139
|
+
|
|
140
|
+
Each import in the `imports` array has a `path` and `kind`. Bun categories imports into the following kinds:
|
|
141
|
+
|
|
142
|
+
- `import-statement`: `import React from 'react'`
|
|
143
|
+
- `require-call`: `const val = require('./cjs.js')`
|
|
144
|
+
- `require-resolve`: `require.resolve('./cjs.js')`
|
|
145
|
+
- `dynamic-import`: `import('./loader')`
|
|
146
|
+
- `import-rule`: `@import 'foo.css'`
|
|
147
|
+
- `url-token`: `url('./foo.png')`
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## `.scanImports()`
|
|
152
|
+
|
|
153
|
+
For performance-sensitive code, you can use the `.scanImports()` method to get a list of imports. It's faster than `.scan()` (especially for large files) but marginally less accurate due to some performance optimizations.
|
|
154
|
+
|
|
155
|
+
<CodeGroup>
|
|
156
|
+
|
|
157
|
+
```ts example.ts icon="/icons/typescript.svg"
|
|
158
|
+
const transpiler = new Bun.Transpiler({
|
|
159
|
+
loader: "tsx",
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
const code = `
|
|
163
|
+
import React from 'react';
|
|
164
|
+
import type {ReactNode} from 'react';
|
|
165
|
+
const val = require('./cjs.js')
|
|
166
|
+
import('./loader');
|
|
167
|
+
|
|
168
|
+
export const name = "hello";
|
|
169
|
+
`;
|
|
170
|
+
|
|
171
|
+
const result = transpiler.scanImports(code);
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
```json results icon="file-json"
|
|
175
|
+
[
|
|
176
|
+
{
|
|
177
|
+
"kind": "import-statement",
|
|
178
|
+
"path": "react"
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
"kind": "require-call",
|
|
182
|
+
"path": "./cjs.js"
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"kind": "dynamic-import",
|
|
186
|
+
"path": "./loader"
|
|
187
|
+
}
|
|
188
|
+
]
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
</CodeGroup>
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## Reference
|
|
196
|
+
|
|
197
|
+
```ts See Typescript Definitions expandable
|
|
198
|
+
type Loader = "jsx" | "js" | "ts" | "tsx";
|
|
199
|
+
|
|
200
|
+
interface TranspilerOptions {
|
|
201
|
+
// Replace key with value. Value must be a JSON string.
|
|
202
|
+
// { "process.env.NODE_ENV": "\"production\"" }
|
|
203
|
+
define?: Record<string, string>,
|
|
204
|
+
|
|
205
|
+
// Default loader for this transpiler
|
|
206
|
+
loader?: Loader,
|
|
207
|
+
|
|
208
|
+
// Default platform to target
|
|
209
|
+
// This affects how import and/or require is used
|
|
210
|
+
target?: "browser" | "bun" | "node",
|
|
211
|
+
|
|
212
|
+
// Specify a tsconfig.json file as stringified JSON or an object
|
|
213
|
+
// Use this to set a custom JSX factory, fragment, or import source
|
|
214
|
+
// For example, if you want to use Preact instead of React. Or if you want to use Emotion.
|
|
215
|
+
tsconfig?: string | TSConfig,
|
|
216
|
+
|
|
217
|
+
// Replace imports with macros
|
|
218
|
+
macro?: MacroMap,
|
|
219
|
+
|
|
220
|
+
// Specify a set of exports to eliminate
|
|
221
|
+
// Or rename certain exports
|
|
222
|
+
exports?: {
|
|
223
|
+
eliminate?: string[];
|
|
224
|
+
replace?: Record<string, string>;
|
|
225
|
+
},
|
|
226
|
+
|
|
227
|
+
// Whether to remove unused imports from transpiled file
|
|
228
|
+
// Default: false
|
|
229
|
+
trimUnusedImports?: boolean,
|
|
230
|
+
|
|
231
|
+
// Whether to enable a set of JSX optimizations
|
|
232
|
+
// jsxOptimizationInline ...,
|
|
233
|
+
|
|
234
|
+
// Experimental whitespace minification
|
|
235
|
+
minifyWhitespace?: boolean,
|
|
236
|
+
|
|
237
|
+
// Whether to inline constant values
|
|
238
|
+
// Typically improves performance and decreases bundle size
|
|
239
|
+
// Default: true
|
|
240
|
+
inline?: boolean,
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
// Map import paths to macros
|
|
244
|
+
interface MacroMap {
|
|
245
|
+
// {
|
|
246
|
+
// "react-relay": {
|
|
247
|
+
// "graphql": "bun-macro-relay/bun-macro-relay.tsx"
|
|
248
|
+
// }
|
|
249
|
+
// }
|
|
250
|
+
[packagePath: string]: {
|
|
251
|
+
[importItemName: string]: string,
|
|
252
|
+
},
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
class Bun.Transpiler {
|
|
256
|
+
constructor(options: TranspilerOptions)
|
|
257
|
+
|
|
258
|
+
transform(code: string, loader?: Loader): Promise<string>
|
|
259
|
+
transformSync(code: string, loader?: Loader): string
|
|
260
|
+
|
|
261
|
+
scan(code: string): {exports: string[], imports: Import}
|
|
262
|
+
scanImports(code: string): Import[]
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
type Import = {
|
|
266
|
+
path: string,
|
|
267
|
+
kind:
|
|
268
|
+
// import foo from 'bar'; in JavaScript
|
|
269
|
+
| "import-statement"
|
|
270
|
+
// require("foo") in JavaScript
|
|
271
|
+
| "require-call"
|
|
272
|
+
// require.resolve("foo") in JavaScript
|
|
273
|
+
| "require-resolve"
|
|
274
|
+
// Dynamic import() in JavaScript
|
|
275
|
+
| "dynamic-import"
|
|
276
|
+
// @import() in CSS
|
|
277
|
+
| "import-rule"
|
|
278
|
+
// url() in CSS
|
|
279
|
+
| "url-token"
|
|
280
|
+
// The import was injected by Bun
|
|
281
|
+
| "internal"
|
|
282
|
+
// Entry point (not common)
|
|
283
|
+
| "entry-point-build"
|
|
284
|
+
| "entry-point-run"
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
const transpiler = new Bun.Transpiler({ loader: "jsx" });
|
|
288
|
+
```
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "TypeScript"
|
|
3
|
+
description: "Using TypeScript with Bun, including type definitions and compiler options"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
To install the TypeScript definitions for Bun's built-in APIs, install `@types/bun`.
|
|
7
|
+
|
|
8
|
+
```sh
|
|
9
|
+
bun add -d @types/bun # dev dependency
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
At this point, you should be able to reference the `Bun` global in your TypeScript files without seeing errors in your editor.
|
|
13
|
+
|
|
14
|
+
```ts
|
|
15
|
+
console.log(Bun.version);
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Suggested `compilerOptions`
|
|
19
|
+
|
|
20
|
+
Bun supports things like top-level await, JSX, and extensioned `.ts` imports, which TypeScript doesn't allow by default. Below is a set of recommended `compilerOptions` for a Bun project, so you can use these features without seeing compiler warnings from TypeScript.
|
|
21
|
+
|
|
22
|
+
```jsonc
|
|
23
|
+
{
|
|
24
|
+
"compilerOptions": {
|
|
25
|
+
// Environment setup & latest features
|
|
26
|
+
"lib": ["ESNext"],
|
|
27
|
+
"target": "ESNext",
|
|
28
|
+
"module": "Preserve",
|
|
29
|
+
"moduleDetection": "force",
|
|
30
|
+
"jsx": "react-jsx",
|
|
31
|
+
"allowJs": true,
|
|
32
|
+
|
|
33
|
+
// Bundler mode
|
|
34
|
+
"moduleResolution": "bundler",
|
|
35
|
+
"allowImportingTsExtensions": true,
|
|
36
|
+
"verbatimModuleSyntax": true,
|
|
37
|
+
"noEmit": true,
|
|
38
|
+
|
|
39
|
+
// Best practices
|
|
40
|
+
"strict": true,
|
|
41
|
+
"skipLibCheck": true,
|
|
42
|
+
"noFallthroughCasesInSwitch": true,
|
|
43
|
+
"noUncheckedIndexedAccess": true,
|
|
44
|
+
"noImplicitOverride": true,
|
|
45
|
+
|
|
46
|
+
// Some stricter flags (disabled by default)
|
|
47
|
+
"noUnusedLocals": false,
|
|
48
|
+
"noUnusedParameters": false,
|
|
49
|
+
"noPropertyAccessFromIndexSignature": false,
|
|
50
|
+
},
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
If you run `bun init` in a new directory, this `tsconfig.json` will be generated for you. (The stricter flags are disabled by default.)
|
|
55
|
+
|
|
56
|
+
```sh
|
|
57
|
+
bun init
|
|
58
|
+
```
|