UNPKG

json-schema-describes-subset

Version:

Tools for static JSON schema analysis, including functions to determine if one schema describes a subset of another or if a schema describes the empty set or to convert a schema to its disjunctive normal form (DNF).

57 lines 1.55 kB
import isObject from 'lodash/isObject.js'; import includes from 'lodash/includes.js'; export function isNotNull(value) { return value !== null; } export function isNonNullable(value) { return value != null; } export function isArrayOf(isElementType) { return function (value) { if (!Array.isArray(value)) return false; return value.every(isElementType); }; } export function isNonArrayObject(value) { return isObject(value) && !Array.isArray(value); } export function isRecordOf(isValueType) { return function (value) { if (!isNonArrayObject(value)) return false; return Object.values(value).every(isValueType); }; } export function isStringWithPrefix(prefix) { return function (string) { return typeof string === 'string' && string.startsWith(prefix); }; } export function isOneOf(elements) { return function (value) { return includes(elements, value); }; } /** * Allows convenient narrowing on nullish or falsy values. * * @example */ export function throwError(error) { throw error instanceof Error ? error : new Error(error); } export function assertType(test, error) { return function (value) { if (!test(value)) { if (error instanceof Error || typeof error === 'string' || error === undefined) { throwError(error); } throwError(error(value)); } return value; }; } //# sourceMappingURL=type-guards.js.map