UNPKG

@sanity/tsdoc

Version:

Generate API reference docs from TypeScript projects and store in a Sanity-friendly JSON format. Render a static frontend, or as React components.

64 lines (53 loc) 1.83 kB
import { ApiClass, ApiEnum, ApiFunction, ApiInterface, ApiItem, ApiNamespace, ApiTypeAlias, ApiVariable, } from '@microsoft/api-extractor-model' import {SerializedAPIMember} from '../types' import {_hash} from './helpers' import {_transformClass} from './transformClass' import {_transformEnum} from './transformEnum' import {_transformFunction} from './transformFunction' import {_transformInterface} from './transformInterface' import {_transformNamespace} from './transformNamespace' import {_transformTypeAlias} from './transformTypeAlias' import {_transformVariable} from './transformVariable' import {TransformContext} from './types' /** * @internal */ export function transformExportMember( ctx: TransformContext, item: ApiItem, ): SerializedAPIMember & {_id: string} { if (item.kind === 'Class') { return {_id: _getItemId(item), ..._transformClass(ctx, item as ApiClass)} } if (item.kind === 'Enum') { return {_id: _getItemId(item), ..._transformEnum(ctx, item as ApiEnum)} } if (item.kind === 'Function') { return {_id: _getItemId(item), ..._transformFunction(ctx, item as ApiFunction)} } if (item.kind === 'Interface') { return {_id: _getItemId(item), ..._transformInterface(ctx, item as ApiInterface)} } if (item.kind === 'Namespace') { return {_id: _getItemId(item), ..._transformNamespace(ctx, item as ApiNamespace)} } if (item.kind === 'TypeAlias') { return {_id: _getItemId(item), ..._transformTypeAlias(ctx, item as ApiTypeAlias)} } if (item.kind === 'Variable') { return {_id: _getItemId(item), ..._transformVariable(ctx, item as ApiVariable)} } throw new Error(`package: unknown member type: ${item.kind}`) } function _getItemId(item: ApiItem): string { return `tsdoc-${_hash(item.canonicalReference.toString())}` }