import { IfAny, IfClass, IfTuple } from './type-check.js'; import { Builtin } from './types.js'; /** * Returns true if T is excluded from deep operations */ export type IfNoDeepValue = T extends Builtin ? true : IfAny extends true ? T : IfTuple extends true ? true : T extends Function ? true : IfClass extends true ? true : T extends Map ? true : T extends ReadonlyMap ? true : T extends WeakMap ? true : T extends Set ? true : T extends ReadonlySet ? true : T extends WeakSet ? true : T extends readonly any[] ? true : false; /** * ValuesOf * @desc Returns the union type of all the values in a type */ export type ValuesOf = T[keyof T];