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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (312) hide show
  1. package/bun.d.ts +4 -4
  2. package/docs/README.md +28 -0
  3. package/globals.d.ts +0 -1
  4. package/overrides.d.ts +45 -15
  5. package/package.json +1 -1
  6. package/test.d.ts +1 -1
  7. package/docs/api/binary-data.md +0 -1038
  8. package/docs/api/cc.md +0 -197
  9. package/docs/api/color.md +0 -262
  10. package/docs/api/console.md +0 -57
  11. package/docs/api/cookie.md +0 -449
  12. package/docs/api/dns.md +0 -110
  13. package/docs/api/fetch.md +0 -463
  14. package/docs/api/ffi.md +0 -557
  15. package/docs/api/file-io.md +0 -366
  16. package/docs/api/file-system-router.md +0 -112
  17. package/docs/api/file.md +0 -19
  18. package/docs/api/glob.md +0 -178
  19. package/docs/api/globals.md +0 -387
  20. package/docs/api/hashing.md +0 -319
  21. package/docs/api/html-rewriter.md +0 -334
  22. package/docs/api/http.md +0 -1408
  23. package/docs/api/import-meta.md +0 -69
  24. package/docs/api/node-api.md +0 -14
  25. package/docs/api/redis.md +0 -597
  26. package/docs/api/s3.md +0 -850
  27. package/docs/api/secrets.md +0 -319
  28. package/docs/api/semver.md +0 -52
  29. package/docs/api/spawn.md +0 -582
  30. package/docs/api/sql.md +0 -1374
  31. package/docs/api/sqlite.md +0 -694
  32. package/docs/api/streams.md +0 -230
  33. package/docs/api/tcp.md +0 -221
  34. package/docs/api/transpiler.md +0 -276
  35. package/docs/api/udp.md +0 -123
  36. package/docs/api/utils.md +0 -891
  37. package/docs/api/websockets.md +0 -573
  38. package/docs/api/workers.md +0 -322
  39. package/docs/api/yaml.md +0 -668
  40. package/docs/benchmarks.md +0 -120
  41. package/docs/bun-flavored-toml.md +0 -42
  42. package/docs/bundler/css.md +0 -1028
  43. package/docs/bundler/css_modules.md +0 -145
  44. package/docs/bundler/executables.md +0 -626
  45. package/docs/bundler/fullstack.md +0 -418
  46. package/docs/bundler/hmr.md +0 -234
  47. package/docs/bundler/html.md +0 -349
  48. package/docs/bundler/index.md +0 -1735
  49. package/docs/bundler/intro.md +0 -75
  50. package/docs/bundler/loaders.md +0 -410
  51. package/docs/bundler/macros.md +0 -329
  52. package/docs/bundler/plugins.md +0 -449
  53. package/docs/bundler/vs-esbuild.md +0 -1127
  54. package/docs/cli/add.md +0 -173
  55. package/docs/cli/bun-completions.md +0 -3
  56. package/docs/cli/bun-create.md +0 -338
  57. package/docs/cli/bun-install.md +0 -349
  58. package/docs/cli/bun-upgrade.md +0 -39
  59. package/docs/cli/bunx.md +0 -89
  60. package/docs/cli/filter.md +0 -90
  61. package/docs/cli/info.md +0 -65
  62. package/docs/cli/init.md +0 -85
  63. package/docs/cli/install.md +0 -344
  64. package/docs/cli/link.md +0 -40
  65. package/docs/cli/outdated.md +0 -90
  66. package/docs/cli/patch-commit.md +0 -11
  67. package/docs/cli/pm.md +0 -285
  68. package/docs/cli/publish.md +0 -120
  69. package/docs/cli/remove.md +0 -7
  70. package/docs/cli/run.md +0 -261
  71. package/docs/cli/test.md +0 -397
  72. package/docs/cli/unlink.md +0 -9
  73. package/docs/cli/update.md +0 -129
  74. package/docs/cli/why.md +0 -67
  75. package/docs/contributing/upgrading-webkit.md +0 -57
  76. package/docs/ecosystem/elysia.md +0 -24
  77. package/docs/ecosystem/express.md +0 -37
  78. package/docs/ecosystem/hono.md +0 -18
  79. package/docs/ecosystem/react.md +0 -65
  80. package/docs/ecosystem/stric.md +0 -38
  81. package/docs/guides/binary/arraybuffer-to-array.md +0 -27
  82. package/docs/guides/binary/arraybuffer-to-blob.md +0 -24
  83. package/docs/guides/binary/arraybuffer-to-buffer.md +0 -25
  84. package/docs/guides/binary/arraybuffer-to-string.md +0 -15
  85. package/docs/guides/binary/arraybuffer-to-typedarray.md +0 -39
  86. package/docs/guides/binary/blob-to-arraybuffer.md +0 -14
  87. package/docs/guides/binary/blob-to-dataview.md +0 -14
  88. package/docs/guides/binary/blob-to-stream.md +0 -14
  89. package/docs/guides/binary/blob-to-string.md +0 -15
  90. package/docs/guides/binary/blob-to-typedarray.md +0 -14
  91. package/docs/guides/binary/buffer-to-arraybuffer.md +0 -14
  92. package/docs/guides/binary/buffer-to-blob.md +0 -14
  93. package/docs/guides/binary/buffer-to-readablestream.md +0 -41
  94. package/docs/guides/binary/buffer-to-string.md +0 -25
  95. package/docs/guides/binary/buffer-to-typedarray.md +0 -14
  96. package/docs/guides/binary/dataview-to-string.md +0 -15
  97. package/docs/guides/binary/typedarray-to-arraybuffer.md +0 -25
  98. package/docs/guides/binary/typedarray-to-blob.md +0 -16
  99. package/docs/guides/binary/typedarray-to-buffer.md +0 -14
  100. package/docs/guides/binary/typedarray-to-dataview.md +0 -14
  101. package/docs/guides/binary/typedarray-to-readablestream.md +0 -41
  102. package/docs/guides/binary/typedarray-to-string.md +0 -16
  103. package/docs/guides/deployment/railway.md +0 -157
  104. package/docs/guides/ecosystem/astro.md +0 -72
  105. package/docs/guides/ecosystem/discordjs.md +0 -77
  106. package/docs/guides/ecosystem/docker.md +0 -140
  107. package/docs/guides/ecosystem/drizzle.md +0 -185
  108. package/docs/guides/ecosystem/edgedb.md +0 -228
  109. package/docs/guides/ecosystem/elysia.md +0 -31
  110. package/docs/guides/ecosystem/express.md +0 -40
  111. package/docs/guides/ecosystem/hono.md +0 -39
  112. package/docs/guides/ecosystem/mongoose.md +0 -87
  113. package/docs/guides/ecosystem/neon-drizzle.md +0 -220
  114. package/docs/guides/ecosystem/neon-serverless-postgres.md +0 -55
  115. package/docs/guides/ecosystem/nextjs.md +0 -49
  116. package/docs/guides/ecosystem/nuxt.md +0 -56
  117. package/docs/guides/ecosystem/pm2.md +0 -57
  118. package/docs/guides/ecosystem/prisma.md +0 -141
  119. package/docs/guides/ecosystem/qwik.md +0 -107
  120. package/docs/guides/ecosystem/react.md +0 -50
  121. package/docs/guides/ecosystem/remix.md +0 -78
  122. package/docs/guides/ecosystem/render.md +0 -79
  123. package/docs/guides/ecosystem/sentry.md +0 -52
  124. package/docs/guides/ecosystem/solidstart.md +0 -58
  125. package/docs/guides/ecosystem/ssr-react.md +0 -51
  126. package/docs/guides/ecosystem/stric.md +0 -55
  127. package/docs/guides/ecosystem/sveltekit.md +0 -125
  128. package/docs/guides/ecosystem/systemd.md +0 -113
  129. package/docs/guides/ecosystem/vite.md +0 -71
  130. package/docs/guides/html-rewriter/extract-links.md +0 -68
  131. package/docs/guides/html-rewriter/extract-social-meta.md +0 -93
  132. package/docs/guides/http/cluster.md +0 -66
  133. package/docs/guides/http/fetch-unix.md +0 -33
  134. package/docs/guides/http/fetch.md +0 -24
  135. package/docs/guides/http/file-uploads.md +0 -94
  136. package/docs/guides/http/hot.md +0 -26
  137. package/docs/guides/http/proxy.md +0 -24
  138. package/docs/guides/http/server.md +0 -46
  139. package/docs/guides/http/simple.md +0 -18
  140. package/docs/guides/http/stream-file.md +0 -48
  141. package/docs/guides/http/stream-iterator.md +0 -47
  142. package/docs/guides/http/stream-node-streams-in-bun.md +0 -20
  143. package/docs/guides/http/tls.md +0 -30
  144. package/docs/guides/install/add-dev.md +0 -26
  145. package/docs/guides/install/add-git.md +0 -36
  146. package/docs/guides/install/add-optional.md +0 -25
  147. package/docs/guides/install/add-peer.md +0 -43
  148. package/docs/guides/install/add-tarball.md +0 -33
  149. package/docs/guides/install/add.md +0 -42
  150. package/docs/guides/install/azure-artifacts.md +0 -73
  151. package/docs/guides/install/cicd.md +0 -41
  152. package/docs/guides/install/custom-registry.md +0 -30
  153. package/docs/guides/install/from-npm-install-to-bun-install.md +0 -214
  154. package/docs/guides/install/git-diff-bun-lockfile.md +0 -44
  155. package/docs/guides/install/jfrog-artifactory.md +0 -28
  156. package/docs/guides/install/npm-alias.md +0 -23
  157. package/docs/guides/install/registry-scope.md +0 -38
  158. package/docs/guides/install/trusted.md +0 -46
  159. package/docs/guides/install/workspaces.md +0 -70
  160. package/docs/guides/install/yarnlock.md +0 -44
  161. package/docs/guides/process/argv.md +0 -58
  162. package/docs/guides/process/ctrl-c.md +0 -16
  163. package/docs/guides/process/ipc.md +0 -66
  164. package/docs/guides/process/nanoseconds.md +0 -13
  165. package/docs/guides/process/os-signals.md +0 -39
  166. package/docs/guides/process/spawn-stderr.md +0 -31
  167. package/docs/guides/process/spawn-stdout.md +0 -26
  168. package/docs/guides/process/spawn.md +0 -41
  169. package/docs/guides/process/stdin.md +0 -54
  170. package/docs/guides/read-file/arraybuffer.md +0 -28
  171. package/docs/guides/read-file/buffer.md +0 -19
  172. package/docs/guides/read-file/exists.md +0 -16
  173. package/docs/guides/read-file/json.md +0 -17
  174. package/docs/guides/read-file/mime.md +0 -20
  175. package/docs/guides/read-file/stream.md +0 -26
  176. package/docs/guides/read-file/string.md +0 -22
  177. package/docs/guides/read-file/uint8array.md +0 -21
  178. package/docs/guides/read-file/watch.md +0 -68
  179. package/docs/guides/runtime/build-time-constants.md +0 -293
  180. package/docs/guides/runtime/cicd.md +0 -43
  181. package/docs/guides/runtime/codesign-macos-executable.md +0 -56
  182. package/docs/guides/runtime/define-constant.md +0 -145
  183. package/docs/guides/runtime/delete-directory.md +0 -37
  184. package/docs/guides/runtime/delete-file.md +0 -19
  185. package/docs/guides/runtime/heap-snapshot.md +0 -26
  186. package/docs/guides/runtime/import-html.md +0 -15
  187. package/docs/guides/runtime/import-json.md +0 -44
  188. package/docs/guides/runtime/import-toml.md +0 -30
  189. package/docs/guides/runtime/import-yaml.md +0 -102
  190. package/docs/guides/runtime/read-env.md +0 -32
  191. package/docs/guides/runtime/set-env.md +0 -47
  192. package/docs/guides/runtime/shell.md +0 -40
  193. package/docs/guides/runtime/timezone.md +0 -35
  194. package/docs/guides/runtime/tsconfig-paths.md +0 -29
  195. package/docs/guides/runtime/typescript.md +0 -49
  196. package/docs/guides/runtime/vscode-debugger.md +0 -47
  197. package/docs/guides/runtime/web-debugger.md +0 -82
  198. package/docs/guides/streams/node-readable-to-arraybuffer.md +0 -11
  199. package/docs/guides/streams/node-readable-to-blob.md +0 -11
  200. package/docs/guides/streams/node-readable-to-json.md +0 -12
  201. package/docs/guides/streams/node-readable-to-string.md +0 -12
  202. package/docs/guides/streams/node-readable-to-uint8array.md +0 -11
  203. package/docs/guides/streams/to-array.md +0 -14
  204. package/docs/guides/streams/to-arraybuffer.md +0 -14
  205. package/docs/guides/streams/to-blob.md +0 -14
  206. package/docs/guides/streams/to-buffer.md +0 -15
  207. package/docs/guides/streams/to-json.md +0 -14
  208. package/docs/guides/streams/to-string.md +0 -14
  209. package/docs/guides/streams/to-typedarray.md +0 -22
  210. package/docs/guides/test/bail.md +0 -22
  211. package/docs/guides/test/coverage-threshold.md +0 -60
  212. package/docs/guides/test/coverage.md +0 -44
  213. package/docs/guides/test/happy-dom.md +0 -68
  214. package/docs/guides/test/migrate-from-jest.md +0 -143
  215. package/docs/guides/test/mock-clock.md +0 -48
  216. package/docs/guides/test/mock-functions.md +0 -68
  217. package/docs/guides/test/rerun-each.md +0 -14
  218. package/docs/guides/test/run-tests.md +0 -111
  219. package/docs/guides/test/skip-tests.md +0 -39
  220. package/docs/guides/test/snapshot.md +0 -95
  221. package/docs/guides/test/spy-on.md +0 -46
  222. package/docs/guides/test/svelte-test.md +0 -120
  223. package/docs/guides/test/testing-library.md +0 -92
  224. package/docs/guides/test/timeout.md +0 -15
  225. package/docs/guides/test/todo-tests.md +0 -67
  226. package/docs/guides/test/update-snapshots.md +0 -46
  227. package/docs/guides/test/watch-mode.md +0 -19
  228. package/docs/guides/util/base64.md +0 -15
  229. package/docs/guides/util/deep-equals.md +0 -39
  230. package/docs/guides/util/deflate.md +0 -18
  231. package/docs/guides/util/detect-bun.md +0 -23
  232. package/docs/guides/util/entrypoint.md +0 -17
  233. package/docs/guides/util/escape-html.md +0 -22
  234. package/docs/guides/util/file-url-to-path.md +0 -14
  235. package/docs/guides/util/gzip.md +0 -18
  236. package/docs/guides/util/hash-a-password.md +0 -54
  237. package/docs/guides/util/import-meta-dir.md +0 -13
  238. package/docs/guides/util/import-meta-file.md +0 -13
  239. package/docs/guides/util/import-meta-path.md +0 -13
  240. package/docs/guides/util/javascript-uuid.md +0 -23
  241. package/docs/guides/util/main.md +0 -32
  242. package/docs/guides/util/path-to-file-url.md +0 -14
  243. package/docs/guides/util/sleep.md +0 -22
  244. package/docs/guides/util/version.md +0 -21
  245. package/docs/guides/util/which-path-to-executable-bin.md +0 -15
  246. package/docs/guides/websocket/compression.md +0 -31
  247. package/docs/guides/websocket/context.md +0 -77
  248. package/docs/guides/websocket/pubsub.md +0 -41
  249. package/docs/guides/websocket/simple.md +0 -33
  250. package/docs/guides/write-file/append.md +0 -52
  251. package/docs/guides/write-file/basic.md +0 -44
  252. package/docs/guides/write-file/blob.md +0 -28
  253. package/docs/guides/write-file/cat.md +0 -17
  254. package/docs/guides/write-file/file-cp.md +0 -16
  255. package/docs/guides/write-file/filesink.md +0 -52
  256. package/docs/guides/write-file/response.md +0 -17
  257. package/docs/guides/write-file/stdout.md +0 -21
  258. package/docs/guides/write-file/stream.md +0 -17
  259. package/docs/guides/write-file/unlink.md +0 -16
  260. package/docs/index.md +0 -77
  261. package/docs/install/audit.md +0 -57
  262. package/docs/install/cache.md +0 -59
  263. package/docs/install/catalogs.md +0 -298
  264. package/docs/install/index.md +0 -248
  265. package/docs/install/isolated.md +0 -197
  266. package/docs/install/lifecycle.md +0 -46
  267. package/docs/install/lockfile.md +0 -58
  268. package/docs/install/npmrc.md +0 -105
  269. package/docs/install/overrides.md +0 -73
  270. package/docs/install/patch.md +0 -59
  271. package/docs/install/registries.md +0 -30
  272. package/docs/install/security-scanner-api.md +0 -81
  273. package/docs/install/workspaces.md +0 -114
  274. package/docs/installation.md +0 -327
  275. package/docs/project/asan.md +0 -124
  276. package/docs/project/benchmarking.md +0 -203
  277. package/docs/project/bindgen.md +0 -225
  278. package/docs/project/building-windows.md +0 -162
  279. package/docs/project/contributing.md +0 -347
  280. package/docs/project/internals/build-process-for-ci.md +0 -75
  281. package/docs/project/licensing.md +0 -73
  282. package/docs/project/roadmap.md +0 -87
  283. package/docs/quickstart.md +0 -157
  284. package/docs/runtime/autoimport.md +0 -94
  285. package/docs/runtime/bun-apis.md +0 -207
  286. package/docs/runtime/bunfig.md +0 -772
  287. package/docs/runtime/debugger.md +0 -325
  288. package/docs/runtime/env.md +0 -253
  289. package/docs/runtime/hot.md +0 -145
  290. package/docs/runtime/index.md +0 -312
  291. package/docs/runtime/jsx.md +0 -385
  292. package/docs/runtime/loaders.md +0 -130
  293. package/docs/runtime/modules.md +0 -320
  294. package/docs/runtime/nodejs-apis.md +0 -463
  295. package/docs/runtime/plugins.md +0 -561
  296. package/docs/runtime/shell.md +0 -605
  297. package/docs/runtime/typescript.md +0 -139
  298. package/docs/runtime/web-apis.md +0 -128
  299. package/docs/test/configuration.md +0 -154
  300. package/docs/test/coverage.md +0 -142
  301. package/docs/test/discovery.md +0 -85
  302. package/docs/test/dom.md +0 -75
  303. package/docs/test/examples/concurrent-test-glob.md +0 -132
  304. package/docs/test/hot.md +0 -15
  305. package/docs/test/lifecycle.md +0 -81
  306. package/docs/test/mocks.md +0 -313
  307. package/docs/test/reporters.md +0 -117
  308. package/docs/test/runtime-behavior.md +0 -95
  309. package/docs/test/snapshots.md +0 -68
  310. package/docs/test/time.md +0 -126
  311. package/docs/test/writing.md +0 -825
  312. package/docs/typescript.md +0 -53
