# core/aggregators/catalog.aggregator.ts

> 11 lines of code and 5 definitions.

Tree: GovLab Quality
Language: typescript
Layer: processing
Canonical: https://banes-lab.com/anatomy/quality#file-quality-core-aggregators-catalog-aggregator-ts
Source text: https://banes-lab.com/source/quality/core/aggregators/catalog.aggregator.ts.txt

Listed in [core/aggregators](https://banes-lab.com/api/source/quality/core/aggregators.md), before [core/aggregators/concern.aggregator.ts](https://banes-lab.com/source/quality/core/aggregators/concern.aggregator.ts.md).

## Definitions

- `tallyBy` (lexical_declaration, line 5, exported)
- `NONE` (lexical_declaration, line 3)
- `counts` (lexical_declaration, line 6, exported)
- `value` (lexical_declaration, line 8, exported)
- `bucket` (lexical_declaration, line 9, exported)

## Contained in

- [core/aggregators](https://banes-lab.com/anatomy/quality/folder-quality-core-aggregators.md)

## Used by

- [core/producers/tool.clang-tidy.producer.ts](https://banes-lab.com/source/quality/core/producers/tool.clang-tidy.producer.ts.md)
- [core/producers/tool.clippy.producer.ts](https://banes-lab.com/source/quality/core/producers/tool.clippy.producer.ts.md)
- [core/producers/tool.detekt.producer.ts](https://banes-lab.com/source/quality/core/producers/tool.detekt.producer.ts.md)
- [core/producers/tool.phpcs.producer.ts](https://banes-lab.com/source/quality/core/producers/tool.phpcs.producer.ts.md)
- [core/producers/tool.phpmd.producer.ts](https://banes-lab.com/source/quality/core/producers/tool.phpmd.producer.ts.md)
- [core/producers/tool.pylint.producer.ts](https://banes-lab.com/source/quality/core/producers/tool.pylint.producer.ts.md)
- [core/producers/tool.rubocop.producer.ts](https://banes-lab.com/source/quality/core/producers/tool.rubocop.producer.ts.md)
- [core/producers/tool.sqlfluff.producer.ts](https://banes-lab.com/source/quality/core/producers/tool.sqlfluff.producer.ts.md)
- [core/producers/tool.staticcheck.producer.ts](https://banes-lab.com/source/quality/core/producers/tool.staticcheck.producer.ts.md)

## Linked from

- [core/producers](https://banes-lab.com/anatomy/quality/folder-quality-core-producers.md)

## Source

```typescript
import type { CatalogRule } from "#types/catalog.types";

const NONE = "none";

export const tallyBy = function tallyBy(rules: readonly CatalogRule[], key: string): Record<string, number> {
    const counts: Record<string, number> = {};
    for (const rule of rules) {
        const value = rule[key];
        const bucket = typeof value === "string" ? value : NONE;
        counts[bucket] = (counts[bucket] ?? 0) + 1;
    }
    return counts;
};
```
