UNPKG

@code-to-json/core

Version:

[![Build Status](https://travis-ci.org/code-to-json/code-to-json.svg?branch=master)](https://travis-ci.org/code-to-json/code-to-json) [![Build Status](https://dev.azure.com/code-to-json/code-to-json/_apis/build/status/code-to-json.code-to-json)](https://d

35 lines (31 loc) 1.25 kB
import { isRef } from '@code-to-json/utils/lib/src/deferred-processing/ref'; import { displayPartsToString, Signature, TypeChecker } from 'typescript'; import { ProcessingQueue } from '../processing-queue'; import { DeclarationRef, SymbolRef, TypeRef } from '../processing-queue/ref'; export interface SerializedSignature { parameters?: SymbolRef[]; typeParameters?: TypeRef[]; declaration?: DeclarationRef; returnType?: TypeRef; documentation?: string; } /** Serialize a signature (call or construct) */ export default function serializeSignature( signature: Signature, checker: TypeChecker, q: ProcessingQueue ): SerializedSignature { const { parameters, typeParameters } = signature; return { parameters: parameters && parameters.length > 0 ? parameters.map(p => q.queue(p, 'symbol', checker)).filter(isRef) : undefined, typeParameters: typeParameters ? typeParameters.map(p => q.queue(p, 'type', checker)).filter(isRef) : undefined, // declaration: declaration ? q.queue(declaration, 'declaration', checker) : undefined, returnType: q.queue(signature.getReturnType(), 'type', checker), documentation: displayPartsToString(signature.getDocumentationComment(checker)) }; }