bun-types 1.3.2-canary.20251106T140813 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (316) hide show
  1. package/bun.d.ts +102 -6
  2. package/docs/bundler/bytecode.mdx +465 -0
  3. package/docs/bundler/css.mdx +1024 -0
  4. package/docs/bundler/esbuild.mdx +253 -0
  5. package/docs/bundler/executables.mdx +535 -0
  6. package/docs/bundler/fullstack.mdx +1064 -0
  7. package/docs/bundler/hot-reloading.mdx +229 -0
  8. package/docs/bundler/html-static.mdx +386 -0
  9. package/docs/bundler/index.mdx +1499 -0
  10. package/docs/bundler/loaders.mdx +356 -0
  11. package/docs/bundler/macros.mdx +328 -0
  12. package/docs/bundler/minifier.mdx +1306 -0
  13. package/docs/bundler/plugins.mdx +411 -0
  14. package/docs/feedback.mdx +85 -0
  15. package/docs/guides/binary/arraybuffer-to-array.mdx +29 -0
  16. package/docs/guides/binary/arraybuffer-to-blob.mdx +26 -0
  17. package/docs/guides/binary/arraybuffer-to-buffer.mdx +27 -0
  18. package/docs/guides/binary/arraybuffer-to-string.mdx +17 -0
  19. package/docs/guides/binary/arraybuffer-to-typedarray.mdx +41 -0
  20. package/docs/guides/binary/blob-to-arraybuffer.mdx +16 -0
  21. package/docs/guides/binary/blob-to-dataview.mdx +16 -0
  22. package/docs/guides/binary/blob-to-stream.mdx +16 -0
  23. package/docs/guides/binary/blob-to-string.mdx +17 -0
  24. package/docs/guides/binary/blob-to-typedarray.mdx +16 -0
  25. package/docs/guides/binary/buffer-to-arraybuffer.mdx +16 -0
  26. package/docs/guides/binary/buffer-to-blob.mdx +16 -0
  27. package/docs/guides/binary/buffer-to-readablestream.mdx +43 -0
  28. package/docs/guides/binary/buffer-to-string.mdx +27 -0
  29. package/docs/guides/binary/buffer-to-typedarray.mdx +16 -0
  30. package/docs/guides/binary/dataview-to-string.mdx +17 -0
  31. package/docs/guides/binary/typedarray-to-arraybuffer.mdx +27 -0
  32. package/docs/guides/binary/typedarray-to-blob.mdx +18 -0
  33. package/docs/guides/binary/typedarray-to-buffer.mdx +16 -0
  34. package/docs/guides/binary/typedarray-to-dataview.mdx +16 -0
  35. package/docs/guides/binary/typedarray-to-readablestream.mdx +43 -0
  36. package/docs/guides/binary/typedarray-to-string.mdx +18 -0
  37. package/docs/guides/deployment/aws-lambda.mdx +204 -0
  38. package/docs/guides/deployment/digital-ocean.mdx +161 -0
  39. package/docs/guides/deployment/google-cloud-run.mdx +197 -0
  40. package/docs/guides/deployment/railway.mdx +145 -0
  41. package/docs/guides/deployment/render.mdx +82 -0
  42. package/docs/guides/deployment/vercel.mdx +99 -0
  43. package/docs/guides/ecosystem/astro.mdx +82 -0
  44. package/docs/guides/ecosystem/discordjs.mdx +80 -0
  45. package/docs/guides/ecosystem/docker.mdx +151 -0
  46. package/docs/guides/ecosystem/drizzle.mdx +195 -0
  47. package/docs/guides/ecosystem/edgedb.mdx +257 -0
  48. package/docs/guides/ecosystem/elysia.mdx +31 -0
  49. package/docs/guides/ecosystem/express.mdx +43 -0
  50. package/docs/guides/ecosystem/hono.mdx +47 -0
  51. package/docs/guides/ecosystem/mongoose.mdx +92 -0
  52. package/docs/guides/ecosystem/neon-drizzle.mdx +234 -0
  53. package/docs/guides/ecosystem/neon-serverless-postgres.mdx +60 -0
  54. package/docs/guides/ecosystem/nextjs.mdx +57 -0
  55. package/docs/guides/ecosystem/nuxt.mdx +90 -0
  56. package/docs/guides/ecosystem/pm2.mdx +55 -0
  57. package/docs/guides/ecosystem/prisma-postgres.mdx +169 -0
  58. package/docs/guides/ecosystem/prisma.mdx +164 -0
  59. package/docs/guides/ecosystem/qwik.mdx +114 -0
  60. package/docs/guides/ecosystem/react.mdx +52 -0
  61. package/docs/guides/ecosystem/remix.mdx +97 -0
  62. package/docs/guides/ecosystem/sentry.mdx +54 -0
  63. package/docs/guides/ecosystem/solidstart.mdx +66 -0
  64. package/docs/guides/ecosystem/ssr-react.mdx +49 -0
  65. package/docs/guides/ecosystem/stric.mdx +54 -0
  66. package/docs/guides/ecosystem/sveltekit.mdx +138 -0
  67. package/docs/guides/ecosystem/systemd.mdx +114 -0
  68. package/docs/guides/ecosystem/upstash.mdx +87 -0
  69. package/docs/guides/ecosystem/vite.mdx +77 -0
  70. package/docs/guides/html-rewriter/extract-links.mdx +72 -0
  71. package/docs/guides/html-rewriter/extract-social-meta.mdx +97 -0
  72. package/docs/guides/http/cluster.mdx +69 -0
  73. package/docs/guides/http/fetch-unix.mdx +35 -0
  74. package/docs/guides/http/fetch.mdx +26 -0
  75. package/docs/guides/http/file-uploads.mdx +97 -0
  76. package/docs/guides/http/hot.mdx +28 -0
  77. package/docs/guides/http/proxy.mdx +26 -0
  78. package/docs/guides/http/server.mdx +48 -0
  79. package/docs/guides/http/simple.mdx +20 -0
  80. package/docs/guides/http/stream-file.mdx +50 -0
  81. package/docs/guides/http/stream-iterator.mdx +49 -0
  82. package/docs/guides/http/stream-node-streams-in-bun.mdx +22 -0
  83. package/docs/guides/http/tls.mdx +32 -0
  84. package/docs/guides/index.mdx +10 -0
  85. package/docs/guides/install/add-dev.mdx +28 -0
  86. package/docs/guides/install/add-git.mdx +38 -0
  87. package/docs/guides/install/add-optional.mdx +27 -0
  88. package/docs/guides/install/add-peer.mdx +45 -0
  89. package/docs/guides/install/add-tarball.mdx +35 -0
  90. package/docs/guides/install/add.mdx +44 -0
  91. package/docs/guides/install/azure-artifacts.mdx +76 -0
  92. package/docs/guides/install/cicd.mdx +43 -0
  93. package/docs/guides/install/custom-registry.mdx +32 -0
  94. package/docs/guides/install/from-npm-install-to-bun-install.mdx +230 -0
  95. package/docs/guides/install/git-diff-bun-lockfile.mdx +47 -0
  96. package/docs/guides/install/jfrog-artifactory.mdx +28 -0
  97. package/docs/guides/install/npm-alias.mdx +25 -0
  98. package/docs/guides/install/registry-scope.mdx +40 -0
  99. package/docs/guides/install/trusted.mdx +50 -0
  100. package/docs/guides/install/workspaces.mdx +70 -0
  101. package/docs/guides/install/yarnlock.mdx +50 -0
  102. package/docs/guides/process/argv.mdx +66 -0
  103. package/docs/guides/process/ctrl-c.mdx +18 -0
  104. package/docs/guides/process/ipc.mdx +69 -0
  105. package/docs/guides/process/nanoseconds.mdx +15 -0
  106. package/docs/guides/process/os-signals.mdx +41 -0
  107. package/docs/guides/process/spawn-stderr.mdx +34 -0
  108. package/docs/guides/process/spawn-stdout.mdx +28 -0
  109. package/docs/guides/process/spawn.mdx +43 -0
  110. package/docs/guides/process/stdin.mdx +62 -0
  111. package/docs/guides/read-file/arraybuffer.mdx +30 -0
  112. package/docs/guides/read-file/buffer.mdx +21 -0
  113. package/docs/guides/read-file/exists.mdx +18 -0
  114. package/docs/guides/read-file/json.mdx +19 -0
  115. package/docs/guides/read-file/mime.mdx +22 -0
  116. package/docs/guides/read-file/stream.mdx +28 -0
  117. package/docs/guides/read-file/string.mdx +24 -0
  118. package/docs/guides/read-file/uint8array.mdx +23 -0
  119. package/docs/guides/read-file/watch.mdx +66 -0
  120. package/docs/guides/runtime/build-time-constants.mdx +295 -0
  121. package/docs/guides/runtime/cicd.mdx +45 -0
  122. package/docs/guides/runtime/codesign-macos-executable.mdx +61 -0
  123. package/docs/guides/runtime/define-constant.mdx +149 -0
  124. package/docs/guides/runtime/delete-directory.mdx +39 -0
  125. package/docs/guides/runtime/delete-file.mdx +21 -0
  126. package/docs/guides/runtime/heap-snapshot.mdx +28 -0
  127. package/docs/guides/runtime/import-html.mdx +17 -0
  128. package/docs/guides/runtime/import-json.mdx +46 -0
  129. package/docs/guides/runtime/import-toml.mdx +32 -0
  130. package/docs/guides/runtime/import-yaml.mdx +104 -0
  131. package/docs/guides/runtime/read-env.mdx +37 -0
  132. package/docs/guides/runtime/set-env.mdx +51 -0
  133. package/docs/guides/runtime/shell.mdx +42 -0
  134. package/docs/guides/runtime/timezone.mdx +38 -0
  135. package/docs/guides/runtime/tsconfig-paths.mdx +31 -0
  136. package/docs/guides/runtime/typescript.mdx +51 -0
  137. package/docs/guides/runtime/vscode-debugger.mdx +48 -0
  138. package/docs/guides/runtime/web-debugger.mdx +103 -0
  139. package/docs/guides/streams/node-readable-to-arraybuffer.mdx +13 -0
  140. package/docs/guides/streams/node-readable-to-blob.mdx +13 -0
  141. package/docs/guides/streams/node-readable-to-json.mdx +14 -0
  142. package/docs/guides/streams/node-readable-to-string.mdx +14 -0
  143. package/docs/guides/streams/node-readable-to-uint8array.mdx +13 -0
  144. package/docs/guides/streams/to-array.mdx +16 -0
  145. package/docs/guides/streams/to-arraybuffer.mdx +16 -0
  146. package/docs/guides/streams/to-blob.mdx +16 -0
  147. package/docs/guides/streams/to-buffer.mdx +17 -0
  148. package/docs/guides/streams/to-json.mdx +16 -0
  149. package/docs/guides/streams/to-string.mdx +16 -0
  150. package/docs/guides/streams/to-typedarray.mdx +24 -0
  151. package/docs/guides/test/bail.mdx +24 -0
  152. package/docs/guides/test/coverage-threshold.mdx +67 -0
  153. package/docs/guides/test/coverage.mdx +49 -0
  154. package/docs/guides/test/happy-dom.mdx +73 -0
  155. package/docs/guides/test/migrate-from-jest.mdx +125 -0
  156. package/docs/guides/test/mock-clock.mdx +50 -0
  157. package/docs/guides/test/mock-functions.mdx +70 -0
  158. package/docs/guides/test/rerun-each.mdx +16 -0
  159. package/docs/guides/test/run-tests.mdx +116 -0
  160. package/docs/guides/test/skip-tests.mdx +43 -0
  161. package/docs/guides/test/snapshot.mdx +102 -0
  162. package/docs/guides/test/spy-on.mdx +49 -0
  163. package/docs/guides/test/svelte-test.mdx +113 -0
  164. package/docs/guides/test/testing-library.mdx +93 -0
  165. package/docs/guides/test/timeout.mdx +17 -0
  166. package/docs/guides/test/todo-tests.mdx +74 -0
  167. package/docs/guides/test/update-snapshots.mdx +49 -0
  168. package/docs/guides/test/watch-mode.mdx +24 -0
  169. package/docs/guides/util/base64.mdx +17 -0
  170. package/docs/guides/util/deep-equals.mdx +41 -0
  171. package/docs/guides/util/deflate.mdx +20 -0
  172. package/docs/guides/util/detect-bun.mdx +25 -0
  173. package/docs/guides/util/entrypoint.mdx +19 -0
  174. package/docs/guides/util/escape-html.mdx +24 -0
  175. package/docs/guides/util/file-url-to-path.mdx +16 -0
  176. package/docs/guides/util/gzip.mdx +20 -0
  177. package/docs/guides/util/hash-a-password.mdx +56 -0
  178. package/docs/guides/util/import-meta-dir.mdx +15 -0
  179. package/docs/guides/util/import-meta-file.mdx +15 -0
  180. package/docs/guides/util/import-meta-path.mdx +15 -0
  181. package/docs/guides/util/javascript-uuid.mdx +25 -0
  182. package/docs/guides/util/main.mdx +43 -0
  183. package/docs/guides/util/path-to-file-url.mdx +16 -0
  184. package/docs/guides/util/sleep.mdx +24 -0
  185. package/docs/guides/util/version.mdx +23 -0
  186. package/docs/guides/util/which-path-to-executable-bin.mdx +17 -0
  187. package/docs/guides/websocket/compression.mdx +33 -0
  188. package/docs/guides/websocket/context.mdx +74 -0
  189. package/docs/guides/websocket/pubsub.mdx +40 -0
  190. package/docs/guides/websocket/simple.mdx +35 -0
  191. package/docs/guides/write-file/append.mdx +54 -0
  192. package/docs/guides/write-file/basic.mdx +46 -0
  193. package/docs/guides/write-file/blob.mdx +30 -0
  194. package/docs/guides/write-file/cat.mdx +19 -0
  195. package/docs/guides/write-file/file-cp.mdx +18 -0
  196. package/docs/guides/write-file/filesink.mdx +54 -0
  197. package/docs/guides/write-file/response.mdx +19 -0
  198. package/docs/guides/write-file/stdout.mdx +23 -0
  199. package/docs/guides/write-file/stream.mdx +19 -0
  200. package/docs/guides/write-file/unlink.mdx +18 -0
  201. package/docs/index.mdx +133 -0
  202. package/docs/installation.mdx +365 -0
  203. package/docs/pm/bunx.mdx +83 -0
  204. package/docs/pm/catalogs.mdx +292 -0
  205. package/docs/pm/cli/add.mdx +179 -0
  206. package/docs/pm/cli/audit.mdx +60 -0
  207. package/docs/pm/cli/install.mdx +471 -0
  208. package/docs/pm/cli/link.mdx +48 -0
  209. package/docs/pm/cli/outdated.mdx +197 -0
  210. package/docs/pm/cli/patch.mdx +69 -0
  211. package/docs/pm/cli/pm.mdx +319 -0
  212. package/docs/pm/cli/publish.mdx +123 -0
  213. package/docs/pm/cli/remove.mdx +16 -0
  214. package/docs/pm/cli/update.mdx +140 -0
  215. package/docs/pm/cli/why.mdx +84 -0
  216. package/docs/pm/filter.mdx +102 -0
  217. package/docs/pm/global-cache.mdx +72 -0
  218. package/docs/pm/isolated-installs.mdx +205 -0
  219. package/docs/pm/lifecycle.mdx +57 -0
  220. package/docs/pm/lockfile.mdx +64 -0
  221. package/docs/pm/npmrc.mdx +111 -0
  222. package/docs/pm/overrides.mdx +83 -0
  223. package/docs/pm/scopes-registries.mdx +35 -0
  224. package/docs/pm/security-scanner-api.mdx +95 -0
  225. package/docs/pm/workspaces.mdx +109 -0
  226. package/docs/project/benchmarking.mdx +218 -0
  227. package/docs/project/bindgen.mdx +223 -0
  228. package/docs/project/building-windows.mdx +133 -0
  229. package/docs/project/contributing.mdx +343 -0
  230. package/docs/project/feedback.mdx +20 -0
  231. package/docs/project/license.mdx +78 -0
  232. package/docs/project/roadmap.mdx +8 -0
  233. package/docs/quickstart.mdx +240 -0
  234. package/docs/runtime/auto-install.mdx +97 -0
  235. package/docs/runtime/binary-data.mdx +846 -0
  236. package/docs/runtime/bun-apis.mdx +59 -0
  237. package/docs/runtime/bunfig.mdx +642 -0
  238. package/docs/runtime/c-compiler.mdx +204 -0
  239. package/docs/runtime/child-process.mdx +532 -0
  240. package/docs/runtime/color.mdx +267 -0
  241. package/docs/runtime/console.mdx +67 -0
  242. package/docs/runtime/cookies.mdx +454 -0
  243. package/docs/runtime/debugger.mdx +335 -0
  244. package/docs/runtime/environment-variables.mdx +214 -0
  245. package/docs/runtime/ffi.mdx +565 -0
  246. package/docs/runtime/file-io.mdx +306 -0
  247. package/docs/runtime/file-system-router.mdx +118 -0
  248. package/docs/runtime/file-types.mdx +354 -0
  249. package/docs/runtime/glob.mdx +181 -0
  250. package/docs/runtime/globals.mdx +72 -0
  251. package/docs/runtime/hashing.mdx +315 -0
  252. package/docs/runtime/html-rewriter.mdx +340 -0
  253. package/docs/runtime/http/cookies.mdx +79 -0
  254. package/docs/runtime/http/error-handling.mdx +40 -0
  255. package/docs/runtime/http/metrics.mdx +36 -0
  256. package/docs/runtime/http/routing.mdx +289 -0
  257. package/docs/runtime/http/server.mdx +647 -0
  258. package/docs/runtime/http/tls.mdx +101 -0
  259. package/docs/runtime/http/websockets.mdx +404 -0
  260. package/docs/runtime/index.mdx +223 -0
  261. package/docs/runtime/jsx.mdx +115 -0
  262. package/docs/runtime/module-resolution.mdx +342 -0
  263. package/docs/runtime/networking/dns.mdx +111 -0
  264. package/docs/runtime/networking/fetch.mdx +468 -0
  265. package/docs/runtime/networking/tcp.mdx +239 -0
  266. package/docs/runtime/networking/udp.mdx +129 -0
  267. package/docs/runtime/node-api.mdx +19 -0
  268. package/docs/runtime/nodejs-compat.mdx +468 -0
  269. package/docs/runtime/plugins.mdx +405 -0
  270. package/docs/runtime/redis.mdx +582 -0
  271. package/docs/runtime/s3.mdx +863 -0
  272. package/docs/runtime/secrets.mdx +336 -0
  273. package/docs/runtime/semver.mdx +57 -0
  274. package/docs/runtime/shell.mdx +637 -0
  275. package/docs/runtime/sql.mdx +1404 -0
  276. package/docs/runtime/sqlite.mdx +699 -0
  277. package/docs/runtime/streams.mdx +232 -0
  278. package/docs/runtime/templating/create.mdx +269 -0
  279. package/docs/runtime/templating/init.mdx +58 -0
  280. package/docs/runtime/transpiler.mdx +288 -0
  281. package/docs/runtime/typescript.mdx +58 -0
  282. package/docs/runtime/utils.mdx +922 -0
  283. package/docs/runtime/watch-mode.mdx +161 -0
  284. package/docs/runtime/web-apis.mdx +29 -0
  285. package/docs/runtime/workers.mdx +328 -0
  286. package/docs/runtime/yaml.mdx +469 -0
  287. package/docs/snippets/cli/add.mdx +166 -0
  288. package/docs/snippets/cli/build.mdx +196 -0
  289. package/docs/snippets/cli/feedback.mdx +17 -0
  290. package/docs/snippets/cli/init.mdx +84 -0
  291. package/docs/snippets/cli/install.mdx +173 -0
  292. package/docs/snippets/cli/link.mdx +163 -0
  293. package/docs/snippets/cli/outdated.mdx +140 -0
  294. package/docs/snippets/cli/patch.mdx +171 -0
  295. package/docs/snippets/cli/publish.mdx +198 -0
  296. package/docs/snippets/cli/remove.mdx +146 -0
  297. package/docs/snippets/cli/run.mdx +293 -0
  298. package/docs/snippets/cli/test.mdx +100 -0
  299. package/docs/snippets/cli/update.mdx +144 -0
  300. package/docs/snippets/product-card.mdx +32 -0
  301. package/docs/snippets/product-tiles.mdx +94 -0
  302. package/docs/test/code-coverage.mdx +409 -0
  303. package/docs/test/configuration.mdx +467 -0
  304. package/docs/test/dates-times.mdx +129 -0
  305. package/docs/test/discovery.mdx +90 -0
  306. package/docs/test/dom.mdx +226 -0
  307. package/docs/test/index.mdx +380 -0
  308. package/docs/test/lifecycle.mdx +348 -0
  309. package/docs/test/mocks.mdx +637 -0
  310. package/docs/test/reporters.mdx +117 -0
  311. package/docs/test/runtime-behavior.mdx +342 -0
  312. package/docs/test/snapshots.mdx +434 -0
  313. package/docs/test/writing-tests.mdx +635 -0
  314. package/docs/typescript.mdx +54 -0
  315. package/package.json +8 -6
  316. package/test.d.ts +2 -2
