UNPKG

@jsdocs-io/extractor

Version:

The API extractor for npm packages powering jsdocs.io

43 lines (42 loc) 1.44 kB
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); }