@@ -18,27 +18,41 @@ def module_name_suffix(name: str) -> str:
1818 return PurePosixPath (tail or head ).suffix or ".js"
1919
2020
21- def resolve_module_exports_from_file (file : Path , max_depth : int ) -> Set [str ]:
21+ def resolve_module_exports_from_file (
22+ file : Path ,
23+ max_depth : int ,
24+ is_re_export : bool = False ,
25+ ) -> Set [str ]:
2226 if max_depth == 0 :
2327 logger .warning (f"Did not resolve all exports for { file } - max depth reached" )
2428 return set ()
2529 elif not file .exists ():
2630 logger .warning (f"Did not resolve exports for unknown file { file } " )
2731 return set ()
2832
29- export_names , references = resolve_module_exports_from_source (file .read_text ())
33+ export_names , references = resolve_module_exports_from_source (
34+ file .read_text (), exclude_default = is_re_export
35+ )
3036
3137 for ref in references :
3238 if urlparse (ref ).scheme : # is an absolute URL
33- export_names .update (resolve_module_exports_from_url (ref , max_depth - 1 ))
39+ export_names .update (
40+ resolve_module_exports_from_url (ref , max_depth - 1 , is_re_export = True )
41+ )
3442 else :
3543 path = file .parent .joinpath (* ref .split ("/" ))
36- export_names .update (resolve_module_exports_from_file (path , max_depth - 1 ))
44+ export_names .update (
45+ resolve_module_exports_from_file (path , max_depth - 1 , is_re_export = True )
46+ )
3747
3848 return export_names
3949
4050
41- def resolve_module_exports_from_url (url : str , max_depth : int ) -> Set [str ]:
51+ def resolve_module_exports_from_url (
52+ url : str ,
53+ max_depth : int ,
54+ is_re_export : bool = False ,
55+ ) -> Set [str ]:
4256 if max_depth == 0 :
4357 logger .warning (f"Did not resolve all exports for { url } - max depth reached" )
4458 return set ()
@@ -50,16 +64,22 @@ def resolve_module_exports_from_url(url: str, max_depth: int) -> Set[str]:
5064 logger .warning ("Did not resolve exports for url " + url + reason )
5165 return set ()
5266
53- export_names , references = resolve_module_exports_from_source (text )
67+ export_names , references = resolve_module_exports_from_source (
68+ text , exclude_default = is_re_export
69+ )
5470
5571 for ref in references :
5672 url = _resolve_relative_url (url , ref )
57- export_names .update (resolve_module_exports_from_url (url , max_depth - 1 ))
73+ export_names .update (
74+ resolve_module_exports_from_url (url , max_depth - 1 , is_re_export = True )
75+ )
5876
5977 return export_names
6078
6179
62- def resolve_module_exports_from_source (content : str ) -> Tuple [Set [str ], Set [str ]]:
80+ def resolve_module_exports_from_source (
81+ content : str , exclude_default : bool
82+ ) -> Tuple [Set [str ], Set [str ]]:
6383 names : Set [str ] = set ()
6484 references : Set [str ] = set ()
6585
@@ -69,7 +89,9 @@ def resolve_module_exports_from_source(content: str) -> Tuple[Set[str], Set[str]
6989 # Exporting functions and classes
7090 names .update (_JS_FUNC_OR_CLS_EXPORT_PATTERN .findall (content ))
7191
92+ print (content )
7293 for export in _JS_GENERAL_EXPORT_PATTERN .findall (content ):
94+ print (export )
7395 export = export .rstrip (";" ).strip ()
7496 # Exporting individual features
7597 if export .startswith ("let " ):
@@ -100,7 +122,14 @@ def resolve_module_exports_from_source(content: str) -> Tuple[Set[str], Set[str]
100122 )
101123 elif not (export .startswith ("function " ) or export .startswith ("class " )):
102124 logger .warning (f"Unknown export type { export !r} " )
103- return {n .strip () for n in names }, {r .strip () for r in references }
125+
126+ names = {n .strip () for n in names }
127+ references = {r .strip () for r in references }
128+
129+ if exclude_default and "default" in names :
130+ names .remove ("default" )
131+
132+ return names , references
104133
105134
106135def _resolve_relative_url (base_url : str , rel_url : str ) -> str :
@@ -126,5 +155,5 @@ def _resolve_relative_url(base_url: str, rel_url: str) -> str:
126155 r";?\s*export\s+(?:function|class)\s+([a-zA-Z_$][0-9a-zA-Z_$]*)"
127156)
128157_JS_GENERAL_EXPORT_PATTERN = re .compile (
129- r";? \s*export(?=\s+|{)(.*?)(?: ;|$)" , re .MULTILINE
158+ r"(?:^|;) \s*export(?=\s+|{)(.*?)(?= ;|$)" , re .MULTILINE
130159)
0 commit comments