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

112 lines 10.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const utils_1 = require("@code-to-json/utils"); const debug = require("debug"); const generate_id_1 = require("./generate-id"); const log = debug('code-to-json:processor'); /** * Create a new processing queue */ function create() { const registries = { node: utils_1.createQueue('node', generate_id_1.default), symbol: utils_1.createQueue('symbol', generate_id_1.default), type: utils_1.createQueue('type', generate_id_1.default), sourceFile: utils_1.createQueue('sourceFile', generate_id_1.default), declaration: utils_1.createQueue('declaration', generate_id_1.default), }; return { queue(thing, typ, _checker) { const refType = typ; switch (refType) { case 'declaration': return registries.declaration.queue(thing); case 'symbol': return registries.symbol.queue(thing); case 'type': return registries.type.queue(thing); case 'node': return registries.node.queue(thing); case 'sourceFile': return registries.sourceFile.queue(thing); default: throw new utils_1.UnreachableError(refType); } }, drain(sink) { const out = { declaration: {}, symbol: {}, type: {}, node: {}, sourceFile: {}, }; /** * Flush any un-processed items from the processing queue to the drain output */ function flush() { const outputInfo = { processed: { declaration: 0, type: 0, sourceFile: 0, symbol: 0, node: 0, }, }; const { handleDeclaration, handleNode, handleSourceFile, handleType, handleSymbol } = sink; if (handleSourceFile) { outputInfo.processed.sourceFile += registries.sourceFile.drain( // eslint-disable-next-line no-return-assign (ref, item) => (out.sourceFile[utils_1.refId(ref)] = handleSourceFile(ref, item))).processedCount; } if (handleDeclaration) { outputInfo.processed.declaration += registries.declaration.drain( // eslint-disable-next-line no-return-assign (ref, item) => (out.declaration[utils_1.refId(ref)] = handleDeclaration(ref, item))).processedCount; } if (handleSymbol) { outputInfo.processed.symbol += registries.symbol.drain( // eslint-disable-next-line no-return-assign (ref, item) => (out.symbol[utils_1.refId(ref)] = handleSymbol(ref, item))).processedCount; } if (handleNode) { outputInfo.processed.node += registries.node.drain( // eslint-disable-next-line no-return-assign (ref, item) => (out.node[utils_1.refId(ref)] = handleNode(ref, item))).processedCount; } if (handleType) { outputInfo.processed.type += registries.type.drain( // eslint-disable-next-line no-return-assign (ref, item) => (out.type[utils_1.refId(ref)] = handleType(ref, item))).processedCount; } return outputInfo; } const maxPasses = 60; let flushCount = 1; let lastResult; let nonZeroCategories; log(`Beginning processing queue drain (max passes: ${maxPasses})`); do { lastResult = flush(); nonZeroCategories = Object.keys(lastResult.processed).reduce( // eslint-disable-next-line no-loop-func (list, k) => (lastResult.processed[k] > 0 ? list.concat(k) : list), []); const reportMessage = Object.keys(lastResult.processed) .sort() // eslint-disable-next-line no-loop-func .map(k => { const amt = lastResult.processed[k]; return amt > 0 ? `${amt} ${k}s` : null; }) .filter(Boolean) .join(', '); log(`Pass ${flushCount} summary: ${reportMessage || "nothing. Looks like we're done"}`); flushCount++; } while (nonZeroCategories.length > 0 && flushCount < maxPasses); return out; }, }; } exports.create = create; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJvY2Vzc2luZy1xdWV1ZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLCtDQUFtRjtBQUNuRiwrQkFBK0I7QUFHL0IsK0NBQXVDO0FBV3ZDLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0FBbUI1Qzs7R0FFRztBQUNILFNBQWdCLE1BQU07SUFDcEIsTUFBTSxVQUFVLEdBQUc7UUFDakIsSUFBSSxFQUFFLG1CQUFXLENBQWUsTUFBTSxFQUFFLHFCQUFVLENBQUM7UUFDbkQsTUFBTSxFQUFFLG1CQUFXLENBQWdCLFFBQVEsRUFBRSxxQkFBVSxDQUFDO1FBQ3hELElBQUksRUFBRSxtQkFBVyxDQUFlLE1BQU0sRUFBRSxxQkFBVSxDQUFDO1FBQ25ELFVBQVUsRUFBRSxtQkFBVyxDQUEyQixZQUFZLEVBQUUscUJBQVUsQ0FBQztRQUMzRSxXQUFXLEVBQUUsbUJBQVcsQ0FBNkIsYUFBYSxFQUFFLHFCQUFVLENBQUM7S0FDaEYsQ0FBQztJQUVGLE9BQU87UUFDTCxLQUFLLENBQ0gsS0FBbUIsRUFDbkIsR0FBTSxFQUNOLFFBQXFCO1lBRXJCLE1BQU0sT0FBTyxHQUFvQixHQUFHLENBQUM7WUFDckMsUUFBUSxPQUFPLEVBQUU7Z0JBQ2YsS0FBSyxhQUFhO29CQUNoQixPQUFPLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQW9CLENBQUMsQ0FBQztnQkFDNUQsS0FBSyxRQUFRO29CQUNYLE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBWSxDQUFDLENBQUM7Z0JBQy9DLEtBQUssTUFBTTtvQkFDVCxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQWEsQ0FBQyxDQUFDO2dCQUM5QyxLQUFLLE1BQU07b0JBQ1QsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxL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