Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | 37x 37x 37x 37x 4x 4x 4x 4x 4x 10x 4x 10x 4x 37x 4x 4x 4x 2x 4x 4x 4x 16x 16x 16x 16x 16x 3x 16x 16x 16x 4x 4x 16x 4x 37x 3x 3x 3x 3x 3x 37x | const fs = require('fs'), Malta = require('./malta'), elements = {}, arrDiff = (a, b) => { const bAdded = [], bRemoved = [], astr = a.join(':::'), bstr = b.join(':::'); let i, l; for (i = 0, l = a.length; i < l; i++) { if (bstr.indexOf(a[i]) < 0) bRemoved.push(a[i]); } for (i = 0, l = b.length; i < l; i++) { if (astr.indexOf(b[i]) < 0) bAdded.push(b[i]); } return { added: bAdded, removed: bRemoved }; }, observe = (folder, cb, extension) => { const actual = {}; let previous = false; // if (folder in elements) return false; if (!(folder in elements)) { elements[folder] = {}; } Eif (!(extension in elements[folder])) { elements[folder][extension] = {}; } else { return false; } elements[folder][extension] = setInterval(() => { try { fs.readdir(folder, function (err, files) { Iif (err) throw err; Iif (!files) return; if (!previous) { previous = { files: files, n: files.length, time: new Date() }; } actual.files = files; actual.n = files.length; if (previous.files.length !== actual.files.length) { actual.time = new Date(); cb(arrDiff(previous.files, actual.files), extension); } previous.files = actual.files; }); } catch (err) { // eslint-disable-next-line no-console Malta.log_debug(err); process.exit(); } }, 100); return true; }, unobserve = (folder, extension) => { Eif (folder in elements) { Eif (extension in elements[folder]) { clearInterval(elements[folder][extension]); delete elements[folder][extension]; return true; } } return false; }; module.exports = { observe, unobserve }; |