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 84 85 86 87 88 | 33x 33x 33x 33x 4x 4x 4x 4x 4x 10x 4x 10x 4x 4x 4x 4x 2x 4x 4x 4x 18x 18x 18x 18x 18x 3x 18x 18x 18x 4x 4x 18x 4x 3x 3x 3x 3x 3x 33x | const fs = require('fs'), Malta = require('./malta'); module.exports = (function () { const elements = {}; function 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 }; } function 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; } function unobserve (folder, extension) { Eif (folder in elements) { Eif (extension in elements[folder]) { clearInterval(elements[folder][extension]); delete elements[folder][extension]; return true; } } return false; } return { observe, unobserve }; })(); |