@depup/bun-types 1.3.11-depup.0

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