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.
- package/bun.d.ts +102 -6
- package/docs/bundler/bytecode.mdx +465 -0
- package/docs/bundler/css.mdx +1024 -0
- package/docs/bundler/esbuild.mdx +253 -0
- package/docs/bundler/executables.mdx +535 -0
- package/docs/bundler/fullstack.mdx +1064 -0
- package/docs/bundler/hot-reloading.mdx +229 -0
- package/docs/bundler/html-static.mdx +386 -0
- package/docs/bundler/index.mdx +1499 -0
- package/docs/bundler/loaders.mdx +356 -0
- package/docs/bundler/macros.mdx +328 -0
- package/docs/bundler/minifier.mdx +1306 -0
- package/docs/bundler/plugins.mdx +411 -0
- package/docs/feedback.mdx +85 -0
- package/docs/guides/binary/arraybuffer-to-array.mdx +29 -0
- package/docs/guides/binary/arraybuffer-to-blob.mdx +26 -0
- package/docs/guides/binary/arraybuffer-to-buffer.mdx +27 -0
- package/docs/guides/binary/arraybuffer-to-string.mdx +17 -0
- package/docs/guides/binary/arraybuffer-to-typedarray.mdx +41 -0
- package/docs/guides/binary/blob-to-arraybuffer.mdx +16 -0
- package/docs/guides/binary/blob-to-dataview.mdx +16 -0
- package/docs/guides/binary/blob-to-stream.mdx +16 -0
- package/docs/guides/binary/blob-to-string.mdx +17 -0
- package/docs/guides/binary/blob-to-typedarray.mdx +16 -0
- package/docs/guides/binary/buffer-to-arraybuffer.mdx +16 -0
- package/docs/guides/binary/buffer-to-blob.mdx +16 -0
- package/docs/guides/binary/buffer-to-readablestream.mdx +43 -0
- package/docs/guides/binary/buffer-to-string.mdx +27 -0
- package/docs/guides/binary/buffer-to-typedarray.mdx +16 -0
- package/docs/guides/binary/dataview-to-string.mdx +17 -0
- package/docs/guides/binary/typedarray-to-arraybuffer.mdx +27 -0
- package/docs/guides/binary/typedarray-to-blob.mdx +18 -0
- package/docs/guides/binary/typedarray-to-buffer.mdx +16 -0
- package/docs/guides/binary/typedarray-to-dataview.mdx +16 -0
- package/docs/guides/binary/typedarray-to-readablestream.mdx +43 -0
- package/docs/guides/binary/typedarray-to-string.mdx +18 -0
- package/docs/guides/deployment/aws-lambda.mdx +204 -0
- package/docs/guides/deployment/digital-ocean.mdx +161 -0
- package/docs/guides/deployment/google-cloud-run.mdx +197 -0
- package/docs/guides/deployment/railway.mdx +145 -0
- package/docs/guides/deployment/render.mdx +82 -0
- package/docs/guides/deployment/vercel.mdx +99 -0
- package/docs/guides/ecosystem/astro.mdx +82 -0
- package/docs/guides/ecosystem/discordjs.mdx +80 -0
- package/docs/guides/ecosystem/docker.mdx +151 -0
- package/docs/guides/ecosystem/drizzle.mdx +195 -0
- package/docs/guides/ecosystem/edgedb.mdx +257 -0
- package/docs/guides/ecosystem/elysia.mdx +31 -0
- package/docs/guides/ecosystem/express.mdx +43 -0
- package/docs/guides/ecosystem/hono.mdx +47 -0
- package/docs/guides/ecosystem/mongoose.mdx +92 -0
- package/docs/guides/ecosystem/neon-drizzle.mdx +234 -0
- package/docs/guides/ecosystem/neon-serverless-postgres.mdx +60 -0
- package/docs/guides/ecosystem/nextjs.mdx +57 -0
- package/docs/guides/ecosystem/nuxt.mdx +90 -0
- package/docs/guides/ecosystem/pm2.mdx +55 -0
- package/docs/guides/ecosystem/prisma-postgres.mdx +169 -0
- package/docs/guides/ecosystem/prisma.mdx +164 -0
- package/docs/guides/ecosystem/qwik.mdx +114 -0
- package/docs/guides/ecosystem/react.mdx +52 -0
- package/docs/guides/ecosystem/remix.mdx +97 -0
- package/docs/guides/ecosystem/sentry.mdx +54 -0
- package/docs/guides/ecosystem/solidstart.mdx +66 -0
- package/docs/guides/ecosystem/ssr-react.mdx +49 -0
- package/docs/guides/ecosystem/stric.mdx +54 -0
- package/docs/guides/ecosystem/sveltekit.mdx +138 -0
- package/docs/guides/ecosystem/systemd.mdx +114 -0
- package/docs/guides/ecosystem/upstash.mdx +87 -0
- package/docs/guides/ecosystem/vite.mdx +77 -0
- package/docs/guides/html-rewriter/extract-links.mdx +72 -0
- package/docs/guides/html-rewriter/extract-social-meta.mdx +97 -0
- package/docs/guides/http/cluster.mdx +69 -0
- package/docs/guides/http/fetch-unix.mdx +35 -0
- package/docs/guides/http/fetch.mdx +26 -0
- package/docs/guides/http/file-uploads.mdx +97 -0
- package/docs/guides/http/hot.mdx +28 -0
- package/docs/guides/http/proxy.mdx +26 -0
- package/docs/guides/http/server.mdx +48 -0
- package/docs/guides/http/simple.mdx +20 -0
- package/docs/guides/http/stream-file.mdx +50 -0
- package/docs/guides/http/stream-iterator.mdx +49 -0
- package/docs/guides/http/stream-node-streams-in-bun.mdx +22 -0
- package/docs/guides/http/tls.mdx +32 -0
- package/docs/guides/index.mdx +10 -0
- package/docs/guides/install/add-dev.mdx +28 -0
- package/docs/guides/install/add-git.mdx +38 -0
- package/docs/guides/install/add-optional.mdx +27 -0
- package/docs/guides/install/add-peer.mdx +45 -0
- package/docs/guides/install/add-tarball.mdx +35 -0
- package/docs/guides/install/add.mdx +44 -0
- package/docs/guides/install/azure-artifacts.mdx +76 -0
- package/docs/guides/install/cicd.mdx +43 -0
- package/docs/guides/install/custom-registry.mdx +32 -0
- package/docs/guides/install/from-npm-install-to-bun-install.mdx +230 -0
- package/docs/guides/install/git-diff-bun-lockfile.mdx +47 -0
- package/docs/guides/install/jfrog-artifactory.mdx +28 -0
- package/docs/guides/install/npm-alias.mdx +25 -0
- package/docs/guides/install/registry-scope.mdx +40 -0
- package/docs/guides/install/trusted.mdx +50 -0
- package/docs/guides/install/workspaces.mdx +70 -0
- package/docs/guides/install/yarnlock.mdx +50 -0
- package/docs/guides/process/argv.mdx +66 -0
- package/docs/guides/process/ctrl-c.mdx +18 -0
- package/docs/guides/process/ipc.mdx +69 -0
- package/docs/guides/process/nanoseconds.mdx +15 -0
- package/docs/guides/process/os-signals.mdx +41 -0
- package/docs/guides/process/spawn-stderr.mdx +34 -0
- package/docs/guides/process/spawn-stdout.mdx +28 -0
- package/docs/guides/process/spawn.mdx +43 -0
- package/docs/guides/process/stdin.mdx +62 -0
- package/docs/guides/read-file/arraybuffer.mdx +30 -0
- package/docs/guides/read-file/buffer.mdx +21 -0
- package/docs/guides/read-file/exists.mdx +18 -0
- package/docs/guides/read-file/json.mdx +19 -0
- package/docs/guides/read-file/mime.mdx +22 -0
- package/docs/guides/read-file/stream.mdx +28 -0
- package/docs/guides/read-file/string.mdx +24 -0
- package/docs/guides/read-file/uint8array.mdx +23 -0
- package/docs/guides/read-file/watch.mdx +66 -0
- package/docs/guides/runtime/build-time-constants.mdx +295 -0
- package/docs/guides/runtime/cicd.mdx +45 -0
- package/docs/guides/runtime/codesign-macos-executable.mdx +61 -0
- package/docs/guides/runtime/define-constant.mdx +149 -0
- package/docs/guides/runtime/delete-directory.mdx +39 -0
- package/docs/guides/runtime/delete-file.mdx +21 -0
- package/docs/guides/runtime/heap-snapshot.mdx +28 -0
- package/docs/guides/runtime/import-html.mdx +17 -0
- package/docs/guides/runtime/import-json.mdx +46 -0
- package/docs/guides/runtime/import-toml.mdx +32 -0
- package/docs/guides/runtime/import-yaml.mdx +104 -0
- package/docs/guides/runtime/read-env.mdx +37 -0
- package/docs/guides/runtime/set-env.mdx +51 -0
- package/docs/guides/runtime/shell.mdx +42 -0
- package/docs/guides/runtime/timezone.mdx +38 -0
- package/docs/guides/runtime/tsconfig-paths.mdx +31 -0
- package/docs/guides/runtime/typescript.mdx +51 -0
- package/docs/guides/runtime/vscode-debugger.mdx +48 -0
- package/docs/guides/runtime/web-debugger.mdx +103 -0
- package/docs/guides/streams/node-readable-to-arraybuffer.mdx +13 -0
- package/docs/guides/streams/node-readable-to-blob.mdx +13 -0
- package/docs/guides/streams/node-readable-to-json.mdx +14 -0
- package/docs/guides/streams/node-readable-to-string.mdx +14 -0
- package/docs/guides/streams/node-readable-to-uint8array.mdx +13 -0
- package/docs/guides/streams/to-array.mdx +16 -0
- package/docs/guides/streams/to-arraybuffer.mdx +16 -0
- package/docs/guides/streams/to-blob.mdx +16 -0
- package/docs/guides/streams/to-buffer.mdx +17 -0
- package/docs/guides/streams/to-json.mdx +16 -0
- package/docs/guides/streams/to-string.mdx +16 -0
- package/docs/guides/streams/to-typedarray.mdx +24 -0
- package/docs/guides/test/bail.mdx +24 -0
- package/docs/guides/test/coverage-threshold.mdx +67 -0
- package/docs/guides/test/coverage.mdx +49 -0
- package/docs/guides/test/happy-dom.mdx +73 -0
- package/docs/guides/test/migrate-from-jest.mdx +125 -0
- package/docs/guides/test/mock-clock.mdx +50 -0
- package/docs/guides/test/mock-functions.mdx +70 -0
- package/docs/guides/test/rerun-each.mdx +16 -0
- package/docs/guides/test/run-tests.mdx +116 -0
- package/docs/guides/test/skip-tests.mdx +43 -0
- package/docs/guides/test/snapshot.mdx +102 -0
- package/docs/guides/test/spy-on.mdx +49 -0
- package/docs/guides/test/svelte-test.mdx +113 -0
- package/docs/guides/test/testing-library.mdx +93 -0
- package/docs/guides/test/timeout.mdx +17 -0
- package/docs/guides/test/todo-tests.mdx +74 -0
- package/docs/guides/test/update-snapshots.mdx +49 -0
- package/docs/guides/test/watch-mode.mdx +24 -0
- package/docs/guides/util/base64.mdx +17 -0
- package/docs/guides/util/deep-equals.mdx +41 -0
- package/docs/guides/util/deflate.mdx +20 -0
- package/docs/guides/util/detect-bun.mdx +25 -0
- package/docs/guides/util/entrypoint.mdx +19 -0
- package/docs/guides/util/escape-html.mdx +24 -0
- package/docs/guides/util/file-url-to-path.mdx +16 -0
- package/docs/guides/util/gzip.mdx +20 -0
- package/docs/guides/util/hash-a-password.mdx +56 -0
- package/docs/guides/util/import-meta-dir.mdx +15 -0
- package/docs/guides/util/import-meta-file.mdx +15 -0
- package/docs/guides/util/import-meta-path.mdx +15 -0
- package/docs/guides/util/javascript-uuid.mdx +25 -0
- package/docs/guides/util/main.mdx +43 -0
- package/docs/guides/util/path-to-file-url.mdx +16 -0
- package/docs/guides/util/sleep.mdx +24 -0
- package/docs/guides/util/version.mdx +23 -0
- package/docs/guides/util/which-path-to-executable-bin.mdx +17 -0
- package/docs/guides/websocket/compression.mdx +33 -0
- package/docs/guides/websocket/context.mdx +74 -0
- package/docs/guides/websocket/pubsub.mdx +40 -0
- package/docs/guides/websocket/simple.mdx +35 -0
- package/docs/guides/write-file/append.mdx +54 -0
- package/docs/guides/write-file/basic.mdx +46 -0
- package/docs/guides/write-file/blob.mdx +30 -0
- package/docs/guides/write-file/cat.mdx +19 -0
- package/docs/guides/write-file/file-cp.mdx +18 -0
- package/docs/guides/write-file/filesink.mdx +54 -0
- package/docs/guides/write-file/response.mdx +19 -0
- package/docs/guides/write-file/stdout.mdx +23 -0
- package/docs/guides/write-file/stream.mdx +19 -0
- package/docs/guides/write-file/unlink.mdx +18 -0
- package/docs/index.mdx +133 -0
- package/docs/installation.mdx +365 -0
- package/docs/pm/bunx.mdx +83 -0
- package/docs/pm/catalogs.mdx +292 -0
- package/docs/pm/cli/add.mdx +179 -0
- package/docs/pm/cli/audit.mdx +60 -0
- package/docs/pm/cli/install.mdx +471 -0
- package/docs/pm/cli/link.mdx +48 -0
- package/docs/pm/cli/outdated.mdx +197 -0
- package/docs/pm/cli/patch.mdx +69 -0
- package/docs/pm/cli/pm.mdx +319 -0
- package/docs/pm/cli/publish.mdx +123 -0
- package/docs/pm/cli/remove.mdx +16 -0
- package/docs/pm/cli/update.mdx +140 -0
- package/docs/pm/cli/why.mdx +84 -0
- package/docs/pm/filter.mdx +102 -0
- package/docs/pm/global-cache.mdx +72 -0
- package/docs/pm/isolated-installs.mdx +205 -0
- package/docs/pm/lifecycle.mdx +57 -0
- package/docs/pm/lockfile.mdx +64 -0
- package/docs/pm/npmrc.mdx +111 -0
- package/docs/pm/overrides.mdx +83 -0
- package/docs/pm/scopes-registries.mdx +35 -0
- package/docs/pm/security-scanner-api.mdx +95 -0
- package/docs/pm/workspaces.mdx +109 -0
- package/docs/project/benchmarking.mdx +218 -0
- package/docs/project/bindgen.mdx +223 -0
- package/docs/project/building-windows.mdx +133 -0
- package/docs/project/contributing.mdx +343 -0
- package/docs/project/feedback.mdx +20 -0
- package/docs/project/license.mdx +78 -0
- package/docs/project/roadmap.mdx +8 -0
- package/docs/quickstart.mdx +240 -0
- package/docs/runtime/auto-install.mdx +97 -0
- package/docs/runtime/binary-data.mdx +846 -0
- package/docs/runtime/bun-apis.mdx +59 -0
- package/docs/runtime/bunfig.mdx +642 -0
- package/docs/runtime/c-compiler.mdx +204 -0
- package/docs/runtime/child-process.mdx +532 -0
- package/docs/runtime/color.mdx +267 -0
- package/docs/runtime/console.mdx +67 -0
- package/docs/runtime/cookies.mdx +454 -0
- package/docs/runtime/debugger.mdx +335 -0
- package/docs/runtime/environment-variables.mdx +214 -0
- package/docs/runtime/ffi.mdx +565 -0
- package/docs/runtime/file-io.mdx +306 -0
- package/docs/runtime/file-system-router.mdx +118 -0
- package/docs/runtime/file-types.mdx +354 -0
- package/docs/runtime/glob.mdx +181 -0
- package/docs/runtime/globals.mdx +72 -0
- package/docs/runtime/hashing.mdx +315 -0
- package/docs/runtime/html-rewriter.mdx +340 -0
- package/docs/runtime/http/cookies.mdx +79 -0
- package/docs/runtime/http/error-handling.mdx +40 -0
- package/docs/runtime/http/metrics.mdx +36 -0
- package/docs/runtime/http/routing.mdx +289 -0
- package/docs/runtime/http/server.mdx +647 -0
- package/docs/runtime/http/tls.mdx +101 -0
- package/docs/runtime/http/websockets.mdx +404 -0
- package/docs/runtime/index.mdx +223 -0
- package/docs/runtime/jsx.mdx +115 -0
- package/docs/runtime/module-resolution.mdx +342 -0
- package/docs/runtime/networking/dns.mdx +111 -0
- package/docs/runtime/networking/fetch.mdx +468 -0
- package/docs/runtime/networking/tcp.mdx +239 -0
- package/docs/runtime/networking/udp.mdx +129 -0
- package/docs/runtime/node-api.mdx +19 -0
- package/docs/runtime/nodejs-compat.mdx +468 -0
- package/docs/runtime/plugins.mdx +405 -0
- package/docs/runtime/redis.mdx +582 -0
- package/docs/runtime/s3.mdx +863 -0
- package/docs/runtime/secrets.mdx +336 -0
- package/docs/runtime/semver.mdx +57 -0
- package/docs/runtime/shell.mdx +637 -0
- package/docs/runtime/sql.mdx +1404 -0
- package/docs/runtime/sqlite.mdx +699 -0
- package/docs/runtime/streams.mdx +232 -0
- package/docs/runtime/templating/create.mdx +269 -0
- package/docs/runtime/templating/init.mdx +58 -0
- package/docs/runtime/transpiler.mdx +288 -0
- package/docs/runtime/typescript.mdx +58 -0
- package/docs/runtime/utils.mdx +922 -0
- package/docs/runtime/watch-mode.mdx +161 -0
- package/docs/runtime/web-apis.mdx +29 -0
- package/docs/runtime/workers.mdx +328 -0
- package/docs/runtime/yaml.mdx +469 -0
- package/docs/snippets/cli/add.mdx +166 -0
- package/docs/snippets/cli/build.mdx +196 -0
- package/docs/snippets/cli/feedback.mdx +17 -0
- package/docs/snippets/cli/init.mdx +84 -0
- package/docs/snippets/cli/install.mdx +173 -0
- package/docs/snippets/cli/link.mdx +163 -0
- package/docs/snippets/cli/outdated.mdx +140 -0
- package/docs/snippets/cli/patch.mdx +171 -0
- package/docs/snippets/cli/publish.mdx +198 -0
- package/docs/snippets/cli/remove.mdx +146 -0
- package/docs/snippets/cli/run.mdx +293 -0
- package/docs/snippets/cli/test.mdx +100 -0
- package/docs/snippets/cli/update.mdx +144 -0
- package/docs/snippets/product-card.mdx +32 -0
- package/docs/snippets/product-tiles.mdx +94 -0
- package/docs/test/code-coverage.mdx +409 -0
- package/docs/test/configuration.mdx +467 -0
- package/docs/test/dates-times.mdx +129 -0
- package/docs/test/discovery.mdx +90 -0
- package/docs/test/dom.mdx +226 -0
- package/docs/test/index.mdx +380 -0
- package/docs/test/lifecycle.mdx +348 -0
- package/docs/test/mocks.mdx +637 -0
- package/docs/test/reporters.mdx +117 -0
- package/docs/test/runtime-behavior.mdx +342 -0
- package/docs/test/snapshots.mdx +434 -0
- package/docs/test/writing-tests.mdx +635 -0
- package/docs/typescript.mdx +54 -0
- package/package.json +8 -6
- 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.
|