bun-types 1.3.2-canary.20251104T140728 → 1.3.2-canary.20251106T140813

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (312) hide show
  1. package/bun.d.ts +4 -4
  2. package/docs/README.md +28 -0
  3. package/globals.d.ts +0 -1
  4. package/overrides.d.ts +45 -15
  5. package/package.json +1 -1
  6. package/test.d.ts +1 -1
  7. package/docs/api/binary-data.md +0 -1038
  8. package/docs/api/cc.md +0 -197
  9. package/docs/api/color.md +0 -262
  10. package/docs/api/console.md +0 -57
  11. package/docs/api/cookie.md +0 -449
  12. package/docs/api/dns.md +0 -110
  13. package/docs/api/fetch.md +0 -463
  14. package/docs/api/ffi.md +0 -557
  15. package/docs/api/file-io.md +0 -366
  16. package/docs/api/file-system-router.md +0 -112
  17. package/docs/api/file.md +0 -19
  18. package/docs/api/glob.md +0 -178
  19. package/docs/api/globals.md +0 -387
  20. package/docs/api/hashing.md +0 -319
  21. package/docs/api/html-rewriter.md +0 -334
  22. package/docs/api/http.md +0 -1408
  23. package/docs/api/import-meta.md +0 -69
  24. package/docs/api/node-api.md +0 -14
  25. package/docs/api/redis.md +0 -597
  26. package/docs/api/s3.md +0 -850
  27. package/docs/api/secrets.md +0 -319
  28. package/docs/api/semver.md +0 -52
  29. package/docs/api/spawn.md +0 -582
  30. package/docs/api/sql.md +0 -1374
  31. package/docs/api/sqlite.md +0 -694
  32. package/docs/api/streams.md +0 -230
  33. package/docs/api/tcp.md +0 -221
  34. package/docs/api/transpiler.md +0 -276
  35. package/docs/api/udp.md +0 -123
  36. package/docs/api/utils.md +0 -891
  37. package/docs/api/websockets.md +0 -573
  38. package/docs/api/workers.md +0 -322
  39. package/docs/api/yaml.md +0 -668
  40. package/docs/benchmarks.md +0 -120
  41. package/docs/bun-flavored-toml.md +0 -42
  42. package/docs/bundler/css.md +0 -1028
  43. package/docs/bundler/css_modules.md +0 -145
  44. package/docs/bundler/executables.md +0 -626
  45. package/docs/bundler/fullstack.md +0 -418
  46. package/docs/bundler/hmr.md +0 -234
  47. package/docs/bundler/html.md +0 -349
  48. package/docs/bundler/index.md +0 -1735
  49. package/docs/bundler/intro.md +0 -75
  50. package/docs/bundler/loaders.md +0 -410
  51. package/docs/bundler/macros.md +0 -329
  52. package/docs/bundler/plugins.md +0 -449
  53. package/docs/bundler/vs-esbuild.md +0 -1127
  54. package/docs/cli/add.md +0 -173
  55. package/docs/cli/bun-completions.md +0 -3
  56. package/docs/cli/bun-create.md +0 -338
  57. package/docs/cli/bun-install.md +0 -349
  58. package/docs/cli/bun-upgrade.md +0 -39
  59. package/docs/cli/bunx.md +0 -89
  60. package/docs/cli/filter.md +0 -90
  61. package/docs/cli/info.md +0 -65
  62. package/docs/cli/init.md +0 -85
  63. package/docs/cli/install.md +0 -344
  64. package/docs/cli/link.md +0 -40
  65. package/docs/cli/outdated.md +0 -90
  66. package/docs/cli/patch-commit.md +0 -11
  67. package/docs/cli/pm.md +0 -285
  68. package/docs/cli/publish.md +0 -120
  69. package/docs/cli/remove.md +0 -7
  70. package/docs/cli/run.md +0 -261
  71. package/docs/cli/test.md +0 -397
  72. package/docs/cli/unlink.md +0 -9
  73. package/docs/cli/update.md +0 -129
  74. package/docs/cli/why.md +0 -67
  75. package/docs/contributing/upgrading-webkit.md +0 -57
  76. package/docs/ecosystem/elysia.md +0 -24
  77. package/docs/ecosystem/express.md +0 -37
  78. package/docs/ecosystem/hono.md +0 -18
  79. package/docs/ecosystem/react.md +0 -65
  80. package/docs/ecosystem/stric.md +0 -38
  81. package/docs/guides/binary/arraybuffer-to-array.md +0 -27
  82. package/docs/guides/binary/arraybuffer-to-blob.md +0 -24
  83. package/docs/guides/binary/arraybuffer-to-buffer.md +0 -25
  84. package/docs/guides/binary/arraybuffer-to-string.md +0 -15
  85. package/docs/guides/binary/arraybuffer-to-typedarray.md +0 -39
  86. package/docs/guides/binary/blob-to-arraybuffer.md +0 -14
  87. package/docs/guides/binary/blob-to-dataview.md +0 -14
  88. package/docs/guides/binary/blob-to-stream.md +0 -14
  89. package/docs/guides/binary/blob-to-string.md +0 -15
  90. package/docs/guides/binary/blob-to-typedarray.md +0 -14
  91. package/docs/guides/binary/buffer-to-arraybuffer.md +0 -14
  92. package/docs/guides/binary/buffer-to-blob.md +0 -14
  93. package/docs/guides/binary/buffer-to-readablestream.md +0 -41
  94. package/docs/guides/binary/buffer-to-string.md +0 -25
  95. package/docs/guides/binary/buffer-to-typedarray.md +0 -14
  96. package/docs/guides/binary/dataview-to-string.md +0 -15
  97. package/docs/guides/binary/typedarray-to-arraybuffer.md +0 -25
  98. package/docs/guides/binary/typedarray-to-blob.md +0 -16
  99. package/docs/guides/binary/typedarray-to-buffer.md +0 -14
  100. package/docs/guides/binary/typedarray-to-dataview.md +0 -14
  101. package/docs/guides/binary/typedarray-to-readablestream.md +0 -41
  102. package/docs/guides/binary/typedarray-to-string.md +0 -16
  103. package/docs/guides/deployment/railway.md +0 -157
  104. package/docs/guides/ecosystem/astro.md +0 -72
  105. package/docs/guides/ecosystem/discordjs.md +0 -77
  106. package/docs/guides/ecosystem/docker.md +0 -140
  107. package/docs/guides/ecosystem/drizzle.md +0 -185
  108. package/docs/guides/ecosystem/edgedb.md +0 -228
  109. package/docs/guides/ecosystem/elysia.md +0 -31
  110. package/docs/guides/ecosystem/express.md +0 -40
  111. package/docs/guides/ecosystem/hono.md +0 -39
  112. package/docs/guides/ecosystem/mongoose.md +0 -87
  113. package/docs/guides/ecosystem/neon-drizzle.md +0 -220
  114. package/docs/guides/ecosystem/neon-serverless-postgres.md +0 -55
  115. package/docs/guides/ecosystem/nextjs.md +0 -49
  116. package/docs/guides/ecosystem/nuxt.md +0 -56
  117. package/docs/guides/ecosystem/pm2.md +0 -57
  118. package/docs/guides/ecosystem/prisma.md +0 -141
  119. package/docs/guides/ecosystem/qwik.md +0 -107
  120. package/docs/guides/ecosystem/react.md +0 -50
  121. package/docs/guides/ecosystem/remix.md +0 -78
  122. package/docs/guides/ecosystem/render.md +0 -79
  123. package/docs/guides/ecosystem/sentry.md +0 -52
  124. package/docs/guides/ecosystem/solidstart.md +0 -58
  125. package/docs/guides/ecosystem/ssr-react.md +0 -51
  126. package/docs/guides/ecosystem/stric.md +0 -55
  127. package/docs/guides/ecosystem/sveltekit.md +0 -125
  128. package/docs/guides/ecosystem/systemd.md +0 -113
  129. package/docs/guides/ecosystem/vite.md +0 -71
  130. package/docs/guides/html-rewriter/extract-links.md +0 -68
  131. package/docs/guides/html-rewriter/extract-social-meta.md +0 -93
  132. package/docs/guides/http/cluster.md +0 -66
  133. package/docs/guides/http/fetch-unix.md +0 -33
  134. package/docs/guides/http/fetch.md +0 -24
  135. package/docs/guides/http/file-uploads.md +0 -94
  136. package/docs/guides/http/hot.md +0 -26
  137. package/docs/guides/http/proxy.md +0 -24
  138. package/docs/guides/http/server.md +0 -46
  139. package/docs/guides/http/simple.md +0 -18
  140. package/docs/guides/http/stream-file.md +0 -48
  141. package/docs/guides/http/stream-iterator.md +0 -47
  142. package/docs/guides/http/stream-node-streams-in-bun.md +0 -20
  143. package/docs/guides/http/tls.md +0 -30
  144. package/docs/guides/install/add-dev.md +0 -26
  145. package/docs/guides/install/add-git.md +0 -36
  146. package/docs/guides/install/add-optional.md +0 -25
  147. package/docs/guides/install/add-peer.md +0 -43
  148. package/docs/guides/install/add-tarball.md +0 -33
  149. package/docs/guides/install/add.md +0 -42
  150. package/docs/guides/install/azure-artifacts.md +0 -73
  151. package/docs/guides/install/cicd.md +0 -41
  152. package/docs/guides/install/custom-registry.md +0 -30
  153. package/docs/guides/install/from-npm-install-to-bun-install.md +0 -214
  154. package/docs/guides/install/git-diff-bun-lockfile.md +0 -44
  155. package/docs/guides/install/jfrog-artifactory.md +0 -28
  156. package/docs/guides/install/npm-alias.md +0 -23
  157. package/docs/guides/install/registry-scope.md +0 -38
  158. package/docs/guides/install/trusted.md +0 -46
  159. package/docs/guides/install/workspaces.md +0 -70
  160. package/docs/guides/install/yarnlock.md +0 -44
  161. package/docs/guides/process/argv.md +0 -58
  162. package/docs/guides/process/ctrl-c.md +0 -16
  163. package/docs/guides/process/ipc.md +0 -66
  164. package/docs/guides/process/nanoseconds.md +0 -13
  165. package/docs/guides/process/os-signals.md +0 -39
  166. package/docs/guides/process/spawn-stderr.md +0 -31
  167. package/docs/guides/process/spawn-stdout.md +0 -26
  168. package/docs/guides/process/spawn.md +0 -41
  169. package/docs/guides/process/stdin.md +0 -54
  170. package/docs/guides/read-file/arraybuffer.md +0 -28
  171. package/docs/guides/read-file/buffer.md +0 -19
  172. package/docs/guides/read-file/exists.md +0 -16
  173. package/docs/guides/read-file/json.md +0 -17
  174. package/docs/guides/read-file/mime.md +0 -20
  175. package/docs/guides/read-file/stream.md +0 -26
  176. package/docs/guides/read-file/string.md +0 -22
  177. package/docs/guides/read-file/uint8array.md +0 -21
  178. package/docs/guides/read-file/watch.md +0 -68
  179. package/docs/guides/runtime/build-time-constants.md +0 -293
  180. package/docs/guides/runtime/cicd.md +0 -43
  181. package/docs/guides/runtime/codesign-macos-executable.md +0 -56
  182. package/docs/guides/runtime/define-constant.md +0 -145
  183. package/docs/guides/runtime/delete-directory.md +0 -37
  184. package/docs/guides/runtime/delete-file.md +0 -19
  185. package/docs/guides/runtime/heap-snapshot.md +0 -26
  186. package/docs/guides/runtime/import-html.md +0 -15
  187. package/docs/guides/runtime/import-json.md +0 -44
  188. package/docs/guides/runtime/import-toml.md +0 -30
  189. package/docs/guides/runtime/import-yaml.md +0 -102
  190. package/docs/guides/runtime/read-env.md +0 -32
  191. package/docs/guides/runtime/set-env.md +0 -47
  192. package/docs/guides/runtime/shell.md +0 -40
  193. package/docs/guides/runtime/timezone.md +0 -35
  194. package/docs/guides/runtime/tsconfig-paths.md +0 -29
  195. package/docs/guides/runtime/typescript.md +0 -49
  196. package/docs/guides/runtime/vscode-debugger.md +0 -47
  197. package/docs/guides/runtime/web-debugger.md +0 -82
  198. package/docs/guides/streams/node-readable-to-arraybuffer.md +0 -11
  199. package/docs/guides/streams/node-readable-to-blob.md +0 -11
  200. package/docs/guides/streams/node-readable-to-json.md +0 -12
  201. package/docs/guides/streams/node-readable-to-string.md +0 -12
  202. package/docs/guides/streams/node-readable-to-uint8array.md +0 -11
  203. package/docs/guides/streams/to-array.md +0 -14
  204. package/docs/guides/streams/to-arraybuffer.md +0 -14
  205. package/docs/guides/streams/to-blob.md +0 -14
  206. package/docs/guides/streams/to-buffer.md +0 -15
  207. package/docs/guides/streams/to-json.md +0 -14
  208. package/docs/guides/streams/to-string.md +0 -14
  209. package/docs/guides/streams/to-typedarray.md +0 -22
  210. package/docs/guides/test/bail.md +0 -22
  211. package/docs/guides/test/coverage-threshold.md +0 -60
  212. package/docs/guides/test/coverage.md +0 -44
  213. package/docs/guides/test/happy-dom.md +0 -68
  214. package/docs/guides/test/migrate-from-jest.md +0 -143
  215. package/docs/guides/test/mock-clock.md +0 -48
  216. package/docs/guides/test/mock-functions.md +0 -68
  217. package/docs/guides/test/rerun-each.md +0 -14
  218. package/docs/guides/test/run-tests.md +0 -111
  219. package/docs/guides/test/skip-tests.md +0 -39
  220. package/docs/guides/test/snapshot.md +0 -95
  221. package/docs/guides/test/spy-on.md +0 -46
  222. package/docs/guides/test/svelte-test.md +0 -120
  223. package/docs/guides/test/testing-library.md +0 -92
  224. package/docs/guides/test/timeout.md +0 -15
  225. package/docs/guides/test/todo-tests.md +0 -67
  226. package/docs/guides/test/update-snapshots.md +0 -46
  227. package/docs/guides/test/watch-mode.md +0 -19
  228. package/docs/guides/util/base64.md +0 -15
  229. package/docs/guides/util/deep-equals.md +0 -39
  230. package/docs/guides/util/deflate.md +0 -18
  231. package/docs/guides/util/detect-bun.md +0 -23
  232. package/docs/guides/util/entrypoint.md +0 -17
  233. package/docs/guides/util/escape-html.md +0 -22
  234. package/docs/guides/util/file-url-to-path.md +0 -14
  235. package/docs/guides/util/gzip.md +0 -18
  236. package/docs/guides/util/hash-a-password.md +0 -54
  237. package/docs/guides/util/import-meta-dir.md +0 -13
  238. package/docs/guides/util/import-meta-file.md +0 -13
  239. package/docs/guides/util/import-meta-path.md +0 -13
  240. package/docs/guides/util/javascript-uuid.md +0 -23
  241. package/docs/guides/util/main.md +0 -32
  242. package/docs/guides/util/path-to-file-url.md +0 -14
  243. package/docs/guides/util/sleep.md +0 -22
  244. package/docs/guides/util/version.md +0 -21
  245. package/docs/guides/util/which-path-to-executable-bin.md +0 -15
  246. package/docs/guides/websocket/compression.md +0 -31
  247. package/docs/guides/websocket/context.md +0 -77
  248. package/docs/guides/websocket/pubsub.md +0 -41
  249. package/docs/guides/websocket/simple.md +0 -33
  250. package/docs/guides/write-file/append.md +0 -52
  251. package/docs/guides/write-file/basic.md +0 -44
  252. package/docs/guides/write-file/blob.md +0 -28
  253. package/docs/guides/write-file/cat.md +0 -17
  254. package/docs/guides/write-file/file-cp.md +0 -16
  255. package/docs/guides/write-file/filesink.md +0 -52
  256. package/docs/guides/write-file/response.md +0 -17
  257. package/docs/guides/write-file/stdout.md +0 -21
  258. package/docs/guides/write-file/stream.md +0 -17
  259. package/docs/guides/write-file/unlink.md +0 -16
  260. package/docs/index.md +0 -77
  261. package/docs/install/audit.md +0 -57
  262. package/docs/install/cache.md +0 -59
  263. package/docs/install/catalogs.md +0 -298
  264. package/docs/install/index.md +0 -248
  265. package/docs/install/isolated.md +0 -197
  266. package/docs/install/lifecycle.md +0 -46
  267. package/docs/install/lockfile.md +0 -58
  268. package/docs/install/npmrc.md +0 -105
  269. package/docs/install/overrides.md +0 -73
  270. package/docs/install/patch.md +0 -59
  271. package/docs/install/registries.md +0 -30
  272. package/docs/install/security-scanner-api.md +0 -81
  273. package/docs/install/workspaces.md +0 -114
  274. package/docs/installation.md +0 -327
  275. package/docs/project/asan.md +0 -124
  276. package/docs/project/benchmarking.md +0 -203
  277. package/docs/project/bindgen.md +0 -225
  278. package/docs/project/building-windows.md +0 -162
  279. package/docs/project/contributing.md +0 -347
  280. package/docs/project/internals/build-process-for-ci.md +0 -75
  281. package/docs/project/licensing.md +0 -73
  282. package/docs/project/roadmap.md +0 -87
  283. package/docs/quickstart.md +0 -157
  284. package/docs/runtime/autoimport.md +0 -94
  285. package/docs/runtime/bun-apis.md +0 -207
  286. package/docs/runtime/bunfig.md +0 -772
  287. package/docs/runtime/debugger.md +0 -325
  288. package/docs/runtime/env.md +0 -253
  289. package/docs/runtime/hot.md +0 -145
  290. package/docs/runtime/index.md +0 -312
  291. package/docs/runtime/jsx.md +0 -385
  292. package/docs/runtime/loaders.md +0 -130
  293. package/docs/runtime/modules.md +0 -320
  294. package/docs/runtime/nodejs-apis.md +0 -463
  295. package/docs/runtime/plugins.md +0 -561
  296. package/docs/runtime/shell.md +0 -605
  297. package/docs/runtime/typescript.md +0 -139
  298. package/docs/runtime/web-apis.md +0 -128
  299. package/docs/test/configuration.md +0 -154
  300. package/docs/test/coverage.md +0 -142
  301. package/docs/test/discovery.md +0 -85
  302. package/docs/test/dom.md +0 -75
  303. package/docs/test/examples/concurrent-test-glob.md +0 -132
  304. package/docs/test/hot.md +0 -15
  305. package/docs/test/lifecycle.md +0 -81
  306. package/docs/test/mocks.md +0 -313
  307. package/docs/test/reporters.md +0 -117
  308. package/docs/test/runtime-behavior.md +0 -95
  309. package/docs/test/snapshots.md +0 -68
  310. package/docs/test/time.md +0 -126
  311. package/docs/test/writing.md +0 -825
  312. package/docs/typescript.md +0 -53
