# core/registries/stylelint.registry.ts

> 10 lines of code and 3 definitions.

Tree: GovLab Quality
Language: typescript
Layer: infrastructure
Canonical: https://banes-lab.com/anatomy/quality#file-quality-core-registries-stylelint-registry-ts
Source text: https://banes-lab.com/source/quality/core/registries/stylelint.registry.ts.txt

Listed in [core/registries](https://banes-lab.com/api/source/quality/core/registries.md), after [core/registries/step.registry.ts](https://banes-lab.com/source/quality/core/registries/step.registry.ts.md) and before [core/registries/tool.registry.ts](https://banes-lab.com/source/quality/core/registries/tool.registry.ts.md).

## Definitions

- `registerCanon` (lexical_declaration, line 5, exported)
- `canonOf` (lexical_declaration, line 11, exported)
- `canonByRuleId` (lexical_declaration, line 3)

## Contained in

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

## Used by

- [core/adapters/stylelint.adapter.ts](https://banes-lab.com/source/quality/core/adapters/stylelint.adapter.ts.md)
- [core/formatters/stylelint.formatter.ts](https://banes-lab.com/source/quality/core/formatters/stylelint.formatter.ts.md)

## Linked from

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

## Source

```typescript
import type { GovlabStylelintMeta } from "#types/stylelint.types";

const canonByRuleId = new Map<string, string[]>();

export const registerCanon = function registerCanon(rule: GovlabStylelintMeta): void {
    if (rule.meta.canonical.length > 0) {
        canonByRuleId.set(rule.ruleId, rule.meta.canonical);
    }
};

export const canonOf = function canonOf(ruleId: string): readonly string[] {
    return canonByRuleId.get(ruleId) ?? [];
};
```
