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
JavaScript
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