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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (312) hide show
  1. package/bun.d.ts +4 -4
  2. package/docs/README.md +28 -0
  3. package/globals.d.ts +0 -1
  4. package/overrides.d.ts +45 -15
  5. package/package.json +1 -1
  6. package/test.d.ts +1 -1
  7. package/docs/api/binary-data.md +0 -1038
  8. package/docs/api/cc.md +0 -197
  9. package/docs/api/color.md +0 -262
  10. package/docs/api/console.md +0 -57
  11. package/docs/api/cookie.md +0 -449
  12. package/docs/api/dns.md +0 -110
  13. package/docs/api/fetch.md +0 -463
  14. package/docs/api/ffi.md +0 -557
  15. package/docs/api/file-io.md +0 -366
  16. package/docs/api/file-system-router.md +0 -112
  17. package/docs/api/file.md +0 -19
  18. package/docs/api/glob.md +0 -178
  19. package/docs/api/globals.md +0 -387
  20. package/docs/api/hashing.md +0 -319
  21. package/docs/api/html-rewriter.md +0 -334
  22. package/docs/api/http.md +0 -1408
  23. package/docs/api/import-meta.md +0 -69
  24. package/docs/api/node-api.md +0 -14
  25. package/docs/api/redis.md +0 -597
  26. package/docs/api/s3.md +0 -850
  27. package/docs/api/secrets.md +0 -319
  28. package/docs/api/semver.md +0 -52
  29. package/docs/api/spawn.md +0 -582
  30. package/docs/api/sql.md +0 -1374
  31. package/docs/api/sqlite.md +0 -694
  32. package/docs/api/streams.md +0 -230
  33. package/docs/api/tcp.md +0 -221
  34. package/docs/api/transpiler.md +0 -276
  35. package/docs/api/udp.md +0 -123
  36. package/docs/api/utils.md +0 -891
  37. package/docs/api/websockets.md +0 -573
  38. package/docs/api/workers.md +0 -322
  39. package/docs/api/yaml.md +0 -668
  40. package/docs/benchmarks.md +0 -120
  41. package/docs/bun-flavored-toml.md +0 -42
  42. package/docs/bundler/css.md +0 -1028
  43. package/docs/bundler/css_modules.md +0 -145
  44. package/docs/bundler/executables.md +0 -626
  45. package/docs/bundler/fullstack.md +0 -418
  46. package/docs/bundler/hmr.md +0 -234
  47. package/docs/bundler/html.md +0 -349
  48. package/docs/bundler/index.md +0 -1735
  49. package/docs/bundler/intro.md +0 -75
  50. package/docs/bundler/loaders.md +0 -410
  51. package/docs/bundler/macros.md +0 -329
  52. package/docs/bundler/plugins.md +0 -449
  53. package/docs/bundler/vs-esbuild.md +0 -1127
  54. package/docs/cli/add.md +0 -173
  55. package/docs/cli/bun-completions.md +0 -3
  56. package/docs/cli/bun-create.md +0 -338
  57. package/docs/cli/bun-install.md +0 -349
  58. package/docs/cli/bun-upgrade.md +0 -39
  59. package/docs/cli/bunx.md +0 -89
  60. package/docs/cli/filter.md +0 -90
  61. package/docs/cli/info.md +0 -65
  62. package/docs/cli/init.md +0 -85
  63. package/docs/cli/install.md +0 -344
  64. package/docs/cli/link.md +0 -40
  65. package/docs/cli/outdated.md +0 -90
  66. package/docs/cli/patch-commit.md +0 -11
  67. package/docs/cli/pm.md +0 -285
  68. package/docs/cli/publish.md +0 -120
  69. package/docs/cli/remove.md +0 -7
  70. package/docs/cli/run.md +0 -261
  71. package/docs/cli/test.md +0 -397
  72. package/docs/cli/unlink.md +0 -9
  73. package/docs/cli/update.md +0 -129
  74. package/docs/cli/why.md +0 -67
  75. package/docs/contributing/upgrading-webkit.md +0 -57
  76. package/docs/ecosystem/elysia.md +0 -24
  77. package/docs/ecosystem/express.md +0 -37
  78. package/docs/ecosystem/hono.md +0 -18
  79. package/docs/ecosystem/react.md +0 -65
  80. package/docs/ecosystem/stric.md +0 -38
  81. package/docs/guides/binary/arraybuffer-to-array.md +0 -27
  82. package/docs/guides/binary/arraybuffer-to-blob.md +0 -24
  83. package/docs/guides/binary/arraybuffer-to-buffer.md +0 -25
  84. package/docs/guides/binary/arraybuffer-to-string.md +0 -15
  85. package/docs/guides/binary/arraybuffer-to-typedarray.md +0 -39
  86. package/docs/guides/binary/blob-to-arraybuffer.md +0 -14
  87. package/docs/guides/binary/blob-to-dataview.md +0 -14
  88. package/docs/guides/binary/blob-to-stream.md +0 -14
  89. package/docs/guides/binary/blob-to-string.md +0 -15
  90. package/docs/guides/binary/blob-to-typedarray.md +0 -14
  91. package/docs/guides/binary/buffer-to-arraybuffer.md +0 -14
  92. package/docs/guides/binary/buffer-to-blob.md +0 -14
  93. package/docs/guides/binary/buffer-to-readablestream.md +0 -41
  94. package/docs/guides/binary/buffer-to-string.md +0 -25
  95. package/docs/guides/binary/buffer-to-typedarray.md +0 -14
  96. package/docs/guides/binary/dataview-to-string.md +0 -15
  97. package/docs/guides/binary/typedarray-to-arraybuffer.md +0 -25
  98. package/docs/guides/binary/typedarray-to-blob.md +0 -16
  99. package/docs/guides/binary/typedarray-to-buffer.md +0 -14
  100. package/docs/guides/binary/typedarray-to-dataview.md +0 -14
  101. package/docs/guides/binary/typedarray-to-readablestream.md +0 -41
  102. package/docs/guides/binary/typedarray-to-string.md +0 -16
  103. package/docs/guides/deployment/railway.md +0 -157
  104. package/docs/guides/ecosystem/astro.md +0 -72
  105. package/docs/guides/ecosystem/discordjs.md +0 -77
  106. package/docs/guides/ecosystem/docker.md +0 -140
  107. package/docs/guides/ecosystem/drizzle.md +0 -185
  108. package/docs/guides/ecosystem/edgedb.md +0 -228
  109. package/docs/guides/ecosystem/elysia.md +0 -31
  110. package/docs/guides/ecosystem/express.md +0 -40
  111. package/docs/guides/ecosystem/hono.md +0 -39
  112. package/docs/guides/ecosystem/mongoose.md +0 -87
  113. package/docs/guides/ecosystem/neon-drizzle.md +0 -220
  114. package/docs/guides/ecosystem/neon-serverless-postgres.md +0 -55
  115. package/docs/guides/ecosystem/nextjs.md +0 -49
  116. package/docs/guides/ecosystem/nuxt.md +0 -56
  117. package/docs/guides/ecosystem/pm2.md +0 -57
  118. package/docs/guides/ecosystem/prisma.md +0 -141
  119. package/docs/guides/ecosystem/qwik.md +0 -107
  120. package/docs/guides/ecosystem/react.md +0 -50
  121. package/docs/guides/ecosystem/remix.md +0 -78
  122. package/docs/guides/ecosystem/render.md +0 -79
  123. package/docs/guides/ecosystem/sentry.md +0 -52
  124. package/docs/guides/ecosystem/solidstart.md +0 -58
  125. package/docs/guides/ecosystem/ssr-react.md +0 -51
  126. package/docs/guides/ecosystem/stric.md +0 -55
  127. package/docs/guides/ecosystem/sveltekit.md +0 -125
  128. package/docs/guides/ecosystem/systemd.md +0 -113
  129. package/docs/guides/ecosystem/vite.md +0 -71
  130. package/docs/guides/html-rewriter/extract-links.md +0 -68
  131. package/docs/guides/html-rewriter/extract-social-meta.md +0 -93
  132. package/docs/guides/http/cluster.md +0 -66
  133. package/docs/guides/http/fetch-unix.md +0 -33
  134. package/docs/guides/http/fetch.md +0 -24
  135. package/docs/guides/http/file-uploads.md +0 -94
  136. package/docs/guides/http/hot.md +0 -26
  137. package/docs/guides/http/proxy.md +0 -24
  138. package/docs/guides/http/server.md +0 -46
  139. package/docs/guides/http/simple.md +0 -18
  140. package/docs/guides/http/stream-file.md +0 -48
  141. package/docs/guides/http/stream-iterator.md +0 -47
  142. package/docs/guides/http/stream-node-streams-in-bun.md +0 -20
  143. package/docs/guides/http/tls.md +0 -30
  144. package/docs/guides/install/add-dev.md +0 -26
  145. package/docs/guides/install/add-git.md +0 -36
  146. package/docs/guides/install/add-optional.md +0 -25
  147. package/docs/guides/install/add-peer.md +0 -43
  148. package/docs/guides/install/add-tarball.md +0 -33
  149. package/docs/guides/install/add.md +0 -42
  150. package/docs/guides/install/azure-artifacts.md +0 -73
  151. package/docs/guides/install/cicd.md +0 -41
  152. package/docs/guides/install/custom-registry.md +0 -30
  153. package/docs/guides/install/from-npm-install-to-bun-install.md +0 -214
  154. package/docs/guides/install/git-diff-bun-lockfile.md +0 -44
  155. package/docs/guides/install/jfrog-artifactory.md +0 -28
  156. package/docs/guides/install/npm-alias.md +0 -23
  157. package/docs/guides/install/registry-scope.md +0 -38
  158. package/docs/guides/install/trusted.md +0 -46
  159. package/docs/guides/install/workspaces.md +0 -70
  160. package/docs/guides/install/yarnlock.md +0 -44
  161. package/docs/guides/process/argv.md +0 -58
  162. package/docs/guides/process/ctrl-c.md +0 -16
  163. package/docs/guides/process/ipc.md +0 -66
  164. package/docs/guides/process/nanoseconds.md +0 -13
  165. package/docs/guides/process/os-signals.md +0 -39
  166. package/docs/guides/process/spawn-stderr.md +0 -31
  167. package/docs/guides/process/spawn-stdout.md +0 -26
  168. package/docs/guides/process/spawn.md +0 -41
  169. package/docs/guides/process/stdin.md +0 -54
  170. package/docs/guides/read-file/arraybuffer.md +0 -28
  171. package/docs/guides/read-file/buffer.md +0 -19
  172. package/docs/guides/read-file/exists.md +0 -16
  173. package/docs/guides/read-file/json.md +0 -17
  174. package/docs/guides/read-file/mime.md +0 -20
  175. package/docs/guides/read-file/stream.md +0 -26
  176. package/docs/guides/read-file/string.md +0 -22
  177. package/docs/guides/read-file/uint8array.md +0 -21
  178. package/docs/guides/read-file/watch.md +0 -68
  179. package/docs/guides/runtime/build-time-constants.md +0 -293
  180. package/docs/guides/runtime/cicd.md +0 -43
  181. package/docs/guides/runtime/codesign-macos-executable.md +0 -56
  182. package/docs/guides/runtime/define-constant.md +0 -145
  183. package/docs/guides/runtime/delete-directory.md +0 -37
  184. package/docs/guides/runtime/delete-file.md +0 -19
  185. package/docs/guides/runtime/heap-snapshot.md +0 -26
  186. package/docs/guides/runtime/import-html.md +0 -15
  187. package/docs/guides/runtime/import-json.md +0 -44
  188. package/docs/guides/runtime/import-toml.md +0 -30
  189. package/docs/guides/runtime/import-yaml.md +0 -102
  190. package/docs/guides/runtime/read-env.md +0 -32
  191. package/docs/guides/runtime/set-env.md +0 -47
  192. package/docs/guides/runtime/shell.md +0 -40
  193. package/docs/guides/runtime/timezone.md +0 -35
  194. package/docs/guides/runtime/tsconfig-paths.md +0 -29
  195. package/docs/guides/runtime/typescript.md +0 -49
  196. package/docs/guides/runtime/vscode-debugger.md +0 -47
  197. package/docs/guides/runtime/web-debugger.md +0 -82
  198. package/docs/guides/streams/node-readable-to-arraybuffer.md +0 -11
  199. package/docs/guides/streams/node-readable-to-blob.md +0 -11
  200. package/docs/guides/streams/node-readable-to-json.md +0 -12
  201. package/docs/guides/streams/node-readable-to-string.md +0 -12
  202. package/docs/guides/streams/node-readable-to-uint8array.md +0 -11
  203. package/docs/guides/streams/to-array.md +0 -14
  204. package/docs/guides/streams/to-arraybuffer.md +0 -14
  205. package/docs/guides/streams/to-blob.md +0 -14
  206. package/docs/guides/streams/to-buffer.md +0 -15
  207. package/docs/guides/streams/to-json.md +0 -14
  208. package/docs/guides/streams/to-string.md +0 -14
  209. package/docs/guides/streams/to-typedarray.md +0 -22
  210. package/docs/guides/test/bail.md +0 -22
  211. package/docs/guides/test/coverage-threshold.md +0 -60
  212. package/docs/guides/test/coverage.md +0 -44
  213. package/docs/guides/test/happy-dom.md +0 -68
  214. package/docs/guides/test/migrate-from-jest.md +0 -143
  215. package/docs/guides/test/mock-clock.md +0 -48
  216. package/docs/guides/test/mock-functions.md +0 -68
  217. package/docs/guides/test/rerun-each.md +0 -14
  218. package/docs/guides/test/run-tests.md +0 -111
  219. package/docs/guides/test/skip-tests.md +0 -39
  220. package/docs/guides/test/snapshot.md +0 -95
  221. package/docs/guides/test/spy-on.md +0 -46
  222. package/docs/guides/test/svelte-test.md +0 -120
  223. package/docs/guides/test/testing-library.md +0 -92
  224. package/docs/guides/test/timeout.md +0 -15
  225. package/docs/guides/test/todo-tests.md +0 -67
  226. package/docs/guides/test/update-snapshots.md +0 -46
  227. package/docs/guides/test/watch-mode.md +0 -19
  228. package/docs/guides/util/base64.md +0 -15
  229. package/docs/guides/util/deep-equals.md +0 -39
  230. package/docs/guides/util/deflate.md +0 -18
  231. package/docs/guides/util/detect-bun.md +0 -23
  232. package/docs/guides/util/entrypoint.md +0 -17
  233. package/docs/guides/util/escape-html.md +0 -22
  234. package/docs/guides/util/file-url-to-path.md +0 -14
  235. package/docs/guides/util/gzip.md +0 -18
  236. package/docs/guides/util/hash-a-password.md +0 -54
  237. package/docs/guides/util/import-meta-dir.md +0 -13
  238. package/docs/guides/util/import-meta-file.md +0 -13
  239. package/docs/guides/util/import-meta-path.md +0 -13
  240. package/docs/guides/util/javascript-uuid.md +0 -23
  241. package/docs/guides/util/main.md +0 -32
  242. package/docs/guides/util/path-to-file-url.md +0 -14
  243. package/docs/guides/util/sleep.md +0 -22
  244. package/docs/guides/util/version.md +0 -21
  245. package/docs/guides/util/which-path-to-executable-bin.md +0 -15
  246. package/docs/guides/websocket/compression.md +0 -31
  247. package/docs/guides/websocket/context.md +0 -77
  248. package/docs/guides/websocket/pubsub.md +0 -41
  249. package/docs/guides/websocket/simple.md +0 -33
  250. package/docs/guides/write-file/append.md +0 -52
  251. package/docs/guides/write-file/basic.md +0 -44
  252. package/docs/guides/write-file/blob.md +0 -28
  253. package/docs/guides/write-file/cat.md +0 -17
  254. package/docs/guides/write-file/file-cp.md +0 -16
  255. package/docs/guides/write-file/filesink.md +0 -52
  256. package/docs/guides/write-file/response.md +0 -17
  257. package/docs/guides/write-file/stdout.md +0 -21
  258. package/docs/guides/write-file/stream.md +0 -17
  259. package/docs/guides/write-file/unlink.md +0 -16
  260. package/docs/index.md +0 -77
  261. package/docs/install/audit.md +0 -57
  262. package/docs/install/cache.md +0 -59
  263. package/docs/install/catalogs.md +0 -298
  264. package/docs/install/index.md +0 -248
  265. package/docs/install/isolated.md +0 -197
  266. package/docs/install/lifecycle.md +0 -46
  267. package/docs/install/lockfile.md +0 -58
  268. package/docs/install/npmrc.md +0 -105
  269. package/docs/install/overrides.md +0 -73
  270. package/docs/install/patch.md +0 -59
  271. package/docs/install/registries.md +0 -30
  272. package/docs/install/security-scanner-api.md +0 -81
  273. package/docs/install/workspaces.md +0 -114
  274. package/docs/installation.md +0 -327
  275. package/docs/project/asan.md +0 -124
  276. package/docs/project/benchmarking.md +0 -203
  277. package/docs/project/bindgen.md +0 -225
  278. package/docs/project/building-windows.md +0 -162
  279. package/docs/project/contributing.md +0 -347
  280. package/docs/project/internals/build-process-for-ci.md +0 -75
  281. package/docs/project/licensing.md +0 -73
  282. package/docs/project/roadmap.md +0 -87
  283. package/docs/quickstart.md +0 -157
  284. package/docs/runtime/autoimport.md +0 -94
  285. package/docs/runtime/bun-apis.md +0 -207
  286. package/docs/runtime/bunfig.md +0 -772
  287. package/docs/runtime/debugger.md +0 -325
  288. package/docs/runtime/env.md +0 -253
  289. package/docs/runtime/hot.md +0 -145
  290. package/docs/runtime/index.md +0 -312
  291. package/docs/runtime/jsx.md +0 -385
  292. package/docs/runtime/loaders.md +0 -130
  293. package/docs/runtime/modules.md +0 -320
  294. package/docs/runtime/nodejs-apis.md +0 -463
  295. package/docs/runtime/plugins.md +0 -561
  296. package/docs/runtime/shell.md +0 -605
  297. package/docs/runtime/typescript.md +0 -139
  298. package/docs/runtime/web-apis.md +0 -128
  299. package/docs/test/configuration.md +0 -154
  300. package/docs/test/coverage.md +0 -142
  301. package/docs/test/discovery.md +0 -85
  302. package/docs/test/dom.md +0 -75
  303. package/docs/test/examples/concurrent-test-glob.md +0 -132
  304. package/docs/test/hot.md +0 -15
  305. package/docs/test/lifecycle.md +0 -81
  306. package/docs/test/mocks.md +0 -313
  307. package/docs/test/reporters.md +0 -117
  308. package/docs/test/runtime-behavior.md +0 -95
  309. package/docs/test/snapshots.md +0 -68
  310. package/docs/test/time.md +0 -126
  311. package/docs/test/writing.md +0 -825
  312. package/docs/typescript.md +0 -53
