UNPKG

@sinclair/typebox

Version:

Json Schema Type Builder with Static Type Resolution for TypeScript

45 lines (44 loc) 2.5 kB
import { IsObject, IsArray, IsNumber, IsUndefined } from '../value/guard/index.mjs'; export var TypeSystemPolicy; (function (TypeSystemPolicy) { // ------------------------------------------------------------------ // TypeSystemPolicy // ------------------------------------------------------------------ /** Shared assertion routines used by the value and errors modules */ /** Sets whether TypeBox should assert optional properties using the TypeScript `exactOptionalPropertyTypes` assertion policy. The default is `false` */ TypeSystemPolicy.ExactOptionalPropertyTypes = false; /** Sets whether arrays should be treated as a kind of objects. The default is `false` */ TypeSystemPolicy.AllowArrayObject = false; /** Sets whether `NaN` or `Infinity` should be treated as valid numeric values. The default is `false` */ TypeSystemPolicy.AllowNaN = false; /** Sets whether `null` should validate for void types. The default is `false` */ TypeSystemPolicy.AllowNullVoid = false; /** Asserts this value using the ExactOptionalPropertyTypes policy */ function IsExactOptionalProperty(value, key) { return TypeSystemPolicy.ExactOptionalPropertyTypes ? key in value : value[key] !== undefined; } TypeSystemPolicy.IsExactOptionalProperty = IsExactOptionalProperty; /** Asserts this value using the AllowArrayObjects policy */ function IsObjectLike(value) { const isObject = IsObject(value); return TypeSystemPolicy.AllowArrayObject ? isObject : isObject && !IsArray(value); } TypeSystemPolicy.IsObjectLike = IsObjectLike; /** Asserts this value as a record using the AllowArrayObjects policy */ function IsRecordLike(value) { return IsObjectLike(value) && !(value instanceof Date) && !(value instanceof Uint8Array); } TypeSystemPolicy.IsRecordLike = IsRecordLike; /** Asserts this value using the AllowNaN policy */ function IsNumberLike(value) { const isNumber = IsNumber(value); return TypeSystemPolicy.AllowNaN ? isNumber : isNumber && Number.isFinite(value); } TypeSystemPolicy.IsNumberLike = IsNumberLike; /** Asserts this value using the AllowVoidNull policy */ function IsVoidLike(value) { const isUndefined = IsUndefined(value); return TypeSystemPolicy.AllowNullVoid ? isUndefined || value === null : isUndefined; } TypeSystemPolicy.IsVoidLike = IsVoidLike; })(TypeSystemPolicy || (TypeSystemPolicy = {}));