bun-types 1.3.2-canary.20251105T140650 → 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.
- package/docs/README.md +28 -0
- package/package.json +1 -1
- package/docs/api/binary-data.md +0 -1038
- package/docs/api/cc.md +0 -197
- package/docs/api/color.md +0 -262
- package/docs/api/console.md +0 -57
- package/docs/api/cookie.md +0 -449
- package/docs/api/dns.md +0 -110
- package/docs/api/fetch.md +0 -463
- package/docs/api/ffi.md +0 -557
- package/docs/api/file-io.md +0 -366
- package/docs/api/file-system-router.md +0 -112
- package/docs/api/file.md +0 -19
- package/docs/api/glob.md +0 -178
- package/docs/api/globals.md +0 -387
- package/docs/api/hashing.md +0 -319
- package/docs/api/html-rewriter.md +0 -334
- package/docs/api/http.md +0 -1408
- package/docs/api/import-meta.md +0 -69
- package/docs/api/node-api.md +0 -14
- package/docs/api/redis.md +0 -597
- package/docs/api/s3.md +0 -850
- package/docs/api/secrets.md +0 -319
- package/docs/api/semver.md +0 -52
- package/docs/api/spawn.md +0 -582
- package/docs/api/sql.md +0 -1374
- package/docs/api/sqlite.md +0 -694
- package/docs/api/streams.md +0 -230
- package/docs/api/tcp.md +0 -221
- package/docs/api/transpiler.md +0 -276
- package/docs/api/udp.md +0 -123
- package/docs/api/utils.md +0 -891
- package/docs/api/websockets.md +0 -573
- package/docs/api/workers.md +0 -322
- package/docs/api/yaml.md +0 -668
- package/docs/benchmarks.md +0 -120
- package/docs/bun-flavored-toml.md +0 -42
- package/docs/bundler/css.md +0 -1028
- package/docs/bundler/css_modules.md +0 -145
- package/docs/bundler/executables.md +0 -626
- package/docs/bundler/fullstack.md +0 -418
- package/docs/bundler/hmr.md +0 -234
- package/docs/bundler/html.md +0 -349
- package/docs/bundler/index.md +0 -1735
- package/docs/bundler/intro.md +0 -75
- package/docs/bundler/loaders.md +0 -410
- package/docs/bundler/macros.md +0 -329
- package/docs/bundler/plugins.md +0 -449
- package/docs/bundler/vs-esbuild.md +0 -1127
- package/docs/cli/add.md +0 -173
- package/docs/cli/bun-completions.md +0 -3
- package/docs/cli/bun-create.md +0 -338
- package/docs/cli/bun-install.md +0 -349
- package/docs/cli/bun-upgrade.md +0 -39
- package/docs/cli/bunx.md +0 -89
- package/docs/cli/filter.md +0 -90
- package/docs/cli/info.md +0 -65
- package/docs/cli/init.md +0 -85
- package/docs/cli/install.md +0 -344
- package/docs/cli/link.md +0 -40
- package/docs/cli/outdated.md +0 -90
- package/docs/cli/patch-commit.md +0 -11
- package/docs/cli/pm.md +0 -285
- package/docs/cli/publish.md +0 -120
- package/docs/cli/remove.md +0 -7
- package/docs/cli/run.md +0 -261
- package/docs/cli/test.md +0 -397
- package/docs/cli/unlink.md +0 -9
- package/docs/cli/update.md +0 -129
- package/docs/cli/why.md +0 -67
- package/docs/contributing/upgrading-webkit.md +0 -57
- package/docs/ecosystem/elysia.md +0 -24
- package/docs/ecosystem/express.md +0 -37
- package/docs/ecosystem/hono.md +0 -18
- package/docs/ecosystem/react.md +0 -65
- package/docs/ecosystem/stric.md +0 -38
- package/docs/guides/binary/arraybuffer-to-array.md +0 -27
- package/docs/guides/binary/arraybuffer-to-blob.md +0 -24
- package/docs/guides/binary/arraybuffer-to-buffer.md +0 -25
- package/docs/guides/binary/arraybuffer-to-string.md +0 -15
- package/docs/guides/binary/arraybuffer-to-typedarray.md +0 -39
- package/docs/guides/binary/blob-to-arraybuffer.md +0 -14
- package/docs/guides/binary/blob-to-dataview.md +0 -14
- package/docs/guides/binary/blob-to-stream.md +0 -14
- package/docs/guides/binary/blob-to-string.md +0 -15
- package/docs/guides/binary/blob-to-typedarray.md +0 -14
- package/docs/guides/binary/buffer-to-arraybuffer.md +0 -14
- package/docs/guides/binary/buffer-to-blob.md +0 -14
- package/docs/guides/binary/buffer-to-readablestream.md +0 -41
- package/docs/guides/binary/buffer-to-string.md +0 -25
- package/docs/guides/binary/buffer-to-typedarray.md +0 -14
- package/docs/guides/binary/dataview-to-string.md +0 -15
- package/docs/guides/binary/typedarray-to-arraybuffer.md +0 -25
- package/docs/guides/binary/typedarray-to-blob.md +0 -16
- package/docs/guides/binary/typedarray-to-buffer.md +0 -14
- package/docs/guides/binary/typedarray-to-dataview.md +0 -14
- package/docs/guides/binary/typedarray-to-readablestream.md +0 -41
- package/docs/guides/binary/typedarray-to-string.md +0 -16
- package/docs/guides/deployment/railway.md +0 -157
- package/docs/guides/ecosystem/astro.md +0 -72
- package/docs/guides/ecosystem/discordjs.md +0 -77
- package/docs/guides/ecosystem/docker.md +0 -140
- package/docs/guides/ecosystem/drizzle.md +0 -185
- package/docs/guides/ecosystem/edgedb.md +0 -228
- package/docs/guides/ecosystem/elysia.md +0 -31
- package/docs/guides/ecosystem/express.md +0 -40
- package/docs/guides/ecosystem/hono.md +0 -39
- package/docs/guides/ecosystem/mongoose.md +0 -87
- package/docs/guides/ecosystem/neon-drizzle.md +0 -220
- package/docs/guides/ecosystem/neon-serverless-postgres.md +0 -55
- package/docs/guides/ecosystem/nextjs.md +0 -49
- package/docs/guides/ecosystem/nuxt.md +0 -56
- package/docs/guides/ecosystem/pm2.md +0 -57
- package/docs/guides/ecosystem/prisma.md +0 -141
- package/docs/guides/ecosystem/qwik.md +0 -107
- package/docs/guides/ecosystem/react.md +0 -50
- package/docs/guides/ecosystem/remix.md +0 -78
- package/docs/guides/ecosystem/render.md +0 -79
- package/docs/guides/ecosystem/sentry.md +0 -52
- package/docs/guides/ecosystem/solidstart.md +0 -58
- package/docs/guides/ecosystem/ssr-react.md +0 -51
- package/docs/guides/ecosystem/stric.md +0 -55
- package/docs/guides/ecosystem/sveltekit.md +0 -125
- package/docs/guides/ecosystem/systemd.md +0 -113
- package/docs/guides/ecosystem/vite.md +0 -71
- package/docs/guides/html-rewriter/extract-links.md +0 -68
- package/docs/guides/html-rewriter/extract-social-meta.md +0 -93
- package/docs/guides/http/cluster.md +0 -66
- package/docs/guides/http/fetch-unix.md +0 -33
- package/docs/guides/http/fetch.md +0 -24
- package/docs/guides/http/file-uploads.md +0 -94
- package/docs/guides/http/hot.md +0 -26
- package/docs/guides/http/proxy.md +0 -24
- package/docs/guides/http/server.md +0 -46
- package/docs/guides/http/simple.md +0 -18
- package/docs/guides/http/stream-file.md +0 -48
- package/docs/guides/http/stream-iterator.md +0 -47
- package/docs/guides/http/stream-node-streams-in-bun.md +0 -20
- package/docs/guides/http/tls.md +0 -30
- package/docs/guides/install/add-dev.md +0 -26
- package/docs/guides/install/add-git.md +0 -36
- package/docs/guides/install/add-optional.md +0 -25
- package/docs/guides/install/add-peer.md +0 -43
- package/docs/guides/install/add-tarball.md +0 -33
- package/docs/guides/install/add.md +0 -42
- package/docs/guides/install/azure-artifacts.md +0 -73
- package/docs/guides/install/cicd.md +0 -41
- package/docs/guides/install/custom-registry.md +0 -30
- package/docs/guides/install/from-npm-install-to-bun-install.md +0 -214
- package/docs/guides/install/git-diff-bun-lockfile.md +0 -44
- package/docs/guides/install/jfrog-artifactory.md +0 -28
- package/docs/guides/install/npm-alias.md +0 -23
- package/docs/guides/install/registry-scope.md +0 -38
- package/docs/guides/install/trusted.md +0 -46
- package/docs/guides/install/workspaces.md +0 -70
- package/docs/guides/install/yarnlock.md +0 -44
- package/docs/guides/process/argv.md +0 -58
- package/docs/guides/process/ctrl-c.md +0 -16
- package/docs/guides/process/ipc.md +0 -66
- package/docs/guides/process/nanoseconds.md +0 -13
- package/docs/guides/process/os-signals.md +0 -39
- package/docs/guides/process/spawn-stderr.md +0 -31
- package/docs/guides/process/spawn-stdout.md +0 -26
- package/docs/guides/process/spawn.md +0 -41
- package/docs/guides/process/stdin.md +0 -54
- package/docs/guides/read-file/arraybuffer.md +0 -28
- package/docs/guides/read-file/buffer.md +0 -19
- package/docs/guides/read-file/exists.md +0 -16
- package/docs/guides/read-file/json.md +0 -17
- package/docs/guides/read-file/mime.md +0 -20
- package/docs/guides/read-file/stream.md +0 -26
- package/docs/guides/read-file/string.md +0 -22
- package/docs/guides/read-file/uint8array.md +0 -21
- package/docs/guides/read-file/watch.md +0 -68
- package/docs/guides/runtime/build-time-constants.md +0 -293
- package/docs/guides/runtime/cicd.md +0 -43
- package/docs/guides/runtime/codesign-macos-executable.md +0 -56
- package/docs/guides/runtime/define-constant.md +0 -145
- package/docs/guides/runtime/delete-directory.md +0 -37
- package/docs/guides/runtime/delete-file.md +0 -19
- package/docs/guides/runtime/heap-snapshot.md +0 -26
- package/docs/guides/runtime/import-html.md +0 -15
- package/docs/guides/runtime/import-json.md +0 -44
- package/docs/guides/runtime/import-toml.md +0 -30
- package/docs/guides/runtime/import-yaml.md +0 -102
- package/docs/guides/runtime/read-env.md +0 -32
- package/docs/guides/runtime/set-env.md +0 -47
- package/docs/guides/runtime/shell.md +0 -40
- package/docs/guides/runtime/timezone.md +0 -35
- package/docs/guides/runtime/tsconfig-paths.md +0 -29
- package/docs/guides/runtime/typescript.md +0 -49
- package/docs/guides/runtime/vscode-debugger.md +0 -47
- package/docs/guides/runtime/web-debugger.md +0 -82
- package/docs/guides/streams/node-readable-to-arraybuffer.md +0 -11
- package/docs/guides/streams/node-readable-to-blob.md +0 -11
- package/docs/guides/streams/node-readable-to-json.md +0 -12
- package/docs/guides/streams/node-readable-to-string.md +0 -12
- package/docs/guides/streams/node-readable-to-uint8array.md +0 -11
- package/docs/guides/streams/to-array.md +0 -14
- package/docs/guides/streams/to-arraybuffer.md +0 -14
- package/docs/guides/streams/to-blob.md +0 -14
- package/docs/guides/streams/to-buffer.md +0 -15
- package/docs/guides/streams/to-json.md +0 -14
- package/docs/guides/streams/to-string.md +0 -14
- package/docs/guides/streams/to-typedarray.md +0 -22
- package/docs/guides/test/bail.md +0 -22
- package/docs/guides/test/coverage-threshold.md +0 -60
- package/docs/guides/test/coverage.md +0 -44
- package/docs/guides/test/happy-dom.md +0 -68
- package/docs/guides/test/migrate-from-jest.md +0 -143
- package/docs/guides/test/mock-clock.md +0 -48
- package/docs/guides/test/mock-functions.md +0 -68
- package/docs/guides/test/rerun-each.md +0 -14
- package/docs/guides/test/run-tests.md +0 -111
- package/docs/guides/test/skip-tests.md +0 -39
- package/docs/guides/test/snapshot.md +0 -95
- package/docs/guides/test/spy-on.md +0 -46
- package/docs/guides/test/svelte-test.md +0 -120
- package/docs/guides/test/testing-library.md +0 -92
- package/docs/guides/test/timeout.md +0 -15
- package/docs/guides/test/todo-tests.md +0 -67
- package/docs/guides/test/update-snapshots.md +0 -46
- package/docs/guides/test/watch-mode.md +0 -19
- package/docs/guides/util/base64.md +0 -15
- package/docs/guides/util/deep-equals.md +0 -39
- package/docs/guides/util/deflate.md +0 -18
- package/docs/guides/util/detect-bun.md +0 -23
- package/docs/guides/util/entrypoint.md +0 -17
- package/docs/guides/util/escape-html.md +0 -22
- package/docs/guides/util/file-url-to-path.md +0 -14
- package/docs/guides/util/gzip.md +0 -18
- package/docs/guides/util/hash-a-password.md +0 -54
- package/docs/guides/util/import-meta-dir.md +0 -13
- package/docs/guides/util/import-meta-file.md +0 -13
- package/docs/guides/util/import-meta-path.md +0 -13
- package/docs/guides/util/javascript-uuid.md +0 -23
- package/docs/guides/util/main.md +0 -32
- package/docs/guides/util/path-to-file-url.md +0 -14
- package/docs/guides/util/sleep.md +0 -22
- package/docs/guides/util/version.md +0 -21
- package/docs/guides/util/which-path-to-executable-bin.md +0 -15
- package/docs/guides/websocket/compression.md +0 -31
- package/docs/guides/websocket/context.md +0 -77
- package/docs/guides/websocket/pubsub.md +0 -41
- package/docs/guides/websocket/simple.md +0 -33
- package/docs/guides/write-file/append.md +0 -52
- package/docs/guides/write-file/basic.md +0 -44
- package/docs/guides/write-file/blob.md +0 -28
- package/docs/guides/write-file/cat.md +0 -17
- package/docs/guides/write-file/file-cp.md +0 -16
- package/docs/guides/write-file/filesink.md +0 -52
- package/docs/guides/write-file/response.md +0 -17
- package/docs/guides/write-file/stdout.md +0 -21
- package/docs/guides/write-file/stream.md +0 -17
- package/docs/guides/write-file/unlink.md +0 -16
- package/docs/index.md +0 -77
- package/docs/install/audit.md +0 -57
- package/docs/install/cache.md +0 -59
- package/docs/install/catalogs.md +0 -298
- package/docs/install/index.md +0 -248
- package/docs/install/isolated.md +0 -197
- package/docs/install/lifecycle.md +0 -46
- package/docs/install/lockfile.md +0 -58
- package/docs/install/npmrc.md +0 -105
- package/docs/install/overrides.md +0 -73
- package/docs/install/patch.md +0 -59
- package/docs/install/registries.md +0 -30
- package/docs/install/security-scanner-api.md +0 -81
- package/docs/install/workspaces.md +0 -114
- package/docs/installation.md +0 -327
- package/docs/project/asan.md +0 -124
- package/docs/project/benchmarking.md +0 -203
- package/docs/project/bindgen.md +0 -225
- package/docs/project/building-windows.md +0 -162
- package/docs/project/contributing.md +0 -347
- package/docs/project/internals/build-process-for-ci.md +0 -75
- package/docs/project/licensing.md +0 -73
- package/docs/project/roadmap.md +0 -87
- package/docs/quickstart.md +0 -157
- package/docs/runtime/autoimport.md +0 -94
- package/docs/runtime/bun-apis.md +0 -207
- package/docs/runtime/bunfig.md +0 -772
- package/docs/runtime/debugger.md +0 -325
- package/docs/runtime/env.md +0 -253
- package/docs/runtime/hot.md +0 -145
- package/docs/runtime/index.md +0 -312
- package/docs/runtime/jsx.md +0 -385
- package/docs/runtime/loaders.md +0 -130
- package/docs/runtime/modules.md +0 -320
- package/docs/runtime/nodejs-apis.md +0 -463
- package/docs/runtime/plugins.md +0 -561
- package/docs/runtime/shell.md +0 -605
- package/docs/runtime/typescript.md +0 -139
- package/docs/runtime/web-apis.md +0 -128
- package/docs/test/configuration.md +0 -154
- package/docs/test/coverage.md +0 -142
- package/docs/test/discovery.md +0 -85
- package/docs/test/dom.md +0 -75
- package/docs/test/examples/concurrent-test-glob.md +0 -132
- package/docs/test/hot.md +0 -15
- package/docs/test/lifecycle.md +0 -81
- package/docs/test/mocks.md +0 -313
- package/docs/test/reporters.md +0 -117
- package/docs/test/runtime-behavior.md +0 -95
- package/docs/test/snapshots.md +0 -68
- package/docs/test/time.md +0 -126
- package/docs/test/writing.md +0 -825
- package/docs/typescript.md +0 -53
package/docs/api/globals.md
DELETED
|
@@ -1,387 +0,0 @@
|
|
|
1
|
-
Bun implements the following globals.
|
|
2
|
-
|
|
3
|
-
{% table %}
|
|
4
|
-
|
|
5
|
-
- Global
|
|
6
|
-
- Source
|
|
7
|
-
- Notes
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
- [`AbortController`](https://developer.mozilla.org/en-US/docs/Web/API/AbortController)
|
|
12
|
-
- Web
|
|
13
|
-
-
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
- [`AbortSignal`](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal)
|
|
18
|
-
- Web
|
|
19
|
-
-
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
- [`alert`](https://developer.mozilla.org/en-US/docs/Web/API/Window/alert)
|
|
24
|
-
- Web
|
|
25
|
-
- Intended for command-line tools
|
|
26
|
-
|
|
27
|
-
---
|
|
28
|
-
|
|
29
|
-
- [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob)
|
|
30
|
-
- Web
|
|
31
|
-
-
|
|
32
|
-
|
|
33
|
-
---
|
|
34
|
-
|
|
35
|
-
- [`Buffer`](https://nodejs.org/api/buffer.html#class-buffer)
|
|
36
|
-
- Node.js
|
|
37
|
-
- See [Node.js > `Buffer`](https://bun.com/docs/runtime/nodejs-apis#node-buffer)
|
|
38
|
-
|
|
39
|
-
---
|
|
40
|
-
|
|
41
|
-
- `Bun`
|
|
42
|
-
- Bun
|
|
43
|
-
- Subject to change as additional APIs are added
|
|
44
|
-
|
|
45
|
-
---
|
|
46
|
-
|
|
47
|
-
- [`ByteLengthQueuingStrategy`](https://developer.mozilla.org/en-US/docs/Web/API/ByteLengthQueuingStrategy)
|
|
48
|
-
- Web
|
|
49
|
-
-
|
|
50
|
-
|
|
51
|
-
---
|
|
52
|
-
|
|
53
|
-
- [`confirm`](https://developer.mozilla.org/en-US/docs/Web/API/Window/confirm)
|
|
54
|
-
- Web
|
|
55
|
-
- Intended for command-line tools
|
|
56
|
-
|
|
57
|
-
---
|
|
58
|
-
|
|
59
|
-
- [`__dirname`](https://nodejs.org/api/globals.html#__dirname)
|
|
60
|
-
- Node.js
|
|
61
|
-
-
|
|
62
|
-
|
|
63
|
-
---
|
|
64
|
-
|
|
65
|
-
- [`__filename`](https://nodejs.org/api/globals.html#__filename)
|
|
66
|
-
- Node.js
|
|
67
|
-
-
|
|
68
|
-
|
|
69
|
-
---
|
|
70
|
-
|
|
71
|
-
- [`atob()`](https://developer.mozilla.org/en-US/docs/Web/API/atob)
|
|
72
|
-
- Web
|
|
73
|
-
-
|
|
74
|
-
|
|
75
|
-
---
|
|
76
|
-
|
|
77
|
-
- [`btoa()`](https://developer.mozilla.org/en-US/docs/Web/API/btoa)
|
|
78
|
-
- Web
|
|
79
|
-
-
|
|
80
|
-
|
|
81
|
-
---
|
|
82
|
-
|
|
83
|
-
- `BuildMessage`
|
|
84
|
-
- Bun
|
|
85
|
-
-
|
|
86
|
-
|
|
87
|
-
---
|
|
88
|
-
|
|
89
|
-
- [`clearImmediate()`](https://developer.mozilla.org/en-US/docs/Web/API/Window/clearImmediate)
|
|
90
|
-
- Web
|
|
91
|
-
-
|
|
92
|
-
|
|
93
|
-
---
|
|
94
|
-
|
|
95
|
-
- [`clearInterval()`](https://developer.mozilla.org/en-US/docs/Web/API/Window/clearInterval)
|
|
96
|
-
- Web
|
|
97
|
-
-
|
|
98
|
-
|
|
99
|
-
---
|
|
100
|
-
|
|
101
|
-
- [`clearTimeout()`](https://developer.mozilla.org/en-US/docs/Web/API/Window/clearTimeout)
|
|
102
|
-
- Web
|
|
103
|
-
-
|
|
104
|
-
|
|
105
|
-
---
|
|
106
|
-
|
|
107
|
-
- [`console`](https://developer.mozilla.org/en-US/docs/Web/API/console)
|
|
108
|
-
- Web
|
|
109
|
-
-
|
|
110
|
-
|
|
111
|
-
---
|
|
112
|
-
|
|
113
|
-
- [`CountQueuingStrategy`](https://developer.mozilla.org/en-US/docs/Web/API/CountQueuingStrategy)
|
|
114
|
-
- Web
|
|
115
|
-
-
|
|
116
|
-
|
|
117
|
-
---
|
|
118
|
-
|
|
119
|
-
- [`Crypto`](https://developer.mozilla.org/en-US/docs/Web/API/Crypto)
|
|
120
|
-
- Web
|
|
121
|
-
-
|
|
122
|
-
|
|
123
|
-
---
|
|
124
|
-
|
|
125
|
-
- [`crypto`](https://developer.mozilla.org/en-US/docs/Web/API/crypto)
|
|
126
|
-
- Web
|
|
127
|
-
-
|
|
128
|
-
|
|
129
|
-
---
|
|
130
|
-
|
|
131
|
-
- [`CryptoKey`](https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey)
|
|
132
|
-
- Web
|
|
133
|
-
-
|
|
134
|
-
|
|
135
|
-
---
|
|
136
|
-
|
|
137
|
-
- [`CustomEvent`](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent)
|
|
138
|
-
- Web
|
|
139
|
-
-
|
|
140
|
-
|
|
141
|
-
---
|
|
142
|
-
|
|
143
|
-
- [`Event`](https://developer.mozilla.org/en-US/docs/Web/API/Event)
|
|
144
|
-
- Web
|
|
145
|
-
- Also [`ErrorEvent`](https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent) [`CloseEvent`](https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent) [`MessageEvent`](https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent).
|
|
146
|
-
|
|
147
|
-
---
|
|
148
|
-
|
|
149
|
-
- [`EventTarget`](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget)
|
|
150
|
-
- Web
|
|
151
|
-
-
|
|
152
|
-
|
|
153
|
-
---
|
|
154
|
-
|
|
155
|
-
- [`exports`](https://nodejs.org/api/globals.html#exports)
|
|
156
|
-
- Node.js
|
|
157
|
-
-
|
|
158
|
-
|
|
159
|
-
---
|
|
160
|
-
|
|
161
|
-
- [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/fetch)
|
|
162
|
-
- Web
|
|
163
|
-
-
|
|
164
|
-
|
|
165
|
-
---
|
|
166
|
-
|
|
167
|
-
- [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData)
|
|
168
|
-
- Web
|
|
169
|
-
-
|
|
170
|
-
|
|
171
|
-
---
|
|
172
|
-
|
|
173
|
-
- [`global`](https://nodejs.org/api/globals.html#global)
|
|
174
|
-
- Node.js
|
|
175
|
-
- See [Node.js > `global`](https://bun.com/docs/runtime/nodejs-apis#global).
|
|
176
|
-
|
|
177
|
-
---
|
|
178
|
-
|
|
179
|
-
- [`globalThis`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis)
|
|
180
|
-
- Cross-platform
|
|
181
|
-
- Aliases to `global`
|
|
182
|
-
|
|
183
|
-
---
|
|
184
|
-
|
|
185
|
-
- [`Headers`](https://developer.mozilla.org/en-US/docs/Web/API/Headers)
|
|
186
|
-
- Web
|
|
187
|
-
-
|
|
188
|
-
|
|
189
|
-
---
|
|
190
|
-
|
|
191
|
-
- [`HTMLRewriter`](https://bun.com/docs/api/html-rewriter)
|
|
192
|
-
- Cloudflare
|
|
193
|
-
-
|
|
194
|
-
|
|
195
|
-
---
|
|
196
|
-
|
|
197
|
-
- [`JSON`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON)
|
|
198
|
-
- Web
|
|
199
|
-
-
|
|
200
|
-
|
|
201
|
-
---
|
|
202
|
-
|
|
203
|
-
- [`MessageEvent`](https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent)
|
|
204
|
-
- Web
|
|
205
|
-
-
|
|
206
|
-
|
|
207
|
-
---
|
|
208
|
-
|
|
209
|
-
- [`module`](https://nodejs.org/api/globals.html#module)
|
|
210
|
-
- Node.js
|
|
211
|
-
-
|
|
212
|
-
|
|
213
|
-
---
|
|
214
|
-
|
|
215
|
-
- [`performance`](https://developer.mozilla.org/en-US/docs/Web/API/performance)
|
|
216
|
-
- Web
|
|
217
|
-
-
|
|
218
|
-
|
|
219
|
-
---
|
|
220
|
-
|
|
221
|
-
- [`process`](https://nodejs.org/api/process.html)
|
|
222
|
-
- Node.js
|
|
223
|
-
- See [Node.js > `process`](https://bun.com/docs/runtime/nodejs-apis#node-process)
|
|
224
|
-
|
|
225
|
-
---
|
|
226
|
-
|
|
227
|
-
- [`prompt`](https://developer.mozilla.org/en-US/docs/Web/API/Window/prompt)
|
|
228
|
-
- Web
|
|
229
|
-
- Intended for command-line tools
|
|
230
|
-
|
|
231
|
-
---
|
|
232
|
-
|
|
233
|
-
- [`queueMicrotask()`](https://developer.mozilla.org/en-US/docs/Web/API/queueMicrotask)
|
|
234
|
-
- Web
|
|
235
|
-
-
|
|
236
|
-
|
|
237
|
-
---
|
|
238
|
-
|
|
239
|
-
- [`ReadableByteStreamController`](https://developer.mozilla.org/en-US/docs/Web/API/ReadableByteStreamController)
|
|
240
|
-
- Web
|
|
241
|
-
-
|
|
242
|
-
|
|
243
|
-
---
|
|
244
|
-
|
|
245
|
-
- [`ReadableStream`](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream)
|
|
246
|
-
- Web
|
|
247
|
-
-
|
|
248
|
-
|
|
249
|
-
---
|
|
250
|
-
|
|
251
|
-
- [`ReadableStreamDefaultController`](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultController)
|
|
252
|
-
- Web
|
|
253
|
-
-
|
|
254
|
-
|
|
255
|
-
---
|
|
256
|
-
|
|
257
|
-
- [`ReadableStreamDefaultReader`](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader)
|
|
258
|
-
- Web
|
|
259
|
-
-
|
|
260
|
-
|
|
261
|
-
---
|
|
262
|
-
|
|
263
|
-
- [`reportError`](https://developer.mozilla.org/en-US/docs/Web/API/reportError)
|
|
264
|
-
- Web
|
|
265
|
-
-
|
|
266
|
-
|
|
267
|
-
---
|
|
268
|
-
|
|
269
|
-
- [`require()`](https://nodejs.org/api/globals.html#require)
|
|
270
|
-
- Node.js
|
|
271
|
-
-
|
|
272
|
-
|
|
273
|
-
---
|
|
274
|
-
|
|
275
|
-
- `ResolveMessage`
|
|
276
|
-
- Bun
|
|
277
|
-
-
|
|
278
|
-
|
|
279
|
-
---
|
|
280
|
-
|
|
281
|
-
- [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response)
|
|
282
|
-
- Web
|
|
283
|
-
-
|
|
284
|
-
|
|
285
|
-
---
|
|
286
|
-
|
|
287
|
-
- [`Request`](https://developer.mozilla.org/en-US/docs/Web/API/Request)
|
|
288
|
-
- Web
|
|
289
|
-
-
|
|
290
|
-
|
|
291
|
-
---
|
|
292
|
-
|
|
293
|
-
- [`setImmediate()`](https://developer.mozilla.org/en-US/docs/Web/API/Window/setImmediate)
|
|
294
|
-
- Web
|
|
295
|
-
-
|
|
296
|
-
|
|
297
|
-
---
|
|
298
|
-
|
|
299
|
-
- [`setInterval()`](https://developer.mozilla.org/en-US/docs/Web/API/Window/setInterval)
|
|
300
|
-
- Web
|
|
301
|
-
-
|
|
302
|
-
|
|
303
|
-
---
|
|
304
|
-
|
|
305
|
-
- [`setTimeout()`](https://developer.mozilla.org/en-US/docs/Web/API/Window/setTimeout)
|
|
306
|
-
- Web
|
|
307
|
-
-
|
|
308
|
-
|
|
309
|
-
---
|
|
310
|
-
|
|
311
|
-
- [`ShadowRealm`](https://github.com/tc39/proposal-shadowrealm)
|
|
312
|
-
- Web
|
|
313
|
-
- Stage 3 proposal
|
|
314
|
-
|
|
315
|
-
---
|
|
316
|
-
|
|
317
|
-
- [`SubtleCrypto`](https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto)
|
|
318
|
-
- Web
|
|
319
|
-
-
|
|
320
|
-
|
|
321
|
-
---
|
|
322
|
-
|
|
323
|
-
- [`DOMException`](https://developer.mozilla.org/en-US/docs/Web/API/DOMException)
|
|
324
|
-
- Web
|
|
325
|
-
-
|
|
326
|
-
|
|
327
|
-
---
|
|
328
|
-
|
|
329
|
-
- [`TextDecoder`](https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder)
|
|
330
|
-
- Web
|
|
331
|
-
-
|
|
332
|
-
|
|
333
|
-
---
|
|
334
|
-
|
|
335
|
-
- [`TextEncoder`](https://developer.mozilla.org/en-US/docs/Web/API/TextEncoder)
|
|
336
|
-
- Web
|
|
337
|
-
-
|
|
338
|
-
|
|
339
|
-
---
|
|
340
|
-
|
|
341
|
-
- [`TransformStream`](https://developer.mozilla.org/en-US/docs/Web/API/TransformStream)
|
|
342
|
-
- Web
|
|
343
|
-
-
|
|
344
|
-
|
|
345
|
-
---
|
|
346
|
-
|
|
347
|
-
- [`TransformStreamDefaultController`](https://developer.mozilla.org/en-US/docs/Web/API/TransformStreamDefaultController)
|
|
348
|
-
- Web
|
|
349
|
-
-
|
|
350
|
-
|
|
351
|
-
---
|
|
352
|
-
|
|
353
|
-
- [`URL`](https://developer.mozilla.org/en-US/docs/Web/API/URL)
|
|
354
|
-
- Web
|
|
355
|
-
-
|
|
356
|
-
|
|
357
|
-
---
|
|
358
|
-
|
|
359
|
-
- [`URLSearchParams`](https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams)
|
|
360
|
-
- Web
|
|
361
|
-
-
|
|
362
|
-
|
|
363
|
-
---
|
|
364
|
-
|
|
365
|
-
- [`WebAssembly`](https://nodejs.org/api/globals.html#webassembly)
|
|
366
|
-
- Web
|
|
367
|
-
-
|
|
368
|
-
|
|
369
|
-
---
|
|
370
|
-
|
|
371
|
-
- [`WritableStream`](https://developer.mozilla.org/en-US/docs/Web/API/WritableStream)
|
|
372
|
-
- Web
|
|
373
|
-
-
|
|
374
|
-
|
|
375
|
-
---
|
|
376
|
-
|
|
377
|
-
- [`WritableStreamDefaultController`](https://developer.mozilla.org/en-US/docs/Web/API/WritableStreamDefaultController)
|
|
378
|
-
- Web
|
|
379
|
-
-
|
|
380
|
-
|
|
381
|
-
---
|
|
382
|
-
|
|
383
|
-
- [`WritableStreamDefaultWriter`](https://developer.mozilla.org/en-US/docs/Web/API/WritableStreamDefaultWriter)
|
|
384
|
-
- Web
|
|
385
|
-
-
|
|
386
|
-
|
|
387
|
-
{% /table %}
|
package/docs/api/hashing.md
DELETED
|
@@ -1,319 +0,0 @@
|
|
|
1
|
-
{% callout %}
|
|
2
|
-
|
|
3
|
-
Bun implements the `createHash` and `createHmac` functions from [`node:crypto`](https://nodejs.org/api/crypto.html) in addition to the Bun-native APIs documented below.
|
|
4
|
-
|
|
5
|
-
{% /callout %}
|
|
6
|
-
|
|
7
|
-
## `Bun.password`
|
|
8
|
-
|
|
9
|
-
`Bun.password` is a collection of utility functions for hashing and verifying passwords with various cryptographically secure algorithms.
|
|
10
|
-
|
|
11
|
-
```ts
|
|
12
|
-
const password = "super-secure-pa$$word";
|
|
13
|
-
|
|
14
|
-
const hash = await Bun.password.hash(password);
|
|
15
|
-
// => $argon2id$v=19$m=65536,t=2,p=1$tFq+9AVr1bfPxQdh6E8DQRhEXg/M/SqYCNu6gVdRRNs$GzJ8PuBi+K+BVojzPfS5mjnC8OpLGtv8KJqF99eP6a4
|
|
16
|
-
|
|
17
|
-
const isMatch = await Bun.password.verify(password, hash);
|
|
18
|
-
// => true
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
The second argument to `Bun.password.hash` accepts a params object that lets you pick and configure the hashing algorithm.
|
|
22
|
-
|
|
23
|
-
```ts
|
|
24
|
-
const password = "super-secure-pa$$word";
|
|
25
|
-
|
|
26
|
-
// use argon2 (default)
|
|
27
|
-
const argonHash = await Bun.password.hash(password, {
|
|
28
|
-
algorithm: "argon2id", // "argon2id" | "argon2i" | "argon2d"
|
|
29
|
-
memoryCost: 4, // memory usage in kibibytes
|
|
30
|
-
timeCost: 3, // the number of iterations
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
// use bcrypt
|
|
34
|
-
const bcryptHash = await Bun.password.hash(password, {
|
|
35
|
-
algorithm: "bcrypt",
|
|
36
|
-
cost: 4, // number between 4-31
|
|
37
|
-
});
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
The algorithm used to create the hash is stored in the hash itself. When using `bcrypt`, the returned hash is encoded in [Modular Crypt Format](https://passlib.readthedocs.io/en/stable/modular_crypt_format.html) for compatibility with most existing `bcrypt` implementations; with `argon2` the result is encoded in the newer [PHC format](https://github.com/P-H-C/phc-string-format/blob/master/phc-sf-spec.md).
|
|
41
|
-
|
|
42
|
-
The `verify` function automatically detects the algorithm based on the input hash and use the correct verification method. It can correctly infer the algorithm from both PHC- or MCF-encoded hashes.
|
|
43
|
-
|
|
44
|
-
```ts
|
|
45
|
-
const password = "super-secure-pa$$word";
|
|
46
|
-
|
|
47
|
-
const hash = await Bun.password.hash(password, {
|
|
48
|
-
/* config */
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
const isMatch = await Bun.password.verify(password, hash);
|
|
52
|
-
// => true
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
Synchronous versions of all functions are also available. Keep in mind that these functions are computationally expensive, so using a blocking API may degrade application performance.
|
|
56
|
-
|
|
57
|
-
```ts
|
|
58
|
-
const password = "super-secure-pa$$word";
|
|
59
|
-
|
|
60
|
-
const hash = Bun.password.hashSync(password, {
|
|
61
|
-
/* config */
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
const isMatch = Bun.password.verifySync(password, hash);
|
|
65
|
-
// => true
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
### Salt
|
|
69
|
-
|
|
70
|
-
When you use `Bun.password.hash`, a salt is automatically generated and included in the hash.
|
|
71
|
-
|
|
72
|
-
### bcrypt - Modular Crypt Format
|
|
73
|
-
|
|
74
|
-
In the following [Modular Crypt Format](https://passlib.readthedocs.io/en/stable/modular_crypt_format.html) hash (used by `bcrypt`):
|
|
75
|
-
|
|
76
|
-
Input:
|
|
77
|
-
|
|
78
|
-
```ts
|
|
79
|
-
await Bun.password.hash("hello", {
|
|
80
|
-
algorithm: "bcrypt",
|
|
81
|
-
});
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
Output:
|
|
85
|
-
|
|
86
|
-
```sh
|
|
87
|
-
$2b$10$Lyj9kHYZtiyfxh2G60TEfeqs7xkkGiEFFDi3iJGc50ZG/XJ1sxIFi;
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
The format is composed of:
|
|
91
|
-
|
|
92
|
-
- `bcrypt`: `$2b`
|
|
93
|
-
- `rounds`: `$10` - rounds (log10 of the actual number of rounds)
|
|
94
|
-
- `salt`: `$Lyj9kHYZtiyfxh2G60TEfeqs7xkkGiEFFDi3iJGc50ZG/XJ1sxIFi`
|
|
95
|
-
- `hash`: `$GzJ8PuBi+K+BVojzPfS5mjnC8OpLGtv8KJqF99eP6a4`
|
|
96
|
-
|
|
97
|
-
By default, the bcrypt library truncates passwords longer than 72 bytes. In Bun, if you pass `Bun.password.hash` a password longer than 72 bytes and use the `bcrypt` algorithm, the password will be hashed via SHA-512 before being passed to bcrypt.
|
|
98
|
-
|
|
99
|
-
```ts
|
|
100
|
-
await Bun.password.hash("hello".repeat(100), {
|
|
101
|
-
algorithm: "bcrypt",
|
|
102
|
-
});
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
So instead of sending bcrypt a 500-byte password silently truncated to 72 bytes, Bun will hash the password using SHA-512 and send the hashed password to bcrypt (only if it exceeds 72 bytes). This is a more secure default behavior.
|
|
106
|
-
|
|
107
|
-
### argon2 - PHC format
|
|
108
|
-
|
|
109
|
-
In the following [PHC format](https://github.com/P-H-C/phc-string-format/blob/master/phc-sf-spec.md) hash (used by `argon2`):
|
|
110
|
-
|
|
111
|
-
Input:
|
|
112
|
-
|
|
113
|
-
```ts
|
|
114
|
-
await Bun.password.hash("hello", {
|
|
115
|
-
algorithm: "argon2id",
|
|
116
|
-
});
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
Output:
|
|
120
|
-
|
|
121
|
-
```sh
|
|
122
|
-
$argon2id$v=19$m=65536,t=2,p=1$xXnlSvPh4ym5KYmxKAuuHVlDvy2QGHBNuI6bJJrRDOs$2YY6M48XmHn+s5NoBaL+ficzXajq2Yj8wut3r0vnrwI
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
The format is composed of:
|
|
126
|
-
|
|
127
|
-
- `algorithm`: `$argon2id`
|
|
128
|
-
- `version`: `$v=19`
|
|
129
|
-
- `memory cost`: `65536`
|
|
130
|
-
- `iterations`: `t=2`
|
|
131
|
-
- `parallelism`: `p=1`
|
|
132
|
-
- `salt`: `$xXnlSvPh4ym5KYmxKAuuHVlDvy2QGHBNuI6bJJrRDOs`
|
|
133
|
-
- `hash`: `$2YY6M48XmHn+s5NoBaL+ficzXajq2Yj8wut3r0vnrwI`
|
|
134
|
-
|
|
135
|
-
## `Bun.hash`
|
|
136
|
-
|
|
137
|
-
`Bun.hash` is a collection of utilities for _non-cryptographic_ hashing. Non-cryptographic hashing algorithms are optimized for speed of computation over collision-resistance or security.
|
|
138
|
-
|
|
139
|
-
The standard `Bun.hash` functions uses [Wyhash](https://github.com/wangyi-fudan/wyhash) to generate a 64-bit hash from an input of arbitrary size.
|
|
140
|
-
|
|
141
|
-
```ts
|
|
142
|
-
Bun.hash("some data here");
|
|
143
|
-
// 11562320457524636935n
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
The input can be a string, `TypedArray`, `DataView`, `ArrayBuffer`, or `SharedArrayBuffer`.
|
|
147
|
-
|
|
148
|
-
```ts
|
|
149
|
-
const arr = new Uint8Array([1, 2, 3, 4]);
|
|
150
|
-
|
|
151
|
-
Bun.hash("some data here");
|
|
152
|
-
Bun.hash(arr);
|
|
153
|
-
Bun.hash(arr.buffer);
|
|
154
|
-
Bun.hash(new DataView(arr.buffer));
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
Optionally, an integer seed can be specified as the second parameter. For 64-bit hashes seeds above `Number.MAX_SAFE_INTEGER` should be given as BigInt to avoid loss of precision.
|
|
158
|
-
|
|
159
|
-
```ts
|
|
160
|
-
Bun.hash("some data here", 1234);
|
|
161
|
-
// 15724820720172937558n
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
Additional hashing algorithms are available as properties on `Bun.hash`. The API is the same for each, only changing the return type from number for 32-bit hashes to bigint for 64-bit hashes.
|
|
165
|
-
|
|
166
|
-
```ts
|
|
167
|
-
Bun.hash.wyhash("data", 1234); // equivalent to Bun.hash()
|
|
168
|
-
Bun.hash.crc32("data", 1234);
|
|
169
|
-
Bun.hash.adler32("data", 1234);
|
|
170
|
-
Bun.hash.cityHash32("data", 1234);
|
|
171
|
-
Bun.hash.cityHash64("data", 1234);
|
|
172
|
-
Bun.hash.xxHash32("data", 1234);
|
|
173
|
-
Bun.hash.xxHash64("data", 1234);
|
|
174
|
-
Bun.hash.xxHash3("data", 1234);
|
|
175
|
-
Bun.hash.murmur32v3("data", 1234);
|
|
176
|
-
Bun.hash.murmur32v2("data", 1234);
|
|
177
|
-
Bun.hash.murmur64v2("data", 1234);
|
|
178
|
-
Bun.hash.rapidhash("data", 1234);
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
## `Bun.CryptoHasher`
|
|
182
|
-
|
|
183
|
-
`Bun.CryptoHasher` is a general-purpose utility class that lets you incrementally compute a hash of string or binary data using a range of cryptographic hash algorithms. The following algorithms are supported:
|
|
184
|
-
|
|
185
|
-
- `"blake2b256"`
|
|
186
|
-
- `"blake2b512"`
|
|
187
|
-
- `"blake2s256"`
|
|
188
|
-
- `"md4"`
|
|
189
|
-
- `"md5"`
|
|
190
|
-
- `"ripemd160"`
|
|
191
|
-
- `"sha1"`
|
|
192
|
-
- `"sha224"`
|
|
193
|
-
- `"sha256"`
|
|
194
|
-
- `"sha384"`
|
|
195
|
-
- `"sha512"`
|
|
196
|
-
- `"sha512-224"`
|
|
197
|
-
- `"sha512-256"`
|
|
198
|
-
- `"sha3-224"`
|
|
199
|
-
- `"sha3-256"`
|
|
200
|
-
- `"sha3-384"`
|
|
201
|
-
- `"sha3-512"`
|
|
202
|
-
- `"shake128"`
|
|
203
|
-
- `"shake256"`
|
|
204
|
-
|
|
205
|
-
```ts
|
|
206
|
-
const hasher = new Bun.CryptoHasher("sha256");
|
|
207
|
-
hasher.update("hello world");
|
|
208
|
-
hasher.digest();
|
|
209
|
-
// Uint8Array(32) [ <byte>, <byte>, ... ]
|
|
210
|
-
```
|
|
211
|
-
|
|
212
|
-
Once initialized, data can be incrementally fed to to the hasher using `.update()`. This method accepts `string`, `TypedArray`, and `ArrayBuffer`.
|
|
213
|
-
|
|
214
|
-
```ts
|
|
215
|
-
const hasher = new Bun.CryptoHasher("sha256");
|
|
216
|
-
|
|
217
|
-
hasher.update("hello world");
|
|
218
|
-
hasher.update(new Uint8Array([1, 2, 3]));
|
|
219
|
-
hasher.update(new ArrayBuffer(10));
|
|
220
|
-
```
|
|
221
|
-
|
|
222
|
-
If a `string` is passed, an optional second parameter can be used to specify the encoding (default `'utf-8'`). The following encodings are supported:
|
|
223
|
-
|
|
224
|
-
{% table %}
|
|
225
|
-
|
|
226
|
-
---
|
|
227
|
-
|
|
228
|
-
- Binary encodings
|
|
229
|
-
- `"base64"` `"base64url"` `"hex"` `"binary"`
|
|
230
|
-
|
|
231
|
-
---
|
|
232
|
-
|
|
233
|
-
- Character encodings
|
|
234
|
-
- `"utf8"` `"utf-8"` `"utf16le"` `"latin1"`
|
|
235
|
-
|
|
236
|
-
---
|
|
237
|
-
|
|
238
|
-
- Legacy character encodings
|
|
239
|
-
- `"ascii"` `"binary"` `"ucs2"` `"ucs-2"`
|
|
240
|
-
|
|
241
|
-
{% /table %}
|
|
242
|
-
|
|
243
|
-
```ts
|
|
244
|
-
hasher.update("hello world"); // defaults to utf8
|
|
245
|
-
hasher.update("hello world", "hex");
|
|
246
|
-
hasher.update("hello world", "base64");
|
|
247
|
-
hasher.update("hello world", "latin1");
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
After the data has been feed into the hasher, a final hash can be computed using `.digest()`. By default, this method returns a `Uint8Array` containing the hash.
|
|
251
|
-
|
|
252
|
-
```ts
|
|
253
|
-
const hasher = new Bun.CryptoHasher("sha256");
|
|
254
|
-
hasher.update("hello world");
|
|
255
|
-
|
|
256
|
-
hasher.digest();
|
|
257
|
-
// => Uint8Array(32) [ 185, 77, 39, 185, 147, ... ]
|
|
258
|
-
```
|
|
259
|
-
|
|
260
|
-
The `.digest()` method can optionally return the hash as a string. To do so, specify an encoding:
|
|
261
|
-
|
|
262
|
-
```ts
|
|
263
|
-
hasher.digest("base64");
|
|
264
|
-
// => "uU0nuZNNPgilLlLX2n2r+sSE7+N6U4DukIj3rOLvzek="
|
|
265
|
-
|
|
266
|
-
hasher.digest("hex");
|
|
267
|
-
// => "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"
|
|
268
|
-
```
|
|
269
|
-
|
|
270
|
-
Alternatively, the method can write the hash into a pre-existing `TypedArray` instance. This may be desirable in some performance-sensitive applications.
|
|
271
|
-
|
|
272
|
-
```ts
|
|
273
|
-
const arr = new Uint8Array(32);
|
|
274
|
-
|
|
275
|
-
hasher.digest(arr);
|
|
276
|
-
|
|
277
|
-
console.log(arr);
|
|
278
|
-
// => Uint8Array(32) [ 185, 77, 39, 185, 147, ... ]
|
|
279
|
-
```
|
|
280
|
-
|
|
281
|
-
### HMAC in `Bun.CryptoHasher`
|
|
282
|
-
|
|
283
|
-
`Bun.CryptoHasher` can be used to compute HMAC digests. To do so, pass the key to the constructor.
|
|
284
|
-
|
|
285
|
-
```ts
|
|
286
|
-
const hasher = new Bun.CryptoHasher("sha256", "secret-key");
|
|
287
|
-
hasher.update("hello world");
|
|
288
|
-
console.log(hasher.digest("hex"));
|
|
289
|
-
// => "095d5a21fe6d0646db223fdf3de6436bb8dfb2fab0b51677ecf6441fcf5f2a67"
|
|
290
|
-
```
|
|
291
|
-
|
|
292
|
-
When using HMAC, a more limited set of algorithms are supported:
|
|
293
|
-
|
|
294
|
-
- `"blake2b512"`
|
|
295
|
-
- `"md5"`
|
|
296
|
-
- `"sha1"`
|
|
297
|
-
- `"sha224"`
|
|
298
|
-
- `"sha256"`
|
|
299
|
-
- `"sha384"`
|
|
300
|
-
- `"sha512-224"`
|
|
301
|
-
- `"sha512-256"`
|
|
302
|
-
- `"sha512"`
|
|
303
|
-
|
|
304
|
-
Unlike the non-HMAC `Bun.CryptoHasher`, the HMAC `Bun.CryptoHasher` instance is not reset after `.digest()` is called, and attempting to use the same instance again will throw an error.
|
|
305
|
-
|
|
306
|
-
Other methods like `.copy()` and `.update()` are supported (as long as it's before `.digest()`), but methods like `.digest()` that finalize the hasher are not.
|
|
307
|
-
|
|
308
|
-
```ts
|
|
309
|
-
const hasher = new Bun.CryptoHasher("sha256", "secret-key");
|
|
310
|
-
hasher.update("hello world");
|
|
311
|
-
|
|
312
|
-
const copy = hasher.copy();
|
|
313
|
-
copy.update("!");
|
|
314
|
-
console.log(copy.digest("hex"));
|
|
315
|
-
// => "3840176c3d8923f59ac402b7550404b28ab11cb0ef1fa199130a5c37864b5497"
|
|
316
|
-
|
|
317
|
-
console.log(hasher.digest("hex"));
|
|
318
|
-
// => "095d5a21fe6d0646db223fdf3de6436bb8dfb2fab0b51677ecf6441fcf5f2a67"
|
|
319
|
-
```
|