Skip to content

Commit

Permalink
Bump napi-rs to latest (#8838)
Browse files Browse the repository at this point in the history
  • Loading branch information
devongovett committed Feb 19, 2023
1 parent 9d1933b commit 4472631
Show file tree
Hide file tree
Showing 37 changed files with 388 additions and 441 deletions.
4 changes: 4 additions & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ dist
/test/dist
/test/input
*.min.js
packages/optimizers/image/native.js
packages/transformers/js/native.js
packages/utils/fs-search/index.js
packages/utils/hash/index.js

coverage
node_modules
Expand Down
20 changes: 10 additions & 10 deletions Cargo.lock

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

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
"devDependencies": {
"@babel/core": "^7.12.0",
"@khanacademy/flow-to-ts": "^0.5.2",
"@napi-rs/cli": "^2.6.2",
"@napi-rs/cli": "^2.14.8",
"@parcel/babel-register": "2.8.3",
"@types/node": "^15.12.4",
"cross-env": "^7.0.0",
Expand Down
2 changes: 2 additions & 0 deletions packages/optimizers/image/.gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
*.node
native.js
native.d.ts
7 changes: 4 additions & 3 deletions packages/optimizers/image/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,17 @@
authors = ["Devon Govett <devongovett@gmail.com>"]
name = "parcel-image"
version = "0.1.0"
edition = "2021"

[lib]
crate-type = ["cdylib"]

[dependencies]
napi = {version = "2.3.3", default-features = false, features = ["napi4", "compat-mode"]}
napi-derive = "2"
napi = {version = "2.10.6", features = ["napi4", "compat-mode"]}
napi-derive = "2.9.4"
oxipng = "5.0.0"
mozjpeg-sys = "1.0.0"
libc = "0.2"

[build-dependencies]
napi-build = "1"
napi-build = "2"
22 changes: 0 additions & 22 deletions packages/optimizers/image/native.js

This file was deleted.

9 changes: 4 additions & 5 deletions packages/optimizers/image/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,18 +28,17 @@
"name": "parcel-image"
},
"scripts": {
"build": "napi build --platform",
"build-release": "napi build --platform --release"
"build": "napi build --platform --js native.js --dts native.d.ts",
"build-release": "napi build --platform --release --js native.js --dts native.d.ts"
},
"dependencies": {
"@parcel/diagnostic": "2.8.3",
"@parcel/plugin": "2.8.3",
"@parcel/utils": "2.8.3",
"@parcel/workers": "2.8.3",
"detect-libc": "^1.0.3"
"@parcel/workers": "2.8.3"
},
"devDependencies": {
"@napi-rs/cli": "^2.6.2",
"@napi-rs/cli": "^2.14.8",
"tiny-benchy": "^1.0.2"
}
}
5 changes: 3 additions & 2 deletions packages/optimizers/image/src/ImageOptimizer.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,9 @@ async function loadOnMainThreadIfNeeded() {
process.platform === 'linux' &&
WorkerFarm.isWorker()
) {
let {family, version} = require('detect-libc');
if (family === 'glibc' && parseFloat(version) <= 2.17) {
// $FlowFixMe
let {glibcVersionRuntime} = process.report.getReport().header;
if (glibcVersionRuntime && parseFloat(glibcVersionRuntime) <= 2.17) {
let api = WorkerFarm.getWorkerApi();
await api.callMaster({
location: __dirname + '/loadNative.js',
Expand Down
31 changes: 8 additions & 23 deletions packages/optimizers/image/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,41 +1,32 @@
extern crate napi;
#[macro_use]
extern crate napi_derive;
extern crate libc;
extern crate mozjpeg_sys;
extern crate oxipng;

use mozjpeg_sys::*;
use napi::{CallContext, Env, Error, JsBuffer, JsObject, JsString, Result};
use napi::bindgen_prelude::*;
use napi::{Env, Error, JsBuffer, Result};
use napi_derive::napi;
use oxipng::{optimize_from_memory, Deflaters, Headers, Options};
use std::mem;
use std::ptr;
use std::slice;

#[js_function(2)]
fn optimize(ctx: CallContext) -> Result<JsBuffer> {
let k = ctx.get::<JsString>(0)?.into_utf8()?;
let kind = k.as_str()?;
let buf = ctx.get::<JsBuffer>(1)?.into_value()?;
#[napi]
pub fn optimize(kind: String, buf: Buffer, env: Env) -> Result<JsBuffer> {
let slice = buf.as_ref();

match kind {
match kind.as_ref() {
"png" => {
let options = Options {
deflate: Deflaters::Libdeflater,
strip: Headers::Safe,
..Default::default()
};
match optimize_from_memory(slice, &options) {
Ok(res) => Ok(ctx.env.create_buffer_with_data(res)?.into_raw()),
Ok(res) => Ok(env.create_buffer_with_data(res)?.into_raw()),
Err(err) => Err(Error::from_reason(format!("{}", err))),
}
}
"jpg" | "jpeg" => unsafe {
match optimize_jpeg(slice) {
Ok(res) => Ok(
ctx
.env
env
.create_buffer_with_borrowed_data(res.as_ptr(), res.len(), res.as_mut_ptr(), finalize)?
.into_raw(),
),
Expand Down Expand Up @@ -137,9 +128,3 @@ extern "C" fn unwind_error_exit(cinfo: &mut jpeg_common_struct) {
}

extern "C" fn silence_message(_cinfo: &mut jpeg_common_struct, _level: c_int) {}

#[module_exports]
fn init(mut exports: JsObject, _env: Env) -> Result<()> {
exports.create_named_method("optimize", optimize)?;
Ok(())
}
3 changes: 2 additions & 1 deletion packages/transformers/js/.gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
target
*.node

native.js
native.d.ts
2 changes: 1 addition & 1 deletion packages/transformers/js/core/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
authors = ["Devon Govett <devongovett@gmail.com>"]
name = "parcel-js-swc-core"
version = "0.1.0"
edition = "2018"
edition = "2021"

[lib]
crate-type = ["rlib"]
Expand Down
2 changes: 1 addition & 1 deletion packages/transformers/js/core/src/dependency_collector.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ use std::fmt;
use std::path::Path;

use serde::{Deserialize, Serialize};
use swc_atoms::JsWord;
use swc_atoms::{js_word, JsWord};
use swc_common::{Mark, SourceMap, Span, DUMMY_SP};
use swc_ecmascript::ast::{self, Callee, Id, MemberProp};
use swc_ecmascript::visit::{Fold, FoldWith};
Expand Down
2 changes: 1 addition & 1 deletion packages/transformers/js/core/src/global_replacer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use path_slash::PathBufExt;
use std::collections::HashSet;
use std::path::Path;

use swc_atoms::JsWord;
use swc_atoms::{js_word, JsWord};
use swc_common::{Mark, SourceMap, SyntaxContext, DUMMY_SP};
use swc_ecmascript::ast::{self, ComputedPropName, Id};
use swc_ecmascript::visit::{Fold, FoldWith};
Expand Down
2 changes: 1 addition & 1 deletion packages/transformers/js/core/src/hoist.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use serde::{Deserialize, Serialize};
use std::collections::hash_map::DefaultHasher;
use std::collections::{HashMap, HashSet};
use std::hash::Hasher;
use swc_atoms::JsWord;
use swc_atoms::{js_word, JsWord};
use swc_common::{sync::Lrc, Mark, Span, SyntaxContext, DUMMY_SP};
use swc_ecmascript::ast::*;
use swc_ecmascript::visit::{Fold, FoldWith, Visit, VisitWith};
Expand Down
13 changes: 0 additions & 13 deletions packages/transformers/js/core/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,16 +1,3 @@
extern crate swc_common;
extern crate swc_ecmascript;
#[macro_use]
extern crate swc_atoms;
extern crate data_encoding;
extern crate dunce;
extern crate inflector;
extern crate path_slash;
extern crate pathdiff;
extern crate serde;
extern crate serde_bytes;
extern crate sha1;

mod decl_collector;
mod dependency_collector;
mod env_replacer;
Expand Down
2 changes: 1 addition & 1 deletion packages/transformers/js/core/src/modules.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use crate::id;
use crate::utils::{get_undefined_ident, match_export_name, match_export_name_ident};
use inflector::Inflector;
use std::collections::{HashMap, HashSet};
use swc_atoms::JsWord;
use swc_atoms::{js_word, JsWord};
use swc_common::{Mark, Span, SyntaxContext, DUMMY_SP};
use swc_ecmascript::ast::*;
use swc_ecmascript::preset_env::{Feature, Versions};
Expand Down
2 changes: 1 addition & 1 deletion packages/transformers/js/core/src/utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use std::collections::HashSet;

use crate::id;
use serde::{Deserialize, Serialize};
use swc_atoms::JsWord;
use swc_atoms::{js_word, JsWord};
use swc_common::{Mark, Span, SyntaxContext, DUMMY_SP};
use swc_ecmascript::ast::{self, Id};

Expand Down
8 changes: 4 additions & 4 deletions packages/transformers/js/napi/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@
authors = ["Devon Govett <devongovett@gmail.com>"]
name = "parcel-js-swc-napi"
version = "0.1.0"
edition = "2018"
edition = "2021"

[lib]
crate-type = ["cdylib"]

[dependencies]
napi = {version = "2.3.3", default-features = false, features = ["napi4", "compat-mode", "serde-json"]}
napi-derive = "2"
napi = {version = "2.10.6", features = ["napi4", "compat-mode", "serde-json"]}
napi-derive = "2.9.4"
parcel-js-swc-core = { path = "../core" }

[target.'cfg(target_os = "macos")'.dependencies]
Expand All @@ -19,4 +19,4 @@ jemallocator = { version = "0.3.2", features = ["disable_initial_exec_tls"] }
mimalloc = { version = "0.1.25", default-features = false }

[build-dependencies]
napi-build = { version = "1" }
napi-build = "2"
24 changes: 6 additions & 18 deletions packages/transformers/js/napi/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
extern crate napi;
#[macro_use]
extern crate napi_derive;
extern crate parcel_js_swc_core;

use napi::{CallContext, JsObject, JsUnknown, Result};
use napi::{Env, JsObject, JsUnknown, Result};
use napi_derive::napi;

#[cfg(target_os = "macos")]
#[global_allocator]
Expand All @@ -13,18 +9,10 @@ static GLOBAL: jemallocator::Jemalloc = jemallocator::Jemalloc;
#[global_allocator]
static ALLOC: mimalloc::MiMalloc = mimalloc::MiMalloc;

#[js_function(1)]
fn transform(ctx: CallContext) -> Result<JsUnknown> {
let opts = ctx.get::<JsObject>(0)?;
let config: parcel_js_swc_core::Config = ctx.env.from_js_value(opts)?;
#[napi]
pub fn transform(opts: JsObject, env: Env) -> Result<JsUnknown> {
let config: parcel_js_swc_core::Config = env.from_js_value(opts)?;

let result = parcel_js_swc_core::transform(config)?;
ctx.env.to_js_value(&result)
}

#[module_exports]
fn init(mut exports: JsObject) -> Result<()> {
exports.create_named_method("transform", transform)?;

Ok(())
env.to_js_value(&result)
}
31 changes: 0 additions & 31 deletions packages/transformers/js/native.js

This file was deleted.

3 changes: 3 additions & 0 deletions packages/transformers/js/native.js.flow
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
// @flow
declare export function transform(opts: any): any;
declare export var init: ?Promise<void>;

0 comments on commit 4472631

Please sign in to comment.