{"_id":"fsa","_rev":"17-3fd527de040b6b05b16ff1f3818fc067","name":"fsa","description":"File system auditor. Shows changes after previous audit session.","dist-tags":{"latest":"0.5.1"},"versions":{"0.1.0":{"name":"fsa","author":{"name":"Golubev Fedor","email":"gregof@yandex.ru","url":"http://github.com/gregof"},"description":"File system auditor. Show changes after previous audit session.","version":"0.1.0","dependencies":{},"devDependencies":{"abc":"0.3.x"},"optionalDependencies":{},"engines":{"node":">=0.4"},"repository":{"type":"git","url":"git://github.com/gregof/fbs.git"},"main":"./lib/index.js","readme":"## fbs\nFile system auditor. Show changes after previous audit session. Work over git.\n\n### Example\n`mkdir tmp\ntouch tmp/1\nfbs.init\nfbs.status -> {\"modified\":[],\"added\":[\"1\"],\"deleted\":[]}\nfbs.commit \nfbs.status -> {\"modified\":[],\"added\":[],\"deleted\":[]}\ntouch tmp/2\nfbs.status -> {\"modified\":[],\"added\":[\"2\"],\"deleted\":[]}`\n\n### init(dirname, callback)\n```javascript\nfbs.init('tmp', function (err) {\n\tif (err) {\n\t\tconsole.log(err)\n\t} else {\n\t\t// ...\n\t}\n})\n```\n\n### status(dirname, callback)\n```javascript\nfbs.status('tmp', function (err, status) {\n\tif (err) {\n\t\tconsole.log(err)\n\t} else {\n\t\tconsole.log(JSON.stringify(status)) // -> {\"modified\":[],\"added\":[\"1\"],\"deleted\":[]}\n\t}\n})\n```\n\n### commit(dirname, callback)\n```javascript\nfbs.commit('tmp', function (err) {\n\tif (err) {\n\t\tconsole.log(err)\n\t} else {\n\t\t// ...\n\t}\n})\n```\n","_id":"fsa@0.1.0","dist":{"shasum":"8c7f8fa0cf0625a2d3f45399381b57f196065c1a","tarball":"https://registry.npmjs.org/fsa/-/fsa-0.1.0.tgz","integrity":"sha512-m9wMIymSHhg3TZnoYSTlW8Qew78tDUyd2+lzQebFDThiI9bsvLySy9XwaP6/osSwK7uZI4RMCeWrCLY0zCp+uw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA0uPittZHBGHsKayLaVsr4JGuOIOfbuFWb8E13vqR8hAiEA2CDgLGG3/NdjAve+giihAyj3a6vc3GNQKxKarwuUOB8="}]},"_npmVersion":"1.1.59","_npmUser":{"name":"gregof","email":"gregof@yandex.ru"},"maintainers":[{"name":"gregof","email":"gregof@yandex.ru"}]},"0.2.0":{"name":"fsa","author":{"name":"Golubev Fedor","email":"gregof@yandex.ru","url":"http://github.com/gregof"},"description":"File system auditor. Shows changes after previous audit session.","version":"0.2.0","dependencies":{},"devDependencies":{"abc":"0.3.x","tc":"0.4.1"},"optionalDependencies":{},"engines":{"node":">=0.4"},"repository":{"type":"git","url":"git://github.com/gregof/fsa.git"},"main":"./lib/index.js","readme":"## fsa\nFile system auditor. Shows changes after previous audit session. Works over git.\n\n### Example\n```\nmkdir tmp\ntouch tmp/1\nfsa.init\nfsa.status -> {\"modified\":[],\"added\":[\"1\"],\"deleted\":[]}\nfsa.commit \nfsa.status -> {\"modified\":[],\"added\":[],\"deleted\":[]}\ntouch tmp/2\nfsa.status -> {\"modified\":[],\"added\":[\"2\"],\"deleted\":[]}\n```\n\n### init(dirname, callback)\n```javascript\nfsa.init('tmp', function (err) {\n\tif (err) {\n\t\tconsole.log(err)\n\t} else {\n\t\t// ...\n\t}\n})\n```\n\n### status(dirname, callback)\n```javascript\nfsa.status('tmp', function (err, status) {\n\tif (err) {\n\t\tconsole.log(err)\n\t} else {\n\t\tconsole.log(JSON.stringify(status)) // -> {\"modified\":[],\"added\":[\"1\"],\"deleted\":[]}\n\t}\n})\n```\n\n### commit(dirname, callback)\n```javascript\nfsa.commit('tmp', function (err) {\n\tif (err) {\n\t\tconsole.log(err)\n\t} else {\n\t\t// ...\n\t}\n})\n```","_id":"fsa@0.2.0","dist":{"shasum":"397917de605b1a1b39f0e8f301774c46d9510ead","tarball":"https://registry.npmjs.org/fsa/-/fsa-0.2.0.tgz","integrity":"sha512-ZtZO/HT4b3ZCHxC9Mke2ij0VD0VdNXglysOxS0QvCtb1ebl8XY0QLVX+Ulu6/qT65v9FFfrMaXN/YwYr96fLRQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCvMB1t9YVv5mb88j/tS1DCtmgoRCUXlyznoKyZRD2t9wIgUocjq1ic3NZ0sMlDP3QmtgFQaPHq/XuizAKixMs+C6Q="}]},"_npmVersion":"1.1.59","_npmUser":{"name":"gregof","email":"gregof@yandex.ru"},"maintainers":[{"name":"gregof","email":"gregof@yandex.ru"}]},"0.3.0":{"name":"fsa","author":{"name":"Golubev Fedor","email":"gregof@yandex.ru","url":"http://github.com/gregof"},"description":"File system auditor. Shows changes after previous audit session.","version":"0.3.0","dependencies":{},"devDependencies":{"abc":"0.5.x","tc":"0.5.x"},"optionalDependencies":{},"engines":{"node":">=0.4"},"repository":{"type":"git","url":"git://github.com/gregof/fsa.git"},"main":"./lib/index.js","readme":"## fsa\nFile system auditor. Shows changes after previous audit session. Works over git.\n\n### Example\n```\nmkdir tmp\ntouch tmp/1\nfsa.init\nfsa.status -> {\"modified\":[],\"added\":[\"1\"],\"deleted\":[]}\nfsa.commit \nfsa.status -> {\"modified\":[],\"added\":[],\"deleted\":[]}\ntouch tmp/2\nfsa.status -> {\"modified\":[],\"added\":[\"2\"],\"deleted\":[]}\n```\n\n### init(dirname, callback)\n```javascript\nfsa.init('tmp', function (err) {\n\tif (err) {\n\t\tconsole.log(err)\n\t} else {\n\t\t// ...\n\t}\n})\n```\n\n### status(dirname, callback)\n```javascript\nfsa.status('tmp', function (err, status) {\n\tif (err) {\n\t\tconsole.log(err)\n\t} else {\n\t\tconsole.log(JSON.stringify(status)) // -> {\"modified\":[],\"added\":[\"1\"],\"deleted\":[]}\n\t}\n})\n```\n\n### commit(dirname, callback)\n```javascript\nfsa.commit('tmp', function (err) {\n\tif (err) {\n\t\tconsole.log(err)\n\t} else {\n\t\t// ...\n\t}\n})\n```","_id":"fsa@0.3.0","dist":{"shasum":"948c07ba43b7a0618ee9067d5d9b874f2d9cdfbc","tarball":"https://registry.npmjs.org/fsa/-/fsa-0.3.0.tgz","integrity":"sha512-SpIT0dA+4LL9PQB4Cr6Geq3vWcq1XzLmeqoxeGKqotk3ZCXr5EJdKSPsYm486ri22nVt6H2+Hdh/ixf7Gy6JYw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDAR3x4/Q0/nso9Up7GSBPedYdy5C/efNjBjWRq8fKPsAiALhyE5UbnFI0hIMfqdy7ZmVt4qnjn/phLLmq9HP1Wrdw=="}]},"_npmVersion":"1.1.59","_npmUser":{"name":"gregof","email":"gregof@yandex.ru"},"maintainers":[{"name":"gregof","email":"gregof@yandex.ru"}]},"0.3.1":{"name":"fsa","author":{"name":"Golubev Fedor","email":"gregof@yandex.ru","url":"http://github.com/gregof"},"description":"File system auditor. Shows changes after previous audit session.","version":"0.3.1","dependencies":{},"devDependencies":{"abc":"0.5.x","tc":"0.5.x"},"optionalDependencies":{},"engines":{"node":">=0.4"},"repository":{"type":"git","url":"git://github.com/gregof/fsa.git"},"main":"./lib/index.js","readme":"## fsa\nFile system auditor. Shows changes after previous audit session. Works over git.\n\n### Example\n```\nmkdir tmp\ntouch tmp/1\nfsa.init\nfsa.status -> {\"modified\":[],\"added\":[\"1\"],\"deleted\":[]}\nfsa.commit \nfsa.status -> {\"modified\":[],\"added\":[],\"deleted\":[]}\ntouch tmp/2\nfsa.status -> {\"modified\":[],\"added\":[\"2\"],\"deleted\":[]}\n```\n\n### init(dirname, callback)\n```javascript\nfsa.init('tmp', function (err) {\n\tif (err) {\n\t\tconsole.log(err)\n\t} else {\n\t\t// ...\n\t}\n})\n```\n\n### status(dirname, callback)\n```javascript\nfsa.status('tmp', function (err, status) {\n\tif (err) {\n\t\tconsole.log(err)\n\t} else {\n\t\tconsole.log(JSON.stringify(status)) // -> {\"modified\":[],\"added\":[\"1\"],\"deleted\":[]}\n\t}\n})\n```\n\n### commit(dirname, callback)\n```javascript\nfsa.commit('tmp', function (err) {\n\tif (err) {\n\t\tconsole.log(err)\n\t} else {\n\t\t// ...\n\t}\n})\n```","_id":"fsa@0.3.1","dist":{"shasum":"5b622759158c24009ed7a68368fa67bc08b517a2","tarball":"https://registry.npmjs.org/fsa/-/fsa-0.3.1.tgz","integrity":"sha512-orkAbB9bb5SSLGt0sz2R8oG1ejBgzexaevic5PGbyU9e6hZ8bYp1kiionYPTlk69exAmU7o4rRS0n+SHRR6aCw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDw4ilbBAnIcyB95+lV4pDdHGo0NL+BMe3RnaSHxXpcZAIhAPyHzdeMKJXWtDVW5EREc93z1p5VQewlSS1YEoyNaGrQ"}]},"_npmVersion":"1.1.59","_npmUser":{"name":"gregof","email":"gregof@yandex.ru"},"maintainers":[{"name":"gregof","email":"gregof@yandex.ru"}]},"0.4.0":{"name":"fsa","author":{"name":"Golubev Fedor","email":"gregof@yandex.ru","url":"http://github.com/gregof"},"description":"File system auditor. Shows changes after previous audit session.","version":"0.4.0","dependencies":{},"devDependencies":{"abc":"0.5.x","tc":"0.5.x"},"optionalDependencies":{},"engines":{"node":">=0.4"},"repository":{"type":"git","url":"git://github.com/gregof/fsa.git"},"main":"./index.js","readme":"## fsa\nFile system auditor. Shows changes after previous audit session. Works over git.\n\n### Example\n```\nmkdir tmp\ntouch tmp/1\nfsa.init\nfsa.status -> {\"modified\":[],\"added\":[\"1\"],\"deleted\":[]}\nfsa.commit \nfsa.status -> {\"modified\":[],\"added\":[],\"deleted\":[]}\ntouch tmp/2\nfsa.status -> {\"modified\":[],\"added\":[\"2\"],\"deleted\":[]}\n```\n\n### init(dirname, callback)\n```javascript\nfsa.init('tmp', function (err) {\n\tif (err) {\n\t\tconsole.log(err)\n\t} else {\n\t\t// ...\n\t}\n})\n```\n\n### status(dirname, callback)\n```javascript\nfsa.status('tmp', function (err, status) {\n\tif (err) {\n\t\tconsole.log(err)\n\t} else {\n\t\tconsole.log(JSON.stringify(status)) // -> {\"modified\":[],\"added\":[\"1\"],\"deleted\":[]}\n\t}\n})\n```\n\n### commit(dirname, callback)\n```javascript\nfsa.commit('tmp', function (err) {\n\tif (err) {\n\t\tconsole.log(err)\n\t} else {\n\t\t// ...\n\t}\n})\n```","_id":"fsa@0.4.0","dist":{"shasum":"befa25c6ac601d81650d89aa7a1396787d81ec0a","tarball":"https://registry.npmjs.org/fsa/-/fsa-0.4.0.tgz","integrity":"sha512-26Fp9f1RviU0Nl1zuT51EcGSP1LvOsvDwY5shnbQnecLWYAvQlB47tf/WmLfQtjfThx8pFb8/mxS2Vp6NWTY0g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDLz8O3K6AmKiHpe41A8Gemci+yHpaWMmPviDkwp3GvrgIgc9a0wlf6dT89xmWnNcnYnIkmhwidDlmY/GF4Pa1lAbY="}]},"_npmVersion":"1.1.59","_npmUser":{"name":"gregof","email":"gregof@yandex.ru"},"maintainers":[{"name":"gregof","email":"gregof@yandex.ru"}]},"0.5.0":{"name":"fsa","author":{"name":"Golubev Fedor","email":"gregof@yandex.ru","url":"http://github.com/gregof"},"description":"File system auditor. Shows changes after previous audit session.","version":"0.5.0","dependencies":{},"devDependencies":{"abc":"0.5.x","tc":"0.5.x"},"optionalDependencies":{},"engines":{"node":">=0.4"},"repository":{"type":"git","url":"git://github.com/gregof/fsa.git"},"main":"./index.js","readme":"# fsa\nFile system auditor. Shows changes after previous audit session. Works over git.\n\n## Example\nGet hash for each file in current directory.\n```javascript\nvar fsa = require('fsa');\nvar abc = require('abc');\nvar crypto = require('crypto');\nvar path = require('path');\n\nvar startDate = new Date();\nvar dc = new fsa.DirCache('.', '.exmpl');\n\ndc.load(function (data, changeManager) {\n    processDir(data, changeManager, function (newData) {\n        dc.save(newData, function () {\n            console.log(JSON.stringify(newData, null, '  '))\n            console.log('Done. Time - ' + (new Date() - startDate));\n        })\n    });\n});    \n\nfunction processDir (cachedData, changeManager, callback) {\n    var newData = [];\n    abc.async.forEach(\n        [\n            function (callback) {\n                if (cachedData) {\n                    checkCachedFiles(cachedData, changeManager, newData, callback)\n                } else {\n                    callback();\n                }\n            },\n            function (callback) {\n                readFiles(changeManager.getAddedFiles(), newData, callback)\n            },\n            function (callback) {\n                readDirs(changeManager.getAddedDirs(), newData, callback)\n            }\n        ], \n        function () {\n            callback(newData);\n        }\n    );    \n}\n\nfunction checkCachedFiles (cachedData, changeManager, newData, callback) {\n    abc.async.forEach(\n        cachedData,\n        function (file, callback) {\n            var fileStatus = changeManager.getFileStatus(file.name);\n            if (fileStatus === 'M') {\n                readFile(file.name, function (rereadFile) {\n                    newData.push(rereadFile);\n                    callback();\n                })\n                return;\n            } else if (fileStatus === '-') {\n                newData.push(file);\n            }\n            callback();\n        },\n        callback\n    );\n}\n\nfunction readFile (file, callback) {\n    abc.file.read(file, function (text) {\n        callback({\n            name: file,\n            hash: crypto.createHash('md5').update(text).digest('hex')\n        });\n    })\n}\n\nfunction readFiles (files, newData, callback) {\n    abc.async.forEach(\n        files,\n        function (file, callback) {\n            readFile(file, function (readedFile) {\n                newData.push(readedFile);\n                callback();\n            })\n        },\n        callback\n    );\n}\n\nfunction readDirs (dirs, newData, callback) {\n    abc.async.forEach(\n        dirs,\n        function (dir, callback) {\n            readDir(dir, newData, callback);\n        },\n        callback\n    );\n}\n\nfunction readDir (dir, newData, callback) {\n    var newFiles = []\n    abc.find(\n        dir,\n        function (file, dirPath) {\n            newFiles.push(path.join(dirPath, file))\n        },\n        function () {\n            readFiles(newFiles, newData, callback);\n        }\n    );\n}\n```","_id":"fsa@0.5.0","dist":{"shasum":"de264c00805b7028e2e099a8ff763f8d53c8eeeb","tarball":"https://registry.npmjs.org/fsa/-/fsa-0.5.0.tgz","integrity":"sha512-5G/0J6bkE609cpvLX+ACSgsrQ72wTqQE2E80/Z6Vk8iO+dLeMv6jS90Amsbwu3e/CQfrhhcDqKgsMrGZVjXw1Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGR9eREM+DbQwskLXaboAeTd0+vFgbqhhE6dOQYAjYFLAiAIVZ1iYZGgnGfhOSTWNJ7xnJrwsK6LRxZKpUiXUHpt4A=="}]},"_npmVersion":"1.1.59","_npmUser":{"name":"gregof","email":"gregof@yandex.ru"},"maintainers":[{"name":"gregof","email":"gregof@yandex.ru"}]},"0.5.1":{"name":"fsa","author":{"name":"Golubev Fedor","email":"gregof@yandex.ru","url":"http://github.com/gregof"},"description":"File system auditor. Shows changes after previous audit session.","version":"0.5.1","dependencies":{},"devDependencies":{"abc":"0.5.x","tc":"0.5.x"},"optionalDependencies":{},"engines":{"node":">=0.4"},"repository":{"type":"git","url":"git://github.com/gregof/fsa.git"},"main":"./index.js","readme":"# fsa\nFile system auditor. Shows changes after previous audit session. Works over git.\n\n## Example\nGet hash for each file in current directory.\n```javascript\nvar fsa = require('fsa');\nvar abc = require('abc');\nvar crypto = require('crypto');\nvar path = require('path');\n\nvar startDate = new Date();\nvar dc = new fsa.DirCache('.', '.exmpl');\n\ndc.load(function (data, changeManager) {\n    processDir(data, changeManager, function (newData) {\n        dc.save(newData, function () {\n            console.log(JSON.stringify(newData, null, '  '))\n            console.log('Done. Time - ' + (new Date() - startDate));\n        })\n    });\n});    \n\nfunction processDir (cachedData, changeManager, callback) {\n    var newData = [];\n    abc.async.forEach(\n        [\n            function (callback) {\n                if (cachedData) {\n                    checkCachedFiles(cachedData, changeManager, newData, callback)\n                } else {\n                    callback();\n                }\n            },\n            function (callback) {\n                readFiles(changeManager.getAddedFiles(), newData, callback)\n            },\n            function (callback) {\n                readDirs(changeManager.getAddedDirs(), newData, callback)\n            }\n        ], \n        function () {\n            callback(newData);\n        }\n    );    \n}\n\nfunction checkCachedFiles (cachedData, changeManager, newData, callback) {\n    abc.async.forEach(\n        cachedData,\n        function (file, callback) {\n            var fileStatus = changeManager.getFileStatus(file.name);\n            if (fileStatus === 'M') {\n                readFile(file.name, function (rereadFile) {\n                    newData.push(rereadFile);\n                    callback();\n                })\n                return;\n            } else if (fileStatus === '-') {\n                newData.push(file);\n            }\n            callback();\n        },\n        callback\n    );\n}\n\nfunction readFile (file, callback) {\n    abc.file.read(file, function (text) {\n        callback({\n            name: file,\n            hash: crypto.createHash('md5').update(text).digest('hex')\n        });\n    })\n}\n\nfunction readFiles (files, newData, callback) {\n    abc.async.forEach(\n        files,\n        function (file, callback) {\n            readFile(file, function (readedFile) {\n                newData.push(readedFile);\n                callback();\n            })\n        },\n        callback\n    );\n}\n\nfunction readDirs (dirs, newData, callback) {\n    abc.async.forEach(\n        dirs,\n        function (dir, callback) {\n            readDir(dir, newData, callback);\n        },\n        callback\n    );\n}\n\nfunction readDir (dir, newData, callback) {\n    var newFiles = []\n    abc.find(\n        dir,\n        function (file, dirPath) {\n            newFiles.push(path.join(dirPath, file))\n        },\n        function () {\n            readFiles(newFiles, newData, callback);\n        }\n    );\n}\n```","_id":"fsa@0.5.1","dist":{"shasum":"c5552c80563dda02f8c683ecac9f57c1951613db","tarball":"https://registry.npmjs.org/fsa/-/fsa-0.5.1.tgz","integrity":"sha512-HMdf0zJNXwP5dxROQb/ncUv+9BxuO4NM5R6/pSbUdfu5CUzMOg7+iP4tQUtBIv18PaScukzfxGIqLyJ3d9wg3Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE6MOkwNRq4UXbLi5By4DoA6J9PJ6bMaKEvIw5V7aTZ7AiEAnesdX+/CZ+B6uPY/w4LctkYAR/o2VW35csVkZdKjRHM="}]},"_npmVersion":"1.1.59","_npmUser":{"name":"gregof","email":"gregof@yandex.ru"},"maintainers":[{"name":"gregof","email":"gregof@yandex.ru"}]}},"readme":"## fbs\nFile system auditor. Show changes after previous audit session. Work over git.\n\n### Example\n`mkdir tmp\ntouch tmp/1\nfbs.init\nfbs.status -> {\"modified\":[],\"added\":[\"1\"],\"deleted\":[]}\nfbs.commit \nfbs.status -> {\"modified\":[],\"added\":[],\"deleted\":[]}\ntouch tmp/2\nfbs.status -> {\"modified\":[],\"added\":[\"2\"],\"deleted\":[]}`\n\n### init(dirname, callback)\n```javascript\nfbs.init('tmp', function (err) {\n\tif (err) {\n\t\tconsole.log(err)\n\t} else {\n\t\t// ...\n\t}\n})\n```\n\n### status(dirname, callback)\n```javascript\nfbs.status('tmp', function (err, status) {\n\tif (err) {\n\t\tconsole.log(err)\n\t} else {\n\t\tconsole.log(JSON.stringify(status)) // -> {\"modified\":[],\"added\":[\"1\"],\"deleted\":[]}\n\t}\n})\n```\n\n### commit(dirname, callback)\n```javascript\nfbs.commit('tmp', function (err) {\n\tif (err) {\n\t\tconsole.log(err)\n\t} else {\n\t\t// ...\n\t}\n})\n```\n","maintainers":[{"name":"gregof","email":"gregof@yandex.ru"}],"time":{"modified":"2022-06-18T03:56:59.889Z","created":"2012-09-16T05:00:08.269Z","0.1.0":"2012-09-16T05:00:10.016Z","0.2.0":"2012-12-12T19:44:28.334Z","0.3.0":"2012-12-13T17:27:29.574Z","0.3.1":"2012-12-17T14:48:57.323Z","0.4.0":"2012-12-28T08:39:17.523Z","0.5.0":"2013-02-05T13:56:30.393Z","0.5.1":"2013-02-06T10:02:11.433Z"},"author":{"name":"Golubev Fedor","email":"gregof@yandex.ru","url":"http://github.com/gregof"},"repository":{"type":"git","url":"git://github.com/gregof/fsa.git"}}