@@ -18,43 +18,50 @@ def web_module_path(name: str) -> Path:
1818
1919
2020def resolve_module_exports_from_file (file : Path , max_depth : int ) -> Set [str ]:
21- export_names , references = resolve_module_exports_from_source (file .read_text ())
2221 if max_depth == 0 :
23- logger .warning (f"Unable to resolve all exports for { file } " )
24- else :
25- for ref in references :
26- if urlparse (ref ).scheme : # is an absolute URL
27- export_names .update (resolve_module_exports_from_url (ref , max_depth - 1 ))
28- elif ref .startswith ("." ):
29- path = _resolve_relative_file_path (file , ref )
30- export_names .update (
31- resolve_module_exports_from_file (path , max_depth - 1 )
32- )
33- else :
34- logger .warning (f"Did not resolve exports for unknown location { ref } " )
22+ logger .warning (f"Did not resolve all exports for { file } - max depth reached" )
23+ return set ()
24+ elif not file .exists ():
25+ logger .warning (f"Did not resolve exports for unknown file { file } " )
26+ return set ()
27+
28+ export_names , references = resolve_module_exports_from_source (file .read_text ())
29+
30+ for ref in references :
31+ if urlparse (ref ).scheme : # is an absolute URL
32+ export_names .update (resolve_module_exports_from_url (ref , max_depth - 1 ))
33+ else :
34+ path = _resolve_relative_file_path (file , ref )
35+ export_names .update (resolve_module_exports_from_file (path , max_depth - 1 ))
36+
3537 return export_names
3638
3739
3840def resolve_module_exports_from_url (url : str , max_depth : int ) -> Set [str ]:
39- export_names , references = resolve_module_exports_from_source (
40- requests .get (url ).text
41- )
4241 if max_depth == 0 :
43- logger .warning (f"Unable to fully resolve all exports for { url } " )
44- else :
45- for ref in references :
46- url = _resolve_relative_url (url , ref )
47- export_names .update (resolve_module_exports_from_url (url , max_depth - 1 ))
42+ logger .warning (f"Did not resolve all exports for { url } - max depth reached" )
43+ return set ()
44+
45+ try :
46+ text = requests .get (url ).text
47+ except requests .exceptions .ConnectionError as error :
48+ reason = "" if error is None else " - {error.errno}"
49+ logger .warning ("Did not resolve exports for url " + url + reason )
50+ return set ()
51+
52+ export_names , references = resolve_module_exports_from_source (text )
53+
54+ for ref in references :
55+ url = _resolve_relative_url (url , ref )
56+ export_names .update (resolve_module_exports_from_url (url , max_depth - 1 ))
57+
4858 return export_names
4959
5060
5161def resolve_module_exports_from_source (content : str ) -> Tuple [Set [str ], Set [str ]]:
5262 names : Set [str ] = set ()
5363 references : Set [str ] = set ()
54- for export in _JS_EXPORT_PATTERN .findall (
55- # strip comments
56- _JS_LINE_COMMENT .sub ("" , content )
57- ):
64+ for export in _JS_EXPORT_PATTERN .findall (content ):
5865 export = export .rstrip (";" ).strip ()
5966 # Exporting individual features
6067 if export .startswith ("let " ):
@@ -112,5 +119,4 @@ def _resolve_relative_url(base_url: str, rel_url: str) -> str:
112119 return f"{ base_url } /{ rel_url } "
113120
114121
115- _JS_LINE_COMMENT = re .compile (r"//.*$" )
116122_JS_EXPORT_PATTERN = re .compile (r";?\s*export(?=\s+|{)(.*?(?:;|}\s*))" , re .MULTILINE )
0 commit comments