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/runtime/jsx.md
DELETED
|
@@ -1,385 +0,0 @@
|
|
|
1
|
-
Bun supports `.jsx` and `.tsx` files out of the box. Bun's internal transpiler converts JSX syntax into vanilla JavaScript before execution.
|
|
2
|
-
|
|
3
|
-
```tsx#react.tsx
|
|
4
|
-
function Component(props: {message: string}) {
|
|
5
|
-
return (
|
|
6
|
-
<body>
|
|
7
|
-
<h1 style={{color: 'red'}}>{props.message}</h1>
|
|
8
|
-
</body>
|
|
9
|
-
);
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
console.log(<Component message="Hello world!" />);
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
## Configuration
|
|
16
|
-
|
|
17
|
-
Bun reads your `tsconfig.json` or `jsconfig.json` configuration files to determines how to perform the JSX transform internally. To avoid using either of these, the following options can also be defined in [`bunfig.toml`](https://bun.com/docs/runtime/bunfig).
|
|
18
|
-
|
|
19
|
-
The following compiler options are respected.
|
|
20
|
-
|
|
21
|
-
### [`jsx`](https://www.typescriptlang.org/tsconfig#jsx)
|
|
22
|
-
|
|
23
|
-
How JSX constructs are transformed into vanilla JavaScript internally. The table below lists the possible values of `jsx`, along with their transpilation of the following simple JSX component:
|
|
24
|
-
|
|
25
|
-
```tsx
|
|
26
|
-
<Box width={5}>Hello</Box>
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
{% table %}
|
|
30
|
-
|
|
31
|
-
- Compiler options
|
|
32
|
-
- Transpiled output
|
|
33
|
-
|
|
34
|
-
---
|
|
35
|
-
|
|
36
|
-
- ```json
|
|
37
|
-
{
|
|
38
|
-
"jsx": "react"
|
|
39
|
-
}
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
- ```tsx
|
|
43
|
-
import { createElement } from "react";
|
|
44
|
-
createElement("Box", { width: 5 }, "Hello");
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
---
|
|
48
|
-
|
|
49
|
-
- ```json
|
|
50
|
-
{
|
|
51
|
-
"jsx": "react-jsx"
|
|
52
|
-
}
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
- ```tsx
|
|
56
|
-
import { jsx } from "react/jsx-runtime";
|
|
57
|
-
jsx("Box", { width: 5 }, "Hello");
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
---
|
|
61
|
-
|
|
62
|
-
- ```json
|
|
63
|
-
{
|
|
64
|
-
"jsx": "react-jsxdev"
|
|
65
|
-
}
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
- ```tsx
|
|
69
|
-
import { jsxDEV } from "react/jsx-dev-runtime";
|
|
70
|
-
jsxDEV(
|
|
71
|
-
"Box",
|
|
72
|
-
{ width: 5, children: "Hello" },
|
|
73
|
-
undefined,
|
|
74
|
-
false,
|
|
75
|
-
undefined,
|
|
76
|
-
this,
|
|
77
|
-
);
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
The `jsxDEV` variable name is a convention used by React. The `DEV` suffix is a visible way to indicate that the code is intended for use in development. The development version of React is slower and includes additional validity checks & debugging tools.
|
|
81
|
-
|
|
82
|
-
---
|
|
83
|
-
|
|
84
|
-
- ```json
|
|
85
|
-
{
|
|
86
|
-
"jsx": "preserve"
|
|
87
|
-
}
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
- ```tsx
|
|
91
|
-
// JSX is not transpiled
|
|
92
|
-
// "preserve" is not supported by Bun currently
|
|
93
|
-
<Box width={5}>Hello</Box>
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
{% /table %}
|
|
97
|
-
|
|
98
|
-
<!-- {% table %}
|
|
99
|
-
|
|
100
|
-
- `react`
|
|
101
|
-
- `React.createElement("Box", {width: 5}, "Hello")`
|
|
102
|
-
|
|
103
|
-
---
|
|
104
|
-
|
|
105
|
-
- `react-jsx`
|
|
106
|
-
- `jsx("Box", {width: 5}, "Hello")`
|
|
107
|
-
|
|
108
|
-
---
|
|
109
|
-
|
|
110
|
-
- `react-jsxdev`
|
|
111
|
-
- `jsxDEV("Box", {width: 5}, "Hello", void 0, false)`
|
|
112
|
-
|
|
113
|
-
---
|
|
114
|
-
|
|
115
|
-
- `preserve`
|
|
116
|
-
- `<Box width={5}>Hello</Box>` Left as-is; not yet supported by Bun.
|
|
117
|
-
|
|
118
|
-
{% /table %} -->
|
|
119
|
-
|
|
120
|
-
### [`jsxFactory`](https://www.typescriptlang.org/tsconfig#jsxFactory)
|
|
121
|
-
|
|
122
|
-
{% callout %}
|
|
123
|
-
**Note** — Only applicable when `jsx` is `react`.
|
|
124
|
-
{% /callout %}
|
|
125
|
-
|
|
126
|
-
The function name used to represent JSX constructs. Default value is `"createElement"`. This is useful for libraries like [Preact](https://preactjs.com/) that use a different function name (`"h"`).
|
|
127
|
-
|
|
128
|
-
{% table %}
|
|
129
|
-
|
|
130
|
-
- Compiler options
|
|
131
|
-
- Transpiled output
|
|
132
|
-
|
|
133
|
-
---
|
|
134
|
-
|
|
135
|
-
- ```json
|
|
136
|
-
{
|
|
137
|
-
"jsx": "react",
|
|
138
|
-
"jsxFactory": "h"
|
|
139
|
-
}
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
- ```tsx
|
|
143
|
-
import { h } from "react";
|
|
144
|
-
h("Box", { width: 5 }, "Hello");
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
{% /table %}
|
|
148
|
-
|
|
149
|
-
### [`jsxFragmentFactory`](https://www.typescriptlang.org/tsconfig#jsxFragmentFactory)
|
|
150
|
-
|
|
151
|
-
{% callout %}
|
|
152
|
-
**Note** — Only applicable when `jsx` is `react`.
|
|
153
|
-
{% /callout %}
|
|
154
|
-
|
|
155
|
-
The function name used to represent [JSX fragments](https://react.dev/reference/react/Fragment) such as `<>Hello</>`; only applicable when `jsx` is `react`. Default value is `"Fragment"`.
|
|
156
|
-
|
|
157
|
-
{% table %}
|
|
158
|
-
|
|
159
|
-
- Compiler options
|
|
160
|
-
- Transpiled output
|
|
161
|
-
|
|
162
|
-
---
|
|
163
|
-
|
|
164
|
-
- ```json
|
|
165
|
-
{
|
|
166
|
-
"jsx": "react",
|
|
167
|
-
"jsxFactory": "myjsx",
|
|
168
|
-
"jsxFragmentFactory": "MyFragment"
|
|
169
|
-
}
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
- ```tsx
|
|
173
|
-
// input
|
|
174
|
-
<>Hello</>;
|
|
175
|
-
|
|
176
|
-
// output
|
|
177
|
-
import { myjsx, MyFragment } from "react";
|
|
178
|
-
myjsx(MyFragment, null, "Hello");
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
{% /table %}
|
|
182
|
-
|
|
183
|
-
### [`jsxImportSource`](https://www.typescriptlang.org/tsconfig#jsxImportSource)
|
|
184
|
-
|
|
185
|
-
{% callout %}
|
|
186
|
-
**Note** — Only applicable when `jsx` is `react-jsx` or `react-jsxdev`.
|
|
187
|
-
{% /callout %}
|
|
188
|
-
|
|
189
|
-
The module from which the component factory function (`createElement`, `jsx`, `jsxDEV`, etc) will be imported. Default value is `"react"`. This will typically be necessary when using a component library like Preact.
|
|
190
|
-
|
|
191
|
-
{% table %}
|
|
192
|
-
|
|
193
|
-
- Compiler options
|
|
194
|
-
- Transpiled output
|
|
195
|
-
|
|
196
|
-
---
|
|
197
|
-
|
|
198
|
-
- ```jsonc
|
|
199
|
-
{
|
|
200
|
-
"jsx": "react",
|
|
201
|
-
// jsxImportSource is not defined
|
|
202
|
-
// default to "react"
|
|
203
|
-
}
|
|
204
|
-
```
|
|
205
|
-
|
|
206
|
-
- ```tsx
|
|
207
|
-
import { jsx } from "react/jsx-runtime";
|
|
208
|
-
jsx("Box", { width: 5, children: "Hello" });
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
---
|
|
212
|
-
|
|
213
|
-
- ```jsonc
|
|
214
|
-
{
|
|
215
|
-
"jsx": "react-jsx",
|
|
216
|
-
"jsxImportSource": "preact",
|
|
217
|
-
}
|
|
218
|
-
```
|
|
219
|
-
|
|
220
|
-
- ```tsx
|
|
221
|
-
import { jsx } from "preact/jsx-runtime";
|
|
222
|
-
jsx("Box", { width: 5, children: "Hello" });
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
---
|
|
226
|
-
|
|
227
|
-
- ```jsonc
|
|
228
|
-
{
|
|
229
|
-
"jsx": "react-jsxdev",
|
|
230
|
-
"jsxImportSource": "preact",
|
|
231
|
-
}
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
- ```tsx
|
|
235
|
-
// /jsx-runtime is automatically appended
|
|
236
|
-
import { jsxDEV } from "preact/jsx-dev-runtime";
|
|
237
|
-
jsxDEV(
|
|
238
|
-
"Box",
|
|
239
|
-
{ width: 5, children: "Hello" },
|
|
240
|
-
undefined,
|
|
241
|
-
false,
|
|
242
|
-
undefined,
|
|
243
|
-
this,
|
|
244
|
-
);
|
|
245
|
-
```
|
|
246
|
-
|
|
247
|
-
{% /table %}
|
|
248
|
-
|
|
249
|
-
### `jsxSideEffects`
|
|
250
|
-
|
|
251
|
-
By default, Bun marks JSX expressions as `/* @__PURE__ */` so they can be removed during bundling if they are unused (known as "dead code elimination" or "tree shaking"). Set `jsxSideEffects` to `true` to prevent this behavior.
|
|
252
|
-
|
|
253
|
-
{% table %}
|
|
254
|
-
|
|
255
|
-
- Compiler options
|
|
256
|
-
- Transpiled output
|
|
257
|
-
|
|
258
|
-
---
|
|
259
|
-
|
|
260
|
-
- ```jsonc
|
|
261
|
-
{
|
|
262
|
-
"jsx": "react",
|
|
263
|
-
// jsxSideEffects is false by default
|
|
264
|
-
}
|
|
265
|
-
```
|
|
266
|
-
|
|
267
|
-
- ```tsx
|
|
268
|
-
// JSX expressions are marked as pure
|
|
269
|
-
/* @__PURE__ */ React.createElement("div", null, "Hello");
|
|
270
|
-
```
|
|
271
|
-
|
|
272
|
-
---
|
|
273
|
-
|
|
274
|
-
- ```jsonc
|
|
275
|
-
{
|
|
276
|
-
"jsx": "react",
|
|
277
|
-
"jsxSideEffects": true,
|
|
278
|
-
}
|
|
279
|
-
```
|
|
280
|
-
|
|
281
|
-
- ```tsx
|
|
282
|
-
// JSX expressions are not marked as pure
|
|
283
|
-
React.createElement("div", null, "Hello");
|
|
284
|
-
```
|
|
285
|
-
|
|
286
|
-
---
|
|
287
|
-
|
|
288
|
-
- ```jsonc
|
|
289
|
-
{
|
|
290
|
-
"jsx": "react-jsx",
|
|
291
|
-
"jsxSideEffects": true,
|
|
292
|
-
}
|
|
293
|
-
```
|
|
294
|
-
|
|
295
|
-
- ```tsx
|
|
296
|
-
// Automatic runtime also respects jsxSideEffects
|
|
297
|
-
jsx("div", { children: "Hello" });
|
|
298
|
-
```
|
|
299
|
-
|
|
300
|
-
{% /table %}
|
|
301
|
-
|
|
302
|
-
This option is also available as a CLI flag:
|
|
303
|
-
|
|
304
|
-
```bash
|
|
305
|
-
$ bun build --jsx-side-effects
|
|
306
|
-
```
|
|
307
|
-
|
|
308
|
-
### JSX pragma
|
|
309
|
-
|
|
310
|
-
All of these values can be set on a per-file basis using _pragmas_. A pragma is a special comment that sets a compiler option in a particular file.
|
|
311
|
-
|
|
312
|
-
{% table %}
|
|
313
|
-
|
|
314
|
-
- Pragma
|
|
315
|
-
- Equivalent config
|
|
316
|
-
|
|
317
|
-
---
|
|
318
|
-
|
|
319
|
-
- ```ts
|
|
320
|
-
// @jsx h
|
|
321
|
-
```
|
|
322
|
-
|
|
323
|
-
- ```jsonc
|
|
324
|
-
{
|
|
325
|
-
"jsxFactory": "h",
|
|
326
|
-
}
|
|
327
|
-
```
|
|
328
|
-
|
|
329
|
-
---
|
|
330
|
-
|
|
331
|
-
- ```ts
|
|
332
|
-
// @jsxFrag MyFragment
|
|
333
|
-
```
|
|
334
|
-
- ```jsonc
|
|
335
|
-
{
|
|
336
|
-
"jsxFragmentFactory": "MyFragment",
|
|
337
|
-
}
|
|
338
|
-
```
|
|
339
|
-
|
|
340
|
-
---
|
|
341
|
-
|
|
342
|
-
- ```ts
|
|
343
|
-
// @jsxImportSource preact
|
|
344
|
-
```
|
|
345
|
-
- ```jsonc
|
|
346
|
-
{
|
|
347
|
-
"jsxImportSource": "preact",
|
|
348
|
-
}
|
|
349
|
-
```
|
|
350
|
-
|
|
351
|
-
{% /table %}
|
|
352
|
-
|
|
353
|
-
## Logging
|
|
354
|
-
|
|
355
|
-
Bun implements special logging for JSX to make debugging easier. Given the following file:
|
|
356
|
-
|
|
357
|
-
```tsx#index.tsx
|
|
358
|
-
import { Stack, UserCard } from "./components";
|
|
359
|
-
|
|
360
|
-
console.log(
|
|
361
|
-
<Stack>
|
|
362
|
-
<UserCard name="Dom" bio="Street racer and Corona lover" />
|
|
363
|
-
<UserCard name="Jakob" bio="Super spy and Dom's secret brother" />
|
|
364
|
-
</Stack>
|
|
365
|
-
);
|
|
366
|
-
```
|
|
367
|
-
|
|
368
|
-
Bun will pretty-print the component tree when logged:
|
|
369
|
-
|
|
370
|
-
{% image src="https://github.com/oven-sh/bun/assets/3084745/d29db51d-6837-44e2-b8be-84fc1b9e9d97" / %}
|
|
371
|
-
|
|
372
|
-
## Prop punning
|
|
373
|
-
|
|
374
|
-
The Bun runtime also supports "prop punning" for JSX. This is a shorthand syntax useful for assigning a variable to a prop with the same name.
|
|
375
|
-
|
|
376
|
-
```tsx
|
|
377
|
-
function Div(props: {className: string;}) {
|
|
378
|
-
const {className} = props;
|
|
379
|
-
|
|
380
|
-
// without punning
|
|
381
|
-
return <div className={className} />;
|
|
382
|
-
// with punning
|
|
383
|
-
return <div {className} />;
|
|
384
|
-
}
|
|
385
|
-
```
|
package/docs/runtime/loaders.md
DELETED
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
## TypeScript
|
|
2
|
-
|
|
3
|
-
Bun natively supports TypeScript out of the box. All files are transpiled on the fly by Bun's fast native transpiler before being executed. Similar to other build tools, Bun does not perform typechecking; it simply removes type annotations from the file.
|
|
4
|
-
|
|
5
|
-
```bash
|
|
6
|
-
$ bun index.js
|
|
7
|
-
$ bun index.jsx
|
|
8
|
-
$ bun index.ts
|
|
9
|
-
$ bun index.tsx
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
Some aspects of Bun's runtime behavior are affected by the contents of your `tsconfig.json` file. Refer to [Runtime > TypeScript](https://bun.com/docs/runtime/typescript) page for details.
|
|
13
|
-
|
|
14
|
-
## JSX
|
|
15
|
-
|
|
16
|
-
Bun supports `.jsx` and `.tsx` files out of the box. Bun's internal transpiler converts JSX syntax into vanilla JavaScript before execution.
|
|
17
|
-
|
|
18
|
-
```tsx#react.tsx
|
|
19
|
-
function Component(props: {message: string}) {
|
|
20
|
-
return (
|
|
21
|
-
<body>
|
|
22
|
-
<h1 style={{color: 'red'}}>{props.message}</h1>
|
|
23
|
-
</body>
|
|
24
|
-
);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
console.log(<Component message="Hello world!" />);
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
Bun implements special logging for JSX to make debugging easier.
|
|
31
|
-
|
|
32
|
-
```bash
|
|
33
|
-
$ bun run react.tsx
|
|
34
|
-
<Component message="Hello world!" />
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
## Text files
|
|
38
|
-
|
|
39
|
-
Text files can be imported as strings.
|
|
40
|
-
|
|
41
|
-
{% codetabs %}
|
|
42
|
-
|
|
43
|
-
```ts#index.ts
|
|
44
|
-
import text from "./text.txt";
|
|
45
|
-
console.log(text);
|
|
46
|
-
// => "Hello world!"
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
```txt#text.txt
|
|
50
|
-
Hello world!
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
{% /codetabs %}
|
|
54
|
-
|
|
55
|
-
## JSON, TOML, and YAML
|
|
56
|
-
|
|
57
|
-
JSON, TOML, and YAML files can be directly imported from a source file. The contents will be loaded and returned as a JavaScript object.
|
|
58
|
-
|
|
59
|
-
```ts
|
|
60
|
-
import pkg from "./package.json";
|
|
61
|
-
import data from "./data.toml";
|
|
62
|
-
import config from "./config.yaml";
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
For more details on YAML support, see the [YAML API documentation](/docs/api/yaml).
|
|
66
|
-
|
|
67
|
-
## WASI
|
|
68
|
-
|
|
69
|
-
{% callout %}
|
|
70
|
-
🚧 **Experimental**
|
|
71
|
-
{% /callout %}
|
|
72
|
-
|
|
73
|
-
Bun has experimental support for WASI, the [WebAssembly System Interface](https://github.com/WebAssembly/WASI). To run a `.wasm` binary with Bun:
|
|
74
|
-
|
|
75
|
-
```bash
|
|
76
|
-
$ bun ./my-wasm-app.wasm
|
|
77
|
-
# if the filename doesn't end with ".wasm"
|
|
78
|
-
$ bun run ./my-wasm-app.whatever
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
{% callout %}
|
|
82
|
-
|
|
83
|
-
**Note** — WASI support is based on [wasi-js](https://github.com/sagemathinc/cowasm/tree/main/core/wasi-js). Currently, it only supports WASI binaries that use the `wasi_snapshot_preview1` or `wasi_unstable` APIs. Bun's implementation is not fully optimized for performance; this will become more of a priority as WASM grows in popularity.
|
|
84
|
-
{% /callout %}
|
|
85
|
-
|
|
86
|
-
## SQLite
|
|
87
|
-
|
|
88
|
-
You can import sqlite databases directly into your code. Bun will automatically load the database and return a `Database` object.
|
|
89
|
-
|
|
90
|
-
```ts
|
|
91
|
-
import db from "./my.db" with { type: "sqlite" };
|
|
92
|
-
console.log(db.query("select * from users LIMIT 1").get());
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
This uses [`bun:sqlite`](https://bun.com/docs/api/sqlite).
|
|
96
|
-
|
|
97
|
-
## Custom loaders
|
|
98
|
-
|
|
99
|
-
Support for additional file types can be implemented with plugins. Refer to [Runtime > Plugins](https://bun.com/docs/bundler/plugins) for full documentation.
|
|
100
|
-
|
|
101
|
-
<!--
|
|
102
|
-
|
|
103
|
-
A loader determines how to map imports & file extensions to transforms and output.
|
|
104
|
-
|
|
105
|
-
Currently, Bun implements the following loaders:
|
|
106
|
-
|
|
107
|
-
| Input | Loader | Output |
|
|
108
|
-
| ----- | ----------------------------- | ------ |
|
|
109
|
-
| .js | JSX + JavaScript | .js |
|
|
110
|
-
| .jsx | JSX + JavaScript | .js |
|
|
111
|
-
| .ts | TypeScript + JavaScript | .js |
|
|
112
|
-
| .tsx | TypeScript + JSX + JavaScript | .js |
|
|
113
|
-
| .mjs | JavaScript | .js |
|
|
114
|
-
| .cjs | JavaScript | .js |
|
|
115
|
-
| .mts | TypeScript | .js |
|
|
116
|
-
| .cts | TypeScript | .js |
|
|
117
|
-
| .toml | TOML | .js |
|
|
118
|
-
| .css | CSS | .css |
|
|
119
|
-
| .env | Env | N/A |
|
|
120
|
-
| .\* | file | string |
|
|
121
|
-
|
|
122
|
-
Everything else is treated as `file`. `file` replaces the import with a URL (or a path).
|
|
123
|
-
|
|
124
|
-
You can configure which loaders map to which extensions by passing `--loaders` to `bun`. For example:
|
|
125
|
-
|
|
126
|
-
```sh
|
|
127
|
-
$ bun --loader=.js:js
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
This will disable JSX transforms for `.js` files. -->
|