Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
aea2e48
feat!: redesign bcrypt creation API and narrow Argon2 verification op…
Brooooooklyn Sep 10, 2026
66f1a8c
chore: keep major API changes scoped to bcrypt
Brooooooklyn Sep 10, 2026
54d4fac
fix(bcrypt): preserve Node 10 and 12 runtime compatibility
Brooooooklyn Sep 10, 2026
3c9390a
fix(bcrypt): support cancellation without global AbortController
Brooooooklyn Sep 10, 2026
2cb06b1
fix(bcrypt): polish the 2.0 API and packaging before release
Brooooooklyn Sep 30, 2026
94aadca
test(bcrypt): keep the event loop alive while waiting for AbortSignal…
Brooooooklyn Sep 30, 2026
5c01170
chore: resolve bcrypt-previous from the registry
Brooooooklyn Sep 30, 2026
72646f3
chore(bcrypt): regenerate bindings with @napi-rs/cli 3.10.5
Brooooooklyn Sep 30, 2026
f21679c
fix(bcrypt): keep custom signal errors from breaking settled or abort…
Brooooooklyn Oct 1, 2026
97ec051
feat(bcrypt): add parseOptions and Node-style error codes for 2.0
Brooooooklyn Oct 1, 2026
a5edb9a
fix(bcrypt): tidy parseOptions review nits
Brooooooklyn Oct 1, 2026
73883df
feat(bcrypt): give the backend contract error a code
Brooooooklyn Oct 1, 2026
fa77e2b
feat(bcrypt): switch hashing backend to bcrypt-rust
Brooooooklyn Oct 5, 2026
29afc10
bench: make benchmark comparisons 1:1 and migrate argon2 to tinybench
Brooooooklyn Oct 5, 2026
8e73ae7
bench: narrow tinybench TaskResult before reading stats
Brooooooklyn Oct 5, 2026
f9ed715
perf(bcrypt): fast-path genSaltSync options; note wasm salt overhead …
Brooooooklyn Oct 5, 2026
142af8f
deps: bump bcrypt-rust to 1.0.1
Brooooooklyn Oct 5, 2026
07212e5
perf(bcrypt): cut genSaltSync overhead; pool OS entropy per thread
Brooooooklyn Oct 5, 2026
36f5b55
deps: bump bcrypt-rust to 1.0.2
Brooooooklyn Oct 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -309,6 +309,45 @@ jobs:
- name: Test bindings
run: yarn workspaces foreach -A -j 1 run test

test-bcrypt-supported-node:
name: Test bcrypt on supported Node ${{ matrix.node }}
needs:
- build
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
node: ['10', '12']
steps:
- uses: actions/checkout@v7

- name: Setup node for test dependencies
uses: actions/setup-node@v7
with:
node-version: 24
cache: yarn

- name: Install test dependencies
run: yarn install --immutable --mode=skip-build

- name: Setup node
uses: actions/setup-node@v7
with:
node-version: ${{ matrix.node }}

- name: Download native bindings
uses: actions/download-artifact@v8
with:
name: bindings-x86_64-unknown-linux-gnu
path: packages

# Avoid the modern development toolchain when testing the published API.
- name: Test bcrypt public API and stored hashes
run: node packages/bcrypt/__tests__/supported-node.cjs

- name: Test locally imported cancellation polyfill
run: node packages/bcrypt/__tests__/polyfill-cancellation.cjs

test-linux-x64-gnu-binding:
name: Test bindings on Linux-x64-gnu - node@${{ matrix.node }}
needs:
Expand Down Expand Up @@ -558,6 +597,7 @@ jobs:
- test-linux-aarch64-musl-binding
- test-linux-arm-gnueabihf-binding
- test-macOS-windows-binding
- test-bcrypt-supported-node
- test-wasi-nodejs
steps:
- uses: actions/checkout@v7
Expand Down
7 changes: 7 additions & 0 deletions .yarnrc.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,17 @@
nodeLinker: node-modules

# Link workspaces only through the workspace: protocol, so pinned previous releases
# such as bcrypt-previous (npm:@node-rs/bcrypt@1.10.9) come from the registry even
# when a workspace currently has the same version.
enableTransparentWorkspaces: false

npmRegistryServer: 'https://registry.npmjs.org/'

yarnPath: .yarn/releases/yarn-4.18.1.cjs

npmPreapprovedPackages:
# This repo's own packages, including previous releases pinned by compatibility tests.
- '@node-rs/*'
- '@napi-rs/*'
- oxlint
- '@oxlint/*'
Expand Down
148 changes: 6 additions & 142 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 2 additions & 3 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,7 @@ resolver = "2"
[workspace.dependencies]
argon2-rust = { version = "1.1", default-features = false }
base64 = { version = "0.23" }
bcrypt = "0.19"
blowfish = { version = "0.10", features = ["bcrypt"] }
bcrypt = { package = "bcrypt-rust", version = "1" }
crc32c = { version = "0.6" }
crc32fast = { version = "1.4", features = ["nightly"] }
global_alloc = { path = "./crates/alloc" }
Expand All @@ -26,13 +25,13 @@ napi = { version = "3", default-features = false, features = ["napi3"] }
napi-build = "2"
napi-derive = { version = "3", default-features = false, features = ["type-def"] }
once_cell = "1"
quickcheck = "1.0"
rand = "0.10"
rand_core = { version = "0.10" }
serde = "1.0"
serde_json = "1.0"
simdutf8 = "0.1"
xxhash-rust = { version = "0.8", features = ["xxh32", "const_xxh32", "xxh64", "const_xxh64", "xxh3", "const_xxh3"] }
zeroize = "1"
[profile.release]
codegen-units = 1
lto = true
Expand Down
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,8 @@
"ts"
],
"files": [
"packages/*/__test__/**/*.spec.ts"
"packages/*/__test__/**/*.spec.ts",
"packages/bcrypt/__tests__/**/*.spec.ts"
],
"nodeArguments": [
"--import",
Expand Down
Loading
Loading