# core/selectors/payload.selector.ts

> 19 lines of code and 8 definitions.

Tree: Build tree
Language: typescript
Layer: application
Canonical: https://banes-lab.com/anatomy/build#file-build-core-selectors-payload-selector-ts
Source text: https://banes-lab.com/source/build/core/selectors/payload.selector.ts.txt

Listed in [core/selectors](https://banes-lab.com/api/source/build/core/selectors.md).

## Definitions

- `isRecord` (lexical_declaration, line 3, exported)
- `textAt` (lexical_declaration, line 7, exported)
- `listAt` (lexical_declaration, line 12, exported)
- `tabsIn` (lexical_declaration, line 22, exported)
- `contentOf` (lexical_declaration, line 17, exported)
- `value` (lexical_declaration, line 8, exported)
- `held` (lexical_declaration, line 13, exported)
- `content` (lexical_declaration, line 18, exported)

## Used by

- [core/converters/section.converter.ts](https://banes-lab.com/source/build/core/converters/section.converter.ts.md)
- [core/loaders/coverage.loader.ts](https://banes-lab.com/source/build/core/loaders/coverage.loader.ts.md)
- [core/loaders/leak.loader.ts](https://banes-lab.com/source/build/core/loaders/leak.loader.ts.md)
- [core/loaders/panel.loader.ts](https://banes-lab.com/source/build/core/loaders/panel.loader.ts.md)
- [core/loaders/payload.loader.ts](https://banes-lab.com/source/build/core/loaders/payload.loader.ts.md)
- [core/loaders/readme.loader.ts](https://banes-lab.com/source/build/core/loaders/readme.loader.ts.md)

## Source

```typescript
import { PAYLOAD_CONTENT_KEY, PAYLOAD_TABS_KEY } from "#configuration/constants/leak.constants";

export const isRecord = function isRecord(value: unknown): value is Record<string, unknown> {
    return typeof value === "object" && value !== null;
};

export const textAt = function textAt(record: Record<string, unknown>, key: string): string | null {
    const value = record[key];
    return typeof value === "string" ? value : null;
};

export const listAt = function listAt(value: unknown, key: string): Record<string, unknown>[] {
    const held = isRecord(value) ? value[key] : undefined;
    return Array.isArray(held) ? held.filter(isRecord) : [];
};

export const contentOf = function contentOf(payload: unknown): Record<string, unknown> | null {
    const content = isRecord(payload) ? payload[PAYLOAD_CONTENT_KEY] : undefined;
    return isRecord(content) ? content : null;
};

export const tabsIn = function tabsIn(content: unknown): Record<string, unknown>[] {
    return listAt(content, PAYLOAD_TABS_KEY);
};
```
