UNPKG

@ts-ast-parser/core

Version:

Reflects a simplified version of the TypeScript AST for generating documentation

54 lines 2.19 kB
import { ExportDeclarationNode } from '../nodes/export-declaration-node.js'; import { ExportAssignmentNode } from '../nodes/export-assignment-node.js'; import { NamespaceExportNode } from '../nodes/namespace-export-node.js'; import { NamedExportNode } from '../nodes/named-export-node.js'; import { ReExportNode } from '../nodes/re-export-node.js'; import { hasExportKeyword } from '../utils/export.js'; import ts from 'typescript'; export const exportDeclarationFactory = { isNode: (node) => hasExportKeyword(node), create: (node, context) => { const exports = []; if (ts.isVariableStatement(node)) { for (const declaration of node.declarationList.declarations) { exports.push(new ExportDeclarationNode(node, context, declaration)); } } if (ts.isFunctionDeclaration(node) || ts.isClassDeclaration(node) || ts.isInterfaceDeclaration(node) || ts.isEnumDeclaration(node) || ts.isTypeAliasDeclaration(node)) { exports.push(new ExportDeclarationNode(node, context)); } return exports; }, }; export const exportAssignmentFactory = { isNode: (node) => ts.isExportAssignment(node), create: (node, context) => { return [new ExportAssignmentNode(node, context)]; }, }; export const exportStatementFactory = { isNode: (node) => ts.isExportDeclaration(node), create: (node, context) => { const isNamed = node.exportClause && ts.isNamedExports(node.exportClause); const isNamespaced = node.exportClause && ts.isNamespaceExport(node.exportClause); const isReexport = node.moduleSpecifier !== undefined; const result = []; if (isNamed) { for (const element of node.exportClause.elements) { result.push(new NamedExportNode(node, element, context)); } } else if (isNamespaced) { result.push(new NamespaceExportNode(node, context)); } else if (isReexport) { result.push(new ReExportNode(node, context)); } return result; }, }; //# sourceMappingURL=create-export.js.map