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

75 lines 5.49 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"); function nameForNode(n, checker) { const name = utils_ts_1.isNamedDeclaration(n) && n.name; const sym = checker.getSymbolAtLocation(name || n); if (sym && name) { return name.getText(); } if (typescript_1.isVariableStatement(n)) { return `${n.declarationList.declarations.length}`; } return '(unknown)'; } /** * Serialize a Node to a POJO * @param n Node to serialize */ // tslint:disable-next-line:cognitive-complexity function serializeNode(n, checker, ref, q) { const { flags, kind, decorators, modifiers, pos, end } = n; const details = { id: utils_1.refId(ref), entity: 'node', location: location_1.default(n.getSourceFile(), pos, end), name: nameForNode(n, checker), text: n.getText(), isExposed: utils_ts_1.isDeclaration(n) && utils_ts_1.isDeclarationExported(n), isExported: !!(modifiers && modifiers.length && modifiers.map(m => m.kind).indexOf(typescript_1.SyntaxKind.ExportKeyword) >= 0), sourceFile: q.queue(n.getSourceFile(), 'sourceFile', checker), kind: typescript_1.SyntaxKind[kind], flags: flags_1.flagsToString(flags, 'node'), }; if (decorators && decorators.length) { details.decorators = decorators.map(d => typescript_1.SyntaxKind[d.kind]); } if (modifiers && modifiers.length) { details.modifiers = modifiers.map(d => typescript_1.SyntaxKind[d.kind]); } // tslint:disable-next-line:no-commented-code // if (parent) { // details.parent = q.queue(parent, 'node', checker); // } // let typ: Type | undefined; // const sym = checker.getSymbolAtLocation(name || n); // if (sym && name) { // details.name = name.getText(); // typ = checker.getTypeOfSymbolAtLocation(sym, name); // } // if (typ) { // details.type = q.queue(typ, 'type', checker); // } // const childReferences = mapChildren(n, child => { // if ( // !child.getSourceFile().isDeclarationFile && // isDeclaration(child) && // isDeclarationExported(child) // ) { // return q.queue(child, 'node', checker); // } // return; // }).filter(isRef); // if (childReferences && childReferences.length > 0) { // details.children = childReferences; // } return details; } exports.default = serializeNode; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJpYWxpemVycy9ub2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsK0NBQTRDO0FBQzVDLHFEQUFrRztBQUNsRywyQ0FBZ0Y7QUFDaEYsb0NBQXlDO0FBSXpDLHlDQUEyQztBQWdCM0MsU0FBUyxXQUFXLENBQUMsQ0FBTyxFQUFFLE9BQW9CO0lBQ2hELE1BQU0sSUFBSSxHQUFHLDZCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDN0MsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLG1CQUFtQixDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUU7UUFDZixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztLQUN2QjtJQUNELElBQUksZ0NBQW1CLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDMUIsT0FBTyxHQUFHLENBQUMsQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO0tBQ25EO0lBQ0QsT0FBTyxXQUFXLENBQUM7QUFDckIsQ0FBQztBQUVEOzs7R0FHRztBQUNILGdEQUFnRDtBQUNoRCxTQUF3QixhQUFhLENBQ25DLENBQU8sRUFDUCxPQUFvQixFQUNwQixHQUE2QyxFQUM3QyxDQUFrQjtJQUVsQixNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFM0QsTUFBTSxPQUFPLEdBQW1CO1FBQzlCLEVBQUUsRUFBRSxhQUFLLENBQUMsR0FBRyxDQUFDO1FBQ2QsTUFBTSxFQUFFLE1BQU07UUFDZCxRQUFRLEVBQUUsa0JBQWlCLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7UUFDeEQsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDO1FBQzdCLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO1FBQ2pCLFNBQVMsRUFBRSx3QkFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLGdDQUFxQixDQUFDLENBQUMsQ0FBQztRQUN2RCxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQ1osU0FBUztZQUNULFNBQVMsQ0FBQyxNQUFNO1lBQ2hCLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLHVCQUFVLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUNsRTtRQUNELFVBQVUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxZQUFZLEVBQUUsT0FBTyxDQUFDO1FBQzdELElBQUksRUFBRSx1QkFBVSxDQUFDLElBQUksQ0FBQztRQUN0QixLQUFLLEVBQUUscUJBQWEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDO0tBQ3BDLENBQUM7SUFFRixJQUFJLFVBQVUsSUFBSSxVQUFVLENBQUMsTUFBTSxFQUFFO1FBQ25DLE9BQU8sQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLHVCQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7S0FDOUQ7SUFDRCxJQUFJLFNBQVMsSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFFO1FBQ2pDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLHVCQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7S0FDNUQ7SUFDRCw2Q0FBNkM7SUFDN0MsZ0JBQWdCO0lBQ2hCLHVEQUF1RDtJQUN2RCxJQUFJO0lBQ0osNkJBQTZCO0lBQzdCLHNEQUFzRDtJQUN0RCxxQkFBcUI7SUFDckIsbUNBQW1DO0lBQ25DLHdEQUF3RDtJQUN4RCxJQUFJO0lBQ0osYUFBYTtJQUNiLGtEQUFrRDtJQUNsRCxJQUFJO0lBQ0osb0RBQW9EO0lBQ3BELFNBQVM7SUFDVCxrREFBa0Q7SUFDbEQsOEJBQThCO0lBQzlCLG1DQUFtQztJQUNuQyxRQUFRO0lBQ1IsOENBQThDO0lBQzlDLE1BQU07SUFDTixZQUFZO0lBQ1osb0JBQW9CO0lBQ3BCLHVEQUF1RDtJQUN2RCx3Q0FBd0M7SUFDeEMsSUFBSTtJQUNKLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUExREQsZ0NBMERDIn0=