package/docs/api/cc.md DELETED
@@ -1,197 +0,0 @@
1
- `bun:ffi` has experimental support for compiling and running C from JavaScript with low overhead.
2
-
3
- ## Usage (cc in `bun:ffi`)
4
-
5
- See the [introduction blog post](https://bun.com/blog/compile-and-run-c-in-js) for more information.
6
-
7
- JavaScript:
8
-
9
- ```ts#hello.js
10
- import { cc } from "bun:ffi";
11
- import source from "./hello.c" with { type: "file" };
12
-
13
- const {
14
- symbols: { hello },
15
- } = cc({
16
- source,
17
- symbols: {
18
- hello: {
19
- args: [],
20
- returns: "int",
21
- },
22
- },
23
- });
24
-
25
- console.log("What is the answer to the universe?", hello());
26
- ```
27
-
28
- C source:
29
-
30
- ```c#hello.c
31
- int hello() {
32
- return 42;
33
- }
34
- ```
35
-
36
- When you run `hello.js`, it will print:
37
-
38
- ```sh
39
- $ bun hello.js
40
- What is the answer to the universe? 42
41
- ```
42
-
43
- Under the hood, `cc` uses [TinyCC](https://bellard.org/tcc/) to compile the C code and then link it with the JavaScript runtime, efficiently converting types in-place.
44
-
45
- ### Primitive types
46
-
47
- The same `FFIType` values in [`dlopen`](/docs/api/ffi) are supported in `cc`.
48
-
49
- | `FFIType` | C Type | Aliases |
50
- | ---------- | -------------- | --------------------------- |
51
- | cstring | `char*` | |
52
- | function | `(void*)(*)()` | `fn`, `callback` |
53
- | ptr | `void*` | `pointer`, `void*`, `char*` |
54
- | i8 | `int8_t` | `int8_t` |
55
- | i16 | `int16_t` | `int16_t` |
56
- | i32 | `int32_t` | `int32_t`, `int` |
57
- | i64 | `int64_t` | `int64_t` |
58
- | i64_fast | `int64_t` | |
59
- | u8 | `uint8_t` | `uint8_t` |
60
- | u16 | `uint16_t` | `uint16_t` |
61
- | u32 | `uint32_t` | `uint32_t` |
62
- | u64 | `uint64_t` | `uint64_t` |
63
- | u64_fast | `uint64_t` | |
64
- | f32 | `float` | `float` |
65
- | f64 | `double` | `double` |
66
- | bool | `bool` | |
67
- | char | `char` | |
68
- | napi_env | `napi_env` | |
69
- | napi_value | `napi_value` | |
70
-
71
- ### Strings, objects, and non-primitive types
72
-
73
- To make it easier to work with strings, objects, and other non-primitive types that don't map 1:1 to C types, `cc` supports N-API.
74
-
75
- To pass or receive a JavaScript values without any type conversions from a C function, you can use `napi_value`.
76
-
77
- You can also pass a `napi_env` to receive the N-API environment used to call the JavaScript function.
78
-
79
- #### Returning a C string to JavaScript
80
-
81
- For example, if you have a string in C, you can return it to JavaScript like this:
82
-
83
- ```ts#hello.js
84
- import { cc } from "bun:ffi";
85
- import source from "./hello.c" with { type: "file" };
86
-
87
- const {
88
- symbols: { hello },
89
- } = cc({
90
- source,
91
- symbols: {
92
- hello: {
93
- args: ["napi_env"],
94
- returns: "napi_value",
95
- },
96
- },
97
- });
98
-
99
- const result = hello();
100
- ```
101
-
102
- And in C:
103
-
104
- ```c#hello.c
105
- #include <node/node_api.h>
106
-
107
- napi_value hello(napi_env env) {
108
- napi_value result;
109
- napi_create_string_utf8(env, "Hello, Napi!", NAPI_AUTO_LENGTH, &result);
110
- return result;
111
- }
112
- ```
113
-
114
- You can also use this to return other types like objects and arrays:
115
-
116
- ```c#hello.c
117
- #include <node/node_api.h>
118
-
119
- napi_value hello(napi_env env) {
120
- napi_value result;
121
- napi_create_object(env, &result);
122
- return result;
123
- }
124
- ```
125
-
126
- ### `cc` Reference
127
-
128
- #### `library: string[]`
129
-
130
- The `library` array is used to specify the libraries that should be linked with the C code.
131
-
132
- ```ts
133
- type Library = string[];
134
-
135
- cc({
136
- source: "hello.c",
137
- library: ["sqlite3"],
138
- });
139
- ```
140
-
141
- #### `symbols`
142
-
143
- The `symbols` object is used to specify the functions and variables that should be exposed to JavaScript.
144
-
145
- ```ts
146
- type Symbols = {
147
- [key: string]: {
148
- args: FFIType[];
149
- returns: FFIType;
150
- };
151
- };
152
- ```
153
-
154
- #### `source`
155
-
156
- The `source` is a file path to the C code that should be compiled and linked with the JavaScript runtime.
157
-
158
- ```ts
159
- type Source = string | URL | BunFile;
160
-
161
- cc({
162
- source: "hello.c",
163
- symbols: {
164
- hello: {
165
- args: [],
166
- returns: "int",
167
- },
168
- },
169
- });
170
- ```
171
-
172
- #### `flags: string | string[]`
173
-
174
- The `flags` is an optional array of strings that should be passed to the TinyCC compiler.
175
-
176
- ```ts
177
- type Flags = string | string[];
178
- ```
179
-
180
- These are flags like `-I` for include directories and `-D` for preprocessor definitions.
181
-
182
- #### `define: Record<string, string>`
183
-
184
- The `define` is an optional object that should be passed to the TinyCC compiler.
185
-
186
- ```ts
187
- type Defines = Record<string, string>;
188
-
189
- cc({
190
- source: "hello.c",
191
- define: {
192
- "NDEBUG": "1",
193
- },
194
- });
195
- ```
196
-
197
- These are preprocessor definitions passed to the TinyCC compiler.
package/docs/api/color.md DELETED
@@ -1,262 +0,0 @@
1
- `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:
2
-
3
- | Format | Example |
4
- | ------------ | -------------------------------- |
5
- | `"css"` | `"red"` |
6
- | `"ansi"` | `"\x1b[38;2;255;0;0m"` |
7
- | `"ansi-16"` | `"\x1b[38;5;\tm"` |
8
- | `"ansi-256"` | `"\x1b[38;5;196m"` |
9
- | `"ansi-16m"` | `"\x1b[38;2;255;0;0m"` |
10
- | `"number"` | `0x1a2b3c` |
11
- | `"rgb"` | `"rgb(255, 99, 71)"` |
12
- | `"rgba"` | `"rgba(255, 99, 71, 0.5)"` |
13
- | `"hsl"` | `"hsl(120, 50%, 50%)"` |
14
- | `"hex"` | `"#1a2b3c"` |
15
- | `"HEX"` | `"#1A2B3C"` |
16
- | `"{rgb}"` | `{ r: 255, g: 99, b: 71 }` |
17
- | `"{rgba}"` | `{ r: 255, g: 99, b: 71, a: 1 }` |
18
- | `"[rgb]"` | `[ 255, 99, 71 ]` |
19
- | `"[rgba]"` | `[ 255, 99, 71, 255]` |
20
-
21
- There are many different ways to use this API:
22
-
23
- - Validate and normalize colors to persist in a database (`number` is the most database-friendly)
24
- - Convert colors to different formats
25
- - 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)
26
- - Format colors for use in CSS injected into HTML
27
- - Get the `r`, `g`, `b`, and `a` color components as JavaScript objects or numbers from a CSS color string
28
-
29
- 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.
30
-
31
- ### Flexible input
32
-
33
- You can pass in any of the following:
34
-
35
- - Standard CSS color names like `"red"`
36
- - Numbers like `0xff0000`
37
- - Hex strings like `"#f00"`
38
- - RGB strings like `"rgb(255, 0, 0)"`
39
- - RGBA strings like `"rgba(255, 0, 0, 1)"`
40
- - HSL strings like `"hsl(0, 100%, 50%)"`
41
- - HSLA strings like `"hsla(0, 100%, 50%, 1)"`
42
- - RGB objects like `{ r: 255, g: 0, b: 0 }`
43
- - RGBA objects like `{ r: 255, g: 0, b: 0, a: 1 }`
44
- - RGB arrays like `[255, 0, 0]`
45
- - RGBA arrays like `[255, 0, 0, 255]`
46
- - LAB strings like `"lab(50% 50% 50%)"`
47
- - ... anything else that CSS can parse as a single color value
48
-
49
- ### Format colors as CSS
50
-
51
- 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.
52
-
53
- ```ts
54
- Bun.color("red", "css"); // "red"
55
- Bun.color(0xff0000, "css"); // "#f000"
56
- Bun.color("#f00", "css"); // "red"
57
- Bun.color("#ff0000", "css"); // "red"
58
- Bun.color("rgb(255, 0, 0)", "css"); // "red"
59
- Bun.color("rgba(255, 0, 0, 1)", "css"); // "red"
60
- Bun.color("hsl(0, 100%, 50%)", "css"); // "red"
61
- Bun.color("hsla(0, 100%, 50%, 1)", "css"); // "red"
62
- Bun.color({ r: 255, g: 0, b: 0 }, "css"); // "red"
63
- Bun.color({ r: 255, g: 0, b: 0, a: 1 }, "css"); // "red"
64
- Bun.color([255, 0, 0], "css"); // "red"
65
- Bun.color([255, 0, 0, 255], "css"); // "red"
66
- ```
67
-
68
- If the input is unknown or fails to parse, `Bun.color` returns `null`.
69
-
70
- ### Format colors as ANSI (for terminals)
71
-
72
- The `"ansi"` format outputs ANSI escape codes for use in terminals to make text colorful.
73
-
74
- ```ts
75
- Bun.color("red", "ansi"); // "\u001b[38;2;255;0;0m"
76
- Bun.color(0xff0000, "ansi"); // "\u001b[38;2;255;0;0m"
77
- Bun.color("#f00", "ansi"); // "\u001b[38;2;255;0;0m"
78
- Bun.color("#ff0000", "ansi"); // "\u001b[38;2;255;0;0m"
79
- Bun.color("rgb(255, 0, 0)", "ansi"); // "\u001b[38;2;255;0;0m"
80
- Bun.color("rgba(255, 0, 0, 1)", "ansi"); // "\u001b[38;2;255;0;0m"
81
- Bun.color("hsl(0, 100%, 50%)", "ansi"); // "\u001b[38;2;255;0;0m"
82
- Bun.color("hsla(0, 100%, 50%, 1)", "ansi"); // "\u001b[38;2;255;0;0m"
83
- Bun.color({ r: 255, g: 0, b: 0 }, "ansi"); // "\u001b[38;2;255;0;0m"
84
- Bun.color({ r: 255, g: 0, b: 0, a: 1 }, "ansi"); // "\u001b[38;2;255;0;0m"
85
- Bun.color([255, 0, 0], "ansi"); // "\u001b[38;2;255;0;0m"
86
- Bun.color([255, 0, 0, 255], "ansi"); // "\u001b[38;2;255;0;0m"
87
- ```
88
-
89
- 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`.
90
-
91
- #### 24-bit ANSI colors (`ansi-16m`)
92
-
93
- 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.
94
-
95
- This converts the input color to RGBA, and then outputs that as an ANSI color.
96
-
97
- ```ts
98
- Bun.color("red", "ansi-16m"); // "\x1b[38;2;255;0;0m"
99
- Bun.color(0xff0000, "ansi-16m"); // "\x1b[38;2;255;0;0m"
100
- Bun.color("#f00", "ansi-16m"); // "\x1b[38;2;255;0;0m"
101
- Bun.color("#ff0000", "ansi-16m"); // "\x1b[38;2;255;0;0m"
102
- ```
103
-
104
- #### 256 ANSI colors (`ansi-256`)
105
-
106
- The `"ansi-256"` format approximates the input color to the nearest of the 256 ANSI colors supported by some terminals.
107
-
108
- ```ts
109
- Bun.color("red", "ansi-256"); // "\u001b[38;5;196m"
110
- Bun.color(0xff0000, "ansi-256"); // "\u001b[38;5;196m"
111
- Bun.color("#f00", "ansi-256"); // "\u001b[38;5;196m"
112
- Bun.color("#ff0000", "ansi-256"); // "\u001b[38;5;196m"
113
- ```
114
-
115
- 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).
116
-
117
- #### 16 ANSI colors (`ansi-16`)
118
-
119
- The `"ansi-16"` format approximates the input color to the nearest of the 16 ANSI colors supported by most terminals.
120
-
121
- ```ts
122
- Bun.color("red", "ansi-16"); // "\u001b[38;5;\tm"
123
- Bun.color(0xff0000, "ansi-16"); // "\u001b[38;5;\tm"
124
- Bun.color("#f00", "ansi-16"); // "\u001b[38;5;\tm"
125
- Bun.color("#ff0000", "ansi-16"); // "\u001b[38;5;\tm"
126
- ```
127
-
128
- 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.
129
-
130
- ### Format colors as numbers
131
-
132
- 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.
133
-
134
- ```ts
135
- Bun.color("red", "number"); // 16711680
136
- Bun.color(0xff0000, "number"); // 16711680
137
- Bun.color({ r: 255, g: 0, b: 0 }, "number"); // 16711680
138
- Bun.color([255, 0, 0], "number"); // 16711680
139
- Bun.color("rgb(255, 0, 0)", "number"); // 16711680
140
- Bun.color("rgba(255, 0, 0, 1)", "number"); // 16711680
141
- Bun.color("hsl(0, 100%, 50%)", "number"); // 16711680
142
- Bun.color("hsla(0, 100%, 50%, 1)", "number"); // 16711680
143
- ```
144
-
145
- ### Get the red, green, blue, and alpha channels
146
-
147
- You can use the `"{rgba}"`, `"{rgb}"`, `"[rgba]"` and `"[rgb]"` formats to get the red, green, blue, and alpha channels as objects or arrays.
148
-
149
- #### `{rgba}` object
150
-
151
- The `"{rgba}"` format outputs an object with the red, green, blue, and alpha channels.
152
-
153
- ```ts
154
- type RGBAObject = {
155
- // 0 - 255
156
- r: number;
157
- // 0 - 255
158
- g: number;
159
- // 0 - 255
160
- b: number;
161
- // 0 - 1
162
- a: number;
163
- };
164
- ```
165
-
166
- Example:
167
-
168
- ```ts
169
- Bun.color("hsl(0, 0%, 50%)", "{rgba}"); // { r: 128, g: 128, b: 128, a: 1 }
170
- Bun.color("red", "{rgba}"); // { r: 255, g: 0, b: 0, a: 1 }
171
- Bun.color(0xff0000, "{rgba}"); // { r: 255, g: 0, b: 0, a: 1 }
172
- Bun.color({ r: 255, g: 0, b: 0 }, "{rgba}"); // { r: 255, g: 0, b: 0, a: 1 }
173
- Bun.color([255, 0, 0], "{rgba}"); // { r: 255, g: 0, b: 0, a: 1 }
174
- ```
175
-
176
- To behave similarly to CSS, the `a` channel is a decimal number between `0` and `1`.
177
-
178
- The `"{rgb}"` format is similar, but it doesn't include the alpha channel.
179
-
180
- ```ts
181
- Bun.color("hsl(0, 0%, 50%)", "{rgb}"); // { r: 128, g: 128, b: 128 }
182
- Bun.color("red", "{rgb}"); // { r: 255, g: 0, b: 0 }
183
- Bun.color(0xff0000, "{rgb}"); // { r: 255, g: 0, b: 0 }
184
- Bun.color({ r: 255, g: 0, b: 0 }, "{rgb}"); // { r: 255, g: 0, b: 0 }
185
- Bun.color([255, 0, 0], "{rgb}"); // { r: 255, g: 0, b: 0 }
186
- ```
187
-
188
- #### `[rgba]` array
189
-
190
- The `"[rgba]"` format outputs an array with the red, green, blue, and alpha channels.
191
-
192
- ```ts
193
- // All values are 0 - 255
194
- type RGBAArray = [number, number, number, number];
195
- ```
196
-
197
- Example:
198
-
199
- ```ts
200
- Bun.color("hsl(0, 0%, 50%)", "[rgba]"); // [128, 128, 128, 255]
201
- Bun.color("red", "[rgba]"); // [255, 0, 0, 255]
202
- Bun.color(0xff0000, "[rgba]"); // [255, 0, 0, 255]
203
- Bun.color({ r: 255, g: 0, b: 0 }, "[rgba]"); // [255, 0, 0, 255]
204
- Bun.color([255, 0, 0], "[rgba]"); // [255, 0, 0, 255]
205
- ```
206
-
207
- 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.
208
-
209
- The `"[rgb]"` format is similar, but it doesn't include the alpha channel.
210
-
211
- ```ts
212
- Bun.color("hsl(0, 0%, 50%)", "[rgb]"); // [128, 128, 128]
213
- Bun.color("red", "[rgb]"); // [255, 0, 0]
214
- Bun.color(0xff0000, "[rgb]"); // [255, 0, 0]
215
- Bun.color({ r: 255, g: 0, b: 0 }, "[rgb]"); // [255, 0, 0]
216
- Bun.color([255, 0, 0], "[rgb]"); // [255, 0, 0]
217
- ```
218
-
219
- ### Format colors as hex strings
220
-
221
- The `"hex"` format outputs a lowercase hex string for use in CSS or other contexts.
222
-
223
- ```ts
224
- Bun.color("hsl(0, 0%, 50%)", "hex"); // "#808080"
225
- Bun.color("red", "hex"); // "#ff0000"
226
- Bun.color(0xff0000, "hex"); // "#ff0000"
227
- Bun.color({ r: 255, g: 0, b: 0 }, "hex"); // "#ff0000"
228
- Bun.color([255, 0, 0], "hex"); // "#ff0000"
229
- ```
230
-
231
- The `"HEX"` format is similar, but it outputs a hex string with uppercase letters instead of lowercase letters.
232
-
233
- ```ts
234
- Bun.color("hsl(0, 0%, 50%)", "HEX"); // "#808080"
235
- Bun.color("red", "HEX"); // "#FF0000"
236
- Bun.color(0xff0000, "HEX"); // "#FF0000"
237
- Bun.color({ r: 255, g: 0, b: 0 }, "HEX"); // "#FF0000"
238
- Bun.color([255, 0, 0], "HEX"); // "#FF0000"
239
- ```
240
-
241
- ### Bundle-time client-side color formatting
242
-
243
- Like many of Bun's APIs, you can use macros to invoke `Bun.color` at bundle-time for use in client-side JavaScript builds:
244
-
245
- ```ts#client-side.ts
246
- import { color } from "bun" with { type: "macro" };
247
-
248
- console.log(color("#f00", "css"));
249
- ```
250
-
251
- Then, build the client-side code:
252
-
253
- ```sh
254
- bun build ./client-side.ts
255
- ```
256
-
257
- This will output the following to `client-side.js`:
258
-
259
- ```js
260
- // client-side.ts
261
- console.log("red");
262
- ```
@@ -1,57 +0,0 @@
1
- {% callout %}
2
- **Note** — Bun provides a browser- and Node.js-compatible [console](https://developer.mozilla.org/en-US/docs/Web/API/console) global. This page only documents Bun-native APIs.
3
- {% /callout %}
4
-
5
- ## Object inspection depth
6
-
7
- Bun allows you to configure how deeply nested objects are displayed in `console.log()` output:
8
-
9
- - **CLI flag**: Use `--console-depth <number>` to set the depth for a single run
10
- - **Configuration**: Set `console.depth` in your `bunfig.toml` for persistent configuration
11
- - **Default**: Objects are inspected to a depth of `2` levels
12
-
13
- ```js
14
- const nested = { a: { b: { c: { d: "deep" } } } };
15
- console.log(nested);
16
- // Default (depth 2): { a: { b: [Object] } }
17
- // With depth 4: { a: { b: { c: { d: 'deep' } } } }
18
- ```
19
-
20
- The CLI flag takes precedence over the configuration file setting.
21
-
22
- ## Reading from stdin
23
-
24
- In Bun, the `console` object can be used as an `AsyncIterable` to sequentially read lines from `process.stdin`.
25
-
26
- ```ts
27
- for await (const line of console) {
28
- console.log(line);
29
- }
30
- ```
31
-
32
- This is useful for implementing interactive programs, like the following addition calculator.
33
-
34
- ```ts#adder.ts
35
- console.log(`Let's add some numbers!`);
36
- console.write(`Count: 0\n> `);
37
-
38
- let count = 0;
39
- for await (const line of console) {
40
- count += Number(line);
41
- console.write(`Count: ${count}\n> `);
42
- }
43
- ```
44
-
45
- To run the file:
46
-
47
- ```bash
48
- $ bun adder.ts
49
- Let's add some numbers!
50
- Count: 0
51
- > 5
52
- Count: 5
53
- > 5
54
- Count: 10
55
- > 5
56
- Count: 15
57
- ```