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,267 @@
1
+ ---
2
+ title: Color
3
+ description: Format colors as CSS, ANSI, numbers, hex strings, and more
4
+ ---
5
+
6
+ `Bun.color(input, outputFormat?)` leverages Bun's CSS parser to parse, normalize, and convert colors from user input to a variety of output formats, including:
7
+
8
+ | Format | Example |
9
+ | ------------ | -------------------------------- |
10
+ | `"css"` | `"red"` |
11
+ | `"ansi"` | `"\x1b[38;2;255;0;0m"` |
12
+ | `"ansi-16"` | `"\x1b[38;5;\tm"` |
13
+ | `"ansi-256"` | `"\x1b[38;5;196m"` |
14
+ | `"ansi-16m"` | `"\x1b[38;2;255;0;0m"` |
15
+ | `"number"` | `0x1a2b3c` |
16
+ | `"rgb"` | `"rgb(255, 99, 71)"` |
17
+ | `"rgba"` | `"rgba(255, 99, 71, 0.5)"` |
18
+ | `"hsl"` | `"hsl(120, 50%, 50%)"` |
19
+ | `"hex"` | `"#1a2b3c"` |
20
+ | `"HEX"` | `"#1A2B3C"` |
21
+ | `"{rgb}"` | `{ r: 255, g: 99, b: 71 }` |
22
+ | `"{rgba}"` | `{ r: 255, g: 99, b: 71, a: 1 }` |
23
+ | `"[rgb]"` | `[ 255, 99, 71 ]` |
24
+ | `"[rgba]"` | `[ 255, 99, 71, 255]` |
25
+
26
+ There are many different ways to use this API:
27
+
28
+ - Validate and normalize colors to persist in a database (`number` is the most database-friendly)
29
+ - Convert colors to different formats
30
+ - Colorful logging beyond the 16 colors many use today (use `ansi` if you don't want to figure out what the user's terminal supports, otherwise use `ansi-16`, `ansi-256`, or `ansi-16m` for how many colors the terminal supports)
31
+ - Format colors for use in CSS injected into HTML
32
+ - Get the `r`, `g`, `b`, and `a` color components as JavaScript objects or numbers from a CSS color string
33
+
34
+ You can think of this as an alternative to the popular npm packages [`color`](https://github.com/Qix-/color) and [`tinycolor2`](https://github.com/bgrins/TinyColor) except with full support for parsing CSS color strings and zero dependencies built directly into Bun.
35
+
36
+ ### Flexible input
37
+
38
+ You can pass in any of the following:
39
+
40
+ - Standard CSS color names like `"red"`
41
+ - Numbers like `0xff0000`
42
+ - Hex strings like `"#f00"`
43
+ - RGB strings like `"rgb(255, 0, 0)"`
44
+ - RGBA strings like `"rgba(255, 0, 0, 1)"`
45
+ - HSL strings like `"hsl(0, 100%, 50%)"`
46
+ - HSLA strings like `"hsla(0, 100%, 50%, 1)"`
47
+ - RGB objects like `{ r: 255, g: 0, b: 0 }`
48
+ - RGBA objects like `{ r: 255, g: 0, b: 0, a: 1 }`
49
+ - RGB arrays like `[255, 0, 0]`
50
+ - RGBA arrays like `[255, 0, 0, 255]`
51
+ - LAB strings like `"lab(50% 50% 50%)"`
52
+ - ... anything else that CSS can parse as a single color value
53
+
54
+ ### Format colors as CSS
55
+
56
+ The `"css"` format outputs valid CSS for use in stylesheets, inline styles, CSS variables, css-in-js, etc. It returns the most compact representation of the color as a string.
57
+
58
+ ```ts
59
+ Bun.color("red", "css"); // "red"
60
+ Bun.color(0xff0000, "css"); // "#f000"
61
+ Bun.color("#f00", "css"); // "red"
62
+ Bun.color("#ff0000", "css"); // "red"
63
+ Bun.color("rgb(255, 0, 0)", "css"); // "red"
64
+ Bun.color("rgba(255, 0, 0, 1)", "css"); // "red"
65
+ Bun.color("hsl(0, 100%, 50%)", "css"); // "red"
66
+ Bun.color("hsla(0, 100%, 50%, 1)", "css"); // "red"
67
+ Bun.color({ r: 255, g: 0, b: 0 }, "css"); // "red"
68
+ Bun.color({ r: 255, g: 0, b: 0, a: 1 }, "css"); // "red"
69
+ Bun.color([255, 0, 0], "css"); // "red"
70
+ Bun.color([255, 0, 0, 255], "css"); // "red"
71
+ ```
72
+
73
+ If the input is unknown or fails to parse, `Bun.color` returns `null`.
74
+
75
+ ### Format colors as ANSI (for terminals)
76
+
77
+ The `"ansi"` format outputs ANSI escape codes for use in terminals to make text colorful.
78
+
79
+ ```ts
80
+ Bun.color("red", "ansi"); // "\u001b[38;2;255;0;0m"
81
+ Bun.color(0xff0000, "ansi"); // "\u001b[38;2;255;0;0m"
82
+ Bun.color("#f00", "ansi"); // "\u001b[38;2;255;0;0m"
83
+ Bun.color("#ff0000", "ansi"); // "\u001b[38;2;255;0;0m"
84
+ Bun.color("rgb(255, 0, 0)", "ansi"); // "\u001b[38;2;255;0;0m"
85
+ Bun.color("rgba(255, 0, 0, 1)", "ansi"); // "\u001b[38;2;255;0;0m"
86
+ Bun.color("hsl(0, 100%, 50%)", "ansi"); // "\u001b[38;2;255;0;0m"
87
+ Bun.color("hsla(0, 100%, 50%, 1)", "ansi"); // "\u001b[38;2;255;0;0m"
88
+ Bun.color({ r: 255, g: 0, b: 0 }, "ansi"); // "\u001b[38;2;255;0;0m"
89
+ Bun.color({ r: 255, g: 0, b: 0, a: 1 }, "ansi"); // "\u001b[38;2;255;0;0m"
90
+ Bun.color([255, 0, 0], "ansi"); // "\u001b[38;2;255;0;0m"
91
+ Bun.color([255, 0, 0, 255], "ansi"); // "\u001b[38;2;255;0;0m"
92
+ ```
93
+
94
+ This gets the color depth of stdout and automatically chooses one of `"ansi-16m"`, `"ansi-256"`, `"ansi-16"` based on the environment variables. If stdout doesn't support any form of ANSI color, it returns an empty string. As with the rest of Bun's color API, if the input is unknown or fails to parse, it returns `null`.
95
+
96
+ #### 24-bit ANSI colors (`ansi-16m`)
97
+
98
+ The `"ansi-16m"` format outputs 24-bit ANSI colors for use in terminals to make text colorful. 24-bit color means you can display 16 million colors on supported terminals, and requires a modern terminal that supports it.
99
+
100
+ This converts the input color to RGBA, and then outputs that as an ANSI color.
101
+
102
+ ```ts
103
+ Bun.color("red", "ansi-16m"); // "\x1b[38;2;255;0;0m"
104
+ Bun.color(0xff0000, "ansi-16m"); // "\x1b[38;2;255;0;0m"
105
+ Bun.color("#f00", "ansi-16m"); // "\x1b[38;2;255;0;0m"
106
+ Bun.color("#ff0000", "ansi-16m"); // "\x1b[38;2;255;0;0m"
107
+ ```
108
+
109
+ #### 256 ANSI colors (`ansi-256`)
110
+
111
+ The `"ansi-256"` format approximates the input color to the nearest of the 256 ANSI colors supported by some terminals.
112
+
113
+ ```ts
114
+ Bun.color("red", "ansi-256"); // "\u001b[38;5;196m"
115
+ Bun.color(0xff0000, "ansi-256"); // "\u001b[38;5;196m"
116
+ Bun.color("#f00", "ansi-256"); // "\u001b[38;5;196m"
117
+ Bun.color("#ff0000", "ansi-256"); // "\u001b[38;5;196m"
118
+ ```
119
+
120
+ To convert from RGBA to one of the 256 ANSI colors, we ported the algorithm that [`tmux` uses](https://github.com/tmux/tmux/blob/dae2868d1227b95fd076fb4a5efa6256c7245943/colour.c#L44-L55).
121
+
122
+ #### 16 ANSI colors (`ansi-16`)
123
+
124
+ The `"ansi-16"` format approximates the input color to the nearest of the 16 ANSI colors supported by most terminals.
125
+
126
+ ```ts
127
+ Bun.color("red", "ansi-16"); // "\u001b[38;5;\tm"
128
+ Bun.color(0xff0000, "ansi-16"); // "\u001b[38;5;\tm"
129
+ Bun.color("#f00", "ansi-16"); // "\u001b[38;5;\tm"
130
+ Bun.color("#ff0000", "ansi-16"); // "\u001b[38;5;\tm"
131
+ ```
132
+
133
+ This works by first converting the input to a 24-bit RGB color space, then to `ansi-256`, and then we convert that to the nearest 16 ANSI color.
134
+
135
+ ### Format colors as numbers
136
+
137
+ The `"number"` format outputs a 24-bit number for use in databases, configuration, or any other use case where a compact representation of the color is desired.
138
+
139
+ ```ts
140
+ Bun.color("red", "number"); // 16711680
141
+ Bun.color(0xff0000, "number"); // 16711680
142
+ Bun.color({ r: 255, g: 0, b: 0 }, "number"); // 16711680
143
+ Bun.color([255, 0, 0], "number"); // 16711680
144
+ Bun.color("rgb(255, 0, 0)", "number"); // 16711680
145
+ Bun.color("rgba(255, 0, 0, 1)", "number"); // 16711680
146
+ Bun.color("hsl(0, 100%, 50%)", "number"); // 16711680
147
+ Bun.color("hsla(0, 100%, 50%, 1)", "number"); // 16711680
148
+ ```
149
+
150
+ ### Get the red, green, blue, and alpha channels
151
+
152
+ You can use the `"{rgba}"`, `"{rgb}"`, `"[rgba]"` and `"[rgb]"` formats to get the red, green, blue, and alpha channels as objects or arrays.
153
+
154
+ #### `{rgba}` object
155
+
156
+ The `"{rgba}"` format outputs an object with the red, green, blue, and alpha channels.
157
+
158
+ ```ts
159
+ type RGBAObject = {
160
+ // 0 - 255
161
+ r: number;
162
+ // 0 - 255
163
+ g: number;
164
+ // 0 - 255
165
+ b: number;
166
+ // 0 - 1
167
+ a: number;
168
+ };
169
+ ```
170
+
171
+ Example:
172
+
173
+ ```ts
174
+ Bun.color("hsl(0, 0%, 50%)", "{rgba}"); // { r: 128, g: 128, b: 128, a: 1 }
175
+ Bun.color("red", "{rgba}"); // { r: 255, g: 0, b: 0, a: 1 }
176
+ Bun.color(0xff0000, "{rgba}"); // { r: 255, g: 0, b: 0, a: 1 }
177
+ Bun.color({ r: 255, g: 0, b: 0 }, "{rgba}"); // { r: 255, g: 0, b: 0, a: 1 }
178
+ Bun.color([255, 0, 0], "{rgba}"); // { r: 255, g: 0, b: 0, a: 1 }
179
+ ```
180
+
181
+ To behave similarly to CSS, the `a` channel is a decimal number between `0` and `1`.
182
+
183
+ The `"{rgb}"` format is similar, but it doesn't include the alpha channel.
184
+
185
+ ```ts
186
+ Bun.color("hsl(0, 0%, 50%)", "{rgb}"); // { r: 128, g: 128, b: 128 }
187
+ Bun.color("red", "{rgb}"); // { r: 255, g: 0, b: 0 }
188
+ Bun.color(0xff0000, "{rgb}"); // { r: 255, g: 0, b: 0 }
189
+ Bun.color({ r: 255, g: 0, b: 0 }, "{rgb}"); // { r: 255, g: 0, b: 0 }
190
+ Bun.color([255, 0, 0], "{rgb}"); // { r: 255, g: 0, b: 0 }
191
+ ```
192
+
193
+ #### `[rgba]` array
194
+
195
+ The `"[rgba]"` format outputs an array with the red, green, blue, and alpha channels.
196
+
197
+ ```ts
198
+ // All values are 0 - 255
199
+ type RGBAArray = [number, number, number, number];
200
+ ```
201
+
202
+ Example:
203
+
204
+ ```ts
205
+ Bun.color("hsl(0, 0%, 50%)", "[rgba]"); // [128, 128, 128, 255]
206
+ Bun.color("red", "[rgba]"); // [255, 0, 0, 255]
207
+ Bun.color(0xff0000, "[rgba]"); // [255, 0, 0, 255]
208
+ Bun.color({ r: 255, g: 0, b: 0 }, "[rgba]"); // [255, 0, 0, 255]
209
+ Bun.color([255, 0, 0], "[rgba]"); // [255, 0, 0, 255]
210
+ ```
211
+
212
+ Unlike the `"{rgba}"` format, the alpha channel is an integer between `0` and `255`. This is useful for typed arrays where each channel must be the same underlying type.
213
+
214
+ The `"[rgb]"` format is similar, but it doesn't include the alpha channel.
215
+
216
+ ```ts
217
+ Bun.color("hsl(0, 0%, 50%)", "[rgb]"); // [128, 128, 128]
218
+ Bun.color("red", "[rgb]"); // [255, 0, 0]
219
+ Bun.color(0xff0000, "[rgb]"); // [255, 0, 0]
220
+ Bun.color({ r: 255, g: 0, b: 0 }, "[rgb]"); // [255, 0, 0]
221
+ Bun.color([255, 0, 0], "[rgb]"); // [255, 0, 0]
222
+ ```
223
+
224
+ ### Format colors as hex strings
225
+
226
+ The `"hex"` format outputs a lowercase hex string for use in CSS or other contexts.
227
+
228
+ ```ts
229
+ Bun.color("hsl(0, 0%, 50%)", "hex"); // "#808080"
230
+ Bun.color("red", "hex"); // "#ff0000"
231
+ Bun.color(0xff0000, "hex"); // "#ff0000"
232
+ Bun.color({ r: 255, g: 0, b: 0 }, "hex"); // "#ff0000"
233
+ Bun.color([255, 0, 0], "hex"); // "#ff0000"
234
+ ```
235
+
236
+ The `"HEX"` format is similar, but it outputs a hex string with uppercase letters instead of lowercase letters.
237
+
238
+ ```ts
239
+ Bun.color("hsl(0, 0%, 50%)", "HEX"); // "#808080"
240
+ Bun.color("red", "HEX"); // "#FF0000"
241
+ Bun.color(0xff0000, "HEX"); // "#FF0000"
242
+ Bun.color({ r: 255, g: 0, b: 0 }, "HEX"); // "#FF0000"
243
+ Bun.color([255, 0, 0], "HEX"); // "#FF0000"
244
+ ```
245
+
246
+ ### Bundle-time client-side color formatting
247
+
248
+ Like many of Bun's APIs, you can use macros to invoke `Bun.color` at bundle-time for use in client-side JavaScript builds:
249
+
250
+ ```ts client-side.ts
251
+ import { color } from "bun" with { type: "macro" };
252
+
253
+ console.log(color("#f00", "css"));
254
+ ```
255
+
256
+ Then, build the client-side code:
257
+
258
+ ```sh
259
+ bun build ./client-side.ts
260
+ ```
261
+
262
+ This will output the following to `client-side.js`:
263
+
264
+ ```js
265
+ // client-side.ts
266
+ console.log("red");
267
+ ```
@@ -0,0 +1,67 @@
1
+ ---
2
+ title: Console
3
+ description: The console object in Bun
4
+ ---
5
+
6
+ <Note>
7
+ Bun provides a browser- and Node.js-compatible [console](https://developer.mozilla.org/en-US/docs/Web/API/console)
8
+ global. This page only documents Bun-native APIs.
9
+ </Note>
10
+
11
+ ---
12
+
13
+ ## Object inspection depth
14
+
15
+ Bun allows you to configure how deeply nested objects are displayed in `console.log()` output:
16
+
17
+ - **CLI flag**: Use `--console-depth <number>` to set the depth for a single run
18
+ - **Configuration**: Set `console.depth` in your `bunfig.toml` for persistent configuration
19
+ - **Default**: Objects are inspected to a depth of `2` levels
20
+
21
+ ```js
22
+ const nested = { a: { b: { c: { d: "deep" } } } };
23
+ console.log(nested);
24
+ // Default (depth 2): { a: { b: [Object] } }
25
+ // With depth 4: { a: { b: { c: { d: 'deep' } } } }
26
+ ```
27
+
28
+ The CLI flag takes precedence over the configuration file setting.
29
+
30
+ ---
31
+
32
+ ## Reading from stdin
33
+
34
+ In Bun, the `console` object can be used as an `AsyncIterable` to sequentially read lines from `process.stdin`.
35
+
36
+ ```ts adder.ts icon="/icons/typescript.svg"
37
+ for await (const line of console) {
38
+ console.log(line);
39
+ }
40
+ ```
41
+
42
+ This is useful for implementing interactive programs, like the following addition calculator.
43
+
44
+ ```ts adder.ts icon="/icons/typescript.svg"
45
+ console.log(`Let's add some numbers!`);
46
+ console.write(`Count: 0\n> `);
47
+
48
+ let count = 0;
49
+ for await (const line of console) {
50
+ count += Number(line);
51
+ console.write(`Count: ${count}\n> `);
52
+ }
53
+ ```
54
+
55
+ To run the file:
56
+
57
+ ```bash terminal icon="terminal"
58
+ bun adder.ts
59
+ Let's add some numbers!
60
+ Count: 0
61
+ > 5
62
+ Count: 5
63
+ > 5
64
+ Count: 10
65
+ > 5
66
+ Count: 15
67
+ ```