UNPKG

ssb-dns

Version:

resolve dns via ssb

53 lines (48 loc) 1.69 kB
var Pull = require("pull-stream"); var Paramap = require("pull-paramap"); var AsyncMemo = require("asyncmemo"); var getAvatar = require("ssb-avatar"); var Query = require("./query"); var Format = require("./format"); var Dump = module.exports = {}; Dump.records = function (sbot, each, done) { Pull(Query.all(sbot), Query.drainSet(each, done)); }; function sortRecords(records) { records.forEach(function (r) { r.labels = typeof r.name === 'string' ? r.name.split(/\./).reverse() : []; }); records.sort(function (a, b) { var len = Math.max(a.labels.length, b.labels.length); for (var i = 0; i < len; i++) { var labA = a.labels[i] || ''; var labB = b.labels[i] || ''; if (labA > labB) return 1; if (labA < labB) return -1; } return 0; }) } Dump.formattedRecords = function (sbot, opts, each, done) { sbot.whoami(function (err, feed) { if (err) throw err; var getAbout = AsyncMemo(getAvatar, sbot, feed.id); Pull(Query.inDomain(sbot, opts.name), Query.collectSet(function (err, records) { if (err) throw err; records.forEach(Format.formatNames(opts.name)); sortRecords(records); Pull(Pull.values(records), Paramap(function (record, cb) { getAbout(record.author, function (err, about) { record.authorName = '@' + about.name; cb(err, record); }); }, 8), Pull.map(Format.recordsToLines(Format.getMaxLengths(records))), Pull.drain(each, done)) })); }); };