# core/predicates/record.predicate.ts

> 17 lines of code and 4 definitions.

Tree: GovLab Docs
Language: typescript
Layer: infrastructure
Canonical: https://banes-lab.com/anatomy/docs#file-docs-core-predicates-record-predicate-ts
Source text: https://banes-lab.com/source/docs/core/predicates/record.predicate.ts.txt

Listed in [core/predicates](https://banes-lab.com/api/source/docs/core/predicates.md), after [core/predicates/readme.predicate.ts](https://banes-lab.com/source/docs/core/predicates/readme.predicate.ts.md) and before [core/predicates/reference.predicate.ts](https://banes-lab.com/source/docs/core/predicates/reference.predicate.ts.md).

## Definitions

- `isPlainRecord` (lexical_declaration, line 7, exported)
- `isRecord` (lexical_declaration, line 3, exported)
- `isRecordArray` (lexical_declaration, line 11, exported)
- `isFlatRecord` (lexical_declaration, line 15, exported)

## Contained in

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

## Used by

- [core/analyzers/package.analyzer.ts](https://banes-lab.com/source/docs/core/analyzers/package.analyzer.ts.md)
- [core/caches/readme.cache.ts](https://banes-lab.com/source/docs/core/caches/readme.cache.ts.md)
- [core/classifiers/package.classifier.ts](https://banes-lab.com/source/docs/core/classifiers/package.classifier.ts.md)
- [core/converters/dependency.converter.ts](https://banes-lab.com/source/docs/core/converters/dependency.converter.ts.md)
- [core/coordinators/document.coordinator.ts](https://banes-lab.com/source/docs/core/coordinators/document.coordinator.ts.md)
- [core/factories/diagram.factory.ts](https://banes-lab.com/source/docs/core/factories/diagram.factory.ts.md)
- [core/factories/environment.factory.ts](https://banes-lab.com/source/docs/core/factories/environment.factory.ts.md)
- [core/factories/registry.factory.ts](https://banes-lab.com/source/docs/core/factories/registry.factory.ts.md)
- [core/formatters/markdown.formatter.ts](https://banes-lab.com/source/docs/core/formatters/markdown.formatter.ts.md)
- [core/loaders/code.loader.ts](https://banes-lab.com/source/docs/core/loaders/code.loader.ts.md)
- [core/loaders/diagram.loader.ts](https://banes-lab.com/source/docs/core/loaders/diagram.loader.ts.md)
- [core/loaders/manifest.loader.ts](https://banes-lab.com/source/docs/core/loaders/manifest.loader.ts.md)
- [core/loaders/quality.loader.ts](https://banes-lab.com/source/docs/core/loaders/quality.loader.ts.md)
- [core/loaders/section.loader.ts](https://banes-lab.com/source/docs/core/loaders/section.loader.ts.md)
- [core/loaders/syntax.loader.ts](https://banes-lab.com/source/docs/core/loaders/syntax.loader.ts.md)
- [core/loaders/system.loader.ts](https://banes-lab.com/source/docs/core/loaders/system.loader.ts.md)
- [core/plugins/manifest.agent.plugin.ts](https://banes-lab.com/source/docs/core/plugins/manifest.agent.plugin.ts.md)
- [core/plugins/manifest.catalog.plugin.ts](https://banes-lab.com/source/docs/core/plugins/manifest.catalog.plugin.ts.md)
- [core/plugins/manifest.document.plugin.ts](https://banes-lab.com/source/docs/core/plugins/manifest.document.plugin.ts.md)
- [core/plugins/manifest.domain.plugin.ts](https://banes-lab.com/source/docs/core/plugins/manifest.domain.plugin.ts.md)
- [core/plugins/manifest.governance.plugin.ts](https://banes-lab.com/source/docs/core/plugins/manifest.governance.plugin.ts.md)
- [core/plugins/manifest.grammar.plugin.ts](https://banes-lab.com/source/docs/core/plugins/manifest.grammar.plugin.ts.md)
- [core/plugins/manifest.principle.plugin.ts](https://banes-lab.com/source/docs/core/plugins/manifest.principle.plugin.ts.md)
- [core/plugins/manifest.readme.plugin.ts](https://banes-lab.com/source/docs/core/plugins/manifest.readme.plugin.ts.md)
- [core/predicates/readme.predicate.ts](https://banes-lab.com/source/docs/core/predicates/readme.predicate.ts.md)
- [core/registries/manifest.registry.ts](https://banes-lab.com/source/docs/core/registries/manifest.registry.ts.md)
- [core/resolvers/barrel.resolver.ts](https://banes-lab.com/source/docs/core/resolvers/barrel.resolver.ts.md)
- [core/selectors/record.selector.ts](https://banes-lab.com/source/docs/core/selectors/record.selector.ts.md)
- [core/validators/manifest.validator.ts](https://banes-lab.com/source/docs/core/validators/manifest.validator.ts.md)
- [core/validators/package.validator.ts](https://banes-lab.com/source/docs/core/validators/package.validator.ts.md)

## Linked from

- [core/analyzers](https://banes-lab.com/anatomy/docs/folder-docs-core-analyzers.md)
- [core/caches](https://banes-lab.com/anatomy/docs/folder-docs-core-caches.md)
- [core/classifiers](https://banes-lab.com/anatomy/docs/folder-docs-core-classifiers.md)
- [core/converters](https://banes-lab.com/anatomy/docs/folder-docs-core-converters.md)
- [core/coordinators](https://banes-lab.com/anatomy/docs/folder-docs-core-coordinators.md)
- [core/factories](https://banes-lab.com/anatomy/docs/folder-docs-core-factories.md)
- [core/formatters](https://banes-lab.com/anatomy/docs/folder-docs-core-formatters.md)
- [core/loaders](https://banes-lab.com/anatomy/docs/folder-docs-core-loaders.md)
- [core/plugins](https://banes-lab.com/anatomy/docs/folder-docs-core-plugins.md)
- [core/predicates](https://banes-lab.com/anatomy/docs/folder-docs-core-predicates.md)
- [core/registries](https://banes-lab.com/anatomy/docs/folder-docs-core-registries.md)
- [core/resolvers](https://banes-lab.com/anatomy/docs/folder-docs-core-resolvers.md)
- [core/selectors](https://banes-lab.com/anatomy/docs/folder-docs-core-selectors.md)
- [core/validators](https://banes-lab.com/anatomy/docs/folder-docs-core-validators.md)

## Source

```typescript
import type { FlatRecord, Manifest } from "#types/readme.types";

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

export const isPlainRecord = function isPlainRecord(value: unknown): value is Manifest {
    return isRecord(value) && !Array.isArray(value);
};

export const isRecordArray = function isRecordArray(value: unknown): value is FlatRecord[] {
    return Array.isArray(value) && value.length > 0 && value.every(isPlainRecord);
};

export const isFlatRecord = function isFlatRecord(value: unknown): value is FlatRecord {
    return (
        isPlainRecord(value) &&
        Object.keys(value).length > 0 &&
        Object.values(value).every((entry) => typeof entry === "string")
    );
};
```
