bun-types 1.3.2-canary.20251105T140650 → 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.
Files changed (308) hide show
  1. package/docs/README.md +28 -0
  2. package/package.json +1 -1
  3. package/docs/api/binary-data.md +0 -1038
  4. package/docs/api/cc.md +0 -197
  5. package/docs/api/color.md +0 -262
  6. package/docs/api/console.md +0 -57
  7. package/docs/api/cookie.md +0 -449
  8. package/docs/api/dns.md +0 -110
  9. package/docs/api/fetch.md +0 -463
  10. package/docs/api/ffi.md +0 -557
  11. package/docs/api/file-io.md +0 -366
  12. package/docs/api/file-system-router.md +0 -112
  13. package/docs/api/file.md +0 -19
  14. package/docs/api/glob.md +0 -178
  15. package/docs/api/globals.md +0 -387
  16. package/docs/api/hashing.md +0 -319
  17. package/docs/api/html-rewriter.md +0 -334
  18. package/docs/api/http.md +0 -1408
  19. package/docs/api/import-meta.md +0 -69
  20. package/docs/api/node-api.md +0 -14
  21. package/docs/api/redis.md +0 -597
  22. package/docs/api/s3.md +0 -850
  23. package/docs/api/secrets.md +0 -319
  24. package/docs/api/semver.md +0 -52
  25. package/docs/api/spawn.md +0 -582
  26. package/docs/api/sql.md +0 -1374
  27. package/docs/api/sqlite.md +0 -694
  28. package/docs/api/streams.md +0 -230
  29. package/docs/api/tcp.md +0 -221
  30. package/docs/api/transpiler.md +0 -276
  31. package/docs/api/udp.md +0 -123
  32. package/docs/api/utils.md +0 -891
  33. package/docs/api/websockets.md +0 -573
  34. package/docs/api/workers.md +0 -322
  35. package/docs/api/yaml.md +0 -668
  36. package/docs/benchmarks.md +0 -120
  37. package/docs/bun-flavored-toml.md +0 -42
  38. package/docs/bundler/css.md +0 -1028
  39. package/docs/bundler/css_modules.md +0 -145
  40. package/docs/bundler/executables.md +0 -626
  41. package/docs/bundler/fullstack.md +0 -418
  42. package/docs/bundler/hmr.md +0 -234
  43. package/docs/bundler/html.md +0 -349
  44. package/docs/bundler/index.md +0 -1735
  45. package/docs/bundler/intro.md +0 -75
  46. package/docs/bundler/loaders.md +0 -410
  47. package/docs/bundler/macros.md +0 -329
  48. package/docs/bundler/plugins.md +0 -449
  49. package/docs/bundler/vs-esbuild.md +0 -1127
  50. package/docs/cli/add.md +0 -173
  51. package/docs/cli/bun-completions.md +0 -3
  52. package/docs/cli/bun-create.md +0 -338
  53. package/docs/cli/bun-install.md +0 -349
  54. package/docs/cli/bun-upgrade.md +0 -39
  55. package/docs/cli/bunx.md +0 -89
  56. package/docs/cli/filter.md +0 -90
  57. package/docs/cli/info.md +0 -65
  58. package/docs/cli/init.md +0 -85
  59. package/docs/cli/install.md +0 -344
  60. package/docs/cli/link.md +0 -40
  61. package/docs/cli/outdated.md +0 -90
  62. package/docs/cli/patch-commit.md +0 -11
  63. package/docs/cli/pm.md +0 -285
  64. package/docs/cli/publish.md +0 -120
  65. package/docs/cli/remove.md +0 -7
  66. package/docs/cli/run.md +0 -261
  67. package/docs/cli/test.md +0 -397
  68. package/docs/cli/unlink.md +0 -9
  69. package/docs/cli/update.md +0 -129
  70. package/docs/cli/why.md +0 -67
  71. package/docs/contributing/upgrading-webkit.md +0 -57
  72. package/docs/ecosystem/elysia.md +0 -24
  73. package/docs/ecosystem/express.md +0 -37
  74. package/docs/ecosystem/hono.md +0 -18
  75. package/docs/ecosystem/react.md +0 -65
  76. package/docs/ecosystem/stric.md +0 -38
  77. package/docs/guides/binary/arraybuffer-to-array.md +0 -27
  78. package/docs/guides/binary/arraybuffer-to-blob.md +0 -24
  79. package/docs/guides/binary/arraybuffer-to-buffer.md +0 -25
  80. package/docs/guides/binary/arraybuffer-to-string.md +0 -15
  81. package/docs/guides/binary/arraybuffer-to-typedarray.md +0 -39
  82. package/docs/guides/binary/blob-to-arraybuffer.md +0 -14
  83. package/docs/guides/binary/blob-to-dataview.md +0 -14
  84. package/docs/guides/binary/blob-to-stream.md +0 -14
  85. package/docs/guides/binary/blob-to-string.md +0 -15
  86. package/docs/guides/binary/blob-to-typedarray.md +0 -14
  87. package/docs/guides/binary/buffer-to-arraybuffer.md +0 -14
  88. package/docs/guides/binary/buffer-to-blob.md +0 -14
  89. package/docs/guides/binary/buffer-to-readablestream.md +0 -41
  90. package/docs/guides/binary/buffer-to-string.md +0 -25
  91. package/docs/guides/binary/buffer-to-typedarray.md +0 -14
  92. package/docs/guides/binary/dataview-to-string.md +0 -15
  93. package/docs/guides/binary/typedarray-to-arraybuffer.md +0 -25
  94. package/docs/guides/binary/typedarray-to-blob.md +0 -16
  95. package/docs/guides/binary/typedarray-to-buffer.md +0 -14
  96. package/docs/guides/binary/typedarray-to-dataview.md +0 -14
  97. package/docs/guides/binary/typedarray-to-readablestream.md +0 -41
  98. package/docs/guides/binary/typedarray-to-string.md +0 -16
  99. package/docs/guides/deployment/railway.md +0 -157
  100. package/docs/guides/ecosystem/astro.md +0 -72
  101. package/docs/guides/ecosystem/discordjs.md +0 -77
  102. package/docs/guides/ecosystem/docker.md +0 -140
  103. package/docs/guides/ecosystem/drizzle.md +0 -185
  104. package/docs/guides/ecosystem/edgedb.md +0 -228
  105. package/docs/guides/ecosystem/elysia.md +0 -31
  106. package/docs/guides/ecosystem/express.md +0 -40
  107. package/docs/guides/ecosystem/hono.md +0 -39
  108. package/docs/guides/ecosystem/mongoose.md +0 -87
  109. package/docs/guides/ecosystem/neon-drizzle.md +0 -220
  110. package/docs/guides/ecosystem/neon-serverless-postgres.md +0 -55
  111. package/docs/guides/ecosystem/nextjs.md +0 -49
  112. package/docs/guides/ecosystem/nuxt.md +0 -56
  113. package/docs/guides/ecosystem/pm2.md +0 -57
  114. package/docs/guides/ecosystem/prisma.md +0 -141
  115. package/docs/guides/ecosystem/qwik.md +0 -107
  116. package/docs/guides/ecosystem/react.md +0 -50
  117. package/docs/guides/ecosystem/remix.md +0 -78
  118. package/docs/guides/ecosystem/render.md +0 -79
  119. package/docs/guides/ecosystem/sentry.md +0 -52
  120. package/docs/guides/ecosystem/solidstart.md +0 -58
  121. package/docs/guides/ecosystem/ssr-react.md +0 -51
  122. package/docs/guides/ecosystem/stric.md +0 -55
  123. package/docs/guides/ecosystem/sveltekit.md +0 -125
  124. package/docs/guides/ecosystem/systemd.md +0 -113
  125. package/docs/guides/ecosystem/vite.md +0 -71
  126. package/docs/guides/html-rewriter/extract-links.md +0 -68
  127. package/docs/guides/html-rewriter/extract-social-meta.md +0 -93
  128. package/docs/guides/http/cluster.md +0 -66
  129. package/docs/guides/http/fetch-unix.md +0 -33
  130. package/docs/guides/http/fetch.md +0 -24
  131. package/docs/guides/http/file-uploads.md +0 -94
  132. package/docs/guides/http/hot.md +0 -26
  133. package/docs/guides/http/proxy.md +0 -24
  134. package/docs/guides/http/server.md +0 -46
  135. package/docs/guides/http/simple.md +0 -18
  136. package/docs/guides/http/stream-file.md +0 -48
  137. package/docs/guides/http/stream-iterator.md +0 -47
  138. package/docs/guides/http/stream-node-streams-in-bun.md +0 -20
  139. package/docs/guides/http/tls.md +0 -30
  140. package/docs/guides/install/add-dev.md +0 -26
  141. package/docs/guides/install/add-git.md +0 -36
  142. package/docs/guides/install/add-optional.md +0 -25
  143. package/docs/guides/install/add-peer.md +0 -43
  144. package/docs/guides/install/add-tarball.md +0 -33
  145. package/docs/guides/install/add.md +0 -42
  146. package/docs/guides/install/azure-artifacts.md +0 -73
  147. package/docs/guides/install/cicd.md +0 -41
  148. package/docs/guides/install/custom-registry.md +0 -30
  149. package/docs/guides/install/from-npm-install-to-bun-install.md +0 -214
  150. package/docs/guides/install/git-diff-bun-lockfile.md +0 -44
  151. package/docs/guides/install/jfrog-artifactory.md +0 -28
  152. package/docs/guides/install/npm-alias.md +0 -23
  153. package/docs/guides/install/registry-scope.md +0 -38
  154. package/docs/guides/install/trusted.md +0 -46
  155. package/docs/guides/install/workspaces.md +0 -70
  156. package/docs/guides/install/yarnlock.md +0 -44
  157. package/docs/guides/process/argv.md +0 -58
  158. package/docs/guides/process/ctrl-c.md +0 -16
  159. package/docs/guides/process/ipc.md +0 -66
  160. package/docs/guides/process/nanoseconds.md +0 -13
  161. package/docs/guides/process/os-signals.md +0 -39
  162. package/docs/guides/process/spawn-stderr.md +0 -31
  163. package/docs/guides/process/spawn-stdout.md +0 -26
  164. package/docs/guides/process/spawn.md +0 -41
  165. package/docs/guides/process/stdin.md +0 -54
  166. package/docs/guides/read-file/arraybuffer.md +0 -28
  167. package/docs/guides/read-file/buffer.md +0 -19
  168. package/docs/guides/read-file/exists.md +0 -16
  169. package/docs/guides/read-file/json.md +0 -17
  170. package/docs/guides/read-file/mime.md +0 -20
  171. package/docs/guides/read-file/stream.md +0 -26
  172. package/docs/guides/read-file/string.md +0 -22
  173. package/docs/guides/read-file/uint8array.md +0 -21
  174. package/docs/guides/read-file/watch.md +0 -68
  175. package/docs/guides/runtime/build-time-constants.md +0 -293
  176. package/docs/guides/runtime/cicd.md +0 -43
  177. package/docs/guides/runtime/codesign-macos-executable.md +0 -56
  178. package/docs/guides/runtime/define-constant.md +0 -145
  179. package/docs/guides/runtime/delete-directory.md +0 -37
  180. package/docs/guides/runtime/delete-file.md +0 -19
  181. package/docs/guides/runtime/heap-snapshot.md +0 -26
  182. package/docs/guides/runtime/import-html.md +0 -15
  183. package/docs/guides/runtime/import-json.md +0 -44
  184. package/docs/guides/runtime/import-toml.md +0 -30
  185. package/docs/guides/runtime/import-yaml.md +0 -102
  186. package/docs/guides/runtime/read-env.md +0 -32
  187. package/docs/guides/runtime/set-env.md +0 -47
  188. package/docs/guides/runtime/shell.md +0 -40
  189. package/docs/guides/runtime/timezone.md +0 -35
  190. package/docs/guides/runtime/tsconfig-paths.md +0 -29
  191. package/docs/guides/runtime/typescript.md +0 -49
  192. package/docs/guides/runtime/vscode-debugger.md +0 -47
  193. package/docs/guides/runtime/web-debugger.md +0 -82
  194. package/docs/guides/streams/node-readable-to-arraybuffer.md +0 -11
  195. package/docs/guides/streams/node-readable-to-blob.md +0 -11
  196. package/docs/guides/streams/node-readable-to-json.md +0 -12
  197. package/docs/guides/streams/node-readable-to-string.md +0 -12
  198. package/docs/guides/streams/node-readable-to-uint8array.md +0 -11
  199. package/docs/guides/streams/to-array.md +0 -14
  200. package/docs/guides/streams/to-arraybuffer.md +0 -14
  201. package/docs/guides/streams/to-blob.md +0 -14
  202. package/docs/guides/streams/to-buffer.md +0 -15
  203. package/docs/guides/streams/to-json.md +0 -14
  204. package/docs/guides/streams/to-string.md +0 -14
  205. package/docs/guides/streams/to-typedarray.md +0 -22
  206. package/docs/guides/test/bail.md +0 -22
  207. package/docs/guides/test/coverage-threshold.md +0 -60
  208. package/docs/guides/test/coverage.md +0 -44
  209. package/docs/guides/test/happy-dom.md +0 -68
  210. package/docs/guides/test/migrate-from-jest.md +0 -143
  211. package/docs/guides/test/mock-clock.md +0 -48
  212. package/docs/guides/test/mock-functions.md +0 -68
  213. package/docs/guides/test/rerun-each.md +0 -14
  214. package/docs/guides/test/run-tests.md +0 -111
  215. package/docs/guides/test/skip-tests.md +0 -39
  216. package/docs/guides/test/snapshot.md +0 -95
  217. package/docs/guides/test/spy-on.md +0 -46
  218. package/docs/guides/test/svelte-test.md +0 -120
  219. package/docs/guides/test/testing-library.md +0 -92
  220. package/docs/guides/test/timeout.md +0 -15
  221. package/docs/guides/test/todo-tests.md +0 -67
  222. package/docs/guides/test/update-snapshots.md +0 -46
  223. package/docs/guides/test/watch-mode.md +0 -19
  224. package/docs/guides/util/base64.md +0 -15
  225. package/docs/guides/util/deep-equals.md +0 -39
  226. package/docs/guides/util/deflate.md +0 -18
  227. package/docs/guides/util/detect-bun.md +0 -23
  228. package/docs/guides/util/entrypoint.md +0 -17
  229. package/docs/guides/util/escape-html.md +0 -22
  230. package/docs/guides/util/file-url-to-path.md +0 -14
  231. package/docs/guides/util/gzip.md +0 -18
  232. package/docs/guides/util/hash-a-password.md +0 -54
  233. package/docs/guides/util/import-meta-dir.md +0 -13
  234. package/docs/guides/util/import-meta-file.md +0 -13
  235. package/docs/guides/util/import-meta-path.md +0 -13
  236. package/docs/guides/util/javascript-uuid.md +0 -23
  237. package/docs/guides/util/main.md +0 -32
  238. package/docs/guides/util/path-to-file-url.md +0 -14
  239. package/docs/guides/util/sleep.md +0 -22
  240. package/docs/guides/util/version.md +0 -21
  241. package/docs/guides/util/which-path-to-executable-bin.md +0 -15
  242. package/docs/guides/websocket/compression.md +0 -31
  243. package/docs/guides/websocket/context.md +0 -77
  244. package/docs/guides/websocket/pubsub.md +0 -41
  245. package/docs/guides/websocket/simple.md +0 -33
  246. package/docs/guides/write-file/append.md +0 -52
  247. package/docs/guides/write-file/basic.md +0 -44
  248. package/docs/guides/write-file/blob.md +0 -28
  249. package/docs/guides/write-file/cat.md +0 -17
  250. package/docs/guides/write-file/file-cp.md +0 -16
  251. package/docs/guides/write-file/filesink.md +0 -52
  252. package/docs/guides/write-file/response.md +0 -17
  253. package/docs/guides/write-file/stdout.md +0 -21
  254. package/docs/guides/write-file/stream.md +0 -17
  255. package/docs/guides/write-file/unlink.md +0 -16
  256. package/docs/index.md +0 -77
  257. package/docs/install/audit.md +0 -57
  258. package/docs/install/cache.md +0 -59
  259. package/docs/install/catalogs.md +0 -298
  260. package/docs/install/index.md +0 -248
  261. package/docs/install/isolated.md +0 -197
  262. package/docs/install/lifecycle.md +0 -46
  263. package/docs/install/lockfile.md +0 -58
  264. package/docs/install/npmrc.md +0 -105
  265. package/docs/install/overrides.md +0 -73
  266. package/docs/install/patch.md +0 -59
  267. package/docs/install/registries.md +0 -30
  268. package/docs/install/security-scanner-api.md +0 -81
  269. package/docs/install/workspaces.md +0 -114
  270. package/docs/installation.md +0 -327
  271. package/docs/project/asan.md +0 -124
  272. package/docs/project/benchmarking.md +0 -203
  273. package/docs/project/bindgen.md +0 -225
  274. package/docs/project/building-windows.md +0 -162
  275. package/docs/project/contributing.md +0 -347
  276. package/docs/project/internals/build-process-for-ci.md +0 -75
  277. package/docs/project/licensing.md +0 -73
  278. package/docs/project/roadmap.md +0 -87
  279. package/docs/quickstart.md +0 -157
  280. package/docs/runtime/autoimport.md +0 -94
  281. package/docs/runtime/bun-apis.md +0 -207
  282. package/docs/runtime/bunfig.md +0 -772
  283. package/docs/runtime/debugger.md +0 -325
  284. package/docs/runtime/env.md +0 -253
  285. package/docs/runtime/hot.md +0 -145
  286. package/docs/runtime/index.md +0 -312
  287. package/docs/runtime/jsx.md +0 -385
  288. package/docs/runtime/loaders.md +0 -130
  289. package/docs/runtime/modules.md +0 -320
  290. package/docs/runtime/nodejs-apis.md +0 -463
  291. package/docs/runtime/plugins.md +0 -561
  292. package/docs/runtime/shell.md +0 -605
  293. package/docs/runtime/typescript.md +0 -139
  294. package/docs/runtime/web-apis.md +0 -128
  295. package/docs/test/configuration.md +0 -154
  296. package/docs/test/coverage.md +0 -142
  297. package/docs/test/discovery.md +0 -85
  298. package/docs/test/dom.md +0 -75
  299. package/docs/test/examples/concurrent-test-glob.md +0 -132
  300. package/docs/test/hot.md +0 -15
  301. package/docs/test/lifecycle.md +0 -81
  302. package/docs/test/mocks.md +0 -313
  303. package/docs/test/reporters.md +0 -117
  304. package/docs/test/runtime-behavior.md +0 -95
  305. package/docs/test/snapshots.md +0 -68
  306. package/docs/test/time.md +0 -126
  307. package/docs/test/writing.md +0 -825
  308. package/docs/typescript.md +0 -53
@@ -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
- ```
@@ -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 &amp; 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. -->