@@ -1,319 +0,0 @@
1
- Store and retrieve sensitive credentials securely using the operating system's native credential storage APIs.
2
-
3
- **Experimental:** This API is new and experimental. It may change in the future.
4
-
5
- ```typescript
6
- import { secrets } from "bun";
7
-
8
- const githubToken = await secrets.get({
9
- service: "my-cli-tool",
10
- name: "github-token",
11
- });
12
-
13
- if (!githubToken) {
14
- const response = await fetch("https://api.github.com/name", {
15
- headers: { "Authorization": `token ${githubToken}` },
16
- });
17
- console.log("Please enter your GitHub token");
18
- } else {
19
- await secrets.set({
20
- service: "my-cli-tool",
21
- name: "github-token",
22
- value: prompt("Please enter your GitHub token"),
23
- });
24
- console.log("GitHub token stored");
25
- }
26
- ```
27
-
28
- ## Overview
29
-
30
- `Bun.secrets` provides a cross-platform API for managing sensitive credentials that CLI tools and development applications typically store in plaintext files like `~/.npmrc`, `~/.aws/credentials`, or `.env` files. It uses:
31
-
32
- - **macOS**: Keychain Services
33
- - **Linux**: libsecret (GNOME Keyring, KWallet, etc.)
34
- - **Windows**: Windows Credential Manager
35
-
36
- All operations are asynchronous and non-blocking, running on Bun's threadpool.
37
-
38
- Note: in the future, we may add an additional `provider` option to make this better for production deployment secrets, but today this API is mostly useful for local development tools.
39
-
40
- ## API
41
-
42
- ### `Bun.secrets.get(options)`
43
-
44
- Retrieve a stored credential.
45
-
46
- ```typescript
47
- import { secrets } from "bun";
48
-
49
- const password = await Bun.secrets.get({
50
- service: "my-app",
51
- name: "alice@example.com",
52
- });
53
- // Returns: string | null
54
-
55
- // Or if you prefer without an object
56
- const password = await Bun.secrets.get("my-app", "alice@example.com");
57
- ```
58
-
59
- **Parameters:**
60
-
61
- - `options.service` (string, required) - The service or application name
62
- - `options.name` (string, required) - The username or account identifier
63
-
64
- **Returns:**
65
-
66
- - `Promise<string | null>` - The stored password, or `null` if not found
67
-
68
- ### `Bun.secrets.set(options, value)`
69
-
70
- Store or update a credential.
71
-
72
- ```typescript
73
- import { secrets } from "bun";
74
-
75
- await secrets.set({
76
- service: "my-app",
77
- name: "alice@example.com",
78
- value: "super-secret-password",
79
- });
80
- ```
81
-
82
- **Parameters:**
83
-
84
- - `options.service` (string, required) - The service or application name
85
- - `options.name` (string, required) - The username or account identifier
86
- - `value` (string, required) - The password or secret to store
87
-
88
- **Notes:**
89
-
90
- - If a credential already exists for the given service/name combination, it will be replaced
91
- - The stored value is encrypted by the operating system
92
-
93
- ### `Bun.secrets.delete(options)`
94
-
95
- Delete a stored credential.
96
-
97
- ```typescript
98
- const deleted = await Bun.secrets.delete({
99
- service: "my-app",
100
- name: "alice@example.com",
101
- value: "super-secret-password",
102
- });
103
- // Returns: boolean
104
- ```
105
-
106
- **Parameters:**
107
-
108
- - `options.service` (string, required) - The service or application name
109
- - `options.name` (string, required) - The username or account identifier
110
-
111
- **Returns:**
112
-
113
- - `Promise<boolean>` - `true` if a credential was deleted, `false` if not found
114
-
115
- ## Examples
116
-
117
- ### Storing CLI Tool Credentials
118
-
119
- ```javascript
120
- // Store GitHub CLI token (instead of ~/.config/gh/hosts.yml)
121
- await Bun.secrets.set({
122
- service: "my-app.com",
123
- name: "github-token",
124
- value: "ghp_xxxxxxxxxxxxxxxxxxxx",
125
- });
126
-
127
- // Or if you prefer without an object
128
- await Bun.secrets.set("my-app.com", "github-token", "ghp_xxxxxxxxxxxxxxxxxxxx");
129
-
130
- // Store npm registry token (instead of ~/.npmrc)
131
- await Bun.secrets.set({
132
- service: "npm-registry",
133
- name: "https://registry.npmjs.org",
134
- value: "npm_xxxxxxxxxxxxxxxxxxxx",
135
- });
136
-
137
- // Retrieve for API calls
138
- const token = await Bun.secrets.get({
139
- service: "gh-cli",
140
- name: "github.com",
141
- });
142
-
143
- if (token) {
144
- const response = await fetch("https://api.github.com/name", {
145
- headers: {
146
- "Authorization": `token ${token}`,
147
- },
148
- });
149
- }
150
- ```
151
-
152
- ### Migrating from Plaintext Config Files
153
-
154
- ```javascript
155
- // Instead of storing in ~/.aws/credentials
156
- await Bun.secrets.set({
157
- service: "aws-cli",
158
- name: "AWS_SECRET_ACCESS_KEY",
159
- value: process.env.AWS_SECRET_ACCESS_KEY,
160
- });
161
-
162
- // Instead of .env files with sensitive data
163
- await Bun.secrets.set({
164
- service: "my-app",
165
- name: "api-key",
166
- value: "sk_live_xxxxxxxxxxxxxxxxxxxx",
167
- });
168
-
169
- // Load at runtime
170
- const apiKey =
171
- (await Bun.secrets.get({
172
- service: "my-app",
173
- name: "api-key",
174
- })) || process.env.API_KEY; // Fallback for CI/production
175
- ```
176
-
177
- ### Error Handling
178
-
179
- ```javascript
180
- try {
181
- await Bun.secrets.set({
182
- service: "my-app",
183
- name: "alice",
184
- value: "password123",
185
- });
186
- } catch (error) {
187
- console.error("Failed to store credential:", error.message);
188
- }
189
-
190
- // Check if a credential exists
191
- const password = await Bun.secrets.get({
192
- service: "my-app",
193
- name: "alice",
194
- });
195
-
196
- if (password === null) {
197
- console.log("No credential found");
198
- }
199
- ```
200
-
201
- ### Updating Credentials
202
-
203
- ```javascript
204
- // Initial password
205
- await Bun.secrets.set({
206
- service: "email-server",
207
- name: "admin@example.com",
208
- value: "old-password",
209
- });
210
-
211
- // Update to new password
212
- await Bun.secrets.set({
213
- service: "email-server",
214
- name: "admin@example.com",
215
- value: "new-password",
216
- });
217
-
218
- // The old password is replaced
219
- ```
220
-
221
- ## Platform Behavior
222
-
223
- ### macOS (Keychain)
224
-
225
- - Credentials are stored in the name's login keychain
226
- - The keychain may prompt for access permission on first use
227
- - Credentials persist across system restarts
228
- - Accessible by the name who stored them
229
-
230
- ### Linux (libsecret)
231
-
232
- - Requires a secret service daemon (GNOME Keyring, KWallet, etc.)
233
- - Credentials are stored in the default collection
234
- - May prompt for unlock if the keyring is locked
235
- - The secret service must be running
236
-
237
- ### Windows (Credential Manager)
238
-
239
- - Credentials are stored in Windows Credential Manager
240
- - Visible in Control Panel → Credential Manager → Windows Credentials
241
- - Persist with `CRED_PERSIST_ENTERPRISE` flag so it's scoped per user
242
- - Encrypted using Windows Data Protection API
243
-
244
- ## Security Considerations
245
-
246
- 1. **Encryption**: Credentials are encrypted by the operating system's credential manager
247
- 2. **Access Control**: Only the name who stored the credential can retrieve it
248
- 3. **No Plain Text**: Passwords are never stored in plain text
249
- 4. **Memory Safety**: Bun zeros out password memory after use
250
- 5. **Process Isolation**: Credentials are isolated per name account
251
-
252
- ## Limitations
253
-
254
- - Maximum password length varies by platform (typically 2048-4096 bytes)
255
- - Service and name names should be reasonable lengths (< 256 characters)
256
- - Some special characters may need escaping depending on the platform
257
- - Requires appropriate system services:
258
- - Linux: Secret service daemon must be running
259
- - macOS: Keychain Access must be available
260
- - Windows: Credential Manager service must be enabled
261
-
262
- ## Comparison with Environment Variables
263
-
264
- Unlike environment variables, `Bun.secrets`:
265
-
266
- - ✅ Encrypts credentials at rest (thanks to the operating system)
267
- - ✅ Avoids exposing secrets in process memory dumps (memory is zeroed after its no longer needed)
268
- - ✅ Survives application restarts
269
- - ✅ Can be updated without restarting the application
270
- - ✅ Provides name-level access control
271
- - ❌ Requires OS credential service
272
- - ❌ Not very useful for deployment secrets (use environment variables in production)
273
-
274
- ## Best Practices
275
-
276
- 1. **Use descriptive service names**: Match the tool or application name
277
- If you're building a CLI for external use, you probably should use a UTI (Uniform Type Identifier) for the service name.
278
-
279
- ```javascript
280
- // Good - matches the actual tool
281
- { service: "com.docker.hub", name: "username" }
282
- { service: "com.vercel.cli", name: "team-name" }
283
-
284
- // Avoid - too generic
285
- { service: "api", name: "key" }
286
- ```
287
-
288
- 2. **Credentials-only**: Don't store application configuration in this API
289
- This API is slow, you probably still need to use a config file for some things.
290
-
291
- 3. **Use for local development tools**:
292
- - ✅ CLI tools (gh, npm, docker, kubectl)
293
- - ✅ Local development servers
294
- - ✅ Personal API keys for testing
295
- - ❌ Production servers (use proper secret management)
296
-
297
- ## TypeScript
298
-
299
- ```typescript
300
- namespace Bun {
301
- interface SecretsOptions {
302
- service: string;
303
- name: string;
304
- }
305
-
306
- interface Secrets {
307
- get(options: SecretsOptions): Promise<string | null>;
308
- set(options: SecretsOptions, value: string): Promise<void>;
309
- delete(options: SecretsOptions): Promise<boolean>;
310
- }
311
-
312
- const secrets: Secrets;
313
- }
314
- ```
315
-
316
- ## See Also
317
-
318
- - [Environment Variables](./env.md) - For deployment configuration
319
- - [Bun.password](./password.md) - For password hashing and verification
@@ -1,52 +0,0 @@
1
- Bun implements a semantic versioning API which can be used to compare versions and determine if a version is compatible with another range of versions. The versions and ranges are designed to be compatible with `node-semver`, which is used by npm clients.
2
-
3
- It's about 20x faster than `node-semver`.
4
-
5
- ![Benchmark](https://github.com/oven-sh/bun/assets/709451/94746adc-8aba-4baf-a143-3c355f8e0f78)
6
-
7
- Currently, this API provides two functions :
8
-
9
- #### `Bun.semver.satisfies(version: string, range: string): boolean`
10
-
11
- Returns `true` if `version` satisfies `range`, otherwise `false`.
12
-
13
- Example:
14
-
15
- ```typescript
16
- import { semver } from "bun";
17
-
18
- semver.satisfies("1.0.0", "^1.0.0"); // true
19
- semver.satisfies("1.0.0", "^1.0.1"); // false
20
- semver.satisfies("1.0.0", "~1.0.0"); // true
21
- semver.satisfies("1.0.0", "~1.0.1"); // false
22
- semver.satisfies("1.0.0", "1.0.0"); // true
23
- semver.satisfies("1.0.0", "1.0.1"); // false
24
- semver.satisfies("1.0.1", "1.0.0"); // false
25
- semver.satisfies("1.0.0", "1.0.x"); // true
26
- semver.satisfies("1.0.0", "1.x.x"); // true
27
- semver.satisfies("1.0.0", "x.x.x"); // true
28
- semver.satisfies("1.0.0", "1.0.0 - 2.0.0"); // true
29
- semver.satisfies("1.0.0", "1.0.0 - 1.0.1"); // true
30
- ```
31
-
32
- If `range` is invalid, it returns false. If `version` is invalid, it returns false.
33
-
34
- #### `Bun.semver.order(versionA: string, versionB: string): 0 | 1 | -1`
35
-
36
- Returns `0` if `versionA` and `versionB` are equal, `1` if `versionA` is greater than `versionB`, and `-1` if `versionA` is less than `versionB`.
37
-
38
- Example:
39
-
40
- ```typescript
41
- import { semver } from "bun";
42
-
43
- semver.order("1.0.0", "1.0.0"); // 0
44
- semver.order("1.0.0", "1.0.1"); // -1
45
- semver.order("1.0.1", "1.0.0"); // 1
46
-
47
- const unsorted = ["1.0.0", "1.0.1", "1.0.0-alpha", "1.0.0-beta", "1.0.0-rc"];
48
- unsorted.sort(semver.order); // ["1.0.0-alpha", "1.0.0-beta", "1.0.0-rc", "1.0.0", "1.0.1"]
49
- console.log(unsorted);
50
- ```
51
-
52
- If you need other semver functions, feel free to open an issue or pull request.