@@ -1,95 +0,0 @@
1
- ---
2
- name: Use snapshot testing in `bun test`
3
- ---
4
-
5
- Bun's test runner supports Jest-style snapshot testing via `.toMatchSnapshot()`.
6
-
7
- ```ts#snap.test.ts
8
- import { test, expect } from "bun:test";
9
-
10
- test("snapshot", () => {
11
- expect({ foo: "bar" }).toMatchSnapshot();
12
- });
13
- ```
14
-
15
- ---
16
-
17
- The first time this test is executed, Bun will evaluate the value passed into `expect()` and write it to disk in a directory called `__snapshots__` that lives alongside the test file. (Note the `snapshots: +1 added` line in the output.)
18
-
19
- ```sh
20
- $ bun test test/snap
21
- bun test v1.3.2-canary.20251104T140728 (9c68abdb)
22
-
23
- test/snap.test.ts:
24
- ✓ snapshot [1.48ms]
25
-
26
- 1 pass
27
- 0 fail
28
- snapshots: +1 added
29
- 1 expect() calls
30
- Ran 1 tests across 1 files. [82.00ms]
31
- ```
32
-
33
- ---
34
-
35
- The `__snapshots__` directory contains a `.snap` file for each test file in the directory.
36
-
37
- ```txt
38
- test
39
- ├── __snapshots__
40
- │   └── snap.test.ts.snap
41
- └── snap.test.ts
42
- ```
43
-
44
- ---
45
-
46
- The `snap.test.ts.snap` file is a JavaScript file that exports a serialized version of the value passed into `expect()`. The `{foo: "bar"}` object has been serialized to JSON.
47
-
48
- ```js
49
- // Bun Snapshot v1, https://bun.sh/docs/test/snapshots
50
-
51
- exports[`snapshot 1`] = `
52
- {
53
- "foo": "bar",
54
- }
55
- `;
56
- ```
57
-
58
- ---
59
-
60
- Later, when this test file is executed again, Bun will read the snapshot file and compare it to the value passed into `expect()`. If the values are different, the test will fail.
61
-
62
- ```sh
63
- $ bun test
64
- bun test v1.3.2-canary.20251104T140728 (9c68abdb)
65
-
66
- test/snap.test.ts:
67
- ✓ snapshot [1.05ms]
68
-
69
- 1 pass
70
- 0 fail
71
- 1 snapshots, 1 expect() calls
72
- Ran 1 tests across 1 files. [101.00ms]
73
- ```
74
-
75
- ---
76
-
77
- To update snapshots, use the `--update-snapshots` flag.
78
-
79
- ```sh
80
- $ bun test --update-snapshots
81
- bun test v1.3.2-canary.20251104T140728 (9c68abdb)
82
-
83
- test/snap.test.ts:
84
- ✓ snapshot [0.86ms]
85
-
86
- 1 pass
87
- 0 fail
88
- snapshots: +1 added # the snapshot was regenerated
89
- 1 expect() calls
90
- Ran 1 tests across 1 files. [102.00ms]
91
- ```
92
-
93
- ---
94
-
95
- See [Docs > Test Runner > Snapshots](https://bun.sh/docs/test/snapshots) for complete documentation on snapshots with the Bun test runner.
@@ -1,46 +0,0 @@
1
- ---
2
- name: Spy on methods in `bun test`
3
- ---
4
-
5
- Use the `spyOn` utility to track method calls with Bun's test runner.
6
-
7
- ```ts
8
- import { test, expect, spyOn } from "bun:test";
9
-
10
- const leo = {
11
- name: "Leonardo",
12
- sayHi(thing: string) {
13
- console.log(`Sup I'm ${this.name} and I like ${thing}`);
14
- },
15
- };
16
-
17
- const spy = spyOn(leo, "sayHi");
18
- ```
19
-
20
- ---
21
-
22
- Once the spy is created, it can be used to write `expect` assertions relating to method calls.
23
-
24
- ```ts-diff
25
- import { test, expect, spyOn } from "bun:test";
26
-
27
- const leo = {
28
- name: "Leonardo",
29
- sayHi(thing: string) {
30
- console.log(`Sup I'm ${this.name} and I like ${thing}`);
31
- },
32
- };
33
-
34
- const spy = spyOn(leo, "sayHi");
35
-
36
- + test("turtles", ()=>{
37
- + expect(spy).toHaveBeenCalledTimes(0);
38
- + leo.sayHi("pizza");
39
- + expect(spy).toHaveBeenCalledTimes(1);
40
- + expect(spy.mock.calls).toEqual([[ "pizza" ]]);
41
- + })
42
- ```
43
-
44
- ---
45
-
46
- See [Docs > Test Runner > Mocks](https://bun.sh/docs/test/mocks) for complete documentation on mocking with the Bun test runner.
@@ -1,120 +0,0 @@
1
- ---
2
- name: "import, require, and test Svelte components with bun test"
3
- ---
4
-
5
- Bun's [Plugin API](/docs/runtime/plugins) lets you add custom loaders to your project. The `test.preload` option in `bunfig.toml` lets you configure your loader to start before your tests run.
6
-
7
- Firstly, install `@testing-library/svelte`, `svelte`, and `@happy-dom/global-registrator`.
8
-
9
- ```bash
10
- $ bun add @testing-library/svelte svelte@4 @happy-dom/global-registrator
11
- ```
12
-
13
- Then, save this plugin in your project.
14
-
15
- ```ts#svelte-loader.js
16
- import { plugin } from "bun";
17
- import { compile } from "svelte/compiler";
18
- import { readFileSync } from "fs";
19
- import { beforeEach, afterEach } from "bun:test";
20
- import { GlobalRegistrator } from "@happy-dom/global-registrator";
21
-
22
- beforeEach(async () => {
23
- await GlobalRegistrator.register();
24
- });
25
-
26
- afterEach(async () => {
27
- await GlobalRegistrator.unregister();
28
- });
29
-
30
- plugin({
31
- name: "svelte loader",
32
- setup(builder) {
33
- builder.onLoad({ filter: /\.svelte(\?[^.]+)?$/ }, ({ path }) => {
34
- try {
35
- const source = readFileSync(
36
- path.substring(
37
- 0,
38
- path.includes("?") ? path.indexOf("?") : path.length
39
- ),
40
- "utf-8"
41
- );
42
-
43
- const result = compile(source, {
44
- filename: path,
45
- generate: "client",
46
- dev: false,
47
- });
48
-
49
- return {
50
- contents: result.js.code,
51
- loader: "js",
52
- };
53
- } catch (err) {
54
- throw new Error(`Failed to compile Svelte component: ${err.message}`);
55
- }
56
- });
57
- },
58
- });
59
-
60
- ```
61
-
62
- ---
63
-
64
- Add this to `bunfig.toml` to tell Bun to preload the plugin, so it loads before your tests run.
65
-
66
- ```toml#bunfig.toml
67
- [test]
68
- # Tell Bun to load this plugin before your tests run
69
- preload = ["./svelte-loader.js"]
70
-
71
- # This also works:
72
- # test.preload = ["./svelte-loader.js"]
73
- ```
74
-
75
- ---
76
-
77
- Add an example `.svelte` file in your project.
78
-
79
- ```html#Counter.svelte
80
- <script>
81
- export let initialCount = 0;
82
- let count = initialCount;
83
- </script>
84
-
85
- <button on:click={() => (count += 1)}>+1</button>
86
- ```
87
-
88
- ---
89
-
90
- Now you can `import` or `require` `*.svelte` files in your tests, and it will load the Svelte component as a JavaScript module.
91
-
92
- ```ts#hello-svelte.test.ts
93
- import { test, expect } from "bun:test";
94
- import { render, fireEvent } from "@testing-library/svelte";
95
- import Counter from "./Counter.svelte";
96
-
97
- test("Counter increments when clicked", async () => {
98
- const { getByText, component } = render(Counter);
99
- const button = getByText("+1");
100
-
101
- // Initial state
102
- expect(component.$$.ctx[0]).toBe(0); // initialCount is the first prop
103
-
104
- // Click the increment button
105
- await fireEvent.click(button);
106
-
107
- // Check the new state
108
- expect(component.$$.ctx[0]).toBe(1);
109
- });
110
- ```
111
-
112
- ---
113
-
114
- Use `bun test` to run your tests.
115
-
116
- ```bash
117
- $ bun test
118
- ```
119
-
120
- ---
@@ -1,92 +0,0 @@
1
- ---
2
- name: Using Testing Library with Bun
3
- ---
4
-
5
- You can use [Testing Library](https://testing-library.com/) with Bun's test runner.
6
-
7
- ---
8
-
9
- As a prerequisite to using Testing Library you will need to install [Happy Dom](https://github.com/capricorn86/happy-dom). ([see Bun's Happy DOM guide for more information](https://bun.sh/guides/test/happy-dom)).
10
-
11
- ```sh
12
- bun add -D @happy-dom/global-registrator
13
- ```
14
-
15
- ---
16
-
17
- Next you should install the Testing Library packages you are planning on using. For example, if you are setting up testing for React your installs may look like this. You will also need to install `@testing-library/jest-dom` to get matchers working later.
18
-
19
- ```sh
20
- bun add -D @testing-library/react @testing-library/dom @testing-library/jest-dom
21
- ```
22
-
23
- ---
24
-
25
- Next you will need to create a preload script for Happy DOM and for Testing Library. For more details about the Happy DOM setup script see [Bun's Happy DOM guide](https://bun.sh/guides/test/happy-dom).
26
-
27
- ```ts#happydom.ts
28
- import { GlobalRegistrator } from '@happy-dom/global-registrator';
29
-
30
- GlobalRegistrator.register();
31
- ```
32
-
33
- ---
34
-
35
- For Testing Library, you will want to extend Bun's `expect` function with Testing Library's matchers. Optionally, to better match the behavior of test-runners like Jest, you may want to run cleanup after each test.
36
-
37
- ```ts#testing-library.ts
38
- import { afterEach, expect } from 'bun:test';
39
- import { cleanup } from '@testing-library/react';
40
- import * as matchers from '@testing-library/jest-dom/matchers';
41
-
42
- expect.extend(matchers);
43
-
44
- // Optional: cleans up `render` after each test
45
- afterEach(() => {
46
- cleanup();
47
- });
48
- ```
49
-
50
- ---
51
-
52
- Next, add these preload scripts to your `bunfig.toml` (you can also have everything in a single `preload.ts` script if you prefer).
53
-
54
- ```toml#bunfig.toml
55
- [test]
56
- preload = ["./happydom.ts", "./testing-library.ts"]
57
- ```
58
-
59
- ---
60
-
61
- If you are using TypeScript you will also need to make use of declaration merging in order to get the new matcher types to show up in your editor. To do this, create a type declaration file that extends `Matchers` like this.
62
-
63
- ```ts#matchers.d.ts
64
- import { TestingLibraryMatchers } from '@testing-library/jest-dom/matchers';
65
- import { Matchers, AsymmetricMatchers } from 'bun:test';
66
-
67
- declare module 'bun:test' {
68
- interface Matchers<T>
69
- extends TestingLibraryMatchers<typeof expect.stringContaining, T> {}
70
- interface AsymmetricMatchers extends TestingLibraryMatchers {}
71
- }
72
- ```
73
-
74
- ---
75
-
76
- You should now be able to use Testing Library in your tests
77
-
78
- ```ts
79
- import { test, expect } from "bun:test";
80
- import { screen, render } from "@testing-library/react";
81
- import { MyComponent } from "./myComponent";
82
-
83
- test("Can use Testing Library", () => {
84
- render(MyComponent);
85
- const myComponent = screen.getByTestId("my-component");
86
- expect(myComponent).toBeInTheDocument();
87
- });
88
- ```
89
-
90
- ---
91
-
92
- Refer to the [Testing Library docs](https://testing-library.com/), [Happy DOM repo](https://github.com/capricorn86/happy-dom) and [Docs > Test runner > DOM](https://bun.sh/docs/test/dom) for complete documentation on writing browser tests with Bun.
@@ -1,15 +0,0 @@
1
- ---
2
- name: Set a per-test timeout with the Bun test runner
3
- ---
4
-
5
- Use the `--timeout` flag to set a timeout for each test in milliseconds. If any test exceeds this timeout, it will be marked as failed.
6
-
7
- The default timeout is `5000` (5 seconds).
8
-
9
- ```sh
10
- $ bun test --timeout 3000 # 3 seconds
11
- ```
12
-
13
- ---
14
-
15
- See [Docs > Test runner](https://bun.sh/docs/cli/test) for complete documentation of `bun test`.
@@ -1,67 +0,0 @@
1
- ---
2
- name: Mark a test as a "todo" with the Bun test runner
3
- ---
4
-
5
- To remind yourself to write a test later, use the `test.todo` function. There's no need to provide a test implementation.
6
-
7
- ```ts
8
- import { test, expect } from "bun:test";
9
-
10
- // write this later
11
- test.todo("unimplemented feature");
12
- ```
13
-
14
- ---
15
-
16
- The output of `bun test` indicates how many `todo` tests were encountered.
17
-
18
- ```sh
19
- $ bun test
20
-
21
- test.test.ts:
22
- ✓ add [0.03ms]
23
- ✓ multiply [0.02ms]
24
- ✎ unimplemented feature
25
-
26
- 2 pass
27
- 1 todo
28
- 0 fail
29
- 2 expect() calls
30
- Ran 3 tests across 1 files. [74.00ms]
31
- ```
32
-
33
- ---
34
-
35
- Optionally, you can provide a test implementation.
36
-
37
- ```ts
38
- import { test, expect } from "bun:test";
39
-
40
- test.todo("unimplemented feature", () => {
41
- expect(Bun.isAwesome()).toBe(true);
42
- });
43
- ```
44
-
45
- ---
46
-
47
- If an implementation is provided, it will not be run unless the `--todo` flag is passed. If the `--todo` flag is passed, the test will be executed and _expected to fail_ by test runner! If a todo test passes, the `bun test` run will return a non-zero exit code to signal the failure.
48
-
49
- ```sh
50
- $ bun test --todo
51
- my.test.ts:
52
- ✗ unimplemented feature
53
- ^ this test is marked as todo but passes. Remove `.todo` or check that test is correct.
54
-
55
- 0 pass
56
- 1 fail
57
- 1 expect() calls
58
- $ echo $?
59
- 1 # this is the exit code of the previous command
60
- ```
61
-
62
- ---
63
-
64
- See also:
65
-
66
- - [Skip a test](/guides/test/skip-tests)
67
- - [Docs > Test runner > Writing tests](https://bun.sh/docs/test/writing)
@@ -1,46 +0,0 @@
1
- ---
2
- name: Update snapshots in `bun test`
3
- ---
4
-
5
- Bun's test runner supports Jest-style snapshot testing via `.toMatchSnapshot()`.
6
-
7
- ```ts#snap.test.ts
8
- import { test, expect } from "bun:test";
9
-
10
- test("snapshot", () => {
11
- expect({ foo: "bar" }).toMatchSnapshot();
12
- });
13
- ```
14
-
15
- ---
16
-
17
- The first time this test is executed, Bun will write a snapshot file to disk in a directory called `__snapshots__` that lives alongside the test file.
18
-
19
- ```txt
20
- test
21
- ├── __snapshots__
22
- │   └── snap.test.ts.snap
23
- └── snap.test.ts
24
- ```
25
-
26
- ---
27
-
28
- To regenerate snapshots, use the `--update-snapshots` flag.
29
-
30
- ```sh
31
- $ bun test --update-snapshots
32
- bun test v1.3.2-canary.20251104T140728 (9c68abdb)
33
-
34
- test/snap.test.ts:
35
- ✓ snapshot [0.86ms]
36
-
37
- 1 pass
38
- 0 fail
39
- snapshots: +1 added # the snapshot was regenerated
40
- 1 expect() calls
41
- Ran 1 tests across 1 files. [102.00ms]
42
- ```
43
-
44
- ---
45
-
46
- See [Docs > Test Runner > Snapshots](https://bun.sh/docs/test/snapshots) for complete documentation on snapshots with the Bun test runner.
@@ -1,19 +0,0 @@
1
- ---
2
- name: Run tests in watch mode with Bun
3
- ---
4
-
5
- Use the `--watch` flag to run your tests in watch mode.
6
-
7
- ```sh
8
- $ bun test --watch
9
- ```
10
-
11
- ---
12
-
13
- This will restart the running Bun process whenever a file change is detected. It's fast. In this example, the editor is configured to save the file on every keystroke.
14
-
15
- {% image src="https://github.com/oven-sh/bun/assets/3084745/dc49a36e-ba82-416f-b960-1c883a924248" caption="Running tests in watch mode in Bun" /%}
16
-
17
- ---
18
-
19
- See [Docs > Test Runner](https://bun.sh/docs/cli/test) for complete documentation on the test runner.
@@ -1,15 +0,0 @@
1
- ---
2
- name: Encode and decode base64 strings
3
- ---
4
-
5
- Bun implements the Web-standard [`atob`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/atob) and [`btoa`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/btoa) functions for encoding and decoding base64 strings.
6
-
7
- ```ts
8
- const data = "hello world";
9
- const encoded = btoa(data); // => "aGVsbG8gd29ybGQ="
10
- const decoded = atob(encoded); // => "hello world"
11
- ```
12
-
13
- ---
14
-
15
- See [Docs > Web APIs](https://bun.com/docs/runtime/web-apis) for a complete breakdown of the Web APIs implemented in Bun.
@@ -1,39 +0,0 @@
1
- ---
2
- name: Check if two objects are deeply equal
3
- ---
4
-
5
- Check if two objects are deeply equal. This is used internally by `expect().toEqual()` in Bun's [test runner](https://bun.com/docs/test/writing).
6
-
7
- ```ts#index.ts
8
- const a = { a: 1, b: 2, c: { d: 3 } };
9
- const b = { a: 1, b: 2, c: { d: 3 } };
10
-
11
- Bun.deepEquals(a, b); // true
12
- ```
13
-
14
- ---
15
-
16
- Pass `true` as a third argument to enable strict mode. This is used internally by `expect().toStrictEqual()` in Bun's [test runner](https://bun.com/docs/test/writing).
17
-
18
- The following examples would return `true` in non-strict mode but `false` in strict mode.
19
-
20
- ```ts
21
- // undefined values
22
- Bun.deepEquals({}, { a: undefined }, true); // false
23
-
24
- // undefined in arrays
25
- Bun.deepEquals(["asdf"], ["asdf", undefined], true); // false
26
-
27
- // sparse arrays
28
- Bun.deepEquals([, 1], [undefined, 1], true); // false
29
-
30
- // object literals vs instances w/ same properties
31
- class Foo {
32
- a = 1;
33
- }
34
- Bun.deepEquals(new Foo(), { a: 1 }, true); // false
35
- ```
36
-
37
- ---
38
-
39
- See [Docs > API > Utils](https://bun.com/docs/api/utils) for more useful utilities.
@@ -1,18 +0,0 @@
1
- ---
2
- name: Compress and decompress data with DEFLATE
3
- ---
4
-
5
- Use `Bun.deflateSync()` to compress a `Uint8Array` with DEFLATE.
6
-
7
- ```ts
8
- const data = Buffer.from("Hello, world!");
9
- const compressed = Bun.deflateSync("Hello, world!");
10
- // => Uint8Array
11
-
12
- const decompressed = Bun.inflateSync(compressed);
13
- // => Uint8Array
14
- ```
15
-
16
- ---
17
-
18
- See [Docs > API > Utils](https://bun.com/docs/api/utils) for more useful utilities.
@@ -1,23 +0,0 @@
1
- ---
2
- name: Detect when code is executed with Bun
3
- ---
4
-
5
- The recommended way to conditionally detect when code is being executed with `bun` is to check for the existence of the `Bun` global.
6
-
7
- This is similar to how you'd check for the existence of the `window` variable to detect when code is being executed in a browser.
8
-
9
- ```ts
10
- if (typeof Bun !== "undefined") {
11
- // this code will only run when the file is run with Bun
12
- }
13
- ```
14
-
15
- ---
16
-
17
- In TypeScript environments, the previous approach will result in a type error unless `@types/bun` is installed. To avoid this, you can check `process.versions` instead.
18
-
19
- ```ts
20
- if (process.versions.bun) {
21
- // this code will only run when the file is run with Bun
22
- }
23
- ```
@@ -1,17 +0,0 @@
1
- ---
2
- name: Check if the current file is the entrypoint
3
- ---
4
-
5
- Bun provides a handful of module-specific utilities on the [`import.meta`](https://bun.com/docs/api/import-meta) object. Use `import.meta.main` to check if the current file is the entrypoint of the current process.
6
-
7
- ```ts#index.ts
8
- if (import.meta.main) {
9
- // this file is directly executed with `bun run`
10
- } else {
11
- // this file is being imported by another file
12
- }
13
- ```
14
-
15
- ---
16
-
17
- See [Docs > API > import.meta](https://bun.com/docs/api/import-meta) for complete documentation.
@@ -1,22 +0,0 @@
1
- ---
2
- name: Escape an HTML string
3
- ---
4
-
5
- The `Bun.escapeHTML()` utility can be used to escape HTML characters in a string. The following replacements are made.
6
-
7
- - `"` becomes `"&quot;"`
8
- - `&` becomes `"&amp;"`
9
- - `'` becomes `"&#x27;"`
10
- - `<` becomes `"&lt;"`
11
- - `>` becomes `"&gt;"`
12
-
13
- This function is optimized for large input. Non-string types will be converted to a string before escaping.
14
-
15
- ```ts
16
- Bun.escapeHTML("<script>alert('Hello World!')</script>");
17
- // &lt;script&gt;alert(&#x27;Hello World!&#x27;)&lt;&#x2F;script&gt;
18
- ```
19
-
20
- ---
21
-
22
- See [Docs > API > Utils](https://bun.com/docs/api/utils) for more useful utilities.
@@ -1,14 +0,0 @@
1
- ---
2
- name: Convert a file URL to an absolute path
3
- ---
4
-
5
- Use `Bun.fileURLToPath()` to convert a `file://` URL to an absolute path.
6
-
7
- ```ts
8
- Bun.fileURLToPath("file:///path/to/file.txt");
9
- // => "/path/to/file.txt"
10
- ```
11
-
12
- ---
13
-
14
- See [Docs > API > Utils](https://bun.com/docs/api/utils) for more useful utilities.
@@ -1,18 +0,0 @@
1
- ---
2
- name: Compress and decompress data with gzip
3
- ---
4
-
5
- Use `Bun.gzipSync()` to compress a `Uint8Array` with gzip.
6
-
7
- ```ts
8
- const data = Buffer.from("Hello, world!");
9
- const compressed = Bun.gzipSync(data);
10
- // => Uint8Array
11
-
12
- const decompressed = Bun.gunzipSync(compressed);
13
- // => Uint8Array
14
- ```
15
-
16
- ---
17
-
18
- See [Docs > API > Utils](https://bun.com/docs/api/utils) for more useful utilities.