core/predicates/record.predicate.ts

core/predicates/record.predicate.ts is a file in GovLab Docs. 17 lines of code and 4 definitions.

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")
    );
};