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
2 changes: 1 addition & 1 deletion .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ jobs:
timeout-minutes: 5
with:
command: test
args: -p nodr-rs-bcrypt --lib -- --nocapture
args: -p node-rs-bcrypt --lib -- --nocapture

- name: Run build
run: |
Expand Down
16 changes: 8 additions & 8 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,29 +21,29 @@
},
"devDependencies": {
"@octokit/rest": "^18.0.0",
"@typescript-eslint/eslint-plugin": "^3.2.0",
"@typescript-eslint/parser": "^3.2.0",
"ava": "^3.8.2",
"@typescript-eslint/eslint-plugin": "^3.6.1",
"@typescript-eslint/parser": "^3.6.1",
"ava": "^3.10.1",
"benchmark": "^2.1.4",
"chalk": "^4.1.0",
"codecov": "^3.7.0",
"cross-env": "^7.0.2",
"eslint": "^7.2.0",
"eslint": "^7.4.0",
"eslint-config-prettier": "^6.11.0",
"eslint-plugin-import": "^2.21.2",
"eslint-plugin-prettier": "^3.1.3",
"eslint-plugin-import": "^2.22.0",
"eslint-plugin-prettier": "^3.1.4",
"eslint-plugin-sonarjs": "^0.5.0",
"husky": "^4.2.5",
"lerna": "^3.22.1",
"lint-staged": "^10.2.9",
"lint-staged": "^10.2.11",
"napi-rs": "^0.2.4",
"npm-run-all": "^4.1.5",
"nyc": "^15.1.0",
"prettier": "^2.0.5",
"putasset": "^5.0.3",
"ts-node": "^8.10.2",
"tsconfig-paths": "^3.9.0",
"typescript": "^3.9.5"
"typescript": "^3.9.6"
},
"ava": {
"extensions": ["ts"],
Expand Down
8 changes: 4 additions & 4 deletions packages/bcrypt/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[package]
name = "nodr-rs-bcrypt"
name = "node-rs-bcrypt"
version = "0.1.0"
authors = ["LongYinan <lynweklm@gmail.com>"]
edition = "2018"
Expand All @@ -11,8 +11,8 @@ crate-type = ["cdylib"]
radix64 = "0.6"
blowfish = { version = "0.5", features = ["bcrypt"] }
byteorder = "1"
napi-rs = { version = "0.3" }
napi-rs-derive = { version = "0.2" }
napi = { version = "0.4"}
napi-derive = { version = "0.4" }
rand = "0.7"
phf = { version = "0.8", features = ["macros"] }

Expand All @@ -23,4 +23,4 @@ jemallocator = { version = "0.3", features = ["disable_initial_exec_tls"] }
quickcheck = "0.9"

[build-dependencies]
napi-build = { version = "0.1" }
napi-build = { version = "0.2" }
14 changes: 7 additions & 7 deletions packages/bcrypt/src/hash_task.rs
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
use napi::{Buffer, Env, Error, JsString, Result, Status, Task, Value};
use napi::{Env, Error, JsBuffer, JsString, Result, Status, Task};

use crate::lib_bcrypt::hash;

pub struct HashTask {
buf: Value<Buffer>,
buf: JsBuffer,
cost: u32,
}

impl HashTask {
pub fn new(buf: Value<Buffer>, cost: u32) -> HashTask {
pub fn new(buf: JsBuffer, cost: u32) -> HashTask {
HashTask { buf, cost }
}

#[inline]
pub fn hash(buf: Value<Buffer>, cost: u32) -> Result<String> {
pub fn hash(buf: JsBuffer, cost: u32) -> Result<String> {
hash(buf, cost).map_err(|_| Error::from_status(Status::GenericFailure))
}
}
Expand All @@ -22,11 +22,11 @@ impl Task for HashTask {
type Output = String;
type JsValue = JsString;

fn compute(&self) -> Result<Self::Output> {
fn compute(&mut self) -> Result<Self::Output> {
Self::hash(self.buf, self.cost)
}

fn resolve(&self, env: &mut Env, output: Self::Output) -> Result<Value<Self::JsValue>> {
env.create_string(&output)
fn resolve(&self, env: &mut Env, output: Self::Output) -> Result<Self::JsValue> {
env.create_string(output.as_str())
}
}
77 changes: 31 additions & 46 deletions packages/bcrypt/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
#[macro_use]
extern crate napi_rs as napi;
extern crate napi;
#[macro_use]
extern crate napi_rs_derive;
extern crate napi_derive;

use crate::lib_bcrypt::{format_salt, gen_salt, Version};
use hash_task::HashTask;
use napi::{
Boolean, Buffer, CallContext, Env, Error, JsString, Number, Object, Result, Status, Value,
CallContext, Error, JsBoolean, JsBuffer, JsNumber, JsObject, JsString, Module, Result, Status,
};
use std::convert::TryInto;
use std::str::FromStr;
Expand All @@ -25,40 +25,25 @@ mod errors;
mod lib_bcrypt;

#[cfg(not(test))]
register_module!(test_module, init);

fn init(env: &Env, exports: &mut Value<Object>) -> Result<()> {
exports.set_property(
env.create_string("hash")?,
env.create_function("hash", js_async_hash)?,
)?;

exports.set_property(
env.create_string("hashSync")?,
env.create_function("hashSync", js_hash)?,
)?;

exports.set_property(
env.create_string("genSalt")?,
env.create_function("genSalt", js_salt)?,
)?;

exports.set_property(
env.create_string("verifySync")?,
env.create_function("verifySync", js_verify)?,
)?;

exports.set_property(
env.create_string("verify")?,
env.create_function("verify", js_async_verify)?,
)?;
register_module!(bcrypt, init);

fn init(module: &mut Module) -> Result<()> {
module.create_named_method("hash", js_async_hash)?;

module.create_named_method("hashSync", js_hash)?;

module.create_named_method("genSalt", js_salt)?;

module.create_named_method("verifySync", js_verify)?;

module.create_named_method("verify", js_async_verify)?;

Ok(())
}

#[js_function(2)]
fn js_salt(ctx: CallContext) -> Result<Value<JsString>> {
let round = ctx.get::<Number>(0)?;
fn js_salt(ctx: CallContext) -> Result<JsString> {
let round = ctx.get::<JsNumber>(0)?;
let version = ctx.get::<JsString>(1)?;
let salt = gen_salt();
let salt_string = format_salt(
Expand All @@ -70,34 +55,34 @@ fn js_salt(ctx: CallContext) -> Result<Value<JsString>> {
}

#[js_function(2)]
fn js_hash(ctx: CallContext) -> Result<Value<JsString>> {
let password = ctx.get::<Buffer>(0)?;
let cost = ctx.get::<Number>(1)?;
fn js_hash(ctx: CallContext) -> Result<JsString> {
let password = ctx.get::<JsBuffer>(0)?;
let cost = ctx.get::<JsNumber>(1)?;
let result = HashTask::hash(password, cost.try_into()?)?;
ctx.env.create_string(result.as_str())
}

#[js_function(2)]
fn js_async_hash(ctx: CallContext) -> Result<Value<Object>> {
let password = ctx.get::<Buffer>(0)?;
let cost = ctx.get::<Number>(1)?;
fn js_async_hash(ctx: CallContext) -> Result<JsObject> {
let password = ctx.get::<JsBuffer>(0)?;
let cost = ctx.get::<JsNumber>(1)?;
let task = HashTask::new(password, cost.try_into()?);
ctx.env.spawn(task)
}

#[js_function(2)]
fn js_verify(ctx: CallContext) -> Result<Value<Boolean>> {
let password = ctx.get::<Buffer>(0)?;
let hash = ctx.get::<Buffer>(1)?;
let result =
VerifyTask::verify(password, hash).map_err(|_| Error::from_status(Status::GenericFailure))?;
fn js_verify(ctx: CallContext) -> Result<JsBoolean> {
let password = ctx.get::<JsBuffer>(0)?;
let hash = ctx.get::<JsBuffer>(1)?;
let result = VerifyTask::verify(password, hash)
.map_err(|e| Error::new(Status::GenericFailure, format!("{}", e)))?;
ctx.env.get_boolean(result)
}

#[js_function(2)]
fn js_async_verify(ctx: CallContext) -> Result<Value<Object>> {
let password = ctx.get::<Buffer>(0)?;
let hash = ctx.get::<Buffer>(1)?;
fn js_async_verify(ctx: CallContext) -> Result<JsObject> {
let password = ctx.get::<JsBuffer>(0)?;
let hash = ctx.get::<JsBuffer>(1)?;
let task = VerifyTask::new(password, hash);
ctx.env.spawn(task)
}
18 changes: 9 additions & 9 deletions packages/bcrypt/src/verify_task.rs
Original file line number Diff line number Diff line change
@@ -1,37 +1,37 @@
use std::str;

use crate::lib_bcrypt::verify;
use napi::{Boolean, Buffer, Env, Error, Result, Status, Task, Value};
use napi::{Env, Error, JsBoolean, JsBuffer, Result, Status, Task};

pub struct VerifyTask {
password: Value<Buffer>,
hash: Value<Buffer>,
password: JsBuffer,
hash: JsBuffer,
}

impl VerifyTask {
pub fn new(password: Value<Buffer>, hash: Value<Buffer>) -> VerifyTask {
pub fn new(password: JsBuffer, hash: JsBuffer) -> VerifyTask {
Self { password, hash }
}

#[inline]
pub fn verify(password: Value<Buffer>, hash: Value<Buffer>) -> Result<bool> {
pub fn verify(password: JsBuffer, hash: JsBuffer) -> Result<bool> {
verify(
&password,
str::from_utf8(&hash).map_err(|_| Error::from_status(Status::StringExpected))?,
)
.map_err(|_| Error::from_status(Status::GenericFailure))
.map_err(|e| Error::new(Status::GenericFailure, format!("{}", e)))
}
}

impl Task for VerifyTask {
type Output = bool;
type JsValue = Boolean;
type JsValue = JsBoolean;

fn compute(&self) -> Result<Self::Output> {
fn compute(&mut self) -> Result<Self::Output> {
VerifyTask::verify(self.password, self.hash)
}

fn resolve(&self, env: &mut Env, output: Self::Output) -> Result<Value<Self::JsValue>> {
fn resolve(&self, env: &mut Env, output: Self::Output) -> Result<Self::JsValue> {
env.get_boolean(output)
}
}
6 changes: 3 additions & 3 deletions packages/crc32/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@ edition = "2018"
crate-type = ["cdylib"]

[dependencies]
napi-rs = { version = "0.3" }
napi-rs-derive = { version = "0.2" }
napi = { version = "0.4"}
napi-derive = { version = "0.4" }
crc32fast = "1.2"

[target.'cfg(all(unix, not(target_env = "musl")))'.dependencies]
jemallocator = { version = "0.3", features = ["disable_initial_exec_tls"] }

[build-dependencies]
napi-build = { version = "0.1" }
napi-build = { version = "0.2" }
26 changes: 13 additions & 13 deletions packages/crc32/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
#[macro_use]
extern crate napi_rs as napi;
extern crate napi;
#[macro_use]
extern crate napi_rs_derive;
extern crate napi_derive;

use crate::crc32::{crc32c as native_crc32c, crc32c_append};
use crc32fast::Hasher;
use napi::{Buffer, CallContext, Env, Number, Object, Result, Value};
use napi::{CallContext, JsBuffer, JsNumber, Module, Result};
use std::convert::TryInto;

#[cfg(all(unix, not(target_env = "musl")))]
Expand All @@ -16,18 +16,18 @@ mod bytes;
mod crc32;
mod crc32_table;

register_module!(test_module, init);
register_module!(crc32, init);

fn init(env: &Env, exports: &mut Value<Object>) -> Result<()> {
exports.set_named_property("crc32c", env.create_function("crc32c", crc32c)?)?;
exports.set_named_property("crc32", env.create_function("crc32", crc32)?)?;
fn init(module: &mut Module) -> Result<()> {
module.create_named_method("crc32c", crc32c)?;
module.create_named_method("crc32", crc32)?;
Ok(())
}

#[js_function(2)]
fn crc32c(ctx: CallContext) -> Result<Value<Number>> {
let input_data = ctx.get::<Buffer>(0)?;
let init_state = ctx.get::<Number>(1);
fn crc32c(ctx: CallContext) -> Result<JsNumber> {
let input_data = ctx.get::<JsBuffer>(0)?;
let init_state = ctx.get::<JsNumber>(1);
let result = if init_state.is_ok() {
crc32c_append(&input_data, init_state?.try_into()?)
} else {
Expand All @@ -37,9 +37,9 @@ fn crc32c(ctx: CallContext) -> Result<Value<Number>> {
}

#[js_function(2)]
fn crc32(ctx: CallContext) -> Result<Value<Number>> {
let input_data = ctx.get::<Buffer>(0)?;
let init_state = ctx.get::<Number>(1);
fn crc32(ctx: CallContext) -> Result<JsNumber> {
let input_data = ctx.get::<JsBuffer>(0)?;
let init_state = ctx.get::<JsNumber>(1);
let mut hasher = if init_state.is_ok() {
Hasher::new_with_initial(init_state?.try_into()?)
} else {
Expand Down
6 changes: 3 additions & 3 deletions packages/jieba/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@ crate-type = ["cdylib"]

[dependencies]
jieba-rs = { version = "0.5", features = ["default-dict", "tfidf", "textrank"] }
napi-rs = { version = "0.3" }
napi-rs-derive = { version = "0.2" }
napi = { version = "0.4"}
napi-derive = { version = "0.4" }
once_cell = "1.4"

[target.'cfg(all(unix, not(target_env = "musl")))'.dependencies]
jemallocator = { version = "0.3", features = ["disable_initial_exec_tls"] }

[build-dependencies]
napi-build = { version = "0.1" }
napi-build = { version = "0.2" }
Loading