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,449 +0,0 @@
1
- Bun provides native APIs for working with HTTP cookies through `Bun.Cookie` and `Bun.CookieMap`. These APIs offer fast, easy-to-use methods for parsing, generating, and manipulating cookies in HTTP requests and responses.
2
-
3
- ## CookieMap class
4
-
5
- `Bun.CookieMap` provides a Map-like interface for working with collections of cookies. It implements the `Iterable` interface, allowing you to use it with `for...of` loops and other iteration methods.
6
-
7
- ```ts
8
- // Empty cookie map
9
- const cookies = new Bun.CookieMap();
10
-
11
- // From a cookie string
12
- const cookies1 = new Bun.CookieMap("name=value; foo=bar");
13
-
14
- // From an object
15
- const cookies2 = new Bun.CookieMap({
16
- session: "abc123",
17
- theme: "dark",
18
- });
19
-
20
- // From an array of name/value pairs
21
- const cookies3 = new Bun.CookieMap([
22
- ["session", "abc123"],
23
- ["theme", "dark"],
24
- ]);
25
- ```
26
-
27
- ### In HTTP servers
28
-
29
- In Bun's HTTP server, the `cookies` property on the request object (in `routes`) is an instance of `CookieMap`:
30
-
31
- ```ts
32
- const server = Bun.serve({
33
- routes: {
34
- "/": req => {
35
- // Access request cookies
36
- const cookies = req.cookies;
37
-
38
- // Get a specific cookie
39
- const sessionCookie = cookies.get("session");
40
- if (sessionCookie != null) {
41
- console.log(sessionCookie);
42
- }
43
-
44
- // Check if a cookie exists
45
- if (cookies.has("theme")) {
46
- // ...
47
- }
48
-
49
- // Set a cookie, it will be automatically applied to the response
50
- cookies.set("visited", "true");
51
-
52
- return new Response("Hello");
53
- },
54
- },
55
- });
56
-
57
- console.log("Server listening at: " + server.url);
58
- ```
59
-
60
- ### Methods
61
-
62
- #### `get(name: string): string | null`
63
-
64
- Retrieves a cookie by name. Returns `null` if the cookie doesn't exist.
65
-
66
- ```ts
67
- // Get by name
68
- const cookie = cookies.get("session");
69
-
70
- if (cookie != null) {
71
- console.log(cookie);
72
- }
73
- ```
74
-
75
- #### `has(name: string): boolean`
76
-
77
- Checks if a cookie with the given name exists.
78
-
79
- ```ts
80
- // Check if cookie exists
81
- if (cookies.has("session")) {
82
- // Cookie exists
83
- }
84
- ```
85
-
86
- #### `set(name: string, value: string): void`
87
-
88
- #### `set(options: CookieInit): void`
89
-
90
- #### `set(cookie: Cookie): void`
91
-
92
- Adds or updates a cookie in the map. Cookies default to `{ path: "/", sameSite: "lax" }`.
93
-
94
- ```ts
95
- // Set by name and value
96
- cookies.set("session", "abc123");
97
-
98
- // Set using options object
99
- cookies.set({
100
- name: "theme",
101
- value: "dark",
102
- maxAge: 3600,
103
- secure: true,
104
- });
105
-
106
- // Set using Cookie instance
107
- const cookie = new Bun.Cookie("visited", "true");
108
- cookies.set(cookie);
109
- ```
110
-
111
- #### `delete(name: string): void`
112
-
113
- #### `delete(options: CookieStoreDeleteOptions): void`
114
-
115
- Removes a cookie from the map. When applied to a Response, this adds a cookie with an empty string value and an expiry date in the past. A cookie will only delete successfully on the browser if the domain and path is the same as it was when the cookie was created.
116
-
117
- ```ts
118
- // Delete by name using default domain and path.
119
- cookies.delete("session");
120
-
121
- // Delete with domain/path options.
122
- cookies.delete({
123
- name: "session",
124
- domain: "example.com",
125
- path: "/admin",
126
- });
127
- ```
128
-
129
- #### `toJSON(): Record<string, string>`
130
-
131
- Converts the cookie map to a serializable format.
132
-
133
- ```ts
134
- const json = cookies.toJSON();
135
- ```
136
-
137
- #### `toSetCookieHeaders(): string[]`
138
-
139
- Returns an array of values for Set-Cookie headers that can be used to apply all cookie changes.
140
-
141
- When using `Bun.serve()`, you don't need to call this method explicitly. Any changes made to the `req.cookies` map are automatically applied to the response headers. This method is primarily useful when working with other HTTP server implementations.
142
-
143
- ```js
144
- import { createServer } from "node:http";
145
- import { CookieMap } from "bun";
146
-
147
- const server = createServer((req, res) => {
148
- const cookieHeader = req.headers.cookie || "";
149
- const cookies = new CookieMap(cookieHeader);
150
-
151
- cookies.set("view-count", Number(cookies.get("view-count") || "0") + 1);
152
- cookies.delete("session");
153
-
154
- res.writeHead(200, {
155
- "Content-Type": "text/plain",
156
- "Set-Cookie": cookies.toSetCookieHeaders(),
157
- });
158
- res.end(`Found ${cookies.size} cookies`);
159
- });
160
-
161
- server.listen(3000, () => {
162
- console.log("Server running at http://localhost:3000/");
163
- });
164
- ```
165
-
166
- ### Iteration
167
-
168
- `CookieMap` provides several methods for iteration:
169
-
170
- ```ts
171
- // Iterate over [name, cookie] entries
172
- for (const [name, value] of cookies) {
173
- console.log(`${name}: ${value}`);
174
- }
175
-
176
- // Using entries()
177
- for (const [name, value] of cookies.entries()) {
178
- console.log(`${name}: ${value}`);
179
- }
180
-
181
- // Using keys()
182
- for (const name of cookies.keys()) {
183
- console.log(name);
184
- }
185
-
186
- // Using values()
187
- for (const value of cookies.values()) {
188
- console.log(value);
189
- }
190
-
191
- // Using forEach
192
- cookies.forEach((value, name) => {
193
- console.log(`${name}: ${value}`);
194
- });
195
- ```
196
-
197
- ### Properties
198
-
199
- #### `size: number`
200
-
201
- Returns the number of cookies in the map.
202
-
203
- ```ts
204
- console.log(cookies.size); // Number of cookies
205
- ```
206
-
207
- ## Cookie class
208
-
209
- `Bun.Cookie` represents an HTTP cookie with its name, value, and attributes.
210
-
211
- ```ts
212
- import { Cookie } from "bun";
213
-
214
- // Create a basic cookie
215
- const cookie = new Bun.Cookie("name", "value");
216
-
217
- // Create a cookie with options
218
- const secureSessionCookie = new Bun.Cookie("session", "abc123", {
219
- domain: "example.com",
220
- path: "/admin",
221
- expires: new Date(Date.now() + 86400000), // 1 day
222
- httpOnly: true,
223
- secure: true,
224
- sameSite: "strict",
225
- });
226
-
227
- // Parse from a cookie string
228
- const parsedCookie = new Bun.Cookie("name=value; Path=/; HttpOnly");
229
-
230
- // Create from an options object
231
- const objCookie = new Bun.Cookie({
232
- name: "theme",
233
- value: "dark",
234
- maxAge: 3600,
235
- secure: true,
236
- });
237
- ```
238
-
239
- ### Constructors
240
-
241
- ```ts
242
- // Basic constructor with name/value
243
- new Bun.Cookie(name: string, value: string);
244
-
245
- // Constructor with name, value, and options
246
- new Bun.Cookie(name: string, value: string, options: CookieInit);
247
-
248
- // Constructor from cookie string
249
- new Bun.Cookie(cookieString: string);
250
-
251
- // Constructor from cookie object
252
- new Bun.Cookie(options: CookieInit);
253
- ```
254
-
255
- ### Properties
256
-
257
- ```ts
258
- cookie.name; // string - Cookie name
259
- cookie.value; // string - Cookie value
260
- cookie.domain; // string | null - Domain scope (null if not specified)
261
- cookie.path; // string - URL path scope (defaults to "/")
262
- cookie.expires; // number | undefined - Expiration timestamp (ms since epoch)
263
- cookie.secure; // boolean - Require HTTPS
264
- cookie.sameSite; // "strict" | "lax" | "none" - SameSite setting
265
- cookie.partitioned; // boolean - Whether the cookie is partitioned (CHIPS)
266
- cookie.maxAge; // number | undefined - Max age in seconds
267
- cookie.httpOnly; // boolean - Accessible only via HTTP (not JavaScript)
268
- ```
269
-
270
- ### Methods
271
-
272
- #### `isExpired(): boolean`
273
-
274
- Checks if the cookie has expired.
275
-
276
- ```ts
277
- // Expired cookie (Date in the past)
278
- const expiredCookie = new Bun.Cookie("name", "value", {
279
- expires: new Date(Date.now() - 1000),
280
- });
281
- console.log(expiredCookie.isExpired()); // true
282
-
283
- // Valid cookie (Using maxAge instead of expires)
284
- const validCookie = new Bun.Cookie("name", "value", {
285
- maxAge: 3600, // 1 hour in seconds
286
- });
287
- console.log(validCookie.isExpired()); // false
288
-
289
- // Session cookie (no expiration)
290
- const sessionCookie = new Bun.Cookie("name", "value");
291
- console.log(sessionCookie.isExpired()); // false
292
- ```
293
-
294
- #### `serialize(): string`
295
-
296
- #### `toString(): string`
297
-
298
- Returns a string representation of the cookie suitable for a `Set-Cookie` header.
299
-
300
- ```ts
301
- const cookie = new Bun.Cookie("session", "abc123", {
302
- domain: "example.com",
303
- path: "/admin",
304
- expires: new Date(Date.now() + 86400000),
305
- secure: true,
306
- httpOnly: true,
307
- sameSite: "strict",
308
- });
309
-
310
- console.log(cookie.serialize());
311
- // => "session=abc123; Domain=example.com; Path=/admin; Expires=Sun, 19 Mar 2025 15:03:26 GMT; Secure; HttpOnly; SameSite=strict"
312
- console.log(cookie.toString());
313
- // => "session=abc123; Domain=example.com; Path=/admin; Expires=Sun, 19 Mar 2025 15:03:26 GMT; Secure; HttpOnly; SameSite=strict"
314
- ```
315
-
316
- #### `toJSON(): CookieInit`
317
-
318
- Converts the cookie to a plain object suitable for JSON serialization.
319
-
320
- ```ts
321
- const cookie = new Bun.Cookie("session", "abc123", {
322
- secure: true,
323
- httpOnly: true,
324
- });
325
-
326
- const json = cookie.toJSON();
327
- // => {
328
- // name: "session",
329
- // value: "abc123",
330
- // path: "/",
331
- // secure: true,
332
- // httpOnly: true,
333
- // sameSite: "lax",
334
- // partitioned: false
335
- // }
336
-
337
- // Works with JSON.stringify
338
- const jsonString = JSON.stringify(cookie);
339
- ```
340
-
341
- ### Static methods
342
-
343
- #### `Cookie.parse(cookieString: string): Cookie`
344
-
345
- Parses a cookie string into a `Cookie` instance.
346
-
347
- ```ts
348
- const cookie = Bun.Cookie.parse("name=value; Path=/; Secure; SameSite=Lax");
349
-
350
- console.log(cookie.name); // "name"
351
- console.log(cookie.value); // "value"
352
- console.log(cookie.path); // "/"
353
- console.log(cookie.secure); // true
354
- console.log(cookie.sameSite); // "lax"
355
- ```
356
-
357
- #### `Cookie.from(name: string, value: string, options?: CookieInit): Cookie`
358
-
359
- Factory method to create a cookie.
360
-
361
- ```ts
362
- const cookie = Bun.Cookie.from("session", "abc123", {
363
- httpOnly: true,
364
- secure: true,
365
- maxAge: 3600,
366
- });
367
- ```
368
-
369
- ## Types
370
-
371
- ```ts
372
- interface CookieInit {
373
- name?: string;
374
- value?: string;
375
- domain?: string;
376
- /** Defaults to '/'. To allow the browser to set the path, use an empty string. */
377
- path?: string;
378
- expires?: number | Date | string;
379
- secure?: boolean;
380
- /** Defaults to `lax`. */
381
- sameSite?: CookieSameSite;
382
- httpOnly?: boolean;
383
- partitioned?: boolean;
384
- maxAge?: number;
385
- }
386
-
387
- interface CookieStoreDeleteOptions {
388
- name: string;
389
- domain?: string | null;
390
- path?: string;
391
- }
392
-
393
- interface CookieStoreGetOptions {
394
- name?: string;
395
- url?: string;
396
- }
397
-
398
- type CookieSameSite = "strict" | "lax" | "none";
399
-
400
- class Cookie {
401
- constructor(name: string, value: string, options?: CookieInit);
402
- constructor(cookieString: string);
403
- constructor(cookieObject?: CookieInit);
404
-
405
- readonly name: string;
406
- value: string;
407
- domain?: string;
408
- path: string;
409
- expires?: Date;
410
- secure: boolean;
411
- sameSite: CookieSameSite;
412
- partitioned: boolean;
413
- maxAge?: number;
414
- httpOnly: boolean;
415
-
416
- isExpired(): boolean;
417
-
418
- serialize(): string;
419
- toString(): string;
420
- toJSON(): CookieInit;
421
-
422
- static parse(cookieString: string): Cookie;
423
- static from(name: string, value: string, options?: CookieInit): Cookie;
424
- }
425
-
426
- class CookieMap implements Iterable<[string, string]> {
427
- constructor(init?: string[][] | Record<string, string> | string);
428
-
429
- get(name: string): string | null;
430
-
431
- toSetCookieHeaders(): string[];
432
-
433
- has(name: string): boolean;
434
- set(name: string, value: string, options?: CookieInit): void;
435
- set(options: CookieInit): void;
436
- delete(name: string): void;
437
- delete(options: CookieStoreDeleteOptions): void;
438
- delete(name: string, options: Omit<CookieStoreDeleteOptions, "name">): void;
439
- toJSON(): Record<string, string>;
440
-
441
- readonly size: number;
442
-
443
- entries(): IterableIterator<[string, string]>;
444
- keys(): IterableIterator<string>;
445
- values(): IterableIterator<string>;
446
- forEach(callback: (value: string, key: string, map: CookieMap) => void): void;
447
- [Symbol.iterator](): IterableIterator<[string, string]>;
448
- }
449
- ```
package/docs/api/dns.md DELETED
@@ -1,110 +0,0 @@
1
- Bun implements the `node:dns` module.
2
-
3
- ```ts
4
- import * as dns from "node:dns";
5
-
6
- const addrs = await dns.promises.resolve4("bun.com", { ttl: true });
7
- console.log(addrs);
8
- // => [{ address: "172.67.161.226", family: 4, ttl: 0 }, ...]
9
- ```
10
-
11
- ## DNS caching in Bun
12
-
13
- In Bun v1.1.9, we added support for DNS caching. This cache makes repeated connections to the same hosts faster.
14
-
15
- At the time of writing, we cache up to 255 entries for a maximum of 30 seconds (each). If any connections to a host fail, we remove the entry from the cache. When multiple connections are made to the same host simultaneously, DNS lookups are deduplicated to avoid making multiple requests for the same host.
16
-
17
- This cache is automatically used by:
18
-
19
- - `bun install`
20
- - `fetch()`
21
- - `node:http` (client)
22
- - `Bun.connect`
23
- - `node:net`
24
- - `node:tls`
25
-
26
- ### When should I prefetch a DNS entry?
27
-
28
- Web browsers expose [`<link rel="dns-prefetch">`](https://developer.mozilla.org/en-US/docs/Web/Performance/dns-prefetch) to allow developers to prefetch DNS entries. This is useful when you know you'll need to connect to a host in the near future and want to avoid the initial DNS lookup.
29
-
30
- In Bun, you can use the `dns.prefetch` API to achieve the same effect.
31
-
32
- ```ts
33
- import { dns } from "bun";
34
-
35
- dns.prefetch("my.database-host.com", 5432);
36
- ```
37
-
38
- An example where you might want to use this is a database driver. When your application first starts up, you can prefetch the DNS entry for the database host so that by the time it finishes loading everything, the DNS query to resolve the database host may already be completed.
39
-
40
- ### `dns.prefetch`
41
-
42
- {% callout %}
43
- **🚧** — This API is experimental and may change in the future.
44
- {% /callout %}
45
-
46
- To prefetch a DNS entry, you can use the `dns.prefetch` API. This API is useful when you know you'll need to connect to a host soon and want to avoid the initial DNS lookup.
47
-
48
- ```ts
49
- dns.prefetch(hostname: string, port: number): void;
50
- ```
51
-
52
- Here's an example:
53
-
54
- ```ts
55
- import { dns } from "bun";
56
-
57
- dns.prefetch("bun.com", 443);
58
- //
59
- // ... sometime later ...
60
- await fetch("https://bun.com");
61
- ```
62
-
63
- ### `dns.getCacheStats()`
64
-
65
- {% callout %}
66
- **🚧** — This API is experimental and may change in the future.
67
- {% /callout %}
68
-
69
- To get the current cache stats, you can use the `dns.getCacheStats` API.
70
-
71
- This API returns an object with the following properties:
72
-
73
- ```ts
74
- {
75
- // Cache hits
76
- cacheHitsCompleted: number;
77
- cacheHitsInflight: number;
78
- cacheMisses: number;
79
- // Number of items in the DNS cache
80
- size: number;
81
-
82
- // Number of times a connection failed
83
- errors: number;
84
-
85
- // Number of times a connection was requested at all (including cache hits and misses)
86
- totalCount: number;
87
- }
88
- ```
89
-
90
- Example:
91
-
92
- ```ts
93
- import { dns } from "bun";
94
-
95
- const stats = dns.getCacheStats();
96
- console.log(stats);
97
- // => { cacheHitsCompleted: 0, cacheHitsInflight: 0, cacheMisses: 0, size: 0, errors: 0, totalCount: 0 }
98
- ```
99
-
100
- ### Configuring DNS cache TTL
101
-
102
- Bun defaults to 30 seconds for the TTL of DNS cache entries. To change this, you can set the environment variable `$BUN_CONFIG_DNS_TIME_TO_LIVE_SECONDS`. For example, to set the TTL to 5 seconds:
103
-
104
- ```sh
105
- BUN_CONFIG_DNS_TIME_TO_LIVE_SECONDS=5 bun run my-script.ts
106
- ```
107
-
108
- #### Why is 30 seconds the default?
109
-
110
- Unfortunately, the system API underneath (`getaddrinfo`) does not provide a way to get the TTL of a DNS entry. This means we have to pick a number arbitrarily. We chose 30 seconds because it's long enough to see the benefits of caching, and short enough to be unlikely to cause issues if a DNS entry changes. [Amazon Web Services recommends 5 seconds](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/jvm-ttl-dns.html) for the Java Virtual Machine, however the JVM defaults to cache indefinitely.