Рад представить вам поддержку node модулей, включая сетевые(клиенты redis/mongo/mysql etc.), поддержка включает в себя работу с почти любыми модулями совместимыми с node 8.x/9.x Пример использования md5 + запись в файл: Код: const md5 = require('md5'), fs = require('fs'); class Parser { constructor() { this.defaultConf = { version: '0.1.34', results: { }, results_format: '', parsecodes: { 200: 1, }, max_size: 200 * 1024, }; } *parse(set, results) { this.logger.put("Write to files/writefiletest.txt: " + set.query); fs.appendFileSync('files/writefileest.txt', set.query + "\n" + md5(set.query) + "\n"); results.success = 1; return results; } } Пример использования клиента к Redis: Код: const asyncRedis = require("async-redis"), redisClient = asyncRedis.createClient(); class Parser { constructor() { this.defaultConf = { version: '0.1.8', results: { flat: [ ['title', 'HTML title'], ] }, results_format: '$query: $title\\n', parsecodes: { 200: 1, }, max_size: 200 * 1024, }; } async *parse(set, results) { this.logger.put(await redisClient.get("rand")); await redisClient.set("rand", Math.random()); this.logger.put('ok'); results.success = 1; return results; } } Для установки модулей необходимо установить node версии 8.x/9.x, перейти в директорию A-Parser и папку files и устанавливать модули используя менеджер пакетов npm: Код: npm install md5
Кроме того частично поддерживается фунционал самой ноды, включая net и fs модули, пример использования fs модуля: Код: const fs = require('fs'); class Parser { constructor() { this.defaultConf = { version: '0.1.17', results: { flat: [ ['title', 'HTML title'], ] }, results_format: '$query: $title\\n', parsecodes: { 200: 1, }, max_size: 200 * 1024, }; } *parse(set, results) { fs.readFile('config/config.db', (err, data) => { if(!err || data) throw ""; this.logger.put(err.toString()); }); fs.readFile('queries/subs/zones.txt', (err, data) => { if(err || !data) throw ""; this.logger.put(data) }); fs.writeFileSync('queries/fs-utf8-тест.txt', 'тест utf8'); if(!fs.existsSync('queries/fs-utf8-тест.txt') || fs.existsSync('queries/not-exists')) throw ""; if(fs.readFileSync('queries/fs-utf8-тест.txt', 'utf8') != 'тест utf8') throw ""; if(fs.existsSync('queries/test/fs/fs1')) throw ""; fs.writeFileSync('queries/test/fs/fs1/fs2/fs3.txt', 'test', {mkpath: true}); if(fs.readFileSync('queries/test/fs/fs1/fs2/fs3.txt') != 'test') throw ""; fs.unlinkSync('queries/test/fs/fs1/fs2/fs3.txt'); let pass = 0; try { fs.readFileSync('queries/test/fs/fs1/fs2/fs3.txt'); pass++; } catch(e) { } if(pass) throw ""; fs.rmdirSync('queries/test/fs/fs1/fs2/'); fs.rmdirSync('queries/test/fs/fs1'); if(fs.existsSync('queries/test/fs/fs1')) throw ""; fs.mkdirSync('queries/test/fs/fs1'); if(!fs.existsSync('queries/test/fs/fs1')) throw ""; fs.rmdirSync('queries/test/fs/fs1'); this.logger.put('all ok'); results.success = 1; return results; } }