@@ -5,58 +5,26 @@ use swc_css_ast::Stylesheet;
5
5
use swc_css_visit:: VisitMutWith ;
6
6
use tracing:: debug;
7
7
8
- use crate :: ast:: { build_css_ast, build_js_ast} ;
9
8
use crate :: build:: FileRequest ;
10
9
use crate :: compiler:: Context ;
11
- use crate :: css_modules:: { compile_css_modules, generate_code_for_css_modules, is_css_modules_path} ;
12
- use crate :: load:: { Asset , Content } ;
10
+ use crate :: load:: Content ;
13
11
use crate :: module:: ModuleAst ;
12
+ use crate :: plugin:: PluginParseParam ;
14
13
15
14
pub fn parse (
16
15
content : & Content ,
17
16
request : & FileRequest ,
18
17
context : & Arc < Context > ,
19
18
) -> Result < ModuleAst > {
20
19
debug ! ( "parse {:?}" , request) ;
21
- let ast = match content {
22
- Content :: Js ( content) => parse_js ( content, request, context) ?,
23
- Content :: Css ( content) => parse_css ( content, request, context) ?,
24
- Content :: Assets ( asset) => parse_asset ( asset, request, context) ?,
25
- } ;
20
+ let ast = context
21
+ . plugin_driver
22
+ . parse ( & PluginParseParam { request, content } , context) ?
23
+ . unwrap ( ) ;
26
24
Ok ( ast)
27
25
}
28
26
29
- fn parse_js ( content : & str , request : & FileRequest , context : & Arc < Context > ) -> Result < ModuleAst > {
30
- let ast = build_js_ast ( & request. path , content, context) ?;
31
- Ok ( ModuleAst :: Script ( ast) )
32
- }
33
-
34
- fn parse_css ( content : & str , request : & FileRequest , context : & Arc < Context > ) -> Result < ModuleAst > {
35
- let mut ast = build_css_ast ( & request. path , content, context) ?;
36
- let is_modules = request. has_query ( "modules" ) ;
37
- // parse css module as js
38
- if is_css_modules_path ( & request. path ) && !is_modules {
39
- let code = generate_code_for_css_modules ( & request. path , & mut ast) ;
40
- let js_ast = build_js_ast ( & request. path , & code, context) ?;
41
- Ok ( ModuleAst :: Script ( js_ast) )
42
- } else {
43
- // TODO: move to transform step
44
- // compile css compat
45
- compile_css_compat ( & mut ast) ;
46
- // for mako css module, compile it and parse it as css
47
- if is_modules {
48
- compile_css_modules ( & request. path , & mut ast) ;
49
- }
50
- Ok ( ModuleAst :: Css ( ast) )
51
- }
52
- }
53
-
54
- fn parse_asset ( asset : & Asset , request : & FileRequest , context : & Arc < Context > ) -> Result < ModuleAst > {
55
- let ast = build_js_ast ( & request. path , & asset. content , context) ?;
56
- Ok ( ModuleAst :: Script ( ast) )
57
- }
58
-
59
- fn compile_css_compat ( ast : & mut Stylesheet ) {
27
+ pub fn compile_css_compat ( ast : & mut Stylesheet ) {
60
28
ast. visit_mut_with ( & mut swc_css_compat:: compiler:: Compiler :: new (
61
29
swc_css_compat:: compiler:: Config {
62
30
process : swc_css_compat:: feature:: Features :: NESTING ,
0 commit comments