bun-types 1.3.2-canary.20251106T140813 → 1.3.2-canary.20251108T140624

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,82 @@
1
+ ---
2
+ title: Build an app with Astro and Bun
3
+ sidebarTitle: "Astro with Bun"
4
+ mode: center
5
+ ---
6
+
7
+ Initialize a fresh Astro app with `bun create astro`. The `create-astro` package detects when you are using `bunx` and will automatically install dependencies using `bun`.
8
+
9
+ ```sh terminal icon="terminal"
10
+ bun create astro
11
+ ```
12
+
13
+ ```txt
14
+ ╭─────╮ Houston:
15
+ │ ◠ ◡ ◠ We're glad to have you on board.
16
+ ╰─────╯
17
+
18
+ astro v3.1.4 Launch sequence initiated.
19
+
20
+ dir Where should we create your new project?
21
+ ./fumbling-field
22
+
23
+ tmpl How would you like to start your new project?
24
+ Use blog template
25
+ ✔ Template copied
26
+
27
+ deps Install dependencies?
28
+ Yes
29
+ ✔ Dependencies installed
30
+
31
+ ts Do you plan to write TypeScript?
32
+ Yes
33
+
34
+ use How strict should TypeScript be?
35
+ Strict
36
+ ✔ TypeScript customized
37
+
38
+ git Initialize a new git repository?
39
+ Yes
40
+ ✔ Git initialized
41
+
42
+ next Liftoff confirmed. Explore your project!
43
+
44
+ Enter your project directory using cd ./fumbling-field
45
+ Run `bun run dev` to start the dev server. CTRL+C to stop.
46
+ Add frameworks like react or tailwind using astro add.
47
+
48
+ Stuck? Join us at https://astro.build/chat
49
+
50
+ ╭─────╮ Houston:
51
+ │ ◠ ◡ ◠ Good luck out there, astronaut! 🚀
52
+ ╰─────╯
53
+ ```
54
+
55
+ ---
56
+
57
+ Start the dev server with `bunx`.
58
+
59
+ By default, Bun will run the dev server with Node.js. To use the Bun runtime instead, use the `--bun` flag.
60
+
61
+ ```sh terminal icon="terminal"
62
+ bunx --bun astro dev
63
+ ```
64
+
65
+ ```txt
66
+ 🚀 astro v3.1.4 started in 200ms
67
+
68
+ ┃ Local http://localhost:4321/
69
+ ┃ Network use --host to expose
70
+ ```
71
+
72
+ ---
73
+
74
+ Open [http://localhost:4321](http://localhost:4321) with your browser to see the result. Astro will hot-reload your app as you edit your source files.
75
+
76
+ <Frame>
77
+ <img src="https://i.imgur.com/Dswiu6w.png" caption="An Astro v3 starter app running on Bun" />
78
+ </Frame>
79
+
80
+ ---
81
+
82
+ Refer to the [Astro docs](https://docs.astro.build/en/getting-started/) for complete documentation.
@@ -0,0 +1,80 @@
1
+ ---
2
+ title: Create a Discord bot
3
+ sidebarTitle: "Discord.js with Bun"
4
+ mode: center
5
+ ---
6
+
7
+ Discord.js works out of the box with Bun. Let's write a simple bot. First create a directory and initialize it with `bun init`.
8
+
9
+ ```sh terminal icon="terminal"
10
+ mkdir my-bot
11
+ cd my-bot
12
+ bun init
13
+ ```
14
+
15
+ ---
16
+
17
+ Now install Discord.js.
18
+
19
+ ```sh terminal icon="terminal"
20
+ bun add discord.js
21
+ ```
22
+
23
+ ---
24
+
25
+ Before we go further, we need to go to the [Discord developer portal](https://discord.com/developers/applications), login/signup, create a new _Application_, then create a new _Bot_ within that application. Follow the [official guide](https://discordjs.guide/preparations/setting-up-a-bot-application.html#creating-your-bot) for step-by-step instructions.
26
+
27
+ ---
28
+
29
+ Once complete, you'll be presented with your bot's _private key_. Let's add this to a file called `.env.local`. Bun automatically reads this file and loads it into `process.env`.
30
+
31
+ <Note>This is an example token that has already been invalidated.</Note>
32
+
33
+ ```txt .env.local icon="settings"
34
+ DISCORD_TOKEN=NzkyNzE1NDU0MTk2MDg4ODQy.X-hvzA.Ovy4MCQywSkoMRRclStW4xAYK7I
35
+ ```
36
+
37
+ ---
38
+
39
+ Be sure to add `.env.local` to your `.gitignore`! It is dangerous to check your bot's private key into version control.
40
+
41
+ ```txt .gitignore icon="file-code"
42
+ node_modules
43
+ .env.local
44
+ ```
45
+
46
+ ---
47
+
48
+ Now let's actually write our bot in a new file called `bot.ts`.
49
+
50
+ ```ts bot.ts icon="/icons/typescript.svg"
51
+ // import discord.js
52
+ import { Client, Events, GatewayIntentBits } from "discord.js";
53
+
54
+ // create a new Client instance
55
+ const client = new Client({ intents: [GatewayIntentBits.Guilds] });
56
+
57
+ // listen for the client to be ready
58
+ client.once(Events.ClientReady, c => {
59
+ console.log(`Ready! Logged in as ${c.user.tag}`);
60
+ });
61
+
62
+ // login with the token from .env.local
63
+ client.login(process.env.DISCORD_TOKEN);
64
+ ```
65
+
66
+ ---
67
+
68
+ Now we can run our bot with `bun run`. It may take a several seconds for the client to initialize the first time you run the file.
69
+
70
+ ```sh terminal icon="terminal"
71
+ bun run bot.ts
72
+ ```
73
+
74
+ ```txt
75
+ Ready! Logged in as my-bot#1234
76
+ ```
77
+
78
+ ---
79
+
80
+ You're up and running with a bare-bones Discord.js bot! This is a basic guide to setting up your bot with Bun; we recommend the [official discord.js docs](https://discordjs.guide/) for complete information on the `discord.js` API.
@@ -0,0 +1,151 @@
1
+ ---
2
+ title: Containerize a Bun application with Docker
3
+ sidebarTitle: Docker with Bun
4
+ mode: center
5
+ ---
6
+
7
+ <Note>
8
+ This guide assumes you already have [Docker Desktop](https://www.docker.com/products/docker-desktop/) installed.
9
+ </Note>
10
+
11
+ [Docker](https://www.docker.com) is a platform for packaging and running an application as a lightweight, portable _container_ that encapsulates all the necessary dependencies.
12
+
13
+ ---
14
+
15
+ To _containerize_ our application, we define a `Dockerfile`. This file contains a list of instructions to initialize the container, copy our local project files into it, install dependencies, and starts the application.
16
+
17
+ ```docker Dockerfile icon="docker"
18
+ # use the official Bun image
19
+ # see all versions at https://hub.docker.com/r/oven/bun/tags
20
+ FROM oven/bun:1 AS base
21
+ WORKDIR /usr/src/app
22
+
23
+ # install dependencies into temp directory
24
+ # this will cache them and speed up future builds
25
+ FROM base AS install
26
+ RUN mkdir -p /temp/dev
27
+ COPY package.json bun.lock /temp/dev/
28
+ RUN cd /temp/dev && bun install --frozen-lockfile
29
+
30
+ # install with --production (exclude devDependencies)
31
+ RUN mkdir -p /temp/prod
32
+ COPY package.json bun.lock /temp/prod/
33
+ RUN cd /temp/prod && bun install --frozen-lockfile --production
34
+
35
+ # copy node_modules from temp directory
36
+ # then copy all (non-ignored) project files into the image
37
+ FROM base AS prerelease
38
+ COPY --from=install /temp/dev/node_modules node_modules
39
+ COPY . .
40
+
41
+ # [optional] tests & build
42
+ ENV NODE_ENV=production
43
+ RUN bun test
44
+ RUN bun run build
45
+
46
+ # copy production dependencies and source code into final image
47
+ FROM base AS release
48
+ COPY --from=install /temp/prod/node_modules node_modules
49
+ COPY --from=prerelease /usr/src/app/index.ts .
50
+ COPY --from=prerelease /usr/src/app/package.json .
51
+
52
+ # run the app
53
+ USER bun
54
+ EXPOSE 3000/tcp
55
+ ENTRYPOINT [ "bun", "run", "index.ts" ]
56
+ ```
57
+
58
+ ---
59
+
60
+ Now that you have your docker image, let's look at `.dockerignore` which has the same syntax as `.gitignore`, here you need to specify the files/directories that must not go in any stage of the docker build. An example for a ignore file is
61
+
62
+ ```txt .dockerignore icon="docker"
63
+ node_modules
64
+ Dockerfile*
65
+ docker-compose*
66
+ .dockerignore
67
+ .git
68
+ .gitignore
69
+ README.md
70
+ LICENSE
71
+ .vscode
72
+ Makefile
73
+ helm-charts
74
+ .env
75
+ .editorconfig
76
+ .idea
77
+ coverage*
78
+ ```
79
+
80
+ ---
81
+
82
+ We'll now use `docker build` to convert this `Dockerfile` into a _Docker image_, a self-contained template containing all the dependencies and configuration required to run the application.
83
+
84
+ The `-t` flag lets us specify a name for the image, and `--pull` tells Docker to automatically download the latest version of the base image (`oven/bun`). The initial build will take longer, as Docker will download all the base images and dependencies.
85
+
86
+ ```bash terminal icon="terminal"
87
+ docker build --pull -t bun-hello-world .
88
+ ```
89
+
90
+ ```txt
91
+ [+] Building 0.9s (21/21) FINISHED
92
+ => [internal] load build definition from Dockerfile 0.0s
93
+ => => transferring dockerfile: 37B 0.0s
94
+ => [internal] load .dockerignore 0.0s
95
+ => => transferring context: 35B 0.0s
96
+ => [internal] load metadata for docker.io/oven/bun:1 0.8s
97
+ => [auth] oven/bun:pull token for registry-1.docker.io 0.0s
98
+ => [base 1/2] FROM docker.io/oven/bun:1@sha256:373265748d3cd3624cb3f3ee6004f45b1fc3edbd07a622aeeec17566d2756997 0.0s
99
+ => [internal] load build context 0.0s
100
+ => => transferring context: 155B 0.0s
101
+ # ...lots of commands...
102
+ => exporting to image 0.0s
103
+ => => exporting layers 0.0s
104
+ => => writing image sha256:360663f7fdcd6f11e8e94761d5592e2e4dfc8d167f034f15cd5a863d5dc093c4 0.0s
105
+ => => naming to docker.io/library/bun-hello-world 0.0s
106
+ ```
107
+
108
+ ---
109
+
110
+ We've built a new _Docker image_. Now let's use that image to spin up an actual, running _container_.
111
+
112
+ We'll use `docker run` to start a new container using the `bun-hello-world` image. It will be run in _detached_ mode (`-d`) and we'll map the container's port 3000 to our local machine's port 3000 (`-p 3000:3000`).
113
+
114
+ The `run` command prints a string representing the _container ID_.
115
+
116
+ ```sh terminal icon="terminal"
117
+ docker run -d -p 3000:3000 bun-hello-world
118
+ ```
119
+
120
+ ```txt
121
+ 7f03e212a15ede8644379bce11a13589f563d3909a9640446c5bbefce993678d
122
+ ```
123
+
124
+ ---
125
+
126
+ The container is now running in the background. Visit [localhost:3000](http://localhost:3000). You should see a `Hello, World!` message.
127
+
128
+ ---
129
+
130
+ To stop the container, we'll use `docker stop <container-id>`.
131
+
132
+ ```sh terminal icon="terminal"
133
+ docker stop 7f03e212a15ede8644379bce11a13589f563d3909a9640446c5bbefce993678d
134
+ ```
135
+
136
+ ---
137
+
138
+ If you can't find the container ID, you can use `docker ps` to list all running containers.
139
+
140
+ ```sh terminal icon="terminal"
141
+ docker ps
142
+ ```
143
+
144
+ ```txt
145
+ CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
146
+ 7f03e212a15e bun-hello-world "bun run index.ts" 2 minutes ago Up 2 minutes 0.0.0.0:3000->3000/tcp flamboyant_cerf
147
+ ```
148
+
149
+ ---
150
+
151
+ That's it! Refer to the [Docker documentation](https://docs.docker.com/) for more advanced usage.
@@ -0,0 +1,195 @@
1
+ ---
2
+ title: Use Drizzle ORM with Bun
3
+ sidebarTitle: Drizzle with Bun
4
+ mode: center
5
+ ---
6
+
7
+ Drizzle is an ORM that supports both a SQL-like "query builder" API and an ORM-like [Queries API](https://orm.drizzle.team/docs/rqb). It supports the `bun:sqlite` built-in module.
8
+
9
+ ---
10
+
11
+ Let's get started by creating a fresh project with `bun init` and installing Drizzle.
12
+
13
+ ```sh terminal icon="terminal"
14
+ bun init -y
15
+ bun add drizzle-orm
16
+ bun add -D drizzle-kit
17
+ ```
18
+
19
+ ---
20
+
21
+ Then we'll connect to a SQLite database using the `bun:sqlite` module and create the Drizzle database instance.
22
+
23
+ ```ts db.ts icon="/icons/typescript.svg"
24
+ import { drizzle } from "drizzle-orm/bun-sqlite";
25
+ import { Database } from "bun:sqlite";
26
+
27
+ const sqlite = new Database("sqlite.db");
28
+ export const db = drizzle(sqlite);
29
+ ```
30
+
31
+ ---
32
+
33
+ To see the database in action, add these lines to `index.ts`.
34
+
35
+ ```ts index.ts icon="/icons/typescript.svg"
36
+ import { db } from "./db";
37
+ import { sql } from "drizzle-orm";
38
+
39
+ const query = sql`select "hello world" as text`;
40
+ const result = db.get<{ text: string }>(query);
41
+ console.log(result);
42
+ ```
43
+
44
+ ---
45
+
46
+ Then run `index.ts` with Bun. Bun will automatically create `sqlite.db` and execute the query.
47
+
48
+ ```sh terminal icon="terminal"
49
+ bun run index.ts
50
+ ```
51
+
52
+ ```txt
53
+ {
54
+ text: "hello world"
55
+ }
56
+ ```
57
+
58
+ ---
59
+
60
+ Lets give our database a proper schema. Create a `schema.ts` file and define a `movies` table.
61
+
62
+ ```ts schema.ts icon="/icons/typescript.svg"
63
+ import { sqliteTable, text, integer } from "drizzle-orm/sqlite-core";
64
+
65
+ export const movies = sqliteTable("movies", {
66
+ id: integer("id").primaryKey(),
67
+ title: text("name"),
68
+ releaseYear: integer("release_year"),
69
+ });
70
+ ```
71
+
72
+ ---
73
+
74
+ We can use the `drizzle-kit` CLI to generate an initial SQL migration.
75
+
76
+ ```sh terminal icon="terminal"
77
+ bunx drizzle-kit generate --dialect sqlite --schema ./schema.ts
78
+ ```
79
+
80
+ ---
81
+
82
+ This creates a new `drizzle` directory containing a `.sql` migration file and `meta` directory.
83
+
84
+ ```txt File Tree icon="folder-tree"
85
+ drizzle
86
+ ├── 0000_ordinary_beyonder.sql
87
+ └── meta
88
+ ├── 0000_snapshot.json
89
+ └── _journal.json
90
+ ```
91
+
92
+ ---
93
+
94
+ We can execute these migrations with a simple `migrate.ts` script.
95
+
96
+ This script creates a new connection to a SQLite database that writes to `sqlite.db`, then executes all unexecuted migrations in the `drizzle` directory.
97
+
98
+ ```ts migrate.ts icon="/icons/typescript.svg"
99
+ import { migrate } from "drizzle-orm/bun-sqlite/migrator";
100
+
101
+ import { drizzle } from "drizzle-orm/bun-sqlite";
102
+ import { Database } from "bun:sqlite";
103
+
104
+ const sqlite = new Database("sqlite.db");
105
+ const db = drizzle(sqlite);
106
+ migrate(db, { migrationsFolder: "./drizzle" });
107
+ ```
108
+
109
+ ---
110
+
111
+ We can run this script with `bun` to execute the migration.
112
+
113
+ ```sh terminal icon="terminal"
114
+ bun run migrate.ts
115
+ ```
116
+
117
+ ---
118
+
119
+ Now that we have a database, let's add some data to it. Create a `seed.ts` file with the following contents.
120
+
121
+ ```ts seed.ts icon="/icons/typescript.svg"
122
+ import { db } from "./db";
123
+ import * as schema from "./schema";
124
+
125
+ await db.insert(schema.movies).values([
126
+ {
127
+ title: "The Matrix",
128
+ releaseYear: 1999,
129
+ },
130
+ {
131
+ title: "The Matrix Reloaded",
132
+ releaseYear: 2003,
133
+ },
134
+ {
135
+ title: "The Matrix Revolutions",
136
+ releaseYear: 2003,
137
+ },
138
+ ]);
139
+
140
+ console.log(`Seeding complete.`);
141
+ ```
142
+
143
+ ---
144
+
145
+ Then run this file.
146
+
147
+ ```sh terminal icon="terminal"
148
+ bun run seed.ts
149
+ ```
150
+
151
+ ```txt
152
+ Seeding complete.
153
+ ```
154
+
155
+ ---
156
+
157
+ We finally have a database with a schema and some sample data. Let's use Drizzle to query it. Replace the contents of `index.ts` with the following.
158
+
159
+ ```ts index.ts icon="/icons/typescript.svg"
160
+ import * as schema from "./schema";
161
+ import { db } from "./db";
162
+
163
+ const result = await db.select().from(schema.movies);
164
+ console.log(result);
165
+ ```
166
+
167
+ ---
168
+
169
+ Then run the file. You should see the three movies we inserted.
170
+
171
+ ```sh terminal icon="terminal"
172
+ bun run index.ts
173
+ ```
174
+
175
+ ```txt
176
+ [
177
+ {
178
+ id: 1,
179
+ title: "The Matrix",
180
+ releaseYear: 1999
181
+ }, {
182
+ id: 2,
183
+ title: "The Matrix Reloaded",
184
+ releaseYear: 2003
185
+ }, {
186
+ id: 3,
187
+ title: "The Matrix Revolutions",
188
+ releaseYear: 2003
189
+ }
190
+ ]
191
+ ```
192
+
193
+ ---
194
+
195
+ Refer to the [Drizzle website](https://orm.drizzle.team/docs/overview) for complete documentation.