1
1
#[ macro_use]
2
- extern crate napi_rs as napi;
2
+ extern crate napi;
3
3
#[ macro_use]
4
- extern crate napi_rs_derive ;
4
+ extern crate napi_derive ;
5
5
6
6
use crate :: lib_bcrypt:: { format_salt, gen_salt, Version } ;
7
7
use hash_task:: HashTask ;
8
8
use napi:: {
9
- Boolean , Buffer , CallContext , Env , Error , JsString , Number , Object , Result , Status , Value ,
9
+ CallContext , Error , JsBoolean , JsBuffer , JsNumber , JsObject , JsString , Module , Result , Status ,
10
10
} ;
11
11
use std:: convert:: TryInto ;
12
12
use std:: str:: FromStr ;
@@ -25,40 +25,25 @@ mod errors;
25
25
mod lib_bcrypt;
26
26
27
27
#[ cfg( not( test) ) ]
28
- register_module ! ( test_module, init) ;
29
-
30
- fn init ( env : & Env , exports : & mut Value < Object > ) -> Result < ( ) > {
31
- exports. set_property (
32
- env. create_string ( "hash" ) ?,
33
- env. create_function ( "hash" , js_async_hash) ?,
34
- ) ?;
35
-
36
- exports. set_property (
37
- env. create_string ( "hashSync" ) ?,
38
- env. create_function ( "hashSync" , js_hash) ?,
39
- ) ?;
40
-
41
- exports. set_property (
42
- env. create_string ( "genSalt" ) ?,
43
- env. create_function ( "genSalt" , js_salt) ?,
44
- ) ?;
45
-
46
- exports. set_property (
47
- env. create_string ( "verifySync" ) ?,
48
- env. create_function ( "verifySync" , js_verify) ?,
49
- ) ?;
50
-
51
- exports. set_property (
52
- env. create_string ( "verify" ) ?,
53
- env. create_function ( "verify" , js_async_verify) ?,
54
- ) ?;
28
+ register_module ! ( bcrypt, init) ;
29
+
30
+ fn init ( module : & mut Module ) -> Result < ( ) > {
31
+ module. create_named_method ( "hash" , js_async_hash) ?;
32
+
33
+ module. create_named_method ( "hashSync" , js_hash) ?;
34
+
35
+ module. create_named_method ( "genSalt" , js_salt) ?;
36
+
37
+ module. create_named_method ( "verifySync" , js_verify) ?;
38
+
39
+ module. create_named_method ( "verify" , js_async_verify) ?;
55
40
56
41
Ok ( ( ) )
57
42
}
58
43
59
44
#[ js_function( 2 ) ]
60
- fn js_salt ( ctx : CallContext ) -> Result < Value < JsString > > {
61
- let round = ctx. get :: < Number > ( 0 ) ?;
45
+ fn js_salt ( ctx : CallContext ) -> Result < JsString > {
46
+ let round = ctx. get :: < JsNumber > ( 0 ) ?;
62
47
let version = ctx. get :: < JsString > ( 1 ) ?;
63
48
let salt = gen_salt ( ) ;
64
49
let salt_string = format_salt (
@@ -70,34 +55,34 @@ fn js_salt(ctx: CallContext) -> Result<Value<JsString>> {
70
55
}
71
56
72
57
#[ js_function( 2 ) ]
73
- fn js_hash ( ctx : CallContext ) -> Result < Value < JsString > > {
74
- let password = ctx. get :: < Buffer > ( 0 ) ?;
75
- let cost = ctx. get :: < Number > ( 1 ) ?;
58
+ fn js_hash ( ctx : CallContext ) -> Result < JsString > {
59
+ let password = ctx. get :: < JsBuffer > ( 0 ) ?;
60
+ let cost = ctx. get :: < JsNumber > ( 1 ) ?;
76
61
let result = HashTask :: hash ( password, cost. try_into ( ) ?) ?;
77
62
ctx. env . create_string ( result. as_str ( ) )
78
63
}
79
64
80
65
#[ js_function( 2 ) ]
81
- fn js_async_hash ( ctx : CallContext ) -> Result < Value < Object > > {
82
- let password = ctx. get :: < Buffer > ( 0 ) ?;
83
- let cost = ctx. get :: < Number > ( 1 ) ?;
66
+ fn js_async_hash ( ctx : CallContext ) -> Result < JsObject > {
67
+ let password = ctx. get :: < JsBuffer > ( 0 ) ?;
68
+ let cost = ctx. get :: < JsNumber > ( 1 ) ?;
84
69
let task = HashTask :: new ( password, cost. try_into ( ) ?) ;
85
70
ctx. env . spawn ( task)
86
71
}
87
72
88
73
#[ js_function( 2 ) ]
89
- fn js_verify ( ctx : CallContext ) -> Result < Value < Boolean > > {
90
- let password = ctx. get :: < Buffer > ( 0 ) ?;
91
- let hash = ctx. get :: < Buffer > ( 1 ) ?;
92
- let result =
93
- VerifyTask :: verify ( password , hash ) . map_err ( |_ | Error :: from_status ( Status :: GenericFailure ) ) ?;
74
+ fn js_verify ( ctx : CallContext ) -> Result < JsBoolean > {
75
+ let password = ctx. get :: < JsBuffer > ( 0 ) ?;
76
+ let hash = ctx. get :: < JsBuffer > ( 1 ) ?;
77
+ let result = VerifyTask :: verify ( password , hash )
78
+ . map_err ( |e | Error :: new ( Status :: GenericFailure , format ! ( "{}" , e ) ) ) ?;
94
79
ctx. env . get_boolean ( result)
95
80
}
96
81
97
82
#[ js_function( 2 ) ]
98
- fn js_async_verify ( ctx : CallContext ) -> Result < Value < Object > > {
99
- let password = ctx. get :: < Buffer > ( 0 ) ?;
100
- let hash = ctx. get :: < Buffer > ( 1 ) ?;
83
+ fn js_async_verify ( ctx : CallContext ) -> Result < JsObject > {
84
+ let password = ctx. get :: < JsBuffer > ( 0 ) ?;
85
+ let hash = ctx. get :: < JsBuffer > ( 1 ) ?;
101
86
let task = VerifyTask :: new ( password, hash) ;
102
87
ctx. env . spawn ( task)
103
88
}
0 commit comments