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

71 lines 6.73 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const utils_1 = require("@code-to-json/utils"); const utils_ts_1 = require("@code-to-json/utils-ts"); const typescript_1 = require("typescript"); const flags_1 = require("../flags"); const location_1 = require("./location"); const signature_1 = require("./signature"); function appendSymbolMap(uem, queue, checker) { if (uem && uem.size > 0) { return utils_ts_1.mapUem(uem, (val) => queue.queue(val, 'symbol', checker)).filter(utils_1.isRef); } return undefined; } /** * Serialize a TS Symbol * @param symbol Symbol to serialize * @param checker an instance of the TS type checker * @param ref Reference to the symbol * @param queue Processing queue */ function serializeSymbol(symbol, checker, ref, queue) { const { exports, globalExports, members, flags, valueDeclaration } = symbol; const details = { id: utils_1.refId(ref), entity: 'symbol', name: symbol.getName(), flags: flags_1.flagsToString(flags, 'symbol') }; const typ = checker.getTypeOfSymbolAtLocation(symbol, valueDeclaration); if (valueDeclaration && valueDeclaration.getSourceFile().isDeclarationFile) { details.external = true; return details; } details.type = queue.queue(typ, 'type', checker); details.members = appendSymbolMap(members, queue, checker); details.exports = appendSymbolMap(exports, queue, checker); details.globalExports = appendSymbolMap(globalExports, queue, checker); const docComment = symbol.getDocumentationComment(checker); if (docComment.length > 0) { details.documentation = typescript_1.displayPartsToString(docComment); } if (valueDeclaration) { const { modifiers, decorators, pos, end } = valueDeclaration; const valDeclType = checker.getTypeOfSymbolAtLocation(symbol, valueDeclaration); const sourceFile = valueDeclaration.getSourceFile(); details.location = location_1.default(sourceFile, pos, end); details.sourceFile = queue.queue(sourceFile, 'sourceFile', checker); details.modifiers = modifiers && modifiers.map(m => typescript_1.SyntaxKind[m.kind]); details.decorators = decorators && decorators.map(d => typescript_1.SyntaxKind[d.kind]); const constructorSignatures = valDeclType .getConstructSignatures() .map(s => signature_1.default(s, checker, queue)); if (constructorSignatures && constructorSignatures.length > 0) { details.constructorSignatures = constructorSignatures; } const callSignatures = valDeclType .getCallSignatures() .map(s => signature_1.default(s, checker, queue)); if (callSignatures && callSignatures.length > 0) { details.callSignatures = callSignatures; } } const jsDocTags = symbol.getJsDocTags(); if (jsDocTags.length > 0) { details.jsDocTags = [...jsDocTags]; } return details; } exports.default = serializeSymbol; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ltYm9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcmlhbGl6ZXJzL3N5bWJvbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLCtDQUFtRDtBQUNuRCxxREFBZ0Q7QUFDaEQsMkNBTW9CO0FBQ3BCLG9DQUF5QztBQUl6Qyx5Q0FBMkM7QUFDM0MsMkNBQXNFO0FBMEJ0RSxTQUFTLGVBQWUsQ0FDdEIsR0FBMEMsRUFDMUMsS0FBc0IsRUFDdEIsT0FBb0I7SUFFcEIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUU7UUFDdkIsT0FBTyxpQkFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGFBQUssQ0FBQyxDQUFDO0tBQ3JGO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQXdCLGVBQWUsQ0FDckMsTUFBVyxFQUNYLE9BQW9CLEVBQ3BCLEdBQWMsRUFDZCxLQUFzQjtJQUV0QixNQUFNLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRTVFLE1BQU0sT0FBTyxHQUFxQjtRQUNoQyxFQUFFLEVBQUUsYUFBSyxDQUFDLEdBQUcsQ0FBQztRQUNkLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLElBQUksRUFBRSxNQUFNLENBQUMsT0FBTyxFQUFFO1FBQ3RCLEtBQUssRUFBRSxxQkFBYSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUM7S0FDdEMsQ0FBQztJQUVGLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUN4RSxJQUFJLGdCQUFnQixJ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