bun-types 1.3.2-canary.20251105T140650 → 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 (370) hide show
  1. package/bun.d.ts +102 -6
  2. package/docs/README.md +28 -0
  3. package/docs/bundler/bytecode.mdx +465 -0
  4. package/docs/bundler/{css.md → css.mdx} +97 -101
  5. package/docs/bundler/esbuild.mdx +253 -0
  6. package/docs/bundler/{executables.md → executables.mdx} +130 -221
  7. package/docs/bundler/fullstack.mdx +1064 -0
  8. package/docs/bundler/{hmr.md → hot-reloading.mdx} +74 -79
  9. package/docs/bundler/{html.md → html-static.mdx} +148 -111
  10. package/docs/bundler/index.mdx +1499 -0
  11. package/docs/bundler/loaders.mdx +356 -0
  12. package/docs/bundler/{macros.md → macros.mdx} +83 -84
  13. package/docs/bundler/minifier.mdx +1306 -0
  14. package/docs/bundler/plugins.mdx +411 -0
  15. package/docs/feedback.mdx +85 -0
  16. package/docs/guides/binary/{arraybuffer-to-array.md → arraybuffer-to-array.mdx} +3 -1
  17. package/docs/guides/binary/{arraybuffer-to-blob.md → arraybuffer-to-blob.mdx} +3 -1
  18. package/docs/guides/binary/{arraybuffer-to-buffer.md → arraybuffer-to-buffer.mdx} +3 -1
  19. package/docs/guides/binary/{arraybuffer-to-string.md → arraybuffer-to-string.mdx} +3 -1
  20. package/docs/guides/binary/{arraybuffer-to-typedarray.md → arraybuffer-to-typedarray.mdx} +3 -1
  21. package/docs/guides/binary/{blob-to-arraybuffer.md → blob-to-arraybuffer.mdx} +3 -1
  22. package/docs/guides/binary/{blob-to-dataview.md → blob-to-dataview.mdx} +3 -1
  23. package/docs/guides/binary/{blob-to-stream.md → blob-to-stream.mdx} +3 -1
  24. package/docs/guides/binary/{blob-to-string.md → blob-to-string.mdx} +3 -1
  25. package/docs/guides/binary/{blob-to-typedarray.md → blob-to-typedarray.mdx} +3 -1
  26. package/docs/guides/binary/{buffer-to-arraybuffer.md → buffer-to-arraybuffer.mdx} +3 -1
  27. package/docs/guides/binary/{buffer-to-blob.md → buffer-to-blob.mdx} +3 -1
  28. package/docs/guides/binary/{buffer-to-readablestream.md → buffer-to-readablestream.mdx} +3 -1
  29. package/docs/guides/binary/{buffer-to-string.md → buffer-to-string.mdx} +3 -1
  30. package/docs/guides/binary/{buffer-to-typedarray.md → buffer-to-typedarray.mdx} +3 -1
  31. package/docs/guides/binary/{dataview-to-string.md → dataview-to-string.mdx} +3 -1
  32. package/docs/guides/binary/{typedarray-to-arraybuffer.md → typedarray-to-arraybuffer.mdx} +3 -1
  33. package/docs/guides/binary/{typedarray-to-blob.md → typedarray-to-blob.mdx} +3 -1
  34. package/docs/guides/binary/{typedarray-to-buffer.md → typedarray-to-buffer.mdx} +3 -1
  35. package/docs/guides/binary/{typedarray-to-dataview.md → typedarray-to-dataview.mdx} +3 -1
  36. package/docs/guides/binary/{typedarray-to-readablestream.md → typedarray-to-readablestream.mdx} +3 -1
  37. package/docs/guides/binary/{typedarray-to-string.md → typedarray-to-string.mdx} +3 -1
  38. package/docs/guides/deployment/aws-lambda.mdx +204 -0
  39. package/docs/guides/deployment/digital-ocean.mdx +161 -0
  40. package/docs/guides/deployment/google-cloud-run.mdx +197 -0
  41. package/docs/guides/deployment/{railway.md → railway.mdx} +42 -54
  42. package/docs/guides/deployment/render.mdx +82 -0
  43. package/docs/guides/deployment/vercel.mdx +99 -0
  44. package/docs/guides/ecosystem/{astro.md → astro.mdx} +16 -6
  45. package/docs/guides/ecosystem/{discordjs.md → discordjs.mdx} +21 -18
  46. package/docs/guides/ecosystem/{docker.md → docker.mdx} +25 -14
  47. package/docs/guides/ecosystem/{drizzle.md → drizzle.mdx} +32 -22
  48. package/docs/guides/ecosystem/{edgedb.md → edgedb.mdx} +63 -34
  49. package/docs/guides/ecosystem/{elysia.md → elysia.mdx} +11 -11
  50. package/docs/guides/ecosystem/{express.md → express.mdx} +12 -9
  51. package/docs/guides/ecosystem/{hono.md → hono.mdx} +16 -8
  52. package/docs/guides/ecosystem/{mongoose.md → mongoose.mdx} +26 -21
  53. package/docs/guides/ecosystem/{neon-drizzle.md → neon-drizzle.mdx} +49 -35
  54. package/docs/guides/ecosystem/{neon-serverless-postgres.md → neon-serverless-postgres.mdx} +16 -11
  55. package/docs/guides/ecosystem/{nextjs.md → nextjs.mdx} +18 -10
  56. package/docs/guides/ecosystem/{nuxt.md → nuxt.mdx} +45 -11
  57. package/docs/guides/ecosystem/{pm2.md → pm2.mdx} +7 -9
  58. package/docs/guides/ecosystem/prisma-postgres.mdx +169 -0
  59. package/docs/guides/ecosystem/prisma.mdx +164 -0
  60. package/docs/guides/ecosystem/{qwik.md → qwik.mdx} +18 -11
  61. package/docs/guides/ecosystem/{react.md → react.mdx} +9 -7
  62. package/docs/guides/ecosystem/{remix.md → remix.mdx} +45 -26
  63. package/docs/guides/ecosystem/{sentry.md → sentry.mdx} +7 -5
  64. package/docs/guides/ecosystem/{solidstart.md → solidstart.mdx} +21 -13
  65. package/docs/guides/ecosystem/{ssr-react.md → ssr-react.mdx} +9 -11
  66. package/docs/guides/ecosystem/{stric.md → stric.mdx} +16 -17
  67. package/docs/guides/ecosystem/{sveltekit.md → sveltekit.mdx} +42 -29
  68. package/docs/guides/ecosystem/{systemd.md → systemd.mdx} +27 -26
  69. package/docs/guides/ecosystem/upstash.mdx +87 -0
  70. package/docs/guides/ecosystem/{vite.md → vite.mdx} +20 -14
  71. package/docs/guides/html-rewriter/{extract-links.md → extract-links.mdx} +11 -7
  72. package/docs/guides/html-rewriter/{extract-social-meta.md → extract-social-meta.mdx} +6 -2
  73. package/docs/guides/http/{cluster.md → cluster.mdx} +10 -7
  74. package/docs/guides/http/{fetch-unix.md → fetch-unix.mdx} +5 -3
  75. package/docs/guides/http/{fetch.md → fetch.mdx} +5 -3
  76. package/docs/guides/http/{file-uploads.md → file-uploads.mdx} +18 -15
  77. package/docs/guides/http/{hot.md → hot.mdx} +9 -7
  78. package/docs/guides/http/{proxy.md → proxy.mdx} +7 -5
  79. package/docs/guides/http/{server.md → server.mdx} +4 -2
  80. package/docs/guides/http/{simple.md → simple.mdx} +4 -2
  81. package/docs/guides/http/{stream-file.md → stream-file.mdx} +6 -4
  82. package/docs/guides/http/{stream-iterator.md → stream-iterator.mdx} +5 -3
  83. package/docs/guides/http/{stream-node-streams-in-bun.md → stream-node-streams-in-bun.mdx} +4 -2
  84. package/docs/guides/http/{tls.md → tls.mdx} +5 -3
  85. package/docs/guides/index.mdx +10 -0
  86. package/docs/guides/install/{add-dev.md → add-dev.mdx} +8 -6
  87. package/docs/guides/install/add-git.mdx +38 -0
  88. package/docs/guides/install/{add-optional.md → add-optional.mdx} +7 -5
  89. package/docs/guides/install/{add-peer.md → add-peer.mdx} +13 -11
  90. package/docs/guides/install/{add-tarball.md → add-tarball.mdx} +7 -5
  91. package/docs/guides/install/{add.md → add.mdx} +12 -10
  92. package/docs/guides/install/{azure-artifacts.md → azure-artifacts.mdx} +15 -12
  93. package/docs/guides/{runtime/cicd.md → install/cicd.mdx} +13 -13
  94. package/docs/guides/install/{custom-registry.md → custom-registry.mdx} +6 -4
  95. package/docs/guides/install/{from-npm-install-to-bun-install.md → from-npm-install-to-bun-install.mdx} +50 -34
  96. package/docs/guides/install/{git-diff-bun-lockfile.md → git-diff-bun-lockfile.mdx} +14 -11
  97. package/docs/guides/install/{jfrog-artifactory.md → jfrog-artifactory.mdx} +4 -4
  98. package/docs/guides/install/{npm-alias.md → npm-alias.mdx} +6 -4
  99. package/docs/guides/install/{registry-scope.md → registry-scope.mdx} +6 -4
  100. package/docs/guides/install/{trusted.md → trusted.mdx} +22 -18
  101. package/docs/guides/install/{workspaces.md → workspaces.mdx} +13 -13
  102. package/docs/guides/install/{yarnlock.md → yarnlock.mdx} +15 -9
  103. package/docs/guides/process/{argv.md → argv.mdx} +17 -9
  104. package/docs/guides/process/{ctrl-c.md → ctrl-c.mdx} +4 -2
  105. package/docs/guides/process/{ipc.md → ipc.mdx} +13 -10
  106. package/docs/guides/process/{nanoseconds.md → nanoseconds.mdx} +3 -1
  107. package/docs/guides/process/{os-signals.md → os-signals.mdx} +3 -1
  108. package/docs/guides/process/{spawn-stderr.md → spawn-stderr.mdx} +4 -1
  109. package/docs/guides/process/{spawn-stdout.md → spawn-stdout.mdx} +3 -1
  110. package/docs/guides/process/{spawn.md → spawn.mdx} +3 -1
  111. package/docs/guides/process/{stdin.md → stdin.mdx} +15 -7
  112. package/docs/guides/read-file/{arraybuffer.md → arraybuffer.mdx} +5 -3
  113. package/docs/guides/read-file/{buffer.md → buffer.mdx} +4 -2
  114. package/docs/guides/read-file/{exists.md → exists.mdx} +4 -2
  115. package/docs/guides/read-file/{json.md → json.mdx} +4 -2
  116. package/docs/guides/read-file/{mime.md → mime.mdx} +3 -1
  117. package/docs/guides/read-file/{stream.md → stream.mdx} +3 -1
  118. package/docs/guides/read-file/{string.md → string.mdx} +3 -1
  119. package/docs/guides/read-file/{uint8array.md → uint8array.mdx} +3 -1
  120. package/docs/guides/read-file/{watch.md → watch.mdx} +6 -8
  121. package/docs/guides/runtime/{build-time-constants.md → build-time-constants.mdx} +24 -22
  122. package/docs/guides/{install/cicd.md → runtime/cicd.mdx} +11 -7
  123. package/docs/guides/runtime/{codesign-macos-executable.md → codesign-macos-executable.mdx} +14 -9
  124. package/docs/guides/runtime/{define-constant.md → define-constant.mdx} +20 -16
  125. package/docs/guides/runtime/{delete-directory.md → delete-directory.mdx} +5 -3
  126. package/docs/guides/runtime/{delete-file.md → delete-file.mdx} +4 -2
  127. package/docs/guides/runtime/{heap-snapshot.md → heap-snapshot.mdx} +5 -3
  128. package/docs/guides/runtime/{import-html.md → import-html.mdx} +4 -2
  129. package/docs/guides/runtime/{import-json.md → import-json.mdx} +6 -4
  130. package/docs/guides/runtime/{import-toml.md → import-toml.mdx} +5 -3
  131. package/docs/guides/runtime/{import-yaml.md → import-yaml.mdx} +9 -7
  132. package/docs/guides/runtime/{read-env.md → read-env.mdx} +10 -5
  133. package/docs/guides/runtime/{set-env.md → set-env.mdx} +14 -10
  134. package/docs/guides/runtime/{shell.md → shell.mdx} +6 -4
  135. package/docs/guides/runtime/{timezone.md → timezone.mdx} +10 -7
  136. package/docs/guides/runtime/{tsconfig-paths.md → tsconfig-paths.mdx} +5 -3
  137. package/docs/guides/runtime/{typescript.md → typescript.mdx} +8 -6
  138. package/docs/guides/runtime/{vscode-debugger.md → vscode-debugger.mdx} +12 -11
  139. package/docs/guides/runtime/{web-debugger.md → web-debugger.mdx} +39 -18
  140. package/docs/guides/streams/{node-readable-to-arraybuffer.md → node-readable-to-arraybuffer.mdx} +3 -1
  141. package/docs/guides/streams/{node-readable-to-blob.md → node-readable-to-blob.mdx} +3 -1
  142. package/docs/guides/streams/{node-readable-to-json.md → node-readable-to-json.mdx} +3 -1
  143. package/docs/guides/streams/{node-readable-to-string.md → node-readable-to-string.mdx} +3 -1
  144. package/docs/guides/streams/{node-readable-to-uint8array.md → node-readable-to-uint8array.mdx} +3 -1
  145. package/docs/guides/streams/{to-array.md → to-array.mdx} +3 -1
  146. package/docs/guides/streams/{to-arraybuffer.md → to-arraybuffer.mdx} +3 -1
  147. package/docs/guides/streams/{to-blob.md → to-blob.mdx} +3 -1
  148. package/docs/guides/streams/{to-buffer.md → to-buffer.mdx} +3 -1
  149. package/docs/guides/streams/{to-json.md → to-json.mdx} +4 -2
  150. package/docs/guides/streams/{to-string.md → to-string.mdx} +3 -1
  151. package/docs/guides/streams/{to-typedarray.md → to-typedarray.mdx} +3 -1
  152. package/docs/guides/test/{bail.md → bail.mdx} +7 -5
  153. package/docs/guides/test/{coverage-threshold.md → coverage-threshold.mdx} +14 -7
  154. package/docs/guides/test/{coverage.md → coverage.mdx} +9 -4
  155. package/docs/guides/test/{happy-dom.md → happy-dom.mdx} +13 -8
  156. package/docs/guides/test/{migrate-from-jest.md → migrate-from-jest.mdx} +19 -37
  157. package/docs/guides/test/{mock-clock.md → mock-clock.mdx} +3 -1
  158. package/docs/guides/test/{mock-functions.md → mock-functions.mdx} +7 -5
  159. package/docs/guides/test/{rerun-each.md → rerun-each.mdx} +5 -3
  160. package/docs/guides/test/{run-tests.md → run-tests.mdx} +16 -11
  161. package/docs/guides/test/{skip-tests.md → skip-tests.mdx} +8 -4
  162. package/docs/guides/test/{snapshot.md → snapshot.mdx} +20 -13
  163. package/docs/guides/test/spy-on.mdx +49 -0
  164. package/docs/guides/test/{svelte-test.md → svelte-test.mdx} +16 -23
  165. package/docs/guides/test/{testing-library.md → testing-library.mdx} +18 -17
  166. package/docs/guides/test/{timeout.md → timeout.mdx} +5 -3
  167. package/docs/guides/test/{todo-tests.md → todo-tests.mdx} +13 -6
  168. package/docs/guides/test/{update-snapshots.md → update-snapshots.mdx} +9 -6
  169. package/docs/guides/test/{watch-mode.md → watch-mode.mdx} +9 -4
  170. package/docs/guides/util/{base64.md → base64.mdx} +3 -1
  171. package/docs/guides/util/{deep-equals.md → deep-equals.mdx} +5 -3
  172. package/docs/guides/util/{deflate.md → deflate.mdx} +3 -1
  173. package/docs/guides/util/{detect-bun.md → detect-bun.mdx} +3 -1
  174. package/docs/guides/util/{entrypoint.md → entrypoint.mdx} +4 -2
  175. package/docs/guides/util/{escape-html.md → escape-html.mdx} +3 -1
  176. package/docs/guides/util/{file-url-to-path.md → file-url-to-path.mdx} +3 -1
  177. package/docs/guides/util/{gzip.md → gzip.mdx} +3 -1
  178. package/docs/guides/util/{hash-a-password.md → hash-a-password.mdx} +3 -1
  179. package/docs/guides/util/{import-meta-dir.md → import-meta-dir.mdx} +4 -2
  180. package/docs/guides/util/{import-meta-file.md → import-meta-file.mdx} +4 -2
  181. package/docs/guides/util/{import-meta-path.md → import-meta-path.mdx} +4 -2
  182. package/docs/guides/util/{javascript-uuid.md → javascript-uuid.mdx} +3 -1
  183. package/docs/guides/util/{main.md → main.mdx} +19 -8
  184. package/docs/guides/util/{path-to-file-url.md → path-to-file-url.mdx} +3 -1
  185. package/docs/guides/util/{sleep.md → sleep.mdx} +3 -1
  186. package/docs/guides/util/{version.md → version.mdx} +6 -4
  187. package/docs/guides/util/{which-path-to-executable-bin.md → which-path-to-executable-bin.mdx} +4 -2
  188. package/docs/guides/websocket/{compression.md → compression.mdx} +5 -3
  189. package/docs/guides/websocket/{context.md → context.mdx} +9 -12
  190. package/docs/guides/websocket/{pubsub.md → pubsub.mdx} +5 -6
  191. package/docs/guides/websocket/{simple.md → simple.mdx} +5 -3
  192. package/docs/guides/write-file/{append.md → append.mdx} +3 -1
  193. package/docs/guides/write-file/{basic.md → basic.mdx} +3 -1
  194. package/docs/guides/write-file/{blob.md → blob.mdx} +3 -1
  195. package/docs/guides/write-file/{cat.md → cat.mdx} +4 -2
  196. package/docs/guides/write-file/{file-cp.md → file-cp.mdx} +3 -1
  197. package/docs/guides/write-file/{filesink.md → filesink.mdx} +3 -1
  198. package/docs/guides/write-file/{response.md → response.mdx} +3 -1
  199. package/docs/guides/write-file/{stdout.md → stdout.mdx} +3 -1
  200. package/docs/guides/write-file/{stream.md → stream.mdx} +3 -1
  201. package/docs/guides/write-file/{unlink.md → unlink.mdx} +3 -1
  202. package/docs/{index.md → index.mdx} +97 -41
  203. package/docs/installation.mdx +365 -0
  204. package/docs/{cli/bunx.md → pm/bunx.mdx} +25 -31
  205. package/docs/{install/catalogs.md → pm/catalogs.mdx} +18 -24
  206. package/docs/{cli/add.md → pm/cli/add.mdx} +61 -55
  207. package/docs/{install/audit.md → pm/cli/audit.mdx} +11 -8
  208. package/docs/{cli/install.md → pm/cli/install.mdx} +208 -81
  209. package/docs/{cli/link.md → pm/cli/link.mdx} +27 -19
  210. package/docs/{cli/outdated.md → pm/cli/outdated.mdx} +119 -12
  211. package/docs/{install/patch.md → pm/cli/patch.mdx} +25 -15
  212. package/docs/{cli/pm.md → pm/cli/pm.mdx} +96 -62
  213. package/docs/{cli/publish.md → pm/cli/publish.mdx} +38 -35
  214. package/docs/pm/cli/remove.mdx +16 -0
  215. package/docs/{cli/update.md → pm/cli/update.mdx} +26 -15
  216. package/docs/{cli/why.md → pm/cli/why.mdx} +27 -10
  217. package/docs/{cli/filter.md → pm/filter.mdx} +26 -14
  218. package/docs/{install/cache.md → pm/global-cache.mdx} +25 -12
  219. package/docs/{install/isolated.md → pm/isolated-installs.mdx} +32 -24
  220. package/docs/{install/lifecycle.md → pm/lifecycle.mdx} +20 -9
  221. package/docs/{install/lockfile.md → pm/lockfile.mdx} +18 -12
  222. package/docs/{install/npmrc.md → pm/npmrc.mdx} +30 -24
  223. package/docs/{install/overrides.md → pm/overrides.mdx} +47 -37
  224. package/docs/{install/registries.md → pm/scopes-registries.mdx} +8 -3
  225. package/docs/{install/security-scanner-api.md → pm/security-scanner-api.mdx} +22 -8
  226. package/docs/{install/workspaces.md → pm/workspaces.mdx} +17 -22
  227. package/docs/project/{benchmarking.md → benchmarking.mdx} +26 -11
  228. package/docs/project/{bindgen.md → bindgen.mdx} +12 -14
  229. package/docs/project/{building-windows.md → building-windows.mdx} +18 -47
  230. package/docs/project/{contributing.md → contributing.mdx} +56 -60
  231. package/docs/project/feedback.mdx +20 -0
  232. package/docs/project/license.mdx +78 -0
  233. package/docs/project/roadmap.mdx +8 -0
  234. package/docs/quickstart.mdx +240 -0
  235. package/docs/runtime/{autoimport.md → auto-install.mdx} +34 -31
  236. package/docs/{api/binary-data.md → runtime/binary-data.mdx} +77 -269
  237. package/docs/runtime/bun-apis.mdx +59 -0
  238. package/docs/runtime/{bunfig.md → bunfig.mdx} +95 -225
  239. package/docs/{api/cc.md → runtime/c-compiler.mdx} +16 -9
  240. package/docs/{api/spawn.md → runtime/child-process.mdx} +69 -119
  241. package/docs/{api/color.md → runtime/color.mdx} +6 -1
  242. package/docs/{api/console.md → runtime/console.mdx} +17 -7
  243. package/docs/{api/cookie.md → runtime/cookies.mdx} +24 -19
  244. package/docs/runtime/{debugger.md → debugger.mdx} +61 -51
  245. package/docs/runtime/environment-variables.mdx +214 -0
  246. package/docs/{api/ffi.md → runtime/ffi.mdx} +53 -45
  247. package/docs/{api/file-io.md → runtime/file-io.mdx} +41 -101
  248. package/docs/{api/file-system-router.md → runtime/file-system-router.mdx} +8 -2
  249. package/docs/{bundler/loaders.md → runtime/file-types.mdx} +56 -112
  250. package/docs/{api/glob.md → runtime/glob.mdx} +4 -1
  251. package/docs/runtime/globals.mdx +72 -0
  252. package/docs/{api/hashing.md → runtime/hashing.mdx} +18 -22
  253. package/docs/{api/html-rewriter.md → runtime/html-rewriter.mdx} +36 -30
  254. package/docs/runtime/http/cookies.mdx +79 -0
  255. package/docs/runtime/http/error-handling.mdx +40 -0
  256. package/docs/runtime/http/metrics.mdx +36 -0
  257. package/docs/runtime/http/routing.mdx +289 -0
  258. package/docs/runtime/http/server.mdx +647 -0
  259. package/docs/runtime/http/tls.mdx +101 -0
  260. package/docs/{api/websockets.md → runtime/http/websockets.mdx} +62 -231
  261. package/docs/{cli/run.md → runtime/index.mdx} +70 -108
  262. package/docs/runtime/jsx.mdx +115 -0
  263. package/docs/runtime/{modules.md → module-resolution.mdx} +83 -61
  264. package/docs/{api/dns.md → runtime/networking/dns.mdx} +23 -22
  265. package/docs/{api/fetch.md → runtime/networking/fetch.mdx} +10 -5
  266. package/docs/{api/tcp.md → runtime/networking/tcp.mdx} +59 -41
  267. package/docs/{api/udp.md → runtime/networking/udp.mdx} +14 -8
  268. package/docs/{api/node-api.md → runtime/node-api.mdx} +5 -0
  269. package/docs/runtime/{nodejs-apis.md → nodejs-compat.mdx} +9 -4
  270. package/docs/{bundler/plugins.md → runtime/plugins.mdx} +17 -61
  271. package/docs/{api/redis.md → runtime/redis.mdx} +65 -80
  272. package/docs/{api/s3.md → runtime/s3.mdx} +79 -66
  273. package/docs/{api/secrets.md → runtime/secrets.mdx} +27 -10
  274. package/docs/{api/semver.md → runtime/semver.mdx} +9 -4
  275. package/docs/runtime/{shell.md → shell.mdx} +52 -20
  276. package/docs/{api/sql.md → runtime/sql.mdx} +129 -99
  277. package/docs/{api/sqlite.md → runtime/sqlite.mdx} +162 -157
  278. package/docs/{api/streams.md → runtime/streams.mdx} +33 -31
  279. package/docs/{cli/bun-create.md → runtime/templating/create.mdx} +74 -143
  280. package/docs/{cli/init.md → runtime/templating/init.mdx} +24 -51
  281. package/docs/{api/transpiler.md → runtime/transpiler.mdx} +50 -38
  282. package/docs/{typescript.md → runtime/typescript.mdx} +7 -2
  283. package/docs/{api/utils.md → runtime/utils.mdx} +81 -50
  284. package/docs/runtime/{hot.md → watch-mode.mdx} +53 -37
  285. package/docs/runtime/web-apis.mdx +29 -0
  286. package/docs/{api/workers.md → runtime/workers.mdx} +28 -22
  287. package/docs/{api/yaml.md → runtime/yaml.mdx} +33 -232
  288. package/docs/snippets/cli/add.mdx +166 -0
  289. package/docs/snippets/cli/build.mdx +196 -0
  290. package/docs/snippets/cli/feedback.mdx +17 -0
  291. package/docs/snippets/cli/init.mdx +84 -0
  292. package/docs/snippets/cli/install.mdx +173 -0
  293. package/docs/snippets/cli/link.mdx +163 -0
  294. package/docs/snippets/cli/outdated.mdx +140 -0
  295. package/docs/snippets/cli/patch.mdx +171 -0
  296. package/docs/snippets/cli/publish.mdx +198 -0
  297. package/docs/snippets/cli/remove.mdx +146 -0
  298. package/docs/snippets/cli/run.mdx +293 -0
  299. package/docs/snippets/cli/test.mdx +100 -0
  300. package/docs/snippets/cli/update.mdx +144 -0
  301. package/docs/snippets/product-card.mdx +32 -0
  302. package/docs/snippets/product-tiles.mdx +94 -0
  303. package/docs/test/code-coverage.mdx +409 -0
  304. package/docs/test/configuration.mdx +467 -0
  305. package/docs/test/{time.md → dates-times.mdx} +23 -20
  306. package/docs/test/{discovery.md → discovery.mdx} +15 -10
  307. package/docs/test/dom.mdx +226 -0
  308. package/docs/{cli/test.md → test/index.mdx} +77 -94
  309. package/docs/test/lifecycle.mdx +348 -0
  310. package/docs/test/mocks.mdx +637 -0
  311. package/docs/test/{reporters.md → reporters.mdx} +15 -15
  312. package/docs/test/runtime-behavior.mdx +342 -0
  313. package/docs/test/snapshots.mdx +434 -0
  314. package/docs/test/writing-tests.mdx +635 -0
  315. package/docs/typescript.mdx +54 -0
  316. package/package.json +8 -6
  317. package/test.d.ts +2 -2
  318. package/docs/api/file.md +0 -19
  319. package/docs/api/globals.md +0 -387
  320. package/docs/api/http.md +0 -1408
  321. package/docs/api/import-meta.md +0 -69
  322. package/docs/benchmarks.md +0 -120
  323. package/docs/bun-flavored-toml.md +0 -42
  324. package/docs/bundler/css_modules.md +0 -145
  325. package/docs/bundler/fullstack.md +0 -418
  326. package/docs/bundler/index.md +0 -1735
  327. package/docs/bundler/intro.md +0 -75
  328. package/docs/bundler/vs-esbuild.md +0 -1127
  329. package/docs/cli/bun-completions.md +0 -3
  330. package/docs/cli/bun-install.md +0 -349
  331. package/docs/cli/bun-upgrade.md +0 -39
  332. package/docs/cli/info.md +0 -65
  333. package/docs/cli/patch-commit.md +0 -11
  334. package/docs/cli/remove.md +0 -7
  335. package/docs/cli/unlink.md +0 -9
  336. package/docs/contributing/upgrading-webkit.md +0 -57
  337. package/docs/ecosystem/elysia.md +0 -24
  338. package/docs/ecosystem/express.md +0 -37
  339. package/docs/ecosystem/hono.md +0 -18
  340. package/docs/ecosystem/react.md +0 -65
  341. package/docs/ecosystem/stric.md +0 -38
  342. package/docs/guides/ecosystem/prisma.md +0 -141
  343. package/docs/guides/ecosystem/render.md +0 -79
  344. package/docs/guides/install/add-git.md +0 -36
  345. package/docs/guides/test/spy-on.md +0 -46
  346. package/docs/install/index.md +0 -248
  347. package/docs/installation.md +0 -327
  348. package/docs/project/asan.md +0 -124
  349. package/docs/project/internals/build-process-for-ci.md +0 -75
  350. package/docs/project/licensing.md +0 -73
  351. package/docs/project/roadmap.md +0 -87
  352. package/docs/quickstart.md +0 -157
  353. package/docs/runtime/bun-apis.md +0 -207
  354. package/docs/runtime/env.md +0 -253
  355. package/docs/runtime/index.md +0 -312
  356. package/docs/runtime/jsx.md +0 -385
  357. package/docs/runtime/loaders.md +0 -130
  358. package/docs/runtime/plugins.md +0 -561
  359. package/docs/runtime/typescript.md +0 -139
  360. package/docs/runtime/web-apis.md +0 -128
  361. package/docs/test/configuration.md +0 -154
  362. package/docs/test/coverage.md +0 -142
  363. package/docs/test/dom.md +0 -75
  364. package/docs/test/examples/concurrent-test-glob.md +0 -132
  365. package/docs/test/hot.md +0 -15
  366. package/docs/test/lifecycle.md +0 -81
  367. package/docs/test/mocks.md +0 -313
  368. package/docs/test/runtime-behavior.md +0 -95
  369. package/docs/test/snapshots.md +0 -68
  370. package/docs/test/writing.md +0 -825
