|
3 | 3 | use std::collections::HashMap; |
4 | 4 | use std::collections::HashSet; |
5 | 5 |
|
| 6 | +use crate::ParsedSource; |
| 7 | +use crate::ProgramRef; |
6 | 8 | use crate::swc::ast::*; |
7 | 9 | use crate::swc::atoms::Atom; |
8 | | -use crate::swc::ecma_visit::noop_visit_type; |
9 | 10 | use crate::swc::ecma_visit::Visit; |
10 | 11 | use crate::swc::ecma_visit::VisitWith; |
11 | | -use crate::ParsedSource; |
12 | | -use crate::ProgramRef; |
| 12 | +use crate::swc::ecma_visit::noop_visit_type; |
13 | 13 |
|
14 | 14 | pub type CjsAnalysis = crate::ModuleExportsAndReExports; |
15 | 15 |
|
@@ -104,18 +104,17 @@ impl CjsVisitor { |
104 | 104 | } |
105 | 105 | // Object.defineProperty(exports, key, { ... }); |
106 | 106 | Expr::Ident(object_define_prop_ident) => { |
107 | | - if let Some(obj_lit) = call_expr.args[2].expr.as_object() { |
108 | | - if let Some(get_prop) = get_object_define_get_prop(obj_lit) { |
109 | | - // get: function () { |
110 | | - // return _external002[key]; |
111 | | - // } |
112 | | - if let Some(Expr::Member(member)) = get_prop_return_expr(get_prop) { |
113 | | - if let Some(require_value) = self |
114 | | - .get_member_require_value(member, &object_define_prop_ident.sym) |
115 | | - { |
116 | | - self.add_reexport(&require_value); |
117 | | - } |
118 | | - } |
| 107 | + if let Some(obj_lit) = call_expr.args[2].expr.as_object() |
| 108 | + && let Some(get_prop) = get_object_define_get_prop(obj_lit) |
| 109 | + { |
| 110 | + // get: function () { |
| 111 | + // return _external002[key]; |
| 112 | + // } |
| 113 | + if let Some(Expr::Member(member)) = get_prop_return_expr(get_prop) |
| 114 | + && let Some(require_value) = self |
| 115 | + .get_member_require_value(member, &object_define_prop_ident.sym) |
| 116 | + { |
| 117 | + self.add_reexport(&require_value); |
119 | 118 | } |
120 | 119 | } |
121 | 120 | } |
@@ -167,14 +166,13 @@ impl Visit for CjsVisitor { |
167 | 166 |
|
168 | 167 | fn visit_var_decl(&mut self, stmt: &VarDecl) { |
169 | 168 | for decl in &stmt.decls { |
170 | | - if let Some(id) = decl.name.as_ident() { |
171 | | - if let Some(init) = &decl.init { |
172 | | - if let Some(require_value) = get_expr_require_value(init) { |
173 | | - self |
174 | | - .var_assignments |
175 | | - .insert(id.id.sym.to_string(), require_value.to_string()); |
176 | | - } |
177 | | - } |
| 169 | + if let Some(id) = decl.name.as_ident() |
| 170 | + && let Some(init) = &decl.init |
| 171 | + && let Some(require_value) = get_expr_require_value(init) |
| 172 | + { |
| 173 | + self |
| 174 | + .var_assignments |
| 175 | + .insert(id.id.sym.to_string(), require_value.to_string()); |
178 | 176 | } |
179 | 177 | } |
180 | 178 | stmt.visit_children_with(self); |
@@ -214,10 +212,10 @@ impl Visit for CjsVisitor { |
214 | 212 | fn is_export_callee(callee: &Callee) -> bool { |
215 | 213 | if let Some(member) = get_callee_member_expr(callee) { |
216 | 214 | // ex. tslib.__exportStar |
217 | | - if member.obj.as_ident().is_some() { |
218 | | - if let Some(right_side) = get_member_prop_ident_text(&member.prop) { |
219 | | - return matches!(right_side, "__exportStar" | "__export"); |
220 | | - } |
| 215 | + if member.obj.as_ident().is_some() |
| 216 | + && let Some(right_side) = get_member_prop_ident_text(&member.prop) |
| 217 | + { |
| 218 | + return matches!(right_side, "__exportStar" | "__export"); |
221 | 219 | } |
222 | 220 | } else if let Some(ident) = get_callee_ident(callee) { |
223 | 221 | return matches!(&*ident.sym, "__exportStar" | "__export"); |
@@ -273,12 +271,11 @@ impl Visit for CjsVisitor { |
273 | 271 | // * `exports[key] = _something[key]; |
274 | 272 | let computed = left_member.prop.as_computed(); |
275 | 273 | let computed_ident = computed.and_then(|c| c.expr.as_ident()); |
276 | | - if let Some(computed_ident) = computed_ident { |
277 | | - if let Some(require_value) = |
| 274 | + if let Some(computed_ident) = computed_ident |
| 275 | + && let Some(require_value) = |
278 | 276 | self.get_member_require_value(right_member, &computed_ident.sym) |
279 | | - { |
280 | | - self.add_reexport(&require_value); |
281 | | - } |
| 277 | + { |
| 278 | + self.add_reexport(&require_value); |
282 | 279 | } |
283 | 280 | } |
284 | 281 | } else if let Some(right_expr) = assign_expr.right.as_assign() { |
@@ -307,10 +304,10 @@ fn is_module_exports_expr(expr: &Expr) -> bool { |
307 | 304 | } |
308 | 305 |
|
309 | 306 | fn is_module_exports_member(member_expr: &MemberExpr) -> bool { |
310 | | - if let Some(obj_ident) = member_expr.obj.as_ident() { |
311 | | - if obj_ident.sym == *"module" { |
312 | | - return get_member_prop_text(&member_expr.prop) == Some("exports"); |
313 | | - } |
| 307 | + if let Some(obj_ident) = member_expr.obj.as_ident() |
| 308 | + && obj_ident.sym == *"module" |
| 309 | + { |
| 310 | + return get_member_prop_text(&member_expr.prop) == Some("exports"); |
314 | 311 | } |
315 | 312 | false |
316 | 313 | } |
@@ -559,10 +556,10 @@ mod test { |
559 | 556 | use pretty_assertions::assert_eq; |
560 | 557 | use std::cell::RefCell; |
561 | 558 |
|
562 | | - use crate::parse_script; |
563 | 559 | use crate::MediaType; |
564 | 560 | use crate::ModuleSpecifier; |
565 | 561 | use crate::ParseParams; |
| 562 | + use crate::parse_script; |
566 | 563 |
|
567 | 564 | use super::*; |
568 | 565 |
|
|
0 commit comments