@code-to-json/core
Version:
[](https://travis-ci.org/code-to-json/code-to-json) [](https://d
75 lines • 5.49 kB
JavaScript
;
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=