Skip to content

typescript

read_payload(payload)

Transform a typescript payload to a list of FileReport instances.

Parameters:

Name Type Description Default
payload str

The raw payload from typescript when --pretty false option.

required

Returns:

Type Description
OneOf[Issue, list[FileReport]]

A OneOf containing an Issue or a list of FileReport instances.

Source code in m/ci/celt/post_processors/typescript.py
def read_payload(payload: str) -> OneOf[Issue, list[FileReport]]:
    """Transform a typescript payload to a list of `FileReport` instances.

    Args:
        payload: The raw payload from typescript when `--pretty false` option.

    Returns:
        A `OneOf` containing an `Issue` or a list of `FileReport` instances.
    """
    regex = r'(.*)\((\d+),(\d+)\): error (\w+): (.*)'
    report: dict[str, list[Violation]] = {}
    for line in payload.splitlines():
        if line.startswith(' '):
            continue
        match = re.match(regex, line)
        if match:
            group = match.groups()
            violation = Violation(
                file_path=group[0],
                line=int(group[1]),
                column=int(group[2]),
                rule_id=group[3],
                message=group[4],
            )
            if violation.file_path not in report:
                report[violation.file_path] = []
            report[violation.file_path].append(violation)
    return Good([
        FileReport(file_path=name, violations=violations)
        for name, violations in report.items()
    ])