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.
Files changed (312) hide show
  1. package/bun.d.ts +4 -4
  2. package/docs/README.md +28 -0
  3. package/globals.d.ts +0 -1
  4. package/overrides.d.ts +45 -15
  5. package/package.json +1 -1
  6. package/test.d.ts +1 -1
  7. package/docs/api/binary-data.md +0 -1038
  8. package/docs/api/cc.md +0 -197
  9. package/docs/api/color.md +0 -262
  10. package/docs/api/console.md +0 -57
  11. package/docs/api/cookie.md +0 -449
  12. package/docs/api/dns.md +0 -110
  13. package/docs/api/fetch.md +0 -463
  14. package/docs/api/ffi.md +0 -557
  15. package/docs/api/file-io.md +0 -366
  16. package/docs/api/file-system-router.md +0 -112
  17. package/docs/api/file.md +0 -19
  18. package/docs/api/glob.md +0 -178
  19. package/docs/api/globals.md +0 -387
  20. package/docs/api/hashing.md +0 -319
  21. package/docs/api/html-rewriter.md +0 -334
  22. package/docs/api/http.md +0 -1408
  23. package/docs/api/import-meta.md +0 -69
  24. package/docs/api/node-api.md +0 -14
  25. package/docs/api/redis.md +0 -597
  26. package/docs/api/s3.md +0 -850
  27. package/docs/api/secrets.md +0 -319
  28. package/docs/api/semver.md +0 -52
  29. package/docs/api/spawn.md +0 -582
  30. package/docs/api/sql.md +0 -1374
  31. package/docs/api/sqlite.md +0 -694
  32. package/docs/api/streams.md +0 -230
  33. package/docs/api/tcp.md +0 -221
  34. package/docs/api/transpiler.md +0 -276
  35. package/docs/api/udp.md +0 -123
  36. package/docs/api/utils.md +0 -891
  37. package/docs/api/websockets.md +0 -573
  38. package/docs/api/workers.md +0 -322
  39. package/docs/api/yaml.md +0 -668
  40. package/docs/benchmarks.md +0 -120
  41. package/docs/bun-flavored-toml.md +0 -42
  42. package/docs/bundler/css.md +0 -1028
  43. package/docs/bundler/css_modules.md +0 -145
  44. package/docs/bundler/executables.md +0 -626
  45. package/docs/bundler/fullstack.md +0 -418
  46. package/docs/bundler/hmr.md +0 -234
  47. package/docs/bundler/html.md +0 -349
  48. package/docs/bundler/index.md +0 -1735
  49. package/docs/bundler/intro.md +0 -75
  50. package/docs/bundler/loaders.md +0 -410
  51. package/docs/bundler/macros.md +0 -329
  52. package/docs/bundler/plugins.md +0 -449
  53. package/docs/bundler/vs-esbuild.md +0 -1127
  54. package/docs/cli/add.md +0 -173
  55. package/docs/cli/bun-completions.md +0 -3
  56. package/docs/cli/bun-create.md +0 -338
  57. package/docs/cli/bun-install.md +0 -349
  58. package/docs/cli/bun-upgrade.md +0 -39
  59. package/docs/cli/bunx.md +0 -89
  60. package/docs/cli/filter.md +0 -90
  61. package/docs/cli/info.md +0 -65
  62. package/docs/cli/init.md +0 -85
  63. package/docs/cli/install.md +0 -344
  64. package/docs/cli/link.md +0 -40
  65. package/docs/cli/outdated.md +0 -90
  66. package/docs/cli/patch-commit.md +0 -11
  67. package/docs/cli/pm.md +0 -285
  68. package/docs/cli/publish.md +0 -120
  69. package/docs/cli/remove.md +0 -7
  70. package/docs/cli/run.md +0 -261
  71. package/docs/cli/test.md +0 -397
  72. package/docs/cli/unlink.md +0 -9
  73. package/docs/cli/update.md +0 -129
  74. package/docs/cli/why.md +0 -67
  75. package/docs/contributing/upgrading-webkit.md +0 -57
  76. package/docs/ecosystem/elysia.md +0 -24
  77. package/docs/ecosystem/express.md +0 -37
  78. package/docs/ecosystem/hono.md +0 -18
  79. package/docs/ecosystem/react.md +0 -65
  80. package/docs/ecosystem/stric.md +0 -38
  81. package/docs/guides/binary/arraybuffer-to-array.md +0 -27
  82. package/docs/guides/binary/arraybuffer-to-blob.md +0 -24
  83. package/docs/guides/binary/arraybuffer-to-buffer.md +0 -25
  84. package/docs/guides/binary/arraybuffer-to-string.md +0 -15
  85. package/docs/guides/binary/arraybuffer-to-typedarray.md +0 -39
  86. package/docs/guides/binary/blob-to-arraybuffer.md +0 -14
  87. package/docs/guides/binary/blob-to-dataview.md +0 -14
  88. package/docs/guides/binary/blob-to-stream.md +0 -14
  89. package/docs/guides/binary/blob-to-string.md +0 -15
  90. package/docs/guides/binary/blob-to-typedarray.md +0 -14
  91. package/docs/guides/binary/buffer-to-arraybuffer.md +0 -14
  92. package/docs/guides/binary/buffer-to-blob.md +0 -14
  93. package/docs/guides/binary/buffer-to-readablestream.md +0 -41
  94. package/docs/guides/binary/buffer-to-string.md +0 -25
  95. package/docs/guides/binary/buffer-to-typedarray.md +0 -14
  96. package/docs/guides/binary/dataview-to-string.md +0 -15
  97. package/docs/guides/binary/typedarray-to-arraybuffer.md +0 -25
  98. package/docs/guides/binary/typedarray-to-blob.md +0 -16
  99. package/docs/guides/binary/typedarray-to-buffer.md +0 -14
  100. package/docs/guides/binary/typedarray-to-dataview.md +0 -14
  101. package/docs/guides/binary/typedarray-to-readablestream.md +0 -41
  102. package/docs/guides/binary/typedarray-to-string.md +0 -16
  103. package/docs/guides/deployment/railway.md +0 -157
  104. package/docs/guides/ecosystem/astro.md +0 -72
  105. package/docs/guides/ecosystem/discordjs.md +0 -77
  106. package/docs/guides/ecosystem/docker.md +0 -140
  107. package/docs/guides/ecosystem/drizzle.md +0 -185
  108. package/docs/guides/ecosystem/edgedb.md +0 -228
  109. package/docs/guides/ecosystem/elysia.md +0 -31
  110. package/docs/guides/ecosystem/express.md +0 -40
  111. package/docs/guides/ecosystem/hono.md +0 -39
  112. package/docs/guides/ecosystem/mongoose.md +0 -87
  113. package/docs/guides/ecosystem/neon-drizzle.md +0 -220
  114. package/docs/guides/ecosystem/neon-serverless-postgres.md +0 -55
  115. package/docs/guides/ecosystem/nextjs.md +0 -49
  116. package/docs/guides/ecosystem/nuxt.md +0 -56
  117. package/docs/guides/ecosystem/pm2.md +0 -57
  118. package/docs/guides/ecosystem/prisma.md +0 -141
  119. package/docs/guides/ecosystem/qwik.md +0 -107
  120. package/docs/guides/ecosystem/react.md +0 -50
  121. package/docs/guides/ecosystem/remix.md +0 -78
  122. package/docs/guides/ecosystem/render.md +0 -79
  123. package/docs/guides/ecosystem/sentry.md +0 -52
  124. package/docs/guides/ecosystem/solidstart.md +0 -58
  125. package/docs/guides/ecosystem/ssr-react.md +0 -51
  126. package/docs/guides/ecosystem/stric.md +0 -55
  127. package/docs/guides/ecosystem/sveltekit.md +0 -125
  128. package/docs/guides/ecosystem/systemd.md +0 -113
  129. package/docs/guides/ecosystem/vite.md +0 -71
  130. package/docs/guides/html-rewriter/extract-links.md +0 -68
  131. package/docs/guides/html-rewriter/extract-social-meta.md +0 -93
  132. package/docs/guides/http/cluster.md +0 -66
  133. package/docs/guides/http/fetch-unix.md +0 -33
  134. package/docs/guides/http/fetch.md +0 -24
  135. package/docs/guides/http/file-uploads.md +0 -94
  136. package/docs/guides/http/hot.md +0 -26
  137. package/docs/guides/http/proxy.md +0 -24
  138. package/docs/guides/http/server.md +0 -46
  139. package/docs/guides/http/simple.md +0 -18
  140. package/docs/guides/http/stream-file.md +0 -48
  141. package/docs/guides/http/stream-iterator.md +0 -47
  142. package/docs/guides/http/stream-node-streams-in-bun.md +0 -20
  143. package/docs/guides/http/tls.md +0 -30
  144. package/docs/guides/install/add-dev.md +0 -26
  145. package/docs/guides/install/add-git.md +0 -36
  146. package/docs/guides/install/add-optional.md +0 -25
  147. package/docs/guides/install/add-peer.md +0 -43
  148. package/docs/guides/install/add-tarball.md +0 -33
  149. package/docs/guides/install/add.md +0 -42
  150. package/docs/guides/install/azure-artifacts.md +0 -73
  151. package/docs/guides/install/cicd.md +0 -41
  152. package/docs/guides/install/custom-registry.md +0 -30
  153. package/docs/guides/install/from-npm-install-to-bun-install.md +0 -214
  154. package/docs/guides/install/git-diff-bun-lockfile.md +0 -44
  155. package/docs/guides/install/jfrog-artifactory.md +0 -28
  156. package/docs/guides/install/npm-alias.md +0 -23
  157. package/docs/guides/install/registry-scope.md +0 -38
  158. package/docs/guides/install/trusted.md +0 -46
  159. package/docs/guides/install/workspaces.md +0 -70
  160. package/docs/guides/install/yarnlock.md +0 -44
  161. package/docs/guides/process/argv.md +0 -58
  162. package/docs/guides/process/ctrl-c.md +0 -16
  163. package/docs/guides/process/ipc.md +0 -66
  164. package/docs/guides/process/nanoseconds.md +0 -13
  165. package/docs/guides/process/os-signals.md +0 -39
  166. package/docs/guides/process/spawn-stderr.md +0 -31
  167. package/docs/guides/process/spawn-stdout.md +0 -26
  168. package/docs/guides/process/spawn.md +0 -41
  169. package/docs/guides/process/stdin.md +0 -54
  170. package/docs/guides/read-file/arraybuffer.md +0 -28
  171. package/docs/guides/read-file/buffer.md +0 -19
  172. package/docs/guides/read-file/exists.md +0 -16
  173. package/docs/guides/read-file/json.md +0 -17
  174. package/docs/guides/read-file/mime.md +0 -20
  175. package/docs/guides/read-file/stream.md +0 -26
  176. package/docs/guides/read-file/string.md +0 -22
  177. package/docs/guides/read-file/uint8array.md +0 -21
  178. package/docs/guides/read-file/watch.md +0 -68
  179. package/docs/guides/runtime/build-time-constants.md +0 -293
  180. package/docs/guides/runtime/cicd.md +0 -43
  181. package/docs/guides/runtime/codesign-macos-executable.md +0 -56
  182. package/docs/guides/runtime/define-constant.md +0 -145
  183. package/docs/guides/runtime/delete-directory.md +0 -37
  184. package/docs/guides/runtime/delete-file.md +0 -19
  185. package/docs/guides/runtime/heap-snapshot.md +0 -26
  186. package/docs/guides/runtime/import-html.md +0 -15
  187. package/docs/guides/runtime/import-json.md +0 -44
  188. package/docs/guides/runtime/import-toml.md +0 -30
  189. package/docs/guides/runtime/import-yaml.md +0 -102
  190. package/docs/guides/runtime/read-env.md +0 -32
  191. package/docs/guides/runtime/set-env.md +0 -47
  192. package/docs/guides/runtime/shell.md +0 -40
  193. package/docs/guides/runtime/timezone.md +0 -35
  194. package/docs/guides/runtime/tsconfig-paths.md +0 -29
  195. package/docs/guides/runtime/typescript.md +0 -49
  196. package/docs/guides/runtime/vscode-debugger.md +0 -47
  197. package/docs/guides/runtime/web-debugger.md +0 -82
  198. package/docs/guides/streams/node-readable-to-arraybuffer.md +0 -11
  199. package/docs/guides/streams/node-readable-to-blob.md +0 -11
  200. package/docs/guides/streams/node-readable-to-json.md +0 -12
  201. package/docs/guides/streams/node-readable-to-string.md +0 -12
  202. package/docs/guides/streams/node-readable-to-uint8array.md +0 -11
  203. package/docs/guides/streams/to-array.md +0 -14
  204. package/docs/guides/streams/to-arraybuffer.md +0 -14
  205. package/docs/guides/streams/to-blob.md +0 -14
  206. package/docs/guides/streams/to-buffer.md +0 -15
  207. package/docs/guides/streams/to-json.md +0 -14
  208. package/docs/guides/streams/to-string.md +0 -14
  209. package/docs/guides/streams/to-typedarray.md +0 -22
  210. package/docs/guides/test/bail.md +0 -22
  211. package/docs/guides/test/coverage-threshold.md +0 -60
  212. package/docs/guides/test/coverage.md +0 -44
  213. package/docs/guides/test/happy-dom.md +0 -68
  214. package/docs/guides/test/migrate-from-jest.md +0 -143
  215. package/docs/guides/test/mock-clock.md +0 -48
  216. package/docs/guides/test/mock-functions.md +0 -68
  217. package/docs/guides/test/rerun-each.md +0 -14
  218. package/docs/guides/test/run-tests.md +0 -111
  219. package/docs/guides/test/skip-tests.md +0 -39
  220. package/docs/guides/test/snapshot.md +0 -95
  221. package/docs/guides/test/spy-on.md +0 -46
  222. package/docs/guides/test/svelte-test.md +0 -120
  223. package/docs/guides/test/testing-library.md +0 -92
  224. package/docs/guides/test/timeout.md +0 -15
  225. package/docs/guides/test/todo-tests.md +0 -67
  226. package/docs/guides/test/update-snapshots.md +0 -46
  227. package/docs/guides/test/watch-mode.md +0 -19
  228. package/docs/guides/util/base64.md +0 -15
  229. package/docs/guides/util/deep-equals.md +0 -39
  230. package/docs/guides/util/deflate.md +0 -18
  231. package/docs/guides/util/detect-bun.md +0 -23
  232. package/docs/guides/util/entrypoint.md +0 -17
  233. package/docs/guides/util/escape-html.md +0 -22
  234. package/docs/guides/util/file-url-to-path.md +0 -14
  235. package/docs/guides/util/gzip.md +0 -18
  236. package/docs/guides/util/hash-a-password.md +0 -54
  237. package/docs/guides/util/import-meta-dir.md +0 -13
  238. package/docs/guides/util/import-meta-file.md +0 -13
  239. package/docs/guides/util/import-meta-path.md +0 -13
  240. package/docs/guides/util/javascript-uuid.md +0 -23
  241. package/docs/guides/util/main.md +0 -32
  242. package/docs/guides/util/path-to-file-url.md +0 -14
  243. package/docs/guides/util/sleep.md +0 -22
  244. package/docs/guides/util/version.md +0 -21
  245. package/docs/guides/util/which-path-to-executable-bin.md +0 -15
  246. package/docs/guides/websocket/compression.md +0 -31
  247. package/docs/guides/websocket/context.md +0 -77
  248. package/docs/guides/websocket/pubsub.md +0 -41
  249. package/docs/guides/websocket/simple.md +0 -33
  250. package/docs/guides/write-file/append.md +0 -52
  251. package/docs/guides/write-file/basic.md +0 -44
  252. package/docs/guides/write-file/blob.md +0 -28
  253. package/docs/guides/write-file/cat.md +0 -17
  254. package/docs/guides/write-file/file-cp.md +0 -16
  255. package/docs/guides/write-file/filesink.md +0 -52
  256. package/docs/guides/write-file/response.md +0 -17
  257. package/docs/guides/write-file/stdout.md +0 -21
  258. package/docs/guides/write-file/stream.md +0 -17
  259. package/docs/guides/write-file/unlink.md +0 -16
  260. package/docs/index.md +0 -77
  261. package/docs/install/audit.md +0 -57
  262. package/docs/install/cache.md +0 -59
  263. package/docs/install/catalogs.md +0 -298
  264. package/docs/install/index.md +0 -248
  265. package/docs/install/isolated.md +0 -197
  266. package/docs/install/lifecycle.md +0 -46
  267. package/docs/install/lockfile.md +0 -58
  268. package/docs/install/npmrc.md +0 -105
  269. package/docs/install/overrides.md +0 -73
  270. package/docs/install/patch.md +0 -59
  271. package/docs/install/registries.md +0 -30
  272. package/docs/install/security-scanner-api.md +0 -81
  273. package/docs/install/workspaces.md +0 -114
  274. package/docs/installation.md +0 -327
  275. package/docs/project/asan.md +0 -124
  276. package/docs/project/benchmarking.md +0 -203
  277. package/docs/project/bindgen.md +0 -225
  278. package/docs/project/building-windows.md +0 -162
  279. package/docs/project/contributing.md +0 -347
  280. package/docs/project/internals/build-process-for-ci.md +0 -75
  281. package/docs/project/licensing.md +0 -73
  282. package/docs/project/roadmap.md +0 -87
  283. package/docs/quickstart.md +0 -157
  284. package/docs/runtime/autoimport.md +0 -94
  285. package/docs/runtime/bun-apis.md +0 -207
  286. package/docs/runtime/bunfig.md +0 -772
  287. package/docs/runtime/debugger.md +0 -325
  288. package/docs/runtime/env.md +0 -253
  289. package/docs/runtime/hot.md +0 -145
  290. package/docs/runtime/index.md +0 -312
  291. package/docs/runtime/jsx.md +0 -385
  292. package/docs/runtime/loaders.md +0 -130
  293. package/docs/runtime/modules.md +0 -320
  294. package/docs/runtime/nodejs-apis.md +0 -463
  295. package/docs/runtime/plugins.md +0 -561
  296. package/docs/runtime/shell.md +0 -605
  297. package/docs/runtime/typescript.md +0 -139
  298. package/docs/runtime/web-apis.md +0 -128
  299. package/docs/test/configuration.md +0 -154
  300. package/docs/test/coverage.md +0 -142
  301. package/docs/test/discovery.md +0 -85
  302. package/docs/test/dom.md +0 -75
  303. package/docs/test/examples/concurrent-test-glob.md +0 -132
  304. package/docs/test/hot.md +0 -15
  305. package/docs/test/lifecycle.md +0 -81
  306. package/docs/test/mocks.md +0 -313
  307. package/docs/test/reporters.md +0 -117
  308. package/docs/test/runtime-behavior.md +0 -95
  309. package/docs/test/snapshots.md +0 -68
  310. package/docs/test/time.md +0 -126
  311. package/docs/test/writing.md +0 -825
  312. package/docs/typescript.md +0 -53
