bun-types 1.3.2-canary.20251106T140813 → 1.3.2

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 (316) hide show
  1. package/bun.d.ts +102 -6
  2. package/docs/bundler/bytecode.mdx +465 -0
  3. package/docs/bundler/css.mdx +1024 -0
  4. package/docs/bundler/esbuild.mdx +253 -0
  5. package/docs/bundler/executables.mdx +535 -0
  6. package/docs/bundler/fullstack.mdx +1064 -0
  7. package/docs/bundler/hot-reloading.mdx +229 -0
  8. package/docs/bundler/html-static.mdx +386 -0
  9. package/docs/bundler/index.mdx +1499 -0
  10. package/docs/bundler/loaders.mdx +356 -0
  11. package/docs/bundler/macros.mdx +328 -0
  12. package/docs/bundler/minifier.mdx +1306 -0
  13. package/docs/bundler/plugins.mdx +411 -0
  14. package/docs/feedback.mdx +85 -0
  15. package/docs/guides/binary/arraybuffer-to-array.mdx +29 -0
  16. package/docs/guides/binary/arraybuffer-to-blob.mdx +26 -0
  17. package/docs/guides/binary/arraybuffer-to-buffer.mdx +27 -0
  18. package/docs/guides/binary/arraybuffer-to-string.mdx +17 -0
  19. package/docs/guides/binary/arraybuffer-to-typedarray.mdx +41 -0
  20. package/docs/guides/binary/blob-to-arraybuffer.mdx +16 -0
  21. package/docs/guides/binary/blob-to-dataview.mdx +16 -0
  22. package/docs/guides/binary/blob-to-stream.mdx +16 -0
  23. package/docs/guides/binary/blob-to-string.mdx +17 -0
  24. package/docs/guides/binary/blob-to-typedarray.mdx +16 -0
  25. package/docs/guides/binary/buffer-to-arraybuffer.mdx +16 -0
  26. package/docs/guides/binary/buffer-to-blob.mdx +16 -0
  27. package/docs/guides/binary/buffer-to-readablestream.mdx +43 -0
  28. package/docs/guides/binary/buffer-to-string.mdx +27 -0
  29. package/docs/guides/binary/buffer-to-typedarray.mdx +16 -0
  30. package/docs/guides/binary/dataview-to-string.mdx +17 -0
  31. package/docs/guides/binary/typedarray-to-arraybuffer.mdx +27 -0
  32. package/docs/guides/binary/typedarray-to-blob.mdx +18 -0
  33. package/docs/guides/binary/typedarray-to-buffer.mdx +16 -0
  34. package/docs/guides/binary/typedarray-to-dataview.mdx +16 -0
  35. package/docs/guides/binary/typedarray-to-readablestream.mdx +43 -0
  36. package/docs/guides/binary/typedarray-to-string.mdx +18 -0
  37. package/docs/guides/deployment/aws-lambda.mdx +204 -0
  38. package/docs/guides/deployment/digital-ocean.mdx +161 -0
  39. package/docs/guides/deployment/google-cloud-run.mdx +197 -0
  40. package/docs/guides/deployment/railway.mdx +145 -0
  41. package/docs/guides/deployment/render.mdx +82 -0
  42. package/docs/guides/deployment/vercel.mdx +99 -0
  43. package/docs/guides/ecosystem/astro.mdx +82 -0
  44. package/docs/guides/ecosystem/discordjs.mdx +80 -0
  45. package/docs/guides/ecosystem/docker.mdx +151 -0
  46. package/docs/guides/ecosystem/drizzle.mdx +195 -0
  47. package/docs/guides/ecosystem/edgedb.mdx +257 -0
  48. package/docs/guides/ecosystem/elysia.mdx +31 -0
  49. package/docs/guides/ecosystem/express.mdx +43 -0
  50. package/docs/guides/ecosystem/hono.mdx +47 -0
  51. package/docs/guides/ecosystem/mongoose.mdx +92 -0
  52. package/docs/guides/ecosystem/neon-drizzle.mdx +234 -0
  53. package/docs/guides/ecosystem/neon-serverless-postgres.mdx +60 -0
  54. package/docs/guides/ecosystem/nextjs.mdx +57 -0
  55. package/docs/guides/ecosystem/nuxt.mdx +90 -0
  56. package/docs/guides/ecosystem/pm2.mdx +55 -0
  57. package/docs/guides/ecosystem/prisma-postgres.mdx +169 -0
  58. package/docs/guides/ecosystem/prisma.mdx +164 -0
  59. package/docs/guides/ecosystem/qwik.mdx +114 -0
  60. package/docs/guides/ecosystem/react.mdx +52 -0
  61. package/docs/guides/ecosystem/remix.mdx +97 -0
  62. package/docs/guides/ecosystem/sentry.mdx +54 -0
  63. package/docs/guides/ecosystem/solidstart.mdx +66 -0
  64. package/docs/guides/ecosystem/ssr-react.mdx +49 -0
  65. package/docs/guides/ecosystem/stric.mdx +54 -0
  66. package/docs/guides/ecosystem/sveltekit.mdx +138 -0
  67. package/docs/guides/ecosystem/systemd.mdx +114 -0
  68. package/docs/guides/ecosystem/upstash.mdx +87 -0
  69. package/docs/guides/ecosystem/vite.mdx +77 -0
  70. package/docs/guides/html-rewriter/extract-links.mdx +72 -0
  71. package/docs/guides/html-rewriter/extract-social-meta.mdx +97 -0
  72. package/docs/guides/http/cluster.mdx +69 -0
  73. package/docs/guides/http/fetch-unix.mdx +35 -0
  74. package/docs/guides/http/fetch.mdx +26 -0
  75. package/docs/guides/http/file-uploads.mdx +97 -0
  76. package/docs/guides/http/hot.mdx +28 -0
  77. package/docs/guides/http/proxy.mdx +26 -0
  78. package/docs/guides/http/server.mdx +48 -0
  79. package/docs/guides/http/simple.mdx +20 -0
  80. package/docs/guides/http/stream-file.mdx +50 -0
  81. package/docs/guides/http/stream-iterator.mdx +49 -0
  82. package/docs/guides/http/stream-node-streams-in-bun.mdx +22 -0
  83. package/docs/guides/http/tls.mdx +32 -0
  84. package/docs/guides/index.mdx +10 -0
  85. package/docs/guides/install/add-dev.mdx +28 -0
  86. package/docs/guides/install/add-git.mdx +38 -0
  87. package/docs/guides/install/add-optional.mdx +27 -0
  88. package/docs/guides/install/add-peer.mdx +45 -0
  89. package/docs/guides/install/add-tarball.mdx +35 -0
  90. package/docs/guides/install/add.mdx +44 -0
  91. package/docs/guides/install/azure-artifacts.mdx +76 -0
  92. package/docs/guides/install/cicd.mdx +43 -0
  93. package/docs/guides/install/custom-registry.mdx +32 -0
  94. package/docs/guides/install/from-npm-install-to-bun-install.mdx +230 -0
  95. package/docs/guides/install/git-diff-bun-lockfile.mdx +47 -0
  96. package/docs/guides/install/jfrog-artifactory.mdx +28 -0
  97. package/docs/guides/install/npm-alias.mdx +25 -0
  98. package/docs/guides/install/registry-scope.mdx +40 -0
  99. package/docs/guides/install/trusted.mdx +50 -0
  100. package/docs/guides/install/workspaces.mdx +70 -0
  101. package/docs/guides/install/yarnlock.mdx +50 -0
  102. package/docs/guides/process/argv.mdx +66 -0
  103. package/docs/guides/process/ctrl-c.mdx +18 -0
  104. package/docs/guides/process/ipc.mdx +69 -0
  105. package/docs/guides/process/nanoseconds.mdx +15 -0
  106. package/docs/guides/process/os-signals.mdx +41 -0
  107. package/docs/guides/process/spawn-stderr.mdx +34 -0
  108. package/docs/guides/process/spawn-stdout.mdx +28 -0
  109. package/docs/guides/process/spawn.mdx +43 -0
  110. package/docs/guides/process/stdin.mdx +62 -0
  111. package/docs/guides/read-file/arraybuffer.mdx +30 -0
  112. package/docs/guides/read-file/buffer.mdx +21 -0
  113. package/docs/guides/read-file/exists.mdx +18 -0
  114. package/docs/guides/read-file/json.mdx +19 -0
  115. package/docs/guides/read-file/mime.mdx +22 -0
  116. package/docs/guides/read-file/stream.mdx +28 -0
  117. package/docs/guides/read-file/string.mdx +24 -0
  118. package/docs/guides/read-file/uint8array.mdx +23 -0
  119. package/docs/guides/read-file/watch.mdx +66 -0
  120. package/docs/guides/runtime/build-time-constants.mdx +295 -0
  121. package/docs/guides/runtime/cicd.mdx +45 -0
  122. package/docs/guides/runtime/codesign-macos-executable.mdx +61 -0
  123. package/docs/guides/runtime/define-constant.mdx +149 -0
  124. package/docs/guides/runtime/delete-directory.mdx +39 -0
  125. package/docs/guides/runtime/delete-file.mdx +21 -0
  126. package/docs/guides/runtime/heap-snapshot.mdx +28 -0
  127. package/docs/guides/runtime/import-html.mdx +17 -0
  128. package/docs/guides/runtime/import-json.mdx +46 -0
  129. package/docs/guides/runtime/import-toml.mdx +32 -0
  130. package/docs/guides/runtime/import-yaml.mdx +104 -0
  131. package/docs/guides/runtime/read-env.mdx +37 -0
  132. package/docs/guides/runtime/set-env.mdx +51 -0
  133. package/docs/guides/runtime/shell.mdx +42 -0
  134. package/docs/guides/runtime/timezone.mdx +38 -0
  135. package/docs/guides/runtime/tsconfig-paths.mdx +31 -0
  136. package/docs/guides/runtime/typescript.mdx +51 -0
  137. package/docs/guides/runtime/vscode-debugger.mdx +48 -0
  138. package/docs/guides/runtime/web-debugger.mdx +103 -0
  139. package/docs/guides/streams/node-readable-to-arraybuffer.mdx +13 -0
  140. package/docs/guides/streams/node-readable-to-blob.mdx +13 -0
  141. package/docs/guides/streams/node-readable-to-json.mdx +14 -0
  142. package/docs/guides/streams/node-readable-to-string.mdx +14 -0
  143. package/docs/guides/streams/node-readable-to-uint8array.mdx +13 -0
  144. package/docs/guides/streams/to-array.mdx +16 -0
  145. package/docs/guides/streams/to-arraybuffer.mdx +16 -0
  146. package/docs/guides/streams/to-blob.mdx +16 -0
  147. package/docs/guides/streams/to-buffer.mdx +17 -0
  148. package/docs/guides/streams/to-json.mdx +16 -0
  149. package/docs/guides/streams/to-string.mdx +16 -0
  150. package/docs/guides/streams/to-typedarray.mdx +24 -0
  151. package/docs/guides/test/bail.mdx +24 -0
  152. package/docs/guides/test/coverage-threshold.mdx +67 -0
  153. package/docs/guides/test/coverage.mdx +49 -0
  154. package/docs/guides/test/happy-dom.mdx +73 -0
  155. package/docs/guides/test/migrate-from-jest.mdx +125 -0
  156. package/docs/guides/test/mock-clock.mdx +50 -0
  157. package/docs/guides/test/mock-functions.mdx +70 -0
  158. package/docs/guides/test/rerun-each.mdx +16 -0
  159. package/docs/guides/test/run-tests.mdx +116 -0
  160. package/docs/guides/test/skip-tests.mdx +43 -0
  161. package/docs/guides/test/snapshot.mdx +102 -0
  162. package/docs/guides/test/spy-on.mdx +49 -0
  163. package/docs/guides/test/svelte-test.mdx +113 -0
  164. package/docs/guides/test/testing-library.mdx +93 -0
  165. package/docs/guides/test/timeout.mdx +17 -0
  166. package/docs/guides/test/todo-tests.mdx +74 -0
  167. package/docs/guides/test/update-snapshots.mdx +49 -0
  168. package/docs/guides/test/watch-mode.mdx +24 -0
  169. package/docs/guides/util/base64.mdx +17 -0
  170. package/docs/guides/util/deep-equals.mdx +41 -0
  171. package/docs/guides/util/deflate.mdx +20 -0
  172. package/docs/guides/util/detect-bun.mdx +25 -0
  173. package/docs/guides/util/entrypoint.mdx +19 -0
  174. package/docs/guides/util/escape-html.mdx +24 -0
  175. package/docs/guides/util/file-url-to-path.mdx +16 -0
  176. package/docs/guides/util/gzip.mdx +20 -0
  177. package/docs/guides/util/hash-a-password.mdx +56 -0
  178. package/docs/guides/util/import-meta-dir.mdx +15 -0
  179. package/docs/guides/util/import-meta-file.mdx +15 -0
  180. package/docs/guides/util/import-meta-path.mdx +15 -0
  181. package/docs/guides/util/javascript-uuid.mdx +25 -0
  182. package/docs/guides/util/main.mdx +43 -0
  183. package/docs/guides/util/path-to-file-url.mdx +16 -0
  184. package/docs/guides/util/sleep.mdx +24 -0
  185. package/docs/guides/util/version.mdx +23 -0
  186. package/docs/guides/util/which-path-to-executable-bin.mdx +17 -0
  187. package/docs/guides/websocket/compression.mdx +33 -0
  188. package/docs/guides/websocket/context.mdx +74 -0
  189. package/docs/guides/websocket/pubsub.mdx +40 -0
  190. package/docs/guides/websocket/simple.mdx +35 -0
  191. package/docs/guides/write-file/append.mdx +54 -0
  192. package/docs/guides/write-file/basic.mdx +46 -0
  193. package/docs/guides/write-file/blob.mdx +30 -0
  194. package/docs/guides/write-file/cat.mdx +19 -0
  195. package/docs/guides/write-file/file-cp.mdx +18 -0
  196. package/docs/guides/write-file/filesink.mdx +54 -0
  197. package/docs/guides/write-file/response.mdx +19 -0
  198. package/docs/guides/write-file/stdout.mdx +23 -0
  199. package/docs/guides/write-file/stream.mdx +19 -0
  200. package/docs/guides/write-file/unlink.mdx +18 -0
  201. package/docs/index.mdx +133 -0
  202. package/docs/installation.mdx +365 -0
  203. package/docs/pm/bunx.mdx +83 -0
  204. package/docs/pm/catalogs.mdx +292 -0
  205. package/docs/pm/cli/add.mdx +179 -0
  206. package/docs/pm/cli/audit.mdx +60 -0
  207. package/docs/pm/cli/install.mdx +471 -0
  208. package/docs/pm/cli/link.mdx +48 -0
  209. package/docs/pm/cli/outdated.mdx +197 -0
  210. package/docs/pm/cli/patch.mdx +69 -0
  211. package/docs/pm/cli/pm.mdx +319 -0
  212. package/docs/pm/cli/publish.mdx +123 -0
  213. package/docs/pm/cli/remove.mdx +16 -0
  214. package/docs/pm/cli/update.mdx +140 -0
  215. package/docs/pm/cli/why.mdx +84 -0
  216. package/docs/pm/filter.mdx +102 -0
  217. package/docs/pm/global-cache.mdx +72 -0
  218. package/docs/pm/isolated-installs.mdx +205 -0
  219. package/docs/pm/lifecycle.mdx +57 -0
  220. package/docs/pm/lockfile.mdx +64 -0
  221. package/docs/pm/npmrc.mdx +111 -0
  222. package/docs/pm/overrides.mdx +83 -0
  223. package/docs/pm/scopes-registries.mdx +35 -0
  224. package/docs/pm/security-scanner-api.mdx +95 -0
  225. package/docs/pm/workspaces.mdx +109 -0
  226. package/docs/project/benchmarking.mdx +218 -0
  227. package/docs/project/bindgen.mdx +223 -0
  228. package/docs/project/building-windows.mdx +133 -0
  229. package/docs/project/contributing.mdx +343 -0
  230. package/docs/project/feedback.mdx +20 -0
  231. package/docs/project/license.mdx +78 -0
  232. package/docs/project/roadmap.mdx +8 -0
  233. package/docs/quickstart.mdx +240 -0
  234. package/docs/runtime/auto-install.mdx +97 -0
  235. package/docs/runtime/binary-data.mdx +846 -0
  236. package/docs/runtime/bun-apis.mdx +59 -0
  237. package/docs/runtime/bunfig.mdx +642 -0
  238. package/docs/runtime/c-compiler.mdx +204 -0
  239. package/docs/runtime/child-process.mdx +532 -0
  240. package/docs/runtime/color.mdx +267 -0
  241. package/docs/runtime/console.mdx +67 -0
  242. package/docs/runtime/cookies.mdx +454 -0
  243. package/docs/runtime/debugger.mdx +335 -0
  244. package/docs/runtime/environment-variables.mdx +214 -0
  245. package/docs/runtime/ffi.mdx +565 -0
  246. package/docs/runtime/file-io.mdx +306 -0
  247. package/docs/runtime/file-system-router.mdx +118 -0
  248. package/docs/runtime/file-types.mdx +354 -0
  249. package/docs/runtime/glob.mdx +181 -0
  250. package/docs/runtime/globals.mdx +72 -0
  251. package/docs/runtime/hashing.mdx +315 -0
  252. package/docs/runtime/html-rewriter.mdx +340 -0
  253. package/docs/runtime/http/cookies.mdx +79 -0
  254. package/docs/runtime/http/error-handling.mdx +40 -0
  255. package/docs/runtime/http/metrics.mdx +36 -0
  256. package/docs/runtime/http/routing.mdx +289 -0
  257. package/docs/runtime/http/server.mdx +647 -0
  258. package/docs/runtime/http/tls.mdx +101 -0
  259. package/docs/runtime/http/websockets.mdx +404 -0
  260. package/docs/runtime/index.mdx +223 -0
  261. package/docs/runtime/jsx.mdx +115 -0
  262. package/docs/runtime/module-resolution.mdx +342 -0
  263. package/docs/runtime/networking/dns.mdx +111 -0
  264. package/docs/runtime/networking/fetch.mdx +468 -0
  265. package/docs/runtime/networking/tcp.mdx +239 -0
  266. package/docs/runtime/networking/udp.mdx +129 -0
  267. package/docs/runtime/node-api.mdx +19 -0
  268. package/docs/runtime/nodejs-compat.mdx +468 -0
  269. package/docs/runtime/plugins.mdx +405 -0
  270. package/docs/runtime/redis.mdx +582 -0
  271. package/docs/runtime/s3.mdx +863 -0
  272. package/docs/runtime/secrets.mdx +336 -0
  273. package/docs/runtime/semver.mdx +57 -0
  274. package/docs/runtime/shell.mdx +637 -0
  275. package/docs/runtime/sql.mdx +1404 -0
  276. package/docs/runtime/sqlite.mdx +699 -0
  277. package/docs/runtime/streams.mdx +232 -0
  278. package/docs/runtime/templating/create.mdx +269 -0
  279. package/docs/runtime/templating/init.mdx +58 -0
  280. package/docs/runtime/transpiler.mdx +288 -0
  281. package/docs/runtime/typescript.mdx +58 -0
  282. package/docs/runtime/utils.mdx +922 -0
  283. package/docs/runtime/watch-mode.mdx +161 -0
  284. package/docs/runtime/web-apis.mdx +29 -0
  285. package/docs/runtime/workers.mdx +328 -0
  286. package/docs/runtime/yaml.mdx +469 -0
  287. package/docs/snippets/cli/add.mdx +166 -0
  288. package/docs/snippets/cli/build.mdx +196 -0
  289. package/docs/snippets/cli/feedback.mdx +17 -0
  290. package/docs/snippets/cli/init.mdx +84 -0
  291. package/docs/snippets/cli/install.mdx +173 -0
  292. package/docs/snippets/cli/link.mdx +163 -0
  293. package/docs/snippets/cli/outdated.mdx +140 -0
  294. package/docs/snippets/cli/patch.mdx +171 -0
  295. package/docs/snippets/cli/publish.mdx +198 -0
  296. package/docs/snippets/cli/remove.mdx +146 -0
  297. package/docs/snippets/cli/run.mdx +293 -0
  298. package/docs/snippets/cli/test.mdx +100 -0
  299. package/docs/snippets/cli/update.mdx +144 -0
  300. package/docs/snippets/product-card.mdx +32 -0
  301. package/docs/snippets/product-tiles.mdx +94 -0
  302. package/docs/test/code-coverage.mdx +409 -0
  303. package/docs/test/configuration.mdx +467 -0
  304. package/docs/test/dates-times.mdx +129 -0
  305. package/docs/test/discovery.mdx +90 -0
  306. package/docs/test/dom.mdx +226 -0
  307. package/docs/test/index.mdx +380 -0
  308. package/docs/test/lifecycle.mdx +348 -0
  309. package/docs/test/mocks.mdx +637 -0
  310. package/docs/test/reporters.mdx +117 -0
  311. package/docs/test/runtime-behavior.mdx +342 -0
  312. package/docs/test/snapshots.mdx +434 -0
  313. package/docs/test/writing-tests.mdx +635 -0
  314. package/docs/typescript.mdx +54 -0
  315. package/package.json +8 -6
  316. package/test.d.ts +2 -2
