UNPKG

@jsdocs-io/extractor

Version:

The API extractor for npm packages powering jsdocs.io

46 lines (45 loc) 1.64 kB
import { docs } from "./docs.js"; import { formatSignature } from "./format-signature.js"; import { headText } from "./head-text.js"; import { id } from "./id.js"; import { isHidden } from "./is-hidden.js"; import { sourceFilePath } from "./source-file-path.js"; export async function extractEnum(containerName, exportName, declaration) { const enumId = id(containerName, "+enum", exportName); return { kind: "enum", id: enumId, name: exportName, docs: docs(declaration), file: sourceFilePath(declaration), line: declaration.getStartLineNumber(), signature: await enumSignature(declaration), members: await extractEnumMembers(enumId, declaration), }; } async function enumSignature(declaration) { const signature = headText(declaration); return await formatSignature("enum", signature); } async function extractEnumMembers(enumId, enumDeclaration) { const members = []; for (const declaration of enumDeclaration.getMembers()) { if (isHidden(declaration)) continue; const name = declaration.getName(); members.push({ kind: "enum-member", id: id(enumId, "+member", name), name, docs: docs(declaration), file: sourceFilePath(declaration), line: declaration.getStartLineNumber(), signature: await enumMemberSignature(declaration), }); } return members; } async function enumMemberSignature(declaration) { const signature = declaration.getText(); return await formatSignature("enum-member", signature); }