Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
6 changes: 2 additions & 4 deletions packages/bcrypt/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,15 +43,13 @@ export function compare(password: string | Buffer, hash: string | Buffer): Promi

export type Version = '2a' | '2x' | '2y' | '2b'
/**
* @param round default 10
* @param version default '2b'
*/
export function genSaltSync(round?: number, version?: Version): string
export function genSaltSync(round: number, version?: Version): string
/**
* @param round default 10
* @param version default '2b'
*/
export function genSalt(round?: number, version?: Version): Promise<string>
export function genSalt(round: number, version?: Version): Promise<string>
```

## Bench
Expand Down
20 changes: 19 additions & 1 deletion packages/bcrypt/__tests__/bcrypt.spec.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,31 @@
import test from 'ava'

import { verifySync, compareSync, verify, compare, hash } from '../index'
import { verifySync, compareSync, verify, compare, hash, genSaltSync, genSalt } from '../index'

const { hashSync } = require('bcryptjs')

const fx = Buffer.from('bcrypt-test-password')

const hashedPassword = hashSync(fx.toString('utf8'), 10)

test('genSaltSync should return a string', (t) => {
t.is(typeof genSaltSync(10), 'string')
t.is(typeof genSaltSync(10, '2a'), 'string')
t.is(typeof genSaltSync(10, '2b'), 'string')
t.is(typeof genSaltSync(10, '2y'), 'string')
t.is(typeof genSaltSync(10, '2x'), 'string')
t.throws(() => genSaltSync(10, 'invalid' as any))
})

test('genSalt should return a string', async (t) => {
t.is(typeof (await genSalt(10)), 'string')
t.is(typeof (await genSalt(10, '2a')), 'string')
t.is(typeof (await genSalt(10, '2b')), 'string')
t.is(typeof (await genSalt(10, '2y')), 'string')
t.is(typeof (await genSalt(10, '2x')), 'string')
await t.throwsAsync(async () => genSalt(10, 'invalid' as any))
})

test('verifySync hashed password from bcrypt should be true', (t) => {
t.true(verifySync(fx, hashedPassword))
})
Expand Down
4 changes: 2 additions & 2 deletions packages/bcrypt/binding.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
/* auto-generated by NAPI-RS */

export const DEFAULT_COST: number
export function genSaltSync(round: number, version: string): string
export function genSalt(round: number, version: string, signal?: AbortSignal | undefined | null): Promise<string>
export function genSaltSync(round: number, version?: '2a' | '2x' | '2y' | '2b'): string
export function genSalt(round: number, version?: '2a' | '2x' | '2y' | '2b', signal?: AbortSignal): Promise<string>
export function hashSync(
input: string | Buffer,
cost?: number | undefined | null,
Expand Down
11 changes: 7 additions & 4 deletions packages/bcrypt/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ mod verify_task;
#[napi]
pub const DEFAULT_COST: u32 = 12;

#[napi]
#[napi(ts_args_type = "round: number, version?: '2a' | '2x' | '2y' | '2b'")]
pub fn gen_salt_sync(round: u32, version: Option<String>) -> Result<String> {
let salt = gen_salt().map_err(|err| {
Error::new(
Expand All @@ -32,7 +32,10 @@ pub fn gen_salt_sync(round: u32, version: Option<String>) -> Result<String> {
Ok(format_salt(round, &version_from_str(version)?, &salt))
}

#[napi(js_name = "genSalt")]
#[napi(
js_name = "genSalt",
ts_args_type = "round: number, version?: '2a' | '2x' | '2y' | '2b', signal?: AbortSignal"
)]
pub fn gen_salt_js(
round: u32,
version: Option<String>,
Expand Down Expand Up @@ -119,8 +122,8 @@ fn version_from_str(version: Option<String>) -> Result<Version> {
match version.as_deref() {
Some("2a") => Ok(Version::TwoA),
Some("2b") | None => Ok(Version::TwoB),
Some("2y") => Ok(Version::TwoX),
Some("2x") => Ok(Version::TwoY),
Some("2x") => Ok(Version::TwoX),
Some("2y") => Ok(Version::TwoY),
Some(version) => Err(Error::new(
Status::InvalidArg,
format!("{version} is not a valid version"),
Expand Down
6 changes: 6 additions & 0 deletions packages/deno-lint/index.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
/* tslint:disable */
/* eslint-disable */
/* prettier-ignore */

/* auto-generated by NAPI-RS */

const { existsSync, readFileSync } = require('fs')
const { join } = require('path')

Expand Down
6 changes: 6 additions & 0 deletions packages/jieba/index.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
/* tslint:disable */
/* eslint-disable */
/* prettier-ignore */

/* auto-generated by NAPI-RS */

const { existsSync, readFileSync } = require('fs')
const { join } = require('path')

Expand Down
6 changes: 6 additions & 0 deletions packages/jsonwebtoken/index.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
/* tslint:disable */
/* eslint-disable */
/* prettier-ignore */

/* auto-generated by NAPI-RS */

const { existsSync, readFileSync } = require('fs')
const { join } = require('path')

Expand Down
6 changes: 6 additions & 0 deletions packages/xxhash/index.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
/* tslint:disable */
/* eslint-disable */
/* prettier-ignore */

/* auto-generated by NAPI-RS */

const { existsSync, readFileSync } = require('fs')
const { join } = require('path')

Expand Down