@@ -0,0 +1,469 @@
1
+ ---
2
+ title: YAML
3
+ description: Use Bun's built-in support for YAML files through both runtime APIs and bundler integration
4
+ ---
5
+
6
+ In Bun, YAML is a first-class citizen alongside JSON and TOML. You can:
7
+
8
+ - Parse YAML strings with `Bun.YAML.parse`
9
+ - `import` & `require` YAML files as modules at runtime (including hot reloading & watch mode support)
10
+ - `import` & `require` YAML files in frontend apps via bun's bundler
11
+
12
+ ---
13
+
14
+ ## Conformance
15
+
16
+ Bun's YAML parser currently passes over 90% of the official YAML test suite. While we're actively working on reaching 100% conformance, the current implementation covers the vast majority of real-world use cases. The parser is written in Zig for optimal performance and is continuously being improved.
17
+
18
+ ---
19
+
20
+ ## Runtime API
21
+
22
+ ### `Bun.YAML.parse()`
23
+
24
+ Parse a YAML string into a JavaScript object.
25
+
26
+ ```ts
27
+ import { YAML } from "bun";
28
+ const text = `
29
+ name: John Doe
30
+ age: 30
31
+ email: john@example.com
32
+ hobbies:
33
+ - reading
34
+ - coding
35
+ - hiking
36
+ `;
37
+
38
+ const data = YAML.parse(text);
39
+ console.log(data);
40
+ // {
41
+ // name: "John Doe",
42
+ // age: 30,
43
+ // email: "john@example.com",
44
+ // hobbies: ["reading", "coding", "hiking"]
45
+ // }
46
+ ```
47
+
48
+ #### Multi-document YAML
49
+
50
+ When parsing YAML with multiple documents (separated by `---`), `Bun.YAML.parse()` returns an array:
51
+
52
+ ```ts
53
+ const multiDoc = `
54
+ ---
55
+ name: Document 1
56
+ ---
57
+ name: Document 2
58
+ ---
59
+ name: Document 3
60
+ `;
61
+
62
+ const docs = Bun.YAML.parse(multiDoc);
63
+ console.log(docs);
64
+ // [
65
+ // { name: "Document 1" },
66
+ // { name: "Document 2" },
67
+ // { name: "Document 3" }
68
+ // ]
69
+ ```
70
+
71
+ #### Supported YAML Features
72
+
73
+ Bun's YAML parser supports the full YAML 1.2 specification, including:
74
+
75
+ - **Scalars**: strings, numbers, booleans, null values
76
+ - **Collections**: sequences (arrays) and mappings (objects)
77
+ - **Anchors and Aliases**: reusable nodes with `&` and `*`
78
+ - **Tags**: type hints like `!!str`, `!!int`, `!!float`, `!!bool`, `!!null`
79
+ - **Multi-line strings**: literal (`|`) and folded (`>`) scalars
80
+ - **Comments**: using `#`
81
+ - **Directives**: `%YAML` and `%TAG`
82
+
83
+ ```ts
84
+ const yaml = `
85
+ # Employee record
86
+ employee: &emp
87
+ name: Jane Smith
88
+ department: Engineering
89
+ skills:
90
+ - JavaScript
91
+ - TypeScript
92
+ - React
93
+
94
+ manager: *emp # Reference to employee
95
+
96
+ config: !!str 123 # Explicit string type
97
+
98
+ description: |
99
+ This is a multi-line
100
+ literal string that preserves
101
+ line breaks and spacing.
102
+
103
+ summary: >
104
+ This is a folded string
105
+ that joins lines with spaces
106
+ unless there are blank lines.
107
+ `;
108
+
109
+ const data = Bun.YAML.parse(yaml);
110
+ ```
111
+
112
+ #### Error Handling
113
+
114
+ `Bun.YAML.parse()` throws a `SyntaxError` if the YAML is invalid:
115
+
116
+ ```ts
117
+ try {
118
+ Bun.YAML.parse("invalid: yaml: content:");
119
+ } catch (error) {
120
+ console.error("Failed to parse YAML:", error.message);
121
+ }
122
+ ```
123
+
124
+ ---
125
+
126
+ ## Module Import
127
+
128
+ ### ES Modules
129
+
130
+ You can import YAML files directly as ES modules. The YAML content is parsed and made available as both default and named exports:
131
+
132
+ ```yaml config.yaml
133
+ database:
134
+ host: localhost
135
+ port: 5432
136
+ name: myapp
137
+
138
+ redis:
139
+ host: localhost
140
+ port: 6379
141
+
142
+ features:
143
+ auth: true
144
+ rateLimit: true
145
+ analytics: false
146
+ ```
147
+
148
+ #### Default Import
149
+
150
+ ```ts app.ts icon="/icons/typescript.svg"
151
+ import config from "./config.yaml";
152
+
153
+ console.log(config.database.host); // "localhost"
154
+ console.log(config.redis.port); // 6379
155
+ ```
156
+
157
+ #### Named Imports
158
+
159
+ You can destructure top-level YAML properties as named imports:
160
+
161
+ ```ts app.ts icon="/icons/typescript.svg"
162
+ import { database, redis, features } from "./config.yaml";
163
+
164
+ console.log(database.host); // "localhost"
165
+ console.log(redis.port); // 6379
166
+ console.log(features.auth); // true
167
+ ```
168
+
169
+ Or combine both:
170
+
171
+ ```ts app.ts icon="/icons/typescript.svg"
172
+ import config, { database, features } from "./config.yaml";
173
+
174
+ // Use the full config object
175
+ console.log(config);
176
+
177
+ // Or use specific parts
178
+ if (features.rateLimit) {
179
+ setupRateLimiting(database);
180
+ }
181
+ ```
182
+
183
+ ### CommonJS
184
+
185
+ YAML files can also be required in CommonJS:
186
+
187
+ ```ts app.ts icon="/icons/typescript.svg"
188
+ const config = require("./config.yaml");
189
+ console.log(config.database.name); // "myapp"
190
+
191
+ // Destructuring also works
192
+ const { database, redis } = require("./config.yaml");
193
+ console.log(database.port); // 5432
194
+ ```
195
+
196
+ ---
197
+
198
+ ## Hot Reloading with YAML
199
+
200
+ One of the most powerful features of Bun's YAML support is hot reloading. When you run your application with `bun --hot`, changes to YAML files are automatically detected and reloaded without closing connections
201
+
202
+ ### Configuration Hot Reloading
203
+
204
+ ```yaml config.yaml
205
+ server:
206
+ port: 3000
207
+ host: localhost
208
+
209
+ features:
210
+ debug: true
211
+ verbose: false
212
+ ```
213
+
214
+ ```ts server.ts icon="/icons/typescript.svg"
215
+ import { server, features } from "./config.yaml";
216
+
217
+ console.log(`Starting server on ${server.host}:${server.port}`);
218
+
219
+ if (features.debug) {
220
+ console.log("Debug mode enabled");
221
+ }
222
+
223
+ // Your server code here
224
+ Bun.serve({
225
+ port: server.port,
226
+ hostname: server.host,
227
+ fetch(req) {
228
+ if (features.verbose) {
229
+ console.log(`${req.method} ${req.url}`);
230
+ }
231
+ return new Response("Hello World");
232
+ },
233
+ });
234
+ ```
235
+
236
+ Run with hot reloading:
237
+
238
+ ```bash terminal icon="terminal"
239
+ bun --hot server.ts
240
+ ```
241
+
242
+ Now when you modify `config.yaml`, the changes are immediately reflected in your running application. This is perfect for:
243
+
244
+ - Adjusting configuration during development
245
+ - Testing different settings without restarts
246
+ - Live debugging with configuration changes
247
+ - Feature flag toggling
248
+
249
+ ---
250
+
251
+ ## Configuration Management
252
+
253
+ ### Environment-Based Configuration
254
+
255
+ YAML excels at managing configuration across different environments:
256
+
257
+ ```yaml config.yaml
258
+ defaults: &defaults
259
+ timeout: 5000
260
+ retries: 3
261
+ cache:
262
+ enabled: true
263
+ ttl: 3600
264
+
265
+ development:
266
+ <<: *defaults
267
+ api:
268
+ url: http://localhost:4000
269
+ key: dev_key_12345
270
+ logging:
271
+ level: debug
272
+ pretty: true
273
+
274
+ staging:
275
+ <<: *defaults
276
+ api:
277
+ url: https://staging-api.example.com
278
+ key: ${STAGING_API_KEY}
279
+ logging:
280
+ level: info
281
+ pretty: false
282
+
283
+ production:
284
+ <<: *defaults
285
+ api:
286
+ url: https://api.example.com
287
+ key: ${PROD_API_KEY}
288
+ cache:
289
+ enabled: true
290
+ ttl: 86400
291
+ logging:
292
+ level: error
293
+ pretty: false
294
+ ```
295
+
296
+ ```ts app.ts icon="/icons/typescript.svg"
297
+ import configs from "./config.yaml";
298
+
299
+ const env = process.env.NODE_ENV || "development";
300
+ const config = configs[env];
301
+
302
+ // Environment variables in YAML values can be interpolated
303
+ function interpolateEnvVars(obj: any): any {
304
+ if (typeof obj === "string") {
305
+ return obj.replace(/\${(\w+)}/g, (_, key) => process.env[key] || "");
306
+ }
307
+ if (typeof obj === "object") {
308
+ for (const key in obj) {
309
+ obj[key] = interpolateEnvVars(obj[key]);
310
+ }
311
+ }
312
+ return obj;
313
+ }
314
+
315
+ export default interpolateEnvVars(config);
316
+ ```
317
+
318
+ ### Feature Flags Configuration
319
+
320
+ ```yaml features.yaml
321
+ features:
322
+ newDashboard:
323
+ enabled: true
324
+ rolloutPercentage: 50
325
+ allowedUsers:
326
+ - admin@example.com
327
+ - beta@example.com
328
+
329
+ experimentalAPI:
330
+ enabled: false
331
+ endpoints:
332
+ - /api/v2/experimental
333
+ - /api/v2/beta
334
+
335
+ darkMode:
336
+ enabled: true
337
+ default: auto # auto, light, dark
338
+ ```
339
+
340
+ ```ts feature-flags.ts icon="/icons/typescript.svg"
341
+ import { features } from "./features.yaml";
342
+
343
+ export function isFeatureEnabled(featureName: string, userEmail?: string): boolean {
344
+ const feature = features[featureName];
345
+
346
+ if (!feature?.enabled) {
347
+ return false;
348
+ }
349
+
350
+ // Check rollout percentage
351
+ if (feature.rolloutPercentage < 100) {
352
+ const hash = hashCode(userEmail || "anonymous");
353
+ if (hash % 100 >= feature.rolloutPercentage) {
354
+ return false;
355
+ }
356
+ }
357
+
358
+ // Check allowed users
359
+ if (feature.allowedUsers && userEmail) {
360
+ return feature.allowedUsers.includes(userEmail);
361
+ }
362
+
363
+ return true;
364
+ }
365
+
366
+ // Use with hot reloading to toggle features in real-time
367
+ if (isFeatureEnabled("newDashboard", user.email)) {
368
+ renderNewDashboard();
369
+ } else {
370
+ renderLegacyDashboard();
371
+ }
372
+ ```
373
+
374
+ ### Database Configuration
375
+
376
+ ```yaml database.yaml icon="yaml"
377
+ connections:
378
+ primary:
379
+ type: postgres
380
+ host: ${DB_HOST:-localhost}
381
+ port: ${DB_PORT:-5432}
382
+ database: ${DB_NAME:-myapp}
383
+ username: ${DB_USER:-postgres}
384
+ password: ${DB_PASS}
385
+ pool:
386
+ min: 2
387
+ max: 10
388
+ idleTimeout: 30000
389
+
390
+ cache:
391
+ type: redis
392
+ host: ${REDIS_HOST:-localhost}
393
+ port: ${REDIS_PORT:-6379}
394
+ password: ${REDIS_PASS}
395
+ db: 0
396
+
397
+ analytics:
398
+ type: clickhouse
399
+ host: ${ANALYTICS_HOST:-localhost}
400
+ port: 8123
401
+ database: analytics
402
+
403
+ migrations:
404
+ autoRun: ${AUTO_MIGRATE:-false}
405
+ directory: ./migrations
406
+
407
+ seeds:
408
+ enabled: ${SEED_DB:-false}
409
+ directory: ./seeds
410
+ ```
411
+
412
+ ```ts db.ts icon="/icons/typescript.svg"
413
+ import { connections, migrations } from "./database.yaml";
414
+ import { createConnection } from "./database-driver";
415
+
416
+ // Parse environment variables with defaults
417
+ function parseConfig(config: any) {
418
+ return JSON.parse(
419
+ JSON.stringify(config).replace(
420
+ /\${([^:-]+)(?::([^}]+))?}/g,
421
+ (_, key, defaultValue) => process.env[key] || defaultValue || "",
422
+ ),
423
+ );
424
+ }
425
+
426
+ const dbConfig = parseConfig(connections);
427
+
428
+ export const db = await createConnection(dbConfig.primary);
429
+ export const cache = await createConnection(dbConfig.cache);
430
+ export const analytics = await createConnection(dbConfig.analytics);
431
+
432
+ // Auto-run migrations if configured
433
+ if (parseConfig(migrations).autoRun === "true") {
434
+ await runMigrations(db, migrations.directory);
435
+ }
436
+ ```
437
+
438
+ ### Bundler Integration
439
+
440
+ When you import YAML files in your application and bundle it with Bun, the YAML is parsed at build time and included as a JavaScript module:
441
+
442
+ ```bash terminal icon="terminal"
443
+ bun build app.ts --outdir=dist
444
+ ```
445
+
446
+ This means:
447
+
448
+ - Zero runtime YAML parsing overhead in production
449
+ - Smaller bundle sizes
450
+ - Tree-shaking support for unused configuration (named imports)
451
+
452
+ ### Dynamic Imports
453
+
454
+ YAML files can be dynamically imported, useful for loading configuration on demand:
455
+
456
+ ```ts Load configuration based on environment
457
+ const env = process.env.NODE_ENV || "development";
458
+ const config = await import(`./configs/${env}.yaml`);
459
+
460
+ // Load user-specific settings
461
+ async function loadUserSettings(userId: string) {
462
+ try {
463
+ const settings = await import(`./users/${userId}/settings.yaml`);
464
+ return settings.default;
465
+ } catch {
466
+ return await import("./users/default-settings.yaml");
467
+ }
468
+ }
469
+ ```
@@ -0,0 +1,166 @@
1
+ ## CLI Usage
2
+
3
+ ```bash
4
+ bun add <package> <@version>
5
+ ```
6
+
7
+ ### Dependency Management
8
+
9
+ <ParamField path="--production" type="boolean">
10
+ Don't install devDependencies. Alias: <code>-p</code>
11
+ </ParamField>
12
+
13
+ <ParamField path="--omit" type="string">
14
+ Exclude <code>dev</code>, <code>optional</code>, or <code>peer</code> dependencies from install
15
+ </ParamField>
16
+
17
+ <ParamField path="--global" type="boolean">
18
+ Install globally. Alias: <code>-g</code>
19
+ </ParamField>
20
+
21
+ <ParamField path="--dev" type="boolean">
22
+ Add dependency to <code>devDependencies</code>. Alias: <code>-d</code>
23
+ </ParamField>
24
+
25
+ <ParamField path="--optional" type="boolean">
26
+ Add dependency to <code>optionalDependencies</code>
27
+ </ParamField>
28
+
29
+ <ParamField path="--peer" type="boolean">
30
+ Add dependency to <code>peerDependencies</code>
31
+ </ParamField>
32
+
33
+ <ParamField path="--exact" type="boolean">
34
+ Add the exact version instead of the <code>^</code> range. Alias: <code>-E</code>
35
+ </ParamField>
36
+
37
+ <ParamField path="--only-missing" type="boolean">
38
+ Only add dependencies to <code>package.json</code> if they are not already present
39
+ </ParamField>
40
+
41
+ ### Project Files & Lockfiles
42
+
43
+ <ParamField path="--yarn" type="boolean">
44
+ Write a <code>yarn.lock</code> file (yarn v1). Alias: <code>-y</code>
45
+ </ParamField>
46
+
47
+ <ParamField path="--no-save" type="boolean">
48
+ Don't update <code>package.json</code> or save a lockfile
49
+ </ParamField>
50
+
51
+ <ParamField path="--save" type="boolean" default="true">
52
+ Save to <code>package.json</code> (true by default)
53
+ </ParamField>
54
+
55
+ <ParamField path="--frozen-lockfile" type="boolean">
56
+ Disallow changes to lockfile
57
+ </ParamField>
58
+
59
+ <ParamField path="--trust" type="boolean">
60
+ Add to <code>trustedDependencies</code> in the project's <code>package.json</code> and install the package(s)
61
+ </ParamField>
62
+
63
+ <ParamField path="--save-text-lockfile" type="boolean">
64
+ Save a text-based lockfile
65
+ </ParamField>
66
+
67
+ <ParamField path="--lockfile-only" type="boolean">
68
+ Generate a lockfile without installing dependencies
69
+ </ParamField>
70
+
71
+ ### Installation Control
72
+
73
+ <ParamField path="--dry-run" type="boolean">
74
+ Don't install anything
75
+ </ParamField>
76
+
77
+ <ParamField path="--force" type="boolean">
78
+ Always request the latest versions from the registry &amp; reinstall all dependencies. Alias: <code>-f</code>
79
+ </ParamField>
80
+
81
+ <ParamField path="--no-verify" type="boolean">
82
+ Skip verifying integrity of newly downloaded packages
83
+ </ParamField>
84
+
85
+ <ParamField path="--ignore-scripts" type="boolean">
86
+ Skip lifecycle scripts in the project's <code>package.json</code> (dependency scripts are never run)
87
+ </ParamField>
88
+
89
+ <ParamField path="--analyze" type="boolean">
90
+ Recursively analyze &amp; install dependencies of files passed as arguments (using Bun's bundler). Alias:{" "}
91
+ <code>-a</code>
92
+ </ParamField>
93
+
94
+ ### Network & Registry
95
+
96
+ <ParamField path="--ca" type="string">
97
+ Provide a Certificate Authority signing certificate
98
+ </ParamField>
99
+
100
+ <ParamField path="--cafile" type="string">
101
+ Same as <code>--ca</code>, but as a file path to the certificate
102
+ </ParamField>
103
+
104
+ <ParamField path="--registry" type="string">
105
+ Use a specific registry by default, overriding <code>.npmrc</code>, <code>bunfig.toml</code>, and environment
106
+ variables
107
+ </ParamField>
108
+
109
+ <ParamField path="--network-concurrency" type="number" default="48">
110
+ Maximum number of concurrent network requests (default 48)
111
+ </ParamField>
112
+
113
+ ### Performance &amp; Resource
114
+
115
+ <ParamField path="--backend" type="string" default="clonefile">
116
+ Platform-specific optimizations for installing dependencies. Possible values: <code>clonefile</code> (default),{" "}
117
+ <code>hardlink</code>, <code>symlink</code>, <code>copyfile</code>
118
+ </ParamField>
119
+
120
+ <ParamField path="--concurrent-scripts" type="number" default="5">
121
+ Maximum number of concurrent jobs for lifecycle scripts (default 5)
122
+ </ParamField>
123
+
124
+ ### Caching
125
+
126
+ <ParamField path="--cache-dir" type="string">
127
+ Store &amp; load cached data from a specific directory path
128
+ </ParamField>
129
+
130
+ <ParamField path="--no-cache" type="boolean">
131
+ Ignore manifest cache entirely
132
+ </ParamField>
133
+
134
+ ### Output &amp; Logging
135
+
136
+ <ParamField path="--silent" type="boolean">
137
+ Don't log anything
138
+ </ParamField>
139
+
140
+ <ParamField path="--verbose" type="boolean">
141
+ Excessively verbose logging
142
+ </ParamField>
143
+
144
+ <ParamField path="--no-progress" type="boolean">
145
+ Disable the progress bar
146
+ </ParamField>
147
+
148
+ <ParamField path="--no-summary" type="boolean">
149
+ Don't print a summary
150
+ </ParamField>
151
+
152
+ ### Global Configuration &amp; Context
153
+
154
+ <ParamField path="--config" type="string">
155
+ Specify path to config file (<code>bunfig.toml</code>). Alias: <code>-c</code>
156
+ </ParamField>
157
+
158
+ <ParamField path="--cwd" type="string">
159
+ Set a specific current working directory
160
+ </ParamField>
161
+
162
+ ### Help
163
+
164
+ <ParamField path="--help" type="boolean">
165
+ Print this help menu. Alias: <code>-h</code>
166
+ </ParamField>