gitter-markdown-processor
Version:
parses gitter chat messages, but in its own process
51 lines (42 loc) • 1.1 kB
JavaScript
;
const workerFarm = require('worker-farm');
const htmlencode = require('htmlencode');
const { version } = require('../package.json');
function Processor({ camoUrl, camoSecret } = {}) {
this.options = {
camoUrl,
camoSecret,
};
this.farm = workerFarm(
{
maxConcurrentWorkers: 1,
maxConcurrentCallsPerWorker: 1,
maxCallTime: 3000,
},
require.resolve('./process-chat-async'),
);
}
Processor.prototype.process = function(text, callback) {
this.farm(
text,
{ camoUrl: this.options.camoUrl, camoSecret: this.options.camoSecret },
(err, result) => {
if (err && err.type === 'TimeoutError') {
result = {
text,
html: htmlencode.htmlEncode(text).replace(/\n| /g, '<br>'),
urls: [],
mentions: [],
issues: [],
markdownProcessingFailed: true,
};
}
callback(err, result);
},
);
};
Processor.prototype.shutdown = function(callback) {
workerFarm.end(this.farm, callback);
};
Processor.version = version;
module.exports = Processor;