@@ -1,75 +0,0 @@
1
- <!-- This document is a work in progress. It's not currently included in the actual docs. -->
2
-
3
- The goal of this document is to break down why bundling is necessary, how it works, and how the bundler became such a key part of modern JavaScript development. The content is not specific to Bun's bundler, but is rather aimed at anyone looking for a greater understanding of how bundlers work and, by extension, how most modern frameworks are implemented.
4
-
5
- ## What is bundling
6
-
7
- With the adoption of ECMAScript modules (ESM), browsers can now resolve `import`/`export` statements in JavaScript files loaded via `<script>` tags.
8
-
9
- {% codetabs %}
10
-
11
- ```html#index.html
12
- <html>
13
- <head>
14
- <script type="module" src="/index.js" ></script>
15
- </head>
16
- </html>
17
- ```
18
-
19
- ```js#index.js
20
- import {sayHello} from "./hello.js";
21
-
22
- sayHello();
23
- ```
24
-
25
- ```js#hello.js
26
- export function sayHello() {
27
- console.log("Hello, world!");
28
- }
29
- ```
30
-
31
- {% /codetabs %}
32
-
33
- When a user visits this website, the files are loaded in the following order:
34
-
35
- {% image src="/images/module_loading_unbundled.png" /%}
36
-
37
- {% callout %}
38
- **Relative imports** — Relative imports are resolved relative to the URL of the importing file. Because we're importing `./hello.js` from `/index.js`, the browser resolves it to `/hello.js`. If instead we'd imported `./hello.js` from `/src/index.js`, the browser would have resolved it to `/src/hello.js`.
39
- {% /callout %}
40
-
41
- This approach works, it requires three round-trip HTTP requests before the browser is ready to render the page. On slow internet connections, this may add up to a non-trivial delay.
42
-
43
- This example is extremely simplistic. A modern app may be loading dozens of modules from `node_modules`, each consisting of hundred of files. Loading each of these files with a separate HTTP request becomes untenable very quickly. While most of these requests will be running in parallel, the number of round-trip requests can still be very high; plus, there are limits on how many simultaneous requests a browser can make.
44
-
45
- {% callout %}
46
- Some recent advances like modulepreload and HTTP/3 are intended to solve some of these problems, but at the moment bundling is still the most performant approach.
47
- {% /callout %}
48
-
49
- The answer: bundling.
50
-
51
- ## Entrypoints
52
-
53
- A bundler accepts an "entrypoint" to your source code (in this case, `/index.js`) and outputs a single file containing all of the code needed to run your app. If does so by parsing your source code, reading the `import`/`export` statements, and building a "module graph" of your app's dependencies.
54
-
55
- {% image src="/images/bundling.png" /%}
56
-
57
- We can now load `/bundle.js` from our `index.html` file and eliminate a round trip request, decreasing load times for our app.
58
-
59
- {% image src="/images/module_loading_bundled.png" /%}
60
-
61
- ## Loaders
62
-
63
- Bundlers typically have some set of built-in "loaders".
64
-
65
- ## Transpilation
66
-
67
- The JavaScript files above are just that: plain JavaScript. They can be directly executed by any modern browser.
68
-
69
- But modern tooling goes far beyond HTML, JavaScript, and CSS. JSX, TypeScript, and PostCSS/CSS-in-JS are all popular technologies that involve non-standard syntax that must be converted into vanilla JavaScript and CSS before if can be consumed by a browser.
70
-
71
- ## Chunking
72
-
73
- ## Module resolution
74
-
75
- ## Plugins
@@ -1,410 +0,0 @@
1
- The Bun bundler implements a set of default loaders out of the box. As a rule of thumb, the bundler and the runtime both support the same set of file types out of the box.
2
-
3
- `.js` `.cjs` `.mjs` `.mts` `.cts` `.ts` `.tsx` `.jsx` `.toml` `.json` `.yaml` `.yml` `.txt` `.wasm` `.node` `.html`
4
-
5
- Bun uses the file extension to determine which built-in _loader_ should be used to parse the file. Every loader has a name, such as `js`, `tsx`, or `json`. These names are used when building [plugins](https://bun.com/docs/bundler/plugins) that extend Bun with custom loaders.
6
-
7
- You can explicitly specify which loader to use using the 'loader' import attribute.
8
-
9
- ```ts
10
- import my_toml from "./my_file" with { loader: "toml" };
11
- ```
12
-
13
- ## Built-in loaders
14
-
15
- ### `js`
16
-
17
- **JavaScript**. Default for `.cjs` and `.mjs`.
18
-
19
- Parses the code and applies a set of default transforms like dead-code elimination and tree shaking. Note that Bun does not attempt to down-convert syntax at the moment.
20
-
21
- ### `jsx`
22
-
23
- **JavaScript + JSX.**. Default for `.js` and `.jsx`.
24
-
25
- Same as the `js` loader, but JSX syntax is supported. By default, JSX is down-converted to plain JavaScript; the details of how this is done depends on the `jsx*` compiler options in your `tsconfig.json`. Refer to the TypeScript documentation [on JSX](https://www.typescriptlang.org/docs/handbook/jsx.html) for more information.
26
-
27
- ### `ts`
28
-
29
- **TypeScript loader**. Default for `.ts`, `.mts`, and `.cts`.
30
-
31
- Strips out all TypeScript syntax, then behaves identically to the `js` loader. Bun does not perform typechecking.
32
-
33
- ### `tsx`
34
-
35
- **TypeScript + JSX loader**. Default for `.tsx`. Transpiles both TypeScript and JSX to vanilla JavaScript.
36
-
37
- ### `json`
38
-
39
- **JSON loader**. Default for `.json`.
40
-
41
- JSON files can be directly imported.
42
-
43
- ```ts
44
- import pkg from "./package.json";
45
- pkg.name; // => "my-package"
46
- ```
47
-
48
- During bundling, the parsed JSON is inlined into the bundle as a JavaScript object.
49
-
50
- ```ts
51
- var pkg = {
52
- name: "my-package",
53
- // ... other fields
54
- };
55
- pkg.name;
56
- ```
57
-
58
- If a `.json` file is passed as an entrypoint to the bundler, it will be converted to a `.js` module that `export default`s the parsed object.
59
-
60
- {% codetabs %}
61
-
62
- ```json#Input
63
- {
64
- "name": "John Doe",
65
- "age": 35,
66
- "email": "johndoe@example.com"
67
- }
68
- ```
69
-
70
- ```js#Output
71
- export default {
72
- name: "John Doe",
73
- age: 35,
74
- email: "johndoe@example.com"
75
- }
76
- ```
77
-
78
- {% /codetabs %}
79
-
80
- ### `toml`
81
-
82
- **TOML loader**. Default for `.toml`.
83
-
84
- TOML files can be directly imported. Bun will parse them with its fast native TOML parser.
85
-
86
- ```ts
87
- import config from "./bunfig.toml";
88
- config.logLevel; // => "debug"
89
-
90
- // via import attribute:
91
- // import myCustomTOML from './my.config' with {type: "toml"};
92
- ```
93
-
94
- During bundling, the parsed TOML is inlined into the bundle as a JavaScript object.
95
-
96
- ```ts
97
- var config = {
98
- logLevel: "debug",
99
- // ...other fields
100
- };
101
- config.logLevel;
102
- ```
103
-
104
- If a `.toml` file is passed as an entrypoint, it will be converted to a `.js` module that `export default`s the parsed object.
105
-
106
- {% codetabs %}
107
-
108
- ```toml#Input
109
- name = "John Doe"
110
- age = 35
111
- email = "johndoe@example.com"
112
- ```
113
-
114
- ```js#Output
115
- export default {
116
- name: "John Doe",
117
- age: 35,
118
- email: "johndoe@example.com"
119
- }
120
- ```
121
-
122
- {% /codetabs %}
123
-
124
- ### `yaml`
125
-
126
- **YAML loader**. Default for `.yaml` and `.yml`.
127
-
128
- YAML files can be directly imported. Bun will parse them with its fast native YAML parser.
129
-
130
- ```ts
131
- import config from "./config.yaml";
132
- config.database.host; // => "localhost"
133
-
134
- // via import attribute:
135
- // import myCustomYAML from './my.config' with {type: "yaml"};
136
- ```
137
-
138
- During bundling, the parsed YAML is inlined into the bundle as a JavaScript object.
139
-
140
- ```ts
141
- var config = {
142
- database: {
143
- host: "localhost",
144
- port: 5432,
145
- },
146
- // ...other fields
147
- };
148
- config.database.host;
149
- ```
150
-
151
- If a `.yaml` or `.yml` file is passed as an entrypoint, it will be converted to a `.js` module that `export default`s the parsed object.
152
-
153
- {% codetabs %}
154
-
155
- ```yaml#Input
156
- name: John Doe
157
- age: 35
158
- email: johndoe@example.com
159
- ```
160
-
161
- ```js#Output
162
- export default {
163
- name: "John Doe",
164
- age: 35,
165
- email: "johndoe@example.com"
166
- }
167
- ```
168
-
169
- {% /codetabs %}
170
-
171
- For more details on YAML support including the runtime API `Bun.YAML.parse()`, see the [YAML API documentation](/docs/api/yaml).
172
-
173
- ### `text`
174
-
175
- **Text loader**. Default for `.txt`.
176
-
177
- The contents of the text file are read and inlined into the bundle as a string.
178
- Text files can be directly imported. The file is read and returned as a string.
179
-
180
- ```ts
181
- import contents from "./file.txt";
182
- console.log(contents); // => "Hello, world!"
183
-
184
- // To import an html file as text
185
- // The "type' attribute can be used to override the default loader.
186
- import html from "./index.html" with { type: "text" };
187
- ```
188
-
189
- When referenced during a build, the contents are inlined into the bundle as a string.
190
-
191
- ```ts
192
- var contents = `Hello, world!`;
193
- console.log(contents);
194
- ```
195
-
196
- If a `.txt` file is passed as an entrypoint, it will be converted to a `.js` module that `export default`s the file contents.
197
-
198
- {% codetabs %}
199
-
200
- ```txt#Input
201
- Hello, world!
202
- ```
203
-
204
- ```js#Output
205
- export default "Hello, world!";
206
- ```
207
-
208
- {% /codetabs %}
209
-
210
- ### `napi`
211
-
212
- **Native addon loader**. Default for `.node`.
213
-
214
- In the runtime, native addons can be directly imported.
215
-
216
- ```ts
217
- import addon from "./addon.node";
218
- console.log(addon);
219
- ```
220
-
221
- In the bundler, `.node` files are handled using the [`file`](#file) loader.
222
-
223
- ### `sqlite`
224
-
225
- **SQLite loader**. `with { "type": "sqlite" }` import attribute
226
-
227
- In the runtime and bundler, SQLite databases can be directly imported. This will load the database using [`bun:sqlite`](https://bun.com/docs/api/sqlite).
228
-
229
- ```ts
230
- import db from "./my.db" with { type: "sqlite" };
231
- ```
232
-
233
- This is only supported when the `target` is `bun`.
234
-
235
- By default, the database is external to the bundle (so that you can potentially use a database loaded elsewhere), so the database file on-disk won't be bundled into the final output.
236
-
237
- You can change this behavior with the `"embed"` attribute:
238
-
239
- ```ts
240
- // embed the database into the bundle
241
- import db from "./my.db" with { type: "sqlite", embed: "true" };
242
- ```
243
-
244
- When using a [standalone executable](https://bun.com/docs/bundler/executables), the database is embedded into the single-file executable.
245
-
246
- Otherwise, the database to embed is copied into the `outdir` with a hashed filename.
247
-
248
- ### `html`
249
-
250
- The html loader processes HTML files and bundles any referenced assets. It will:
251
-
252
- - Bundle and hash referenced JavaScript files (`<script src="...">`)
253
- - Bundle and hash referenced CSS files (`<link rel="stylesheet" href="...">`)
254
- - Hash referenced images (`<img src="...">`)
255
- - Preserve external URLs (by default, anything starting with `http://` or `https://`)
256
-
257
- For example, given this HTML file:
258
-
259
- {% codetabs %}
260
-
261
- ```html#src/index.html
262
- <!DOCTYPE html>
263
- <html>
264
- <body>
265
- <img src="./image.jpg" alt="Local image">
266
- <img src="https://example.com/image.jpg" alt="External image">
267
- <script type="module" src="./script.js"></script>
268
- </body>
269
- </html>
270
- ```
271
-
272
- {% /codetabs %}
273
-
274
- It will output a new HTML file with the bundled assets:
275
-
276
- {% codetabs %}
277
-
278
- ```html#dist/output.html
279
- <!DOCTYPE html>
280
- <html>
281
- <body>
282
- <img src="./image-HASHED.jpg" alt="Local image">
283
- <img src="https://example.com/image.jpg" alt="External image">
284
- <script type="module" src="./output-ALSO-HASHED.js"></script>
285
- </body>
286
- </html>
287
- ```
288
-
289
- {% /codetabs %}
290
-
291
- Under the hood, it uses [`lol-html`](https://github.com/cloudflare/lol-html) to extract script and link tags as entrypoints, and other assets as external.
292
-
293
- Currently, the list of selectors is:
294
-
295
- - `audio[src]`
296
- - `iframe[src]`
297
- - `img[src]`
298
- - `img[srcset]`
299
- - `link:not([rel~='stylesheet']):not([rel~='modulepreload']):not([rel~='manifest']):not([rel~='icon']):not([rel~='apple-touch-icon'])[href]`
300
- - `link[as='font'][href], link[type^='font/'][href]`
301
- - `link[as='image'][href]`
302
- - `link[as='style'][href]`
303
- - `link[as='video'][href], link[as='audio'][href]`
304
- - `link[as='worker'][href]`
305
- - `link[rel='icon'][href], link[rel='apple-touch-icon'][href]`
306
- - `link[rel='manifest'][href]`
307
- - `link[rel='stylesheet'][href]`
308
- - `script[src]`
309
- - `source[src]`
310
- - `source[srcset]`
311
- - `video[poster]`
312
- - `video[src]`
313
-
314
- {% callout %}
315
-
316
- **HTML Loader Behavior in Different Contexts**
317
-
318
- The `html` loader behaves differently depending on how it's used:
319
-
320
- 1. **Static Build:** When you run `bun build ./index.html`, Bun produces a static site with all assets bundled and hashed.
321
-
322
- 2. **Runtime:** When you run `bun run server.ts` (where `server.ts` imports an HTML file), Bun bundles assets on-the-fly during development, enabling features like hot module replacement.
323
-
324
- 3. **Full-stack Build:** When you run `bun build --target=bun server.ts` (where `server.ts` imports an HTML file), the import resolves to a manifest object that `Bun.serve` uses to efficiently serve pre-bundled assets in production.
325
-
326
- {% /callout %}
327
-
328
- ### `sh` loader
329
-
330
- **Bun Shell loader**. Default for `.sh` files
331
-
332
- This loader is used to parse [Bun Shell](https://bun.com/docs/runtime/shell) scripts. It's only supported when starting Bun itself, so it's not available in the bundler or in the runtime.
333
-
334
- ```sh
335
- $ bun run ./script.sh
336
- ```
337
-
338
- ### `file`
339
-
340
- **File loader**. Default for all unrecognized file types.
341
-
342
- The file loader resolves the import as a _path/URL_ to the imported file. It's commonly used for referencing media or font assets.
343
-
344
- ```ts#logo.ts
345
- import logo from "./logo.svg";
346
- console.log(logo);
347
- ```
348
-
349
- _In the runtime_, Bun checks that the `logo.svg` file exists and converts it to an absolute path to the location of `logo.svg` on disk.
350
-
351
- ```bash
352
- $ bun run logo.ts
353
- /path/to/project/logo.svg
354
- ```
355
-
356
- _In the bundler_, things are slightly different. The file is copied into `outdir` as-is, and the import is resolved as a relative path pointing to the copied file.
357
-
358
- ```ts#Output
359
- var logo = "./logo.svg";
360
- console.log(logo);
361
- ```
362
-
363
- If a value is specified for `publicPath`, the import will use value as a prefix to construct an absolute path/URL.
364
-
365
- {% table %}
366
-
367
- - Public path
368
- - Resolved import
369
-
370
- ---
371
-
372
- - `""` (default)
373
- - `/logo.svg`
374
-
375
- ---
376
-
377
- - `"/assets"`
378
- - `/assets/logo.svg`
379
-
380
- ---
381
-
382
- - `"https://cdn.example.com/"`
383
- - `https://cdn.example.com/logo.svg`
384
-
385
- {% /table %}
386
-
387
- {% callout %}
388
- The location and file name of the copied file is determined by the value of [`naming.asset`](https://bun.com/docs/bundler#naming).
389
- {% /callout %}
390
- This loader is copied into the `outdir` as-is. The name of the copied file is determined using the value of `naming.asset`.
391
-
392
- {% details summary="Fixing TypeScript import errors" %}
393
- If you're using TypeScript, you may get an error like this:
394
-
395
- ```ts
396
- // TypeScript error
397
- // Cannot find module './logo.svg' or its corresponding type declarations.
398
- ```
399
-
400
- This can be fixed by creating `*.d.ts` file anywhere in your project (any name will work) with the following contents:
401
-
402
- ```ts
403
- declare module "*.svg" {
404
- const content: string;
405
- export default content;
406
- }
407
- ```
408
-
409
- This tells TypeScript that any default imports from `.svg` should be treated as a string.
410
- {% /details %}