// // // import { isNull, Nil } from './maybe'; export const DICTIONARY = "dictionary"; export const RECORD = "record"; export type RecordType = typeof RECORD; export type Known = | KnownRecord | [Known, ...Known[]] | Known[] | bigint | Date | number | string | boolean | null; export interface KnownRecord extends Record {} export const isEmpty = (val: unknown): val is Nil => val == null || (isObject(val) && Object.keys(val).length === 0); export const isObject = (val: unknown): val is Record => val === Object(val); export const isPrimitive = (val: unknown): boolean => Object(val) !== val; export const isPlainObject = (val: unknown): val is KnownRecord => !isNull(val) && isObject(val) && val.constructor === Object;