# core/selectors/representation.selector.ts

> 14 lines of code and 4 definitions.

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

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

## Definitions

- `runtimeFor` (lexical_declaration, line 12, exported)
- `registeredRepresentations` (lexical_declaration, line 8, exported)
- `applicableAnalyses` (lexical_declaration, line 16, exported)
- `RuntimeFactory` (type_alias_declaration, line 6)

## Contained in

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

## Uses

- [core/registries/representation.registry.ts](https://banes-lab.com/source/patterns/core/registries/representation.registry.ts.md)

## Used by

- [core/predicates/representation.predicate.ts](https://banes-lab.com/source/patterns/core/predicates/representation.predicate.ts.md)

## Linked from

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

## Source

```typescript
import { definedRepresentations, definitionOf } from "#core/registries/representation.registry";
import type { AnalysisTag } from "#types/axis.types";
import { BUILTIN_REPRESENTATIONS } from "#core/loaders/representation.loader";
import type { RepresentationRuntime } from "#types/representation.types";

type RuntimeFactory = (field: string) => RepresentationRuntime;

export const registeredRepresentations = function registeredRepresentations(): string[] {
    return [...new Set([...BUILTIN_REPRESENTATIONS, ...definedRepresentations()])].sort((a, b) => a.localeCompare(b));
};

export const runtimeFor = function runtimeFor(name: string): RuntimeFactory | undefined {
    return definitionOf(name)?.create;
};

export const applicableAnalyses = function applicableAnalyses(representation: string): readonly AnalysisTag[] {
    return definitionOf(representation)?.applicable ?? [];
};
```
