@masknet/eslint-plugin
Version:
eslint plugin for masknet
29 lines • 1.22 kB
JavaScript
export function isElement(checker, node) {
return isBaseType(checker, node, ['Window', 'Document', 'Element']);
}
export function isEventTarget(checker, node) {
return isBaseType(checker, node, ['Window', 'Document', 'Element', 'EventTarget']);
}
export function isKeyboardEvent(checker, node) {
return isBaseType(checker, node, ['KeyboardEvent']);
}
function isBaseType(checker, node, typeNames) {
const type = checker.getTypeAtLocation(node);
const types = type.isUnionOrIntersection() ? type.types : [type];
const allTypes = types.flatMap((t) => [t, ...(t.getBaseTypes() ?? [])]);
return allTypes.some((t) => {
const symbol = t.getSymbol();
return symbol && typeNames.includes(checker.symbolToString(symbol));
});
}
export function isConstructor(checker, node, typeName) {
return getConstructorTypeName(checker, node) === typeName;
}
function getConstructorTypeName(checker, node) {
const symbol = checker.getTypeAtLocation(node).getSymbol();
if (!symbol?.valueDeclaration)
return;
const type = checker.getTypeOfSymbolAtLocation(symbol, symbol.valueDeclaration);
return checker.typeToString(type);
}
//# sourceMappingURL=type-checker.js.map