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