# core/selectors/catalog.selector.ts

> 10 lines of code and 2 definitions.

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

Listed in [core/selectors](https://banes-lab.com/api/source/quality/core/selectors.md), after [core/selectors/block.selector.ts](https://banes-lab.com/source/quality/core/selectors/block.selector.ts.md) and before [core/selectors/concept.selector.ts](https://banes-lab.com/source/quality/core/selectors/concept.selector.ts.md).

## Definitions

- `distinctRules` (lexical_declaration, line 3, exported)
- `byId` (lexical_declaration, line 4, exported)

## Contained in

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

## Source

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

export const distinctRules = function distinctRules(rules: readonly CatalogRule[]): CatalogRule[] {
    const byId = new Map<string, CatalogRule>();
    for (const rule of rules) {
        if (!byId.has(rule.ruleId)) {
            byId.set(rule.ruleId, rule);
        }
    }
    return [...byId.values()];
};
```
