# core/formatters/validation.formatter.ts

> 11 lines of code and 1 definition.

Tree: Bane's Lab Build Scripts
Language: typescript
Layer: processing
Canonical: https://banes-lab.com/anatomy/build-scripts#file-build-scripts-core-formatters-validation-formatter-ts
Source text: https://banes-lab.com/source/build-scripts/core/formatters/validation.formatter.ts.txt

Listed in [core/formatters](https://banes-lab.com/api/source/build-scripts/core/formatters.md), after [core/formatters/tree.formatter.ts](https://banes-lab.com/source/build-scripts/core/formatters/tree.formatter.ts.md) and before [core/formatters/vocabulary.formatter.ts](https://banes-lab.com/source/build-scripts/core/formatters/vocabulary.formatter.ts.md).

## Definitions

- `reportOf` (lexical_declaration, line 4, exported)

## Contained in

- [core/formatters](https://banes-lab.com/anatomy/build-scripts/folder-build-scripts-core-formatters.md)

## Uses

- [configuration/strings/validation.strings.ts](https://banes-lab.com/source/build-scripts/configuration/strings/validation.strings.ts.md)

## Linked from

- [configuration/strings](https://banes-lab.com/anatomy/build-scripts/folder-build-scripts-configuration-strings.md)

## Source

```typescript
import { DISCOVERY_CLEAN, discoveryFindingsHeading } from "#configuration/strings/validation.strings";
import type { Finding } from "#types/validation.types";

export const reportOf = function reportOf(findings: readonly Finding[]): string {
    return findings.length === 0
        ? DISCOVERY_CLEAN
        : [
              discoveryFindingsHeading(findings.length),
              ...findings.map((finding) => `  ${finding.file}  ${finding.message}`),
              "",
          ].join("\n");
};
```
