# core/registries/tool.registry.ts

> 9 lines of code and 3 definitions.

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

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

## Definitions

- `registeredTools` (lexical_declaration, line 10, exported)
- `TOOLS` (lexical_declaration, line 3)
- `defineTool` (lexical_declaration, line 5, exported)

## Contained in

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

## Used by

- [core/loaders/tool.loader.ts](https://banes-lab.com/source/quality/core/loaders/tool.loader.ts.md)

## Linked from

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

## Source

```typescript
import type { ToolRunner } from "#types/tool.types";

const TOOLS = new Map<string, ToolRunner>();

export const defineTool = function defineTool(runner: ToolRunner): ToolRunner {
    TOOLS.set(runner.tool, runner);
    return runner;
};

export const registeredTools = function registeredTools(): ToolRunner[] {
    return [...TOOLS.values()].toSorted((a, b) => a.tool.localeCompare(b.tool));
};
```