@@ -0,0 +1,454 @@
1
+ ---
2
+ title: Cookies
3
+ description: Use Bun's native APIs for working with HTTP cookies
4
+ ---
5
+
6
+ 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.
7
+
8
+ ## CookieMap class
9
+
10
+ `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.
11
+
12
+ ```ts filename="cookies.ts" icon="/icons/typescript.svg"
13
+ // Empty cookie map
14
+ const cookies = new Bun.CookieMap();
15
+
16
+ // From a cookie string
17
+ const cookies1 = new Bun.CookieMap("name=value; foo=bar");
18
+
19
+ // From an object
20
+ const cookies2 = new Bun.CookieMap({
21
+ session: "abc123",
22
+ theme: "dark",
23
+ });
24
+
25
+ // From an array of name/value pairs
26
+ const cookies3 = new Bun.CookieMap([
27
+ ["session", "abc123"],
28
+ ["theme", "dark"],
29
+ ]);
30
+ ```
31
+
32
+ ### In HTTP servers
33
+
34
+ In Bun's HTTP server, the `cookies` property on the request object (in `routes`) is an instance of `CookieMap`:
35
+
36
+ ```ts filename="server.ts" icon="/icons/typescript.svg"
37
+ const server = Bun.serve({
38
+ routes: {
39
+ "/": req => {
40
+ // Access request cookies
41
+ const cookies = req.cookies;
42
+
43
+ // Get a specific cookie
44
+ const sessionCookie = cookies.get("session");
45
+ if (sessionCookie != null) {
46
+ console.log(sessionCookie);
47
+ }
48
+
49
+ // Check if a cookie exists
50
+ if (cookies.has("theme")) {
51
+ // ...
52
+ }
53
+
54
+ // Set a cookie, it will be automatically applied to the response
55
+ cookies.set("visited", "true");
56
+
57
+ return new Response("Hello");
58
+ },
59
+ },
60
+ });
61
+
62
+ console.log("Server listening at: " + server.url);
63
+ ```
64
+
65
+ ### Methods
66
+
67
+ #### `get(name: string): string | null`
68
+
69
+ Retrieves a cookie by name. Returns `null` if the cookie doesn't exist.
70
+
71
+ ```ts filename="get-cookie.ts" icon="/icons/typescript.svg"
72
+ // Get by name
73
+ const cookie = cookies.get("session");
74
+
75
+ if (cookie != null) {
76
+ console.log(cookie);
77
+ }
78
+ ```
79
+
80
+ #### `has(name: string): boolean`
81
+
82
+ Checks if a cookie with the given name exists.
83
+
84
+ ```ts filename="has-cookie.ts" icon="/icons/typescript.svg"
85
+ // Check if cookie exists
86
+ if (cookies.has("session")) {
87
+ // Cookie exists
88
+ }
89
+ ```
90
+
91
+ #### `set(name: string, value: string): void`
92
+
93
+ #### `set(options: CookieInit): void`
94
+
95
+ #### `set(cookie: Cookie): void`
96
+
97
+ Adds or updates a cookie in the map. Cookies default to `{ path: "/", sameSite: "lax" }`.
98
+
99
+ ```ts filename="set-cookie.ts" icon="/icons/typescript.svg"
100
+ // Set by name and value
101
+ cookies.set("session", "abc123");
102
+
103
+ // Set using options object
104
+ cookies.set({
105
+ name: "theme",
106
+ value: "dark",
107
+ maxAge: 3600,
108
+ secure: true,
109
+ });
110
+
111
+ // Set using Cookie instance
112
+ const cookie = new Bun.Cookie("visited", "true");
113
+ cookies.set(cookie);
114
+ ```
115
+
116
+ #### `delete(name: string): void`
117
+
118
+ #### `delete(options: CookieStoreDeleteOptions): void`
119
+
120
+ 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.
121
+
122
+ ```ts filename="delete-cookie.ts" icon="/icons/typescript.svg"
123
+ // Delete by name using default domain and path.
124
+ cookies.delete("session");
125
+
126
+ // Delete with domain/path options.
127
+ cookies.delete({
128
+ name: "session",
129
+ domain: "example.com",
130
+ path: "/admin",
131
+ });
132
+ ```
133
+
134
+ #### `toJSON(): Record<string, string>`
135
+
136
+ Converts the cookie map to a serializable format.
137
+
138
+ ```ts filename="cookie-to-json.ts" icon="/icons/typescript.svg"
139
+ const json = cookies.toJSON();
140
+ ```
141
+
142
+ #### `toSetCookieHeaders(): string[]`
143
+
144
+ Returns an array of values for Set-Cookie headers that can be used to apply all cookie changes.
145
+
146
+ 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.
147
+
148
+ ```ts filename="node-server.js" icon="file-code"
149
+ import { createServer } from "node:http";
150
+ import { CookieMap } from "bun";
151
+
152
+ const server = createServer((req, res) => {
153
+ const cookieHeader = req.headers.cookie || "";
154
+ const cookies = new CookieMap(cookieHeader);
155
+
156
+ cookies.set("view-count", Number(cookies.get("view-count") || "0") + 1);
157
+ cookies.delete("session");
158
+
159
+ res.writeHead(200, {
160
+ "Content-Type": "text/plain",
161
+ "Set-Cookie": cookies.toSetCookieHeaders(),
162
+ });
163
+ res.end(`Found ${cookies.size} cookies`);
164
+ });
165
+
166
+ server.listen(3000, () => {
167
+ console.log("Server running at http://localhost:3000/");
168
+ });
169
+ ```
170
+
171
+ ### Iteration
172
+
173
+ `CookieMap` provides several methods for iteration:
174
+
175
+ ```ts filename="iterate-cookies.ts" icon="/icons/typescript.svg"
176
+ // Iterate over [name, cookie] entries
177
+ for (const [name, value] of cookies) {
178
+ console.log(`${name}: ${value}`);
179
+ }
180
+
181
+ // Using entries()
182
+ for (const [name, value] of cookies.entries()) {
183
+ console.log(`${name}: ${value}`);
184
+ }
185
+
186
+ // Using keys()
187
+ for (const name of cookies.keys()) {
188
+ console.log(name);
189
+ }
190
+
191
+ // Using values()
192
+ for (const value of cookies.values()) {
193
+ console.log(value);
194
+ }
195
+
196
+ // Using forEach
197
+ cookies.forEach((value, name) => {
198
+ console.log(`${name}: ${value}`);
199
+ });
200
+ ```
201
+
202
+ ### Properties
203
+
204
+ #### `size: number`
205
+
206
+ Returns the number of cookies in the map.
207
+
208
+ ```ts filename="cookie-size.ts" icon="/icons/typescript.svg"
209
+ console.log(cookies.size); // Number of cookies
210
+ ```
211
+
212
+ ## Cookie class
213
+
214
+ `Bun.Cookie` represents an HTTP cookie with its name, value, and attributes.
215
+
216
+ ```ts filename="cookie-class.ts" icon="/icons/typescript.svg"
217
+ import { Cookie } from "bun";
218
+
219
+ // Create a basic cookie
220
+ const cookie = new Bun.Cookie("name", "value");
221
+
222
+ // Create a cookie with options
223
+ const secureSessionCookie = new Bun.Cookie("session", "abc123", {
224
+ domain: "example.com",
225
+ path: "/admin",
226
+ expires: new Date(Date.now() + 86400000), // 1 day
227
+ httpOnly: true,
228
+ secure: true,
229
+ sameSite: "strict",
230
+ });
231
+
232
+ // Parse from a cookie string
233
+ const parsedCookie = new Bun.Cookie("name=value; Path=/; HttpOnly");
234
+
235
+ // Create from an options object
236
+ const objCookie = new Bun.Cookie({
237
+ name: "theme",
238
+ value: "dark",
239
+ maxAge: 3600,
240
+ secure: true,
241
+ });
242
+ ```
243
+
244
+ ### Constructors
245
+
246
+ ```ts filename="constructors.ts" icon="/icons/typescript.svg"
247
+ // Basic constructor with name/value
248
+ new Bun.Cookie(name: string, value: string);
249
+
250
+ // Constructor with name, value, and options
251
+ new Bun.Cookie(name: string, value: string, options: CookieInit);
252
+
253
+ // Constructor from cookie string
254
+ new Bun.Cookie(cookieString: string);
255
+
256
+ // Constructor from cookie object
257
+ new Bun.Cookie(options: CookieInit);
258
+ ```
259
+
260
+ ### Properties
261
+
262
+ ```ts filename="cookie-properties.ts" icon="/icons/typescript.svg"
263
+ cookie.name; // string - Cookie name
264
+ cookie.value; // string - Cookie value
265
+ cookie.domain; // string | null - Domain scope (null if not specified)
266
+ cookie.path; // string - URL path scope (defaults to "/")
267
+ cookie.expires; // number | undefined - Expiration timestamp (ms since epoch)
268
+ cookie.secure; // boolean - Require HTTPS
269
+ cookie.sameSite; // "strict" | "lax" | "none" - SameSite setting
270
+ cookie.partitioned; // boolean - Whether the cookie is partitioned (CHIPS)
271
+ cookie.maxAge; // number | undefined - Max age in seconds
272
+ cookie.httpOnly; // boolean - Accessible only via HTTP (not JavaScript)
273
+ ```
274
+
275
+ ### Methods
276
+
277
+ #### `isExpired(): boolean`
278
+
279
+ Checks if the cookie has expired.
280
+
281
+ ```ts filename="is-expired.ts" icon="/icons/typescript.svg"
282
+ // Expired cookie (Date in the past)
283
+ const expiredCookie = new Bun.Cookie("name", "value", {
284
+ expires: new Date(Date.now() - 1000),
285
+ });
286
+ console.log(expiredCookie.isExpired()); // true
287
+
288
+ // Valid cookie (Using maxAge instead of expires)
289
+ const validCookie = new Bun.Cookie("name", "value", {
290
+ maxAge: 3600, // 1 hour in seconds
291
+ });
292
+ console.log(validCookie.isExpired()); // false
293
+
294
+ // Session cookie (no expiration)
295
+ const sessionCookie = new Bun.Cookie("name", "value");
296
+ console.log(sessionCookie.isExpired()); // false
297
+ ```
298
+
299
+ #### `serialize(): string`
300
+
301
+ #### `toString(): string`
302
+
303
+ Returns a string representation of the cookie suitable for a `Set-Cookie` header.
304
+
305
+ ```ts filename="serialize-cookie.ts" icon="/icons/typescript.svg"
306
+ const cookie = new Bun.Cookie("session", "abc123", {
307
+ domain: "example.com",
308
+ path: "/admin",
309
+ expires: new Date(Date.now() + 86400000),
310
+ secure: true,
311
+ httpOnly: true,
312
+ sameSite: "strict",
313
+ });
314
+
315
+ console.log(cookie.serialize());
316
+ // => "session=abc123; Domain=example.com; Path=/admin; Expires=Sun, 19 Mar 2025 15:03:26 GMT; Secure; HttpOnly; SameSite=strict"
317
+ console.log(cookie.toString());
318
+ // => "session=abc123; Domain=example.com; Path=/admin; Expires=Sun, 19 Mar 2025 15:03:26 GMT; Secure; HttpOnly; SameSite=strict"
319
+ ```
320
+
321
+ #### `toJSON(): CookieInit`
322
+
323
+ Converts the cookie to a plain object suitable for JSON serialization.
324
+
325
+ ```ts filename="cookie-json.ts" icon="/icons/typescript.svg"
326
+ const cookie = new Bun.Cookie("session", "abc123", {
327
+ secure: true,
328
+ httpOnly: true,
329
+ });
330
+
331
+ const json = cookie.toJSON();
332
+ // => {
333
+ // name: "session",
334
+ // value: "abc123",
335
+ // path: "/",
336
+ // secure: true,
337
+ // httpOnly: true,
338
+ // sameSite: "lax",
339
+ // partitioned: false
340
+ // }
341
+
342
+ // Works with JSON.stringify
343
+ const jsonString = JSON.stringify(cookie);
344
+ ```
345
+
346
+ ### Static methods
347
+
348
+ #### `Cookie.parse(cookieString: string): Cookie`
349
+
350
+ Parses a cookie string into a `Cookie` instance.
351
+
352
+ ```ts filename="parse-cookie.ts" icon="/icons/typescript.svg"
353
+ const cookie = Bun.Cookie.parse("name=value; Path=/; Secure; SameSite=Lax");
354
+
355
+ console.log(cookie.name); // "name"
356
+ console.log(cookie.value); // "value"
357
+ console.log(cookie.path); // "/"
358
+ console.log(cookie.secure); // true
359
+ console.log(cookie.sameSite); // "lax"
360
+ ```
361
+
362
+ #### `Cookie.from(name: string, value: string, options?: CookieInit): Cookie`
363
+
364
+ Factory method to create a cookie.
365
+
366
+ ```ts filename="cookie-from.ts" icon="/icons/typescript.svg"
367
+ const cookie = Bun.Cookie.from("session", "abc123", {
368
+ httpOnly: true,
369
+ secure: true,
370
+ maxAge: 3600,
371
+ });
372
+ ```
373
+
374
+ ## Types
375
+
376
+ ```ts filename="types.ts" icon="/icons/typescript.svg"
377
+ interface CookieInit {
378
+ name?: string;
379
+ value?: string;
380
+ domain?: string;
381
+ /** Defaults to '/'. To allow the browser to set the path, use an empty string. */
382
+ path?: string;
383
+ expires?: number | Date | string;
384
+ secure?: boolean;
385
+ /** Defaults to `lax`. */
386
+ sameSite?: CookieSameSite;
387
+ httpOnly?: boolean;
388
+ partitioned?: boolean;
389
+ maxAge?: number;
390
+ }
391
+
392
+ interface CookieStoreDeleteOptions {
393
+ name: string;
394
+ domain?: string | null;
395
+ path?: string;
396
+ }
397
+
398
+ interface CookieStoreGetOptions {
399
+ name?: string;
400
+ url?: string;
401
+ }
402
+
403
+ type CookieSameSite = "strict" | "lax" | "none";
404
+
405
+ class Cookie {
406
+ constructor(name: string, value: string, options?: CookieInit);
407
+ constructor(cookieString: string);
408
+ constructor(cookieObject?: CookieInit);
409
+
410
+ readonly name: string;
411
+ value: string;
412
+ domain?: string;
413
+ path: string;
414
+ expires?: Date;
415
+ secure: boolean;
416
+ sameSite: CookieSameSite;
417
+ partitioned: boolean;
418
+ maxAge?: number;
419
+ httpOnly: boolean;
420
+
421
+ isExpired(): boolean;
422
+
423
+ serialize(): string;
424
+ toString(): string;
425
+ toJSON(): CookieInit;
426
+
427
+ static parse(cookieString: string): Cookie;
428
+ static from(name: string, value: string, options?: CookieInit): Cookie;
429
+ }
430
+
431
+ class CookieMap implements Iterable<[string, string]> {
432
+ constructor(init?: string[][] | Record<string, string> | string);
433
+
434
+ get(name: string): string | null;
435
+
436
+ toSetCookieHeaders(): string[];
437
+
438
+ has(name: string): boolean;
439
+ set(name: string, value: string, options?: CookieInit): void;
440
+ set(options: CookieInit): void;
441
+ delete(name: string): void;
442
+ delete(options: CookieStoreDeleteOptions): void;
443
+ delete(name: string, options: Omit<CookieStoreDeleteOptions, "name">): void;
444
+ toJSON(): Record<string, string>;
445
+
446
+ readonly size: number;
447
+
448
+ entries(): IterableIterator<[string, string]>;
449
+ keys(): IterableIterator<string>;
450
+ values(): IterableIterator<string>;
451
+ forEach(callback: (value: string, key: string, map: CookieMap) => void): void;
452
+ [Symbol.iterator](): IterableIterator<[string, string]>;
453
+ }
454
+ ```