UNPKG

@3fv/guard

Version:

TypeScript guard suite

34 lines 1.25 kB
export function isNativeClass(value) { return typeof value === 'function' && value.toString().indexOf('class') === 0; } // Character positions const INDEX_OF_FUNCTION_NAME = 9; // "function X", X is at index 9 const FIRST_UPPERCASE_INDEX_IN_ASCII = 65; // A is at index 65 in ASCII const LAST_UPPERCASE_INDEX_IN_ASCII = 90; // Z is at index 90 in ASCII /** * Is Conventional Class * Looks for function with capital first letter MyClass * First letter is the 9th character * If changed, isClass must also be updated * @param {any} value * @returns {boolean} */ export function isConventionalClass(value) { if (typeof value !== 'function') return false; const c = value.toString().charCodeAt(INDEX_OF_FUNCTION_NAME); return c >= FIRST_UPPERCASE_INDEX_IN_ASCII && c <= LAST_UPPERCASE_INDEX_IN_ASCII; } export function isClass(value, includeConventional = true) { return isNativeClass(value) || (includeConventional && isConventionalClass(value)); } export function createInstanceOfGuard(ctor) { return (o) => o instanceof ctor; } export function instanceOf(ctor) { return createInstanceOfGuard(ctor); } export function createGenericGuard(typeOrTest, tester) { return tester; } //# sourceMappingURL=class.js.map