@@ -0,0 +1,101 @@
1
+ ---
2
+ title: TLS
3
+ description: Enable TLS in Bun.serve
4
+ ---
5
+
6
+ Bun supports TLS out of the box, powered by [BoringSSL](https://boringssl.googlesource.com/boringssl). Enable TLS by passing in a value for `key` and `cert`; both are required to enable TLS.
7
+
8
+ ```ts
9
+ Bun.serve({
10
+ tls: {
11
+ key: Bun.file("./key.pem"), // [!code ++]
12
+ cert: Bun.file("./cert.pem"), // [!code ++]
13
+ },
14
+ });
15
+ ```
16
+
17
+ The `key` and `cert` fields expect the _contents_ of your TLS key and certificate, _not a path to it_. This can be a string, `BunFile`, `TypedArray`, or `Buffer`.
18
+
19
+ ```ts
20
+ Bun.serve({
21
+ tls: {
22
+ key: Bun.file("./key.pem"), // BunFile
23
+ key: fs.readFileSync("./key.pem"), // Buffer
24
+ key: fs.readFileSync("./key.pem", "utf8"), // string
25
+ key: [Bun.file("./key1.pem"), Bun.file("./key2.pem")], // array of above
26
+ },
27
+ });
28
+ ```
29
+
30
+ ### Passphrase
31
+
32
+ If your private key is encrypted with a passphrase, provide a value for `passphrase` to decrypt it.
33
+
34
+ ```ts
35
+ Bun.serve({
36
+ tls: {
37
+ key: Bun.file("./key.pem"),
38
+ cert: Bun.file("./cert.pem"),
39
+ passphrase: "my-secret-passphrase", // [!code ++]
40
+ },
41
+ });
42
+ ```
43
+
44
+ ### CA Certificates
45
+
46
+ Optionally, you can override the trusted CA certificates by passing a value for `ca`. By default, the server will trust the list of well-known CAs curated by Mozilla. When `ca` is specified, the Mozilla list is overwritten.
47
+
48
+ ```ts
49
+ Bun.serve({
50
+ tls: {
51
+ key: Bun.file("./key.pem"), // path to TLS key
52
+ cert: Bun.file("./cert.pem"), // path to TLS cert
53
+ ca: Bun.file("./ca.pem"), // path to root CA certificate // [!code ++]
54
+ },
55
+ });
56
+ ```
57
+
58
+ ### Diffie-Hellman
59
+
60
+ To override Diffie-Hellman parameters:
61
+
62
+ ```ts
63
+ Bun.serve({
64
+ tls: {
65
+ dhParamsFile: "/path/to/dhparams.pem", // path to Diffie Hellman parameters // [!code ++]
66
+ },
67
+ });
68
+ ```
69
+
70
+ ---
71
+
72
+ ## Server name indication (SNI)
73
+
74
+ To configure the server name indication (SNI) for the server, set the `serverName` field in the `tls` object.
75
+
76
+ ```ts
77
+ Bun.serve({
78
+ tls: {
79
+ serverName: "my-server.com", // SNI // [!code ++]
80
+ },
81
+ });
82
+ ```
83
+
84
+ To allow multiple server names, pass an array of objects to `tls`, each with a `serverName` field.
85
+
86
+ ```ts
87
+ Bun.serve({
88
+ tls: [
89
+ {
90
+ key: Bun.file("./key1.pem"),
91
+ cert: Bun.file("./cert1.pem"),
92
+ serverName: "my-server1.com", // [!code ++]
93
+ },
94
+ {
95
+ key: Bun.file("./key2.pem"),
96
+ cert: Bun.file("./cert2.pem"),
97
+ serverName: "my-server2.com", // [!code ++]
98
+ },
99
+ ],
100
+ });
101
+ ```
@@ -1,22 +1,32 @@
1
+ ---
2
+ title: WebSockets
3
+ description: Server-side WebSockets in Bun
4
+ ---
5
+
1
6
  `Bun.serve()` supports server-side WebSockets, with on-the-fly compression, TLS support, and a Bun-native publish-subscribe API.
2
7
 
3
- {% callout %}
8
+ <Info>
9
+
10
+ **⚡️ 7x more throughput**
4
11
 
5
- **⚡️ 7x more throughput** — Bun's WebSockets are fast. For a [simple chatroom](https://github.com/oven-sh/bun/tree/main/bench/websocket-server/README.md) on Linux x64, Bun can handle 7x more requests per second than Node.js + [`"ws"`](https://github.com/websockets/ws).
12
+ Bun's WebSockets are fast. For a [simple chatroom](https://github.com/oven-sh/bun/tree/main/bench/websocket-server/README.md) on Linux x64, Bun can handle 7x more requests per second than Node.js + [`"ws"`](https://github.com/websockets/ws).
6
13
 
7
- | Messages sent per second | Runtime | Clients |
8
- | ------------------------ | ------------------------------ | ------- |
9
- | ~700,000 | (`Bun.serve`) Bun v0.2.1 (x64) | 16 |
10
- | ~100,000 | (`ws`) Node v18.10.0 (x64) | 16 |
14
+ | **Messages sent per second** | **Runtime** | **Clients** |
15
+ | ---------------------------- | ------------------------------ | ----------- |
16
+ | ~700,000 | (`Bun.serve`) Bun v0.2.1 (x64) | 16 |
17
+ | ~100,000 | (`ws`) Node v18.10.0 (x64) | 16 |
11
18
 
12
19
  Internally Bun's WebSocket implementation is built on [uWebSockets](https://github.com/uNetworking/uWebSockets).
13
- {% /callout %}
20
+
21
+ </Info>
22
+
23
+ ---
14
24
 
15
25
  ## Start a WebSocket server
16
26
 
17
27
  Below is a simple WebSocket server built with `Bun.serve`, in which all incoming requests are [upgraded](https://developer.mozilla.org/en-US/docs/Web/HTTP/Protocol_upgrade_mechanism) to WebSocket connections in the `fetch` handler. The socket handlers are declared in the `websocket` parameter.
18
28
 
19
- ```ts
29
+ ```ts server.ts icon="/icons/typescript.svg"
20
30
  Bun.serve({
21
31
  fetch(req, server) {
22
32
  // upgrade the request to a WebSocket
@@ -31,7 +41,7 @@ Bun.serve({
31
41
 
32
42
  The following WebSocket event handlers are supported:
33
43
 
34
- ```ts
44
+ ```ts server.ts icon="/icons/typescript.svg"
35
45
  Bun.serve({
36
46
  fetch(req, server) {}, // upgrade logic
37
47
  websocket: {
@@ -43,7 +53,7 @@ Bun.serve({
43
53
  });
44
54
  ```
45
55
 
46
- {% details summary="An API designed for speed" %}
56
+ <Accordion title="An API designed for speed">
47
57
 
48
58
  In Bun, handlers are declared once per server, instead of per socket.
49
59
 
@@ -60,11 +70,12 @@ But servers tend to have **many** socket connections open, which means:
60
70
  So, instead of using an event-based API, `ServerWebSocket` expects you to pass a single object with methods for each event in `Bun.serve()` and it is reused for each connection.
61
71
 
62
72
  This leads to less memory usage and less time spent adding/removing event listeners.
63
- {% /details %}
73
+
74
+ </Accordion>
64
75
 
65
76
  The first argument to each handler is the instance of `ServerWebSocket` handling the event. The `ServerWebSocket` class is a fast, Bun-native implementation of [`WebSocket`](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket) with some additional features.
66
77
 
67
- ```ts
78
+ ```ts server.ts icon="/icons/typescript.svg"
68
79
  Bun.serve({
69
80
  fetch(req, server) {}, // upgrade logic
70
81
  websocket: {
@@ -79,24 +90,32 @@ Bun.serve({
79
90
 
80
91
  Each `ServerWebSocket` instance has a `.send()` method for sending messages to the client. It supports a range of input types.
81
92
 
82
- ```ts
83
- ws.send("Hello world"); // string
84
- ws.send(response.arrayBuffer()); // ArrayBuffer
85
- ws.send(new Uint8Array([1, 2, 3])); // TypedArray | DataView
93
+ ```ts server.ts icon="/icons/typescript.svg" focus={4-6}
94
+ Bun.serve({
95
+ fetch(req, server) {}, // upgrade logic
96
+ websocket: {
97
+ message(ws, message) {
98
+ ws.send("Hello world"); // string
99
+ ws.send(response.arrayBuffer()); // ArrayBuffer
100
+ ws.send(new Uint8Array([1, 2, 3])); // TypedArray | DataView
101
+ },
102
+ },
103
+ });
86
104
  ```
87
105
 
88
106
  ### Headers
89
107
 
90
108
  Once the upgrade succeeds, Bun will send a `101 Switching Protocols` response per the [spec](https://developer.mozilla.org/en-US/docs/Web/HTTP/Protocol_upgrade_mechanism). Additional `headers` can be attached to this `Response` in the call to `server.upgrade()`.
91
109
 
92
- ```ts
110
+ ```ts server.ts icon="/icons/typescript.svg"
93
111
  Bun.serve({
94
112
  fetch(req, server) {
95
113
  const sessionId = await generateSessionId();
96
114
  server.upgrade(req, {
97
115
  headers: {
98
- "Set-Cookie": `SessionId=${sessionId}`,
99
- },
116
+ // [!code ++]
117
+ "Set-Cookie": `SessionId=${sessionId}`, // [!code ++]
118
+ }, // [!code ++]
100
119
  });
101
120
  },
102
121
  websocket: {}, // handlers
@@ -107,9 +126,7 @@ Bun.serve({
107
126
 
108
127
  Contextual `data` can be attached to a new WebSocket in the `.upgrade()` call. This data is made available on the `ws.data` property inside the WebSocket handlers.
109
128
 
110
- To strongly type `ws.data`, add a `data` property to the `websocket` handler object. This types `ws.data` across all lifecycle hooks.
111
-
112
- ```ts
129
+ ```ts server.ts icon="/icons/typescript.svg"
113
130
  type WebSocketData = {
114
131
  createdAt: number;
115
132
  channelId: string;
@@ -134,7 +151,6 @@ Bun.serve({
134
151
  websocket: {
135
152
  // TypeScript: specify the type of ws.data like this
136
153
  data: {} as WebSocketData,
137
-
138
154
  // handler called when a message is received
139
155
  async message(ws, message) {
140
156
  // ws.data is now properly typed as WebSocketData
@@ -150,29 +166,28 @@ Bun.serve({
150
166
  });
151
167
  ```
152
168
 
153
- {% callout %}
154
- **Note:** Previously, you could specify the type of `ws.data` using a type parameter on `Bun.serve`, like `Bun.serve<MyData>({...})`. This pattern was removed due to [a limitation in TypeScript](https://github.com/microsoft/TypeScript/issues/26242) in favor of the `data` property shown above.
155
- {% /callout %}
156
-
157
169
  To connect to this server from the browser, create a new `WebSocket`.
158
170
 
159
- ```ts#browser.js
171
+ ```ts browser.js icon="file-code"
160
172
  const socket = new WebSocket("ws://localhost:3000/chat");
161
173
 
162
174
  socket.addEventListener("message", event => {
163
175
  console.log(event.data);
164
- })
176
+ });
165
177
  ```
166
178
 
167
- {% callout %}
168
- **Identifying users** — The cookies that are currently set on the page will be sent with the WebSocket upgrade request and available on `req.headers` in the `fetch` handler. Parse these cookies to determine the identity of the connecting user and set the value of `data` accordingly.
169
- {% /callout %}
179
+ <Info>
180
+ **Identifying users**
181
+
182
+ The cookies that are currently set on the page will be sent with the WebSocket upgrade request and available on `req.headers` in the `fetch` handler. Parse these cookies to determine the identity of the connecting user and set the value of `data` accordingly.
183
+
184
+ </Info>
170
185
 
171
186
  ### Pub/Sub
172
187
 
173
188
  Bun's `ServerWebSocket` implementation implements a native publish-subscribe API for topic-based broadcasting. Individual sockets can `.subscribe()` to a topic (specified with a string identifier) and `.publish()` messages to all other subscribers to that topic (excluding itself). This topic-based broadcast API is similar to [MQTT](https://en.wikipedia.org/wiki/MQTT) and [Redis Pub/Sub](https://redis.io/topics/pubsub).
174
189
 
175
- ```ts
190
+ ```ts server.ts icon="/icons/typescript.svg"
176
191
  const server = Bun.serve({
177
192
  fetch(req, server) {
178
193
  const url = new URL(req.url);
@@ -180,9 +195,7 @@ const server = Bun.serve({
180
195
  console.log(`upgrade!`);
181
196
  const username = getUsernameFromReq(req);
182
197
  const success = server.upgrade(req, { data: { username } });
183
- return success
184
- ? undefined
185
- : new Response("WebSocket upgrade error", { status: 400 });
198
+ return success ? undefined : new Response("WebSocket upgrade error", { status: 400 });
186
199
  }
187
200
 
188
201
  return new Response("Hello world");
@@ -190,7 +203,6 @@ const server = Bun.serve({
190
203
  websocket: {
191
204
  // TypeScript: specify the type of ws.data like this
192
205
  data: {} as { username: string },
193
-
194
206
  open(ws) {
195
207
  const msg = `${ws.data.username} has entered the chat`;
196
208
  ws.subscribe("the-group-chat");
@@ -229,12 +241,10 @@ server.publish("the-group-chat", "Hello world");
229
241
 
230
242
  Per-message [compression](https://websockets.readthedocs.io/en/stable/topics/compression.html) can be enabled with the `perMessageDeflate` parameter.
231
243
 
232
- ```ts
244
+ ```ts server.ts icon="/icons/typescript.svg"
233
245
  Bun.serve({
234
- fetch(req, server) {}, // upgrade logic
235
246
  websocket: {
236
- // enable compression and decompression
237
- perMessageDeflate: true,
247
+ perMessageDeflate: true, // [!code ++]
238
248
  },
239
249
  });
240
250
  ```
@@ -265,9 +275,7 @@ By default, Bun will close a WebSocket connection if it is idle for 120 seconds.
265
275
  Bun.serve({
266
276
  fetch(req, server) {}, // upgrade logic
267
277
  websocket: {
268
- idleTimeout: 60, // 60 seconds
269
-
270
- // ...
278
+ idleTimeout: 60, // 60 seconds // [!code ++]
271
279
  },
272
280
  });
273
281
  ```
@@ -278,13 +286,13 @@ Bun will also close a WebSocket connection if it receives a message that is larg
278
286
  Bun.serve({
279
287
  fetch(req, server) {}, // upgrade logic
280
288
  websocket: {
281
- maxPayloadLength: 1024 * 1024, // 1 MB
282
-
283
- // ...
289
+ maxPayloadLength: 1024 * 1024, // 1 MB // [!code ++]
284
290
  },
285
291
  });
286
292
  ```
287
293
 
294
+ ---
295
+
288
296
  ## Connect to a `Websocket` server
289
297
 
290
298
  Bun implements the `WebSocket` class. To create a WebSocket client that connects to a `ws://` or `wss://` server, create an instance of `WebSocket`, as you would in the browser.
@@ -303,19 +311,8 @@ For convenience, Bun lets you setting custom headers directly in the constructor
303
311
  ```ts
304
312
  const socket = new WebSocket("ws://localhost:3000", {
305
313
  headers: {
306
- // custom headers
307
- },
308
- });
309
- ```
310
-
311
- ### Client compression
312
-
313
- WebSocket clients support permessage-deflate compression. The `extensions` property shows negotiated compression:
314
-
315
- ```ts
316
- const socket = new WebSocket("wss://echo.websocket.org");
317
- socket.addEventListener("open", () => {
318
- console.log(socket.extensions); // => "permessage-deflate"
314
+ /* custom headers */
315
+ }, // [!code ++]
319
316
  });
320
317
  ```
321
318
 
@@ -335,17 +332,16 @@ socket.addEventListener("close", event => {});
335
332
  socket.addEventListener("error", event => {});
336
333
  ```
337
334
 
335
+ ---
336
+
338
337
  ## Reference
339
338
 
340
- ```ts
339
+ ```ts See Typescript Definitions expandable
341
340
  namespace Bun {
342
341
  export function serve(params: {
343
342
  fetch: (req: Request, server: Server) => Response | Promise<Response>;
344
343
  websocket?: {
345
- message: (
346
- ws: ServerWebSocket,
347
- message: string | ArrayBuffer | Uint8Array,
348
- ) => void;
344
+ message: (ws: ServerWebSocket, message: string | ArrayBuffer | Uint8Array) => void;
349
345
  open?: (ws: ServerWebSocket) => void;
350
346
  close?: (ws: ServerWebSocket, code: number, reason: string) => void;
351
347
  error?: (ws: ServerWebSocket, error: Error) => void;
@@ -383,11 +379,7 @@ type Compressor =
383
379
 
384
380
  interface Server {
385
381
  pendingWebSockets: number;
386
- publish(
387
- topic: string,
388
- data: string | ArrayBufferView | ArrayBuffer,
389
- compress?: boolean,
390
- ): number;
382
+ publish(topic: string, data: string | ArrayBufferView | ArrayBuffer, compress?: boolean): number;
391
383
  upgrade(
392
384
  req: Request,
393
385
  options?: {
@@ -410,164 +402,3 @@ interface ServerWebSocket {
410
402
  cork(cb: (ws: ServerWebSocket) => void): void;
411
403
  }
412
404
  ```
413
-
414
- <!--
415
- ### `Bun.serve(params)`
416
-
417
- {% param name="params" %}
418
- Configuration object for WebSocket server
419
- {% /param %}
420
-
421
- {% param name=" fetch" %}
422
- `(req: Request, server: Server) => Response | Promise<Response>`
423
-
424
- Call `server.upgrade(req)` to upgrade the request to a WebSocket connection. This method returns `true` if the upgrade succeeds, or `false` if the upgrade fails.
425
- {% /param %}
426
-
427
- {% param name=" websocket" %}
428
- Configuration object for WebSocket server
429
- {% /param %}
430
-
431
- {% param name=" message" %}
432
- `(ws: ServerWebSocket, message: string | ArrayBuffer | Uint8Array) => void`
433
-
434
- This handler is called when a `WebSocket` receives a message.
435
- {% /param %}
436
-
437
- {% param name=" open" %}
438
- `(ws: ServerWebSocket) => void`
439
-
440
- This handler is called when a `WebSocket` is opened.
441
- {% /param %}
442
-
443
- {% param name=" close" %}
444
- `(ws: ServerWebSocket, code: number, message: string) => void`
445
-
446
- This handler is called when a `WebSocket` is closed.
447
- {% /param %}
448
-
449
- {% param name=" drain" %}
450
- `(ws: ServerWebSocket) => void`
451
-
452
- This handler is called when a `WebSocket` is ready to receive more data.
453
- {% /param %}
454
-
455
- {% param name=" perMessageDeflate" %}
456
- `boolean | {\n compress?: boolean | Compressor;\n decompress?: boolean | Compressor \n}`
457
-
458
- Enable per-message compression and decompression. This is a boolean value or an object with `compress` and `decompress` properties. Each property can be a boolean value or one of the following `Compressor` types:
459
-
460
- - `"disable"`
461
- - `"shared"`
462
- - `"dedicated"`
463
- - `"3KB"`
464
- - `"4KB"`
465
- - `"8KB"`
466
- - `"16KB"`
467
- - `"32KB"`
468
- - `"64KB"`
469
- - `"128KB"`
470
- - `"256KB"`
471
-
472
- {% /param %}
473
-
474
- ### `ServerWebSocket`
475
-
476
- {% param name="readyState" %}
477
- `number`
478
-
479
- The current state of the `WebSocket` connection. This is one of the following values:
480
-
481
- - `0` `CONNECTING`
482
- - `1` `OPEN`
483
- - `2` `CLOSING`
484
- - `3` `CLOSED`
485
-
486
- {% /param %}
487
-
488
- {% param name="remoteAddress" %}
489
-
490
- `string`
491
-
492
- The remote address of the `WebSocket` connection
493
- {% /param %}
494
-
495
- {% param name="data" %}
496
- The data associated with the `WebSocket` connection. This is set in the `server.upgrade()` call.
497
- {% /param %}
498
-
499
- {% param name=".send()" %}
500
- `send(message: string | ArrayBuffer | Uint8Array, compress?: boolean): number`
501
-
502
- Send a message to the client. Returns a `number` indicating the result of the operation.
503
-
504
- - `-1`: the message was enqueued but there is backpressure
505
- - `0`: the message was dropped due to a connection issue
506
- - `1+`: the number of bytes sent
507
-
508
- The `compress` argument will enable compression for this message, even if the `perMessageDeflate` option is disabled.
509
- {% /param %}
510
-
511
- {% param name=".subscribe()" %}
512
- `subscribe(topic: string): void`
513
-
514
- Subscribe to a topic
515
- {% /param %}
516
-
517
- {% param name=".unsubscribe()" %}
518
- `unsubscribe(topic: string): void`
519
-
520
- Unsubscribe from a topic
521
- {% /param %}
522
-
523
- {% param name=".publish()" %}
524
- `publish(topic: string, data: string | ArrayBufferView | ArrayBuffer, compress?: boolean): number;`
525
-
526
- Send a message to all subscribers of a topic
527
- {% /param %}
528
-
529
- {% param name=".isSubscribed()" %}
530
- `isSubscribed(topic: string): boolean`
531
-
532
- Check if the `WebSocket` is subscribed to a topic
533
- {% /param %}
534
- {% param name=".cork()" %}
535
- `cork(cb: (ws: ServerWebSocket) => void): void;`
536
-
537
- Batch a set of operations on a `WebSocket` connection. The `message`, `open`, and `drain` callbacks are automatically corked, so
538
- you only need to call this if you are sending messages outside of those
539
- callbacks or in async functions.
540
-
541
- ```ts
542
- ws.cork((ws) => {
543
- ws.send("first");
544
- ws.send("second");
545
- ws.send("third");
546
- });
547
- ```
548
-
549
- {% /param %}
550
-
551
- {% param name=".close()" %}
552
- `close(code?: number, message?: string): void`
553
-
554
- Close the `WebSocket` connection
555
- {% /param %}
556
-
557
- ### `Server`
558
-
559
- {% param name="pendingWebsockets" %}
560
- Number of in-flight `WebSocket` messages
561
- {% /param %}
562
-
563
- {% param name=".publish()" %}
564
- `publish(topic: string, data: string | ArrayBufferView | ArrayBuffer, compress?: boolean): number;`
565
-
566
- Send a message to all subscribers of a topic
567
- {% /param %}
568
-
569
- {% param name=".upgrade()" %}
570
- `upgrade(req: Request): boolean`
571
-
572
- Upgrade a request to a `WebSocket` connection. Returns `true` if the upgrade succeeds, or `false` if the upgrade fails.
573
- {% /param %} -->