crytic_compile.utils.npm
Module handling NPM related features
1""" 2Module handling NPM related features 3""" 4import json 5from pathlib import Path 6from typing import TYPE_CHECKING, Optional, Union, Dict 7 8# Cycle dependency 9if TYPE_CHECKING: 10 from crytic_compile.platform.solc_standard_json import SolcStandardJson 11 12 13def get_package_name(target_txt: Union[str, "SolcStandardJson"]) -> Optional[str]: 14 """Return the npm package's name 15 16 Args: 17 target_txt (Union[str,SolcStandardJson): path to the target 18 19 Returns: 20 Optional[str]: npm package name 21 """ 22 23 # Verify the target path is a string (exported zip archives are lists) 24 if not isinstance(target_txt, str): 25 return None 26 27 # Obtain the path the target string represents 28 try: 29 target = Path(target_txt) 30 if target.is_dir(): 31 package = Path(target, "package.json") 32 if package.exists(): 33 with open(package, "r", encoding="utf8") as file_desc: 34 try: 35 package_dict: Dict[str, str] = json.load(file_desc) 36 return package_dict.get("name", None) 37 except json.JSONDecodeError: 38 return None 39 return None 40 41 except (OSError, ValueError): 42 # Can happen if the target is a very large string, is_dir will throw an exception 43 return None
def
get_package_name( target_txt: Union[str, crytic_compile.platform.solc_standard_json.SolcStandardJson]) -> Union[str, NoneType]:
14def get_package_name(target_txt: Union[str, "SolcStandardJson"]) -> Optional[str]: 15 """Return the npm package's name 16 17 Args: 18 target_txt (Union[str,SolcStandardJson): path to the target 19 20 Returns: 21 Optional[str]: npm package name 22 """ 23 24 # Verify the target path is a string (exported zip archives are lists) 25 if not isinstance(target_txt, str): 26 return None 27 28 # Obtain the path the target string represents 29 try: 30 target = Path(target_txt) 31 if target.is_dir(): 32 package = Path(target, "package.json") 33 if package.exists(): 34 with open(package, "r", encoding="utf8") as file_desc: 35 try: 36 package_dict: Dict[str, str] = json.load(file_desc) 37 return package_dict.get("name", None) 38 except json.JSONDecodeError: 39 return None 40 return None 41 42 except (OSError, ValueError): 43 # Can happen if the target is a very large string, is_dir will throw an exception 44 return None
Return the npm package's name
Args: target_txt (Union[str,SolcStandardJson): path to the target
Returns: Optional[str]: npm package name