@code-to-json/core
Version:
[](https://travis-ci.org/code-to-json/code-to-json) [](https://d
51 lines • 3.66 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const processing_queue_1 = require("../processing-queue");
const declaration_1 = require("../serializers/declaration");
const node_1 = require("../serializers/node");
const source_file_1 = require("../serializers/source-file");
const symbol_1 = require("../serializers/symbol");
const type_1 = require("../serializers/type");
const options_1 = require("./options");
/**
* Walk a typescript program, using specified entry points, returning
* JSON information describing the code
*/
function walkProgram(program, options = {}) {
const opts = options_1.default(options);
// Create the type-checker
const checker = program.getTypeChecker();
// Get all non-declaration source files
const sourceFiles = program.getSourceFiles().filter(opts.shouldIncludeSourceFile);
// Initialize the work-processing queue
const q = processing_queue_1.create();
sourceFiles.forEach(sf => q.queue(sf, 'sourceFile', checker));
const data = q.drain({
handleNode(ref, item) {
return node_1.default(item, checker, ref, q);
},
handleType(ref, item) {
return type_1.default(item, checker, ref, q);
},
handleSourceFile(ref, item) {
return source_file_1.default(item, checker, ref, q);
},
handleSymbol(ref, item) {
return symbol_1.default(item, checker, ref, q);
},
handleDeclaration(ref, item) {
return declaration_1.default(item, checker, ref, q);
},
});
return {
codeToJson: {
versions: {
core: 'pkg.version',
},
format: 'raw',
},
data,
};
}
exports.walkProgram = walkProgram;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvd2Fsa2VyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsMERBQTREO0FBUTVELDREQUF5RjtBQUN6Riw4Q0FBb0U7QUFDcEUsNERBQXVGO0FBQ3ZGLGtEQUEwRTtBQUMxRSw4Q0FBb0U7QUFDcEUsdUNBQW1FO0FBb0JuRTs7O0dBR0c7QUFDSCxTQUFnQixXQUFXLENBQ3pCLE9BQWdCLEVBQ2hCLFVBQXNDLEVBQUU7SUFFeEMsTUFBTSxJQUFJLEdBQUcsaUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUMsMEJBQTBCO0lBQzFCLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUV6Qyx1Q0FBdUM7SUFDdkMsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUVsRix1Q0FBdUM7SUFDdkMsTUFBTSxDQUFDLEdBQUcseUJBQVcsRUFBRSxDQUFDO0lBQ3hCLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUU5RCxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ25CLFVBQVUsQ0FBQyxHQUFZLEVBQUUsSUFBVTtZQUNqQyxPQUFPLGNBQWEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsVUFBVSxDQUFDLEdBQVksRUFBRSxJQUFVO1lBQ2pDLE9BQU8sY0FBYSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFDRCxnQkFBZ0IsQ0FBQyxHQUFrQixFQUFFLElBQWdCO1lBQ25ELE9BQU8scUJBQW1CLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUNELFlBQVksQ0FBQyxHQUFjLEVBQUUsSUFBUztZQUNwQyxPQUFPLGdCQUFlLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUNELGlCQUFpQixDQUFDLEdBQW1CLEVBQUUsSUFBaUI7WUFDdEQsT0FBTyxxQkFBb0IsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyRCxDQUFDO0tBQ0YsQ0FBQyxDQUFDO0lBQ0gsT0FBTztRQUNMLFVBQVUsRUFBRTtZQUNWLFFBQVEsRUFBRTtnQkFDUixJQUFJLEVBQUUsYUFBYTthQUNwQjtZQUNELE1BQU0sRUFBRSxLQUFLO1NBQ2Q7UUFDRCxJQUFJO0tBQ0wsQ0FBQztBQUNKLENBQUM7QUF6Q0Qsa0NBeUNDIn0=