Skip to content

Commit 8d84ac9

Browse files
authored
Merge pull request #676 from Himself65/type
fix(bcrypt): type
2 parents 8eeb2c7 + a7b33e2 commit 8d84ac9

File tree

8 files changed

+54
-11
lines changed

8 files changed

+54
-11
lines changed

packages/bcrypt/README.md

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,13 @@ export function compare(password: string | Buffer, hash: string | Buffer): Promi
4343

4444
export type Version = '2a' | '2x' | '2y' | '2b'
4545
/**
46-
* @param round default 10
4746
* @param version default '2b'
4847
*/
49-
export function genSaltSync(round?: number, version?: Version): string
48+
export function genSaltSync(round: number, version?: Version): string
5049
/**
51-
* @param round default 10
5250
* @param version default '2b'
5351
*/
54-
export function genSalt(round?: number, version?: Version): Promise<string>
52+
export function genSalt(round: number, version?: Version): Promise<string>
5553
```
5654

5755
## Bench

packages/bcrypt/__tests__/bcrypt.spec.ts

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,31 @@
11
import test from 'ava'
22

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

55
const { hashSync } = require('bcryptjs')
66

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

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

11+
test('genSaltSync should return a string', (t) => {
12+
t.is(typeof genSaltSync(10), 'string')
13+
t.is(typeof genSaltSync(10, '2a'), 'string')
14+
t.is(typeof genSaltSync(10, '2b'), 'string')
15+
t.is(typeof genSaltSync(10, '2y'), 'string')
16+
t.is(typeof genSaltSync(10, '2x'), 'string')
17+
t.throws(() => genSaltSync(10, 'invalid' as any))
18+
})
19+
20+
test('genSalt should return a string', async (t) => {
21+
t.is(typeof (await genSalt(10)), 'string')
22+
t.is(typeof (await genSalt(10, '2a')), 'string')
23+
t.is(typeof (await genSalt(10, '2b')), 'string')
24+
t.is(typeof (await genSalt(10, '2y')), 'string')
25+
t.is(typeof (await genSalt(10, '2x')), 'string')
26+
await t.throwsAsync(async () => genSalt(10, 'invalid' as any))
27+
})
28+
1129
test('verifySync hashed password from bcrypt should be true', (t) => {
1230
t.true(verifySync(fx, hashedPassword))
1331
})

packages/bcrypt/binding.d.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
/* auto-generated by NAPI-RS */
55

66
export const DEFAULT_COST: number
7-
export function genSaltSync(round: number, version: string): string
8-
export function genSalt(round: number, version: string, signal?: AbortSignal | undefined | null): Promise<string>
7+
export function genSaltSync(round: number, version?: '2a' | '2x' | '2y' | '2b'): string
8+
export function genSalt(round: number, version?: '2a' | '2x' | '2y' | '2b', signal?: AbortSignal): Promise<string>
99
export function hashSync(
1010
input: string | Buffer,
1111
cost?: number | undefined | null,

packages/bcrypt/src/lib.rs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ mod verify_task;
2121
#[napi]
2222
pub const DEFAULT_COST: u32 = 12;
2323

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

35-
#[napi(js_name = "genSalt")]
35+
#[napi(
36+
js_name = "genSalt",
37+
ts_args_type = "round: number, version?: '2a' | '2x' | '2y' | '2b', signal?: AbortSignal"
38+
)]
3639
pub fn gen_salt_js(
3740
round: u32,
3841
version: Option<String>,
@@ -119,8 +122,8 @@ fn version_from_str(version: Option<String>) -> Result<Version> {
119122
match version.as_deref() {
120123
Some("2a") => Ok(Version::TwoA),
121124
Some("2b") | None => Ok(Version::TwoB),
122-
Some("2y") => Ok(Version::TwoX),
123-
Some("2x") => Ok(Version::TwoY),
125+
Some("2x") => Ok(Version::TwoX),
126+
Some("2y") => Ok(Version::TwoY),
124127
Some(version) => Err(Error::new(
125128
Status::InvalidArg,
126129
format!("{version} is not a valid version"),

packages/deno-lint/index.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
/* tslint:disable */
2+
/* eslint-disable */
3+
/* prettier-ignore */
4+
5+
/* auto-generated by NAPI-RS */
6+
17
const { existsSync, readFileSync } = require('fs')
28
const { join } = require('path')
39

packages/jieba/index.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
/* tslint:disable */
2+
/* eslint-disable */
3+
/* prettier-ignore */
4+
5+
/* auto-generated by NAPI-RS */
6+
17
const { existsSync, readFileSync } = require('fs')
28
const { join } = require('path')
39

packages/jsonwebtoken/index.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
/* tslint:disable */
2+
/* eslint-disable */
3+
/* prettier-ignore */
4+
5+
/* auto-generated by NAPI-RS */
6+
17
const { existsSync, readFileSync } = require('fs')
28
const { join } = require('path')
39

packages/xxhash/index.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
/* tslint:disable */
2+
/* eslint-disable */
3+
/* prettier-ignore */
4+
5+
/* auto-generated by NAPI-RS */
6+
17
const { existsSync, readFileSync } = require('fs')
28
const { join } = require('path')
39

0 commit comments

Comments
 (0)