@jsdocs-io/extractor
Version:
The API extractor for npm packages powering jsdocs.io
43 lines (42 loc) • 1.44 kB
JavaScript
import { Node, SyntaxKind, } from "ts-morph";
export function isVariable(node) {
return Node.isVariableDeclaration(node) && !isFunctionExpression(node);
}
export function isVariableAssignmentExpression(node) {
return Node.isBinaryExpression(node) && Node.isIdentifier(node.getLeft());
}
export function isExpression(node) {
return Node.isExpression(node) && !Node.isArrowFunction(node);
}
export function isFunction(node) {
return Node.isFunctionDeclaration(node) || Node.isArrowFunction(node);
}
export function isFunctionExpression(node) {
if (!Node.isVariableDeclaration(node))
return false;
// Check type signature after `:` (e.g., `const foo: () => void;`).
if (node.getTypeNode()?.getKind() === SyntaxKind.FunctionType)
return true;
const initializer = node.getInitializer();
if (!initializer)
return false;
return Node.isArrowFunction(initializer) || Node.isFunctionExpression(initializer);
}
export function isClass(node) {
return Node.isClassDeclaration(node);
}
export function isInterface(node) {
return Node.isInterfaceDeclaration(node);
}
export function isEnum(node) {
return Node.isEnumDeclaration(node);
}
export function isTypeAlias(node) {
return Node.isTypeAliasDeclaration(node);
}
export function isNamespace(node) {
return Node.isModuleDeclaration(node);
}
export function isFileModule(node) {
return Node.isSourceFile(node);
}