{"dist":{"shasum":"c5552c80563dda02f8c683ecac9f57c1951613db","tarball":"https://registry.npmjs.org/fsa/-/fsa-0.5.1.tgz","integrity":"sha512-HMdf0zJNXwP5dxROQb/ncUv+9BxuO4NM5R6/pSbUdfu5CUzMOg7+iP4tQUtBIv18PaScukzfxGIqLyJ3d9wg3Q==","signatures":[{"sig":"MEUCIE6MOkwNRq4UXbLi5By4DoA6J9PJ6bMaKEvIw5V7aTZ7AiEAnesdX+/CZ+B6uPY/w4LctkYAR/o2VW35csVkZdKjRHM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./index.js","name":"fsa","author":{"url":"http://github.com/gregof","name":"Golubev Fedor","email":"gregof@yandex.ru"},"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```","engines":{"node":">=0.4"},"_npmUser":{"name":"gregof","email":"gregof@yandex.ru"},"repository":{"url":"git://github.com/gregof/fsa.git","type":"git"},"_npmVersion":"1.1.59","description":"File system auditor. Shows changes after previous audit session.","maintainers":[{"name":"gregof","email":"gregof@yandex.ru"}],"dependencies":{},"devDependencies":{"tc":"0.5.x","abc":"0.5.x"},"optionalDependencies":{},"_id":"fsa@0.5.1","version":"0.5.1"}