Skip to content

Commit 366d923

Browse files
committed
Refactor JS transformer to use fallible visitor api
1 parent 72bf818 commit 366d923

File tree

3 files changed

+157
-225
lines changed

3 files changed

+157
-225
lines changed

node/src/lib.rs

Lines changed: 5 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -79,12 +79,6 @@ fn transform(ctx: CallContext) -> napi::Result<JsUnknown> {
7979
let code = unsafe { std::str::from_utf8_unchecked(&config.code) };
8080
let res = compile(code, &config, &mut visitor);
8181

82-
if let Some(visitor) = &visitor {
83-
if let Some(err) = visitor.errors.first() {
84-
return Err(err.clone());
85-
}
86-
}
87-
8882
match res {
8983
Ok(res) => res.into_js(*ctx.env),
9084
Err(err) => err.throw(*ctx.env, Some(code)),
@@ -106,12 +100,6 @@ fn transform_style_attribute(ctx: CallContext) -> napi::Result<JsUnknown> {
106100
let code = unsafe { std::str::from_utf8_unchecked(&config.code) };
107101
let res = compile_attr(code, &config, &mut visitor);
108102

109-
if let Some(visitor) = &visitor {
110-
if let Some(err) = visitor.errors.first() {
111-
return Err(err.clone());
112-
}
113-
}
114-
115103
match res {
116104
Ok(res) => res.into_js(ctx),
117105
Err(err) => err.throw(*ctx.env, Some(code)),
@@ -141,15 +129,9 @@ mod bundle {
141129
let res = compile_bundle(
142130
&fs,
143131
&config,
144-
visitor.as_mut().map(|visitor| {
145-
|stylesheet: &mut StyleSheet| {
146-
stylesheet.visit(visitor).unwrap();
147-
if let Some(err) = visitor.errors.first() {
148-
return Err(err.clone());
149-
}
150-
Ok(())
151-
}
152-
}),
132+
visitor
133+
.as_mut()
134+
.map(|visitor| |stylesheet: &mut StyleSheet| stylesheet.visit(visitor)),
153135
);
154136

155137
match res {
@@ -396,8 +378,7 @@ mod bundle {
396378
std::ptr::null_mut(),
397379
0,
398380
move |ctx: ThreadSafeCallContext<VisitMessage>| {
399-
ctx.value.stylesheet.visit(&mut visitor).unwrap();
400-
if let Some(err) = visitor.errors.first() {
381+
if let Err(err) = ctx.value.stylesheet.visit(&mut visitor) {
401382
ctx.value.tx.send(Err(err.clone())).expect("send error");
402383
return Ok(());
403384
}
@@ -638,7 +619,7 @@ fn compile<'i>(
638619
)?;
639620

640621
if let Some(visitor) = visitor.as_mut() {
641-
stylesheet.visit(visitor).unwrap();
622+
stylesheet.visit(visitor).map_err(CompileError::JsError)?;
642623
}
643624

644625
stylesheet.minify(MinifyOptions {

0 commit comments

Comments
 (0)