UNPKG

@3fv/guard

Version:

TypeScript guard suite

42 lines 1.54 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isNativeClass = isNativeClass; exports.isConventionalClass = isConventionalClass; exports.isClass = isClass; exports.createInstanceOfGuard = createInstanceOfGuard; exports.instanceOf = instanceOf; exports.createGenericGuard = createGenericGuard; 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} */ 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; } function isClass(value, includeConventional = true) { return isNativeClass(value) || (includeConventional && isConventionalClass(value)); } function createInstanceOfGuard(ctor) { return (o) => o instanceof ctor; } function instanceOf(ctor) { return createInstanceOfGuard(ctor); } function createGenericGuard(typeOrTest, tester) { return tester; } //# sourceMappingURL=class.js.map